diff options
| author | Constantine Vetoshev <gepardcv@gmail.com> | 2021-03-06 11:36:29 -0800 |
|---|---|---|
| committer | Constantine Vetoshev <gepardcv@gmail.com> | 2021-03-06 11:36:29 -0800 |
| commit | 541bba258cfea8a8e9d9583d71dfc3e4c59c519b (patch) | |
| tree | acab92f0d29857b1c45d490fbee4e7217e80c7bb | |
| parent | 697d95f24e055eb9725781d179d7db63d6afd2b5 (diff) | |
| parent | 0a0cd16d480b310067a3347a8d794b8499b47d61 (diff) | |
Merge branch 'GZJ-master'
| -rw-r--r-- | README.md | 1 | ||||
| -rw-r--r-- | perspective.el | 39 |
2 files changed, 40 insertions, 0 deletions
@@ -142,6 +142,7 @@ customize `persp-mode-prefix-key`. Additionally, creating a key binding for Here are the main commands defined in `persp-mode-map`: - `s` — `persp-switch`: Query a perspective to switch to, or create +- `` ` `` — `persp-switch-by-number`: Switch to perspective by number, or switch quickly through number keys `1, 2, 3.. 0` - `k` — `persp-remove-buffer`: Query a buffer to remove from current perspective - `c` — `persp-kill` : Query a perspective to kill - `r` — `persp-rename`: Rename current perspective diff --git a/perspective.el b/perspective.el index 103fe50..93c9731 100644 --- a/perspective.el +++ b/perspective.el @@ -292,6 +292,33 @@ Run with the activated perspective active.") (define-key perspective-map persp-mode-prefix-key 'persp-switch-last) (define-key perspective-map (kbd "C-s") 'persp-state-save) (define-key perspective-map (kbd "C-l") 'persp-state-load) +(define-key perspective-map (kbd "`") 'persp-switch-by-number) + +(define-key perspective-map (kbd "1") (lambda () (interactive) (persp-switch-by-number 1))) +(define-key perspective-map (kbd "2") (lambda () (interactive) (persp-switch-by-number 2))) +(define-key perspective-map (kbd "3") (lambda () (interactive) (persp-switch-by-number 3))) +(define-key perspective-map (kbd "4") (lambda () (interactive) (persp-switch-by-number 4))) +(define-key perspective-map (kbd "5") (lambda () (interactive) (persp-switch-by-number 5))) +(define-key perspective-map (kbd "6") (lambda () (interactive) (persp-switch-by-number 6))) +(define-key perspective-map (kbd "7") (lambda () (interactive) (persp-switch-by-number 7))) +(define-key perspective-map (kbd "8") (lambda () (interactive) (persp-switch-by-number 8))) +(define-key perspective-map (kbd "9") (lambda () (interactive) (persp-switch-by-number 9))) +(define-key perspective-map (kbd "0") (lambda () (interactive) (persp-switch-by-number 10))) + +(when (featurep 'which-key) + (declare-function which-key-add-keymap-based-replacements "which-key.el") + (when (fboundp 'which-key-add-keymap-based-replacements) + (which-key-add-keymap-based-replacements perspective-map + "1" "switch to 1" + "2" "switch to 2" + "3" "switch to 3" + "4" "switch to 4" + "5" "switch to 5" + "6" "switch to 6" + "7" "switch to 7" + "8" "switch to 8" + "9" "switch to 9" + "0" "switch to 10"))) (defun perspectives-hash (&optional frame) "Return a hash containing all perspectives in FRAME. @@ -638,6 +665,18 @@ If NORECORD is non-nil, do not update the (run-hooks 'persp-switch-hook)) name))) +(defun persp-switch-by-number (num) + "Switch to the perspective given by NUMBER." + (interactive "NSwitch to perspective number: ") + (let* ((persps (persp-names)) + (max-persps (length persps))) + (if (<= num max-persps) + (persp-switch (nth (- num 1) persps)) + (message "Perspective %s not available, there are only %s" num max-persps))) + ;; XXX: Have to force the modestring to update in this case, since the call + ;; inside persp-switch happens too early. + (persp-update-modestring)) + (defun persp-activate (persp) "Activate the perspective given by the persp struct PERSP." (check-persp persp) |
