Skip to content

Instantly share code, notes, and snippets.

@Alexander-Miller
Last active October 12, 2018 20:32
Show Gist options
  • Save Alexander-Miller/8e78426278a421c8fbcd9e579ee1ce0f to your computer and use it in GitHub Desktop.
Save Alexander-Miller/8e78426278a421c8fbcd9e579ee1ce0f to your computer and use it in GitHub Desktop.
(defun treemacs--get-buffer-groups ()
"Get the list of buffers, grouped by their major mode."
(->> (buffer-list)
(--reject (eq ?\ (aref (buffer-name it) 0)))
(--group-by (buffer-local-value 'major-mode it))))
(defun treemacs--visit-buffer (_)
"Switch to buffer saved in node at point."
(let* ((btn (treemacs-current-button))
(buf (button-get btn :buffer)))
(when (buffer-live-p buf)
(select-window (next-window))
(switch-to-buffer buf))))
(treemacs-define-leaf-node buffer-leaf
(treemacs-as-icon "• " 'face 'font-lock-builtin-face)
:ret-action #'treemacs--visit-buffer
:tab-action #'treemacs--visit-buffer
:mouse1-action (lambda (&rest args) (interactive) (treemacs--visit-buffer args)))
(treemacs-define-expandable-node buffer-group
:icon-open (treemacs-as-icon "- " 'face 'font-lock-string-face)
:icon-closed (treemacs-as-icon "+ " 'face 'font-lock-string-face)
:query-function (button-get btn :buffers)
:render-action
(treemacs-render-node
:icon treemacs-buffer-leaf-icon
:label-form (buffer-name item)
:state treemacs-buffer-leaf-state
:face 'font-lock-doc-face
:key-form item
:more-properties (:buffer item)))
(treemacs-define-expandable-node buffers-root
:icon-open (treemacs-as-icon "- " 'face 'font-lock-string-face)
:icon-closed (treemacs-as-icon "+ " 'face 'font-lock-string-face)
:query-function (treemacs--get-buffer-groups)
:render-action
(treemacs-render-node
:icon treemacs-icon-buffer-group-closed
:label-form (symbol-name (car item))
:state treemacs-buffer-group-closed-state
:face 'font-lock-keyword-face
:key-form (car item)
:more-properties (:buffers (cdr item)))
:root-marker t
:root-label "Buffers"
:root-face 'font-lock-type-face
:root-key-form 'Buffers)
(defun std::is-pfuture? (project)
"PROJECT."
(string= "/home/a/Documents/git/pfuture"
(treemacs-project->path project)))
(treemacs-define-project-extension
:extension #'treemacs-BUFFERS-ROOT-extension
:predicate #'std::is-pfuture?
:position 'project-start)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment