aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggert2020-06-01 22:26:32 -0700
committerPaul Eggert2020-06-01 22:26:32 -0700
commite10bd9e249bf70d0165a0cc050656ad94f34197d (patch)
tree7eb22d41a6e7aeb8757e883479bdc0f2b8ec1d45
parent2c1e5b9e77d5da26cfb01917c25546e776c67789 (diff)
parent44c0e074f7cb84481785cb49515a4bd7235a074b (diff)
downloademacs-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.texi9
-rw-r--r--etc/TODO1360
-rw-r--r--lisp/emacs-lisp/bytecomp.el7
-rw-r--r--lisp/progmodes/cc-mode.el2
-rw-r--r--lisp/tab-bar.el7
-rw-r--r--src/alloc.c43
-rw-r--r--src/xdisp.c4
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
741also used to rotate the completions list, @kbd{C-k} can be used to 741also used to rotate the completions list, @kbd{C-k} can be used to
742delete files and kill buffers in-list. Another noteworthy aspect is 742delete files and kill buffers in-list. Another noteworthy aspect is
743that @code{flex} is used as the default completion style 743that @code{flex} is used as the default completion style
744(@pxref{Completion Styles}). 744(@pxref{Completion Styles}). To change this, add the following to
745your 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
747the variable @code{fido-mode} to @code{t} (@pxref{Easy 754the variable @code{fido-mode} to @code{t} (@pxref{Easy
diff --git a/etc/TODO b/etc/TODO
index 0f908def768..152a29964f3 100644
--- a/etc/TODO
+++ b/etc/TODO
@@ -30,14 +30,15 @@ difficult to fix. Bugs with severity "minor" may be simpler, but this
30is not always true. 30is 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
34Change src/bytecode.c so that calls from byte-code functions to byte-code 35Change src/bytecode.c so that calls from byte-code functions to byte-code
35functions don't go through Ffuncall/funcall_lambda/exec_byte_code but instead 36functions don't go through Ffuncall/funcall_lambda/exec_byte_code but instead
36stay within exec_byte_code. 37stay 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
39and get rid of them if they're used only once and/or they're bound to 40Recognize immutable (lexical) bindings and get rid of them if they're
40a constant expression. 41used only once and/or they're bound to a constant expression.
41 42
42Such things aren't present in hand-written code, but macro expansion and 43Such things aren't present in hand-written code, but macro expansion and
43defsubst can often end up generating things like 44defsubst 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
46when 'actual' is a constant/copyable expression. 47when '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
50Such a byte-code can be used for local lambda expressions.
49E.g. when you have code like 51E.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
56turn those 'funcalls' into jumps and their return into indirect jumps back. 58turn 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
60Similar to the previous point, we should be able to handle something like 61Similar 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 73Including it as an "experimental" compile-time option sounds good. Of
73 of concurrency" we'll want. 74course there might still be big questions around "which form of
74** better support for dynamic embedded graphics: I like this idea (my 75concurrency" 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. 78I 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, 79though 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
83them from my local hacks), but it's not obvious at all whether they'll 84Consolidate skeleton.el, tempo.el, and expand.el (any other?) and then
84make it. 85advertise/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 88Yes, 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", 91Some of them from my local hacks, but it's not obvious at all whether
91 "FOO-tab -> ?\FOO-\t", "uppercase -> lowercase", "[fringe KEY...] -> 92they'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
95That default should use syntax-tables to recognize string/comment
96boundaries.
97
98*** Provide more completion-at-point-functions
99Make existing in-buffer completion use completion-at-point.
100
101*** "Functional" function-key-map
102It 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
97Need to sync up the Emacs and external versions. 110Need to sync up the Emacs and external versions.
98See <https://lists.gnu.org/r/emacs-devel/2014-07/msg00008.html> 111See <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
101See <https://lists.gnu.org/r/emacs-devel/2014-08/msg00300.html> 114See <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
105See <https://lists.gnu.org/r/emacs-devel/2015-02/msg01180.html> 118See <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
108See <https://lists.gnu.org/r/emacs-devel/2015-02/msg01180.html> 121See <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
111suitable for anyone from beginners to experts. 124These don't require much Emacs knowledge, they are suitable for anyone
125from 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
120It can use the same icons as gud. 134It 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
123to use it. 137Convert those to use it.
124 138
125** Remove unnecessary autoload cookies from defcustoms. 139** Remove unnecessary autoload cookies from defcustoms
126This needs a bit of care, since often people have become used to 140This needs a bit of care, since often people have become used to
127expecting such variables to always be defined, eg when they modify 141expecting such variables to always be defined, eg when they modify
128things in their .emacs. 142things 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
147Pick a fixed bug from the database, write a test case to make sure it
148stays fixed. Or pick your favorite programming major-mode, and write
149a test for its indentation. Or a version control backend, and write a
150test for its status parser. Etc. See the 'test' directory for
151examples.
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
133case to make sure it stays fixed. Or pick your favorite programming
134major-mode, and write a test for its indentation. Or a version
135control backend, and write a test for its status parser. Etc.
136See the 'test' directory for examples.
137 154
138* Small but important fixes needed in existing features: 155** A better display of the bar cursor
156Distribute a bar cursor of width > 1 evenly between the two glyphs on
157each 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?). 160For related problems consult the thread starting with
161https://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
166At the moment, invisible text is placed in the kill-ring, so that the
167contents of the ring may not correspond to the text as displayed to
168the user. It ought to be possible to omit text which is invisible
169(due to a text-property, overlay, or selective display) from the
170kill-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 173When 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. 174shape 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). 177The buttons at the top of a Custom buffer should not omit variables
178whose 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. 181Perhaps use a shell command string to specify the browser instead of
182the mushrooming set of functions.
160 183
161** Clean up the variables in browse-url. Perhaps use a shell command string to 184See 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? 190This 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 193See rms message of 11 Dec 05 in
173 https://lists.gnu.org/r/emacs-pretest-bug/2005-12/msg00165.html, 194https://lists.gnu.org/r/emacs-pretest-bug/2005-12/msg00165.html,
174 and the rest of that discussion. 195and 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. 198They 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, 203It should cope better with evaluating definitions of the same function
183 recording which file the latest definition came from. 204from different files, recording which file the latest definition came
205from.
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
188https://lists.gnu.org/r/emacs-devel/2007-04/msg00782.html 210https://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
191https://lists.gnu.org/r/emacs-devel/2007-04/msg00684.html 213https://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
194Change them to use report-emacs-bug. 216Change 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
225Provide 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
205like make-backup-file-name-function for non-numeric backup files. 228Like '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'
208dired buffers and DTRT WRT 'auto-revert-mode'. 231Needed 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
211https://lists.gnu.org/r/emacs-devel/2008-08/msg00456.html 234https://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"
216https://lists.gnu.org/r/emacs-devel/2013-11/msg00515.html 239https://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
333mentioned in the above HarfBuzz discussion. 356mentioned in the above HarfBuzz discussion.
334 357
335** Better support for displaying Emoji 358** Better support for displaying Emoji
336
337Emacs is capable of displaying Emoji and some of the Emoji sequences, 359Emacs is capable of displaying Emoji and some of the Emoji sequences,
338provided that its fontsets are configured with a suitable font. To 360provided that its fontsets are configured with a suitable font. To
339make this easier out of the box, the following should be done: 361make 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
343The Unicode Character Database (UCD) includes several data files that 364The Unicode Character Database (UCD) includes several data files that
344define the valid Emoji sequences. These files should be imported into 365define the valid Emoji sequences. These files should be imported into
345the Emacs tree, and should be converted by some script at Emacs build 366the 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
347corresponding composition rules. 368corresponding composition rules.
348 369
349*** Augment the default fontsets with Emoji-capable fonts 370*** Augment the default fontsets with Emoji-capable fonts
350
351The default fontsets set up by fontest.el should include known free 371The default fontsets set up by fontest.el should include known free
352fonts that provide good support for displaying Emoji sequences. In 372fonts that provide good support for displaying Emoji sequences. In
353addition, the rule that the default face's font is used for symbol and 373addition, 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
358font. 378font.
359 379
360*** Consider changing the default display of Variation Selectors 380*** Consider changing the default display of Variation Selectors
361
362Emacs by default displays the Variation Selector (VS) codepoints not 381Emacs by default displays the Variation Selector (VS) codepoints not
363composed with base characters as hex codes in a box. The Unicode FAQ 382composed with base characters as hex codes in a box. The Unicode FAQ
364says that if variation sequences cannot be supported, the VS 383says 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
369control characters, by using 'thin-space' there. 388control 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
373Emoji-capable fonts support Emoji sequences with the U+FE0F VARIATION 391Emoji-capable fonts support Emoji sequences with the U+FE0F VARIATION
374SELECTOR-16 (VS16) for emoji-style display, but usually don't support 392SELECTOR-16 (VS16) for emoji-style display, but usually don't support
375the U+FE0F VARIATION SELECTOR-15 (VS15) for text-style display. There 393the 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
391This would get us rid of font-lock-face property (and I'd be happy to 410This would get us rid of font-lock-face property (and I'd be happy to
392get rid of char-property-alias-alist as well) since font-lock would 411get 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
408properties are added. 427properties are added.
409 428
410*** Move overlays to intervals.c 429*** Move overlays to intervals.c
411
412Currently overlays are implemented as (two) sorted singly linked lists (one 430Currently overlays are implemented as (two) sorted singly linked lists (one
413for overlays_before some position and one for overlay_after that 431for overlays_before some position and one for overlay_after that
414position, for some quirky definition of "before" and "after"). 432position, 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
450to implement things like auto-loaded buffer parsers and database 468to implement things like auto-loaded buffer parsers and database
451access in cases which need more than Lisp. 469access 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
456using code like that of customize-groups. 474This 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
461indicating where in the buffer there are compilation errors. 479The bar should indicate where in the buffer there are compilation
462Perhaps we could arrange to display these error indications on top 480errors. Perhaps we could arrange to display these error indications
463of the scroll bar itself. That depends on to what extent toolkit 481on top of the scroll bar itself. That depends on to what extent
464scroll bars are extensible. 482toolkit 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 485Also 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 492Is there actually a decent single definition of RTF? Maybe see info at
476 http://latex2rtf.sourceforge.net/.] This task seems to be addressed 493http://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 495This task seems to be addressed by
481 http://en.wikipedia.org/wiki/Rich_Text_Format 496https://savannah.nongnu.org/projects/emacs-rtf/, which is still in
497very early stages.
482 498
483 It currently points to the latest spec of RTF v1.9.1 at 499Another place to look is the Wikipedia article at
484 http://www.microsoft.com/en-us/download/details.aspx?id=10725 500http://en.wikipedia.org/wiki/Rich_Text_Format. It currently points to
501the latest spec of RTF v1.9.1 at
502https://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. 505Implement primitive and higher-level functions to allow filling
506properly 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). 509See 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. 516Don'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". 517of 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
502specified 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
524Save backtraces when errors happen during specified filters, specified
525timers, 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
528https://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 530I 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 531the above message thread and double-buffering may have solved some
510 of the problems. 532of 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. 535This 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. 536through tall images. This value would be to point as window-vscroll
537is 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. 540Essentially as if they were documentation, e.g. in command names and
541Custom.
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 544This probably needs to be done from actual Emacs buffers, either
521 in the menu or by rendering in an unmapped window and copying the 545directly 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 546the pixels. The current code assumes a specific locale; that isn't
523 enough even if X can render the arbitrary text] [The gtk 547good 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 548displays multilingual text in menus, but only insofar as Emacs can
525 Emacs can encode it as utf-8 and gtk can display the result.] 549encode 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 550Lucid 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. 551that 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
530familiar with GNUstep and Objective C. 554Ideally 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
535you choose printer, page style, etc. 559A UI that pops up a dialog that lets you choose printer, page style,
536Integration with the Gtk print dialog is apparently difficult. See eg: 560etc. Integration with the Gtk print dialog is apparently difficult.
537https://lists.gnu.org/r/emacs-devel/2009-03/msg00501.html 561See eg: https://lists.gnu.org/r/emacs-devel/2009-03/msg00501.html
538https://lists.gnu.org/r/emacs-devel/2009-04/msg00034.html 562https://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
541from the emacsclient process. 565They 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. 570Do 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. 573Put 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, 580Also, 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 581detection 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 583value got installed) and offer ediff on the respective customization
560 customization buffers. 584buffers.
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 587The overlay could have 'after-text' like " [Function has advice]". It
564 " [Function has advice]". It might look like (defun foo [Function 588might 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 589could 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
596This 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
601E.g map mouse-4 to wheel-up as well as M-mouse-4 -> M-wheel-up
602M-C-mouse-4 -> M-C-wheel-up, H-S-C-M-s-double-mouse-4 ->
603H-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 616Hook-chars could have their effect on the parsing-state specified by
599 user-selected input method, with the default being the union of 617ELisp code. Thus a character could both close a string and open a
600 latin-1-prefix and latin-1-postfix. 618comment 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. 625The idea is to recognize patterns of commands which could be replaced
626with a simpler common command. It should not make more than one
627suggestion 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
630When an input method is first used, redefine C-x 8 to use a
631user-selected input method, with the default being the union of
632latin-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
635Different parts of a buffer could use different major modes. This
636could be useful in editing Bison input files, for instance, or other
637kinds of text where one language is embedded in another language. See
638http://www.loveshack.ukfsn.org/emacs/multi-mode.el and also mmm-mode,
639as reference for approaches taken by others.
640
641** A more convenient use of input methods in search
642Arrange a way for an input method to return the first character
643immediately, then replace it later. So that C-s a with input method
644latin-1-postfix would immediately search for an a.
645
646** Give start-process the ability to redirect standard-error
647It 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. 655Reload the file when needed for undoing. This could extend undo
622 undo-tree, in ELPA, already does this; its saving code could be 656capacity. undo-tree, in ELPA, already does this; its saving code
623 integrated without requiring the use of undo-tree. 657could 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 660Change the code so that it handles the deep_p argument and avoids
627 regenerating the whole menu bar menu tree except 661regenerating the whole menu-bar menu tree except when the user tries
628 when the user tries to use the menubar. 662to use the menubar.
663
664This requires the RIT to forward the WM_INITMENU message to the main
665thread, and not return from that message until the main thread has
666processed the MENU_BAR_ACTIVATE_EVENT and regenerated the whole menu
667bar. 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. 674https://lists.gnu.org/r/emacs-devel/2007-05/msg01493.html Check the
637 https://lists.gnu.org/r/emacs-devel/2007-05/msg01493.html 675assignments file for other packages which might go in and have been
638 Check the assignments file for other packages which might go in and 676missed.
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 679Byte-compiler warnings about functions that might be undefined at run
643 compiled and don't warn about functions defined in them. 680time should be smarter, so that they know which files are required by
681the file being compiled and don't warn about functions defined in
682them.
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. 689Zlib 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'. 692Introduce generational or incremental GC. We may be able to use the
735 693Boehm 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 696See 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, 701Typically 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 704Provide an optional feature which computes a scroll bar slider's
752** Eliminate the current restriction on header printing by ps-print. 705size 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 708E.g. to render graphics from Java applets. [gerd and/or wmperry
756** In ps-print, provide an user friendly interface to specify fonts. 709thought 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). 712This requires recursing through display properties. Provide some way
760 713to 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). 720Currently, a header can contain only single 1-byte charset in addition
768 721to 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. 726This 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] 729Display those images using the foreground and background colors of the
777 730applicable 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. 737The more important options should come first in the Customize buffers.
785 https://lists.gnu.org/r/emacs-devel/2007-09/msg02416.html 738This could be done by either rearranging the file (since options are
739shown 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
743Also in ancillary manuals, including the Lisp manual in some cases.
744This is not worth doing for all of these packages and we need not aim
745for completeness, but some may be worth documenting.
746
747Here's a list which is probably not complete/correct: align, allout,
748artist, ansi-color, array, calculator, cdl, cmuscheme, completion,
749delim-col, dirtrack, double, echistory, elide-head, easymenu, expand,
750flow-ctrl, format [format-alist], generic/generic-x [various modes],
751kermit, log-edit, makesum, midnight [other than in Kill Buffer node],
752mouse-copy [?], mouse-drag, mouse-sel, net-utils, rcompile, snmp-mode
753[?], soundex [should be interactive?], strokes [start from the web
754page], talk, thingatpt [interactive functions?], type-break, vcursor,
755xscheme, zone-mode [?], mlconvert [?], iso-cvt, feedmail [?], uce,
756gametree, page-ext, refbib, refer, scribe, texinfo, underline,
757cmacexp, hideif, pcomplete, xml, cvs-status (should be described in
758PCL-CVS manual); other progmodes, probably in separate manual.
759
760** Deprecate and remove XPM icons
761Convert the XPM bitmaps to PPM, replace the PBMs with them and scrap
762the XPMs so that the color versions work generally. (Requires care
763with the color used for the transparent regions.)
764
765** Convenient access to the 'values' variable
766It would be nice to have an interface that would show you the printed
767reps of the elements of the list in a menu, let you select one of the
768values, and put it into some other variable, without changing the
769value of 'values'.
770
771** Make open and close syntax match exactly
772Make open and close syntax match exactly, i.e. '(' doesn't match ']'.
773This should be controlled by a flag.
774
775** Use ID-FORMAT in 'file-attributes' and 'directory-files-and-attributes'
776Specify an explicit parameter ID-FORMAT in all calls to these
777functions where attributes UID or GID are used. Whenever possible,
778use 'string'. When done, change meaning of default value from
779'integer' to 'string'. If value 'integer' is used nowhere, remove the
780parameter 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
784Currently a user can customize only the variable
785'current-language-environment'.
786
787** Improve language environment handling
788Allow Emacs to fit better to a user's locale. Currently Emacs uses
789UTF-8 language environment for all UTF-8 locales, thus a user in
790ja_JP.UTF-8 locale are also put in UTF-8 language environment. In
791such a case, it is better to use Japanese language environment, while
792preferring the utf-8 coding system.
793
794** Enhance locale handling
795Handle language, territory and charset orthogonally, and de-emphasize
796language environments. Use the locale to set up more things, such as
797fontsets, the default Ispell dictionary, diary format, calendar
798holidays and display, quoting characters and phrase boundaries,
799sentence endings, collation for sorting (at least for unicodes), HTTP
800Accept-language, patterns for directory listings and compilation
801messages, yes-or-no replies, common menu items when the toolkit
802supports it ... 'locale-info' needs extending for LC_COLLATE &c. [fx
803started on this.]
804
805** Enhance word boundary detection
806This 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
810The idea is to write programs in lib-src for interfacing with Japanese
811conversion servers so that they can be used from the input method
812"japanese". Currently, most Japanese users are using external
813packages (e.g. tamago, anthy) or an input method via XIM.
814
815** Let LEIM handle the Mode_switch key like XIM does
816I.e. a toggle like C-\ but which can also be used as a modifier.
817
818** Improve Help buffers
819Change the face of previously visited links (like Info, but also with
820regard to namespace), and give the value of lisp expressions, e.g
821auto-mode-alist, the right face.
822
823** Possibly make 'list-holidays' eval items in the calendar-holidays variable
824See 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
828See thread <https://lists.gnu.org/r/emacs-pretest-bug/2006-11/msg00060.html>.
829
830** Possibly add a "close" button to the modeline
831The idea is to add an "X" of some kind, that when clicked deletes the
832window associated with that modeline.
833https://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
793This sections contains features found in other official Emacs ports. 840This sections contains features found in other official Emacs ports.
794 841
795**** Support for xwidgets 842**** Support for xwidgets
796
797Emacs 25 has support for xwidgets, a system to include operating 843Emacs 25 has support for xwidgets, a system to include operating
798system components into an Emacs buffer. The components range from 844system components into an Emacs buffer. The components range from
799simple buttons to webkit (effectively, a web browser). 845simple buttons to webkit (effectively, a web browser).
800 846
801Currently, xwidgets works only for the gtk+ framework but it is 847Currently, xwidgets work only for the gtk+ framework but they are
802designed to be compatible with multiple Emacs ports. 848designed 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
806https://lists.gnu.org/archive/html/emacs-devel/2019-08/msg00072.html) 852https://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
810When the variable 'frame-inhibit-implied-resize' is non-nil, frames 855When the variable 'frame-inhibit-implied-resize' is non-nil, frames
811should not be resized when operations like changing font or toggling 856should not be resized when operations like changing font or toggling
812the tool bar is performed. 857the tool bar is performed.
@@ -815,7 +860,6 @@ Unfortunately, the tool bar (and possible other operations) always
815resize the frame. 860resize the frame.
816 861
817**** Support 'proced' (implement 'process-attributes') 862**** Support 'proced' (implement 'process-attributes')
818
819Unfortunately, a user-level process like Emacs does not have the 863Unfortunately, a user-level process like Emacs does not have the
820privileges to get information about other processes under macOS. 864privileges 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:
835https://emacsredux.com/blog/2013/05/02/manage-processes-with-proced/ 879https://emacsredux.com/blog/2013/05/02/manage-processes-with-proced/
836 880
837**** Tooltip properties 881**** Tooltip properties
838
839Tooltip properties like the background color and font are hard-wired, 882Tooltip properties like the background color and font are hard-wired,
840even though Emacs allows a user to customize such features. 883even though Emacs allows a user to customize such features.
841 884
842*** New features 885*** New features
843
844This section contains features unique to Nextstep and/or macOS. 886This section contains features unique to Nextstep and/or macOS.
845 887
846**** PressAndHold for writing accented character 888**** PressAndHold for writing accented character
847
848On macOS, many application support the press and hold pattern to 889On macOS, many application support the press and hold pattern to
849invoke a menu of accented characters. (See example at 890invoke a menu of accented characters. (See example at
850https://support.apple.com/en-us/HT201586 .) 891https://support.apple.com/en-us/HT201586 .)
@@ -857,7 +898,6 @@ Note: This feature might not be allowed to be implemented until also
857implemented in Emacs for a free system. 898implemented in Emacs for a free system.
858 899
859**** Floating scroll bars 900**** Floating scroll bars
860
861In modern macOS applications, the scroll bar often floats over the 901In modern macOS applications, the scroll bar often floats over the
862content, and is invisible unless actually used. This makes the user 902content, and is invisible unless actually used. This makes the user
863interface less cluttered and more area could be used to contain text. 903interface 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
871implemented in Emacs for a free system. 911implemented in Emacs for a free system.
872 912
873*** Features from the "mac" port 913*** Features from the "mac" port
874
875This section contains features available in the "mac" Emacs port. 914This section contains features available in the "mac" Emacs port.
876 915
877As the "mac" port (as of this writing) isn't an official Emacs port, 916As 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
884features of that interface could be implemented NS. 923features 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
888Today, by default, scrolling with a trackpad makes the text move in 926Today, by default, scrolling with a trackpad makes the text move in
889steps of five lines. (Scrolling with SHIFT scrolls one line at a time.) 927steps 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
901implemented in Emacs for a free system. 939implemented in Emacs for a free system.
902 940
903**** Mouse gestures 941**** Mouse gestures
904
905The "mac" port defines the gestures 'swipe-left/right/up/down', 942The "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
919This section contains issues where there is an ongoing debate. 955This 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
923Currently in the "ns" port, ALT is bound to Meta and CMD is bound to 958Currently in the "ns" port, ALT is bound to Meta and CMD is bound to
924Super -- allowing the user to use typical macOS commands like CMD-A to 959Super -- allowing the user to use typical macOS commands like CMD-A to
925mark everything. 960mark 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
946Today, after each change to the user interface, Emacs must be manually 980Today, after each change to the user interface, Emacs must be manually
947tested. Often, small details are overlooked ("Oh, I didn't test 981tested. Often, small details are overlooked ("Oh, I didn't test
948toggling the tool-bar in one of the full screen modes, when multiple 982toggling 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
953of unique features. 987of unique features.
954 988
955**** Existing packages 989**** Existing packages
956
957Note that there is a generic UI test named frame-test.el, see 990Note that there is a generic UI test named frame-test.el, see
958https://debbugs.gnu.org/21415#284 . 991https://debbugs.gnu.org/21415#284 .
959The NS interface passes this, with the exception of two toolbar-related errors. 992The NS interface passes this, with the exception of two toolbar-related errors.
960 993
961**** Anders frame test 994**** Anders frame test
962
963Anders Lindgren <andlind@gmail.com> has implemented some (very basic) 995Anders Lindgren <andlind@gmail.com> has implemented some (very basic)
964tests for full screen, toolbar, and auto-hiding the menu bar. 996tests 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
968Emacs can be build in a number of different ways. For each feature, 999Emacs can be build in a number of different ways. For each feature,
969consider if is really is "NS" specific, or if it should be applied to 1000consider if is really is "NS" specific, or if it should be applied to
970all build versions. 1001all 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
986The toolbar, in the NS interface, is not considered part of the text 1016The toolbar, in the NS interface, is not considered part of the text
987area. When it is toggled, the Emacs frame change height accordingly. 1017area. When it is toggled, the Emacs frame change height accordingly.
988 1018
@@ -997,7 +1027,7 @@ i.e. change the text area.
997 1027
998This is related to the 'frame-inhibit-implied-resize' issue. 1028This 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
1001A problem is that redraw don't happen during resize, 1031A problem is that redraw don't happen during resize,
1002because we can't break out from the NSapp loop during resize. 1032because we can't break out from the NSapp loop during resize.
1003There was a special trick to detect mouse press in the lower right 1033There 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
1005not scalable to the new Lion "resize on every window edge" behavior. 1035not 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
1009up on top of all others (probably fixed in bug#17439) 1039(mouse-avoidance-mode 'banish) then minimize Emacs, will pop window back
1040up 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
1056One problem is the header line, which is produced by the same routines 1087One problem is the header line, which is produced by the same routines
1057as the mode line. While it makes sense to have the mode-line 1088as the mode line. While it makes sense to have the mode-line
1058direction controlled by a single global variable, header lines are 1089direction controlled by a single global variable, header lines are
1059buffer-specific, so they need a separate treatment in this regard. 1090buffer-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
1062For the tool bar, it's relatively easy: set it.paragraph_embedding 1093For the tool bar, it's relatively easy: set it.paragraph_embedding
1063in redisplay_tool_bar according to the user variable, and make 1094in redisplay_tool_bar according to the user variable, and make
1064f->desired_tool_bar_string multibyte with STRING_SET_MULTIBYTE. Some 1095f->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
1079If defcustom A specifies :set-after '(B), then if a user customizes 1110If defcustom A specifies :set-after '(B), then if a user customizes
1080both A and B, custom will set A after B. But if the user only customizes 1111both A and B, custom will set A after B. But if the user only customizes
1081A, then if B is already defined, it gets left at its original setting. 1112A, 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
1090ImageMagick one. This is not wrong, but how should a user go about 1122ImageMagick one. This is not wrong, but how should a user go about
1091preferring the ImageMagick loader? The user might like zooming etc in jpegs. 1123preferring the ImageMagick loader? The user might like zooming etc in jpegs.
1092 1124
1093Try (setq image-type-header-regexps nil) for a quick hack to prefer 1125Try (setq image-type-header-regexps nil) for a quick hack to prefer
1094ImageMagick over the jpg loader. 1126ImageMagick 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
1129For some reason it's unbearably slow to look at a page in a large
1097image bundle using the :index feature. The ImageMagick "display" 1130image bundle using the :index feature. The ImageMagick "display"
1098command is also a bit slow, but nowhere near as slow as the Emacs 1131command is also a bit slow, but nowhere near as slow as the Emacs
1099code. It seems ImageMagick tries to unpack every page when loading the 1132code. 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.
1102ImageMagick 6.6.2-9 introduced a bugfix for single page djvu load. It 1135ImageMagick 6.6.2-9 introduced a bugfix for single page djvu load. It
1103is now much faster to use the :index feature, but still not very fast. 1136is 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
1106calculate the number of pages, and if you need to do it for each page 1139It can take a while to calculate the number of pages, and if you need
1107view, page-flipping becomes uselessly slow. 1140to 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
1114Some work has been done, e.g. M-x image-transform-fit-to-height will 1147Some work has been done, e.g. "M-x image-transform-fit-to-height" will
1115fit the image to the height of the Emacs window. 1148fit 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
1118Currently the code seems to default to 24 bit RGB which is costly for 1151Currently the code seems to default to 24 bit RGB which is costly for
1119images with lower bit depth. 1152images 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
1122functions for image size etc. 1155Functions 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
1129attributes and child elements. When there's a choice of elements 1162This should include all required attributes and child elements. When
1130possible, we could insert a comment, and put an overlay on that 1163there's a choice of elements possible, we could insert a comment, and
1131comment that makes it behave like a button with a pop-up menu to 1164put an overlay on that comment that makes it behave like a button with
1132select the appropriate choice. 1165a 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
1135tags, but should work without a schema as well. 1168With a schema should complete using legal tags, but should work
1169without 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
1138complete using legal tags, but should work without a schema as well. 1172With a schema should complete using legal tags, but should work
1173without 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
1155name of heading element rather than depth of section nesting). 1190I.e., level indicated by name of heading element rather than depth of
1191section 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
1158if it doesn't match section-element-name-regex. 1194Even 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
1167or 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
1173ellipsis. 1209They 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?
1182Necessary for indirect buffers to work? 1219Necessary 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?
1197schema if there is currently none? Or should it at least give a hint 1234Give the user an opportunity to specify a schema if there is currently
1198to the user how to specify a non-vacuous schema? 1235none? Or should it at least give a hint to the user how to specify a
1236non-vacuous schema?
1199 1237
1200**** Support for adding new schemas to schema-locating files. 1238**** Support for adding new schemas to schema-locating files
1201Add documentElement and namespace elements. 1239Add 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
1216rng-preferred-prefix-alist. 1254Get 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
1219document elements declared in schema locating files, and set schema 1257Completion should use document elements declared in schema locating
1220appropriately. 1258files, 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
1263Allow processing instruction in prologue to contain the compact syntax
1225schema directly. 1264schema 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
1236adding hook to nxml-mode. 1275Should 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
1239other buffers that are using nxml-mode. 1278It 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
1284Needs 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
1248more detailed diagnosis. 1289This 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
1253the region is not balanced). Suggestions based on error messages. 1294What is useful? Tag a region (should be grayed out if the region is
1295not 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
1256namespace URI completion on extension elements or with schema-less documents. 1298So that we can provide namespace URI completion on extension elements
1299or 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
1265some of the possible names have undeclared namespaces. 1308Only use a function to complete when some of the possible names have
1309undeclared 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
1270Is this a bug or a feature? 1314Is 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
1273from validation 1317After completing start-tag, ensure we don't get unhelpful message from
1318validation
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
1278are required. 1323If 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
1326When completing start-tag name with no prefix and it doesn't match
1281should try to infer namespace from local name. 1327should 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?
1330If 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
1333When completing start-tag name, add required atts if only one required
1286attribute. 1334attribute.
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
1337When completing attribute name, add attribute value if only one value
1289is possible. 1338is possible.
1290 1339
1291**** After attribute-value completion, insert space after close delimiter 1340**** Completion of attribute values
1341After attribute-value completion, insert space after close delimiter
1292if more attributes are required. 1342if 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
1297completion without having to type < first. 1347When in context that allows only elements, should get tag completion
1348without 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
1351When immediately after start-tag name, and name is valid and not
1300prefix of any other name, should C-return complete on attribute names? 1352prefix 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
1355When completing attributes, more consistent to ignore all attributes
1303after point. 1356after point.
1304 1357
1305**** Inserting attribute value completions needs to be sensitive to what 1358**** Inserting attribute value by completions
1306delimiter is used so that it quotes the correct character. 1359Completions inserting attribute value need to be sensitive to what
1360delimiter 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
1311mentioned in the schema. 1365Can 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
1326Need to check that context is one in which character references are 1381Need to check that context is one in which character references are
1327allowed. xmltok prolog parsing will need to distinguish parameter 1382allowed. xmltok prolog parsing will need to distinguish parameter
1328literals from other kinds of literal. 1383literals 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-;
1331normal one. 1386The 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
1336Be able to navigate from structure view to document and vice-versa. 1391Separate buffer displaying element tree. Be able to navigate from
1392structure 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
1397Provide a command that selects increasingly large syntactically
1341coherent chunks of XML. If point is in an attribute value, first 1398coherent chunks of XML. If point is in an attribute value, first
1342select complete value; then if command is repeated, select value plus 1399select complete value; then if command is repeated, select value plus
1343delimiters, then select attribute name as well, then complete 1400delimiters, then select attribute name as well, then complete
1344start-tag, then complete element, then enclosing element, etc. 1401start-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
1406This 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
1412Provide 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
1358space for the XHTML guys. 1417Important 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
1373unless-standalone (unless standalone="yes" in XML declaration). 1432Values: nil (never), t (always), unless-standalone (unless
1433standalone="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
1436When a file is currently being edited, there should be an option to
1376use its buffer instead of the on-disk copy. 1437use 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
1381Perhaps provide a way to force ignoring undefined entities; maybe turn 1442Perhaps provide a way to force ignoring undefined entities; maybe turn
1382this on automatically with <?xml encoding=""?> (with no version 1443this on automatically with <?xml encoding=""?> (with no version
1383pseudo-att). 1444pseudo-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
1400spec. But also need to allow encodings other than UTF-8/16 to support 1461Should use utf-8/utf-16 per the spec. But also need to allow
1401CJK charsets that Emacs cannot represent in Unicode. 1462encodings other than UTF-8/16 to support CJK charsets that Emacs
1463cannot 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
1416perhaps to 500 bytes, without bad performance impact: don't do 1478Perhaps up to 500 bytes, without bad performance impact: don't do
1417redisplay on every chunk; pass continue functions on other uses of 1479redisplay on every chunk; pass continue functions on other uses of
1418rng-do-some-validation. 1480rng-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
1423we can use member) 1485So 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
1428errors using text properties. This implies we cannot incrementally 1490Represent errors using text properties. This implies we cannot
1429keep track of the number of errors, in order to determine validity. 1491incrementally keep track of the number of errors, in order to
1430Instead, when validation completes, scan for any characters with an 1492determine validity. Instead, when validation completes, scan for any
1431error text property; this seems to be fast enough even with large 1493characters with an error text property; this seems to be fast enough
1432buffers. Problem with error at end of buffer, where there's no 1494even with large buffers. Problem with error at end of buffer, where
1433character; need special variable for this. Need to merge face from 1495there's no character; need special variable for this. Need to merge
1434font-lock with the error face: use :inherit attribute with list of two 1496face from font-lock with the error face: use :inherit attribute with
1435faces. How do we avoid making rng-valid depend on nxml-mode? 1497list of two faces. How do we avoid making rng-valid depend on
1498nxml-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
1444well-formed 1507Don't keep parsing when currently not well-formed but previously
1508well-formed.
1445 1509
1446**** Try to recover from a bad start-tag by popping an open element if 1510**** Recovery from bad start-tag
1511Try to recover from a bad start-tag by popping an open element if
1447there was a mismatched end-tag unaccounted for. 1512there was a mismatched end-tag unaccounted for.
1448 1513
1449**** Try to recover from a bad start-tag open on the hypothesis that there 1514Try to recover from a bad start-tag open on the hypothesis that there
1450was an error in the namespace URI. 1515was 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
1465waiting for everything to be completely up to date. 1530That'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
1533When narrowed, Valid or Invalid status should probably consider only
1468validity of narrowed region. 1534validity 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?
1485use for external parsed entities. At least forbid standalone without version. 1551Probably not because prevents use for external parsed entities. At
1552least 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
1498xmltok-. Change nxml-t-type to nxml-t-token-type, nxml-t-start to 1565Use nxml-t- prefix instead of xmltok-. Change nxml-t-type to
1499nxml-t-token-start. 1566nxml-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
1504elements
1505 1571
1506**** In rng-valid, instead of using modification-hooks and 1572**** In rng-valid, use same technique as nxml-mode
1507insert-behind-hooks on dependent overlays, use same technique as nxml-mode. 1573That's instead of using modification-hooks and insert-behind-hooks on
1574dependent 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
1512value. Use list with pairs of (R . F), where R specifies regexps and 1579Use list with pairs of (R . F), where R specifies regexps and F
1513F specifies faces. How can this list be made to depend on the document type? 1580specifies faces. How can this list be made to depend on the document
1581type?
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
1526constraints on attributes (e.g. xsl:template). 1594So 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
1606How can we allow an error to be displayed on a different token from
1537where it is detected? In particular, for a missing closing ">" we 1607where it is detected? In particular, for a missing closing ">" we
1538will need to display it at the beginning of the following token. At the 1608will need to display it at the beginning of the following token. At
1539moment, when we parse the following token the error overlay will get cleared. 1609the moment, when we parse the following token the error overlay will
1610get 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
1544have different ends. 1615Merge errors having same start position even if they have different
1616ends.
1545 1617
1546**** How to handle surrogates? One possibility is to be compatible with 1618**** How to handle surrogates?
1547utf8.e: represent as sequence of 4 chars. But utf-16 is incompatible 1619One possibility is to be compatible with utf8.e: represent as sequence
1548with this. 1620of 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
1552an end-tag.) 1624an 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
1627Seems to be a bug with Emacs, where a mouse movement that causes
1555help-echo text to appear counts as pending input but does not cause 1628help-echo text to appear counts as pending input but does not cause
1556idle timer to be restarted. 1629idle 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"
1634What 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
1571systems for HTML/XML files automatically." 1645There's a NEWS item which says "Emacs now tries to set up buffer
1646coding 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
1580As a first step, renaming of sections could be supported. Ultimately, 1655As a first step, renaming of sections could be supported. Ultimately,
1581it would be great if it also supported moving sections, e.g., by 1656it would be great if it also supported moving sections, e.g., by
1582killing and yanking or providing org-mode like "move section 1657killing 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. 1664There is no longer any distinction since the mark bit is no longer
1665stored 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 1668Currently, it mixes up the predicate to apply when doing completion
1593 one to use when terminating the selection. 1669and 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, 1672More specifically do what's needed to make ibuffer.el the default, or
1597 or just an extension of buff-menu.el. 1673just 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 1676https://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.) 1679probably 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 1682Probably 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 1683be 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 1684split into a small core and "the rest" so that we use less resources
1609 we stick to the features provided in sendmail.el. 1685as 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.) 1688default 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 -- 1691Replace it with the modified Doug Lea code from the current GNU libc
1616 that apparently loses under Solaris, at least. [fx has mostly done 1692so that the special mmapping of buffers can be removed -- that
1617 this.] 1693apparently 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. 1698It might be better to replace it with Lisp, using the byte compiler.
1623 https://lists.gnu.org/r/emacs-devel/2012-06/msg00037.html 1699https://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 1702The 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. 1703offered by major modes that offer an associated inferior
1628 For use by sml-mode, python-mode, tex-mode, scheme-mode, lisp-mode, 1704comint-derived mode. I.e. basically make cmuscheme.el/inf-lisp.el
1629 haskell-mode, tuareg-mode, ... 1705generic. For use by sml-mode, python-mode, tex-mode, scheme-mode,
1706lisp-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 1709Add 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 1710button classes inherit from it. Set the default face of the "link"
1634 class to the standard "link" face. 1711button 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.
1639https://lists.gnu.org/r/emacs-devel/2012-06/msg00354.html 1716https://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
1642It wouldn't have to be a complete replacement, just enough 1719It wouldn't have to be a complete replacement, just enough
1643for vc-rcs-update-changelog. 1720for 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
1727A two-char comment-starter whose two chars are symbol constituents will
1650not be noticed if it appears within a word. 1728not 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."
1554Like \\[switch-to-buffer-other-frame] (which see), but creates a new tab." 1554Like \\[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
4699enum { 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
4713static bool
4714maybe_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