[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
feature/android deb8b933bce: Merge remote-tracking branch 'origin/master
|
From: |
Po Lu |
|
Subject: |
feature/android deb8b933bce: Merge remote-tracking branch 'origin/master' into feature/android |
|
Date: |
Mon, 31 Jul 2023 20:32:09 -0400 (EDT) |
branch: feature/android
commit deb8b933bce29f99c90f5f305d0d1b75c6d27527
Merge: bd5532e0db5 bfb7c58ac5c
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>
Merge remote-tracking branch 'origin/master' into feature/android
---
ChangeLog.4 | 731 ++++++++++++++++++++++++++++++++++-
admin/make-tarball.txt | 7 +
admin/upload-manuals | 13 +-
doc/lispref/commands.texi | 4 +-
doc/lispref/minibuf.texi | 40 +-
doc/lispref/text.texi | 19 +-
doc/misc/org.org | 9 +-
etc/AUTHORS | 49 +--
etc/HISTORY | 4 +-
etc/NEWS | 9 +
etc/refcards/orgcard.tex | 2 +-
lisp/bookmark.el | 6 +-
lisp/cus-face.el | 2 +-
lisp/language/vietnamese.el | 32 +-
lisp/net/tramp-adb.el | 4 +-
lisp/net/tramp-sh.el | 193 +++++----
lisp/net/tramp-smb.el | 2 +-
lisp/net/tramp-sudoedit.el | 6 +-
lisp/net/tramp.el | 14 +-
lisp/org/ob-C.el | 2 +-
lisp/org/ob-tangle.el | 5 +-
lisp/org/org-element.el | 3 +-
lisp/org/org-faces.el | 2 +-
lisp/org/org-fold-core.el | 58 +--
lisp/org/org-mouse.el | 2 +-
lisp/org/org-version.el | 4 +-
lisp/org/org.el | 19 +-
lisp/org/ox-texinfo.el | 3 -
lisp/progmodes/c-ts-mode.el | 4 +-
lisp/progmodes/cmake-ts-mode.el | 52 ++-
lisp/progmodes/js.el | 61 ++-
lisp/progmodes/typescript-ts-mode.el | 80 ++--
lisp/subr.el | 8 +-
lisp/textmodes/paragraphs.el | 1 -
src/character.c | 36 +-
src/cmds.c | 3 +-
src/nsfns.m | 6 +-
src/sound.c | 2 +
src/xfns.c | 11 +
39 files changed, 1220 insertions(+), 288 deletions(-)
diff --git a/ChangeLog.4 b/ChangeLog.4
index b8efa20cdf9..9d64446d68e 100644
--- a/ChangeLog.4
+++ b/ChangeLog.4
@@ -1,3 +1,732 @@
+2023-07-30 Eli Zaretskii <eliz@maintain0p.gnu.org>
+
+ * Version 29.1 released.
+
+2023-07-29 Vincenzo Pupillo <v.pupillo@gmail.com>
+
+ Update CMake support due to upstream changes (bug#64922)
+
+ A recent change in tree-sitter-cmake grammar support for CMake (commit
+ fe9b5e0), now put arguments are wrapped in a new argument_list node.
+ To support the old and new version of the grammar, a new function was
+ added on which string syntax highlighting now depends.
+
+ * lisp/progmodes/cmake-ts-mode.el
+ (cmake-ts-mode--font-lock-compatibility-fe9b5e0): Indent helper
+ function to handle different tree-sitter-cmake version.
+ * lisp/progmodes/cmake-ts-mode.el
+ (cmake-ts-mode--font-lock-settings): Use the new function to handle
+ the new argument_list node.
+
+2023-07-24 Theodor Thornhill <theo@thornhill.no>
+
+ Remove nullptr named node from c++-ts-mode (bug#64818)
+
+ The nullptr node was changed from a named node to an unnamed node
+ upstream[0], which caused font locking to break. As this is a small
+ enough regression, no compat code is required.
+
+ * lisp/progmodes/c-ts-mode.el (c-ts-mode--font-lock-settings): Remove
+ node no longer in use.
+
+ [0]:
+
https://github.com/tree-sitter/tree-sitter-c/commit/c75868f8b508ae32a0c8490da91bb31b2b96430e
+
+2023-07-24 Theodor Thornhill <theo@thornhill.no>
+
+ Make compat check also check typescript
+
+ * lisp/progmodes/typescript-ts-mode.el
+ (tsx-ts-mode--font-lock-compatibility-bb1f97b):
+ Add argument so that we run the 'treesit-query-capture' when the
+ language is 'typescript', not only 'tsx'.
+
+ * lisp/progmodes/typescript-ts-mode.el
+ (typescript-ts-mode--font-lock-settings): Use supplied argument.
+
+2023-07-23 Eli Zaretskii <eliz@gnu.org>
+
+ Bump Emacs version
+
+ * README:
+ * configure.ac:
+ * nt/README.W32:
+ * msdos/sed2v2.inp: Bump Emacs version to 29.1.
+
+2023-07-23 Eli Zaretskii <eliz@gnu.org>
+
+ Update AUTHORS and ChangeLog.4
+
+ * ChangeLog.4:
+ * etc/AUTHORS: Update for Emacs 29.1 release.
+
+2023-07-22 Vincenzo Pupillo <v.pupillo@gmail.com>
+
+ Update JSX support due to upstream changes (bug#64647)
+
+ A recent change in tree-sitter-javascript grammar support for
+ JSX (commit bb1f97b), changed two things:
+ 1. renamed nested_identifier to member_expression
+ 2. removed jsx_fragment, jsx_text is used instead
+
+ * lisp/progmodes/js.el (js-jsx--treesit-indent-compatibility-bb1f97b):
+ Indent helper function to handle different tree-sitter-javascript
+ version.
+ * lisp/progmodes/js.el (js--treesit-indent-rules): Use the new
+ function to handle both jsx_fragment and jsx_text.
+ * lisp/progmodes/js.el
(js-jsx--treesit-font-lock-compatibility-bb1f97b):
+ Font lock helper function for handle different tree-sitter-javascript
+ version.
+ * lisp/progmodes/js.el (js--treesit-font-lock-settings): Use the new
+ function to handle both nested_identifier and member_expression.
+
+2023-07-22 Vincenzo Pupillo <v.pupillo@gmail.com>
+
+ Update TSX support due to upstream changes (bug#64647)
+
+ A recent change in tree-sitter-typescript grammar support for
+ TSX (commit b893426), changed two things:
+ 1. renamed nested_identifier to member_expression
+ 2. removed jsx_fragment, jsx_text is used instead
+
+ * lisp/progmodes/typescript-ts-mode.el
+ (tsx-ts-mode--indent-compatibility-b893426): Indent helper function
+ to handle different tree-sitter-typescript version.
+ * lisp/progmodes/typescript-ts-mode.el
+ (typescript-ts-mode--indent-rules): use the new function to handle
+ both jsx_fragment and jsx_text.
+ * lisp/progmodes/typescript-ts-mode.el
+ (tsx-ts-mode--font-lock-compatibility-bb1f97b): Font lock helper
+ function for handle different tree-sitter-typescript version.
+ * lisp/progmodes/typescript-ts-mode.el
+ (typescript-ts-mode--font-lock-settings): Use the new function to
+ handle both nested_identifier and member_expression.
+
+2023-07-21 Philipp Stephani <phst@google.com>
+
+ Unbreak build with CHECK_STRUCTS.
+
+ The hash for the Lisp_Overlay structure has changed due to the
(comment-only)
+ commit 7ac947f34c745c61f8acc1fe2452a2c720d57a0d.
+
+ * src/pdumper.c (dump_overlay): Update struct hash.
+
+2023-07-21 Mattias Engdegård <mattiase@acm.org>
+
+ Revert "Improve commentary in nsfns.m"
+
+ This reverts commit 3af27a4b815906c2ee38cbaf3a765289b3df061a,
+ because it missed the point completely.
+ Please talk to the original author next time.
+
+2023-07-20 Eli Zaretskii <eliz@gnu.org>
+
+ Fix NetBSD build --with-sound
+
+ * src/sound.c (alsa_write): Use ESTRPIPE only if defined.
+ (Bug#64698)
+
+2023-07-20 Mauro Aranda <maurooaranda@gmail.com>
+
+ Fix typo in pre-filter for underline property
+
+ * lisp/cus-face.el (custom-face-attributes): Fix typo (Bug#64347)
+
+2023-07-20 Po Lu <luangruo@yahoo.com>
+
+ Improve commentary in nsfns.m
+
+ * src/nsfns.m (lispString): Avoid C++ comment and make the
+ commentary actually relevant to the reason `make_string' is
+ used.
+
+2023-07-20 Po Lu <luangruo@yahoo.com>
+
+ Fix typos and ommissions in cus-edit.el
+
+ * lisp/cus-edit.el (custom-display): Add missing display types.
+
+2023-07-18 Mattias Engdegård <mattiase@acm.org>
+
+ Convert NUL-containing NSString objects to Lisp strings correctly
+
+ This cures the inability to paste text containing NUL from other
+ applications on macOS, introduced by mistake in 7e3c2b553f
+ (bug#64697).
+
+ * src/nsfns.m ([NSString lispString]): Use make_string instead of
+ build_string which relies on NUL-termination.
+
+2023-07-15 Spencer Baugh <sbaugh@catern.com>
+
+ Ignore quit while getting interprogram paste in kill-new
+
+ On X, if the current selection owner is not responding to selection
+ requests, the user may want to take ownership of the selection. The
+ obvious way to do this is to kill some text (which a user might also
+ be doing just as part of normal editing at the time the selection
+ owner becomes nonresponsive). However, if
+ save-interprogram-paste-before-kill is non-nil, then killing text will
+ hang until the user quits, and this quit will abort the entire
+ kill-new, preventing the user from taking ownership of the selection.
+
+ Now instead if the user quits while we are attempting to retrieve the
+ selection from hanging owner, we will proceed to take ownership of the
+ selection as normal, resolving the problem.
+
+ (One example of a selction owner that might not be responding to
+ selection requests is another instance of Emacs itself; while Emacs is
+ blocked in call-process or Lisp execution, it currently does not
+ respond to selection requests.)
+
+ * lisp/simple.el (kill-new): Ignore quit while getting interprogram
+ paste (bug#64423)
+
+2023-07-15 Wang Diancheng <dianchengwang@gmail.com> (tiny change)
+
+ * lisp/progmodes/gdb-mi.el: Fix interactive invocation of 'gud-go'.
+
+ Bug#64590.
+
+2023-07-15 Valtteri Vuorikoski <vuori@notcom.org> (tiny change)
+
+ Fix NetBSD build with and without ncurses
+
+ * configure.ac (netbsd): Don't set TERMINFO=no unless the termcap
+ library is either -ltermcap or -lcurses. This prevents aborts
+ because on recent versions of NetBSD libtermcap is actually a
+ symlink to libterminfo. (Bug#64577)
+
+2023-07-14 YugaEgo <yet@ego.team>
+
+ Improve documentation of 'enable-local-variables' in Emacs manual
+
+ * doc/emacs/custom.texi (Safe File Variables): Document ':all'.
+ (Bug#64621)
+
+2023-07-13 Jim Porter <jporterbugs@gmail.com>
+
+ Add documentation about remote access in Eshell
+
+ Do not merge to master. This is a backport of 438921161ac.
+
+ * doc/misc/eshell.texi
+ (Invocation): Mention the '*' prefix.
+ (Remote Access): New section...
+ (Commands): ... link to it.
+
+2023-07-13 Jim Porter <jporterbugs@gmail.com>
+
+ Document some missing Eshell commands
+
+ Do not merge to master. This is a backport of f7a899d7ca0.
+
+ * doc/misc/eshell.texi (Built-ins): Document 'eshell-debug'.
+ (Extra built-in commands): Document 'count', 'ff', and 'gf'.
+
+2023-07-13 Jim Porter <jporterbugs@gmail.com>
+
+ Document optional Eshell modules
+
+ Do not merge to master. This is a backport of 77f13edab0f.
+
+ * doc/misc/eshell.texi (Built-ins): Move disabled-by-default commands
+ to...
+ (Tramp extensions, Extra built-in commands): ...here
+ (Optional modules, Key rebinding, Smart scrolling): Add documentation.
+ (Bug and ideas): Documentation is no longer incomplete!
+
+2023-07-13 Jim Porter <jporterbugs@gmail.com>
+
+ Correct the Eshell documentation about how to write new modules
+
+ * doc/misc/eshell.texi (Writing a module): Fix the documentation.
+ 'eshell-defgroup' doesn't exist anymore.
+
+ Do not merge to master. This is a backport of 77f13edab0f.
+
+2023-07-13 Jim Porter <jporterbugs@gmail.com>
+
+ Restructure Eshell extension modules documentation
+
+ This adds a section for documenting all the optional modules.
+
+ Do not merge to master. This is a backport of f2981a1681d.
+
+ * doc/misc/eshell.texi (Extension modules): Move explanation about
+ writing modules to...
+ (Writing a module): ... here.
+ (Module testing): Remove. Testing an Eshell module doesn't require
+ any special documentation.
+ (Key binding, Smart scrolling, Electric forward slash): Move under...
+ (Optional modules): ... here.
+ (Directory handling, Terminal emulation): Remove. These modules are
+ enabled by default, and so are documented above.
+ (Tramp extensions, Extra built-in commands): New sections.
+
+2023-07-13 Jens Schmidt <jschmidt4gnu@vodafonemail.de>
+
+ Replace duplicate text from epa.texi by a reference
+
+ * doc/misc/auth.texi (GnuPG and EasyPG Assistant Configuration):
+ Replace duplicate text from epa.texi by a reference to
+ that. (Bug#64154)
+
+2023-07-13 Jens Schmidt <jschmidt4gnu@vodafonemail.de>
+
+ Add basic usage information and fix references
+
+ * doc/misc/epa.texi (Top): Add menu entry for new node GnuPG Pinentry.
+ (Quick Start): Add information on and reference to basic GnuPG
+ configuration.
+ (Encrypting/decrypting gpg files): Add usage information.
+ (GnuPG version compatibility): Update version information.
+ (GnuPG Pinentry): Add new node.
+ (Caching Passphrases): Describe mandatory gpg-agent usage for GnuPG
+ 2.0 and later.
+ (Overview, Encrypting/decrypting gpg files, GnuPG version compatibility)
+ (Caching Passphrases, Bug Reports): Fix references, terminology,
+ mark-up, and index entries. (Bug#64154)
+
+2023-07-13 Jens Schmidt <jschmidt4gnu@vodafonemail.de>
+
+ Add concept index, title-case structure titles
+
+ * doc/misc/epa.texi (Top, Overview, Commands, Key management)
+ (Cryptographic operations on regions, Cryptographic operations on files)
+ (Dired integration, Mail-mode integration)
+ (Encrypting/decrypting gpg files, Querying a key server)
+ (GnuPG version compatibility, Caching Passphrases)
+ (GNU Free Documentation License): Add concept index, title-case
+ structure titles. (Bug#64154)
+
+2023-07-10 Eli Zaretskii <eliz@gnu.org>
+
+ Fix show-paren-mode when the parentheses is partially visible
+
+ * lisp/paren.el (show-paren-function): Support the case where the
+ open paren is partially visible, but enough so to not consider it
+ "off-screen". (Bug#64547)
+
+2023-07-08 Gregory Heytings <gregory@heytings.org>
+
+ Merge branch 'scratch/bug64391' into emacs-29
+
+2023-07-08 Michael Albinus <michael.albinus@gmx.de>
+
+ * lisp/net/tramp.el (tramp-get-buffer-string): Stabilize.
+
+2023-07-08 Michael Albinus <michael.albinus@gmx.de>
+
+ Fix stale cache in Tramp (don't merge)
+
+ * lisp/net/tramp-sh.el (tramp-do-copy-or-rename-file-directly):
+ Flush cache in time.
+
+2023-07-07 Mattias Engdegård <mattiase@acm.org>
+
+ Mark failing icalendar test as unstable (bug#56241)
+
+ * test/lisp/calendar/icalendar-tests.el
+ (icalendar-export-bug-56241-dotted-pair):
+ This test started failing early July 2023 in multiple branches at
+ once without any change to the code and is likely sensitive to the
+ current date. Tag it to keep it quiet for now.
+
+2023-07-06 Gregory Heytings <gregory@heytings.org>
+
+ Simplify after adding internal function to enter a labeled restriction
+
+ * src/editfns.c: (Finternal__labeled_narrow_to_region): Merge the
+ code of Finternal__label_restriction into this function.
+ (Finternal__label_restriction): Remove this function.
+ (syms_of_editfns): Remove the 'outermost-restriction' buffer local
+ variable, which is not used anymore, and the symbol of
+ 'internal--label-restriction'.
+ (Fwiden): Remove the call to reset the 'outermost-restriction'
+ buffer local variable.
+
+2023-07-06 Gregory Heytings <gregory@heytings.org>
+
+ Add internal function to enter a labeled restriction
+
+ * src/editfns.c (Finternal__labeled_narrow_to_region): New
+ function. A specific function is necessary to avoid unnecessary
+ slowdowns when 'narrow-to-region'/'widen' are called in a loop.
+ (Fnarrow_to_region): Remove the call to Fset, which has been moved
+ into Finternal__labeled_narrow_to_region.
+ (labeled_narrow_to_region): Use the new function.
+ (syms_of_editfns): Add the symbol of the new function.
+
+ * lisp/subr.el (internal--with-restriction): Use the new function.
+
+2023-07-04 Robert Pluim <rpluim@gmail.com>
+
+ Improve natnump shortdoc
+
+ * lisp/emacs-lisp/shortdoc.el (number): Make it clear that zero
+ satisfies 'natnump'. Move 'natnump' next to 'cl-plusp' to highlight
+ the difference between them.
+
+2023-07-04 Robert Pluim <rpluim@gmail.com>
+
+ correct info documentation of benchmark-call
+
+ * doc/lispref/debugging.texi (Profiling): 'benchmark-call' is a defun,
+ not a macro.
+
+2023-07-03 Juri Linkov <juri@linkov.net>
+
+ * lisp/progmodes/grep.el (rgrep): Fix docstring.
+
+ Instead of the incorrect key `M-c' produce the right key
+ with \\<read-regexp-map>\\[read-regexp-toggle-case-fold].
+
+2023-07-03 Spencer Baugh <sbaugh@catern.com>
+
+ Include a help-echo for flymake's modeline counters
+
+ This helps clarify what each of these numbers mean. This is inspired
+ by 'compilation-mode-line-errors' which does the same.
+ * lisp/progmodes/flymake.el (flymake--mode-line-counter): Add
+ help-echo to mode line properties. (Bug#64424)
+
+2023-07-02 Eli Zaretskii <eliz@gnu.org>
+
+ Avoid errors in completion due to 'completion-regexp-list'
+
+ * doc/lispref/minibuf.texi (Basic Completion):
+ * src/minibuf.c (syms_of_minibuf) <completion-regexp-list>:
+ Document that global non-nil settings of 'completion-regexp-list'
+ are not safe.
+
+ * lisp/minibuffer.el (completion-pcm--merge-completions): Avoid
+ errors in 'try-completion' when PREFIX is nil. (Bug#64351)
+
+2023-07-01 Alan Mackenzie <acm@muc.de>
+
+ C Mode: Don't fontify foo globally as type due to "struct foo"
+
+ This fixes bug#64322.
+
+ * lisp/progmodes/cc-langs.el (c-typeless-decl-kwds): Make the
+ entry for c-mode nil.
+
+2023-07-01 Mattias Engdegård <mattiase@acm.org>
+
+ * lisp/rect.el (rectangle--duplicate-right): Fix rectangle dup bug.
+
+ This is a necessary adjustment to changes to rect.el in Emacs 29.
+
+2023-07-01 Spencer Baugh <sbaugh@janestreet.com>
+
+ Add project command entries to the menu-bar
+
+ This will make it easier for new users to learn these increasingly
+ important and useful commands. (Bug#63469)
+
+ * lisp/menu-bar.el (menu-bar-file-menu): Add project-dired and
+ project-find-file entries.
+ (menu-bar-search-menu): Add project-find-regexp entry.
+ (menu-bar-replace-menu): Add project-query-replace regexp entry.
+ (menu-bar-shell-commands-menu): Add project-shell entry.
+ (menu-bar-buffers-menu-command-entries): Add project-switch-to-buffer
+ and project-list-buffer entries.
+ (menu-bar-project-menu): Add.
+ (menu-bar-tools-menu): Add "Project" submenu, and also project-compile
+ entry and change text for compile entry.
+
+2023-06-30 Eli Zaretskii <eliz@gnu.org>
+
+ Improve documentation of registers
+
+ * doc/lispref/text.texi (Registers): Document buffers in
+ registers. Mention "frameset" as another name for "frame
+ configuration".
+ * doc/emacs/regs.texi (Registers, Configuration Registers)
+ (File and Buffer Registers): Clarify and improve wording. Add
+ cross-references and indexing.
+ (Configuration Registers): Rename the section to a more accurate
+ name. (Bug#64354)
+
+ * lisp/register.el (jump-to-register, point-to-register)
+ (register-alist, frame-configuration-to-register): Doc fixes.
+ (Bug#64353)
+
+2023-06-29 Andrew G Cohen <cohen@andy.bu.edu>
+
+ Use a temporary buffer in nnagent-request-set-mark (bug#64117)
+
+ Commit cb12a84f2c519a48dd87453c925e3bc36d9944db inadvertently removed
+ the use of a temporary buffer in nnagent-request-set-mark. Bug and
+ fix reported by Jens Schmidt <jschmidt4gnu@vodafonemail.de>
+
+ * lisp/gnus/nnagent.el (nnagent-request-set-mark): Restore the use of
+ a temporary buffer that was inadvertently removed.
+
+ (cherry picked from commit 5075d752773c31d959272a7e2b73b1dc38ba184c)
+
+2023-06-29 john muhl <jm@pub.pink> (tiny change)
+
+ Support cons cell as value of ':line-width' box attribute
+
+ * lisp/calculator.el (calculator-need-3-lines): Support
+ values of a face's ':line-width' box attribute that are
+ cons cells. (Bug#64344)
+
+2023-06-29 Yuan Fu <casouri@gmail.com>
+
+ Add missing calls to treesit_record_change in editfns.c
+
+ These should be all that are missing. See the next commit for detail.
+
+ * src/editfns.c (Ftranslate_region_internal):
+ (Ftranspose_regions): Call treesit_record_change.
+
+2023-06-29 Yuan Fu <casouri@gmail.com>
+
+ Call treesit_record_change in subst-char-in-region (bug#64329)
+
+ * src/editfns.c (Fsubst_char_in_region): Call treesit_record_change in
+ the else branch.
+
+2023-06-29 Juri Linkov <juri@linkov.net>
+
+ * lisp/misc.el (duplicate-line-final-position): New defcustom
(bug#64185).
+
+ * lisp/misc.el (duplicate-line): Use it.
+
+ * test/lisp/misc-tests.el (misc--duplicate-line): Add tests for
+ duplicate-line-final-position.
+
+ Don't merge to master.
+
+2023-06-29 Daniel Martín <mardani29@yahoo.es>
+
+ Make js-beginning-of-defun return non-nil on success
+
+ The docstring of 'beginning-of-defun-function' says that the
+ function shall return non-nil when it found the beginning
+ of a defun. This is specially important because the calling
+ code decides when to move point depending on the return value.
+ * lisp/progmodes/js.el (js-beginning-of-defun)
+ (js--beginning-of-defun-flat): Return non-nil when the beginning
+ of a defun is found. (Bug#64283)
+
+ * test/lisp/progmodes/js-tests.el (js-mode-end-of-defun): Add a unit
+ test.
+
+2023-06-27 Yuan Fu <casouri@gmail.com>
+
+ Tree-sitter use with-silent-modifications like jit-lock (bug#64321)
+
+ * lisp/treesit.el (treesit--font-lock-notifier): Use
+ with-silent-modifications when marking modified text to be fontified
+ by jit-lock. This is what jit-lock itself does.
+
+2023-06-27 Stephen Berman <stephen.berman@gmx.net>
+
+ Fix todo-mode.el Commentary and a doc string (bug#64298)
+
+ * lisp/calendar/todo-mode.el: Explicitly note in the Commentary
+ that the Todo mode user manual is a separate Info manual in the
+ Emacs installation.
+ (todo-always-add-time-string): Replace doc string, which was
+ mistakenly retained in the initial merge of this version of
+ todo-mode.el, by a correct description of this user option.
+
+2023-06-27 Stephen Berman <stephen.berman@gmx.net>
+
+ Prevent truncation of todo-mode categories sexp
+
+ * lisp/calendar/todo-mode.el (todo-delete-file)
+ (todo-move-category, todo-convert-legacy-files)
+ (todo-update-categories-sexp, todo-check-format):
+ Bind print-length and print-level to nil before using prin1
+ and related functions, to avoid truncating the todo categories
+ sexp and possibly corrupting the file format.
+
+2023-06-27 Stephen Berman <stephen.berman@gmx.net>
+
+ Avoid making todo-mode buffers manually editable
+
+ * lisp/calendar/todo-mode.el (todo-add-category)
+ (todo-move-category, todo-edit-item--header)
+ (todo-set-item-priority, todo-move-item, todo-item-undone)
+ (todo-archive-done-item, todo-set-category-number): Restrict the
+ scope of nil buffer-read-only to the function calls that change
+ buffer text, thereby preventing todo mode buffers from becoming
+ manually editable and hence possibly corrupted when the minibuffer
+ is in use.
+
+2023-06-26 Michael Albinus <michael.albinus@gmx.de>
+
+ Fix Tramp mount-spec (don't merge)
+
+ * lisp/net/tramp-fuse.el (tramp-fuse-mounted-p): The mount-spec
+ could contain an optional trailing slash. (Bug#64278)
+
+2023-06-25 Daniel Semyonov <daniel@dsemy.com>
+
+ Fix VC package build when doc file isn't in a subdir
+
+ * lisp/emacs-lisp/package-vc.el (package-vc--build-documentation):
+ Expand 'file' before attempting to get its directory. (Bug#64242)
+
+2023-06-25 Michael Albinus <michael.albinus@gmx.de>
+
+ Fix type check in tramp-get-buffer-string
+
+ * lisp/net/tramp.el (tramp-get-buffer-string): Check, that BUFFER
+ is really a bufferp.
+
+2023-06-25 Richard M. Stallman <rms@gnu.org>
+
+ Clarify list terminology
+
+ * doc/lispintro/emacs-lisp-intro.texi (Lists diagrammed):
+ Mention "cons cell". Add index entries.
+ (car & cdr): Simplify etymology of `car' and `cdr'.
+ Explain why for some purposes they are better than `first' and `rest'.
+ Mention cons cells.
+
+ (cherry picked from commit 188c90c7c111dbbdc3edd29c23b59ade26f97bfd)
+
+2023-06-24 Mattias Engdegård <mattiase@acm.org>
+
+ * lisp/emacs-lisp/shortdoc.el: More and better `substring` examples.
+
+ Suggested by Juri Linkov.
+
+2023-06-24 Eli Zaretskii <eliz@gnu.org>
+
+ Fix "C-x RET r" when the new encoding is UTF
+
+ * src/fileio.c (Finsert_file_contents): Update point of
+ 'conversion_buffer' before decoding the last block. (Bug#64253)
+
+2023-06-23 Dmitry Gutov <dmitry@gutov.dev>
+
+ Fix "vc-print-log does not erase buffer" and associated problems
+
+ * lisp/vc/vc.el (vc-deduce-fileset): Make sure to retain the
+ buffer switch (if it did), bug#63949.
+
+2023-06-23 Theodor Thornhill <theo@thornhill.no>
+
+ Add selector_expression indentation rule
+
+ * lisp/progmodes/go-ts-mode.el (go-ts-mode--indent-rules): New rule.
+
+2023-06-22 Eli Zaretskii <eliz@gnu.org>
+
+ Add "nixd" LSP server to Eglot
+
+ * lisp/progmodes/eglot.el (eglot-server-programs): Add "nixd".
+ Patch by Brian Leung <leungbk@posteo.net>. (Bug#64214)
+
+2023-06-22 Eli Zaretskii <eliz@gnu.org>
+
+ Fix building --with-native-compilation=aot from release tarball
+
+ * lisp/Makefile.in (%.eln): Pattern rule for AOT native
+ compilation.
+ (compile-eln-targets, compile-eln-aot): New targets for AOT native
+ compilation.
+
+ * src/Makefile.in (../native-lisp): If NATIVE_COMPILATION_AOT is
+ set, also native-compile all the other Lisp files.
+ (Bug#64167)
+
+2023-06-21 Alan Mackenzie <acm@muc.de>
+
+ Fix bug#64152 (Minibuffer sometimes goes "modal")
+
+ In particular, when a frame has no minibuffer and is using that
+ of a different "normal" frame, C-x 5 o, etc., and GUI
+ operations fail.
+
+ Fix by partially reverting the commit from 2022-07-07 15:38:09
+ +0000 "Remove obscure, obsolete code from do_switch_frame". As
+ a consequent change, also revert the commit from 2022-07-08
+ 20:19:03 +0000 "Remove now unused parameter TRACK from
+ do_switch_frame".
+
+ * src/frame.c (do_switch_frame): Restore the TRACK parameter.
+ Restore the code which redirects the frame focus when a new
+ frame gets selected.
+
+ * src/frame.c (Fselect_frame, Fhandle_switch_frame)
+ (delete_frame)
+ * src/keyboard.c (quit_throw_to_read_char)
+ * src/lisp.h (do_switch_frame prototype)
+ * src/minibuf.c (read_minibuf_unwind)
+ * src/window.c (Fset_window_configuration): Restore the TRACK
+ argument to do_switch_frame.
+
+ * src/xterm.c (x_try_restore_frame): Add a zero TRACK argument
+ to do_switch_frame.
+
+2023-06-21 Eli Zaretskii <eliz@gnu.org>
+
+ Disable target-async by default in gdb-mi.el
+
+ * lisp/progmodes/gdb-mi.el (gdb-non-stop-setting): Disable until
+ bug#63084 is fixed. (Bug#64186)
+
+2023-06-20 Filipp Gunbin <fgunbin@fastmail.fm>
+
+ Revert "Fix parsing of dn line if WITHDN is non-nil"
+
+ This reverts commits 71b27779a9a and d2246b26275, because they change
+ the return value of "ldap-search" in an incompatible way. The fix
+ (a different one) will be done on master instead (bug#64089).
+
+2023-06-20 Eli Zaretskii <eliz@gnu.org>
+
+ Don't truncate filenames with "emacs.el" in them
+
+ * lisp/emacs-lisp/find-func.el (find-function-search-for-symbol):
+ Avoid false positives when looking for "emacs.el" matches the
+ likes of "emacs.elpa". (Bug#64143)
+
+2023-06-20 Eli Zaretskii <eliz@gnu.org>
+
+ Improve documentation of 'minibuffer-message'
+
+ * doc/lispref/minibuf.texi (Minibuffer Misc): Clarify that
+ 'minibuffer-message' behaves like 'message' if called from a
+ buffer that is not a minibuffer.
+
+ * lisp/minibuffer.el (minibuffer-message)
+ (set-minibuffer-message, clear-minibuffer-message): Doc fixes.
+ (Bug#64165)
+
+2023-06-19 João Távora <joaotavora@gmail.com>
+
+ Eglot: again fix positions of coinciding inlay hint overlays (bug#64101)
+
+ This bug originated from the previous fix, and is reproducible on non
+ Mac OS platforms, as long as the very latest version (at time of
+ writing) of the rust-analyzer server is used.
+
+ * lisp/progmodes/eglot.el (eglot--update-hints-1): Reverse
+ priorities when pegging overlays after (i.e. when before-string is
+ used).
+
+2023-06-18 Eli Zaretskii <eliz@gnu.org>
+
+ * lisp/ldefs-boot.el: Regenerate.
+
+2023-06-18 Eli Zaretskii <eliz@gnu.org>
+
+ Bump Emacs version to 29.0.92
+
+ * README:
+ * configure.ac:
+ * nt/README.W32:
+ * msdos/sed2v2.inp: Bump version to 29.0.92.
+
2023-06-18 Mattias Engdegård <mattiase@acm.org>
Describe primarily the Emacs s-exp dialect for treesit queries
@@ -116651,7 +117380,7 @@
This file records repository revisions from
commit f2ae39829812098d8269eafbc0fcb98959ee5bb7 (exclusive) to
-commit 8f62e7b85f69bb4026e9cf2971668b0d77077792 (inclusive).
+commit 7d1737071fba1fd83039aac34f34f6b90c9579b8 (inclusive).
See ChangeLog.3 for earlier changes.
;; Local Variables:
diff --git a/admin/make-tarball.txt b/admin/make-tarball.txt
index 1cc97c883af..fddf8444067 100644
--- a/admin/make-tarball.txt
+++ b/admin/make-tarball.txt
@@ -426,6 +426,13 @@ Now change to the 'manual' directory and invoke
upload-manuals:
If upload-manuals fails, resolve the problems and re-invoke it.
This requires running make-manuals again, since upload-manuals
destructively modifies the 'manual' directory where you invoke it.
+
+ If new files fail to be "cvs add"ed, they need to be manually
+ removed from under /path/to/webpages/cvs/checkout before retrying
+ upload-manuals, because if they exist, they will not be handled as
+ "new" files, and will not be "cvs add"ed by the next run of the
+ script.
+
Also, upload-manuals invokes "cvs commit -f", so if you run it
several times, some files will be committed more than once even
though they were not changed in-between. Suck it up.
diff --git a/admin/upload-manuals b/admin/upload-manuals
index 6f44456efb8..a206177a5c1 100755
--- a/admin/upload-manuals
+++ b/admin/upload-manuals
@@ -305,13 +305,14 @@ done
## TODO: check for removed manuals.
[ "$clist" ] && (
- cd $webdir/manual/html_mono
+ cd $webdir/manual
[ "$new" ] && {
echo "Adding new files: $new"
$cvs add $new || die "add error"
new_manual $new || die
echo "Remember to add new entries to manual/index.html"
}
+ cd html_mono
$cvs commit -m "$message" $clist || die "commit error"
)
@@ -339,9 +340,13 @@ for d in html_node/*; do
done
stale=
- for f in $webdir/manual/$d/*.html; do
- [ -e ${f#$webdir/manual/} ] || stale="$stale ${f##*/}"
- done
+ # Newly created directory will have no HTML files, so none can be
+ # "stale". But 'for' returns the original wildcard, so avoid that.
+ ls $webdir/manual/$d/*.html > /dev/null 2>&1 && {
+ for f in $webdir/manual/$d/*.html; do
+ [ -e ${f#$webdir/manual/} ] || stale="$stale ${f##*/}"
+ done
+ }
mv $d/*.html $webdir/manual/$d/
diff --git a/doc/lispref/commands.texi b/doc/lispref/commands.texi
index b6e619ff21f..56d7b8c649b 100644
--- a/doc/lispref/commands.texi
+++ b/doc/lispref/commands.texi
@@ -1132,7 +1132,9 @@ up a menu. It is also used internally by @code{y-or-n-p}
This variable is set to the last input event that was read by the
command loop as part of a command. The principal use of this variable
is in @code{self-insert-command}, which uses it to decide which
-character to insert.
+character to insert, and in @code{post-self-insert-hook}
+(@pxref{Commands for Insertion}), which uses it to access the
+character that was just inserted.
@example
@group
diff --git a/doc/lispref/minibuf.texi b/doc/lispref/minibuf.texi
index a861b8e910b..31b020db57c 100644
--- a/doc/lispref/minibuf.texi
+++ b/doc/lispref/minibuf.texi
@@ -156,7 +156,11 @@ reads the text and returns the resulting Lisp object,
unevaluated.
The argument @var{default} specifies default values to make available
through the history commands. It should be a string, a list of
strings, or @code{nil}. The string or strings become the minibuffer's
-``future history'', available to the user with @kbd{M-n}.
+``future history'', available to the user with @kbd{M-n}. In
+addition, if the call provides completion (e.g., via the @var{keymap}
+argument), the completion candidates are added to the ``future
+history'' when the values in @var{default} are exhausted by @kbd{M-n};
+see @ref{Minibuffer History,, minibuffer-default-add-function}.
If @var{read} is non-@code{nil}, then @var{default} is also used
as the input to @code{read}, if the user enters empty input.
@@ -648,10 +652,25 @@ buffer local, then each buffer will have its own input
history list.
Both @code{read-from-minibuffer} and @code{completing-read} add new
elements to the history list automatically, and provide commands to
-allow the user to reuse items on the list. The only thing your program
-needs to do to use a history list is to initialize it and to pass its
-name to the input functions when you wish. But it is safe to modify the
-list by hand when the minibuffer input functions are not using it.
+allow the user to reuse items on the list (@pxref{Minibuffer
+Commands}). The only thing your program needs to do to use a history
+list is to initialize it and to pass its name to the input functions
+when you wish. But it is safe to modify the list by hand when the
+minibuffer input functions are not using it.
+
+@vindex minibuffer-default-add-function
+ By default, when @kbd{M-n} (@code{next-history-element},
+@pxref{Minibuffer Commands,,next-history-element}) reaches the end of
+the list of default values provided by the command which initiated
+reading input from the minibuffer, @kbd{M-n} adds all of the
+completion candidates, as specified by
+@code{minibuffer-completion-table} (@pxref{Completion Commands}), to
+the list of defaults, so that all those candidates are available as
+``future history''. Your program can control that via the variable
+@code{minibuffer-default-add-function}: if its value is not a
+function, this automatic addition is disabled, and you can also set
+this variable to your own function which adds only some candidates, or
+some other values, to the ``future history''.
Emacs functions that add a new element to a history list can also
delete old elements if the list gets too long. The variable
@@ -1161,7 +1180,10 @@ However, empty input is always permitted, regardless of
the value of
first element of @var{default}, if it is a list; @code{""}, if
@var{default} is @code{nil}; or @var{default}. The string or strings
in @var{default} are also available to the user through the history
-commands.
+commands (@pxref{Minibuffer Commands}). In addition, the completion
+candidates are added to the ``future history'' when the values in
+@var{default} are exhausted by @kbd{M-n}; see @ref{Minibuffer
+History,, minibuffer-default-add-function}.
The function @code{completing-read} uses
@code{minibuffer-local-completion-map} as the keymap if
@@ -2551,7 +2573,11 @@ minibuffer. The argument @var{nabs} specifies the
absolute history
position in descending order, where 0 means the current element and a
positive number @var{n} means the @var{n}th previous element. NABS
being a negative number -@var{n} means the @var{n}th entry of ``future
-history.''
+history''. When this function reaches the end of the default values
+provided by @code{read-from-minibuffer} (@pxref{Text from Minibuffer})
+and @code{completing-read} (@pxref{Minibuffer Completion}), it adds
+the completion candidates to ``future history'', see @ref{Minibuffer
+History,, minibuffer-default-add-function}.
@end deffn
@node Minibuffer Windows
diff --git a/doc/lispref/text.texi b/doc/lispref/text.texi
index bfd81662292..4ffd5126e7e 100644
--- a/doc/lispref/text.texi
+++ b/doc/lispref/text.texi
@@ -551,14 +551,17 @@ character has close parenthesis syntax (@pxref{Blinking}).
@vindex self-insert-uses-region-functions
The final thing this command does is to run the hook
@code{post-self-insert-hook}. You could use this to automatically
-reindent text as it is typed, for example. If any function on this
-hook needs to act on the region (@pxref{The Region}), it should make
-sure Delete Selection mode (@pxref{Using Region, Delete Selection, ,
-emacs, The GNU Emacs Manual}) doesn't delete the region before
-@code{post-self-insert-hook} functions are invoked. The way to do so
-is to add a function that returns @code{nil} to
-@code{self-insert-uses-region-functions}, a special hook that tells
-Delete Selection mode it should not delete the region.
+reindent text as it is typed, for example. The functions on this hook
+can use @code{last-command-event} (@pxref{Command Loop Info}) to
+access the character just inserted.
+
+If any function on this hook needs to act on the region (@pxref{The
+Region}), it should make sure Delete Selection mode (@pxref{Using
+Region, Delete Selection, , emacs, The GNU Emacs Manual}) doesn't
+delete the region before @code{post-self-insert-hook} functions are
+invoked. The way to do so is to add a function that returns
+@code{nil} to @code{self-insert-uses-region-functions}, a special hook
+that tells Delete Selection mode it should not delete the region.
Do not try substituting your own definition of
@code{self-insert-command} for the standard one. The editor command
diff --git a/doc/misc/org.org b/doc/misc/org.org
index ae3fae0623e..d8bbcb4d0c5 100644
--- a/doc/misc/org.org
+++ b/doc/misc/org.org
@@ -4562,7 +4562,7 @@ all children are done, you can use the following setup:
#+begin_src emacs-lisp
(defun org-summary-todo (n-done n-not-done)
"Switch entry to DONE when all subentries are done, to TODO otherwise."
- (let (org-log-done org-log-states) ; turn off logging
+ (let (org-log-done org-todo-log-states) ; turn off logging
(org-todo (if (= n-not-done 0) "DONE" "TODO"))))
(add-hook 'org-after-todo-statistics-hook #'org-summary-todo)
@@ -16034,7 +16034,12 @@ can remove every headline in the buffer during export
like this:
"Remove all headlines in the current buffer.
BACKEND is the export back-end being used, as a symbol."
(org-map-entries
- (lambda () (delete-region (point) (line-beginning-position 2)))))
+ (lambda ()
+ (delete-region (point) (line-beginning-position 2))
+ ;; We need to tell `org-map-entries' to not skip over heading at
+ ;; point. Otherwise, it would continue from _next_ heading. See
+ ;; the docstring of `org-map-entries' for details.
+ (setq org-map-continue-from (point)))))
(add-hook 'org-export-before-parsing-hook #'my-headline-removal)
#+end_src
diff --git a/etc/AUTHORS b/etc/AUTHORS
index 9bd490dd3f8..27d01ed9eb9 100644
--- a/etc/AUTHORS
+++ b/etc/AUTHORS
@@ -112,9 +112,9 @@ Alan Mackenzie: wrote cc-awk.el debug-early.el
and co-wrote cc-align.el cc-cmds.el cc-defs.el cc-engine.el cc-fonts.el
cc-langs.el cc-mode.el cc-styles.el cc-vars.el
and changed cc-mode.texi bytecomp.el minibuf.c window.c edebug.el
- follow.el lisp.h display.texi eval.c keyboard.c subr.el frame.c lread.c
+ follow.el frame.c lisp.h display.texi eval.c keyboard.c subr.el lread.c
syntax.texi xdisp.c progmodes/compile.el programs.texi font-lock.el
- modes.texi window.el windows.texi and 190 other files
+ modes.texi window.el windows.texi and 191 other files
Alan Modra: changed unexelf.c
@@ -389,7 +389,7 @@ and changed nnir.el gnus-sum.el nnimap.el gnus-group.el
gnus.texi
gnus-msg.el gnus-int.el gnus-search.el auth-source.el gnus-art.el
gnus-cache.el gnus.el nnheader.el nnspool.el deps.mk dns.el
fns-tests.el fns.c gnus-agent.el gnus-cloud.el gnus-registry.el
- and 14 other files
+ and 15 other files
Andrew Hall: changed paren.el
@@ -1190,7 +1190,7 @@ Daniel Martín: changed c-ts-mode.el nsterm.m shortdoc.el
ns-win.el
simple.el diff-mode-tests.el erc.texi files.el files.texi indent.erts
msdos-xtra.texi progmodes/python.el search.texi .lldbinit basic.texi
c-ts-mode-tests.el cmacexp.el compilation.txt compile-tests.el
- compile.texi configure.ac and 43 other files
+ compile.texi configure.ac and 45 other files
Daniel McClanahan: changed lisp-mode.el
@@ -1227,7 +1227,7 @@ Daniel Ralston: changed rcirc.el
Daniel Schoepe: changed gnus-sum.el
-Daniel Semyonov: changed mairix.el
+Daniel Semyonov: changed mairix.el package-vc.el
Dani Moncayo: changed msys-to-w32 Makefile.in configure.ac buffers.texi
lists.texi mini.texi INSTALL README.W32 basic.texi custom.texi
@@ -1660,9 +1660,9 @@ Eli Zaretskii: wrote [bidirectional display in xdisp.c]
chartab-tests.el coding-tests.el etags-tests.el rxvt.el tty-colors.el
and co-wrote help-tests.el
and changed xdisp.c display.texi w32.c msdos.c simple.el w32fns.c
- files.el fileio.c keyboard.c emacs.c text.texi w32term.c dispnew.c
- configure.ac frames.texi w32proc.c files.texi xfaces.c window.c
- dispextern.h lisp.h and 1329 other files
+ files.el fileio.c keyboard.c emacs.c text.texi w32term.c configure.ac
+ dispnew.c frames.texi w32proc.c files.texi xfaces.c window.c
+ dispextern.h lisp.h and 1330 other files
Eliza Velasquez: changed server.el
@@ -2170,7 +2170,7 @@ Gregor Schmid: changed intervals.c intervals.h
tcl-mode.el textprop.c
Gregory Chernov: changed nnslashdot.el
-Gregory Heytings: changed xdisp.c editfns.c keyboard.c buffer.c subr.el
+Gregory Heytings: changed xdisp.c editfns.c keyboard.c subr.el buffer.c
dispextern.h lisp.h buffer.h display.texi efaq.texi files.el isearch.el
minibuffer.el Makefile.in bytecode.c composite.c positions.texi
bytecomp.el emake help-fns.el lread.c and 78 other files
@@ -2686,7 +2686,8 @@ and changed mml-sec.el gnus-util.el message.texi
mml-smime.el mml1991.el
Jens Petersen: wrote find-func.el
and changed mule-cmds.el pcmpl-rpm.el
-Jens Schmidt: changed plstore.el comint.el gnus.texi isearch.el ldap.el
+Jens Schmidt: changed epa.texi plstore.el auth.texi comint.el gnus.texi
+ isearch.el ldap.el
Jens Toivo Berger Thielemann: changed word-help.el
@@ -2919,6 +2920,8 @@ John Mastro: changed auth-source.el ibuffer.el w32heap.c
John Mongan: changed progmodes/f90.el
+John Muhl: changed calculator.el
+
John Paul Wallington: changed ibuffer.el ibuf-ext.el subr.el help-fns.el
rmail.el files.el thumbs.el bindings.el fns.c xfns.c arc-mode.el
bytecomp.el cus-theme.el font-lock.el hexl.el ibuf-macs.el info.el
@@ -3122,9 +3125,9 @@ Juri Linkov: wrote compose.el emoji.el files-x.el
misearch.el
repeat-tests.el replace-tests.el tab-bar-tests.el tab-bar.el
tab-line.el
and changed isearch.el simple.el info.el replace.el dired.el dired-aux.el
- minibuffer.el progmodes/grep.el window.el subr.el vc.el mouse.el
+ progmodes/grep.el minibuffer.el window.el subr.el vc.el mouse.el
outline.el diff-mode.el repeat.el image-mode.el files.el menu-bar.el
- search.texi startup.el progmodes/compile.el and 472 other files
+ search.texi startup.el progmodes/compile.el and 473 other files
Jussi Lahdenniemi: changed w32fns.c ms-w32.h msdos.texi w32.c w32.h
w32console.c w32heap.c w32inevt.c w32term.h
@@ -3985,7 +3988,7 @@ Mauro Aranda: changed wid-edit.el cus-edit.el custom.el
wid-edit-tests.el
widget.texi perl-mode.el custom-tests.el checkdoc-tests.el checkdoc.el
cperl-mode-tests.el cus-edit-tests.el cus-theme.el customize.texi
files.texi gnus.texi octave.el pong.el align.el auth-source.el
- autorevert.el button.el and 44 other files
+ autorevert.el button.el and 45 other files
Maxime Edouard Robert Froumentin: changed gnus-art.el mml.el
@@ -4793,7 +4796,7 @@ Philipp Stephani: wrote callint-tests.el checkdoc-tests.el
lread-tests.el mouse-tests.el startup-tests.el xt-mouse-tests.el
and changed emacs-module.c emacs-module-tests.el configure.ac json.c
process.c eval.c internals.texi json-tests.el process-tests.el alloc.c
- emacs-module.h.in emacs.c lread.c nsterm.m bytecomp.el lisp.h pdumper.c
+ emacs-module.h.in emacs.c lread.c nsterm.m pdumper.c bytecomp.el lisp.h
seccomp-filter.c callproc.c cl-macs.el gtkutil.c and 188 other files
Phillip Dixon: changed eglot.el
@@ -5038,7 +5041,7 @@ and co-wrote cc-align.el cc-cmds.el cc-defs.el
cc-engine.el cc-langs.el
and changed files.el keyboard.c simple.el xterm.c xdisp.c rmail.el
fileio.c process.c sysdep.c buffer.c xfns.c window.c subr.el
configure.ac startup.el sendmail.el emacs.c Makefile.in editfns.c
- info.el dired.el and 1338 other files
+ info.el dired.el and 1339 other files
Richard Ryniker: changed sendmail.el
@@ -5089,7 +5092,7 @@ and changed configure.ac process.c blocks.awk keymap.el
font.c
network-stream-tests.el processes.texi custom.texi emoji-zwj.awk
ftfont.c gtkutil.c process-tests.el unicode vc-git.el terminal.c
char-fold.el gnutls.el keymaps.texi network-stream.el nsm.el nsterm.m
- and 191 other files
+ and 192 other files
Robert Thorpe: changed cus-start.el indent.el rmail.texi
@@ -5487,7 +5490,7 @@ Sławomir Nowaczyk: changed emacs.py progmodes/python.el
TUTORIAL.pl
flyspell.el ls-lisp.el w32proc.c
Spencer Baugh: changed data-tests.el minibuffer.el alloc.c autorevert.el
- mini.texi processes.texi
+ flymake.el menu-bar.el mini.texi processes.texi simple.el
Spencer Thomas: changed dabbrev.el emacsclient.c gnus.texi server.el
unexcoff.c
@@ -5780,9 +5783,9 @@ Theodore Jump: changed makefile.nt makefile.def
w32-win.el w32faces.c
Theodor Thornhill: changed typescript-ts-mode.el java-ts-mode.el
c-ts-mode.el eglot.el js.el csharp-mode.el css-mode.el project.el
json-ts-mode.el treesit.el c-ts-common.el eglot-tests.el EGLOT-NEWS
- README.md c-ts-mode-tests.el compile-tests.el indent-bsd.erts
- indent.erts maintaining.texi mwheel.el ruby-ts-mode.el
- and 4 other files
+ README.md c-ts-mode-tests.el compile-tests.el go-ts-mode.el
+ indent-bsd.erts indent.erts maintaining.texi mwheel.el
+ and 5 other files
Theresa O'Connor: wrote json.el
and changed erc.el erc-viper.el erc-log.el erc-track.el viper.el
@@ -6105,6 +6108,8 @@ Valentin Wüstholz: changed org.el
Valery Alexeev: changed cyril-util.el cyrillic.el
+Valtteri Vuorikoski: changed configure.ac
+
Van L: changed subr.el
Vasilij Schneidermann: changed ETAGS.EBNF cus-start.el eww.el cc-mode.el
@@ -6146,7 +6151,7 @@ Vincent Bernat: changed gnus-int.el nnimap.el xsettings.c
Vincent Del Vecchio: changed info.el mh-utils.el
-Vincenzo Pupillo: changed java-ts-mode.el
+Vincenzo Pupillo: changed js.el typescript-ts-mode.el java-ts-mode.el
Vince Salvino: changed msdos.texi w32.c w32fns.c
@@ -6370,7 +6375,7 @@ Yuan Fu: changed treesit.el treesit.c c-ts-mode.el
parsing.texi
progmodes/python.el modes.texi js.el treesit-tests.el indent.erts
typescript-ts-mode.el css-mode.el treesit.h configure.ac
java-ts-mode.el print.c sh-script.el c-ts-common.el gdb-mi.el
- rust-ts-mode.el go-ts-mode.el starter-guide and 53 other files
+ rust-ts-mode.el go-ts-mode.el starter-guide and 54 other files
Yuanle Song: changed rng-xsd.el
diff --git a/etc/HISTORY b/etc/HISTORY
index 8b80473e321..70f8669cb29 100644
--- a/etc/HISTORY
+++ b/etc/HISTORY
@@ -228,7 +228,9 @@ GNU Emacs 28.1 (2022-04-04) emacs-28.1
GNU Emacs 28.2 (2022-09-12) emacs-28.2
-GNU Emacs 28.3 (2023-02-17) emacs-28.3
+GNU Emacs 28.3 (2023-02-17) emacs-28.3 (was not actually released)
+
+GNU Emacs 29.1 (2023-07-30) emacs-29.1
----------------------------------------------------------------------
diff --git a/etc/NEWS b/etc/NEWS
index 733883b26d8..a8fc7f4e37f 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -695,6 +695,15 @@ previous behavior of showing 'U' in the mode line for
'koi8-u':
(coding-system-put 'koi8-u :mnemonic ?U)
+---
+** 'vietnamese-tcvn' is now a coding system alias for 'vietnamese-vscii'.
+VSCII-1 and TCVN-5712 are different names for the same character
+encoding. Therefore, the duplicate coding system definition has been
+dropped in favor of an alias.
+
+The mode-line mnemonic for 'vietnamese-vscii' and its aliases is the
+lowercase letter 'v'.
+
+++
** Infinities and NaNs no longer act as symbols on non-IEEE platforms.
On old platforms like the VAX that do not support IEEE floating-point,
diff --git a/etc/refcards/orgcard.tex b/etc/refcards/orgcard.tex
index 07463ee6a33..dd8cae5ce5e 100644
--- a/etc/refcards/orgcard.tex
+++ b/etc/refcards/orgcard.tex
@@ -1,5 +1,5 @@
% Reference Card for Org Mode
-\def\orgversionnumber{9.6.6}
+\def\orgversionnumber{9.6.7}
\def\versionyear{2023} % latest update
\input emacsver.tex
diff --git a/lisp/bookmark.el b/lisp/bookmark.el
index 026257ff758..10ff2f5ebbf 100644
--- a/lisp/bookmark.el
+++ b/lisp/bookmark.el
@@ -89,13 +89,15 @@ To specify the file in which to save them, modify the
variable
:type 'file)
(defcustom bookmark-watch-bookmark-file t
- "If non-nil watch the default bookmark file.
+ "If non-nil reload the default bookmark file if it was changed.
If this file has changed on disk since it was last loaded, query the user
whether to load it again. If the value is `silent' reload without querying.
This file defaults to `bookmark-default-file'. But during an Emacs session,
`bookmark-load' and `bookmark-save' can redefine the current default file."
:version "27.1"
- :type 'boolean
+ :type '(choice (const :tag "Suggest to reload bookmark file if changed" t)
+ (const :tag "Silently reload bookmark file if changed" silent)
+ (const :tag "Ignore changes of bookmark file" nil))
:group 'bookmark)
(defcustom bookmark-version-control 'nospecial
diff --git a/lisp/cus-face.el b/lisp/cus-face.el
index ec89b4f7ff6..a3a27263a7c 100644
--- a/lisp/cus-face.el
+++ b/lisp/cus-face.el
@@ -158,7 +158,7 @@
(or (and (consp real-value) (plist-get real-value :style))
'line))
(position (and (consp real-value)
- (plist-get real-value :style))))
+ (plist-get real-value :position))))
(list :color color :style style :position position))))
;; filter to make customized-value suitable for storing
,(lambda (cus-value)
diff --git a/lisp/language/vietnamese.el b/lisp/language/vietnamese.el
index bd0b3c5ae3e..e439a2c3851 100644
--- a/lisp/language/vietnamese.el
+++ b/lisp/language/vietnamese.el
@@ -28,8 +28,8 @@
;;; Commentary:
-;; For Vietnamese, the character sets VISCII, VSCII and TCVN-5712 are
-;; supported.
+;; For Vietnamese, the coding systems VISCII, VSCII-1 (TCVN-5712),
+;; VIQR and windows-1258 are supported.
;;; Code:
@@ -44,13 +44,16 @@
(define-coding-system-alias 'viscii 'vietnamese-viscii)
(define-coding-system 'vietnamese-vscii
- "8-bit encoding for Vietnamese VSCII-1."
+ "8-bit encoding for Vietnamese VSCII-1 (TCVN-5712)."
:coding-type 'charset
:mnemonic ?v
:charset-list '(vscii)
:suitable-for-file-name t)
(define-coding-system-alias 'vscii 'vietnamese-vscii)
+(define-coding-system-alias 'vietnamese-tcvn 'vietnamese-vscii)
+(define-coding-system-alias 'tcvn 'vietnamese-vscii)
+(define-coding-system-alias 'tcvn-5712 'vietnamese-vscii)
;; (make-coding-system
;; 'vietnamese-vps 4 ?p
@@ -74,7 +77,7 @@
(set-language-info-alist
"Vietnamese" '((charset viscii)
(coding-system vietnamese-viscii vietnamese-vscii
- vietnamese-tcvn vietnamese-viqr windows-1258)
+ vietnamese-viqr windows-1258)
(nonascii-translation . viscii)
(coding-priority vietnamese-viscii)
(input-method . "vietnamese-viqr")
@@ -83,12 +86,12 @@
(sample-text . "Vietnamese (Tiếng Việt) Chào bạn")
(documentation . "\
For Vietnamese, Emacs uses special charsets internally.
-They can be decoded from and encoded to VISCII, VSCII, TCVN-5712, VIQR
-and windows-1258. VSCII is deprecated in favor of TCVN-5712. The
-Current setting gives higher priority to the coding system VISCII than
-TCVN-5712. If you prefer TCVN-5712, please do: (prefer-coding-system
-'vietnamese-tcvn). There are two Vietnamese input methods: VIQR and
-Telex, VIQR is the default setting.")))
+They can be decoded from and encoded to VISCII, VSCII-1 (TCVN-5712),
+VIQR and windows-1258. The current setting gives higher priority
+to the coding system VISCII than VSCII-1. If you prefer VSCII-1,
+please do: (prefer-coding-system 'vietnamese-vscii). There are
+two Vietnamese input methods: VIQR and Telex, VIQR is the default
+setting.")))
(define-coding-system 'windows-1258
"windows-1258 encoding for Vietnamese (MIME: WINDOWS-1258)"
@@ -98,15 +101,6 @@ Telex, VIQR is the default setting.")))
:mime-charset 'windows-1258)
(define-coding-system-alias 'cp1258 'windows-1258)
-(define-coding-system 'vietnamese-tcvn
- "8-bit encoding for Vietnamese TCVN-5712"
- :coding-type 'charset
- :mnemonic ?t
- :charset-list '(tcvn-5712)
- :suitable-for-file-name t)
-(define-coding-system-alias 'tcvn 'vietnamese-tcvn)
-(define-coding-system-alias 'tcvn-5712 'vietnamese-tcvn)
-
(provide 'vietnamese)
;;; vietnamese.el ends here
diff --git a/lisp/net/tramp-adb.el b/lisp/net/tramp-adb.el
index 3d4dacb393c..eec00b17b4c 100644
--- a/lisp/net/tramp-adb.el
+++ b/lisp/net/tramp-adb.el
@@ -511,9 +511,9 @@ Emacs dired can't find files."
(with-parsed-tramp-file-name (expand-file-name filename) nil
(with-tramp-file-property v localname "file-writable-p"
(if (file-exists-p filename)
+ ;; Examine `file-attributes' cache to see if request can be
+ ;; satisfied without remote operation.
(if (tramp-file-property-p v localname "file-attributes")
- ;; Examine `file-attributes' cache to see if request can
- ;; be satisfied without remote operation.
(tramp-check-cached-permissions v ?w)
(tramp-adb-send-command-and-check
v (format "test -w %s" (tramp-shell-quote-argument localname))))
diff --git a/lisp/net/tramp-sh.el b/lisp/net/tramp-sh.el
index e889cb2e86f..b33e788b893 100644
--- a/lisp/net/tramp-sh.el
+++ b/lisp/net/tramp-sh.el
@@ -32,6 +32,7 @@
;;; Code:
(eval-when-compile (require 'cl-lib))
+(require 'cl-seq)
(require 'tramp)
;; `dired-*' declarations can be removed, starting with Emacs 29.1.
@@ -616,6 +617,13 @@ if (!$result) {
$result = File::Spec->catpath($vol, File::Spec->catdir(@dirs), \"\");
}
+if (-l $ARGV[0]) {
+ print \"t\\n\";
+ }
+else {
+ print \"nil\\n\";
+ }
+
$result =~ s/\"/\\\\\"/g;
print \"\\\"$result\\\"\\n\";
' \"$1\" %n"
@@ -699,11 +707,11 @@ characters need to be doubled.")
" '((%s%%%%N%s) %%%%h (%s%%%%U%s . %%%%u) (%s%%%%G%s . %%%%g)"
" %%%%X %%%%Y %%%%Z %%%%s %s%%%%A%s t %%%%i -1)' \"$1\" %%n || echo nil) |"
" sed -e 's/\"/\\\\\"/g' -e 's/%s/\"/g'")
- tramp-stat-marker tramp-stat-marker ; %%N
- tramp-stat-marker tramp-stat-marker ; %%U
- tramp-stat-marker tramp-stat-marker ; %%G
- tramp-stat-marker tramp-stat-marker ; %%A
- tramp-stat-quoted-marker)
+ tramp-stat-marker tramp-stat-marker ; %%N
+ tramp-stat-marker tramp-stat-marker ; %%U
+ tramp-stat-marker tramp-stat-marker ; %%G
+ tramp-stat-marker tramp-stat-marker ; %%A
+ tramp-stat-quoted-marker)
"Shell function to produce output suitable for use with `file-attributes'
on the remote file system.
Format specifiers are replaced by `tramp-expand-script', percent
@@ -1015,7 +1023,7 @@ BEGIN {
Format specifiers are replaced by `tramp-expand-script', percent
characters need to be doubled.")
-(defconst tramp-vc-registered-read-file-names
+(defconst tramp-bundle-read-file-names
"echo \"(\"
while read file; do
quoted=`echo \"$file\" | sed -e \"s/\\\"/\\\\\\\\\\\\\\\\\\\"/\"`
@@ -1029,13 +1037,18 @@ while read file; do
else
echo \"(\\\"$quoted\\\" \\\"file-readable-p\\\" nil)\"
fi
+ if %s \"$file\"; then
+ echo \"(\\\"$quoted\\\" \\\"file-directory-p\\\" t)\"
+ else
+ echo \"(\\\"$quoted\\\" \\\"file-directory-p\\\" nil)\"
+ fi
done
echo \")\""
- "Script to check existence of VC related files.
-It must be send formatted with two strings; the tests for file
-existence, and file readability. Input shall be read via
-here-document, otherwise the command could exceed maximum length
-of command line.
+ "Script to check file attributes of a bundle of files.
+It must be sent formatted with three strings; the tests for file
+existence, file readability, and file directory. Input shall be
+read via here-document, otherwise the command could exceed
+maximum length of command line.
Format specifiers \"%s\" are replaced before the script is used.")
;; New handlers should be added here.
@@ -1145,19 +1158,17 @@ Operations not mentioned here will be handled by the
normal Emacs functions.")
(concat "Making a symbolic link: "
"ln(1) does not exist on the remote host"))))
- (tramp-skeleton-handle-make-symbolic-link target linkname
ok-if-already-exists
- (and (tramp-send-command-and-check
- v (format
- "cd %s"
- (tramp-shell-quote-argument (file-name-directory localname))))
- (tramp-send-command-and-check
- v (format
- "%s -sf %s %s" (tramp-get-remote-ln v)
- (tramp-shell-quote-argument target)
- ;; The command could exceed PATH_MAX, so we use relative
- ;; file names.
- (tramp-shell-quote-argument
- (concat "./" (file-name-nondirectory localname))))))))
+ (tramp-skeleton-make-symbolic-link target linkname ok-if-already-exists
+ (tramp-send-command-and-check
+ v (format
+ "cd %s && %s -sf %s %s"
+ (tramp-shell-quote-argument (file-name-directory localname))
+ (tramp-get-remote-ln v)
+ (tramp-shell-quote-argument target)
+ ;; The command could exceed PATH_MAX, so we use relative
+ ;; file names.
+ (tramp-shell-quote-argument
+ (concat "./" (file-name-nondirectory localname)))))))
(defun tramp-sh-handle-file-truename (filename)
"Like `file-truename' for Tramp files."
@@ -1166,12 +1177,20 @@ Operations not mentioned here will be handled by the
normal Emacs functions.")
;; Use GNU readlink --canonicalize-missing where available.
((tramp-get-remote-readlink v)
(tramp-send-command-and-check
- v (format "%s --canonicalize-missing %s"
- (tramp-get-remote-readlink v)
- (tramp-shell-quote-argument localname)))
+ v (format
+ (concat
+ "(if %s -h \"%s\"; then echo t; else echo nil; fi) && "
+ "%s --canonicalize-missing %s")
+ (tramp-get-test-command v)
+ (tramp-shell-quote-argument localname)
+ (tramp-get-remote-readlink v)
+ (tramp-shell-quote-argument localname)))
(with-current-buffer (tramp-get-connection-buffer v)
(goto-char (point-min))
- (buffer-substring (point-min) (line-end-position))))
+ (tramp-set-file-property v localname "file-symlink-marker" (read
(current-buffer)))
+ ;; We cannote call `read', the file name isn't quoted.
+ (forward-line)
+ (buffer-substring (point) (line-end-position))))
;; Use Perl implementation.
((and (tramp-get-remote-perl v)
@@ -1179,9 +1198,13 @@ Operations not mentioned here will be handled by the
normal Emacs functions.")
(tramp-get-connection-property v "perl-cwd-realpath"))
(tramp-maybe-send-script
v tramp-perl-file-truename "tramp_perl_file_truename")
- (tramp-send-command-and-read
+ (tramp-send-command-and-check
v (format "tramp_perl_file_truename %s"
- (tramp-shell-quote-argument localname))))
+ (tramp-shell-quote-argument localname)))
+ (with-current-buffer (tramp-get-connection-buffer v)
+ (goto-char (point-min))
+ (tramp-set-file-property v localname "file-symlink-marker" (read
(current-buffer)))
+ (read (current-buffer))))
;; Do it yourself.
(t (tramp-file-local-name
@@ -1675,8 +1698,8 @@ ID-FORMAT valid values are `string' and `integer'."
(with-tramp-file-property v localname "file-directory-p"
(if-let
((truename (tramp-get-file-property v localname "file-truename"))
- (attr-p (tramp-file-property-p
- v (tramp-file-local-name truename) "file-attributes")))
+ ((tramp-file-property-p
+ v (tramp-file-local-name truename) "file-attributes")))
(eq (file-attribute-type
(tramp-get-file-property
v (tramp-file-local-name truename) "file-attributes"))
@@ -1688,9 +1711,9 @@ ID-FORMAT valid values are `string' and `integer'."
(with-parsed-tramp-file-name (expand-file-name filename) nil
(with-tramp-file-property v localname "file-writable-p"
(if (file-exists-p filename)
+ ;; Examine `file-attributes' cache to see if request can be
+ ;; satisfied without remote operation.
(if (tramp-file-property-p v localname "file-attributes")
- ;; Examine `file-attributes' cache to see if request can
- ;; be satisfied without remote operation.
(tramp-check-cached-permissions v ?w)
(tramp-run-test v "-w" localname))
;; If file doesn't exist, check if directory is writable.
@@ -1789,7 +1812,7 @@ ID-FORMAT valid values are `string' and `integer'."
"cd %s 2>&1 && %s -a 2>%s"
" | while IFS= read f; do"
" if %s -d \"$f\" 2>%s;"
- " then \\echo \"$f/\"; else \\echo \"$f\"; fi;"
+ " then echo \"$f/\"; else echo \"$f\"; fi;"
" done")
(tramp-shell-quote-argument localname)
(tramp-get-ls-command v)
@@ -3525,6 +3548,41 @@ implementation will be used."
(when coding-system-used
(setq last-coding-system-used coding-system-used)))))))
+(defun tramp-bundle-read-file-names (vec files)
+ "Read file attributes of FILES and with one command fill the cache.
+FILES must be the local names only. The cache attributes to be
+filled are described in `tramp-bundle-read-file-names'."
+ (when files
+ (tramp-maybe-send-script
+ vec
+ (format tramp-bundle-read-file-names
+ (tramp-get-file-exists-command vec)
+ (format "%s -r" (tramp-get-test-command vec))
+ (format "%s -d" (tramp-get-test-command vec)))
+ "tramp_bundle_read_file_names")
+
+ (dolist
+ (elt
+ (ignore-errors
+ ;; We cannot use `tramp-send-command-and-read', because
+ ;; this does not cooperate well with heredoc documents.
+ (tramp-send-command
+ vec
+ (format
+ "tramp_bundle_read_file_names <<'%s'\n%s\n%s\n"
+ tramp-end-of-heredoc
+ (mapconcat #'tramp-shell-quote-argument
+ files
+ "\n")
+ tramp-end-of-heredoc))
+ (with-current-buffer (tramp-get-connection-buffer vec)
+ ;; Read the expression.
+ (goto-char (point-min))
+ (read (current-buffer)))))
+
+ (tramp-set-file-property
+ vec (car elt) (cadr elt) (cadr (cdr elt))))))
+
(defvar tramp-vc-registered-file-names nil
"List used to collect file names, which are checked during `vc-registered'.")
@@ -3570,36 +3628,7 @@ implementation will be used."
(tramp-message v 10 "\n%s" tramp-vc-registered-file-names)
;; Send just one command, in order to fill the cache.
- (when tramp-vc-registered-file-names
- (tramp-maybe-send-script
- v
- (format tramp-vc-registered-read-file-names
- (tramp-get-file-exists-command v)
- (format "%s -r" (tramp-get-test-command v)))
- "tramp_vc_registered_read_file_names")
-
- (dolist
- (elt
- (ignore-errors
- ;; We cannot use `tramp-send-command-and-read',
- ;; because this does not cooperate well with
- ;; heredoc documents.
- (tramp-send-command
- v
- (format
- "tramp_vc_registered_read_file_names <<'%s'\n%s\n%s\n"
- tramp-end-of-heredoc
- (mapconcat #'tramp-shell-quote-argument
- tramp-vc-registered-file-names
- "\n")
- tramp-end-of-heredoc))
- (with-current-buffer (tramp-get-connection-buffer v)
- ;; Read the expression.
- (goto-char (point-min))
- (read (current-buffer)))))
-
- (tramp-set-file-property
- v (car elt) (cadr elt) (cadr (cdr elt))))))
+ (tramp-bundle-read-file-names v tramp-vc-registered-file-names))
;; Second run. Now all `file-exists-p' or `file-readable-p'
;; calls shall be answered from the file cache. We unset
@@ -4254,6 +4283,8 @@ file exists and nonzero exit status otherwise."
"`tramp-histfile-override' uses invalid file `%s'"
tramp-histfile-override))
+ (tramp-flush-connection-property
+ (tramp-get-connection-process vec) "scripts")
(tramp-set-connection-property
(tramp-get-connection-process vec) "remote-shell" shell)))
@@ -4335,12 +4366,10 @@ process to set up. VEC specifies the connection."
(tramp-open-shell vec (tramp-get-method-parameter vec 'tramp-remote-shell))
(tramp-message vec 5 "Setting up remote shell environment")
- ;; Disable line editing.
- (tramp-send-command vec "set +o vi +o emacs" t)
-
- ;; Dump option settings in the traces.
- (when (>= tramp-verbose 9)
- (tramp-send-command vec "set -o" t))
+ ;; Disable line editing. Dump option settings in the traces.
+ (tramp-send-command
+ vec
+ (if (>= tramp-verbose 9) "set +o vi +o emacs -o" "set +o vi +o emacs") t)
;; Disable echo expansion.
(tramp-send-command
@@ -5554,22 +5583,16 @@ Nonexistent directories are removed from spec."
(setq remote-path (delq 'tramp-own-remote-path remote-path)))
;; Remove double entries.
- (setq elt1 remote-path)
- (while (consp elt1)
- (while (and (car elt1) (setq elt2 (member (car elt1) (cdr elt1))))
- (setcar elt2 nil))
- (setq elt1 (cdr elt1)))
+ (setq remote-path
+ (cl-remove-duplicates
+ remote-path :test #'string-equal :from-end t))
;; Remove non-existing directories.
- (delq
- nil
- (mapcar
- (lambda (x)
- (and
- (stringp x)
- (file-directory-p (tramp-make-tramp-file-name vec x))
- x))
- remote-path))))))
+ (let ((remote-file-name-inhibit-cache nil))
+ (tramp-bundle-read-file-names vec remote-path)
+ (cl-remove-if
+ (lambda (x) (not (tramp-get-file-property vec x "file-directory-p")))
+ remote-path))))))
(defun tramp-get-remote-locale (vec)
"Determine remote locale, supporting UTF8 if possible."
diff --git a/lisp/net/tramp-smb.el b/lisp/net/tramp-smb.el
index 60d40fef147..9c96a3f6851 100644
--- a/lisp/net/tramp-smb.el
+++ b/lisp/net/tramp-smb.el
@@ -1176,7 +1176,7 @@ PRESERVE-UID-GID and PRESERVE-EXTENDED-ATTRIBUTES are
completely ignored."
(unless (tramp-smb-get-cifs-capabilities v)
(tramp-error v 'file-error "make-symbolic-link not supported")))
- (tramp-skeleton-handle-make-symbolic-link target linkname
ok-if-already-exists
+ (tramp-skeleton-make-symbolic-link target linkname ok-if-already-exists
(unless (tramp-smb-send-command
v (format "symlink %s %s"
(tramp-smb-shell-quote-argument target)
diff --git a/lisp/net/tramp-sudoedit.el b/lisp/net/tramp-sudoedit.el
index 2bbe0945330..2ce2647b5ac 100644
--- a/lisp/net/tramp-sudoedit.el
+++ b/lisp/net/tramp-sudoedit.el
@@ -574,9 +574,9 @@ the result will be a local, non-Tramp, file name."
(with-parsed-tramp-file-name (expand-file-name filename) nil
(with-tramp-file-property v localname "file-writable-p"
(if (file-exists-p filename)
+ ;; Examine `file-attributes' cache to see if request can be
+ ;; satisfied without remote operation.
(if (tramp-file-property-p v localname "file-attributes")
- ;; Examine `file-attributes' cache to see if request can
- ;; be satisfied without remote operation.
(tramp-check-cached-permissions v ?w)
(tramp-sudoedit-send-command
v "test" "-w" (file-name-unquote localname)))
@@ -596,7 +596,7 @@ the result will be a local, non-Tramp, file name."
(defun tramp-sudoedit-handle-make-symbolic-link
(target linkname &optional ok-if-already-exists)
"Like `make-symbolic-link' for Tramp files."
- (tramp-skeleton-handle-make-symbolic-link target linkname
ok-if-already-exists
+ (tramp-skeleton-make-symbolic-link target linkname ok-if-already-exists
(tramp-sudoedit-send-command
v "ln" "-sf"
(file-name-unquote target)
diff --git a/lisp/net/tramp.el b/lisp/net/tramp.el
index e83d13e3779..772acc843b7 100644
--- a/lisp/net/tramp.el
+++ b/lisp/net/tramp.el
@@ -3291,6 +3291,8 @@ BODY is the backend specific code."
(when (tramp-connectable-p ,filename)
(with-parsed-tramp-file-name (expand-file-name ,filename) nil
(with-tramp-file-property v localname "file-exists-p"
+ ;; Examine `file-attributes' cache to see if request can
+ ;; be satisfied without remote operation.
(if (tramp-file-property-p v localname "file-attributes")
(not
(null (tramp-get-file-property v localname
"file-attributes")))
@@ -3361,7 +3363,7 @@ BODY is the backend specific code."
,@body
nil))))
-(defmacro tramp-skeleton-handle-make-symbolic-link
+(defmacro tramp-skeleton-make-symbolic-link
(target linkname &optional ok-if-already-exists &rest body)
"Skeleton for `tramp-*-handle-make-symbolic-link'.
BODY is the backend specific code.
@@ -3966,8 +3968,14 @@ Let-bind it when necessary.")
(defun tramp-handle-file-symlink-p (filename)
"Like `file-symlink-p' for Tramp files."
- (let ((x (file-attribute-type (file-attributes filename))))
- (and (stringp x) x)))
+ (with-parsed-tramp-file-name (expand-file-name filename) nil
+ ;; Some operations, like `file-truename', set the file property
+ ;; "file-symlink-marker". We can use it as indicator, and avoid a
+ ;; possible call of `file-attributes'.
+ (when (or (tramp-get-file-property v localname "file-symlink-marker")
+ (not (tramp-file-property-p v localname "file-symlink-marker")))
+ (let ((x (file-attribute-type (file-attributes filename))))
+ (and (stringp x) x)))))
(defun tramp-handle-file-truename (filename)
"Like `file-truename' for Tramp files."
diff --git a/lisp/org/ob-C.el b/lisp/org/ob-C.el
index 3a6e99623f5..7763c4c07c1 100644
--- a/lisp/org/ob-C.el
+++ b/lisp/org/ob-C.el
@@ -339,7 +339,7 @@ FORMAT can be either a format string or a function which is
called with VAL."
(type
(pcase basetype
(`integerp '("int" "%d"))
- (`floatp '("double" "%f"))
+ (`floatp '("double" "%s")) ;; %f rounds, use %s to print the float
literally
(`stringp
(list
(if (eq org-babel-c-variant 'd) "string" "const char*")
diff --git a/lisp/org/ob-tangle.el b/lisp/org/ob-tangle.el
index 980d4a12054..0b816a7c13c 100644
--- a/lisp/org/ob-tangle.el
+++ b/lisp/org/ob-tangle.el
@@ -513,6 +513,7 @@ The PARAMS are the 3rd element of the info for the same src
block."
(cdr (assq :tangle params)))))
bare))))))
+(defvar org-outline-regexp) ; defined in lisp/org.el
(defun org-babel-tangle-single-block (block-counter &optional only-this-block)
"Collect the tangled source for current block.
Return the list of block attributes needed by
@@ -570,8 +571,8 @@ non-nil, return the full association list to be used by
(buffer-substring
(max (condition-case nil
(save-excursion
- (org-back-to-heading t) ; Sets match data
- (match-end 0))
+ (org-back-to-heading t)
+ (re-search-forward org-outline-regexp))
(error (point-min)))
(save-excursion
(if (re-search-backward
diff --git a/lisp/org/org-element.el b/lisp/org/org-element.el
index 517d45b0224..df43ebcf0c5 100644
--- a/lisp/org/org-element.el
+++ b/lisp/org/org-element.el
@@ -7734,7 +7734,8 @@ the cache."
;; it to real beginning then despite
;; START being larger.
(setq start nil)
- (move-start-to-next-match nil)
+ (let ((data nil)) ; data may not be valid.
ignore it.
+ (move-start-to-next-match nil))
;; The new element may now start before
;; or at already processed position.
;; Make sure that we continue from an
diff --git a/lisp/org/org-faces.el b/lisp/org/org-faces.el
index 594c9a6e738..bb0958033fe 100644
--- a/lisp/org/org-faces.el
+++ b/lisp/org/org-faces.el
@@ -108,7 +108,7 @@ color of the frame."
"Face used for drawers."
:group 'org-faces)
-(defface org-property-value nil
+(defface org-property-value '((t :inherit default))
"Face used for the value of a property."
:group 'org-faces)
diff --git a/lisp/org/org-fold-core.el b/lisp/org/org-fold-core.el
index 027ff921581..6c17b00faf8 100644
--- a/lisp/org/org-fold-core.el
+++ b/lisp/org/org-fold-core.el
@@ -502,26 +502,34 @@ hanging around."
;; different buffer. This can happen, for example, when
;; org-capture copies local variables into *Capture* buffer.
(setq buffers (list (current-buffer)))
- (dolist (buf (cons (or (buffer-base-buffer) (current-buffer))
- (buffer-local-value 'org-fold-core--indirect-buffers
(or (buffer-base-buffer) (current-buffer)))))
- (if (buffer-live-p buf)
- (push buf buffers)
- (dolist (spec (org-fold-core-folding-spec-list))
- (when (and (not (org-fold-core-get-folding-spec-property spec
:global))
- (gethash (cons buf spec)
org-fold-core--property-symbol-cache))
- ;; Make sure that dead-properties variable can be passed
- ;; as argument to `remove-text-properties'.
- (push t dead-properties)
- (push (gethash (cons buf spec)
org-fold-core--property-symbol-cache)
- dead-properties))))))
+ (let ((all-buffers (buffer-local-value
+ 'org-fold-core--indirect-buffers
+ (or (buffer-base-buffer) (current-buffer)))))
+ (dolist (buf (cons (or (buffer-base-buffer) (current-buffer))
+ (buffer-local-value
'org-fold-core--indirect-buffers (or (buffer-base-buffer) (current-buffer)))))
+ (if (buffer-live-p buf)
+ (push buf buffers)
+ (dolist (spec (org-fold-core-folding-spec-list))
+ (when (and (not (org-fold-core-get-folding-spec-property spec
:global))
+ (gethash (cons buf spec)
org-fold-core--property-symbol-cache))
+ ;; Make sure that dead-properties variable can be passed
+ ;; as argument to `remove-text-properties'.
+ (push t dead-properties)
+ (push (gethash (cons buf spec)
org-fold-core--property-symbol-cache)
+ dead-properties)))))
+ (when dead-properties
+ (with-current-buffer (or (buffer-base-buffer) (current-buffer))
+ (setq-local org-fold-core--indirect-buffers
+ (seq-filter #'buffer-live-p all-buffers))))))
(dolist (buf buffers)
(with-current-buffer buf
- (with-silent-modifications
- (save-restriction
- (widen)
- (remove-text-properties
- (point-min) (point-max)
- dead-properties)))
+ (when dead-properties
+ (with-silent-modifications
+ (save-restriction
+ (widen)
+ (remove-text-properties
+ (point-min) (point-max)
+ dead-properties))))
,@body))))
;; This is the core function used to fold text in buffers. We use
@@ -1277,19 +1285,19 @@ to :front-sticky/:rear-sticky folding spec property.
If the folded region is folded with a spec with non-nil :fragile
property, unfold the region if the :fragile function returns non-nil."
;; If no insertions or deletions in buffer, skip all the checks.
- (unless (or (eq org-fold-core--last-buffer-chars-modified-tick
(buffer-chars-modified-tick))
- org-fold-core--ignore-modifications
+ (unless (or org-fold-core--ignore-modifications
+ (eq org-fold-core--last-buffer-chars-modified-tick
(buffer-chars-modified-tick))
(memql 'ignore-modification-checks
org-fold-core--optimise-for-huge-buffers))
;; Store the new buffer modification state.
(setq org-fold-core--last-buffer-chars-modified-tick
(buffer-chars-modified-tick))
(save-match-data
;; Handle changes in all the indirect buffers and in the base
;; buffer. Work around Emacs bug#46982.
- (when (eq org-fold-core-style 'text-properties)
- (org-fold-core-cycle-over-indirect-buffers
- ;; Re-hide text inserted in the middle/front/back of a folded
- ;; region.
- (unless (equal from to) ; Ignore deletions.
+ ;; Re-hide text inserted in the middle/front/back of a folded
+ ;; region.
+ (unless (equal from to) ; Ignore deletions.
+ (when (eq org-fold-core-style 'text-properties)
+ (org-fold-core-cycle-over-indirect-buffers
(dolist (spec (org-fold-core-folding-spec-list))
;; Reveal fully invisible text inserted in the middle
;; of visible portion of the buffer. This is needed,
diff --git a/lisp/org/org-mouse.el b/lisp/org/org-mouse.el
index 3b2c4cba624..e0671f3d7d5 100644
--- a/lisp/org/org-mouse.el
+++ b/lisp/org/org-mouse.el
@@ -975,7 +975,7 @@ This means, between the beginning of line and the point."
(interactive)
(org-back-to-heading)
(let ((minlevel 1000)
- (replace-text (concat (match-string 0) "* ")))
+ (replace-text (concat (make-string (org-current-level) ?*) "* ")))
(beginning-of-line 2)
(save-excursion
(while (not (or (eobp) (looking-at org-outline-regexp)))
diff --git a/lisp/org/org-version.el b/lisp/org/org-version.el
index 8d93af2c20d..9116e298aa9 100644
--- a/lisp/org/org-version.el
+++ b/lisp/org/org-version.el
@@ -5,13 +5,13 @@
(defun org-release ()
"The release version of Org.
Inserted by installing Org mode or when a release is made."
- (let ((org-release "9.6.6"))
+ (let ((org-release "9.6.7"))
org-release))
;;;###autoload
(defun org-git-version ()
"The Git version of Org mode.
Inserted by installing Org or when a release is made."
- (let ((org-git-version "release_9.6.6"))
+ (let ((org-git-version "release_9.6.7-5-gd1d0c3"))
org-git-version))
(provide 'org-version)
diff --git a/lisp/org/org.el b/lisp/org/org.el
index b81630fdc07..d49bc9645f5 100644
--- a/lisp/org/org.el
+++ b/lisp/org/org.el
@@ -9,7 +9,7 @@
;; URL: https://orgmode.org
;; Package-Requires: ((emacs "26.1"))
-;; Version: 9.6.6
+;; Version: 9.6.7
;; This file is part of GNU Emacs.
;;
@@ -5691,7 +5691,7 @@ highlighting was done, nil otherwise."
If this is called at a normal headline, the level is the number
of stars. Use `org-reduced-level' to remove the effect of
-`org-odd-levels'. Unlike to `org-current-level', this function
+`org-odd-levels-only'. Unlike `org-current-level', this function
takes into consideration inlinetasks."
(org-with-wide-buffer
(end-of-line)
@@ -6621,7 +6621,7 @@ headings in the region."
"Return the level of the current entry, or nil if before the first headline.
The level is the number of stars at the beginning of the
headline. Use `org-reduced-level' to remove the effect of
-`org-odd-levels'. Unlike to `org-outline-level', this function
+`org-odd-levels-only'. Unlike `org-outline-level', this function
ignores inlinetasks."
(let ((level (org-with-limited-levels (org-outline-level))))
(and (> level 0) level)))
@@ -9709,7 +9709,7 @@ when there is a statistics cookie in the headline!
(defun org-summary-todo (n-done n-not-done)
\"Switch entry to DONE when all subentries are done, to TODO otherwise.\"
- (let (org-log-done org-log-states) ; turn off logging
+ (let (org-log-done org-todo-log-states) ; turn off logging
(org-todo (if (= n-not-done 0) \"DONE\" \"TODO\"))))")
(defvar org-todo-statistics-hook nil
@@ -16253,7 +16253,8 @@ conventions:
2. Its description consists in a single link of the previous
type. In this case, that link must be a well-formed plain
- or angle link, i.e., it must have an explicit \"file\" type.
+ or angle link, i.e., it must have an explicit \"file\" or
+ \"attachment\" type.
Equip each image with the key-map `image-map'.
@@ -16284,7 +16285,7 @@ buffer boundaries with possible narrowing."
;; "file:" links. Also check link abbreviations since
;; some might expand to "file" links.
(file-types-re
- (format
"\\[\\[\\(?:file%s:\\|attachment:\\|[./~]\\)\\|\\]\\[\\(<?file:\\)"
+ (format
"\\[\\[\\(?:file%s:\\|attachment:\\|[./~]\\)\\|\\]\\[\\(<?\\(?:file\\|attachment\\):\\)"
(if (not link-abbrevs) ""
(concat "\\|" (regexp-opt link-abbrevs))))))
(while (re-search-forward file-types-re end t)
@@ -16323,7 +16324,9 @@ buffer boundaries with possible narrowing."
;; description.
(= (org-element-property :contents-end link)
(match-end 0))
- (match-string 2)))))))
+ (progn
+ (setq linktype (match-string 1))
+ (match-string 2))))))))
(when (and path (string-match-p file-extension-re path))
(let ((file (if (equal "attachment" linktype)
(progn
@@ -20656,7 +20659,7 @@ non-nil it will also look at invisible ones."
(if backward? (goto-char (point-min)) (outline-next-heading))
(org-back-to-heading invisible-ok)
(unless backward? (end-of-line)) ;do not match current headline
- (let ((level (- (match-end 0) (match-beginning 0) 1))
+ (let ((level (org-current-level))
(f (if backward? #'re-search-backward #'re-search-forward))
(count (if arg (abs arg) 1))
(result (point)))
diff --git a/lisp/org/ox-texinfo.el b/lisp/org/ox-texinfo.el
index f822f3d110c..5befcac1c39 100644
--- a/lisp/org/ox-texinfo.el
+++ b/lisp/org/ox-texinfo.el
@@ -1965,9 +1965,6 @@ EXT-PLIST, when provided, is a property list with external
parameters overriding Org default settings, but still inferior to
file-local settings.
-When optional argument PUB-DIR is set, use it as the publishing
-directory.
-
Return INFO file's name."
(interactive)
(let ((outfile (org-export-output-file-name ".texi" subtreep))
diff --git a/lisp/progmodes/c-ts-mode.el b/lisp/progmodes/c-ts-mode.el
index f16e06942b9..61898620c8d 100644
--- a/lisp/progmodes/c-ts-mode.el
+++ b/lisp/progmodes/c-ts-mode.el
@@ -574,9 +574,7 @@ MODE is either `c' or `cpp'."
:feature 'constant
`((true) @font-lock-constant-face
(false) @font-lock-constant-face
- (null) @font-lock-constant-face
- ,@(when (eq mode 'cpp)
- '((nullptr) @font-lock-constant-face)))
+ (null) @font-lock-constant-face)
:language mode
:feature 'keyword
diff --git a/lisp/progmodes/cmake-ts-mode.el b/lisp/progmodes/cmake-ts-mode.el
index 9d35d8077bd..53d471c381a 100644
--- a/lisp/progmodes/cmake-ts-mode.el
+++ b/lisp/progmodes/cmake-ts-mode.el
@@ -31,6 +31,7 @@
(eval-when-compile (require 'rx))
(declare-function treesit-parser-create "treesit.c")
+(declare-function treesit-query-capture "treesit.c")
(declare-function treesit-induce-sparse-tree "treesit.c")
(declare-function treesit-node-child "treesit.c")
(declare-function treesit-node-start "treesit.c")
@@ -87,6 +88,42 @@
"VERSION_GREATER_EQUAL" "VERSION_LESS" "VERSION_LESS_EQUAL")
"CMake if conditions for tree-sitter font-locking.")
+(defun cmake-ts-mode--font-lock-compatibility-fe9b5e0 ()
+ "Indent rules helper, to handle different releases of tree-sitter-cmake.
+Check if a node type is available, then return the right indent rules."
+ ;; handle commit fe9b5e0
+ (condition-case nil
+ (progn (treesit-query-capture 'cmake '((argument_list) @capture))
+ `(((foreach_command
+ ((argument_list) @font-lock-constant-face
+ (:match ,(rx-to-string
+ `(seq bol
+ (or ,@cmake-ts-mode--foreach-options)
+ eol))
+ @font-lock-constant-face))))
+ ((if_command
+ ((argument_list) @font-lock-constant-face
+ (:match ,(rx-to-string
+ `(seq bol
+ (or ,@cmake-ts-mode--if-conditions)
+ eol))
+ @font-lock-constant-face))))))
+ (error
+ `(((foreach_command
+ ((argument) @font-lock-constant-face
+ (:match ,(rx-to-string
+ `(seq bol
+ (or ,@cmake-ts-mode--foreach-options)
+ eol))
+ @font-lock-constant-face))))
+ ((if_command
+ ((argument) @font-lock-constant-face
+ (:match ,(rx-to-string
+ `(seq bol
+ (or ,@cmake-ts-mode--if-conditions)
+ eol))
+ @font-lock-constant-face))))))))
+
(defvar cmake-ts-mode--font-lock-settings
(treesit-font-lock-rules
:language 'cmake
@@ -95,20 +132,7 @@
:language 'cmake
:feature 'builtin
- `(((foreach_command
- ((argument) @font-lock-constant-face
- (:match ,(rx-to-string
- `(seq bol
- (or ,@cmake-ts-mode--foreach-options)
- eol))
- @font-lock-constant-face))))
- ((if_command
- ((argument) @font-lock-constant-face
- (:match ,(rx-to-string
- `(seq bol
- (or ,@cmake-ts-mode--if-conditions)
- eol))
- @font-lock-constant-face)))))
+ (cmake-ts-mode--font-lock-compatibility-fe9b5e0)
:language 'cmake
:feature 'comment
diff --git a/lisp/progmodes/js.el b/lisp/progmodes/js.el
index de1a820ba11..f2d7d3d3ecb 100644
--- a/lisp/progmodes/js.el
+++ b/lisp/progmodes/js.el
@@ -3427,6 +3427,18 @@ This function is intended for use in
`after-change-functions'."
;;; Tree sitter integration
+(defun js-jsx--treesit-indent-compatibility-bb1f97b ()
+ "Indent rules helper, to handle different releases of tree-sitter-javascript.
+Check if a node type is available, then return the right indent rules."
+ ;; handle commit bb1f97b
+ (condition-case nil
+ (progn (treesit-query-capture 'javascript '((jsx_fragment) @capture))
+ `(((match "<" "jsx_fragment") parent 0)
+ ((parent-is "jsx_fragment") parent js-indent-level)))
+ (error
+ `(((match "<" "jsx_text") parent 0)
+ ((parent-is "jsx_text") parent js-indent-level)))))
+
(defvar js--treesit-indent-rules
(let ((switch-case (rx "switch_" (or "case" "default"))))
`((javascript
@@ -3462,8 +3474,7 @@ This function is intended for use in
`after-change-functions'."
((parent-is "statement_block") parent-bol js-indent-level)
;; JSX
- ((match "<" "jsx_fragment") parent 0)
- ((parent-is "jsx_fragment") parent js-indent-level)
+ (js-jsx--treesit-indent-compatibility-bb1f97b)
((node-is "jsx_closing_element") parent 0)
((match "jsx_element" "statement") parent js-indent-level)
((parent-is "jsx_element") parent js-indent-level)
@@ -3490,6 +3501,35 @@ This function is intended for use in
`after-change-functions'."
"&&" "||" "!")
"JavaScript operators for tree-sitter font-locking.")
+(defun js-jsx--treesit-font-lock-compatibility-bb1f97b ()
+ "Font lock rules helper, to handle different releases of
tree-sitter-javascript.
+Check if a node type is available, then return the right font lock rules."
+ ;; handle commit bb1f97b
+ (condition-case nil
+ (progn (treesit-query-capture 'javascript '((member_expression)
@capture))
+ '((jsx_opening_element
+ [(member_expression (identifier)) (identifier)]
+ @font-lock-function-call-face)
+
+ (jsx_closing_element
+ [(member_expression (identifier)) (identifier)]
+ @font-lock-function-call-face)
+
+ (jsx_self_closing_element
+ [(member_expression (identifier)) (identifier)]
+ @font-lock-function-call-face)))
+ (error '((jsx_opening_element
+ [(nested_identifier (identifier)) (identifier)]
+ @font-lock-function-call-face)
+
+ (jsx_closing_element
+ [(nested_identifier (identifier)) (identifier)]
+ @font-lock-function-call-face)
+
+ (jsx_self_closing_element
+ [(nested_identifier (identifier)) (identifier)]
+ @font-lock-function-call-face)))))
+
(defvar js--treesit-font-lock-settings
(treesit-font-lock-rules
@@ -3599,21 +3639,8 @@ This function is intended for use in
`after-change-functions'."
:language 'javascript
:feature 'jsx
- '((jsx_opening_element
- [(nested_identifier (identifier)) (identifier)]
- @font-lock-function-call-face)
-
- (jsx_closing_element
- [(nested_identifier (identifier)) (identifier)]
- @font-lock-function-call-face)
-
- (jsx_self_closing_element
- [(nested_identifier (identifier)) (identifier)]
- @font-lock-function-call-face)
-
- (jsx_attribute
- (property_identifier)
- @font-lock-constant-face))
+ (append (js-jsx--treesit-font-lock-compatibility-bb1f97b)
+ '((jsx_attribute (property_identifier) @font-lock-constant-face)))
:language 'javascript
:feature 'number
diff --git a/lisp/progmodes/typescript-ts-mode.el
b/lisp/progmodes/typescript-ts-mode.el
index ccf0026d7ba..a4752f7a2ee 100644
--- a/lisp/progmodes/typescript-ts-mode.el
+++ b/lisp/progmodes/typescript-ts-mode.el
@@ -33,6 +33,7 @@
(require 'c-ts-common) ; For comment indent and filling.
(declare-function treesit-parser-create "treesit.c")
+(declare-function treesit-query-capture "treesit.c")
(defcustom typescript-ts-mode-indent-offset 2
"Number of spaces for each indentation step in `typescript-ts-mode'."
@@ -75,6 +76,18 @@
table)
"Syntax table for `typescript-ts-mode'.")
+(defun tsx-ts-mode--indent-compatibility-b893426 ()
+ "Indent rules helper, to handle different releases of tree-sitter-tsx.
+Check if a node type is available, then return the right indent rules."
+ ;; handle commit b893426
+ (condition-case nil
+ (progn (treesit-query-capture 'tsx '((jsx_fragment) @capture))
+ `(((match "<" "jsx_fragment") parent 0)
+ ((parent-is "jsx_fragment") parent
typescript-ts-mode-indent-offset)))
+ (error
+ `(((match "<" "jsx_text") parent 0)
+ ((parent-is "jsx_text") parent typescript-ts-mode-indent-offset)))))
+
(defun typescript-ts-mode--indent-rules (language)
"Rules used for indentation.
Argument LANGUAGE is either `typescript' or `tsx'."
@@ -110,16 +123,15 @@ Argument LANGUAGE is either `typescript' or `tsx'."
((parent-is "binary_expression") parent-bol
typescript-ts-mode-indent-offset)
,@(when (eq language 'tsx)
- `(((match "<" "jsx_fragment") parent 0)
- ((parent-is "jsx_fragment") parent typescript-ts-mode-indent-offset)
- ((node-is "jsx_closing_element") parent 0)
- ((match "jsx_element" "statement") parent
typescript-ts-mode-indent-offset)
- ((parent-is "jsx_element") parent typescript-ts-mode-indent-offset)
- ((parent-is "jsx_text") parent-bol typescript-ts-mode-indent-offset)
- ((parent-is "jsx_opening_element") parent
typescript-ts-mode-indent-offset)
- ((parent-is "jsx_expression") parent-bol
typescript-ts-mode-indent-offset)
- ((match "/" "jsx_self_closing_element") parent 0)
- ((parent-is "jsx_self_closing_element") parent
typescript-ts-mode-indent-offset)))
+ (append (tsx-ts-mode--indent-compatibility-b893426)
+ `(((node-is "jsx_closing_element") parent 0)
+ ((match "jsx_element" "statement") parent
typescript-ts-mode-indent-offset)
+ ((parent-is "jsx_element") parent
typescript-ts-mode-indent-offset)
+ ((parent-is "jsx_text") parent-bol
typescript-ts-mode-indent-offset)
+ ((parent-is "jsx_opening_element") parent
typescript-ts-mode-indent-offset)
+ ((parent-is "jsx_expression") parent-bol
typescript-ts-mode-indent-offset)
+ ((match "/" "jsx_self_closing_element") parent 0)
+ ((parent-is "jsx_self_closing_element") parent
typescript-ts-mode-indent-offset))))
;; FIXME(Theo): This no-node catch-all should be removed. When is it
needed?
(no-node parent-bol 0))))
@@ -142,6 +154,39 @@ Argument LANGUAGE is either `typescript' or `tsx'."
"&&" "||" "!" "?.")
"TypeScript operators for tree-sitter font-locking.")
+(defun tsx-ts-mode--font-lock-compatibility-bb1f97b (language)
+ "Font lock rules helper, to handle different releases of tree-sitter-tsx.
+Check if a node type is available, then return the right font lock rules.
+Argument LANGUAGE is either `typescript' or `tsx'."
+ ;; handle commit bb1f97b
+ ;; Warning: treesitter-query-capture says both node types are valid,
+ ;; but then raises an error if the wrong node type is used. So it is
+ ;; important to check with the new node type (member_expression)
+ (condition-case nil
+ (progn (treesit-query-capture language '((member_expression) @capture))
+ '((jsx_opening_element
+ [(member_expression (identifier)) (identifier)]
+ @typescript-ts-jsx-tag-face)
+
+ (jsx_closing_element
+ [(member_expression (identifier)) (identifier)]
+ @typescript-ts-jsx-tag-face)
+
+ (jsx_self_closing_element
+ [(member_expression (identifier)) (identifier)]
+ @typescript-ts-jsx-tag-face)))
+ (error '((jsx_opening_element
+ [(nested_identifier (identifier)) (identifier)]
+ @typescript-ts-jsx-tag-face)
+
+ (jsx_closing_element
+ [(nested_identifier (identifier)) (identifier)]
+ @typescript-ts-jsx-tag-face)
+
+ (jsx_self_closing_element
+ [(nested_identifier (identifier)) (identifier)]
+ @typescript-ts-jsx-tag-face)))))
+
(defun typescript-ts-mode--font-lock-settings (language)
"Tree-sitter font-lock settings.
Argument LANGUAGE is either `typescript' or `tsx'."
@@ -293,19 +338,8 @@ Argument LANGUAGE is either `typescript' or `tsx'."
:language language
:feature 'jsx
- `((jsx_opening_element
- [(nested_identifier (identifier)) (identifier)]
- @typescript-ts-jsx-tag-face)
-
- (jsx_closing_element
- [(nested_identifier (identifier)) (identifier)]
- @typescript-ts-jsx-tag-face)
-
- (jsx_self_closing_element
- [(nested_identifier (identifier)) (identifier)]
- @typescript-ts-jsx-tag-face)
-
- (jsx_attribute (property_identifier) @typescript-ts-jsx-attribute-face))
+ (append (tsx-ts-mode--font-lock-compatibility-bb1f97b language)
+ `((jsx_attribute (property_identifier)
@typescript-ts-jsx-attribute-face)))
:language language
:feature 'number
diff --git a/lisp/subr.el b/lisp/subr.el
index 36aeeabea47..89278241777 100644
--- a/lisp/subr.el
+++ b/lisp/subr.el
@@ -423,8 +423,8 @@ PREFIX is a string, and defaults to \"g\"."
(make-symbol (format "%s%d" (or prefix "g") num))))
(defun ignore (&rest _arguments)
- "Do nothing and return nil.
-This function accepts any number of ARGUMENTS, but ignores them.
+ "Ignore ARGUMENTS, do nothing, and return nil.
+This function accepts any number of arguments in ARGUMENTS.
Also see `always'."
;; Not declared `side-effect-free' because we don't want calls to it
;; elided; see `byte-compile-ignore'.
@@ -433,8 +433,8 @@ Also see `always'."
nil)
(defun always (&rest _arguments)
- "Do nothing and return t.
-This function accepts any number of ARGUMENTS, but ignores them.
+ "Ignore ARGUMENTS, do nothing, and return t.
+This function accepts any number of arguments in ARGUMENTS.
Also see `ignore'."
(declare (pure t) (side-effect-free error-free))
t)
diff --git a/lisp/textmodes/paragraphs.el b/lisp/textmodes/paragraphs.el
index 6c33380b6bd..fd28bfe8016 100644
--- a/lisp/textmodes/paragraphs.el
+++ b/lisp/textmodes/paragraphs.el
@@ -201,7 +201,6 @@ This is desirable in modes where blank lines are the
paragraph delimiters."
:type 'boolean
:safe #'booleanp)
-;; Silence the compiler.
(defun forward-paragraph (&optional arg)
"Move forward to end of paragraph.
With argument ARG, do it ARG times;
diff --git a/src/character.c b/src/character.c
index 9389e1c0098..f4164360f21 100644
--- a/src/character.c
+++ b/src/character.c
@@ -260,8 +260,12 @@ char_width (int c, struct Lisp_Char_Table *dp)
DEFUN ("char-width", Fchar_width, Schar_width, 1, 1, 0,
- doc: /* Return width of CHAR when displayed in the current buffer.
-The width is measured by how many columns it occupies on the screen.
+ doc: /* Return width of CHAR in columns when displayed in the current
buffer.
+The width of CHAR is measured by how many columns it will occupy on the screen.
+This is based on data in `char-width-table', and ignores the actual
+metrics of the character's glyph as determined by its font.
+If the display table in effect replaces CHAR on display with
+something else, the function returns the width of the replacement.
Tab is taken to occupy `tab-width' columns.
usage: (char-width CHAR) */)
(Lisp_Object ch)
@@ -457,20 +461,26 @@ lisp_string_width (Lisp_Object string, ptrdiff_t from,
ptrdiff_t to,
}
DEFUN ("string-width", Fstring_width, Sstring_width, 1, 3, 0,
- doc: /* Return width of STRING when displayed in the current buffer.
-Width is measured by how many columns it occupies on the screen.
+ doc: /* Return width of STRING in columns when displayed in the current
buffer.
+Width of STRING is measured by how many columns it will occupy on the screen.
+
Optional arguments FROM and TO specify the substring of STRING to
consider, and are interpreted as in `substring'.
-When calculating width of a multibyte character in STRING,
-only the base leading-code is considered; the validity of
-the following bytes is not checked. Tabs in STRING are always
-taken to occupy `tab-width' columns. The effect of faces and fonts
-used for non-Latin and other unusual characters (such as emoji) is
-ignored as well, as are display properties and invisible text.
-For these reasons, the results are not generally reliable;
-for accurate dimensions of text as it will be displayed,
-use `string-pixel-width' or `window-text-pixel-size' instead.
+Width of each character in STRING is generally taken according to
+`char-width', but character compositions and the display table in
+effect are taken into consideration.
+Tabs in STRING are always assumed to occupy `tab-width' columns,
+although they might take fewer columns depending on the column where
+they begin on display.
+The effect of faces and fonts, including fonts used for non-Latin and
+other unusual characters, such as emoji, is ignored, as are display
+properties and invisible text.
+
+For these reasons, the results are just an approximation, especially
+on GUI frames; for accurate dimensions of text as it will be
+displayed, use `string-pixel-width' or `window-text-pixel-size'
+instead.
usage: (string-width STRING &optional FROM TO) */)
(Lisp_Object str, Lisp_Object from, Lisp_Object to)
{
diff --git a/src/cmds.c b/src/cmds.c
index 37e1779296a..a9b4bd9c321 100644
--- a/src/cmds.c
+++ b/src/cmds.c
@@ -518,7 +518,8 @@ syms_of_cmds (void)
DEFVAR_LISP ("post-self-insert-hook", Vpost_self_insert_hook,
doc: /* Hook run at the end of `self-insert-command'.
-This is run after inserting the character. */);
+This is run after inserting a character.
+The hook can access the inserted character via `last-command-event'. */);
Vpost_self_insert_hook = Qnil;
defsubr (&Sforward_char);
diff --git a/src/nsfns.m b/src/nsfns.m
index 2519f1ebac8..f962de02cb9 100644
--- a/src/nsfns.m
+++ b/src/nsfns.m
@@ -3840,11 +3840,7 @@ all_nonzero_ascii (unsigned char *str, ptrdiff_t n)
/* Make a Lisp string from an NSString. */
- (Lisp_Object)lispString
{
- /* `make_string' creates a string with a given length, instead of
- searching for a trailing NULL byte to determine its end. This is
- important because this function is called to convert NSString
- objects containing clipboard data, which can contain NUL bytes,
- into Lisp strings. (bug#64697) */
+ // make_string behaves predictably and correctly with UTF-8 input.
return make_string ([self UTF8String],
[self lengthOfBytesUsingEncoding: NSUTF8StringEncoding]);
}
diff --git a/src/sound.c b/src/sound.c
index a51cdb6d97a..9c023725da0 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -1147,6 +1147,7 @@ alsa_write (struct sound_device *sd, const char *buffer,
ptrdiff_t nbytes)
alsa_sound_perror ("Can't recover from underrun, prepare
failed",
err);
}
+#ifdef ESTRPIPE
else if (err == -ESTRPIPE)
{
while ((err = snd_pcm_resume (p->handle)) == -EAGAIN)
@@ -1160,6 +1161,7 @@ alsa_write (struct sound_device *sd, const char *buffer,
ptrdiff_t nbytes)
err);
}
}
+#endif
else
alsa_sound_perror ("Error writing to sound device", err);
diff --git a/src/xfns.c b/src/xfns.c
index 854a85f5306..aea2f4b880e 100644
--- a/src/xfns.c
+++ b/src/xfns.c
@@ -5393,6 +5393,17 @@ This function is an internal primitive--use `make-frame'
instead. */)
gui_default_parameter (f, parms, Qfullscreen, Qnil,
"fullscreen", "Fullscreen", RES_TYPE_SYMBOL);
+#ifdef USE_CAIRO
+ /* Set the initial size of the Cairo surface to the frame's current
+ width and height. If the window manager doesn't resize the new
+ frame after it's first mapped, Emacs will create a surface with
+ empty dimensions in response to to the initial exposure event,
+ which will persist until the next time it's resized.
+ (bug#64923) */
+ x_cr_update_surface_desired_size (f, FRAME_PIXEL_WIDTH (f),
+ FRAME_PIXEL_HEIGHT (f));
+#endif /* USE_CAIRO */
+
/* Make the window appear on the frame and enable display, unless
the caller says not to. However, with explicit parent, Emacs
cannot control visibility, so don't try. */