This repository has been archived on 2024-10-22. You can view files and clone it, but cannot push or open issues or pull requests.
spacemacs/layers/+window-management/eyebrowse/packages.el
2015-10-06 15:23:03 +02:00

84 lines
3.3 KiB
EmacsLisp

;;; packages.el --- Eyebrowse Layer packages File for Spacemacs
;;
;; Copyright (c) 2012-2014 Sylvain Benner
;; Copyright (c) 2014-2015 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 eyebrowse-packages '(eyebrowse))
(defun eyebrowse/init-eyebrowse ()
(use-package eyebrowse
:diminish eyebrowse-mode
:init
(progn
(setq eyebrowse-new-workspace #'spacemacs/home
eyebrowse-wrap-around t)
(eyebrowse-mode)
;; 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/workspaces-ms-rename ()
"Rename a workspace and get back to micro-state."
(interactive)
(eyebrowse-rename-window-config (eyebrowse--get 'current-slot))
(spacemacs/workspaces-micro-state))
(defun spacemacs//workspaces-ms-get-slot-name (window-config)
"Return the name for the given window-config"
(let ((slot (car window-config))
(caption (eyebrowse-format-slot window-config)))
(if (= slot current-slot)
(format "[%s]" caption)
caption)))
(defun spacemacs//workspaces-ms-documentation ()
"Return the docstring for the workspaces micro-state."
(let* ((current-slot (eyebrowse--get 'current-slot))
(window-configs (eyebrowse--get 'window-configs))
(window-config-slots (mapcar (lambda (x)
(number-to-string (car x)))
window-configs)))
(concat
"<" (if window-configs
(concat
(mapconcat 'spacemacs//workspaces-ms-get-slot-name
window-configs "> <") ">")
(when eyebrowse-display-help
(concat
"\n[0-9] to create/switch to a workspace, "
"[n] next, [p/N] previous, [TAB] back and forth, [c] close, "
"[r] rename"))))))
(spacemacs|define-micro-state workspaces
:doc (spacemacs//workspaces-ms-documentation)
:use-minibuffer t
:evil-leader "W"
:bindings
("0" eyebrowse-switch-to-window-config-0)
("1" eyebrowse-switch-to-window-config-1)
("2" eyebrowse-switch-to-window-config-2)
("3" eyebrowse-switch-to-window-config-3)
("4" eyebrowse-switch-to-window-config-4)
("5" eyebrowse-switch-to-window-config-5)
("6" eyebrowse-switch-to-window-config-6)
("7" eyebrowse-switch-to-window-config-7)
("8" eyebrowse-switch-to-window-config-8)
("9" eyebrowse-switch-to-window-config-9)
("<tab>" eyebrowse-last-window-config)
("C-i" eyebrowse-last-window-config)
("c" eyebrowse-close-window-config)
("h" eyebrowse-prev-window-config)
("l" eyebrowse-next-window-config)
("n" eyebrowse-next-window-config)
("N" eyebrowse-prev-window-config)
("p" eyebrowse-prev-window-config)
("r" spacemacs/workspaces-ms-rename :exit t)
("s" eyebrowse-switch-to-window-config :exit t)))))