Refactor map! (and update for new evil-define-key)
This commit is contained in:
parent
83e13e4df6
commit
c24b96e1ac
1 changed files with 47 additions and 47 deletions
|
@ -185,18 +185,19 @@ Examples:
|
|||
(while rest
|
||||
(setq key (pop rest))
|
||||
(push
|
||||
(reverse
|
||||
(cond ((listp key) ; it's a sub exp
|
||||
`(,(macroexpand `(map! ,@key))))
|
||||
|
||||
((keywordp key)
|
||||
(when (memq key '(:leader :localleader))
|
||||
(push (pcase key
|
||||
(:leader narf-leader-prefix)
|
||||
(:localleader narf-localleader-prefix))
|
||||
(push (cond ((eq key :leader)
|
||||
narf-leader-prefix)
|
||||
((eq key :localleader)
|
||||
narf-localleader-prefix))
|
||||
rest)
|
||||
(setq key :prefix))
|
||||
(pcase key
|
||||
;; TODO: Data checks
|
||||
(:prefix (setq prefix (concat prefix (kbd (pop rest)))) nil)
|
||||
(:map (setq keymaps (-list (pop rest))) nil)
|
||||
(:unset `(,(macroexpand `(map! ,(kbd (pop rest)) nil))))
|
||||
|
@ -206,7 +207,7 @@ Examples:
|
|||
(otherwise ; might be a state prefix
|
||||
(mapc (lambda (letter)
|
||||
(if (assoc letter state-map)
|
||||
(add-to-list 'states (cdr (assoc letter state-map)))
|
||||
(push (cdr (assoc letter state-map)) states)
|
||||
(user-error "Invalid mode prefix %s in key %s" letter key)))
|
||||
(split-string (substring (symbol-name key) 1) "" t))
|
||||
(unless states
|
||||
|
@ -225,15 +226,14 @@ Examples:
|
|||
(user-error "Map has no definition for %s" key))
|
||||
(setq def (pop rest))
|
||||
(let (out-forms)
|
||||
(dolist (keymap keymaps)
|
||||
(if (not states)
|
||||
(add-to-list 'out-forms `(evil-define-key nil ,keymap ,key ,def) t)
|
||||
(dolist (state states)
|
||||
(add-to-list 'out-forms `(evil-define-key ',state ,keymap ,key ,def) t))))
|
||||
(mapc (lambda (keymap)
|
||||
(if states
|
||||
(push `(evil-define-key ',states ,keymap ,key ,def) out-forms)
|
||||
(push `(define-key ,keymap ,key ,def) out-forms)))
|
||||
keymaps)
|
||||
(setq states '())
|
||||
out-forms))
|
||||
|
||||
(t (user-error "Invalid key %s" key)))
|
||||
(t (user-error "Invalid key %s" key))))
|
||||
forms)
|
||||
(setq i (1+ i)))
|
||||
`(progn ,@(apply #'nconc (delete nil (delete (list nil) (reverse forms))))))))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue