2a669648aa
If persp-mode is already activated, don't re-activate it. Should fix bug where running dotspacemacs/sync-configuration-layers (SPC-f-e-R) resets all the layouts.
214 lines
9.2 KiB
EmacsLisp
214 lines
9.2 KiB
EmacsLisp
;;; packages.el --- Spacemacs Layouts Layer packages File for Spacemacs
|
||
;;
|
||
;; Copyright (c) 2012-2016 Sylvain Benner & Contributors
|
||
;;
|
||
;; Author: Sylvain Benner <sylvain.benner@gmail.com>
|
||
;; URL: https://github.com/syl20bnr/spacemacs
|
||
;;
|
||
;; This file is not part of GNU Emacs.
|
||
;;
|
||
;;; License: GPLv3
|
||
|
||
(setq spacemacs-layouts-packages
|
||
'(eyebrowse
|
||
helm
|
||
persp-mode
|
||
spaceline
|
||
swiper))
|
||
|
||
|
||
|
||
(defun spacemacs-layouts/init-eyebrowse ()
|
||
(use-package eyebrowse
|
||
:init
|
||
(progn
|
||
(setq eyebrowse-wrap-around t)
|
||
(eyebrowse-mode)
|
||
;; transient state
|
||
(spacemacs|transient-state-format-hint workspaces
|
||
spacemacs--workspaces-ts-full-hint
|
||
"\n\n
|
||
Go to^^^^^^ Actions^^
|
||
─────^^^^^^─────────────────────── ───────^^──────────────────────
|
||
[_0_,_9_]^^ nth/new workspace [_d_] close current workspace
|
||
[_C-0_,_C-9_]^^ nth/new workspace [_R_] rename current workspace
|
||
[_<tab>_]^^^^ last workspace [_?_] toggle help\n
|
||
[_l_]^^^^ layouts
|
||
[_n_/_C-l_]^^ next workspace
|
||
[_N_/_p_/_C-h_] prev workspace\n")
|
||
|
||
(spacemacs|define-transient-state workspaces
|
||
:title "Workspaces Transient State"
|
||
:hint-is-doc t
|
||
:dynamic-hint (spacemacs//workspaces-ts-hint)
|
||
:bindings
|
||
("?" spacemacs//workspaces-ts-toggle-hint)
|
||
("0" eyebrowse-switch-to-window-config-0 :exit t)
|
||
("1" eyebrowse-switch-to-window-config-1 :exit t)
|
||
("2" eyebrowse-switch-to-window-config-2 :exit t)
|
||
("3" eyebrowse-switch-to-window-config-3 :exit t)
|
||
("4" eyebrowse-switch-to-window-config-4 :exit t)
|
||
("5" eyebrowse-switch-to-window-config-5 :exit t)
|
||
("6" eyebrowse-switch-to-window-config-6 :exit t)
|
||
("7" eyebrowse-switch-to-window-config-7 :exit t)
|
||
("8" eyebrowse-switch-to-window-config-8 :exit t)
|
||
("9" eyebrowse-switch-to-window-config-9 :exit t)
|
||
("C-0" eyebrowse-switch-to-window-config-0)
|
||
("C-1" eyebrowse-switch-to-window-config-1)
|
||
("C-2" eyebrowse-switch-to-window-config-2)
|
||
("C-3" eyebrowse-switch-to-window-config-3)
|
||
("C-4" eyebrowse-switch-to-window-config-4)
|
||
("C-5" eyebrowse-switch-to-window-config-5)
|
||
("C-6" eyebrowse-switch-to-window-config-6)
|
||
("C-7" eyebrowse-switch-to-window-config-7)
|
||
("C-8" eyebrowse-switch-to-window-config-8)
|
||
("C-9" eyebrowse-switch-to-window-config-9)
|
||
("<tab>" eyebrowse-last-window-config)
|
||
("C-h" eyebrowse-prev-window-config)
|
||
("C-i" eyebrowse-last-window-config)
|
||
("C-l" eyebrowse-next-window-config)
|
||
("d" eyebrowse-close-window-config)
|
||
("l" spacemacs/layouts-transient-state/body :exit t)
|
||
("n" eyebrowse-next-window-config)
|
||
("N" eyebrowse-prev-window-config)
|
||
("p" eyebrowse-prev-window-config)
|
||
("R" spacemacs/workspaces-ts-rename :exit t)
|
||
("w" eyebrowse-switch-to-window-config :exit t))
|
||
;; note: we don't need to declare the `SPC l w' binding, it is
|
||
;; declare in the layout transient state
|
||
(spacemacs/set-leader-keys "bW" 'spacemacs/goto-buffer-workspace)
|
||
;; hooks
|
||
(add-hook 'persp-before-switch-functions
|
||
#'spacemacs/update-eyebrowse-for-perspective)
|
||
(add-hook 'eyebrowse-post-window-switch-hook
|
||
#'spacemacs/save-eyebrowse-for-perspective)
|
||
(add-hook 'persp-activated-functions
|
||
#'spacemacs/load-eyebrowse-for-perspective)
|
||
;; vim-style tab switching
|
||
(define-key evil-motion-state-map "gt" 'eyebrowse-next-window-config)
|
||
(define-key evil-motion-state-map "gT" 'eyebrowse-prev-window-config))))
|
||
|
||
|
||
|
||
(defun spacemacs-layouts/post-init-helm ()
|
||
(spacemacs/set-leader-keys
|
||
"pl" 'spacemacs/helm-persp-switch-project))
|
||
|
||
|
||
|
||
(defun spacemacs-layouts/init-persp-mode ()
|
||
(use-package persp-mode
|
||
:diminish persp-mode
|
||
:init
|
||
(progn
|
||
(setq persp-auto-resume-time (if (or dotspacemacs-auto-resume-layouts
|
||
spacemacs-force-resume-layouts)
|
||
1 -1)
|
||
persp-nil-name dotspacemacs-default-layout-name
|
||
persp-reset-windows-on-nil-window-conf nil
|
||
persp-set-last-persp-for-new-frames nil
|
||
persp-save-dir spacemacs-layouts-directory)
|
||
;; always activate persp-mode, unless it is already active (e.g. don't
|
||
;; re-activate during `dotspacemacs/sync-configuration-layers' - see
|
||
;; issues #5925 and #3875)
|
||
(unless (bound-and-true-p persp-mode)
|
||
(persp-mode))
|
||
;; layouts transient state
|
||
(spacemacs|transient-state-format-hint layouts
|
||
spacemacs--layouts-ts-full-hint
|
||
"\n\n
|
||
Go to^^^^^^ Actions^^
|
||
─────^^^^^^────────────────────────────── ───────^^──────────────────────────────────────────────────
|
||
[_0_,_9_]^^ nth/new layout [_a_]^^ add buffer
|
||
[_C-0_,_C-9_]^^ nth/new layout [_A_]^^ add all from layout
|
||
[_<tab>_]^^^^ last layout [_d_]^^ close current layout
|
||
[_b_]^^^^ buffer in layout [_D_]^^ close other layout
|
||
[_h_]^^^^ default layout [_r_]^^ remove current buffer
|
||
[_l_]^^^^ layout w/helm/ivy [_R_]^^ rename current layout
|
||
[_L_]^^^^ layouts in file [_s_/_S_] save all layouts/save by names
|
||
[_n_/_C-l_]^^ next layout [_t_]^^ show a buffer without adding it to current layout
|
||
[_N_/_p_/_C-h_] prev layout [_x_]^^ kill current w/buffers
|
||
[_o_]^^^^ custom layout [_X_]^^ kill other w/buffers
|
||
[_w_]^^^^ workspaces transient state [_?_]^^ toggle help\n")
|
||
|
||
(spacemacs|define-transient-state layouts
|
||
:title "Layouts Transient State"
|
||
:hint-is-doc t
|
||
:dynamic-hint (spacemacs//layouts-ts-hint)
|
||
:bindings
|
||
;; need to exit in case number doesn't exist
|
||
("?" spacemacs//layouts-ts-toggle-hint)
|
||
("1" spacemacs/persp-switch-to-1 :exit t)
|
||
("2" spacemacs/persp-switch-to-2 :exit t)
|
||
("3" spacemacs/persp-switch-to-3 :exit t)
|
||
("4" spacemacs/persp-switch-to-4 :exit t)
|
||
("5" spacemacs/persp-switch-to-5 :exit t)
|
||
("6" spacemacs/persp-switch-to-6 :exit t)
|
||
("7" spacemacs/persp-switch-to-7 :exit t)
|
||
("8" spacemacs/persp-switch-to-8 :exit t)
|
||
("9" spacemacs/persp-switch-to-9 :exit t)
|
||
("0" spacemacs/persp-switch-to-0 :exit t)
|
||
("C-1" spacemacs/persp-switch-to-1)
|
||
("C-2" spacemacs/persp-switch-to-2)
|
||
("C-3" spacemacs/persp-switch-to-3)
|
||
("C-4" spacemacs/persp-switch-to-4)
|
||
("C-5" spacemacs/persp-switch-to-5)
|
||
("C-6" spacemacs/persp-switch-to-6)
|
||
("C-7" spacemacs/persp-switch-to-7)
|
||
("C-8" spacemacs/persp-switch-to-8)
|
||
("C-9" spacemacs/persp-switch-to-9)
|
||
("C-0" spacemacs/persp-switch-to-0)
|
||
("<tab>" spacemacs/jump-to-last-layout)
|
||
("<return>" nil :exit t)
|
||
("C-h" persp-prev)
|
||
("C-l" persp-next)
|
||
("a" persp-add-buffer :exit t)
|
||
("A" persp-import-buffers :exit t)
|
||
("b" spacemacs/persp-helm-mini :exit t)
|
||
("d" spacemacs/layouts-ts-close)
|
||
("D" spacemacs/layouts-ts-close-other :exit t)
|
||
("h" spacemacs/layout-goto-default :exit t)
|
||
("l" spacemacs/helm-perspectives :exit t)
|
||
("L" persp-load-state-from-file :exit t)
|
||
("n" persp-next)
|
||
("N" persp-prev)
|
||
("o" spacemacs/select-custom-layout :exit t)
|
||
("p" persp-prev)
|
||
("r" persp-remove-buffer :exit t)
|
||
("R" spacemacs/layouts-ts-rename :exit t)
|
||
("s" persp-save-state-to-file :exit t)
|
||
("S" persp-save-to-file-by-names :exit t)
|
||
("t" persp-temporarily-display-buffer :exit t)
|
||
("w" spacemacs/workspaces-transient-state/body :exit t)
|
||
("x" spacemacs/layouts-ts-kill)
|
||
("X" spacemacs/layouts-ts-kill-other :exit t))
|
||
(spacemacs/set-leader-keys "l" 'spacemacs/layouts-transient-state/body)
|
||
;; custom layouts
|
||
(spacemacs|define-custom-layout "@Spacemacs"
|
||
:binding "e"
|
||
:body
|
||
(spacemacs/find-dotfile)))
|
||
:config
|
||
(progn
|
||
(defadvice persp-activate (before spacemacs//save-toggle-layout activate)
|
||
(setq spacemacs--last-selected-layout persp-last-persp-name))
|
||
(add-hook 'persp-mode-hook 'spacemacs//layout-autosave)
|
||
(spacemacs/declare-prefix "b" "persp-buffers")
|
||
(spacemacs/declare-prefix "B" "global-buffers")
|
||
;; Override SPC TAB to only change buffers in perspective
|
||
(spacemacs/set-leader-keys
|
||
"TAB" 'spacemacs/alternate-buffer-in-persp
|
||
"ba" 'persp-add-buffer
|
||
"br" 'persp-remove-buffer
|
||
"Bb" 'spacemacs-layouts/non-restricted-buffer-list))))
|
||
|
||
|
||
|
||
(defun spacemacs-layouts/post-init-spaceline ()
|
||
(setq spaceline-display-default-perspective
|
||
dotspacemacs-display-default-layout))
|
||
|
||
|
||
|
||
(defun spacemacs-layouts/post-init-swiper ()
|
||
(spacemacs/set-leader-keys "pl" 'spacemacs/ivy-persp-switch-project))
|