Commit graph

177541 commits

Author SHA1 Message Date
Phil Sainty
87f9c09ab5 ; * lisp/so-long.el: Documentation 2025-03-15 23:05:18 +13:00
Phil Sainty
25eabcde0d ; * lisp/so-long.el: Backwards-compatibility fix for Emacs < 30
We support Emacs 24.4 and later (for ELPA releases), so revert the
change from commit 7705bdfa5b
2025-03-15 23:04:59 +13:00
Phil Sainty
03a6d5a763 ; * lisp/so-long.el: Backwards-compatibility fix for Emacs < 27
We support Emacs 24.4 and later (for ELPA releases), and ad-find-advice
only changed from a macro to a function in Emacs 27, so this change is
to restore compatibility with older versions where we do need the macro
definition loaded at byte-compilation time.

This effectively combines the related changes from:

- commit 986c12b20f
- commit c221db0402
2025-03-15 23:04:28 +13:00
Michael Albinus
5d1b696e99 * lisp/bindings.el (tramp-revert-buffer-with-sudo): Declare. 2025-03-15 09:57:39 +01:00
Eli Zaretskii
f69cc74c89 ; Fix last change (bug#76789)
* doc/misc/speedbar.texi (Frames Windows and Faces): Fix node
name.  Fix markup and punctuation.
(Introduction): Fix markup.
2025-03-15 10:52:45 +02:00
Vincenzo Pupillo
c1aab8c49b Add a new command `speedbar-window'.
Speedbar now can be opened in a window instead of a separate frame. The
frame remains the default.

* doc/emacs/frames.texi: Mention Speedbar window mode.
* doc/misc/speedbar.texi: Document 'speedbar-window'.
* lisp/speedbar.el
(speedbar-prefer-window): New user option. If t, the command `speedbar'
open the speedbar in a window.
(speedbar-window-dedicated-window): New user option. If t the window is
dedicated.
(speedbar-window-side):  New user option. The side of 'speedbar-window',
defaults to left.
(speedbar-window-default-width): New user option. The default size of
the 'speedbar-window'.
(speedbar-window-max-width): New user option. Limits the width of the
'speedbar-window'. The user can resize the window as desired, but this
option will be the width of the window when restored.
(speedbar--buffer-name): New variable, the buffer name used for both
'speedbar-frame-mode' and 'speedbar-window-mode'.
(speedbar--window): New variable, the window displaying 'speedbar-window'.
(speedbar--window-width): New variable, store the current width of
'speedbar-window'.
(speedbar-easymenu-definition-trailer): Now it is a function that
returns a different trailer for 'speedbar-frame' and 'speedbar-window'.
(speedbar): Now it is a function that calls 'speedbar-frame-mode', the
default or 'speedbar-window-mode' based on the value of
'speedbar-prefer-window'.
(speedbar-frame-mode): Before opening a frame, close 'speedbar-window'
if it is open.
(speedbar-frame-or-window): New function, returns 'frame', 'window'
or nil if speedbar is not open.
(speedbar-window): New alias for 'speedbar-window-mode'.
(speedbar-window-mode): Enable of disable 'speedbar-window'.
(speedbar-window--window-live-p): New function, return non-nil if the
'speedbar-window' is live.
(speedbar-window--buffer-live-p): New function, return non-nil if the
'speedbar-buffer' is live.
(speedbar-window--live-p): New function, return t if 'speedbar-window'
is open.
(speedbar-window-current-window): New function, return t if the selected
window is speedbar-window.
(speedbar-window--close): New function, close the 'speedbar-window'.
(speedbar-window--width): New function, return the current width of
'speedbar-window'.
(speedbar-width): New function, return the 'speedbar' of
'speedbar-frame-mode' of 'speedbar-frame-mode'.
(speedbar-set-mode-line-format): Use the new 'speedbar-width' function.
(speedbar-directory-buttons): Use the new 'speedbar-width' function.
(speedbar--speedbar-live-p): New function, returns t if
'speedbar-frame-mode' or 'speedbar-window-mode' are open.
(speedbar-timer-fn): Now handle 'speedbar-frame-mode' and
'speedbar-window-mode'.
2025-03-15 10:46:19 +02:00
Eli Zaretskii
c8471129dd ; * doc/lispref/commands.texi (Click Events): Fix a thinko. 2025-03-15 10:17:20 +02:00
Eli Zaretskii
82e44e8675 ; Fix documentation of recent change in mouse.el
* lisp/mouse.el (mouse-event-areas-with-no-buffer-positions): Doc
fix.
(mouse-posn-property): Add commentary.
2025-03-15 10:10:14 +02:00
Eli Zaretskii
6e28c2019e ; Fix documentation of mouse-click events
* doc/lispref/commands.texi (Click Events): Add menu-bar events to
the description.  Add missing details about tab-bar click events.
2025-03-15 10:04:01 +02:00
Eli Zaretskii
e09cb3aee9 ; * lisp/dired.el (project-root): Declare. 2025-03-15 09:36:03 +02:00
Gerd Möllmann
b105089715 Fix mouse-posn-property
* doc/lispref/commands.texi (Click Events): Mention menu-bar.
* lisp/mouse.el (mouse-event-areas-with-no-buffer-positions):
New defvar including all areas mentioned in the Lisp reference.
(mouse-posn-property): Use it.
2025-03-15 08:25:07 +01:00
Po Lu
88e30e1ac5 ; * src/w32.c (term_ntproc): Fix capitalization of commentary. 2025-03-15 12:47:40 +08:00
Po Lu
1749ad825e ; Fix punctuation and typos in w32proc.c
* src/w32proc.c (WFO_MAX_WAIT, wait_objects_context)
(start_wait_objects, stop_wait_objects, end_wait_and_return)
(shrink_wait_pool, free_wait_pool, wait_for_objects)
(msg_wait_for_objects, delete_child, WINAPI, create_child)
(waitpid): Repunctuate sentences and correct typos.
2025-03-15 12:46:32 +08:00
Stefan Kangas
aa66edeeba Delete pre-Emacs 20 documentation from term.el
* lisp/term.el: Delete comment titled "Converting process modes to use
term mode".  This comment from 1994 is only of historical interest.
2025-03-15 04:10:28 +01:00
Stefan Kangas
3864b9352a ; * etc/symbol-releases.eld: Add current-global-map.
This avoids saying that it was introduced in Emacs 29.1.
2025-03-15 04:10:27 +01:00
Stefan Kangas
ecd756dd39 Recommend using 'keymap-set' in Commentaries
* lisp/calendar/timeclock.el, lisp/comint.el, lisp/ehelp.el:
* lisp/gnus/gnus-bookmark.el, lisp/gnus/smiley.el, lisp/ido.el:
* lisp/isearchb.el, lisp/mail/mailabbrev.el, lisp/net/ange-ftp.el:
* lisp/net/goto-addr.el, lisp/play/fortune.el, lisp/saveplace.el:
* lisp/shell.el, lisp/term.el, lisp/textmodes/makeinfo.el:
* lisp/textmodes/refer.el, lisp/textmodes/remember.el:
* lisp/textmodes/table.el, lisp/woman.el: Recommend using
'keymap-set' instead of 'define-key' in Commentaries.
2025-03-15 04:10:27 +01:00
Stefan Kangas
679ad95a67 Recommend using 'keymap-global-set' in Commentaries
* lisp/bs.el, lisp/calculator.el, lisp/cedet/data-debug.el:
* lisp/help-at-pt.el, lisp/hilit-chg.el, lisp/mail/mspools.el:
* lisp/mh-e/mh-e.el, lisp/mouse-copy.el, lisp/mouse-drag.el:
* lisp/net/browse-url.el, lisp/net/webjump.el, lisp/printing.el:
* lisp/progmodes/cfengine.el, lisp/progmodes/ebnf2ps.el:
* lisp/ps-print.el, lisp/repeat.el, lisp/term/wyse50.el:
* lisp/term/x-win.el, lisp/vcursor.el, lisp/woman.el:
Recommend using 'keymap-global-set' instead of 'global-set-key'.
2025-03-15 04:06:31 +01:00
Stefan Kangas
2009ae8593 Use defvar-keymap in which-func.el
* lisp/progmodes/which-func.el (which-func-keymap): Use defvar-keymap.
(which-func-maxout): Change :type to natnum.
(which-func-format): Use substitute-command-keys.
2025-03-15 04:06:31 +01:00
Stefan Kangas
33cc5427cb Add :set attribute to winner-dont-bind-my-keys
* lisp/winner.el (winner--set-dont-bind-my-keys): New function.
(winner-dont-bind-my-keys): Allow setting with setopt.
(winner-mode-map): Use defvar-keymap.
* test/lisp/winner-tests.el: New file.
2025-03-15 04:06:31 +01:00
Stefan Kangas
6b295347a9 Use defvar-keymap for command-history-mode-map
* lisp/chistory.el (command-history-mode-map): Use defvar-keymap.
2025-03-15 04:06:31 +01:00
Stefan Kangas
c29be6a2ec Move pulse.el from lisp/cedet/ to lisp/
* lisp/cedet/pulse.el: Move from here...
* lisp/pulse.el: ...to here.  This library is no longer relevant only
to CEDET.  It is used by other built-in libraries, GNU ELPA packages,
and very likely third-party libraries too.
2025-03-15 04:06:31 +01:00
Dmitry Gutov
af81b3af4c dired-copy-filename-as-kill: Support project-relative names
* lisp/dired.el (dired-copy-filename-as-kill): Support new value
of ARG, to mean file name relative to project root (bug#76792).

* doc/emacs/dired.texi (Misc Dired Features): Mention it.

* etc/NEWS: Same.
2025-03-15 04:54:11 +02:00
Tomas Nordin
4980287e08 Teach diff-apply-hunk to handle hunks with empty context
* lisp/vc/diff-mode.el (diff-find-source-location):
Consider the case when there is no diff context above or below
edited lines.  (bug#72556)

* test/lisp/vc/diff-mode-tests.el: Add tests for undoing hunks
from diffs with addtions only in the beginning or end of the
source file.
2025-03-15 04:54:11 +02:00
john muhl
af5a75a0bd ; Fix 'diff-mode' tests (Bug#77014)
* test/lisp/vc/diff-mode-resources/git.patch: Restore missing space.
2025-03-14 19:58:35 +01:00
Stefan Kangas
bad2cd198a Make turn-on-flyspell/turn-off-flyspell obsolete
* lisp/textmodes/flyspell.el (turn-on-flyspell): Make into obsolete
function alias for 'flyspell-mode'.
(turn-off-flyspell): Declare obsolete.
(text-mode-hook): Don't redundantly set :options here.
* lisp/textmodes/text-mode.el (text-mode-hook): Prefer 'flyspell-mode'
to 'turn-on-flyspell' in :options.  (Bug#76535)
2025-03-14 19:50:22 +01:00
Michael Albinus
24ffcbb3da Improve tramp-*-with-sudo commands
* doc/emacs/dired.texi (Dired Visiting):
Add tramp-dired-find-file-with-sudo.

* doc/emacs/files.texi (Reverting):
Add tramp-revert-buffer-with-sudo.

* doc/misc/tramp.texi (Ad-hoc multi-hops): Extend wrt
`tramp-*-with-sudo' commands.

* etc/NEWS: Add tramp-dired-find-file-with-sudo.
Fix typos.

* lisp/bindings.el (ctl-x-x-map):
* lisp/dired.el (dired-mode-map): Add "@" binding.  (Bug#76974)

* lisp/net/tramp-cmds.el (dired-get-file-for-visit): Declare.
(with-tramp-file-name-with-method): New macro.
(tramp-revert-buffer-with-sudo): Autoload.  Preserve position.
Use `with-tramp-file-name-with-method'.
(tramp-dired-find-file-with-sudo): New command.
2025-03-14 16:31:51 +01:00
Eli Zaretskii
21371aa106 ; * etc/NEWS: Announce the larger number of sub-processes on w32. 2025-03-14 15:22:24 +02:00
Eli Zaretskii
c87f0e8a19 ; * src/w32.h (free_wait_pool): Move prototype from w32.c. 2025-03-14 15:05:29 +02:00
Yue Yi
e02466a579 Increase FD_SETSIZE on Windows to support more subprocesses
Earlier versions of Emacs were limited to at most 32 subprocesses or
network connections on Windows due to the 64-object limit imposed by
WaitForMultipleObjects.  To overcome this, a simple waiting thread
pool is implemented, allowing Emacs to efficiently wait on up to
2048 objects.

Each thread in the pool can wait on up to 63 objects, and a total of
32 threads are used, together with the main thread, to expand the
waiting capability.  This enables Emacs to support approximately 1024
subprocesses, which is comparable to the 'pty' method on GNU/Linux
when using the default FD_SETSIZE of 1024.

To minimize overhead, the threads remain active instead of being
frequently created and destroyed, reducing unnecessary system
resource consumption.  Idle threads can be terminated after a
period of inactivity to free up memory.

* src/w32.h (FD_SETSIZE): Change from 64 to 2048.
* src/w32.c (term_ntproc): Call 'free_wait_pool' to free waiting
threads.
* src/w32proc.c (WFO_ABANDONED, WFO_TIMEOUT, WFO_FAILED)
(WFO_MAX_WAIT): New macros.
(wait_objects_context, wait_objects_pool, wait_objects_info):
New structures for managing the thread pool.
(wait_objects_pool, wait_objects_info): New static variables for
managing the thread pool.
(wait_objects_thread, start_wait_objects, stop_wait_objects)
(end_wait_and_return, shrink_wait_pool, free_wait_pool):
New functions for waiting and managing the thread pool.
(wait_for_objects, msg_wait_for_objects): New functions as
replacements for WaitForMultipleObjects and
MsgWaitForMultipleObjects.
(wait_pid): Use 'wait_for_objects' and new macros.
(sys_select): Make some variables static to avoid stack
allocation.  Use 'wait_for_objects', 'msg_wait_for_objects', and
the new macros.
2025-03-14 14:58:42 +02:00
Eli Zaretskii
5d4056c765 Fix a recent change in isearch.el
* lisp/isearch.el (isearch-yank-x-selection): Ignore errors
signaled by 'gui-get-primary-selection', to better emulate what
'gui-get-selection' was doing.  In particular,
'gui-get-primary-selection' can signal an error on MS-Windows.
2025-03-14 14:00:16 +02:00
Eli Zaretskii
0e93029353 ; * lisp/isearch.el (isearch-yank-x-selection): Doc fix. 2025-03-14 13:52:54 +02:00
Po Lu
1437fc2bca Enable yanking non-Latin-1 primary selections in I-Search
* lisp/isearch.el (isearch-yank-x-selection): Call
`gui-get-primary-selection', which accounts for non-Latin-1
encodings.
2025-03-14 15:54:01 +08:00
Ulrich Müller
5dc0981875 New configure option --with-systemduserunitdir
* configure.ac (systemduserunitdir): New variable and option.
* Makefile.in (systemduserunitdir): New, set by configure.
(install-etc, uninstall): Don't install emacs.service when
systemduserunitdir is unspecified.
* etc/NEWS: Announce the new configure option.  (Bug#76924)
2025-03-14 08:01:47 +01:00
Yuan Fu
f2f1fb7fe0
Merge from origin/emacs-30
defc55bb6f Fix treesit-parser-create behavior regarding indirect buf...
20ac26e675 ; Fix with-delayed-message docstring metavars.
04034cd9ce Fix 'dired-movement-style' in Dired when subdirs are shown
f8443dffc1 ; * lisp/register.el (register-use-preview): Doc fix (bug...
f729828bcf ; Add texinfo reference to GNU Coding Standards.
a6abb88fdc ; * lisp/files.el (executable-find): Doc fix.

# Conflicts:
#	src/treesit.c
2025-03-13 20:18:03 -07:00
Yuan Fu
defc55bb6f
Fix treesit-parser-create behavior regarding indirect buffers
The previous fix fixed the problem that treesit-parser-create
always use the current buffer, but that introduce another subtle
problem: if an indirect buffer creates a parser, the parser
saves the base buffer rather than the indirect buffer.  In Emacs
29, if you create a parser in an indirect buffer, the parser
saves the indirect buffer.  This change of behavior breaks some
existing use-cases for people using indirect buffer with
tree-sitter.

In Emacs 31, indirect buffers and base buffer get their own
parser list, so this problem doesn't exist anymore.  The fix is
only for Emacs 30.

* src/treesit.c (Ftreesit_parser_create): Use the buffer that's
given to treesit-parser-create, even if it's an indirect buffer.
2025-03-13 20:09:03 -07:00
Eli Zaretskii
89441e12e2 Fix aborts and text corruption in 'replace-buffer-contents'
* src/insdel.c (replace_range): Fix a thinko.  Fix commentary.
(Bug#76997)
2025-03-13 22:19:14 +02:00
Juri Linkov
59a67dcde4 Handle narrowed buffers in treesit-forward-sentence (bug#76679)
* lisp/treesit.el (treesit-forward-sentence): When no more
sentences are found, move to the end of the buffer or to
the range boundary at the 'treesit-parser' overlay's end.
2025-03-13 20:44:54 +02:00
Juri Linkov
d1ce9fbf49 Support more embedded ranges in treesit-up-list and treesit-outline-level
* lisp/treesit.el (treesit-up-list, treesit-outline-level):
Add a loop to handle all nested parsers.
2025-03-13 20:29:50 +02:00
Juri Linkov
abeeb6eb74 * lisp/textmodes/css-mode.el (css-ts-mode--outline-predicate): Improve.
Set separate value that differs from 'css--treesit-simple-imenu-settings'
by adding new node "at_rule".
2025-03-13 20:25:29 +02:00
Mauro Aranda
8298bbada4 Fix error when trying to recommend setopt
* lisp/help-fns.el (help--recommend-setopt): Don't assume that
variable-documentation stores only strings.  (Bug#76994)
2025-03-13 15:19:05 -03:00
Basil L. Contovounesios
f9d805cef3 ; Fix recent defvar-local docstring metavars. 2025-03-13 13:51:01 +01:00
Basil L. Contovounesios
20ac26e675 ; Fix with-delayed-message docstring metavars. 2025-03-13 13:39:39 +01:00
Eli Zaretskii
cecaec20e7 Allow control of indicating empty rectangular selections
* lisp/rect.el (rectangle-indicate-zero-width-rectangle): New user
option.
(rectangle--highlight-for-redisplay): Use it to decide whether to
indicate empty rectangles on display.  (Bug#16403)

* etc/NEWS: Announce the feature.
2025-03-13 13:35:54 +02:00
Eli Zaretskii
04034cd9ce Fix 'dired-movement-style' in Dired when subdirs are shown
* lisp/dired.el (dired--move-to-next-line): Don't consider
sub-directory lines as empty.  (Bug#76596)
2025-03-13 12:34:23 +02:00
Eli Zaretskii
d29e0add71 ; Fix last change (bug#75543)
* lisp/textmodes/remember.el (remember-initial-major-mode)
(remember-data-files-regex): Fix :version and doc strings.

* etc/NEWS: Fix last added entries.
2025-03-13 12:21:28 +02:00
Matthias Meulien
e937167253 Turn 'remember-mode' into a minor mode
* lisp/textmodes/remember.el (remember-initial-major-mode):
Major mode for remember buffer.
(remember-data-files-regex): Regular expression to filter files.
(remember-append-in-data-directory): Handler to append data to
files.
(remember-mode): Change to a minor mode.
(remember-prefix-map): New.  (Bug#75543)
2025-03-13 12:04:46 +02:00
Mauro Aranda
32ff6c9db1 Recognize graphic as a type when customizing a face
* lisp/cus-edit.el (custom-display): Add checkbox for graphic.
(Bug#76975)
2025-03-13 06:48:39 -03:00
Eli Zaretskii
f8443dffc1 ; * lisp/register.el (register-use-preview): Doc fix (bug#76739). 2025-03-13 10:14:07 +02:00
john muhl
1528d31564 Simplify and improve indent rules in 'lua-ts-mode'
* lisp/progmodes/lua-ts-mode.el (c-ts-common): Require it.
(lua-ts-mode): Set 'c-ts-common' variables.
(lua-ts--simple-indent-rules): Replace custom indent rules for
tables, arguments and parameters with
'c-ts-common-baseline-indent-rule'.
Improve consistency of indentation for IIFEs and nested functions.
(lua-ts--variable-declaration-continuation)
(lua-ts--variable-declaration-continuation-anchor): Reformat.
(lua-ts--comment-first-sibling-matcher)
(lua-ts--first-child-matcher, lua-ts--first-real-sibling-anchor)
(lua-ts--function-definition-p, lua-ts--g-g-g-parent)
(lua-ts--g-g-parent, lua-ts--nested-function-argument-matcher)
(lua-ts--nested-function-block-include-matcher)
(lua-ts--nested-function-block-matcher)
(lua-ts--nested-function-end-argument-matcher)
(lua-ts--nested-function-end-matcher)
(lua-ts--nested-function-last-function-matcher)
(lua-ts--top-level-function-call-matcher): Remove.
* test/lisp/progmodes/lua-ts-mode-resources/indent.erts:
Update tests.  (Bug#76986)
2025-03-13 10:09:38 +02:00
Stefan Kangas
b51fb2e107 Fix loading follow.el
* lisp/follow.el (follow-mode-prefix-key): Avoid changing
follow-mode-map before it is defined.  (Bug#76977)
* test/lisp/follow-tests.el: New file.
2025-03-13 08:14:36 +01:00