diff options
| author | gzj <0x7c00zeno@gmail.com> | 2021-03-03 09:01:06 +0800 |
|---|---|---|
| committer | gzj <0x7c00zeno@gmail.com> | 2021-03-03 09:01:06 +0800 |
| commit | c14ab0580c549ea11f5d23fbb948c83297d68578 (patch) | |
| tree | ef8a86adc94c66d944bec08df3bf2cacb71a8e50 | |
| parent | 697d95f24e055eb9725781d179d7db63d6afd2b5 (diff) | |
add persp-switch-by-number command.
| -rw-r--r-- | README.md | 1 | ||||
| -rw-r--r-- | perspective.el | 73 |
2 files changed, 74 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..774bd40 100644 --- a/perspective.el +++ b/perspective.el @@ -292,6 +292,17 @@ 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") 'persp-switch-1) +(define-key perspective-map (kbd "2") 'persp-switch-2) +(define-key perspective-map (kbd "3") 'persp-switch-3) +(define-key perspective-map (kbd "4") 'persp-switch-4) +(define-key perspective-map (kbd "5") 'persp-switch-5) +(define-key perspective-map (kbd "6") 'persp-switch-6) +(define-key perspective-map (kbd "7") 'persp-switch-7) +(define-key perspective-map (kbd "8") 'persp-switch-8) +(define-key perspective-map (kbd "9") 'persp-switch-9) +(define-key perspective-map (kbd "0") 'persp-switch-10) (defun perspectives-hash (&optional frame) "Return a hash containing all perspectives in FRAME. @@ -638,6 +649,68 @@ 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 "nEnter your num:") + (let ((counter 0) + (persp-seq (frame-parameter nil 'persp--modestring))) + (dolist (n persp-seq) + (if (eq (text-properties-at 0 n) nil) + () + (setq counter (+ counter 1)) + (if (eq counter num) + (persp-switch n)))))) + +(defun persp-switch-1 () + "Switch to perspective 1." + (interactive) + (persp-switch-by-number 1)) + +(defun persp-switch-2 () + "Switch to perspective 2." + (interactive) + (persp-switch-by-number 2)) + +(defun persp-switch-3 () + "Switch to perspective 3." + (interactive) + (persp-switch-by-number 3)) + +(defun persp-switch-4 () + "Switch to perspective 4." + (interactive) + (persp-switch-by-number 4)) + +(defun persp-switch-5 () + "Switch to perspective 5." + (interactive) + (persp-switch-by-number 5)) + +(defun persp-switch-6 () + "Switch to perspective 6." + (interactive) + (persp-switch-by-number 6)) + +(defun persp-switch-7 () + "Switch to perspective 7." + (interactive) + (persp-switch-by-number 7)) + +(defun persp-switch-8 () + "Switch to perspective 8." + (interactive) + (persp-switch-by-number 8)) + +(defun persp-switch-9 () + "Switch to perspective 9." + (interactive) + (persp-switch-by-number 9)) + +(defun persp-switch-10 () + "Switch to perspective 10." + (interactive) + (persp-switch-by-number 10)) + (defun persp-activate (persp) "Activate the perspective given by the persp struct PERSP." (check-persp persp) |
