- -*-outline-*-
+Emacs TODO List -*-outline-*-
+
+Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
+ Free Software Foundation, Inc.
+See the end of the file for license conditions.
+
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
* Small but important fixes needed in existing features:
+** Fix compilation when Xaw3d libraries are present but libxaw is not.
+In new X11 versions, xaw3dg-dev does not depend on libxaw-dev, so the
+latter need not be installed. As a result, all the source files that
+look for include files in X11/Xaw should look in X11/Xaw3d if we are
+using Xaw3d.
+
+** Compute the list of active keymaps *after* reading the first event.
+
+** mouse-autoselect-window should wait to select the window until
+the mouse is put to rest or after a delay or both, so that moving over
+a window doesn't select it.
+
+** In C-x d, the default if you type RET should be the directory name,
+but if you type M-n you should get the visited file name of the
+current buffer.
+
+** describe-face should show an example of text in the face.
+
+** 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.
+
+** Feature to change cursor shape when Emacs is idle (for more than
+ a specified time).
+
+** 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.
+
+** Add function to redraw the tool bar.
+
+** 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.
+
+** make back_comment use syntax-ppss or equivalent.
+
+** Improve configure's treatment of NON_GNU_CPP on Solaris.
+(patch available for after Emacs 22)
+
+** Consider improving src/sysdep.c's search for a fqdn.
+http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00782.html
+
+** Find a proper fix for rcirc multiline nick adding.
+http://lists.gnu.org/archive/html/emacs-devel/2007-04/msg00684.html
+
* 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.]
+
+** Provide a convenient way to select a color with the mouse.
+
+** 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.
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.
+
+** Set up a facility to save backtraces when errors happen during
+specified filters, specified timers, and specified hooks.
+
+** 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:
+** Remove the default toggling behavior of minor modes when called from elisp
+rather than interactively. This a trivial one-liner in easy-mode.el.
+** 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.
+
+** Make byte-optimization warnings issue accurate line numbers.
+
+** 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.
+
+** Record the sxhash of the default value for customized variables
+ and notify the user (maybe by adding a menu item or toolbar button,
+ as the detection can occur during autoload time) when the default
+ changes (meaning that new versions of the Lisp source with a changed
+ default value got installed) and offer ediff on the respective
+ customization buffers.
+
+** 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.
+
+** Add a function to get the insertion-type of the markers in an overlay.
+
** ange-ftp
*** understand sftp
+ 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.
user-selected input method, with the default being the union of
latin-1-prefix and latin-1-postfix.
+** Switch the Windows port to using Unicode keyboard input (maybe).
+ Based on http://msdn2.microsoft.com/en-us/library/ms633586.aspx,
+ this boils down to (1) calling RegisterClassW function to register
+ Emacs windows, and (2) modifying ALL system messages to use Unicode.
+ In particular, WM_CHAR messages, which result from keyboard input,
+ will then come in encoded in UTF-16.
+
+ One advantage of switching to Unicode is to toss encoded-kbd usage,
+ which will solve the problem with binding non-ASCII keys with
+ modifiers.
+
+ Problem: using this on Windows 9x/ME requires installing the
+ Microsoft Layer for Unicode (MSLU), which might not implement all
+ the required functionality that is available built-in on Windows XP
+ and later. We should not make this change if it would pressure
+ users of unauthorized copies of older versions of Windows to
+ downgrade to versions that require activation.
+
** 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.
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.
what else ?
** Provide real menus on ttys. The MS-DOS implementation can serve as
- an example how to do part of this.
+ an example how to do part of this; see the XMenu* functions on msdos.c.
** Implement popular parts of the rest of the CL functions as compiler
macros in cl-macs.
** 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.
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.
+** Add definitions for symbol properties, for documentation purposes.
+
** 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.
** Allow unknown image types to be rendered via an external program
converting them to, say, PBM (in the same way as PostScript?).
+** Display images with alpha channels, such as png, with the current
+background color of whatever frame it is displayed in. Currently, we
+use the default background color if specified in the png file, or, if
+that is unspecified, the background color of the frame in which the
+image was first created. Ideally, the image should display the
+background color of whichever frame it is being displayed in. The
+main complication is that this will require the loading of a new image
+object for each different background color.
+
** 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.]
** 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.
+
+** Make `format-time-string' preserve text properties like `format'.
+
+** 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
the definition of `file-attributes' and `directory-files-and-attributes'
and from the calls.
+** Modify the emulation of `stat' for MS-Windows to support large files.
+ The current version uses the stock Windows definition of `struct
+ stat', where the file's size is returned as a 32-bit integer. That
+ overflows for files larger than 4GB. To fix, modify `stat' to use
+ 64-bit size, and use a declaration of `struct stat' that supports
+ such sizes.
+
** Make language-info-alist customizable. Currently a user can customize
only the variable `current-language-environment'.
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.
"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).
+
+** 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]
+
+** Possibly make cal-dst use the system timezone database directly.
+ See thread
+ <http://lists.gnu.org/archive/html/emacs-pretest-bug/2006-11/msg00060.html>
+
* Internal changes
+** Cleanup all the GC_ mark bit stuff -- there is no longer any distinction
+ since the mark bit is no longer stored in the Lisp_Object itself.
+
+** Merge ibuffer.el and buff-menu.el.
+ More specifically do what's needed to make ibuffer.el the default,
+ or just an extension of buff-menu.el.
+
+** Use pcomplete by default in shell-mode.
+ This means to make it behave (by default) more like the current code.
+ Use it also for read-shell-command, M-x compile, ...
+
+** Merge sendmail.el and messages.el.
+ Probably not a complete merge, but at least arrange for messages.el to be
+ a derived mode of sendmail.el. Or arrange for messages.el to be split
+ into a small core and "the rest" so that we use less resources as long as
+ we stick to the features provided in sendmail.el.
+
** 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.]
+ 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.
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.
+
+** Add "link" button class
+ Add a standard button-class named "link", and make all other link-like
+ button classes inherit from it. Set the default face of the "link" button
+ class to the standard "link" face.
+
+* 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.
+
+\f
+This file is part of GNU Emacs.
+
+GNU Emacs is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 3, or (at your option)
+any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+Boston, MA 02110-1301, USA.
+
;;; arch-tag: b0a3e40b-726a-457d-9999-ba848321b036