X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/b14b5f084ddd139fdbdec5b4b8fcf628c24d3083..9e01e6da53f3c78e7f06af3194ed65e8192dcab0:/etc/TODO diff --git a/etc/TODO b/etc/TODO index 103d19cc69..e9540c2b6b 100644 --- a/etc/TODO +++ b/etc/TODO @@ -1,165 +1,394 @@ - -*-text-*- + -*-outline-*- -* Port the conservative stack marking code of Emacs' garbage collector - to more systems, so that we can completely get rid of GCPROs. +If you are ready to start working on any of these TODO items, we +appreciate your help; please write to emacs-devel@gnu.org so we can be +aware that the problem is being addressed, and talk with you how to do +it best. Since Emacs is an FSF-copyrighted package, please be +prepared to sign legal papers to transfer the copyright on your work +to the FSF. + +* Small but important fixes needed in existing features: + +** Make occur correctly handle matches that span more than one line, + as well as overlapping matches. + +** Fix the kill/yank treatment of invisible text. At the moment, + invisible text is placed in the kill-ring, so that the contents of + the ring may not correspond to the text as displayed to the user. + It ought to be possible to omit text which is invisible (due to a + text-property, overlay, or selective display) from the kill-ring. + +** Change the way define-minor-mode handles autoloading. + It should not generate :require. Or :require in defcustom + should not be recorded in the user's custom-set-variables call. + +** The buttons at the top of a custom buffer should not omit + variables whose values are currently hidden. + +** Clean up the variables in browse-url. Perhaps use a shell command string to + specify the browser instead of the mushrooming set of functions. + See also ESR's proposal for a BROWSER environment variable + . + +** Enhance scroll-bar to handle tall line (similar to line-move). + +** Make occur handle multi-line matches cleanly with context. + +* Important features: -* Program Enriched mode to read and save in RTF. [Is there actually a - decent single definition of RTF?] +** Provide user-friendly ways to list all available font families, + display a font as a sample, etc. [fx is looking at multilingual + font selection for Emacs 22.] -* Implement other text formatting properties. -** Footnotes that can appear either in place or at the end of the page. -** text property that says "don't break line in middle of this". +** Program Enriched mode to read and save in RTF. [Is there actually a + decent single definition of RTF? Maybe see info at + http://latex2rtf.sourceforge.net/.] + +** Implement something better than the current Refill mode. This + probably needs some primitive support. + +** Add a command to make a local variables list in the current buffer + and/or add a variable to the list. + +** Implement primitive and higher-level functions to allow filling + properly with variable-pitch faces. + +** Implement a smoother vertical scroll facility, one that allows + C-v to scroll through a tall image. The primitive operations + posn-at-point and posn-at-x-y should now make it doable in elisp. + +** Implement intelligent search/replace, going beyond query-replace + (see http://graphics.csail.mit.edu/~rcm/chi04.pdf). + +** Implement other text formatting properties. +*** Footnotes that can appear either in place or at the end of the page. +*** text property that says "don't break line in middle of this". Don't break the line between two characters that have the same value of this property. -** Discretionary hyphens that are not visible when they are at end of line. +*** Discretionary hyphens that are not visible when they are at end of line. -* Implement something better than the current Refill mode. This - probably needs some primitive support. +** Make movemail work with IMAP. -* Implement a clean way to use different major modes for - different parts of a buffer. +** Internationalize Emacs's messages. -* Give start-process the ability to direct standard-error - output to a different filter. +** Add a "current vertical pixel level" value that goes with point, + so that motion commands can also move through tall images. + This value would be to point as window-vscroll is to window-start. -* Make compile.el record the markers that point to error loci - on text properties in the error message lines. +** Address internationalization of symbols names essentially + as documentation, e.g. in command names and Custom. -* Make desktop.el save the "frame configuration" of Emacs (in some - useful sense). +** Make the Lucid menu widget display multilingual text. [This + probably needs to be done from actual Emacs buffers, either directly + in the menu or by rendering in an unmapped window and copying the + pixels. The current code assumes a specific locale; that isn't good + enough even if X can render the arbitrary text] [The gtk + port now displays multilingual text in menus, but only insofar as + Emacs can encode it as utf-8 and gtk can display the result.] + Maybe making Lucid menus work like Gtk's (i.e. just force utf-8) is good + enough now that Emacs can encode most chars into utf-8. + +** Remove the limitation that window and frame widths and heights can + be only full columns/lines. + +* Other features we would like: + +** Create a category of errors called `process-error' + for some or all errors associated with using subprocesses. + +** Maybe reinterpret `parse-error' as a category of errors + and put some other errors under it. + +** A function to check for customizable options that have been + set but not saved, and ask the user whether to save them. + This could go in kill-emacs-query-functions, to remind people + to save their changes. If the user says yes, show them + in a Custom buffer using customize-customized. + +** Emacs Lisp mode could put an overlay on the defun for every + function that has advice. The overlay could have `after-text' like " + [Function has advice]". It might look like + (defun foo [Function has advice] (x y) + The overlay could also be a button that you could use to view the advice. + +** ange-ftp +*** understand sftp +*** Use MLS for ange-ftp-insert-directory if a list of files is specified. + +** Ability to map a key, including all modified-combinations. + E.g map mouse-4 to wheel-up as well as M-mouse-4 -> M-wheel-up + M-C-mouse-4 -> M-C-wheel-up, H-S-C-M-s-double-mouse-4 -> + H-S-C-M-s-double-wheel-up, ... + +** Beefed-up syntax-tables. +*** recognize multi-character syntactic entities like `begin' and `end'. +*** nested string-delimiters (for Postscript's (foo(bar)baz) strings). +*** support for infix operators (with precedence). +*** support for the $ (paired delimiter) in parse-partial-sexp. +*** support for hook-chars whose effect on the parsing-state is specified + by elisp code. Thus a char could both close a string and open a comment + at the same time and do it in a context-sensitive way. +*** ability to add mode-specific data to the partial-parse-state. + +** Add a way to convert a keyboard macro to equivalent Lisp code. + +** Have a command suggestion help system that recognizes patterns + of commands which could be replaced with a simpler common command. + It should not make more than one suggestion per 10 minutes. + +** Add a way to define input methods by computing them (when first used) + from other input methods. Then redefine C-x 8 to use a + user-selected input method, with the default being the union of + latin-1-prefix and latin-1-postfix. + +** Implement a clean way to use different major modes for + different parts of a buffer. This could be useful in editing + Bison input files, for instance, or other kinds of text + where one language is embedded in another language. + +** Give start-process the ability to direct standard-error + output to a different filter. -* Make movemail work with IMAP. +** Make desktop.el save the "frame configuration" of Emacs (in some + useful sense). -* Add ANSI C prototype forward declarations to the source files, - so that even the functions used within one file have prototypes. +** Give desktop.el a feature to switch between different named + desktops. -* Replace finder.el with something that generates an Info file +** Replace finder.el with something that generates an Info file which gives the same information through a menu structure. [Dave Love started on this.] -* Implement a variant of uncompress.el or jka-compr.el that works with - GNU Privacy Guard for encryption. [Code exists but isn't assigned.] +** Add a cpio mode, more or less like tar mode. + +** Implement a variant of uncompress.el or jka-compr.el that works with + GNU Privacy Guard for encryption. [Code exists but isn't assigned. + See the Gnus development sources for assigned code concerning GPG + use with mail, which is probably a good start.] -* Save undo information in files, and reload it when needed - for undoing. +** Save undo information in special temporary files, and reload it + when needed for undoing. This could extend undo capacity. -* Change the Windows NT menu code +** Change the Windows NT menu code so that it handles the deep_p argument and avoids regenerating the whole menu bar menu tree except when the user tries to use the menubar. This requires the RIT to forward the WM_INITMENU message to the main thread, and not return from that message until the main - thread has processed the menu_bar_activate_event and regenerated + thread has processed the MENU_BAR_ACTIVATE_EVENT and regenerated the whole menu bar. In the mean time, it should process other messages. -* Make Emacs work as a Java Bean. - -* Implement the design for Unicode-based internal encoding for Mule. - -* Document the features of libraries missing from the manual (or - ancillary manuals, including the Lisp manual in some cases). Here's - a list which is probably not complete/correct: align, allout, artist, - ansi-color, array, battery, calculator, cdl, cmuscheme, completion, - delim-col, dirtrack, double, echistory, elide-head, easymenu, - expand, flow-ctrl, format [format-alist], generic/generic-x [various - modes], kermit, log-edit, ledit [obsolete?], makesum, midnight - [other than in Kill Buffer node], mouse-copy [?], mouse-drag, - mouse-sel, net-utils, rcompile, snmp-mode [?], soundex [should be - interactive?], strokes [start from the web page], talk, thingatpt - [interactive functions?], type-break, vcursor, xscheme, zone-mode - [?], mlconvert [?], iso-cvt, iso-swed, swedish, feedmail [?], uce, - bruce, gametree, meese, page-ext, refbib, refer, scribe, sgml-mode, - spell, texinfo, underline, cmacexp, hideif, mantemp [obsolete?], - pcomplete, assoc, xml, cvs-status (should be described in PCL-CVS manual); - other progmodes, probably in separate manual. - -* Get some major packages installed: W3/url (development version needs - significant work), PSGML, Mule-UCS, Tramp (?). Check the - assignments file for other packages which might go in and have been - missed. - -* Make keymaps a first-class Lisp object (this means a rewrite of +** Get some major packages installed: W3 (development version needs + significant work), PSGML. Check the assignments file for other + packages which might go in and have been missed. + +** Make keymaps a first-class Lisp object (this means a rewrite of keymap.c). What should it do apart from being opaque ? multiple inheritance ? faster where-is ? no more fix_submap_inheritance ? what else ? -* Provide real menus on ttys. The MS-DOS implementation can serve as +** Provide real menus on ttys. The MS-DOS implementation can serve as an example how to do part of this. -* Implement popular parts of the rest of the CL functions as compiler +** Implement popular parts of the rest of the CL functions as compiler macros in cl-macs. -* Highlight rectangles (`mouse-track-rectangle-p' in XEmacs). +** Make compiler warnings about functions that might be undefined at run time + smarter, so that they know which files are required by the file being + compiled and don't warn about functions defined in them. -* Support simultaneous tty and X frames. +** Highlight rectangles (`mouse-track-rectangle-p' in XEmacs). Already in CUA, + but it's a valuable feature worth making more general. -* Implement primitive and higher-level functions to allow filling - properly with variable-pitch faces. +** Support simultaneous tty and X frames. -* Provide MIME support for Rmail using the Gnus MIME library. +** Provide MIME support for Rmail using the Gnus MIME library. [Maybe + not now feasible, given Gnus maintenance decisions. fx looked at + this and can say where some of the problems are.] -* Eliminate the storm of warnings concerning char/unsigned char +** Eliminate the storm of warnings concerning char/unsigned char mismatches that we get with proprietary compilers on various systems. They make it difficult to spot the important warnings. -* Fix anything necessary to use `long long' EMACS_INTs with GCC. +** Fix anything necessary to use `long long' EMACS_INTs with GCC. -* Split out parts of lisp.h and generate Makefile dependencies +** Split out parts of lisp.h and generate Makefile dependencies automatically. -* Update the FAQ. - -* Support dynamically-loadable primitive support using libtool and - support similarly to Guile. [Some work has been done.] +** Update the FAQ. -* Allow auto-compression-mode to use zlib calls if zlib is available. +** Allow auto-compression-mode to use zlib calls if zlib is available. [It's required for PNG, so may be linked anyhow.] -* Add a --pristine startup flag which does -q --no-site-file plus +** Add a --pristine startup flag which does -q --no-site-file plus ignoring X resources (Doze equivalents?) and most of the environment. What should not be ignored needs consideration. -* Investigate using the language environment (or locale?) to set up +** Investigate using the language environment (or locale?) to set up more things, such as the default Ispell dictionary, calendar - holidays... + holidays, quoting characters?,... -* Improve the GC (generational, incremental). (We may be able to use - the Boehm collector.) +** Improve the GC (generational, incremental). (We may be able to use + the Boehm collector.) [See the Boehm-GC branch in CVS for work on + this.] -* Implement variable aliases, i.e. a `defvaralias' analogous to the - `defalias' for functions. The implementation should not slow down - Emacs, and it shouldn't use additional memory, at least not much. +** Check what hooks would help Emacspeak -- see the defadvising in W3. -* Port Emacs to GTK+. (Relevant work has been done already.) +** Add horizontal scroll bars. -* Make the Lucid menu widget display multilingual text. +** Provide an optional feature which computes a scroll bar slider's + size and its position from lines instead of characters. -* Implement, in C, a ``focus follows mouse'' mode that selects a window - when the mouse enters it. +** Make the Custom themes support do useful things. -* Check what hooks would help Emacspeak -- see the defadvising in W3. +** Add support for SVG (Scalable Vector Graphics) rendering to + Emacs. -* Implement some variety of (non-gtk) drag-and-drop support under X. - Using libdnd might be a good start. +** Allow unknown image types to be rendered via an external program + converting them to, say, PBM (in the same way as PostScript?). -* Remove the limitation that window and frame widths and heights can - be only full columns/lines. +** Allow displaying an X window from an external program in a buffer, + e.g. to render graphics from Java applets. [gerd and/or wmperry + thought this was feasible.] -* Add horizontal scroll bars. +** Allow images (not just text) in the margin to be mouse-sensitive. + (Requires recursing through display properties). Provide some way + to simulate mouse-clicks on marginal text without a mouse. -* Integrate Vroonhof's Custom themes code and make it do useful - things. [The integration is partly done.] +** Implement Lisp functions to determine properly whether a character + is displayable (particularly needed in XFree 4, sigh). Use it to + define useful glyphs that may be displayed as images or unicodes + (with ASCIIfied fallback via latin1-disp). Examples include + box-drawing graphics in Custom buffers, W3 rules and tables, and + tree displays generally, mode-line mail indicator. [See work done + already for Emacs 22 and consult fx.] -* Provide an optional feature which computes a scroll bar slider's - size and its position from lines instead of characters. +** Do something to make rms happy with fx's dynamic loading, and use it + to implement things like auto-loaded buffer parsers and database + access in cases which need more than Lisp. + +** Extend ps-print to deal with multiple font sizes, images, and extra + encodings. + +** Provide portable undumping using mmap (per gerd design). -* Adapt the gnuserv/gnudoit features for server/emacsclient. +** Make byte-compile avoid binding an expanded defsubst's args +when the body only calls primitives. -* Remove the special treatment of binary files by DOS and Windows ports. - They should use find-file-literally and `no-conversion' instead. +** Use the XIE X extension, if available, for image display. -* Investigate using GNU Lightning or similar system for incremental - (`JIT') compilation. +** Make monochrome images display using the foreground and background + colors of the applicable faces. + +** Face remapping. + +** Add support for rendering antialiased text, probably using + XRender/Freetype. + +** Port the conservative stack marking code of Emacs' garbage collector + to more systems, so that we can completely get rid of GCPROs. -* Add a feature to Info similar to "info --apropos SUBJECT". +** Reorder defcustom's in each package so that the more important + options come first in the Customize buffers. This could be done by + either rearranging the file (since options are shown in the order + they appear in the *.el files), or by adding a few :set-after + attributes. + +** Maybe document the features of libraries missing from the manual (or + ancillary manuals, including the Lisp manual in some cases). + This is not worth doing for all of these packages and we need not + aim for completeness, but some may be worth documenting. + + Here's a list which is probably not complete/correct: align, allout, + artist, ansi-color, array, battery, calculator, cdl, cmuscheme, + completion, cua, delim-col, dirtrack, double, echistory, elide-head, + easymenu, expand, flow-ctrl, format [format-alist], + generic/generic-x [various modes], kermit, log-edit, ledit + [obsolete?], makesum, midnight [other than in Kill Buffer node], + mouse-copy [?], mouse-drag, mouse-sel, net-utils, rcompile, + snmp-mode [?], soundex [should be interactive?], strokes [start from + the web page], talk, thingatpt [interactive functions?], type-break, + vcursor, xscheme, zone-mode [?], mlconvert [?], iso-cvt, iso-swed, + swedish, feedmail [?], uce, bruce, gametree, meese, page-ext, + refbib, refer, scribe, sgml-mode, spell, texinfo, underline, + cmacexp, hideif, mantemp [obsolete?], pcomplete, assoc, xml, + cvs-status (should be described in PCL-CVS manual); other progmodes, + probably in separate manual. + +** Convert the XPM bitmaps to PPM, replace the PBMs with them and scrap + the XPMs so that the colour versions work generally. (Requires care + with the colour used for the transparent regions.) + +** Convenient access to the `values' variable. It would be nice to have an + interface that would show you the printed reps of the elements of the + list in a menu, let you select one of the values, and put it into some + other variable, without changing the value of `values'. + +** (Controlled by a flag) make open and close syntax match exactly, + i.e. `(' doesn't match `]'. + +** Specify parameter ID-FORMAT in all calls to `file-attributes' and + `directory-files-and-attributes' where attributes UID or GID are used. + Whenever possible, use value 'string. + When done, change meaning of default value from 'integer to 'string. + If value 'integer is used nowhere, remove the parameter ID-FORMAT from + the definition of `file-attributes' and `directory-files-and-attributes' + and from the calls. + +** Make language-info-alist customizable. Currently a user can customize + only the variable `current-language-environment'. + +** Improve language environment handling so that Emacs can fit + better to a users locale. Currently Emacs uses utf-8 language + environment for all utf-8 locales, thus a user in ja_JP.UTF-8 locale + are also put in utf-8 lang. env. In such a case, it is + better to use Japanese lang. env. but prefer utf-8 coding system. + +** Eliminate the current restriction on header printing by ps-print. + Currently, a header can contain only single 1-byte charset in + addition to ASCII. + +** In ps-print, provide an user friendly interface to specify fonts. + +** OpenType font support for various complex scripts (e.g. Devanagari). + As X protocal doesn't provide a way to access OpenType Layout Tables + in a OpenType font of a server side, we need a way to utilize local + fonts (perhaps by directly using the Freetype library or indirectly + via Xft library). + +** Enhance word boundary detection for such a script that doesn't use + space at word boundary (e.g. Thai). + +** Implement interface programs with major Japanese conversion server + in lib-src so that they can be used from the input method + "japanese". Currently, most Japanese users are using external + packages (e.g. tamago, anthy) or an input method via XIM. + +** Provide the toolbar on ttys. This could map a bit like tmm-menubar + for the menubar and buttons could look a bit like those used by customize. + +* Internal changes + +** Replace gmalloc.c with the modified Doug Lea code from the current + GNU libc so that the special mmapping of buffers can be removed -- + that apparently loses under Solaris, at least. [fx has mostly done + this.] + +** Rewrite make-docfile to be clean and maintainable. + +** Add an inferior-comint-minor-mode to capture the common set of operations + offered by major modes that offer an associated inferior + comint-derived mode. I.e. basically make cmuscheme.el/inf-lisp.el generic. + For use by sml-mode, python-mode, tex-mode, scheme-mode, lisp-mode, + haskell-mode, tuareg-mode, ... + +* Other known bugs: + +** a two-char comment-starter whose two chars are symbol constituents will +not be noticed if it appears within a word. + +** Fix unexelf.c to handle the .data.rel and .data.rel.local + sections made by GCC 3.4 on IRIX. + +;;; arch-tag: b0a3e40b-726a-457d-9999-ba848321b036