Commit | Line | Data |
---|---|---|
309920fa EZ |
1 | Emacs TODO List -*-outline-*- |
2 | ||
ba318903 | 3 | Copyright (C) 2001-2014 Free Software Foundation, Inc. |
5b87ad55 GM |
4 | See the end of the file for license conditions. |
5 | ||
19cc91fb | 6 | |
2255d5b4 RS |
7 | If you are ready to start working on any of these TODO items, we |
8 | appreciate your help; please write to emacs-devel@gnu.org so we can be | |
9 | aware that the problem is being addressed, and talk with you how to do | |
6d4cb47e GM |
10 | it best. Also to check that it hasn't been done already, since we |
11 | don't always remember to update this file! It is best to consult | |
12 | the latest version of this file in the Emacs source code repository. | |
13 | ||
14 | Since Emacs is an FSF-copyrighted package, please be prepared to sign | |
15 | legal papers to transfer the copyright on your work to the FSF. | |
16 | For more details on this, see the section "Copyright Assignment" | |
17 | in etc/CONTRIBUTE. That file also contains some more practical | |
18 | details about getting involved. | |
19 | ||
20 | As well as the issues listed here, there are bug reports at | |
21 | <http://debbugs.gnu.org>. Bugs tagged "easy" ought to be suitable for | |
22 | beginners to work on, but unfortunately we are not very good at using | |
23 | this tag. Bugs tagged "help" are ones where assistance is required, | |
24 | but may be difficult to fix. Bugs with severity "important" or higher | |
25 | are the ones we consider more important, but these also may be | |
26 | difficult to fix. Bugs with severity "minor" may be simpler, but this | |
27 | is not always true. | |
2255d5b4 | 28 | |
bbbab483 SM |
29 | * Tentative plan for Emacs-24 |
30 | ||
bbbab483 SM |
31 | ** concurrency: including it as an "experimental" compile-time option |
32 | sounds good. Of course there might still be big questions around | |
33 | "which form of concurrency" we'll want. | |
34 | ** Overhaul of customize: sounds wonderful. | |
bbbab483 | 35 | ** better support for dynamic embedded graphics: I like this idea (my |
ce555168 | 36 | mpc.el code could use it for the volume widget), though I wonder if the |
bbbab483 SM |
37 | resulting efficiency will be sufficient. |
38 | ** Spread Semantic. | |
39 | ** Improve the "code snippets" support: consolidate skeleton.el, tempo.el, | |
40 | and expand.el (any other?) and then advertise/use/improve it. | |
41 | ** Improve VC: yes, there's a lot of work to be done there :-( | |
bbbab483 SM |
42 | |
43 | ** Random things that cross my mind right now that I'd like to see (some of | |
44 | them from my local hacks), but it's not obvious at all whether they'll | |
45 | make it. | |
46 | *** multiple inheritance for keymaps (to get rid of the | |
47 | fix_submap_inheritance hack and to more cleanly express the | |
48 | relationship between minibuffer-local-*-map): I've had this locally | |
49 | for a long time, but the details of the semantics is somewhat ... delicate. | |
38b8b326 GM |
50 | *** prog-mode could/should provide a better fill-paragraph default |
51 | that uses syntax-tables to recognize string/comment boundaries. | |
bbbab483 SM |
52 | *** provide more completion-at-point-functions. Make existing |
53 | in-buffer completion use completion-at-point. | |
54 | *** "functional" function-key-map that would make it easy to add (and | |
55 | remove) mappings like "FOO-mouse-4 -> FOO-scroll-down", | |
56 | "FOO-tab -> ?\FOO-\t", "uppercase -> lowercase", "[fringe KEY...] -> | |
57 | [KEY]", "H-FOO -> M-FOO", "C-x C-y FOO -> H-FOO", ... | |
58 | ||
59 | ||
60 | * Simple tasks. These don't require much Emacs knowledge, they are | |
c884b4d7 DN |
61 | suitable for anyone from beginners to experts. |
62 | ||
bfb906ac DN |
63 | ** Convert modes that use view-mode to be derived from special-mode instead. |
64 | ||
c884b4d7 | 65 | ** Major modes should have a menu entry. Examples of modes that do |
bfb906ac | 66 | not have one at the moment and probably should: text-mode, inferior-lisp-mode. |
c884b4d7 | 67 | |
479be3f4 | 68 | ** Check if all items on the mode-line have a suitable tooltip for all modes. |
c884b4d7 | 69 | |
4e0ace23 DN |
70 | ** edebug and debugger-mode should have a toolbar. |
71 | It can use the same icons as gud. | |
72 | ||
c884b4d7 DN |
73 | ** Check what minor modes don't use define-minor-mode and convert them |
74 | to use it. | |
75 | ||
6d095958 GM |
76 | ** Convert all defvars with leading `*' in the doc-strings into defcustoms |
77 | of appropriate :type and :group. | |
78 | ||
98374c9a XF |
79 | ** Remove any leading `*'s from defcustom doc-strings. |
80 | [done?] [A lot of them are in CC Mode.] | |
63e51ddd GM |
81 | |
82 | ** Remove unnecessary autoload cookies from defcustoms. | |
83 | This needs a bit of care, since often people have become used to | |
84 | expecting such variables to always be defined, eg when they modify | |
85 | things in their .emacs. | |
86 | ||
115f44b6 GM |
87 | ** See if other files can use generated-autoload-file (see eg ps-print). |
88 | ||
0a1cb9ed GM |
89 | ** Write more tests. Pick a fixed bug from the database, write a test |
90 | case to make sure it stays fixed. Or pick your favorite programming | |
91 | major-mode, and write a test for its indentation. Or a version | |
92 | control backend, and write a test for its status parser. Etc. | |
93 | See test/automated for examples. | |
94 | ||
ba1c68de | 95 | * Small but important fixes needed in existing features: |
a9c1a157 | 96 | |
cc48343f RS |
97 | ** Flymake's customization mechanism needs to be both simpler (fewer |
98 | levels of indirection) and better documented, so it is easier to | |
99 | understand. I find it quite hard to figure out what compilation | |
100 | command it will use. | |
101 | ||
102 | I suggest totally rewriting that part of Flymake, using the simplest | |
22bcf204 | 103 | mechanism that suffices for the specific needs. That will be easy |
cc48343f RS |
104 | for users to customize. |
105 | ||
0989e765 SM |
106 | ** Compute the list of active keymaps *after* reading the first event. |
107 | ||
046ece71 KS |
108 | ** Distribute a bar cursor of width > 1 evenly between the two glyphs |
109 | on each side of the bar (what to do at the edges?). | |
110 | ||
125fbe81 | 111 | ** revert-buffer should eliminate overlays and the mark. |
045744c6 MR |
112 | For related problems consult the thread starting with |
113 | http://lists.gnu.org/archive/html/emacs-devel/2005-11/msg01346.html | |
125fbe81 | 114 | |
f98abf6d RS |
115 | ** erase-buffer should perhaps disregard read-only properties of text. |
116 | ||
d3a403e5 | 117 | ** Fix the kill/yank treatment of invisible text. At the moment, |
b9e6b498 | 118 | invisible text is placed in the kill-ring, so that the contents of |
2345130a SM |
119 | the ring may not correspond to the text as displayed to the user. |
120 | It ought to be possible to omit text which is invisible (due to a | |
b9e6b498 GM |
121 | text-property, overlay, or selective display) from the kill-ring. |
122 | ||
6f771c32 RS |
123 | ** Change the way define-minor-mode handles autoloading. |
124 | It should not generate :require. Or :require in defcustom | |
125 | should not be recorded in the user's custom-set-variables call. | |
126 | ||
af09dd78 RS |
127 | ** Feature to change cursor shape when Emacs is idle (for more than |
128 | a specified time). | |
129 | ||
4e07258f RS |
130 | ** The buttons at the top of a custom buffer should not omit |
131 | variables whose values are currently hidden. | |
132 | ||
ec0cf966 RS |
133 | ** Clean up the variables in browse-url. Perhaps use a shell command string to |
134 | specify the browser instead of the mushrooming set of functions. | |
135 | See also ESR's proposal for a BROWSER environment variable | |
136 | <URL:http://www.catb.org/~esr/BROWSER/browse-url.patch>. | |
137 | ||
528b6abc RS |
138 | ** Enhance scroll-bar to handle tall line (similar to line-move). |
139 | ||
f98abf6d RS |
140 | ** In Custom buffers, put the option that turns a mode on or off first, |
141 | using a heuristic of some kind? | |
142 | ||
143 | ** Define recompute-arg and recompute-arg-if for fix_command to use. | |
144 | See rms message of 11 Dec 05. | |
145 | ||
7c14546c JD |
146 | ** Height returned by frame-parameter ... and height given to |
147 | make-frame does not mean the same thing. The former includes menu and | |
148 | tool bar lines, the latter don't. frame-parameter should return height | |
149 | without menu and tool bar lines. | |
150 | ||
f98abf6d RS |
151 | ** In Emacs Info, examples of using Customize should be clickable |
152 | and they should create Custom buffers. | |
153 | ||
321e4870 RS |
154 | ** The toolbar should show keyboard equivalents in its tooltips. |
155 | ||
74561a26 RS |
156 | ** Add function to redraw the tool bar. |
157 | ||
5a893bff RS |
158 | ** Redesign the load-history data structure so it can cope better |
159 | with evaluating definitions of the same function from different files, | |
160 | recording which file the latest definition came from. | |
046ece71 | 161 | |
4b4d11cc RS |
162 | ** make back_comment use syntax-ppss or equivalent. |
163 | ||
67ccd6cb GM |
164 | ** Consider improving src/sysdep.c's search for a fqdn. |
165 | http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00782.html | |
166 | ||
167 | ** Find a proper fix for rcirc multiline nick adding. | |
168 | http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00684.html | |
211fb124 | 169 | |
94172215 EZ |
170 | ** Implement `network-interface-list' and `network-interface-info' |
171 | on MS-Windows. Hint: the information is present in the Registry, | |
172 | under the keys | |
173 | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Linkage\ | |
174 | and | |
175 | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<device>\ | |
176 | where <device> is the network device found under the first key. | |
177 | ||
4af1faa3 GM |
178 | ** Check for any included packages that define obsolete bug-reporting commands. |
179 | Change them to use report-emacs-bug. | |
0372256b XF |
180 | *** Related functions: |
181 | **** gnus-bug | |
182 | **** report-calc-bug | |
183 | **** org-submit-bug-report | |
184 | **** lm-report-bug | |
185 | **** tramp-bug | |
186 | **** c-submit-bug-report | |
187 | **** ffap-bug and ffap-submit-bug (obsoleted) | |
188 | [Do all of them need changing?] | |
4af1faa3 | 189 | |
7a00b900 NR |
190 | ** Allow fringe indicators to display a tooltip (provide a help-echo property?) |
191 | ||
d73803e6 CY |
192 | ** Add a defcustom that supplies a function to name numeric backup files, |
193 | like make-backup-file-name-function for non-numeric backup files. | |
194 | ||
b1a345ee | 195 | ** `dired-mode' should specify the semantics of `buffer-modified-p' for |
8350f087 | 196 | dired buffers and DTRT WRT `auto-revert-mode'. |
b1a345ee | 197 | |
48abcfcc GM |
198 | ** Check uses of prin1 for error-handling. |
199 | http://lists.gnu.org/archive/html/emacs-devel/2008-08/msg00456.html | |
200 | ||
ba1c68de | 201 | * Important features: |
1bf65cad GM |
202 | |
203 | ** "Emacs as word processor" | |
204 | http://lists.gnu.org/archive/html/emacs-devel/2013-11/msg00515.html | |
205 | rms writes: | |
48a2a0b4 | 206 | 25 years ago I hoped we would extend Emacs to do WYSIWYG word |
1bf65cad GM |
207 | processing. That is why we added text properties and variable |
208 | width fonts. However, more features are still needed to achieve this. | |
209 | ||
7eca871a SM |
210 | ** Extended text-properties (to make overlays "obsolete") |
211 | *** Several text-property planes | |
212 | This would get us rid of font-lock-face property (and I'd be happy to | |
213 | get rid of char-property-alias-alist as well) since font-lock would | |
214 | simply use the `face' property in the `font-lock' plane. | |
215 | Each property would come with an Elisp merge-function. The merge | |
216 | would be performed in add-text-properties. | |
217 | *** zero-width text-properties. | |
cc48343f RS |
218 | ** Having tabs above a window to switch buffers in it. |
219 | ||
220 | ** "Perspectives" are named persistent window configurations. We have | |
221 | had the window configuration mechanism in GNU Emacs since the | |
222 | beginning but we have never developed a good user interface to take | |
223 | advantage of them. Eclipse's user interface seems to be good. | |
224 | ||
225 | Perspectives work well even if you do the equivalent of C-x 4 C-f | |
226 | because of the distinction between view windows vs file windows. In | |
227 | Emacs this is more or less the "dedicated window" feature, but we have | |
228 | never really made it work for this. | |
229 | ||
230 | Perspectives also need to interact with the tabs. | |
231 | ||
15fb690c GM |
232 | ** FFI (foreign function interface) |
233 | See eg http://lists.gnu.org/archive/html/emacs-devel/2013-10/msg00246.html | |
234 | ||
3cee0272 GM |
235 | ** Replace unexec with a more portable form of dumping |
236 | See eg http://lists.gnu.org/archive/html/emacs-devel/2014-01/msg01034.html | |
237 | ||
cc48343f RS |
238 | ** Imenu could be extended into a file-structure browsing mechanism |
239 | using code like that of customize-groups. | |
240 | ||
88edf64c | 241 | ** Display something in the margin on lines that have compilation errors. |
cc48343f RS |
242 | |
243 | ** Compilation error navigation bar, parallel to the scroll bar, | |
244 | indicating where in the buffer there are compilation errors. | |
245 | Perhaps we could arrange to display these error indications on top | |
246 | of the scroll bar itself. That depends on to what extent toolkit | |
247 | scroll bars are extensible. | |
248 | ||
ba1c68de | 249 | ** Provide user-friendly ways to list all available font families, |
fe7a3057 | 250 | list fonts, display a font as a sample, etc. [fx is looking at |
321e4870 | 251 | multilingual font selection for the Unicode branch of Emacs.] |
5e101746 | 252 | |
3aa7c28e RS |
253 | ** Provide a convenient way to select a color with the mouse. |
254 | ||
09d04fb3 | 255 | ** Rewrite the face code to be simpler, clearer and faster. |
5e101746 | 256 | |
ba1c68de | 257 | ** Program Enriched mode to read and save in RTF. [Is there actually a |
c51b37fd | 258 | decent single definition of RTF? Maybe see info at |
1b2105d9 EZ |
259 | http://latex2rtf.sourceforge.net/.] This task seems to be addressed |
260 | by http://savannah.nongnu.org/projects/emacs-rtf/, which is still in | |
261 | very early stages. | |
6165b6e3 | 262 | |
ba1c68de | 263 | ** Implement primitive and higher-level functions to allow filling |
a9c1a157 RS |
264 | properly with variable-pitch faces. |
265 | ||
ba1c68de | 266 | ** Implement a smoother vertical scroll facility, one that allows |
d3a403e5 SM |
267 | C-v to scroll through a tall image. The primitive operations |
268 | posn-at-point and posn-at-x-y should now make it doable in elisp. | |
a9c1a157 | 269 | |
6ca1c497 | 270 | ** Implement intelligent search/replace, going beyond query-replace |
cbdf1202 | 271 | (see http://groups.csail.mit.edu/uid/projects/clustering/chi04.pdf). |
6ca1c497 | 272 | |
ba1c68de SM |
273 | ** Implement other text formatting properties. |
274 | *** Footnotes that can appear either in place or at the end of the page. | |
275 | *** text property that says "don't break line in middle of this". | |
6165b6e3 EZ |
276 | Don't break the line between two characters that have the |
277 | same value of this property. | |
ba1c68de | 278 | *** Discretionary hyphens that are not visible when they are at end of line. |
6165b6e3 | 279 | |
ec0cf966 RS |
280 | ** Internationalize Emacs's messages. |
281 | ||
4a7499a9 RS |
282 | ** Set up a facility to save backtraces when errors happen during |
283 | specified filters, specified timers, and specified hooks. | |
284 | ||
49322539 RS |
285 | ** Install mmc@maruska.dyndns.org's no-flicker change. |
286 | ||
07ff1e4b RS |
287 | ** Add a "current vertical pixel level" value that goes with point, |
288 | so that motion commands can also move through tall images. | |
289 | This value would be to point as window-vscroll is to window-start. | |
290 | ||
ec0cf966 RS |
291 | ** Address internationalization of symbols names essentially |
292 | as documentation, e.g. in command names and Custom. | |
a9c1a157 | 293 | |
ba1c68de | 294 | ** Make the Lucid menu widget display multilingual text. [This |
bf6394a6 DL |
295 | probably needs to be done from actual Emacs buffers, either directly |
296 | in the menu or by rendering in an unmapped window and copying the | |
f677a3a3 SM |
297 | pixels. The current code assumes a specific locale; that isn't good |
298 | enough even if X can render the arbitrary text] [The gtk | |
7bea57c9 DL |
299 | port now displays multilingual text in menus, but only insofar as |
300 | Emacs can encode it as utf-8 and gtk can display the result.] | |
f677a3a3 SM |
301 | Maybe making Lucid menus work like Gtk's (i.e. just force utf-8) is good |
302 | enough now that Emacs can encode most chars into utf-8. | |
a9c1a157 | 303 | |
ba1c68de | 304 | ** Remove the limitation that window and frame widths and heights can |
a9c1a157 RS |
305 | be only full columns/lines. |
306 | ||
6d4cb47e GM |
307 | ** The GNUstep port needs some serious attention, ideally from someone |
308 | familiar with GNUstep and Objective C. | |
309 | ||
ba1c68de SM |
310 | * Other features we would like: |
311 | ||
1e217552 GM |
312 | ** A more modern printing interface. One that pops up a dialog that lets |
313 | you choose printer, page style, etc. | |
314 | Integration with the Gtk print dialog is apparently difficult. See eg: | |
315 | http://lists.gnu.org/archive/html/emacs-devel/2009-03/msg00501.html | |
316 | http://lists.gnu.org/archive/html/emacs-devel/2009-04/msg00034.html | |
317 | ||
c3bb6fdb SM |
318 | ** Allow frames(terminals) created by emacsclient to inherit their environment |
319 | from the emacsclient process. | |
a37288ad SM |
320 | ** Remove the default toggling behavior of minor modes when called from elisp |
321 | rather than interactively. This a trivial one-liner in easy-mode.el. | |
0de301ed | 322 | |
39eadb4a RS |
323 | ** Give Tar mode all the features of Archive mode. |
324 | ||
9b8453da RS |
325 | ** Create a category of errors called `process-error' |
326 | for some or all errors associated with using subprocesses. | |
327 | ||
51f74c37 RS |
328 | ** Maybe reinterpret `parse-error' as a category of errors |
329 | and put some other errors under it. | |
330 | ||
1a500a73 | 331 | ** A function to tell you the argument pattern of functions. |
1b2105d9 | 332 | See `function-arity' in http://www.loveshack.ukfsn.org/emacs/fx-misc.el. |
1a500a73 RS |
333 | |
334 | ** Make byte-compile warn when a doc string is too wide. | |
335 | ||
9f4ba075 CY |
336 | ** Make byte-optimization warnings issue accurate line numbers. |
337 | ||
f95a20e7 RS |
338 | ** A function to check for customizable options that have been |
339 | set but not saved, and ask the user whether to save them. | |
340 | This could go in kill-emacs-query-functions, to remind people | |
341 | to save their changes. If the user says yes, show them | |
342 | in a Custom buffer using customize-customized. | |
343 | ||
8c9676fb DK |
344 | ** Record the sxhash of the default value for customized variables |
345 | and notify the user (maybe by adding a menu item or toolbar button, | |
346 | as the detection can occur during autoload time) when the default | |
347 | changes (meaning that new versions of the Lisp source with a changed | |
348 | default value got installed) and offer ediff on the respective | |
349 | customization buffers. | |
350 | ||
e0402468 | 351 | ** Emacs Lisp mode could put an overlay on the defun for every |
8c9676fb DK |
352 | function that has advice. The overlay could have `after-text' like |
353 | " [Function has advice]". It might look like (defun foo [Function | |
354 | has advice] (x y) The overlay could also be a button that you could | |
355 | use to view the advice. | |
e0402468 | 356 | |
17e55b2a RS |
357 | ** Add a function to get the insertion-type of the markers in an overlay. |
358 | ||
9c9c88db SM |
359 | ** ange-ftp |
360 | *** understand sftp | |
88edf64c | 361 | This is hard to make work because sftp doesn't print status messages. |
1b2105d9 | 362 | |
9c9c88db SM |
363 | *** Use MLS for ange-ftp-insert-directory if a list of files is specified. |
364 | ||
ba1c68de SM |
365 | ** Ability to map a key, including all modified-combinations. |
366 | E.g map mouse-4 to wheel-up as well as M-mouse-4 -> M-wheel-up | |
367 | M-C-mouse-4 -> M-C-wheel-up, H-S-C-M-s-double-mouse-4 -> | |
368 | H-S-C-M-s-double-wheel-up, ... | |
a9c1a157 | 369 | |
ba1c68de SM |
370 | ** Beefed-up syntax-tables. |
371 | *** recognize multi-character syntactic entities like `begin' and `end'. | |
7877f373 | 372 | *** nested string-delimiters (for PostScript's (foo(bar)baz) strings). |
ba1c68de SM |
373 | *** support for infix operators (with precedence). |
374 | *** support for the $ (paired delimiter) in parse-partial-sexp. | |
375 | *** support for hook-chars whose effect on the parsing-state is specified | |
376 | by elisp code. Thus a char could both close a string and open a comment | |
377 | at the same time and do it in a context-sensitive way. | |
378 | *** ability to add mode-specific data to the partial-parse-state. | |
379 | ||
2d1ef312 RS |
380 | ** Add a way to convert a keyboard macro to equivalent Lisp code. |
381 | ||
ba1c68de | 382 | ** Have a command suggestion help system that recognizes patterns |
a9c1a157 RS |
383 | of commands which could be replaced with a simpler common command. |
384 | It should not make more than one suggestion per 10 minutes. | |
6165b6e3 | 385 | |
ba1c68de | 386 | ** Add a way to define input methods by computing them (when first used) |
30a2aafd RS |
387 | from other input methods. Then redefine C-x 8 to use a |
388 | user-selected input method, with the default being the union of | |
389 | latin-1-prefix and latin-1-postfix. | |
390 | ||
a7abe867 | 391 | ** Switch the Windows port to using Unicode keyboard input (maybe). |
2fa4f835 EZ |
392 | Based on http://msdn2.microsoft.com/en-us/library/ms633586.aspx, |
393 | this boils down to (1) calling RegisterClassW function to register | |
394 | Emacs windows, and (2) modifying ALL system messages to use Unicode. | |
395 | In particular, WM_CHAR messages, which result from keyboard input, | |
a7abe867 | 396 | will then come in encoded in UTF-16. |
2fa4f835 EZ |
397 | |
398 | One advantage of switching to Unicode is to toss encoded-kbd usage, | |
88edf64c | 399 | which will solve the problem with binding non-ASCII keys with modifiers. |
2fa4f835 | 400 | |
a7abe867 RS |
401 | Problem: using this on Windows 9x/ME requires installing the |
402 | Microsoft Layer for Unicode (MSLU), which might not implement all | |
403 | the required functionality that is available built-in on Windows XP | |
404 | and later. We should not make this change if it would pressure | |
405 | users of unauthorized copies of older versions of Windows to | |
406 | downgrade to versions that require activation. | |
407 | ||
ba1c68de | 408 | ** Implement a clean way to use different major modes for |
06382b71 RS |
409 | different parts of a buffer. This could be useful in editing |
410 | Bison input files, for instance, or other kinds of text | |
1b2105d9 EZ |
411 | where one language is embedded in another language. See |
412 | http://www.loveshack.ukfsn.org/emacs/multi-mode.el and also | |
8b5e9361 | 413 | mmm-mode, as reference for approaches taken by others. |
a933dad1 | 414 | |
b76781cd RS |
415 | ** Arrange a way for an input method to return the first character |
416 | immediately, then replace it later. So that C-s a with | |
417 | input method latin-1-postfix would immediately search for an a. | |
a933dad1 | 418 | |
ba1c68de | 419 | ** Give start-process the ability to direct standard-error |
a933dad1 DL |
420 | output to a different filter. |
421 | ||
ba1c68de | 422 | ** Make desktop.el save the "frame configuration" of Emacs (in some |
a933dad1 DL |
423 | useful sense). |
424 | ||
88edf64c | 425 | ** Give desktop.el a feature to switch between different named desktops. |
8ba148c7 | 426 | |
10bb671b RS |
427 | ** Add a cpio mode, more or less like tar mode. |
428 | ||
06382b71 RS |
429 | ** Save undo information in special temporary files, and reload it |
430 | when needed for undoing. This could extend undo capacity. | |
8e6abb85 RT |
431 | undo-tree, in ELPA, already does this; its saving code could be |
432 | integrated without requiring the use of undo-tree. | |
a933dad1 | 433 | |
ba1c68de | 434 | ** Change the Windows NT menu code |
a933dad1 DL |
435 | so that it handles the deep_p argument and avoids |
436 | regenerating the whole menu bar menu tree except | |
437 | when the user tries to use the menubar. | |
438 | ||
439 | This requires the RIT to forward the WM_INITMENU message to | |
440 | the main thread, and not return from that message until the main | |
0245b3ef | 441 | thread has processed the MENU_BAR_ACTIVATE_EVENT and regenerated |
a933dad1 | 442 | the whole menu bar. In the mean time, it should process other messages. |
d054101f | 443 | |
ba1c68de | 444 | ** Get some major packages installed: W3 (development version needs |
605d1fd9 | 445 | significant work), PSGML, _possibly_ ECB. |
590394eb GM |
446 | http://lists.gnu.org/archive/html/emacs-devel/2007-05/msg01493.html |
447 | Check the assignments file for other packages which might go in and | |
448 | have been missed. | |
449 | ||
ba1c68de | 450 | ** Make keymaps a first-class Lisp object (this means a rewrite of |
5dd31b13 SM |
451 | keymap.c). What should it do apart from being opaque ? |
452 | multiple inheritance ? faster where-is ? no more fix_submap_inheritance ? | |
453 | what else ? | |
e39fc314 | 454 | |
ba1c68de | 455 | ** Provide real menus on ttys. The MS-DOS implementation can serve as |
2fa4f835 | 456 | an example how to do part of this; see the XMenu* functions on msdos.c. |
e39fc314 | 457 | |
ba1c68de | 458 | ** Implement popular parts of the rest of the CL functions as compiler |
6511485f | 459 | macros in cl-macs. [Is this still relevant now that cl-lib exists?] |
e39fc314 | 460 | |
261b01c6 RS |
461 | ** Make compiler warnings about functions that might be undefined at run time |
462 | smarter, so that they know which files are required by the file being | |
463 | compiled and don't warn about functions defined in them. | |
464 | ||
ba1c68de | 465 | ** Highlight rectangles (`mouse-track-rectangle-p' in XEmacs). Already in CUA, |
a52ce7f8 | 466 | but it's a valuable feature worth making more general. |
15fb690c GM |
467 | [Basic support added 2013/10: |
468 | http://lists.gnu.org/archive/html/emacs-devel/2013-10/msg00904.html ] | |
e39fc314 | 469 | |
ba1c68de | 470 | ** Eliminate the storm of warnings concerning char/unsigned char |
1b2105d9 | 471 | mismatches that we get with GCC 4.x and proprietary compilers on |
88edf64c | 472 | various systems. They make it difficult to spot the important warnings. |
e39fc314 | 473 | |
ba1c68de | 474 | ** Fix anything necessary to use `long long' EMACS_INTs with GCC. |
eaf67bae | 475 | |
479a2815 | 476 | ** Split out parts of lisp.h. |
eaf67bae | 477 | |
ba1c68de | 478 | ** Update the FAQ. |
eaf67bae | 479 | |
ba1c68de | 480 | ** Allow auto-compression-mode to use zlib calls if zlib is available. |
b04f7626 | 481 | [It's required for PNG, so may be linked anyhow.] |
1265b539 | 482 | |
ba1c68de | 483 | ** Add a --pristine startup flag which does -q --no-site-file plus |
1265b539 DL |
484 | ignoring X resources (Doze equivalents?) and most of the |
485 | environment. What should not be ignored needs consideration. | |
590394eb | 486 | [Do the existing -Q and -D cover this, or is more needed?] |
1265b539 | 487 | |
ba1c68de | 488 | ** Improve the GC (generational, incremental). (We may be able to use |
88edf64c | 489 | the Boehm collector.) [See the Boehm-GC branch in CVS for work on this.] |
19cc91fb | 490 | |
ba1c68de | 491 | ** Check what hooks would help Emacspeak -- see the defadvising in W3. |
e2849090 | 492 | |
a5bd14d3 RS |
493 | ** Add definitions for symbol properties, for documentation purposes. |
494 | ||
ba1c68de | 495 | ** Add horizontal scroll bars. |
00a18b59 | 496 | |
ba1c68de | 497 | ** Provide an optional feature which computes a scroll bar slider's |
e4ded23c | 498 | size and its position from lines instead of characters. |
c0460c17 | 499 | |
ba1c68de | 500 | ** Allow unknown image types to be rendered via an external program |
590394eb | 501 | converting them to, say, PBM (in the same way as PostScript?). [does |
6511485f GM |
502 | doc-view.el do this, or could it be extended to do this? |
503 | Does ImageMagick obsolete this idea?] | |
d1c3f6b6 | 504 | |
ba1c68de | 505 | ** Allow displaying an X window from an external program in a buffer, |
d1c3f6b6 RS |
506 | e.g. to render graphics from Java applets. [gerd and/or wmperry |
507 | thought this was feasible.] | |
508 | ||
ba1c68de | 509 | ** Allow images (not just text) in the margin to be mouse-sensitive. |
d1c3f6b6 RS |
510 | (Requires recursing through display properties). Provide some way |
511 | to simulate mouse-clicks on marginal text without a mouse. | |
512 | ||
ba1c68de | 513 | ** Implement Lisp functions to determine properly whether a character |
d1c3f6b6 RS |
514 | is displayable (particularly needed in XFree 4, sigh). Use it to |
515 | define useful glyphs that may be displayed as images or unicodes | |
516 | (with ASCIIfied fallback via latin1-disp). Examples include | |
517 | box-drawing graphics in Custom buffers, W3 rules and tables, and | |
518 | tree displays generally, mode-line mail indicator. [See work done | |
8589dc17 | 519 | already for Emacs 23 and consult fx.] |
d1c3f6b6 | 520 | |
ba1c68de | 521 | ** Do something to make rms happy with fx's dynamic loading, and use it |
d1c3f6b6 RS |
522 | to implement things like auto-loaded buffer parsers and database |
523 | access in cases which need more than Lisp. | |
524 | ||
ba1c68de | 525 | ** Extend ps-print to deal with multiple font sizes, images, and extra |
d1c3f6b6 RS |
526 | encodings. |
527 | ||
ba1c68de | 528 | ** Provide portable undumping using mmap (per gerd design). |
d1c3f6b6 | 529 | |
48b194fd | 530 | ** Make byte-compile avoid binding an expanded defsubst's args |
8b5e9361 | 531 | when the body only calls primitives. |
48b194fd | 532 | |
ba1c68de | 533 | ** Use the XIE X extension, if available, for image display. |
e641b454 | 534 | |
ba1c68de | 535 | ** Make monochrome images display using the foreground and background |
51fe665a RS |
536 | colors of the applicable faces. |
537 | ||
ec68482b RS |
538 | ** Make `format-time-string' preserve text properties like `format'. |
539 | ||
fda12b27 RS |
540 | ** Optionally make the cursor a little thinner at the end of a line |
541 | or the end of the buffer. | |
542 | ||
e04d62b9 | 543 | ** Port the conservative stack marking code of Emacs's garbage collector |
1b2105d9 EZ |
544 | to more systems, so that we can completely get rid of GCPROs. Note |
545 | that Boehm garbage collector provides this. | |
5e101746 | 546 | |
ba1c68de | 547 | ** Reorder defcustom's in each package so that the more important |
5005a9c0 EZ |
548 | options come first in the Customize buffers. This could be done by |
549 | either rearranging the file (since options are shown in the order | |
88edf64c | 550 | they appear in the *.el files), or by adding a few :set-after attributes. |
5005a9c0 | 551 | |
ba1c68de | 552 | ** Maybe document the features of libraries missing from the manual (or |
5e101746 RS |
553 | ancillary manuals, including the Lisp manual in some cases). |
554 | This is not worth doing for all of these packages and we need not | |
555 | aim for completeness, but some may be worth documenting. | |
556 | ||
557 | Here's a list which is probably not complete/correct: align, allout, | |
4899e078 | 558 | artist, ansi-color, array, calculator, cdl, cmuscheme, |
a594a116 | 559 | completion, delim-col, dirtrack, double, echistory, elide-head, |
5e101746 | 560 | easymenu, expand, flow-ctrl, format [format-alist], |
903a72b3 GM |
561 | generic/generic-x [various modes], kermit, log-edit, |
562 | makesum, midnight [other than in Kill Buffer node], | |
5e101746 RS |
563 | mouse-copy [?], mouse-drag, mouse-sel, net-utils, rcompile, |
564 | snmp-mode [?], soundex [should be interactive?], strokes [start from | |
565 | the web page], talk, thingatpt [interactive functions?], type-break, | |
903a72b3 | 566 | vcursor, xscheme, zone-mode [?], mlconvert [?], iso-cvt, |
e04d62b9 GM |
567 | feedmail [?], uce, gametree, page-ext, |
568 | refbib, refer, scribe, texinfo, underline, | |
903a72b3 | 569 | cmacexp, hideif, mantemp [obsolete?], pcomplete, xml, |
5e101746 RS |
570 | cvs-status (should be described in PCL-CVS manual); other progmodes, |
571 | probably in separate manual. | |
758830ba | 572 | |
ba1c68de | 573 | ** Convert the XPM bitmaps to PPM, replace the PBMs with them and scrap |
6772c8e1 GM |
574 | the XPMs so that the color versions work generally. (Requires care |
575 | with the color used for the transparent regions.) | |
bf6394a6 | 576 | |
ba1c68de | 577 | ** Convenient access to the `values' variable. It would be nice to have an |
758830ba JB |
578 | interface that would show you the printed reps of the elements of the |
579 | list in a menu, let you select one of the values, and put it into some | |
580 | other variable, without changing the value of `values'. | |
bf6394a6 | 581 | |
ba1c68de | 582 | ** (Controlled by a flag) make open and close syntax match exactly, |
c51b37fd DL |
583 | i.e. `(' doesn't match `]'. |
584 | ||
ba1c68de | 585 | ** Specify parameter ID-FORMAT in all calls to `file-attributes' and |
9ac8c83b LH |
586 | `directory-files-and-attributes' where attributes UID or GID are used. |
587 | Whenever possible, use value 'string. | |
588 | When done, change meaning of default value from 'integer to 'string. | |
589 | If value 'integer is used nowhere, remove the parameter ID-FORMAT from | |
590 | the definition of `file-attributes' and `directory-files-and-attributes' | |
591 | and from the calls. | |
592 | ||
cf4c9271 KH |
593 | ** Make language-info-alist customizable. Currently a user can customize |
594 | only the variable `current-language-environment'. | |
595 | ||
596 | ** Improve language environment handling so that Emacs can fit | |
597 | better to a users locale. Currently Emacs uses utf-8 language | |
598 | environment for all utf-8 locales, thus a user in ja_JP.UTF-8 locale | |
599 | are also put in utf-8 lang. env. In such a case, it is | |
600 | better to use Japanese lang. env. but prefer utf-8 coding system. | |
1f724d55 | 601 | |
321e4870 RS |
602 | ** Enhance locale handling: handle language, territory and charset |
603 | orthogonally and de-emphasize language environments. Use the locale | |
604 | to set up more things, such as fontsets, the default Ispell | |
605 | dictionary, diary format, calendar holidays and display, quoting | |
606 | characters and phrase boundaries, sentence endings, collation for | |
607 | sorting (at least for unicodes), HTTP Accept-language, patterns for | |
608 | directory listings and compilation messages, yes-or-no replies, | |
609 | common menu items when the toolkit supports it ... `locale-info' | |
610 | needs extending for LC_COLLATE &c. [fx started on this.] | |
611 | ||
1f724d55 KH |
612 | ** Eliminate the current restriction on header printing by ps-print. |
613 | Currently, a header can contain only single 1-byte charset in | |
614 | addition to ASCII. | |
615 | ||
616 | ** In ps-print, provide an user friendly interface to specify fonts. | |
617 | ||
1f724d55 KH |
618 | ** Enhance word boundary detection for such a script that doesn't use |
619 | space at word boundary (e.g. Thai). | |
620 | ||
cf4c9271 KH |
621 | ** Implement interface programs with major Japanese conversion server |
622 | in lib-src so that they can be used from the input method | |
623 | "japanese". Currently, most Japanese users are using external | |
624 | packages (e.g. tamago, anthy) or an input method via XIM. | |
1f724d55 | 625 | |
a53e64cc | 626 | ** Let LEIM handle the Mode_switch key like XIM does (i.e. a toggle like C-\ |
8b5e9361 | 627 | but which can also be used as a modifier). |
a53e64cc | 628 | |
d59e3c42 | 629 | ** Improve Help buffers: Change the face of previously visited links (like |
8b5e9361 GM |
630 | Info, but also with regard to namespace), and give the value of |
631 | lisp expressions, e.g auto-mode-alist, the right face. | |
d59e3c42 | 632 | |
5a473319 GM |
633 | ** Possibly make `list-holidays' eval items in the calendar-holidays variable. |
634 | See thread | |
635 | <http://lists.gnu.org/archive/html/emacs-devel/2006-02/msg01034.html>. | |
636 | [rgm@gnu.org will look at this after 22.1] | |
637 | ||
9e21382c GM |
638 | ** Possibly make cal-dst use the system timezone database directly. |
639 | See thread | |
640 | <http://lists.gnu.org/archive/html/emacs-pretest-bug/2006-11/msg00060.html> | |
641 | ||
590394eb GM |
642 | ** Possibly add a "close" button to the modeline. |
643 | The idea is to add an "X" of some kind, that when clicked deletes | |
644 | the window associated with that modeline. | |
645 | http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg02416.html | |
646 | ||
ae2cc2d8 GM |
647 | * Things to be done for specific packages or features |
648 | ||
8521e69b GM |
649 | ** NeXTstep port |
650 | ||
651 | *** Bugs | |
652 | ||
9c3dcdaa JD |
653 | **** The event loop does not redraw. |
654 | A problem is that redraw don't happen during resize, | |
331ff3b9 | 655 | because we can't break out from the NSapp loop during resize. |
9c3dcdaa JD |
656 | There was a special trick to detect mouse press in the lower right |
657 | corner and track mouse movements, but this did not work well, and was | |
331ff3b9 | 658 | not scalable to the new Lion "resize on every window edge" behavior. |
6511485f | 659 | [As of trunk r109635, 2012-08-15, the event loop no longer polls.] |
331ff3b9 | 660 | |
8521e69b | 661 | **** (mouse-avoidance-mode 'banish) then minimize Emacs, will pop window back |
9f7c9816 | 662 | up on top of all others (probably fixed in bug#17439) |
8521e69b GM |
663 | |
664 | **** free_frame_resources, face colors | |
665 | ||
666 | **** Numeric keysetting bug. | |
667 | ||
668 | *** Mac-related | |
669 | ||
670 | **** Open file:/// URLs. | |
671 | ||
672 | **** Put frame autopositioning into C code somewhere -- if loc = same, offset. | |
673 | ||
674 | **** Automap ctrl-mouse-1 to mouse-3. | |
675 | ||
676 | **** Deal with Finder aliases somehow. | |
677 | ||
678 | **** Ctrl-F2 won't pull up menus. | |
679 | ||
680 | *** Other / Low Priority: | |
681 | ||
fe7a3057 | 682 | **** Better recognition of Unicode scripts / Greek / composition. |
8521e69b GM |
683 | |
684 | **** Undo for color-drag face customization. | |
685 | ||
cc7245e4 EZ |
686 | ** Bidirectional editing |
687 | ||
9bb794c7 EZ |
688 | *** Support reordering structured text |
689 | Two important use cases: (1) comments and strings in program sources, | |
690 | and (2) text with markup, like HTML or XML. | |
691 | ||
692 | One idea is to invent a special text property that would instruct the | |
693 | display engine to reorder only the parts of buffer text covered by | |
694 | that property. The display engine will then push its state onto the | |
695 | iterator stack, restrict the bidi iterator to accessing only the | |
696 | portion of buffer text covered by the property, reorder the text, then | |
697 | pop its state from stack and continue as usual. This will require | |
698 | minor changes in the bidi_it structure. | |
699 | ||
700 | This design requires Lisp-level code to put the text properties on the | |
701 | relevant parts of the buffer text. That could be done using JIT | |
702 | fontifications, or as a preliminary processing when the file is | |
703 | visited. With HTML/XML, the code that puts text properties needs to | |
704 | pay attention to the bidi directives embedded in the HTML/XML stream. | |
705 | ||
cc7245e4 EZ |
706 | *** Allow the user to control the direction of the UI |
707 | ||
708 | **** Introduce user option to control direction of mode line. | |
9bb794c7 EZ |
709 | One problem is the header line, which is produced by the same routines |
710 | as the mode line. While it makes sense to have the mode-line | |
cc7245e4 EZ |
711 | direction controlled by a single global variable, header lines are |
712 | buffer-specific, so they need a separate treatment in this regard. | |
713 | ||
714 | **** User options to control direction of menu bar and tool bar. | |
715 | For the tool bar, it's relatively easy: set it.paragraph_embedding | |
716 | in redisplay_tool_bar according to the user variable, and make | |
717 | f->desired_tool_bar_string multibyte with STRING_SET_MULTIBYTE. Some | |
718 | minor changes will be needed to set the right_box_line_p and | |
719 | left_box_line_p flags correctly for the R2L tool bar. | |
720 | ||
721 | However, it makes no sense to display the tool bar right to left if | |
722 | the menu bar cannot be displayed in the same direction. | |
723 | ||
724 | R2L menu bar is tricky for the same reasons as the mode line. In | |
725 | addition, toolkit builds create their menu bars in toolkit-specific | |
726 | parts of code, bypassing xdisp.c, so those parts need to be enhanced | |
727 | with toolkit-specific code to display the menu bar right to left. | |
728 | ||
ae2cc2d8 GM |
729 | ** ImageMagick support |
730 | ||
731 | *** image-type-header-regexps priorities the jpeg loader over the | |
732 | ImageMagick one. This is not wrong, but how should a user go about | |
c80e3b4a | 733 | preferring the ImageMagick loader? The user might like zooming etc in jpegs. |
ae2cc2d8 GM |
734 | |
735 | Try (setq image-type-header-regexps nil) for a quick hack to prefer | |
736 | ImageMagick over the jpg loader. | |
737 | ||
738 | *** For some reason its unbearably slow to look at a page in a large | |
739 | image bundle using the :index feature. The ImageMagick "display" | |
740 | command is also a bit slow, but nowhere near as slow as the Emacs | |
741 | code. It seems ImageMagick tries to unpack every page when loading the | |
742 | bundle. This feature is not the primary usecase in Emacs though. | |
743 | ||
744 | ImageMagick 6.6.2-9 introduced a bugfix for single page djvu load. It | |
745 | is now much faster to use the :index feature, but still not very fast. | |
746 | ||
747 | *** Try to cache the num pages calculation. It can take a while to | |
748 | calculate the number of pages, and if you need to do it for each page | |
749 | view, page-flipping becomes uselessly slow. | |
750 | ||
751 | *** Integrate with image-dired. | |
752 | ||
cc7245e4 EZ |
753 | *** Integrate with docview. |
754 | ||
ae2cc2d8 GM |
755 | *** Integrate with image-mode. |
756 | Some work has been done, e.g. M-x image-transform-fit-to-height will | |
757 | fit the image to the height of the Emacs window. | |
758 | ||
759 | *** Look for optimizations for handling images with low depth. | |
760 | Currently the code seems to default to 24 bit RGB which is costly for | |
761 | images with lower bit depth. | |
762 | ||
763 | *** Decide what to do with some uncommitted imagemagick support | |
764 | functions for image size etc. | |
765 | ||
3d91f789 GM |
766 | ** nxml mode |
767 | ||
768 | *** High priority | |
769 | ||
770 | **** Command to insert an element template, including all required | |
771 | attributes and child elements. When there's a choice of elements | |
772 | possible, we could insert a comment, and put an overlay on that | |
773 | comment that makes it behave like a button with a pop-up menu to | |
774 | select the appropriate choice. | |
775 | ||
776 | **** Command to tag a region. With a schema should complete using legal | |
777 | tags, but should work without a schema as well. | |
778 | ||
779 | **** Provide a way to conveniently rename an element. With a schema should | |
780 | complete using legal tags, but should work without a schema as well. | |
781 | ||
782 | *** Outlining | |
783 | ||
784 | **** Implement C-c C-o C-q. | |
785 | ||
786 | **** Install pre/post command hook for moving out of invisible section. | |
787 | ||
788 | **** Put a modify hook on invisible sections that expands them. | |
789 | ||
790 | **** Integrate dumb folding somehow. | |
791 | ||
792 | **** An element should be able to be its own heading. | |
793 | ||
794 | **** Optimize to avoid complete buffer scan on each command. | |
795 | ||
796 | **** Make it work with HTML-style headings (i.e. level indicated by | |
797 | name of heading element rather than depth of section nesting). | |
798 | ||
799 | **** Recognize root element as a section provided it has a title, even | |
800 | if it doesn't match section-element-name-regex. | |
801 | ||
802 | **** Support for incremental search automatically making hidden text visible. | |
803 | ||
804 | **** Allow title to be an attribute. | |
805 | ||
806 | **** Command that says to recognize the tag at point as a section/heading. | |
807 | ||
808 | **** Explore better ways to determine when an element is a section | |
809 | or a heading. | |
810 | ||
811 | **** rng-next-error needs to either ignore invisible portion or reveal it | |
812 | (maybe use isearch oriented text properties). | |
813 | ||
814 | **** Errors within hidden section should be highlighted by underlining the | |
815 | ellipsis. | |
816 | ||
817 | **** Make indirect buffers work. | |
818 | ||
819 | **** How should nxml-refresh outline recover from non well-formed tags? | |
820 | ||
821 | **** Hide tags in title elements? | |
822 | ||
823 | **** Use overlays instead of text properties for holding outline state? | |
824 | Necessary for indirect buffers to work? | |
825 | ||
826 | **** Allow an outline to go in the speedbar. | |
827 | ||
828 | **** Split up outlining manual section into subsections. | |
829 | ||
830 | **** More detail in the manual about each outlining command. | |
831 | ||
832 | **** More menu entries for hiding/showing? | |
833 | ||
834 | **** Indication of many lines have been hidden? | |
835 | ||
836 | *** Locating schemas | |
837 | ||
838 | **** Should rng-validate-mode give the user an opportunity to specify a | |
839 | schema if there is currently none? Or should it at least give a hint | |
840 | to the user how to specify a non-vacuous schema? | |
841 | ||
842 | **** Support for adding new schemas to schema-locating files. | |
843 | Add documentElement and namespace elements. | |
844 | ||
845 | **** C-c C-w should be able to report current type id. | |
846 | ||
847 | **** Implement doctypePublicId. | |
848 | ||
849 | **** Implement typeIdBase. | |
850 | ||
851 | **** Implement typeIdProcessingInstruction. | |
852 | ||
853 | **** Support xml:base. | |
854 | ||
855 | **** Implement group. | |
856 | ||
857 | **** Find preferred prefix from schema-locating files. Get rid of | |
858 | rng-preferred-prefix-alist. | |
859 | ||
860 | **** Inserting document element with vacuous schema should complete using | |
861 | document elements declared in schema locating files, and set schema | |
862 | appropriately. | |
863 | ||
864 | **** Add a ruleType attribute to the <include> element? | |
865 | ||
866 | **** Allow processing instruction in prolog to contain the compact syntax | |
867 | schema directly. | |
868 | ||
869 | **** Use RDDL to locate a schema based on the namespace URI. | |
870 | ||
871 | **** Should not prompt to add redundant association to schema locating file. | |
872 | ||
873 | **** Command to reload current schema. | |
874 | ||
875 | *** Schema-sensitive features | |
876 | ||
877 | **** Should filter dynamic markup possibilities using schema validity, by | |
878 | adding hook to nxml-mode. | |
879 | ||
880 | **** Dynamic markup word should (at least optionally) be able to look in | |
881 | other buffers that are using nxml-mode. | |
882 | ||
883 | **** Should clicking on Invalid move to next error if already on an error? | |
884 | ||
885 | **** Take advantage of a:documentation. Needs change to schema format. | |
886 | ||
887 | **** Provide feasible validation (as in Jing) toggle. | |
888 | ||
889 | **** Save the validation state as a property on the error overlay to enable | |
890 | more detailed diagnosis. | |
891 | ||
892 | **** Provide an Error Summary buffer showing all the validation errors. | |
893 | ||
e4769531 | 894 | **** Pop-up menu. What is useful? Tag a region (should be grayed out if |
3d91f789 GM |
895 | the region is not balanced). Suggestions based on error messages. |
896 | ||
897 | **** Have configurable list of namespace URIs so that we can provide | |
898 | namespace URI completion on extension elements or with schema-less documents. | |
899 | ||
900 | **** Allow validation to handle XInclude. | |
901 | ||
902 | **** ID/IDREF support. | |
903 | ||
904 | *** Completion | |
905 | ||
906 | **** Make it work with icomplete. Only use a function to complete when | |
907 | some of the possible names have undeclared namespaces. | |
908 | ||
909 | **** How should C-return in mixed text work? | |
910 | ||
911 | **** When there's a vacuous schema, C-return after < will insert the end-tag. | |
912 | Is this a bug or a feature? | |
913 | ||
914 | **** After completing start-tag, ensure we don't get unhelpful message | |
915 | from validation | |
916 | ||
917 | **** Syntax table for completion. | |
918 | ||
919 | **** Should complete start-tag name with a space if namespace attributes | |
920 | are required. | |
921 | ||
922 | **** When completing start-tag name with no prefix and it doesn't match | |
923 | should try to infer namespace from local name. | |
924 | ||
925 | **** Should completion pay attention to characters after point? If so, how? | |
926 | ||
927 | **** When completing start-tag name, add required atts if only one required | |
928 | attribute. | |
929 | ||
930 | **** When completing attribute name, add attribute value if only one value | |
931 | is possible. | |
932 | ||
933 | **** After attribute-value completion, insert space after close delimiter | |
934 | if more attributes are required. | |
935 | ||
936 | **** Complete on enumerated data values in elements. | |
937 | ||
938 | **** When in context that allows only elements, should get tag | |
939 | completion without having to type < first. | |
940 | ||
941 | **** When immediately after start-tag name, and name is valid and not | |
942 | prefix of any other name, should C-return complete on attribute names? | |
943 | ||
944 | **** When completing attributes, more consistent to ignore all attributes | |
945 | after point. | |
946 | ||
947 | **** Inserting attribute value completions needs to be sensitive to what | |
948 | delimiter is used so that it quotes the correct character. | |
949 | ||
950 | **** Complete on encoding-names in XML decl. | |
951 | ||
952 | **** Complete namespace declarations by searching for all namespaces | |
953 | mentioned in the schema. | |
954 | ||
955 | *** Well-formed XML support | |
956 | ||
957 | **** Deal better with Mule-UCS | |
958 | ||
959 | **** Deal with UTF-8 BOM when reading. | |
960 | ||
961 | **** Complete entity names. | |
962 | ||
963 | **** Provide some support for entity names for MathML. | |
964 | ||
965 | **** Command to repeat the last tag. | |
966 | ||
967 | **** Support for changing between character references and characters. | |
968 | Need to check that context is one in which character references are | |
969 | allowed. xmltok prolog parsing will need to distinguish parameter | |
970 | literals from other kinds of literal. | |
971 | ||
972 | **** Provide a comment command to bind to M-; that works better than the | |
973 | normal one. | |
974 | ||
975 | **** Make indenting in a multi-line comment work. | |
976 | ||
977 | **** Structure view. Separate buffer displaying element tree. | |
978 | Be able to navigate from structure view to document and vice-versa. | |
979 | ||
980 | **** Flash matching >. | |
981 | ||
982 | **** Smart selection command that selects increasingly large syntactically | |
983 | coherent chunks of XML. If point is in an attribute value, first | |
984 | select complete value; then if command is repeated, select value plus | |
985 | delimiters, then select attribute name as well, then complete | |
986 | start-tag, then complete element, then enclosing element, etc. | |
987 | ||
988 | **** ispell integration. | |
989 | ||
990 | **** Block-level items in mixed content should be indented, e.g: | |
991 | <para>This is list: | |
992 | <ul> | |
993 | <li>item</li> | |
994 | ||
995 | **** Provide option to indent like this: | |
996 | <para>This is a paragraph | |
997 | occupying multiple lines.</para> | |
998 | ||
999 | **** Option to add make a / that closes a start-tag electrically insert a | |
1000 | space for the XHTML guys. | |
1001 | ||
1002 | **** C-M-q should work. | |
1003 | ||
1004 | *** Datatypes | |
1005 | ||
1006 | **** Figure out workaround for CJK characters with regexps. | |
1007 | ||
1008 | **** Does category C contain Cn? | |
1009 | ||
1010 | **** Do ENTITY datatype properly. | |
1011 | ||
1012 | *** XML Parsing Library | |
1013 | ||
1014 | **** Parameter entity parsing option, nil (never), t (always), | |
1015 | unless-standalone (unless standalone="yes" in XML declaration). | |
1016 | ||
1017 | **** When a file is currently being edited, there should be an option to | |
1018 | use its buffer instead of the on-disk copy. | |
1019 | ||
1020 | *** Handling all XML features | |
1021 | ||
1022 | **** Provide better support for editing external general parsed entities. | |
1023 | Perhaps provide a way to force ignoring undefined entities; maybe turn | |
1024 | this on automatically with <?xml encoding=""?> (with no version | |
1025 | pseudo-att). | |
1026 | ||
1027 | **** Handle internal general entity declarations containing elements. | |
1028 | ||
1029 | **** Handle external general entity declarations. | |
1030 | ||
1031 | **** Handle default attribute declarations in internal subset. | |
1032 | ||
1033 | **** Handle parameter entities (including DTD). | |
1034 | ||
1035 | *** RELAX NG | |
1036 | ||
1037 | **** Do complete schema checking, at least optionally. | |
1038 | ||
1039 | **** Detect include/external loops during schema parse. | |
1040 | ||
1041 | **** Coding system detection for schemas. Should use utf-8/utf-16 per the | |
1042 | spec. But also need to allow encodings other than UTF-8/16 to support | |
1043 | CJK charsets that Emacs cannot represent in Unicode. | |
1044 | ||
1045 | *** Catching XML errors | |
1046 | ||
1047 | **** Check public identifiers. | |
1048 | ||
1049 | **** Check default attribute values. | |
1050 | ||
1051 | *** Performance | |
1052 | ||
1053 | **** Explore whether overlay-recenter can cure overlays performance problems. | |
1054 | ||
1055 | **** Cache schemas. Need to have list of files and mtimes. | |
1056 | ||
1057 | **** Make it possible to reduce rng-validate-chunk-size significantly, | |
1058 | perhaps to 500 bytes, without bad performance impact: don't do | |
1059 | redisplay on every chunk; pass continue functions on other uses of | |
1060 | rng-do-some-validation. | |
1061 | ||
1062 | **** Cache after first tag. | |
1063 | ||
1064 | **** Introduce a new name class that is a choice between names (so that | |
1065 | we can use member) | |
1066 | ||
1067 | **** intern-choice should simplify after patterns with same 1st/2nd args | |
1068 | ||
1069 | **** Large numbers of overlays slow things down dramatically. Represent | |
1070 | errors using text properties. This implies we cannot incrementally | |
1071 | keep track of the number of errors, in order to determine validity. | |
1072 | Instead, when validation completes, scan for any characters with an | |
1073 | error text property; this seems to be fast enough even with large | |
1074 | buffers. Problem with error at end of buffer, where there's no | |
1075 | character; need special variable for this. Need to merge face from | |
1076 | font-lock with the error face: use :inherit attribute with list of two | |
1077 | faces. How do we avoid making rng-valid depend on nxml-mode? | |
1078 | ||
1079 | *** Error recovery | |
1080 | ||
1081 | **** Don't stop at newline in looking for close of start-tag. | |
1082 | ||
1083 | **** Use indentation to guide recovery from mismatched end-tags | |
1084 | ||
1085 | **** Don't keep parsing when currently not well-formed but previously | |
1086 | well-formed | |
1087 | ||
1088 | **** Try to recover from a bad start-tag by popping an open element if | |
1089 | there was a mismatched end-tag unaccounted for. | |
1090 | ||
1091 | **** Try to recover from a bad start-tag open on the hypothesis that there | |
1092 | was an error in the namespace URI. | |
1093 | ||
1094 | **** Better recovery from ill-formed XML declarations. | |
1095 | ||
8350f087 | 1096 | *** Usability improvements |
3d91f789 GM |
1097 | |
1098 | **** Should print a "Parsing..." message during long movements. | |
1099 | ||
1100 | **** Provide better position for reference to undefined pattern error. | |
1101 | ||
1102 | **** Put Well-formed in the mode-line when validating against any-content. | |
1103 | ||
1104 | **** Trim marking of illegal data for leading and trailing whitespace. | |
1105 | ||
1106 | **** Show Invalid status as soon as we are sure it's invalid, rather than | |
1107 | waiting for everything to be completely up to date. | |
1108 | ||
1109 | **** When narrowed, Valid or Invalid status should probably consider only | |
1110 | validity of narrowed region. | |
1111 | ||
1112 | *** Bug fixes | |
1113 | ||
1114 | **** Need to give an error for a document like: <foo/><![CDATA[ ]]> | |
1115 | ||
1116 | **** Make nxml-forward-balanced-item work better for the prolog. | |
1117 | ||
1118 | **** Make filling and indenting comments work in the prolog. | |
1119 | ||
1120 | **** Should delete RNC Input buffers. | |
1121 | ||
1122 | **** Figure out what regex use for NCName and use it consistently, | |
1123 | ||
1124 | **** Should have not-well-formed tokens in ref. | |
1125 | ||
1126 | **** Require version in XML declaration? Probably not because prevents | |
1127 | use for external parsed entities. At least forbid standalone without version. | |
1128 | ||
1129 | **** Reject schema that compiles to rng-not-allowed-ipattern. | |
1130 | ||
1131 | **** Move point backwards on schema parse error so that it's on the right token. | |
1132 | ||
1133 | *** Internal | |
1134 | ||
1135 | **** Use rng-quote-string consistently. | |
1136 | ||
1137 | **** Use parsing library for XML to texinfo conversion. | |
1138 | ||
1139 | **** Rename xmltok.el to nxml-token.el. Use nxml-t- prefix instead of | |
1140 | xmltok-. Change nxml-t-type to nxml-t-token-type, nxml-t-start to | |
1141 | nxml-t-token-start. | |
1142 | ||
1143 | **** Can we set fill-prefix to nil and rely on indenting? | |
1144 | ||
1145 | **** xmltok should make available replacement text of entities containing | |
1146 | elements | |
1147 | ||
1148 | **** In rng-valid, instead of using modification-hooks and | |
1149 | insert-behind-hooks on dependent overlays, use same technique as nxml-mode. | |
1150 | ||
1151 | **** Port to XEmacs. Issues include: Unicode (XEmacs seems to be based on | |
1152 | Mule-UCS); overlays/text properties vs extents; absence of | |
1153 | fontification-functions hook. | |
1154 | ||
1155 | *** Fontification | |
1156 | ||
1157 | **** Allow face to depend on element qname, attribute qname, attribute | |
1158 | value. Use list with pairs of (R . F), where R specifies regexps and | |
1159 | F specifies faces. How can this list be made to depend on the document type? | |
1160 | ||
1161 | *** Other | |
1162 | ||
1163 | **** Support RELAX NG XML syntax (use XML parsing library). | |
1164 | ||
1165 | **** Support W3C XML Schema (use XML parsing library). | |
1166 | ||
1167 | **** Command to infer schema from current document (like trang). | |
1168 | ||
1169 | *** Schemas | |
1170 | ||
1171 | **** XSLT schema should take advantage of RELAX NG to express cooccurrence | |
1172 | constraints on attributes (e.g. xsl:template). | |
1173 | ||
1174 | *** Documentation | |
1175 | ||
1176 | **** Move material from README to manual. | |
1177 | ||
1178 | **** Document encodings. | |
1179 | ||
1180 | *** Notes | |
1181 | ||
1182 | **** How can we allow an error to be displayed on a different token from | |
1183 | where it is detected? In particular, for a missing closing ">" we | |
1184 | will need to display it at the beginning of the following token. At the | |
1185 | moment, when we parse the following token the error overlay will get cleared. | |
1186 | ||
1187 | **** How should rng-goto-next-error deal with narrowing? | |
1188 | ||
1189 | **** Perhaps should merge errors having same start position even if they | |
1190 | have different ends. | |
1191 | ||
1192 | **** How to handle surrogates? One possibility is to be compatible with | |
1193 | utf8.e: represent as sequence of 4 chars. But utf-16 is incompatible | |
1194 | with this. | |
1195 | ||
1196 | **** Should we distinguish well-formedness errors from invalidity errors? | |
1197 | (I think not: we may want to recover from a bad start-tag by implying | |
1198 | an end-tag.) | |
1199 | ||
1200 | **** Seems to be a bug with Emacs, where a mouse movement that causes | |
1201 | help-echo text to appear counts as pending input but does not cause | |
1202 | idle timer to be restarted. | |
1203 | ||
1204 | **** Use XML to represent this file. | |
1205 | ||
1206 | **** I had a TODO which said simply "split-string". What did I mean? | |
1207 | ||
1208 | **** Investigate performance on large files all on one line. | |
1209 | ||
1210 | *** Issues for Emacs versions >= 22 | |
1211 | ||
1212 | **** Take advantage of UTF-8 CJK support. | |
1213 | ||
1214 | **** Supply a next-error-function. | |
1215 | ||
1216 | **** Investigate this NEWS item "Emacs now tries to set up buffer coding | |
1217 | systems for HTML/XML files automatically." | |
1218 | ||
1219 | **** Take advantage of the pointer text property. | |
1220 | ||
1221 | **** Leverage char-displayable-p. | |
1222 | ||
ba1c68de SM |
1223 | * Internal changes |
1224 | ||
41a023e3 | 1225 | ** Cleanup all the GC_ mark bit stuff -- there is no longer any distinction |
dcbccc4d CY |
1226 | since the mark bit is no longer stored in the Lisp_Object itself. |
1227 | ||
12cdb1c1 SM |
1228 | ** Refine the `predicate' arg to read-file-name. |
1229 | Currently, it mixes up the predicate to apply when doing completion and the | |
1230 | one to use when terminating the selection. | |
1231 | ||
1d919365 SM |
1232 | ** Merge ibuffer.el and buff-menu.el. |
1233 | More specifically do what's needed to make ibuffer.el the default, | |
1234 | or just an extension of buff-menu.el. | |
1235 | ||
6ea71a44 GM |
1236 | ** Replace linum.el with nlinum.el |
1237 | http://lists.gnu.org/archive/html/emacs-devel/2013-08/msg00379.html | |
1238 | ||
1d919365 SM |
1239 | ** Use pcomplete by default in shell-mode. |
1240 | This means to make it behave (by default) more like the current code. | |
1241 | Use it also for read-shell-command, M-x compile, ... | |
1242 | ||
1243 | ** Merge sendmail.el and messages.el. | |
1244 | Probably not a complete merge, but at least arrange for messages.el to be | |
1245 | a derived mode of sendmail.el. Or arrange for messages.el to be split | |
1246 | into a small core and "the rest" so that we use less resources as long as | |
1247 | we stick to the features provided in sendmail.el. | |
045744c6 | 1248 | |
ba1c68de | 1249 | ** Replace gmalloc.c with the modified Doug Lea code from the current |
1d919365 SM |
1250 | GNU libc so that the special mmapping of buffers can be removed -- |
1251 | that apparently loses under Solaris, at least. [fx has mostly done | |
1252 | this.] | |
ba1c68de SM |
1253 | |
1254 | ** Rewrite make-docfile to be clean and maintainable. | |
acd97ed6 GM |
1255 | It might be better to replace it with Lisp, using the byte compiler. |
1256 | http://lists.gnu.org/archive/html/emacs-devel/2012-06/msg00037.html | |
ba1c68de SM |
1257 | |
1258 | ** Add an inferior-comint-minor-mode to capture the common set of operations | |
1259 | offered by major modes that offer an associated inferior | |
d3a403e5 SM |
1260 | comint-derived mode. I.e. basically make cmuscheme.el/inf-lisp.el generic. |
1261 | For use by sml-mode, python-mode, tex-mode, scheme-mode, lisp-mode, | |
1262 | haskell-mode, tuareg-mode, ... | |
ba1c68de | 1263 | |
f57dad5a MB |
1264 | ** Add "link" button class |
1265 | Add a standard button-class named "link", and make all other link-like | |
1266 | button classes inherit from it. Set the default face of the "link" button | |
1267 | class to the standard "link" face. | |
1268 | ||
acd97ed6 GM |
1269 | * Wishlist items: |
1270 | ||
1271 | ** Maybe replace etags.c with a Lisp implementation. | |
1272 | http://lists.gnu.org/archive/html/emacs-devel/2012-06/msg00354.html | |
1273 | ||
1274 | ** Maybe replace lib-src/rcs2log with a Lisp implementation. | |
1275 | It wouldn't have to be a complete replacement, just enough | |
1276 | for vc-rcs-update-changelog. | |
1277 | ||
2345130a SM |
1278 | * Other known bugs: |
1279 | ||
c3bb6fdb | 1280 | ** `make-frame' forgets unhandled parameters, at least for X11 frames. |
48b8e4a0 | 1281 | |
2345130a SM |
1282 | ** a two-char comment-starter whose two chars are symbol constituents will |
1283 | not be noticed if it appears within a word. | |
1284 | ||
07ff1e4b RS |
1285 | ** Fix unexelf.c to handle the .data.rel and .data.rel.local |
1286 | sections made by GCC 3.4 on IRIX. | |
1287 | ||
5b87ad55 GM |
1288 | \f |
1289 | This file is part of GNU Emacs. | |
1290 | ||
ab73e885 | 1291 | GNU Emacs is free software: you can redistribute it and/or modify |
5b87ad55 | 1292 | it under the terms of the GNU General Public License as published by |
ab73e885 GM |
1293 | the Free Software Foundation, either version 3 of the License, or |
1294 | (at your option) any later version. | |
309920fa | 1295 | |
5b87ad55 GM |
1296 | GNU Emacs is distributed in the hope that it will be useful, |
1297 | but WITHOUT ANY WARRANTY; without even the implied warranty of | |
1298 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
1299 | GNU General Public License for more details. | |
309920fa | 1300 | |
5b87ad55 | 1301 | You should have received a copy of the GNU General Public License |
ab73e885 | 1302 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |