F. Jason Park [Sat, 15 Jul 2023 04:08:31 +0000 (21:08 -0700)]
Improve ERC's internal invisibility API
* etc/ERC-NEWS: Mention that line endings have moved from the end to
the beginning of hidden messages.
* lisp/erc/erc-fill.el (erc-fill--wrap-ensure-dependencies): Warn when
users have `erc-legacy-invisible-bounds-p' enabled, and force it to
its default value of nil in the current buffer.
(erc-fill-wrap-mode, erc-fill-wrap-enable): Move business involving
compat variable for enabling legacy hidden-message behavior to helper.
* lisp/erc/erc-match.el (erc-match--hide-fools-offset-bounds): Move
internal variable from to main library file and rename to
`erc-legacy-invisible-bounds-p'. Also make obsolete and flip
semantics so a non-nil value enables the traditional behavior.
(erc-match--hide-message): Move to main library file and rename to
`erc--hide-message'. Add a property-value parameter instead of
hard-coding to `erc-match'. Also, condition behavior on renamed
compatibility flag `erc-legacy-invisible-bounds-p'.
(erc-hide-fools): Call `erc--hide-message' with own value for
`invisible' property specifically for fools. That is, use
`match-fools' rather than `erc-match' or `erc-match-fools' to save
room when visually inspecting. This retains the module name as a
prefix to hopefully minimize collisions with invisibility spec members
owned by non-ERC minor modes. The `timestamp' spec member owned by
erc-stamp likewise lacks a namespace prefix, but its feature/group
affiliation is self-evident.
(erc-match--modify-invisibility-spec): Use toggle command
non-interactively for adding and removing invisibility spec member.
(erc-match-toggle-hidden-fools): Add explicit override argument and
defer to general helper for actually modifying spec.
(erc-match--toggle-hidden): New helper for toggling invisibility
spec.
* lisp/erc/erc.el (erc--merge-prop): If new value is a list, prepend
onto existing. Add note about possible space optimization.
(erc-legacy-invisible-bounds-p): New obsolete compat variable to
enable traditional pre-5.6 invisibility interval on hidden messages.
Replaces `erc-match--hide-fools-offset-bounds-p' but has an inverted
meaning. The new default value of nil means invisibility covers a
shifted interval consisting of the message body plus the line ending
immediately preceding it.
(erc--hide-message): New function, formerly `erc-match--hide-message'
from erc-match.el introduced in ERC 5.6.
* test/lisp/erc/erc-scenarios-match.el:
(erc-scenarios-match--invisible-stamp): Fix comment and use API
function in interactive convenience setup.
(erc-scenarios-match--find-bol): New test helper.
(erc-scenarios-match--find-eol): Fix bug affecting interactive use.
(erc-scenarios-match--stamp-left-fools-invisible,
erc-scenarios-match--stamp-right-fools-invisible,
erc-scenarios-match--stamp-right-invisible-fill-wrap,
erc-scenarios-match--stamp-both-invisible-fill-static): Update
`invisible' property from `erc-match' to `match-fools'.
(erc-scenarios-match--stamp-right-fools-invisible,
erc-scenarios-match--stamp-both-invisible-fill-static): Move test
body to function of same name for use in multiple cases.
(erc-scenarios-match--stamp-right-fools-invisible--nooffset,
erc-scenarios-match--stamp-both-invisible-fill-static--nooffset): New
test variants asserting proper hiding with old pre-5.6 invisibility
interval.
* test/lisp/erc/erc-tests.el (erc-tests--equal-including-properties):
Relocate macro higher in same file.
(erc--merge-prop): New test. (Bug#64301)
F. Jason Park [Fri, 14 Jul 2023 13:12:30 +0000 (06:12 -0700)]
Make erc-fill-wrap work with left-sided stamps
* etc/ERC-NEWS: Remove all mention of option `erc-timestamp-align-to'
supporting a value of `margin', which has been abandoned. Do mention
leading white space before stamps now having stamp-related properties.
* lisp/erc/erc-backend.el (erc--reveal-prompt, erc--conceal-prompt):
New generic functions with default implementations factored out from
`erc--unhide-prompt' and `erc--hide-prompt'.
(erc--prompt-hidden-p): New internal predicate function.
(erc--unhide-prompt): Defer to `erc--reveal-prompt', and set
`erc-prompt' text property to t.
(erc--hide-prompt): Defer to `erc--conceal-prompt', and set
`erc-prompt' text property to `hidden'.
* lisp/erc/erc-compat.el (erc-compat--29-browse-url-irc): Don't
use `function-equal'.
* lisp/erc/erc-fill.el (erc-fill-wrap-margin-width,
erc-fill-wrap-margin-side): New options to control side and initial
width of `fill-wrap' margin.
(erc-fill--wrap-beginning-of-line): Fix bug involving non-string
valued `display' props.
(erc-fill-wrap-toggle-truncate-lines): New command to re-enable
`visual-line-mode' when toggling off `truncate-lines'.
(erc-fill-wrap-mode-map): Remap `toggle-truncate-lines' to
`erc-fill-wrap-toggle-truncate-lines'.
(erc-fill-wrap-mode, erc-fill-wrap-enable, erc-fill-wrap-disable):
Update doc string, persist a few local vars, and conditionally set
`erc-stamp--margin-left-p'. When deactivating, disable
`visual-line-mode' first.
(erc-fill--wrap-continued-message-p): Use `erc-speaker' instead of
heuristics when comparing nicks between consecutive messages.
(erc-fill-wrap-nudge): Update doc string and account for left-sided
stamps.
(erc-timestamp-offset): Add comment regarding conditional guard based
on function-valued option.
* lisp/erc/erc-stamp.el (erc-timestamp-use-align-to): Remove value
variant `margin', which was originally intended to be new in ERC 5.6.
This functionality was all but useless without the internal minor mode
`erc-stamp--display-margin-mode' active.
(erc-stamp-right-margin-width): Remove unused option new in 5.6.
(erc-stamp--display-margin-force): Remove unused function.
(erc-stamp--margin-width, erc-stamp--margin-left-p): New internal
variables.
(erc-stamp--init-margins-on-connect): New function for initializing
mode-managed margin after connecting.
(erc-stamp--adjust-right-margin, erc-stamp--adjust-margin): Rename
function to latter and accommodate left-hand stamps.
(erc-stamp--inherited-props): Move definition higher up in same file.
(erc-stamp--display-margin-mode): Update function name, and adjust
setup and teardown to accommodate left-handed stamps. Don't add
advice around `erc-insert-timestamp-function'.
(erc-stamp--last-prompt, erc-stamp--display-prompt-in-left-margin):
New function and helper var to convert a normal inserted prompt so
that it appears in the left margin.
(erc-stamp--refresh-left-margin-prompt): Helper for other modules to
quickly refresh prompt outside of insert hooks.
(erc--reveal-prompt, erc--conceal-prompt): New implementations for
when `erc-stamp--display-margin-mode' is active.
(erc-insert-timestamp-left): Convert to generic function and provide
implementation for `erc-stamp--display-margin-mode'.
(erc-stamp--omit-properties-on-folded-lines): New variable, an escape
hatch for propertizing white space before right-side stamps folded
over onto another line.
(erc-insert-timestamp-right): Don't expect `erc-timestamp-align-to' to
ever be the symbol `margin'. Move handling for that case to one
contingent on the internal minor mode `erc-stamp--display-margin-mode'
being active. Add text properties preceding stamps that occupy a line
by their lonesome. See related news entry for rationale. This is
arguably a breaking change.
* lisp/erc/erc.el (erc--refresh-prompt-hook): New hook variable for
modules to adjust prompt properties whenever it's refreshed.
(erc--refresh-prompt): Fix bug in which user-defined prompt functions
failed to hide when quitting in server buffers. Run new hook
`erc--refresh-prompt-hook'.
(erc-display-prompt): Add comment noting that the text property
`erc-prompt' now actually matters: it's t while a session is running
and `hidden' when disconnected.
* test/lisp/erc/erc-fill-tests.el (erc-fill--left-hand-stamps): New
test.
* test/lisp/erc/erc-stamp-tests.el
(erc-stamp-tests--use-align-to--nil,
erc-stamp-tests--use-align-to--t): New functions forged from old test
bodies to allow optionally asserting pre-5.6 behavior regarding
leading white space on right-hand stamps that exist on their own line.
(erc-timestamp-use-align-to--nil, erc-timestamp-use-align-to--t):
Parameterize with compatibility flag.
(erc-timestamp-use-align-to--margin,
erc-stamp--display-margin-mode--right): Rename test to latter.
* test/lisp/erc/erc-tests.el (erc-hide-prompt): Add some assertions
for new possible value of `erc-prompt' text property.
* test/lisp/erc/resources/fill/snapshots/stamps-left-01.eld: New test
data file. (Bug#60936)
Mauro Aranda [Sun, 16 Jul 2023 12:22:11 +0000 (09:22 -0300)]
Don't always toggle a choice when prompting
* lisp/wid-edit.el (widget-choice-prompt-value): Respect the value
of widget-choice-toggle. (Bug#60712)
Eli Zaretskii [Sat, 22 Jul 2023 12:56:50 +0000 (15:56 +0300)]
Merge branch 'master' of git.savannah.gnu.org:/srv/git/emacs
Mauro Aranda [Sun, 16 Jul 2023 22:46:54 +0000 (19:46 -0300)]
Avoid prompting when creating a restricted-sexp widget
* lisp/wid-edit.el (restricted-sexp): Turn value into a
string before reading.
(widget-field-value-create): Guard against value being nil,
so the field can be created even if the widget has a bad
default value. (Bug#59937)
João Távora [Sat, 22 Jul 2023 09:36:39 +0000 (10:36 +0100)]
; Eglot: adjust EGLOT-NEWS mention for last change
* etc/EGLOT-NEWS: Adjust.
João Távora [Sat, 22 Jul 2023 09:30:24 +0000 (10:30 +0100)]
Eglot: simplify and hopefully fix last change (bug#64784)
* lisp/progmodes/eglot.el (eglot--post-self-insert-hook): Use
last-command-event.
Michael Albinus [Sat, 22 Jul 2023 08:16:04 +0000 (10:16 +0200)]
Add inhibit-remote-files and without-remote-files
* doc/emacs/files.texi (Remote Files): Do not document tramp-mode
any longer. Describe inhibit-remote-files instead.
* doc/lispref/files.texi (Magic File Names): Add without-remote-files.
* doc/misc/tramp.texi (Frequently Asked Questions): Do not
document tramp-mode any longer. Describe inhibit-remote-files and
without-remote-files instead.
* etc/NEWS: Add inhibit-remote-files and without-remote-files.
Fix typos.
* lisp/net/tramp.el (inhibit-remote-files): New defun.
(without-remote-files): New defmacro.
* test/lisp/net/tramp-archive-tests.el
(tramp-archive-test49-without-remote-files):
* test/lisp/net/tramp-tests.el (tramp-test49-without-remote-files):
New tests.
(tramp-test50-unload): Rename.
Philip Kaludercic [Sun, 16 Jul 2023 11:56:23 +0000 (13:56 +0200)]
Ensure 'existing-filename' has 'bounds-of-thing-at-point'
* lisp/thingatpt.el (existing-filename): Define
'bounds-of-thing-at-point' for 'existing-filename'. (Bug#64664)
Philip Kaludercic [Wed, 19 Jul 2023 19:14:40 +0000 (21:14 +0200)]
; Handle string-at-point at end of buffer gracefully
* lisp/thingatpt.el (thing-at-point-bounds-of-string-at-point): Check
if 'char-after' returns non-nil before passing it to
'char-syntax'. (Bug#64733)
Eli Zaretskii [Sat, 22 Jul 2023 06:13:35 +0000 (09:13 +0300)]
; * lisp/time.el (display-time-date-and-time): Fix last change.
Stefan Monnier [Wed, 19 Jul 2023 15:29:32 +0000 (11:29 -0400)]
macroexp.el: Fix missing warning for intermediate expansions
When a macro expanded to a call to an obsolete macro, we failed
to emit a warning for that use of the obsolete macro.
* lisp/emacs-lisp/macroexp.el (macroexp-macroexpand):
Use `macroexpand-1` to check obsolecence of intermediate expansions.
* test/lisp/emacs-lisp/macroexp-tests.el
(macroexp--test-obsolete-macro): New test.
Mattias Engdegård [Fri, 21 Jul 2023 12:44:53 +0000 (14:44 +0200)]
Use BASE_EQ instead of EQ in search.c
* src/search.c (clear_regexp_cache, compile_pattern, Fmatch_data):
Use BASE_EQ where appropriate.
Mattias Engdegård [Fri, 21 Jul 2023 09:56:42 +0000 (11:56 +0200)]
; Fix bug in regexp debug code
* src/regex-emacs.c (print_partial_compiled_pattern):
Only the 7 bottom bits of the first byte form the bitmap size.
Robert Pluim [Fri, 21 Jul 2023 12:38:15 +0000 (14:38 +0200)]
Fix failing native-compile test
* test/src/comp-tests.el (comp-tests-result-lambda): Use
'comp-deftest', not 'ert-deftest'. The latter doesn't check for
native-compile support.
Eli Zaretskii [Fri, 21 Jul 2023 12:19:02 +0000 (15:19 +0300)]
Fix Proced display header alignment under 'text-scale-adjust'
* lisp/proced.el (proced-mode): Force the header-line to scale
according to 'text-scale-adjust'.
(proced-header-line): Use width of the header-line's face's
characters as align-to units, not the width of the frame's
default face's font. (Bug#64752)
* src/xdisp.c (calc_pixel_width_or_height): Use font's
average_width or space_width, not max_width, as the correct
measure of the font's width. This is consistent with the rest of
the display engine.
Stephen Berman [Thu, 20 Jul 2023 19:51:24 +0000 (21:51 +0200)]
Fix last change to wid-edit.el
* lisp/wid-edit.el (widget-choose): Test for stringp instead of
char-or-string-p, since substitute-command-keys should only apply
to choice values that are strings. (Bug#64046, Message #37)
Alan Mackenzie [Thu, 20 Jul 2023 19:33:42 +0000 (19:33 +0000)]
CC Mode (some languages): handle string lines ending in \\
In C, C++, Objective C, and Pike modes, regard \\ in a string
at EOL as a backslash followed by an escaped newline. In the
other languages, this remains regarded as an escaped backslash
followed by an invalid string terminator.
* lisp/progmodes/cc-defs.el (c-is-escaped, c-will-be-escaped):
Amend to observe the changed notion of escaped newlines.
* lisp/progmodes/cc-langs.el (c-string-escaped-newlines):
Unused, removed.
(c-escaped-newline-takes-precedence): New lang const and var.
(c-string-innards-re-alist): Amend, using the above new lang
var.
Robert Pluim [Thu, 20 Jul 2023 17:12:32 +0000 (19:12 +0200)]
; Fix previous change
Eli Zaretskii [Thu, 20 Jul 2023 16:25:43 +0000 (19:25 +0300)]
Fix
defface's with no customization data
* lisp/net/shr.el (shr-h4, shr-h5, shr-h6):
* lisp/cedet/semantic/decorate/include.el
(semantic-decoration-on-includes):
* lisp/progmodes/make-mode.el (makefile-shell):
* lisp/time.el (display-time-date-and-time):
* lisp/nxml/nxml-mode.el (nxml-text, nxml-delimiter)
(nxml-element-colon): Add face definitions (bug#64655).
Morgan Smith [Tue, 11 Jul 2023 18:08:24 +0000 (14:08 -0400)]
docview: imenu: check return value of 'mutool'
While 'mutool' supports many filetypes, 'mutool show' only
supports PDF files. This would lead to cryptic imenu errors
when opening other
file types (like EPUB) since we would parse the error output.
During my testing this caused 'imenu--index-alist' to have a
value of '(nil).
* lisp/doc-view.el (doc-view--pdf-outline): Error when 'mutool'
returns an error. Use 'call-process' to get the return value and
remove the call to 'shell-quote-argument' as 'call-process'
doesn't want any escapes.
(doc-view-mode): Handle possible error from 'doc-view-imenu-setup'.
(doc-view-imenu-enabled): Remove superfluous (and ... t).
(doc-view-imenu-setup): Remove check for mutool already ensured by
'doc-view-imenu-enabled' being non-nil.
(Bug#64516)
Matthias Meulien [Thu, 13 Jul 2023 21:38:41 +0000 (23:38 +0200)]
Custom var python-interpreter-args (bug#64397)
* lisp/progmodes/python.el (python-interpreter): Mention
new variable in documentation.
(python-interpreter-args): New custom variable.
(python-shell-interpreter, python-shell-interpreter-args)
(python-shell-interpreter-interactive-arg): Improve
documentation.
(python--list-imports, python--do-isort)
(python-fix-imports): Make process use customisable
arguments.
Mauro Aranda [Sat, 15 Jul 2023 21:54:14 +0000 (18:54 -0300)]
Preserve comments when redrawing a widget (Bug#64649)
* lisp/cus-edit.el (custom-comment-preserve): New function.
(custom-redraw): Use it.
(custom-comment-create): Make sure :comment-shown is set to
t if the comment widget gets created.
(custom-face-value-create, custom-variable-value-create):
Recreate the custom-comment widget with the preserved value,
if any.
Mauro Aranda [Mon, 10 Jul 2023 13:47:23 +0000 (10:47 -0300)]
Pass original spec just after creating the face-widget
* lisp/cus-edit.el (custom-face-get-current-spec-unfiltered):
New function, extracted from custom-face-get-current-spec.
(custom-face-get-current-spec): Use it.
(custom-face-state-set): Take an optional argument, to decide
if we should check against a filtered or unfiltered spec.
(custom-face-value-create): Use the new optional argument.
(Bug#64347)
Po Lu [Thu, 20 Jul 2023 11:50:45 +0000 (19:50 +0800)]
Merge from origin/emacs-29
4bd8e8c6d2b ; * src/xdisp.c: Fix wording in commentary.
3af27a4b815 Improve commentary in nsfns.m
5de5e4b4d0a Fix typos and ommissions in cus-edit.el
9d93c6ba14a ; * src/xdisp.c: Fix typos in the commentary.
86f2d6d62fc ; * src/xdisp.c: Improve commentary. (Bug#64596)
ac075176bf0 ; * admin/notes/bugtracker: Fix punctuation.
81518534471 ; * admin/notes/bugtracker: Use 'e.g.' throughout the doc...
f063f79a493 Convert NUL-containing NSString objects to Lisp strings c...
d172cd59854 ; * doc/lispref/keymaps.texi (Modifying Menus): Add cross...
927e8b470fc ; * doc/lispref/keymaps.texi (Extended Menu Items): Add @...
77f489421ec ; * src/xdisp.c: Minor improvements of the commentary.
ce3f9fba1a3 ; Improve accuracy of out-out-order message insertion
17073af84d7 ; Improve robustness of package-report-bug
Eli Zaretskii [Thu, 20 Jul 2023 10:23:01 +0000 (13:23 +0300)]
; * src/xdisp.c: Fix wording in commentary.
João Távora [Thu, 20 Jul 2023 10:02:12 +0000 (05:02 -0500)]
Eglot: fix textDocument/onTypeFormatting for 'newline' command
In the newline command, last-input-event is 13 (carriage return), but
most, if not all, language servers that support
documentOnTypeFormattingProvider expect 10 (linefeed) to be the
trigger, so convert 13 to 10 for the purposes of the
textDocument/onTypeFormatting request.
Also make this common edit silent in the mode-line/messages.
* lisp/progmodes/eglot.el (eglot--post-self-insert-hook): Convert
linefeed to carriage return.
(eglot-format): Pass SILENT to eglot--apply-text-edits.
(eglot--apply-text-edits): Take new optional SILENT arg.
* etc/EGLOT-NEWS: Mention change
Po Lu [Thu, 20 Jul 2023 08:01:34 +0000 (16:01 +0800)]
Improve commentary in nsfns.m
* src/nsfns.m (lispString): Avoid C++ comment and make the
commentary actually relevant to the reason `make_string' is
used.
Po Lu [Thu, 20 Jul 2023 07:55:07 +0000 (15:55 +0800)]
Fix typos and ommissions in cus-edit.el
* lisp/cus-edit.el (custom-display): Add missing display types.
Eli Zaretskii [Wed, 19 Jul 2023 16:28:48 +0000 (19:28 +0300)]
; * src/xdisp.c: Fix typos in the commentary.
Eli Zaretskii [Wed, 19 Jul 2023 14:54:53 +0000 (17:54 +0300)]
; * src/xdisp.c: Improve commentary. (Bug#64596)
F. Jason Park [Wed, 19 Jul 2023 05:18:00 +0000 (22:18 -0700)]
Warn when toggling erc-nicks-mode in target buffers
* lisp/erc/erc-nicks.el (erc-nicks-mode, erc-nicks-enable): This local
module isn't autoloaded like most global modules, in part to dissuade
users from attempting to enable it by running M-x erc-nicks-mode RET.
However, rather than signal an error upon detecting such an attempt,
ERC should explain that the only supported means of activation is via
`erc-modules'. This change does that and then enables it anyway,
despite the degraded experience.
F. Jason Park [Sun, 16 Jul 2023 02:11:37 +0000 (19:11 -0700)]
; Address some ambiguities in ERC's documentation
* doc/misc/erc.texi: Change name of example function from
`erc-my-enable-read-indicator-on-join' to
`erc-my-enable-keep-place-indicator-on-join'. Fix example functions
`erc-cmd-TRACK' and `erc-cmd-UNTRACK' to work with server buffers as
well as target buffers.
* etc/ERC-NEWS: Revise `keep-place' entry and make headlines less
redundant.
* lisp/erc/erc.el (erc-accidental-paste-threshold-seconds): Fix
portion of existing wording that was more likely interpreted as a
single multiline submission, whereas the intended meaning is three
separate submissions.
Eli Zaretskii [Wed, 19 Jul 2023 12:05:52 +0000 (15:05 +0300)]
; * admin/notes/bugtracker: Fix punctuation.
Arash Esbati [Tue, 18 Jul 2023 21:07:01 +0000 (23:07 +0200)]
; * admin/notes/bugtracker: Use 'e.g.' throughout the document.
Alan Mackenzie [Wed, 19 Jul 2023 11:23:00 +0000 (11:23 +0000)]
Fix native compilation in dynamically bound files.
This fixes bug#64642.
* lisp/emacs-lisp/comp.el (comp-spill-lap-function/symbol): Add
code for dynamically bound functions.
* test/src/comp-tests.el (comp-tests-result-lambda): New test.
* test/src/comp-resources/comp-test-funcs-dyn2.el: New test
file.
# Please enter the commit message for your changes. Lines starting
# with '#' will be ignored, and an empty message aborts the commit.
#
# On branch master
# Your branch is up to date with 'origin/master'.
#
# Changes to be committed:
# modified: lisp/emacs-lisp/comp.el
# new file: test/src/comp-resources/comp-test-funcs-dyn2.el
# modified: test/src/comp-tests.el
#
# Changes not staged for commit:
# modified: .gitignore
#
# Untracked files:
# .gitignore.acm
# .gitignore.backup
# .timestamps.txt
# 2021-01-03.err
# 2021-01-06.err
# 2021-12-16.make
# 2021-12-30.err
# 2021-12-31.err
# 2022-01-01.err
# 2022-01-02.check.err
# 2022-01-02.err
# 2022-01-04.err
# 2022-01-05.err
# 2022-01-06.err
# 2022-01-07.err
# 2022-01-07.outerr
# 2022-01-08.err
# 2022-01-09.err
# 2022-01-09b.err
# 2022-01-10.err
# 2022-01-11
# 2022-01-11.err
# 2022-02-22.err
# 2022-02-22.outerr
# checkout.
20220228.out
# checkout.
20220301.out
# checkout.
20220302.out
# doc/lispref/syntax.
20160318.techsi
# doc/lispref/syntax.
20160318b.techsi
# lib/.deps/
# lisp/2022-01-09.err
# lisp/emacs-lisp/comp.el.rej
# src/2021-12-20.err
# src/globals.
20211124.aitch
# src/lisp.
20211127.aitch
# test/lisp/calendar/icalendar-tests.elcr5m9Wq
#
Po Lu [Wed, 19 Jul 2023 07:03:12 +0000 (07:03 +0000)]
Port file-name-case-insensitive-p to Haiku
* src/fileio.c (file_name_case_insensitive_err): Don't return
errno upon failure, just 1, since errno is not used in the sole
caller.
Po Lu [Wed, 19 Jul 2023 05:51:41 +0000 (13:51 +0800)]
Improve commentary in xterm.c
* src/xterm.c (xi_populate_device_from_info, xi_handle_new_classes)
(syms_of_xterm): Improve commentary on touch events.
Po Lu [Wed, 19 Jul 2023 00:21:43 +0000 (08:21 +0800)]
Improve reliability of minor mode menu dispatch
* lisp/mouse.el (minor-mode-menu-from-indicator): Instead of using the
word at point, search for a matching enabled minor mode from the
beginning of the string object when mode-line-compact is enabled.
Jim Porter [Tue, 18 Jul 2023 21:07:03 +0000 (14:07 -0700)]
; * etc/NEWS (Eshell): Fix typo.
Eli Zaretskii [Tue, 18 Jul 2023 18:06:30 +0000 (21:06 +0300)]
Fix line number display under 'mode-line-format-right-align'
* src/xdisp.c (Fbuffer_text_pixel_size): Restore window attributes
important for redisplay of the target WINDOW. (Bug#64713)
Mattias Engdegård [Tue, 18 Jul 2023 13:42:55 +0000 (15:42 +0200)]
Convert NUL-containing NSString objects to Lisp strings correctly
This cures the inability to paste text containing NUL from other
applications on macOS, introduced by mistake in
7e3c2b553f
(bug#64697).
* src/nsfns.m ([NSString lispString]): Use make_string instead of
build_string which relies on NUL-termination.
Po Lu [Tue, 18 Jul 2023 13:26:05 +0000 (21:26 +0800)]
Fix event data leak
* src/xterm.c (handle_one_xevent): Jump to XI_OTHER after
handling touch ownership event.
Eli Zaretskii [Tue, 18 Jul 2023 13:17:15 +0000 (16:17 +0300)]
; * doc/lispref/keymaps.texi (Modifying Menus): Add cross-references.
Eli Zaretskii [Tue, 18 Jul 2023 12:57:01 +0000 (15:57 +0300)]
; * doc/lispref/keymaps.texi (Extended Menu Items): Add @pxref.
Eli Zaretskii [Tue, 18 Jul 2023 11:58:09 +0000 (14:58 +0300)]
; * src/xdisp.c: Minor improvements of the commentary.
Po Lu [Tue, 18 Jul 2023 08:15:05 +0000 (16:15 +0800)]
Fix display of minor mode menus when mode-line-compact is enabled
* lisp/mouse.el (minor-mode-menu-from-indicator): New arg
WINDOW. If INDICATOR is a string object and mode-line-compat is
enabled within WINDOW, use the symbol within the object at its
position instead.
(mouse-minor-mode-menu): Pass posn-object and posn-window to
minor-mode-menu-from-indicator.
Po Lu [Tue, 18 Jul 2023 01:27:27 +0000 (09:27 +0800)]
Expose the ``cancellation'' of touch events to Lisp
* doc/lispref/commands.texi (Touchscreen Events):
* etc/NEWS: Describe new event parameter `canceled'.
* src/keyboard.c (make_lispy_event) <TOUCHSCREEN_END_EVENT>:
If event->modifiers, set canceled to t.
* src/termhooks.h (enum event_kind): Describe meaning of
modifiers in TOUCHSCREEN_END_EVENTs.
* src/xfns.c (setup_xi_event_mask): Select for
XI_TouchOwnership.
* src/xterm.c (xi_link_touch_point): Round X and Y and clear
ownership.
(xi_unlink_touch_point): Return 1 if the touch point is not
owned by Emacs, 2 otherwise.
(handle_one_xevent): Handle XI_TouchOwnership events and report
ownership correctly.
* src/xterm.h (enum xi_touch_ownership): New enum. Write
commentary on XI touch sequence ownership.
(struct xi_touch_point_t): Use integer X and Y. New field
`ownership'. Adjust for alignment.
Dmitry Gutov [Tue, 18 Jul 2023 00:49:44 +0000 (03:49 +0300)]
Delete vc-deduce-fileset-1, taking advantage of set-buffer
* lisp/vc/vc.el (vc-deduce-fileset): Set buffer to the base
buffer, if any (bug#63949). That's to replace the more complex
previous strategy. vc-deduce-fileset is allowed to change the
current buffer, so why not do it for that case.
(vc-deduce-fileset-1): Delete, moving the meat of the logic back
to vc-deduce-fileset.
Philip Kaludercic [Mon, 17 Jul 2023 20:02:38 +0000 (22:02 +0200)]
; Improve accuracy of out-out-order message insertion
* lisp/net/rcirc.el (rcirc-print): Do not ignore the return value of
'next-single-property-change'.
Juri Linkov [Mon, 17 Jul 2023 17:56:29 +0000 (20:56 +0300)]
* lisp/bindings.el (mode--line-format-right-align): Add 'mode-line' face.
Like in `tab-bar-format-align-right', use `add-face-text-property' to
add 'mode-line' face on the `rest-str' string for `string-pixel-width'
to calculate the correct pixel width (bug#62606).
Mattias Engdegård [Mon, 17 Jul 2023 11:05:21 +0000 (13:05 +0200)]
Don't distort character ranges in rx translation
The Emacs regexp engine interprets character ranges from ASCII to raw
bytes, such as [a-\xfe], as not including non-ASCII Unicode at all;
ranges from non-ACII Unicode to raw bytes, such as [ü-\x91], are
ignored entirely.
To make rx produce a translation that works as intended, split ranges
that that go from ordinary characters to raw bytes. Such ranges may
appear from set manipulation and regexp optimisation.
* lisp/emacs-lisp/rx.el (rx--generate-alt): Split intervals that
straddle the char-raw boundary when rendering a string regexp from an
interval set.
* test/lisp/emacs-lisp/rx-tests.el (rx-char-any-raw-byte):
Add test cases.
Brian Leung [Mon, 17 Jul 2023 13:29:18 +0000 (14:29 +0100)]
Eglot: check correct capability name in eglot-imenu (bug#64682)
* lisp/progmodes/eglot.el (eglot-imenu): Declare the correct name of
the server capability providing textDocument/documentSymbol.
Without this change, eglot-imenu always aborts even when used with
servers supporting textDocument/documentSymbol.
Po Lu [Mon, 17 Jul 2023 12:42:56 +0000 (20:42 +0800)]
Don't deliver touch or pinch events from master or slave devices
* src/xfns.c (setup_xi_event_mask): Select for gesture events on
only master devices if safe.
* src/xterm.c (handle_one_xevent): Deliver touchscreen events
only from direct slave devices, and gesture events only from
master pointers.
Robert Pluim [Mon, 17 Jul 2023 08:10:48 +0000 (10:10 +0200)]
Fix eshell.texi markup
* doc/misc/eshell.texi (Aliases): Add missing @end table. (Bug#64674)
Marc van der Wal [Mon, 17 Jul 2023 08:56:06 +0000 (10:56 +0200)]
Check correct bit for DNS truncation
* lisp/net/dns.el (dns-read): The TC bit is the second bit, not the
third bit. (Bug#64678)
Copyright-paperwork-exempt: yes
Eli Zaretskii [Mon, 17 Jul 2023 11:36:44 +0000 (14:36 +0300)]
; * lisp/files.el (create-file-buffer): Add commentary.
Eli Zaretskii [Mon, 17 Jul 2023 11:34:35 +0000 (14:34 +0300)]
; * lisp/files.el (create-file-buffer): Fix last change (bug#62732).
Stefan Monnier [Mon, 17 Jul 2023 01:12:20 +0000 (21:12 -0400)]
xdisp.c: Improve doc of `redisplay` flags a bit
Eli Zaretskii [Sun, 16 Jul 2023 09:15:24 +0000 (12:15 +0300)]
Fix Wdired with relative and abbreviated file names
* lisp/wdired.el (wdired-finish-edit): Support Dired buffers where
'dired-directory' is a list made of relative or abbreviated file
names. (Bug#64606)
Spencer Baugh [Sun, 9 Jul 2023 16:59:50 +0000 (12:59 -0400)]
; Improve robustness of package-report-bug
* lisp/emacs-lisp/package.el (package-report-bug): Do not assume that
every entry in 'custom-current-group-alist' has a non-nil entry for a
filename.
It is possible for a group to not be associated with any file, e.g. when
a 'defgroup' form is evaluated using 'eval-expression'. (bug#64543)
Eli Zaretskii [Sat, 15 Jul 2023 19:11:43 +0000 (15:11 -0400)]
Merge from origin/emacs-29
16f3a09e8db ; * lisp/simple.el (kill-new): Fix a typo. (Bug#64423)
d78e670237b ; * src/lisp.h: Improve commentary for XIL, XLI, XLP (bug...
Eli Zaretskii [Sat, 15 Jul 2023 19:08:52 +0000 (22:08 +0300)]
; * lisp/simple.el (kill-new): Fix a typo. (Bug#64423)
Stefan Monnier [Sat, 15 Jul 2023 15:41:32 +0000 (11:41 -0400)]
sgml-mode.el: Cosmetic fixes
* lisp/textmodes/sgml-mode.el: Prefer #' to quote function names.
(sgml-font-lock-keywords-1, sgml-font-lock-syntactic-face):
Refer to font-lock faces rather than their variables.
(sgml-mode-facemenu-add-face-function): Remove redundant arg to `mapconcat`.
(sgml-electric-tag-pair-before-change-function): Remove left-over
debugging messages (bug#64636).
Eli Zaretskii [Sat, 15 Jul 2023 10:04:41 +0000 (13:04 +0300)]
; * src/lisp.h: Improve commentary for XIL, XLI, XLP (bug#64645).
Eli Zaretskii [Sat, 15 Jul 2023 09:49:09 +0000 (12:49 +0300)]
; * src/comp.c (CALL0I): Ifdef away, as it's now unused.
Eli Zaretskii [Sat, 15 Jul 2023 09:30:28 +0000 (05:30 -0400)]
Merge from origin/emacs-29
d09de2f49d7 Ignore quit while getting interprogram paste in kill-new
afdf54a5313 * lisp/progmodes/gdb-mi.el: Fix interactive invocation of...
b54febef5d7 Fix NetBSD build with and without ncurses
c5fb7301599 ; * lisp/paren.el (show-paren-function): Fix last change ...
ea696ea4b9a ; Fix last change.
b0181dafb9e Improve documentation of 'enable-local-variables' in Emac...
eb7c45ca43f ; Fix copy-paste in Widget Manual (Bug#64610)
aedbc3006e1 ; * doc/misc/eshell.texi (Aliases): Remove stray "@end ta...
673992d28e2 ; * lisp/progmodes/sql.el (sql-interactive-mode): Remove ...
Eli Zaretskii [Sat, 15 Jul 2023 09:30:28 +0000 (05:30 -0400)]
; Merge from origin/emacs-29
The following commits were skipped:
6a360b08405 ; * doc/misc/eshell.texi (Variables): Add missing index f...
f529bf52eb5 ; * doc/misc/eshell.texi (Invocation): Whitespace cleanup.
3a703545798 Add documentation about remote access in Eshell
7640835ae03 ; * doc/misc/eshell.texi: Fix last change.
e79306fb467 ; * doc/misc/eshell.texi: Fix typos and clean up unclear ...
9f6d79dd967 Document some missing Eshell commands
951671b0e10 Document optional Eshell modules
7c417b2ae55 Correct the Eshell documentation about how to write new m...
6c3fe42bde1 Restructure Eshell extension modules documentation
4e204b56186 ; * doc/misc/eshell.texi (Bugs and ideas): Remove impleme...
Eli Zaretskii [Sat, 15 Jul 2023 09:30:14 +0000 (05:30 -0400)]
Merge from origin/emacs-29
7ac947f34c7 ; * src/lisp.h (struct Lisp_Overlay): Update commentary (...
9bc93c7996c Replace duplicate text from epa.texi by a reference
74cc1d27f1f Add basic usage information and fix references
f24bdbfaf57 Add concept index, title-case structure titles
0165b50b0ff ; * lisp/emacs-lisp/lisp.el (raise-sexp): Fix typo in doc...
4cf33b6bd02 ; * doc/misc/modus-themes.org: Fix whitespace (bug#64548).
4821da1ad7f Fix show-paren-mode when the parentheses is partially vis...
419b4d44914 ; Improve documentation of with-restriction
be34e8294af ; * admin/git-bisect-start: Update failing commits
8e06809fccd Merge branch 'scratch/bug64391' into emacs-29
dbac8076057 * lisp/net/tramp.el (tramp-get-buffer-string): Stabilize.
01fb898420f Simplify after adding internal function to enter a labele...
b741dc7fcde Add internal function to enter a labeled restriction
# Conflicts:
# doc/misc/modus-themes.org
Eli Zaretskii [Sat, 15 Jul 2023 09:28:16 +0000 (05:28 -0400)]
; Merge from origin/emacs-29
The following commit was skipped:
a82486e5a4e Fix stale cache in Tramp (don't merge)
Eli Zaretskii [Sat, 15 Jul 2023 09:28:16 +0000 (05:28 -0400)]
Merge from origin/emacs-29
01fb898420f Simplify after adding internal function to enter a labele...
b741dc7fcde Add internal function to enter a labeled restriction
Spencer Baugh [Sat, 8 Jul 2023 16:36:22 +0000 (12:36 -0400)]
Ignore quit while getting interprogram paste in kill-new
On X, if the current selection owner is not responding to selection
requests, the user may want to take ownership of the selection. The
obvious way to do this is to kill some text (which a user might also
be doing just as part of normal editing at the time the selection
owner becomes nonresponsive). However, if
save-interprogram-paste-before-kill is non-nil, then killing text will
hang until the user quits, and this quit will abort the entire
kill-new, preventing the user from taking ownership of the selection.
Now instead if the user quits while we are attempting to retrieve the
selection from hanging owner, we will proceed to take ownership of the
selection as normal, resolving the problem.
(One example of a selction owner that might not be responding to
selection requests is another instance of Emacs itself; while Emacs is
blocked in call-process or Lisp execution, it currently does not
respond to selection requests.)
* lisp/simple.el (kill-new): Ignore quit while getting interprogram
paste (bug#64423)
Wang Diancheng [Fri, 14 Jul 2023 03:06:32 +0000 (11:06 +0800)]
* lisp/progmodes/gdb-mi.el: Fix interactive invocation of 'gud-go'.
Bug#64590.
Copyright-paperwork-exempt: yes
Matthias Meulien [Thu, 13 Jul 2023 20:47:01 +0000 (22:47 +0200)]
Fix "Improve Python imports management commands"
* lisp/progmodes/python.el (python--list-imports): Prefer to
use an exit status >1.
(python--list-imports-check-status): New function to check
status of Python script.
(python--do-isort): Fix wrong status check introduced with
6295d7abdd4. (Bug#64406)
Valtteri Vuorikoski [Thu, 13 Jul 2023 09:35:51 +0000 (12:35 +0300)]
Fix NetBSD build with and without ncurses
* configure.ac (netbsd): Don't set TERMINFO=no unless the termcap
library is either -ltermcap or -lcurses. This prevents aborts
because on recent versions of NetBSD libtermcap is actually a
symlink to libterminfo. (Bug#64577)
Copyright-paperwork-exempt: yes
Spencer Baugh [Sun, 9 Jul 2023 16:16:28 +0000 (12:16 -0400)]
; Fix last change (bug#64533)
* lisp/progmodes/which-func.el (which-func-display): Fix quoting
in the doc string.
* etc/NEWS: Announce 'which-func-display'.
Spencer Baugh [Sun, 9 Jul 2023 16:16:28 +0000 (12:16 -0400)]
Support displaying function name in the header line
In some languages, the function name as displayed in the mode-line by
which-func-mode can be quite long. It's useful to be able to display
it in the header-line instead. Let's support that.
* lisp/progmodes/which-func.el (which-func-display)
(which-func--use-header-line, which-func--use-mode-line):
Add. (Bug#64533)
(which-func-try-to-enable): Support 'which-func--use-header-line'.
(which-func--disable): Add, to support 'which-func--use-header-line'.
(which-func-ff-hook, which-func-update-1): Use 'which-func--disable'.
Łukasz Stelmach [Tue, 13 Jun 2023 11:26:39 +0000 (13:26 +0200)]
Show SHA-256 digest of a public key in 'nsm-format-certificate'
* lisp/net/nsm.el (nsm-format-certificate): Show public key
digest (SHA-256 if available). Displaying the digest enables
users to verify the certificate with other tools like 'gnutls-cli'
which present much more detailed information.
* src/gnutls (emacs_gnutls_certificate_details): Export SHA-256
public key digest if supported by GnuTLS. (Bug#64043)
Eli Zaretskii [Sat, 15 Jul 2023 07:21:07 +0000 (10:21 +0300)]
; * lisp/paren.el (show-paren-function): Fix last change (bug#64547).
Eli Zaretskii [Fri, 14 Jul 2023 17:33:29 +0000 (20:33 +0300)]
; Fix last change.
YugaEgo [Fri, 14 Jul 2023 15:49:36 +0000 (18:49 +0300)]
Improve documentation of 'enable-local-variables' in Emacs manual
* doc/emacs/custom.texi (Safe File Variables): Document ':all'.
(Bug#64621)
Mattias Engdegård [Fri, 14 Jul 2023 16:47:08 +0000 (18:47 +0200)]
; * lisp/vc/ediff-wind.el: hush bytecomp warnings on non-X platforms
Mattias Engdegård [Fri, 14 Jul 2023 16:05:32 +0000 (18:05 +0200)]
Provide backtrace for byte-ops car, cdr, setcar, setcdr, nth and elt
Include calls to these primitives from byte-compiled code in
backtraces. For nth and elt, not all errors are covered.
(Bug#64613)
* src/bytecode.c (exec_byte_code): Add error backtrace records for
car, cdr, setcar, setcdr, nth and elt.
* src/data.c (syms_of_data): Add missing defsyms for car, setcar,
setcdr, nth and elt.
* test/lisp/emacs-lisp/bytecomp-tests.el
(bytecomp-tests--error-frame, bytecomp-tests--byte-op-error-cases)
(bytecomp--byte-op-error-backtrace): New test.
Mauro Aranda [Fri, 14 Jul 2023 10:41:58 +0000 (07:41 -0300)]
; Fix copy-paste in Widget Manual (Bug#64610)
Po Lu [Fri, 14 Jul 2023 07:33:48 +0000 (15:33 +0800)]
Fix misreporting of window top line
* src/frame.h (FRAME_TOOL_BAR_TOP_LINES): Return tool_bar_lines,
not tool_bar_height.
Paul Eggert [Fri, 14 Jul 2023 06:55:50 +0000 (23:55 -0700)]
Reorder NaN, INF paras
* doc/lispref/numbers.texi (Float Basics):
Reorder paragraphs so that examples follow defns.
Paul Eggert [Fri, 14 Jul 2023 06:36:33 +0000 (23:36 -0700)]
Improve doc for VAX reading NaN, INF
* doc/lispref/numbers.texi (Float Basics): Improve description of
how Lisp reads infinities and NaNs on a VAX.
Eli Zaretskii [Fri, 14 Jul 2023 05:32:57 +0000 (08:32 +0300)]
; * doc/misc/eshell.texi (Aliases): Remove stray "@end table".
YugaEgo [Thu, 13 Jul 2023 19:50:27 +0000 (22:50 +0300)]
; * lisp/progmodes/sql.el (sql-interactive-mode): Remove FIXME (bug#64602).
Stefan Monnier [Fri, 14 Jul 2023 02:26:19 +0000 (22:26 -0400)]
cl-print: Allow expanding the contents of hash-tables
* lisp/emacs-lisp/cl-print.el (cl-print-object) <hash-table>:
Add an ellipsis.
(cl-print-object-contents) <hash-table>: New method.
Jim Porter [Thu, 13 Jul 2023 16:10:57 +0000 (09:10 -0700)]
; * doc/misc/eshell.texi (Variables): Add missing index for $INSIDE_EMACS
Do not merge to master. On master, this was fixed by
0bb8a011d57.
Michael Albinus [Tue, 11 Jul 2023 10:18:31 +0000 (12:18 +0200)]
; * doc/misc/eshell.texi (Invocation): Whitespace cleanup.
Do not merge to master. This is a backport of
04710bd01b2.
Jim Porter [Sun, 9 Jul 2023 19:04:01 +0000 (12:04 -0700)]
Add documentation about remote access in Eshell
Do not merge to master. This is a backport of
438921161ac.
* doc/misc/eshell.texi
(Invocation): Mention the '*' prefix.
(Remote Access): New section...
(Commands): ... link to it.
Jim Porter [Sat, 8 Jul 2023 19:13:22 +0000 (12:13 -0700)]
; * doc/misc/eshell.texi: Fix last change.
Do not merge to master. This is a backport of
8c5fef4eb30.
Jim Porter [Sat, 8 Jul 2023 01:19:08 +0000 (18:19 -0700)]
; * doc/misc/eshell.texi: Fix typos and clean up unclear wording.
Do not merge to master. This is a backport of
118582efb30.
Jim Porter [Sat, 8 Jul 2023 00:30:26 +0000 (17:30 -0700)]
Document some missing Eshell commands
Do not merge to master. This is a backport of
f7a899d7ca0.
* doc/misc/eshell.texi (Built-ins): Document 'eshell-debug'.
(Extra built-in commands): Document 'count', 'ff', and 'gf'.
Jim Porter [Sat, 13 May 2023 03:03:48 +0000 (20:03 -0700)]
Document optional Eshell modules
Do not merge to master. This is a backport of
77f13edab0f.
* doc/misc/eshell.texi (Built-ins): Move disabled-by-default commands
to...
(Tramp extensions, Extra built-in commands): ...here
(Optional modules, Key rebinding, Smart scrolling): Add documentation.
(Bug and ideas): Documentation is no longer incomplete!
Jim Porter [Sat, 13 May 2023 03:11:01 +0000 (20:11 -0700)]
Correct the Eshell documentation about how to write new modules
* doc/misc/eshell.texi (Writing a module): Fix the documentation.
'eshell-defgroup' doesn't exist anymore.
Do not merge to master. This is a backport of
77f13edab0f.
Jim Porter [Mon, 30 Jan 2023 03:59:56 +0000 (19:59 -0800)]
Restructure Eshell extension modules documentation
This adds a section for documenting all the optional modules.
Do not merge to master. This is a backport of
f2981a1681d.
* doc/misc/eshell.texi (Extension modules): Move explanation about
writing modules to...
(Writing a module): ... here.
(Module testing): Remove. Testing an Eshell module doesn't require
any special documentation.
(Key binding, Smart scrolling, Electric forward slash): Move under...
(Optional modules): ... here.
(Directory handling, Terminal emulation): Remove. These modules are
enabled by default, and so are documented above.
(Tramp extensions, Extra built-in commands): New sections.
Jim Porter [Mon, 30 Jan 2023 02:29:02 +0000 (18:29 -0800)]
; * doc/misc/eshell.texi (Bugs and ideas): Remove implemented feature.
Do not merge to master. This is a backport of
194de36ca9f.