mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-06 06:20:55 -08:00
Merge from origin/emacs-29
1684e254a3Update to Transient v0.3.7-196-gb91f509327941b211CC Mode: Fix a coding bug in c-make-keywords-re. This sh...2f3683cd4d* lisp/isearch.el (isearch-emoji-by-name): Disable derive...86b03046c0Merge branch 'emacs-29' of git.savannah.gnu.org:/srv/git/...e866490a07Fix keymap inheritance in descendants of 'c-ts-base-mode'f67a9a12b7Fix interactive use of `keymap-local-set' and `keymap-glo...
This commit is contained in:
commit
a73b046c7d
5 changed files with 59 additions and 23 deletions
|
|
@ -64,6 +64,15 @@ reading a new value in the minibuffer.
|
|||
Calling a suffix command usually causes the transient to be exited
|
||||
but suffix commands can also be configured to not exit the transient.
|
||||
|
||||
@quotation
|
||||
The second part of this manual, which describes how to modify existing
|
||||
transients and create new transients from scratch, can be hard to
|
||||
digest if you are just getting started. A useful resource to get over
|
||||
that hurdle is Psionic K's interactive tutorial, available at
|
||||
@uref{https://github.com/positron-solutions/transient-showcase}.
|
||||
|
||||
@end quotation
|
||||
|
||||
@noindent
|
||||
This manual is for Transient version 0.3.7.50.
|
||||
|
||||
|
|
@ -893,7 +902,16 @@ same customization.
|
|||
|
||||
To an extent, transients can be customized interactively, see
|
||||
@ref{Enabling and Disabling Suffixes}. This section explains how existing
|
||||
transients can be further modified non-interactively.
|
||||
transients can be further modified non-interactively. Let's begin
|
||||
with an example:
|
||||
|
||||
@lisp
|
||||
(transient-append-suffix 'magit-patch-apply "-3"
|
||||
'("-R" "Apply in reverse" "--reverse"))
|
||||
@end lisp
|
||||
|
||||
This inserts a new infix argument to toggle the @code{--reverse} argument
|
||||
after the infix argument that toggles @code{-3} in @code{magit-patch-apply}.
|
||||
|
||||
The following functions share a few arguments:
|
||||
|
||||
|
|
|
|||
|
|
@ -2774,6 +2774,7 @@ With argument, add COUNT copies of the character."
|
|||
(mapconcat 'isearch-text-char-description
|
||||
string ""))))))))
|
||||
|
||||
(defvar emoji--derived)
|
||||
(defun isearch-emoji-by-name (&optional count)
|
||||
"Read an Emoji name and add it to the search string COUNT times.
|
||||
COUNT (interactively, the prefix argument) defaults to 1.
|
||||
|
|
@ -2782,7 +2783,13 @@ The command accepts Unicode names like \"smiling face\" or
|
|||
(interactive "p")
|
||||
(with-isearch-suspended
|
||||
(let ((emoji (with-temp-buffer
|
||||
(emoji-search)
|
||||
;; Derived emoji not supported yet (bug#60740).
|
||||
;; So first load `emoji--labels', then `emoji--init'
|
||||
;; will not fill `emoji--derived' that is set
|
||||
;; to an empty hash table below.
|
||||
(ignore-errors (require 'emoji-labels))
|
||||
(let ((emoji--derived (make-hash-table :test #'equal)))
|
||||
(emoji-search))
|
||||
(if (and (integerp count) (> count 1))
|
||||
(apply 'concat (make-list count (buffer-string)))
|
||||
(buffer-string)))))
|
||||
|
|
|
|||
|
|
@ -697,8 +697,8 @@ the semicolon. This function skips the semicolon."
|
|||
|
||||
;;; Modes
|
||||
|
||||
(defvar-keymap c-ts-mode-map
|
||||
:doc "Keymap for the C language with tree-sitter"
|
||||
(defvar-keymap c-ts-base-mode-map
|
||||
:doc "Keymap for C and C-like languages with tree-sitter"
|
||||
:parent prog-mode-map
|
||||
"C-c C-q" #'c-ts-mode-indent-defun
|
||||
"C-c ." #'c-ts-mode-set-style)
|
||||
|
|
@ -707,7 +707,7 @@ the semicolon. This function skips the semicolon."
|
|||
(define-derived-mode c-ts-base-mode prog-mode "C"
|
||||
"Major mode for editing C, powered by tree-sitter.
|
||||
|
||||
\\{c-ts-mode-map}"
|
||||
\\{c-ts-base-mode-map}"
|
||||
:syntax-table c-ts-mode--syntax-table
|
||||
|
||||
;; Navigation.
|
||||
|
|
|
|||
|
|
@ -1994,7 +1994,7 @@ when it's needed. The default is the current language taken from
|
|||
;; doesn't occur in any word in LIST. Append it to all
|
||||
;; the alternatives where we want to add \>. Run through
|
||||
;; `regexp-opt' and then replace it with \>.
|
||||
(let ((unique "") pos)
|
||||
(let ((unique "") (list1 (copy-tree list)) pos)
|
||||
(while (let (found)
|
||||
(setq unique (concat unique "@")
|
||||
pos list)
|
||||
|
|
@ -2005,13 +2005,12 @@ when it's needed. The default is the current language taken from
|
|||
t))
|
||||
(setq pos (cdr pos)))
|
||||
found))
|
||||
(setq pos (copy-tree list)
|
||||
)
|
||||
(setq pos list1)
|
||||
(while pos
|
||||
(if (string-match "\\w\\'" (car pos))
|
||||
(setcar pos (concat (car pos) unique)))
|
||||
(setq pos (cdr pos)))
|
||||
(setq re (regexp-opt list))
|
||||
(setq re (regexp-opt list1))
|
||||
(setq pos 0)
|
||||
(while (string-match unique re pos)
|
||||
(setq pos (+ (match-beginning 0) 2)
|
||||
|
|
|
|||
|
|
@ -798,8 +798,8 @@ They become the value of this argument.")
|
|||
(defclass transient-columns (transient-group) ()
|
||||
"Group class that displays elements organized in columns.
|
||||
Direct elements have to be groups whose elements have to be
|
||||
commands or string. Each subgroup represents a column. This
|
||||
class takes care of inserting the subgroups' elements.")
|
||||
commands or strings. Each subgroup represents a column.
|
||||
This class takes care of inserting the subgroups' elements.")
|
||||
|
||||
(defclass transient-subgroups (transient-group) ()
|
||||
"Group class that wraps other groups.
|
||||
|
|
@ -860,7 +860,7 @@ to the setup function:
|
|||
(indent defun)
|
||||
(doc-string 3))
|
||||
(pcase-let ((`(,class ,slots ,suffixes ,docstr ,body)
|
||||
(transient--expand-define-args args)))
|
||||
(transient--expand-define-args args arglist)))
|
||||
`(progn
|
||||
(defalias ',name
|
||||
,(if body
|
||||
|
|
@ -913,7 +913,7 @@ ARGLIST. The infix arguments are usually accessed by using
|
|||
(indent defun)
|
||||
(doc-string 3))
|
||||
(pcase-let ((`(,class ,slots ,_ ,docstr ,body)
|
||||
(transient--expand-define-args args)))
|
||||
(transient--expand-define-args args arglist)))
|
||||
`(progn
|
||||
(defalias ',name (lambda ,arglist ,@body))
|
||||
(put ',name 'interactive-only t)
|
||||
|
|
@ -921,7 +921,7 @@ ARGLIST. The infix arguments are usually accessed by using
|
|||
(put ',name 'transient--suffix
|
||||
(,(or class 'transient-suffix) :command ',name ,@slots)))))
|
||||
|
||||
(defmacro transient-define-infix (name _arglist &rest args)
|
||||
(defmacro transient-define-infix (name arglist &rest args)
|
||||
"Define NAME as a transient infix command.
|
||||
|
||||
ARGLIST is always ignored and reserved for future use.
|
||||
|
|
@ -962,7 +962,7 @@ keyword.
|
|||
(indent defun)
|
||||
(doc-string 3))
|
||||
(pcase-let ((`(,class ,slots ,_ ,docstr ,_)
|
||||
(transient--expand-define-args args)))
|
||||
(transient--expand-define-args args arglist)))
|
||||
`(progn
|
||||
(defalias ',name ,(transient--default-infix-command))
|
||||
(put ',name 'interactive-only t)
|
||||
|
|
@ -980,7 +980,9 @@ example, sets a variable use `transient-define-infix' instead.
|
|||
|
||||
\(fn NAME ARGLIST [DOCSTRING] [KEYWORD VALUE]...)")
|
||||
|
||||
(defun transient--expand-define-args (args)
|
||||
(defun transient--expand-define-args (args &optional arglist)
|
||||
(unless (listp arglist)
|
||||
(error "Mandatory ARGLIST is missing"))
|
||||
(let (class keys suffixes docstr)
|
||||
(when (stringp (car args))
|
||||
(setq docstr (pop args)))
|
||||
|
|
@ -1150,7 +1152,7 @@ example, sets a variable use `transient-define-infix' instead.
|
|||
PREFIX is a prefix command, a symbol.
|
||||
SUFFIX is a suffix command or a group specification (of
|
||||
the same forms as expected by `transient-define-prefix').
|
||||
Intended for use in PREFIX's `:setup-children' function."
|
||||
Intended for use in a group's `:setup-children' function."
|
||||
(eval (car (transient--parse-child prefix suffix))))
|
||||
|
||||
(defun transient-parse-suffixes (prefix suffixes)
|
||||
|
|
@ -1158,7 +1160,7 @@ Intended for use in PREFIX's `:setup-children' function."
|
|||
PREFIX is a prefix command, a symbol.
|
||||
SUFFIXES is a list of suffix command or a group specification
|
||||
(of the same forms as expected by `transient-define-prefix').
|
||||
Intended for use in PREFIX's `:setup-children' function."
|
||||
Intended for use in a group's `:setup-children' function."
|
||||
(mapcar (apply-partially #'transient-parse-suffix prefix) suffixes))
|
||||
|
||||
;;; Edit
|
||||
|
|
@ -1469,14 +1471,24 @@ probably use this instead:
|
|||
(cl-check-type command command))
|
||||
(if (or transient--prefix
|
||||
transient-current-prefix)
|
||||
(cl-find-if (lambda (obj)
|
||||
(eq (transient--suffix-command obj)
|
||||
(let ((suffixes
|
||||
(cl-remove-if-not
|
||||
(lambda (obj)
|
||||
(eq (transient--suffix-command obj)
|
||||
(or command
|
||||
;; When `this-command' is `transient-set-level',
|
||||
;; its reader needs to know what command is being
|
||||
;; configured.
|
||||
(or command this-original-command)))
|
||||
(or transient--suffixes
|
||||
transient-current-suffixes))
|
||||
this-original-command)))
|
||||
(or transient--suffixes
|
||||
transient-current-suffixes))))
|
||||
(or (and (cdr suffixes)
|
||||
(cl-find-if
|
||||
(lambda (obj)
|
||||
(equal (listify-key-sequence (transient--kbd (oref obj key)))
|
||||
(listify-key-sequence (this-command-keys))))
|
||||
suffixes))
|
||||
(car suffixes)))
|
||||
(when-let* ((obj (get (or command this-command) 'transient--suffix))
|
||||
(obj (clone obj)))
|
||||
;; Cannot use and-let* because of debbugs#31840.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue