Working on stump.
This commit is contained in:
parent
1ac71f2d0b
commit
17bcfa1eed
|
|
@ -1,6 +1,7 @@
|
|||
;; vim: set ft=lisp :
|
||||
;; -*-lisp-*-
|
||||
|
||||
;; Clear keymaps so we can re-build them ourselves.
|
||||
;;(setf *root-map* (make-sparse-keymap))
|
||||
;;(setf *group-top-map* (make-sparse-keymap))
|
||||
;;(setf *group-root-map* (make-sparse-keymap))
|
||||
|
|
@ -9,220 +10,221 @@
|
|||
;;(setf *groups-map* (make-sparse-keymap))
|
||||
;;(setf *exchange-window-map* (make-sparse-keymap))
|
||||
|
||||
(export '(*groups-map*
|
||||
*group-top-maps*
|
||||
*help-map*
|
||||
*help-keys*
|
||||
set-prefix-key))
|
||||
;;;;;;;;;;
|
||||
;; Applications
|
||||
;;;;;;;;;;
|
||||
;; Terminals
|
||||
(define-key *root-map* (kbd "c") "exec kitty")
|
||||
(define-key *root-map* (kbd "C") "exec alacritty")
|
||||
|
||||
(defvar *escape-key* (kbd "C-t")
|
||||
"The escape key. Any keymap that wants to hang off the escape key
|
||||
should use this specific key struct instead of creating their own
|
||||
C-t.")
|
||||
;; Browser (Firefox
|
||||
(define-key *root-map* (kbd "b") "exec firefox")
|
||||
(define-key *root-map* (kbd "B") "colon1 exec firefox http://")
|
||||
|
||||
(defvar *help-keys* '("?" "C-h")
|
||||
"The list of keys used to invoke the help command.")
|
||||
;; Ssh somewhere
|
||||
;;(define-key *root-map* (kbd "C-s") "colon1 exec kitty -e ssh ")
|
||||
|
||||
(defvar *escape-fake-key* (kbd "t")
|
||||
"The binding that sends the fake escape key to the current window.")
|
||||
;; Launch emacsclient if not already loaded. Otherwise, jump it and
|
||||
;; raise it.
|
||||
(define-key *root-map* (kbd "e") "decide-on-emacsclient")
|
||||
;; Create a brand new emacsclient session if one is already running.
|
||||
(define-key *root-map* (kbd "E") "emacsclient-launch")
|
||||
|
||||
(defvar *groups-map* nil
|
||||
"The keymap that group related key bindings sit on. It is bound to @kbd{C-t g} by default.")
|
||||
;;;;;;;;;;
|
||||
;; Window & Frame Management
|
||||
;;;;;;;;;;
|
||||
;; Jump between windows in current frame.
|
||||
(define-key *root-map* (kbd "C-t") "pull-hidden-other")
|
||||
;; List windows in current frame.
|
||||
(define-key *root-map* (kbd "\'") "frame-windowlist")
|
||||
;; List windows.
|
||||
(define-key *root-map* (kbd "\"") "windowlist")
|
||||
;; Next window in current frame.
|
||||
(define-key *root-map* (kbd "n") "pull-hidden-next")
|
||||
;; Previous window in current frame.
|
||||
(define-key *root-map* (kbd "p") "pull-hidden-previous")
|
||||
;; Jump to frame using number overlay.
|
||||
(define-key *root-map* (kbd "f") "fselect")
|
||||
;; Jump to most recent urgent window.
|
||||
(define-key *root-map* (kbd "C-u") "next-urgent")
|
||||
;; Lay out all windows in a grid and present numbers on them for the
|
||||
;; user to select which window he wants to bring into focus and zoom
|
||||
;; in to.
|
||||
(define-key *root-map* (kbd "RET") "expose")
|
||||
|
||||
(defvar *exchange-window-map* nil
|
||||
"The keymap that exchange-window key bindings sit on. It is bound to @kbd{C-t x} by default.")
|
||||
;; Select window by number.
|
||||
;; TODO: Can I have these window numbers start at 1 instead of 0
|
||||
;; somehow?
|
||||
(define-key *root-map* (kbd "1") "select-window-by-number 1")
|
||||
(define-key *root-map* (kbd "2") "select-window-by-number 2")
|
||||
(define-key *root-map* (kbd "3") "select-window-by-number 3")
|
||||
(define-key *root-map* (kbd "4") "select-window-by-number 4")
|
||||
(define-key *root-map* (kbd "5") "select-window-by-number 5")
|
||||
(define-key *root-map* (kbd "6") "select-window-by-number 6")
|
||||
(define-key *root-map* (kbd "7") "select-window-by-number 7")
|
||||
(define-key *root-map* (kbd "8") "select-window-by-number 8")
|
||||
(define-key *root-map* (kbd "9") "select-window-by-number 9")
|
||||
(define-key *root-map* (kbd "0") "select-window-by-number 0")
|
||||
|
||||
(defvar *help-map* nil
|
||||
"Help related bindings hang from this keymap")
|
||||
;; Pull window by number.
|
||||
(define-key *root-map* (kbd "1") "pull-window-by-number 1")
|
||||
(define-key *root-map* (kbd "2") "pull-window-by-number 2")
|
||||
(define-key *root-map* (kbd "3") "pull-window-by-number 3")
|
||||
(define-key *root-map* (kbd "4") "pull-window-by-number 4")
|
||||
(define-key *root-map* (kbd "5") "pull-window-by-number 5")
|
||||
(define-key *root-map* (kbd "6") "pull-window-by-number 6")
|
||||
(define-key *root-map* (kbd "7") "pull-window-by-number 7")
|
||||
(define-key *root-map* (kbd "8") "pull-window-by-number 8")
|
||||
(define-key *root-map* (kbd "9") "pull-window-by-number 9")
|
||||
(define-key *root-map* (kbd "0") "pull-window-by-number 0")
|
||||
|
||||
(defvar *group-top-maps* '((tile-group *tile-group-top-map*)
|
||||
(group *group-top-map*))
|
||||
"An alist of the top level maps for each group type. For a given
|
||||
group, all maps whose type matches the given group are active. So for
|
||||
a tile-group, both the group map and tile-group map are active.
|
||||
;; Move window by direction.
|
||||
(define-key *root-map* (kbd "M-l") "move-window right")
|
||||
(define-key *root-map* (kbd "M-h") "move-window left")
|
||||
(define-key *root-map* (kbd "M-k") "move-window up")
|
||||
(define-key *root-map* (kbd "M-j") "move-window down")
|
||||
|
||||
Order is important. Each map is seached in the order they appear in
|
||||
the list (inactive maps being skipped). In general the order should go
|
||||
from most specific groups to most general groups.")
|
||||
;; Navigate focus by direction.
|
||||
(define-key *root-map* (kbd "l") "move-focus right")
|
||||
(define-key *root-map* (kbd "h") "move-focus left")
|
||||
(define-key *root-map* (kbd "k") "move-focus up")
|
||||
(define-key *root-map* (kbd "M") "move-focus down")
|
||||
|
||||
(defvar *group-top-map* nil)
|
||||
(defvar *group-root-map* nil
|
||||
"Commands specific to a group context hang from this keymap.
|
||||
It is available as part of the @dnf{prefix map}.")
|
||||
(defvar *tile-group-top-map* nil)
|
||||
(defvar *tile-group-root-map* nil
|
||||
"Commands specific to a tile-group context hang from this keymap.
|
||||
It is available as part of the @dnf{prefix map} when the active group
|
||||
is a tile group.")
|
||||
;; Vertical Split.
|
||||
(define-key *root-map* (kbd "s") "vsplit")
|
||||
;; Horizontal Split.
|
||||
(define-key *root-map* (kbd "S") "hsplit")
|
||||
;; Remove currently active frame from split.
|
||||
(define-key *root-map* (kbd "R") "remove-split")
|
||||
;; Resize frames.
|
||||
(define-key *root-map* (kbd "r") "iresize")
|
||||
;; Clear current frame of windows.
|
||||
(define-key *root-map* (kbd "-") "fclear")
|
||||
|
||||
;; Do it this way so its easier to wipe the map and get a clean one.
|
||||
(defmacro fill-keymap (map &rest bindings)
|
||||
`(unless ,map
|
||||
(setf ,map
|
||||
(let ((m (make-sparse-keymap)))
|
||||
,@(loop for i = bindings then (cddr i)
|
||||
while i
|
||||
collect `(define-key m ,(first i) ,(second i)))
|
||||
m))))
|
||||
(setf *help-map* (make-sparse-keymap))
|
||||
;; Place current window (apply placement rules to it.)
|
||||
(define-key *root-map* (kbd "P") "place-current-window")
|
||||
;; Place all windows (apply placement rules to it.)
|
||||
(define-key *root-map* (kbd "W") "place-existing-windows")
|
||||
|
||||
(fill-keymap *top-map*
|
||||
*escape-key* '*root-map*)
|
||||
;;;;;;;;;;
|
||||
;; Groups
|
||||
;;;;;;;;;;
|
||||
;; List all groups as well as their windows.
|
||||
(define-key *root-map* (kbd "G") "vgroups")
|
||||
|
||||
(fill-keymap *root-map*
|
||||
(kbd "!") "exec"
|
||||
(kbd "C-g") "abort"
|
||||
*escape-fake-key* "send-escape"
|
||||
(kbd ";") "colon"
|
||||
(kbd ":") "eval"
|
||||
(kbd "v") "version"
|
||||
(kbd "m") "lastmsg"
|
||||
(kbd "G") "vgroups"
|
||||
(kbd "g") '*groups-map*
|
||||
(kbd "x") '*exchange-window-map*
|
||||
(kbd "F1") "gselect 1"
|
||||
(kbd "F2") "gselect 2"
|
||||
(kbd "F3") "gselect 3"
|
||||
(kbd "F4") "gselect 4"
|
||||
(kbd "F5") "gselect 5"
|
||||
(kbd "F6") "gselect 6"
|
||||
(kbd "F7") "gselect 7"
|
||||
(kbd "F8") "gselect 8"
|
||||
(kbd "F9") "gselect 9"
|
||||
(kbd "F10") "gselect 10"
|
||||
(kbd "h") '*help-map*)
|
||||
;; *GROUPS-MAP*
|
||||
(define-key *root-map* (kbd "g") *GROUPS-MAP*)
|
||||
|
||||
(fill-keymap *group-top-map*
|
||||
*escape-key* '*group-root-map*)
|
||||
;; List groups.
|
||||
(define-key *groups-map* (kbd "g") "groups")
|
||||
;; New group.
|
||||
(define-key *groups-map* (kbd "c") "gnew")
|
||||
;; Next group.
|
||||
(define-key *groups-map* (kbd "n") "gnext")
|
||||
;; Previous group.
|
||||
(define-key *groups-map* (kbd "p") "gprevious")
|
||||
;; Move focus and current window to next group.
|
||||
(define-key *groups-map* (kbd "N") "gnext-with-window")
|
||||
;; Move focus and current window to previous group.
|
||||
(define-key *groups-map* (kbd "P") "gprevious-with-window")
|
||||
;; Move to last active group.
|
||||
(define-key *groups-map* (kbd "o") "gother")
|
||||
;; List groups.
|
||||
(define-key *groups-map* (kbd "\"") "grouplist")
|
||||
;; Move current window to specified group.
|
||||
(define-key *groups-map* (kbd "m") "gmove")
|
||||
;; Move marked windows to specified group.
|
||||
(define-key *groups-map* (kbd "m") "gmove-marked")
|
||||
;; Kill current group, moving all housed windows to the next group.
|
||||
(define-key *groups-map* (kbd "k") "gkill")
|
||||
;; Rename group.
|
||||
(define-key *groups-map* (kbd "r") "grename")
|
||||
|
||||
(fill-keymap *group-root-map*
|
||||
(kbd "C-u") "next-urgent"
|
||||
(kbd "M-n") "next"
|
||||
(kbd "M-p") "prev"
|
||||
(kbd "o") "other"
|
||||
(kbd "RET") "expose"
|
||||
(kbd "C-RET") "expose"
|
||||
(kbd "w") "windows"
|
||||
(kbd "C-w") "windows"
|
||||
(kbd "DEL") "repack-window-numbers"
|
||||
(kbd "k") "delete"
|
||||
(kbd "C-k") "delete"
|
||||
(kbd "K") "kill"
|
||||
(kbd "'") "select"
|
||||
(kbd "\"") "windowlist"
|
||||
(kbd "0") "select-window-by-number 0"
|
||||
(kbd "1") "select-window-by-number 1"
|
||||
(kbd "2") "select-window-by-number 2"
|
||||
(kbd "3") "select-window-by-number 3"
|
||||
(kbd "4") "select-window-by-number 4"
|
||||
(kbd "5") "select-window-by-number 5"
|
||||
(kbd "6") "select-window-by-number 6"
|
||||
(kbd "7") "select-window-by-number 7"
|
||||
(kbd "8") "select-window-by-number 8"
|
||||
(kbd "9") "select-window-by-number 9"
|
||||
(kbd "C-N") "number"
|
||||
(kbd "#") "mark"
|
||||
(kbd "F11") "fullscreen"
|
||||
(kbd "A") "title"
|
||||
(kbd "i") "info"
|
||||
(kbd "I") "show-window-properties")
|
||||
;; Jump to group by number using groups map.
|
||||
(define-key *groups-map* (kbd "1") "gselect 1")
|
||||
(define-key *groups-map* (kbd "2") "gselect 2")
|
||||
(define-key *groups-map* (kbd "3") "gselect 3")
|
||||
(define-key *groups-map* (kbd "4") "gselect 4")
|
||||
(define-key *groups-map* (kbd "5") "gselect 5")
|
||||
(define-key *groups-map* (kbd "6") "gselect 6")
|
||||
(define-key *groups-map* (kbd "7") "gselect 7")
|
||||
(define-key *groups-map* (kbd "8") "gselect 8")
|
||||
(define-key *groups-map* (kbd "9") "gselect 9")
|
||||
(define-key *groups-map* (kbd "0") "gselect 0")
|
||||
|
||||
(fill-keymap *tile-group-top-map*
|
||||
*escape-key* '*tile-group-root-map*)
|
||||
;; Jump to group by number using root map.
|
||||
(define-key *root-map* (kbd "F1") "gselect 1")
|
||||
(define-key *root-map* (kbd "F2") "gselect 2")
|
||||
(define-key *root-map* (kbd "F3") "gselect 3")
|
||||
(define-key *root-map* (kbd "F4") "gselect 4")
|
||||
(define-key *root-map* (kbd "F5") "gselect 5")
|
||||
(define-key *root-map* (kbd "F6") "gselect 6")
|
||||
(define-key *root-map* (kbd "F7") "gselect 7")
|
||||
(define-key *root-map* (kbd "F8") "gselect 8")
|
||||
(define-key *root-map* (kbd "F9") "gselect 9")
|
||||
(define-key *root-map* (kbd "F10") "gselect 10")
|
||||
|
||||
(fill-keymap *tile-group-root-map*
|
||||
(kbd "n") "pull-hidden-next"
|
||||
(kbd "C-n") "pull-hidden-next"
|
||||
(kbd "C-M-n") "next-in-frame"
|
||||
(kbd "SPC") "pull-hidden-next"
|
||||
(kbd "C-SPC") "pull-hidden-next"
|
||||
(kbd "p") "pull-hidden-previous"
|
||||
(kbd "C-p") "pull-hidden-previous"
|
||||
(kbd "C-M-p") "prev-in-frame"
|
||||
(kbd "P") "place-current-window"
|
||||
(kbd "W") "place-existing-windows"
|
||||
*escape-key* "pull-hidden-other"
|
||||
(kbd "M-t") "other-in-frame"
|
||||
(kbd "C-0") "pull 0"
|
||||
(kbd "C-1") "pull 1"
|
||||
(kbd "C-2") "pull 2"
|
||||
(kbd "C-3") "pull 3"
|
||||
(kbd "C-4") "pull 4"
|
||||
(kbd "C-5") "pull 5"
|
||||
(kbd "C-6") "pull 6"
|
||||
(kbd "C-7") "pull 7"
|
||||
(kbd "C-8") "pull 8"
|
||||
(kbd "C-9") "pull 9"
|
||||
(kbd "R") "remove"
|
||||
(kbd "s") "vsplit"
|
||||
(kbd "S") "hsplit"
|
||||
(kbd "r") "iresize"
|
||||
(kbd "o") "fnext"
|
||||
(kbd "TAB") "fnext"
|
||||
(kbd "M-TAB") "fother"
|
||||
(kbd "f") "fselect"
|
||||
(kbd "F") "curframe"
|
||||
(kbd "-") "fclear"
|
||||
(kbd "Q") "only"
|
||||
(kbd "X") "remove-split"
|
||||
(kbd "q") "quit-confirm"
|
||||
(kbd "Up") "move-focus up"
|
||||
(kbd "Down") "move-focus down"
|
||||
(kbd "Left") "move-focus left"
|
||||
(kbd "Right") "move-focus right"
|
||||
(kbd "M-Up") "move-window up"
|
||||
(kbd "M-Down") "move-window down"
|
||||
(kbd "M-Left") "move-window left"
|
||||
(kbd "M-Right") "move-window right"
|
||||
(kbd "+") "balance-frames"
|
||||
(kbd "l") "redisplay"
|
||||
(kbd "C-l") "redisplay")
|
||||
;;;;;;;;;;
|
||||
;; Window Exchanging
|
||||
;;;;;;;;;;
|
||||
(define-key *root-map* (kbd "x") *EXCHANGE-WINDOW-MAP*)
|
||||
(define-key *exchange-window-map* (kbd "h") "exchange-direction left")
|
||||
(define-key *exchange-window-map* (kbd "j") "exchange-direction down")
|
||||
(define-key *exchange-window-map* (kbd "k") "exchange-direction up")
|
||||
(define-key *exchange-window-map* (kbd "l") "exchange-direction right")
|
||||
|
||||
(fill-keymap *groups-map*
|
||||
(kbd "g") "groups"
|
||||
(kbd "c") "gnew"
|
||||
(kbd "n") "gnext"
|
||||
(kbd "C-n") "gnext"
|
||||
(kbd "SPC") "gnext"
|
||||
(kbd "C-SPC") "gnext"
|
||||
(kbd "N") "gnext-with-window"
|
||||
(kbd "p") "gprev"
|
||||
(kbd "C-p") "gprev"
|
||||
(kbd "P") "gprev-with-window"
|
||||
(kbd "o") "gother"
|
||||
(kbd "'") "gselect"
|
||||
(kbd "\"") "grouplist"
|
||||
(kbd "m") "gmove"
|
||||
(kbd "M") "gmove-marked"
|
||||
(kbd "k") "gkill"
|
||||
(kbd "A") "grename"
|
||||
(kbd "r") "grename"
|
||||
(kbd "1") "gselect 1"
|
||||
(kbd "2") "gselect 2"
|
||||
(kbd "3") "gselect 3"
|
||||
(kbd "4") "gselect 4"
|
||||
(kbd "5") "gselect 5"
|
||||
(kbd "6") "gselect 6"
|
||||
(kbd "7") "gselect 7"
|
||||
(kbd "8") "gselect 8"
|
||||
(kbd "9") "gselect 9"
|
||||
(kbd "0") "gselect 10")
|
||||
(fill-keymap *exchange-window-map*
|
||||
(kbd "Up") "exchange-direction up"
|
||||
(kbd "Down") "exchange-direction down"
|
||||
(kbd "Left") "exchange-direction left"
|
||||
(kbd "Right") "exchange-direction right"
|
||||
(kbd "p") "exchange-direction up"
|
||||
(kbd "n") "exchange-direction down"
|
||||
(kbd "b") "exchange-direction left"
|
||||
(kbd "f") "exchange-direction right"
|
||||
(kbd "k") "exchange-direction up"
|
||||
(kbd "j") "exchange-direction down"
|
||||
(kbd "h") "exchange-direction left"
|
||||
(kbd "l") "exchange-direction right")
|
||||
(fill-keymap *help-map*
|
||||
(kbd "v") "describe-variable"
|
||||
(kbd "f") "describe-function"
|
||||
(kbd "k") "describe-key"
|
||||
(kbd "c") "describe-command"
|
||||
(kbd "w") "where-is")
|
||||
;;;;;;;;;;
|
||||
;; Help Map
|
||||
;;;;;;;;;;
|
||||
(define-key *root-map* (kbd "h") *HELP-MAP*)
|
||||
(define-key *help-map* (kbd "v") "describe-variable")
|
||||
(define-key *help-map* (kbd "f") "describe-function")
|
||||
(define-key *help-map* (kbd "k") "describe-key")
|
||||
(define-key *help-map* (kbd "c") "describe-command")
|
||||
(define-key *help-map* (kbd "w") "where-is")
|
||||
|
||||
;;;;;;;;;;
|
||||
;; Utility
|
||||
;;;;;;;;;;
|
||||
;; Exec any shell command.
|
||||
(define-key *root-map* (kbd "!") "exec")
|
||||
|
||||
;; Abort. (define-key *root-map* (kbd "C-g") "abort")
|
||||
|
||||
;; Send ESC. Needed for some apps on occassion.
|
||||
(define-key *root-map* (kbd "t") "send-escape")
|
||||
|
||||
;; Colon
|
||||
(define-key *root-map* (kbd ";") "colon")
|
||||
|
||||
;; Eval a lisp expression using the active stump repl.
|
||||
(define-key *root-map* (kbd ":") "eval")
|
||||
|
||||
;; Last message. View previous messages from stump.
|
||||
(define-key *root-map* (kbd "m") "last-message")
|
||||
|
||||
;; Quit with confirmation.
|
||||
(define-key *root-map* (kbd "q") "quit-confirm")
|
||||
;; Quit without confirmation.
|
||||
(define-key *root-map* (kbd "Q") "quit")
|
||||
|
||||
;; Delete window cleanly.
|
||||
(define-key *root-map* (kbd "k") "delete-window")
|
||||
;; Kill window entirely.
|
||||
(define-key *root-map* (kbd "K") "kill-window")
|
||||
|
||||
;; Go fullscreen with current window.
|
||||
(define-key *root-map* (kbd "F11") "fullscreen")
|
||||
|
||||
;; Set Window Title.
|
||||
(define-key *root-map* (kbd "T") "title")
|
||||
;; See Window Info.
|
||||
(define-key *root-map* (kbd "i") "info")
|
||||
;; See Window Properties.
|
||||
(define-key *root-map* (kbd "I") "show-window-properties")
|
||||
;; Mark window.
|
||||
(define-key *root-map* (kbd ".") "mark")
|
||||
;; Un-Mark window.
|
||||
(define-key *root-map* (kbd ",") "clear-window-marks")
|
||||
;; Pull marked windows.
|
||||
(define-key *root-map* (kbd ">") "pull-marked")
|
||||
|
|
|
|||
Loading…
Reference in a new issue