summaryrefslogtreecommitdiff
path: root/lisp/emacs-lisp/byte-run.el
diff options
context:
space:
mode:
authorLars Ingebrigtsen <larsi@gnus.org>2021-02-14 13:29:35 +0100
committerLars Ingebrigtsen <larsi@gnus.org>2021-02-14 13:29:35 +0100
commit9291e7316f98ab0858b323f72047ffd5a23d9ac9 (patch)
treec8a7aae03a0e96290a80c99390190687ffa98ec3 /lisp/emacs-lisp/byte-run.el
parent58e0c8ee86e2c36245f1c5a1483f1c73600b4914 (diff)
downloademacs-9291e7316f98ab0858b323f72047ffd5a23d9ac9.tar.gz
emacs-9291e7316f98ab0858b323f72047ffd5a23d9ac9.tar.bz2
emacs-9291e7316f98ab0858b323f72047ffd5a23d9ac9.zip
Add new 'declare' forms for command completion predicates
* doc/lispref/functions.texi (Declare Form): Document the new `completion' and `modes' declarations. * lisp/simple.el (completion-with-modes-p): New helper functions. * lisp/emacs-lisp/byte-run.el (byte-run--set-completion) (byte-run--set-modes): (defun-declarations-alist): New declarations for `completion' and `modes'.
Diffstat (limited to 'lisp/emacs-lisp/byte-run.el')
-rw-r--r--lisp/emacs-lisp/byte-run.el15
1 files changed, 14 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/byte-run.el b/lisp/emacs-lisp/byte-run.el
index 88f362d24f0..30fcbf2b9cc 100644
--- a/lisp/emacs-lisp/byte-run.el
+++ b/lisp/emacs-lisp/byte-run.el
@@ -143,6 +143,17 @@ The return value of this function is not used."
(list 'function-put (list 'quote f)
''lisp-indent-function (list 'quote val))))
+(defalias 'byte-run--set-completion
+ #'(lambda (f _args val)
+ (list 'function-put (list 'quote f)
+ ''completion-predicate val)))
+
+(defalias 'byte-run--set-modes
+ #'(lambda (f _args val)
+ (list 'function-put (list 'quote f)
+ ''completion-predicate `(lambda (_ b)
+ (completion-with-modes-p ,val b)))))
+
;; Add any new entries to info node `(elisp)Declare Form'.
(defvar defun-declarations-alist
(list
@@ -159,7 +170,9 @@ This may shift errors from run-time to compile-time.")
If `error-free', drop calls even if `byte-compile-delete-errors' is nil.")
(list 'compiler-macro #'byte-run--set-compiler-macro)
(list 'doc-string #'byte-run--set-doc-string)
- (list 'indent #'byte-run--set-indent))
+ (list 'indent #'byte-run--set-indent)
+ (list 'completion #'byte-run--set-completion)
+ (list 'modes #'byte-run--set-modes))
"List associating function properties to their macro expansion.
Each element of the list takes the form (PROP FUN) where FUN is
a function. For each (PROP . VALUES) in a function's declaration,