-
Notifications
You must be signed in to change notification settings - Fork 3
/
Copy pathjp-layouts.el
64 lines (52 loc) · 2.58 KB
/
jp-layouts.el
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
;;; jp-layouts.el --- An awesome elisp package -*- lexical-binding: t; -*-
;; Copyright (C) 2017 Jerry Peng
;; Author: Jerry Peng <[email protected]>
;;; Commentary:
;;; Code:
(require 'pretty-hydra)
(require 'eyebrowse)
(autoload 'consult-projectile-switch-project "consult-projectile")
(autoload 'projectile-project-name "projectile")
;; Switch to a project and use its name as the tag of
;; the window config
(defun jp-eyebrowse-switch-project ()
(interactive)
(let ((project-name (progn
(consult-projectile-switch-project)
(projectile-project-name))))
(when (> (length project-name) 0)
(eyebrowse-rename-window-config
(eyebrowse--get 'current-slot)
;;(shorten-directory project-name 32)
(file-name-nondirectory (directory-file-name project-name))))))
(defun jp-eyebrowse-layout-tag (slot)
(let* ((window-configs (eyebrowse--get 'window-configs))
(window-config (assoc slot window-configs))
(tag (nth 2 window-config))
(name (cond
((not tag) "") ; show nothing if it's not created yet
((= (length tag) 0) "default") ; default name if there is no tag
(t tag)))
(face (if (= slot (eyebrowse--get 'current-slot)) 'underline 'shadow)))
(propertize name 'face face)))
(defvar jp-layout--title)
(setq jp-layout--title (with-faicon "windows" "Window Layouts" 1 -0.05))
(pretty-hydra-define jp-layouts (:foreign-keys warn :quit-key "q" :title jp-layout--title)
("Actions"
(("TAB" eyebrowse-last-window-config "last")
("n" eyebrowse-next-window-config "next")
("p" eyebrowse-prev-window-config "previous")
("r" eyebrowse-rename-window-config "rename")
("x" eyebrowse-close-window-config "close"))
"Layouts"
(("1" eyebrowse-switch-to-window-config-1 (jp-eyebrowse-layout-tag 1) :exit t :width 20)
("2" eyebrowse-switch-to-window-config-2 (jp-eyebrowse-layout-tag 2) :exit t)
("3" eyebrowse-switch-to-window-config-3 (jp-eyebrowse-layout-tag 3) :exit t)
("4" eyebrowse-switch-to-window-config-4 (jp-eyebrowse-layout-tag 4) :exit t)
("5" eyebrowse-switch-to-window-config-5 (jp-eyebrowse-layout-tag 5) :exit t)
("6" eyebrowse-switch-to-window-config-6 (jp-eyebrowse-layout-tag 6) :exit t)
("7" eyebrowse-switch-to-window-config-7 (jp-eyebrowse-layout-tag 7) :exit t)
("8" eyebrowse-switch-to-window-config-8 (jp-eyebrowse-layout-tag 8) :exit t)
("9" eyebrowse-switch-to-window-config-9 (jp-eyebrowse-layout-tag 9) :exit t))))
(provide 'jp-layouts)
;;; jp-layouts.el ends here