- -*-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.
-* Program Enriched mode to read and save in RTF.
+* Small but important fixes needed in existing features:
-* 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.
+** 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
+ <URL:http://www.catb.org/~esr/BROWSER/browse-url.patch>.
+
+** Enhance scroll-bar to handle tall line (similar to line-move).
+
+** Make occur handle multi-line matches cleanly with context.
+
+* Important features:
-* Implement something better than the current Refill mode. This
+** 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.]
+
+** 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.
-* Implement a clean way to use different major modes for
- different parts of a buffer.
+** Add a command to make a local variables list in the current buffer
+ and/or add a variable to the list.
-* Give start-process the ability to direct standard-error
- output to a different filter.
+** Implement primitive and higher-level functions to allow filling
+ properly with variable-pitch faces.
-* Make compile.el record the markers that point to error loci
- on text properties in the error message lines.
+** 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.
-* Make desktop.el save the "frame configuration" of Emacs (in some
- useful sense).
+** Implement intelligent search/replace, going beyond query-replace
+ (see http://graphics.csail.mit.edu/~rcm/chi04.pdf).
-* Make movemail work with IMAP.
+** 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.
+
+** Make movemail work with IMAP.
+
+** Internationalize Emacs's messages.
+
+** 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.
+
+** Address internationalization of symbols names essentially
+ as documentation, e.g. in command names and Custom.
+
+** 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 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.
-* Save undo information in files, and reload it when needed
- for undoing.
+** 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.]
-* Change the Windows NT menu code
+** 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
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.
+** Update the FAQ.
-* Support dynamically-loadable primitive support using libtool and
- support similarly to Guile. [Some work has been done.]
-
-* 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 to set up more things,
- such as the default Ispell dictionary.
+** Investigate using the language environment (or locale?) to set up
+ more things, such as the default Ispell dictionary, calendar
+ holidays, quoting characters?,...
+
+** 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.]
+
+** Check what hooks would help Emacspeak -- see the defadvising in W3.
+
+** Add horizontal scroll bars.
+
+** Provide an optional feature which computes a scroll bar slider's
+ size and its position from lines instead of characters.
+
+** Make the Custom themes support do useful things.
+
+** Add support for SVG (Scalable Vector Graphics) rendering to
+ Emacs.
-* Improve the GC (generational, incremental). (We may be able to use
- the Boehm collector.)
+** Allow unknown image types to be rendered via an external program
+ converting them to, say, PBM (in the same way as PostScript?).
-* 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.
+** 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.]
-* Port Emacs to GTK+.
+** 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.
-* Make the Lucid menu widget display multilingual text.
+** 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.]
-* Implement, in C, a ``focus follows mouse'' mode that selects a window
- when the mouse enters it.
+** 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).
+
+** Make byte-compile avoid binding an expanded defsubst's args
+when the body only calls primitives.
+
+** Use the XIE X extension, if available, for image display.
+
+** 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.
+** 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