;;; Make multiple binding with a common prefix (in-package :next) (defmacro defhydra (prefix &body suffixes) `(define-key *global-map* ,prefix (lambda () (with-result (suffix (read-from-minibuffer (mode *minibuffer*))) (cond ,@(map 'list (lambda (arg) (list (list 'equal 'suffix (first arg)) (list (second arg)))) suffixes)))))) (defhydra (kbd "s") ("p" switch-buffer-previous) ("n" switch-buffer-next)) (defhydra (kbd "c") ("l" set-url-current-buffer) ("L" set-url-new-buffer))