[spacebind] enable nested form fmt

This commit is contained in:
JAremko 2020-03-11 08:57:19 +02:00 committed by Eugene Yaremenko
parent a18b4d76b2
commit 2e81c032ef
1 changed files with 46 additions and 36 deletions

View File

@ -195,42 +195,52 @@ NOTE: This function strips all newline characters, replaces successive spaces
with a singular in string elements of FORM and trims tails of function labels
delimited by \"|\" character."
(list
(cl-destructuring-bind
(key-or-prefix-form
leader-label-or-fn-symbol
leader-label-or-next-form)
(mapcar (lambda (el)
;; Convert new lines and multiply spaces into singular.
;; This is done to enable better binding form formatting.
(if (stringp el)
(replace-regexp-in-string "[\n[:space:]]+" " " el)
el))
(seq-take form 3))
(let ((full-key-or-prefix (append
path
;; ("key" :label "label") or "key".
`(,(or (car-safe key-or-prefix-form)
key-or-prefix-form))))
(key-or-prefix-label (thread-first key-or-prefix-form
(cdr-safe)
(plist-get :label))))
(if (symbolp leader-label-or-fn-symbol)
(funcall k-fn
full-key-or-prefix
key-or-prefix-label
leader-label-or-fn-symbol
;; Discard everything after | symbol in labels.
;; This way we can add extra text into the documentation
;; while omitting it in labels.
(replace-regexp-in-string
"[[:punct:][:space:]]*|.*"
""
;; Either "label" or ("doc label" :label "label").
(or (thread-first leader-label-or-next-form
(cdr-safe)
(plist-get :label))
leader-label-or-next-form)))
(funcall p-fn full-key-or-prefix leader-label-or-fn-symbol))))))
(cl-labels ((apply-str-fmt
(el)
(thread-last el
;; Convert new lines and multiply spaces into singular.
;; This is done to enable better binding forms.
(replace-regexp-in-string "[\n[:space:]]+" " ")
;; Discard everything after | symbol in labels.
;; This way we can add extra text into the README.org
;; files while omitting it in labels.
(replace-regexp-in-string "[[:punct:][:space:]]*|.+" "")))
(str-fmt-rec
(depth el)
(cond
((stringp el) (apply-str-fmt el))
((and (= depth 0)
(listp el))
;; We don't want to go deeper than a single level.
(mapcar (apply-partially #'str-fmt-rec (1+ depth)) el))
(t el)))
(str-fmt
(el)
(str-fmt-rec 0 el)))
(cl-destructuring-bind
(key-or-prefix-form
leader-label-or-fn-symbol
leader-label-or-next-form)
(mapcar #'str-fmt (seq-take form 3))
(let ((full-key-or-prefix (append
path
;; ("key" :label "label") or "key".
`(,(or (car-safe key-or-prefix-form)
key-or-prefix-form))))
(key-or-prefix-label (thread-first key-or-prefix-form
(cdr-safe)
(plist-get :label))))
(if (symbolp leader-label-or-fn-symbol)
(funcall k-fn
full-key-or-prefix
key-or-prefix-label
leader-label-or-fn-symbol
;; Either "label" or ("doc label" :label "label").
(or (thread-first leader-label-or-next-form
(cdr-safe)
(plist-get :label))
leader-label-or-next-form))
(funcall p-fn full-key-or-prefix leader-label-or-fn-symbol)))))))
(defun spacemacs//spacebind-form-walker-rec (path k-fn p-fn form)
"Recursive body of `spacemacs//spacebind-form-walker'."