Hong Xu [Sat, 4 Jan 2025 20:32:24 +0000 (12:32 -0800)]
Improve the documentation of 'key-valid-p'
* lisp/keymap.el (key-valid-p): Add an function key and mouse
button example. Mention '<left>' as a cursor control key
instead of a function key. Briefly explain what an event may
be. (Bug#75366)
Jared Finder [Tue, 7 Jan 2025 04:52:11 +0000 (20:52 -0800)]
Support TTY child frames with GPM mouse
* lisp/frame.el (x-list-fonts): Delete `frame-at', to move to
C implementation.
* lisp/xt-mouse.el (xterm-mouse-event): Call new `tty-frame-at'.
* src/term.c (tty_frame_at, Ftty_frame_at): New C function,
replacing `frame-at' only for TTYs.
(term_mouse_position): Use last_mouse_frame when it is set.
(handle_one_term_event): Call tty_frame_at to get frame under
mouse, store it in last_mouse_frame. Alter event coordinates
based on mouse frame.
(syms_of_term): Add tty-frame-at, last_mouse_frame.
* src/termhooks.h: Make Gpm_Event parameter const.
Martin Rudalics [Fri, 10 Jan 2025 08:24:20 +0000 (09:24 +0100)]
Have 'split-window' optionally resurrect deleted windows
* src/window.c (Fwindow_old_buffer): Handle deleted window as
argument.
(make_parent_window): Remove function.
(Fsplit_window_internal): New argument REFER for resurrecting
deleted windows. Incorporate functionality of defunct
make_parent_window.
(Fdelete_window_internal, delete_all_child_windows): Store any
deleted window's buffer in the window's old_buffer slot.
(window_dead_windows_table): Make it a 'value' type hash table
so the sequence number cannot affect its weakness.
* lisp/window.el (split-window): New argument REFER.
* doc/lispref/windows.texi (Resurrecting Windows): New section.
(Splitting Windows): Explain new argument REFER.
(Window Hooks): Rewrite description of 'window-old-buffer'.
* etc/NEWS: Mention new REFER argument for 'split-window'.
Juri Linkov [Fri, 10 Jan 2025 07:33:49 +0000 (09:33 +0200)]
Use the treesit thing 'list' with symbol property 'treesit-thing-symbol'
* doc/lispref/parsing.texi (User-defined Things): Mention new
functions 'treesit-forward-list', 'treesit-down-list',
'treesit-up-list', 'treesit-show-paren-data' that use the thing
'list' with the symbol property 'treesit-thing-symbol' (bug#73404).
* lisp/treesit.el: Put the property 'treesit-thing-symbol'
on the symbol 'list'.
(treesit--forward-list-with-default, treesit-down-list)
(treesit-up-list, treesit-navigate-thing)
(treesit-show-paren-data--categorize, treesit-major-mode-setup):
Replace 'sexp-list' with 'list'.
* src/treesit.c (treesit_traverse_validate_predicate)
(treesit_traverse_match_predicate): Check if the 'pred'
symbol has the property 'Qtreesit_thing_symbol'.
(syms_of_treesit): New symbol 'Qtreesit_thing_symbol'.
Juri Linkov [Thu, 9 Jan 2025 18:33:03 +0000 (20:33 +0200)]
* lisp/man.el (Man-fit-to-window): Don't update on tty with MANWIDTH.
Check if 'Man-columns' is non-nil before trying to reformat
the manpage buffer. The value of the varible 'Man-columns'
is nil on a non-window system where "MANWIDTH" or "COLUMNS"
is defined. And the return value of the function 'Man-columns'
is meaningless in this case anyway. So no need to react
to changes in window width (bug#74924).
Martin Rudalics [Thu, 9 Jan 2025 08:37:13 +0000 (09:37 +0100)]
In xt_action_hook don't act on deleted window's scroll bar (Bug#75120)
* src/xterm.c (xt_action_hook): Make sure window_being_scrolled
is live (Bug#75120).
* src/pdumper.c (dump_subr): Update pertinent hash of
HASH_Lisp_Subr.
Kierin Bell [Wed, 8 Jan 2025 23:29:55 +0000 (18:29 -0500)]
Fix documentation of Iroquoian input methods
* lisp/leim/quail/iroquoian.el: Fix typos in Oneida endonym and in the
docstring of `haudenosaunee-postfix' about keys for inputting Onondaga
nasals. (Bug#75448)
Arash Esbati [Wed, 8 Jan 2025 19:47:43 +0000 (20:47 +0100)]
Remove support for supertabular from RefTeX
* doc/misc/reftex.texi (Builtin Label Environments):
* lisp/textmodes/reftex-vars.el (reftex-label-alist-builtin)
(reftex-default-label-alist-entries): Delete entries for the
supertabular environment. supertabular is an extension of the
normal tabular environment, and therefore doesn't contain a
caption and label. Hence, supporting supertabular in RefTeX is
useless.
Arash Esbati [Wed, 8 Jan 2025 18:12:49 +0000 (19:12 +0100)]
Replace obsolete subfigure package with subfig
* doc/misc/reftex.texi (Builtin Label Environments): Mention the
subfig LaTeX package instead of the obsolete subfigure.
* lisp/textmodes/reftex-vars.el (reftex-label-alist-builtin):
Replace obsolete subfigure entry with subfig. Adjust the macro
names accordingly and the regexp for matching the context.
Unify the descriptions of all entries.
(reftex-default-label-alist-entries): Use subfig as well.
Eshel Yaron [Thu, 9 Jan 2025 11:22:03 +0000 (12:22 +0100)]
Auto-adapt completion preview background color
Teach Completion Preview mode to automatically remap its
faces such that the background color of the preview overlay
matches the background color of the buffer text that is
being completed. Crucially, this resolves an issue where
the preview overlay didn't look nice with hl-line-mode on.
Also see related discussion in bug#71282.
* lisp/completion-preview.el
(completion-preview-adapt-background-color): New option.
(completion-preview--bg-color): New function.
(completion-preview--face-remap-cookie-jar): New variable.
(completion-preview--make-overlay): Use them.
Stefan Kangas [Wed, 8 Jan 2025 05:39:22 +0000 (06:39 +0100)]
Move define_error declaration and docstring
* src/lisp.h (define_error): Move declaration to its proper place, make
external, and move its docstring...
* src/eval.c (define_error): ...to its function definition.
F. Jason Park [Wed, 8 Jan 2025 01:17:50 +0000 (17:17 -0800)]
; Mark ERC keep-place-indicator test as :unstable
* test/lisp/erc/erc-scenarios-keep-place-indicator.el
(erc-scenarios-keep-place-indicator--follow): Don't run on EMBA pending
investigation of test timing out.
F. Jason Park [Sun, 5 Jan 2025 23:59:46 +0000 (15:59 -0800)]
Improve use of Flyspell's API in erc-spelling
* etc/ERC-NEWS: Announce deprecation of `erc-spelling-flyspell-verify'
and `erc-spelling-unhighlight-word'. A slight behavioral change not
worth mentioning is that, previously, ERC arranged for Flyspell to
ignore any word immediately following a forward slash anywhere in the
prompt input, even those for which the slash served as mere
punctuation (a "stroke"), as in "something/misspelt." As of this
change, Flyspell only unconditionally exempts an initial slash-prepended
word, like "tableflip" in "ERC> /tableflip", and checks all others that
follow against known slash commands.
* lisp/erc/erc-spelling.el: Change top-level assignment of `erc-mode'
symbol-property `flyspell-mode-predicate' from
`erc-spelling-flyspell-verify' to `erc-spelling--flyspell-input-p'.
(erc-spelling-mode, erc-spelling-disable): Remove local member from
`flyspell-incorrect-hook'.
(erc-spelling-init): Add `erc-spelling--flyspell-check' to
`flyspell-incorrect-hook' locally. Don't bother explicitly setting
`flyspell-generic-check-word-predicate' because Flyspell already does
that for clients using the `flyspell-mode-predicte' interface.
(erc-spelling-flyspell-verify, erc-spelling-unhighlight-word): Mark
obsolete.
(erc-spelling--flyspell-check, erc-spelling--flyspell-input-p): New
functions, essentially the two halves of a reworked and bifurcated
`erc-spelling-flyspell-verify'. Though used as a predicate, the first
is not named as such because it performs side effects.
* test/lisp/erc/erc-scenarios-spelling.el: New file.
* test/lisp/erc/resources/spelling/auto-correct.eld: New file.
(Bug#75327)
F. Jason Park [Mon, 6 Jan 2025 00:58:50 +0000 (16:58 -0800)]
Fix regression in erc-nicks involving color pools
* lisp/erc/erc-nicks.el (erc-nicks-colors): Tweak doc.
(erc-nicks--create-pool-function): On graphic displays, set value to
`erc-nicks--create-culled-pool', the original default. This fixes a bug
in which ERC mapped all pool members to a primary color, thus excluding
the bulk of them. Thanks to Trevor Arjeski for discovering it.
(erc-nicks--create-coerced-pool): Mention the text-terminal-only
requirement in doc.
(erc-nicks-refresh): Improve doc.
* test/lisp/erc/erc-nicks-tests.el (erc-nicks-tests--track-faces):
Enable `erc-track-mode' prior to running body.
Arash Esbati [Tue, 7 Jan 2025 21:02:13 +0000 (22:02 +0100)]
Update RefTeX manual
* doc/misc/reftex.texi: (Builtin Label Environments): Mention
supported LaTeX packages ctable, minted and listings.
(Reference Styles): Update the supported reference styles and the
corresponding macros.
(Citation Styles): Mention support for biblatex package.
(Language Support): Describe usage of non-ASCII characters in the
LaTeX \label definition.
(Style Files): Mention biblatex.el as well.
(Options - Defining Label Environments): Add entry for
`reftex-label-regexps' option.
Other minor improvements.
Roland Winkler [Tue, 7 Jan 2025 17:56:48 +0000 (11:56 -0600)]
bibtex-braced-string-syntax-table: fix bug #68477
* lisp/textmodes/bibtex.el (bibtex-braced-string-syntax-table):
Give all parentheses the syntax punctuation so that we do not
choke because of unbalanced parentheses other than braces (bug
* lisp/gnus/nnimap.el (nnimap-make-process-buffer):
* lisp/gnus/nntp.el (nntp-make-process-buffer):
* lisp/simple.el (next-error-internal):
Prefer more user-readable `%s` format over `%S` for buffers.
* lisp/image/image-dired.el (image-dired-show-all-from-dir): Delegate
figuring out default-directory to dired. This handles the case where
image-dired is called with a cons cell that has a directory in the car
and a list of files in the cdr, which dired can handle, and therefore
allows image-dired-show-all-from-dir to show an arbitrary list of
images. It also means that image-dired-show-all-from-dir can handle
wildcards.
Ref: https://lists.gnu.org/r/emacs-devel/2025-01/msg00048.html
Stefan Kangas [Mon, 6 Jan 2025 19:03:48 +0000 (20:03 +0100)]
New test for finding C header files
The assumption here is that if there is a C compiler, there is also a
math.h header somewhere. The test should fail if we can't find that
file, and hopefully that will provoke users to create bug reports.
Let's see how far we can take this idea; we might have to give up and
disable the test in some configurations. But doing that now seems
premature, even if we had a list of affected systems (which we don't).
* lisp/man.el (man--find-header-file): Factor out new function...
(Man-view-header-file): ...from here.
* test/lisp/man-tests.el (man-tests-find-header-file): New test.
Stefan Kangas [Mon, 6 Jan 2025 11:29:21 +0000 (12:29 +0100)]
Fix finding C headers with clang
This fixes following "#include" references in 'M-x man' buffers, and
using ffap, both on macOS machines, and on systems where for some reason
clang is available but gcc is not.
* lisp/subr.el (internal--c-header-file-path): Fix finding C
headers with clang.
(internal--gcc-is-clang-p): New function factored out from...
* lisp/emacs-lisp/ert-x.el (ert-gcc-is-clang-p): ...here.
* lisp/man.el (Man-header-file-path): Bump :version tag.
* test/lisp/subr-tests.el
(subr-tests-internal--c-header-file-path/clang-mocked): New test.
Stefan Kangas [Mon, 6 Jan 2025 09:08:01 +0000 (10:08 +0100)]
New function internal--c-header-file-path
It is not clear to me where this function properly belongs, so let's put
it in subr.el for now. This avoids code duplication without introducing
a dependency between man and ffap. It can always be moved later.
* lisp/subr.el (internal--c-header-file-path): New function.
* lisp/man.el (Man-header-file-path):
* lisp/ffap.el (ffap-c-path): Use above new function.
* test/lisp/subr-tests.el (ert-x): Require.
(subr-tests-internal--c-header-file-path)
(subr-tests-internal--c-header-file-path/gcc-mocked): New tests.
Stephen Gildea [Mon, 6 Jan 2025 19:00:07 +0000 (11:00 -0800)]
time-stamp: lower- and title-case weekday and month names
* lisp/time-stamp.el (time-stamp-string-preprocess): new formats for
lowercase weekday name, lowercase month name, and system name
* test/lisp/time-stamp.el: new tests
(formatz-generate-tests): Better doc strings for generated test fns.
Juri Linkov [Mon, 6 Jan 2025 18:02:18 +0000 (20:02 +0200)]
* lisp/treesit.el: Use forward-list-default-function for C-M-n
(treesit--forward-list-with-default): New internal function
with body from 'treesit-forward-sexp-list' (bug#73404).
(treesit-forward-sexp-list, treesit-forward-list):
Replace body with a call to the shared implementation
'treesit--forward-list-with-default' using the
corresponding default function as an argument.
João Távora [Mon, 6 Jan 2025 10:47:13 +0000 (10:47 +0000)]
Eglot: new eglot--format to fix quote substitution woes (bug#73472)
* lisp/progmodes/eglot.el (eglot--guess-contact): Use eglot--format.
(eglot--format): New helper.
(eglot--error, eglot--message, eglot--warn)
(eglot--apply-text-edits, eglot-rename): Use eglot--format.
Peter Oliver [Tue, 16 Jul 2024 23:06:02 +0000 (00:06 +0100)]
Try harder to stabilize dired-test-bug27243-02
* test/lisp/dired-tests.el (dired-test-bug27243-02): Don't rely on the
expected point, since columns will move if the size of the parent directory
changes order of magnitude. (Bug#72120)
w08r [Thu, 19 Dec 2024 09:53:02 +0000 (09:53 +0000)]
Enable extra flags in 'go-ts-mode' test commands
* lisp/progmodes/go-ts-mode.el (go-ts-mode-test-flags):
(go-ts-mode--get-test-flags): New custom variable and function
for controlling test behaviour.
(go-ts-mode--compile-test): Updated to use new test flags
variable for passing extra information to the go test command
line.
(go-ts-mode-test-this-package): Updated to use new test flags
variable for passing extra information to the go test command
line. Removed incorrect use of -run flag.
* etc/NEWS: Announce the new user option. (Bug#74786)
Eli Zaretskii [Sun, 5 Jan 2025 10:40:39 +0000 (12:40 +0200)]
Allow to remap 'header-line' face
* src/xfaces.c (realize_basic_faces): Bind 'face-remapping-alist'
to nil while realizing basic faces.
(lookup_basic_face): Force realizing a face whose 'inherit'
attribute is non-nil. (Bug#73862)
(treesit-show-paren-data--categorize): Use 'treesit-thing-defined-p'
to check if the thing exists for the language at POS before calling
'treesit-parent-until' that raises an error for an undefined thing.
(treesit-thing-defined-p): Add the alias signature to the docstring.
Yuan Fu [Sat, 4 Jan 2025 19:53:39 +0000 (11:53 -0800)]
Fix tsx-ts-mode syntax propertize function (bug#73978)
* lisp/progmodes/typescript-ts-mode.el:
(tsx-ts--syntax-propertize-captures): Apply punctuation syntax
on balanced pairs, instead of using string syntax.
Use 'treesit-thing-next' and 'treesit-thing-prev' with
'treesit-node-named' to transpose named siblings that leaves the right
punctuation in anonymous nodes between named siblings. Fall back
to 'transpose-sexps-default-function' inside strings and comments.
(treesit-node-named): New helper function.
Jared Finder [Thu, 2 Jan 2025 06:36:25 +0000 (22:36 -0800)]
Don't always enable xterm-mouse-mode (bug#74833)
Many terminals set the environment variable TERM to "xterm" even when they
don't support all functionality in xterm. This means that enabling
xterm-mouse-mode can break critical editing workflows like copy/paste. This
adds checks for the specific terminal Emacs is run in and only enables
xterm-mouse-mode on terminals knows to support all critical editing workflows.
* etc/NEWS: Update announcement
* lisp/term/xterm.el (xterm--auto-xt-mouse-allowed-names)
(xterm--auto-xt-mouse-allowed-types): New variables to control
what terminals automatically enable xterm-mouse-mode.
(xterm--report-background-handler, xterm--version-handler): Use
xterm--read-string.
(xterm--read-string, xterm--query-name-and-version): New
function.
(xterm--init): Check what terminal is running and if
xterm-mouse-mode was manually called.
* lisp/xt-mouse.el (xterm-mouse-mode-called): New variable.
(xterm-mouse-mode): Set xterm-mouse-mode-called. Mention
automatic call by xterm--init. Delete outdated comment text.
Eli Zaretskii [Sat, 4 Jan 2025 12:44:10 +0000 (14:44 +0200)]
Update eln-cache when --init-directory is used
* lisp/startup.el (normal-top-level): Update eln-cache after
'user-emacs-directory' is set by --init-directory. Patch by
Jordan Isaacs <jordan@snowytrees.dev>. (Bug#75022)
Hong Xu [Thu, 19 Dec 2024 22:33:35 +0000 (14:33 -0800)]
Use `keymap*-set' over `global-set-key'/`define-key' in elisp intro
* doc/lispintro/emacs-lisp-intro.texi (Key Bindings): Since
`global-set-key' and `define-key' are considered legacy, we encourage
`keymap-global-set' and `keymap-set' now. (Bug#74999)
Eli Zaretskii [Sat, 4 Jan 2025 10:51:40 +0000 (12:51 +0200)]
Fix mouse clicks on characters with parenthesis syntax
* lisp/mouse.el (context-menu-region, mouse-skip-word)
(mouse-start-end): Use 'syntax-after' instead of 'char-syntax', to
pay attention to 'syntax-table' text properties. (Bug#74415)
Yuan Fu [Sat, 4 Jan 2025 05:39:32 +0000 (21:39 -0800)]
; Fix typo in treesit-explore-mode
* lisp/treesit.el (treesit-explore-mode): We added the hook to
kill-buffer-hook, so make sure to remove it from
kill-buffer-hook, not post-command-hook.
Stefan Monnier [Fri, 3 Jan 2025 18:24:26 +0000 (13:24 -0500)]
(mpc-cmd-find): Try and fix bug#41493
* lisp/mpc.el (mpc--proc-alist-to-alists): Don't presume that we
have either `directory` or `file` entries, instead allow both at
the same time.
(mpc-cmd-find) <Directory>: Don't presume that `directory`
entries have no associated data, so throw them away only after
having parsed them with `mpc--proc-alist-to-alists`.