| 1 | Emacs TODO List -*-outline-*- |
| 2 | |
| 3 | Copyright (C) 2001-2014 Free Software Foundation, Inc. |
| 4 | See the end of the file for license conditions. |
| 5 | |
| 6 | |
| 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 |
| 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. |
| 28 | |
| 29 | * Tentative plan for Emacs-24 |
| 30 | |
| 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. |
| 35 | ** better support for dynamic embedded graphics: I like this idea (my |
| 36 | mpc.el code could use it for the volume widget), though I wonder if the |
| 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 :-( |
| 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. |
| 50 | *** prog-mode could/should provide a better fill-paragraph default |
| 51 | that uses syntax-tables to recognize string/comment boundaries. |
| 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 |
| 61 | suitable for anyone from beginners to experts. |
| 62 | |
| 63 | ** Convert modes that use view-mode to be derived from special-mode instead. |
| 64 | |
| 65 | ** Major modes should have a menu entry. Examples of modes that do |
| 66 | not have one at the moment and probably should: text-mode, inferior-lisp-mode. |
| 67 | |
| 68 | ** Check if all items on the mode-line have a suitable tooltip for all modes. |
| 69 | |
| 70 | ** edebug and debugger-mode should have a toolbar. |
| 71 | It can use the same icons as gud. |
| 72 | |
| 73 | ** Check what minor modes don't use define-minor-mode and convert them |
| 74 | to use it. |
| 75 | |
| 76 | ** Convert all defvars with leading `*' in the doc-strings into defcustoms |
| 77 | of appropriate :type and :group. |
| 78 | |
| 79 | ** Remove any leading `*'s from defcustom doc-strings. |
| 80 | [done?] [A lot of them are in CC Mode.] |
| 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 | |
| 87 | ** See if other files can use generated-autoload-file (see eg ps-print). |
| 88 | |
| 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 | |
| 95 | * Small but important fixes needed in existing features: |
| 96 | |
| 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 |
| 103 | mechanism that suffices for the specific needs. That will be easy |
| 104 | for users to customize. |
| 105 | |
| 106 | ** Compute the list of active keymaps *after* reading the first event. |
| 107 | |
| 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 | |
| 111 | ** revert-buffer should eliminate overlays and the mark. |
| 112 | For related problems consult the thread starting with |
| 113 | http://lists.gnu.org/archive/html/emacs-devel/2005-11/msg01346.html |
| 114 | |
| 115 | ** erase-buffer should perhaps disregard read-only properties of text. |
| 116 | |
| 117 | ** Fix the kill/yank treatment of invisible text. At the moment, |
| 118 | invisible text is placed in the kill-ring, so that the contents of |
| 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 |
| 121 | text-property, overlay, or selective display) from the kill-ring. |
| 122 | |
| 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 | |
| 127 | ** Feature to change cursor shape when Emacs is idle (for more than |
| 128 | a specified time). |
| 129 | |
| 130 | ** The buttons at the top of a custom buffer should not omit |
| 131 | variables whose values are currently hidden. |
| 132 | |
| 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 | |
| 138 | ** Enhance scroll-bar to handle tall line (similar to line-move). |
| 139 | |
| 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 | |
| 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 | |
| 151 | ** In Emacs Info, examples of using Customize should be clickable |
| 152 | and they should create Custom buffers. |
| 153 | |
| 154 | ** The toolbar should show keyboard equivalents in its tooltips. |
| 155 | |
| 156 | ** Add function to redraw the tool bar. |
| 157 | |
| 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. |
| 161 | |
| 162 | ** make back_comment use syntax-ppss or equivalent. |
| 163 | |
| 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 |
| 169 | |
| 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 | |
| 178 | ** Check for any included packages that define obsolete bug-reporting commands. |
| 179 | Change them to use report-emacs-bug. |
| 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?] |
| 189 | |
| 190 | ** Allow fringe indicators to display a tooltip (provide a help-echo property?) |
| 191 | |
| 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 | |
| 195 | ** `dired-mode' should specify the semantics of `buffer-modified-p' for |
| 196 | dired buffers and DTRT WRT `auto-revert-mode'. |
| 197 | |
| 198 | ** Check uses of prin1 for error-handling. |
| 199 | http://lists.gnu.org/archive/html/emacs-devel/2008-08/msg00456.html |
| 200 | |
| 201 | * Important features: |
| 202 | |
| 203 | ** "Emacs as word processor" |
| 204 | http://lists.gnu.org/archive/html/emacs-devel/2013-11/msg00515.html |
| 205 | rms writes: |
| 206 | 25 years ago I hoped we would extend Emacs to do WYSIWYG word |
| 207 | processing. That is why we added text properties and variable |
| 208 | width fonts. However, more features are still needed to achieve this. |
| 209 | |
| 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. |
| 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 | |
| 232 | ** FFI (foreign function interface) |
| 233 | See eg http://lists.gnu.org/archive/html/emacs-devel/2013-10/msg00246.html |
| 234 | |
| 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 | |
| 238 | ** Imenu could be extended into a file-structure browsing mechanism |
| 239 | using code like that of customize-groups. |
| 240 | |
| 241 | ** Display something in the margin on lines that have compilation errors. |
| 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 | |
| 249 | ** Provide user-friendly ways to list all available font families, |
| 250 | list fonts, display a font as a sample, etc. [fx is looking at |
| 251 | multilingual font selection for the Unicode branch of Emacs.] |
| 252 | |
| 253 | ** Provide a convenient way to select a color with the mouse. |
| 254 | |
| 255 | ** Rewrite the face code to be simpler, clearer and faster. |
| 256 | |
| 257 | ** Program Enriched mode to read and save in RTF. [Is there actually a |
| 258 | decent single definition of RTF? Maybe see info at |
| 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. |
| 262 | |
| 263 | ** Implement primitive and higher-level functions to allow filling |
| 264 | properly with variable-pitch faces. |
| 265 | |
| 266 | ** Implement a smoother vertical scroll facility, one that allows |
| 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. |
| 269 | |
| 270 | ** Implement intelligent search/replace, going beyond query-replace |
| 271 | (see http://groups.csail.mit.edu/uid/projects/clustering/chi04.pdf). |
| 272 | |
| 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". |
| 276 | Don't break the line between two characters that have the |
| 277 | same value of this property. |
| 278 | *** Discretionary hyphens that are not visible when they are at end of line. |
| 279 | |
| 280 | ** Internationalize Emacs's messages. |
| 281 | |
| 282 | ** Set up a facility to save backtraces when errors happen during |
| 283 | specified filters, specified timers, and specified hooks. |
| 284 | |
| 285 | ** Install mmc@maruska.dyndns.org's no-flicker change. |
| 286 | |
| 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 | |
| 291 | ** Address internationalization of symbols names essentially |
| 292 | as documentation, e.g. in command names and Custom. |
| 293 | |
| 294 | ** Make the Lucid menu widget display multilingual text. [This |
| 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 |
| 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 |
| 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.] |
| 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. |
| 303 | |
| 304 | ** Remove the limitation that window and frame widths and heights can |
| 305 | be only full columns/lines. |
| 306 | |
| 307 | ** The GNUstep port needs some serious attention, ideally from someone |
| 308 | familiar with GNUstep and Objective C. |
| 309 | |
| 310 | * Other features we would like: |
| 311 | |
| 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 | |
| 318 | ** Allow frames(terminals) created by emacsclient to inherit their environment |
| 319 | from the emacsclient process. |
| 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. |
| 322 | |
| 323 | ** Give Tar mode all the features of Archive mode. |
| 324 | |
| 325 | ** Create a category of errors called `process-error' |
| 326 | for some or all errors associated with using subprocesses. |
| 327 | |
| 328 | ** Maybe reinterpret `parse-error' as a category of errors |
| 329 | and put some other errors under it. |
| 330 | |
| 331 | ** A function to tell you the argument pattern of functions. |
| 332 | See `function-arity' in http://www.loveshack.ukfsn.org/emacs/fx-misc.el. |
| 333 | |
| 334 | ** Make byte-compile warn when a doc string is too wide. |
| 335 | |
| 336 | ** Make byte-optimization warnings issue accurate line numbers. |
| 337 | |
| 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 | |
| 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 | |
| 351 | ** Emacs Lisp mode could put an overlay on the defun for every |
| 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. |
| 356 | |
| 357 | ** Add a function to get the insertion-type of the markers in an overlay. |
| 358 | |
| 359 | ** ange-ftp |
| 360 | *** understand sftp |
| 361 | This is hard to make work because sftp doesn't print status messages. |
| 362 | |
| 363 | *** Use MLS for ange-ftp-insert-directory if a list of files is specified. |
| 364 | |
| 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, ... |
| 369 | |
| 370 | ** Beefed-up syntax-tables. |
| 371 | *** recognize multi-character syntactic entities like `begin' and `end'. |
| 372 | *** nested string-delimiters (for PostScript's (foo(bar)baz) strings). |
| 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 | |
| 380 | ** Add a way to convert a keyboard macro to equivalent Lisp code. |
| 381 | |
| 382 | ** Have a command suggestion help system that recognizes patterns |
| 383 | of commands which could be replaced with a simpler common command. |
| 384 | It should not make more than one suggestion per 10 minutes. |
| 385 | |
| 386 | ** Add a way to define input methods by computing them (when first used) |
| 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 | |
| 391 | ** Switch the Windows port to using Unicode keyboard input (maybe). |
| 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, |
| 396 | will then come in encoded in UTF-16. |
| 397 | |
| 398 | One advantage of switching to Unicode is to toss encoded-kbd usage, |
| 399 | which will solve the problem with binding non-ASCII keys with modifiers. |
| 400 | |
| 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 | |
| 408 | ** Implement a clean way to use different major modes for |
| 409 | different parts of a buffer. This could be useful in editing |
| 410 | Bison input files, for instance, or other kinds of text |
| 411 | where one language is embedded in another language. See |
| 412 | http://www.loveshack.ukfsn.org/emacs/multi-mode.el and also |
| 413 | mmm-mode, as reference for approaches taken by others. |
| 414 | |
| 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. |
| 418 | |
| 419 | ** Give start-process the ability to direct standard-error |
| 420 | output to a different filter. |
| 421 | |
| 422 | ** Make desktop.el save the "frame configuration" of Emacs (in some |
| 423 | useful sense). |
| 424 | |
| 425 | ** Give desktop.el a feature to switch between different named desktops. |
| 426 | |
| 427 | ** Add a cpio mode, more or less like tar mode. |
| 428 | |
| 429 | ** Save undo information in special temporary files, and reload it |
| 430 | when needed for undoing. This could extend undo capacity. |
| 431 | undo-tree, in ELPA, already does this; its saving code could be |
| 432 | integrated without requiring the use of undo-tree. |
| 433 | |
| 434 | ** Change the Windows NT menu code |
| 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 |
| 441 | thread has processed the MENU_BAR_ACTIVATE_EVENT and regenerated |
| 442 | the whole menu bar. In the mean time, it should process other messages. |
| 443 | |
| 444 | ** Get some major packages installed: W3 (development version needs |
| 445 | significant work), PSGML, _possibly_ ECB. |
| 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 | |
| 450 | ** Make keymaps a first-class Lisp object (this means a rewrite of |
| 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 ? |
| 454 | |
| 455 | ** Provide real menus on ttys. The MS-DOS implementation can serve as |
| 456 | an example how to do part of this; see the XMenu* functions on msdos.c. |
| 457 | |
| 458 | ** Implement popular parts of the rest of the CL functions as compiler |
| 459 | macros in cl-macs. [Is this still relevant now that cl-lib exists?] |
| 460 | |
| 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 | |
| 465 | ** Highlight rectangles (`mouse-track-rectangle-p' in XEmacs). Already in CUA, |
| 466 | but it's a valuable feature worth making more general. |
| 467 | [Basic support added 2013/10: |
| 468 | http://lists.gnu.org/archive/html/emacs-devel/2013-10/msg00904.html ] |
| 469 | |
| 470 | ** Eliminate the storm of warnings concerning char/unsigned char |
| 471 | mismatches that we get with GCC 4.x and proprietary compilers on |
| 472 | various systems. They make it difficult to spot the important warnings. |
| 473 | |
| 474 | ** Fix anything necessary to use `long long' EMACS_INTs with GCC. |
| 475 | |
| 476 | ** Split out parts of lisp.h. |
| 477 | |
| 478 | ** Update the FAQ. |
| 479 | |
| 480 | ** Allow auto-compression-mode to use zlib calls if zlib is available. |
| 481 | [It's required for PNG, so may be linked anyhow.] |
| 482 | |
| 483 | ** Add a --pristine startup flag which does -q --no-site-file plus |
| 484 | ignoring X resources (Doze equivalents?) and most of the |
| 485 | environment. What should not be ignored needs consideration. |
| 486 | [Do the existing -Q and -D cover this, or is more needed?] |
| 487 | |
| 488 | ** Improve the GC (generational, incremental). (We may be able to use |
| 489 | the Boehm collector.) [See the Boehm-GC branch in CVS for work on this.] |
| 490 | |
| 491 | ** Check what hooks would help Emacspeak -- see the defadvising in W3. |
| 492 | |
| 493 | ** Add definitions for symbol properties, for documentation purposes. |
| 494 | |
| 495 | ** Add horizontal scroll bars. |
| 496 | |
| 497 | ** Provide an optional feature which computes a scroll bar slider's |
| 498 | size and its position from lines instead of characters. |
| 499 | |
| 500 | ** Allow unknown image types to be rendered via an external program |
| 501 | converting them to, say, PBM (in the same way as PostScript?). [does |
| 502 | doc-view.el do this, or could it be extended to do this? |
| 503 | Does ImageMagick obsolete this idea?] |
| 504 | |
| 505 | ** Allow displaying an X window from an external program in a buffer, |
| 506 | e.g. to render graphics from Java applets. [gerd and/or wmperry |
| 507 | thought this was feasible.] |
| 508 | |
| 509 | ** Allow images (not just text) in the margin to be mouse-sensitive. |
| 510 | (Requires recursing through display properties). Provide some way |
| 511 | to simulate mouse-clicks on marginal text without a mouse. |
| 512 | |
| 513 | ** Implement Lisp functions to determine properly whether a character |
| 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 |
| 519 | already for Emacs 23 and consult fx.] |
| 520 | |
| 521 | ** Do something to make rms happy with fx's dynamic loading, and use it |
| 522 | to implement things like auto-loaded buffer parsers and database |
| 523 | access in cases which need more than Lisp. |
| 524 | |
| 525 | ** Extend ps-print to deal with multiple font sizes, images, and extra |
| 526 | encodings. |
| 527 | |
| 528 | ** Provide portable undumping using mmap (per gerd design). |
| 529 | |
| 530 | ** Make byte-compile avoid binding an expanded defsubst's args |
| 531 | when the body only calls primitives. |
| 532 | |
| 533 | ** Use the XIE X extension, if available, for image display. |
| 534 | |
| 535 | ** Make monochrome images display using the foreground and background |
| 536 | colors of the applicable faces. |
| 537 | |
| 538 | ** Make `format-time-string' preserve text properties like `format'. |
| 539 | |
| 540 | ** Optionally make the cursor a little thinner at the end of a line |
| 541 | or the end of the buffer. |
| 542 | |
| 543 | ** Port the conservative stack marking code of Emacs's garbage collector |
| 544 | to more systems, so that we can completely get rid of GCPROs. Note |
| 545 | that Boehm garbage collector provides this. |
| 546 | |
| 547 | ** Reorder defcustom's in each package so that the more important |
| 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 |
| 550 | they appear in the *.el files), or by adding a few :set-after attributes. |
| 551 | |
| 552 | ** Maybe document the features of libraries missing from the manual (or |
| 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, |
| 558 | artist, ansi-color, array, calculator, cdl, cmuscheme, |
| 559 | completion, delim-col, dirtrack, double, echistory, elide-head, |
| 560 | easymenu, expand, flow-ctrl, format [format-alist], |
| 561 | generic/generic-x [various modes], kermit, log-edit, |
| 562 | makesum, midnight [other than in Kill Buffer node], |
| 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, |
| 566 | vcursor, xscheme, zone-mode [?], mlconvert [?], iso-cvt, |
| 567 | feedmail [?], uce, gametree, page-ext, |
| 568 | refbib, refer, scribe, texinfo, underline, |
| 569 | cmacexp, hideif, mantemp [obsolete?], pcomplete, xml, |
| 570 | cvs-status (should be described in PCL-CVS manual); other progmodes, |
| 571 | probably in separate manual. |
| 572 | |
| 573 | ** Convert the XPM bitmaps to PPM, replace the PBMs with them and scrap |
| 574 | the XPMs so that the color versions work generally. (Requires care |
| 575 | with the color used for the transparent regions.) |
| 576 | |
| 577 | ** Convenient access to the `values' variable. It would be nice to have an |
| 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'. |
| 581 | |
| 582 | ** (Controlled by a flag) make open and close syntax match exactly, |
| 583 | i.e. `(' doesn't match `]'. |
| 584 | |
| 585 | ** Specify parameter ID-FORMAT in all calls to `file-attributes' and |
| 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 | |
| 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. |
| 601 | |
| 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 | |
| 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 | |
| 618 | ** Enhance word boundary detection for such a script that doesn't use |
| 619 | space at word boundary (e.g. Thai). |
| 620 | |
| 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. |
| 625 | |
| 626 | ** Let LEIM handle the Mode_switch key like XIM does (i.e. a toggle like C-\ |
| 627 | but which can also be used as a modifier). |
| 628 | |
| 629 | ** Improve Help buffers: Change the face of previously visited links (like |
| 630 | Info, but also with regard to namespace), and give the value of |
| 631 | lisp expressions, e.g auto-mode-alist, the right face. |
| 632 | |
| 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 | |
| 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 | |
| 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 | |
| 647 | * Things to be done for specific packages or features |
| 648 | |
| 649 | ** NeXTstep port |
| 650 | |
| 651 | *** Bugs |
| 652 | |
| 653 | **** The event loop does not redraw. |
| 654 | A problem is that redraw don't happen during resize, |
| 655 | because we can't break out from the NSapp loop during resize. |
| 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 |
| 658 | not scalable to the new Lion "resize on every window edge" behavior. |
| 659 | [As of trunk r109635, 2012-08-15, the event loop no longer polls.] |
| 660 | |
| 661 | **** (mouse-avoidance-mode 'banish) then minimize Emacs, will pop window back |
| 662 | up on top of all others (probably fixed in bug#17439) |
| 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 | |
| 682 | **** Better recognition of Unicode scripts / Greek / composition. |
| 683 | |
| 684 | **** Undo for color-drag face customization. |
| 685 | |
| 686 | ** Bidirectional editing |
| 687 | |
| 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 | |
| 706 | *** Allow the user to control the direction of the UI |
| 707 | |
| 708 | **** Introduce user option to control direction of mode line. |
| 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 |
| 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 | |
| 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 |
| 733 | preferring the ImageMagick loader? The user might like zooming etc in jpegs. |
| 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 | |
| 753 | *** Integrate with docview. |
| 754 | |
| 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 | |
| 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 | |
| 894 | **** Pop-up menu. What is useful? Tag a region (should be grayed out if |
| 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 | |
| 1096 | *** Usability improvements |
| 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 | |
| 1223 | * Internal changes |
| 1224 | |
| 1225 | ** Cleanup all the GC_ mark bit stuff -- there is no longer any distinction |
| 1226 | since the mark bit is no longer stored in the Lisp_Object itself. |
| 1227 | |
| 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 | |
| 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 | |
| 1236 | ** Replace linum.el with nlinum.el |
| 1237 | http://lists.gnu.org/archive/html/emacs-devel/2013-08/msg00379.html |
| 1238 | |
| 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. |
| 1248 | |
| 1249 | ** Replace gmalloc.c with the modified Doug Lea code from the current |
| 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.] |
| 1253 | |
| 1254 | ** Rewrite make-docfile to be clean and maintainable. |
| 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 |
| 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 |
| 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, ... |
| 1263 | |
| 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 | |
| 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 | |
| 1278 | * Other known bugs: |
| 1279 | |
| 1280 | ** `make-frame' forgets unhandled parameters, at least for X11 frames. |
| 1281 | |
| 1282 | ** a two-char comment-starter whose two chars are symbol constituents will |
| 1283 | not be noticed if it appears within a word. |
| 1284 | |
| 1285 | ** Fix unexelf.c to handle the .data.rel and .data.rel.local |
| 1286 | sections made by GCC 3.4 on IRIX. |
| 1287 | |
| 1288 | \f |
| 1289 | This file is part of GNU Emacs. |
| 1290 | |
| 1291 | GNU Emacs is free software: you can redistribute it and/or modify |
| 1292 | it under the terms of the GNU General Public License as published by |
| 1293 | the Free Software Foundation, either version 3 of the License, or |
| 1294 | (at your option) any later version. |
| 1295 | |
| 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. |
| 1300 | |
| 1301 | You should have received a copy of the GNU General Public License |
| 1302 | along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. |