diff --git a/workgroups-keys.el b/workgroups-keys.el new file mode 100644 index 0000000000000000000000000000000000000000..670bfd84a32b17631384b85a909d85c773393a74 --- /dev/null +++ b/workgroups-keys.el @@ -0,0 +1,209 @@ +;;; keymaps + +(defvar wg-prefixed-map + (wg-fill-keymap + (make-sparse-keymap) + + + ;; workgroup creation + + (kbd "C-c") 'wg-create-workgroup + (kbd "c") 'wg-create-workgroup + (kbd "C") 'wg-clone-workgroup + + + ;; killing and yanking + + (kbd "C-k") 'wg-kill-workgroup + (kbd "k") 'wg-kill-workgroup + (kbd "M-W") 'wg-kill-ring-save-base-wconfig + (kbd "M-w") 'wg-kill-ring-save-working-wconfig + (kbd "C-y") 'wg-yank-wconfig + (kbd "y") 'wg-yank-wconfig + (kbd "M-k") 'wg-kill-workgroup-and-buffers + (kbd "K") 'wg-delete-other-workgroups + + + ;; updating and reverting + + (kbd "C-r") 'wg-revert-workgroup + (kbd "r") 'wg-revert-workgroup + (kbd "C-S-r") 'wg-revert-all-workgroups + (kbd "R") 'wg-revert-all-workgroups + + + ;; workgroup switching + + (kbd "C-'") 'wg-switch-to-workgroup + (kbd "'") 'wg-switch-to-workgroup + (kbd "C-v") 'wg-switch-to-workgroup + (kbd "v") 'wg-switch-to-workgroup + (kbd "M-v") 'wg-switch-to-workgroup-other-frame + (kbd "C-j") 'wg-switch-to-workgroup-at-index + (kbd "j") 'wg-switch-to-workgroup-at-index + (kbd "0") 'wg-switch-to-workgroup-at-index-0 + (kbd "1") 'wg-switch-to-workgroup-at-index-1 + (kbd "2") 'wg-switch-to-workgroup-at-index-2 + (kbd "3") 'wg-switch-to-workgroup-at-index-3 + (kbd "4") 'wg-switch-to-workgroup-at-index-4 + (kbd "5") 'wg-switch-to-workgroup-at-index-5 + (kbd "6") 'wg-switch-to-workgroup-at-index-6 + (kbd "7") 'wg-switch-to-workgroup-at-index-7 + (kbd "8") 'wg-switch-to-workgroup-at-index-8 + (kbd "9") 'wg-switch-to-workgroup-at-index-9 + (kbd "C-p") 'wg-switch-to-workgroup-left + (kbd "p") 'wg-switch-to-workgroup-left + (kbd "C-n") 'wg-switch-to-workgroup-right + (kbd "n") 'wg-switch-to-workgroup-right + (kbd "M-p") 'wg-switch-to-workgroup-left-other-frame + (kbd "M-n") 'wg-switch-to-workgroup-right-other-frame + (kbd "C-a") 'wg-switch-to-previous-workgroup + (kbd "a") 'wg-switch-to-previous-workgroup + + + ;; wconfig undo/redo + + (kbd "") 'wg-undo-wconfig-change + (kbd "") 'wg-redo-wconfig-change + (kbd "[") 'wg-undo-wconfig-change + (kbd "]") 'wg-redo-wconfig-change + (kbd "{") 'wg-undo-once-all-workgroups + (kbd "}") 'wg-redo-once-all-workgroups + + + ;; wconfig save/restore + + ;; FIXME: come up with better keys for these: + (kbd "C-d C-s") 'wg-save-wconfig + (kbd "C-d C-'") 'wg-restore-saved-wconfig + (kbd "C-d C-k") 'wg-kill-saved-wconfig + + + ;; buffer-list + + (kbd "+") 'wg-associate-buffer-with-workgroup + (kbd "~") 'wg-associate-visible-buffers-with-workgroup + (kbd "-") 'wg-dissociate-buffer-from-workgroup + (kbd "=") 'wg-cycle-buffer-association-type + (kbd "*") 'wg-restore-workgroup-associated-buffers + (kbd "_") 'wg-dissociate-weakly-associated-buffers + (kbd "(") 'wg-next-buffer + (kbd ")") 'wg-previous-buffer + + + ;; workgroup movement + + (kbd "C-x") 'wg-swap-workgroups + (kbd "C-,") 'wg-offset-workgroup-left + (kbd "C-.") 'wg-offset-workgroup-right + + + ;; file and buffer + + (kbd "C-s") 'wg-save-session + (kbd "C-w") 'wg-write-session-file + (kbd "C-f") 'wg-find-session-file + (kbd "F") 'wg-find-file-in-new-workgroup + (kbd "M-F") 'wg-find-file-read-only-in-new-workgroup + (kbd "d") 'wg-dired-in-new-workgroup + (kbd "C-b") 'wg-switch-to-buffer + (kbd "b") 'wg-switch-to-buffer + + + ;; window moving and frame reversal + + (kbd "<") 'wg-backward-transpose-window + (kbd ">") 'wg-transpose-window + (kbd "|") 'wg-reverse-frame-horizontally + (kbd "\\") 'wg-reverse-frame-vertically + (kbd "/") 'wg-reverse-frame-horizontally-and-vertically + + + ;; toggling + + (kbd "C-t C-m") 'wg-toggle-mode-line-display + (kbd "C-t C-m") 'wg-toggle-morph + (kbd "C-t C-b") 'wg-toggle-buffer-list-filtration + (kbd "C-t C-d") 'wg-toggle-window-dedicated-p + + + ;; echoing + + (kbd "S-C-e") 'wg-echo-current-workgroup + (kbd "E") 'wg-echo-current-workgroup + (kbd "C-e") 'wg-echo-all-workgroups + (kbd "e") 'wg-echo-all-workgroups + ;; FIXME: possibly get rid of the time stuff + (kbd "T") 'wg-echo-time + (kbd "V") 'wg-echo-version + (kbd "C-m") 'wg-echo-last-message + (kbd "m") 'wg-echo-last-message + + + ;; misc + + (kbd "A") 'wg-rename-workgroup + (kbd "!") 'wg-reset + (kbd "?") 'wg-help + + ) + "The keymap that sits on `wg-prefix-key'.") + +(defun wg-make-workgroups-mode-map () + "Return Workgroups' minor-mode-map. +This map includes `wg-prefixed-map' on `wg-prefix-key', as well +as Workgroups' command remappings." + (let ((map (make-sparse-keymap))) + (define-key map wg-prefix-key + wg-prefixed-map) + (when wg-remap-switch-to-buffer + (define-key map [remap switch-to-buffer] + 'wg-switch-to-buffer)) + (when wg-remap-switch-to-buffer-other-window + (define-key map [remap switch-to-buffer-other-window] + 'wg-switch-to-buffer-other-window)) + (when wg-remap-switch-to-buffer-other-frame + (define-key map [remap switch-to-buffer-other-frame] + 'wg-switch-to-buffer-other-frame)) + (when wg-remap-next-buffer + (define-key map [remap next-buffer] + 'wg-next-buffer)) + (when wg-remap-previous-buffer + (define-key map [remap previous-buffer] + 'wg-previous-buffer)) + (when wg-remap-kill-buffer + (define-key map [remap kill-buffer] + 'wg-kill-buffer)) + (when wg-remap-display-buffer + (define-key map [remap display-buffer] + 'wg-display-buffer)) + (when wg-remap-insert-buffer + (define-key map [remap insert-buffer] + 'wg-insert-buffer)) + (cond ((eq wg-remap-bury-buffer 'banish) + (define-key map [remap bury-buffer] + 'wg-banish-buffer)) + (wg-remap-bury-buffer + (define-key map [remap bury-buffer] + 'wg-bury-buffer))) + (setq workgroups-mode-map map))) + +(defvar wg-minibuffer-mode-map + (wg-fill-keymap + (make-sparse-keymap) + (kbd "C-b") 'wg-backward-char-or-next-buffer-list-filter + (kbd "C-c n") 'wg-next-buffer-list-filter + (kbd "C-c C-n") 'wg-next-buffer-list-filter + (kbd "C-S-b") 'wg-backward-char-or-previous-buffer-list-filter + (kbd "C-c p") 'wg-previous-buffer-list-filter + (kbd "C-c C-p") 'wg-previous-buffer-list-filter + (kbd "C-c a") 'wg-associate-first-match + (kbd "C-c C-a") 'wg-associate-first-match + (kbd "C-c d") 'wg-dissociate-first-match + (kbd "C-c C-d") 'wg-dissociate-first-match + (kbd "C-c _") 'wg-minibuffer-mode-dissociate-weakly-associated-buffers + ) + "`wg-minibuffer-mode's keymap.") + + +(provide 'workgroups-keys)