Skip to content

Instantly share code, notes, and snippets.

@kawaguchi
Created August 6, 2010 01:59
Show Gist options
  • Save kawaguchi/510722 to your computer and use it in GitHub Desktop.
Save kawaguchi/510722 to your computer and use it in GitHub Desktop.
空いているキーバインドを探す
(defun detect-free-key-bindings ()
(let ((prefix-list '("C-" "C-x " "C-c " "C-x C-"
"C-c C-" "M-" "C-M-" "C-x M-"
"C-c M-" "C-x C-M-" "C-c C-M-"))
(char-list
(string-to-char-list
(concat "asdfjkl;"
"qwertyuiop[]\\zxcvbnm,./"
"ASDFGHJKL:\""
"`1234567890-="
"QWERTYUIOP{}|ZXCVBNM<>?"
"~!@#$%^&*()_+")))
(free-key-bindings '()))
(mapcar (lambda (prefix)
(mapcar (lambda (char)
(let ((keys (concat prefix (char-to-string char))))
(unless (key-binding (read-kbd-macro keys))
;; minor-mode-key-bindings
(add-to-list 'free-key-bindings keys t))))
char-list))
prefix-list)
free-key-bindings))
(defun show-free-key-bindings ()
(interactive)
(let ((buffer (get-buffer-create "*free-key-bindings*"))
(key-bindings (detect-free-key-bindings)))
(set-buffer buffer)
(erase-buffer)
(insert (mapconcat (lambda (keys) keys) key-bindings "\n"))
(pop-to-buffer buffer)))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment