]> git.eshelyaron.com Git - emacs.git/log
emacs.git
12 months agoUse new `derived-mode-all/set-parents` functions.
Stefan Monnier [Thu, 9 Nov 2023 03:53:39 +0000 (22:53 -0500)]
Use new `derived-mode-all/set-parents` functions.

Try and avoid using the `derived-mode-parent` property directly
and use the new API functions instead.

* lisp/emacs-lisp/derived.el (define-derived-mode):
Use `derived-mode-set-parent`.

* lisp/loadhist.el (unload--set-major-mode):
* lisp/info-look.el (info-lookup-select-mode):
* lisp/ibuf-ext.el (ibuffer-list-buffer-modes):
* lisp/files.el (dir-locals--get-sort-score):
* lisp/emacs-lisp/cl-generic.el (cl--generic-derived-specializers):
Use `derived-mode-all-parents`.

12 months ago(derived-mode-all-parents): Speed up with a cache
Stefan Monnier [Wed, 8 Nov 2023 19:20:09 +0000 (14:20 -0500)]
(derived-mode-all-parents): Speed up with a cache

Most uses of the mode hierarchy don't really need to construct the
list, they just need to iterate over it.  With single inheritance
we could do it just by jumping up from a mode to its parent,
but to support the upcoming multiple inheritance we'd need a more
complex and costly iterator.
Luckily, the inheritance graph is mostly static so we can cache
the list of all parents, making `derived-mode-all-parents` cheap
enough to be the basis of iteration and keeping the API very simple.

* lisp/subr.el (derived-mode-all-parents): Cache the result.
(derived-mode--flush): New function.
(derived-mode-set-parent): Use it.

12 months agosubr.el: Provide a functional API around `derived-mode-parent`
Stefan Monnier [Wed, 8 Nov 2023 16:32:27 +0000 (11:32 -0500)]
subr.el: Provide a functional API around `derived-mode-parent`

The `derived-mode-parent` property should be an implementation detail,
so we can change it more easily.  To that end, add functions to set and
query it.

* lisp/subr.el (derived-mode-all-parents): New function.
(provided-mode-derived-p): Use it.
(derived-mode-set-parent): New function.

12 months agoGuarantee files are auto-saved when Emacs is terminated by Android
Po Lu [Thu, 9 Nov 2023 02:12:24 +0000 (10:12 +0800)]
Guarantee files are auto-saved when Emacs is terminated by Android

* java/org/gnu/emacs/EmacsNative.java (shutDownEmacs):

* java/org/gnu/emacs/EmacsService.java (onDestroy): New
function.  When invoked, call shut_down_emacs and await its
completion.

* src/android.c (android_shut_down_emacs, shutDownEmacs): New
functions.

12 months agoWith `native-compile', compile lambdas in a defun or lambda too
Alan Mackenzie [Wed, 8 Nov 2023 20:49:48 +0000 (20:49 +0000)]
With `native-compile', compile lambdas in a defun or lambda too

This fixes bug#64646.  Also refactor two functions to reduce
code duplication.

* lisp/emacs-lisp/comp.el (comp-spill-lap-function/symbol)
(comp-spill-lap-function/list): Add all functions found by the
byte compiler (including lambdas) to the native compiler's
context, thus making them be native compiled.  Refactor to use
comp-intern-func-in-ctxt.  Make comp-spill-lap-function/list
also compile closures.

* test/src/comp-resources/comp-test-funcs.el
(comp-tests-lambda-return-f2): New function

* test/src/comp-tests.el (comp-test-lambda-return2)
(comp-tests-free-fun-f2): New functions to test that internal
lambdas get native compiled.

12 months agoSimplify 'project-remember-projects-under' master
Philip Kaludercic [Wed, 1 Nov 2023 21:34:28 +0000 (22:34 +0100)]
Simplify 'project-remember-projects-under'

* lisp/progmodes/project.el (project-remember-projects-under): Instead
of traversing the directories manually, re-use
`directory-files-recursively' to reduce complexity.  (Bug#66649)

12 months ago* lisp/minibuffer.el (minibuffer-choose-completion-or-exit): New command.
Juri Linkov [Wed, 8 Nov 2023 07:38:35 +0000 (09:38 +0200)]
* lisp/minibuffer.el (minibuffer-choose-completion-or-exit): New command.

(minibuffer-visible-completions-map): Bind it to "RET".
https://lists.gnu.org/archive/html/emacs-devel/2023-11/msg00246.html

12 months agoDon't leave point amid text conversion edits if auto-fill transpires
Po Lu [Wed, 8 Nov 2023 03:03:57 +0000 (11:03 +0800)]
Don't leave point amid text conversion edits if auto-fill transpires

* lisp/simple.el (analyze-text-conversion): Save point in
old-point after auto-fill completes, so that point-moved is not
set if point remains intact subsequent to the execution of both
hooks.

12 months agoEglot: Demote errors to warnings in eglot-ensure
João Távora [Tue, 7 Nov 2023 15:09:30 +0000 (09:09 -0600)]
Eglot: Demote errors to warnings in eglot-ensure

Github-reference: https://github.com/joaotavora/eglot/discussions/1318

* doc/misc/eglot.texi (Quick Start): Reword.
(Starting Eglot): Reword.

* lisp/progmodes/eglot.el (eglot-ensure): Demote errors to warnings.

12 months ago; * lisp/minibuffer.el (completion-lazy-hilit-fn): Fix last change.
Eli Zaretskii [Tue, 7 Nov 2023 14:31:40 +0000 (16:31 +0200)]
; * lisp/minibuffer.el (completion-lazy-hilit-fn): Fix last change.

12 months ago; Minor documentation fixes
Eli Zaretskii [Tue, 7 Nov 2023 14:29:06 +0000 (16:29 +0200)]
; Minor documentation fixes

* etc/NEWS:
* lisp/minibuffer.el (completion-lazy-hilit)
(completion-lazy-hilit-fn, completion-lazy-hilit): Fix recently
added documentation.

12 months ago* lisp/simple.el (next-line-completion): Improve (bug#59486).
Juri Linkov [Mon, 6 Nov 2023 17:43:06 +0000 (19:43 +0200)]
* lisp/simple.el (next-line-completion): Improve (bug#59486).

Handle the case when lines with completion candidates are
interspersed with lines that contain group headings.

12 months agoAllow completion frontends to fontify candidates just-in-time
João Távora [Wed, 25 Oct 2023 12:45:01 +0000 (13:45 +0100)]
Allow completion frontends to fontify candidates just-in-time

bug#48841, bug#47711

The variable may be bound by the frontend to a non-nil around
completion-producing calls like completion-all-completions.  See
completion-lazy-hilit docstring for more info.

* lisp/icomplete.el (icomplete-minibuffer-setup): Set completion-lazy-hilit.
(icomplete--render-vertical): Call completion-lazy-hilit.
(icomplete-completions): Call completion-lazy-hilit.

* lisp/minibuffer.el (completion-lazy-hilit): New variable.
(completion-lazy-hilit): New function.
(completion-lazy-hilit-fn): New variable.
(completion-pcm--regexp)
(completion--flex-score-last-md): New helper variables.
(completion--flex-score-1): New helper.
(completion-pcm--hilit-commonality): Use completion-lazy-hilit.
(completion--flex-adjust-metadata): Rework sorting code.

* etc/NEWS: Mention completion-lazy-hilit

12 months ago; * lisp/emacs-lisp/cl-macs.el: Axe useless `gethash` inline decl
Mattias Engdegård [Mon, 6 Nov 2023 11:06:40 +0000 (12:06 +0100)]
; * lisp/emacs-lisp/cl-macs.el: Axe useless `gethash` inline decl

12 months agoSilence warning when requiring ruby-ts-mode
Stefan Kangas [Mon, 6 Nov 2023 07:51:59 +0000 (08:51 +0100)]
Silence warning when requiring ruby-ts-mode

* lisp/progmodes/ruby-ts-mode.el: Silence warning when requiring
file without a treesitter grammar.

12 months ago* lisp/vc/vc-git.el (vc-git-revision-table): Reverse the table (bug#64656).
Juri Linkov [Mon, 6 Nov 2023 07:27:48 +0000 (09:27 +0200)]
* lisp/vc/vc-git.el (vc-git-revision-table): Reverse the table (bug#64656).

12 months agoEmulate secondary selections on Android
Po Lu [Mon, 6 Nov 2023 02:14:09 +0000 (10:14 +0800)]
Emulate secondary selections on Android

* doc/lispref/frames.texi (Other Selections): Revise
documentation to match.

* lisp/term/android-win.el (android-secondary-selection): New
variable.
(android-primary-selection, android-get-clipboard-1)
(android-get-primary, gui-backend-get-selection)
(gui-backend-selection-exists-p, gui-backend-selection-owner-p)
(gui-backend-set-selection): Update doc strings and code as is
proper.

12 months ago* lisp/emacs-lisp/cl-extra.el (cl-remprop): Update names to match docstring
Jeremy Bryant [Sat, 4 Nov 2023 23:29:10 +0000 (23:29 +0000)]
* lisp/emacs-lisp/cl-extra.el (cl-remprop): Update names to match docstring

12 months agoNew option to use arrows in the minibuffer to select completions (bug#59486)
Juri Linkov [Sun, 5 Nov 2023 17:52:33 +0000 (19:52 +0200)]
New option to use arrows in the minibuffer to select completions (bug#59486)

* lisp/minibuffer.el (minibuffer-visible-completions): New defcustom.
(minibuffer-visible-completions-bind): New function.
(minibuffer-visible-completions-map): New defvar-keymap.
(minibuffer-mode): Set buffer-local minibuffer-completion-auto-choose
to nil for minibuffer-visible-completions.
(completing-read-default, completion-in-region-mode):
Use minibuffer-visible-completions to compose keymap
with minibuffer-visible-completions-map.
(minibuffer-next-completion): Add new arg VERTICAL,
and use next-line-completion.
(minibuffer-next-line-completion)
(minibuffer-previous-line-completion): New commands.

12 months agoDeclare calc-eval-error in calc.el
Stefan Kangas [Sun, 5 Nov 2023 16:36:21 +0000 (17:36 +0100)]
Declare calc-eval-error in calc.el

* lisp/calc/calc.el (calc-eval-error): Declare.  (Bug#58801)

12 months agoFurther improve test coverage of time-stamp-pattern parsing
Stephen Gildea [Sun, 5 Nov 2023 04:46:27 +0000 (21:46 -0700)]
Further improve test coverage of time-stamp-pattern parsing

* test/lisp/time-stamp-tests.el (time-stamp-custom-pattern): Use test
strings that are easier to mis-parse, for a more exacting test.

* (fz-make+zone, fz-make-zone): Declare pure.

12 months agoImplement more Android text editing controls
Po Lu [Sun, 5 Nov 2023 02:40:52 +0000 (10:40 +0800)]
Implement more Android text editing controls

* lisp/term/android-win.el (android-deactivate-mark-command):
New command.
(select-all, start-selecting-text, stop-selecting-text): Arrange
for commands manipulating the region to be executed when these
keys are registered.

* src/android.c (android_get_keysym_name): Return the keysym
name of each of the new keysyms introduced.

* src/androidterm.c (performContextMenuAction): Save special
keysyms into key events for the selectAll, startSelectingText
and stopSelectingText actions.

12 months agoAdd project-any-command and project-prefix-or-any-command
Dmitry Gutov [Sun, 5 Nov 2023 00:35:25 +0000 (02:35 +0200)]
Add project-any-command and project-prefix-or-any-command

* lisp/progmodes/project.el (project-any-command): New command.
(project-prefix-map): Bind it to 'o'.
(project-switch-commands): Add entry for it here too.
(project-prefix-or-any-command): New command (bug#63648).
(project-switch-commands): Update the custom type to mention
'project-prefix-or-any-command' as well.
* etc/NEWS: Document the change.

12 months agoAlign date stamps to whole days in ERC
F. Jason Park [Fri, 3 Nov 2023 00:05:48 +0000 (17:05 -0700)]
Align date stamps to whole days in ERC

* lisp/erc/erc-stamp.el (erc-stamp--current-time): Ditch overriding
precedence of the `erc--ts' property in `:around' method because the
variable `erc-stamp--current-time' fills that role well enough.
(erc-stamp--current-datestamp-left): Remove unused variable.
(erc-stamp--insert-date-stamp-as-phony-message): Assume
`erc-timestamp-last-inserted-left' has already been assigned the
updated rendered stamp for the current time.
(erc-stamp--lr-date-on-pre-modify): Use the variable
`erc-stamp--current-time' instead of the `erc-ts' property to convey
an overriding time value for `erc-add-timestamp'.  Set
`erc-timestamp-last-inserted-left' instead of fiddling with another
temporary variable to hack around these ill-fitting interfaces.  Use
day-aligned time value for the `erc-ts' property assigned to date
stamps.
(erc-stamp--date-mode): New internal minor mode.
(erc-insert-timestamp-left-and-right): Defer to `erc-stamp--date-mode'
for setting up date-stamp specific hooks.
(erc-stamp--time-as-day): New function to "round" a date stamp to
start of local day.
(erc-stamp--setup): Defer to `erc-stamp--date-mode' for date-stamp
specific teardown.  (Bug#60936)
* test/lisp/erc/erc-fill-tests.el
(erc-fill-tests--current-time-value): Change default value to nil.
(erc-stamp--current-time): New method for test cases.
(erc-fill-tests--insert-privmsg): Use realistic value for `unparsed'
slot.
(erc-fill-tests--wrap-populate): Bind
`erc-fill-tests--current-time-value' to 0.  Don't mock the function
`erc-stamp--current-time' because doing so inhibits normal polymorphic
dispatch, which test cases rely on for delivering correct timestamp
values in varied contexts.
; * test/lisp/erc/resources/fill/snapshots/merge-01-start.eld: Update.
; * test/lisp/erc/resources/fill/snapshots/merge-02-right.eld: Update.
; * test/lisp/erc/resources/fill/snapshots/merge-wrap-01.eld: Update.

12 months agoDecouple disparate escape-hatch concerns in erc-stamp
F. Jason Park [Sat, 4 Nov 2023 20:48:11 +0000 (13:48 -0700)]
Decouple disparate escape-hatch concerns in erc-stamp

* lisp/erc/erc-stamp.el (erc-stamp--allow-unmanaged): Improve doc
string.
(erc-stamp--permanent-cursor-sensor-functions): New variable to take
over the formerly provided `cursor-sensor-functions' aspect of the
flag `erc-stamp--allow-unmanaged'.
(erc-add-timestamp): Use
`erc-stamp--permanent-cursor-sensor-functions' instead of
`erc-stamp--allow-unmanaged' in guard condition.
(erc-munge-invisibility-spec): Use dedicated compatibility flag
`erc-stamp--permanent-cursor-sensor-functions' and forgo unnecessary
setup when it's non-nil.  (Bug#60936)

12 months agoPreserve user markers when inserting ERC date stamps
F. Jason Park [Sat, 4 Nov 2023 18:08:22 +0000 (11:08 -0700)]
Preserve user markers when inserting ERC date stamps

* lisp/erc/erc-stamp.el
(erc-stamp--insert-date-stamp-as-phony-message): Ensure existing
user markers aren't displaced by date-stamp insertion.
* lisp/erc/erc.el (erc--insert-line-function): New function-valued
variable for overriding `insert'.
(erc-insert-line): Call `erc--insert-line-function', when non-nil, to
insert line specially.
* test/lisp/erc/erc-scenarios-stamp.el
(erc-scenarios-stamp--on-insert-modify): New assertion helper
function.
(erc-scenarios-stamp--date-mode/left-and-right): New test.
(Bug#60936)

12 months agoDon't over-truncate erc-timestamp-format-left
F. Jason Park [Thu, 2 Nov 2023 02:22:49 +0000 (19:22 -0700)]
Don't over-truncate erc-timestamp-format-left

* lisp/erc/erc-stamp.el (erc-timestamp-format-left): Fix typo in doc
string and mention that changing the value mid-session requires
cycling the minor mode.
(erc-echo-timestamp-format): Add Custom :tag for choices.
(erc-stamp--date-format-end): Revise doc string.
(erc-stamp--format-date-stamp): Fix bug involving erroneous truncation
parameter for `substring' when `erc-timestamp-format-left' doesn't end
in a newline.  Thanks to Emanuel Berg for catching this.
(erc-stamp-prepend-date-stamps-p) Revise doc string.
(erc-insert-timestamp-left-and-right): Add comment regarding
compatibility concession.  (Bug#60936)

12 months agoReally fix off-by-one in erc--get-inserted-msg-bounds
F. Jason Park [Fri, 3 Nov 2023 23:07:20 +0000 (16:07 -0700)]
Really fix off-by-one in erc--get-inserted-msg-bounds

* lisp/erc/erc.el (erc--get-inserted-msg-bounds): Account for
`previous-single-property-change' returning a position adjacent to
that with an actual changed value.  The prior attempt at addressing
this was insufficient.
* test/lisp/erc/erc-tests.el (erc--get-inserted-msg-bounds): New test.
; * test/lisp/erc/resources/base/local-modules/second.eld: Timeout.
; * test/lisp/erc/resources/base/local-modules/third.eld: Timeout.

12 months ago; Fix last change in the FAQ
Eli Zaretskii [Sat, 4 Nov 2023 15:29:24 +0000 (17:29 +0200)]
; Fix last change in the FAQ

* doc/misc/efaq.texi (Start Emacs maximized, Common requests): Fix
last change.

12 months agoMake FAQ on starting Emacs maximized portable
Stefan Kangas [Sat, 4 Nov 2023 13:51:33 +0000 (14:51 +0100)]
Make FAQ on starting Emacs maximized portable

* doc/misc/efaq.texi (Start Emacs Maximized): Rename node from
"Fullscreen mode on MS-Windows".  Make advice portable to other
platforms, and remove MS-Windows specific hacks.
Ref: https://lists.gnu.org/r/emacs-devel/2023-10/msg00733.html

Co-authored-by: David Hedlund <public@beloved.name>
12 months ago; Improve commentary in 'files-tests-save-buffer-read-only-file'.
Eli Zaretskii [Sat, 4 Nov 2023 13:02:07 +0000 (15:02 +0200)]
; Improve commentary in 'files-tests-save-buffer-read-only-file'.

12 months agoAdd tests for saving to write-protected files
Jens Schmidt [Wed, 1 Nov 2023 18:56:06 +0000 (19:56 +0100)]
Add tests for saving to write-protected files

* test/lisp/files-tests.el (files-tests--with-yes-or-no-p): Add macro.
(files-tests-save-buffer-read-only-file): Add test for writing to
write-protected files with `save-buffer'.  (Bug#66546)

12 months ago; Update eww-suggest-uris :version.
Visuwesh [Sat, 4 Nov 2023 02:39:14 +0000 (08:09 +0530)]
; Update eww-suggest-uris :version.

* lisp/net/eww.el (eww-suggest-uris): Bump it to 30.1 since it was
changed.  (Bug#66926)

12 months agoFix bytecomp-tests--dest-mountpoint test failure
Mattias Engdegård [Sat, 4 Nov 2023 09:19:52 +0000 (10:19 +0100)]
Fix bytecomp-tests--dest-mountpoint test failure

* test/lisp/emacs-lisp/bytecomp-tests.el
(bytecomp-tests--dest-mountpoint): Add lexical cookie.

Bug reported and fix suggested by Jens Schmidt
(https://lists.gnu.org/archive/html/emacs-devel/2023-10/msg00719.html)

12 months ago; Merge from origin/emacs-29
Eli Zaretskii [Sat, 4 Nov 2023 09:21:39 +0000 (05:21 -0400)]
; Merge from origin/emacs-29

The following commit was skipped:

33fae4b02d6 Suggest alternative reason for ERT test duplication error

12 months agoMerge from origin/emacs-29
Eli Zaretskii [Sat, 4 Nov 2023 09:21:39 +0000 (05:21 -0400)]
Merge from origin/emacs-29

196def4fa64 Fix description of 'Package-Requires' library header
c1778432790 ; * doc/misc/tramp.texi (FUSE setup): Fix typo.
a64336cbb9c * lisp/emacs-lisp/cl-lib.el (cl--defalias): Improve&fix d...
da8b85b577d Add two docstrings in cl-lib.el

12 months ago; Merge from origin/emacs-29
Eli Zaretskii [Sat, 4 Nov 2023 09:21:38 +0000 (05:21 -0400)]
; Merge from origin/emacs-29

The following commits were skipped:

41939127457 Fix Tramp (don't merge)
c22eeba8277 ; Fix typo
4f57af7fccd * doc/misc/tramp.texi (Traces and Profiles): Fix indentat...
ccaf801baad * doc/misc/tramp.texi (Traces and Profiles): Fix indentat...

12 months agoMerge from origin/emacs-29
Eli Zaretskii [Sat, 4 Nov 2023 09:21:38 +0000 (05:21 -0400)]
Merge from origin/emacs-29

d5e5ea4e36b Fix guessing commands for zstandard archives in Dired
90db29aff86 Fix eglot.texi (JSONRPC objects in Elisp) example
5ef48ad6a37 ; Fix one author's name.
c4e9a6159a3 * doc/man/emacsclient.1: Fix --tramp option.
6dca3a8eab2 Improve `nsm-protocol-check--3des-cipher` docstring

12 months ago; Merge from origin/emacs-29
Eli Zaretskii [Sat, 4 Nov 2023 09:21:38 +0000 (05:21 -0400)]
; Merge from origin/emacs-29

The following commits were skipped:

04215e616f5 Recognize backslash in `dns-mode` quoted values
6629e861b35 Make `dns-mode` fontify quoted values correctly

12 months agoSuggest alternative reason for ERT test duplication error
Mattias Engdegård [Fri, 3 Nov 2023 17:06:04 +0000 (18:06 +0100)]
Suggest alternative reason for ERT test duplication error

* lisp/emacs-lisp/ert.el (ert-set-test): Amend error message;
maybe the redefinition was caused by a file loaded twice.
(Bug#66782)

Suggested by Xiyue Deng.

(cherry picked from commit 425d23fbeaede81ab4f50b4073949cc1c8a3fbd0)

12 months agoDon't need text properties when sending a mail
Manuel Giraud [Wed, 1 Nov 2023 12:59:37 +0000 (13:59 +0100)]
Don't need text properties when sending a mail

* lisp/mail/smtpmail.el (smtpmail-send-data): Don't get text
properties when sending mail data.  (Bug#66880)

12 months agoFix desktop-save on remote dired (bug#66697)
Manuel Giraud [Tue, 24 Oct 2023 12:51:04 +0000 (14:51 +0200)]
Fix desktop-save on remote dired (bug#66697)

Do not gather "misc data" for dired buffer not meant to be
desktop saved.

lisp/dired.el (dired-desktop-save-p): New function to test if
`dired-directory' should be desktop saved.
(dired-desktop-buffer-misc-data): Use it.

12 months agoFix description of 'Package-Requires' library header
Eli Zaretskii [Sat, 4 Nov 2023 07:59:45 +0000 (09:59 +0200)]
Fix description of 'Package-Requires' library header

* doc/lispref/tips.texi (Library Headers): Update the description
of the 'Package-Requires' header.  (Bug#66677)

12 months agoRemove unnecessary assertion added 2 days ago
Eli Zaretskii [Sat, 4 Nov 2023 07:33:33 +0000 (09:33 +0200)]
Remove unnecessary assertion added 2 days ago

* src/xdisp.c (get_glyph_face_and_encoding): Remove unnecessary
assertion.  It triggers, for no good reason, when running the
recipe of bug#66922 and typing C-p in the *Warnings* buffer after
the recipe finishes, because the glyph passed to this function is
a STRETCH_GLYPH, not a CHAR_GLYPH.

12 months agoMH-E testing: find locally-installed GNU Mailutils libraries
Stephen Gildea [Fri, 3 Nov 2023 22:24:21 +0000 (15:24 -0700)]
MH-E testing: find locally-installed GNU Mailutils libraries

* test/lisp/mh-e/test-all-mh-variants.sh: LD_LIBRARY_PATH is sometimes
necessary.  This reverts part of commit f1fcd321ff of 24 Nov 2021.

12 months ago* lisp/emacs-lisp/comp-cstr.el (comp--direct-supertype): Remove unused.
Andrea Corallo [Fri, 3 Nov 2023 17:34:05 +0000 (18:34 +0100)]
* lisp/emacs-lisp/comp-cstr.el (comp--direct-supertype): Remove unused.

12 months agoSuggest alternative reason for ERT test duplication error
Mattias Engdegård [Fri, 3 Nov 2023 17:06:04 +0000 (18:06 +0100)]
Suggest alternative reason for ERT test duplication error

* lisp/emacs-lisp/ert.el (ert-set-test):
Amend error message; maybe the redefinition was caused by a file
loaded twice (bug#66782).

Suggested by Xiyue Deng.

12 months ago; Fix recent changes in documentation
Eli Zaretskii [Fri, 3 Nov 2023 07:41:11 +0000 (09:41 +0200)]
; Fix recent changes in documentation

* lisp/man.el (Man-header-file-path, man): Doc fix.

* etc/NEWS: Fix wording.

12 months agoRound underline position and thickness
Po Lu [Fri, 3 Nov 2023 07:20:04 +0000 (15:20 +0800)]
Round underline position and thickness

* src/sfntfont.c (sfntfont_open): Round underline thickness
instead of truncating it, as is proper according to several
inquiries.

12 months agoAvoid moving point while analyzing text conversion
Po Lu [Fri, 3 Nov 2023 03:32:17 +0000 (11:32 +0800)]
Avoid moving point while analyzing text conversion

* lisp/simple.el (analyze-text-conversion): If neither calling
p-s-i-h nor calling p-t-c-h yields a change to point, return it
to its location before analyze-text-conversion was called.

* src/keyboard.c (kbd_buffer_get_event): See that text
conversion events are uniformly delivered prior to keyboard
events arriving in unison.

12 months ago* lisp/emacs-lisp/oclosure.el (oclosure--lambda): Burp in dynbind mode
Stefan Monnier [Fri, 3 Nov 2023 03:12:00 +0000 (23:12 -0400)]
* lisp/emacs-lisp/oclosure.el (oclosure--lambda): Burp in dynbind mode

The "fixes" bug#66867.

12 months agoRemove 'M-.' binding from js-mode and js-ts-mode
Dmitry Gutov [Thu, 2 Nov 2023 23:40:36 +0000 (01:40 +0200)]
Remove 'M-.' binding from js-mode and js-ts-mode

* lisp/progmodes/js.el (js-mode-map, js-ts-mode-map): Remove.
The global binding must be a lot more useful for most users
(https://lists.gnu.org/archive/html/emacs-devel/2020-05/msg01295.html).

12 months agoAdapt doc for man.el
Michael Albinus [Thu, 2 Nov 2023 11:14:13 +0000 (12:14 +0100)]
Adapt doc for man.el

* etc/NEWS: Rephrase 'Man-support-remote-systems' entry.
Fix typos.

* lisp/man.el (Man-header-file-path, man): Adapt docstrings.

12 months ago; Improve documentation of recent changes
Eli Zaretskii [Thu, 2 Nov 2023 07:56:55 +0000 (09:56 +0200)]
; Improve documentation of recent changes

* etc/NEWS:
* lisp/simple.el (completion-auto-wrap, completion-auto-select)
(first-completion, last-completion, previous-completion)
(next-completion, previous-line-completion)
(next-line-completion): Doc fixes.  (Bug#59486)

12 months agoProperly compute overhangs for overstruck text
Po Lu [Thu, 2 Nov 2023 05:18:37 +0000 (13:18 +0800)]
Properly compute overhangs for overstruck text

* src/xdisp.c (get_glyph_face_and_encoding): Account for
non-character glyphs by not attempting to translate them to
characters.
(gui_get_glyph_overhangs, gui_produce_glyphs): If the face is
overstruck, increase the right side bearing by 1 pixel.

12 months agoPreserve point when inserting date stamps in ERC
F. Jason Park [Tue, 31 Oct 2023 23:50:16 +0000 (16:50 -0700)]
Preserve point when inserting date stamps in ERC

* lisp/erc/erc-stamp.el (erc-stamp-mode, erc-stamp-disable): Move
remaining local teardown business to `erc-stamp--setup' and use
`erc-buffer-do' instead of `erc-with-all-buffers-of-server' to
emphasize that all ERC buffers are affected.
(erc-stamp--insert-date-stamp-as-phony-message): Move `erc--msg-props'
binding to `erc-stamp--lr-date-on-pre-modify'.
(erc-stamp--lr-date-on-pre-modify): Bind `erc--msg-props' here so that
the related guard condition in `erc-add-timestamp' is satisfied and
`erc-insert-timestamp-function' runs.  This fixes a regression new in
ERC 5.6 and introduced by c68dc778 "Manage some text props for ERC
insertion-hook members".  Also, `save-excursion' when narrowing to
prevent point from being dislodged after submitting input at the
prompt.
(erc-insert-timestamp-left-and-right): Don't initialize date stamps
when `erc-timestamp-format-left' is nil or consists only of newlines,
and enable fallback behavior in such cases on behalf of users without
informing them.  Allow global hook members to run first so that those
owned by `scrolltobottom' and similar can see the unadulterated input.
Fix wrong hook name.
(erc-stamp--setup): Fix wrong hook name.  Kill all local vars here
instead of sharing this duty with the minor-mode toggle.  (Bug#60936)

12 months ago; Attempt to fix race in erc-buffer-display test
F. Jason Park [Tue, 31 Oct 2023 06:36:54 +0000 (23:36 -0700)]
; Attempt to fix race in erc-buffer-display test

* test/lisp/erc/erc-fill-tests.el (erc-fill-tests--time-vals,
erc-fill-tests--current-time-value): Rename former to latter and
change type from function to natnum.
(erc-fill-tests--wrap-populate, erc-fill-wrap--merge,
erc-fill-wrap--merge-action): Use `erc-fill-tests--current-time-value'
instead of function `erc-fill-tests--time-vals'.
* test/lisp/erc/erc-scenarios-base-association.el
(erc-scenarios-common--base-association-multi-net): Extend timeout.
* test/lisp/erc/erc-scenarios-base-buffer-display.el
(erc-scenarios-base-buffer-display--reconnect-common): Move some
common assertions here from callers.
(erc-scenarios-base-buffer-display--defwin-recbury-intbuf,
erc-scenarios-base-buffer-display--count-reset-timeout):
Factor out a couple common assertions.  Clarify some comments.
(erc-scenarios-base-buffer-display--defwino-recbury-intbuf):
Factor out a couple common assertions and clarify some comments.
Account for possible concurrency bug leading to intermittent
test failures.
* test/lisp/erc/erc-scenarios-base-misc-regressions.el
(erc-scenarios-base-gapless-connect,
erc-scenarios-base-channel-buffer-revival): Extend timeouts.
* test/lisp/erc/resources/dcc/chat/accept.eld: Extend timeout.
* test/lisp/erc/resources/base/reconnect/options-again.eld: Extend
timeouts.
* test/lisp/erc/resources/erc-d/erc-d.el (erc-d--m): Prevent possible
wrong-type error.
* test/lisp/erc/resources/erc-d/resources/dynamic-foonet.eld: Extend
timeouts.
* test/lisp/erc/resources/erc-scenarios-common.el
(erc-scenarios-common--base-network-id-bouncer): Extend timeout.

12 months ago(project-switch-project): Fix the previous change
Dmitry Gutov [Wed, 1 Nov 2023 20:48:23 +0000 (22:48 +0200)]
(project-switch-project): Fix the previous change

* lisp/progmodes/project.el (project-switch-project):
Clear the buffer-local value in the right buffer (bug#66317).

12 months agoNew commands previous-line-completion and next-line-completion (bug#59486)
Juri Linkov [Wed, 1 Nov 2023 17:45:05 +0000 (19:45 +0200)]
New commands previous-line-completion and next-line-completion (bug#59486)

* lisp/simple.el (completion-list-mode-map): Bind [up] to
'previous-line-completion', and [down] to 'next-line-completion'.
(completion-auto-wrap): Mention `next-line-completion' and
`previous-line-completion' in the docstring.
(previous-line-completion, next-line-completion): New commands.

12 months agoRun `man' also on remote systems
Michael Albinus [Wed, 1 Nov 2023 15:54:31 +0000 (16:54 +0100)]
Run `man' also on remote systems

This implements bug#66758

* doc/emacs/programs.texi (Man Page):
Describe Man-support-remote-systems.

* etc/NEWS: Mention user option 'Man-support-remote-systems'.
Fix typos.

* lisp/dired.el (Man-support-remote-systems): Declare.
(dired-do-man): Use it.  Use also `file-local-name'.

* lisp/man.el (Man-support-remote-systems): New defcustom.
(Man-xref-normal-file): Handle remote files.
(Man-default-directory, Man-shell-file-name)
(Man-header-file-path): New defuns.
(Man-init-defvars): Use octal numbers.
(Man-support-local-filenames): Handle remote files.
(Man-completion-table): Use `Man-default-directory' and `process-file'.
(man): Adapt docstring.
(Man-start-calling): Use `Man-default-directory'.
(Man-getpage-in-background): Use `Man-default-directory',
`Man-shell-file-name', `start-file-process' and `process-file'.  Adapt
buffer name.
(Man-update-manpage): Use `Man-shell-file-name' and `process-file'.
(Man-view-header-file): Use `Man-header-file-path'.

12 months agoNon-recursive marking of buffer-local variables
Mattias Engdegård [Wed, 1 Nov 2023 13:34:30 +0000 (14:34 +0100)]
Non-recursive marking of buffer-local variables

* src/alloc.c (mark_localized_symbol): Inline into...
(process_mark_stack): ...this code and do don't use recursion.

12 months agoAdd two docstrings in cl-macs.el
Jeremy Bryant [Tue, 31 Oct 2023 23:37:10 +0000 (23:37 +0000)]
Add two docstrings in cl-macs.el

* lisp/emacs-lisp/cl-macs.el (cl--simple-exprs-p)
(cl--const-expr-p): Add docstrings

12 months agoPrevent errors when generating events above menu bar windows
Po Lu [Wed, 1 Nov 2023 03:15:24 +0000 (11:15 +0800)]
Prevent errors when generating events above menu bar windows

* src/keyboard.c (make_lispy_position): Pass false to w_f_c,
for the subsequent code is not prepared to encounter menu bar
windows.

12 months agoOnly override the current project buffer-locally
Dmitry Gutov [Wed, 1 Nov 2023 02:01:53 +0000 (04:01 +0200)]
Only override the current project buffer-locally

* lisp/progmodes/project.el (project-switch-project): Only
override the current project buffer-locally.  This is mostly for
the the mode-line indicator (https://debbugs.gnu.org/66317#53).

12 months agoCatch 'permission-denied' during project lookup
Dmitry Gutov [Wed, 1 Nov 2023 01:58:45 +0000 (03:58 +0200)]
Catch 'permission-denied' during project lookup

* lisp/progmodes/project.el (project--find-in-directory):
Catch 'permission-denied' (bug#66317).

Co-Authored-By: Spencer Baugh <sbaugh@catern.com>
12 months agoRespect `browse-url-default-scheme` on Android
Stefan Kangas [Wed, 1 Nov 2023 00:39:27 +0000 (01:39 +0100)]
Respect `browse-url-default-scheme` on Android

* lisp/net/browse-url.el (browse-url-default-android-browser):
Respect 'browse-url-default-scheme'.

12 months agolisp/emacs-lisp/comp-cstr.el: Fix bootstrap
Stefan Monnier [Tue, 31 Oct 2023 23:20:58 +0000 (19:20 -0400)]
lisp/emacs-lisp/comp-cstr.el: Fix bootstrap

* lisp/emacs-lisp/comp-cstr.el: Remove redundant require of `cl-macs`
and add missing require of `cl-extra`.

* lisp/emacs-lisp/cl-generic.el: Improve warning message.
* lisp/emacs-lisp/cl-extra.el (cl--print-table): Remove redundant arg.

12 months ago; * doc/misc/tramp.texi (FUSE setup): Fix typo.
Michael Albinus [Tue, 31 Oct 2023 16:32:23 +0000 (17:32 +0100)]
; * doc/misc/tramp.texi (FUSE setup): Fix typo.

12 months ago* lisp/emacs-lisp/comp.el: Remove redundant requires
Stefan Monnier [Tue, 31 Oct 2023 16:24:51 +0000 (12:24 -0400)]
* lisp/emacs-lisp/comp.el: Remove redundant requires

12 months agoDon't round underline metrics
Po Lu [Tue, 31 Oct 2023 13:04:11 +0000 (21:04 +0800)]
Don't round underline metrics

* src/sfntfont.c (sfntfont_open): Don't round underline position
or thickness, much as the other font drivers don't either.

12 months agoExtract underline positions from PostScript metrics tables
Po Lu [Tue, 31 Oct 2023 10:41:59 +0000 (18:41 +0800)]
Extract underline positions from PostScript metrics tables

* src/sfntfont.c (struct sfnt_font_desc): Introduce fields where
the font's underline position is recorded.
(sfnt_enum_font_1): Compute the underline position with
information in the post table whenever it exists.
(sfntfont_open): Scale the recorded position and save it into
the font object.

12 months ago* lisp/progmodes/project.el (project-menu-entry): Add 'bound-and-true-p'.
Juri Linkov [Tue, 31 Oct 2023 07:34:03 +0000 (09:34 +0200)]
* lisp/progmodes/project.el (project-menu-entry): Add 'bound-and-true-p'.

This is needed for compatibility with older versions (bug#66317).

12 months agoFix project-mode-line-format breaking buffer-file-coding-system (bug#66825)
Juri Linkov [Tue, 31 Oct 2023 07:22:28 +0000 (09:22 +0200)]
Fix project-mode-line-format breaking buffer-file-coding-system (bug#66825)

* lisp/progmodes/project.el (project-mode-line-format):
Let-bind 'last-coding-system-used' to prevent changing
'buffer-file-coding-system' in 'basic-save-buffer'.

12 months ago* lisp/emacs-lisp/cl-lib.el (cl--defalias): Improve&fix docstring
Stefan Monnier [Mon, 30 Oct 2023 22:50:47 +0000 (18:50 -0400)]
* lisp/emacs-lisp/cl-lib.el (cl--defalias): Improve&fix docstring

12 months ago; cperl-mode.el: Obey comment conventions
Harald Jörg [Mon, 30 Oct 2023 16:19:42 +0000 (17:19 +0100)]
; cperl-mode.el: Obey comment conventions

* lisp/progmodes/cperl-mode.el: Use ;;; only for "chapter headings".
Eliminate some redundant and misleading comments.  Fix an over-wide line.

12 months agoAdd two docstrings in cl-lib.el
Jeremy Bryant [Sun, 29 Oct 2023 21:56:54 +0000 (21:56 +0000)]
Add two docstrings in cl-lib.el

* lisp/emacs-lisp/cl-lib.el (cl--set-buffer-substring)
(cl--defalias): Add docstrings.  (Bug#66828)

12 months ago; * lisp/emacs-lisp/comp-cstr.el (comp-subtype-p): Hoist above use.
Mattias Engdegård [Mon, 30 Oct 2023 10:48:04 +0000 (11:48 +0100)]
; * lisp/emacs-lisp/comp-cstr.el (comp-subtype-p): Hoist above use.

12 months agoAscertain font spacing from post table if present
Po Lu [Mon, 30 Oct 2023 07:32:58 +0000 (15:32 +0800)]
Ascertain font spacing from post table if present

* src/sfnt.c (sfnt_table_names): Introduce name of post table.
(sfnt_read_post_table): New function.
(main): New tests.

* src/sfnt.h (struct sfnt_post_table): New struct.

* src/sfntfont.c (sfnt_enum_font_1): Read post table, and set
spacing from its is_fixed_pitch value.
(sfntfont_list_1): Compare spacing between both fonts if
supplied in the font spec.
(sfntfont_open): Set FONT_FILE_INDEX as well as
FONT_FULLNAME_INDEX.

12 months agocomp-cstr.el: The type hierarchy is a DAG, not a tree
Stefan Monnier [Mon, 30 Oct 2023 04:59:19 +0000 (00:59 -0400)]
comp-cstr.el: The type hierarchy is a DAG, not a tree

Adjust the type operations to account for the fact that types can have
several parents.

* lisp/emacs-lisp/comp-cstr.el (comp--cl-class-hierarchy):
Use `cl--class-allparents`.  Add FIXME.
(comp--direct-supertype): Declare obsolete.
(comp--direct-supertypes): New function.
(comp--normalize-typeset0): Rewrite to use `comp--direct-supertypes`;
adjust to account for the DAG structure; use `cl-set-difference`.
(comp--direct-subtypes): Rewrite.
(comp--intersection): New function.
(comp-supertypes): Rewrite and change return type.
(comp-subtype-p): Simplify.
(comp-union-typesets): Use `comp-supertypes` instead of iterating over
`comp-cstr-ctxt-typeof-types`.
* lisp/emacs-lisp/comp.el (comp--native-compile): Don't catch
errors if we're debugging.
* test/lisp/emacs-lisp/comp-cstr-tests.el: Adjust tests.

* lisp/emacs-lisp/cl-macs.el (cl-defstruct): Fix mishap when we
evaluate (cl-defstruct cl-structure-object ..) during the compilation
of `cl-preloaded.el`.
* lisp/emacs-lisp/cl-preloaded.el: Add corresponding assertion.

12 months agoExclude Git submodules from 'project-files'
Jim Porter [Sun, 29 Oct 2023 05:20:41 +0000 (22:20 -0700)]
Exclude Git submodules from 'project-files'

* lisp/progmodes/project.el (project--vc-list-files): Exclude Git
submodules (bug#66806).
(project-search, project-query-replace-regexp): Remove now-unneeded
workaround.

12 months agoTeach ffap to look for relative file names under project-root
Spencer Baugh [Sat, 21 Oct 2023 18:35:53 +0000 (14:35 -0400)]
Teach ffap to look for relative file names under project-root

Now file-name-at-point-functions, which runs
ffap-guess-file-name-at-point, will pick up on a file name at point if
that file name is a relative file name which exists when looked up
from the root of the project.

For example, in test/lisp/progmodes/eglot-tests.el there is the string
lisp/progmodes/eglot.el; if you put point on that and C-x C-f,
lisp/progmodes/eglot.el under the root of the Emacs repo will now be
part of future history.

* lisp/ffap.el (ffap-alist): Add entry for ffap-in-project.
(ffap-in-project): Add. (bug#66668)

12 months agoUse OClosure to drop `advice--buffer-local-function-sample` hack
Stefan Monnier [Sun, 29 Oct 2023 18:12:22 +0000 (14:12 -0400)]
Use OClosure to drop `advice--buffer-local-function-sample` hack

* lisp/emacs-lisp/nadvice.el (advice--forward): New OClosure, to
replace `advice--buffer-local-function-sample`.
(advice--set-buffer-local, advice--buffer-local): Adjust accordingly.

12 months agoRequire `cl-lib` rather than directly some of its subfiles
Stefan Monnier [Sun, 29 Oct 2023 18:07:04 +0000 (14:07 -0400)]
Require `cl-lib` rather than directly some of its subfiles

* test/src/filelock-tests.el:
* lisp/net/tramp-sh.el: Require `cl-lib` rather than `cl-seq` or `cl-macs`.

12 months agoEliminate some nested repetitions in regexps
Mattias Engdegård [Thu, 5 Oct 2023 12:06:24 +0000 (14:06 +0200)]
Eliminate some nested repetitions in regexps

Nested repetitions such as (A*)* potentially take exponential time but
can usually be rewritten in a faster and more readable way without
much trouble.  These were all found by Relint.

* lisp/obsolete/terminal.el (te-parse-program-and-args):
* lisp/org/org.el (org-make-tags-matcher):
Apply the transform (A+B*)+ -> A(A|B)*

* lisp/textmodes/fill.el (adaptive-fill-regexp):
Apply the transform A*(B+A*)* -> (A|B)*

* lisp/progmodes/idlw-shell.el (idlwave-shell-filter):
Find the last newline or CR in a more direct way.

* lisp/progmodes/vhdl-mode.el (vhdl-port-copy, vhdl-subprog-copy):
Trim trailing whitespace from a string in a more direct way.
All-whitespace strings are left unchanged as before.

12 months agoFix broken gdb-control-commands-regexp (bug#66363)
Mattias Engdegård [Sun, 29 Oct 2023 16:16:35 +0000 (17:16 +0100)]
Fix broken gdb-control-commands-regexp (bug#66363)

* lisp/progmodes/gdb-mi.el (gdb-python-guile-commands-regexp):
Remove, integrate into...
(gdb-control-commands-regexp): ...this.  Translate into rx.
Remove useless submatches which broke earlier attempts at using other
submatches.  Rewrite tail expression to avoid superlinear nested
repetition, eliminating a Relint complaint.
* lisp/progmodes/gdb-mi.el (gdb-send): Simplify use of the regexp
above, and use the correct submatch this time.  Remove unnecessary and
incorrect second regexp matching.

12 months ago; Fix typo in tramp.texi
Michael Albinus [Sun, 29 Oct 2023 14:29:32 +0000 (15:29 +0100)]
; Fix typo in tramp.texi

12 months agoMerge branch 'master' of git.sv.gnu.org:/srv/git/emacs
Michael Albinus [Sun, 29 Oct 2023 14:28:11 +0000 (15:28 +0100)]
Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs

12 months agoMake nnrss suggest HTTPS instead of HTTP
Stefan Kangas [Sun, 29 Oct 2023 13:06:32 +0000 (14:06 +0100)]
Make nnrss suggest HTTPS instead of HTTP

* lisp/gnus/nnrss.el (nnrss-check-group): Suggest HTTPS instead of
HTTP when prompting for URL.

12 months ago; Fix documentation of last change
Eli Zaretskii [Sun, 29 Oct 2023 12:19:39 +0000 (14:19 +0200)]
; Fix documentation of last change

* etc/NEWS:
* doc/emacs/misc.texi (emacsclient Options): Fix wording.
(Bug#65902)

12 months agoAdd 'server-eval-args-left' to server.el
Spencer Baugh [Fri, 22 Sep 2023 01:35:50 +0000 (21:35 -0400)]
Add 'server-eval-args-left' to server.el

Passing arbitrary arguments to functions through
"emacsclient --eval" sometimes requires complicated escaping
to avoid them being parsed as Lisp (as seen in
emacsclient-mail.desktop before this change).

The new variable 'server-eval-args-left' allows access to the
arguments before they are parsed as Lisp.  By removing
arguments from the variable before they're parsed, a snippet
of Lisp can consume arguments, as in emacsclient-mail.desktop.

org-protocol might be able to use this as well, which might allow it
to drop its current advice on server-visit-files.

* etc/emacsclient-mail.desktop: Use 'server-eval-args-left'.
* lisp/server.el (server-eval-args-left): New variable.
(server-process-filter, server-execute): Make '-eval' arguments
available through 'server-eval-args-left'.
* lisp/startup.el (argv): Mention 'server-eval-args-left' in
docstring.
* etc/NEWS: Announce 'server-eval-args-left'.
* doc/emacs/misc.texi (emacsclient Options): Document
'server-eval-args-left'.  (Bug#65902)

12 months ago; Fix a recent change in documentation of 'selection-coding-system'
Eli Zaretskii [Sun, 29 Oct 2023 12:06:29 +0000 (14:06 +0200)]
; Fix a recent change in documentation of 'selection-coding-system'

* doc/lispref/frames.texi (Window System Selections): Fix
description of the effect of 'selection-coding-system' on
MS-Windows and MS-DOS.

12 months ago; Fix last change (bug#66614).
Eli Zaretskii [Sun, 29 Oct 2023 11:40:27 +0000 (13:40 +0200)]
; Fix last change (bug#66614).

12 months agoAdd 'case-symbols-as-words' to configure symbol case behavior
Spencer Baugh [Sat, 21 Oct 2023 15:09:39 +0000 (11:09 -0400)]
Add 'case-symbols-as-words' to configure symbol case behavior

In some programming languages and styles, a symbol (or every
symbol in a sequence of symbols) might be capitalized, but the
individual words making up the symbol should never be capitalized.

For example, in OCaml, type names Look_like_this and variable names
look_like_this, but it is basically never correct for something to
Look_Like_This.  And one might have "aa_bb cc_dd ee_ff" or "Aa_bb
Cc_dd Ee_ff", but never "Aa_Bb Cc_Dd Ee_Ff".

To support this, the new variable 'case-symbols-as-words' causes
symbol constituents to be treated as part of words only for case
operations.

* src/casefiddle.c (case_ch_is_word): New function.
(case_character_impl, case_character): Use 'case_ch_is_word'.
(syms_of_casefiddle): Define 'case-symbols-as-words'.
* src/search.c (Freplace_match): Use 'case-symbols-as-words'
when calculating case pattern.
* test/src/casefiddle-tests.el (casefiddle-tests--check-syms)
(casefiddle-case-symbols-as-words): Test 'case-symbols-as-words'.
* etc/NEWS: Announce 'case-symbols-as-words'.
* doc/lispref/strings.texi (Case Conversion): Document
'case-symbols-as-words'.
(Bug#66614)

12 months agoRemove the header line after disabling 'which-function-mode'
Spencer Baugh [Sat, 21 Oct 2023 14:41:42 +0000 (10:41 -0400)]
Remove the header line after disabling 'which-function-mode'

Previously, the header line would stay around even when after
disabling 'which-function-mode', although it may be empty.  Now
the 'which-function-mode' element is properly removed from
'header-line-format', so the header line will disappear if
there's nothing else in 'header-line-format'.

Also, previously, when we ran (which-function-mode), we would
enable
'which-function-mode' for all buffers even if they didn't support
imenu.  We didn't run the normal logic in 'which-func-ff-hook' to
disable 'which-func-mode' if imenu wasn't present.  Now we do run
that logic, by just calling 'which-func-ff-hook'.  This is
especially important when the header line is enabled, because
otherwise there's a very noticeable header line added to every
buffer, including e.g. *Help* and *Buffer List*.

Also, we now check that 'header-line-format' is a list before trying
to add to it; this makes us work properly when enabling and
disabling 'which-function-mode' for modes which set
'header-line-format' to a string or symbol, such as eww.

* lisp/progmodes/which-func.el (which-func-try-to-enable): Re-add
'which-func-format' to the header line.
(which-func--header-line-remove): New function.
(which-func--disable): Call 'which-func--header-line-remove'.
(which-function-mode): Call 'which-func-ff-hook' and
'which-func--header-line-remove'. (bug#66283)
* test/lisp/progmodes/which-func-tests.el: New test.

12 months agoSet non-text mouse cursor on menu bar
Manuel Giraud [Fri, 6 Oct 2023 12:27:02 +0000 (14:27 +0200)]
Set non-text mouse cursor on menu bar

* src/xdisp.c (note_mouse_highlight): Set non-text mouse cursor on
menu bar.

12 months agoAvert a crash and file descriptor leak in yank-media
Po Lu [Sun, 29 Oct 2023 04:59:45 +0000 (12:59 +0800)]
Avert a crash and file descriptor leak in yank-media

* java/org/gnu/emacs/EmacsNative.java (close): New declaration.

* java/org/gnu/emacs/EmacsSdk11Clipboard.java
(getClipboardData): Catch SecurityException and guarantee file
descriptors are closed even if exceptions arise.

* src/android.c (dup): Export another function.

12 months agoPrefer seq-filter in hanja-util.el
Stefan Kangas [Sat, 28 Oct 2023 23:40:25 +0000 (01:40 +0200)]
Prefer seq-filter in hanja-util.el

Benchmarking shows seq-filter to be ~30% faster on this machine.

* lisp/language/hanja-util.el (hanja-filter): Make into obsolete alias
for 'seq-filter'.  Update single caller.

12 months agoSpeed up Eshell smart display module
Morgan Smith [Wed, 7 Sep 2022 01:18:51 +0000 (21:18 -0400)]
Speed up Eshell smart display module

em-smart was forcibly re-displaying the screen upwards of 500 times
per screen of output.  This caused the Eshell to feel quite slow when
the module was in use.  By using fewer hooks and never explicitly
calling 'redisplay' (which was unnecessary) the performance issues go
away (bug#57367).

lisp/eshell/em-smart.el:

(em-smart-unload-hook, eshell-smart-unload-hook): Remove
'eshell-smart-scroll' instead of the now deleted
'eshell-refresh-windows'.

(eshell-smart-displayed, eshell-currently-handling-window)
(eshell-refresh-windows): Delete.

(eshell-smart-scroll-window): Rename to 'eshell-smart-scroll-windows'
and add a bunch of logic originally from 'eshell-refresh-windows'.

(eshell-smart-initialize): Don't add a hook onto
'window-scroll-functions'.  Replace 'eshell-refresh-windows' with
'eshell-smart-scroll-windows'.

(eshell-smart-display-setup): Don't refresh windows.

(eshell-smart-redisplay): Rename to 'eshell-smart-scroll'.  Delete
'eobp' case.

12 months agoPrefer seq-filter in rcirc.el
Stefan Kangas [Sat, 28 Oct 2023 22:38:02 +0000 (00:38 +0200)]
Prefer seq-filter in rcirc.el

Benchmarking shows seq-filter to be ~30% faster on this machine.

* lisp/net/rcirc.el (rcirc-condition-filter): Make into an
obsolete alias for 'seq-filter'.  Update single caller.

12 months agoMerge branch 'master' of git.sv.gnu.org:/srv/git/emacs
Michael Albinus [Sat, 28 Oct 2023 17:43:17 +0000 (19:43 +0200)]
Merge branch 'master' of git.sv.gnu.org:/srv/git/emacs