;;; ui.el --- Configure user interfaces. -*- lexical-binding: t; -*- ;;; Commentary: ;; * treemacs ;;; Code: ;; Directory tree. (require 'basics/package-management) (use-package treemacs :after (display-line-numbers doom-themes hl-line) :commands (my/treemacs-show-maybe) :custom ((treemacs-project-follow-cleanup t) ; Collapse projects when leaving. (treemacs-silent-refresh t)) ; No log message on refresh. :config (progn ;; (treemacs-tag-follow-mode) (make-face 'hl-line-treemacs-face) (when (>= emacs-major-version 27) (set-face-attribute 'hl-line-treemacs-face nil :extend t)) (defun my/treemacs-set-hl-line () (set (make-local-variable 'hl-line-face) 'hl-line-treemacs-face)) (defun my/treemacs-show-maybe () (when (and (>= (frame-width) 120) (file-exists-p treemacs-persist-file) (<= (length (frame-list)) 2)) (treemacs-select-window) (other-window 1)))) :bind (("" . treemacs-select-window) ; Focus treemacs. ("C-" . treemacs) ; Toggle treemacs. ("M-" . treemacs-add-and-display-current-project) (:map treemacs-mode-map ("" . treemacs-single-click-expand-action))) :hook ((treemacs-mode . my/disable-line-numbers) (treemacs-mode . my/treemacs-set-hl-line) (after-init . (lambda () (when (display-graphic-p) (my/treemacs-show-maybe)))) (server-after-make-frame . my/treemacs-show-maybe))) (use-package treemacs-projectile :demand t :after (treemacs projectile)) (use-package treemacs-magit :demand t :after (treemacs magit)) ;; Shows tabs of all visible buffers per window. (when (>= emacs-major-version 27) (use-package tab-line :defer 4 :custom-face (tab-line ((t (:inherit ruler-mode-default)))) (tab-line-tab ((t (:inherit ruler-mode-default)))) (tab-line-tab-inactive ((t (:inherit tab-line-tab)))) (tab-line-tab-current ((t (:inherit ruler-mode-fill-column)))) (tab-line-highlight ((t (:inherit tab-line-tab-current)))))) (use-package dired :straight (:type built-in) :custom (dired-listing-switches "-alv --group-directories-first")) (use-package elisp-demos :config (advice-add 'describe-function-1 :after #'elisp-demos-advice-describe-function-1)) (provide 'basics/ui) ;;; ui.el ends here