spacemacs/layers/+spacemacs/spacemacs-layouts/packages.el
syl20bnr c4d9ca8fba spacemacs layouts and workspaces tweaks
- add `l` to workspace transient state to go back to layout transient
  state
- remove erroneous `l` and `h` keys on layouts transient state
- unique documentation toggle for layouts and workspaces
- reformat and sort transient states documentation
2016-03-30 14:29:55 -04:00

216 lines
9.3 KiB
EmacsLisp
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

;;; 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
;; temporary switch on a fork to fix
;; https://github.com/syl20bnr/spacemacs/issues/4120
(persp-mode :location (recipe :fetcher github
:repo "syl20bnr/persp-mode.el"
:branch "fix-emacsclient-crash"))
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-hook
#'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
(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))