Commit e10bd9e2 authored by Paul Eggert's avatar Paul Eggert
Browse files

Merge from origin/emacs-27

44c0e074 * doc/emacs/buffers.texi (Icomplete): Mention icomplete-mi...
68b6dad1 Be more aggressive in marking objects during GC
36f508f5 ; * src/xdisp.c (find_last_unchanged_at_beg_row): Fix a typo.
cc340da1 Fix bug #41618 "(byte-compile 'foo) errors when foo is a m...
41232e67 Avoid crashes due to bidi cache being reset during redisplay
f72bb4ce * lisp/tab-bar.el (switch-to-buffer-other-tab): Normalize ...
d3e0023a ; * etc/TODO: Fix formatting.  (Bug#41497)
a8ad94cd Fix mingw.org's MinGW GCC 9 warning about 'execve'

# Conflicts:
#	lisp/tab-bar.el
#	nt/inc/ms-w32.h
#	src/alloc.c
parents 2c1e5b9e 44c0e074
......@@ -741,7 +741,14 @@ Ido''). Among other things, in Fido mode, @kbd{C-s} and @kbd{C-r} are
also used to rotate the completions list, @kbd{C-k} can be used to
delete files and kill buffers in-list. Another noteworthy aspect is
that @code{flex} is used as the default completion style
(@pxref{Completion Styles}).
(@pxref{Completion Styles}). To change this, add the following to
your initialization file (@pxref{Init File}):
@example
(defun my-icomplete-styles ()
(setq-local completion-styles '(initials flex)))
(add-hook 'icomplete-minibuffer-setup-hook 'my-icomplete-styles)
@end example
To enable Fido mode, type @kbd{M-x fido-mode}, or customize
the variable @code{fido-mode} to @code{t} (@pxref{Easy
......
......@@ -30,14 +30,15 @@ difficult to fix. Bugs with severity "minor" may be simpler, but this
is not always true.
* Speed up Elisp execution
** Speed up function calls
Change src/bytecode.c so that calls from byte-code functions to byte-code
functions don't go through Ffuncall/funcall_lambda/exec_byte_code but instead
stay within exec_byte_code.
** Improve the byte-compiler to recognize immutable (lexical) bindings
and get rid of them if they're used only once and/or they're bound to
a constant expression.
** Improve the byte-compiler to recognize immutable bindings
Recognize immutable (lexical) bindings and get rid of them if they're
used only once and/or they're bound to a constant expression.
Such things aren't present in hand-written code, but macro expansion and
defsubst can often end up generating things like
......@@ -45,7 +46,8 @@ defsubst can often end up generating things like
(let ((arg actual)) (body)) but should additionally get optimized further
when 'actual' is a constant/copyable expression.
** Add an "indirect goto" byte-code and use it for local lambda expressions.
** Add an "indirect goto" byte-code
Such a byte-code can be used for local lambda expressions.
E.g. when you have code like
(let ((foo (lambda (x) bar)))
......@@ -56,7 +58,6 @@ E.g. when you have code like
turn those 'funcalls' into jumps and their return into indirect jumps back.
** Compile efficiently local recursive functions
Similar to the previous point, we should be able to handle something like
(letrec ((loop () (blabla) (if (toto) (loop))))
......@@ -68,153 +69,175 @@ which ideally should generate the same byte-code as
* Things that were planned for Emacs-24
** concurrency: including it as an "experimental" compile-time option
sounds good. Of course there might still be big questions around "which form
of concurrency" we'll want.
** better support for dynamic embedded graphics: I like this idea (my
mpc.el code could use it for the volume widget), though I wonder if the
resulting efficiency will be sufficient.
** Spread Semantic.
** Improve the "code snippets" support: consolidate skeleton.el, tempo.el,
and expand.el (any other?) and then advertise/use/improve it.
** Improve VC: yes, there's a lot of work to be done there :-(
** Random things that cross my mind right now that I'd like to see (some of
them from my local hacks), but it's not obvious at all whether they'll
make it.
*** prog-mode could/should provide a better fill-paragraph default
that uses syntax-tables to recognize string/comment boundaries.
*** provide more completion-at-point-functions. Make existing
in-buffer completion use completion-at-point.
*** "functional" function-key-map that would make it easy to add (and
remove) mappings like "FOO-mouse-4 -> FOO-scroll-down",
"FOO-tab -> ?\FOO-\t", "uppercase -> lowercase", "[fringe KEY...] ->
[KEY]", "H-FOO -> M-FOO", "C-x C-y FOO -> H-FOO", ...
** concurrency
Including it as an "experimental" compile-time option sounds good. Of
course there might still be big questions around "which form of
concurrency" we'll want.
** better support for dynamic embedded graphics
I like this idea (my mpc.el code could use it for the volume widget),
though I wonder if the resulting efficiency will be sufficient.
** Spread Semantic
** Improve the "code snippets" support
Consolidate skeleton.el, tempo.el, and expand.el (any other?) and then
advertise/use/improve it.
** Improve VC
Yes, there's a lot of work to be done there :-(
** Random things that cross my mind right now that I'd like to see
Some of them from my local hacks, but it's not obvious at all whether
they'll make it.
*** Prog-mode could/should provide a better fill-paragraph default
That default should use syntax-tables to recognize string/comment
boundaries.
*** Provide more completion-at-point-functions
Make existing in-buffer completion use completion-at-point.
*** "Functional" function-key-map
It would make it easy to add (and remove) mappings like
"FOO-mouse-4 -> FOO-scroll-down", "FOO-tab -> ?\FOO-\t",
"uppercase -> lowercase", "[fringe KEY...] -> [KEY]",
"H-FOO -> M-FOO", "C-x C-y FOO -> H-FOO", ...
* Things related to elpa.gnu.org.
** Move idlwave to elpa.gnu.org.
** Move idlwave to elpa.gnu.org
Need to sync up the Emacs and external versions.
See <https://lists.gnu.org/r/emacs-devel/2014-07/msg00008.html>
** Move Org mode to elpa.gnu.org.
** Move Org mode to elpa.gnu.org
See <https://lists.gnu.org/r/emacs-devel/2014-08/msg00300.html>
<https://lists.gnu.org/r/emacs-devel/2014-11/msg00257.html>
** Move verilog-mode to elpa.gnu.org.
** Move verilog-mode to elpa.gnu.org
See <https://lists.gnu.org/r/emacs-devel/2015-02/msg01180.html>
** Move vhdl-mode to elpa.gnu.org.
** Move vhdl-mode to elpa.gnu.org
See <https://lists.gnu.org/r/emacs-devel/2015-02/msg01180.html>
* Simple tasks. These don't require much Emacs knowledge, they are
suitable for anyone from beginners to experts.
* Simple tasks
These don't require much Emacs knowledge, they are suitable for anyone
from beginners to experts.
** Convert modes that use view-mode to be derived from special-mode instead.
** Convert modes that use view-mode to be derived from special-mode instead
** Major modes should have a menu entry.
** Major modes should have a menu entry
** Check if all items on the mode-line have a suitable tooltip for all modes.
** Check if all items on the mode-line have a suitable tooltip for all modes
** edebug and debugger-mode should have a toolbar.
** edebug and debugger-mode should have a toolbar
It can use the same icons as gud.
** Check what minor modes don't use define-minor-mode and convert them
to use it.
** Check what minor modes don't use define-minor-mode
Convert those to use it.
** Remove unnecessary autoload cookies from defcustoms.
** Remove unnecessary autoload cookies from defcustoms
This needs a bit of care, since often people have become used to
expecting such variables to always be defined, eg when they modify
things in their .emacs.
** See if other files can use generated-autoload-file (see eg ps-print).
** See if other files can use generated-autoload-file (see eg ps-print)
** Write more tests
Pick a fixed bug from the database, write a test case to make sure it
stays fixed. Or pick your favorite programming major-mode, and write
a test for its indentation. Or a version control backend, and write a
test for its status parser. Etc. See the 'test' directory for
examples.
** Write more tests. Pick a fixed bug from the database, write a test
case to make sure it stays fixed. Or pick your favorite programming
major-mode, and write a test for its indentation. Or a version
control backend, and write a test for its status parser. Etc.
See the 'test' directory for examples.
* Small but important fixes needed in existing features
* Small but important fixes needed in existing features:
** A better display of the bar cursor
Distribute a bar cursor of width > 1 evenly between the two glyphs on
each side of the bar (what to do at the edges?).
** Distribute a bar cursor of width > 1 evenly between the two glyphs
on each side of the bar (what to do at the edges?).
** revert-buffer should eliminate overlays and the mark
For related problems consult the thread starting with
https://lists.gnu.org/r/emacs-devel/2005-11/msg01346.html
** revert-buffer should eliminate overlays and the mark.
For related problems consult the thread starting with
https://lists.gnu.org/r/emacs-devel/2005-11/msg01346.html
** erase-buffer should perhaps disregard read-only properties of text
** erase-buffer should perhaps disregard read-only properties of text.
** 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 text-property, overlay, or selective display) from the
kill-ring.
** 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
text-property, overlay, or selective display) from the kill-ring.
** Change cursor shape when Emacs is idle
When Emacs is idle for more than a specified time, change the cursor
shape to indicate the idleness.
** Feature to change cursor shape when Emacs is idle (for more than
a specified time).
** Improve buttons in the Custom buffer
The buttons at the top of a Custom buffer should not omit variables
whose values are currently hidden.
** 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.
** 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>.
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).
** Enhance scroll-bar to handle tall line (similar to line-move)
** In Custom buffers, put the option that turns a mode on or off first,
using a heuristic of some kind?
** In Custom buffers, put the option that turns a mode on or off first
This should use a heuristic of some kind?
** Define recompute-arg and recompute-arg-if for fix_command to use.
See rms message of 11 Dec 05 in
https://lists.gnu.org/r/emacs-pretest-bug/2005-12/msg00165.html,
and the rest of that discussion.
** Define recompute-arg and recompute-arg-if for fix_command to use
See rms message of 11 Dec 05 in
https://lists.gnu.org/r/emacs-pretest-bug/2005-12/msg00165.html,
and the rest of that discussion.
** In Emacs Info, examples of using Customize should be clickable
and they should create Custom buffers.
They should create Custom buffers when clicked.
** Add function to redraw the tool bar.
** Add function to redraw the tool bar
** 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.
** Redesign the load-history data structure
It should 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.
** Make back_comment use syntax-ppss or equivalent
** Consider improving src/sysdep.c's search for a fqdn.
** Consider improving src/sysdep.c's search for a fqdn
https://lists.gnu.org/r/emacs-devel/2007-04/msg00782.html
** Find a proper fix for rcirc multiline nick adding.
** Find a proper fix for rcirc multiline nick adding
https://lists.gnu.org/r/emacs-devel/2007-04/msg00684.html
** Check for any included packages that define obsolete bug-reporting commands.
** Check for any included packages that define obsolete bug-reporting commands
Change them to use report-emacs-bug.
*** Related functions:
*** Related functions (do all of them need changing?):
**** org-submit-bug-report
**** lm-report-bug
**** tramp-bug
**** c-submit-bug-report
[Do all of them need changing?]
** Allow fringe indicators to display a tooltip (provide a help-echo property?)
** Allow fringe indicators to display a tooltip
Provide a help-echo property?
** Add a defcustom that supplies a function to name numeric backup files,
like make-backup-file-name-function for non-numeric backup files.
** Add a defcustom that supplies a function to name numeric backup files
Like 'make-backup-file-name-function' for non-numeric backup files.
** 'dired-mode' should specify the semantics of 'buffer-modified-p' for
dired buffers and DTRT WRT 'auto-revert-mode'.
** 'dired-mode' should specify the semantics of 'buffer-modified-p'
Needed for dired buffers and DTRT WRT 'auto-revert-mode'.
** Check uses of prin1 for error-handling.
** Check uses of prin1 for error-handling
https://lists.gnu.org/r/emacs-devel/2008-08/msg00456.html
* Important features:
* Important features
** "Emacs as word processor"
https://lists.gnu.org/r/emacs-devel/2013-11/msg00515.html
rms writes:
rms writes:
25 years ago I hoped we would extend Emacs to do WYSIWYG word
processing. That is why we added text properties and variable
width fonts. However, more features are still needed to achieve this.
......@@ -333,13 +356,11 @@ to pass to 'hb_shape_full' the required array of features, as
mentioned in the above HarfBuzz discussion.
** Better support for displaying Emoji
Emacs is capable of displaying Emoji and some of the Emoji sequences,
provided that its fontsets are configured with a suitable font. To
make this easier out of the box, the following should be done:
*** Populate composition-function-table with Emoji rules
The Unicode Character Database (UCD) includes several data files that
define the valid Emoji sequences. These files should be imported into
the Emacs tree, and should be converted by some script at Emacs build
......@@ -347,7 +368,6 @@ time to Lisp code that populates composition-function-table with the
corresponding composition rules.
*** Augment the default fontsets with Emoji-capable fonts
The default fontsets set up by fontest.el should include known free
fonts that provide good support for displaying Emoji sequences. In
addition, the rule that the default face's font is used for symbol and
......@@ -358,7 +378,6 @@ not have to be tweaked to have Emoji display by default with a capable
font.
*** Consider changing the default display of Variation Selectors
Emacs by default displays the Variation Selector (VS) codepoints not
composed with base characters as hex codes in a box. The Unicode FAQ
says that if variation sequences cannot be supported, the VS
......@@ -369,7 +388,6 @@ could display them as a thin 1-pixel space, as we do with format
control characters, by using 'thin-space' there.
*** Special face for displaying text presentation of Emoji
Emoji-capable fonts support Emoji sequences with the U+FE0F VARIATION
SELECTOR-16 (VS16) for emoji-style display, but usually don't support
the U+FE0F VARIATION SELECTOR-15 (VS15) for text-style display. There
......@@ -387,6 +405,7 @@ Another relevant resource is the Unicode Technical Standard #51
"Unicode Emoji" (http://www.unicode.org/reports/tr51/).
** Extend text-properties and overlays
*** Several text-property planes
This would get us rid of font-lock-face property (and I'd be happy to
get rid of char-property-alias-alist as well) since font-lock would
......@@ -408,7 +427,6 @@ generally can't run Elisp code, whereas we generally can do that when
properties are added.
*** Move overlays to intervals.c
Currently overlays are implemented as (two) sorted singly linked lists (one
for overlays_before some position and one for overlay_after that
position, for some quirky definition of "before" and "after").
......@@ -450,355 +468,383 @@ One way of doing this is to start with fx's dynamic loading, and use it
to implement things like auto-loaded buffer parsers and database
access in cases which need more than Lisp.
** Fix portable dumping so that you can redump without using -batch.
** Fix portable dumping so that you can redump without using -batch
** Imenu could be extended into a file-structure browsing mechanism
using code like that of customize-groups.
This could use code like that of customize-groups.
** Display something in the margin on lines that have compilation errors.
** 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.
** Compilation error navigation bar, parallel to the scroll bar
The bar should indicate 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.
** Provide user-friendly ways to list all available font families,
list fonts, display a font as a sample, etc. [fx is looking at
multilingual font selection for the Unicode branch of Emacs.]
** Provide user-friendly ways to list all available font families
Also for listing fonts, displaying a font as a sample, etc.
** Provide a convenient way to select a color with the mouse.
** Provide a convenient way to select a color with the mouse
** Rewrite the face code to be simpler, clearer and faster.
** 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/.] This task seems to be addressed
by https://savannah.nongnu.org/projects/emacs-rtf/, which is still in
very early stages.
** 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/.
Another place to look is the Wikipedia article at
http://en.wikipedia.org/wiki/Rich_Text_Format
This task seems to be addressed by
https://savannah.nongnu.org/projects/emacs-rtf/, which is still in
very early stages.
It currently points to the latest spec of RTF v1.9.1 at
http://www.microsoft.com/en-us/download/details.aspx?id=10725
Another place to look is the Wikipedia article at
http://en.wikipedia.org/wiki/Rich_Text_Format. It currently points to
the latest spec of RTF v1.9.1 at
https://web.archive.org/web/20190708132914/http://www.kleinlercher.at/tools/Windows_Protocols/Word2007RTFSpec9.pdf
** Implement primitive and higher-level functions to allow filling
properly with variable-pitch faces.
** Better support for variable-pitch faces
Implement primitive and higher-level functions to allow filling
properly with variable-pitch faces.
** Implement intelligent search/replace, going beyond query-replace
(see http://groups.csail.mit.edu/uid/projects/clustering/chi04.pdf).
See http://groups.csail.mit.edu/uid/projects/clustering/chi04.pdf.
** Implement other text formatting properties
*** Footnotes that can appear either in place or at the end of the page
** 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".
Don't break the line between two characters that have the
same value of this property.
*** Discretionary hyphens that are not visible when they are at end of line.
*** text property that says "don't break line in middle of this"
Don't break the line between two characters that have the same value
of this property.
** Internationalize Emacs's messages.
*** Discretionary hyphens that are not visible when they are at end of line
** Set up a facility to save backtraces when errors happen during
specified filters, specified timers, and specified hooks.
** Internationalize Emacs's messages
** Install mmc@maruska.dyndns.org's no-flicker change.
** Set up a facility to save backtraces
Save backtraces when errors happen during specified filters, specified
timers, and specified hooks.
https://lists.gnu.org/archive/html/emacs-devel/2005-12/msg00699.html
** Install mmc@maruska.dyndns.org's no-flicker change
https://lists.gnu.org/archive/html/emacs-devel/2005-12/msg00699.html
I don't know if this is still relevant. I can't reach the URLs in
the above message thread and double-buffering may have solved some
of the problems.
I don't know if this is still relevant. I can't reach the URLs in
the above message thread and double-buffering may have solved some
of the problems.
** 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.
** Add a "current vertical pixel level" value
This should go 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.
** Address internationalization of symbols names
Essentially as if they were 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. 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.
** 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. 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.
** The GNUstep port needs some serious attention, ideally from someone
familiar with GNUstep and Objective C.
** The GNUstep port needs some serious attention
Ideally from someone familiar with GNUstep and Objective C.
* Other features we would like:
* Other features we would like
** A more modern printing interface. One that pops up a dialog that lets
you choose printer, page style, etc.
Integration with the Gtk print dialog is apparently difficult. See eg:
https://lists.gnu.org/r/emacs-devel/2009-03/msg00501.html
** A more modern printing interface
A UI that pops up a dialog that lets you choose printer, page style,
etc. Integration with the Gtk print dialog is apparently difficult.
See eg: https://lists.gnu.org/r/emacs-devel/2009-03/msg00501.html
https://lists.gnu.org/r/emacs-devel/2009-04/msg00034.html
** Allow frames(terminals) created by emacsclient to inherit their environment
from the emacsclient process.
They should inherit environment from the emacsclient process.
** Give Tar mode all the features of Archive mode.
** 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.
Do this 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.
Put some other errors under it.
** Make byte-compile warn when a doc string is too wide.
** Make byte-compiler warn when a doc string is too wide
** Make byte-optimization warnings issue accurate line numbers.
** Make byte-optimization warnings issue accurate line numbers
** 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.
Also, 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.
** Emacs Lisp mode could put an overlay on the defun for advised functions
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.
** 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.
*** Make 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
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, ...
** Beefed-up syntax-tables
** 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, ...
*** Recognize multi-character syntactic entities like 'begin' and 'end'
** 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.
*** Nested string-delimiters (for PostScript's (foo(bar)baz) strings)
** Add a way to convert a keyboard macro to equivalent Lisp code.
*** Support for infix operators (with precedence)
** Have a command suggestion help system that recognizes patterns
of commands which could be replaced with a simpler common command.
It should not make more than one suggestion per 10 minutes.
*** Support for the $ (paired delimiter) in parse-partial-sexp
** Add a way to define input methods by computing them (when first used)
from other input methods. Then redefine C-x 8 to use a
user-selected input method, with the default being the union of
latin-1-prefix and latin-1-postfix.
*** Support for hook-chars whose effect is specified by ELisp code
Hook-chars could have their effect on the parsing-state specified by
ELisp code. Thus a character could both close a string and open a
comment at the same time and do it in a context-sensitive way.
** 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. See
http://www.loveshack.ukfsn.org/emacs/multi-mode.el and also
mmm-mode, as reference for approaches taken by others.
*** Ability to add mode-specific data to the partial-parse-state
** 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.
** Add a way to convert a keyboard macro to equivalent Lisp code
** Give start-process the ability to direct standard-error
output to a different filter.
** Have a command suggestion help system
The idea is to recognize patterns of commands which could be replaced
with a simpler common command. It should not make more than one
suggestion per 10 minutes.
** Give desktop.el a feature to switch between different named desktops.
** Add a way to define input methods by computing them
When an input method is first used, 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.
** Add a cpio mode, more or less like tar mode.
** Implement a clean way to use several major modes in a buffer
Different parts of a buffer could use different major modes. This
could be useful in editing Bison input files, for instance, or other
kinds of text 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 taken by others.
** A more convenient use of input methods in search
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 redirect standard-error
It should be possible to redirect stderr to a different filter.
(Isn't this already possible in Emacs 27?)