* lisp/mail/rmail.el (rmail-start-mail): Record the frame from
which an Rmail command, such as 'rmail-mail' or 'rmail-reply', was
invoked.
(rmail--find-orig-rmail-frame): New function.
(rmail-mail-return): Use 'rmail--find-orig-rmail-frame' to find
the original frame, and make it the top frame on its TTY terminal.
(Bug#69738)
* src/w32.c (globals_of_w32): Move re-initialization of
Vlibrary_cache from here...
* src/emacs.c (main): ...to here, as it must be after load_pdump.
(Bug#71916)
* doc/misc/efaq.texi (Editing Windows files): Rename section from
"Editing MS-DOS files", and update the text to focus on Windows.
* doc/misc/efaq.texi (Colors on a TTY)
(Emacs does not display 8-bit characters): Mention MS-Windows before
MS-DOS.
These functions are documented in both `(elisp) Creating Strings' and
'M-x shortdoc RET string RET', so users will expect them to be available
without having to require 'subr-x'.
* lisp/emacs-lisp/subr-x.el (string-fill, string-limit, string-pad)
(string-chop-newline): Autoload.
* lisp/progmodes/grep.el (grep-read-files): Cease returning
some completion candidates unconditionally. Use
'completion-file-name-table' over 'read-file-name-internal'
because the latter uses 'completion-table-with-quoting', and
that doesn't blend well with other tables in
'completion-table-merge'.
https://lists.gnu.org/archive/html/emacs-devel/2024-06/msg01194.html
* doc/misc/efaq.texi (Not writing files to the current directory):
Backport recommendation to Emacs 27 or older.
Problem reported by David Hedlund <davidh@gnu.org>.
* etc/NEWS: Improve wording and move/mark entries.
* doc/lispref/positions.texi (List Motion): Document
'forward-sentence-function'.
* doc/lispref/functions.texi (What Is a Function): Document
'primitive-function-p' and 'cl-functionp'.
* doc/emacs/misc.texi (Saving Emacs Sessions): Improve wording and
indexing.
* doc/lispref/tips.texi (Documentation Tips): Adapt to the new
value of 'emacs-lisp-docstring-fill-column'.
* doc/emacs/fixit.texi (Spelling): Document
'flyspell-check-changes'.
* java/res/drawable/emacs_background.xml:
* java/res/drawable/emacs_foreground.xml: Transform borders and
gradient colors to better align with the original.
* etc/NEWS: Improve wording and mark entries as approriate.
* doc/emacs/buffers.texi (Kill Buffer): Document new commands.
* doc/emacs/mini.texi (Completion Options, Completion Commands):
Document new completion options and behaviors.
* configure.ac (W32_LIBS): Don't link with -lusp10 on non-Cygwin
systems.
* src/emacs.c (main): Call globals_of_w32 before the startup
directory is initialized.
* src/w32.c (maybe_load_unicows_dll): Call
load_unicows_dll_for_w32fns.
* src/w32.h: Update prototypes.
* src/w32fns.c (Fx_create_frame, w32_create_tip_frame): Do not
register the Uniscribe font driver when unavailable.
(pfnSHFileOperationW): New function pointer.
(Fsystem_move_file_to_trash): Load UNICOWS.DLL if not yet
loaded. Call SHFileOperationW through said function pointer.
(pfnShellExecuteExW): New function pointer.
(Fw32_shell_execute) [!CYGWIN]: Load UNICOWS.DLL if not yet
loaded. Call ShellExecuteExW through said function pointer.
(pfnShell_NotifyIconW): New function pointer.
(add_tray_notification, delete_tray_notification): Call
Shell_NotifyIconW through said function pointer.
(Fw32_notification_notify): Load UNICOWS.DLL.
(Fw32_notification_close): Return if Shell_NotifyIconW is
unavailable, as when UNICOWS.DLL has yet to be loaded.
(load_unicows_dll_for_w32fns): New function.
* src/w32notify.c (pfnReadDirectoryChangesW): New function
pointer.
(watch_completion, remove_watch, Fw32notify_add_watch)
(Fw32notify_rm_watch, Fw32notify_valid_p): Call
ReadDirectoryChangesW through said function pointer, and assert
its presence.
(globals_of_w32notify): Load ReadDirectoryChangesW from
KERNEL32.DLL.
* src/w32uniscribe.c (pfnScriptItemize, pfnScriptShape)
(pfnScriptPlace, pfnScriptGetGlyphABCWidth, pfnScriptFreeCache)
(pfnScriptGetCMap): New function pointers.
(uniscribe_close, uniscribe_shape, uniscribe_encode_char)
(uniscribe_check_otf_1): Call Uniscribe functions through the
same.
(syms_of_w32uniscribe_for_pdumper): Load Uniscribe library and
required functions from the same, and if unavailable, return
while leaving uniscribe_available intact. On Cygwin, simply
assign USP10.DLL functions to the said new function pointers.
To reproduce the problem:
0. emacs -Q
1. eval: (add-to-list 'major-mode-remap-alist '(c-mode . c-ts-mode))
2. C-x v L
3. in the *vc-change-log* buffer move point to the commit 20af58d3a1
4. type D
5. crash caused by diff-font-lock-syntax fontification that uses treesit
Emacs: 6f2036243f (2024-06-23, latest master)
Tree-sitter: 3da7deed (2024-06-08, version 0.22.6)
The immediate cause of the crash is that tree-sitter accessed a node's
tree, but the tree is already deleted. Commenting out the
ts_tree_delete line in treesit_ensure_parsed can "fix" the crash.
What happended, I think, is this:
1. Buffer modified, parser->need_reparse set to true,
parser->timestamp incremented.
2. A node is created from the parser, this node has the old tree but
the new timestamp (bad!).
3. Parser re-parses (treesit_ensure_parsed), new tree created, old
tree deleted.
4. Ftreesit_query_capture accessed the old node, and the old tree,
crash.
We shouldn't bump the parser timestamp when we set
parser->need_reparse to true; instead, we should bump the timestamp
when we actually reparsed and created a new tree.
* src/treesit.c (treesit_record_change): Don't bump parser timestamp.
(treesit_sync_visible_region): Don't bump parser timestamp.
(Ftreesit_parser_set_included_ranges): Don't bump parser timestamp.
(treesit_ensure_parsed): Bump parser timestamp.
(Ftreesit_query_capture): Add node check.
* doc/misc/efaq.texi (New in Emacs 29): Recommend using Emacs 29.4.
* doc/misc/efaq.texi (Security risks with Emacs): New item with a
recommendation to upgrade Emacs for improved security.