forked from FG42/FG42
defkey macro has been added
This commit is contained in:
parent
cab49441b2
commit
f5c6925e5e
|
@ -23,13 +23,38 @@
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
|
||||||
(defmacro defkey (docstring map key-map fn)
|
(require 'fg42/race)
|
||||||
|
|
||||||
|
(defun -defkey-god (map key fn)
|
||||||
|
"Set the given KEY on key map MAP to FN."
|
||||||
|
(define-key map (kbd key) fn))
|
||||||
|
|
||||||
|
|
||||||
|
(defun -defkey-human (map key fn)
|
||||||
|
"Set the given KEY on key map MAP to FN."
|
||||||
|
(define-key map (kbd key) fn))
|
||||||
|
|
||||||
|
|
||||||
|
(defun -defkey-evil (map key fn)
|
||||||
|
"Set the given KEY on key map MAP to FN."
|
||||||
|
(define-key map (kbd key) fn))
|
||||||
|
|
||||||
|
|
||||||
|
(defmacro defkey (map keys fn)
|
||||||
"Defines a key binding for FG42 for different types.
|
"Defines a key binding for FG42 for different types.
|
||||||
Defines a keybinding in the given MAP for the given KEY-MAP that maps
|
Defines a keybinding in the given MAP for the given KEYS that maps
|
||||||
to the given FN with the given DOCSTRING.
|
to the given FN with the given DOCSTRING.
|
||||||
|
|
||||||
KEY-MAP should be a plist in the following format:
|
KEYS should be a plist in the following format:
|
||||||
\(:god <keyma> :human <keymap> :evil <keymap)")
|
\(:god <keyma> :human <keymap> :evil <keymap)"
|
||||||
|
(let ((god-key (plist-get keys :god))
|
||||||
|
(human-key (plist-get keys :human))
|
||||||
|
(evil-key (plist-get keys :evil)))
|
||||||
|
(cond
|
||||||
|
((is-god?) `(-defkey-god ,map ,god-key ,fn))
|
||||||
|
((is-human?) `(-defkey-human ,map ,human-key ,fn))
|
||||||
|
((is-evil? `(-defkey-evil ,map ,evil-key ,fn))))
|
||||||
|
(error "Wrong 'race' has been selected, Checkout `fg42-user-race'")))
|
||||||
|
|
||||||
(provide 'fg42/key-bindings)
|
(provide 'fg42/key-bindings)
|
||||||
;;; key-bindings.el ends here
|
;;; key-bindings.el ends here
|
||||||
|
|
|
@ -1,44 +1,44 @@
|
||||||
;;; Race --- A utitlity to tweak shortkeys based on user preference
|
;;; Race --- A utitlity to tweak shortkeys based on user preference
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
;;; Code:
|
;;; Code:
|
||||||
(defvar user-race :god
|
(defvar fg42-user-race :god
|
||||||
"The race of the user.")
|
"The race of the user.")
|
||||||
|
|
||||||
(defun i-am (race)
|
(defun i-am (race)
|
||||||
"Set the user race to the given RACE."
|
"Set the user race to the given RACE."
|
||||||
(if (member race '(:god :human :evil))
|
(if (member race '(:god :human :evil))
|
||||||
(setq user-race race)
|
(setq fg42-user-race race)
|
||||||
(error "Invalid race '%s'. Choices are ':god', ':human', ':evil'" race)))
|
(error "Invalid race '%s'. Choices are ':god', ':human', ':evil'" race)))
|
||||||
|
|
||||||
(defun i-am-evil ()
|
(defun i-am-evil ()
|
||||||
"Set the user race to :evil."
|
"Set the user race to :evil."
|
||||||
(interactive)
|
(interactive)
|
||||||
(setq user-race :evil))
|
(setq fg42-user-race :evil))
|
||||||
|
|
||||||
(defun i-am-god ()
|
(defun i-am-god ()
|
||||||
"Set the user race to :god."
|
"Set the user race to :god."
|
||||||
(interactive)
|
(interactive)
|
||||||
(setq user-race :god))
|
(setq fg42-user-race :god))
|
||||||
|
|
||||||
(defun i-am-human ()
|
(defun i-am-human ()
|
||||||
"Set the user race to :human."
|
"Set the user race to :human."
|
||||||
(interactive)
|
(interactive)
|
||||||
(setq user-race :human))
|
(setq fg42-user-race :human))
|
||||||
|
|
||||||
(defun is-evil? ()
|
(defun is-evil? ()
|
||||||
"Is user a evil?"
|
"Is user a evil?"
|
||||||
(interactive)
|
(interactive)
|
||||||
(eq user-race :evil))
|
(eq fg42-user-race :evil))
|
||||||
|
|
||||||
(defun is-god? ()
|
(defun is-god? ()
|
||||||
"Is user a god?"
|
"Is user a god?"
|
||||||
(interactive)
|
(interactive)
|
||||||
(eq user-race :god))
|
(eq fg42-user-race :god))
|
||||||
|
|
||||||
(defun is-human? ()
|
(defun is-human? ()
|
||||||
"Is user a human?"
|
"Is user a human?"
|
||||||
(interactive)
|
(interactive)
|
||||||
(eq user-race :human))
|
(eq fg42-user-race :human))
|
||||||
|
|
||||||
(provide 'fg42/race)
|
(provide 'fg42/race)
|
||||||
;;; race.el ends here
|
;;; race.el ends here
|
||||||
|
|
Loading…
Reference in New Issue