]> code.delx.au - gnu-emacs/blobdiff - etc/TODO
Add lgrep + rgrep.
[gnu-emacs] / etc / TODO
index 21a7c7d8dc088e88b21727d15bfd3abdae25c1d2..d210ecb7d6d92fb8fe145dd17ceabe2e9e9738a9 100644 (file)
--- a/etc/TODO
+++ b/etc/TODO
@@ -9,30 +9,95 @@ to the FSF.
 
 * Small but important fixes needed in existing features:
 
-** Fix the kill/yank treatment of invisible text. At the moment,
+** whitespace-cleanup should work only on the region if the region is active.
+
+** Distribute a bar cursor of width > 1 evenly between the two glyphs
+   on each side of the bar (what to do at the edges?).
+
+** Make vc-checkin avoid reverting the buffer if has not changed after
+   the checkin. Comparing (md5 BUFFER) to (md5 FILE) should be enough.
+
+** buffer-offer-save should be a permanent local.
+
+** revert-buffer should eliminate overlays and the mark.
+
+** erase-buffer should perhaps disregard read-only properties of text.
+
+** 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
+  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.
+
+** In Custom buffers, put the option that turns a mode on or off first,
+  using a heuristic of some kind?
+
+** Define recompute-arg and recompute-arg-if for fix_command to use.
+  See rms message of 11 Dec 05.
+
+** Height returned by frame-parameter ... and height given to
+   make-frame does not mean the same thing.  The former includes menu and
+   tool bar lines, the latter don't.  frame-parameter should return height
+   without menu and tool bar lines.
+
+** In Emacs Info, examples of using Customize should be clickable
+   and they should create Custom buffers.
+
+** The toolbar should show keyboard equivalents in its tooltips.
+
+** Modify allout.el to use overlays, like outline.el.
+
+** M-! M-n should fetch the buffer-file-name as the default.
+
+** Redesign the load-history data structure so it can cope better
+  with evaluating definitions of the same function from different files,
+  recording which file the latest definition came from.
+
 * 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.]
+   list fonts, display a font as a sample, etc.  [fx is looking at
+  multilingual font selection for the Unicode branch of Emacs.]
+
+** Rewrite the face code to be simpler, clearer and faster.
 
 ** 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/.]
+  http://latex2rtf.sourceforge.net/.]  This task seems to be addressed
+  by http://savannah.nongnu.org/projects/emacs-rtf/, which is still in
+  very early stages.
 
 ** Implement something better than the current Refill mode.  This
   probably needs some primitive support.
 
+** Add a command to make a "Local Variables" section 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.
+  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).
@@ -44,30 +109,65 @@ to the FSF.
    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.
+
+** Install mmc@maruska.dyndns.org's no-flicker change.
 
-** 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]
+** 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.  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
+  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 `user-error' for errors which are
+typically due to pilot errors and should thus be in debug-ignored-errors.
+
+** Give Tar mode all the features of Archive mode.
+
+** 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 tell you the argument pattern of functions.
+  See `function-arity' in http://www.loveshack.ukfsn.org/emacs/fx-misc.el.
+
+** Make byte-compile warn when a doc string is too wide.
+
+** 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
-*** ignore some irrelevant errors (like IPv6 and kerberos thingies).
+   This is hard to make work because sftp doesn't print status
+   messages.
+
 *** Use MLS for ange-ftp-insert-directory if a list of files is specified.
 
 ** Ability to map a key, including all modified-combinations.
@@ -99,7 +199,13 @@ to the FSF.
 ** 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.
+  where one language is embedded in another language.  See
+  http://www.loveshack.ukfsn.org/emacs/multi-mode.el and also
+  mmm-mode, as reference for approaches took by others.
+
+** Arrange a way for an input method to return the first character
+  immediately, then replace it later.  So that C-s a with
+  input method latin-1-postfix would immediately search for an a.
 
 ** Give start-process the ability to direct standard-error
   output to a different filter.
@@ -114,17 +220,17 @@ to the FSF.
   which gives the same information through a menu structure.  [Dave
   Love started on this.]
 
+** 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.]
+  use with mail, which is probably a good start.]  See also
+  http://www.loveshack.ukfsn.org/emacs/auto-crypt.tgz.
 
 ** Save undo information in special temporary files, and reload it
   when needed for undoing.  This could extend undo capacity.
 
-** 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
@@ -150,18 +256,24 @@ to the FSF.
 ** Implement popular parts of the rest of the CL functions as compiler
   macros in cl-macs.
 
+** 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.
+
 ** 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.
+** Support simultaneous tty and X frames.  [See the multi-tty branch of Emacs
+  at http://lorentey.hu/project/emacs.]
 
 ** 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.
+  mismatches that we get with GCC 4.x and 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.
 
@@ -177,10 +289,6 @@ to the FSF.
   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.]
@@ -192,8 +300,6 @@ to the FSF.
 ** 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.
 
@@ -225,16 +331,25 @@ to the FSF.
 
 ** 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.
+
+** Optionally make the cursor a little thinner at the end of a line
+  or the end of the buffer.
+
 ** 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.
+  to more systems, so that we can completely get rid of GCPROs.  Note
+  that Boehm garbage collector provides this.
 
 ** Reorder defcustom's in each package so that the more important
   options come first in the Customize buffers.  This could be done by
@@ -292,6 +407,16 @@ to the FSF.
   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.
 
+** Enhance locale handling:  handle language, territory and charset
+  orthogonally and de-emphasize language environments.  Use the locale
+  to set up more things, such as fontsets, the default Ispell
+  dictionary, diary format, calendar holidays and display, quoting
+  characters and phrase boundaries, sentence endings, collation for
+  sorting (at least for unicodes), HTTP Accept-language, patterns for
+  directory listings and compilation messages, yes-or-no replies,
+  common menu items when the toolkit supports it ...  `locale-info'
+  needs extending for LC_COLLATE &c.  [fx started on this.]
+
 ** Eliminate the current restriction on header printing by ps-print.
   Currently, a header can contain only single 1-byte charset in
   addition to ASCII.
@@ -312,18 +437,51 @@ to the FSF.
   "japanese".  Currently, most Japanese users are using external
   packages (e.g. tamago, anthy) or an input method via XIM.
 
+** Let LEIM handle the Mode_switch key like XIM does (i.e. a toggle like C-\
+but which can also be used as a modifier).
+
+** 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.
+
+** Improve Help buffers: Change the face of previously visited links (like
+   Info, but also with regard to namespace), add a forward button to make the
+   Help buffer more browser like and gives the value of lisp expressions
+   e.g auto-mode-alist, the right face. [nickrob@snap.net.nz has a patch
+   for this for inclusion after 22.1].
+
+** Possibly make `list-holidays' eval items in the calendar-holidays variable.
+   See thread
+   <http://lists.gnu.org/archive/html/emacs-devel/2006-02/msg01034.html>.
+   [rgm@gnu.org will look at this after 22.1]
+
 * 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
+  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 generic.
-   For use by sml-mode, python-mode, tex-mode, scheme-mode, ...
+   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, ...
+
+** Make SYNC_INPUT the default.
+   All loops using immediate_quit need to be checked to ensure that
+   C-g can interrupt them, in case of an infinite loop.  Once we
+   switch to using SYNC_INPUT, we can remove the BLOCK_INPUTs in the
+   allocation functions (allocate_string etc.) without worrying about
+   data munging.
+
+* 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