diff options
| author | Paul Eggert | 2020-06-01 22:26:32 -0700 |
|---|---|---|
| committer | Paul Eggert | 2020-06-01 22:26:32 -0700 |
| commit | e10bd9e249bf70d0165a0cc050656ad94f34197d (patch) | |
| tree | 7eb22d41a6e7aeb8757e883479bdc0f2b8ec1d45 | |
| parent | 2c1e5b9e77d5da26cfb01917c25546e776c67789 (diff) | |
| parent | 44c0e074f7cb84481785cb49515a4bd7235a074b (diff) | |
| download | emacs-e10bd9e249bf70d0165a0cc050656ad94f34197d.tar.gz emacs-e10bd9e249bf70d0165a0cc050656ad94f34197d.zip | |
Merge from origin/emacs-27
44c0e074f7 * doc/emacs/buffers.texi (Icomplete): Mention icomplete-mi...
68b6dad1d8 Be more aggressive in marking objects during GC
36f508f589 ; * src/xdisp.c (find_last_unchanged_at_beg_row): Fix a typo.
cc340da1fe Fix bug #41618 "(byte-compile 'foo) errors when foo is a m...
41232e6797 Avoid crashes due to bidi cache being reset during redisplay
f72bb4ce36 * lisp/tab-bar.el (switch-to-buffer-other-tab): Normalize ...
d3e0023aaa ; * etc/TODO: Fix formatting. (Bug#41497)
a8ad94cd2f Fix mingw.org's MinGW GCC 9 warning about 'execve'
# Conflicts:
# lisp/tab-bar.el
# nt/inc/ms-w32.h
# src/alloc.c
| -rw-r--r-- | doc/emacs/buffers.texi | 9 | ||||
| -rw-r--r-- | etc/TODO | 1360 | ||||
| -rw-r--r-- | lisp/emacs-lisp/bytecomp.el | 7 | ||||
| -rw-r--r-- | lisp/progmodes/cc-mode.el | 2 | ||||
| -rw-r--r-- | lisp/tab-bar.el | 7 | ||||
| -rw-r--r-- | src/alloc.c | 43 | ||||
| -rw-r--r-- | src/xdisp.c | 4 |
7 files changed, 749 insertions, 683 deletions
diff --git a/doc/emacs/buffers.texi b/doc/emacs/buffers.texi index 6a53942d689..89ed470c055 100644 --- a/doc/emacs/buffers.texi +++ b/doc/emacs/buffers.texi | |||
| @@ -741,7 +741,14 @@ Ido''). Among other things, in Fido mode, @kbd{C-s} and @kbd{C-r} are | |||
| 741 | also used to rotate the completions list, @kbd{C-k} can be used to | 741 | also used to rotate the completions list, @kbd{C-k} can be used to |
| 742 | delete files and kill buffers in-list. Another noteworthy aspect is | 742 | delete files and kill buffers in-list. Another noteworthy aspect is |
| 743 | that @code{flex} is used as the default completion style | 743 | that @code{flex} is used as the default completion style |
| 744 | (@pxref{Completion Styles}). | 744 | (@pxref{Completion Styles}). To change this, add the following to |
| 745 | your initialization file (@pxref{Init File}): | ||
| 746 | |||
| 747 | @example | ||
| 748 | (defun my-icomplete-styles () | ||
| 749 | (setq-local completion-styles '(initials flex))) | ||
| 750 | (add-hook 'icomplete-minibuffer-setup-hook 'my-icomplete-styles) | ||
| 751 | @end example | ||
| 745 | 752 | ||
| 746 | To enable Fido mode, type @kbd{M-x fido-mode}, or customize | 753 | To enable Fido mode, type @kbd{M-x fido-mode}, or customize |
| 747 | the variable @code{fido-mode} to @code{t} (@pxref{Easy | 754 | the variable @code{fido-mode} to @code{t} (@pxref{Easy |
| @@ -30,14 +30,15 @@ difficult to fix. Bugs with severity "minor" may be simpler, but this | |||
| 30 | is not always true. | 30 | is not always true. |
| 31 | 31 | ||
| 32 | * Speed up Elisp execution | 32 | * Speed up Elisp execution |
| 33 | |||
| 33 | ** Speed up function calls | 34 | ** Speed up function calls |
| 34 | Change src/bytecode.c so that calls from byte-code functions to byte-code | 35 | Change src/bytecode.c so that calls from byte-code functions to byte-code |
| 35 | functions don't go through Ffuncall/funcall_lambda/exec_byte_code but instead | 36 | functions don't go through Ffuncall/funcall_lambda/exec_byte_code but instead |
| 36 | stay within exec_byte_code. | 37 | stay within exec_byte_code. |
| 37 | 38 | ||
| 38 | ** Improve the byte-compiler to recognize immutable (lexical) bindings | 39 | ** Improve the byte-compiler to recognize immutable bindings |
| 39 | and get rid of them if they're used only once and/or they're bound to | 40 | Recognize immutable (lexical) bindings and get rid of them if they're |
| 40 | a constant expression. | 41 | used only once and/or they're bound to a constant expression. |
| 41 | 42 | ||
| 42 | Such things aren't present in hand-written code, but macro expansion and | 43 | Such things aren't present in hand-written code, but macro expansion and |
| 43 | defsubst can often end up generating things like | 44 | defsubst can often end up generating things like |
| @@ -45,7 +46,8 @@ defsubst can often end up generating things like | |||
| 45 | (let ((arg actual)) (body)) but should additionally get optimized further | 46 | (let ((arg actual)) (body)) but should additionally get optimized further |
| 46 | when 'actual' is a constant/copyable expression. | 47 | when 'actual' is a constant/copyable expression. |
| 47 | 48 | ||
| 48 | ** Add an "indirect goto" byte-code and use it for local lambda expressions. | 49 | ** Add an "indirect goto" byte-code |
| 50 | Such a byte-code can be used for local lambda expressions. | ||
| 49 | E.g. when you have code like | 51 | E.g. when you have code like |
| 50 | 52 | ||
| 51 | (let ((foo (lambda (x) bar))) | 53 | (let ((foo (lambda (x) bar))) |
| @@ -56,7 +58,6 @@ E.g. when you have code like | |||
| 56 | turn those 'funcalls' into jumps and their return into indirect jumps back. | 58 | turn those 'funcalls' into jumps and their return into indirect jumps back. |
| 57 | 59 | ||
| 58 | ** Compile efficiently local recursive functions | 60 | ** Compile efficiently local recursive functions |
| 59 | |||
| 60 | Similar to the previous point, we should be able to handle something like | 61 | Similar to the previous point, we should be able to handle something like |
| 61 | 62 | ||
| 62 | (letrec ((loop () (blabla) (if (toto) (loop)))) | 63 | (letrec ((loop () (blabla) (if (toto) (loop)))) |
| @@ -68,153 +69,175 @@ which ideally should generate the same byte-code as | |||
| 68 | 69 | ||
| 69 | * Things that were planned for Emacs-24 | 70 | * Things that were planned for Emacs-24 |
| 70 | 71 | ||
| 71 | ** concurrency: including it as an "experimental" compile-time option | 72 | ** concurrency |
| 72 | sounds good. Of course there might still be big questions around "which form | 73 | Including it as an "experimental" compile-time option sounds good. Of |
| 73 | of concurrency" we'll want. | 74 | course there might still be big questions around "which form of |
| 74 | ** better support for dynamic embedded graphics: I like this idea (my | 75 | concurrency" we'll want. |
| 75 | mpc.el code could use it for the volume widget), though I wonder if the | 76 | |
| 76 | resulting efficiency will be sufficient. | 77 | ** better support for dynamic embedded graphics |
| 77 | ** Spread Semantic. | 78 | I like this idea (my mpc.el code could use it for the volume widget), |
| 78 | ** Improve the "code snippets" support: consolidate skeleton.el, tempo.el, | 79 | though I wonder if the resulting efficiency will be sufficient. |
| 79 | and expand.el (any other?) and then advertise/use/improve it. | 80 | |
| 80 | ** Improve VC: yes, there's a lot of work to be done there :-( | 81 | ** Spread Semantic |
| 81 | 82 | ||
| 82 | ** Random things that cross my mind right now that I'd like to see (some of | 83 | ** Improve the "code snippets" support |
| 83 | them from my local hacks), but it's not obvious at all whether they'll | 84 | Consolidate skeleton.el, tempo.el, and expand.el (any other?) and then |
| 84 | make it. | 85 | advertise/use/improve it. |
| 85 | *** prog-mode could/should provide a better fill-paragraph default | 86 | |
| 86 | that uses syntax-tables to recognize string/comment boundaries. | 87 | ** Improve VC |
| 87 | *** provide more completion-at-point-functions. Make existing | 88 | Yes, there's a lot of work to be done there :-( |
| 88 | in-buffer completion use completion-at-point. | 89 | |
| 89 | *** "functional" function-key-map that would make it easy to add (and | 90 | ** Random things that cross my mind right now that I'd like to see |
| 90 | remove) mappings like "FOO-mouse-4 -> FOO-scroll-down", | 91 | Some of them from my local hacks, but it's not obvious at all whether |
| 91 | "FOO-tab -> ?\FOO-\t", "uppercase -> lowercase", "[fringe KEY...] -> | 92 | they'll make it. |
| 92 | [KEY]", "H-FOO -> M-FOO", "C-x C-y FOO -> H-FOO", ... | 93 | |
| 94 | *** Prog-mode could/should provide a better fill-paragraph default | ||
| 95 | That default should use syntax-tables to recognize string/comment | ||
| 96 | boundaries. | ||
| 97 | |||
| 98 | *** Provide more completion-at-point-functions | ||
| 99 | Make existing in-buffer completion use completion-at-point. | ||
| 100 | |||
| 101 | *** "Functional" function-key-map | ||
| 102 | It would make it easy to add (and remove) mappings like | ||
| 103 | "FOO-mouse-4 -> FOO-scroll-down", "FOO-tab -> ?\FOO-\t", | ||
| 104 | "uppercase -> lowercase", "[fringe KEY...] -> [KEY]", | ||
| 105 | "H-FOO -> M-FOO", "C-x C-y FOO -> H-FOO", ... | ||
| 93 | 106 | ||
| 94 | * Things related to elpa.gnu.org. | 107 | * Things related to elpa.gnu.org. |
| 95 | 108 | ||
| 96 | ** Move idlwave to elpa.gnu.org. | 109 | ** Move idlwave to elpa.gnu.org |
| 97 | Need to sync up the Emacs and external versions. | 110 | Need to sync up the Emacs and external versions. |
| 98 | See <https://lists.gnu.org/r/emacs-devel/2014-07/msg00008.html> | 111 | See <https://lists.gnu.org/r/emacs-devel/2014-07/msg00008.html> |
| 99 | 112 | ||
| 100 | ** Move Org mode to elpa.gnu.org. | 113 | ** Move Org mode to elpa.gnu.org |
| 101 | See <https://lists.gnu.org/r/emacs-devel/2014-08/msg00300.html> | 114 | See <https://lists.gnu.org/r/emacs-devel/2014-08/msg00300.html> |
| 102 | <https://lists.gnu.org/r/emacs-devel/2014-11/msg00257.html> | 115 | <https://lists.gnu.org/r/emacs-devel/2014-11/msg00257.html> |
| 103 | 116 | ||
| 104 | ** Move verilog-mode to elpa.gnu.org. | 117 | ** Move verilog-mode to elpa.gnu.org |
| 105 | See <https://lists.gnu.org/r/emacs-devel/2015-02/msg01180.html> | 118 | See <https://lists.gnu.org/r/emacs-devel/2015-02/msg01180.html> |
| 106 | 119 | ||
| 107 | ** Move vhdl-mode to elpa.gnu.org. | 120 | ** Move vhdl-mode to elpa.gnu.org |
| 108 | See <https://lists.gnu.org/r/emacs-devel/2015-02/msg01180.html> | 121 | See <https://lists.gnu.org/r/emacs-devel/2015-02/msg01180.html> |
| 109 | 122 | ||
| 110 | * Simple tasks. These don't require much Emacs knowledge, they are | 123 | * Simple tasks |
| 111 | suitable for anyone from beginners to experts. | 124 | These don't require much Emacs knowledge, they are suitable for anyone |
| 125 | from beginners to experts. | ||
| 112 | 126 | ||
| 113 | ** Convert modes that use view-mode to be derived from special-mode instead. | 127 | ** Convert modes that use view-mode to be derived from special-mode instead |
| 114 | 128 | ||
| 115 | ** Major modes should have a menu entry. | 129 | ** Major modes should have a menu entry |
| 116 | 130 | ||
| 117 | ** Check if all items on the mode-line have a suitable tooltip for all modes. | 131 | ** Check if all items on the mode-line have a suitable tooltip for all modes |
| 118 | 132 | ||
| 119 | ** edebug and debugger-mode should have a toolbar. | 133 | ** edebug and debugger-mode should have a toolbar |
| 120 | It can use the same icons as gud. | 134 | It can use the same icons as gud. |
| 121 | 135 | ||
| 122 | ** Check what minor modes don't use define-minor-mode and convert them | 136 | ** Check what minor modes don't use define-minor-mode |
| 123 | to use it. | 137 | Convert those to use it. |
| 124 | 138 | ||
| 125 | ** Remove unnecessary autoload cookies from defcustoms. | 139 | ** Remove unnecessary autoload cookies from defcustoms |
| 126 | This needs a bit of care, since often people have become used to | 140 | This needs a bit of care, since often people have become used to |
| 127 | expecting such variables to always be defined, eg when they modify | 141 | expecting such variables to always be defined, eg when they modify |
| 128 | things in their .emacs. | 142 | things in their .emacs. |
| 129 | 143 | ||
| 130 | ** See if other files can use generated-autoload-file (see eg ps-print). | 144 | ** See if other files can use generated-autoload-file (see eg ps-print) |
| 145 | |||
| 146 | ** Write more tests | ||
| 147 | Pick a fixed bug from the database, write a test case to make sure it | ||
| 148 | stays fixed. Or pick your favorite programming major-mode, and write | ||
| 149 | a test for its indentation. Or a version control backend, and write a | ||
| 150 | test for its status parser. Etc. See the 'test' directory for | ||
| 151 | examples. | ||
| 131 | 152 | ||
| 132 | ** Write more tests. Pick a fixed bug from the database, write a test | 153 | * Small but important fixes needed in existing features |
| 133 | case to make sure it stays fixed. Or pick your favorite programming | ||
| 134 | major-mode, and write a test for its indentation. Or a version | ||
| 135 | control backend, and write a test for its status parser. Etc. | ||
| 136 | See the 'test' directory for examples. | ||
| 137 | 154 | ||
| 138 | * Small but important fixes needed in existing features: | 155 | ** A better display of the bar cursor |
| 156 | Distribute a bar cursor of width > 1 evenly between the two glyphs on | ||
| 157 | each side of the bar (what to do at the edges?). | ||
| 139 | 158 | ||
| 140 | ** Distribute a bar cursor of width > 1 evenly between the two glyphs | 159 | ** revert-buffer should eliminate overlays and the mark |
| 141 | on each side of the bar (what to do at the edges?). | 160 | For related problems consult the thread starting with |
| 161 | https://lists.gnu.org/r/emacs-devel/2005-11/msg01346.html | ||
| 142 | 162 | ||
| 143 | ** revert-buffer should eliminate overlays and the mark. | 163 | ** erase-buffer should perhaps disregard read-only properties of text |
| 144 | For related problems consult the thread starting with | ||
| 145 | https://lists.gnu.org/r/emacs-devel/2005-11/msg01346.html | ||
| 146 | 164 | ||
| 147 | ** erase-buffer should perhaps disregard read-only properties of text. | 165 | ** Fix the kill/yank treatment of invisible text |
| 166 | At the moment, invisible text is placed in the kill-ring, so that the | ||
| 167 | contents of the ring may not correspond to the text as displayed to | ||
| 168 | the user. It ought to be possible to omit text which is invisible | ||
| 169 | (due to a text-property, overlay, or selective display) from the | ||
| 170 | kill-ring. | ||
| 148 | 171 | ||
| 149 | ** Fix the kill/yank treatment of invisible text. At the moment, | 172 | ** Change cursor shape when Emacs is idle |
| 150 | invisible text is placed in the kill-ring, so that the contents of | 173 | When Emacs is idle for more than a specified time, change the cursor |
| 151 | the ring may not correspond to the text as displayed to the user. | 174 | shape to indicate the idleness. |
| 152 | It ought to be possible to omit text which is invisible (due to a | ||
| 153 | text-property, overlay, or selective display) from the kill-ring. | ||
| 154 | 175 | ||
| 155 | ** Feature to change cursor shape when Emacs is idle (for more than | 176 | ** Improve buttons in the Custom buffer |
| 156 | a specified time). | 177 | The buttons at the top of a Custom buffer should not omit variables |
| 178 | whose values are currently hidden. | ||
| 157 | 179 | ||
| 158 | ** The buttons at the top of a custom buffer should not omit | 180 | ** Clean up the variables in browse-url |
| 159 | variables whose values are currently hidden. | 181 | Perhaps use a shell command string to specify the browser instead of |
| 182 | the mushrooming set of functions. | ||
| 160 | 183 | ||
| 161 | ** Clean up the variables in browse-url. Perhaps use a shell command string to | 184 | See also ESR's proposal for a BROWSER environment variable |
| 162 | specify the browser instead of the mushrooming set of functions. | 185 | <URL:http://www.catb.org/~esr/BROWSER/browse-url.patch>. |
| 163 | See also ESR's proposal for a BROWSER environment variable | ||
| 164 | <URL:http://www.catb.org/~esr/BROWSER/browse-url.patch>. | ||
| 165 | 186 | ||
| 166 | ** Enhance scroll-bar to handle tall line (similar to line-move). | 187 | ** Enhance scroll-bar to handle tall line (similar to line-move) |
| 167 | 188 | ||
| 168 | ** In Custom buffers, put the option that turns a mode on or off first, | 189 | ** In Custom buffers, put the option that turns a mode on or off first |
| 169 | using a heuristic of some kind? | 190 | This should use a heuristic of some kind? |
| 170 | 191 | ||
| 171 | ** Define recompute-arg and recompute-arg-if for fix_command to use. | 192 | ** Define recompute-arg and recompute-arg-if for fix_command to use |
| 172 | See rms message of 11 Dec 05 in | 193 | See rms message of 11 Dec 05 in |
| 173 | https://lists.gnu.org/r/emacs-pretest-bug/2005-12/msg00165.html, | 194 | https://lists.gnu.org/r/emacs-pretest-bug/2005-12/msg00165.html, |
| 174 | and the rest of that discussion. | 195 | and the rest of that discussion. |
| 175 | 196 | ||
| 176 | ** In Emacs Info, examples of using Customize should be clickable | 197 | ** In Emacs Info, examples of using Customize should be clickable |
| 177 | and they should create Custom buffers. | 198 | They should create Custom buffers when clicked. |
| 178 | 199 | ||
| 179 | ** Add function to redraw the tool bar. | 200 | ** Add function to redraw the tool bar |
| 180 | 201 | ||
| 181 | ** Redesign the load-history data structure so it can cope better | 202 | ** Redesign the load-history data structure |
| 182 | with evaluating definitions of the same function from different files, | 203 | It should cope better with evaluating definitions of the same function |
| 183 | recording which file the latest definition came from. | 204 | from different files, recording which file the latest definition came |
| 205 | from. | ||
| 184 | 206 | ||
| 185 | ** make back_comment use syntax-ppss or equivalent. | 207 | ** Make back_comment use syntax-ppss or equivalent |
| 186 | 208 | ||
| 187 | ** Consider improving src/sysdep.c's search for a fqdn. | 209 | ** Consider improving src/sysdep.c's search for a fqdn |
| 188 | https://lists.gnu.org/r/emacs-devel/2007-04/msg00782.html | 210 | https://lists.gnu.org/r/emacs-devel/2007-04/msg00782.html |
| 189 | 211 | ||
| 190 | ** Find a proper fix for rcirc multiline nick adding. | 212 | ** Find a proper fix for rcirc multiline nick adding |
| 191 | https://lists.gnu.org/r/emacs-devel/2007-04/msg00684.html | 213 | https://lists.gnu.org/r/emacs-devel/2007-04/msg00684.html |
| 192 | 214 | ||
| 193 | ** Check for any included packages that define obsolete bug-reporting commands. | 215 | ** Check for any included packages that define obsolete bug-reporting commands |
| 194 | Change them to use report-emacs-bug. | 216 | Change them to use report-emacs-bug. |
| 195 | *** Related functions: | 217 | |
| 218 | *** Related functions (do all of them need changing?): | ||
| 196 | **** org-submit-bug-report | 219 | **** org-submit-bug-report |
| 197 | **** lm-report-bug | 220 | **** lm-report-bug |
| 198 | **** tramp-bug | 221 | **** tramp-bug |
| 199 | **** c-submit-bug-report | 222 | **** c-submit-bug-report |
| 200 | [Do all of them need changing?] | ||
| 201 | 223 | ||
| 202 | ** Allow fringe indicators to display a tooltip (provide a help-echo property?) | 224 | ** Allow fringe indicators to display a tooltip |
| 225 | Provide a help-echo property? | ||
| 203 | 226 | ||
| 204 | ** Add a defcustom that supplies a function to name numeric backup files, | 227 | ** Add a defcustom that supplies a function to name numeric backup files |
| 205 | like make-backup-file-name-function for non-numeric backup files. | 228 | Like 'make-backup-file-name-function' for non-numeric backup files. |
| 206 | 229 | ||
| 207 | ** 'dired-mode' should specify the semantics of 'buffer-modified-p' for | 230 | ** 'dired-mode' should specify the semantics of 'buffer-modified-p' |
| 208 | dired buffers and DTRT WRT 'auto-revert-mode'. | 231 | Needed for dired buffers and DTRT WRT 'auto-revert-mode'. |
| 209 | 232 | ||
| 210 | ** Check uses of prin1 for error-handling. | 233 | ** Check uses of prin1 for error-handling |
| 211 | https://lists.gnu.org/r/emacs-devel/2008-08/msg00456.html | 234 | https://lists.gnu.org/r/emacs-devel/2008-08/msg00456.html |
| 212 | 235 | ||
| 213 | * Important features: | 236 | * Important features |
| 214 | 237 | ||
| 215 | ** "Emacs as word processor" | 238 | ** "Emacs as word processor" |
| 216 | https://lists.gnu.org/r/emacs-devel/2013-11/msg00515.html | 239 | https://lists.gnu.org/r/emacs-devel/2013-11/msg00515.html |
| 217 | rms writes: | 240 | rms writes: |
| 218 | 25 years ago I hoped we would extend Emacs to do WYSIWYG word | 241 | 25 years ago I hoped we would extend Emacs to do WYSIWYG word |
| 219 | processing. That is why we added text properties and variable | 242 | processing. That is why we added text properties and variable |
| 220 | width fonts. However, more features are still needed to achieve this. | 243 | width fonts. However, more features are still needed to achieve this. |
| @@ -333,13 +356,11 @@ to pass to 'hb_shape_full' the required array of features, as | |||
| 333 | mentioned in the above HarfBuzz discussion. | 356 | mentioned in the above HarfBuzz discussion. |
| 334 | 357 | ||
| 335 | ** Better support for displaying Emoji | 358 | ** Better support for displaying Emoji |
| 336 | |||
| 337 | Emacs is capable of displaying Emoji and some of the Emoji sequences, | 359 | Emacs is capable of displaying Emoji and some of the Emoji sequences, |
| 338 | provided that its fontsets are configured with a suitable font. To | 360 | provided that its fontsets are configured with a suitable font. To |
| 339 | make this easier out of the box, the following should be done: | 361 | make this easier out of the box, the following should be done: |
| 340 | 362 | ||
| 341 | *** Populate composition-function-table with Emoji rules | 363 | *** Populate composition-function-table with Emoji rules |
| 342 | |||
| 343 | The Unicode Character Database (UCD) includes several data files that | 364 | The Unicode Character Database (UCD) includes several data files that |
| 344 | define the valid Emoji sequences. These files should be imported into | 365 | define the valid Emoji sequences. These files should be imported into |
| 345 | the Emacs tree, and should be converted by some script at Emacs build | 366 | the Emacs tree, and should be converted by some script at Emacs build |
| @@ -347,7 +368,6 @@ time to Lisp code that populates composition-function-table with the | |||
| 347 | corresponding composition rules. | 368 | corresponding composition rules. |
| 348 | 369 | ||
| 349 | *** Augment the default fontsets with Emoji-capable fonts | 370 | *** Augment the default fontsets with Emoji-capable fonts |
| 350 | |||
| 351 | The default fontsets set up by fontest.el should include known free | 371 | The default fontsets set up by fontest.el should include known free |
| 352 | fonts that provide good support for displaying Emoji sequences. In | 372 | fonts that provide good support for displaying Emoji sequences. In |
| 353 | addition, the rule that the default face's font is used for symbol and | 373 | addition, the rule that the default face's font is used for symbol and |
| @@ -358,7 +378,6 @@ not have to be tweaked to have Emoji display by default with a capable | |||
| 358 | font. | 378 | font. |
| 359 | 379 | ||
| 360 | *** Consider changing the default display of Variation Selectors | 380 | *** Consider changing the default display of Variation Selectors |
| 361 | |||
| 362 | Emacs by default displays the Variation Selector (VS) codepoints not | 381 | Emacs by default displays the Variation Selector (VS) codepoints not |
| 363 | composed with base characters as hex codes in a box. The Unicode FAQ | 382 | composed with base characters as hex codes in a box. The Unicode FAQ |
| 364 | says that if variation sequences cannot be supported, the VS | 383 | says that if variation sequences cannot be supported, the VS |
| @@ -369,7 +388,6 @@ could display them as a thin 1-pixel space, as we do with format | |||
| 369 | control characters, by using 'thin-space' there. | 388 | control characters, by using 'thin-space' there. |
| 370 | 389 | ||
| 371 | *** Special face for displaying text presentation of Emoji | 390 | *** Special face for displaying text presentation of Emoji |
| 372 | |||
| 373 | Emoji-capable fonts support Emoji sequences with the U+FE0F VARIATION | 391 | Emoji-capable fonts support Emoji sequences with the U+FE0F VARIATION |
| 374 | SELECTOR-16 (VS16) for emoji-style display, but usually don't support | 392 | SELECTOR-16 (VS16) for emoji-style display, but usually don't support |
| 375 | the U+FE0F VARIATION SELECTOR-15 (VS15) for text-style display. There | 393 | the U+FE0F VARIATION SELECTOR-15 (VS15) for text-style display. There |
| @@ -387,6 +405,7 @@ Another relevant resource is the Unicode Technical Standard #51 | |||
| 387 | "Unicode Emoji" (http://www.unicode.org/reports/tr51/). | 405 | "Unicode Emoji" (http://www.unicode.org/reports/tr51/). |
| 388 | 406 | ||
| 389 | ** Extend text-properties and overlays | 407 | ** Extend text-properties and overlays |
| 408 | |||
| 390 | *** Several text-property planes | 409 | *** Several text-property planes |
| 391 | This would get us rid of font-lock-face property (and I'd be happy to | 410 | This would get us rid of font-lock-face property (and I'd be happy to |
| 392 | get rid of char-property-alias-alist as well) since font-lock would | 411 | get rid of char-property-alias-alist as well) since font-lock would |
| @@ -408,7 +427,6 @@ generally can't run Elisp code, whereas we generally can do that when | |||
| 408 | properties are added. | 427 | properties are added. |
| 409 | 428 | ||
| 410 | *** Move overlays to intervals.c | 429 | *** Move overlays to intervals.c |
| 411 | |||
| 412 | Currently overlays are implemented as (two) sorted singly linked lists (one | 430 | Currently overlays are implemented as (two) sorted singly linked lists (one |
| 413 | for overlays_before some position and one for overlay_after that | 431 | for overlays_before some position and one for overlay_after that |
| 414 | position, for some quirky definition of "before" and "after"). | 432 | position, for some quirky definition of "before" and "after"). |
| @@ -450,355 +468,383 @@ One way of doing this is to start with fx's dynamic loading, and use it | |||
| 450 | to implement things like auto-loaded buffer parsers and database | 468 | to implement things like auto-loaded buffer parsers and database |
| 451 | access in cases which need more than Lisp. | 469 | access in cases which need more than Lisp. |
| 452 | 470 | ||
| 453 | ** Fix portable dumping so that you can redump without using -batch. | 471 | ** Fix portable dumping so that you can redump without using -batch |
| 454 | 472 | ||
| 455 | ** Imenu could be extended into a file-structure browsing mechanism | 473 | ** Imenu could be extended into a file-structure browsing mechanism |
| 456 | using code like that of customize-groups. | 474 | This could use code like that of customize-groups. |
| 457 | 475 | ||
| 458 | ** Display something in the margin on lines that have compilation errors. | 476 | ** Display something in the margin on lines that have compilation errors |
| 459 | 477 | ||
| 460 | ** Compilation error navigation bar, parallel to the scroll bar, | 478 | ** Compilation error navigation bar, parallel to the scroll bar |
| 461 | indicating where in the buffer there are compilation errors. | 479 | The bar should indicate where in the buffer there are compilation |
| 462 | Perhaps we could arrange to display these error indications on top | 480 | errors. Perhaps we could arrange to display these error indications |
| 463 | of the scroll bar itself. That depends on to what extent toolkit | 481 | on top of the scroll bar itself. That depends on to what extent |
| 464 | scroll bars are extensible. | 482 | toolkit scroll bars are extensible. |
| 465 | 483 | ||
| 466 | ** Provide user-friendly ways to list all available font families, | 484 | ** Provide user-friendly ways to list all available font families |
| 467 | list fonts, display a font as a sample, etc. [fx is looking at | 485 | Also for listing fonts, displaying a font as a sample, etc. |
| 468 | multilingual font selection for the Unicode branch of Emacs.] | ||
| 469 | 486 | ||
| 470 | ** Provide a convenient way to select a color with the mouse. | 487 | ** Provide a convenient way to select a color with the mouse |
| 471 | 488 | ||
| 472 | ** Rewrite the face code to be simpler, clearer and faster. | 489 | ** Rewrite the face code to be simpler, clearer and faster |
| 473 | 490 | ||
| 474 | ** Program Enriched mode to read and save in RTF. [Is there actually a | 491 | ** Program Enriched mode to read and save in RTF |
| 475 | decent single definition of RTF? Maybe see info at | 492 | Is there actually a decent single definition of RTF? Maybe see info at |
| 476 | http://latex2rtf.sourceforge.net/.] This task seems to be addressed | 493 | http://latex2rtf.sourceforge.net/. |
| 477 | by https://savannah.nongnu.org/projects/emacs-rtf/, which is still in | ||
| 478 | very early stages. | ||
| 479 | 494 | ||
| 480 | Another place to look is the Wikipedia article at | 495 | This task seems to be addressed by |
| 481 | http://en.wikipedia.org/wiki/Rich_Text_Format | 496 | https://savannah.nongnu.org/projects/emacs-rtf/, which is still in |
| 497 | very early stages. | ||
| 482 | 498 | ||
| 483 | It currently points to the latest spec of RTF v1.9.1 at | 499 | Another place to look is the Wikipedia article at |
| 484 | http://www.microsoft.com/en-us/download/details.aspx?id=10725 | 500 | http://en.wikipedia.org/wiki/Rich_Text_Format. It currently points to |
| 501 | the latest spec of RTF v1.9.1 at | ||
| 502 | https://web.archive.org/web/20190708132914/http://www.kleinlercher.at/tools/Windows_Protocols/Word2007RTFSpec9.pdf | ||
| 485 | 503 | ||
| 486 | ** Implement primitive and higher-level functions to allow filling | 504 | ** Better support for variable-pitch faces |
| 487 | properly with variable-pitch faces. | 505 | Implement primitive and higher-level functions to allow filling |
| 506 | properly with variable-pitch faces. | ||
| 488 | 507 | ||
| 489 | ** Implement intelligent search/replace, going beyond query-replace | 508 | ** Implement intelligent search/replace, going beyond query-replace |
| 490 | (see http://groups.csail.mit.edu/uid/projects/clustering/chi04.pdf). | 509 | See http://groups.csail.mit.edu/uid/projects/clustering/chi04.pdf. |
| 510 | |||
| 511 | ** Implement other text formatting properties | ||
| 512 | |||
| 513 | *** Footnotes that can appear either in place or at the end of the page | ||
| 491 | 514 | ||
| 492 | ** Implement other text formatting properties. | 515 | *** text property that says "don't break line in middle of this" |
| 493 | *** Footnotes that can appear either in place or at the end of the page. | 516 | Don't break the line between two characters that have the same value |
| 494 | *** text property that says "don't break line in middle of this". | 517 | of this property. |
| 495 | Don't break the line between two characters that have the | ||
| 496 | same value of this property. | ||
| 497 | *** Discretionary hyphens that are not visible when they are at end of line. | ||
| 498 | 518 | ||
| 499 | ** Internationalize Emacs's messages. | 519 | *** Discretionary hyphens that are not visible when they are at end of line |
| 500 | 520 | ||
| 501 | ** Set up a facility to save backtraces when errors happen during | 521 | ** Internationalize Emacs's messages |
| 502 | specified filters, specified timers, and specified hooks. | ||
| 503 | 522 | ||
| 504 | ** Install mmc@maruska.dyndns.org's no-flicker change. | 523 | ** Set up a facility to save backtraces |
| 524 | Save backtraces when errors happen during specified filters, specified | ||
| 525 | timers, and specified hooks. | ||
| 505 | 526 | ||
| 506 | https://lists.gnu.org/archive/html/emacs-devel/2005-12/msg00699.html | 527 | ** Install mmc@maruska.dyndns.org's no-flicker change |
| 528 | https://lists.gnu.org/archive/html/emacs-devel/2005-12/msg00699.html | ||
| 507 | 529 | ||
| 508 | I don't know if this is still relevant. I can't reach the URLs in | 530 | I don't know if this is still relevant. I can't reach the URLs in |
| 509 | the above message thread and double-buffering may have solved some | 531 | the above message thread and double-buffering may have solved some |
| 510 | of the problems. | 532 | of the problems. |
| 511 | 533 | ||
| 512 | ** Add a "current vertical pixel level" value that goes with point, | 534 | ** Add a "current vertical pixel level" value |
| 513 | so that motion commands can also move through tall images. | 535 | This should go with point, so that motion commands can also move |
| 514 | This value would be to point as window-vscroll is to window-start. | 536 | through tall images. This value would be to point as window-vscroll |
| 537 | is to window-start. | ||
| 515 | 538 | ||
| 516 | ** Address internationalization of symbols names essentially | 539 | ** Address internationalization of symbols names |
| 517 | as documentation, e.g. in command names and Custom. | 540 | Essentially as if they were documentation, e.g. in command names and |
| 541 | Custom. | ||
| 518 | 542 | ||
| 519 | ** Make the Lucid menu widget display multilingual text. [This | 543 | ** Make the Lucid menu widget display multilingual text |
| 520 | probably needs to be done from actual Emacs buffers, either directly | 544 | This probably needs to be done from actual Emacs buffers, either |
| 521 | in the menu or by rendering in an unmapped window and copying the | 545 | directly in the menu or by rendering in an unmapped window and copying |
| 522 | pixels. The current code assumes a specific locale; that isn't good | 546 | the pixels. The current code assumes a specific locale; that isn't |
| 523 | enough even if X can render the arbitrary text] [The gtk | 547 | good enough even if X can render the arbitrary text. The gtk port now |
| 524 | port now displays multilingual text in menus, but only insofar as | 548 | displays multilingual text in menus, but only insofar as Emacs can |
| 525 | Emacs can encode it as utf-8 and gtk can display the result.] | 549 | encode it as utf-8 and gtk can display the result. Maybe making |
| 526 | Maybe making Lucid menus work like Gtk's (i.e. just force utf-8) is good | 550 | Lucid menus work like Gtk's (i.e. just force utf-8) is good enough now |
| 527 | enough now that Emacs can encode most chars into utf-8. | 551 | that Emacs can encode most chars into utf-8. |
| 528 | 552 | ||
| 529 | ** The GNUstep port needs some serious attention, ideally from someone | 553 | ** The GNUstep port needs some serious attention |
| 530 | familiar with GNUstep and Objective C. | 554 | Ideally from someone familiar with GNUstep and Objective C. |
| 531 | 555 | ||
| 532 | * Other features we would like: | 556 | * Other features we would like |
| 533 | 557 | ||
| 534 | ** A more modern printing interface. One that pops up a dialog that lets | 558 | ** A more modern printing interface |
| 535 | you choose printer, page style, etc. | 559 | A UI that pops up a dialog that lets you choose printer, page style, |
| 536 | Integration with the Gtk print dialog is apparently difficult. See eg: | 560 | etc. Integration with the Gtk print dialog is apparently difficult. |
| 537 | https://lists.gnu.org/r/emacs-devel/2009-03/msg00501.html | 561 | See eg: https://lists.gnu.org/r/emacs-devel/2009-03/msg00501.html |
| 538 | https://lists.gnu.org/r/emacs-devel/2009-04/msg00034.html | 562 | https://lists.gnu.org/r/emacs-devel/2009-04/msg00034.html |
| 539 | 563 | ||
| 540 | ** Allow frames(terminals) created by emacsclient to inherit their environment | 564 | ** Allow frames(terminals) created by emacsclient to inherit their environment |
| 541 | from the emacsclient process. | 565 | They should inherit environment from the emacsclient process. |
| 542 | 566 | ||
| 543 | ** Give Tar mode all the features of Archive mode. | 567 | ** Give Tar mode all the features of Archive mode |
| 544 | 568 | ||
| 545 | ** Create a category of errors called 'process-error' | 569 | ** Create a category of errors called 'process-error' |
| 546 | for some or all errors associated with using subprocesses. | 570 | Do this for some or all errors associated with using subprocesses. |
| 547 | 571 | ||
| 548 | ** Maybe reinterpret 'parse-error' as a category of errors | 572 | ** Maybe reinterpret 'parse-error' as a category of errors |
| 549 | and put some other errors under it. | 573 | Put some other errors under it. |
| 550 | 574 | ||
| 551 | ** Make byte-compile warn when a doc string is too wide. | 575 | ** Make byte-compiler warn when a doc string is too wide |
| 552 | 576 | ||
| 553 | ** Make byte-optimization warnings issue accurate line numbers. | 577 | ** Make byte-optimization warnings issue accurate line numbers |
| 554 | 578 | ||
| 555 | ** Record the sxhash of the default value for customized variables | 579 | ** Record the sxhash of the default value for customized variables |
| 556 | and notify the user (maybe by adding a menu item or toolbar button, | 580 | Also, the user (maybe by adding a menu item or toolbar button, as the |
| 557 | as the detection can occur during autoload time) when the default | 581 | detection can occur during autoload time) when the default changes |
| 558 | changes (meaning that new versions of the Lisp source with a changed | 582 | (meaning that new versions of the Lisp source with a changed default |
| 559 | default value got installed) and offer ediff on the respective | 583 | value got installed) and offer ediff on the respective customization |
| 560 | customization buffers. | 584 | buffers. |
| 561 | 585 | ||
| 562 | ** Emacs Lisp mode could put an overlay on the defun for every | 586 | ** Emacs Lisp mode could put an overlay on the defun for advised functions |
| 563 | function that has advice. The overlay could have 'after-text' like | 587 | The overlay could have 'after-text' like " [Function has advice]". It |
| 564 | " [Function has advice]". It might look like (defun foo [Function | 588 | might look like (defun foo [Function has advice] (x y) The overlay |
| 565 | has advice] (x y) The overlay could also be a button that you could | 589 | could also be a button that you could use to view the advice. |
| 566 | use to view the advice. | ||
| 567 | 590 | ||
| 568 | ** Add a function to get the insertion-type of the markers in an overlay. | 591 | ** Add a function to get the insertion-type of the markers in an overlay |
| 569 | 592 | ||
| 570 | ** ange-ftp | 593 | ** ange-ftp |
| 571 | *** understand sftp | ||
| 572 | This is hard to make work because sftp doesn't print status messages. | ||
| 573 | 594 | ||
| 574 | *** Use MLS for ange-ftp-insert-directory if a list of files is specified. | 595 | *** Make ange-ftp understand sftp |
| 596 | This is hard to make work because sftp doesn't print status messages. | ||
| 597 | |||
| 598 | *** Use MLS for ange-ftp-insert-directory if a list of files is specified | ||
| 599 | |||
| 600 | ** Ability to map a key, including all modified-combinations | ||
| 601 | E.g map mouse-4 to wheel-up as well as M-mouse-4 -> M-wheel-up | ||
| 602 | M-C-mouse-4 -> M-C-wheel-up, H-S-C-M-s-double-mouse-4 -> | ||
| 603 | H-S-C-M-s-double-wheel-up, ... | ||
| 604 | |||
| 605 | ** Beefed-up syntax-tables | ||
| 575 | 606 | ||
| 576 | ** Ability to map a key, including all modified-combinations. | 607 | *** Recognize multi-character syntactic entities like 'begin' and 'end' |
| 577 | E.g map mouse-4 to wheel-up as well as M-mouse-4 -> M-wheel-up | ||
| 578 | M-C-mouse-4 -> M-C-wheel-up, H-S-C-M-s-double-mouse-4 -> | ||
| 579 | H-S-C-M-s-double-wheel-up, ... | ||
| 580 | 608 | ||
| 581 | ** Beefed-up syntax-tables. | 609 | *** Nested string-delimiters (for PostScript's (foo(bar)baz) strings) |
| 582 | *** recognize multi-character syntactic entities like 'begin' and 'end'. | ||
| 583 | *** nested string-delimiters (for PostScript's (foo(bar)baz) strings). | ||
| 584 | *** support for infix operators (with precedence). | ||
| 585 | *** support for the $ (paired delimiter) in parse-partial-sexp. | ||
| 586 | *** support for hook-chars whose effect on the parsing-state is specified | ||
| 587 | by elisp code. Thus a char could both close a string and open a comment | ||
| 588 | at the same time and do it in a context-sensitive way. | ||
| 589 | *** ability to add mode-specific data to the partial-parse-state. | ||
| 590 | 610 | ||
| 591 | ** Add a way to convert a keyboard macro to equivalent Lisp code. | 611 | *** Support for infix operators (with precedence) |
| 592 | 612 | ||
| 593 | ** Have a command suggestion help system that recognizes patterns | 613 | *** Support for the $ (paired delimiter) in parse-partial-sexp |
| 594 | of commands which could be replaced with a simpler common command. | ||
| 595 | It should not make more than one suggestion per 10 minutes. | ||
| 596 | 614 | ||
| 597 | ** Add a way to define input methods by computing them (when first used) | 615 | *** Support for hook-chars whose effect is specified by ELisp code |
| 598 | from other input methods. Then redefine C-x 8 to use a | 616 | Hook-chars could have their effect on the parsing-state specified by |
| 599 | user-selected input method, with the default being the union of | 617 | ELisp code. Thus a character could both close a string and open a |
| 600 | latin-1-prefix and latin-1-postfix. | 618 | comment at the same time and do it in a context-sensitive way. |
| 601 | 619 | ||
| 602 | ** Implement a clean way to use different major modes for | 620 | *** Ability to add mode-specific data to the partial-parse-state |
| 603 | different parts of a buffer. This could be useful in editing | ||
| 604 | Bison input files, for instance, or other kinds of text | ||
| 605 | where one language is embedded in another language. See | ||
| 606 | http://www.loveshack.ukfsn.org/emacs/multi-mode.el and also | ||
| 607 | mmm-mode, as reference for approaches taken by others. | ||
| 608 | 621 | ||
| 609 | ** Arrange a way for an input method to return the first character | 622 | ** Add a way to convert a keyboard macro to equivalent Lisp code |
| 610 | immediately, then replace it later. So that C-s a with | ||
| 611 | input method latin-1-postfix would immediately search for an a. | ||
| 612 | 623 | ||
| 613 | ** Give start-process the ability to direct standard-error | 624 | ** Have a command suggestion help system |
| 614 | output to a different filter. | 625 | The idea is to recognize patterns of commands which could be replaced |
| 626 | with a simpler common command. It should not make more than one | ||
| 627 | suggestion per 10 minutes. | ||
| 615 | 628 | ||
| 616 | ** Give desktop.el a feature to switch between different named desktops. | 629 | ** Add a way to define input methods by computing them |
| 630 | When an input method is first used, redefine C-x 8 to use a | ||
| 631 | user-selected input method, with the default being the union of | ||
| 632 | latin-1-prefix and latin-1-postfix. | ||
| 617 | 633 | ||
| 618 | ** Add a cpio mode, more or less like tar mode. | 634 | ** Implement a clean way to use several major modes in a buffer |
| 635 | Different parts of a buffer could use different major modes. This | ||
| 636 | could be useful in editing Bison input files, for instance, or other | ||
| 637 | kinds of text where one language is embedded in another language. See | ||
| 638 | http://www.loveshack.ukfsn.org/emacs/multi-mode.el and also mmm-mode, | ||
| 639 | as reference for approaches taken by others. | ||
| 640 | |||
| 641 | ** A more convenient use of input methods in search | ||
| 642 | Arrange a way for an input method to return the first character | ||
| 643 | immediately, then replace it later. So that C-s a with input method | ||
| 644 | latin-1-postfix would immediately search for an a. | ||
| 645 | |||
| 646 | ** Give start-process the ability to redirect standard-error | ||
| 647 | It should be possible to redirect stderr to a different filter. | ||
| 648 | (Isn't this already possible in Emacs 27?) | ||
| 649 | |||
| 650 | ** Give desktop.el a feature to switch between different named desktops | ||
| 651 | |||
| 652 | ** Add a cpio mode, more or less like tar mode | ||
| 619 | 653 | ||
| 620 | ** Save undo information in special temporary files, and reload it | 654 | ** Save undo information in special temporary files, and reload it |
| 621 | when needed for undoing. This could extend undo capacity. | 655 | Reload the file when needed for undoing. This could extend undo |
| 622 | undo-tree, in ELPA, already does this; its saving code could be | 656 | capacity. undo-tree, in ELPA, already does this; its saving code |
| 623 | integrated without requiring the use of undo-tree. | 657 | could be integrated without requiring the use of undo-tree. |
| 624 | 658 | ||
| 625 | ** Change the Windows NT menu code | 659 | ** Change the Windows NT menu code |
| 626 | so that it handles the deep_p argument and avoids | 660 | Change the code so that it handles the deep_p argument and avoids |
| 627 | regenerating the whole menu bar menu tree except | 661 | regenerating the whole menu-bar menu tree except when the user tries |
| 628 | when the user tries to use the menubar. | 662 | to use the menubar. |
| 663 | |||
| 664 | This requires the RIT to forward the WM_INITMENU message to the main | ||
| 665 | thread, and not return from that message until the main thread has | ||
| 666 | processed the MENU_BAR_ACTIVATE_EVENT and regenerated the whole menu | ||
| 667 | bar. In the mean time, it should process other messages. | ||
| 668 | |||
| 669 | ** Get some major packages installed | ||
| 629 | 670 | ||
| 630 | This requires the RIT to forward the WM_INITMENU message to | 671 | *** W3 (development version needs significant work) |
| 631 | the main thread, and not return from that message until the main | ||
| 632 | thread has processed the MENU_BAR_ACTIVATE_EVENT and regenerated | ||
| 633 | the whole menu bar. In the mean time, it should process other messages. | ||
| 634 | 672 | ||
| 635 | ** Get some major packages installed: W3 (development version needs | 673 | *** PSGML, _possibly_ ECB |
| 636 | significant work), PSGML, _possibly_ ECB. | 674 | https://lists.gnu.org/r/emacs-devel/2007-05/msg01493.html Check the |
| 637 | https://lists.gnu.org/r/emacs-devel/2007-05/msg01493.html | 675 | assignments file for other packages which might go in and have been |
| 638 | Check the assignments file for other packages which might go in and | 676 | missed. |
| 639 | have been missed. | ||
| 640 | 677 | ||
| 641 | ** Make compiler warnings about functions that might be undefined at run time | 678 | ** Make byte-compiler warnings smarter |
| 642 | smarter, so that they know which files are required by the file being | 679 | Byte-compiler warnings about functions that might be undefined at run |
| 643 | compiled and don't warn about functions defined in them. | 680 | time should be smarter, so that they know which files are required by |
| 681 | the file being compiled and don't warn about functions defined in | ||
| 682 | them. | ||
| 644 | 683 | ||
| 645 | ** Split out parts of lisp.h. | 684 | ** Split out parts of lisp.h |
| 646 | |||
| 647 | ** Update the FAQ. | ||
| 648 | |||
| 649 | ** Allow auto-compression-mode to use zlib calls if zlib is available. | ||
| 650 | [It's required for PNG, so may be linked anyhow.] | ||
| 651 | |||
| 652 | ** Improve the GC (generational, incremental). (We may be able to use | ||
| 653 | the Boehm collector.) [See the Boehm-GC branch in CVS for work on this.] | ||
| 654 | |||
| 655 | ** Check what hooks would help Emacspeak -- see the defadvising in W3. | ||
| 656 | |||
| 657 | ** Add definitions for symbol properties, for documentation purposes. | ||
| 658 | |||
| 659 | ** Temporarily remove scroll bars when they are not needed, typically | ||
| 660 | when a buffer can be fully displayed in its window. | ||
| 661 | |||
| 662 | ** Provide an optional feature which computes a scroll bar slider's | ||
| 663 | size and its position from lines instead of characters. | ||
| 664 | |||
| 665 | ** Allow displaying an X window from an external program in a buffer, | ||
| 666 | e.g. to render graphics from Java applets. [gerd and/or wmperry | ||
| 667 | thought this was feasible.] | ||
| 668 | 685 | ||
| 669 | ** Allow images (not just text) in the margin to be mouse-sensitive. | 686 | ** Update the FAQ |
| 670 | (Requires recursing through display properties). Provide some way | ||
| 671 | to simulate mouse-clicks on marginal text without a mouse. | ||
| 672 | 687 | ||
| 673 | ** Extend ps-print to deal with multiple font sizes, images, and extra | 688 | ** Allow auto-compression-mode to use zlib calls if zlib is available |
| 674 | encodings. | 689 | Zlib is required for PNG, so may be linked anyhow. |
| 675 | |||
| 676 | ** Use the XIE X extension, if available, for image display. | ||
| 677 | |||
| 678 | (Obsolete as XIE is now considered obsolete itself.) | ||
| 679 | |||
| 680 | ** Make monochrome images display using the foreground and background | ||
| 681 | colors of the applicable faces. | ||
| 682 | |||
| 683 | ** Make 'format-time-string' preserve text properties like 'format'. | ||
| 684 | |||
| 685 | ** Optionally make the cursor a little thinner at the end of a line | ||
| 686 | or the end of the buffer. | ||
| 687 | |||
| 688 | ** Reorder defcustom's in each package so that the more important | ||
| 689 | options come first in the Customize buffers. This could be done by | ||
| 690 | either rearranging the file (since options are shown in the order | ||
| 691 | they appear in the *.el files), or by adding a few :set-after attributes. | ||
| 692 | |||
| 693 | ** Maybe document the features of libraries missing from the manual (or | ||
| 694 | ancillary manuals, including the Lisp manual in some cases). | ||
| 695 | This is not worth doing for all of these packages and we need not | ||
| 696 | aim for completeness, but some may be worth documenting. | ||
| 697 | |||
| 698 | Here's a list which is probably not complete/correct: align, allout, | ||
| 699 | artist, ansi-color, array, calculator, cdl, cmuscheme, | ||
| 700 | completion, delim-col, dirtrack, double, echistory, elide-head, | ||
| 701 | easymenu, expand, flow-ctrl, format [format-alist], | ||
| 702 | generic/generic-x [various modes], kermit, log-edit, | ||
| 703 | makesum, midnight [other than in Kill Buffer node], | ||
| 704 | mouse-copy [?], mouse-drag, mouse-sel, net-utils, rcompile, | ||
| 705 | snmp-mode [?], soundex [should be interactive?], strokes [start from | ||
| 706 | the web page], talk, thingatpt [interactive functions?], type-break, | ||
| 707 | vcursor, xscheme, zone-mode [?], mlconvert [?], iso-cvt, | ||
| 708 | feedmail [?], uce, gametree, page-ext, refbib, refer, scribe, | ||
| 709 | texinfo, underline, cmacexp, hideif, pcomplete, xml, | ||
| 710 | cvs-status (should be described in PCL-CVS manual); other progmodes, | ||
| 711 | probably in separate manual. | ||
| 712 | |||
| 713 | ** Convert the XPM bitmaps to PPM, replace the PBMs with them and scrap | ||
| 714 | the XPMs so that the color versions work generally. (Requires care | ||
| 715 | with the color used for the transparent regions.) | ||
| 716 | |||
| 717 | ** Convenient access to the 'values' variable. It would be nice to have an | ||
| 718 | interface that would show you the printed reps of the elements of the | ||
| 719 | list in a menu, let you select one of the values, and put it into some | ||
| 720 | other variable, without changing the value of 'values'. | ||
| 721 | |||
| 722 | ** (Controlled by a flag) make open and close syntax match exactly, | ||
| 723 | i.e. '(' doesn't match ']'. | ||
| 724 | |||
| 725 | ** Specify parameter ID-FORMAT in all calls to 'file-attributes' and | ||
| 726 | 'directory-files-and-attributes' where attributes UID or GID are used. | ||
| 727 | Whenever possible, use value 'string. | ||
| 728 | When done, change meaning of default value from 'integer to 'string. | ||
| 729 | If value 'integer is used nowhere, remove the parameter ID-FORMAT from | ||
| 730 | the definition of 'file-attributes' and 'directory-files-and-attributes' | ||
| 731 | and from the calls. | ||
| 732 | 690 | ||
| 733 | ** Make language-info-alist customizable. Currently a user can customize | 691 | ** Improve the GC |
| 734 | only the variable 'current-language-environment'. | 692 | Introduce generational or incremental GC. We may be able to use the |
| 735 | 693 | Boehm collector.) See the Boehm-GC branch in CVS for work on this. | |
| 736 | ** Improve language environment handling so that Emacs can fit | ||
| 737 | better to a users locale. Currently Emacs uses utf-8 language | ||
| 738 | environment for all utf-8 locales, thus a user in ja_JP.UTF-8 locale | ||
| 739 | are also put in utf-8 lang. env. In such a case, it is | ||
| 740 | better to use Japanese lang. env. but prefer utf-8 coding system. | ||
| 741 | 694 | ||
| 742 | ** Enhance locale handling: handle language, territory and charset | 695 | ** Check what hooks would help Emacspeak |
| 743 | orthogonally and de-emphasize language environments. Use the locale | 696 | See the defadvising in W3. |
| 744 | to set up more things, such as fontsets, the default Ispell | 697 | |
| 745 | dictionary, diary format, calendar holidays and display, quoting | 698 | ** Add definitions for symbol properties, for documentation purposes |
| 746 | characters and phrase boundaries, sentence endings, collation for | 699 | |
| 747 | sorting (at least for unicodes), HTTP Accept-language, patterns for | 700 | ** Temporarily remove scroll bars when they are not needed |
| 748 | directory listings and compilation messages, yes-or-no replies, | 701 | Typically when a buffer can be fully displayed in its window. |
| 749 | common menu items when the toolkit supports it ... 'locale-info' | 702 | |
| 750 | needs extending for LC_COLLATE &c. [fx started on this.] | 703 | ** Compute scroll bar's slider by lines |
| 751 | 704 | Provide an optional feature which computes a scroll bar slider's | |
| 752 | ** Eliminate the current restriction on header printing by ps-print. | 705 | size and its position from lines instead of characters. |
| 753 | Currently, a header can contain only single 1-byte charset in | 706 | |
| 754 | addition to ASCII. | 707 | ** Allow displaying an X window from an external program in a buffer |
| 755 | 708 | E.g. to render graphics from Java applets. [gerd and/or wmperry | |
| 756 | ** In ps-print, provide an user friendly interface to specify fonts. | 709 | thought this was feasible.] [Is xwidget that feature?] |
| 757 | 710 | ||
| 758 | ** Enhance word boundary detection for such a script that doesn't use | 711 | ** Allow images (not just text) in the margin to be mouse-sensitive |
| 759 | space at word boundary (e.g. Thai). | 712 | This requires recursing through display properties. Provide some way |
| 760 | 713 | to simulate mouse-clicks on marginal text without a mouse. | |
| 761 | ** Implement interface programs with major Japanese conversion server | 714 | |
| 762 | in lib-src so that they can be used from the input method | 715 | ** Extend ps-print |
| 763 | "japanese". Currently, most Japanese users are using external | 716 | |
| 764 | packages (e.g. tamago, anthy) or an input method via XIM. | 717 | *** It should deal with multiple font sizes, images, and extra encodings |
| 765 | 718 | ||
| 766 | ** Let LEIM handle the Mode_switch key like XIM does (i.e. a toggle like C-\ | 719 | *** Eliminate the current restriction on header printing by ps-print |
| 767 | but which can also be used as a modifier). | 720 | Currently, a header can contain only single 1-byte charset in addition |
| 768 | 721 | to ASCII. | |
| 769 | ** Improve Help buffers: Change the face of previously visited links (like | 722 | |
| 770 | Info, but also with regard to namespace), and give the value of | 723 | *** Provide a user friendly interface to specify fonts |
| 771 | lisp expressions, e.g auto-mode-alist, the right face. | 724 | |
| 772 | 725 | ** Use the XIE X extension, if available, for image display | |
| 773 | ** Possibly make 'list-holidays' eval items in the calendar-holidays variable. | 726 | This is obsolete, as XIE itself is now considered obsolete. |
| 774 | See thread | 727 | |
| 775 | <https://lists.gnu.org/r/emacs-devel/2006-02/msg01034.html>. | 728 | ** Make monochrome images honor the face |
| 776 | [rgm@gnu.org will look at this after 22.1] | 729 | Display those images using the foreground and background colors of the |
| 777 | 730 | applicable faces. | |
| 778 | ** Possibly make cal-dst use the system timezone database directly. | 731 | |
| 779 | See thread | 732 | ** Make 'format-time-string' preserve text properties like 'format' |
| 780 | <https://lists.gnu.org/r/emacs-pretest-bug/2006-11/msg00060.html> | 733 | |
| 781 | 734 | ** Optionally make the cursor a little thinner at EOL and EOB | |
| 782 | ** Possibly add a "close" button to the modeline. | 735 | |
| 783 | The idea is to add an "X" of some kind, that when clicked deletes | 736 | ** Reorder defcustom's in each package by importance |
| 784 | the window associated with that modeline. | 737 | The more important options should come first in the Customize buffers. |
| 785 | https://lists.gnu.org/r/emacs-devel/2007-09/msg02416.html | 738 | This could be done by either rearranging the file (since options are |
| 739 | shown in the order they appear in the *.el files), or by adding a few | ||
| 740 | :set-after attributes. | ||
| 741 | |||
| 742 | ** Maybe document the features of libraries missing from the manual | ||
| 743 | Also in ancillary manuals, including the Lisp manual in some cases. | ||
| 744 | This is not worth doing for all of these packages and we need not aim | ||
| 745 | for completeness, but some may be worth documenting. | ||
| 746 | |||
| 747 | Here's a list which is probably not complete/correct: align, allout, | ||
| 748 | artist, ansi-color, array, calculator, cdl, cmuscheme, completion, | ||
| 749 | delim-col, dirtrack, double, echistory, elide-head, easymenu, expand, | ||
| 750 | flow-ctrl, format [format-alist], generic/generic-x [various modes], | ||
| 751 | kermit, log-edit, makesum, midnight [other than in Kill Buffer node], | ||
| 752 | mouse-copy [?], mouse-drag, mouse-sel, net-utils, rcompile, snmp-mode | ||
| 753 | [?], soundex [should be interactive?], strokes [start from the web | ||
| 754 | page], talk, thingatpt [interactive functions?], type-break, vcursor, | ||
| 755 | xscheme, zone-mode [?], mlconvert [?], iso-cvt, feedmail [?], uce, | ||
| 756 | gametree, page-ext, refbib, refer, scribe, texinfo, underline, | ||
| 757 | cmacexp, hideif, pcomplete, xml, cvs-status (should be described in | ||
| 758 | PCL-CVS manual); other progmodes, probably in separate manual. | ||
| 759 | |||
| 760 | ** Deprecate and remove XPM icons | ||
| 761 | Convert the XPM bitmaps to PPM, replace the PBMs with them and scrap | ||
| 762 | the XPMs so that the color versions work generally. (Requires care | ||
| 763 | with the color used for the transparent regions.) | ||
| 764 | |||
| 765 | ** Convenient access to the 'values' variable | ||
| 766 | It would be nice to have an interface that would show you the printed | ||
| 767 | reps of the elements of the list in a menu, let you select one of the | ||
| 768 | values, and put it into some other variable, without changing the | ||
| 769 | value of 'values'. | ||
| 770 | |||
| 771 | ** Make open and close syntax match exactly | ||
| 772 | Make open and close syntax match exactly, i.e. '(' doesn't match ']'. | ||
| 773 | This should be controlled by a flag. | ||
| 774 | |||
| 775 | ** Use ID-FORMAT in 'file-attributes' and 'directory-files-and-attributes' | ||
| 776 | Specify an explicit parameter ID-FORMAT in all calls to these | ||
| 777 | functions where attributes UID or GID are used. Whenever possible, | ||
| 778 | use 'string'. When done, change meaning of default value from | ||
| 779 | 'integer' to 'string'. If value 'integer' is used nowhere, remove the | ||
| 780 | parameter ID-FORMAT from the definition of 'file-attributes' and | ||
| 781 | 'directory-files-and-attributes' and from the calls. | ||
| 782 | |||
| 783 | ** Make language-info-alist customizable | ||
| 784 | Currently a user can customize only the variable | ||
| 785 | 'current-language-environment'. | ||
| 786 | |||
| 787 | ** Improve language environment handling | ||
| 788 | Allow Emacs to fit better to a user's locale. Currently Emacs uses | ||
| 789 | UTF-8 language environment for all UTF-8 locales, thus a user in | ||
| 790 | ja_JP.UTF-8 locale are also put in UTF-8 language environment. In | ||
| 791 | such a case, it is better to use Japanese language environment, while | ||
| 792 | preferring the utf-8 coding system. | ||
| 793 | |||
| 794 | ** Enhance locale handling | ||
| 795 | Handle language, territory and charset orthogonally, and de-emphasize | ||
| 796 | language environments. Use the locale to set up more things, such as | ||
| 797 | fontsets, the default Ispell dictionary, diary format, calendar | ||
| 798 | holidays and display, quoting characters and phrase boundaries, | ||
| 799 | sentence endings, collation for sorting (at least for unicodes), HTTP | ||
| 800 | Accept-language, patterns for directory listings and compilation | ||
| 801 | messages, yes-or-no replies, common menu items when the toolkit | ||
| 802 | supports it ... 'locale-info' needs extending for LC_COLLATE &c. [fx | ||
| 803 | started on this.] | ||
| 804 | |||
| 805 | ** Enhance word boundary detection | ||
| 806 | This is needed for scripts that don't use space at word boundary | ||
| 807 | (e.g., Thai). | ||
| 808 | |||
| 809 | ** Implement interface programs with major Japanese input methods | ||
| 810 | The idea is to write programs in lib-src for interfacing with Japanese | ||
| 811 | conversion servers so that they can be used from the input method | ||
| 812 | "japanese". Currently, most Japanese users are using external | ||
| 813 | packages (e.g. tamago, anthy) or an input method via XIM. | ||
| 814 | |||
| 815 | ** Let LEIM handle the Mode_switch key like XIM does | ||
| 816 | I.e. a toggle like C-\ but which can also be used as a modifier. | ||
| 817 | |||
| 818 | ** Improve Help buffers | ||
| 819 | Change the face of previously visited links (like Info, but also with | ||
| 820 | regard to namespace), and give the value of lisp expressions, e.g | ||
| 821 | auto-mode-alist, the right face. | ||
| 822 | |||
| 823 | ** Possibly make 'list-holidays' eval items in the calendar-holidays variable | ||
| 824 | See thread <https://lists.gnu.org/r/emacs-devel/2006-02/msg01034.html>. | ||
| 825 | [rgm@gnu.org will look at this after 22.1] | ||
| 826 | |||
| 827 | ** Possibly make cal-dst use the system timezone database directly | ||
| 828 | See thread <https://lists.gnu.org/r/emacs-pretest-bug/2006-11/msg00060.html>. | ||
| 829 | |||
| 830 | ** Possibly add a "close" button to the modeline | ||
| 831 | The idea is to add an "X" of some kind, that when clicked deletes the | ||
| 832 | window associated with that modeline. | ||
| 833 | https://lists.gnu.org/r/emacs-devel/2007-09/msg02416.html | ||
| 786 | 834 | ||
| 787 | * Things to be done for specific packages or features | 835 | * Things to be done for specific packages or features |
| 788 | 836 | ||
| 789 | ** NeXTstep port | 837 | ** NeXTstep port |
| 790 | 838 | ||
| 791 | *** Missing features | 839 | *** Missing features |
| 792 | |||
| 793 | This sections contains features found in other official Emacs ports. | 840 | This sections contains features found in other official Emacs ports. |
| 794 | 841 | ||
| 795 | **** Support for xwidgets | 842 | **** Support for xwidgets |
| 796 | |||
| 797 | Emacs 25 has support for xwidgets, a system to include operating | 843 | Emacs 25 has support for xwidgets, a system to include operating |
| 798 | system components into an Emacs buffer. The components range from | 844 | system components into an Emacs buffer. The components range from |
| 799 | simple buttons to webkit (effectively, a web browser). | 845 | simple buttons to webkit (effectively, a web browser). |
| 800 | 846 | ||
| 801 | Currently, xwidgets works only for the gtk+ framework but it is | 847 | Currently, xwidgets work only for the gtk+ framework but they are |
| 802 | designed to be compatible with multiple Emacs ports. | 848 | designed to be compatible with multiple Emacs ports. |
| 803 | 849 | ||
| 804 | (See the scratch/nsxwidget branch, and the discussion around | 850 | (See the scratch/nsxwidget branch, and the discussion around |
| @@ -806,7 +852,6 @@ Objective-C code and GCC at | |||
| 806 | https://lists.gnu.org/archive/html/emacs-devel/2019-08/msg00072.html) | 852 | https://lists.gnu.org/archive/html/emacs-devel/2019-08/msg00072.html) |
| 807 | 853 | ||
| 808 | **** Respect 'frame-inhibit-implied-resize' | 854 | **** Respect 'frame-inhibit-implied-resize' |
| 809 | |||
| 810 | When the variable 'frame-inhibit-implied-resize' is non-nil, frames | 855 | When the variable 'frame-inhibit-implied-resize' is non-nil, frames |
| 811 | should not be resized when operations like changing font or toggling | 856 | should not be resized when operations like changing font or toggling |
| 812 | the tool bar is performed. | 857 | the tool bar is performed. |
| @@ -815,7 +860,6 @@ Unfortunately, the tool bar (and possible other operations) always | |||
| 815 | resize the frame. | 860 | resize the frame. |
| 816 | 861 | ||
| 817 | **** Support 'proced' (implement 'process-attributes') | 862 | **** Support 'proced' (implement 'process-attributes') |
| 818 | |||
| 819 | Unfortunately, a user-level process like Emacs does not have the | 863 | Unfortunately, a user-level process like Emacs does not have the |
| 820 | privileges to get information about other processes under macOS. | 864 | privileges to get information about other processes under macOS. |
| 821 | 865 | ||
| @@ -835,16 +879,13 @@ See this article by Bozhidar Batsov for an overview of Proced: | |||
| 835 | https://emacsredux.com/blog/2013/05/02/manage-processes-with-proced/ | 879 | https://emacsredux.com/blog/2013/05/02/manage-processes-with-proced/ |
| 836 | 880 | ||
| 837 | **** Tooltip properties | 881 | **** Tooltip properties |
| 838 | |||
| 839 | Tooltip properties like the background color and font are hard-wired, | 882 | Tooltip properties like the background color and font are hard-wired, |
| 840 | even though Emacs allows a user to customize such features. | 883 | even though Emacs allows a user to customize such features. |
| 841 | 884 | ||
| 842 | *** New features | 885 | *** New features |
| 843 | |||
| 844 | This section contains features unique to Nextstep and/or macOS. | 886 | This section contains features unique to Nextstep and/or macOS. |
| 845 | 887 | ||
| 846 | **** PressAndHold for writing accented character | 888 | **** PressAndHold for writing accented character |
| 847 | |||
| 848 | On macOS, many application support the press and hold pattern to | 889 | On macOS, many application support the press and hold pattern to |
| 849 | invoke a menu of accented characters. (See example at | 890 | invoke a menu of accented characters. (See example at |
| 850 | https://support.apple.com/en-us/HT201586 .) | 891 | https://support.apple.com/en-us/HT201586 .) |
| @@ -857,7 +898,6 @@ Note: This feature might not be allowed to be implemented until also | |||
| 857 | implemented in Emacs for a free system. | 898 | implemented in Emacs for a free system. |
| 858 | 899 | ||
| 859 | **** Floating scroll bars | 900 | **** Floating scroll bars |
| 860 | |||
| 861 | In modern macOS applications, the scroll bar often floats over the | 901 | In modern macOS applications, the scroll bar often floats over the |
| 862 | content, and is invisible unless actually used. This makes the user | 902 | content, and is invisible unless actually used. This makes the user |
| 863 | interface less cluttered and more area could be used to contain text. | 903 | interface less cluttered and more area could be used to contain text. |
| @@ -871,7 +911,6 @@ Note: This feature might not be allowed to be implemented until also | |||
| 871 | implemented in Emacs for a free system. | 911 | implemented in Emacs for a free system. |
| 872 | 912 | ||
| 873 | *** Features from the "mac" port | 913 | *** Features from the "mac" port |
| 874 | |||
| 875 | This section contains features available in the "mac" Emacs port. | 914 | This section contains features available in the "mac" Emacs port. |
| 876 | 915 | ||
| 877 | As the "mac" port (as of this writing) isn't an official Emacs port, | 916 | As the "mac" port (as of this writing) isn't an official Emacs port, |
| @@ -884,7 +923,6 @@ interface. The Carbon interface has been enhanced, and a number of the | |||
| 884 | features of that interface could be implemented NS. | 923 | features of that interface could be implemented NS. |
| 885 | 924 | ||
| 886 | **** Smooth scrolling -- maybe not a good idea | 925 | **** Smooth scrolling -- maybe not a good idea |
| 887 | |||
| 888 | Today, by default, scrolling with a trackpad makes the text move in | 926 | Today, by default, scrolling with a trackpad makes the text move in |
| 889 | steps of five lines. (Scrolling with SHIFT scrolls one line at a time.) | 927 | steps of five lines. (Scrolling with SHIFT scrolls one line at a time.) |
| 890 | 928 | ||
| @@ -901,7 +939,6 @@ Note: This feature might not be allowed to be implemented until also | |||
| 901 | implemented in Emacs for a free system. | 939 | implemented in Emacs for a free system. |
| 902 | 940 | ||
| 903 | **** Mouse gestures | 941 | **** Mouse gestures |
| 904 | |||
| 905 | The "mac" port defines the gestures 'swipe-left/right/up/down', | 942 | The "mac" port defines the gestures 'swipe-left/right/up/down', |
| 906 | 'magnify-up/down', and 'rotate-left/right'. | 943 | 'magnify-up/down', and 'rotate-left/right'. |
| 907 | 944 | ||
| @@ -915,11 +952,9 @@ implemented in Emacs for a free system. | |||
| 915 | **** Synthesize bold fonts | 952 | **** Synthesize bold fonts |
| 916 | 953 | ||
| 917 | *** Open issues | 954 | *** Open issues |
| 918 | |||
| 919 | This section contains issues where there is an ongoing debate. | 955 | This section contains issues where there is an ongoing debate. |
| 920 | 956 | ||
| 921 | **** Key bindings of CMD and ALT | 957 | **** Key bindings of CMD and ALT |
| 922 | |||
| 923 | Currently in the "ns" port, ALT is bound to Meta and CMD is bound to | 958 | Currently in the "ns" port, ALT is bound to Meta and CMD is bound to |
| 924 | Super -- allowing the user to use typical macOS commands like CMD-A to | 959 | Super -- allowing the user to use typical macOS commands like CMD-A to |
| 925 | mark everything. | 960 | mark everything. |
| @@ -942,7 +977,6 @@ https://lists.gnu.org/r/emacs-devel/2016-01/msg00008.html | |||
| 942 | *** Internal development features | 977 | *** Internal development features |
| 943 | 978 | ||
| 944 | **** Regression test system (or at least a checklist) | 979 | **** Regression test system (or at least a checklist) |
| 945 | |||
| 946 | Today, after each change to the user interface, Emacs must be manually | 980 | Today, after each change to the user interface, Emacs must be manually |
| 947 | tested. Often, small details are overlooked ("Oh, I didn't test | 981 | tested. Often, small details are overlooked ("Oh, I didn't test |
| 948 | toggling the tool-bar in one of the full screen modes, when multiple | 982 | toggling the tool-bar in one of the full screen modes, when multiple |
| @@ -953,18 +987,15 @@ Many features are generic, however, the NS interface provides a number | |||
| 953 | of unique features. | 987 | of unique features. |
| 954 | 988 | ||
| 955 | **** Existing packages | 989 | **** Existing packages |
| 956 | |||
| 957 | Note that there is a generic UI test named frame-test.el, see | 990 | Note that there is a generic UI test named frame-test.el, see |
| 958 | https://debbugs.gnu.org/21415#284 . | 991 | https://debbugs.gnu.org/21415#284 . |
| 959 | The NS interface passes this, with the exception of two toolbar-related errors. | 992 | The NS interface passes this, with the exception of two toolbar-related errors. |
| 960 | 993 | ||
| 961 | **** Anders frame test | 994 | **** Anders frame test |
| 962 | |||
| 963 | Anders Lindgren <andlind@gmail.com> has implemented some (very basic) | 995 | Anders Lindgren <andlind@gmail.com> has implemented some (very basic) |
| 964 | tests for full screen, toolbar, and auto-hiding the menu bar. | 996 | tests for full screen, toolbar, and auto-hiding the menu bar. |
| 965 | 997 | ||
| 966 | **** Make sure all build variants work | 998 | **** Make sure all build variants work |
| 967 | |||
| 968 | Emacs can be build in a number of different ways. For each feature, | 999 | Emacs can be build in a number of different ways. For each feature, |
| 969 | consider if is really is "NS" specific, or if it should be applied to | 1000 | consider if is really is "NS" specific, or if it should be applied to |
| 970 | all build versions. | 1001 | all build versions. |
| @@ -982,7 +1013,6 @@ all build versions. | |||
| 982 | *** Bugs | 1013 | *** Bugs |
| 983 | 1014 | ||
| 984 | **** Toggling the toolbar in fullheight or maximized modes | 1015 | **** Toggling the toolbar in fullheight or maximized modes |
| 985 | |||
| 986 | The toolbar, in the NS interface, is not considered part of the text | 1016 | The toolbar, in the NS interface, is not considered part of the text |
| 987 | area. When it is toggled, the Emacs frame change height accordingly. | 1017 | area. When it is toggled, the Emacs frame change height accordingly. |
| 988 | 1018 | ||
| @@ -997,7 +1027,7 @@ i.e. change the text area. | |||
| 997 | 1027 | ||
| 998 | This is related to the 'frame-inhibit-implied-resize' issue. | 1028 | This is related to the 'frame-inhibit-implied-resize' issue. |
| 999 | 1029 | ||
| 1000 | **** The event loop does not redraw. | 1030 | **** The event loop does not redraw |
| 1001 | A problem is that redraw don't happen during resize, | 1031 | A problem is that redraw don't happen during resize, |
| 1002 | because we can't break out from the NSapp loop during resize. | 1032 | because we can't break out from the NSapp loop during resize. |
| 1003 | There was a special trick to detect mouse press in the lower right | 1033 | There was a special trick to detect mouse press in the lower right |
| @@ -1005,8 +1035,9 @@ corner and track mouse movements, but this did not work well, and was | |||
| 1005 | not scalable to the new Lion "resize on every window edge" behavior. | 1035 | not scalable to the new Lion "resize on every window edge" behavior. |
| 1006 | [As of trunk r109635, 2012-08-15, the event loop no longer polls.] | 1036 | [As of trunk r109635, 2012-08-15, the event loop no longer polls.] |
| 1007 | 1037 | ||
| 1008 | **** (mouse-avoidance-mode 'banish) then minimize Emacs, will pop window back | 1038 | **** mouse-avoidance-mode |
| 1009 | up on top of all others (probably fixed in bug#17439) | 1039 | (mouse-avoidance-mode 'banish) then minimize Emacs, will pop window back |
| 1040 | up on top of all others (probably fixed in bug#17439). | ||
| 1010 | 1041 | ||
| 1011 | **** free_frame_resources, face colors | 1042 | **** free_frame_resources, face colors |
| 1012 | 1043 | ||
| @@ -1052,13 +1083,13 @@ pay attention to the bidi directives embedded in the HTML/XML stream. | |||
| 1052 | 1083 | ||
| 1053 | *** Allow the user to control the direction of the UI | 1084 | *** Allow the user to control the direction of the UI |
| 1054 | 1085 | ||
| 1055 | **** Introduce user option to control direction of mode line. | 1086 | **** Introduce user option to control direction of mode line |
| 1056 | One problem is the header line, which is produced by the same routines | 1087 | One problem is the header line, which is produced by the same routines |
| 1057 | as the mode line. While it makes sense to have the mode-line | 1088 | as the mode line. While it makes sense to have the mode-line |
| 1058 | direction controlled by a single global variable, header lines are | 1089 | direction controlled by a single global variable, header lines are |
| 1059 | buffer-specific, so they need a separate treatment in this regard. | 1090 | buffer-specific, so they need a separate treatment in this regard. |
| 1060 | 1091 | ||
| 1061 | **** User options to control direction of menu bar and tool bar. | 1092 | **** User options to control direction of menu bar and tool bar |
| 1062 | For the tool bar, it's relatively easy: set it.paragraph_embedding | 1093 | For the tool bar, it's relatively easy: set it.paragraph_embedding |
| 1063 | in redisplay_tool_bar according to the user variable, and make | 1094 | in redisplay_tool_bar according to the user variable, and make |
| 1064 | f->desired_tool_bar_string multibyte with STRING_SET_MULTIBYTE. Some | 1095 | f->desired_tool_bar_string multibyte with STRING_SET_MULTIBYTE. Some |
| @@ -1075,7 +1106,7 @@ with toolkit-specific code to display the menu bar right to left. | |||
| 1075 | 1106 | ||
| 1076 | ** Custom | 1107 | ** Custom |
| 1077 | 1108 | ||
| 1078 | *** Extend :set-after to also mean initialize after. | 1109 | *** Extend :set-after to also mean initialize after |
| 1079 | If defcustom A specifies :set-after '(B), then if a user customizes | 1110 | If defcustom A specifies :set-after '(B), then if a user customizes |
| 1080 | both A and B, custom will set A after B. But if the user only customizes | 1111 | both A and B, custom will set A after B. But if the user only customizes |
| 1081 | A, then if B is already defined, it gets left at its original setting. | 1112 | A, then if B is already defined, it gets left at its original setting. |
| @@ -1086,14 +1117,16 @@ such as for mail-host-address and user-mail-address in startup.el. | |||
| 1086 | 1117 | ||
| 1087 | ** ImageMagick support | 1118 | ** ImageMagick support |
| 1088 | 1119 | ||
| 1089 | *** image-type-header-regexps priorities the jpeg loader over the | 1120 | *** Image priority |
| 1121 | 'image-type-header-regexps' prioritizes the jpeg loader over the | ||
| 1090 | ImageMagick one. This is not wrong, but how should a user go about | 1122 | ImageMagick one. This is not wrong, but how should a user go about |
| 1091 | preferring the ImageMagick loader? The user might like zooming etc in jpegs. | 1123 | preferring the ImageMagick loader? The user might like zooming etc in jpegs. |
| 1092 | 1124 | ||
| 1093 | Try (setq image-type-header-regexps nil) for a quick hack to prefer | 1125 | Try (setq image-type-header-regexps nil) for a quick hack to prefer |
| 1094 | ImageMagick over the jpg loader. | 1126 | ImageMagick over the jpg loader. |
| 1095 | 1127 | ||
| 1096 | *** For some reason it's unbearably slow to look at a page in a large | 1128 | *** Slow display |
| 1129 | For some reason it's unbearably slow to look at a page in a large | ||
| 1097 | image bundle using the :index feature. The ImageMagick "display" | 1130 | image bundle using the :index feature. The ImageMagick "display" |
| 1098 | command is also a bit slow, but nowhere near as slow as the Emacs | 1131 | command is also a bit slow, but nowhere near as slow as the Emacs |
| 1099 | code. It seems ImageMagick tries to unpack every page when loading the | 1132 | code. It seems ImageMagick tries to unpack every page when loading the |
| @@ -1102,77 +1135,81 @@ bundle. This feature is not the primary usecase in Emacs though. | |||
| 1102 | ImageMagick 6.6.2-9 introduced a bugfix for single page djvu load. It | 1135 | ImageMagick 6.6.2-9 introduced a bugfix for single page djvu load. It |
| 1103 | is now much faster to use the :index feature, but still not very fast. | 1136 | is now much faster to use the :index feature, but still not very fast. |
| 1104 | 1137 | ||
| 1105 | *** Try to cache the num pages calculation. It can take a while to | 1138 | *** Try to cache the num pages calculation |
| 1106 | calculate the number of pages, and if you need to do it for each page | 1139 | It can take a while to calculate the number of pages, and if you need |
| 1107 | view, page-flipping becomes uselessly slow. | 1140 | to do it for each page view, page-flipping becomes uselessly slow. |
| 1108 | 1141 | ||
| 1109 | *** Integrate with image-dired. | 1142 | *** Integrate with image-dired |
| 1110 | 1143 | ||
| 1111 | *** Integrate with docview. | 1144 | *** Integrate with docview |
| 1112 | 1145 | ||
| 1113 | *** Integrate with image-mode. | 1146 | *** Integrate with image-mode |
| 1114 | Some work has been done, e.g. M-x image-transform-fit-to-height will | 1147 | Some work has been done, e.g. "M-x image-transform-fit-to-height" will |
| 1115 | fit the image to the height of the Emacs window. | 1148 | fit the image to the height of the Emacs window. |
| 1116 | 1149 | ||
| 1117 | *** Look for optimizations for handling images with low depth. | 1150 | *** Look for optimizations for handling images with low depth |
| 1118 | Currently the code seems to default to 24 bit RGB which is costly for | 1151 | Currently the code seems to default to 24 bit RGB which is costly for |
| 1119 | images with lower bit depth. | 1152 | images with lower bit depth. |
| 1120 | 1153 | ||
| 1121 | *** Decide what to do with some uncommitted imagemagick support | 1154 | *** Decide what to do with some uncommitted imagemagick support |
| 1122 | functions for image size etc. | 1155 | Functions for image size etc. |
| 1123 | 1156 | ||
| 1124 | ** nxml mode | 1157 | ** nxml mode |
| 1125 | 1158 | ||
| 1126 | *** High priority | 1159 | *** High priority |
| 1127 | 1160 | ||
| 1128 | **** Command to insert an element template, including all required | 1161 | **** Command to insert an element template |
| 1129 | attributes and child elements. When there's a choice of elements | 1162 | This should include all required attributes and child elements. When |
| 1130 | possible, we could insert a comment, and put an overlay on that | 1163 | there's a choice of elements possible, we could insert a comment, and |
| 1131 | comment that makes it behave like a button with a pop-up menu to | 1164 | put an overlay on that comment that makes it behave like a button with |
| 1132 | select the appropriate choice. | 1165 | a pop-up menu to select the appropriate choice. |
| 1133 | 1166 | ||
| 1134 | **** Command to tag a region. With a schema should complete using legal | 1167 | **** Command to tag a region |
| 1135 | tags, but should work without a schema as well. | 1168 | With a schema should complete using legal tags, but should work |
| 1169 | without a schema as well. | ||
| 1136 | 1170 | ||
| 1137 | **** Provide a way to conveniently rename an element. With a schema should | 1171 | **** Provide a way to conveniently rename an element |
| 1138 | complete using legal tags, but should work without a schema as well. | 1172 | With a schema should complete using legal tags, but should work |
| 1173 | without a schema as well. | ||
| 1139 | 1174 | ||
| 1140 | *** Outlining | 1175 | *** Outlining |
| 1141 | 1176 | ||
| 1142 | **** Implement C-c C-o C-q. | 1177 | **** Implement C-c C-o C-q |
| 1143 | 1178 | ||
| 1144 | **** Install pre/post command hook for moving out of invisible section. | 1179 | **** Install pre/post command hook for moving out of invisible section |
| 1145 | 1180 | ||
| 1146 | **** Put a modify hook on invisible sections that expands them. | 1181 | **** Put a modify hook on invisible sections that expands them |
| 1147 | 1182 | ||
| 1148 | **** Integrate dumb folding somehow. | 1183 | **** Integrate dumb folding somehow |
| 1149 | 1184 | ||
| 1150 | **** An element should be able to be its own heading. | 1185 | **** An element should be able to be its own heading |
| 1151 | 1186 | ||
| 1152 | **** Optimize to avoid complete buffer scan on each command. | 1187 | **** Optimize to avoid complete buffer scan on each command |
| 1153 | 1188 | ||
| 1154 | **** Make it work with HTML-style headings (i.e. level indicated by | 1189 | **** Make it work with HTML-style headings |
| 1155 | name of heading element rather than depth of section nesting). | 1190 | I.e., level indicated by name of heading element rather than depth of |
| 1191 | section nesting. | ||
| 1156 | 1192 | ||
| 1157 | **** Recognize root element as a section provided it has a title, even | 1193 | **** Recognize root element as a section provided it has a title |
| 1158 | if it doesn't match section-element-name-regex. | 1194 | Even if it doesn't match section-element-name-regex. |
| 1159 | 1195 | ||
| 1160 | **** Support for incremental search automatically making hidden text visible. | 1196 | **** Support for incremental search automatically making hidden text visible |
| 1161 | 1197 | ||
| 1162 | **** Allow title to be an attribute. | 1198 | **** Allow title to be an attribute |
| 1163 | 1199 | ||
| 1164 | **** Command that says to recognize the tag at point as a section/heading. | 1200 | **** Command that says to recognize the tag at point as a section/heading |
| 1165 | 1201 | ||
| 1166 | **** Explore better ways to determine when an element is a section | 1202 | **** Explore better ways to determine when an element is a section or a heading |
| 1167 | or a heading. | ||
| 1168 | 1203 | ||
| 1169 | **** rng-next-error needs to either ignore invisible portion or reveal it | 1204 | **** Extend 'rng-next-error' |
| 1205 | 'rng-next-error' needs to either ignore invisible portion or reveal it | ||
| 1170 | (maybe use isearch oriented text properties). | 1206 | (maybe use isearch oriented text properties). |
| 1171 | 1207 | ||
| 1172 | **** Errors within hidden section should be highlighted by underlining the | 1208 | **** Errors within hidden section should be highlighted |
| 1173 | ellipsis. | 1209 | They should be highlighted by underlining the ellipsis. |
| 1174 | 1210 | ||
| 1175 | **** Make indirect buffers work. | 1211 | **** Make indirect buffers work |
| 1212 | [??? Don't they already work?] | ||
| 1176 | 1213 | ||
| 1177 | **** How should nxml-refresh outline recover from non well-formed tags? | 1214 | **** How should nxml-refresh outline recover from non well-formed tags? |
| 1178 | 1215 | ||
| @@ -1181,11 +1218,11 @@ ellipsis. | |||
| 1181 | **** Use overlays instead of text properties for holding outline state? | 1218 | **** Use overlays instead of text properties for holding outline state? |
| 1182 | Necessary for indirect buffers to work? | 1219 | Necessary for indirect buffers to work? |
| 1183 | 1220 | ||
| 1184 | **** Allow an outline to go in the speedbar. | 1221 | **** Allow an outline to go in the speedbar |
| 1185 | 1222 | ||
| 1186 | **** Split up outlining manual section into subsections. | 1223 | **** Split up outlining manual section into subsections |
| 1187 | 1224 | ||
| 1188 | **** More detail in the manual about each outlining command. | 1225 | **** More detail in the manual about each outlining command |
| 1189 | 1226 | ||
| 1190 | **** More menu entries for hiding/showing? | 1227 | **** More menu entries for hiding/showing? |
| 1191 | 1228 | ||
| @@ -1193,390 +1230,428 @@ Necessary for indirect buffers to work? | |||
| 1193 | 1230 | ||
| 1194 | *** Locating schemas | 1231 | *** Locating schemas |
| 1195 | 1232 | ||
| 1196 | **** Should rng-validate-mode give the user an opportunity to specify a | 1233 | **** Should 'rng-validate-mode' allow to specify a schema? |
| 1197 | schema if there is currently none? Or should it at least give a hint | 1234 | Give the user an opportunity to specify a schema if there is currently |
| 1198 | to the user how to specify a non-vacuous schema? | 1235 | none? Or should it at least give a hint to the user how to specify a |
| 1236 | non-vacuous schema? | ||
| 1199 | 1237 | ||
| 1200 | **** Support for adding new schemas to schema-locating files. | 1238 | **** Support for adding new schemas to schema-locating files |
| 1201 | Add documentElement and namespace elements. | 1239 | Add documentElement and namespace elements. |
| 1202 | 1240 | ||
| 1203 | **** C-c C-w should be able to report current type id. | 1241 | **** C-c C-w should be able to report current type id |
| 1204 | 1242 | ||
| 1205 | **** Implement doctypePublicId. | 1243 | **** Implement doctypePublicId |
| 1206 | 1244 | ||
| 1207 | **** Implement typeIdBase. | 1245 | **** Implement typeIdBase |
| 1208 | 1246 | ||
| 1209 | **** Implement typeIdProcessingInstruction. | 1247 | **** Implement typeIdProcessingInstruction |
| 1210 | 1248 | ||
| 1211 | **** Support xml:base. | 1249 | **** Support xml:base |
| 1212 | 1250 | ||
| 1213 | **** Implement group. | 1251 | **** Implement group |
| 1214 | 1252 | ||
| 1215 | **** Find preferred prefix from schema-locating files. Get rid of | 1253 | **** Find preferred prefix from schema-locating files |
| 1216 | rng-preferred-prefix-alist. | 1254 | Get rid of 'rng-preferred-prefix-alist'. |
| 1217 | 1255 | ||
| 1218 | **** Inserting document element with vacuous schema should complete using | 1256 | **** Inserting document element with vacuous schema should complete |
| 1219 | document elements declared in schema locating files, and set schema | 1257 | Completion should use document elements declared in schema locating |
| 1220 | appropriately. | 1258 | files, and set schema appropriately. |
| 1221 | 1259 | ||
| 1222 | **** Add a ruleType attribute to the <include> element? | 1260 | **** Add a ruleType attribute to the <include> element? |
| 1223 | 1261 | ||
| 1224 | **** Allow processing instruction in prolog to contain the compact syntax | 1262 | **** Syntax of schema in prologue |
| 1263 | Allow processing instruction in prologue to contain the compact syntax | ||
| 1225 | schema directly. | 1264 | schema directly. |
| 1226 | 1265 | ||
| 1227 | **** Use RDDL to locate a schema based on the namespace URI. | 1266 | **** Use RDDL to locate a schema based on the namespace URI |
| 1228 | 1267 | ||
| 1229 | **** Should not prompt to add redundant association to schema locating file. | 1268 | **** Should not prompt to add redundant association to schema locating file |
| 1230 | 1269 | ||
| 1231 | **** Command to reload current schema. | 1270 | **** Command to reload current schema |
| 1232 | 1271 | ||
| 1233 | *** Schema-sensitive features | 1272 | *** Schema-sensitive features |
| 1234 | 1273 | ||
| 1235 | **** Should filter dynamic markup possibilities using schema validity, by | 1274 | **** Should filter dynamic markup possibilities using schema validity |
| 1236 | adding hook to nxml-mode. | 1275 | Should do this by adding hook to nxml-mode. |
| 1237 | 1276 | ||
| 1238 | **** Dynamic markup word should (at least optionally) be able to look in | 1277 | **** Dynamic markup word should be able to look in other buffers |
| 1239 | other buffers that are using nxml-mode. | 1278 | It should be able to look in other buffers that are using nxml-mode |
| 1279 | (at least optionally). | ||
| 1240 | 1280 | ||
| 1241 | **** Should clicking on Invalid move to next error if already on an error? | 1281 | **** Should clicking on Invalid move to next error if already on an error? |
| 1242 | 1282 | ||
| 1243 | **** Take advantage of a:documentation. Needs change to schema format. | 1283 | **** Take advantage of a:documentation |
| 1284 | Needs change to schema format. | ||
| 1244 | 1285 | ||
| 1245 | **** Provide feasible validation (as in Jing) toggle. | 1286 | **** Provide feasible validation (as in Jing) toggle |
| 1246 | 1287 | ||
| 1247 | **** Save the validation state as a property on the error overlay to enable | 1288 | **** Save the validation state as a property on the error overlay |
| 1248 | more detailed diagnosis. | 1289 | This would enable more detailed diagnosis. |
| 1249 | 1290 | ||
| 1250 | **** Provide an Error Summary buffer showing all the validation errors. | 1291 | **** Provide an Error Summary buffer showing all the validation errors |
| 1251 | 1292 | ||
| 1252 | **** Pop-up menu. What is useful? Tag a region (should be grayed out if | 1293 | **** Pop-up menu |
| 1253 | the region is not balanced). Suggestions based on error messages. | 1294 | What is useful? Tag a region (should be grayed out if the region is |
| 1295 | not balanced). Suggestions based on error messages. | ||
| 1254 | 1296 | ||
| 1255 | **** Have configurable list of namespace URIs so that we can provide | 1297 | **** Have configurable list of namespace URIs |
| 1256 | namespace URI completion on extension elements or with schema-less documents. | 1298 | So that we can provide namespace URI completion on extension elements |
| 1299 | or with schema-less documents. | ||
| 1257 | 1300 | ||
| 1258 | **** Allow validation to handle XInclude. | 1301 | **** Allow validation to handle XInclude |
| 1259 | 1302 | ||
| 1260 | **** ID/IDREF support. | 1303 | **** ID/IDREF support |
| 1261 | 1304 | ||
| 1262 | *** Completion | 1305 | *** Completion |
| 1263 | 1306 | ||
| 1264 | **** Make it work with icomplete. Only use a function to complete when | 1307 | **** Make it work with icomplete |
| 1265 | some of the possible names have undeclared namespaces. | 1308 | Only use a function to complete when some of the possible names have |
| 1309 | undeclared namespaces. | ||
| 1266 | 1310 | ||
| 1267 | **** How should C-return in mixed text work? | 1311 | **** How should C-return in mixed text work? |
| 1268 | 1312 | ||
| 1269 | **** When there's a vacuous schema, C-return after < will insert the end-tag. | 1313 | **** When there's a vacuous schema, C-return after < will insert the end-tag |
| 1270 | Is this a bug or a feature? | 1314 | Is this a bug or a feature? |
| 1271 | 1315 | ||
| 1272 | **** After completing start-tag, ensure we don't get unhelpful message | 1316 | **** Validation messages after completing start-tag |
| 1273 | from validation | 1317 | After completing start-tag, ensure we don't get unhelpful message from |
| 1318 | validation | ||
| 1274 | 1319 | ||
| 1275 | **** Syntax table for completion. | 1320 | **** Syntax table for completion |
| 1276 | 1321 | ||
| 1277 | **** Should complete start-tag name with a space if namespace attributes | 1322 | **** Should complete start-tag name with a space |
| 1278 | are required. | 1323 | If namespace attributes are required. |
| 1279 | 1324 | ||
| 1280 | **** When completing start-tag name with no prefix and it doesn't match | 1325 | **** Completing start-tag name with no prefix |
| 1326 | When completing start-tag name with no prefix and it doesn't match | ||
| 1281 | should try to infer namespace from local name. | 1327 | should try to infer namespace from local name. |
| 1282 | 1328 | ||
| 1283 | **** Should completion pay attention to characters after point? If so, how? | 1329 | **** Should completion pay attention to characters after point? |
| 1330 | If so, how? | ||
| 1284 | 1331 | ||
| 1285 | **** When completing start-tag name, add required atts if only one required | 1332 | **** Completion of start-tag with only one attribute |
| 1333 | When completing start-tag name, add required atts if only one required | ||
| 1286 | attribute. | 1334 | attribute. |
| 1287 | 1335 | ||
| 1288 | **** When completing attribute name, add attribute value if only one value | 1336 | **** Completion of name of attribute with only one attribute value |
| 1337 | When completing attribute name, add attribute value if only one value | ||
| 1289 | is possible. | 1338 | is possible. |
| 1290 | 1339 | ||
| 1291 | **** After attribute-value completion, insert space after close delimiter | 1340 | **** Completion of attribute values |
| 1341 | After attribute-value completion, insert space after close delimiter | ||
| 1292 | if more attributes are required. | 1342 | if more attributes are required. |
| 1293 | 1343 | ||
| 1294 | **** Complete on enumerated data values in elements. | 1344 | **** Complete on enumerated data values in elements |
| 1295 | 1345 | ||
| 1296 | **** When in context that allows only elements, should get tag | 1346 | **** Tag completion in context that allows only elements |
| 1297 | completion without having to type < first. | 1347 | When in context that allows only elements, should get tag completion |
| 1348 | without having to type < first. | ||
| 1298 | 1349 | ||
| 1299 | **** When immediately after start-tag name, and name is valid and not | 1350 | **** C-return completion immediately after start-tag name |
| 1351 | When immediately after start-tag name, and name is valid and not | ||
| 1300 | prefix of any other name, should C-return complete on attribute names? | 1352 | prefix of any other name, should C-return complete on attribute names? |
| 1301 | 1353 | ||
| 1302 | **** When completing attributes, more consistent to ignore all attributes | 1354 | **** Ignoring all attributes during attribute completion |
| 1355 | When completing attributes, more consistent to ignore all attributes | ||
| 1303 | after point. | 1356 | after point. |
| 1304 | 1357 | ||
| 1305 | **** Inserting attribute value completions needs to be sensitive to what | 1358 | **** Inserting attribute value by completions |
| 1306 | delimiter is used so that it quotes the correct character. | 1359 | Completions inserting attribute value need to be sensitive to what |
| 1360 | delimiter is used so that they quote the correct character. | ||
| 1307 | 1361 | ||
| 1308 | **** Complete on encoding-names in XML decl. | 1362 | **** Complete on encoding-names in XML decl |
| 1309 | 1363 | ||
| 1310 | **** Complete namespace declarations by searching for all namespaces | 1364 | **** Complete namespace declarations |
| 1311 | mentioned in the schema. | 1365 | Can be done by searching for all namespaces mentioned in the schema. |
| 1312 | 1366 | ||
| 1313 | *** Well-formed XML support | 1367 | *** Well-formed XML support |
| 1314 | 1368 | ||
| 1315 | **** Deal better with Mule-UCS | 1369 | **** Deal better with Mule-UCS |
| 1316 | 1370 | ||
| 1317 | **** Deal with UTF-8 BOM when reading. | 1371 | **** Deal with UTF-8 BOM when reading |
| 1372 | [Isn't this already working when visiting XML files?] | ||
| 1318 | 1373 | ||
| 1319 | **** Complete entity names. | 1374 | **** Complete entity names |
| 1320 | 1375 | ||
| 1321 | **** Provide some support for entity names for MathML. | 1376 | **** Provide some support for entity names for MathML |
| 1322 | 1377 | ||
| 1323 | **** Command to repeat the last tag. | 1378 | **** Command to repeat the last tag |
| 1324 | 1379 | ||
| 1325 | **** Support for changing between character references and characters. | 1380 | **** Support for changing between character references and characters |
| 1326 | Need to check that context is one in which character references are | 1381 | Need to check that context is one in which character references are |
| 1327 | allowed. xmltok prolog parsing will need to distinguish parameter | 1382 | allowed. xmltok prolog parsing will need to distinguish parameter |
| 1328 | literals from other kinds of literal. | 1383 | literals from other kinds of literal. |
| 1329 | 1384 | ||
| 1330 | **** Provide a comment command to bind to M-; that works better than the | 1385 | **** Provide a comment command to bind to M-; |
| 1331 | normal one. | 1386 | The command should work better than the normal one. |
| 1332 | 1387 | ||
| 1333 | **** Make indenting in a multi-line comment work. | 1388 | **** Make indenting in a multi-line comment work |
| 1334 | 1389 | ||
| 1335 | **** Structure view. Separate buffer displaying element tree. | 1390 | **** Structure view |
| 1336 | Be able to navigate from structure view to document and vice-versa. | 1391 | Separate buffer displaying element tree. Be able to navigate from |
| 1392 | structure view to document and vice-versa. | ||
| 1337 | 1393 | ||
| 1338 | **** Flash matching >. | 1394 | **** Flash matching > |
| 1339 | 1395 | ||
| 1340 | **** Smart selection command that selects increasingly large syntactically | 1396 | **** Smart selection command |
| 1397 | Provide a command that selects increasingly large syntactically | ||
| 1341 | coherent chunks of XML. If point is in an attribute value, first | 1398 | coherent chunks of XML. If point is in an attribute value, first |
| 1342 | select complete value; then if command is repeated, select value plus | 1399 | select complete value; then if command is repeated, select value plus |
| 1343 | delimiters, then select attribute name as well, then complete | 1400 | delimiters, then select attribute name as well, then complete |
| 1344 | start-tag, then complete element, then enclosing element, etc. | 1401 | start-tag, then complete element, then enclosing element, etc. |
| 1345 | 1402 | ||
| 1346 | **** ispell integration. | 1403 | **** Ispell integration |
| 1347 | 1404 | ||
| 1348 | **** Block-level items in mixed content should be indented, e.g: | 1405 | **** Block-level items in mixed content |
| 1406 | This should be indented, e.g: | ||
| 1349 | <para>This is list: | 1407 | <para>This is list: |
| 1350 | <ul> | 1408 | <ul> |
| 1351 | <li>item</li> | 1409 | <li>item</li> |
| 1352 | 1410 | ||
| 1353 | **** Provide option to indent like this: | 1411 | **** Optionally different indentation style |
| 1412 | Provide an option to indent like this: | ||
| 1354 | <para>This is a paragraph | 1413 | <para>This is a paragraph |
| 1355 | occupying multiple lines.</para> | 1414 | occupying multiple lines.</para> |
| 1356 | 1415 | ||
| 1357 | **** Option to add make a / that closes a start-tag electrically insert a | 1416 | **** Option to make a / that closes a start-tag electrically insert a space |
| 1358 | space for the XHTML guys. | 1417 | Important for the XHTML guys. |
| 1359 | 1418 | ||
| 1360 | **** C-M-q should work. | 1419 | **** C-M-q should work |
| 1361 | 1420 | ||
| 1362 | *** Datatypes | 1421 | *** Datatypes |
| 1363 | 1422 | ||
| 1364 | **** Figure out workaround for CJK characters with regexps. | 1423 | **** Figure out workaround for CJK characters with regexps |
| 1365 | 1424 | ||
| 1366 | **** Does category C contain Cn? | 1425 | **** Does category C contain Cn? |
| 1367 | 1426 | ||
| 1368 | **** Do ENTITY datatype properly. | 1427 | **** Do ENTITY datatype properly |
| 1369 | 1428 | ||
| 1370 | *** XML Parsing Library | 1429 | *** XML Parsing Library |
| 1371 | 1430 | ||
| 1372 | **** Parameter entity parsing option, nil (never), t (always), | 1431 | **** Parameter entity parsing option |
| 1373 | unless-standalone (unless standalone="yes" in XML declaration). | 1432 | Values: nil (never), t (always), unless-standalone (unless |
| 1433 | standalone="yes" in XML declaration). | ||
| 1374 | 1434 | ||
| 1375 | **** When a file is currently being edited, there should be an option to | 1435 | **** Option to parse a buffer |
| 1436 | When a file is currently being edited, there should be an option to | ||
| 1376 | use its buffer instead of the on-disk copy. | 1437 | use its buffer instead of the on-disk copy. |
| 1377 | 1438 | ||
| 1378 | *** Handling all XML features | 1439 | *** Handling all XML features |
| 1379 | 1440 | ||
| 1380 | **** Provide better support for editing external general parsed entities. | 1441 | **** Provide better support for editing external general parsed entities |
| 1381 | Perhaps provide a way to force ignoring undefined entities; maybe turn | 1442 | Perhaps provide a way to force ignoring undefined entities; maybe turn |
| 1382 | this on automatically with <?xml encoding=""?> (with no version | 1443 | this on automatically with <?xml encoding=""?> (with no version |
| 1383 | pseudo-att). | 1444 | pseudo-att). |
| 1384 | 1445 | ||
| 1385 | **** Handle internal general entity declarations containing elements. | 1446 | **** Handle internal general entity declarations containing elements |
| 1386 | 1447 | ||
| 1387 | **** Handle external general entity declarations. | 1448 | **** Handle external general entity declarations |
| 1388 | 1449 | ||
| 1389 | **** Handle default attribute declarations in internal subset. | 1450 | **** Handle default attribute declarations in internal subset |
| 1390 | 1451 | ||
| 1391 | **** Handle parameter entities (including DTD). | 1452 | **** Handle parameter entities (including DTD) |
| 1392 | 1453 | ||
| 1393 | *** RELAX NG | 1454 | *** RELAX NG |
| 1394 | 1455 | ||
| 1395 | **** Do complete schema checking, at least optionally. | 1456 | **** Do complete schema checking, at least optionally |
| 1396 | 1457 | ||
| 1397 | **** Detect include/external loops during schema parse. | 1458 | **** Detect include/external loops during schema parse |
| 1398 | 1459 | ||
| 1399 | **** Coding system detection for schemas. Should use utf-8/utf-16 per the | 1460 | **** Coding system detection for schemas |
| 1400 | spec. But also need to allow encodings other than UTF-8/16 to support | 1461 | Should use utf-8/utf-16 per the spec. But also need to allow |
| 1401 | CJK charsets that Emacs cannot represent in Unicode. | 1462 | encodings other than UTF-8/16 to support CJK charsets that Emacs |
| 1463 | cannot represent in Unicode. | ||
| 1402 | 1464 | ||
| 1403 | *** Catching XML errors | 1465 | *** Catching XML errors |
| 1404 | 1466 | ||
| 1405 | **** Check public identifiers. | 1467 | **** Check public identifiers |
| 1406 | 1468 | ||
| 1407 | **** Check default attribute values. | 1469 | **** Check default attribute values |
| 1408 | 1470 | ||
| 1409 | *** Performance | 1471 | *** Performance |
| 1410 | 1472 | ||
| 1411 | **** Explore whether overlay-recenter can cure overlays performance problems. | 1473 | **** Explore whether overlay-recenter can cure overlays performance problems |
| 1412 | 1474 | ||
| 1413 | **** Cache schemas. Need to have list of files and mtimes. | 1475 | **** Cache schemas. Need to have list of files and mtimes |
| 1414 | 1476 | ||
| 1415 | **** Make it possible to reduce rng-validate-chunk-size significantly, | 1477 | **** Make it possible to reduce rng-validate-chunk-size significantly |
| 1416 | perhaps to 500 bytes, without bad performance impact: don't do | 1478 | Perhaps up to 500 bytes, without bad performance impact: don't do |
| 1417 | redisplay on every chunk; pass continue functions on other uses of | 1479 | redisplay on every chunk; pass continue functions on other uses of |
| 1418 | rng-do-some-validation. | 1480 | rng-do-some-validation. |
| 1419 | 1481 | ||
| 1420 | **** Cache after first tag. | 1482 | **** Cache after first tag |
| 1421 | 1483 | ||
| 1422 | **** Introduce a new name class that is a choice between names (so that | 1484 | **** Introduce a new name class that is a choice between names |
| 1423 | we can use member) | 1485 | So that we can use member. |
| 1424 | 1486 | ||
| 1425 | **** intern-choice should simplify after patterns with same 1st/2nd args | 1487 | **** intern-choice should simplify after patterns with same 1st/2nd args |
| 1426 | 1488 | ||
| 1427 | **** Large numbers of overlays slow things down dramatically. Represent | 1489 | **** Large numbers of overlays slow things down dramatically |
| 1428 | errors using text properties. This implies we cannot incrementally | 1490 | Represent errors using text properties. This implies we cannot |
| 1429 | keep track of the number of errors, in order to determine validity. | 1491 | incrementally keep track of the number of errors, in order to |
| 1430 | Instead, when validation completes, scan for any characters with an | 1492 | determine validity. Instead, when validation completes, scan for any |
| 1431 | error text property; this seems to be fast enough even with large | 1493 | characters with an error text property; this seems to be fast enough |
| 1432 | buffers. Problem with error at end of buffer, where there's no | 1494 | even with large buffers. Problem with error at end of buffer, where |
| 1433 | character; need special variable for this. Need to merge face from | 1495 | there's no character; need special variable for this. Need to merge |
| 1434 | font-lock with the error face: use :inherit attribute with list of two | 1496 | face from font-lock with the error face: use :inherit attribute with |
| 1435 | faces. How do we avoid making rng-valid depend on nxml-mode? | 1497 | list of two faces. How do we avoid making rng-valid depend on |
| 1498 | nxml-mode? | ||
| 1436 | 1499 | ||
| 1437 | *** Error recovery | 1500 | *** Error recovery |
| 1438 | 1501 | ||
| 1439 | **** Don't stop at newline in looking for close of start-tag. | 1502 | **** Don't stop at newline in looking for close of start-tag |
| 1440 | 1503 | ||
| 1441 | **** Use indentation to guide recovery from mismatched end-tags | 1504 | **** Use indentation to guide recovery from mismatched end-tags |
| 1442 | 1505 | ||
| 1443 | **** Don't keep parsing when currently not well-formed but previously | 1506 | **** Smarter parsing in presence of errors |
| 1444 | well-formed | 1507 | Don't keep parsing when currently not well-formed but previously |
| 1508 | well-formed. | ||
| 1445 | 1509 | ||
| 1446 | **** Try to recover from a bad start-tag by popping an open element if | 1510 | **** Recovery from bad start-tag |
| 1511 | Try to recover from a bad start-tag by popping an open element if | ||
| 1447 | there was a mismatched end-tag unaccounted for. | 1512 | there was a mismatched end-tag unaccounted for. |
| 1448 | 1513 | ||
| 1449 | **** Try to recover from a bad start-tag open on the hypothesis that there | 1514 | Try to recover from a bad start-tag open on the hypothesis that there |
| 1450 | was an error in the namespace URI. | 1515 | was an error in the namespace URI. |
| 1451 | 1516 | ||
| 1452 | **** Better recovery from ill-formed XML declarations. | 1517 | **** Better recovery from ill-formed XML declarations |
| 1453 | 1518 | ||
| 1454 | *** Usability improvements | 1519 | *** Usability improvements |
| 1455 | 1520 | ||
| 1456 | **** Should print a "Parsing..." message during long movements. | 1521 | **** Should print a "Parsing..." message during long movements |
| 1457 | 1522 | ||
| 1458 | **** Provide better position for reference to undefined pattern error. | 1523 | **** Provide better position for reference to undefined pattern error |
| 1459 | 1524 | ||
| 1460 | **** Put Well-formed in the mode-line when validating against any-content. | 1525 | **** Put Well-formed in the mode-line when validating against any-content |
| 1461 | 1526 | ||
| 1462 | **** Trim marking of illegal data for leading and trailing whitespace. | 1527 | **** Trim marking of illegal data for leading and trailing whitespace |
| 1463 | 1528 | ||
| 1464 | **** Show Invalid status as soon as we are sure it's invalid, rather than | 1529 | **** Show Invalid status as soon as we are sure it's invalid |
| 1465 | waiting for everything to be completely up to date. | 1530 | That's instead of waiting for everything to be completely up to date. |
| 1466 | 1531 | ||
| 1467 | **** When narrowed, Valid or Invalid status should probably consider only | 1532 | **** Operation when narrowed |
| 1533 | When narrowed, Valid or Invalid status should probably consider only | ||
| 1468 | validity of narrowed region. | 1534 | validity of narrowed region. |
| 1469 | 1535 | ||
| 1470 | *** Bug fixes | 1536 | *** Bug fixes |
| 1471 | 1537 | ||
| 1472 | **** Need to give an error for a document like: <foo/><![CDATA[ ]]> | 1538 | **** Need to give an error for a document like: <foo/><![CDATA[ ]]> |
| 1473 | 1539 | ||
| 1474 | **** Make nxml-forward-balanced-item work better for the prolog. | 1540 | **** Make nxml-forward-balanced-item work better for the prologue |
| 1475 | 1541 | ||
| 1476 | **** Make filling and indenting comments work in the prolog. | 1542 | **** Make filling and indenting comments work in the prologue |
| 1477 | 1543 | ||
| 1478 | **** Should delete RNC Input buffers. | 1544 | **** Should delete RNC Input buffers |
| 1479 | 1545 | ||
| 1480 | **** Figure out what regex use for NCName and use it consistently, | 1546 | **** Figure out what regex use for NCName and use it consistently |
| 1481 | 1547 | ||
| 1482 | **** Should have not-well-formed tokens in ref. | 1548 | **** Should have not-well-formed tokens in ref |
| 1483 | 1549 | ||
| 1484 | **** Require version in XML declaration? Probably not because prevents | 1550 | **** Require version in XML declaration? |
| 1485 | use for external parsed entities. At least forbid standalone without version. | 1551 | Probably not because prevents use for external parsed entities. At |
| 1552 | least forbid standalone without version. | ||
| 1486 | 1553 | ||
| 1487 | **** Reject schema that compiles to rng-not-allowed-ipattern. | 1554 | **** Reject schema that compiles to rng-not-allowed-ipattern |
| 1488 | 1555 | ||
| 1489 | **** Move point backwards on schema parse error so that it's on the right token. | 1556 | **** Move point backwards on schema parse error so that it's on the right token |
| 1490 | 1557 | ||
| 1491 | *** Internal | 1558 | *** Internal |
| 1492 | 1559 | ||
| 1493 | **** Use rng-quote-string consistently. | 1560 | **** Use rng-quote-string consistently |
| 1494 | 1561 | ||
| 1495 | **** Use parsing library for XML to texinfo conversion. | 1562 | **** Use parsing library for XML to texinfo conversion |
| 1496 | 1563 | ||
| 1497 | **** Rename xmltok.el to nxml-token.el. Use nxml-t- prefix instead of | 1564 | **** Rename xmltok.el to nxml-token.el |
| 1498 | xmltok-. Change nxml-t-type to nxml-t-token-type, nxml-t-start to | 1565 | Use nxml-t- prefix instead of xmltok-. Change nxml-t-type to |
| 1499 | nxml-t-token-start. | 1566 | nxml-t-token-type, nxml-t-start to nxml-t-token-start. |
| 1500 | 1567 | ||
| 1501 | **** Can we set fill-prefix to nil and rely on indenting? | 1568 | **** Can we set fill-prefix to nil and rely on indenting? |
| 1502 | 1569 | ||
| 1503 | **** xmltok should make available replacement text of entities containing | 1570 | **** xmltok should make available replacement text of entities with elements |
| 1504 | elements | ||
| 1505 | 1571 | ||
| 1506 | **** In rng-valid, instead of using modification-hooks and | 1572 | **** In rng-valid, use same technique as nxml-mode |
| 1507 | insert-behind-hooks on dependent overlays, use same technique as nxml-mode. | 1573 | That's instead of using modification-hooks and insert-behind-hooks on |
| 1574 | dependent overlays. | ||
| 1508 | 1575 | ||
| 1509 | *** Fontification | 1576 | *** Fontification |
| 1510 | 1577 | ||
| 1511 | **** Allow face to depend on element qname, attribute qname, attribute | 1578 | **** Allow face to depend on element qname, attribute qname, attribute value |
| 1512 | value. Use list with pairs of (R . F), where R specifies regexps and | 1579 | Use list with pairs of (R . F), where R specifies regexps and F |
| 1513 | F specifies faces. How can this list be made to depend on the document type? | 1580 | specifies faces. How can this list be made to depend on the document |
| 1581 | type? | ||
| 1514 | 1582 | ||
| 1515 | *** Other | 1583 | *** Other |
| 1516 | 1584 | ||
| 1517 | **** Support RELAX NG XML syntax (use XML parsing library). | 1585 | **** Support RELAX NG XML syntax (use XML parsing library) |
| 1518 | 1586 | ||
| 1519 | **** Support W3C XML Schema (use XML parsing library). | 1587 | **** Support W3C XML Schema (use XML parsing library) |
| 1520 | 1588 | ||
| 1521 | **** Command to infer schema from current document (like trang). | 1589 | **** Command to infer schema from current document (like trang) |
| 1522 | 1590 | ||
| 1523 | *** Schemas | 1591 | *** Schemas |
| 1524 | 1592 | ||
| 1525 | **** XSLT schema should take advantage of RELAX NG to express cooccurrence | 1593 | **** XSLT schema should take advantage of RELAX NG |
| 1526 | constraints on attributes (e.g. xsl:template). | 1594 | So as to express co-occurrence constraints on attributes |
| 1595 | (e.g. xsl:template). | ||
| 1527 | 1596 | ||
| 1528 | *** Documentation | 1597 | *** Documentation |
| 1529 | 1598 | ||
| 1530 | **** Move material from README to manual. | 1599 | **** Move material from README to manual |
| 1531 | 1600 | ||
| 1532 | **** Document encodings. | 1601 | **** Document encodings |
| 1533 | 1602 | ||
| 1534 | *** Notes | 1603 | *** Notes |
| 1535 | 1604 | ||
| 1536 | **** How can we allow an error to be displayed on a different token from | 1605 | **** Error display |
| 1606 | How can we allow an error to be displayed on a different token from | ||
| 1537 | where it is detected? In particular, for a missing closing ">" we | 1607 | where it is detected? In particular, for a missing closing ">" we |
| 1538 | will need to display it at the beginning of the following token. At the | 1608 | will need to display it at the beginning of the following token. At |
| 1539 | moment, when we parse the following token the error overlay will get cleared. | 1609 | the moment, when we parse the following token the error overlay will |
| 1610 | get cleared. | ||
| 1540 | 1611 | ||
| 1541 | **** How should rng-goto-next-error deal with narrowing? | 1612 | **** How should rng-goto-next-error deal with narrowing? |
| 1542 | 1613 | ||
| 1543 | **** Perhaps should merge errors having same start position even if they | 1614 | **** Perhaps should merge errors |
| 1544 | have different ends. | 1615 | Merge errors having same start position even if they have different |
| 1616 | ends. | ||
| 1545 | 1617 | ||
| 1546 | **** How to handle surrogates? One possibility is to be compatible with | 1618 | **** How to handle surrogates? |
| 1547 | utf8.e: represent as sequence of 4 chars. But utf-16 is incompatible | 1619 | One possibility is to be compatible with utf8.e: represent as sequence |
| 1548 | with this. | 1620 | of 4 chars. But utf-16 is incompatible with this. |
| 1549 | 1621 | ||
| 1550 | **** Should we distinguish well-formedness errors from invalidity errors? | 1622 | **** Should we distinguish well-formedness errors from invalidity errors? |
| 1551 | (I think not: we may want to recover from a bad start-tag by implying | 1623 | (I think not: we may want to recover from a bad start-tag by implying |
| 1552 | an end-tag.) | 1624 | an end-tag.) |
| 1553 | 1625 | ||
| 1554 | **** Seems to be a bug with Emacs, where a mouse movement that causes | 1626 | **** Mouse movement that causes help-echo |
| 1627 | Seems to be a bug with Emacs, where a mouse movement that causes | ||
| 1555 | help-echo text to appear counts as pending input but does not cause | 1628 | help-echo text to appear counts as pending input but does not cause |
| 1556 | idle timer to be restarted. | 1629 | idle timer to be restarted. |
| 1557 | 1630 | ||
| 1558 | **** Use XML to represent this file. | 1631 | **** Use XML to represent this file |
| 1559 | 1632 | ||
| 1560 | **** I had a TODO which said simply "split-string". What did I mean? | 1633 | **** I had a TODO which said simply "split-string" |
| 1634 | What did I mean? | ||
| 1561 | 1635 | ||
| 1562 | **** Investigate performance on large files all on one line. | 1636 | **** Investigate performance on large files all on one line |
| 1563 | 1637 | ||
| 1564 | *** Issues for Emacs versions >= 22 | 1638 | *** Issues for Emacs versions >= 22 |
| 1565 | 1639 | ||
| 1566 | **** Take advantage of UTF-8 CJK support. | 1640 | **** Take advantage of UTF-8 CJK support |
| 1567 | 1641 | ||
| 1568 | **** Supply a next-error-function. | 1642 | **** Supply a next-error-function |
| 1569 | 1643 | ||
| 1570 | **** Investigate this NEWS item "Emacs now tries to set up buffer coding | 1644 | **** Investigate a NEWS item |
| 1571 | systems for HTML/XML files automatically." | 1645 | There's a NEWS item which says "Emacs now tries to set up buffer |
| 1646 | coding systems for HTML/XML files automatically." | ||
| 1572 | 1647 | ||
| 1573 | **** Take advantage of the pointer text property. | 1648 | **** Take advantage of the pointer text property |
| 1574 | 1649 | ||
| 1575 | **** Leverage char-displayable-p. | 1650 | **** Leverage char-displayable-p |
| 1576 | 1651 | ||
| 1577 | ** RefTeX | 1652 | ** RefTeX |
| 1578 | 1653 | ||
| 1579 | *** Provide a wdired-like mode for editing RefTeX TOC buffers. | 1654 | *** Provide a wdired-like mode for editing RefTeX TOC buffers |
| 1580 | As a first step, renaming of sections could be supported. Ultimately, | 1655 | As a first step, renaming of sections could be supported. Ultimately, |
| 1581 | it would be great if it also supported moving sections, e.g., by | 1656 | it would be great if it also supported moving sections, e.g., by |
| 1582 | killing and yanking or providing org-mode like "move section | 1657 | killing and yanking or providing org-mode like "move section |
| @@ -1585,68 +1660,71 @@ presence of multi-file documents. | |||
| 1585 | 1660 | ||
| 1586 | * Internal changes | 1661 | * Internal changes |
| 1587 | 1662 | ||
| 1588 | ** Cleanup all the GC_ mark bit stuff -- there is no longer any distinction | 1663 | ** Cleanup all the GC_ mark bit stuff |
| 1589 | since the mark bit is no longer stored in the Lisp_Object itself. | 1664 | There is no longer any distinction since the mark bit is no longer |
| 1665 | stored in the Lisp_Object itself. | ||
| 1590 | 1666 | ||
| 1591 | ** Refine the 'predicate' arg to read-file-name. | 1667 | ** Refine the 'predicate' arg to read-file-name |
| 1592 | Currently, it mixes up the predicate to apply when doing completion and the | 1668 | Currently, it mixes up the predicate to apply when doing completion |
| 1593 | one to use when terminating the selection. | 1669 | and the one to use when terminating the selection. |
| 1594 | 1670 | ||
| 1595 | ** Merge ibuffer.el and buff-menu.el. | 1671 | ** Merge ibuffer.el and buff-menu.el |
| 1596 | More specifically do what's needed to make ibuffer.el the default, | 1672 | More specifically do what's needed to make ibuffer.el the default, or |
| 1597 | or just an extension of buff-menu.el. | 1673 | just an extension of buff-menu.el. |
| 1598 | 1674 | ||
| 1599 | ** Replace linum.el with nlinum.el | 1675 | ** Replace linum.el with nlinum.el |
| 1600 | https://lists.gnu.org/r/emacs-devel/2013-08/msg00379.html | 1676 | https://lists.gnu.org/r/emacs-devel/2013-08/msg00379.html |
| 1601 | 1677 | ||
| 1602 | (Since Emacs 26 introduced native line numbers, this item is | 1678 | (Since Emacs 26 introduced native line numbers, this item is |
| 1603 | probably obsolete.) | 1679 | probably obsolete.) |
| 1604 | 1680 | ||
| 1605 | ** Merge sendmail.el and messages.el. | 1681 | ** Merge sendmail.el and messages.el |
| 1606 | Probably not a complete merge, but at least arrange for messages.el to be | 1682 | Probably not a complete merge, but at least arrange for messages.el to |
| 1607 | a derived mode of sendmail.el. Or arrange for messages.el to be split | 1683 | be a derived mode of sendmail.el. Or arrange for messages.el to be |
| 1608 | into a small core and "the rest" so that we use less resources as long as | 1684 | split into a small core and "the rest" so that we use less resources |
| 1609 | we stick to the features provided in sendmail.el. | 1685 | as long as we stick to the features provided in sendmail.el. |
| 1610 | 1686 | ||
| 1611 | (Probably obsolete, as Emacs 24 switched to message.el as the | 1687 | (Probably obsolete, as Emacs 24 switched to message.el as the |
| 1612 | default mail composer.) | 1688 | default mail composer.) |
| 1613 | 1689 | ||
| 1614 | ** Replace gmalloc.c with the modified Doug Lea code from the current | 1690 | ** Replace gmalloc.c |
| 1615 | GNU libc so that the special mmapping of buffers can be removed -- | 1691 | Replace it with the modified Doug Lea code from the current GNU libc |
| 1616 | that apparently loses under Solaris, at least. [fx has mostly done | 1692 | so that the special mmapping of buffers can be removed -- that |
| 1617 | this.] | 1693 | apparently loses under Solaris, at least. [fx has mostly done this.] |
| 1618 | 1694 | ||
| 1619 | (Obsolete, since gmalloc.c is nowadays only used on MS-DOS.) | 1695 | (Obsolete, since gmalloc.c is nowadays only used on MS-DOS.) |
| 1620 | 1696 | ||
| 1621 | ** Rewrite make-docfile to be clean and maintainable. | 1697 | ** Rewrite make-docfile to be clean and maintainable |
| 1622 | It might be better to replace it with Lisp, using the byte compiler. | 1698 | It might be better to replace it with Lisp, using the byte compiler. |
| 1623 | https://lists.gnu.org/r/emacs-devel/2012-06/msg00037.html | 1699 | https://lists.gnu.org/r/emacs-devel/2012-06/msg00037.html |
| 1624 | 1700 | ||
| 1625 | ** Add an inferior-comint-minor-mode to capture the common set of operations | 1701 | ** Add an inferior-comint-minor-mode |
| 1626 | offered by major modes that offer an associated inferior | 1702 | The purpose is to have a mode to capture the common set of operations |
| 1627 | comint-derived mode. I.e. basically make cmuscheme.el/inf-lisp.el generic. | 1703 | offered by major modes that offer an associated inferior |
| 1628 | For use by sml-mode, python-mode, tex-mode, scheme-mode, lisp-mode, | 1704 | comint-derived mode. I.e. basically make cmuscheme.el/inf-lisp.el |
| 1629 | haskell-mode, tuareg-mode, ... | 1705 | generic. For use by sml-mode, python-mode, tex-mode, scheme-mode, |
| 1706 | lisp-mode, haskell-mode, tuareg-mode, ... | ||
| 1630 | 1707 | ||
| 1631 | ** Add "link" button class | 1708 | ** Add "link" button class |
| 1632 | Add a standard button-class named "link", and make all other link-like | 1709 | Add a standard button-class named "link", and make all other link-like |
| 1633 | button classes inherit from it. Set the default face of the "link" button | 1710 | button classes inherit from it. Set the default face of the "link" |
| 1634 | class to the standard "link" face. | 1711 | button class to the standard "link" face. |
| 1635 | 1712 | ||
| 1636 | * Wishlist items: | 1713 | * Wishlist items |
| 1637 | 1714 | ||
| 1638 | ** Maybe replace etags.c with a Lisp implementation. | 1715 | ** Maybe replace etags.c with a Lisp implementation. |
| 1639 | https://lists.gnu.org/r/emacs-devel/2012-06/msg00354.html | 1716 | https://lists.gnu.org/r/emacs-devel/2012-06/msg00354.html |
| 1640 | 1717 | ||
| 1641 | ** Maybe replace lib-src/rcs2log with a Lisp implementation. | 1718 | ** Maybe replace lib-src/rcs2log with a Lisp implementation |
| 1642 | It wouldn't have to be a complete replacement, just enough | 1719 | It wouldn't have to be a complete replacement, just enough |
| 1643 | for vc-rcs-update-changelog. | 1720 | for vc-rcs-update-changelog. |
| 1644 | 1721 | ||
| 1645 | * Other known bugs: | 1722 | * Other known bugs |
| 1646 | 1723 | ||
| 1647 | ** 'make-frame' forgets unhandled parameters, at least for X11 frames. | 1724 | ** 'make-frame' forgets unhandled parameters, at least for X11 frames |
| 1648 | 1725 | ||
| 1649 | ** a two-char comment-starter whose two chars are symbol constituents will | 1726 | ** Problem with comment-start |
| 1727 | A two-char comment-starter whose two chars are symbol constituents will | ||
| 1650 | not be noticed if it appears within a word. | 1728 | not be noticed if it appears within a word. |
| 1651 | 1729 | ||
| 1652 | 1730 | ||
diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el index 72dbfd74b11..22e648e44ba 100644 --- a/lisp/emacs-lisp/bytecomp.el +++ b/lisp/emacs-lisp/bytecomp.el | |||
| @@ -2755,14 +2755,15 @@ If FORM is a lambda or a macro, byte-compile it as a function." | |||
| 2755 | ;; Expand macros. | 2755 | ;; Expand macros. |
| 2756 | (setq fun (byte-compile-preprocess fun)) | 2756 | (setq fun (byte-compile-preprocess fun)) |
| 2757 | (setq fun (byte-compile-top-level fun nil 'eval)) | 2757 | (setq fun (byte-compile-top-level fun nil 'eval)) |
| 2758 | (if macro (push 'macro fun)) | ||
| 2759 | (if (symbolp form) | 2758 | (if (symbolp form) |
| 2760 | ;; byte-compile-top-level returns an *expression* equivalent to the | 2759 | ;; byte-compile-top-level returns an *expression* equivalent to the |
| 2761 | ;; `fun' expression, so we need to evaluate it, tho normally | 2760 | ;; `fun' expression, so we need to evaluate it, tho normally |
| 2762 | ;; this is not needed because the expression is just a constant | 2761 | ;; this is not needed because the expression is just a constant |
| 2763 | ;; byte-code object, which is self-evaluating. | 2762 | ;; byte-code object, which is self-evaluating. |
| 2764 | (fset form (eval fun t)) | 2763 | (setq fun (eval fun t))) |
| 2765 | fun))))))) | 2764 | (if macro (push 'macro fun)) |
| 2765 | (if (symbolp form) (fset form fun)) | ||
| 2766 | fun)))))) | ||
| 2766 | 2767 | ||
| 2767 | (defun byte-compile-sexp (sexp) | 2768 | (defun byte-compile-sexp (sexp) |
| 2768 | "Compile and return SEXP." | 2769 | "Compile and return SEXP." |
diff --git a/lisp/progmodes/cc-mode.el b/lisp/progmodes/cc-mode.el index b3b2374805d..4869f5c596d 100644 --- a/lisp/progmodes/cc-mode.el +++ b/lisp/progmodes/cc-mode.el | |||
| @@ -1621,7 +1621,7 @@ Note that the style variables are always made local to the buffer." | |||
| 1621 | (goto-char (1+ end)) ; After the \ | 1621 | (goto-char (1+ end)) ; After the \ |
| 1622 | ;; Search forward for EOLL | 1622 | ;; Search forward for EOLL |
| 1623 | (setq lim (re-search-forward "\\(?:\\\\\\(?:.\\|\n\\)\\|[^\\\n\r]\\)*" | 1623 | (setq lim (re-search-forward "\\(?:\\\\\\(?:.\\|\n\\)\\|[^\\\n\r]\\)*" |
| 1624 | nil t)) | 1624 | nil t)) |
| 1625 | (goto-char (1+ end)) | 1625 | (goto-char (1+ end)) |
| 1626 | (when (c-search-forward-char-property-with-value-on-char | 1626 | (when (c-search-forward-char-property-with-value-on-char |
| 1627 | 'syntax-table '(15) ?\" lim) | 1627 | 'syntax-table '(15) ?\" lim) |
diff --git a/lisp/tab-bar.el b/lisp/tab-bar.el index d24d59cb7e8..76e7f8c33a2 100644 --- a/lisp/tab-bar.el +++ b/lisp/tab-bar.el | |||
| @@ -1554,9 +1554,10 @@ indirectly called by the latter." | |||
| 1554 | Like \\[switch-to-buffer-other-frame] (which see), but creates a new tab." | 1554 | Like \\[switch-to-buffer-other-frame] (which see), but creates a new tab." |
| 1555 | (interactive | 1555 | (interactive |
| 1556 | (list (read-buffer-to-switch "Switch to buffer in other tab: "))) | 1556 | (list (read-buffer-to-switch "Switch to buffer in other tab: "))) |
| 1557 | (display-buffer buffer-or-name '((display-buffer-in-tab) | 1557 | (display-buffer (window-normalize-buffer-to-switch-to buffer-or-name) |
| 1558 | (inhibit-same-window . nil) | 1558 | '((display-buffer-in-tab) |
| 1559 | (reusable-frames . t)) | 1559 | (inhibit-same-window . nil) |
| 1560 | (reusable-frames . t)) | ||
| 1560 | norecord)) | 1561 | norecord)) |
| 1561 | 1562 | ||
| 1562 | (defun find-file-other-tab (filename &optional wildcards) | 1563 | (defun find-file-other-tab (filename &optional wildcards) |
diff --git a/src/alloc.c b/src/alloc.c index e241b9933a4..124b50d0d3f 100644 --- a/src/alloc.c +++ b/src/alloc.c | |||
| @@ -4687,35 +4687,6 @@ mark_maybe_objects (Lisp_Object const *array, ptrdiff_t nelts) | |||
| 4687 | mark_maybe_object (*array); | 4687 | mark_maybe_object (*array); |
| 4688 | } | 4688 | } |
| 4689 | 4689 | ||
| 4690 | /* A lower bound on the alignment of Lisp objects that need marking. | ||
| 4691 | Although 1 is safe, higher values speed up mark_maybe_pointer. | ||
| 4692 | If USE_LSB_TAG, this value is typically GCALIGNMENT; otherwise, | ||
| 4693 | it's determined by the natural alignment of Lisp structs. | ||
| 4694 | All vectorlike objects have alignment at least that of union | ||
| 4695 | vectorlike_header and it's unlikely they all have alignment greater, | ||
| 4696 | so use the union as a safe and likely-accurate standin for | ||
| 4697 | vectorlike objects. */ | ||
| 4698 | |||
| 4699 | enum { GC_OBJECT_ALIGNMENT_MINIMUM | ||
| 4700 | = max (GCALIGNMENT, | ||
| 4701 | min (alignof (union vectorlike_header), | ||
| 4702 | min (min (alignof (struct Lisp_Cons), | ||
| 4703 | alignof (struct Lisp_Float)), | ||
| 4704 | min (alignof (struct Lisp_String), | ||
| 4705 | alignof (struct Lisp_Symbol))))) }; | ||
| 4706 | |||
| 4707 | /* Return true if P might point to Lisp data that can be garbage | ||
| 4708 | collected, and false otherwise (i.e., false if it is easy to see | ||
| 4709 | that P cannot point to Lisp data that can be garbage collected). | ||
| 4710 | Symbols are implemented via offsets not pointers, but the offsets | ||
| 4711 | are also multiples of GC_OBJECT_ALIGNMENT_MINIMUM. */ | ||
| 4712 | |||
| 4713 | static bool | ||
| 4714 | maybe_lisp_pointer (void *p) | ||
| 4715 | { | ||
| 4716 | return (uintptr_t) p % GC_OBJECT_ALIGNMENT_MINIMUM == 0; | ||
| 4717 | } | ||
| 4718 | |||
| 4719 | /* If P points to Lisp data, mark that as live if it isn't already | 4690 | /* If P points to Lisp data, mark that as live if it isn't already |
| 4720 | marked. */ | 4691 | marked. */ |
| 4721 | 4692 | ||
| @@ -4728,9 +4699,6 @@ mark_maybe_pointer (void *p) | |||
| 4728 | VALGRIND_MAKE_MEM_DEFINED (&p, sizeof (p)); | 4699 | VALGRIND_MAKE_MEM_DEFINED (&p, sizeof (p)); |
| 4729 | #endif | 4700 | #endif |
| 4730 | 4701 | ||
| 4731 | if (!maybe_lisp_pointer (p)) | ||
| 4732 | return; | ||
| 4733 | |||
| 4734 | if (pdumper_object_p (p)) | 4702 | if (pdumper_object_p (p)) |
| 4735 | { | 4703 | { |
| 4736 | int type = pdumper_find_object_type (p); | 4704 | int type = pdumper_find_object_type (p); |
| @@ -4830,7 +4798,16 @@ mark_memory (void const *start, void const *end) | |||
| 4830 | 4798 | ||
| 4831 | for (pp = start; (void const *) pp < end; pp += GC_POINTER_ALIGNMENT) | 4799 | for (pp = start; (void const *) pp < end; pp += GC_POINTER_ALIGNMENT) |
| 4832 | { | 4800 | { |
| 4833 | mark_maybe_pointer (*(void *const *) pp); | 4801 | char *p = *(char *const *) pp; |
| 4802 | mark_maybe_pointer (p); | ||
| 4803 | |||
| 4804 | /* Unmask any struct Lisp_Symbol pointer that make_lisp_symbol | ||
| 4805 | previously disguised by adding the address of 'lispsym'. | ||
| 4806 | On a host with 32-bit pointers and 64-bit Lisp_Objects, | ||
| 4807 | a Lisp_Object might be split into registers saved into | ||
| 4808 | non-adjacent words and P might be the low-order word's value. */ | ||
| 4809 | p += (intptr_t) lispsym; | ||
| 4810 | mark_maybe_pointer (p); | ||
| 4834 | 4811 | ||
| 4835 | verify (alignof (Lisp_Object) % GC_POINTER_ALIGNMENT == 0); | 4812 | verify (alignof (Lisp_Object) % GC_POINTER_ALIGNMENT == 0); |
| 4836 | if (alignof (Lisp_Object) == GC_POINTER_ALIGNMENT | 4813 | if (alignof (Lisp_Object) == GC_POINTER_ALIGNMENT |
diff --git a/src/xdisp.c b/src/xdisp.c index ea28395cf55..0f06a38d405 100644 --- a/src/xdisp.c +++ b/src/xdisp.c | |||
| @@ -11575,7 +11575,9 @@ display_echo_area_1 (ptrdiff_t a1, Lisp_Object a2) | |||
| 11575 | /* Display. */ | 11575 | /* Display. */ |
| 11576 | clear_glyph_matrix (w->desired_matrix); | 11576 | clear_glyph_matrix (w->desired_matrix); |
| 11577 | XSETWINDOW (window, w); | 11577 | XSETWINDOW (window, w); |
| 11578 | void *itdata = bidi_shelve_cache (); | ||
| 11578 | try_window (window, start, 0); | 11579 | try_window (window, start, 0); |
| 11580 | bidi_unshelve_cache (itdata, false); | ||
| 11579 | 11581 | ||
| 11580 | return window_height_changed_p; | 11582 | return window_height_changed_p; |
| 11581 | } | 11583 | } |
| @@ -19748,7 +19750,7 @@ find_last_row_displaying_text (struct glyph_matrix *matrix, struct it *it, | |||
| 19748 | by changes at the start of current_buffer that occurred since W's | 19750 | by changes at the start of current_buffer that occurred since W's |
| 19749 | current matrix was built. Value is null if no such row exists. | 19751 | current matrix was built. Value is null if no such row exists. |
| 19750 | 19752 | ||
| 19751 | BEG_UNCHANGED us the number of characters unchanged at the start of | 19753 | BEG_UNCHANGED is the number of characters unchanged at the start of |
| 19752 | current_buffer. BEG + BEG_UNCHANGED is the buffer position of the | 19754 | current_buffer. BEG + BEG_UNCHANGED is the buffer position of the |
| 19753 | first changed character in current_buffer. Characters at positions < | 19755 | first changed character in current_buffer. Characters at positions < |
| 19754 | BEG + BEG_UNCHANGED are at the same buffer positions as they were | 19756 | BEG + BEG_UNCHANGED are at the same buffer positions as they were |