TODO 29.4 KB
Newer Older
1 2
Emacs TODO List                                                   -*-outline-*-

Glenn Morris's avatar
Glenn Morris committed
3
Copyright (C) 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008
4 5 6
  Free Software Foundation, Inc.
See the end of the file for license conditions.

Gerd Moellmann's avatar
Gerd Moellmann committed
7

8 9 10
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
Dave Love's avatar
Dave Love committed
11
it best.  Since Emacs is an FSF-copyrighted package, please be
12 13 14
prepared to sign legal papers to transfer the copyright on your work
to the FSF.

15 16 17
* Simple tasks. These don't require much emacs knowledge, they are
suitable for anyone from beginners to experts.

Dan Nicolaescu's avatar
Dan Nicolaescu committed
18 19 20 21
** make emacsclient accept -nw as a synonym to -t.

** Replace some uses of the preprocessor code in Makefile.in with the equivalent autoconf.

22 23
** Major modes should have a menu entry.  Examples of modes that do
not have one at the moment and probably should: text-mode,
Dan Nicolaescu's avatar
Dan Nicolaescu committed
24
change-log-mode, texinfo-mode, inferior-lisp-mode.
25

Dan Nicolaescu's avatar
Dan Nicolaescu committed
26
** Check if all items on the mode-line have a suitable tooltip for all modes.
27

Dan Nicolaescu's avatar
Dan Nicolaescu committed
28 29 30
** edebug and debugger-mode should have a toolbar.
It can use the same icons as gud.

31 32 33
** Check what minor modes don't use define-minor-mode and convert them
to use it.

Glenn Morris's avatar
Glenn Morris committed
34 35 36
** Convert all defvars with leading `*' in the doc-strings into defcustoms
of appropriate :type and :group.

37
* Small but important fixes needed in existing features:
38

39 40 41 42 43 44 45 46 47
** Flymake's customization mechanism needs to be both simpler (fewer
levels of indirection) and better documented, so it is easier to
understand.  I find it quite hard to figure out what compilation
command it will use.

I suggest totally rewriting that part of Flymake, using the simplest
mechanism that sufficies for the specific needs.  That will be easy
for users to customize.

Dan Nicolaescu's avatar
Dan Nicolaescu committed
48
** Make "emacs --daemon" start emacs without showing any frame. 
Dan Nicolaescu's avatar
Dan Nicolaescu committed
49 50
Use emacsclient later to open frames.

Dan Nicolaescu's avatar
Dan Nicolaescu committed
51 52
** Make it possible to reliably turn on minor modes using "mode:" in the local 
variables section.
Dan Nicolaescu's avatar
Dan Nicolaescu committed
53

Stefan Monnier's avatar
Stefan Monnier committed
54 55 56
** "Options -> Save Options" should save the font set via "Set Font/Fontset"
I.e. mouse-set-font should use customize-face.

Stefan Monnier's avatar
Stefan Monnier committed
57 58
** Compute the list of active keymaps *after* reading the first event.

Kim F. Storm's avatar
Kim F. Storm committed
59 60 61
** Distribute a bar cursor of width > 1 evenly between the two glyphs
   on each side of the bar (what to do at the edges?).

62 63
** buffer-offer-save should be a permanent local.

64
** revert-buffer should eliminate overlays and the mark.
Martin Rudalics's avatar
Martin Rudalics committed
65 66
   For related problems consult the thread starting with
   http://lists.gnu.org/archive/html/emacs-devel/2005-11/msg01346.html
67

68 69
** erase-buffer should perhaps disregard read-only properties of text.

Luc Teirlinck's avatar
Luc Teirlinck committed
70 71 72
** Make occur correctly handle matches that span more than one line,
   as well as overlapping matches.

Stefan Monnier's avatar
Stefan Monnier committed
73
** Fix the kill/yank treatment of invisible text.  At the moment,
Glenn Morris's avatar
Glenn Morris committed
74
  invisible text is placed in the kill-ring, so that the contents of
Stefan Monnier's avatar
Stefan Monnier committed
75 76
  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
Glenn Morris's avatar
Glenn Morris committed
77 78
  text-property, overlay, or selective display) from the kill-ring.

79 80 81 82
** 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.

83 84 85
** Feature to change cursor shape when Emacs is idle (for more than
  a specified time).

86 87 88
** The buttons at the top of a custom buffer should not omit
  variables whose values are currently hidden.

89 90 91 92 93
** 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>.

94 95 96 97
** Enhance scroll-bar to handle tall line (similar to line-move).

** Make occur handle multi-line matches cleanly with context.

98 99 100 101 102 103
** 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.

104 105 106 107 108
** 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.

109 110 111
** In Emacs Info, examples of using Customize should be clickable
   and they should create Custom buffers.

112 113
** The toolbar should show keyboard equivalents in its tooltips.

114 115
** Add function to redraw the tool bar.

116 117
** M-! M-n should fetch the buffer-file-name as the default.

118 119 120
** 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.
Kim F. Storm's avatar
Kim F. Storm committed
121

122 123
** make back_comment use syntax-ppss or equivalent.

Glenn Morris's avatar
Glenn Morris committed
124 125 126 127 128
** 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
Glenn Morris's avatar
Glenn Morris committed
129

130 131 132 133 134 135 136 137
** Implement `network-interface-list' and `network-interface-info'
on MS-Windows.  Hint: the information is present in the Registry,
under the keys
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Linkage\
and
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\<device>\
where <device> is the network device found under the first key.

138 139 140
** Check for any included packages that define obsolete bug-reporting commands.
Change them to use report-emacs-bug.

Nick Roberts's avatar
Nick Roberts committed
141 142
** Allow fringe indicators to display a tooltip (provide a help-echo property?)

143 144 145
** Add a defcustom that supplies a function to name numeric backup files,
like make-backup-file-name-function for non-numeric backup files.

146
* Important features:
147

148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173
** Having tabs above a window to switch buffers in it.

** "Perspectives" are named persistent window configurations.  We have
had the window configuration mechanism in GNU Emacs since the
beginning but we have never developed a good user interface to take
advantage of them.  Eclipse's user interface seems to be good.

Perspectives work well even if you do the equivalent of C-x 4 C-f
because of the distinction between view windows vs file windows.  In
Emacs this is more or less the "dedicated window" feature, but we have
never really made it work for this.

Perspectives also need to interact with the tabs.

** Imenu could be extended into a file-structure browsing mechanism
using code like that of customize-groups.

** Display something in the margin on lines that have compilation
errors.

** Compilation error navigation bar, parallel to the scroll bar,
indicating where in the buffer there are compilation errors.
Perhaps we could arrange to display these error indications on top
of the scroll bar itself.  That depends on to what extent toolkit
scroll bars are extensible.

174
** Provide user-friendly ways to list all available font families,
175 176
   list fonts, display a font as a sample, etc.  [fx is looking at
  multilingual font selection for the Unicode branch of Emacs.]
177

178 179
** Provide a convenient way to select a color with the mouse.

180
** Rewrite the face code to be simpler, clearer and faster.
181

182
** Program Enriched mode to read and save in RTF.  [Is there actually a
Dave Love's avatar
Dave Love committed
183
  decent single definition of RTF?  Maybe see info at
Eli Zaretskii's avatar
Eli Zaretskii committed
184 185 186
  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.
187

188
** Implement something better than the current Refill mode.  This
189 190
  probably needs some primitive support.

191
** Add a command to make a "Local Variables" section in the current buffer
192 193
  and/or add a variable to the list.

194
** Implement primitive and higher-level functions to allow filling
195 196
  properly with variable-pitch faces.

197
** Implement a smoother vertical scroll facility, one that allows
Stefan Monnier's avatar
Stefan Monnier committed
198 199
  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.
200

201 202 203
** Implement intelligent search/replace, going beyond query-replace
  (see http://graphics.csail.mit.edu/~rcm/chi04.pdf).

204 205 206
** 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".
207 208
   Don't break the line between two characters that have the
   same value of this property.
209
*** Discretionary hyphens that are not visible when they are at end of line.
210

211 212
** Internationalize Emacs's messages.

213 214 215
** Set up a facility to save backtraces when errors happen during
specified filters, specified timers, and specified hooks.

216 217
** Install mmc@maruska.dyndns.org's no-flicker change.

218 219 220 221
** 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.

222 223
** Address internationalization of symbols names essentially
  as documentation, e.g. in command names and Custom.
224

225
** Make the Lucid menu widget display multilingual text.  [This
Dave Love's avatar
Dave Love committed
226 227
  probably needs to be done from actual Emacs buffers, either directly
  in the menu or by rendering in an unmapped window and copying the
Stefan Monnier's avatar
Stefan Monnier committed
228 229
  pixels.  The current code assumes a specific locale; that isn't good
  enough even if X can render the arbitrary text] [The gtk
Dave Love's avatar
Dave Love committed
230 231
  port now displays multilingual text in menus, but only insofar as
  Emacs can encode it as utf-8 and gtk can display the result.]
Stefan Monnier's avatar
Stefan Monnier committed
232 233
  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.
234

235
** Remove the limitation that window and frame widths and heights can
236 237
  be only full columns/lines.

238 239
* Other features we would like:

240 241 242 243
** Make longlines-mode wrap lines based on screen position instead
   of character position, so that variable-width fonts can be handled
   properly.

Stefan Monnier's avatar
Stefan Monnier committed
244 245
** Allow frames(terminals) created by emacsclient to inherit their environment
from the emacsclient process.
Stefan Monnier's avatar
Stefan Monnier committed
246 247
** Remove the default toggling behavior of minor modes when called from elisp
rather than interactively.  This a trivial one-liner in easy-mode.el.
Chong Yidong's avatar
Chong Yidong committed
248

Stefan Monnier's avatar
Stefan Monnier committed
249 250 251
** 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.

252 253
** Give Tar mode all the features of Archive mode.

254 255 256
** Create a category of errors called `process-error'
  for some or all errors associated with using subprocesses.

257 258 259
** Maybe reinterpret `parse-error' as a category of errors
  and put some other errors under it.

260
** A function to tell you the argument pattern of functions.
Eli Zaretskii's avatar
Eli Zaretskii committed
261
  See `function-arity' in http://www.loveshack.ukfsn.org/emacs/fx-misc.el.
262 263 264

** Make byte-compile warn when a doc string is too wide.

265 266
** Make byte-optimization warnings issue accurate line numbers.

267 268 269 270 271 272
** 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.

273 274 275 276 277 278 279
** 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.

280
** Emacs Lisp mode could put an overlay on the defun for every
281 282 283 284
  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.
285

286 287
** Add a function to get the insertion-type of the markers in an overlay.

Stefan Monnier's avatar
Stefan Monnier committed
288 289
** ange-ftp
*** understand sftp
Eli Zaretskii's avatar
Eli Zaretskii committed
290 291 292
   This is hard to make work because sftp doesn't print status
   messages.

Stefan Monnier's avatar
Stefan Monnier committed
293 294
*** Use MLS for ange-ftp-insert-directory if a list of files is specified.

295 296 297 298
** 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, ...
299

300 301 302 303 304 305 306 307 308 309
** 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.

310 311
** Add a way to convert a keyboard macro to equivalent Lisp code.

312
** Have a command suggestion help system that recognizes patterns
313 314
  of commands which could be replaced with a simpler common command.
  It should not make more than one suggestion per 10 minutes.
315

316
** Add a way to define input methods by computing them (when first used)
317 318 319 320
  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.

321
** Switch the Windows port to using Unicode keyboard input (maybe).
322 323 324 325
  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,
326
  will then come in encoded in UTF-16.
327 328 329 330 331

  One advantage of switching to Unicode is to toss encoded-kbd usage,
  which will solve the problem with binding non-ASCII keys with
  modifiers.

332 333 334 335 336 337 338
  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.

339
** Implement a clean way to use different major modes for
340 341
  different parts of a buffer.  This could be useful in editing
  Bison input files, for instance, or other kinds of text
Eli Zaretskii's avatar
Eli Zaretskii committed
342 343 344
  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.
Dave Love's avatar
#  
Dave Love committed
345

346 347 348
** 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.
Dave Love's avatar
#  
Dave Love committed
349

350
** Give start-process the ability to direct standard-error
Dave Love's avatar
#  
Dave Love committed
351 352
  output to a different filter.

353
** Make desktop.el save the "frame configuration" of Emacs (in some
Dave Love's avatar
#  
Dave Love committed
354 355
  useful sense).

356
** Give desktop.el a feature to switch between different named
357 358
  desktops.

359
** Replace finder.el with something that generates an Info file
Dave Love's avatar
Dave Love committed
360 361
  which gives the same information through a menu structure.  [Dave
  Love started on this.]
Dave Love's avatar
#  
Dave Love committed
362

363 364
** Add a cpio mode, more or less like tar mode.

365
** Implement a variant of uncompress.el or jka-compr.el that works with
Dave Love's avatar
Dave Love committed
366 367
  GNU Privacy Guard for encryption.  [Code exists but isn't assigned.
  See the Gnus development sources for assigned code concerning GPG
Eli Zaretskii's avatar
Eli Zaretskii committed
368 369
  use with mail, which is probably a good start.]  See also
  http://www.loveshack.ukfsn.org/emacs/auto-crypt.tgz.
Dave Love's avatar
#  
Dave Love committed
370

371 372
** Save undo information in special temporary files, and reload it
  when needed for undoing.  This could extend undo capacity.
Dave Love's avatar
#  
Dave Love committed
373

374
** Change the Windows NT menu code
Dave Love's avatar
#  
Dave Love committed
375 376 377 378 379 380
  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
381
  thread has processed the MENU_BAR_ACTIVATE_EVENT and regenerated
Dave Love's avatar
#  
Dave Love committed
382
  the whole menu bar.  In the mean time, it should process other messages.
Gerd Moellmann's avatar
Gerd Moellmann committed
383

384
** Get some major packages installed: W3 (development version needs
Glenn Morris's avatar
Glenn Morris committed
385
  significant work), PSGML, _possibly_ Cedet and ECB.
Glenn Morris's avatar
Glenn Morris committed
386 387 388 389
  http://lists.gnu.org/archive/html/emacs-devel/2007-05/msg01493.html
  Check the assignments file for other packages which might go in and
  have been missed.

Glenn Morris's avatar
Glenn Morris committed
390 391 392 393 394 395 396 397
** Possibly install python-mode in place of python.el, or combine the two.
Someone needs to do the work of figuring out who all the non-trivial
python-mode.el contributors are and getting assignments.
http://lists.gnu.org/archive/html/emacs-devel/2008-02/msg02156.html
http://lists.gnu.org/archive/html/emacs-devel/2008-02/msg02201.html
http://lists.gnu.org/archive/html/emacs-devel/2008-02/msg02489.html
http://lists.gnu.org/archive/html/emacs-devel/2008-02/msg02234.html

398
** Make keymaps a first-class Lisp object (this means a rewrite of
Stefan Monnier's avatar
Stefan Monnier committed
399 400 401
  keymap.c).  What should it do apart from being opaque ?
  multiple inheritance ?  faster where-is ?  no more fix_submap_inheritance ?
  what else ?
Dave Love's avatar
Dave Love committed
402

403
** Provide real menus on ttys.  The MS-DOS implementation can serve as
404
  an example how to do part of this; see the XMenu* functions on msdos.c.
Dave Love's avatar
Dave Love committed
405

406
** Implement popular parts of the rest of the CL functions as compiler
Dave Love's avatar
Dave Love committed
407 408
  macros in cl-macs.

409 410 411 412
** 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.

413
** Highlight rectangles (`mouse-track-rectangle-p' in XEmacs).  Already in CUA,
Juanma Barranquero's avatar
Juanma Barranquero committed
414
  but it's a valuable feature worth making more general.
Dave Love's avatar
Dave Love committed
415

416
** Provide MIME support for Rmail using the Gnus MIME library.  [Maybe
Dave Love's avatar
Dave Love committed
417 418
  not now feasible, given Gnus maintenance decisions.  fx looked at
  this and can say where some of the problems are.]
Dave Love's avatar
Dave Love committed
419

420
** Eliminate the storm of warnings concerning char/unsigned char
Eli Zaretskii's avatar
Eli Zaretskii committed
421 422 423
  mismatches that we get with GCC 4.x and proprietary compilers on
  various systems.  They make it difficult to spot the important
  warnings.
Dave Love's avatar
Dave Love committed
424

425
** Fix anything necessary to use `long long' EMACS_INTs with GCC.
Dave Love's avatar
Dave Love committed
426

427
** Split out parts of lisp.h and generate Makefile dependencies
Dave Love's avatar
Dave Love committed
428 429
  automatically.

430
** Update the FAQ.
Dave Love's avatar
Dave Love committed
431

432
** Allow auto-compression-mode to use zlib calls if zlib is available.
Dave Love's avatar
Dave Love committed
433
  [It's required for PNG, so may be linked anyhow.]
Dave Love's avatar
Dave Love committed
434

435
** Add a --pristine startup flag which does -q --no-site-file plus
Dave Love's avatar
Dave Love committed
436 437
  ignoring X resources (Doze equivalents?) and most of the
  environment.  What should not be ignored needs consideration.
Glenn Morris's avatar
Glenn Morris committed
438
  [Do the existing -Q and -D cover this, or is more needed?]
Dave Love's avatar
Dave Love committed
439

440
** Improve the GC (generational, incremental).  (We may be able to use
Dave Love's avatar
Dave Love committed
441 442
  the Boehm collector.)  [See the Boehm-GC branch in CVS for work on
  this.]
Gerd Moellmann's avatar
Gerd Moellmann committed
443

444
** Check what hooks would help Emacspeak -- see the defadvising in W3.
Dave Love's avatar
Dave Love committed
445

446 447
** Add definitions for symbol properties, for documentation purposes.

448
** Add horizontal scroll bars.
Dave Love's avatar
Dave Love committed
449

450
** Provide an optional feature which computes a scroll bar slider's
451
  size and its position from lines instead of characters.
Dave Love's avatar
Dave Love committed
452

453
** Allow unknown image types to be rendered via an external program
Glenn Morris's avatar
Glenn Morris committed
454 455
  converting them to, say, PBM (in the same way as PostScript?). [does
  doc-view.el do this, or could it be extended to do this?]
456

457
** Allow displaying an X window from an external program in a buffer,
458 459 460
  e.g. to render graphics from Java applets.  [gerd and/or wmperry
  thought this was feasible.]

461
** Allow images (not just text) in the margin to be mouse-sensitive.
462 463 464
  (Requires recursing through display properties).  Provide some way
  to simulate mouse-clicks on marginal text without a mouse.

465
** Implement Lisp functions to determine properly whether a character
466 467 468 469 470
  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
471
  already for Emacs 23 and consult fx.]
472

473
** Do something to make rms happy with fx's dynamic loading, and use it
474 475 476
  to implement things like auto-loaded buffer parsers and database
  access in cases which need more than Lisp.

477
** Extend ps-print to deal with multiple font sizes, images, and extra
478 479
  encodings.

480
** Provide portable undumping using mmap (per gerd design).
481

482 483 484
** Make byte-compile avoid binding an expanded defsubst's args
when the body only calls primitives.

485
** Use the XIE X extension, if available, for image display.
Gerd Moellmann's avatar
Gerd Moellmann committed
486

487
** Make monochrome images display using the foreground and background
488 489
  colors of the applicable faces.

490 491
** Face remapping.

492 493
** Make `format-time-string' preserve text properties like `format'.

494 495 496
** Optionally make the cursor a little thinner at the end of a line
  or the end of the buffer.

497
** Port the conservative stack marking code of Emacs' garbage collector
Eli Zaretskii's avatar
Eli Zaretskii committed
498 499
  to more systems, so that we can completely get rid of GCPROs.  Note
  that Boehm garbage collector provides this.
500

501
** Reorder defcustom's in each package so that the more important
502 503 504 505 506
  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.

507
** Maybe document the features of libraries missing from the manual (or
508 509 510 511 512 513
  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,
Kim F. Storm's avatar
...  
Kim F. Storm committed
514
  completion, cua, delim-col, dirtrack, double, echistory, elide-head,
515 516 517 518 519 520 521 522 523 524 525 526
  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.
Juanma Barranquero's avatar
Juanma Barranquero committed
527

528
** Convert the XPM bitmaps to PPM, replace the PBMs with them and scrap
Glenn Morris's avatar
Glenn Morris committed
529 530
  the XPMs so that the color versions work generally.  (Requires care
  with the color used for the transparent regions.)
Dave Love's avatar
Dave Love committed
531

532
** Convenient access to the `values' variable.  It would be nice to have an
Juanma Barranquero's avatar
Juanma Barranquero committed
533 534 535
  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'.
Dave Love's avatar
Dave Love committed
536

537
** (Controlled by a flag) make open and close syntax match exactly,
Dave Love's avatar
Dave Love committed
538 539
  i.e. `(' doesn't match `]'.

540
** Specify parameter ID-FORMAT in all calls to `file-attributes' and
541 542 543 544 545 546 547
  `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.

Kenichi Handa's avatar
Kenichi Handa committed
548 549 550 551 552 553 554 555
** 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.
Kenichi Handa's avatar
Kenichi Handa committed
556

557 558 559 560 561 562 563 564 565 566
** 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.]

Kenichi Handa's avatar
Kenichi Handa committed
567 568 569 570 571 572 573 574 575
** 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.

** Enhance word boundary detection for such a script that doesn't use
  space at word boundary (e.g. Thai).

Kenichi Handa's avatar
Kenichi Handa committed
576 577 578 579
** 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.
Kenichi Handa's avatar
Kenichi Handa committed
580

Stefan Monnier's avatar
Stefan Monnier committed
581 582 583
** 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).

Nick Roberts's avatar
Nick Roberts committed
584 585 586 587 588 589
** 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].

Glenn Morris's avatar
Glenn Morris committed
590 591 592 593 594
** 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]

Glenn Morris's avatar
Glenn Morris committed
595 596 597 598
** 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>

Glenn Morris's avatar
Glenn Morris committed
599 600 601 602 603
** Possibly add a "close" button to the modeline.
   The idea is to add an "X" of some kind, that when clicked deletes
   the window associated with that modeline.
   http://lists.gnu.org/archive/html/emacs-devel/2007-09/msg02416.html

604 605
* Internal changes

Glenn Morris's avatar
Glenn Morris committed
606
** Cleanup all the GC_ mark bit stuff -- there is no longer any distinction
Chong Yidong's avatar
Chong Yidong committed
607 608
   since the mark bit is no longer stored in the Lisp_Object itself.

Stefan Monnier's avatar
Stefan Monnier committed
609 610 611 612
** Refine the `predicate' arg to read-file-name.
   Currently, it mixes up the predicate to apply when doing completion and the
   one to use when terminating the selection.

Stefan Monnier's avatar
Stefan Monnier committed
613 614 615 616 617 618 619 620 621 622 623 624 625
** 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.
Martin Rudalics's avatar
Martin Rudalics committed
626

627
** Replace gmalloc.c with the modified Doug Lea code from the current
Stefan Monnier's avatar
Stefan Monnier committed
628 629 630
   GNU libc so that the special mmapping of buffers can be removed --
   that apparently loses under Solaris, at least. [fx has mostly done
   this.]
631 632 633 634 635

** 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
Stefan Monnier's avatar
Stefan Monnier committed
636 637 638
   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, ...
639

640 641 642 643 644 645 646
** 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.

647 648 649 650 651
** 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.

Stefan Monnier's avatar
Stefan Monnier committed
652 653
* Other known bugs:

Stefan Monnier's avatar
Stefan Monnier committed
654
** `make-frame' forgets unhandled parameters, at least for X11 frames.
Stefan Monnier's avatar
Stefan Monnier committed
655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681
** The \\{...} keymap dump output does not correctly remove shadowed entries:
From: "Drew Adams" <drew.adams@oracle.com>

(define-key minibuffer-local-map [(control ?=)] 'foo)
(define-key minibuffer-local-completion-map [(control ?=)] 'foo)

(defun toto () "\\{minibuffer-local-completion-map}"  4)

C-h f toto shows a duplicate entry for C-=:

toto is a Lisp function.
(toto)

key             binding
- ---             -------

C-g		abort-recursive-edit
TAB		minibuffer-complete
C-j		exit-minibuffer
RET		exit-minibuffer
ESC		Prefix Command
SPC		minibuffer-complete-word
?		minibuffer-completion-help
C-=		foo
C-=		foo
...

Stefan Monnier's avatar
Stefan Monnier committed
682 683 684
** a two-char comment-starter whose two chars are symbol constituents will
not be noticed if it appears within a word.

685 686 687
** Fix unexelf.c to handle the .data.rel and .data.rel.local
   sections made by GCC 3.4 on IRIX.

688 689 690

This file is part of GNU Emacs.

691
GNU Emacs is free software: you can redistribute it and/or modify
692
it under the terms of the GNU General Public License as published by
693 694
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
695

696 697 698 699
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.
700

701
You should have received a copy of the GNU General Public License
702
along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
703

Miles Bader's avatar
Miles Bader committed
704
;;; arch-tag: b0a3e40b-726a-457d-9999-ba848321b036