Change it to accept keyword args for nicer calls

This commit is contained in:
Kashish Sharma 2015-11-26 05:50:25 +05:30
parent b8820cf465
commit d547f002f5
1 changed files with 29 additions and 38 deletions

67
init.el
View File

@ -31,7 +31,8 @@ KEY-FN-ALIST must be in the form `((,(kbd \"...\") FN) ...)"
(local-set-key (car b) (cadr b))) (local-set-key (car b) (cadr b)))
key-fn-alist)) key-fn-alist))
(defun cp-set-keys (key-fn-alist &optional keymap-or-local unset) (require 'cl)
(cl-defun cp-set-keys (&key key-fn-alist keymap-or-local unset)
"A clean way to set/unset many keybindings. "A clean way to set/unset many keybindings.
KEY-FN-ALIST must be in the form `((,(kbd \"...\") FN) ...) KEY-FN-ALIST must be in the form `((,(kbd \"...\") FN) ...)
@ -57,7 +58,6 @@ applicable."
((or `global `nil) #'global-unset-key) ((or `global `nil) #'global-unset-key)
(`local #'local-unset-key) (`local #'local-unset-key)
(x #'define-key))))) (x #'define-key)))))
(if (eq key-function 'define-key) (if (eq key-function 'define-key)
(if unset (if unset
(mapc (lambda (b) (mapc (lambda (b)
@ -75,42 +75,33 @@ applicable."
key-fn-alist))))) key-fn-alist)))))
;; tests ;; tests
(progn (progn (cp-set-keys :keymap-or-local 'global
(cp-set-keys `((,(kbd "<f6>") erc) :key-fn-alist `((,(kbd "<f6>") erc) (,(kbd "<f7>") eww)))
(,(kbd "<f7>") eww)) (and (equal 'erc (lookup-key (current-global-map) (kbd "<f6>")))
'global) (equal 'eww (lookup-key (current-global-map) (kbd "<f7>")))))
(and (equal 'erc (lookup-key (current-global-map) (kbd "<f6>"))) (progn (cp-set-keys :keymap-or-local 'global
(equal 'eww (lookup-key (current-global-map) (kbd "<f7>"))))) :unset 'unset
(progn :key-fn-alist `((,(kbd "<f6>") erc) (,(kbd "<f7>") eww)))
(cp-set-keys `((,(kbd "<f6>") erc) (and (equal nil (lookup-key (current-global-map) (kbd "<f6>")))
(,(kbd "<f7>") eww)) (equal nil (lookup-key (current-global-map) (kbd "<f7>")))))
'global 'unset) (progn (cp-set-keys :keymap-or-local emacs-lisp-mode-map
(and (equal nil (lookup-key (current-global-map) (kbd "<f6>"))) :key-fn-alist `((,(kbd "<f6>") erc) (,(kbd "<f7>") eww)))
(equal nil (lookup-key (current-global-map) (kbd "<f7>"))))) (and (equal 'erc (lookup-key emacs-lisp-mode-map (kbd "<f6>")))
(progn (equal 'eww (lookup-key emacs-lisp-mode-map (kbd "<f7>")))))
(cp-set-keys `((,(kbd "<f6>") erc) (progn (cp-set-keys :keymap-or-local emacs-lisp-mode-map
(,(kbd "<f7>") eww)) :unset 'unset
emacs-lisp-mode-map) :key-fn-alist `((,(kbd "<f6>") erc) (,(kbd "<f7>") eww)))
(and (equal 'erc (lookup-key emacs-lisp-mode-map (kbd "<f6>"))) (and (equal nil (lookup-key emacs-lisp-mode-map (kbd "<f6>")))
(equal 'eww (lookup-key emacs-lisp-mode-map (kbd "<f7>"))))) (equal nil (lookup-key emacs-lisp-mode-map (kbd "<f7>")))))
(progn (progn (cp-set-keys :keymap-or-local 'local
(cp-set-keys `((,(kbd "<f6>") erc) :key-fn-alist `((,(kbd "<f6>") erc) (,(kbd "<f7>") eww)))
(,(kbd "<f7>") eww)) (and (equal 'erc (lookup-key emacs-lisp-mode-map (kbd "<f6>")))
emacs-lisp-mode-map 'unset) (equal 'eww (lookup-key emacs-lisp-mode-map (kbd "<f7>")))))
(and (equal nil (lookup-key emacs-lisp-mode-map (kbd "<f6>"))) (progn (cp-set-keys :keymap-or-local 'local
(equal nil (lookup-key emacs-lisp-mode-map (kbd "<f7>"))))) :unset 'unset
(progn :key-fn-alist `((,(kbd "<f6>") erc) (,(kbd "<f7>") eww)))
(cp-set-keys `((,(kbd "<f6>") erc) (and (equal nil (lookup-key emacs-lisp-mode-map (kbd "<f6>")))
(,(kbd "<f7>") eww)) (equal nil (lookup-key emacs-lisp-mode-map (kbd "<f7>")))))
'local)
(and (equal 'erc (lookup-key emacs-lisp-mode-map (kbd "<f6>")))
(equal 'eww (lookup-key emacs-lisp-mode-map (kbd "<f7>")))))
(progn
(cp-set-keys `((,(kbd "<f6>") erc)
(,(kbd "<f7>") eww))
'local 'unset)
(and (equal nil (lookup-key emacs-lisp-mode-map (kbd "<f6>")))
(equal nil (lookup-key emacs-lisp-mode-map (kbd "<f7>")))))
;;;; UTF-8 magic ;;;; UTF-8 magic
(setq locale-coding-system 'utf-8) (setq locale-coding-system 'utf-8)