]> git.eshelyaron.com Git - emacs.git/log
emacs.git
22 months agoClean up some event handling code
Po Lu [Wed, 26 Oct 2022 12:37:53 +0000 (20:37 +0800)]
Clean up some event handling code

* src/xterm.c (handle_one_xevent): Use dpyinfo where
FRAME_DISPLAY_INFO could be substituted for it.

22 months ago; Tramp copyedit
Michael Albinus [Wed, 26 Oct 2022 11:59:37 +0000 (13:59 +0200)]
; Tramp copyedit

22 months agoModernize `auto-revert-notify-exclude-dir-regexp'
Michael Albinus [Wed, 26 Oct 2022 11:58:42 +0000 (13:58 +0200)]
Modernize `auto-revert-notify-exclude-dir-regexp'

* lisp/autorevert.el (auto-revert-notify-exclude-dir-regexp): Use `rx'
and `mounted-file-systems'.

22 months agoDynamic validation of styles in completion-category-overrides
Mattias Engdegård [Wed, 26 Oct 2022 08:51:51 +0000 (10:51 +0200)]
Dynamic validation of styles in completion-category-overrides

The type of the defcustom completion-category-overrides must be able
to accommodate dynamic changes to completion-styles-alist, because
some packages (eglot) make their own additions.

This change fixes a failure in test-custom-opts.  See discussion at:
https://lists.gnu.org/archive/html/emacs-devel/2022-10/msg01969.html

* lisp/minibuffer.el (completion--styles-type):
Add an "Other" case that accepts any symbol which is then validated
dynamically against completion-styles-alist.

22 months agoAllow nil as a valid value for 'ecomplete-filter-regexp'
Philip Kaludercic [Wed, 26 Oct 2022 07:33:48 +0000 (09:33 +0200)]
Allow nil as a valid value for 'ecomplete-filter-regexp'

* lisp/ecomplete.el (ecomplete-filter-regexp): Replace user option type.

Reported by Mattias Engdegård.

22 months agoFix Haiku build for recent changes to system headers
Po Lu [Wed, 26 Oct 2022 06:59:49 +0000 (14:59 +0800)]
Fix Haiku build for recent changes to system headers

* src/callproc.c (emacs_posix_spawn_init_actions): Do not use
posix_spawn_file_actions_addchdir on Haiku; it links but does
not work.

22 months agoSet `comp-no-spawn' earlier using -no-comp-spawn
Andrea Corallo [Tue, 18 Oct 2022 13:14:32 +0000 (15:14 +0200)]
Set `comp-no-spawn' earlier using -no-comp-spawn

* src/emacs.c (standard_args): Add '-no-comp-spawn' cmd line option.
* lisp/startup.el (command-line): Parse '-no-comp-spawn' cmd line
option.
* lisp/emacs-lisp/comp.el (comp-run-async-workers, comp-final):
Use '-no-comp-spawn'.

22 months agovc-hg-checkin-patch: Add implementation for Hg
Dmitry Gutov [Tue, 25 Oct 2022 21:09:01 +0000 (00:09 +0300)]
vc-hg-checkin-patch: Add implementation for Hg

* lisp/vc/vc-hg.el (vc-hg-checkin-patch): Add Hg-specific
implementation (bug#52349), like suggested in
https://lists.gnu.org/archive/html/emacs-devel/2022-10/msg01533.html.
(vc-hg--extract-headers): Extract from vc-hg-checkin.

22 months agoIgnore non-base64 junk when decoding MIME
Andreas Schwab [Tue, 25 Oct 2022 16:22:21 +0000 (18:22 +0200)]
Ignore non-base64 junk when decoding MIME

* src/fns.c (Fbase64_decode_region): Add optional argument
IGNORE-INVALID and pass down to base64_decode_1.
(Fbase64_decode_string): Likewise.
(base64_decode_1): Add argument IGNORE_INVALID.
* doc/lispref/text.texi (Base 64): Document them.
* lisp/gnus/mm-bodies.el (mm-decode-content-transfer-encoding):
Ignore any junk when decoding base64.

22 months ago* lisp/tab-line.el (tab-line-auto-hscroll): Set word-wrap to nil (bug#58740).
João Guerra [Tue, 25 Oct 2022 18:48:37 +0000 (21:48 +0300)]
* lisp/tab-line.el (tab-line-auto-hscroll): Set word-wrap to nil (bug#58740).

Copyright-paperwork-exempt: yes

22 months ago(Ffunction): Make interpreted closures safe for space
Stefan Monnier [Mon, 17 Oct 2022 21:11:40 +0000 (17:11 -0400)]
(Ffunction): Make interpreted closures safe for space

Interpreted closures currently just grab a reference to the complete
lexical environment, so (lambda (x) (+ x y)) can end up looking like

    (closure ((foo ...) (y 7) (bar ...) ...)
             (x) (+ x y))

where the foo/bar/... bindings are not only useless but can prevent
the GC from collecting that memory (i.e. it's a representation that is
not "safe for space") and it can also make that closure "unwritable"
(or more specifically, it can cause the closure's print
representation to be u`read`able).

Compiled closures don't suffer from this problem because `cconv.el`
actually looks at the code and only stores in the compiled closure
those variables which are actually used.

So, we fix this discrepancy by letting the existing code in `cconv.el` tell
`Ffunction` which variables are actually used by the body of the
function such that it can filter out the irrelevant elements and
return a closure of the form:

    (closure ((y 7)) (x) (+ x y))

* lisp/loadup.el: Preload `cconv` and set
`internal-filter-closure-env-function` once we have a usable `cconv-fv`.

* lisp/emacs-lisp/bytecomp.el (byte-compile-preprocess): Adjust to new
calling convention of `cconv-closure-convert`.
(byte-compile-not-lexical-var-p): Delete function, moved to `cconv.el`.
(byte-compile-bind): Use `cconv--not-lexical-var-p`.

* lisp/emacs-lisp/cconv.el (cconv--dynbound-variables): New var.
(cconv-closure-convert): New arg `dynbound-vars`
(cconv--warn-unused-msg): Remove special case for `ignored`,
so we don't get confused when a function uses an argument called
`ignored`, e.g. holding a list of things that it should ignore.
(cconv--not-lexical-var-p): New function, moved from `bytecomp.el`.
Don't special case keywords and `nil` and `t` since they are already
`special-variable-p`.
(cconv--analyze-function): Use `cconv--not-lexical-var-p`.
(cconv--dynbindings): New dynbound var.
(cconv-analyze-form): Use `cconv--not-lexical-var-p`.
Remember in `cconv--dynbindings` the vars for which we used
dynamic scoping.
(cconv-analyze-form): Use `cconv--dynbound-variables` rather than
`byte-compile-bound-variables`.
(cconv-fv): New function.

* src/eval.c (Fsetq, eval_sub): Remove optimization designed when
`lexical-binding == nil` was the common case.
(Ffunction): Use `internal-filter-closure-env-function` when available.
(eval_sub, Ffuncall): Improve error info for `excessive_lisp_nesting`.
(internal-filter-closure-env-function): New defvar.

22 months agoMove required options out of ldap-ldapsearch-args
Filipp Gunbin [Tue, 25 Oct 2022 14:59:33 +0000 (17:59 +0300)]
Move required options out of ldap-ldapsearch-args

* lisp/net/ldap.el (ldap-ldapsearch-args, ldap-search-internal): Move
"-LLL" and "-tt" options as they're required for the code to work
properly.

22 months agoeglot: Prefer ensure-list on Emacs 28 or later
Stefan Kangas [Tue, 25 Oct 2022 14:42:58 +0000 (16:42 +0200)]
eglot: Prefer ensure-list on Emacs 28 or later

* lisp/progmodes/eglot.el (eglot--ensure-list): Make into alias
for 'ensure-list' on Emacs 28 or later.

22 months agoHandle context changes in Tramp kubernetes method
Michael Albinus [Tue, 25 Oct 2022 14:34:42 +0000 (16:34 +0200)]
Handle context changes in Tramp kubernetes method

* doc/misc/tramp.texi (Inline methods): Remove note about cache reset.
(File name completion): Add tramp-completion-use-cache.

* etc/NEWS: Add 'tramp-completion-use-cache'.

* lisp/net/tramp-cache.el (tramp-completion-use-cache): New defcustom.
(tramp-parse-connection-properties): Use it.

* lisp/net/tramp-container.el (tramp-docker--completion-function)
(tramp-kubernetes--completion-function): Ensure the processes run
locally.
(tramp-kubernetes--current-context-data): New defun.
(tramp-methods) <kubernetes>: Add `tramp-config-check'.

* lisp/net/tramp-sh.el (tramp-open-connection-setup-interactive-shell):
Handle `tramp-login-args'.

* lisp/net/tramp.el (tramp-methods): Adapt docstring.

22 months agoFix eglot defcustom types
Robert Pluim [Tue, 25 Oct 2022 13:18:51 +0000 (15:18 +0200)]
Fix eglot defcustom types

* lisp/progmodes/eglot.el (eglot-autoreconnect): Allow for 'nil'.
(eglot-connect-timeout): Allow for 'nil' and add descriptions.
(eglot-sync-connect): Split boolean into 'nil' and 't' and add descriptions.
(eglot-confirm-server-initiated-edits): Change 'symbol' type to 'const'.

22 months agoTest face name variables are bound before using them in cc-fonts.el
Alan Mackenzie [Tue, 25 Oct 2022 13:28:57 +0000 (13:28 +0000)]
Test face name variables are bound before using them in cc-fonts.el

This fixes bug #58641.

Also, set c-reference-face-name to font-lock-constant face in preference to
c-label-face-name.

* lisp/progmodes/cc-fonts.el (c-preprocessor-face-name, c-label-face-name)
(c-constant-face-name, c-reference-face-name): Test variables with the same
name as font-lock faces are bound before accessing their values.
(c-reference-face-name): Use font-lock-constant face in preference to
c-label-face-name.

22 months ago* lisp/progmodes/eglot.el: Remove not very funny joke.
Robert Pluim [Tue, 25 Oct 2022 13:15:34 +0000 (15:15 +0200)]
* lisp/progmodes/eglot.el: Remove not very funny joke.

22 months agoMerge branch 'master' of git.savannah.gnu.org:/srv/git/emacs
Eli Zaretskii [Tue, 25 Oct 2022 11:59:39 +0000 (14:59 +0300)]
Merge branch 'master' of git.savannah.gnu.org:/srv/git/emacs

22 months agolisp.h: Remove unnecessary preprocessor conditions
Lin Sun [Sat, 22 Oct 2022 00:00:06 +0000 (00:00 +0000)]
lisp.h: Remove unnecessary preprocessor conditions

This removes the HAVE_PDUMPER || HAVE_UNEXEC condition
of gflags.will_dump_, which gets in the way when Emacs
is built without any dumping method.  (Bug#58708)

22 months agoFix drag-and-drop bugs on Lucid build
Po Lu [Tue, 25 Oct 2022 11:50:57 +0000 (19:50 +0800)]
Fix drag-and-drop bugs on Lucid build

Also, optimize Fx_translate_coordinates to avoid excessive calls
to _XReply.

* lisp/x-dnd.el (x-dnd-get-drop-rectangle): Return empty drop
rectangle if posn-area.
* src/xfns.c (Fx_translate_coordinates): Accept arg
`require_child'.  If not set, allow optimizations based on
cached position data.
* src/xselect.c (x_handle_dnd_message): Use
x_translate_coordinates.
* src/xterm.c (x_translate_coordinates): Export function.
(x_handle_translate_coordinates): New function.
(handle_one_xevent): Fix coding style.
* src/xterm.h: Update prototypes.

22 months agoeglot-server-programs: Account for new ts-mode
Brian Leung [Tue, 25 Oct 2022 03:46:41 +0000 (20:46 -0700)]
eglot-server-programs: Account for new ts-mode

At the time of writing, this exists only in the unmerged tree-sitter
branch.  It is not harmful to include, however.

* lisp/progmodes/eglot.el (eglot-server-programs): Add new major mode
to be used with the typescript-language-server.  (Bug#58769)

22 months agoeglot-server-programs: Account for new js-json-mode
Brian Leung [Tue, 25 Oct 2022 03:43:50 +0000 (20:43 -0700)]
eglot-server-programs: Account for new js-json-mode

js-json-mode derives from js-mode, so this reordering is necessary to
prevent js-mode's eglot server from starting if a user has something
like this in their config:

    (add-to-hook 'js-json-mode #'eglot-ensure)
    (add-to-hook 'js-mode #'eglot-ensure)

* lisp/progmodes/eglot.el (eglot-server-programs): Move the
json-language-server info before the entry for js-mode, and add on
js-json-mode.  (Bug#58769)

22 months agoImprove the eglot info documentation
Robert Pluim [Tue, 25 Oct 2022 08:54:22 +0000 (10:54 +0200)]
Improve the eglot info documentation

* doc/misc/eglot.texi (Eglot and Buffers): Improve phrasing.
(Eglot Commands): 'reference of' -> 'reference for' and a typo fix.
(Eglot Variables): Add markup for values.
(Customizing Eglot): Grammar fixes.
(Troubleshooting Eglot): Improve text.

22 months agoFix M-x eglot breakage due to typo
João Távora [Tue, 25 Oct 2022 09:34:08 +0000 (10:34 +0100)]
Fix M-x eglot breakage due to typo

* lisp/progmodes/eglot.el (eglot): Fix bug.

22 months ago* lisp/progmodes/eglot.el (eglot): Ensure managed-major-mode is a list
Stephen Leake [Tue, 25 Oct 2022 09:15:13 +0000 (02:15 -0700)]
* lisp/progmodes/eglot.el (eglot): Ensure managed-major-mode is a list

22 months ago* lisp/progmodes/compile.el (compilation-mode-line-errors): Use `defvar`
Stefan Monnier [Mon, 24 Oct 2022 18:25:02 +0000 (14:25 -0400)]
* lisp/progmodes/compile.el (compilation-mode-line-errors): Use `defvar`

This is not really a constant, e.g. it's modified in `grep.el`.

22 months ago; * doc/lispref/searching.texi (Rx Constructs): Copy-edit.
Mattias Engdegård [Mon, 24 Oct 2022 13:57:39 +0000 (15:57 +0200)]
; * doc/lispref/searching.texi (Rx Constructs): Copy-edit.

22 months agoUnbreak the build broken by tab-bar.el changes
Eli Zaretskii [Mon, 24 Oct 2022 13:43:47 +0000 (16:43 +0300)]
Unbreak the build broken by tab-bar.el changes

Without this change, compiling tab-bar.el errors out:
In tab-bar--load-buttons:
tab-bar.el:161:18: Warning: reference to free variable `tab-bar-new'
tab-bar.el:174:6: Error: `define-icon' defined after use in
(define-icon tab-bar-close nil (cons (cons 'image
(cons "tabs/close.xpm"
(cons :margin (cons tab-bar-button-margin '(:ascent center)))))
'((text " x"))) "Icon for closing the clicked tab."
:version "29.1" :help-echo "Click to close tab")
(missing `require' of a library file?)
tab-bar.el:174:18: Warning: reference to free variable `tab-bar-close'
* lisp/tab-bar.el (eval-when-compile): Require 'icons.

22 months ago* doc/lispref/searching.texi (Rx Constructs): Elaborate intent.
Mattias Engdegård [Mon, 24 Oct 2022 12:46:24 +0000 (14:46 +0200)]
* doc/lispref/searching.texi (Rx Constructs): Elaborate intent.

Suggested by Michael Heerdegen (bug#58727).

22 months agoFix focus stealing in the Emacs server for old window managers
Po Lu [Mon, 24 Oct 2022 11:18:17 +0000 (19:18 +0800)]
Fix focus stealing in the Emacs server for old window managers

* src/xterm.c (x_focus_frame): Apply focus stealing preference
to non-EWMH focus as well.  Otherwise frames get raised but not
focused.

22 months agoClarify RX... semantics in manual (bug#58727)
Mattias Engdegård [Mon, 24 Oct 2022 10:35:47 +0000 (12:35 +0200)]
Clarify RX... semantics in manual (bug#58727)

Suggested by Michael Heerdegen.

* doc/lispref/searching.texi (Rx Constructs): Explain implicit
concatenation of `RX...`.

22 months agoRepair nXML handling of URIs with hex escapes (bug#58718)
Martin Jerabek [Mon, 24 Oct 2022 10:02:20 +0000 (12:02 +0200)]
Repair nXML handling of URIs with hex escapes (bug#58718)

Copyright-paperwork-exempt: yes

* lisp/nxml/rng-uri.el (rng-uri-file-name-1): Add missing backslashes.
(rng-uri-unescape-unibyte, rng-uri-unescape-unibyte-match):
Convert hex-encoded character to string.

22 months agoFix regexp matching with atomic strings and optimised backtracking
Mattias Engdegård [Sun, 23 Oct 2022 13:40:37 +0000 (15:40 +0200)]
Fix regexp matching with atomic strings and optimised backtracking

This bug occurs when an atomic pattern is matched at the end of
a string and the on-failure-keep-string-jump optimisation is
in effect, as in:

  (string-match "\\'\\(?:ab\\)*\\'" "a")

which succeeded but clearly should not (bug#58726).

Reported by Michael Heerdegen.

* src/regex-emacs.c (PREFETCH): Add reset parameter.
(re_match_2_internal): Use it for proper atomic pattern treatment.
* test/src/regex-emacs-tests.el (regexp-atomic-failure): New test.

22 months agoRemove erroneous @w in yank-media cross ref
Robert Pluim [Fri, 21 Oct 2022 07:48:00 +0000 (09:48 +0200)]
Remove erroneous @w in yank-media cross ref

I added this by mistake, there's actually no need to keep the cross
ref on the same line.

* doc/emacs/killing.texi (Clipboard): Remove @w around @pxref.

22 months ago* lisp/tab-bar.el: Use customizable button icons (bug#51309, bug#51648)
Juri Linkov [Mon, 24 Oct 2022 07:33:41 +0000 (10:33 +0300)]
* lisp/tab-bar.el: Use customizable button icons (bug#51309, bug#51648)

* lisp/tab-bar.el (tab-bar--load-buttons): Use 'define-icon' to
define icons for tab-bar-new, tab-bar-close, tab-bar-menu-bar.
Also set tab-bar-new-button, tab-bar-close-button, tab-bar-menu-bar-button
to the specified icon-string.
(tab-bar-history-mode): Use 'define-icon' to
define icons for tab-bar-back, tab-bar-forward.
Also set tab-bar-back-button, tab-bar-forward-button
to the specified icon-string.

* lisp/emacs-lisp/icons.el (icons--create)<image>: Allow to easy
add new image props by using 'apply' on them.  Add :margin.

22 months ago* lisp/minibuffer.el (completions-group-separator): Update :version.
Juri Linkov [Mon, 24 Oct 2022 07:22:37 +0000 (10:22 +0300)]
* lisp/minibuffer.el (completions-group-separator): Update :version.

22 months ago* lisp/outline.el: Pre-compute some frequent data for button icons (bug#57813)
Juri Linkov [Sun, 23 Oct 2022 16:54:31 +0000 (19:54 +0300)]
* lisp/outline.el: Pre-compute some frequent data for button icons (bug#57813)

(outline--button-icons): New buffer-local variable.
(outline-minor-mode): Set outline--button-icons.
Unify overlay name 'outline-margin' with 'outline-button'.
(outline--make-button-overlay, outline--make-margin-overlay)
(outline--insert-open-button, outline--insert-close-button): Remove functions.
(outline--create-button-icons, outline--insert-button): New functions
with code refactored from old functions.  Add more support for icon faces.
(outline--fix-up-all-buttons): Use outline--insert-button.
(outline--fix-buttons-after-change): Unify overlay name
'outline-margin' with 'outline-button'.

* lisp/minibuffer.el (completions-group-separator): Change face
attribute :strike-through to :underline.

22 months agoReduce duplicate code for creating "special windows"
Po Lu [Sun, 23 Oct 2022 06:12:02 +0000 (14:12 +0800)]
Reduce duplicate code for creating "special windows"

* src/xterm.c (x_create_special_window): Define on all non-GTK
builds and all builds with XFixes.
(x_update_frame_user_time_window): Use x_create_special_window.
Also write a comment explaining what user time windows are.
* src/xterm.h: Fix style of `x_parse_color' prototype.

22 months agoMerge from origin/emacs-28
Stefan Kangas [Sun, 23 Oct 2022 04:31:19 +0000 (06:31 +0200)]
Merge from origin/emacs-28

f1f4a0c9d2 ; * doc/lispref/display.texi (Progress): Correct typo.  (B...

22 months ago; Merge from origin/emacs-28
Stefan Kangas [Sun, 23 Oct 2022 04:31:19 +0000 (06:31 +0200)]
; Merge from origin/emacs-28

The following commit was skipped:

ee9a9fbf0f ; cperl-mode.el: Fix one match-count in my commit 2021-09-14

22 months agoMerge from origin/emacs-28
Stefan Kangas [Sun, 23 Oct 2022 04:31:19 +0000 (06:31 +0200)]
Merge from origin/emacs-28

626525c29f ; Remove reference to non-existent Flymake function from m...

22 months agoImprove error reporting of EUDC plist functions
Basil L. Contovounesios [Sat, 22 Oct 2022 17:25:54 +0000 (20:25 +0300)]
Improve error reporting of EUDC plist functions

* lisp/net/eudc.el (eudc--plist-member): Signal a more
informative wrong-type-argument instead of a generic error
(bug#58531#19, bug#58720).
* test/lisp/net/eudc-tests.el (eudc--plist-member)
(eudc-plist-member, eudc-plist-get, eudc-lax-plist-get):
Update tests accordingly.

22 months ago; * doc/emacs/text.texi (Outline Mode): Fix markup and wording.
Eli Zaretskii [Sat, 22 Oct 2022 19:05:50 +0000 (22:05 +0300)]
; * doc/emacs/text.texi (Outline Mode): Fix markup and wording.

22 months ago* lisp/outline.el: Use 'outline-cycle' on buttons for 'RET' like 'TAB' uses.
Juri Linkov [Sat, 22 Oct 2022 18:57:40 +0000 (21:57 +0300)]
* lisp/outline.el: Use 'outline-cycle' on buttons for 'RET' like 'TAB' uses.

(outline--make-button-overlay, outline--make-margin-overlay):
Use overlay keymap where RET and mouse-2 are bound to outline-cycle.
(outline--insert-open-button, outline--insert-close-button):
Move overlay keymap to outline--make-button-overlay and replace
bindings outline-hide-subtree/outline-show-subtree with outline-cycle.

22 months agoUnify outline-minor-mode-use-buttons with in-margins/insert values (bug#57813)
Juri Linkov [Sat, 22 Oct 2022 18:37:56 +0000 (21:37 +0300)]
Unify outline-minor-mode-use-buttons with in-margins/insert values (bug#57813)

* doc/emacs/text.texi (Outline Mode): Remove outline-minor-mode-use-margins.
Document the values insert/in-margins of outline-minor-mode-use-buttons.

* lisp/help.el (describe-bindings):
Set outline-minor-mode-use-buttons to 'insert'.

* lisp/textmodes/emacs-news-mode.el (emacs-news--mode-common):
Set outline-minor-mode-use-buttons to 'in-margins'.

* lisp/outline.el (outline-minor-mode-use-buttons): Change :type
from 'buffer-predicate' to choice of const values nil/in-margins/t.
(outline--use-buttons, outline-minor-mode-insert-buttons)
(outline-minor-mode-use-margins, outline--use-margins): Remove variables.
(outline-minor-mode-highlight-buffer): Change overlay name
'outline-overlay' to 'outline-highlight'.
(outline-minor-mode): Simplify to handle possible values of
'outline-minor-mode-use-buttons' instead of using many variables.
(outline--make-button-overlay): Use value 'insert' of
'outline-minor-mode-use-buttons'.
(outline--insert-open-button, outline--insert-close-button)
(outline--fix-up-all-buttons, outline--fix-buttons-after-change):
Handle values of outline-minor-mode-use-buttons instead of using
many variables.

22 months ago* lisp/info.el (Info-toc-build): Remove message not needed anymore (bug#58634)
Juri Linkov [Sat, 22 Oct 2022 17:46:10 +0000 (20:46 +0300)]
* lisp/info.el (Info-toc-build): Remove message not needed anymore (bug#58634)

22 months agoAudit some plist uses with new predicate argument
Basil L. Contovounesios [Sat, 20 Aug 2022 13:32:33 +0000 (16:32 +0300)]
Audit some plist uses with new predicate argument

* doc/lispref/lists.texi (Plist Access): Improve description of
default predicate.
* lisp/emacs-lisp/cl-extra.el (cl-getf, cl--set-getf): Assume
plist-member always returns a cons.
* lisp/emacs-lisp/gv.el (plist-get): Support new optional predicate
argument (bug#47425#91).
* lisp/emacs-lisp/map.el: Bump minor version.
(map--dispatch): Remove now that bug#58563 is fixed.  Break two
remaining uses out into corresponding cl-defmethods.
(map--plist-p): Add docstring.
(map--plist-has-predicate, map--plist-member-1, map--plist-member)
(map--plist-put-1, map--plist-put): New definitions for supporting
predicate argument backward compatibly.
(map-elt): Fix generalized variable getter under a
predicate (bug#58531).  Use predicate when given a plist.
(map-put): Avoid gratuitous warnings when called without the hidden
predicate argument.  Improve obsoletion message.
(map-put!): Use predicate when given a plist.
(map-contains-key): Ditto.  Declare forgotten
advertised-calling-convention (bug#58531#19).
(map--put): Group definition in file together with that of map-put!.
* lisp/files-x.el (connection-local-normalize-criteria): Simplify
using mapcan + plist-get.
* lisp/net/eudc.el (eudc--plist-member): New convenience function.
(eudc-plist-member, eudc-plist-get, eudc-lax-plist-get): Use it
instead of open-coding plist-member.
* src/fns.c (Fplist_get, plist_get, Fplist_put, plist_put): Pass the
plist element as the first argument to the predicate, for
consistency with assoc + alist-get.
(Fplist_member, plist_member): Move from widget to plist section.
Open-code the EQ case in plist_member, and call it from
Fplist_member in that case, rather than the other way around.

* test/lisp/apropos-tests.el (apropos-tests-format-plist): Avoid
polluting obarray.
* test/lisp/emacs-lisp/cl-extra-tests.el (cl-getf): Extend test with
generalized variables, degenerate plists, and improper lists.
* test/lisp/emacs-lisp/gv-tests.el: Byte-compile file; in the
meantime bug#24402 seems to have been fixed or worked around.
(gv-setter-edebug): Inhibit printing messages.
(gv-plist-get): Avoid modifying constant literals.  Also test with a
predicate argument.
* test/lisp/emacs-lisp/map-tests.el (with-maps-do): Simplify
docstring.
(test-map-elt-testfn): Rename...
(test-map-elt-testfn-alist): ...to this.  Also test with a predicate
argument.
(test-map-elt-testfn-plist, test-map-elt-gv, test-map-elt-signature)
(test-map-put!-plist, test-map-put!-signature)
(test-map-contains-key-signature, test-map-plist-member)
(test-map-plist-put): New tests.
(test-map-contains-key-testfn): Also test with a predicate argument.
(test-map-setf-alist-overwrite-key, test-map-setf-plist-insert-key)
(test-map-setf-plist-overwrite-key): Avoid modifying constant
literals.
(test-hash-table-setf-insert-key)
(test-hash-table-setf-overwrite-key): Fix indentation.
(test-setf-map-with-function): Make test more precise.
* test/lisp/net/eudc-tests.el: New file.
* test/lisp/subr-tests.el (test-plistp): Extend test with circular
list.
* test/src/fns-tests.el (test-cycle-equal, test-cycle-nconc): Move
from plist section to circular list section.
(plist-put/odd-number-of-elements): Avoid modifying constant
literals.
(plist-member/improper-list): Simplify.
(test-plist): Move to plist section.  Also test with a predicate
argument.

22 months agoFurther fixes to menu event processing on no-toolkit builds
Po Lu [Sat, 22 Oct 2022 12:15:22 +0000 (20:15 +0800)]
Further fixes to menu event processing on no-toolkit builds

* src/xdisp.c (note_mouse_highlight): Return if a popup is
activated under the no-toolkit build as well.
* src/xmenu.c (pop_down_menu): Clear popup_activated_flag when
not on MS-DOS.
(x_menu_show): Set popup_activated_flag under X.

22 months ago* admin/notes/repo: Document feature and scratch branches.
Stefan Kangas [Sat, 22 Oct 2022 10:15:49 +0000 (12:15 +0200)]
* admin/notes/repo: Document feature and scratch branches.

23 months ago; Improve manual for Tramp kubernetes method
Filipp Gunbin [Fri, 21 Oct 2022 18:21:54 +0000 (21:21 +0300)]
; Improve manual for Tramp kubernetes method

* doc/misc/tramp.texi (Inline methods): Add note about cache reset.

23 months ago; * doc/lispref/display.texi (Progress): Correct typo. (Bug#58674)
Matt Armstrong [Fri, 21 Oct 2022 03:56:03 +0000 (20:56 -0700)]
; * doc/lispref/display.texi (Progress): Correct typo.  (Bug#58674)

23 months ago; * src/menu.c (x_popup_menu_1): Make 'cancel_hourglass' call conditional.
Eli Zaretskii [Fri, 21 Oct 2022 16:05:48 +0000 (19:05 +0300)]
; * src/menu.c (x_popup_menu_1): Make 'cancel_hourglass' call conditional.

23 months agoMerge branch 'master' of git.savannah.gnu.org:/srv/git/emacs
Eli Zaretskii [Fri, 21 Oct 2022 15:29:05 +0000 (18:29 +0300)]
Merge branch 'master' of git.savannah.gnu.org:/srv/git/emacs

23 months ago; * src/menu.c: Include dispextern.h (bug#58688).
Eli Zaretskii [Fri, 21 Oct 2022 15:27:30 +0000 (18:27 +0300)]
; * src/menu.c: Include dispextern.h (bug#58688).

23 months agoBindat (src, strz): Operate on vectors too
Nacho Barrientos [Thu, 20 Oct 2022 12:16:43 +0000 (14:16 +0200)]
Bindat (src, strz): Operate on vectors too

Copyright-paperwork-exempt: yes

* lisp/emacs-lisp/bindat.el (bindat--unpack-str, bindat--unpack-strz):
Fix the non-string case.
* test/lisp/emacs-lisp/bindat-tests.el (bindat-test--strz-array-unpack)
(bindat-test--str-simple-array-unpack,bindat-test--str-combined-array-unpack):
New tests.

23 months agoFix various menu problems
Po Lu [Fri, 21 Oct 2022 13:31:54 +0000 (21:31 +0800)]
Fix various menu problems

* src/menu.c (x_popup_menu_1): Cancel hourglass timer before
displaying popup.
* src/xterm.c (x_show_hourglass): Avoid displaying hourglass
cursor during a popup.
(handle_one_xevent): Under X Toolkit and GTK+ 2.x builds with
XInput 2, clear the mouse face upon a core LeaveNotify; these
can be generated by menu grabs.
(x_wm_set_size_hint): Fix Motif build warning.

23 months ago; * doc/emacs/programs.texi (Programming Language Doc): Fix typos.
Eli Zaretskii [Fri, 21 Oct 2022 13:17:17 +0000 (16:17 +0300)]
; * doc/emacs/programs.texi (Programming Language Doc): Fix typos.

23 months agoImprove and extend documentation of ElDoc
Eli Zaretskii [Fri, 21 Oct 2022 13:10:08 +0000 (16:10 +0300)]
Improve and extend documentation of ElDoc

* lisp/emacs-lisp/eldoc.el (eldoc-documentation-strategy)
(eldoc-documentation-enthusiast)
(eldoc-documentation-compose-eagerly)
(eldoc-documentation-compose, eldoc-documentation-default)
(eldoc-minibuffer-message, eldoc-idle-delay)
(eldoc-print-after-edit)
(eldoc-echo-area-display-truncation-message)
(eldoc-echo-area-use-multiline-p)
(eldoc-echo-area-prefer-doc-buffer): Doc string fixes.

* doc/emacs/emacs.texi (Top):
* doc/emacs/programs.texi (Documentation, Programming Language Doc):
Rename "Lisp Doc" to "Programming Language Doc", including in
parent menus.  All references changed.
(Programming Language Doc): Formerly "Lisp Doc".  Rewrite to not
be specific to Emacs Lisp.  Improve markup and wording.  Document
more commands and variables.
* doc/emacs/maintaining.texi (Maintaining): Improve indexing.

23 months agoFix delivery of window manager ping events during menu
Po Lu [Fri, 21 Oct 2022 11:19:33 +0000 (19:19 +0800)]
Fix delivery of window manager ping events during menu

* oldXMenu/Activate.c (XMenuActivateSetExposeFunction)
(XMenuActivate):
* oldXMenu/XMenu.h: Remove expose functions.
* src/msdos.h (XMenuSetAEQ): Remove no longer used function.
* src/xmenu.c (x_menu_expose_event): Delete function.
(x_menu_dispatch_event): New function.
(x_menu_show): Set it as the XMenu event handler.

23 months agoFix last change in perl-mode
Mauro Aranda [Fri, 21 Oct 2022 10:45:27 +0000 (07:45 -0300)]
Fix last change in perl-mode

* lisp/progmodes/perl-mode.el (perl--syntax-exp-intro-regexp): Escape
$.  Reported by Mattias Engdegård.

23 months agoAdd the "nil" language server to eglot-server-programs
Brian Leung [Fri, 21 Oct 2022 05:47:10 +0000 (22:47 -0700)]
Add the "nil" language server to eglot-server-programs

* lisp/progmodes/eglot.el (eglot-server-programs): Add the "nil"
language server.  Put it before rnix-lsp since it is more featureful
and more actively updated.  (Bug#58676)
Ref: https://github.com/oxalica/nil

23 months agoAdd lua-language-server to eglot-server-programs
Brian Leung [Fri, 21 Oct 2022 05:49:08 +0000 (22:49 -0700)]
Add lua-language-server to eglot-server-programs

* lisp/progmodes/eglot.el (eglot-server-programs): Add
lua-language-server.  It is, at the time of writing, more actively
developed and more popular than the lua-lsp server, so prioritize
that.  (Bug#58676)

23 months ago; * doc/misc/eglot.texi (Top): Fix markup/typo.
Basil L. Contovounesios [Thu, 20 Oct 2022 21:40:55 +0000 (00:40 +0300)]
; * doc/misc/eglot.texi (Top): Fix markup/typo.

23 months ago; * etc/NEWS: Mention Eglot.
Eli Zaretskii [Thu, 20 Oct 2022 19:03:12 +0000 (22:03 +0300)]
; * etc/NEWS: Mention Eglot.

23 months ago; cperl-mode.el: Fix one match-count in my commit 2021-09-14
Harald Jörg [Wed, 3 Nov 2021 14:04:10 +0000 (15:04 +0100)]
; cperl-mode.el: Fix one match-count in my commit 2021-09-14

* lisp/progmodes/cperl-mode.el (cperl-init-faces): Matching group needs
to be adjusted according to the regexp change in my previous commit

(cherry picked from commit a25e91593d48a541b5940a2ed707ddfaef5c953f)

23 months agoFix ldapsearch output parsing in ldap-search-internal
Filipp Gunbin [Thu, 20 Oct 2022 17:41:00 +0000 (20:41 +0300)]
Fix ldapsearch output parsing in ldap-search-internal

* lisp/net/ldap.el (ldap-search-internal): When parsing output, make
sure that file:// matched before opening the file. (bug#58605)

23 months agoAdd Eglot to the menu bar
Eli Zaretskii [Thu, 20 Oct 2022 17:50:34 +0000 (20:50 +0300)]
Add Eglot to the menu bar

* lisp/progmodes/eglot.el (eglot): Improve the doc string.
* lisp/menu-bar.el (menu-bar-tools-menu): Add Eglot to the menu.

23 months agoMention Eglot in the Emacs user manual
Eli Zaretskii [Thu, 20 Oct 2022 17:17:45 +0000 (20:17 +0300)]
Mention Eglot in the Emacs user manual

* doc/emacs/maintaining.texi (Xref):
* doc/emacs/programs.texi (Symbol Completion, Imenu): Mention Eglot.

23 months ago; Minor copyedits to eglot.texi.
Eli Zaretskii [Thu, 20 Oct 2022 16:02:14 +0000 (19:02 +0300)]
; Minor copyedits to eglot.texi.

23 months ago; * doc/misc/eglot.texi: Fix a typo.
Eli Zaretskii [Thu, 20 Oct 2022 14:08:15 +0000 (17:08 +0300)]
; * doc/misc/eglot.texi: Fix a typo.

23 months ago; * doc/misc/eglot.texi: Undo some recent "fixes" to the Eglot manual.
Eli Zaretskii [Thu, 20 Oct 2022 14:05:01 +0000 (17:05 +0300)]
; * doc/misc/eglot.texi: Undo some recent "fixes" to the Eglot manual.

23 months agoMerge branch 'feature/eglot2emacs'
João Távora [Thu, 20 Oct 2022 12:50:09 +0000 (13:50 +0100)]
Merge branch 'feature/eglot2emacs'

23 months ago; fix warning about order of defvaralias/defconst
João Távora [Thu, 20 Oct 2022 12:49:49 +0000 (13:49 +0100)]
; fix warning about order of defvaralias/defconst

* lisp/progmodes/eglot.el (eglot-{}): Declare alias before thing
  being aliased.

23 months agoMinor fixes to doc/misc/eglot.texi
João Távora [Thu, 20 Oct 2022 11:59:22 +0000 (12:59 +0100)]
Minor fixes to doc/misc/eglot.texi

* doc/misc/eglot.texi (eglot-workspace-configuration): Correct
markup of eglot-{}
(Quick Start): Fix section cross reference.

23 months ago* lisp/info-look.el (mapc): Add Eglot manual's index.
João Távora [Thu, 20 Oct 2022 11:45:31 +0000 (12:45 +0100)]
* lisp/info-look.el (mapc): Add Eglot manual's index.

23 months agoWork around problems setting input focus when a frame is in the background
Po Lu [Sun, 7 Aug 2022 05:46:52 +0000 (13:46 +0800)]
Work around problems setting input focus when a frame is in the background

* src/xterm.c (server_timestamp_predicate, x_get_server_time):
New functions.
(x_ewmh_activate_frame, x_focus_frame, syms_of_xterm): Apply
various workarounds for window manager "focus stealing
prevention".  (bug#57012)

23 months ago* etc/PROBLEMS: Document window manager focus problems.
Po Lu [Sun, 7 Aug 2022 05:49:59 +0000 (13:49 +0800)]
* etc/PROBLEMS: Document window manager focus problems.

23 months agoMerge branch 'feature/eglot-texi-manual' into feature/eglot2emacs
João Távora [Thu, 20 Oct 2022 11:30:49 +0000 (12:30 +0100)]
Merge branch 'feature/eglot-texi-manual' into feature/eglot2emacs

23 months ago; Merge from https://github.com/joaotavora/eglot
João Távora [Thu, 20 Oct 2022 11:16:19 +0000 (12:16 +0100)]
; Merge from https://github.com/joaotavora/eglot

23 months agoRevert "eglot.texi: Make example more realistic" feature/eglot-texi-manual
João Távora [Thu, 20 Oct 2022 10:42:25 +0000 (11:42 +0100)]
Revert "eglot.texi: Make example more realistic"

This quest for realism ignores the fact that a previous example for a
hypothetical language Foo and a language server "fools" already
exists.  It also undermines the intended generality of the
instructions.

This reverts commit 16986a9cc42ef4de580456f4acc5feba682ac8b1.

23 months agoFix Eglot manual's description of eglot-workspace-configuration
João Távora [Thu, 20 Oct 2022 10:20:30 +0000 (11:20 +0100)]
Fix Eglot manual's description of eglot-workspace-configuration

* doc/misc/eglot.texi (Customizing Eglot)
(eglot-workspace-configuration): Explain that plist may be
arbitrarily complex and correctly identify nil as the Elisp
equivalent to JSON null.

23 months agoImprove HERE document detection in perl-mode
Mauro Aranda [Thu, 20 Oct 2022 10:34:38 +0000 (07:34 -0300)]
Improve HERE document detection in perl-mode

* lisp/progmodes/perl-mode.el (perl-syntax-propertize-function):
Detect indented HERE documents when using a bare identifier.
(perl--syntax-exp-intro-keywords): Recognize HERE documents that come
after die, warn and eval.
(perl--syntax-exp-intro-regexp): Identify HERE documents when printing
to a filehandle with printf? and when they appear after a fat comma.

* test/lisp/progmodes/cperl-mode-resources/here-docs.pl: Add more tests.

23 months agoExpose eglot-{} to be used in eglot-workspace-configuration
João Távora [Thu, 20 Oct 2022 10:06:44 +0000 (11:06 +0100)]
Expose eglot-{} to be used in eglot-workspace-configuration

* eglot.el (eglot-{}): New variable alias.

GitHub-reference: per https://github.com/joaotavora/eglot/issues/1084

23 months agoRework header of eglot.el
João Távora [Thu, 20 Oct 2022 09:48:11 +0000 (10:48 +0100)]
Rework header of eglot.el

* eglot.el (Commentary): Rework.

23 months agoDo use eglot-connect-timeout if eglot-sync-connect is t
João Távora [Mon, 10 Oct 2022 12:57:26 +0000 (13:57 +0100)]
Do use eglot-connect-timeout if eglot-sync-connect is t

Reported by Eli Zaretskii <eliz@gnu.org>

* eglot.el (eglot--connect): Use eglot-connect-timeout in the case
eglot-sync-connect is t.

23 months agoeglot.texi: Explain where to find third-party packages
Stefan Kangas [Thu, 20 Oct 2022 09:43:08 +0000 (11:43 +0200)]
eglot.texi: Explain where to find third-party packages

* doc/misc/eglot.texi (Eglot Features): Improve description on
third-party packages.

23 months agoeglot.texi: Make example more realistic
Stefan Kangas [Thu, 20 Oct 2022 09:42:29 +0000 (11:42 +0200)]
eglot.texi: Make example more realistic

* doc/misc/eglot.texi (Eglot and Buffers): Prefer more realistic
*.c instead of *.foo in example.

23 months agoeglot.texi: Move sentence on LSP Servers earlier
Stefan Kangas [Thu, 20 Oct 2022 09:40:37 +0000 (11:40 +0200)]
eglot.texi: Move sentence on LSP Servers earlier

* doc/misc/eglot.texi (Setting Up LSP Servers): Move explanation
on the (lack of) need for customizing servers earlier.

23 months ago; eglot.texi: Fix typos and minor inconsistencies
Stefan Kangas [Thu, 20 Oct 2022 09:38:18 +0000 (11:38 +0200)]
; eglot.texi: Fix typos and minor inconsistencies

* doc/misc/eglot.texi: Fix typos and minor inconsistencies.

23 months ago* doc/misc/Makefile.in (INFO_COMMON): Add eglot.
Stefan Kangas [Thu, 20 Oct 2022 09:02:09 +0000 (11:02 +0200)]
* doc/misc/Makefile.in (INFO_COMMON): Add eglot.

23 months agoPrefer defvar-keymap in modula2.el
Stefan Kangas [Thu, 20 Oct 2022 07:32:58 +0000 (09:32 +0200)]
Prefer defvar-keymap in modula2.el

* lisp/progmodes/modula2.el (m2-mode-map): Prefer defvar-keymap.

23 months ago; Fix documentation and name of 'slovak-qwerty' input method
Eli Zaretskii [Thu, 20 Oct 2022 06:58:18 +0000 (09:58 +0300)]
; Fix documentation and name of 'slovak-qwerty' input method

* etc/NEWS: Fix entry for slovak-qwerty.

* lisp/leim/quail/slovak.el ("slovak", "slovak-qwerty"): Doc fix.

23 months agoAdd 'slovak-querty' input method (bug#58642)
Rudolf Adamkovič [Wed, 19 Oct 2022 18:57:03 +0000 (20:57 +0200)]
Add 'slovak-querty' input method (bug#58642)

* lisp/leim/quail/slovak.el ("slovak-querty"): New input method.
* etc/NEWS: Mention the new 'slovak-querty' input method.

23 months ago; Remove reference to non-existent Flymake function from manual
Eli Zaretskii [Thu, 20 Oct 2022 05:59:18 +0000 (08:59 +0300)]
; Remove reference to non-existent Flymake function from manual

* doc/emacs/building.texi (Flymake): Replace reference to a delete
command 'flymake-display-err-menu-for-current-line' with existing
equivalents.   (Bug#58649)

23 months agoMerge from origin/emacs-28
Stefan Kangas [Thu, 20 Oct 2022 04:31:29 +0000 (06:31 +0200)]
Merge from origin/emacs-28

4b2c83eeaf ; * doc/lispref/modes.texi (Defining Minor Modes): Explain...

23 months ago* Fix async native compilation (bug#58637)
Andrea Corallo [Wed, 19 Oct 2022 20:08:41 +0000 (22:08 +0200)]
* Fix async native compilation (bug#58637)

* lisp/emacs-lisp/comp.el (comp--native-compile): Fix gate condition.
(comp-run-async-workers): Add assetion.

23 months ago; * test/lisp/image/wallpaper-tests.el: Simplify last change.
Stefan Kangas [Wed, 19 Oct 2022 18:53:36 +0000 (20:53 +0200)]
; * test/lisp/image/wallpaper-tests.el: Simplify last change.

23 months agoCC Mode: Cease adding types to found-types too eagerly
Alan Mackenzie [Wed, 19 Oct 2022 14:52:14 +0000 (14:52 +0000)]
CC Mode: Cease adding types to found-types too eagerly

This fixes bug #58537 and bug #58539.

* lisp/progmodes/cc-engine.el (c-forward-type): Remove trailing whitespace
from an identifier before passing it to c-add-type.
(c-forward-decl-or-cast-1): CASE 3: Do not recognize two consecutive
identifiers as type + variable/function unless certain conditions are met.
CASE 10: Do not recognize the "type" as a found type unless certain condtions
are met.  (Near end): Do not recognize the identifier in a cast as a type
unless certain conditions are met.

* lisp/progmodes/cc-fonts.el (c-get-fontification-context): Recognize being
in declaration parens when there is a syntactially wrong "foo ((bar))"
preceding the match position.

* lisp/progmodes/cc-mode.el (c-update-new-id): Set c-new-id-is-type
unconditionally to nil to prevent a second identifier being wrongly marked as
a type.

23 months ago; Delete file after wallpaper test
Stefan Kangas [Wed, 19 Oct 2022 14:15:02 +0000 (16:15 +0200)]
; Delete file after wallpaper test

* test/lisp/image/wallpaper-tests.el
(wallpaper-set/calls-init-action): Don't leave temp file behind.

23 months agoFix various builds
Po Lu [Wed, 19 Oct 2022 13:31:54 +0000 (21:31 +0800)]
Fix various builds

* src/xterm.c (x_handle_selection_monitor_event): Adjust for
build without XInput2.
(x_maybe_clear_preedit, xim_destroy_callback): Make conditional
on Release 6 XIM.
(x_get_keyboard_modifiers): Adjust for build without XCB.