Add property :use-minibuffer
to micro-state
This commit is contained in:
parent
3c56836c85
commit
4d9b9686f3
|
@ -51,11 +51,15 @@ Available PROPS:
|
||||||
Evaluate SEXP when leaving the micro-state.
|
Evaluate SEXP when leaving the micro-state.
|
||||||
|
|
||||||
`:doc STRING or SEXP'
|
`:doc STRING or SEXP'
|
||||||
A STRING or a SEXP that evaluates to a string
|
A STRING or a SEXP that evaluates to a string.
|
||||||
|
|
||||||
|
`:use-minibuffer BOOLEAN'
|
||||||
|
If non nil then the minibuffer is used to display the documenation
|
||||||
|
strings. Default is nil.
|
||||||
|
|
||||||
`:persistent BOOLEAN'
|
`:persistent BOOLEAN'
|
||||||
If BOOLEAN is non nil then the micro-state never exits. A binding
|
If BOOLEAN is non nil then the micro-state never exits. A binding
|
||||||
with an explicitly set `exit t' property is required.
|
with an explicitly set `exit t' property is required. Default is nil.
|
||||||
|
|
||||||
`:bindings EXPRESSIONS'
|
`:bindings EXPRESSIONS'
|
||||||
One or several EXPRESSIONS with the form
|
One or several EXPRESSIONS with the form
|
||||||
|
@ -78,11 +82,13 @@ used."
|
||||||
(let* ((func (spacemacs//micro-state-func-name name))
|
(let* ((func (spacemacs//micro-state-func-name name))
|
||||||
(doc (spacemacs/mplist-get props :doc))
|
(doc (spacemacs/mplist-get props :doc))
|
||||||
(persistent (plist-get props :persistent))
|
(persistent (plist-get props :persistent))
|
||||||
|
(msg-func (if (plist-get props :use-minibuffer) 'message 'lv-message))
|
||||||
(exec-binding (plist-get props :execute-binding-on-enter))
|
(exec-binding (plist-get props :execute-binding-on-enter))
|
||||||
(on-enter (spacemacs/mplist-get props :on-enter))
|
(on-enter (spacemacs/mplist-get props :on-enter))
|
||||||
(on-exit (spacemacs/mplist-get props :on-exit))
|
(on-exit (spacemacs/mplist-get props :on-exit))
|
||||||
(bindings (spacemacs/mplist-get props :bindings))
|
(bindings (spacemacs/mplist-get props :bindings))
|
||||||
(wrappers (spacemacs//micro-state-create-wrappers name doc bindings))
|
(wrappers (spacemacs//micro-state-create-wrappers
|
||||||
|
name doc msg-func bindings))
|
||||||
(keymap-body (spacemacs//micro-state-fill-map-sexps wrappers))
|
(keymap-body (spacemacs//micro-state-fill-map-sexps wrappers))
|
||||||
(bindkeys (spacemacs//create-key-binding-form props func)))
|
(bindkeys (spacemacs//create-key-binding-form props func)))
|
||||||
`(progn (defun ,func ()
|
`(progn (defun ,func ()
|
||||||
|
@ -90,8 +96,8 @@ used."
|
||||||
(interactive)
|
(interactive)
|
||||||
(let ((doc ,@doc))
|
(let ((doc ,@doc))
|
||||||
(when doc
|
(when doc
|
||||||
(lv-message (spacemacs//micro-state-propertize-doc
|
(apply ',msg-func (list (spacemacs//micro-state-propertize-doc
|
||||||
(format "%S: %s" ',name doc)))))
|
(format "%S: %s" ',name doc))))))
|
||||||
,(when exec-binding
|
,(when exec-binding
|
||||||
(spacemacs//micro-state-auto-execute bindings))
|
(spacemacs//micro-state-auto-execute bindings))
|
||||||
,@on-enter
|
,@on-enter
|
||||||
|
@ -115,15 +121,16 @@ used."
|
||||||
(when binding
|
(when binding
|
||||||
(call-interactively (cadr binding)))))
|
(call-interactively (cadr binding)))))
|
||||||
|
|
||||||
(defun spacemacs//micro-state-create-wrappers (name doc bindings)
|
(defun spacemacs//micro-state-create-wrappers (name doc msg-func bindings)
|
||||||
"Return an alist (key wrapper) for each binding in BINDINGS."
|
"Return an alist (key wrapper) for each binding in BINDINGS."
|
||||||
(mapcar (lambda (x) (spacemacs//micro-state-create-wrapper name doc x))
|
(mapcar (lambda (x) (spacemacs//micro-state-create-wrapper
|
||||||
|
name doc msg-func x))
|
||||||
(append bindings
|
(append bindings
|
||||||
;; force SPC to quit the micro-state to avoid a edge case
|
;; force SPC to quit the micro-state to avoid a edge case
|
||||||
;; with evil-leader
|
;; with evil-leader
|
||||||
(list '("SPC" nil :exit t)))))
|
(list '("SPC" nil :exit t)))))
|
||||||
|
|
||||||
(defun spacemacs//micro-state-create-wrapper (name default-doc binding)
|
(defun spacemacs//micro-state-create-wrapper (name default-doc msg-func binding)
|
||||||
"Create a wrapper of FUNC and return a tuple (key wrapper BINDING)."
|
"Create a wrapper of FUNC and return a tuple (key wrapper BINDING)."
|
||||||
(let* ((key (car binding))
|
(let* ((key (car binding))
|
||||||
(wrapped (cadr binding))
|
(wrapped (cadr binding))
|
||||||
|
@ -134,12 +141,14 @@ used."
|
||||||
(doc-body `((let ((bdoc ,@binding-doc)
|
(doc-body `((let ((bdoc ,@binding-doc)
|
||||||
(defdoc ,@default-doc))
|
(defdoc ,@default-doc))
|
||||||
(if bdoc
|
(if bdoc
|
||||||
(lv-message (spacemacs//micro-state-propertize-doc
|
(apply ',msg-func
|
||||||
(format "%S: %s" ',name bdoc)))
|
(list (spacemacs//micro-state-propertize-doc
|
||||||
|
(format "%S: %s" ',name bdoc))))
|
||||||
(when (and defdoc
|
(when (and defdoc
|
||||||
',wrapped (not (plist-get ',binding :exit)))
|
',wrapped (not (plist-get ',binding :exit)))
|
||||||
(lv-message (spacemacs//micro-state-propertize-doc
|
(apply ',msg-func
|
||||||
(format "%S: %s" ',name defdoc))))))))
|
(list (spacemacs//micro-state-propertize-doc
|
||||||
|
(format "%S: %s" ',name defdoc)))))))))
|
||||||
(wrapper-func
|
(wrapper-func
|
||||||
(eval `(defun ,wrapper-name ()
|
(eval `(defun ,wrapper-name ()
|
||||||
"Auto-generated function"
|
"Auto-generated function"
|
||||||
|
|
Loading…
Reference in a new issue