diff --git a/modules/ui/doom-modeline/config.el b/modules/ui/doom-modeline/config.el index 35d1da731..79047b6ad 100644 --- a/modules/ui/doom-modeline/config.el +++ b/modules/ui/doom-modeline/config.el @@ -1,4 +1,4 @@ -;;; config.el --- make mode-lines sexy again +;;; ui/doom-modeline/config.el ;; all-the-icons doesn't work in the terminal, so we "disable" it. (unless (display-graphic-p) @@ -8,11 +8,29 @@ (defun all-the-icons-wicon (&rest _) "" "") (defun all-the-icons-alltheicon (&rest _) "" "")) -(after! eldoc-eval +(use-package powerline :demand t) + +(use-package all-the-icons :demand t + :when (display-graphic-p)) + +(use-package eldoc-eval :demand t + :config ;; Show eldoc in the mode-line with `eval-expression' (setq eldoc-in-minibuffer-show-fn '+doom-modeline--show-eldoc) (eldoc-in-minibuffer-mode +1)) +;; anzu and evil-anzu make it possible to display current/total in the +;; mode-line. +(use-package! evil-anzu + :init + (defun +evil*lazy-load-evil-anzu (&rest _) (require 'evil-anzu)) + (advice-add 'evil-ex-start-setup :before '+evil*lazy-load-evil-anzu) + :config + (advice-remove 'evil-ex-start-setup '+evil*lazy-load-evil-anzu) + (setq anzu-cons-mode-line-p nil + anzu-minimum-input-length 1 + anzu-search-threshold 250)) + ;;; Flash the mode-line on error ;; TODO More flexible colors (only suits dark themes) @@ -116,14 +134,6 @@ active.") ;; Bootstrap ;; -;; all-the-icons doesn't work in the terminal, so we "disable" it. -(unless (display-graphic-p) - (defun all-the-icons-octicon (&rest _) "" "") - (defun all-the-icons-faicon (&rest _) "" "") - (defun all-the-icons-fileicon (&rest _) "" "") - (defun all-the-icons-wicon (&rest _) "" "") - (defun all-the-icons-alltheicon (&rest _) "" "")) - ;; Show version string for multi-version managers like rvm, rbenv, pyenv, etc. (defvar-local +doom-modeline-env-version nil) (defvar-local +doom-modeline-env-command nil) @@ -178,7 +188,7 @@ active.") (let ((data nil) (i 0)) (setq data (make-list height (make-list width 1))) - (pl/make-xpm "percent" color color (reverse data)))))) + (pl/make-xpm "percent" color color data))))) ;; Definitely not premature optimization, I-I swear! (pl/memoize '+doom-modeline--make-xpm) @@ -433,7 +443,9 @@ lines are selected, or the NxM dimensions of a block selection." (make-variable-buffer-local 'anzu--state) (defun *anzu () "Show the match index and total number thereof. Requires `evil-anzu'." - (when (and (featurep 'evil-anzu) (evil-ex-hl-active-p 'evil-ex-search)) + (when (or (featurep 'anzu) + (and (featurep 'evil-ex-hl-active-p) + (evil-ex-hl-active-p 'evil-ex-search))) (propertize (format " %s/%d%s " anzu--current-position anzu--total-matched @@ -475,6 +487,7 @@ lines are selected, or the NxM dimensions of a block selection." 'face (if (active) 'doom-modeline-panel)))) (defun *media-info () + "TODO" (cond ((eq major-mode 'image-mode) (let ((size (image-size (image-get-display-property) :pixels))) (format " %dx%d " (car size) (cdr size)))))) @@ -486,9 +499,9 @@ lines are selected, or the NxM dimensions of a block selection." (+doom-modeline-define 'main `(:eval - (let* ((meta (concat (*macro-recording) + (let* ((meta (concat ,(if (featurep 'evil) '(*macro-recording)) (*anzu) - (*evil-substitute) + ,(if (featurep 'evil) '(*evil-substitute)) (*iedit))) (lhs (list (+doom-modeline--make-xpm (face-background (if (active) 'doom-modeline-bar @@ -499,7 +512,7 @@ lines are selected, or the NxM dimensions of a block selection." " " (*buffer-info) " %l:%c %p " - (*selection-info))) + ,(if (featurep 'evil) '(*selection-info)))) (rhs (list (*buffer-encoding) (*vc) (*major-mode) @@ -519,6 +532,22 @@ lines are selected, or the NxM dimensions of a block selection." (propertize " " 'display `((space :align-to (1- (+ right right-fringe right-margin)))))))) (+doom-modeline-define 'minimal + `(:eval + (let* ((lhs (list (+doom-modeline--make-xpm (face-background (if (active) + 'doom-modeline-bar + 'doom-modeline-inactive-bar)) + doom-modeline-height + doom-modeline-bar-width) + " " + (*buffer-info))) + (rhs (list (*media-info) + (*major-mode))) + (mid (propertize + " " 'display `((space :align-to (- (+ right right-fringe right-margin) + ,(+ 1 (string-width (format-mode-line rhs))))))))) + (list lhs mid rhs)))) + +(+doom-modeline-define 'project `(:eval (let* ((lhs (list (+doom-modeline--make-xpm (face-background (if (active) 'doom-modeline-bar diff --git a/modules/ui/doom-modeline/packages.el b/modules/ui/doom-modeline/packages.el index 9ed776216..ccaceb313 100644 --- a/modules/ui/doom-modeline/packages.el +++ b/modules/ui/doom-modeline/packages.el @@ -16,9 +16,8 @@ ;;(require 'iedit) ;;(require 'evil-multiedit) -(package! powerline :demand t) - -(package! all-the-icons :when (display-graphic-p) :demand t) - -(package! eldoc-eval :demand t) +(package! all-the-icons) +(package! eldoc-eval) +(package! evil-anzu :when (featurep 'evil)) +(package! powerline) diff --git a/modules/ui/doom/autoload.el b/modules/ui/doom/autoload.el index bc7f3d752..916c3d19d 100644 --- a/modules/ui/doom/autoload.el +++ b/modules/ui/doom/autoload.el @@ -1,4 +1,4 @@ -;;; autoload.el +;;; ui/doom/autoload.el ;;;###autoload (autoload '+doom:scratch-buffer "ui/doom/autoload" nil t) (evil-define-operator +doom:scratch-buffer (&optional beg end bang) diff --git a/modules/ui/doom/config.el b/modules/ui/doom/config.el index ae33489bd..5ace89c17 100644 --- a/modules/ui/doom/config.el +++ b/modules/ui/doom/config.el @@ -1,4 +1,4 @@ -;;; +;;; ui/doom/config.el (defvar +doom-theme 'doom-one "The color theme currently in use.") @@ -15,6 +15,7 @@ (font-spec :family "DejaVu Sans Mono" :size 12) "Fallback font for unicode glyphs.") + ;;; Set fonts (when (display-graphic-p) (with-demoted-errors "FONT ERROR: %s" @@ -27,28 +28,35 @@ (set-face-attribute 'variable-pitch nil :font +doom-variable-pitch-font)))) -;;; TODO/FIXME/NOTE highlighting in comments -(add-hook! (prog-mode emacs-lisp-mode css-mode) - (font-lock-add-keywords - nil '(("\\<\\(TODO\\(?:(.*)\\)?:?\\)\\>" 1 'warning prepend) - ("\\<\\(FIXME\\(?:(.*)\\)?:?\\)\\>" 1 'error prepend) - ("\\<\\(NOTE\\(?:(.*)\\)?:?\\)\\>" 1 'success prepend)))) - - ;;; More reliable inter-window border -;; The native border "consumes" a pixel of the fringe on righter-most splits (in -;; Yamamoto's emacs-mac at least), `window-divider' does not. Available since -;; Emacs 25.1. +;; The native border "consumes" a pixel of the fringe on righter-most splits, +;; `window-divider' does not. Available since Emacs 25.1. (setq window-divider-default-places t window-divider-default-bottom-width 0 window-divider-default-right-width 1) (window-divider-mode +1) +;; Causes a flash around the cursor when it moves across a "large" distance. +;; Usually between windows, or across files. This makes it easier to keep track +;; where your cursor is, which I find helpful on my 30" 2560x1600 display. +(use-package! beacon :demand t + :config + (beacon-mode +1) + (setq beacon-color (let ((bg (face-attribute 'highlight :background nil t))) + (if (eq bg 'unspecified) + (face-attribute 'highlight :foreground nil t) + bg)) + beacon-blink-when-buffer-changes t + beacon-blink-when-point-moves-vertically 10)) + + ;; Apply the doom-one theme from `doom-themes' for full compatibility; gives ;; Emacs a look inspired by Dark One in Atom. ;; -(after! doom-themes +(use-package! doom-themes :demand t + :load-path "~/work/plugins/emacs-doom-theme" + :config (load-theme +doom-theme t) ;; brighter source buffers @@ -64,25 +72,11 @@ (require 'doom-nlinum)) -;; Causes a flash around the cursor when it moves across a "large" distance. -;; Usually between windows, or across files. This makes it easier to keep track -;; where your cursor is, which I find helpful on my 30" 2560x1600 display. -(after! beacon - (beacon-mode +1) - (setq beacon-color (let ((bg (face-attribute 'highlight :background nil t))) - (if (eq bg 'unspecified) - (face-attribute 'highlight :foreground nil t) - bg)) - beacon-blink-when-buffer-changes t - beacon-blink-when-point-moves-vertically 10)) - - -;; Make code folding overlays look a little nicer -(after! hideshow ; built-in - (defface doom-folded-face '((t (:background "#888"))) +;; Nicer folded overlays that stand out a bit more +(after! hideshow + (defface doom-folded-face '((t (:foreground "#555" :background "#888"))) "Face to hightlight `hideshow' overlays." :group 'hideshow) - (setq hs-set-up-overlay (lambda (ov) (when (eq 'code (overlay-get ov 'hs)) @@ -94,7 +88,6 @@ (after! git-gutter-fringe ;; places the git gutter outside the margins. (setq-default fringes-outside-margins t) - ;; thin fringe bitmaps (define-fringe-bitmap 'git-gutter-fr:added [224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224 224] diff --git a/modules/ui/doom/packages.el b/modules/ui/doom/packages.el index 729be2019..2d5508a0f 100644 --- a/modules/ui/doom/packages.el +++ b/modules/ui/doom/packages.el @@ -1,9 +1,6 @@ ;; -*- no-byte-compile: t; -*- ;;; ui/doom/packages.el -(package! beacon :demand t) +(package! beacon) +(package! doom-themes) -(package! doom-themes - :ensure nil - :demand t - :load-path "~/work/plugins/emacs-doom-theme")