General cleanup + docstring updates

This commit is contained in:
Henrik Lissner 2017-04-11 08:31:00 -04:00
parent 78eb9b888c
commit 2aac675978
2 changed files with 19 additions and 10 deletions

View file

@ -393,6 +393,7 @@ the command buffer."
'(" *Agenda Commands*" :noselect t) '(" *Agenda Commands*" :noselect t)
'("^\\*Org Agenda" :regexp t :size 30) '("^\\*Org Agenda" :regexp t :size 30)
'("*Org Clock*" :noselect t) '("*Org Clock*" :noselect t)
'("^\\*Org Src" :regexp t :size 0.5 :noesc t)
'("*Edit Formulas*" :size 10) '("*Edit Formulas*" :size 10)
'("^\\*Org-Babel" :regexp t :size 0.4) '("^\\*Org-Babel" :regexp t :size 0.4)
'("^CAPTURE.*\\.org$" :regexp t :size 20)) '("^CAPTURE.*\\.org$" :regexp t :size 20))
@ -419,7 +420,7 @@ the command buffer."
;; manipulating the same buffer. Since it never gets killed, we need to ;; manipulating the same buffer. Since it never gets killed, we need to
;; treat it specially and clean up after it manually. ;; treat it specially and clean up after it manually.
(defun doom*org-src-switch-to-buffer (&rest args) (defun doom*org-src-switch-to-buffer (&rest args)
(let ((window (doom-popup-buffer (car args) :align t :size 15 :noesc t :autokill nil))) (let ((window (doom-popup-buffer (car args))))
(set-window-dedicated-p window nil) (set-window-dedicated-p window nil)
(select-window window))) (select-window window)))
(advice-add 'org-src-switch-to-buffer :override 'doom*org-src-switch-to-buffer) (advice-add 'org-src-switch-to-buffer :override 'doom*org-src-switch-to-buffer)

View file

@ -16,9 +16,14 @@
"A hook that runs when persp loads a new session.") "A hook that runs when persp loads a new session.")
(defvar +workspaces-main "main" (defvar +workspaces-main "main"
"TODO") "The name of the primary and initial workspace, which cannot be deleted or
renamed.")
;;
;; Plugins
;;
(def-package! persp-mode :demand t (def-package! persp-mode :demand t
:config :config
(setq persp-autokill-buffer-on-remove 'kill-weak (setq persp-autokill-buffer-on-remove 'kill-weak
@ -39,10 +44,11 @@
(add-hook! 'after-init-hook (add-hook! 'after-init-hook
(persp-mode +1) (persp-mode +1)
;; The default perspective persp-mode makes (defined by `persp-nil-name') is ;; The default perspective persp-mode makes (defined by `persp-nil-name') is
;; odd and doesn't actually represent a real persp object, so buffers can't ;; special and doesn't actually represent a real persp object, so buffers
;; really be assigned to it, among other quirks. Therefore, we create a ;; can't really be assigned to it, among other quirks. We create a *real*
;; *real* main workspace to play this role. ;; main workspace to fill this role.
(persp-add-new +workspaces-main) (persp-add-new +workspaces-main)
;; Switch to it if we aren't auto-loading the last session
(unless (= persp-auto-resume-time -1) (unless (= persp-auto-resume-time -1)
(persp-frame-switch +workspaces-main))) (persp-frame-switch +workspaces-main)))
@ -55,15 +61,17 @@
(select-frame frame) (select-frame frame)
(+workspace/new) (+workspace/new)
(set-frame-parameter frame 'assoc-persp (+workspace-current-name)))) (set-frame-parameter frame 'assoc-persp (+workspace-current-name))))
;; Delete workspace associated with current frame IF it has no real buffers.
(defun +workspaces*delete-frame-and-persp (frame) (defun +workspaces*delete-frame-and-persp (frame)
"Delete workspace associated with current frame IF it has no real buffers."
(when (and (string= (or (frame-parameter frame 'assoc-persp) "") (+workspace-current-name)) (when (and (string= (or (frame-parameter frame 'assoc-persp) "") (+workspace-current-name))
(not (delq (doom-fallback-buffer) (doom-real-buffers-list)))) (not (delq (doom-fallback-buffer) (doom-real-buffers-list))))
(+workspace/delete persp-name))) (+workspace/delete persp-name)))
(add-hook 'delete-frame-functions '+workspaces*delete-frame-and-persp) (add-hook 'delete-frame-functions '+workspaces*delete-frame-and-persp)
;; Auto-add buffers when opening them. Allows a perspective-specific buffer list.
(defun +workspaces*auto-add-buffer (buffer &rest _) (defun +workspaces*auto-add-buffer (buffer &rest _)
"Auto-associate buffers with perspectives upon opening them. Allows a
perspective-specific buffer list via `doom-buffer-list'."
(when (and persp-mode (when (and persp-mode
(not persp-temporarily-display-buffer) (not persp-temporarily-display-buffer)
(doom-real-buffer-p buffer)) (doom-real-buffer-p buffer))
@ -72,18 +80,18 @@
(advice-add 'switch-to-buffer :after '+workspaces*auto-add-buffer) (advice-add 'switch-to-buffer :after '+workspaces*auto-add-buffer)
(advice-add 'display-buffer :after '+workspaces*auto-add-buffer) (advice-add 'display-buffer :after '+workspaces*auto-add-buffer)
;; Create a new workspace on project switch
(defun doom|new-workspace-on-project-change () (defun doom|new-workspace-on-project-change ()
"Create a new workspace when switching project with projectile."
(+workspace-switch (projectile-project-name) t)) (+workspace-switch (projectile-project-name) t))
(add-hook 'projectile-before-switch-project-hook 'doom|new-workspace-on-project-change) (add-hook 'projectile-before-switch-project-hook 'doom|new-workspace-on-project-change)
;; Add a hook to session loading
(defun +workspaces*reinit-popups (&rest _) (defun +workspaces*reinit-popups (&rest _)
"Runs `+workspaces-load-session-hook'."
(run-hook-with-args '+workspaces-load-session-hook (window-list))) (run-hook-with-args '+workspaces-load-session-hook (window-list)))
(advice-add 'persp-load-state-from-file :after '+workspaces*reinit-popups) (advice-add 'persp-load-state-from-file :after '+workspaces*reinit-popups)
;; Restore popups on load
(defun +workspaces|restore-popups (windows) (defun +workspaces|restore-popups (windows)
"Restore popup windows when loading a perspective from file."
(dolist (window windows) (dolist (window windows)
(when-let (plist (window-parameter window 'popup)) (when-let (plist (window-parameter window 'popup))
(with-selected-window window (with-selected-window window