Commit graph

177987 commits

Author SHA1 Message Date
F. Jason Park
8f18b398a5 ; Don't assume snapshot exists in ERC test helper
* test/lisp/erc/erc-scenarios-base-association.el
(erc-scenarios-common--base-association-multi-net): Increase timeout.
* test/lisp/erc/erc-scenarios-base-compat-rename-bouncer.el
(erc-scenarios-common--base-compat-no-rename-bouncer): Increase timeout.
* test/lisp/erc/erc-scenarios-keep-place-indicator.el
(erc-scenarios-keep-place-indicator--follow): Skip in CI.
* test/lisp/erc/resources/erc-d/resources/incremental.eld: Increase
timeout.
* test/lisp/erc/resources/erc-tests-common.el
(erc-tests-common-snapshot-compare): Forgo inserting file if generating
snapshot interactively because it may not yet exist.
2025-04-16 17:30:13 -07:00
João Távora
c5b97b7b32 Eglot: be aware of LSP version of contextual diagnostics
In certain situations, Eglot has to report to the server parts
of the diagnostics that it itself sent us.  The server may use
this as context to compute code actions, for example.  Eglot
selects diagnostics by asking Flymake, looking for the ones that
contain Eglot-specific cookies.

But when doing so, it is important to also be aware of the LSP
document version these each of these diagnostics pertain to,
since if a diagonstic in the buffer pertains to an older version
of the LSP document (because Flymake fired or the server hasn't
pushed a new set), that diagnostics 'eglot-lsp-data' cookie is
invalid and possibly harmful.

An example is when a diagnostic extends all the way to the end
of the buffer.  If we attempt to fix by shortening the buffer,
an Eldoc-started code actions request may be sent to the server
considering the soon-to-be-deleted Flymake diagnostic as
context.  But that diagnostic's 'eglot-lsp-data' cookie is no
longer valid and when processing that context we try to go past
point-max and burp an annoying error.

Best to check the version of the diagnostic (if we have it) and
ignore the ones that don't match the document version.

* lisp/progmodes/eglot.el (eglot--versioned-identifier): Move up.
(eglot--flymake-diagnostics, eglot--diag-to-lsp-diag): New helpers.
(eglot-handle-notification): Record LSP doc version in diagnostics.
(eglot--code-action-bounds)
(eglot--code-action-params): Use eglot--flymake-diagnostics.
2025-04-17 00:31:38 +01:00
Stefan Monnier
2330e7b6d6 lisp/savehist.el (savehist--reload): Don't accidentally set nil
Reported by Michael Heerdegen <michael_heerdegen@web.de>.
2025-04-16 17:05:04 -04:00
Juri Linkov
f68482cbc0 * lisp/textmodes/markdown-ts-mode.el: More ts-modes for code blocks.
(markdown-ts--code-block-language-map): Add more aliases.
(markdown-ts-code-block-source-mode-map): Add more mappings
for existing core ts-modes.
(markdown-ts--convert-code-block-language):
Check 'lang-string' with 'symbolp'.  Check 'mode' with 'fboundp'.
2025-04-16 21:45:40 +03:00
Juri Linkov
a6d746400c Change the default navigation sexp-type in 'elixir-ts-mode'.
* lisp/progmodes/elixir-ts-mode.el (elixir-ts-mode):
Call 'treesit-cycle-sexp-type' at the end to enable navigation across
nodes defined by the tree-sitter thing 'sexp' by default (bug#76788).
2025-04-16 20:32:54 +03:00
Juri Linkov
7574eb82c5 New hook 'outline-after-change-functions' (bug#77256).
* lisp/outline.el (outline-after-change-functions): New variable.
(outline--fix-buttons-after-change):
Run hook 'outline-after-change-functions'.

* lisp/treesit.el (treesit--after-change): Improve docstring.
(treesit-major-mode-setup): Simplify to just add
'treesit--after-change' to 'outline-after-change-functions' hook.

* lisp/progmodes/rust-ts-mode.el (rust-ts-mode): Add explicit
'treesit-outline-predicate' that is like
'treesit-simple-imenu-settings', but also adds "trait_item".
2025-04-16 20:11:34 +03:00
Juri Linkov
77bf9d33ee Add 'treesit-language-at-point-default' (bug#77256).
* lisp/treesit.el (treesit-language-at-point-function):
Change the default value from nil to 'treesit-language-at-point-default'.
(treesit-language-at): Funcall 'treesit-language-at-point-function'
unconditionally.
(treesit-language-at-point-default): New function with body from
'treesit-language-at'.
(treesit-node-at): Simplify by replacing duplicate code
with the call to 'treesit-parsers-at'.
2025-04-16 20:00:56 +03:00
Stefan Monnier
4532fbefec (Freplace_region_contents): Treat point as insert-before marker
Experience suggests that it's more often useful to keep point
at the end of the replacement than it is to keep point at the
beginning of the replacement.
This also aligns the behavior of `replace-region-contents` with
that of `insert`.

* src/insdel.c (replace_range): Treat PT like an insert-before marker.
* src/editfns.c (Freplace_region_contents): Adjust docstring accordingly.
2025-04-16 10:15:16 -04:00
Eli Zaretskii
bf737dc42a ; Improve documentation of 'help-fns-edit-variable'
* lisp/help-fns.el (help-fns-edit-variable)
(help-enable-variable-value-editing): Doc fixes.
2025-04-16 11:13:41 +03:00
Eli Zaretskii
179c6931c5 ; Fix documentation of a recent commit
* lisp/textmodes/markdown-ts-mode.el (markdown-ts-delimiter)
(markdown-ts-heading-1, markdown-ts-setext-heading)
(markdown-ts-heading-2, markdown-ts-heading-3)
(markdown-ts-heading-4, markdown-ts-heading-5)
(markdown-ts-heading-6, markdown-ts-list-marker)
(markdown-ts-block-quote, markdown-ts-language-keyword)
(markdown-ts--configured-languages): Doc fixes.
2025-04-16 10:17:30 +03:00
Juri Linkov
864bc762a2 * test/lisp/tab-bar-tests.el (tab-bar-tests-quit-restore-window): Fix.
Select the created frame because 'quit-window' unexpectedly
selects the original frame (https://debbugs.gnu.org/71386#262).
Add a comment about the `message' call bound to the original frame.
https://lists.gnu.org/archive/html/emacs-devel/2025-04/msg00546.html
2025-04-16 09:23:35 +03:00
Yuan Fu
6f1e317764
Expand markdown-ts-mode and add code block support for javascript
- Define new faces and use them in place of font-lock faces
- Add more fontification, add a new feature for headings.
- Remove fontification for code blocks, so embedeed parser can
  fontify them
- Add experimental code block support for javascript by using
  tree-sitter setup from js-ts-mode.
- Correctly setup markdown_inline with range settings.

* lisp/textmodes/markdown-ts-mode.el:
(markdown-ts--code-block-language-map):
(markdown-ts-code-block-source-mode-map): New variables.
(markdown-ts-faces): New group.
(markdown-ts-delimiter):
(markdown-ts-heading-1):
(markdown-ts-setext-heading):
(markdown-ts-heading-2):
(markdown-ts-heading-3):
(markdown-ts-heading-4):
(markdown-ts-heading-5):
(markdown-ts-heading-6):
(markdown-ts-list-marker):
(markdown-ts-block-quote):
(markdown-ts-language-keyword): New faces.
(markdown-ts--treesit-settings):
(markdown-ts--configured-languages): New variables.
(markdown-ts--harvest-treesit-configs):
(markdown-ts--add-config-for-mode):
(markdown-ts--convert-code-block-language): New functions.
(markdown-ts--range-settings): New variable.
(markdown-ts-setup): Setup range configuration.
(markdown-ts-mode): Add heading feature.
2025-04-15 16:14:01 -07:00
Stefan Kangas
23b957e128 ; Add missing :group to new defcustom
* lisp/dired-aux.el (dired-create-empty-file-in-current-directory):
Add missing :group.
2025-04-15 22:22:16 +02:00
Jared Finder
8528249ee2 Show drag cursor on all window lines (mode, tab, header)
* lisp/ruler-mode.el (ruler-mode-map): Remove down-mouse-1
binding that conflicts with dragging header line.
* src/xdisp.c (note_mode_line_or_margin_highlight): Renamed
to...
(note_line_or_margin_highlight): ...new name since it applies to
any window line (mode, tab, header).  Set drag cursor for window
top lines.
(note_mouse_highlight): Update call to new name (bug#76084).
2025-04-15 21:52:47 +03:00
Jens Schmidt
f67e64028e Better handle errors after sync man invocations
* lisp/man.el (Man-start-calling): Declare as debuggable.
(Man-getpage-in-background): Call `Man-bgproc-sentinel' with a
cons (BUFFER . EXIT-STATUS) as PROCESS argument for synchronous calls.
(Man-bgproc-sentinel): Use that information to handle those more
similarly to asynchronous calls.  Do not employ window selection hacks
for synchronous calls.  (Bug#77755)
2025-04-15 21:20:55 +03:00
Juri Linkov
1d3b1b7d88 ; * etc/NEWS: Move ts-modes after tree-sitter section. 2025-04-15 20:55:50 +03:00
Juri Linkov
aa24b9c849 * lisp/treesit.el (treesit-up-list): Signal an error.
Signal 'scan-error' when called noninteractively (bug#77744).
2025-04-15 20:33:14 +03:00
Stephen Berman
0ac12aed09 Optionally add new empty file to Dired subdirectory
Suggested by Kasper Gałkowski <kpg@posteo.net> (bug#77668)

* etc/NEWS: Announce new Dired user option.

* lisp/dired-aux.el (dired-create-empty-file-in-current-directory):
New user option.
(dired-create-empty-file): Use it.  Update and clarify doc string.
2025-04-15 19:01:19 +02:00
Elías Gabriel Pérez
74842b4cb2 Add block-comment variables to cc-mode.
* lisp/progmodes/cc-cmds.el (c-indent-new-comment-line):
Add block-comment-start and block-comment-end
* lisp/progmodes/cc-mode.el (c-basic-common-init):
Declare block-comment-start and block-comment-end buffer-local.
* lisp/emacs-lisp/lisp-mode.el (lisp-mode-variables): Move
block-comment variables ...
(lisp-mode): ... to here.  (Bug#77424)
2025-04-15 16:16:34 +03:00
Michael Albinus
788c9cfb62 Fix tree-sitter tests on Emba
* test/infra/Dockerfile.emba: Use tree-sitter-rust v0.23.3 in
order to match ABI version of libtree-sitter0.
2025-04-15 14:17:25 +02:00
Po Lu
2b7268c43f ; * exec/loader-mips64el.s (skip_environ): Eliminate one more `daddi'. 2025-04-15 17:21:25 +08:00
Po Lu
638b084a61 Unconditionally define MIPS_NABI on mips64el
* exec/configure.ac (MIPS_NABI): Always define to 1 on
mips64el-*-linux*.
2025-04-15 17:21:25 +08:00
Eli Zaretskii
1aa14f8fc5 Merge branch 'master' of git.savannah.gnu.org:/srv/git/emacs 2025-04-15 12:19:32 +03:00
Visuwesh
3f73b29875 Don't warn about lexbind cookies when loading calc settings
* lisp/calc/calc-mode.el (calc-settings-file-name):
* lisp/calc/calc.el (calc-mode): Bind 'warning-inhibit-types' to
avoid lexbind cookie missing warning.
2025-04-15 12:18:27 +03:00
Po Lu
19b6e36a22 * exec/loader-mips64el.s (rest_of_exec): Deal with assembler bugs. 2025-04-15 17:11:56 +08:00
Po Lu
458ad0cb89 * exec/configure.ac (exec_CHECK_MIPS_NABI): Test __LP64__ also. 2025-04-15 17:03:57 +08:00
Po Lu
5bf86e2be0 Port recent Android changes to mips64el
* exec/config-mips.m4.in (DADDI2, DADDI3): Disable at-clobbering
by assembler macros expressly.

* exec/loader-mips64el.s: Adapt from loader-mipsel.s.

* exec/configure.ac (exec_cv_as_daddi): Properly escape reg
names.

* exec/exec.c (struct exec_jump_command, exec_0): Don't define
or set `fpu_mode' if __LP64__.

* exec/exec.h (struct exec_tracee): New field `callno'.

* exec/trace.c (process_system_call): Always record the current
system call number in TRACEE lest it should be required once it
has been overwritten upon the syscall's completion.
(seccomp_system_call): Likewise.
(after_fork): Clear `tracee->callno'.
2025-04-15 16:17:14 +08:00
Eli Zaretskii
c3fe19aab9 ; Fix tab-bar-tests on MS-Windows
* test/lisp/tab-bar-tests.el (tab-bar-tests-quit-restore-window):
Skip test on MS-Windows in batch mode, since terminal frames
cannot be created in that case.
2025-04-15 09:45:16 +03:00
Po Lu
e790873be1 Address typos in MIPS executable loader
* exec/loader-mipsel.s (rest_of_exec): Delete redundant nop.
(skip_environ): Correct stack space test.  Don't jump into
the label for the sp preserving case's delay slot.
2025-04-15 11:14:14 +08:00
Po Lu
b455133450 Avoid performance regressions in unoptimized builds
* src/alloc.c (lisp_malloc): Declare val register.
2025-04-15 09:53:32 +08:00
Stefan Kangas
a7f5d183a8 Remove unused XMALLOC_BLOCK_INPUT_CHECK debug facility
The compile-time option XMALLOC_BLOCK_INPUT_CHECK was added in
2012 (commit 4d7e6e51dd) to allow blocking input during
malloc-family calls, in case any issues arose from related
changes in Emacs 24.3.  However, it has not been referenced on
emacs-devel or the bug tracker in over a decade.

It is clear that we do not need it, as our signal handlers do not
allocate memory.  Removing it simplifies the allocation function
wrappers and eliminates dead debug code.

Ref: https://debbugs.gnu.org/12450

* src/alloc.c [XMALLOC_BLOCK_INPUT_CHECK]
(malloc_block_input, malloc_unblock_input): Delete functions.
(MALLOC_BLOCK_INPUT, MALLOC_UNBLOCK_INPUT): Delete macros.  Update
all callers.
2025-04-14 20:40:49 +02:00
Po Lu
74df372398 Port recent changes to mipsel systems
* exec/exec.c (exec_0): Don't disable AT_EXECFN substitution on
MIPS systems.

* exec/loader-aarch64.s (skip_environ): Correct typo in
commentary.

* exec/loader-mips64el.s: Add a disclaimer that this file is
currently inoperable.

* exec/loader-mipsel.s (__start): Move environment and argument
vectors and produce and replace AT_EXECFN.  Clear stack before
proceeding to circumvent an oversight in glibc.
2025-04-14 21:31:07 +08:00
Eli Zaretskii
4918de1699 Support file:// URIs and readonly DB in 'sqlite-open'
* src/sqlite.c (Fsqlite_open): Two new optional arguments,
READONLY and DISABLE-URI.  Doc fix.

* etc/NEWS:
* doc/lispref/text.texi (Database): Document the new optional
arguments to 'sqlite-open'.  (Bug#65274)
2025-04-14 12:42:28 +03:00
Eli Zaretskii
f7ca720e2d ; * etc/NEWS: Move tree-sitter related items. 2025-04-14 11:42:26 +03:00
Po Lu
462bd149cd Fix typos in executable loaders
* exec/loader-aarch64.s (skip_environ, cleanup): Minor thinkos.

* exec/loader-x86_64.s (skip_environ): Insert missing label.
2025-04-14 09:10:14 +08:00
Dmitry Gutov
f7e34d52dc Fix help-customize in describe-symbol buffers
* lisp/help-fns.el (describe-symbol):
Protect help-mode--current-data from being modified inside the
help-setup-xref call (bug#77510).
2025-04-14 03:35:37 +03:00
Stefan Monnier
19913b1567 (cl-generic-define-method): Try and fix bug#77464
* lisp/emacs-lisp/cl-generic.el (cl-generic-define-method): Don't set
the function to `dummy`, even temporarily.
2025-04-13 12:45:54 -04:00
Stefan Monnier
1dee377bad lisp/gnus/gnus-start.el (gnus-dribble-eval-file): Ignore lexbind warning 2025-04-13 10:59:47 -04:00
Stefan Monnier
9dfd4c6bd3 (calc-save-modes): Add a lexical-binding cookie
* lisp/calc/calc-mode.el (calc-save-modes): Add a `lexical-binding`
cookie when it is safe.  Use `pcase-dolist` and `pp`.
2025-04-13 10:33:47 -04:00
Eli Zaretskii
e0c7b6e31e Fix warning messages about lexbind cookie in subdirs.el
* lisp/files.el (internal--get-default-lexical-binding): Don't log
a warning message when lexbind warning is disabled, and
'display-warning' is unavailable or signals an error.
2025-04-13 16:35:49 +03:00
Eshel Yaron
ebaf424126
; Fix recently broken test (bug#77777).
* test/lisp/emacs-lisp/find-func-tests.el
(find-func-tests--locate-macro-generated-symbols): bind
'trusted-content' to names of files in which we want to
expand macros during this test.
2025-04-13 13:55:37 +02:00
Po Lu
7a01350624 Replace AT_EXECFN in auxiliary vectors of programs executed on Android
* exec/exec.c (insert_args, exec_0): On non-MIPS systems, copy
NAME and its length to the loader area.  State that MIPS support
is not yet available (though it will be pending the availability
of a functioning emulator).

* exec/loader-aarch64.s (_start):

* exec/loader-armeabi.s (_start):

* exec/loader-x86.s (_start):

* exec/loader-x86_64.s (_start): Displace auxv, environ, and
argv to create sufficient space for the provided file name, and
copy the file name there.  Replace AT_EXECFN to refer to this
space.
2025-04-13 18:51:49 +08:00
Eli Zaretskii
f5b59a8a73 ; Fix last change
* lisp/progmodes/elisp-mode.el (elisp-eldoc-docstring-length-limit):
* etc/NEWS: Fix documentation of last change.  (Bug#77628)
2025-04-13 13:03:03 +03:00
Elías Gabriel Pérez
53bd9f54c6 Add variable for control docstring length in elisp eldoc functions
* etc/NEWS: Announce new variable.
* lisp/progmodes/elisp-mode.el (elisp-eldoc-docstring-length-limit):
New user option.
(elisp-eldoc-funcall-with-docstring): Add "Undocumented" as
docstring if the function has no docstring.
(elisp-eldoc-var-docstring-with-value): Use
`elisp-eldoc-docstring-length-limit'.  (Bug#77628)
2025-04-13 13:02:41 +03:00
Eli Zaretskii
3a13fb2069 ; Fix a typo in proced.el
* lisp/proced.el (proced-filter): Fix a typo.  Reported by Armin
Darvish <armindarvish@gmail.com>.  (Bug#77713)
2025-04-13 12:38:04 +03:00
Eli Zaretskii
c4012904fd ; (url-generic-parse-url/ms-windows-file-uri-hanlding): Fix test. 2025-04-13 12:14:27 +03:00
Eli Zaretskii
c76892edd2 ; Fix last change
* test/lisp/url/url-parse-tests.el
(url-generic-parse-url/ms-windows-file-uri-hanlding): Reformat and
fix the test on MS-Windows.
2025-04-13 12:12:13 +03:00
Sebastián Monía
fec6e16f14 Special treatment for file:// URIs on Windows
* lisp/url/url-parse.el (url-generic-parse-url): Remove prefix /
when a file URI's filename starts with a single letter followed
by a colon and a slash or backslash.
(url-recreate-url): Mirror the change applied when parsing, so
the URL is recreated properly on MS-Windows.
* test/lisp/url/url-parse-tests.el
(url-generic-parse-url/ms-windows-file-uri-hanlding): New test.
(Bug#76982)
2025-04-13 11:59:24 +03:00
Pengji Zhang
6f494d74f6 New user option to hide minor mode lighters (bug#77361)
* lisp/bindings.el (mode-line-collapse-minor-modes): New user
option.
(mode-line-minor-modes): New variable to hold mode line
constructs for minor modes.
(mode-line--make-lighter-menu): New helper function to generate
the menu for hidden minor modes.
(mode-line--minor-modes): New helper function to computer mode
line constructs for minor mode lighters.
(mode-line-modes): Use the new variable 'mode-line-minor-modes',
and adjust the order of elements so the indicator for hidden
minor modes is shown towards the end.

* doc/lispref/modes.texi (Mode Line Basics): Move the paragraph
for 'mode-line-compact' from here...
* doc/emacs/display.texi (Optional Mode Line): ...to here, and
document the new user option.
* etc/NEWS: Annouce the new user option.
2025-04-13 11:43:33 +03:00
Jens Schmidt
e82989757f Use a pristine copy of argv to restart Emacs
argv as left after main has proccessed the command-line can differ
both in order and contents of the original command-line arguments,
which can lead to surprising results when restarting emacs on the
cooked argv through `kill-emacs'.

Starting from that observation, consistenly use variables
'initial_cmdline' on Windows, 'initial_argc', 'initial_argv' on
non-Windows, and 'initial_argv0' in all ports.

* src/lisp.h: Declare 'initial_argv0', limit declaration of
'initial_argv' and 'initial_argc' to non-Windows ports.
* src/emacs.c: Likewise, but for the definitions.
(init_cmdargs): Move initialization of 'initial_argv' and
'initial_argc' ...
(copy_args) [!WINDOWSNT]: ... to this new function ...
(main): ... and call that in 'main', also initializing
'initial_argv0' before the command-line processing.
* src/emacs.c (Fkill_emacs):
* src/pgtkterm.c (pgtk_term_init):
* src/sysdep.c (emacs_perror):
* src/xterm.c (x_term_init): Use 'initial_argv0' where only that
is required.  (Bug#77389)
2025-04-13 11:33:30 +03:00