diff --git a/lisp/help-fns.el b/lisp/help-fns.el index 3dd5c790157..2d94182df33 100644 --- a/lisp/help-fns.el +++ b/lisp/help-fns.el @@ -229,6 +229,10 @@ interactive command." (lambda (f) (if want-command (commandp f) (or (fboundp f) (get f 'function-documentation)))) + ;; We use 'confirm' here, unlike in other describe-* + ;; commands, for cases like a function that is advised + ;; but not yet defined (e.g., if 'advice-add' is called + ;; before defining the function). 'confirm nil nil (and fn (symbol-name fn))))) (unless (equal val "") diff --git a/lisp/progmodes/typescript-ts-mode.el b/lisp/progmodes/typescript-ts-mode.el index a4752f7a2ee..3f8e232b71f 100644 --- a/lisp/progmodes/typescript-ts-mode.el +++ b/lisp/progmodes/typescript-ts-mode.el @@ -142,7 +142,7 @@ Argument LANGUAGE is either `typescript' or `tsx'." "export" "extends" "finally" "for" "from" "function" "get" "if" "implements" "import" "in" "instanceof" "interface" "is" "infer" "keyof" "let" "namespace" "new" "of" "private" "protected" - "public" "readonly" "return" "set" "static" "switch" + "public" "readonly" "return" "satisfies" "set" "static" "switch" "target" "throw" "try" "type" "typeof" "var" "void" "while" "with" "yield") "TypeScript keywords for tree-sitter font-locking.") diff --git a/lisp/sqlite-mode.el b/lisp/sqlite-mode.el index c3047c786f7..8cb94485369 100644 --- a/lisp/sqlite-mode.el +++ b/lisp/sqlite-mode.el @@ -126,7 +126,7 @@ (forward-line 1) (if (looking-at " ") ;; Delete the info. - (delete-region (point) (if (re-search-forward "^[^ ]" nil t) + (delete-region (point) (if (re-search-forward "^[^ \t]" nil t) (match-beginning 0) (point-max))) ;; Insert the info. diff --git a/lisp/use-package/bind-key.el b/lisp/use-package/bind-key.el index b216c668d83..c45b9e546f7 100644 --- a/lisp/use-package/bind-key.el +++ b/lisp/use-package/bind-key.el @@ -196,6 +196,7 @@ can safely be called at any time." (key-description ,namevar)) (if (symbolp ,keymap) ,keymap (quote ,keymap)))) (,bindingvar (lookup-key ,kmapvar ,keyvar))) + (require 'bind-key) ; ensure `personal-keybindings' is in scope (let ((entry (assoc ,kdescvar personal-keybindings)) (details (list ,command (unless (numberp ,bindingvar) diff --git a/src/keymap.c b/src/keymap.c index da2af98c2d6..1f863885003 100644 --- a/src/keymap.c +++ b/src/keymap.c @@ -1065,8 +1065,12 @@ possibly_translate_key_sequence (Lisp_Object key, ptrdiff_t *length) xsignal2 (Qerror, build_string ("`key-valid-p' is not defined, so this syntax can't be used: %s"), key); + /* If key-valid-p is unhappy about KEY, we return it as-is. + This happens when menu items define as bindings strings that + should be inserted into the buffer, not commands. See + bug#64927, for example. */ if (NILP (call1 (Qkey_valid_p, AREF (key, 0)))) - xsignal2 (Qerror, build_string ("Invalid `key-parse' syntax: %S"), key); + return key; key = call1 (Qkey_parse, AREF (key, 0)); *length = CHECK_VECTOR_OR_STRING (key); if (*length == 0)