Correctly sorted.
[bpt/emacs.git] / etc / TODO
index 7919dd0..ac09b9d 100644 (file)
--- a/etc/TODO
+++ b/etc/TODO
@@ -1,5 +1,34 @@
                                                                 -*-text-*-
-* Program Enriched mode to read and save in RTF.
+
+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 compile.el record the markers that point to error loci
+  on text properties in the error message lines.
+
+Important features:
+
+* 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?]
+
+* Implement something better than the current Refill mode.  This
+  probably needs some primitive support.
+
+* 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.
 
 * Implement other text formatting properties.
 ** Footnotes that can appear either in place or at the end of the page.
@@ -8,8 +37,43 @@
    same value of this property.
 ** 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.
+
+* Internationalize Emacs's messages.  [Note that this is of limited
+  use until the menus can display multilingual text.  It also doesn't
+  address important issues like using the names of symbols essentially
+  as documentation, e.g. in command names and Custom.  -- fx]
+
+* 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.  Note that the relevant Xlib functions assume a specific
+  locale; that isn't good enough even if X can render the arbitrary
+  text, which it often can't as far as I can tell.  -- fx] [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.]
+
+* Remove the limitation that window and frame widths and heights can
+  be only full columns/lines.
+
+* Move fringe to be displayed between display margins and text area.
+  [KFS is looking into this].
+
+* Set fringe widths per-window/per-buffer.
+
+* Make fringe bitmaps user configurable.  Maybe add ability to add
+  additional bitmaps to the fringe from lisp.
+
+Other features we would like:
+
+* 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.
 * Give start-process the ability to direct standard-error
   output to a different filter.
 
-* Make compile.el record the markers that point to error loci
-  on text properties in the error message lines.
-
 * Make desktop.el save the "frame configuration" of Emacs (in some
   useful sense).
 
-* Make movemail work with IMAP.
-
-* 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
   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.]
+  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.
 
+* Merge the Emacs regex.c with the Glibc regex.c.
+  They split off a few years ago through negligence.
+
 * Change the Windows NT menu code
   so that it handles the deep_p argument and avoids
   regenerating the whole menu bar menu tree except
 
   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,
-  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; 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.
+  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).
+  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
   an example how to do part of this.
 * Implement popular parts of the rest of the CL functions as compiler
   macros in cl-macs.
 
-* Highlight rectangles (`mouse-track-rectangle-p' in XEmacs).
+* Highlight rectangles (`mouse-track-rectangle-p' in XEmacs).  Already in CUA,
+  but it's a valuable feature worth making more general.
 
 * Support simultaneous tty and X frames.
 
-* Implement primitive and higher-level functions to allow filling
-  properly with variable-pitch faces.
-
-* 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
   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.
+
+* Split out parts of lisp.h and generate Makefile dependencies
+  automatically.
+
+* Update the FAQ.
+
+* 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
+  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
+  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.
+
+* Implement some variety of (non-gtk) drag-and-drop support under X.
+  Using libdnd might be a good start.
+
+* 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.
+
+* Investigate using GNU Lightning or similar system for incremental
+  compilation of selected bytecode functions to subrs.  Converting CCL
+  programs to native code is probably the first thing to try, though.
+
+* Add a feature to Info similar to "info --apropos SUBJECT".
+
+* Add support for SVG (Scalable Vector Graphics) rendering to
+  Emacs.
+
+* Allow unknown image types to be rendered via an external program
+  converting them to, say, PBM (in the same way as PostScript?).
+
+* 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.]
+
+* 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.
+
+* 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.]
+
+* 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).
+
+* 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.]
+
+* Use the XIE X extension, if available, for image display.
+
+* Make monochrome images display using the foreground and background
+  colors of the applicable faces.
+
+* Add support for rendering antialiased text, probably using
+  XRender/Freetype.
+
+* Rewrite make-docfile to be clean and maintainable.
+
+* 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.
+
+* Provide a means to extract image-relative coordinates from mouse
+  clicks on images.  (Needed for W3, at least.)  Also useful for W3
+  and Gnus: allow images to scroll properly.
+
+* 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'.
+
+* Fix skip-chars-{for,back}ward to allow character classes.