Add :[nivmo]map

This commit is contained in:
Henrik Lissner 2016-04-04 12:07:32 -04:00
parent 0383f3edd8
commit 7bf28b5ad5
2 changed files with 47 additions and 0 deletions

View file

@ -122,5 +122,46 @@
(setq evil-ex-commands (delq (assoc abbrev evil-ex-commands) evil-ex-commands)))
(setq evil-ex-commands (delq (assoc cmd evil-ex-commands) evil-ex-commands))))
(defvar narf:map-maps '())
;;;###autoload (autoload 'narf:map "defuns-evil" nil t)
(evil-define-command narf:map (bang input &optional mode)
"Map ex commands to keybindings. INPUT should be in the format [KEY] [EX COMMAND]."
(interactive "<!><a>")
(let* ((parts (s-split-up-to " " input 2 t))
(mode (or mode 'normal))
(key (kbd (car parts)))
(command (s-join " " (cdr parts)))
(map (cl-case mode
('normal evil-normal-state-local-map)
('insert evil-insert-state-local-map)
('visual evil-visual-state-local-map)
('motion evil-motion-state-local-map)
('operator evil-operator-state-local-map)))
(fn `(lambda () (interactive) (evil-ex-eval ,command))))
(if bang
(evil-define-key mode nil key fn)
(define-key map key fn))))
;;;###autoload (autoload 'narf:nmap "defuns-evil" nil t)
(evil-define-command narf:nmap (bang input &optional mode)
(interactive "<!><a>") (narf:map bang input 'normal))
;;;###autoload (autoload 'narf:imap "defuns-evil" nil t)
(evil-define-command narf:imap (bang input &optional mode)
(interactive "<!><a>") (narf:map bang input 'insert))
;;;###autoload (autoload 'narf:vmap "defuns-evil" nil t)
(evil-define-command narf:vmap (bang input &optional mode)
(interactive "<!><a>") (narf:map bang input 'visual))
;;;###autoload (autoload 'narf:mmap "defuns-evil" nil t)
(evil-define-command narf:mmap (bang input &optional mode)
(interactive "<!><a>") (narf:map bang input 'motion))
;;;###autoload (autoload 'narf:omap "defuns-evil" nil t)
(evil-define-command narf:omap (bang input &optional mode)
(interactive "<!><a>") (narf:map bang input 'operator))
(provide 'defuns-evil)
;;; defuns-evil.el ends here

View file

@ -5,6 +5,12 @@
(exmap "bcomp[ile]" 'narf:compile-el)
(exmap "echo" 'narf:echo)
(exmap "minor" 'helm-describe-modes) ; list minor modes
;; Quick mapping keys to commands, allows :nmap \m !make
(exmap "nmap" 'narf:nmap)
(exmap "imap" 'narf:imap)
(exmap "vmap" 'narf:vmap)
(exmap "mmap" 'narf:mmap)
(exmap "omap" 'narf:omap)
;; Editing
(exmap "@" 'narf/evil-macro-on-all-lines) ; run macro on each line