Commit | Line | Data |
---|---|---|
ba1c68de | 1 | -*-outline-*- |
19cc91fb | 2 | |
2255d5b4 RS |
3 | If you are ready to start working on any of these TODO items, we |
4 | appreciate your help; please write to emacs-devel@gnu.org so we can be | |
5 | aware that the problem is being addressed, and talk with you how to do | |
7bea57c9 | 6 | it best. Since Emacs is an FSF-copyrighted package, please be |
2255d5b4 RS |
7 | prepared to sign legal papers to transfer the copyright on your work |
8 | to the FSF. | |
9 | ||
ba1c68de | 10 | * Small but important fixes needed in existing features: |
a9c1a157 | 11 | |
d3a403e5 | 12 | ** Fix the kill/yank treatment of invisible text. At the moment, |
b9e6b498 GM |
13 | invisible text is placed in the kill-ring, so that the contents of |
14 | the ring may not correspond to the text as displayed to the user. It | |
15 | ought to be possible to omit text which is invisible (due to a | |
16 | text-property, overlay, or selective display) from the kill-ring. | |
17 | ||
d9c1ce9d RS |
18 | ** Redefine define-generic-mode as a macro, so the compiler |
19 | sees the definitions it generates. | |
20 | ||
6f771c32 RS |
21 | ** Change the way define-minor-mode handles autoloading. |
22 | It should not generate :require. Or :require in defcustom | |
23 | should not be recorded in the user's custom-set-variables call. | |
24 | ||
4e07258f RS |
25 | ** The buttons at the top of a custom buffer should not omit |
26 | variables whose values are currently hidden. | |
27 | ||
ba1c68de | 28 | * Important features: |
a9c1a157 | 29 | |
ba1c68de | 30 | ** Provide user-friendly ways to list all available font families, |
bf6394a6 DL |
31 | display a font as a sample, etc. [fx is looking at multilingual |
32 | font selection for Emacs 22.] | |
5e101746 | 33 | |
ba1c68de | 34 | ** Program Enriched mode to read and save in RTF. [Is there actually a |
c51b37fd DL |
35 | decent single definition of RTF? Maybe see info at |
36 | http://latex2rtf.sourceforge.net/.] | |
6165b6e3 | 37 | |
ba1c68de | 38 | ** Implement something better than the current Refill mode. This |
a9c1a157 RS |
39 | probably needs some primitive support. |
40 | ||
ba1c68de | 41 | ** Implement primitive and higher-level functions to allow filling |
a9c1a157 RS |
42 | properly with variable-pitch faces. |
43 | ||
ba1c68de | 44 | ** Implement a smoother vertical scroll facility, one that allows |
d3a403e5 SM |
45 | C-v to scroll through a tall image. The primitive operations |
46 | posn-at-point and posn-at-x-y should now make it doable in elisp. | |
a9c1a157 | 47 | |
6ca1c497 RS |
48 | ** Implement intelligent search/replace, going beyond query-replace |
49 | (see http://graphics.csail.mit.edu/~rcm/chi04.pdf). | |
50 | ||
ba1c68de SM |
51 | ** Implement other text formatting properties. |
52 | *** Footnotes that can appear either in place or at the end of the page. | |
53 | *** text property that says "don't break line in middle of this". | |
6165b6e3 EZ |
54 | Don't break the line between two characters that have the |
55 | same value of this property. | |
ba1c68de | 56 | *** Discretionary hyphens that are not visible when they are at end of line. |
6165b6e3 | 57 | |
ba1c68de | 58 | ** Make movemail work with IMAP. |
a9c1a157 | 59 | |
ba1c68de | 60 | ** Internationalize Emacs's messages. [Note that this is of limited |
bf6394a6 DL |
61 | use until the menus can display multilingual text. It also doesn't |
62 | address important issues like using the names of symbols essentially | |
63 | as documentation, e.g. in command names and Custom. -- fx] | |
a9c1a157 | 64 | |
ba1c68de | 65 | ** Make the Lucid menu widget display multilingual text. [This |
bf6394a6 DL |
66 | probably needs to be done from actual Emacs buffers, either directly |
67 | in the menu or by rendering in an unmapped window and copying the | |
68 | pixels. Note that the relevant Xlib functions assume a specific | |
69 | locale; that isn't good enough even if X can render the arbitrary | |
7bea57c9 DL |
70 | text, which it often can't as far as I can tell. -- fx] [The gtk |
71 | port now displays multilingual text in menus, but only insofar as | |
72 | Emacs can encode it as utf-8 and gtk can display the result.] | |
a9c1a157 | 73 | |
ba1c68de | 74 | ** Remove the limitation that window and frame widths and heights can |
a9c1a157 RS |
75 | be only full columns/lines. |
76 | ||
ba1c68de SM |
77 | * Other features we would like: |
78 | ||
f95a20e7 RS |
79 | ** A function to check for customizable options that have been |
80 | set but not saved, and ask the user whether to save them. | |
81 | This could go in kill-emacs-query-functions, to remind people | |
82 | to save their changes. If the user says yes, show them | |
83 | in a Custom buffer using customize-customized. | |
84 | ||
9c9c88db SM |
85 | ** ange-ftp |
86 | *** understand sftp | |
9c9c88db SM |
87 | *** Use MLS for ange-ftp-insert-directory if a list of files is specified. |
88 | ||
ba1c68de SM |
89 | ** Ability to map a key, including all modified-combinations. |
90 | E.g map mouse-4 to wheel-up as well as M-mouse-4 -> M-wheel-up | |
91 | M-C-mouse-4 -> M-C-wheel-up, H-S-C-M-s-double-mouse-4 -> | |
92 | H-S-C-M-s-double-wheel-up, ... | |
a9c1a157 | 93 | |
ba1c68de SM |
94 | ** Beefed-up syntax-tables. |
95 | *** recognize multi-character syntactic entities like `begin' and `end'. | |
96 | *** nested string-delimiters (for Postscript's (foo(bar)baz) strings). | |
97 | *** support for infix operators (with precedence). | |
98 | *** support for the $ (paired delimiter) in parse-partial-sexp. | |
99 | *** support for hook-chars whose effect on the parsing-state is specified | |
100 | by elisp code. Thus a char could both close a string and open a comment | |
101 | at the same time and do it in a context-sensitive way. | |
102 | *** ability to add mode-specific data to the partial-parse-state. | |
103 | ||
2d1ef312 RS |
104 | ** Add a way to convert a keyboard macro to equivalent Lisp code. |
105 | ||
ba1c68de | 106 | ** Have a command suggestion help system that recognizes patterns |
a9c1a157 RS |
107 | of commands which could be replaced with a simpler common command. |
108 | It should not make more than one suggestion per 10 minutes. | |
6165b6e3 | 109 | |
ba1c68de | 110 | ** Add a way to define input methods by computing them (when first used) |
30a2aafd RS |
111 | from other input methods. Then redefine C-x 8 to use a |
112 | user-selected input method, with the default being the union of | |
113 | latin-1-prefix and latin-1-postfix. | |
114 | ||
ba1c68de | 115 | ** Implement a clean way to use different major modes for |
06382b71 RS |
116 | different parts of a buffer. This could be useful in editing |
117 | Bison input files, for instance, or other kinds of text | |
118 | where one language is embedded in another language. | |
a933dad1 | 119 | |
ba1c68de | 120 | ** Give start-process the ability to direct standard-error |
a933dad1 DL |
121 | output to a different filter. |
122 | ||
ba1c68de | 123 | ** Make desktop.el save the "frame configuration" of Emacs (in some |
a933dad1 DL |
124 | useful sense). |
125 | ||
ba1c68de | 126 | ** Give desktop.el a feature to switch between different named |
8ba148c7 RS |
127 | desktops. |
128 | ||
ba1c68de | 129 | ** Replace finder.el with something that generates an Info file |
e39fc314 DL |
130 | which gives the same information through a menu structure. [Dave |
131 | Love started on this.] | |
a933dad1 | 132 | |
ba1c68de | 133 | ** Implement a variant of uncompress.el or jka-compr.el that works with |
2794f7ab DL |
134 | GNU Privacy Guard for encryption. [Code exists but isn't assigned. |
135 | See the Gnus development sources for assigned code concerning GPG | |
136 | use with mail, which is probably a good start.] | |
a933dad1 | 137 | |
06382b71 RS |
138 | ** Save undo information in special temporary files, and reload it |
139 | when needed for undoing. This could extend undo capacity. | |
a933dad1 | 140 | |
ba1c68de | 141 | ** Change the Windows NT menu code |
a933dad1 DL |
142 | so that it handles the deep_p argument and avoids |
143 | regenerating the whole menu bar menu tree except | |
144 | when the user tries to use the menubar. | |
145 | ||
146 | This requires the RIT to forward the WM_INITMENU message to | |
147 | the main thread, and not return from that message until the main | |
0245b3ef | 148 | thread has processed the MENU_BAR_ACTIVATE_EVENT and regenerated |
a933dad1 | 149 | the whole menu bar. In the mean time, it should process other messages. |
d054101f | 150 | |
ba1c68de | 151 | ** Get some major packages installed: W3 (development version needs |
2794f7ab | 152 | significant work), PSGML. Check the assignments file for other |
a52ce7f8 | 153 | packages which might go in and have been missed. |
e39fc314 | 154 | |
ba1c68de | 155 | ** Make keymaps a first-class Lisp object (this means a rewrite of |
5dd31b13 SM |
156 | keymap.c). What should it do apart from being opaque ? |
157 | multiple inheritance ? faster where-is ? no more fix_submap_inheritance ? | |
158 | what else ? | |
e39fc314 | 159 | |
ba1c68de | 160 | ** Provide real menus on ttys. The MS-DOS implementation can serve as |
e39fc314 DL |
161 | an example how to do part of this. |
162 | ||
ba1c68de | 163 | ** Implement popular parts of the rest of the CL functions as compiler |
e39fc314 DL |
164 | macros in cl-macs. |
165 | ||
261b01c6 RS |
166 | ** Make compiler warnings about functions that might be undefined at run time |
167 | smarter, so that they know which files are required by the file being | |
168 | compiled and don't warn about functions defined in them. | |
169 | ||
ba1c68de | 170 | ** Highlight rectangles (`mouse-track-rectangle-p' in XEmacs). Already in CUA, |
a52ce7f8 | 171 | but it's a valuable feature worth making more general. |
e39fc314 | 172 | |
ba1c68de | 173 | ** Support simultaneous tty and X frames. |
e39fc314 | 174 | |
ba1c68de | 175 | ** Provide MIME support for Rmail using the Gnus MIME library. [Maybe |
bf6394a6 DL |
176 | not now feasible, given Gnus maintenance decisions. fx looked at |
177 | this and can say where some of the problems are.] | |
e39fc314 | 178 | |
ba1c68de | 179 | ** Eliminate the storm of warnings concerning char/unsigned char |
e39fc314 DL |
180 | mismatches that we get with proprietary compilers on various systems. |
181 | They make it difficult to spot the important warnings. | |
182 | ||
ba1c68de | 183 | ** Fix anything necessary to use `long long' EMACS_INTs with GCC. |
eaf67bae | 184 | |
ba1c68de | 185 | ** Split out parts of lisp.h and generate Makefile dependencies |
eaf67bae DL |
186 | automatically. |
187 | ||
ba1c68de | 188 | ** Update the FAQ. |
eaf67bae | 189 | |
ba1c68de | 190 | ** Allow auto-compression-mode to use zlib calls if zlib is available. |
b04f7626 | 191 | [It's required for PNG, so may be linked anyhow.] |
1265b539 | 192 | |
ba1c68de | 193 | ** Add a --pristine startup flag which does -q --no-site-file plus |
1265b539 DL |
194 | ignoring X resources (Doze equivalents?) and most of the |
195 | environment. What should not be ignored needs consideration. | |
196 | ||
ba1c68de | 197 | ** Investigate using the language environment (or locale?) to set up |
cf56d05f | 198 | more things, such as the default Ispell dictionary, calendar |
6147334f | 199 | holidays, quoting characters?,... |
34f70eda | 200 | |
ba1c68de | 201 | ** Improve the GC (generational, incremental). (We may be able to use |
7bea57c9 DL |
202 | the Boehm collector.) [See the Boehm-GC branch in CVS for work on |
203 | this.] | |
19cc91fb | 204 | |
ba1c68de | 205 | ** Check what hooks would help Emacspeak -- see the defadvising in W3. |
e2849090 | 206 | |
ba1c68de | 207 | ** Add horizontal scroll bars. |
00a18b59 | 208 | |
ba1c68de | 209 | ** Provide an optional feature which computes a scroll bar slider's |
e4ded23c | 210 | size and its position from lines instead of characters. |
c0460c17 | 211 | |
ba1c68de | 212 | ** Make the Custom themes support do useful things. |
3a84ed60 | 213 | |
ba1c68de | 214 | ** Add support for SVG (Scalable Vector Graphics) rendering to |
296808a5 | 215 | Emacs. |
6add099c | 216 | |
ba1c68de | 217 | ** Allow unknown image types to be rendered via an external program |
d1c3f6b6 RS |
218 | converting them to, say, PBM (in the same way as PostScript?). |
219 | ||
ba1c68de | 220 | ** Allow displaying an X window from an external program in a buffer, |
d1c3f6b6 RS |
221 | e.g. to render graphics from Java applets. [gerd and/or wmperry |
222 | thought this was feasible.] | |
223 | ||
ba1c68de | 224 | ** Allow images (not just text) in the margin to be mouse-sensitive. |
d1c3f6b6 RS |
225 | (Requires recursing through display properties). Provide some way |
226 | to simulate mouse-clicks on marginal text without a mouse. | |
227 | ||
ba1c68de | 228 | ** Implement Lisp functions to determine properly whether a character |
d1c3f6b6 RS |
229 | is displayable (particularly needed in XFree 4, sigh). Use it to |
230 | define useful glyphs that may be displayed as images or unicodes | |
231 | (with ASCIIfied fallback via latin1-disp). Examples include | |
232 | box-drawing graphics in Custom buffers, W3 rules and tables, and | |
233 | tree displays generally, mode-line mail indicator. [See work done | |
234 | already for Emacs 22 and consult fx.] | |
235 | ||
ba1c68de | 236 | ** Do something to make rms happy with fx's dynamic loading, and use it |
d1c3f6b6 RS |
237 | to implement things like auto-loaded buffer parsers and database |
238 | access in cases which need more than Lisp. | |
239 | ||
ba1c68de | 240 | ** Extend ps-print to deal with multiple font sizes, images, and extra |
d1c3f6b6 RS |
241 | encodings. |
242 | ||
ba1c68de | 243 | ** Provide portable undumping using mmap (per gerd design). |
d1c3f6b6 | 244 | |
ba1c68de | 245 | ** Use the XIE X extension, if available, for image display. |
e641b454 | 246 | |
ba1c68de | 247 | ** Make monochrome images display using the foreground and background |
51fe665a RS |
248 | colors of the applicable faces. |
249 | ||
ba1c68de | 250 | ** Add support for rendering antialiased text, probably using |
2a573e69 | 251 | XRender/Freetype. |
c5020b5b | 252 | |
ba1c68de | 253 | ** Port the conservative stack marking code of Emacs' garbage collector |
5e101746 RS |
254 | to more systems, so that we can completely get rid of GCPROs. |
255 | ||
ba1c68de | 256 | ** Reorder defcustom's in each package so that the more important |
5005a9c0 EZ |
257 | options come first in the Customize buffers. This could be done by |
258 | either rearranging the file (since options are shown in the order | |
259 | they appear in the *.el files), or by adding a few :set-after | |
260 | attributes. | |
261 | ||
ba1c68de | 262 | ** Maybe document the features of libraries missing from the manual (or |
5e101746 RS |
263 | ancillary manuals, including the Lisp manual in some cases). |
264 | This is not worth doing for all of these packages and we need not | |
265 | aim for completeness, but some may be worth documenting. | |
266 | ||
267 | Here's a list which is probably not complete/correct: align, allout, | |
268 | artist, ansi-color, array, battery, calculator, cdl, cmuscheme, | |
657c5358 | 269 | completion, cua, delim-col, dirtrack, double, echistory, elide-head, |
5e101746 RS |
270 | easymenu, expand, flow-ctrl, format [format-alist], |
271 | generic/generic-x [various modes], kermit, log-edit, ledit | |
272 | [obsolete?], makesum, midnight [other than in Kill Buffer node], | |
273 | mouse-copy [?], mouse-drag, mouse-sel, net-utils, rcompile, | |
274 | snmp-mode [?], soundex [should be interactive?], strokes [start from | |
275 | the web page], talk, thingatpt [interactive functions?], type-break, | |
276 | vcursor, xscheme, zone-mode [?], mlconvert [?], iso-cvt, iso-swed, | |
277 | swedish, feedmail [?], uce, bruce, gametree, meese, page-ext, | |
278 | refbib, refer, scribe, sgml-mode, spell, texinfo, underline, | |
279 | cmacexp, hideif, mantemp [obsolete?], pcomplete, assoc, xml, | |
280 | cvs-status (should be described in PCL-CVS manual); other progmodes, | |
281 | probably in separate manual. | |
758830ba | 282 | |
ba1c68de | 283 | ** Convert the XPM bitmaps to PPM, replace the PBMs with them and scrap |
bf6394a6 DL |
284 | the XPMs so that the colour versions work generally. (Requires care |
285 | with the colour used for the transparent regions.) | |
286 | ||
ba1c68de | 287 | ** Convenient access to the `values' variable. It would be nice to have an |
758830ba JB |
288 | interface that would show you the printed reps of the elements of the |
289 | list in a menu, let you select one of the values, and put it into some | |
290 | other variable, without changing the value of `values'. | |
bf6394a6 | 291 | |
ba1c68de | 292 | ** (Controlled by a flag) make open and close syntax match exactly, |
c51b37fd DL |
293 | i.e. `(' doesn't match `]'. |
294 | ||
ba1c68de | 295 | ** Specify parameter ID-FORMAT in all calls to `file-attributes' and |
9ac8c83b LH |
296 | `directory-files-and-attributes' where attributes UID or GID are used. |
297 | Whenever possible, use value 'string. | |
298 | When done, change meaning of default value from 'integer to 'string. | |
299 | If value 'integer is used nowhere, remove the parameter ID-FORMAT from | |
300 | the definition of `file-attributes' and `directory-files-and-attributes' | |
301 | and from the calls. | |
302 | ||
cf4c9271 KH |
303 | ** Make language-info-alist customizable. Currently a user can customize |
304 | only the variable `current-language-environment'. | |
305 | ||
306 | ** Improve language environment handling so that Emacs can fit | |
307 | better to a users locale. Currently Emacs uses utf-8 language | |
308 | environment for all utf-8 locales, thus a user in ja_JP.UTF-8 locale | |
309 | are also put in utf-8 lang. env. In such a case, it is | |
310 | better to use Japanese lang. env. but prefer utf-8 coding system. | |
1f724d55 KH |
311 | |
312 | ** Eliminate the current restriction on header printing by ps-print. | |
313 | Currently, a header can contain only single 1-byte charset in | |
314 | addition to ASCII. | |
315 | ||
316 | ** In ps-print, provide an user friendly interface to specify fonts. | |
317 | ||
318 | ** OpenType font support for various complex scripts (e.g. Devanagari). | |
319 | As X protocal doesn't provide a way to access OpenType Layout Tables | |
320 | in a OpenType font of a server side, we need a way to utilize local | |
321 | fonts (perhaps by directly using the Freetype library or indirectly | |
322 | via Xft library). | |
323 | ||
324 | ** Enhance word boundary detection for such a script that doesn't use | |
325 | space at word boundary (e.g. Thai). | |
326 | ||
cf4c9271 KH |
327 | ** Implement interface programs with major Japanese conversion server |
328 | in lib-src so that they can be used from the input method | |
329 | "japanese". Currently, most Japanese users are using external | |
330 | packages (e.g. tamago, anthy) or an input method via XIM. | |
1f724d55 | 331 | |
d87fbfb0 NR |
332 | ** Provide the toolbar on ttys. This could map a bit like tmm-menubar |
333 | for the menubar and buttons could look a bit like those used by customize. | |
334 | ||
ba1c68de SM |
335 | * Internal changes |
336 | ||
337 | ** Replace gmalloc.c with the modified Doug Lea code from the current | |
338 | GNU libc so that the special mmapping of buffers can be removed -- | |
339 | that apparently loses under Solaris, at least. [fx has mostly done | |
340 | this.] | |
341 | ||
342 | ** Rewrite make-docfile to be clean and maintainable. | |
343 | ||
344 | ** Add an inferior-comint-minor-mode to capture the common set of operations | |
345 | offered by major modes that offer an associated inferior | |
d3a403e5 SM |
346 | comint-derived mode. I.e. basically make cmuscheme.el/inf-lisp.el generic. |
347 | For use by sml-mode, python-mode, tex-mode, scheme-mode, lisp-mode, | |
348 | haskell-mode, tuareg-mode, ... | |
ba1c68de | 349 | |
ab5796a9 | 350 | ;;; arch-tag: b0a3e40b-726a-457d-9999-ba848321b036 |