emacs/config/ui.org

6.4 KiB

UI Config

  (setq inhibit-splash-screen t
        use-dialog-box nil
        minibuffer-follows-selected-frame nil
        truncate-lines nil
        truncate-partial-width-windows nil)

  (menu-bar-mode +1)
  (global-prettify-symbols-mode +1)
  (global-display-line-numbers-mode -1)
  (tool-bar-mode -1)

  (add-hook 'prog-mode-hook #'(lambda () (display-line-numbers-mode +1)))

  (use-package which-key
    :ensure t
    :diminish
    :config (which-key-mode +1))

  (use-package page-break-lines
    :ensure t
    :diminish
    :config (global-page-break-lines-mode +1))

  (electric-pair-mode +1)
  (show-paren-mode +1)

  ;; add visual pulse when changing focus, like beacon but built-in
  ;; from from https://karthinks.com/software/batteries-included-with-emacs/
  (defun pulse-line (&rest _)
    "Pulse the current line."
    (pulse-momentary-highlight-one-line (point)))

  (dolist (command '(scroll-up-command
                     scroll-down-command
                     recenter-top-bottom
                     other-window))
    (advice-add command :after #'pulse-line))

Theme, font and nerd-icons

  (add-to-list 'initial-frame-alist '(width  . 120))
  (add-to-list 'initial-frame-alist '(height . 80))

catppuccin-theme

  (use-package catppuccin-theme
    :ensure t
    :demand
    :custom
    (catppuccin-flavour 'mocha)
    (catppuccin-italic-blockquotes t)
    (catppuccin-italic-comments t)
    (catppuccin-italic-variables nil)
    :config
    (load-theme 'catppuccin t))

modus-vivendi-tinted

Removed in favour of Catppuccin (emacs) theme, keeping here for the config options though in case I want to use it again for anything.

  ;; Theme
  (use-package modus-themes
    :disabled t
    :custom
    (modus-themes-disable-other-themes t)
    (modus-themes-to-toggle '(modus-operandi-tinted modus-vivendi-tinted))
    (modus-themes-bold-constructs t)
    (modus-themes-italic-constructs t)
    (modus-themes-org-blocks nil)
    (modus-themes-completions '((matches . (extrabold underline))
                                (selection . (semibold italic))))
    (modus-themes-headings '((1 . (1.4))
                             (2 . (1.3))
                             (3 . (1.2))
                             (agenda-date . (1.3))
                             (agenda-structure . (light 1.8))
                             (t . (1.1))))
    :config
    (modus-themes-load-theme 'modus-vivendi-tinted))

nerd-icons

  (use-package nerd-icons
    :ensure t
    :diminish
    :config (nerd-icons-set-font "Symbols Nerd Font Mono-12"))

  (use-package nerd-icons-dired
    :ensure t
    :after nerd-icons
    :diminish
    :hook (dired-mode))

  (use-package nerd-icons-ibuffer
    :ensure t
    :after nerd-icons
    :diminish
    :hook (ibuffer-mode))

  (use-package nerd-icons-completion
    :ensure t
    :after nerd-icons
    :diminish
    :config (nerd-icons-completion-mode +1))

  (use-package nerd-icons-corfu
    :ensure t
    :after (corfu nerd-icons)
    :diminish
    :config (add-to-list 'corfu-margin-formatters #'nerd-icons-corfu-formatter))

  (keymap-global-set "C-c i n" #'nerd-icons-insert)

Font ligatures

  (use-package ligature
    :ensure t
    :diminish
    :config
    (ligature-set-ligatures
     '(text-mode prog-mode org-mode)
     '("-<<" "-<" "-<-" "<--" "<---" "<<-" "<-" "->" "->>" "-->" "--->" "->-" ">-" ">>-"
       "=<<" "=<" "=<=" "<==" "<===" "<<=" "<=" "=>" "=>>" "==>" "===>" "=>=" ">=" ">>="
       "<->" "<-->" "<--->" "<---->" "<=>" "<==>" "<===>" "<====>" "::" ":::" "__"
       "<~~" "</" "</>" "/>" "~~>" "==" "!=" "/=" "~=" "<>" "===" "!==" "!===" "=/=" "=!="
       "<:" ":=" "*=" "*+" "<*" "<*>" "*>" "<|" "<|>" "|>" "<." "<.>" ".>" "+*" "=*" "=:" ":>"
       "(*" "*)" "/*" "*/" "[|" "|]" "{|" "|}" "++" "+++" "\\/" "/\\" "|-" "-|" "<!--" "<!---"))
    (global-ligature-mode +1))

Whitespace mode

  (use-package whitespace
    :init
    (global-whitespace-mode +1)
    :custom
    (whitespace-style '(face
                        empty
                        trailing
                        tab-mark
                        indentation::space))
    (whitespace-action '(report-on-bogus
                         cleanup
                         auto-cleanup)))

Notifications

  (use-package alert
    :ensure t
    :diminish
    :custom
    (alert-default-style 'libnotify))

Modeline

  (line-number-mode -1)
  (column-number-mode -1)
  (size-indication-mode -1)
  (display-battery-mode -1)
  (display-time-mode -1)

  (setq mode-line-compact 'long)

doom-modeline

  (use-package doom-modeline
    :ensure t
    :demand
    :custom
    (doom-modeline-checker-simple-format nil)
    (doom-modeline-enable-word-count t)
    (doom-modeline-env-version t)
    (doom-modeline-github nil)
    (doom-modeline-gnus t)
    (doom-modeline-mu4e nil)       ; Built-in implementation looks nicer
    (doom-modeline-icon t)
    (doom-modeline-irc t)
    (doom-modeline-lsp t)
    (doom-modeline-project-detection 'project)
    (doom-modeline-continuous-word-count-modes '(org-mode
                                                 markdown-mode
                                                 gfm-mode))
    :config
    (doom-modeline-mode +1))

Battery state for laptops

  (require 'battery)
  (when (and battery-status-function
             (not ( string-match-p "unknown"
                    ( battery-format "%B"
                      (funcall battery-status-function)))))
    (display-battery-mode +1))

Zone

  (use-package zone
    :ensure t
    :diminish
    :config (zone-when-idle (* 60 60))) ; 1 hour

Git status in fringe

  (use-package diff-hl
    :ensure t
    :diminish
    :init
    (add-hook 'magit-pre-refresh-hook #'diff-hl-magit-pre-refresh)
    (add-hook 'magit-post-refresh-hook #'diff-hl-magit-post-refresh)
    :config
    (global-diff-hl-mode)
    :custom
    (diff-hl-disable-on-remote t)
    (diff-hl-draw-borders nil))