From 87577a5171ce93ad9a9896f50dc8a0242b77ba87 Mon Sep 17 00:00:00 2001 From: KemoNine Date: Mon, 25 Apr 2022 19:25:09 -0400 Subject: [PATCH] add doom modeline packages/support files --- .../doom-modeline-autoloads.el | 135 + .../doom-modeline-core.el | 1394 ++++++++ .../doom-modeline-env.el | 275 ++ .../doom-modeline-pkg.el | 15 + .../doom-modeline-segments.el | 2969 +++++++++++++++++ .../doom-modeline.el | 311 ++ .../shrink-path-autoloads.el | 22 + .../shrink-path-pkg.el | 2 + .../shrink-path-20190208.1335/shrink-path.el | 150 + common/fonts/all-the-icons.ttf | Bin 0 -> 44732 bytes common/fonts/file-icons.ttf | Bin 0 -> 489672 bytes common/fonts/fontawesome.ttf | Bin 0 -> 152796 bytes common/fonts/material-design-icons.ttf | Bin 0 -> 128180 bytes common/fonts/octicons.ttf | Bin 0 -> 52544 bytes common/fonts/weathericons.ttf | Bin 0 -> 99564 bytes .../doom-modeline-autoloads.el | 135 + .../doom-modeline-core.el | 1394 ++++++++ .../doom-modeline-env.el | 275 ++ .../doom-modeline-pkg.el | 15 + .../doom-modeline-segments.el | 2969 +++++++++++++++++ .../doom-modeline.el | 311 ++ .../shrink-path-autoloads.el | 22 + .../shrink-path-pkg.el | 2 + .../shrink-path-20190208.1335/shrink-path.el | 150 + 24 files changed, 10546 insertions(+) create mode 100644 code/elpa/doom-modeline-20220412.853/doom-modeline-autoloads.el create mode 100644 code/elpa/doom-modeline-20220412.853/doom-modeline-core.el create mode 100644 code/elpa/doom-modeline-20220412.853/doom-modeline-env.el create mode 100644 code/elpa/doom-modeline-20220412.853/doom-modeline-pkg.el create mode 100644 code/elpa/doom-modeline-20220412.853/doom-modeline-segments.el create mode 100644 code/elpa/doom-modeline-20220412.853/doom-modeline.el create mode 100644 code/elpa/shrink-path-20190208.1335/shrink-path-autoloads.el create mode 100644 code/elpa/shrink-path-20190208.1335/shrink-path-pkg.el create mode 100644 code/elpa/shrink-path-20190208.1335/shrink-path.el create mode 100644 common/fonts/all-the-icons.ttf create mode 100644 common/fonts/file-icons.ttf create mode 100644 common/fonts/fontawesome.ttf create mode 100644 common/fonts/material-design-icons.ttf create mode 100644 common/fonts/octicons.ttf create mode 100644 common/fonts/weathericons.ttf create mode 100644 org/elpa/doom-modeline-20220412.853/doom-modeline-autoloads.el create mode 100644 org/elpa/doom-modeline-20220412.853/doom-modeline-core.el create mode 100644 org/elpa/doom-modeline-20220412.853/doom-modeline-env.el create mode 100644 org/elpa/doom-modeline-20220412.853/doom-modeline-pkg.el create mode 100644 org/elpa/doom-modeline-20220412.853/doom-modeline-segments.el create mode 100644 org/elpa/doom-modeline-20220412.853/doom-modeline.el create mode 100644 org/elpa/shrink-path-20190208.1335/shrink-path-autoloads.el create mode 100644 org/elpa/shrink-path-20190208.1335/shrink-path-pkg.el create mode 100644 org/elpa/shrink-path-20190208.1335/shrink-path.el diff --git a/code/elpa/doom-modeline-20220412.853/doom-modeline-autoloads.el b/code/elpa/doom-modeline-20220412.853/doom-modeline-autoloads.el new file mode 100644 index 0000000..481641c --- /dev/null +++ b/code/elpa/doom-modeline-20220412.853/doom-modeline-autoloads.el @@ -0,0 +1,135 @@ +;;; doom-modeline-autoloads.el --- automatically extracted autoloads -*- lexical-binding: t -*- +;; +;;; Code: + +(add-to-list 'load-path (directory-file-name + (or (file-name-directory #$) (car load-path)))) + + +;;;### (autoloads nil "doom-modeline" "doom-modeline.el" (0 0 0 0)) +;;; Generated autoloads from doom-modeline.el + +(autoload 'doom-modeline-init "doom-modeline" "\ +Initialize doom mode-line." nil nil) + +(autoload 'doom-modeline-set-main-modeline "doom-modeline" "\ +Set main mode-line. +If DEFAULT is non-nil, set the default mode-line for all buffers. + +\(fn &optional DEFAULT)" nil nil) + +(autoload 'doom-modeline-set-minimal-modeline "doom-modeline" "\ +Set minimal mode-line." nil nil) + +(autoload 'doom-modeline-set-special-modeline "doom-modeline" "\ +Set special mode-line." nil nil) + +(autoload 'doom-modeline-set-project-modeline "doom-modeline" "\ +Set project mode-line." nil nil) + +(autoload 'doom-modeline-set-dashboard-modeline "doom-modeline" "\ +Set dashboard mode-line." nil nil) + +(autoload 'doom-modeline-set-vcs-modeline "doom-modeline" "\ +Set vcs mode-line." nil nil) + +(autoload 'doom-modeline-set-info-modeline "doom-modeline" "\ +Set Info mode-line." nil nil) + +(autoload 'doom-modeline-set-package-modeline "doom-modeline" "\ +Set package mode-line." nil nil) + +(autoload 'doom-modeline-set-media-modeline "doom-modeline" "\ +Set media mode-line." nil nil) + +(autoload 'doom-modeline-set-message-modeline "doom-modeline" "\ +Set message mode-line." nil nil) + +(autoload 'doom-modeline-set-pdf-modeline "doom-modeline" "\ +Set pdf mode-line." nil nil) + +(autoload 'doom-modeline-set-org-src-modeline "doom-modeline" "\ +Set org-src mode-line." nil nil) + +(autoload 'doom-modeline-set-helm-modeline "doom-modeline" "\ +Set helm mode-line. + +\(fn &rest _)" nil nil) + +(autoload 'doom-modeline-set-timemachine-modeline "doom-modeline" "\ +Set timemachine mode-line." nil nil) + +(defvar doom-modeline-mode nil "\ +Non-nil if Doom-Modeline mode is enabled. +See the `doom-modeline-mode' command +for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `doom-modeline-mode'.") + +(custom-autoload 'doom-modeline-mode "doom-modeline" nil) + +(autoload 'doom-modeline-mode "doom-modeline" "\ +Toggle doom-modeline on or off. + +This is a minor mode. If called interactively, toggle the +`Doom-Modeline mode' mode. If the prefix argument is positive, +enable the mode, and if it is zero or negative, disable the mode. + +If called from Lisp, toggle the mode if ARG is `toggle'. Enable +the mode if ARG is nil, omitted, or is a positive number. +Disable the mode if ARG is a negative number. + +To check whether the minor mode is enabled in the current buffer, +evaluate `(default-value \\='doom-modeline-mode)'. + +The mode's hook is called both when the mode is enabled and when +it is disabled. + +\(fn &optional ARG)" t nil) + +(register-definition-prefixes "doom-modeline" '("doom-modeline-mode-map")) + +;;;*** + +;;;### (autoloads nil "doom-modeline-core" "doom-modeline-core.el" +;;;;;; (0 0 0 0)) +;;; Generated autoloads from doom-modeline-core.el + +(register-definition-prefixes "doom-modeline-core" '("doom-modeline")) + +;;;*** + +;;;### (autoloads nil "doom-modeline-env" "doom-modeline-env.el" +;;;;;; (0 0 0 0)) +;;; Generated autoloads from doom-modeline-env.el + (autoload 'doom-modeline-env-setup-python "doom-modeline-env") + (autoload 'doom-modeline-env-setup-ruby "doom-modeline-env") + (autoload 'doom-modeline-env-setup-perl "doom-modeline-env") + (autoload 'doom-modeline-env-setup-go "doom-modeline-env") + (autoload 'doom-modeline-env-setup-elixir "doom-modeline-env") + (autoload 'doom-modeline-env-setup-rust "doom-modeline-env") + +(register-definition-prefixes "doom-modeline-env" '("doom-modeline-")) + +;;;*** + +;;;### (autoloads nil "doom-modeline-segments" "doom-modeline-segments.el" +;;;;;; (0 0 0 0)) +;;; Generated autoloads from doom-modeline-segments.el + +(register-definition-prefixes "doom-modeline-segments" '("doom-modeline-")) + +;;;*** + +;;;### (autoloads nil nil ("doom-modeline-pkg.el") (0 0 0 0)) + +;;;*** + +;; Local Variables: +;; version-control: never +;; no-byte-compile: t +;; no-update-autoloads: t +;; coding: utf-8 +;; End: +;;; doom-modeline-autoloads.el ends here diff --git a/code/elpa/doom-modeline-20220412.853/doom-modeline-core.el b/code/elpa/doom-modeline-20220412.853/doom-modeline-core.el new file mode 100644 index 0000000..86360f1 --- /dev/null +++ b/code/elpa/doom-modeline-20220412.853/doom-modeline-core.el @@ -0,0 +1,1394 @@ +;;; doom-modeline-core.el --- The core libraries for doom-modeline -*- lexical-binding: t; -*- + +;; Copyright (C) 2018-2020 Vincent Zhang + +;; This file is not part of GNU Emacs. + +;; +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . +;; + +;;; Commentary: +;; +;; The core libraries for doom-modeline. +;; + +;;; Code: + +(require 'cl-lib) +(require 'subr-x) +(require 'dash) +(require 'all-the-icons) +(require 'shrink-path) + + +;; +;; Compatibility +;; + +(eval-and-compile + (when (< emacs-major-version 26) + ;; Define `if-let*' and `when-let*' variants for 25 users. + (unless (fboundp 'if-let*) (defalias 'if-let* #'if-let)) + (unless (fboundp 'when-let*) (defalias 'when-let* #'when-let)))) + +;; Don’t compact font caches during GC. +(when (eq system-type 'windows-nt) + (setq inhibit-compacting-font-caches t)) + +;;`file-local-name' is introduced in 25.2.2. +(unless (fboundp 'file-local-name) + (defun file-local-name (file) + "Return the local name component of FILE. +It returns a file name which can be used directly as argument of +`process-file', `start-file-process', or `shell-command'." + (or (file-remote-p file 'localname) file))) + +;; Set correct font width for `all-the-icons' for appropriate mode-line width. +;; @see https://emacs.stackexchange.com/questions/14420/how-can-i-fix-incorrect-character-width +(defun doom-modeline--set-char-widths (alist) + "Set correct widths of icons characters in ALIST." + (while (char-table-parent char-width-table) + (setq char-width-table (char-table-parent char-width-table))) + (dolist (pair alist) + (let ((width (car pair)) + (chars (cdr pair)) + (table (make-char-table nil))) + (dolist (char chars) + (set-char-table-range table char width)) + (optimize-char-table table) + (set-char-table-parent table char-width-table) + (setq char-width-table table)))) + +(defconst doom-modeline-rhs-icons-alist + '((2 . (;; VCS + ?\xf0ac ; git-compare + ?\xf023 ; git-merge + ?\xf03f ; arrow-down + ?\xf02d ; alert + ?\xf020 ; git-branch + + ;; Checker + ?\xe611 ; do_not_disturb_alt + ?\xe5ca ; check + ?\xe192 ; access_time + ?\xe624 ; sim_card_alert + ?\xe034 ; pause + ?\xe645 ; priority_high + + ;; Minor modes + ?\xf02f ; gear + + ;; Persp + ?\xe2c7 ; folder + + ;; Preview + ?\xe8a0 ; pageview + + ;; REPL + ?\xf155 ; dollar-sign + + ;; LSP + ?\xf135 ; rocket + + ;; GitHub + ?\xf09b ; github + + ;; Debug + ?\xf188 ; bug + + ;; Mail + ?\xe0be ; email + + ;; IRC + ?\xe0c9 ; message + + ;; Battery + ?\xe939 ; battery-charging + ?\xf244 ; battery-empty + ?\xf240 ; battery-full + ?\xf242 ; battery-half + ?\xf243 ; battery-quarter + ?\xf241 ; battery-three-quarters + )))) + +(defun doom-modeline-set-char-widths (&rest _) + "Set char widths for the unicode icons." + (doom-modeline--set-char-widths doom-modeline-rhs-icons-alist)) + +(if (and (daemonp) + (not (frame-parameter nil 'client))) + (add-hook 'after-make-frame-functions #'doom-modeline-set-char-widths) + (and (display-graphic-p) (doom-modeline-set-char-widths))) + + +;; +;; Customization +;; + +(defgroup doom-modeline nil + "A minimal and modern mode-line." + :group 'mode-line + :link '(url-link :tag "Homepage" "https://github.com/seagle0128/doom-modeline")) + +(defcustom doom-modeline-support-imenu nil + "If non-nil, cause imenu to see `doom-modeline' declarations. +This is done by adjusting `lisp-imenu-generic-expression' to +include support for finding `doom-modeline-def-*' forms. + +Must be set before loading doom-modeline." + :type 'boolean + :set (lambda (_sym val) + (if val + (add-hook 'emacs-lisp-mode-hook #'doom-modeline-add-imenu) + (remove-hook 'emacs-lisp-mode-hook #'doom-modeline-add-imenu))) + :group 'doom-modeline) + +(defcustom doom-modeline-height 25 + "How tall the mode-line should be. It's only respected in GUI. +If the actual char height is larger, it respects the actual char height. +If `doom-modeline-height' is <= 0 the modeline will have default height." + :type 'integer + :group 'doom-modeline) + +(defcustom doom-modeline-bar-width 4 + "How wide the mode-line bar should be. It's only respected in GUI." + :type 'integer + :set (lambda (sym val) + (set sym (if (> val 0) val 1))) + :group 'doom-modeline) + +(defcustom doom-modeline-hud nil + "Whether to use hud instead of default bar. It's only respected in GUI." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-hud-min-height 2 + "Minimum height in pixels of the \"thumb\" of the hud. +Only respected in GUI." + :type 'integer + :set (lambda (sym val) + (set sym (if (> val 1) val 1))) + :group 'doom-modeline) + +(defcustom doom-modeline-window-width-limit 0.25 + "The limit of the window width. + +If `window-width' is smaller than the limit, some information won't be +displayed. It can be an integer or a float number. `nil' means no limit." + :type '(choice integer + float + (const :tag "Disable" nil)) + :group 'doom-modeline) + +(defcustom doom-modeline-project-detection 'auto + "How to detect the project root. + +nil means to use `default-directory'. + +The project management packages have some issues on detecting project root. +e.g. `projectile' doesn't handle symlink folders well, while `project' is +unable to handle sub-projects. +Specify another one if you encounter the issue." + :type '(choice (const :tag "Auto-detect" auto) + (const :tag "Find File in Project" ffip) + (const :tag "Projectile" projectile) + (const :tag "Built-in Project" project) + (const :tag "Disable" nil)) + :group 'doom-modeline) + +(defcustom doom-modeline-buffer-file-name-style 'auto + "Determines the style used by `doom-modeline-buffer-file-name'. + +Given ~/Projects/FOSS/emacs/lisp/comint.el + auto => emacs/lisp/comint.el (in a project) or comint.el + truncate-upto-project => ~/P/F/emacs/lisp/comint.el + truncate-from-project => ~/Projects/FOSS/emacs/l/comint.el + truncate-with-project => emacs/l/comint.el + truncate-except-project => ~/P/F/emacs/l/comint.el + truncate-upto-root => ~/P/F/e/lisp/comint.el + truncate-all => ~/P/F/e/l/comint.el + truncate-nil => ~/Projects/FOSS/emacs/lisp/comint.el + relative-from-project => emacs/lisp/comint.el + relative-to-project => lisp/comint.el + file-name => comint.el + buffer-name => comint.el<2> (uniquify buffer name)" + :type '(choice (const auto) + (const truncate-upto-project) + (const truncate-upto-project) + (const truncate-from-project) + (const truncate-with-project) + (const truncate-except-project) + (const truncate-upto-root) + (const truncate-all) + (const truncate-nil) + (const relative-from-project) + (const relative-to-project) + (const file-name) + (const buffer-name)) + :group'doom-modeline) + +(defcustom doom-modeline-icon t + "Whether display the icons in the mode-line. + +While using the server mode in GUI, should set the value explicitly." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-major-mode-icon t + "Whether display the icon for `major-mode'. + +It respects `doom-modeline-icon'." + :type 'boolean + :group'doom-modeline) + +(defcustom doom-modeline-major-mode-color-icon t + "Whether display the colorful icon for `major-mode'. + +It respects `all-the-icons-color-icons'." + :type 'boolean + :group'doom-modeline) + +(defcustom doom-modeline-buffer-state-icon t + "Whether display the icon for the buffer state. + +It respects `doom-modeline-icon'." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-buffer-modification-icon t + "Whether display the modification icon for the buffer. + +It respects `doom-modeline-icon' and `doom-modeline-buffer-state-icon'." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-unicode-fallback nil + "Whether to use unicode as a fallback (instead of ASCII) when not using icons." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-buffer-name t + "Whether display the buffer name." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-minor-modes nil + "Whether display the minor modes in the mode-line." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-enable-word-count nil + "If non-nil, a word count will be added to the selection-info modeline segment." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-continuous-word-count-modes + '(markdown-mode gfm-mode org-mode) + "Major modes in which to display word count continuously. + +It respects `doom-modeline-enable-word-count'." + :type '(repeat (symbol :tag "Major-Mode") ) + :group 'doom-modeline) + +(defcustom doom-modeline-buffer-encoding t + "Whether display the buffer encoding." + :type '(choice (const :tag "Always" t) + (const :tag "When non-default" nondefault) + (const :tag "Never" nil)) + :group 'doom-modeline) + +(defcustom doom-modeline-default-coding-system 'utf-8 + "Default coding system for `doom-modeline-buffer-encoding' `nondefault'." + :type 'coding-system + :group 'doom-modeline) + +(defcustom doom-modeline-default-eol-type 0 + "Default EOL type for `doom-modeline-buffer-encoding' `nondefault'." + :type '(choice (const :tag "Unix-style LF" 0) + (const :tag "DOS-style CRLF" 1) + (const :tag "Mac-style CR" 2)) + :group 'doom-modeline) + +(defcustom doom-modeline-indent-info nil + "Whether display the indentation information." + :type 'boolean + :group 'doom-modeline) + +;; It is based upon `editorconfig-indentation-alist' but is used to read indentation levels instead +;; of setting them. (https://github.com/editorconfig/editorconfig-emacs) +(defcustom doom-modeline-indent-alist + '((apache-mode apache-indent-level) + (awk-mode c-basic-offset) + (bpftrace-mode c-basic-offset) + (c++-mode c-basic-offset) + (c-mode c-basic-offset) + (cmake-mode cmake-tab-width) + (coffee-mode coffee-tab-width) + (cperl-mode cperl-indent-level) + (crystal-mode crystal-indent-level) + (csharp-mode c-basic-offset) + (css-mode css-indent-offset) + (d-mode c-basic-offset) + (emacs-lisp-mode lisp-indent-offset) + (enh-ruby-mode enh-ruby-indent-level) + (erlang-mode erlang-indent-level) + (ess-mode ess-indent-offset) + (f90-mode f90-associate-indent + f90-continuation-indent + f90-critical-indent + f90-do-indent + f90-if-indent + f90-program-indent + f90-type-indent) + (feature-mode feature-indent-offset + feature-indent-level) + (fsharp-mode fsharp-continuation-offset + fsharp-indent-level + fsharp-indent-offset) + (groovy-mode groovy-indent-offset) + (haskell-mode haskell-indent-spaces + haskell-indent-offset + haskell-indentation-layout-offset + haskell-indentation-left-offset + haskell-indentation-starter-offset + haskell-indentation-where-post-offset + haskell-indentation-where-pre-offset + shm-indent-spaces) + (haxor-mode haxor-tab-width) + (idl-mode c-basic-offset) + (jade-mode jade-tab-width) + (java-mode c-basic-offset) + (js-mode js-indent-level) + (js-jsx-mode js-indent-level + sgml-basic-offset) + (js2-mode js2-basic-offset) + (js2-jsx-mode js2-basic-offset + sgml-basic-offset) + (js3-mode js3-indent-level) + (json-mode js-indent-level) + (julia-mode julia-indent-offset) + (kotlin-mode kotlin-tab-width) + (latex-mode tex-indent-basic) + (lisp-mode lisp-indent-offset) + (livescript-mode livescript-tab-width) + (lua-mode lua-indent-level) + (matlab-mode matlab-indent-level) + (mips-mode mips-tab-width) + (mustache-mode mustache-basic-offset) + (nasm-mode nasm-basic-offset) + (nginx-mode nginx-indent-level) + (nxml-mode nxml-child-indent) + (objc-mode c-basic-offset) + (octave-mode octave-block-offset) + (perl-mode perl-indent-level) + (php-mode c-basic-offset) + (pike-mode c-basic-offset) + (ps-mode ps-mode-tab) + (pug-mode pug-tab-width) + (puppet-mode puppet-indent-level) + (python-mode python-indent-offset) + (ruby-mode ruby-indent-level) + (rust-mode rust-indent-offset) + (rustic-mode rustic-indent-offset) + (scala-mode scala-indent:step) + (scss-mode css-indent-offset) + (sgml-mode sgml-basic-offset) + (sh-mode sh-basic-offset + sh-indentation) + (slim-mode slim-indent-offset) + (sml-mode sml-indent-level) + (tcl-mode tcl-indent-level + tcl-continued-indent-level) + (terra-mode terra-indent-level) + (typescript-mode typescript-indent-level) + (verilog-mode verilog-indent-level + verilog-indent-level-behavioral + verilog-indent-level-declaration + verilog-indent-level-module + verilog-cexp-indent + verilog-case-indent) + (web-mode web-mode-attr-indent-offset + web-mode-attr-value-indent-offset + web-mode-code-indent-offset + web-mode-css-indent-offset + web-mode-markup-indent-offset + web-mode-sql-indent-offset + web-mode-block-padding + web-mode-script-padding + web-mode-style-padding) + (yaml-mode yaml-indent-offset)) + "Indentation retrieving variables matched to major modes used + when `doom-modeline-indent-info' is non-nil. When multiple + variables are specified for a mode, they will be tried resolved + in the given order." + :type '(alist :key-type symbol :value-type sexp) + :group 'doom-modeline) + +(defcustom doom-modeline-checker-simple-format t + "If non-nil, only display one number for checker information if applicable." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-number-limit 99 + "The maximum number displayed for notifications." + :type 'integer + :group 'doom-modeline) + +(defcustom doom-modeline-vcs-max-length 12 + "The maximum displayed length of the branch name of version control." + :type 'integer + :group 'doom-modeline) + +(defcustom doom-modeline-workspace-name t + "Whether display the workspace name. + +Non-nil to display in the mode-line." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-persp-name t + "Whether display the perspective name. + +Non-nil to display in the mode-line." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-display-default-persp-name nil + "If non nil the default perspective name is displayed in the mode-line." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-persp-icon t + "If non nil the perspective name is displayed alongside a folder icon." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-repl t + "Whether display the `repl' state. + +Non-nil to display in the mode-line." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-lsp t + "Whether display the `lsp' state. + +Non-nil to display in the mode-line." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-github nil + "Whether display the GitHub notifications. + +It requires `ghub' and `async' packages." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-github-interval 1800 ; (* 30 60) + "The interval of checking GitHub." + :type 'integer + :group 'doom-modeline) + +(defcustom doom-modeline-env-version t + "Whether display the environment version." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-modal-icon t + "Whether display the modal state icon. + +Including `evil', `overwrite', `god', `ryo' and `xah-fly-keys', etc." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-mu4e nil + "Whether display the mu4e notifications. + +It requires `mu4e-alert' package." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-gnus nil + "Whether to display notifications from gnus. + +It requires `gnus' to be setup" + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-gnus-timer 2 + "The wait time in minutes before gnus fetches mail. + +If nil, don't set up a hook." + :type 'integer + :group 'doom-modeline) + +(defcustom doom-modeline-gnus-idle nil + "Whether to wait an idle time to scan for news. + +When t, sets `doom-modeline-gnus-timer' as an idle timer. If a +number, Emacs must have been idle this given time, checked after +reach the defined timer, to fetch news. The time step can be +configured in `gnus-demon-timestep'." + :type '(choice + (boolean :tag "Set `doom-modeline-gnus-timer' as an idle timer") + (number :tag "Set a custom idle timer")) + :group 'doom-modeline) + +(defcustom doom-modeline-gnus-excluded-groups nil + "A list of groups to be excluded from the unread count. +Groups' names list in `gnus-newsrc-alist'`" + :type '(repeat string) + :group 'doom-modeline) + +(defcustom doom-modeline-irc t + "Whether display the irc notifications. + +It requires `circe' or `erc' package." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-irc-buffers nil + "Whether display the unread irc buffers." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-irc-stylize 'identity + "Function to stylize the irc buffer names." + :type 'function + :group 'doom-modeline) + + +;; +;; Faces +;; + +(defgroup doom-modeline-faces nil + "The faces of `doom-modeline'." + :group 'doom-modeline + :group 'faces + :link '(url-link :tag "Homepage" "https://github.com/seagle0128/doom-modeline")) + +(defface doom-modeline-spc-face + '((t (:inherit mode-line))) + "Face used for the white space." + :group 'doom-modeline-faces) + +(defface doom-modeline-spc-inactive-face + '((t (:inherit mode-line-inactive))) + "Face used for the inactive white space." + :group 'doom-modeline-faces) + +(defface doom-modeline-vspc-face + '((t (:inherit variable-pitch))) + "Face used for the variable white space." + :group 'doom-modeline-faces) + +(defface doom-modeline-vspc-inactive-face + '((t (:inherit (mode-line-inactive doom-modeline-vspc-face)))) + "Face used for the variable white space." + :group 'doom-modeline-faces) + +(defface doom-modeline-buffer-path + '((t (:inherit (mode-line-emphasis bold)))) + "Face used for the dirname part of the buffer path." + :group 'doom-modeline-faces) + +(defface doom-modeline-buffer-file + '((t (:inherit (mode-line-buffer-id bold)))) + "Face used for the filename part of the mode-line buffer path." + :group 'doom-modeline-faces) + +(defface doom-modeline-buffer-modified + '((t (:inherit (error bold) :background nil))) + "Face used for the 'unsaved' symbol in the mode-line." + :group 'doom-modeline-faces) + +(defface doom-modeline-buffer-major-mode + '((t (:inherit (mode-line-emphasis bold)))) + "Face used for the major-mode segment in the mode-line." + :group 'doom-modeline-faces) + +(defface doom-modeline-buffer-minor-mode + '((t (:inherit font-lock-doc-face :slant normal))) + "Face used for the minor-modes segment in the mode-line." + :group 'doom-modeline-faces) + +(defface doom-modeline-project-parent-dir + '((t (:inherit (font-lock-comment-face bold)))) + "Face used for the project parent directory of the mode-line buffer path." + :group 'doom-modeline-faces) + +(defface doom-modeline-project-dir + '((t (:inherit (font-lock-string-face bold)))) + "Face used for the project directory of the mode-line buffer path." + :group 'doom-modeline-faces) + +(defface doom-modeline-project-root-dir + '((t (:inherit (mode-line-emphasis bold)))) + "Face used for the project part of the mode-line buffer path." + :group 'doom-modeline-faces) + +(defface doom-modeline-highlight + '((t (:inherit mode-line-emphasis))) + "Face for bright segments of the mode-line." + :group 'doom-modeline-faces) + +(defface doom-modeline-panel + '((t (:inherit mode-line-highlight))) + "Face for 'X out of Y' segments, such as `anzu', `evil-substitute' and`iedit', etc." + :group 'doom-modeline-faces) + +(defface doom-modeline-host + '((t (:inherit italic))) + "Face for remote hosts in the mode-line." + :group 'doom-modeline-faces) + +(defface doom-modeline-input-method + '((t (:inherit (mode-line-emphasis bold)))) + "Face for input method in the mode-line." + :group 'doom-modeline-faces) + +(defface doom-modeline-input-method-alt + '((t (:inherit (font-lock-doc-face bold) :slant normal))) + "Alternative face for input method in the mode-line." + :group 'doom-modeline-faces) + +(defface doom-modeline-debug + '((t (:inherit (font-lock-doc-face bold) :slant normal))) + "Face for debug-level messages in the mode-line. Used by vcs, checker, etc." + :group 'doom-modeline-faces) + +(defface doom-modeline-info + '((t (:inherit (success bold)))) + "Face for info-level messages in the mode-line. Used by vcs, checker, etc." + :group 'doom-modeline-faces) + +(defface doom-modeline-warning + '((t (:inherit (warning bold)))) + "Face for warnings in the mode-line. Used by vcs, checker, etc." + :group 'doom-modeline-faces) + +(defface doom-modeline-urgent + '((t (:inherit (error bold)))) + "Face for errors in the mode-line. Used by vcs, checker, etc." + :group 'doom-modeline-faces) + +(defface doom-modeline-notification + '((t (:inherit doom-modeline-warning))) + "Face for notifications in the mode-line. Used by GitHub, mu4e, +etc. (also see the face `doom-modeline-unread-number')." + :group 'doom-modeline-faces) + +(defface doom-modeline-unread-number + '((t (:slant italic :weight normal))) + "Face for unread number in the mode-line. Used by GitHub, mu4e, etc." + :group 'doom-modeline-faces) + +(defface doom-modeline-bar + '((t (:inherit highlight))) + "The face used for the left-most bar in the mode-line of an active window." + :group 'doom-modeline-faces) + +(defface doom-modeline-bar-inactive + `((t (:background ,(face-foreground 'mode-line-inactive)))) + "The face used for the left-most bar in the mode-line of an inactive window." + :group 'doom-modeline-faces) + +(defface doom-modeline-debug-visual + `((((class color) (background light)) + (:background ,(face-foreground 'all-the-icons-orange))) + (((class color) (background dark)) + (:background ,(face-foreground 'all-the-icons-dorange)))) + "Face to use for the mode-line while debugging." + :group 'doom-modeline) + +(defface doom-modeline-evil-emacs-state + '((t (:inherit (font-lock-builtin-face bold)))) + "Face for the Emacs state tag in evil state indicator." + :group 'doom-modeline-faces) + +(defface doom-modeline-evil-insert-state + '((t (:inherit (font-lock-keyword-face bold)))) + "Face for the insert state tag in evil state indicator." + :group 'doom-modeline-faces) + +(defface doom-modeline-evil-motion-state + '((t :inherit (font-lock-doc-face bold) :slant normal)) + "Face for the motion state tag in evil state indicator." + :group 'doom-modeline-faces) + +(defface doom-modeline-evil-normal-state + '((t (:inherit doom-modeline-info))) + "Face for the normal state tag in evil state indicator." + :group 'doom-modeline-faces) + +(defface doom-modeline-evil-operator-state + '((t (:inherit doom-modeline-buffer-file))) + "Face for the operator state tag in evil state indicator." + :group 'doom-modeline-faces) + +(defface doom-modeline-evil-visual-state + '((t (:inherit doom-modeline-warning))) + "Face for the visual state tag in evil state indicator." + :group 'doom-modeline-faces) + +(defface doom-modeline-evil-replace-state + '((t (:inherit doom-modeline-urgent))) + "Face for the replace state tag in evil state indicator." + :group 'doom-modeline-faces) + +(defface doom-modeline-persp-name + '((t (:inherit (font-lock-comment-face italic)))) + "Face for the persp name." + :group 'doom-modeline-faces) + +(defface doom-modeline-persp-buffer-not-in-persp + '((t (:inherit (font-lock-doc-face bold italic)))) + "Face for the buffers which are not in the persp." + :group 'doom-modeline-faces) + +(defface doom-modeline-repl-success + '((t (:inherit success :weight normal))) + "Face for REPL success state." + :group 'doom-modeline-faces) + +(defface doom-modeline-repl-warning + '((t (:inherit warning :weight normal))) + "Face for REPL warning state." + :group 'doom-modeline-faces) + +(defface doom-modeline-lsp-success + '((t (:inherit success :weight normal))) + "Face for LSP success state." + :group 'doom-modeline-faces) + +(defface doom-modeline-lsp-warning + '((t (:inherit warning :weight normal))) + "Face for LSP warning state." + :group 'doom-modeline-faces) + +(defface doom-modeline-lsp-error + '((t (:inherit error :weight normal))) + "Face for LSP error state." + :group 'doom-modeline-faces) + +(defface doom-modeline-lsp-running + '((t (:inherit compilation-mode-line-run :weight normal :slant normal))) + "Face for LSP running state." + :group 'doom-modeline-faces) + +(defface doom-modeline-battery-charging + '((t (:inherit success :weight normal))) + "Face for battery charging status." + :group 'doom-modeline-faces) + +(defface doom-modeline-battery-full + '((t (:inherit success :weight normal))) + "Face for battery full status." + :group 'doom-modeline-faces) + +(defface doom-modeline-battery-normal + '((t (:inherit mode-line :weight normal))) + "Face for battery normal status." + :group 'doom-modeline-faces) + +(defface doom-modeline-battery-warning + '((t (:inherit warning :weight normal))) + "Face for battery warning status." + :group 'doom-modeline-faces) + +(defface doom-modeline-battery-critical + '((t (:inherit error :weight normal))) + "Face for battery critical status." + :group 'doom-modeline-faces) + +(defface doom-modeline-battery-error + '((t (:inherit error :weight normal))) + "Face for battery error status." + :group 'doom-modeline-faces) + +(defface doom-modeline-buffer-timemachine + '((t (:inherit doom-modeline-buffer-file :slant italic))) + "Face for timemachine status." + :group 'doom-modeline-faces) + + +;; +;; Externals +;; + +(declare-function face-remap-remove-relative "face-remap") +(declare-function ffip-get-project-root-directory "ext:find-file-in-project") +(declare-function project-root "ext:project") +(declare-function projectile-project-root "ext:projectile") + + +;; +;; Utilities +;; + +(defun doom-modeline-add-font-lock () + "Fontify `doom-modeline-def-*' statements." + (font-lock-add-keywords + 'emacs-lisp-mode + '(("(\\(doom-modeline-def-.+\\)\\_> +\\(.*?\\)\\_>" + (1 font-lock-keyword-face) + (2 font-lock-constant-face))))) +(doom-modeline-add-font-lock) + +(defun doom-modeline-add-imenu () + "Add to `imenu' index." + (add-to-list + 'imenu-generic-expression + '("Modelines" + "^\\s-*(\\(doom-modeline-def-modeline\\)\\s-+\\(\\(?:\\sw\\|\\s_\\|\\s'\\|\\\\.\\)+\\)" + 2)) + (add-to-list + 'imenu-generic-expression + '("Segments" + "^\\s-*(\\(doom-modeline-def-segment\\)\\s-+\\(\\(?:\\sw\\|\\s_\\|\\\\.\\)+\\)" + 2)) + (add-to-list + 'imenu-generic-expression + '("Envs" + "^\\s-*(\\(doom-modeline-def-env\\)\\s-+\\(\\(?:\\sw\\|\\s_\\|\\\\.\\)+\\)" + 2))) + + +;; +;; Core helpers +;; + +;; FIXME #183: Force to calculate mode-line height +;; @see https://github.com/seagle0128/doom-modeline/issues/183 +;; @see https://github.com/seagle0128/doom-modeline/issues/483 +(defun doom-modeline-redisplay (&rest _) + "Call `redisplay' to trigger mode-line height calculations. + +Certain functions, including e.g. `fit-window-to-buffer', base +their size calculations on values which are incorrect if the +mode-line has a height different from that of the `default' face +and certain other calculations have not yet taken place for the +window in question. + +These calculations can be triggered by calling `redisplay' +explicitly at the appropriate time and this functions purpose +is to make it easier to do so. + +This function is like `redisplay' with non-nil FORCE argument, +but it will only trigger a redisplay when there is a non nil +`mode-line-format' and the height of the mode-line is different +from that of the `default' face. This function is intended to be +used as an advice to window creation functions." + (when (and (bound-and-true-p doom-modeline-mode) + mode-line-format + (/= (frame-char-height) (window-mode-line-height))) + (redisplay t))) +(unless (>= emacs-major-version 29) + (advice-add #'fit-window-to-buffer :before #'doom-modeline-redisplay)) + +;; Keep `doom-modeline-current-window' up-to-date +(defun doom-modeline--get-current-window (&optional frame) + "Get the current window but should exclude the child windows." + (if (and (fboundp 'frame-parent) (frame-parent frame)) + (frame-selected-window (frame-parent frame)) + (frame-selected-window frame))) + +(defvar doom-modeline-current-window (doom-modeline--get-current-window)) + +(defun doom-modeline--active () + "Whether is an active window." + (unless (and (bound-and-true-p mini-frame-frame) + (and (frame-live-p mini-frame-frame) + (frame-visible-p mini-frame-frame))) + (and doom-modeline-current-window + (eq (doom-modeline--get-current-window) doom-modeline-current-window)))) + +(defun doom-modeline-set-selected-window (&rest _) + "Set `doom-modeline-current-window' appropriately." + (let ((win (doom-modeline--get-current-window))) + (setq doom-modeline-current-window + (if (minibuffer-window-active-p win) + (minibuffer-selected-window) + win)))) + +(defun doom-modeline-unset-selected-window () + "Unset `doom-modeline-current-window' appropriately." + (setq doom-modeline-current-window nil)) + +(add-hook 'pre-redisplay-functions #'doom-modeline-set-selected-window) + +;; Ensure modeline is inactive when Emacs is unfocused (and active otherwise) +(defvar doom-modeline-remap-face-cookie nil) +(defun doom-modeline-focus () + "Focus mode-line." + (when doom-modeline-remap-face-cookie + (require 'face-remap) + (face-remap-remove-relative doom-modeline-remap-face-cookie))) +(defun doom-modeline-unfocus () + "Unfocus mode-line." + (setq doom-modeline-remap-face-cookie + (face-remap-add-relative 'mode-line 'mode-line-inactive))) + +(with-no-warnings + (if (boundp 'after-focus-change-function) + (progn + (defun doom-modeline-focus-change (&rest _) + (if (frame-focus-state) + (doom-modeline-focus) + (doom-modeline-unfocus))) + (advice-add #'handle-switch-frame :after #'doom-modeline-focus-change) + (add-function :after after-focus-change-function #'doom-modeline-focus-change)) + (progn + (add-hook 'focus-in-hook #'doom-modeline-focus) + (add-hook 'focus-out-hook #'doom-modeline-unfocus)))) + + +;; +;; Core +;; + +(defvar doom-modeline-fn-alist ()) +(defvar doom-modeline-var-alist ()) + +(defmacro doom-modeline-def-segment (name &rest body) + "Defines a modeline segment NAME with BODY and byte compiles it." + (declare (indent defun) (doc-string 2)) + (let ((sym (intern (format "doom-modeline-segment--%s" name))) + (docstring (if (stringp (car body)) + (pop body) + (format "%s modeline segment" name)))) + (cond ((and (symbolp (car body)) + (not (cdr body))) + (add-to-list 'doom-modeline-var-alist (cons name (car body))) + `(add-to-list 'doom-modeline-var-alist (cons ',name ',(car body)))) + (t + (add-to-list 'doom-modeline-fn-alist (cons name sym)) + `(progn + (fset ',sym (lambda () ,docstring ,@body)) + (add-to-list 'doom-modeline-fn-alist (cons ',name ',sym)) + ,(unless (bound-and-true-p byte-compile-current-file) + `(let (byte-compile-warnings) + (byte-compile #',sym)))))))) + +(defun doom-modeline--prepare-segments (segments) + "Prepare mode-line `SEGMENTS'." + (let (forms it) + (dolist (seg segments) + (cond ((stringp seg) + (push seg forms)) + ((symbolp seg) + (cond ((setq it (cdr (assq seg doom-modeline-fn-alist))) + (push (list :eval (list it)) forms)) + ((setq it (cdr (assq seg doom-modeline-var-alist))) + (push it forms)) + ((error "%s is not a defined segment" seg)))) + ((error "%s is not a valid segment" seg)))) + (nreverse forms))) + +(defvar doom-modeline--font-width-cache nil) +(defun doom-modeline--font-width () + "Cache the font width." + (if (display-graphic-p) + (let ((attributes (face-all-attributes 'mode-line))) + (or (cdr (assoc attributes doom-modeline--font-width-cache)) + (let ((width (window-font-width nil 'mode-line))) + (push (cons attributes width) doom-modeline--font-width-cache) + width))) + 1)) + +;; Refresh the font width after setting frame parameters +;; to ensure the font width is correct. +(defun doom-modeline-refresh-font-width-cache (&rest _) + "Refresh the font width cache." + (setq doom-modeline--font-width-cache nil) + (doom-modeline--font-width)) +(add-hook 'window-setup-hook #'doom-modeline-refresh-font-width-cache) +(add-hook 'after-make-frame-functions #'doom-modeline-refresh-font-width-cache) +(add-hook 'after-setting-font-hook #'doom-modeline-refresh-font-width-cache) +(add-hook 'server-after-make-frame-hook #'doom-modeline-refresh-font-width-cache) + +(defun doom-modeline-def-modeline (name lhs &optional rhs) + "Defines a modeline format and byte-compiles it. +NAME is a symbol to identify it (used by `doom-modeline' for retrieval). +LHS and RHS are lists of symbols of modeline segments defined with +`doom-modeline-def-segment'. + +Example: + (doom-modeline-def-modeline 'minimal + '(bar matches \" \" buffer-info) + '(media-info major-mode)) + (doom-modeline-set-modeline 'minimal t)" + (let ((sym (intern (format "doom-modeline-format--%s" name))) + (lhs-forms (doom-modeline--prepare-segments lhs)) + (rhs-forms (doom-modeline--prepare-segments rhs))) + (defalias sym + (lambda () + (list lhs-forms + (propertize + " " + 'face (if (doom-modeline--active) 'mode-line 'mode-line-inactive) + 'display `((space + :align-to + (- (+ right right-fringe right-margin scroll-bar) + ,(* (let ((width (doom-modeline--font-width))) + (or (and (= width 1) 1) + (/ width (frame-char-width) 1.0))) + (string-width + (format-mode-line (cons "" rhs-forms)))))))) + rhs-forms)) + (concat "Modeline:\n" + (format " %s\n %s" + (prin1-to-string lhs) + (prin1-to-string rhs)))))) +(put 'doom-modeline-def-modeline 'lisp-indent-function 'defun) + +(defun doom-modeline (key) + "Return a mode-line configuration associated with KEY (a symbol). +Throws an error if it doesn't exist." + (let ((fn (intern-soft (format "doom-modeline-format--%s" key)))) + (when (functionp fn) + `(:eval (,fn))))) + +(defun doom-modeline-set-modeline (key &optional default) + "Set the modeline format. Does nothing if the modeline KEY doesn't exist. +If DEFAULT is non-nil, set the default mode-line for all buffers." + (when-let ((modeline (doom-modeline key))) + (setf (if default + (default-value 'mode-line-format) + (buffer-local-value 'mode-line-format (current-buffer))) + (list "%e" modeline)))) + + +;; +;; Helpers +;; + +(defsubst doom-modeline-spc () + "Text style with whitespace." + (propertize " " 'face (if (doom-modeline--active) + 'doom-modeline-spc-face + 'doom-modeline-spc-inactive-face))) + +(defsubst doom-modeline-wspc () + "Text style with wide whitespace." + (propertize " " 'face (if (doom-modeline--active) + 'doom-modeline-spc-face + 'doom-modeline-spc-inactive-face))) + +(defsubst doom-modeline-vspc () + "Text style with icons in mode-line." + (propertize " " 'face (if (doom-modeline--active) + 'doom-modeline-vspc-face + 'doom-modeline-vspc-inactive-face))) + +(defun doom-modeline--font-height () + "Calculate the actual char height of the mode-line." + (let ((height (face-attribute 'mode-line :height))) + ;; WORKAROUND: Fix tall issue of 27 on Linux + ;; @see https://github.com/seagle0128/doom-modeline/issues/271 + (round + (* (if (or (<= doom-modeline-height 0) + (and (>= emacs-major-version 27) + (not (eq system-type 'darwin)))) + 1.0 + (if doom-modeline-icon 1.68 1.25)) + (cond ((integerp height) (/ height 10)) + ((floatp height) (* height (frame-char-height))) + (t (frame-char-height))))))) + +(defun doom-modeline--original-value (sym) + "Return the original value for SYM, if any. + +If SYM has an original value, return it in a list. Return nil +otherwise." + (let* ((orig-val-expr (get sym 'standard-value))) + (when (consp orig-val-expr) + (ignore-errors + (list + (eval (car orig-val-expr))))))) + +(defun doom-modeline-add-variable-watcher (symbol watch-function) + "Cause WATCH-FUNCTION to be called when SYMBOL is set if possible. + +See docs of `add-variable-watcher'." + (when (fboundp 'add-variable-watcher) + (add-variable-watcher symbol watch-function))) + +(defun doom-modeline-propertize-icon (icon &optional face) + "Propertize the ICON with the specified FACE. + +The face should be the first attribute, or the font family may be overridden. +So convert the face \":family XXX :height XXX :inherit XXX\" to +\":inherit XXX :family XXX :height XXX\". +See https://github.com/seagle0128/doom-modeline/issues/301." + (if (and doom-modeline-icon (display-graphic-p)) + (when-let ((props (get-text-property 0 'face icon))) + (cl-destructuring-bind (&key family height inherit &allow-other-keys) props + (propertize icon 'face `(:inherit ,(or face inherit props) + :family ,family + :height ,height)))) + (propertize icon 'face face))) + +(defun doom-modeline-icon (icon-set icon-name unicode text &rest args) + "Display icon of ICON-NAME with ARGS in mode-line. + +ICON-SET includes `octicon', `faicon', `material', `alltheicons' and `fileicon', +etc. +UNICODE is the unicode char fallback. TEXT is the ASCII char fallback. +ARGS is same as `all-the-icons-octicon' and others." + (let ((face (or (plist-get args :face) 'mode-line))) + (or + ;; Icons + (when (and (display-graphic-p) + doom-modeline-icon + icon-name + (not (string-empty-p icon-name))) + (when-let* ((func (all-the-icons--function-name icon-set)) + (icon (and (fboundp func) (apply func icon-name args)))) + (doom-modeline-propertize-icon icon face))) + ;; Unicode fallback + (and doom-modeline-unicode-fallback + unicode + (not (string-empty-p unicode)) + (char-displayable-p (string-to-char unicode)) + (propertize unicode 'face face)) + ;; ASCII text + (and text (propertize text 'face face)) + ""))) + +(defun doom-modeline--create-bar-image (face width height) + "Create the bar image. +Use FACE1 for the bar, FACE2 for the background. +WIDTH and HEIGHT are the image size in pixels." + (when (and (display-graphic-p) + (image-type-available-p 'pbm)) + (propertize + " " 'display + (let ((color (or (face-background face nil t) "None"))) + (ignore-errors + (create-image + (concat (format "P1\n%i %i\n" width height) + (make-string (* width height) ?1) + "\n") + 'pbm t :foreground color :ascent 'center)))))) + +(defun doom-modeline--create-hud-image + (face1 face2 width height top-margin bottom-margin) + "Create the hud image. +Use FACE1 for the bar, FACE2 for the background. +WIDTH and HEIGHT are the image size in pixels. +TOP-MARGIN and BOTTOM-MARGIN are the size of the margin above and below the bar, +respectively." + (when (and (display-graphic-p) + (image-type-available-p 'pbm)) + (let ((min-height (min height doom-modeline-hud-min-height))) + (unless (> (- height top-margin bottom-margin) min-height) + (let ((margin (- height min-height))) + (setq top-margin (/ (* margin top-margin) (+ top-margin bottom-margin)) + bottom-margin (- margin top-margin))))) + (propertize + " " 'display + (let ((color1 (or (face-background face1 nil t) "None")) + (color2 (or (face-background face2 nil t) "None"))) + (create-image + (concat + (format "P1\n%i %i\n" width height) + (make-string (* top-margin width) ?0) + (make-string (* (- height top-margin bottom-margin) width) ?1) + (make-string (* bottom-margin width) ?0) + "\n") + 'pbm t :foreground color1 :background color2 :ascent 'center))))) + +;; Check whether `window-total-width' is smaller than the limit +(defvar-local doom-modeline--limited-width-p nil) +(defun doom-modeline-window-size-change-function (&rest _) + "Function for `window-size-change-functions'." + (setq doom-modeline--limited-width-p + (cond + ((integerp doom-modeline-window-width-limit) + (<= (window-total-width) doom-modeline-window-width-limit)) + ((floatp doom-modeline-window-width-limit) + (<= (/ (window-total-width) (frame-width) 1.0) + doom-modeline-window-width-limit))))) + +(add-hook 'window-size-change-functions #'doom-modeline-window-size-change-function) +(add-hook 'buffer-list-update-hook #'doom-modeline-window-size-change-function) + +(defvar-local doom-modeline--project-root nil) +(defun doom-modeline--project-root () + "Get the path to the root of your project. +Return nil if no project was found." + (or doom-modeline--project-root + (setq doom-modeline--project-root + (pcase (if (eq doom-modeline-project-detection 'auto) + (cond + ((fboundp 'ffip-get-project-root-directory) 'ffip) + ((fboundp 'projectile-project-root) 'projectile) + ((fboundp 'project-current) 'project) + (t 'default)) + doom-modeline-project-detection) + ('ffip + (let ((inhibit-message t)) + (ffip-get-project-root-directory))) + ('projectile + (projectile-project-root)) + ('project + (when-let ((project (project-current))) + (expand-file-name (if (fboundp 'project-root) + (project-root project) + (cdr project))))))))) + +(defun doom-modeline-project-p () + "Check if the file is in a project." + (doom-modeline--project-root)) + +(defun doom-modeline-project-root () + "Get the path to the root of your project. +Return `default-directory' if no project was found." + (or (doom-modeline--project-root) default-directory)) + +(defun doom-modeline-buffer-file-name () + "Propertized variable `buffer-file-name' based on +`doom-modeline-buffer-file-name-style'." + (let* ((buffer-file-name (file-local-name (or (buffer-file-name (buffer-base-buffer)) ""))) + (buffer-file-truename (file-local-name + (or buffer-file-truename (file-truename buffer-file-name) ""))) + (file-name + (pcase doom-modeline-buffer-file-name-style + ('auto + (if (doom-modeline-project-p) + (doom-modeline--buffer-file-name buffer-file-name buffer-file-truename nil nil 'hide) + (propertize "%b" 'face 'doom-modeline-buffer-file))) + ('truncate-upto-project + (doom-modeline--buffer-file-name buffer-file-name buffer-file-truename 'shrink)) + ('truncate-from-project + (doom-modeline--buffer-file-name buffer-file-name buffer-file-truename nil 'shrink)) + ('truncate-with-project + (doom-modeline--buffer-file-name buffer-file-name buffer-file-truename 'shrink 'shink 'hide)) + ('truncate-except-project + (doom-modeline--buffer-file-name buffer-file-name buffer-file-truename 'shrink 'shink)) + ('truncate-upto-root + (doom-modeline--buffer-file-name-truncate buffer-file-name buffer-file-truename)) + ('truncate-all + (doom-modeline--buffer-file-name-truncate buffer-file-name buffer-file-truename t)) + ('truncate-nil + (doom-modeline--buffer-file-name buffer-file-name buffer-file-truename)) + ('relative-to-project + (doom-modeline--buffer-file-name-relative buffer-file-name buffer-file-truename)) + ('relative-from-project + (doom-modeline--buffer-file-name buffer-file-name buffer-file-truename nil nil 'hide)) + ('file-name + (propertize (file-name-nondirectory buffer-file-name) + 'face 'doom-modeline-buffer-file)) + ((or 'buffer-name _) + (propertize "%b" 'face 'doom-modeline-buffer-file))))) + (propertize (if (string-empty-p file-name) + (propertize "%b" 'face 'doom-modeline-buffer-file) + file-name) + 'mouse-face 'mode-line-highlight + 'help-echo (concat buffer-file-truename + (unless (string= (file-name-nondirectory buffer-file-truename) + (buffer-name)) + (concat "\n" (buffer-name))) + "\nmouse-1: Previous buffer\nmouse-3: Next buffer") + 'local-map mode-line-buffer-identification-keymap))) + +(defun doom-modeline--buffer-file-name-truncate (file-path true-file-path &optional truncate-tail) + "Propertized variable `buffer-file-name' that truncates every dir along path. +If TRUNCATE-TAIL is t also truncate the parent directory of the file." + (let ((dirs (shrink-path-prompt (file-name-directory true-file-path)))) + (if (null dirs) + (propertize "%b" 'face 'doom-modeline-buffer-file) + (let ((dirname (car dirs)) + (basename (cdr dirs))) + (concat (propertize (concat dirname + (if truncate-tail (substring basename 0 1) basename) + "/") + 'face 'doom-modeline-project-root-dir) + (propertize (file-name-nondirectory file-path) + 'face 'doom-modeline-buffer-file)))))) + +(defun doom-modeline--buffer-file-name-relative (_file-path true-file-path &optional include-project) + "Propertized variable `buffer-file-name' showing directories relative to +project's root only." + (let ((root (file-local-name (doom-modeline-project-root)))) + (if (null root) + (propertize "%b" 'face 'doom-modeline-buffer-file) + (let ((relative-dirs (file-relative-name (file-name-directory true-file-path) + (if include-project (concat root "../") root)))) + (and (equal "./" relative-dirs) (setq relative-dirs "")) + (concat (propertize relative-dirs 'face 'doom-modeline-buffer-path) + (propertize (file-name-nondirectory true-file-path) + 'face 'doom-modeline-buffer-file)))))) + +(defun doom-modeline--buffer-file-name (file-path + _true-file-path + &optional + truncate-project-root-parent + truncate-project-relative-path + hide-project-root-parent) + "Propertized variable `buffer-file-name' given by FILE-PATH. +If TRUNCATE-PROJECT-ROOT-PARENT is non-nil will be saved by truncating project +root parent down fish-shell style. + +Example: + ~/Projects/FOSS/emacs/lisp/comint.el => ~/P/F/emacs/lisp/comint.el + +If TRUNCATE-PROJECT-RELATIVE-PATH is non-nil will be saved by truncating project +relative path down fish-shell style. + +Example: + ~/Projects/FOSS/emacs/lisp/comint.el => ~/Projects/FOSS/emacs/l/comint.el + +If HIDE-PROJECT-ROOT-PARENT is non-nil will hide project root parent. + +Example: + ~/Projects/FOSS/emacs/lisp/comint.el => emacs/lisp/comint.el" + (let ((project-root (file-local-name (doom-modeline-project-root)))) + (concat + ;; Project root parent + (unless hide-project-root-parent + (when-let (root-path-parent + (file-name-directory (directory-file-name project-root))) + (propertize + (if (and truncate-project-root-parent + (not (string-empty-p root-path-parent)) + (not (string= root-path-parent "/"))) + (shrink-path--dirs-internal root-path-parent t) + (abbreviate-file-name root-path-parent)) + 'face 'doom-modeline-project-parent-dir))) + ;; Project directory + (propertize + (concat (file-name-nondirectory (directory-file-name project-root)) "/") + 'face 'doom-modeline-project-dir) + ;; relative path + (propertize + (when-let (relative-path (file-relative-name + (or (file-name-directory file-path) "./") + project-root)) + (if (string= relative-path "./") + "" + (if truncate-project-relative-path + (substring (shrink-path--dirs-internal relative-path t) 1) + relative-path))) + 'face 'doom-modeline-buffer-path) + ;; File name + (propertize (file-name-nondirectory file-path) + 'face 'doom-modeline-buffer-file)))) + +(provide 'doom-modeline-core) + +;;; doom-modeline-core.el ends here diff --git a/code/elpa/doom-modeline-20220412.853/doom-modeline-env.el b/code/elpa/doom-modeline-20220412.853/doom-modeline-env.el new file mode 100644 index 0000000..87c8c50 --- /dev/null +++ b/code/elpa/doom-modeline-20220412.853/doom-modeline-env.el @@ -0,0 +1,275 @@ +;;; doom-modeline-env.el --- A environment parser for doom-modeline -*- lexical-binding: t -*- + +;; Copyright (C) 2019-2020 Justin Barclay, Vincent Zhang + +;; This file is not part of GNU Emacs. + +;; +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . +;; +;;; Commentary: +;; +;; Parse programming environment. +;; + +;;; Code: + +(require 'subr-x) +(require 'doom-modeline-core) + + +;; Externals +(defvar python-shell-interpreter) + + +;; Customizations + +(defgroup doom-modeline-env nil + "The environment parser for doom-modeline." + :group 'doom-modeline + :link '(url-link :tag "Homepage" "https://github.com/seagle0128/doom-modeline")) + +(defcustom doom-modeline-env-load-string "..." + "What to display as the version while a new one is being loaded." + :type 'string + :group 'doom-modeline-env) + +(defcustom doom-modeline-before-update-env-hook nil + "Hooks that run before the modeline version string is updated." + :type 'hook + :group 'doom-modeline-env) + +(defcustom doom-modeline-after-update-env-hook nil + "Hooks that run after the modeline version string is updated." + :type 'hook + :group 'doom-modeline-env) + + +;; Variables + +;; Show version string for multi-version managers like rvm, rbenv, pyenv, etc. +(defvar-local doom-modeline-env--version nil + "The version to display with major-mode in mode-line. +Example: \"2.6.0\"") + +(defvar-local doom-modeline-env--command nil + "A program that we're looking to extract version information from. +Example: \"ruby\"") + +(defvar-local doom-modeline-env--command-args nil + "A list of arguments for the command to extract the version from. +Example: '(\"--version\") ") + +(defvar-local doom-modeline-env--parser nil + "A function that returns version number from a command --version (or similar). +Example: 'doom-modeline-env--ruby") + + +;; Functions & Macros + +(defun doom-modeline-update-env () + "Update environment info on mode-line." + (when (and doom-modeline-env-version + doom-modeline-env--command + (executable-find doom-modeline-env--command) + doom-modeline-env--command-args + doom-modeline-env--parser) + (let ((default-directory (doom-modeline-project-root)) + (buffer (current-buffer))) + (run-hooks 'doom-modeline-before-update-env-hook) + (setq doom-modeline-env--version doom-modeline-env-load-string) + (doom-modeline-env--get + doom-modeline-env--command + doom-modeline-env--command-args + (lambda (prog-version) + (with-current-buffer buffer + (setq doom-modeline-env--version + (funcall doom-modeline-env--parser prog-version)) + (run-hooks 'doom-modeline-after-update-env-hook))))))) + +(add-hook 'find-file-hook #'doom-modeline-update-env) +(with-no-warnings + (if (boundp 'after-focus-change-function) + (add-function + :after after-focus-change-function + (lambda () + (if (frame-focus-state) + (doom-modeline-update-env)))) + (add-hook 'focus-in-hook #'doom-modeline-update-env))) + +(defun doom-modeline-env--get (prog args callback) + "Start a sub process using PROG and apply the ARGS to the sub process. +Once it receives information from STDOUT, it closes off the subprocess and +passes on the information into the CALLBACK. +Example: + (doom-modeline-env--get + \"ruby\" + '(\"--version\") + (lambda (line) + (message (doom-modeline-parser--ruby line)))" + (let ((proc (apply 'start-process + ;; Flaten process-args into a single list so we can handle + ;; variadic length args + (append + (list "doom-modeline-env" nil prog) + args))) + (parser callback)) + (set-process-filter proc + (lambda (_proc line) + (ignore-errors + (funcall parser line)))))) + +(cl-defmacro doom-modeline-def-env (name &key hooks command parser) + "Defines a handler for updating & displaying a version string for a language. + +NAME is an unquoted symbol representing the handler's unique ID. +HOOKS is a list of hook symbols where this handler should be triggered. +COMMAND should be a function that returns a shell command and its arguments (as + a list). It is run on HOOKS. It takes no arguments. +PARSER should be a function for parsing COMMAND's output line-by-line, to + extract the version string." + (declare (indent defun)) + (unless (and hooks command parser) + (error "'%s' env is missing either :hooks, :command or :parser" name)) + (let ((parse-fn (intern (format "doom-modeline-env--%s-parse" name))) + (action-fn (intern (format "doom-modeline-env--%s-args" name))) + (setup-fn (intern (format "doom-modeline-env-setup-%s" name))) + (update-fn (intern (format "doom-modeline-env-update-%s" name))) + (enable-var (intern (format "doom-modeline-env-enable-%s" name))) + (command-var (intern (format "doom-modeline-env-%s-command" name))) + (parser-var (intern (format "doom-modeline-env-%s-parser-fn" name))) + (exe-var (intern (format "doom-modeline-env-%s-executable" name)))) + (macroexp-progn + `((defcustom ,enable-var t + ,(format "Whether to display the version string for %s buffers." name) + :type 'boolean + :group 'doom-modeline-env) + (defvar ,command-var ',action-fn + ,(concat "A function that returns the shell command and arguments (as a list) to\n" + "produce a version string.")) + (defvar ,parser-var ',parse-fn + ,(format "The function to parse each line of `%s'\'s output." command-var)) + (defcustom ,exe-var nil + ,(format (concat "What executable to use for the version indicator in %s buffers.\n\n" + "If nil, the default binary for this language is used.") + name) + :type 'string + :group 'doom-modeline-env) + (defalias ',parse-fn ,parser + (format "The line parser for %s buffers.\n\nUsed by `%s'." + ',name ',update-fn)) + (defalias ',action-fn ,command + (format "The command resolver for %s buffers.\n\nUsed by `%s'." + ',name ',update-fn)) + (defalias ',setup-fn + (lambda () + (if enable-local-variables + (add-hook 'hack-local-variables-hook #',update-fn nil t) + (,update-fn))) + (format "Prepares the modeline to later display the %s version string." + ',name)) + (defalias ',update-fn + (lambda () + (when ,enable-var + (when-let* ((command-list (funcall ,command-var)) + (exe (executable-find (car command-list)))) + (setq doom-modeline-env--command exe + doom-modeline-env--command-args (cdr command-list) + doom-modeline-env--parser ,parser-var) + (doom-modeline-update-env)))) + (format "Updates the %s version string in the modeline." ',name)) + (let ((hooks ',(eval hooks))) + (dolist (hook (if (listp hooks) hooks (list hooks))) + (add-hook hook #',setup-fn))))))) + + +;; Bootstrap +;; Versions, support Python, Ruby, Perl and Golang, etc. + +;;;###autoload (autoload 'doom-modeline-env-setup-python "doom-modeline-env") +(doom-modeline-def-env python + :hooks 'python-mode-hook + :command (lambda () (cond ((and (fboundp 'pipenv-project-p) + (pipenv-project-p)) + (list "pipenv" "run" + (or doom-modeline-env-python-executable + python-shell-interpreter + "python") + "--version")) + ((executable-find "pyenv") (list "pyenv" "version-name")) + ((list (or doom-modeline-env-python-executable + python-shell-interpreter + "python") + "--version")))) + :parser (lambda (line) (let ((version (split-string line))) + (if (>= (length version) 2) + (cadr version) + (car version))))) + +;;;###autoload (autoload 'doom-modeline-env-setup-ruby "doom-modeline-env") +(doom-modeline-def-env ruby + :hooks '(ruby-mode-hook enh-ruby-mode-hook) + :command (lambda () (list (or doom-modeline-env-ruby-executable "ruby") "--version")) + :parser (lambda (line) + (car (split-string + (cadr + (split-string line)) + "p")))) + +;;;###autoload (autoload 'doom-modeline-env-setup-perl "doom-modeline-env") +(doom-modeline-def-env perl + :hooks 'perl-mode-hook + :command (lambda () (list (or doom-modeline-env-perl-executable "perl") "--version")) + :parser (lambda (line) + (cadr + (split-string + (car + (split-string + (cadr + (split-string line "(")) + ")")) + "v")))) + +;;;###autoload (autoload 'doom-modeline-env-setup-go "doom-modeline-env") +(doom-modeline-def-env go + :hooks 'go-mode-hook + :command (lambda () (list (or doom-modeline-env-go-executable "go") "version")) + :parser (lambda (line) + (cadr + (split-string + (cadr + (cdr + (split-string line))) + "go")))) + +;;;###autoload (autoload 'doom-modeline-env-setup-elixir "doom-modeline-env") +(doom-modeline-def-env elixir + :hooks 'elixir-mode-hook + :command (lambda () (list (or doom-modeline-env-elixir-executable "elixir") "--version")) + :parser (lambda (line) (cadr (split-string line)))) + +;;;###autoload (autoload 'doom-modeline-env-setup-rust "doom-modeline-env") +(doom-modeline-def-env rust + :hooks 'rust-mode-hook + :command (lambda () (list (or doom-modeline-env-rust-executable "rustc") "--version")) + :parser (lambda (line) + (car + (split-string + (cadr + (split-string line)) + "-")))) + +(provide 'doom-modeline-env) + +;;; doom-modeline-env.el ends here diff --git a/code/elpa/doom-modeline-20220412.853/doom-modeline-pkg.el b/code/elpa/doom-modeline-20220412.853/doom-modeline-pkg.el new file mode 100644 index 0000000..c289f03 --- /dev/null +++ b/code/elpa/doom-modeline-20220412.853/doom-modeline-pkg.el @@ -0,0 +1,15 @@ +(define-package "doom-modeline" "20220412.853" "A minimal and modern mode-line" + '((emacs "25.1") + (all-the-icons "2.2.0") + (shrink-path "0.2.0") + (dash "2.11.0")) + :commit "7d8eb7c44087a62d8dd6e8ba1afc26facd914fbc" :authors + '(("Vincent Zhang" . "seagle0128@gmail.com")) + :maintainer + '("Vincent Zhang" . "seagle0128@gmail.com") + :keywords + '("faces" "mode-line") + :url "https://github.com/seagle0128/doom-modeline") +;; Local Variables: +;; no-byte-compile: t +;; End: diff --git a/code/elpa/doom-modeline-20220412.853/doom-modeline-segments.el b/code/elpa/doom-modeline-20220412.853/doom-modeline-segments.el new file mode 100644 index 0000000..d0970d1 --- /dev/null +++ b/code/elpa/doom-modeline-20220412.853/doom-modeline-segments.el @@ -0,0 +1,2969 @@ +;;; doom-modeline-segments.el --- The segments for doom-modeline -*- lexical-binding: t; -*- + +;; Copyright (C) 2018-2020 Vincent Zhang + +;; This file is not part of GNU Emacs. + +;; +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . +;; + +;;; Commentary: +;; +;; The segments for doom-modeline. +;; Use `doom-modeline-def-segment' to create a new segment. +;; + +;;; Code: + +(require 'all-the-icons) +(require 'cl-lib) +(require 'seq) +(require 'subr-x) +(require 'doom-modeline-core) +(require 'doom-modeline-env) + + +;; +;; Externals +;; + +(defvar Info-current-file) +(defvar Info-current-node) +(defvar Info-mode-line-node-keymap) +(defvar anzu--cached-count) +(defvar anzu--current-position) +(defvar anzu--overflow-p) +(defvar anzu--state) +(defvar anzu--total-matched) +(defvar anzu-cons-mode-line-p) +(defvar aw-keys) +(defvar battery-echo-area-format) +(defvar battery-load-critical) +(defvar battery-mode-line-format) +(defvar battery-mode-line-limit) +(defvar battery-status-function) +(defvar boon-command-state) +(defvar boon-insert-state) +(defvar boon-off-state) +(defvar boon-special-state) +(defvar edebug-execution-mode) +(defvar eglot--managed-mode) +(defvar erc-modified-channels-alist) +(defvar evil-ex-active-highlights-alist) +(defvar evil-ex-argument) +(defvar evil-ex-range) +(defvar evil-mc-frozen) +(defvar evil-state) +(defvar evil-visual-beginning) +(defvar evil-visual-end) +(defvar evil-visual-selection) +(defvar flycheck-current-errors) +(defvar flycheck-mode-menu-map) +(defvar flymake--mode-line-format) +(defvar flymake--state) +(defvar flymake-menu) +(defvar gnus-newsrc-alist) +(defvar gnus-newsrc-hashtb) +(defvar grip--process) +(defvar helm--mode-line-display-prefarg) +(defvar iedit-occurrences-overlays) +(defvar meow--indicator) +(defvar minions-direct) +(defvar minions-mode-line-lighter) +(defvar minions-mode-line-minor-modes-map) +(defvar mlscroll-minimum-current-width) +(defvar mlscroll-right-align) +(defvar mu4e-alert-mode-line) +(defvar mu4e-alert-modeline-formatter) +(defvar nyan-minimum-window-width) +(defvar objed--obj-state) +(defvar objed--object) +(defvar objed-modeline-setup-func) +(defvar persp-nil-name) +(defvar phi-replace--mode-line-format) +(defvar phi-search--selection) +(defvar phi-search-mode-line-format) +(defvar poke-line-minimum-window-width) +(defvar rcirc-activity) +(defvar sml-modeline-len) +(defvar symbol-overlay-keywords-alist) +(defvar symbol-overlay-temp-symbol) +(defvar text-scale-mode-amount) +(defvar tracking-buffers) +(defvar winum-auto-setup-mode-line) +(defvar xah-fly-insert-state-p) + +(declare-function anzu--reset-status "ext:anzu") +(declare-function anzu--where-is-here "ext:anzu") +(declare-function async-inject-variables "ext:async") +(declare-function async-start "ext:async") +(declare-function avy-traverse "ext:avy") +(declare-function avy-tree "ext:avy") +(declare-function aw-update "ext:ace-window") +(declare-function aw-window-list "ext:ace-window") +(declare-function battery-format "battery") +(declare-function battery-update "battery") +(declare-function boon-modeline-string "ext:boon") +(declare-function boon-state-string "ext:boon") +(declare-function cider--connection-info "ext:cider") +(declare-function cider-connected-p "ext:cider") +(declare-function cider-current-repl "ext:cider") +(declare-function cider-jack-in "ext:cider") +(declare-function cider-quit "ext:cider") +(declare-function citre-mode "ext:citre-basic-tools") +(declare-function dap--cur-session "ext:dap-mode") +(declare-function dap--debug-session-name "ext:dap-mode") +(declare-function dap--debug-session-state "ext:dap-mode") +(declare-function dap--session-running "ext:dap-mode") +(declare-function dap-debug-recent "ext:dap-mode") +(declare-function dap-disconnect "ext:dap-mode") +(declare-function dap-hydra "ext:dap-hydra") +(declare-function edebug-help "edebug") +(declare-function edebug-next-mode "edebug") +(declare-function edebug-stop "edebug") +(declare-function eglot "ext:eglot") +(declare-function eglot--major-mode "ext:eglot" t t) +(declare-function eglot--project-nickname "ext:eglot" t t) +(declare-function eglot--spinner "ext:eglot" t t) +(declare-function eglot-clear-status "ext:eglot") +(declare-function eglot-current-server "ext:eglot") +(declare-function eglot-events-buffer "ext:eglot") +(declare-function eglot-forget-pending-continuations "ext:eglot") +(declare-function eglot-managed-p "ext:glot") +(declare-function eglot-reconnect "ext:eglot") +(declare-function eglot-shutdown "ext:eglot") +(declare-function eglot-stderr-buffer "ext:eglot") +(declare-function erc-switch-to-buffer "erc") +(declare-function erc-track-switch-buffer "erc-track") +(declare-function evil-delimited-arguments "ext:evil-common") +(declare-function evil-emacs-state-p "ext:evil-states" t t) +(declare-function evil-force-normal-state "ext:evil-commands" t t) +(declare-function evil-insert-state-p "ext:evil-states" t t) +(declare-function evil-motion-state-p "ext:evil-states" t t) +(declare-function evil-normal-state-p "ext:evil-states" t t) +(declare-function evil-operator-state-p "ext:evil-states" t t) +(declare-function evil-replace-state-p "ext:evil-states" t t) +(declare-function evil-state-property "ext:evil-common") +(declare-function evil-visual-state-p "ext:evil-states" t t) +(declare-function eyebrowse--get "ext:eyebrowse") +(declare-function face-remap-remove-relative "face-remap") +(declare-function fancy-narrow-active-p "ext:fancy-narrow") +(declare-function flycheck-buffer "ext:flycheck") +(declare-function flycheck-count-errors "ext:flycheck") +(declare-function flycheck-error-level-compilation-level "ext:flycheck") +(declare-function flycheck-list-errors "ext:flycheck") +(declare-function flycheck-next-error "ext:flycheck") +(declare-function flycheck-previous-error "ext:flycheck") +(declare-function flymake--diag-type "ext:flymake" t t) +(declare-function flymake--handle-report "ext:flymake") +(declare-function flymake--lookup-type-property "ext:flymake") +(declare-function flymake--state-diags "ext:flymake" t t) +(declare-function flymake-disabled-backends "ext:flymake") +(declare-function flymake-goto-next-error "ext:flymake") +(declare-function flymake-goto-prev-error "ext:flymake") +(declare-function flymake-reporting-backends "ext:flymake") +(declare-function flymake-running-backends "ext:flymake") +(declare-function flymake-show-buffer-diagnostics "ext:flymake") +(declare-function flymake-show-diagnostics-buffer "ext:flymake") +(declare-function flymake-start "ext:flymake") +(declare-function follow-all-followers "follow") +(declare-function gnus-demon-add-handler "gnus-demon") +(declare-function grip--preview-url "ext:grip-mode") +(declare-function grip-browse-preview "ext:grip-mode") +(declare-function grip-restart-preview "ext:grip-mode") +(declare-function grip-stop-preview "ext:grip-mode") +(declare-function helm-candidate-number-at-point "ext:helm-core") +(declare-function helm-get-candidate-number "ext:helm-core") +(declare-function iedit-find-current-occurrence-overlay "ext:iedit-lib") +(declare-function iedit-prev-occurrence "ext:iedit-lib") +(declare-function image-get-display-property "image-mode") +(declare-function jsonrpc--request-continuations "ext:jsonrpc" t t) +(declare-function jsonrpc-last-error "ext:jsonrpc" t t) +(declare-function lsp--workspace-print "ext:lsp-mode") +(declare-function lsp-describe-session "ext:lsp-mode") +(declare-function lsp-workspace-folders-open "ext:lsp-mode") +(declare-function lsp-workspace-restart "ext:lsp-mode") +(declare-function lsp-workspace-shutdown "ext:lsp-mode") +(declare-function lsp-workspaces "ext:lsp-mode") +(declare-function lv-message "ext:lv") +(declare-function mc/num-cursors "ext:multiple-cursors-core") +(declare-function mlscroll-mode-line "ext:mlscroll") +(declare-function mu4e-alert-default-mode-line-formatter "ext:mu4e-alert") +(declare-function mu4e-alert-enable-mode-line-display "ext:mu4e-alert") +(declare-function nyan-create "ext:nyan-mode") +(declare-function org-edit-src-save "ext:org-src") +(declare-function parrot-create "ext:parrot") +(declare-function pdf-cache-number-of-pages "ext:pdf-cache" t t) +(declare-function persp-add-buffer "ext:persp-mode") +(declare-function persp-contain-buffer-p "ext:persp-mode") +(declare-function persp-switch "ext:persp-mode") +(declare-function phi-search--initialize "ext:phi-search") +(declare-function poke-line-create "ext:poke-line") +(declare-function popup-create "ext:popup") +(declare-function popup-delete "ext:popup") +(declare-function rcirc-next-active-buffer "rcirc") +(declare-function rcirc-short-buffer-name "rcirc") +(declare-function rcirc-switch-to-server-buffer "rcirc") +(declare-function rcirc-window-configuration-change "rcirc") +(declare-function rime--should-enable-p "ext:rime") +(declare-function rime--should-inline-ascii-p "ext:rime") +(declare-function sml-modeline-create "ext:sml-modeline") +(declare-function symbol-overlay-assoc "ext:symbol-overlay") +(declare-function symbol-overlay-get-list "ext:symbol-overlay") +(declare-function symbol-overlay-get-symbol "ext:symbol-overlay") +(declare-function symbol-overlay-rename "ext:symbol-overlay") +(declare-function tab-bar--current-tab "tab-bar") +(declare-function tab-bar--current-tab-index "tab-bar") +(declare-function tracking-next-buffer "ext:tracking") +(declare-function tracking-previous-buffer "ext:tracking") +(declare-function tracking-shorten "ext:tracking") +(declare-function undo-tree-redo-1 "ext:undo-tree") +(declare-function undo-tree-undo-1 "ext:undo-tree") +(declare-function warning-numeric-level "warnings") +(declare-function window-numbering-clear-mode-line "ext:window-numbering") +(declare-function window-numbering-get-number-string "ext:window-numbering") +(declare-function window-numbering-install-mode-line "ext:window-numbering") +(declare-function winum--clear-mode-line "ext:winum") +(declare-function winum--install-mode-line "ext:winum") +(declare-function winum-get-number-string "ext:winum") + + + +;; +;; Buffer information +;; + +(defvar-local doom-modeline--buffer-file-icon nil) +(defun doom-modeline-update-buffer-file-icon (&rest _) + "Update file icon in mode-line." + (setq doom-modeline--buffer-file-icon + (when (and (display-graphic-p) + doom-modeline-icon + doom-modeline-major-mode-icon) + (let ((icon (all-the-icons-icon-for-buffer))) + (propertize (if (or (null icon) (symbolp icon)) + (doom-modeline-icon 'faicon "file-o" nil nil + :face 'all-the-icons-dsilver + :height 0.9 + :v-adjust 0.0) + icon) + 'help-echo (format "Major-mode: %s" (format-mode-line mode-name)) + 'display '(raise -0.135)))))) +(add-hook 'find-file-hook #'doom-modeline-update-buffer-file-icon) +(add-hook 'after-change-major-mode-hook #'doom-modeline-update-buffer-file-icon) +(add-hook 'clone-indirect-buffer-hook #'doom-modeline-update-buffer-file-icon) + +(doom-modeline-add-variable-watcher + 'doom-modeline-icon + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-icon val) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (doom-modeline-update-buffer-file-icon)))))) + +(defun doom-modeline-buffer-file-state-icon (icon unicode text face) + "Displays an ICON of buffer state with FACE. +UNICODE and TEXT are the alternatives if it is not applicable. +Uses `all-the-icons-material' to fetch the icon." + (doom-modeline-icon 'material icon unicode text + :face face + :height 1.1 + :v-adjust -0.225)) + +(defvar-local doom-modeline--buffer-file-state-icon nil) +(defun doom-modeline-update-buffer-file-state-icon (&rest _) + "Update the buffer or file state in mode-line." + (setq doom-modeline--buffer-file-state-icon + (when doom-modeline-buffer-state-icon + (ignore-errors + (concat + (cond (buffer-read-only + (doom-modeline-buffer-file-state-icon + "lock" "πŸ”’" "%1*" `(:inherit doom-modeline-warning + :weight ,(if doom-modeline-icon + 'normal + 'bold)))) + ((and buffer-file-name (buffer-modified-p) + doom-modeline-buffer-modification-icon) + (doom-modeline-buffer-file-state-icon + "save" "πŸ’Ύ" "%1*" `(:inherit doom-modeline-buffer-modified + :weight ,(if doom-modeline-icon + 'normal + 'bold)))) + ((and buffer-file-name + (not (file-remote-p buffer-file-name)) ; Avoid freezing while connection is lost + (not (file-exists-p buffer-file-name))) + (doom-modeline-buffer-file-state-icon + "do_not_disturb_alt" "🚫" "!" 'doom-modeline-urgent)) + (t "")) + (when (or (buffer-narrowed-p) + (and (bound-and-true-p fancy-narrow-mode) + (fancy-narrow-active-p)) + (bound-and-true-p dired-narrow-mode)) + (doom-modeline-buffer-file-state-icon + "vertical_align_center" "↕" "><" 'doom-modeline-warning))))))) + +(defvar-local doom-modeline--buffer-file-name nil) +(defun doom-modeline-update-buffer-file-name (&rest _) + "Update buffer file name in mode-line." + (setq doom-modeline--buffer-file-name + (ignore-errors + (save-match-data + (if buffer-file-name + (doom-modeline-buffer-file-name) + (propertize "%b" + 'face 'doom-modeline-buffer-file + 'mouse-face 'mode-line-highlight + 'help-echo "Buffer name +mouse-1: Previous buffer\nmouse-3: Next buffer" + 'local-map mode-line-buffer-identification-keymap)))))) +(add-hook 'find-file-hook #'doom-modeline-update-buffer-file-name) +(add-hook 'after-save-hook #'doom-modeline-update-buffer-file-name) +(add-hook 'clone-indirect-buffer-hook #'doom-modeline-update-buffer-file-name) +(add-hook 'evil-insert-state-exit-hook #'doom-modeline-update-buffer-file-name) +(advice-add #'not-modified :after #'doom-modeline-update-buffer-file-name) +(advice-add #'rename-buffer :after #'doom-modeline-update-buffer-file-name) +(advice-add #'set-visited-file-name :after #'doom-modeline-update-buffer-file-name) +(advice-add #'pop-to-buffer :after #'doom-modeline-update-buffer-file-name) +(advice-add #'undo :after #'doom-modeline-update-buffer-file-name) +(advice-add #'undo-tree-undo-1 :after #'doom-modeline-update-buffer-file-name) +(advice-add #'undo-tree-redo-1 :after #'doom-modeline-update-buffer-file-name) +(advice-add #'fill-paragraph :after #'doom-modeline-update-buffer-file-name) +(advice-add #'popup-create :after #'doom-modeline-update-buffer-file-name) +(advice-add #'popup-delete :after #'doom-modeline-update-buffer-file-name) +(advice-add #'org-edit-src-save :after #'doom-modeline-update-buffer-file-name) +(advice-add #'symbol-overlay-rename :after #'doom-modeline-update-buffer-file-name) + +(doom-modeline-add-variable-watcher + 'doom-modeline-buffer-file-name-style + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-buffer-file-name-style val) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (when buffer-file-name + (doom-modeline-update-buffer-file-name))))))) + +(defsubst doom-modeline--buffer-mode-icon () + "The icon of the current major mode." + (when (and doom-modeline-icon doom-modeline-major-mode-icon) + (when-let ((icon (or doom-modeline--buffer-file-icon + (doom-modeline-update-buffer-file-icon)))) + (concat + (let ((active (doom-modeline--active))) + (if (and active doom-modeline-major-mode-color-icon) + icon + (doom-modeline-propertize-icon icon (if active + 'mode-line + 'mode-line-inactive)))) + (doom-modeline-vspc))))) + +(defsubst doom-modeline--buffer-state-icon () + "The icon of the current buffer state." + (when doom-modeline-buffer-state-icon + (when-let ((icon (doom-modeline-update-buffer-file-state-icon))) + (concat + (if (doom-modeline--active) + icon + (doom-modeline-propertize-icon icon 'mode-line-inactive)) + (doom-modeline-vspc))))) + +(defsubst doom-modeline--buffer-name () + "The current buffer name." + (when doom-modeline-buffer-name + (if (and (not (eq doom-modeline-buffer-file-name-style 'file-name)) + doom-modeline--limited-width-p) + ;; Only display the buffer name if the window is small, and doesn't need to + ;; respect file-name style. + (propertize "%b" + 'face (cond ((and buffer-file-name (buffer-modified-p)) + 'doom-modeline-buffer-modified) + ((doom-modeline--active) 'doom-modeline-buffer-file) + (t 'mode-line-inactive)) + 'mouse-face 'mode-line-highlight + 'help-echo "Buffer name +mouse-1: Previous buffer\nmouse-3: Next buffer" + 'local-map mode-line-buffer-identification-keymap) + (when-let ((name (or doom-modeline--buffer-file-name + (doom-modeline-update-buffer-file-name)))) + (if (doom-modeline--active) + ;; Check if the buffer is modified + (if (and buffer-file-name (buffer-modified-p)) + (propertize name 'face 'doom-modeline-buffer-modified) + name) + (propertize name 'face 'mode-line-inactive)))))) + +(doom-modeline-def-segment buffer-info + "Combined information about the current buffer, including the current working +directory, the file name, and its state (modified, read-only or non-existent)." + (concat + (doom-modeline-spc) + (doom-modeline--buffer-mode-icon) + (doom-modeline--buffer-state-icon) + (doom-modeline--buffer-name))) + +(doom-modeline-def-segment buffer-info-simple + "Display only the current buffer's name, but with fontification." + (concat + (doom-modeline-spc) + (doom-modeline--buffer-mode-icon) + (doom-modeline--buffer-state-icon) + (propertize "%b" + 'face (cond ((and buffer-file-name (buffer-modified-p)) + 'doom-modeline-buffer-modified) + ((doom-modeline--active) 'doom-modeline-buffer-file) + (t 'mode-line-inactive)) + 'mouse-face 'mode-line-highlight + 'help-echo "Buffer name +mouse-1: Previous buffer\nmouse-3: Next buffer" + 'local-map mode-line-buffer-identification-keymap))) + +(doom-modeline-def-segment buffer-default-directory + "Displays `default-directory' with the icon and state . This is for special +buffers like the scratch buffer where knowing the current project directory is +important." + (let ((face (cond ((buffer-modified-p) + 'doom-modeline-buffer-modified) + ((doom-modeline--active) 'doom-modeline-buffer-path) + (t 'mode-line-inactive)))) + (concat (doom-modeline-spc) + (and doom-modeline-major-mode-icon + (concat (doom-modeline-icon + 'octicon "file-directory" "πŸ–Ώ" "" + :face face :v-adjust -0.05 :height 1.25) + (doom-modeline-vspc))) + (doom-modeline--buffer-state-icon) + (propertize (abbreviate-file-name default-directory) 'face face)))) + +(doom-modeline-def-segment buffer-default-directory-simple + "Displays `default-directory'. This is for special buffers like the scratch +buffer where knowing the current project directory is important." + (let ((face (if (doom-modeline--active) 'doom-modeline-buffer-path 'mode-line-inactive))) + (concat (doom-modeline-spc) + (and doom-modeline-major-mode-icon + (concat (doom-modeline-icon + 'octicon "file-directory" "πŸ–Ώ" "" + :face face :v-adjust -0.05 :height 1.25) + (doom-modeline-vspc))) + (propertize (abbreviate-file-name default-directory) 'face face)))) + + +;; +;; Encoding +;; + +(doom-modeline-def-segment buffer-encoding + "Displays the eol and the encoding style of the buffer the same way Atom does." + (when doom-modeline-buffer-encoding + (let ((face (if (doom-modeline--active) 'mode-line 'mode-line-inactive)) + (mouse-face 'mode-line-highlight)) + (concat + (doom-modeline-spc) + + ;; eol type + (let ((eol (coding-system-eol-type buffer-file-coding-system))) + (when (or (eq doom-modeline-buffer-encoding t) + (and (eq doom-modeline-buffer-encoding 'nondefault) + (not (equal eol doom-modeline-default-eol-type)))) + (propertize + (pcase eol + (0 "LF ") + (1 "CRLF ") + (2 "CR ") + (_ "")) + 'face face + 'mouse-face mouse-face + 'help-echo (format "End-of-line style: %s\nmouse-1: Cycle" + (pcase eol + (0 "Unix-style LF") + (1 "DOS-style CRLF") + (2 "Mac-style CR") + (_ "Undecided"))) + 'local-map (let ((map (make-sparse-keymap))) + (define-key map [mode-line mouse-1] 'mode-line-change-eol) + map)))) + + ;; coding system + (let* ((sys (coding-system-plist buffer-file-coding-system)) + (cat (plist-get sys :category)) + (sym (if (memq cat + '(coding-category-undecided coding-category-utf-8)) + 'utf-8 + (plist-get sys :name)))) + (when (or (eq doom-modeline-buffer-encoding t) + (and (eq doom-modeline-buffer-encoding 'nondefault) + (not (eq cat 'coding-category-undecided)) + (not (eq sym doom-modeline-default-coding-system)))) + (propertize + (upcase (symbol-name sym)) + 'face face + 'mouse-face mouse-face + 'help-echo 'mode-line-mule-info-help-echo + 'local-map mode-line-coding-system-map))) + + (doom-modeline-spc))))) + + +;; +;; Indentation +;; + +(doom-modeline-def-segment indent-info + "Displays the indentation information." + (when doom-modeline-indent-info + (let ((do-propertize + (lambda (mode size) + (propertize + (format " %s %d " mode size) + 'face (if (doom-modeline--active) 'mode-line 'mode-line-inactive))))) + (if indent-tabs-mode + (funcall do-propertize "TAB" tab-width) + (let ((lookup-var + (seq-find (lambda (var) + (and var (boundp var) (symbol-value var))) + (cdr (assoc major-mode doom-modeline-indent-alist)) nil))) + (funcall do-propertize "SPC" + (if lookup-var + (symbol-value lookup-var) + tab-width))))))) + +;; +;; Remote host +;; + +(doom-modeline-def-segment remote-host + "Hostname for remote buffers." + (when default-directory + (when-let ((host (file-remote-p default-directory 'host))) + (propertize + (concat "@" host) + 'face (if (doom-modeline--active) 'doom-modeline-host 'mode-line-inactive))))) + + +;; +;; Major mode +;; + +(doom-modeline-def-segment major-mode + "The major mode, including environment and text-scale info." + (propertize + (concat + (doom-modeline-spc) + (propertize (format-mode-line + (or (and (boundp 'delighted-modes) + (cadr (assq major-mode delighted-modes))) + mode-name)) + 'help-echo "Major mode\n\ + mouse-1: Display major mode menu\n\ + mouse-2: Show help for major mode\n\ + mouse-3: Toggle minor modes" + 'mouse-face 'mode-line-highlight + 'local-map mode-line-major-mode-keymap) + (when (and doom-modeline-env-version doom-modeline-env--version) + (format " %s" doom-modeline-env--version)) + (and (boundp 'text-scale-mode-amount) + (/= text-scale-mode-amount 0) + (format + (if (> text-scale-mode-amount 0) + " (%+d)" + " (%-d)") + text-scale-mode-amount)) + (doom-modeline-spc)) + 'face (if (doom-modeline--active) + 'doom-modeline-buffer-major-mode + 'mode-line-inactive))) + + +;; +;; Process +;; + +(doom-modeline-def-segment process + "The process info." + (if (doom-modeline--active) + mode-line-process + (propertize (format-mode-line mode-line-process) + 'face 'mode-line-inactive))) + + +;; +;; Minor modes +;; + +(doom-modeline-def-segment minor-modes + (when doom-modeline-minor-modes + (let ((face (if (doom-modeline--active) + 'doom-modeline-buffer-minor-mode + 'mode-line-inactive)) + (mouse-face 'mode-line-highlight) + (help-echo "Minor mode + mouse-1: Display minor mode menu + mouse-2: Show help for minor mode + mouse-3: Toggle minor modes")) + (if (bound-and-true-p minions-mode) + `((:propertize ("" ,(--filter (memq (car it) minions-direct) + minor-mode-alist)) + face ,face + mouse-face ,mouse-face + help-echo ,help-echo + local-map ,mode-line-minor-mode-keymap) + ,(doom-modeline-spc) + (:propertize ("" ,(doom-modeline-icon 'octicon "gear" "βš™" + minions-mode-line-lighter + :face face :v-adjust -0.05)) + mouse-face ,mouse-face + help-echo "Minions +mouse-1: Display minor modes menu" + local-map ,minions-mode-line-minor-modes-map) + ,(doom-modeline-spc)) + `((:propertize ("" minor-mode-alist) + face ,face + mouse-face ,mouse-face + help-echo ,help-echo + local-map ,mode-line-minor-mode-keymap) + ,(doom-modeline-spc)))))) + + +;; +;; VCS +;; + +(defun doom-modeline-vcs-icon (icon &optional unicode text face voffset) + "Displays the vcs ICON with FACE and VOFFSET. + +UNICODE and TEXT are fallbacks. +Uses `all-the-icons-octicon' to fetch the icon." + (doom-modeline-icon 'octicon icon unicode text + :face face :v-adjust (or voffset -0.1))) + +(defvar-local doom-modeline--vcs-icon nil) +(defun doom-modeline-update-vcs-icon (&rest _) + "Update icon of vcs state in mode-line." + (setq doom-modeline--vcs-icon + (when (and vc-mode buffer-file-name) + (let* ((backend (vc-backend buffer-file-name)) + (state (vc-state (file-local-name buffer-file-name) backend))) + (cond ((memq state '(edited added)) + (doom-modeline-vcs-icon "git-compare" "⇆" "*" 'doom-modeline-info -0.05)) + ((eq state 'needs-merge) + (doom-modeline-vcs-icon "git-merge" "β›™" "?" 'doom-modeline-info)) + ((eq state 'needs-update) + (doom-modeline-vcs-icon "arrow-down" "↓" "!" 'doom-modeline-warning)) + ((memq state '(removed conflict unregistered)) + (doom-modeline-vcs-icon "alert" "⚠" "!" 'doom-modeline-urgent)) + (t + (doom-modeline-vcs-icon "git-branch" "ξ‚ " "@" 'doom-modeline-info -0.05))))))) +(add-hook 'find-file-hook #'doom-modeline-update-vcs-icon) +(add-hook 'after-save-hook #'doom-modeline-update-vcs-icon) +(advice-add #'vc-refresh-state :after #'doom-modeline-update-vcs-icon) + +(doom-modeline-add-variable-watcher + 'doom-modeline-icon + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-icon val) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (doom-modeline-update-vcs-icon)))))) + +(doom-modeline-add-variable-watcher + 'doom-modeline-unicode-fallback + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-unicode-fallback val) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (doom-modeline-update-vcs-icon)))))) + +(defvar-local doom-modeline--vcs-text nil) +(defun doom-modeline-update-vcs-text (&rest _) + "Update text of vcs state in mode-line." + (setq doom-modeline--vcs-text + (when (and vc-mode buffer-file-name) + (let* ((backend (vc-backend buffer-file-name)) + (state (vc-state (file-local-name buffer-file-name) backend)) + (str (if vc-display-status + (substring vc-mode (+ (if (eq backend 'Hg) 2 3) 2)) + ""))) + (propertize (if (> (length str) doom-modeline-vcs-max-length) + (concat + (substring str 0 (- doom-modeline-vcs-max-length 3)) + "...") + str) + 'mouse-face 'mode-line-highlight + 'face (cond ((eq state 'needs-update) + 'doom-modeline-warning) + ((memq state '(removed conflict unregistered)) + 'doom-modeline-urgent) + (t 'doom-modeline-info))))))) +(add-hook 'find-file-hook #'doom-modeline-update-vcs-text) +(add-hook 'after-save-hook #'doom-modeline-update-vcs-text) +(advice-add #'vc-refresh-state :after #'doom-modeline-update-vcs-text) + +(doom-modeline-def-segment vcs + "Displays the current branch, colored based on its state." + (let ((active (doom-modeline--active))) + (when-let ((icon doom-modeline--vcs-icon) + (text doom-modeline--vcs-text)) + (concat + (doom-modeline-spc) + (propertize + (concat + (if active + icon + (doom-modeline-propertize-icon icon 'mode-line-inactive)) + (doom-modeline-vspc)) + 'mouse-face 'mode-line-highlight + 'help-echo (get-text-property 1 'help-echo vc-mode) + 'local-map (get-text-property 1 'local-map vc-mode)) + (if active + text + (propertize text 'face 'mode-line-inactive)) + (doom-modeline-spc))))) + + +;; +;; Checker +;; + +(defun doom-modeline-checker-icon (icon unicode text face) + "Displays the checker ICON with FACE. + +UNICODE and TEXT are fallbacks. +Uses `all-the-icons-material' to fetch the icon." + (doom-modeline-icon 'material icon unicode text + :face face :height 1.1 :v-adjust -0.225)) + +(defun doom-modeline-checker-text (text &optional face) + "Displays TEXT with FACE." + (propertize text 'face (or face 'mode-line))) + +;; Flycheck + +(defun doom-modeline--flycheck-count-errors () + "Count the number of ERRORS, grouped by level. + +Return an alist, where each ITEM is a cons cell whose `car' is an +error level, and whose `cdr' is the number of errors of that +level." + (let ((info 0) (warning 0) (error 0)) + (mapc + (lambda (item) + (let ((count (cdr item))) + (pcase (flycheck-error-level-compilation-level (car item)) + (0 (cl-incf info count)) + (1 (cl-incf warning count)) + (2 (cl-incf error count))))) + (flycheck-count-errors flycheck-current-errors)) + `((info . ,info) (warning . ,warning) (error . ,error)))) + +(defvar-local doom-modeline--flycheck-icon nil) +(defun doom-modeline-update-flycheck-icon (&optional status) + "Update flycheck icon via STATUS." + (setq doom-modeline--flycheck-icon + (when-let + ((icon + (pcase status + ('finished (if flycheck-current-errors + (let-alist (doom-modeline--flycheck-count-errors) + (doom-modeline-checker-icon + "block" "🚫" "!" + (cond ((> .error 0) 'doom-modeline-urgent) + ((> .warning 0) 'doom-modeline-warning) + (t 'doom-modeline-info)))) + (doom-modeline-checker-icon "check" "βœ“" "-" 'doom-modeline-info))) + ('running (doom-modeline-checker-icon "access_time" "⏱" "*" 'doom-modeline-debug)) + ('no-checker (doom-modeline-checker-icon "sim_card_alert" "⚠" "-" 'doom-modeline-debug)) + ('errored (doom-modeline-checker-icon "sim_card_alert" "⚠" "-" 'doom-modeline-urgent)) + ('interrupted (doom-modeline-checker-icon "pause" "⏸" "=" 'doom-modeline-debug)) + ('suspicious (doom-modeline-checker-icon "priority_high" "❗" "!" 'doom-modeline-urgent)) + (_ nil)))) + (propertize icon + 'help-echo (concat "Flycheck\n" + (pcase status + ('finished "mouse-1: Display minor mode menu +mouse-2: Show help for minor mode") + ('running "Running...") + ('no-checker "No Checker") + ('errored "Error") + ('interrupted "Interrupted") + ('suspicious "Suspicious"))) + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (define-key map [mode-line down-mouse-1] + flycheck-mode-menu-map) + (define-key map [mode-line mouse-2] + (lambda () + (interactive) + (describe-function 'flycheck-mode))) + map))))) +(add-hook 'flycheck-status-changed-functions #'doom-modeline-update-flycheck-icon) +(add-hook 'flycheck-mode-hook #'doom-modeline-update-flycheck-icon) + +(doom-modeline-add-variable-watcher + 'doom-modeline-icon + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-icon val) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (when (bound-and-true-p flycheck-mode) + (flycheck-buffer))))))) + +(doom-modeline-add-variable-watcher + 'doom-modeline-unicode-fallback + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-unicode-fallback val) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (when (bound-and-true-p flycheck-mode) + (flycheck-buffer))))))) + +(defvar-local doom-modeline--flycheck-text nil) +(defun doom-modeline-update-flycheck-text (&optional status) + "Update flycheck text via STATUS." + (setq doom-modeline--flycheck-text + (when-let + ((text + (pcase status + ('finished (when flycheck-current-errors + (let-alist (doom-modeline--flycheck-count-errors) + (if doom-modeline-checker-simple-format + (doom-modeline-checker-text + (number-to-string (+ .error .warning .info)) + (cond ((> .error 0) 'doom-modeline-urgent) + ((> .warning 0) 'doom-modeline-warning) + (t 'doom-modeline-info))) + (format "%s/%s/%s" + (doom-modeline-checker-text (number-to-string .error) + 'doom-modeline-urgent) + (doom-modeline-checker-text (number-to-string .warning) + 'doom-modeline-warning) + (doom-modeline-checker-text (number-to-string .info) + 'doom-modeline-info)))))) + ('running nil) + ('no-checker nil) + ('errored (doom-modeline-checker-text "Error" 'doom-modeline-urgent)) + ('interrupted (doom-modeline-checker-text "Interrupted" 'doom-modeline-debug)) + ('suspicious (doom-modeline-checker-text "Suspicious" 'doom-modeline-urgent)) + (_ nil)))) + (propertize + text + 'help-echo (pcase status + ('finished + (concat + (when flycheck-current-errors + (let-alist (doom-modeline--flycheck-count-errors) + (format "error: %d, warning: %d, info: %d\n" .error .warning .info))) + "mouse-1: Show all errors +mouse-3: Next error" + (if (featurep 'mwheel) + "\nwheel-up/wheel-down: Previous/next error"))) + ('running "Running...") + ('no-checker "No Checker") + ('errored "Error") + ('interrupted "Interrupted") + ('suspicious "Suspicious")) + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (define-key map [mode-line mouse-1] + #'flycheck-list-errors) + (define-key map [mode-line mouse-3] + #'flycheck-next-error) + (when (featurep 'mwheel) + (define-key map [mode-line mouse-wheel-down-event] + (lambda (event) + (interactive "e") + (with-selected-window (posn-window (event-start event)) + (flycheck-previous-error 1)))) + (define-key map [mode-line mouse-wheel-up-event] + (lambda (event) + (interactive "e") + (with-selected-window (posn-window (event-start event)) + (flycheck-next-error 1)))) + map)))))) +(add-hook 'flycheck-status-changed-functions #'doom-modeline-update-flycheck-text) +(add-hook 'flycheck-mode-hook #'doom-modeline-update-flycheck-text) + +;; Flymake + +;; Compatibility +;; @see https://github.com/emacs-mirror/emacs/commit/6e100869012da9244679696634cab6b9cac96303. +(with-eval-after-load 'flymake + (unless (boundp 'flymake--state) + (defvaralias 'flymake--state 'flymake--backend-state)) + (unless (fboundp 'flymake--state-diags) + (defalias 'flymake--state-diags 'flymake--backend-state-diags))) + +(defvar-local doom-modeline--flymake-icon nil) +(defun doom-modeline-update-flymake-icon (&rest _) + "Update flymake icon." + (setq flymake--mode-line-format nil) ; remove the lighter of minor mode + (setq doom-modeline--flymake-icon + (let* ((known (hash-table-keys flymake--state)) + (running (flymake-running-backends)) + (disabled (flymake-disabled-backends)) + (reported (flymake-reporting-backends)) + (all-disabled (and disabled (null running))) + (some-waiting (cl-set-difference running reported))) + (when-let + ((icon + (cond + (some-waiting (doom-modeline-checker-icon "access_time" "⏰" "*" 'doom-modeline-debug)) + ((null known) (doom-modeline-checker-icon "sim_card_alert" "❓" "?" 'doom-modeline-debug)) + (all-disabled (doom-modeline-checker-icon "sim_card_alert" "❗" "!" 'doom-modeline-urgent)) + (t (let ((.error 0) + (.warning 0) + (.note 0)) + (progn + (cl-loop + with warning-level = (warning-numeric-level :warning) + with note-level = (warning-numeric-level :debug) + for state being the hash-values of flymake--state + do (cl-loop + with diags = (flymake--state-diags state) + for diag in diags do + (let ((severity (flymake--lookup-type-property (flymake--diag-type diag) 'severity + (warning-numeric-level :error)))) + (cond ((> severity warning-level) (cl-incf .error)) + ((> severity note-level) (cl-incf .warning)) + (t (cl-incf .note)))))) + (if (> (+ .error .warning .note) 0) + (doom-modeline-checker-icon "do_not_disturb_alt" "🚫" "!" + (cond ((> .error 0) 'doom-modeline-urgent) + ((> .warning 0) 'doom-modeline-warning) + (t 'doom-modeline-info))) + (doom-modeline-checker-icon "check" "βœ”" "-" 'doom-modeline-info)))))))) + (propertize + icon + 'help-echo (concat "Flymake\n" + (cond + (some-waiting "Running...") + ((null known) "No Checker") + (all-disabled "All Checkers Disabled") + (t (format "%d/%d backends running +mouse-1: Display minor mode menu +mouse-2: Show help for minor mode" + (length running) (length known))))) + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (define-key map [mode-line down-mouse-1] + flymake-menu) + (define-key map [mode-line mouse-2] + (lambda () + (interactive) + (describe-function 'flymake-mode))) + map)))))) +(advice-add #'flymake--handle-report :after #'doom-modeline-update-flymake-icon) + +(doom-modeline-add-variable-watcher + 'doom-modeline-icon + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-icon val) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (when (bound-and-true-p flymake-mode) + (flymake-start))))))) + +(doom-modeline-add-variable-watcher + 'doom-modeline-unicode-fallback + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-unicode-fallback val) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (when (bound-and-true-p flymake-mode) + (flymake-start))))))) + +(defvar-local doom-modeline--flymake-text nil) +(defun doom-modeline-update-flymake-text (&rest _) + "Update flymake text." + (setq flymake--mode-line-format nil) ; remove the lighter of minor mode + (setq doom-modeline--flymake-text + (let* ((known (hash-table-keys flymake--state)) + (running (flymake-running-backends)) + (disabled (flymake-disabled-backends)) + (reported (flymake-reporting-backends)) + (all-disabled (and disabled (null running))) + (some-waiting (cl-set-difference running reported)) + (warning-level (warning-numeric-level :warning)) + (note-level (warning-numeric-level :debug)) + (.error 0) + (.warning 0) + (.note 0)) + (maphash (lambda (_b state) + (cl-loop + with diags = (flymake--state-diags state) + for diag in diags do + (let ((severity (flymake--lookup-type-property (flymake--diag-type diag) 'severity + (warning-numeric-level :error)))) + (cond ((> severity warning-level) (cl-incf .error)) + ((> severity note-level) (cl-incf .warning)) + (t (cl-incf .note)))))) + flymake--state) + (when-let + ((text + (cond + (some-waiting doom-modeline--flymake-text) + ((null known) nil) + (all-disabled nil) + (t (let ((num (+ .error .warning .note))) + (when (> num 0) + (if doom-modeline-checker-simple-format + (doom-modeline-checker-text (number-to-string num) + (cond ((> .error 0) 'doom-modeline-urgent) + ((> .warning 0) 'doom-modeline-warning) + (t 'doom-modeline-info))) + (format "%s/%s/%s" + (doom-modeline-checker-text (number-to-string .error) + 'doom-modeline-urgent) + (doom-modeline-checker-text (number-to-string .warning) + 'doom-modeline-warning) + (doom-modeline-checker-text (number-to-string .note) + 'doom-modeline-info))))))))) + (propertize + text + 'help-echo (cond + (some-waiting "Running...") + ((null known) "No Checker") + (all-disabled "All Checkers Disabled") + (t (format "error: %d, warning: %d, note: %d +mouse-1: List all problems%s" + .error .warning .note + (if (featurep 'mwheel) + "\nwheel-up/wheel-down: Previous/next problem")))) + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (define-key map [mode-line mouse-1] + #'flymake-show-diagnostics-buffer) + (when (featurep 'mwheel) + (define-key map (vector 'mode-line + mouse-wheel-down-event) + (lambda (event) + (interactive "e") + (with-selected-window (posn-window (event-start event)) + (flymake-goto-prev-error 1 nil t)))) + (define-key map (vector 'mode-line + mouse-wheel-up-event) + (lambda (event) + (interactive "e") + (with-selected-window (posn-window (event-start event)) + (flymake-goto-next-error 1 nil t)))) + map))))))) +(advice-add #'flymake--handle-report :after #'doom-modeline-update-flymake-text) + +(doom-modeline-def-segment checker + "Displays color-coded error status in the current buffer with pretty icons." + (let ((active (doom-modeline--active)) + (seg (cond ((and (bound-and-true-p flymake-mode) + (bound-and-true-p flymake--state)) ; only support 26+ + `(,doom-modeline--flymake-icon . ,doom-modeline--flymake-text)) + ((bound-and-true-p flycheck-mode) + `(,doom-modeline--flycheck-icon . ,doom-modeline--flycheck-text))))) + (let ((icon (car seg)) + (text (cdr seg))) + (concat + (when icon + (concat + (doom-modeline-spc) + (if active + icon + (doom-modeline-propertize-icon icon 'mode-line-inactive)))) + (when text + (concat + (if icon (doom-modeline-vspc) (doom-modeline-spc)) + (if active + text + (propertize text 'face 'mode-line-inactive)))) + (doom-modeline-spc))))) + + +;; +;; Word Count +;; + +(doom-modeline-def-segment word-count + "The buffer word count. +Displayed when in a major mode in `doom-modeline-continuous-word-count-modes'. +Respects `doom-modeline-enable-word-count'." + (when (and doom-modeline-enable-word-count + (member major-mode doom-modeline-continuous-word-count-modes)) + (propertize (format " %dW" (count-words (point-min) (point-max))) + 'face (if (doom-modeline--active) + 'mode-line + 'mode-line-inactive)))) + + +;; +;; Selection +;; + +(defsubst doom-modeline-column (pos) + "Get the column of the position `POS'." + (save-excursion (goto-char pos) + (current-column))) + +(doom-modeline-def-segment selection-info + "Information about the current selection, such as how many characters and +lines are selected, or the NxM dimensions of a block selection." + (when (and (or mark-active (and (bound-and-true-p evil-local-mode) + (eq evil-state 'visual))) + (doom-modeline--active)) + (cl-destructuring-bind (beg . end) + (if (and (bound-and-true-p evil-local-mode) (eq evil-state 'visual)) + (cons evil-visual-beginning evil-visual-end) + (cons (region-beginning) (region-end))) + (propertize + (let ((lines (count-lines beg (min end (point-max))))) + (concat (doom-modeline-spc) + (cond ((or (bound-and-true-p rectangle-mark-mode) + (and (bound-and-true-p evil-visual-selection) + (eq 'block evil-visual-selection))) + (let ((cols (abs (- (doom-modeline-column end) + (doom-modeline-column beg))))) + (format "%dx%dB" lines cols))) + ((and (bound-and-true-p evil-visual-selection) + (eq evil-visual-selection 'line)) + (format "%dL" lines)) + ((> lines 1) + (format "%dC %dL" (- end beg) lines)) + (t + (format "%dC" (- end beg)))) + (when doom-modeline-enable-word-count + (format " %dW" (count-words beg end))) + (doom-modeline-spc))) + 'face 'doom-modeline-highlight)))) + + +;; +;; Matches (macro, anzu, evil-substitute, iedit, symbol-overlay and multi-cursors) +;; + +(defsubst doom-modeline--macro-recording () + "Display current Emacs or evil macro being recorded." + (when (and (doom-modeline--active) + (or defining-kbd-macro executing-kbd-macro)) + (let ((sep (propertize " " 'face 'doom-modeline-panel )) + (vsep (propertize " " 'face + '(:inherit (doom-modeline-panel variable-pitch))))) + (concat + sep + (doom-modeline-icon 'material "fiber_manual_record" "●" + (if (bound-and-true-p evil-this-macro) + (char-to-string evil-this-macro) + "Macro") + :face 'doom-modeline-panel + :v-adjust -0.225) + vsep + (doom-modeline-icon 'octicon "triangle-right" "β–Ά" ">" + :face 'doom-modeline-panel + :v-adjust -0.05) + sep)))) + +;; `anzu' and `evil-anzu' expose current/total state that can be displayed in the +;; mode-line. +(defun doom-modeline-fix-anzu-count (positions here) + "Calulate anzu count via POSITIONS and HERE." + (cl-loop for (start . end) in positions + collect t into before + when (and (>= here start) (<= here end)) + return (length before) + finally return 0)) + +(advice-add #'anzu--where-is-here :override #'doom-modeline-fix-anzu-count) + +(setq anzu-cons-mode-line-p nil) ; manage modeline segment ourselves +;; Ensure anzu state is cleared when searches & iedit are done +(with-eval-after-load 'anzu + (add-hook 'isearch-mode-end-hook #'anzu--reset-status t) + (add-hook 'iedit-mode-end-hook #'anzu--reset-status) + (advice-add #'evil-force-normal-state :after #'anzu--reset-status) + ;; Fix matches segment mirroring across all buffers + (mapc #'make-variable-buffer-local + '(anzu--total-matched + anzu--current-position anzu--state anzu--cached-count + anzu--cached-positions anzu--last-command + anzu--last-isearch-string anzu--overflow-p))) + +(defsubst doom-modeline--anzu () + "Show the match index and total number thereof. +Requires `anzu', also `evil-anzu' if using `evil-mode' for compatibility with +`evil-search'." + (when (and (bound-and-true-p anzu--state) + (not (bound-and-true-p iedit-mode))) + (propertize + (let ((here anzu--current-position) + (total anzu--total-matched)) + (cond ((eq anzu--state 'replace-query) + (format " %d replace " anzu--cached-count)) + ((eq anzu--state 'replace) + (format " %d/%d " here total)) + (anzu--overflow-p + (format " %s+ " total)) + (t + (format " %s/%d " here total)))) + 'face (if (doom-modeline--active) 'doom-modeline-panel 'mode-line-inactive)))) + +(defsubst doom-modeline--evil-substitute () + "Show number of matches for evil-ex substitutions and highlights in real time." + (when (and (bound-and-true-p evil-local-mode) + (or (assq 'evil-ex-substitute evil-ex-active-highlights-alist) + (assq 'evil-ex-global-match evil-ex-active-highlights-alist) + (assq 'evil-ex-buffer-match evil-ex-active-highlights-alist))) + (propertize + (let ((range (if evil-ex-range + (cons (car evil-ex-range) (cadr evil-ex-range)) + (cons (line-beginning-position) (line-end-position)))) + (pattern (car-safe (evil-delimited-arguments evil-ex-argument 2)))) + (if pattern + (format " %s matches " (how-many pattern (car range) (cdr range))) + " - ")) + 'face (if (doom-modeline--active) 'doom-modeline-panel 'mode-line-inactive)))) + +(defun doom-modeline-themes--overlay-sort (a b) + "Sort overlay A and B." + (< (overlay-start a) (overlay-start b))) + +(defsubst doom-modeline--iedit () + "Show the number of iedit regions matches + what match you're on." + (when (and (bound-and-true-p iedit-mode) + (bound-and-true-p iedit-occurrences-overlays)) + (propertize + (let ((this-oc (or (let ((inhibit-message t)) + (iedit-find-current-occurrence-overlay)) + (save-excursion (iedit-prev-occurrence) + (iedit-find-current-occurrence-overlay)))) + (length (length iedit-occurrences-overlays))) + (format " %s/%d " + (if this-oc + (- length + (length (memq this-oc (sort (append iedit-occurrences-overlays nil) + #'doom-modeline-themes--overlay-sort))) + -1) + "-") + length)) + 'face (if (doom-modeline--active) 'doom-modeline-panel 'mode-line-inactive)))) + +(defsubst doom-modeline--symbol-overlay () + "Show the number of matches for symbol overlay." + (when-let ((active (doom-modeline--active))) + (when (and (bound-and-true-p symbol-overlay-keywords-alist) + (not (bound-and-true-p symbol-overlay-temp-symbol)) + (not (bound-and-true-p iedit-mode))) + (let* ((keyword (symbol-overlay-assoc (symbol-overlay-get-symbol t))) + (symbol (car keyword)) + (before (symbol-overlay-get-list -1 symbol)) + (after (symbol-overlay-get-list 1 symbol)) + (count (length before))) + (if (symbol-overlay-assoc symbol) + (propertize + (format (concat " %d/%d " (and (cadr keyword) "in scope ")) + (+ count 1) + (+ count (length after))) + 'face (if active 'doom-modeline-panel 'mode-line-inactive))))))) + +(defsubst doom-modeline--multiple-cursors () + "Show the number of multiple cursors." + (cl-destructuring-bind (count . face) + (cond ((bound-and-true-p multiple-cursors-mode) + (cons (mc/num-cursors) + (if (doom-modeline--active) + 'doom-modeline-panel + 'mode-line-inactive))) + ((bound-and-true-p evil-mc-cursor-list) + (cons (length evil-mc-cursor-list) + (cond ((not (doom-modeline--active)) 'mode-line-inactive) + (evil-mc-frozen 'doom-modeline-bar) + ('doom-modeline-panel)))) + ((cons nil nil))) + (when count + (concat (propertize " " 'face face) + (or (doom-modeline-icon 'faicon "i-cursor" nil nil + :face face :v-adjust -0.0575) + (propertize "I" + 'face `(:inherit ,face :height 1.4 :weight normal) + 'display '(raise -0.1))) + (propertize (doom-modeline-vspc) + 'face `(:inherit (variable-pitch ,face))) + (propertize (format "%d " count) + 'face face))))) + +(defsubst doom-modeline--phi-search () + "Show the number of matches for `phi-search' and `phi-replace'." + (when-let ((active (doom-modeline--active))) + (when (bound-and-true-p phi-search--overlays) + (let ((total (length phi-search--overlays)) + (selection phi-search--selection)) + (when selection + (propertize + (format " %d/%d " (1+ selection) total) + 'face (if active 'doom-modeline-panel 'mode-line-inactive))))))) + +(defun doom-modeline--override-phi-search-mode-line (orig-fun &rest args) + "Override the mode-line of `phi-search' and `phi-replace'." + (if (bound-and-true-p doom-modeline-mode) + (apply orig-fun mode-line-format (cdr args)) + (apply orig-fun args))) +(advice-add #'phi-search--initialize :around #'doom-modeline--override-phi-search-mode-line) + +(defsubst doom-modeline--buffer-size () + "Show buffer size." + (when size-indication-mode + (concat (doom-modeline-spc) + (propertize "%I" + 'face (if (doom-modeline--active) 'mode-line 'mode-line-inactive) + 'help-echo "Buffer size +mouse-1: Display Line and Column Mode Menu" + 'mouse-face 'mode-line-highlight + 'local-map mode-line-column-line-number-mode-map) + (doom-modeline-spc)))) + +(doom-modeline-def-segment matches + "Displays: 1. the currently recording macro, 2. A current/total for the +current search term (with `anzu'), 3. The number of substitutions being +conducted with `evil-ex-substitute', and/or 4. The number of active `iedit' +regions, 5. The current/total for the highlight term (with `symbol-overlay'), +6. The number of active `multiple-cursors'." + (let ((meta (concat (doom-modeline--macro-recording) + (doom-modeline--anzu) + (doom-modeline--phi-search) + (doom-modeline--evil-substitute) + (doom-modeline--iedit) + (doom-modeline--symbol-overlay) + (doom-modeline--multiple-cursors)))) + (or (and (not (string-empty-p meta)) meta) + (doom-modeline--buffer-size)))) + +(doom-modeline-def-segment buffer-size + "Display buffer size." + (doom-modeline--buffer-size)) + +;; +;; Media +;; + +(doom-modeline-def-segment media-info + "Metadata regarding the current file, such as dimensions for images." + ;; TODO Include other information + (cond ((eq major-mode 'image-mode) + (cl-destructuring-bind (width . height) + (when (fboundp 'image-size) + (image-size (image-get-display-property) :pixels)) + (propertize + (format " %dx%d " width height) + 'face (if (doom-modeline--active) 'mode-line 'mode-line-inactive)))))) + + +;; +;; Bars +;; + +(defvar doom-modeline--bar-active nil) +(defvar doom-modeline--bar-inactive nil) + +(defsubst doom-modeline--bar () + "The default bar regulates the height of the mode-line in GUI." + (unless (and doom-modeline--bar-active doom-modeline--bar-inactive) + (let ((width doom-modeline-bar-width) + (height (max doom-modeline-height + (doom-modeline--font-height)))) + (when (and (numberp width) (numberp height)) + (setq doom-modeline--bar-active + (doom-modeline--create-bar-image 'doom-modeline-bar width height) + doom-modeline--bar-inactive + (doom-modeline--create-bar-image + 'doom-modeline-bar-inactive width height))))) + (if (doom-modeline--active) + doom-modeline--bar-active + doom-modeline--bar-inactive)) + +(defun doom-modeline-refresh-bars () + "Refresh mode-line bars on next redraw." + (setq doom-modeline--bar-active nil + doom-modeline--bar-inactive nil)) + +(cl-defstruct doom-modeline--hud-cache active inactive top-margin bottom-margin) + +(defsubst doom-modeline--hud () + "Powerline's hud segment reimplemented in the style of Doom's bar segment." + (let* ((ws (window-start)) + (we (window-end)) + (bs (buffer-size)) + (height (max doom-modeline-height + (doom-modeline--font-height))) + (top-margin (if (zerop bs) + 0 + (/ (* height (1- ws)) bs))) + (bottom-margin (if (zerop bs) + 0 + (max 0 (/ (* height (- bs we 1)) bs)))) + (cache (or (window-parameter nil 'doom-modeline--hud-cache) + (set-window-parameter nil 'doom-modeline--hud-cache + (make-doom-modeline--hud-cache))))) + (unless (and (doom-modeline--hud-cache-active cache) + (doom-modeline--hud-cache-inactive cache) + (= top-margin (doom-modeline--hud-cache-top-margin cache)) + (= bottom-margin + (doom-modeline--hud-cache-bottom-margin cache))) + (setf (doom-modeline--hud-cache-active cache) + (doom-modeline--create-hud-image + 'doom-modeline-bar 'default doom-modeline-bar-width + height top-margin bottom-margin) + (doom-modeline--hud-cache-inactive cache) + (doom-modeline--create-hud-image + 'doom-modeline-bar-inactive 'default doom-modeline-bar-width + height top-margin bottom-margin) + (doom-modeline--hud-cache-top-margin cache) top-margin + (doom-modeline--hud-cache-bottom-margin cache) bottom-margin)) + (if (doom-modeline--active) + (doom-modeline--hud-cache-active cache) + (doom-modeline--hud-cache-inactive cache)))) + +(defun doom-modeline-invalidate-huds () + "Invalidate all cached hud images." + (dolist (frame (frame-list)) + (dolist (window (window-list frame)) + (set-window-parameter window 'doom-modeline--hud-cache nil)))) + +(doom-modeline-add-variable-watcher + 'doom-modeline-height + (lambda (_sym val op _where) + (when (and (eq op 'set) (integerp val)) + (doom-modeline-refresh-bars) + (doom-modeline-invalidate-huds)))) + +(doom-modeline-add-variable-watcher + 'doom-modeline-bar-width + (lambda (_sym val op _where) + (when (and (eq op 'set) (integerp val)) + (doom-modeline-refresh-bars) + (doom-modeline-invalidate-huds)))) + +(add-hook 'after-setting-font-hook #'doom-modeline-refresh-bars) +(add-hook 'after-setting-font-hook #'doom-modeline-invalidate-huds) + +(doom-modeline-def-segment bar + "The bar regulates the height of the mode-line in GUI." + (if doom-modeline-hud + (doom-modeline--hud) + (doom-modeline--bar))) + +(doom-modeline-def-segment hud + "Powerline's hud segment reimplemented in the style of Doom's bar segment." + (doom-modeline--hud)) + + +;; +;; Window number +;; + +;; HACK: `ace-window-display-mode' should respect the ignore buffers. +(defun doom-modeline-aw-update () + "Update ace-window-path window parameter for all windows. +Ensure all windows are labeled so the user can select a specific +one. The ignored buffers are excluded unless `aw-ignore-on' is nil." + (let ((ignore-window-parameters t)) + (avy-traverse + (avy-tree (aw-window-list) aw-keys) + (lambda (path leaf) + (set-window-parameter + leaf 'ace-window-path + (propertize + (apply #'string (reverse path)) + 'face 'aw-mode-line-face)))))) +(advice-add #'aw-update :override #'doom-modeline-aw-update) + +;; Remove original window number of `ace-window-display-mode'. +(add-hook 'ace-window-display-mode-hook + (lambda () + (setq-default mode-line-format + (assq-delete-all 'ace-window-display-mode + (default-value 'mode-line-format))))) + +(advice-add #'window-numbering-install-mode-line :override #'ignore) +(advice-add #'window-numbering-clear-mode-line :override #'ignore) +(advice-add #'winum--install-mode-line :override #'ignore) +(advice-add #'winum--clear-mode-line :override #'ignore) + +(doom-modeline-def-segment window-number + "The current window number." + (let ((num (cond + ((bound-and-true-p ace-window-display-mode) + (aw-update) + (window-parameter (selected-window) 'ace-window-path)) + ((bound-and-true-p winum-mode) + (setq winum-auto-setup-mode-line nil) + (winum-get-number-string)) + ((bound-and-true-p window-numbering-mode) + (window-numbering-get-number-string)) + (t "")))) + (if (and (< 0 (length num)) + (< 1 (length (cl-mapcan + (lambda (frame) + ;; Exclude minibuffer and child frames + (unless (and (fboundp 'frame-parent) + (frame-parent frame)) + (window-list frame 'never))) + (visible-frame-list))))) + (propertize (format " %s " num) + 'face (if (doom-modeline--active) + 'doom-modeline-buffer-major-mode + 'mode-line-inactive)) + (doom-modeline-spc)))) + + +;; +;; Workspace +;; + +(doom-modeline-def-segment workspace-name + "The current workspace name or number. +Requires `eyebrowse-mode' to be enabled or `tab-bar-mode' tabs to be created." + (when doom-modeline-workspace-name + (when-let + ((name (cond + ((and (bound-and-true-p eyebrowse-mode) + (< 1 (length (eyebrowse--get 'window-configs)))) + (assq-delete-all 'eyebrowse-mode mode-line-misc-info) + (when-let* + ((num (eyebrowse--get 'current-slot)) + (tag (nth 2 (assoc num (eyebrowse--get 'window-configs))))) + (if (< 0 (length tag)) tag (int-to-string num)))) + ((and (fboundp 'tab-bar-mode) + (< 1 (length (frame-parameter nil 'tabs)))) + (let* ((current-tab (tab-bar--current-tab)) + (tab-index (tab-bar--current-tab-index)) + (explicit-name (alist-get 'explicit-name current-tab)) + (tab-name (alist-get 'name current-tab))) + (if explicit-name tab-name (+ 1 tab-index))))))) + (propertize (format " %s " name) 'face + (if (doom-modeline--active) + 'doom-modeline-buffer-major-mode + 'mode-line-inactive))))) + + +;; +;; Perspective +;; + +(defvar-local doom-modeline--persp-name nil) +(defun doom-modeline-update-persp-name (&rest _) + "Update perspective name in mode-line." + (setq doom-modeline--persp-name + ;; Support `persp-mode', while not support `perspective' + (when (and doom-modeline-persp-name + (bound-and-true-p persp-mode) + (fboundp 'safe-persp-name) + (fboundp 'get-current-persp)) + (let* ((persp (get-current-persp)) + (name (safe-persp-name persp)) + (face (if (and persp + (not (persp-contain-buffer-p (current-buffer) persp))) + 'doom-modeline-persp-buffer-not-in-persp + 'doom-modeline-persp-name)) + (icon (doom-modeline-icon 'material "folder" "πŸ–Ώ" "#" + :face `(:inherit ,face :slant normal) + :height 1.1 + :v-adjust -0.225))) + (when (or doom-modeline-display-default-persp-name + (not (string-equal persp-nil-name name))) + (concat (doom-modeline-spc) + (propertize (concat (and doom-modeline-persp-icon + (concat icon (doom-modeline-vspc))) + (propertize name 'face face)) + 'help-echo "mouse-1: Switch perspective +mouse-2: Show help for minor mode" + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (define-key map [mode-line mouse-1] + #'persp-switch) + (define-key map [mode-line mouse-2] + (lambda () + (interactive) + (describe-function 'persp-mode))) + map)) + (doom-modeline-spc))))))) + +(add-hook 'buffer-list-update-hook #'doom-modeline-update-persp-name) +(add-hook 'find-file-hook #'doom-modeline-update-persp-name) +(add-hook 'persp-activated-functions #'doom-modeline-update-persp-name) +(add-hook 'persp-renamed-functions #'doom-modeline-update-persp-name) +(advice-add #'lv-message :after #'doom-modeline-update-persp-name) + +(doom-modeline-def-segment persp-name + "The current perspective name." + (when (and (doom-modeline--active) + (not doom-modeline--limited-width-p)) + doom-modeline--persp-name)) + + +;; +;; Misc info +;; + +(doom-modeline-def-segment misc-info + "Mode line construct for miscellaneous information. +By default, this shows the information specified by `global-mode-string'." + (when (and (doom-modeline--active) + (not doom-modeline--limited-width-p)) + '("" mode-line-misc-info))) + + +;; +;; Position +;; + +;; Be compatible with Emacs 25. +(defvar doom-modeline-column-zero-based + (if (boundp 'column-number-indicator-zero-based) + column-number-indicator-zero-based + t) + "When non-nil, mode line displays column numbers zero-based. +See `column-number-indicator-zero-based'.") + +(defvar doom-modeline-percent-position + (if (boundp 'mode-line-percent-position) + mode-line-percent-position + '(-3 "%p")) + "Specification of \"percentage offset\" of window through buffer. +See `mode-line-percent-position'.") + +(doom-modeline-add-variable-watcher + 'column-number-indicator-zero-based + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-column-zero-based val)))) + +(doom-modeline-add-variable-watcher + 'mode-line-percent-position + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-percent-position val)))) + +(doom-modeline-def-segment buffer-position + "The buffer position information." + (let* ((active (doom-modeline--active)) + (lc '(line-number-mode + (column-number-mode + (doom-modeline-column-zero-based "%l:%c" "%l:%C") + "%l") + (column-number-mode (doom-modeline-column-zero-based ":%c" ":%C")))) + (face (if active 'mode-line 'mode-line-inactive)) + (mouse-face 'mode-line-highlight) + (local-map mode-line-column-line-number-mode-map)) + (concat + (doom-modeline-wspc) + + ;; Line and column + (propertize (format-mode-line lc) + 'face face + 'help-echo "Buffer position\n\ +mouse-1: Display Line and Column Mode Menu" + 'mouse-face mouse-face + 'local-map local-map) + + ;; Position + (cond ((and active + (bound-and-true-p nyan-mode) + (not doom-modeline--limited-width-p) + (>= (window-width) nyan-minimum-window-width)) + (concat + (doom-modeline-wspc) + (propertize (nyan-create) 'mouse-face mouse-face))) + ((and active + (bound-and-true-p poke-line-mode) + (not doom-modeline--limited-width-p) + (>= (window-width) poke-line-minimum-window-width)) + (concat + (doom-modeline-wspc) + (propertize (poke-line-create) 'mouse-face mouse-face))) + ((and active + (bound-and-true-p mlscroll-mode) + (not doom-modeline--limited-width-p) + (>= (window-width) mlscroll-minimum-current-width)) + (concat + (doom-modeline-wspc) + (let ((mlscroll-right-align nil)) + (format-mode-line (mlscroll-mode-line))))) + ((and active + (bound-and-true-p sml-modeline-mode) + (not doom-modeline--limited-width-p) + (>= (window-width) sml-modeline-len)) + (concat + (doom-modeline-wspc) + (propertize (sml-modeline-create) 'mouse-face mouse-face))) + (t "")) + + ;; Percent position + (when doom-modeline-percent-position + (concat + (doom-modeline-spc) + (propertize (format-mode-line '("" doom-modeline-percent-position "%%")) + 'face face + 'help-echo "Buffer percentage\n\ +mouse-1: Display Line and Column Mode Menu" + 'mouse-face mouse-face + 'local-map local-map))) + + (when (or line-number-mode column-number-mode doom-modeline-percent-position) + (doom-modeline-spc))))) + +;; +;; Party parrot +;; +(doom-modeline-def-segment parrot + "The party parrot animated icon. Requires `parrot-mode' to be enabled." + (when (and (doom-modeline--active) + (not doom-modeline--limited-width-p) + (bound-and-true-p parrot-mode)) + (concat (doom-modeline-wspc) + (parrot-create) + (doom-modeline-spc)))) + +;; +;; Modals (evil, overwrite, god, ryo and xah-fly-keys, etc.) +;; + +(defun doom-modeline--modal-icon (text face help-echo) + "Display the model icon with FACE and HELP-ECHO. +TEXT is alternative if icon is not available." + (propertize (doom-modeline-icon + 'material + (when doom-modeline-modal-icon "fiber_manual_record") + "●" + text + :face (if (doom-modeline--active) face 'mode-line-inactive) + :v-adjust -0.225) + 'help-echo help-echo)) + +(defsubst doom-modeline--evil () + "The current evil state. Requires `evil-mode' to be enabled." + (when (bound-and-true-p evil-local-mode) + (doom-modeline--modal-icon + (let ((tag (evil-state-property evil-state :tag t))) + (if (stringp tag) tag (funcall tag))) + (cond + ((evil-normal-state-p) 'doom-modeline-evil-normal-state) + ((evil-emacs-state-p) 'doom-modeline-evil-emacs-state) + ((evil-insert-state-p) 'doom-modeline-evil-insert-state) + ((evil-motion-state-p) 'doom-modeline-evil-motion-state) + ((evil-visual-state-p) 'doom-modeline-evil-visual-state) + ((evil-operator-state-p) 'doom-modeline-evil-operator-state) + ((evil-replace-state-p) 'doom-modeline-evil-replace-state) + (t 'doom-modeline-evil-normal-state)) + (evil-state-property evil-state :name t)))) + +(defsubst doom-modeline--overwrite () + "The current overwrite state which is enabled by command `overwrite-mode'." + (when (and (bound-and-true-p overwrite-mode) + (not (bound-and-true-p evil-local-mode))) + (doom-modeline--modal-icon " " 'doom-modeline-urgent "Overwrite mode"))) + +(defsubst doom-modeline--god () + "The current god state which is enabled by the command `god-mode'." + (when (bound-and-true-p god-local-mode) + (doom-modeline--modal-icon " " 'doom-modeline-evil-normal-state "God mode"))) + +(defsubst doom-modeline--ryo () + "The current ryo-modal state which is enabled by the command `ryo-modal-mode'." + (when (bound-and-true-p ryo-modal-mode) + (doom-modeline--modal-icon "" 'doom-modeline-evil-normal-state "Ryo modal"))) + +(defsubst doom-modeline--xah-fly-keys () + "The current `xah-fly-keys' state." + (when (bound-and-true-p xah-fly-keys) + (if xah-fly-insert-state-p + (doom-modeline--modal-icon " " + 'doom-modeline-evil-insert-state + (format "Xah-fly insert mode")) + (doom-modeline--modal-icon " " + 'doom-modeline-evil-normal-state + (format "Xah-fly command mode"))))) + +(defsubst doom-modeline--boon () + "The current Boon state. Requires `boon-mode' to be enabled." + (when (bound-and-true-p boon-local-mode) + (doom-modeline--modal-icon + (boon-state-string) + (cond + (boon-command-state 'doom-modeline-evil-normal-state) + (boon-insert-state 'doom-modeline-evil-insert-state) + (boon-special-state 'doom-modeline-evil-emacs-state) + (boon-off-state 'doom-modeline-evil-operator-state) + (t 'doom-modeline-evil-operator-state)) + (boon-modeline-string)))) + +(defsubst doom-modeline--meow () + "The current Meow state. Requires `meow-mode' to be enabled." + (when (bound-and-true-p meow-mode) + meow--indicator)) + +(doom-modeline-def-segment modals + "Displays modal editing states, including `evil', `overwrite', `god', `ryo' +and `xha-fly-kyes', etc." + (let* ((evil (doom-modeline--evil)) + (ow (doom-modeline--overwrite)) + (god (doom-modeline--god)) + (ryo (doom-modeline--ryo)) + (xf (doom-modeline--xah-fly-keys)) + (boon (doom-modeline--boon)) + (vsep (doom-modeline-vspc)) + (meow (doom-modeline--meow)) + (sep (and (or evil ow god ryo xf boon) (doom-modeline-spc)))) + (concat sep + (and evil (concat evil (and (or ow god ryo xf boon meow) vsep))) + (and ow (concat ow (and (or god ryo xf boon meow) vsep))) + (and god (concat god (and (or ryo xf boon meow) vsep))) + (and ryo (concat ryo (and (or xf boon meow) vsep))) + (and xf (concat xf (and (or boon meow) vsep))) + (and boon (concat boon (and meow vsep))) + meow + sep))) + +;; +;; Objed state +;; + +(defvar doom-modeline--objed-active nil) + +(defun doom-modeline-update-objed (_ &optional reset) + "Update `objed' status, inactive when RESET is true." + (setq doom-modeline--objed-active (not reset))) + +(setq objed-modeline-setup-func #'doom-modeline-update-objed) + +(doom-modeline-def-segment objed-state () + "The current objed state." + (when (and doom-modeline--objed-active + (doom-modeline--active)) + (propertize (format " %s(%s) " + (symbol-name objed--object) + (char-to-string (aref (symbol-name objed--obj-state) 0))) + 'face 'doom-modeline-evil-emacs-state + 'help-echo (format "Objed object: %s (%s)" + (symbol-name objed--object) + (symbol-name objed--obj-state))))) + + +;; +;; Input method +;; + +(doom-modeline-def-segment input-method + "The current input method." + (propertize (cond (current-input-method + (concat (doom-modeline-spc) + current-input-method-title + (doom-modeline-spc))) + ((and (bound-and-true-p evil-local-mode) + (bound-and-true-p evil-input-method)) + (concat + (doom-modeline-spc) + (nth 3 (assoc default-input-method input-method-alist)) + (doom-modeline-spc))) + (t "")) + 'face (if (doom-modeline--active) + (if (and (bound-and-true-p rime-mode) + (equal current-input-method "rime")) + (if (and (rime--should-enable-p) + (not (rime--should-inline-ascii-p))) + 'doom-modeline-input-method + 'doom-modeline-input-method-alt) + 'doom-modeline-input-method) + 'mode-line-inactive) + 'help-echo (concat + "Current input method: " + current-input-method + "\n\ +mouse-2: Disable input method\n\ +mouse-3: Describe current input method") + 'mouse-face 'mode-line-highlight + 'local-map mode-line-input-method-map)) + + +;; +;; Info +;; + +(doom-modeline-def-segment info-nodes + "The topic and nodes in the Info buffer." + (let ((active (doom-modeline--active))) + (concat + (propertize " (" 'face (if active 'mode-line 'mode-line-inactive)) + ;; topic + (propertize (if (stringp Info-current-file) + (replace-regexp-in-string + "%" "%%" + (file-name-sans-extension + (file-name-nondirectory Info-current-file))) + (format "*%S*" Info-current-file)) + 'face (if active 'doom-modeline-info 'mode-line-inactive)) + (propertize ") " 'face (if active 'mode-line 'mode-line-inactive)) + ;; node + (when Info-current-node + (propertize (replace-regexp-in-string + "%" "%%" Info-current-node) + 'face (if active 'doom-modeline-buffer-path 'mode-line-inactive) + 'help-echo + "mouse-1: scroll forward, mouse-3: scroll back" + 'mouse-face 'mode-line-highlight + 'local-map Info-mode-line-node-keymap))))) + + +;; +;; REPL +;; + +(defun doom-modeline-repl-icon (text face) + "Display REPL icon (or TEXT in terminal) with FACE." + (doom-modeline-icon 'faicon "terminal" "$" text + :face face :height 1.0 :v-adjust -0.0575)) + +(defvar doom-modeline--cider nil) + +(defun doom-modeline-update-cider () + "Update cider repl state." + (setq doom-modeline--cider + (let* ((connected (cider-connected-p)) + (face (if connected 'doom-modeline-repl-success 'doom-modeline-repl-warning)) + (repl-buffer (cider-current-repl nil nil)) + (cider-info (when repl-buffer + (cider--connection-info repl-buffer t))) + (icon (doom-modeline-repl-icon "REPL" face))) + (propertize icon + 'help-echo + (if connected + (format "CIDER Connected %s\nmouse-2: CIDER quit" cider-info) + "CIDER Disconnected\nmouse-1: CIDER jack-in") + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (if connected + (define-key map [mode-line mouse-2] + #'cider-quit) + (define-key map [mode-line mouse-1] + #'cider-jack-in)) + map))))) + +(add-hook 'cider-connected-hook #'doom-modeline-update-cider) +(add-hook 'cider-disconnected-hook #'doom-modeline-update-cider) +(add-hook 'cider-mode-hook #'doom-modeline-update-cider) + +(doom-modeline-def-segment repl + "The REPL state." + (when doom-modeline-repl + (when-let (icon (when (bound-and-true-p cider-mode) + doom-modeline--cider)) + (concat + (doom-modeline-spc) + (if (doom-modeline--active) + icon + (doom-modeline-propertize-icon icon 'mode-line-inactive)) + (doom-modeline-spc))))) + + +;; +;; LSP +;; + +(defun doom-modeline-lsp-icon (text face) + "Display LSP icon (or TEXT in terminal) with FACE." + (doom-modeline-icon 'faicon "rocket" "πŸš€" text + :face face :height 1.0 :v-adjust -0.0575)) + +(defvar-local doom-modeline--lsp nil) +(defun doom-modeline-update-lsp (&rest _) + "Update `lsp-mode' state." + (setq doom-modeline--lsp + (let* ((workspaces (lsp-workspaces)) + (face (if workspaces 'doom-modeline-lsp-success 'doom-modeline-lsp-warning)) + (icon (doom-modeline-lsp-icon "LSP" face))) + (propertize icon + 'help-echo + (if workspaces + (concat "LSP Connected " + (string-join + (mapcar (lambda (w) + (format "[%s]\n" (lsp--workspace-print w))) + workspaces)) + "C-mouse-1: Switch to another workspace folder +mouse-1: Describe current session +mouse-2: Quit server +mouse-3: Reconnect to server") + "LSP Disconnected +mouse-1: Reload to start server") + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (if workspaces + (progn + (define-key map [mode-line C-mouse-1] + #'lsp-workspace-folders-open) + (define-key map [mode-line mouse-1] + #'lsp-describe-session) + (define-key map [mode-line mouse-2] + #'lsp-workspace-shutdown) + (define-key map [mode-line mouse-3] + #'lsp-workspace-restart)) + (progn + (define-key map [mode-line mouse-1] + (lambda () + (interactive) + (ignore-errors (revert-buffer t t)))))) + map))))) +(add-hook 'lsp-before-initialize-hook #'doom-modeline-update-lsp) +(add-hook 'lsp-after-initialize-hook #'doom-modeline-update-lsp) +(add-hook 'lsp-after-uninitialized-functions #'doom-modeline-update-lsp) +(add-hook 'lsp-before-open-hook #'doom-modeline-update-lsp) +(add-hook 'lsp-after-open-hook #'doom-modeline-update-lsp) + +(defvar-local doom-modeline--eglot nil) +(defun doom-modeline-update-eglot () + "Update `eglot' state." + (setq doom-modeline--eglot + (pcase-let* ((server (and (eglot-managed-p) (eglot-current-server))) + (nick (and server (eglot--project-nickname server))) + (pending (and server (hash-table-count + (jsonrpc--request-continuations server)))) + (`(,_id ,doing ,done-p ,detail) (and server (eglot--spinner server))) + (last-error (and server (jsonrpc-last-error server))) + (face (cond (last-error 'doom-modeline-lsp-error) + ((and doing (not done-p)) 'doom-modeline-lsp-running) + ((and pending (cl-plusp pending)) 'doom-modeline-lsp-warning) + (nick 'doom-modeline-lsp-success) + (t 'doom-modeline-lsp-warning))) + (icon (doom-modeline-lsp-icon "EGLOT" face))) + (propertize icon + 'help-echo (cond + (last-error + (format "EGLOT\nAn error occured: %s +mouse-3: Clear this status" (plist-get last-error :message))) + ((and doing (not done-p)) + (format "EGLOT\n%s%s" doing + (if detail (format "%s" detail) ""))) + ((and pending (cl-plusp pending)) + (format "EGLOT\n%d outstanding requests" pending)) + (nick (format "EGLOT Connected (%s/%s) +C-mouse-1: Go to server errors +mouse-1: Go to server events +mouse-2: Quit server +mouse-3: Reconnect to server" nick (eglot--major-mode server))) + (t "EGLOT Disconnected +mouse-1: Start server")) + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (cond (last-error + (define-key map [mode-line mouse-3] + #'eglot-clear-status)) + ((and pending (cl-plusp pending)) + (define-key map [mode-line mouse-3] + #'eglot-forget-pending-continuations)) + (nick + (define-key map [mode-line C-mouse-1] + #'eglot-stderr-buffer) + (define-key map [mode-line mouse-1] + #'eglot-events-buffer) + (define-key map [mode-line mouse-2] + #'eglot-shutdown) + (define-key map [mode-line mouse-3] + #'eglot-reconnect)) + (t (define-key map [mode-line mouse-1] + #'eglot))) + map))))) +(add-hook 'eglot-managed-mode-hook #'doom-modeline-update-eglot) + +(defvar-local doom-modeline--tags nil) +(defun doom-modeline-update-tags () + "Update tags state." + (setq doom-modeline--tags + (propertize + (doom-modeline-lsp-icon "LSP" 'doom-modeline-lsp-success) + 'help-echo "TAGS: Citre mode +mouse-1: Toggle citre mode" + 'mouse-face 'mode-line-highlight + 'local-map (make-mode-line-mouse-map 'mouse-1 #'citre-mode)))) +(add-hook 'citre-mode-hook #'doom-modeline-update-tags) + +(defun doom-modeline-update-lsp-icon () + "Update lsp icon." + (cond ((bound-and-true-p lsp-mode) + (doom-modeline-update-lsp)) + ((bound-and-true-p eglot--managed-mode) + (doom-modeline-update-eglot)) + ((bound-and-true-p citre-mode) + (doom-modeline-update-tags)))) + +(doom-modeline-add-variable-watcher + 'doom-modeline-icon + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-icon val) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (doom-modeline-update-lsp-icon)))))) + +(doom-modeline-add-variable-watcher + 'doom-modeline-unicode-fallback + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-unicode-fallback val) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (doom-modeline-update-lsp-icon)))))) + +(doom-modeline-def-segment lsp + "The LSP server state." + (when (and doom-modeline-lsp + (not doom-modeline--limited-width-p)) + (let ((active (doom-modeline--active)) + (icon (cond ((bound-and-true-p lsp-mode) + doom-modeline--lsp) + ((bound-and-true-p eglot--managed-mode) + doom-modeline--eglot) + ((bound-and-true-p citre-mode) + doom-modeline--tags)))) + (when icon + (concat + (doom-modeline-spc) + (if active + icon + (doom-modeline-propertize-icon icon 'mode-line-inactive)) + (doom-modeline-spc)))))) + +(defun doom-modeline-override-eglot-modeline () + "Override `eglot' mode-line." + (if (bound-and-true-p doom-modeline-mode) + (setq mode-line-misc-info + (delq (assq 'eglot--managed-mode mode-line-misc-info) mode-line-misc-info)) + (add-to-list 'mode-line-misc-info + `(eglot--managed-mode (" [" eglot--mode-line-format "] "))))) +(add-hook 'eglot-managed-mode-hook #'doom-modeline-override-eglot-modeline) +(add-hook 'doom-modeline-mode-hook #'doom-modeline-override-eglot-modeline) + + +;; +;; GitHub +;; + +(defvar doom-modeline--github-notification-number 0) +(defvar doom-modeline-before-github-fetch-notification-hook nil + "Hooks before fetching GitHub notifications. +Example: + (add-hook 'doom-modeline-before-github-fetch-notification-hook + #'auth-source-pass-enable)") +(defun doom-modeline--github-fetch-notifications () + "Fetch GitHub notifications." + (when (and doom-modeline-github + (require 'async nil t)) + (async-start + `(lambda () + ,(async-inject-variables + "\\`\\(load-path\\|auth-sources\\|doom-modeline-before-github-fetch-notification-hook\\)\\'") + (run-hooks 'doom-modeline-before-github-fetch-notification-hook) + (when (require 'ghub nil t) + (with-timeout (10) + (ignore-errors + (when-let* ((username (ghub--username ghub-default-host)) + (token (ghub--token ghub-default-host username 'ghub t))) + (ghub-get "/notifications" nil + :query '((notifications . "true")) + :username username + :auth token + :noerror t)))))) + (lambda (result) + (message "") ; suppress message + (setq doom-modeline--github-notification-number (length result)))))) + +(defvar doom-modeline--github-timer nil) +(defun doom-modeline-github-timer () + "Start/Stop the timer for GitHub fetching." + (if (timerp doom-modeline--github-timer) + (cancel-timer doom-modeline--github-timer)) + (setq doom-modeline--github-timer + (and doom-modeline-github + (run-with-idle-timer 30 + doom-modeline-github-interval + #'doom-modeline--github-fetch-notifications)))) + +(doom-modeline-add-variable-watcher + 'doom-modeline-github + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-github val) + (doom-modeline-github-timer)))) + +(doom-modeline-github-timer) + +(doom-modeline-def-segment github + "The GitHub notifications." + (when (and doom-modeline-github + (doom-modeline--active) + (not doom-modeline--limited-width-p) + (numberp doom-modeline--github-notification-number) + (> doom-modeline--github-notification-number 0)) + (concat + (doom-modeline-spc) + (propertize + (concat + (doom-modeline-icon 'faicon "github" "πŸ””" "#" + :face 'doom-modeline-notification + :v-adjust -0.0575) + (doom-modeline-vspc) + ;; GitHub API is paged, and the limit is 50 + (propertize + (if (>= doom-modeline--github-notification-number 50) + "50+" + (number-to-string doom-modeline--github-notification-number)) + 'face '(:inherit + (doom-modeline-unread-number doom-modeline-notification)))) + 'help-echo "Github Notifications +mouse-1: Show notifications +mouse-3: Fetch notifications" + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (define-key map [mode-line mouse-1] + (lambda () + "Open GitHub notifications page." + (interactive) + (run-with-idle-timer 300 nil #'doom-modeline--github-fetch-notifications) + (browse-url "https://github.com/notifications"))) + (define-key map [mode-line mouse-3] + (lambda () + "Fetching GitHub notifications." + (interactive) + (message "Fetching GitHub notifications...") + (doom-modeline--github-fetch-notifications))) + map)) + (doom-modeline-spc)))) + + +;; +;; Debug states +;; + +;; Highlight the mode-line while debugging. +(defvar-local doom-modeline--debug-cookie nil) +(defun doom-modeline--debug-visual (&rest _) + "Update the face of mode-line for debugging." + (mapc (lambda (buffer) + (with-current-buffer buffer + (setq doom-modeline--debug-cookie + (face-remap-add-relative 'mode-line 'doom-modeline-debug-visual)) + (force-mode-line-update))) + (buffer-list))) + +(defun doom-modeline--normal-visual (&rest _) + "Restore the face of mode-line." + (mapc (lambda (buffer) + (with-current-buffer buffer + (when doom-modeline--debug-cookie + (face-remap-remove-relative doom-modeline--debug-cookie) + (force-mode-line-update)))) + (buffer-list))) + +(add-hook 'dap-session-created-hook #'doom-modeline--debug-visual) +(add-hook 'dap-terminated-hook #'doom-modeline--normal-visual) + +(defun doom-modeline-debug-icon (face &rest args) + "Display debug icon with FACE and ARGS." + (doom-modeline-icon 'faicon "bug" "πŸ›" "!" :face face :v-adjust -0.0575 args)) + +(defun doom-modeline--debug-dap () + "The current `dap-mode' state." + (when (and (bound-and-true-p dap-mode) + (bound-and-true-p lsp-mode)) + (when-let ((session (dap--cur-session))) + (when (dap--session-running session) + (propertize (doom-modeline-debug-icon 'doom-modeline-info) + 'help-echo (format "DAP (%s - %s) +mouse-1: Display debug hydra +mouse-2: Display recent configurations +mouse-3: Disconnect session" + (dap--debug-session-name session) + (dap--debug-session-state session)) + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (define-key map [mode-line mouse-1] + #'dap-hydra) + (define-key map [mode-line mouse-2] + #'dap-debug-recent) + (define-key map [mode-line mouse-3] + #'dap-disconnect) + map)))))) + +(defvar-local doom-modeline--debug-dap nil) +(defun doom-modeline-update-debug-dap (&rest _) + "Update dap debug state." + (setq doom-modeline--debug-dap (doom-modeline--debug-dap))) + +(add-hook 'dap-session-created-hook #'doom-modeline-update-debug-dap) +(add-hook 'dap-session-changed-hook #'doom-modeline-update-debug-dap) +(add-hook 'dap-terminated-hook #'doom-modeline-update-debug-dap) + +(defsubst doom-modeline--debug-edebug () + "The current `edebug' state." + (when (bound-and-true-p edebug-mode) + (propertize (doom-modeline-debug-icon 'doom-modeline-info) + 'help-echo (format "EDebug (%s) +mouse-1: Show help +mouse-2: Next +mouse-3: Stop debugging" + edebug-execution-mode) + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (define-key map [mode-line mouse-1] + #'edebug-help) + (define-key map [mode-line mouse-2] + #'edebug-next-mode) + (define-key map [mode-line mouse-3] + #'edebug-stop) + map)))) + +(defsubst doom-modeline--debug-on-error () + "The current `debug-on-error' state." + (when debug-on-error + (propertize (doom-modeline-debug-icon 'doom-modeline-urgent) + 'help-echo "Debug on Error +mouse-1: Toggle Debug on Error" + 'mouse-face 'mode-line-highlight + 'local-map (make-mode-line-mouse-map 'mouse-1 #'toggle-debug-on-error)))) + +(defsubst doom-modeline--debug-on-quit () + "The current `debug-on-quit' state." + (when debug-on-quit + (propertize (doom-modeline-debug-icon 'doom-modeline-warning) + 'help-echo "Debug on Quit +mouse-1: Toggle Debug on Quit" + 'mouse-face 'mode-line-highlight + 'local-map (make-mode-line-mouse-map 'mouse-1 #'toggle-debug-on-quit)))) + +(doom-modeline-def-segment debug + "The current debug state." + (when (and (doom-modeline--active) + (not doom-modeline--limited-width-p)) + (let* ((dap doom-modeline--debug-dap) + (edebug (doom-modeline--debug-edebug)) + (on-error (doom-modeline--debug-on-error)) + (on-quit (doom-modeline--debug-on-quit)) + (vsep (doom-modeline-vspc)) + (sep (and (or dap edebug on-error on-quit) (doom-modeline-spc)))) + (concat sep + (and dap (concat dap (and (or edebug on-error on-quit) vsep))) + (and edebug (concat edebug (and (or on-error on-quit) vsep))) + (and on-error (concat on-error (and on-quit vsep))) + on-quit + sep)))) + + +;; +;; PDF pages +;; + +(defvar-local doom-modeline--pdf-pages nil) +(defun doom-modeline-update-pdf-pages () + "Update PDF pages." + (setq doom-modeline--pdf-pages + (format " P%d/%d " + (or (eval `(pdf-view-current-page)) 0) + (pdf-cache-number-of-pages)))) +(add-hook 'pdf-view-change-page-hook #'doom-modeline-update-pdf-pages) + +(doom-modeline-def-segment pdf-pages + "Display PDF pages." + (propertize doom-modeline--pdf-pages + 'face (if (doom-modeline--active) 'mode-line 'mode-line-inactive))) + + +;; +;; `mu4e-alert' notifications +;; + +(doom-modeline-def-segment mu4e + "Show notifications of any unread emails in `mu4e'." + (when (and doom-modeline-mu4e + (doom-modeline--active) + (not doom-modeline--limited-width-p) + (bound-and-true-p mu4e-alert-mode-line) + (numberp mu4e-alert-mode-line) + ;; don't display if the unread mails count is zero + (> mu4e-alert-mode-line 0)) + (concat + (doom-modeline-spc) + (propertize + (concat + (doom-modeline-icon 'material "email" "πŸ“§" "#" + :face 'doom-modeline-notification + :height 1.1 :v-adjust -0.2) + (doom-modeline-vspc) + (propertize + (if (> mu4e-alert-mode-line doom-modeline-number-limit) + (format "%d+" doom-modeline-number-limit) + (number-to-string mu4e-alert-mode-line)) + 'face '(:inherit + (doom-modeline-unread-number doom-modeline-notification)))) + 'mouse-face 'mode-line-highlight + 'keymap '(mode-line keymap + (mouse-1 . mu4e-alert-view-unread-mails) + (mouse-2 . mu4e-alert-view-unread-mails) + (mouse-3 . mu4e-alert-view-unread-mails)) + 'help-echo (concat (if (= mu4e-alert-mode-line 1) + "You have an unread email" + (format "You have %s unread emails" mu4e-alert-mode-line)) + "\nClick here to view " + (if (= mu4e-alert-mode-line 1) "it" "them"))) + (doom-modeline-spc)))) + +(defun doom-modeline-override-mu4e-alert-modeline (&rest _) + "Delete `mu4e-alert-mode-line' from global modeline string." + (when (featurep 'mu4e-alert) + (if (and doom-modeline-mu4e + (bound-and-true-p doom-modeline-mode)) + ;; Delete original modeline + (progn + (setq global-mode-string + (delete '(:eval mu4e-alert-mode-line) global-mode-string)) + (setq mu4e-alert-modeline-formatter #'identity)) + ;; Recover default settings + (setq mu4e-alert-modeline-formatter #'mu4e-alert-default-mode-line-formatter)))) +(advice-add #'mu4e-alert-enable-mode-line-display + :after #'doom-modeline-override-mu4e-alert-modeline) +(add-hook 'doom-modeline-mode-hook #'doom-modeline-override-mu4e-alert-modeline) + + +;; +;; `gnus' notifications +;; + +(defvar doom-modeline--gnus-unread-mail 0) +(defvar doom-modeline--gnus-started nil + "Used to determine if gnus has started.") +(defun doom-modeline-update-gnus-status (&rest _) + "Get the total number of unread news of gnus group." + (setq doom-modeline--gnus-unread-mail + (when (and doom-modeline-gnus + doom-modeline--gnus-started) + (let ((total-unread-news-number 0)) + (mapc (lambda (g) + (let* ((group (car g)) + (unread (eval `(gnus-group-unread ,group)))) + (when (and (not (seq-contains-p doom-modeline-gnus-excluded-groups group)) + (numberp unread) + (> unread 0)) + (setq total-unread-news-number (+ total-unread-news-number unread))))) + gnus-newsrc-alist) + total-unread-news-number)))) + +;; Update the modeline after changes have been made +(add-hook 'gnus-group-update-hook #'doom-modeline-update-gnus-status) +(add-hook 'gnus-summary-update-hook #'doom-modeline-update-gnus-status) +(add-hook 'gnus-group-update-group-hook #'doom-modeline-update-gnus-status) +(add-hook 'gnus-after-getting-new-news-hook #'doom-modeline-update-gnus-status) + +;; Only start to listen to gnus when gnus is actually running +(defun doom-modeline-start-gnus-listener () + "Start GNUS listener." + (when (and doom-modeline-gnus + (not doom-modeline--gnus-started)) + (setq doom-modeline--gnus-started t) + ;; Scan gnus in the background if the timer is higher than 0 + (doom-modeline-update-gnus-status) + (if (> doom-modeline-gnus-timer 0) + (gnus-demon-add-handler 'gnus-demon-scan-news doom-modeline-gnus-timer doom-modeline-gnus-idle)))) +(add-hook 'gnus-started-hook #'doom-modeline-start-gnus-listener) + +;; Stop the listener if gnus isn't running +(defun doom-modeline-stop-gnus-listener () + "Stop GNUS listener." + (setq doom-modeline--gnus-started nil)) +(add-hook 'gnus-exit-gnus-hook #'doom-modeline-stop-gnus-listener) + +(doom-modeline-def-segment gnus + "Show notifications of any unread emails in `gnus'." + (when (and (doom-modeline--active) + (not doom-modeline--limited-width-p) + doom-modeline-gnus + doom-modeline--gnus-started + ;; Don't display if the unread mails count is zero + (numberp doom-modeline--gnus-unread-mail) + (> doom-modeline--gnus-unread-mail 0)) + (concat + (doom-modeline-spc) + (propertize + (concat + (doom-modeline-icon 'material "email" "πŸ“§" "#" + :face 'doom-modeline-notification + :height 1.1 :v-adjust -0.2) + (doom-modeline-vspc) + (propertize + (if (> doom-modeline--gnus-unread-mail doom-modeline-number-limit) + (format "%d+" doom-modeline-number-limit) + (number-to-string doom-modeline--gnus-unread-mail)) + 'face '(:inherit + (doom-modeline-unread-number doom-modeline-notification)))) + 'mouse-face 'mode-line-highlight + 'help-echo (if (= doom-modeline--gnus-unread-mail 1) + "You have an unread email" + (format "You have %s unread emails" doom-modeline--gnus-unread-mail))) + (doom-modeline-spc)))) + + +;; +;; IRC notifications +;; + +(defun doom-modeline--shorten-irc (name) + "Wrapper for `tracking-shorten' and `erc-track-shorten-function' with NAME. + +One key difference is that when `tracking-shorten' and +`erc-track-shorten-function' returns nil we will instead return the original +value of name. This is necessary in cases where the user has stylized the name +to be an icon and we don't want to remove that so we just return the original." + (or (and (boundp 'tracking-shorten) + (car (tracking-shorten (list name)))) + (and (boundp 'erc-track-shorten-function) + (functionp erc-track-shorten-function) + (car (funcall erc-track-shorten-function (list name)))) + (and (boundp 'rcirc-short-buffer-name) + (rcirc-short-buffer-name name)) + name)) + +(defun doom-modeline--tracking-buffers (buffers) + "Logic to convert some irc BUFFERS to their font-awesome icon." + (mapconcat + (lambda (b) + (propertize + (doom-modeline--shorten-irc (funcall doom-modeline-irc-stylize b)) + 'face '(:inherit (doom-modeline-unread-number doom-modeline-notification)) + 'help-echo (format "IRC Notification: %s\nmouse-1: Switch to buffer" b) + 'mouse-face 'mode-line-highlight + 'local-map (make-mode-line-mouse-map 'mouse-1 + (lambda () + (interactive) + (when (buffer-live-p (get-buffer b)) + (switch-to-buffer b)))))) + buffers + (doom-modeline-vspc))) + +(defun doom-modeline--circe-p () + "Check if `circe' is in use." + (boundp 'tracking-mode-line-buffers)) + +(defun doom-modeline--erc-p () + "Check if `erc' is in use." + (boundp 'erc-modified-channels-alist)) + +(defun doom-modeline--rcirc-p () + "Check if `rcirc' is in use." + (bound-and-true-p rcirc-track-minor-mode)) + +(defun doom-modeline--get-buffers () + "Gets the buffers that have activity." + (cond + ((doom-modeline--circe-p) + tracking-buffers) + ((doom-modeline--erc-p) + (mapcar (lambda (l) + (buffer-name (car l))) + erc-modified-channels-alist)) + ((doom-modeline--rcirc-p) + (mapcar (lambda (b) + (buffer-name b)) + rcirc-activity)))) + +;; Create a modeline segment that contains all the irc tracked buffers +(doom-modeline-def-segment irc-buffers + "The list of shortened, unread irc buffers." + (when (and doom-modeline-irc + (doom-modeline--active) + (not doom-modeline--limited-width-p)) + (let* ((buffers (doom-modeline--get-buffers)) + (number (length buffers))) + (when (> number 0) + (concat + (doom-modeline-spc) + (doom-modeline--tracking-buffers buffers) + (doom-modeline-spc)))))) + +(doom-modeline-def-segment irc + "A notification icon for any unread irc buffer." + (when (and doom-modeline-irc + (doom-modeline--active) + (not doom-modeline--limited-width-p)) + (let* ((buffers (doom-modeline--get-buffers)) + (number (length buffers))) + (when (> number 0) + (concat + (doom-modeline-spc) + + (propertize (concat + (doom-modeline-icon 'material "message" "πŸ—Š" "#" + :face 'doom-modeline-notification + :height 1.0 :v-adjust -0.225) + (doom-modeline-vspc) + ;; Display the number of unread buffers + (propertize (number-to-string number) + 'face '(:inherit + (doom-modeline-unread-number + doom-modeline-notification)))) + 'help-echo (format "IRC Notifications: %s\n%s" + (mapconcat + (lambda (b) (funcall doom-modeline-irc-stylize b)) + buffers + ", ") + (cond + ((doom-modeline--circe-p) + "mouse-1: Switch to previous unread buffer +mouse-3: Switch to next unread buffer") + ((doom-modeline--erc-p) + "mouse-1: Switch to buffer +mouse-3: Switch to next unread buffer") + ((doom-modeline--rcirc-p) + "mouse-1: Switch to server buffer +mouse-3: Switch to next unread buffer"))) + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (cond + ((doom-modeline--circe-p) + (define-key map [mode-line mouse-1] + #'tracking-previous-buffer) + (define-key map [mode-line mouse-3] + #'tracking-next-buffer)) + ((doom-modeline--erc-p) + (define-key map [mode-line mouse-1] + #'erc-switch-to-buffer) + (define-key map [mode-line mouse-3] + #'erc-track-switch-buffer)) + ((doom-modeline--rcirc-p) + (define-key map [mode-line mouse-1] + #'rcirc-switch-to-server-buffer) + (define-key map [mode-line mouse-3] + #'rcirc-next-active-buffer))) + map)) + + ;; Display the unread irc buffers as well + (when doom-modeline-irc-buffers + (concat (doom-modeline-spc) + (doom-modeline--tracking-buffers buffers))) + + (doom-modeline-spc)))))) + +(defun doom-modeline-override-rcirc-modeline () + "Override default `rcirc' mode-line." + (if (bound-and-true-p doom-modeline-mode) + (setq global-mode-string + (delq 'rcirc-activity-string global-mode-string)) + (when (and rcirc-track-minor-mode + (not (memq 'rcirc-activity-string global-mode-string))) + (setq global-mode-string + (append global-mode-string '(rcirc-activity-string)))))) +(add-hook 'rcirc-track-minor-mode-hook #'doom-modeline-override-rcirc-modeline) +(add-hook 'doom-modeline-mode-hook #'doom-modeline-override-rcirc-modeline) + + +;; +;; Battery status +;; + +(defvar doom-modeline--battery-status nil) +(defun doom-modeline-update-battery-status () + "Update battery status." + (setq doom-modeline--battery-status + (when (bound-and-true-p display-battery-mode) + (let* ((data (and battery-status-function + (functionp battery-status-function) + (funcall battery-status-function))) + (charging? (string-equal "AC" (cdr (assoc ?L data)))) + (percentage (car (read-from-string (or (cdr (assq ?p data)) "ERR")))) + (valid-percentage? (and (numberp percentage) + (>= percentage 0) + (<= percentage battery-mode-line-limit))) + (face (if valid-percentage? + (cond (charging? 'doom-modeline-battery-charging) + ((< percentage battery-load-critical) 'doom-modeline-battery-critical) + ((< percentage 25) 'doom-modeline-battery-warning) + ((< percentage 95) 'doom-modeline-battery-normal) + (t 'doom-modeline-battery-full)) + 'doom-modeline-battery-error)) + (icon (if valid-percentage? + (cond (charging? + (doom-modeline-icon 'alltheicon "battery-charging" "πŸ”‹" "+" + :face face :height 1.4 :v-adjust -0.1)) + ((> percentage 95) + (doom-modeline-icon 'faicon "battery-full" "πŸ”‹" "-" + :face face :v-adjust -0.0575)) + ((> percentage 70) + (doom-modeline-icon 'faicon "battery-three-quarters" "πŸ”‹" "-" + :face face :v-adjust -0.0575)) + ((> percentage 40) + (doom-modeline-icon 'faicon "battery-half" "πŸ”‹" "-" + :face face :v-adjust -0.0575)) + ((> percentage battery-load-critical) + (doom-modeline-icon 'faicon "battery-quarter" "πŸ”‹" "-" + :face face :v-adjust -0.0575)) + (t (doom-modeline-icon 'faicon "battery-empty" "πŸ”‹" "!" + :face face :v-adjust -0.0575))) + (doom-modeline-icon 'faicon "battery-empty" "⚠" "N/A" + :face face :v-adjust -0.0575))) + (text (if valid-percentage? (format "%d%%%%" percentage) "")) + (help-echo (if (and battery-echo-area-format data valid-percentage?) + (battery-format battery-echo-area-format data) + "Battery status not available"))) + (cons (propertize icon 'help-echo help-echo) + (propertize text 'face face 'help-echo help-echo)))))) + +(doom-modeline-add-variable-watcher + 'doom-modeline-icon + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-icon val) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (doom-modeline-update-battery-status)))))) + +(doom-modeline-add-variable-watcher + 'doom-modeline-unicode-fallback + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-unicode-fallback val) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (doom-modeline-update-battery-status)))))) + +(doom-modeline-def-segment battery + "Display battery status." + (when (and (doom-modeline--active) + (not doom-modeline--limited-width-p) + (bound-and-true-p display-battery-mode)) + (concat (doom-modeline-spc) + (concat + (car doom-modeline--battery-status) + (doom-modeline-vspc) + (cdr doom-modeline--battery-status)) + (doom-modeline-spc)))) + +(defun doom-modeline-override-battery-modeline () + "Override default battery mode-line." + (if (bound-and-true-p doom-modeline-mode) + (progn + (advice-add #'battery-update :override #'doom-modeline-update-battery-status) + (setq global-mode-string + (delq 'battery-mode-line-string global-mode-string)) + (and (bound-and-true-p display-battery-mode) (battery-update))) + (progn + (advice-remove #'battery-update #'doom-modeline-update-battery-status) + (when (and display-battery-mode battery-status-function battery-mode-line-format + (not (memq 'battery-mode-line-string global-mode-string))) + (setq global-mode-string + (append global-mode-string '(battery-mode-line-string))))))) +(add-hook 'display-battery-mode-hook #'doom-modeline-override-battery-modeline) +(add-hook 'doom-modeline-mode-hook #'doom-modeline-override-battery-modeline) + + +;; +;; Package information +;; + +(doom-modeline-def-segment package + "Show package information via `paradox'." + (let ((active (doom-modeline--active))) + (concat + (let ((front (format-mode-line 'mode-line-front-space))) + (if active + front + (propertize front 'face 'mode-line-inactive))) + + (when (and doom-modeline-icon doom-modeline-major-mode-icon) + (concat + (doom-modeline-spc) + (doom-modeline-icon 'faicon "archive" nil nil + :face (if active + (if doom-modeline-major-mode-color-icon + 'all-the-icons-silver + 'mode-line) + 'mode-line-inactive) + :height 1.0 + :v-adjust -0.0575))) + (let ((info (format-mode-line 'mode-line-buffer-identification))) + (if active + info + (propertize info 'face 'mode-line-inactive)))))) + + +;; +;; Helm +;; + +(defvar doom-modeline--helm-buffer-ids + '(("*helm*" . "HELM") + ("*helm M-x*" . "HELM M-x") + ("*swiper*" . "SWIPER") + ("*Projectile Perspectives*" . "HELM Projectile Perspectives") + ("*Projectile Layouts*" . "HELM Projectile Layouts") + ("*helm-ag*" . (lambda () + (format "HELM Ag: Using %s" + (car (split-string helm-ag-base-command)))))) + "Alist of custom helm buffer names to use. +The cdr can also be a function that returns a name to use.") + +(doom-modeline-def-segment helm-buffer-id + "Helm session identifier." + (when (bound-and-true-p helm-alive-p) + (let ((active (doom-modeline--active))) + (concat + (doom-modeline-spc) + (when doom-modeline-icon + (concat + (doom-modeline-icon 'fileicon "elisp" nil nil + :face (if active + (if doom-modeline-major-mode-color-icon + 'all-the-icons-blue + 'mode-line) + 'mode-line-inactive) + :height 1.0 + :v-adjust -0.15) + (doom-modeline-spc))) + (propertize + (let ((custom (cdr (assoc (buffer-name) doom-modeline--helm-buffer-ids))) + (case-fold-search t) + (name (replace-regexp-in-string "-" " " (buffer-name)))) + (cond ((stringp custom) custom) + ((functionp custom) (funcall custom)) + (t + (string-match "\\*helm:? \\(mode \\)?\\([^\\*]+\\)\\*" name) + (concat "HELM " (capitalize (match-string 2 name)))))) + 'face (if active' doom-modeline-buffer-file 'mode-line-inactive)) + (doom-modeline-spc))))) + +(doom-modeline-def-segment helm-number + "Number of helm candidates." + (when (bound-and-true-p helm-alive-p) + (let ((active (doom-modeline--active))) + (concat + (propertize (format " %d/%d" + (helm-candidate-number-at-point) + (helm-get-candidate-number t)) + 'face (if active 'doom-modeline-buffer-path 'mode-line-inactive)) + (propertize (format " (%d total) " (helm-get-candidate-number)) + 'face (if active 'doom-modeline-info 'mode-line-inactive)))))) + +(doom-modeline-def-segment helm-help + "Helm keybindings help." + (when (bound-and-true-p helm-alive-p) + (let ((active (doom-modeline--active))) + (-interleave + (mapcar (lambda (s) + (propertize (substitute-command-keys s) + 'face (if active + 'doom-modeline-buffer-file + 'mode-line-inactive))) + '("\\\\[helm-help]" + "\\\\[helm-select-action]" + "\\\\[helm-maybe-exit-minibuffer]/F1/F2...")) + (mapcar (lambda (s) + (propertize s 'face (if active 'mode-line 'mode-line-inactive))) + '("(help) " "(actions) " "(action) ")))))) + +(doom-modeline-def-segment helm-prefix-argument + "Helm prefix argument." + (when (and (bound-and-true-p helm-alive-p) + helm--mode-line-display-prefarg) + (let ((arg (prefix-numeric-value (or prefix-arg current-prefix-arg)))) + (unless (= arg 1) + (propertize (format "C-u %s" arg) + 'face (if (doom-modeline--active) + 'doom-modeline-info + 'mode-line-inactive)))))) + +(defvar doom-modeline--helm-current-source nil + "The currently active helm source.") +(doom-modeline-def-segment helm-follow + "Helm follow indicator." + (when (and (bound-and-true-p helm-alive-p) + doom-modeline--helm-current-source + (eq 1 (cdr (assq 'follow doom-modeline--helm-current-source)))) + (propertize "HF" 'face (if (doom-modeline--active) + 'mode-line + 'mode-line-inactive)))) + +;; +;; Git timemachine +;; + +(doom-modeline-def-segment git-timemachine + (let ((active (doom-modeline--active))) + (concat + (doom-modeline-spc) + (doom-modeline--buffer-mode-icon) + (doom-modeline--buffer-state-icon) + (propertize "*%b*" 'face (if active + 'doom-modeline-buffer-timemachine + 'mode-line-inactive))))) + +;; +;; Markdown/Org preview +;; + +(doom-modeline-def-segment grip + (when (bound-and-true-p grip-mode) + (concat + (doom-modeline-spc) + (let ((face (if (doom-modeline--active) + (if grip--process + (pcase (process-status grip--process) + ('run 'doom-modeline-buffer-path) + ('exit 'doom-modeline-warning) + (_ 'doom-modeline-urgent)) + 'doom-modeline-urgent) + 'mode-line-inactive))) + (propertize (doom-modeline-icon 'material "pageview" "πŸ—" "@" + :face (if doom-modeline-icon + `(:inherit ,face :weight normal) + face) + :height 1.2 :v-adjust -0.2) + 'help-echo (format "Preview on %s +mouse-1: Preview in browser +mouse-2: Stop preview +mouse-3: Restart preview" + (grip--preview-url)) + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (define-key map [mode-line mouse-1] + #'grip-browse-preview) + (define-key map [mode-line mouse-2] + #'grip-stop-preview) + (define-key map [mode-line mouse-3] + #'grip-restart-preview) + map))) + (doom-modeline-spc)))) + +;; +;; Follow mode +;; + +(doom-modeline-def-segment follow + (when (bound-and-true-p follow-mode) + (let* ((windows (follow-all-followers)) + (nwindows (length windows)) + (nfollowing (- (length (memq (selected-window) windows)) + 1))) + (concat + (doom-modeline-spc) + (propertize (format "Follow %d/%d" (- nwindows nfollowing) nwindows) + 'face 'doom-modeline-buffer-minor-mode))))) + +(provide 'doom-modeline-segments) + +;;; doom-modeline-segments.el ends here diff --git a/code/elpa/doom-modeline-20220412.853/doom-modeline.el b/code/elpa/doom-modeline-20220412.853/doom-modeline.el new file mode 100644 index 0000000..b48bda5 --- /dev/null +++ b/code/elpa/doom-modeline-20220412.853/doom-modeline.el @@ -0,0 +1,311 @@ +;;; doom-modeline.el --- A minimal and modern mode-line -*- lexical-binding: t; -*- + +;; Copyright (C) 2018-2020 Vincent Zhang + +;; Author: Vincent Zhang +;; Homepage: https://github.com/seagle0128/doom-modeline +;; Version: 3.3.0 +;; Package-Requires: ((emacs "25.1") (all-the-icons "2.2.0") (shrink-path "0.2.0") (dash "2.11.0")) +;; Keywords: faces mode-line + +;; This file is not part of GNU Emacs. + +;; +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . +;; + +;;; Commentary: +;; +;; This package offers a fancy and fast mode-line inspired by minimalism design. +;; +;; It's integrated into Doom Emacs (https://github.com/hlissner/doom-emacs) and +;; Centaur Emacs (https://github.com/seagle0128/.emacs.d). +;; +;; The doom-modeline offers: +;; - A match count panel (for anzu, iedit, multiple-cursors, symbol-overlay, +;; evil-search and evil-substitute) +;; - An indicator for recording a macro +;; - Current environment version (e.g. python, ruby, go, etc.) in the major-mode +;; - A customizable mode-line height (see doom-modeline-height) +;; - A minor modes segment which is compatible with minions +;; - An error/warning count segment for flymake/flycheck +;; - A workspace number segment for eyebrowse +;; - A perspective name segment for persp-mode +;; - A window number segment for winum and window-numbering +;; - An indicator for modal editing state, including evil, overwrite, god, ryo +;; and xah-fly-keys, etc. +;; - An indicator for battery status +;; - An indicator for current input method +;; - An indicator for debug state +;; - An indicator for remote host +;; - An indicator for LSP state with lsp-mode or eglot +;; - An indicator for github notifications +;; - An indicator for unread emails with mu4e-alert +;; - An indicator for unread emails with gnus (basically builtin) +;; - An indicator for irc notifications with circe, rcirc or erc. +;; - An indicator for buffer position which is compatible with nyan-mode or poke-line +;; - An indicator for party parrot +;; - An indicator for PDF page number with pdf-tools +;; - An indicator for markdown/org previews with grip +;; - Truncated file name, file icon, buffer state and project name in buffer +;; information segment, which is compatible with project, find-file-in-project +;; and projectile +;; - New mode-line for Info-mode buffers +;; - New package mode-line for paradox +;; - New mode-line for helm buffers +;; - New mode-line for git-timemachine buffers +;; +;; Installation: +;; From melpa, `M-x package-install RET doom-modeline RET`. +;; In `init.el`, +;; (require 'doom-modeline) +;; (doom-modeline-mode 1) +;; or +;; (use-package doom-modeline +;; :ensure t +;; :hook (after-init . doom-modeline-mode)) +;; + +;;; Code: + +(require 'doom-modeline-core) +(require 'doom-modeline-segments) + + +;; +;; Mode lines +;; + +(doom-modeline-def-modeline 'main + '(bar workspace-name window-number modals matches follow buffer-info remote-host buffer-position word-count parrot selection-info) + '(objed-state misc-info persp-name battery grip irc mu4e gnus github debug repl lsp minor-modes input-method indent-info buffer-encoding major-mode process vcs checker)) + +(doom-modeline-def-modeline 'minimal + '(bar matches buffer-info-simple) + '(media-info major-mode)) + +(doom-modeline-def-modeline 'special + '(bar window-number modals matches buffer-info buffer-position word-count parrot selection-info) + '(objed-state misc-info battery irc-buffers debug minor-modes input-method indent-info buffer-encoding major-mode process)) + +(doom-modeline-def-modeline 'project + '(bar window-number modals buffer-default-directory) + '(misc-info battery irc mu4e gnus github debug minor-modes input-method major-mode process)) + +(doom-modeline-def-modeline 'dashboard + '(bar window-number buffer-default-directory-simple) + '(misc-info battery irc mu4e gnus github debug minor-modes input-method major-mode process)) + +(doom-modeline-def-modeline 'vcs + '(bar window-number modals matches buffer-info buffer-position parrot selection-info) + '(misc-info battery irc mu4e gnus github debug minor-modes buffer-encoding major-mode process)) + +(doom-modeline-def-modeline 'package + '(bar window-number package) + '(misc-info major-mode process)) + +(doom-modeline-def-modeline 'info + '(bar window-number buffer-info info-nodes buffer-position parrot selection-info) + '(misc-info buffer-encoding major-mode)) + +(doom-modeline-def-modeline 'media + '(bar window-number buffer-size buffer-info) + '(misc-info media-info major-mode process vcs)) + +(doom-modeline-def-modeline 'message + '(bar window-number modals matches buffer-info-simple buffer-position word-count parrot selection-info) + '(objed-state misc-info battery debug minor-modes input-method indent-info buffer-encoding major-mode)) + +(doom-modeline-def-modeline 'pdf + '(bar window-number matches buffer-info pdf-pages) + '(misc-info major-mode process vcs)) + +(doom-modeline-def-modeline 'org-src + '(bar window-number modals matches buffer-info-simple buffer-position word-count parrot selection-info) + '(objed-state misc-info debug lsp minor-modes input-method indent-info buffer-encoding major-mode process checker)) + +(doom-modeline-def-modeline 'helm + '(bar helm-buffer-id helm-number helm-follow helm-prefix-argument) + '(helm-help)) + +(doom-modeline-def-modeline 'timemachine + '(bar window-number modals matches git-timemachine buffer-position word-count parrot selection-info) + '(misc-info minor-modes indent-info buffer-encoding major-mode)) + + +;; +;; Interfaces +;; + +;;;###autoload +(defun doom-modeline-init () + "Initialize doom mode-line." + (doom-modeline-mode 1)) +(make-obsolete 'doom-modeline-init 'doom-modeline-mode "1.6.0") + +;;;###autoload +(defun doom-modeline-set-main-modeline (&optional default) + "Set main mode-line. +If DEFAULT is non-nil, set the default mode-line for all buffers." + (doom-modeline-set-modeline 'main default)) + +;;;###autoload +(defun doom-modeline-set-minimal-modeline () + "Set minimal mode-line." + (doom-modeline-set-modeline 'minimal)) + +;;;###autoload +(defun doom-modeline-set-special-modeline () + "Set special mode-line." + (doom-modeline-set-modeline 'special)) + +;;;###autoload +(defun doom-modeline-set-project-modeline () + "Set project mode-line." + (doom-modeline-set-modeline 'project)) + +;;;###autoload +(defun doom-modeline-set-dashboard-modeline () + "Set dashboard mode-line." + (doom-modeline-set-modeline 'dashboard)) + +;;;###autoload +(defun doom-modeline-set-vcs-modeline () + "Set vcs mode-line." + (doom-modeline-set-modeline 'vcs)) + +;;;###autoload +(defun doom-modeline-set-info-modeline () + "Set Info mode-line." + (doom-modeline-set-modeline 'info)) + +;;;###autoload +(defun doom-modeline-set-package-modeline () + "Set package mode-line." + (doom-modeline-set-modeline 'package)) + +;;;###autoload +(defun doom-modeline-set-media-modeline () + "Set media mode-line." + (doom-modeline-set-modeline 'media)) + +;;;###autoload +(defun doom-modeline-set-message-modeline () + "Set message mode-line." + (doom-modeline-set-modeline 'message)) + +;;;###autoload +(defun doom-modeline-set-pdf-modeline () + "Set pdf mode-line." + (doom-modeline-set-modeline 'pdf)) + +;;;###autoload +(defun doom-modeline-set-org-src-modeline () + "Set org-src mode-line." + (doom-modeline-set-modeline 'org-src)) + +;;;###autoload +(defun doom-modeline-set-helm-modeline (&rest _) ; To advice helm + "Set helm mode-line." + (doom-modeline-set-modeline 'helm)) + +;;;###autoload +(defun doom-modeline-set-timemachine-modeline () + "Set timemachine mode-line." + (doom-modeline-set-modeline 'timemachine)) + + +;; +;; Minor mode +;; + +(defvar doom-modeline-mode-map (make-sparse-keymap)) + +;; Suppress warnings +(defvar 2C-mode-line-format) +(declare-function helm-display-mode-line "ext:helm-core") + +;;;###autoload +(define-minor-mode doom-modeline-mode + "Toggle doom-modeline on or off." + :group 'doom-modeline + :global t + :lighter nil + :keymap doom-modeline-mode-map + (if doom-modeline-mode + (progn + (doom-modeline-refresh-bars) ; Create bars + (doom-modeline-set-main-modeline t) ; Set default mode-line + + ;; Apply to all existing buffers. + (dolist (buf (buffer-list)) + (with-current-buffer buf + (doom-modeline-set-main-modeline))) + + ;; For two-column editing + (setq 2C-mode-line-format (doom-modeline 'special)) + + ;; Add hooks + (add-hook 'Info-mode-hook #'doom-modeline-set-info-modeline) + (add-hook 'dired-mode-hook #'doom-modeline-set-project-modeline) + (add-hook 'dashboard-mode-hook #'doom-modeline-set-dashboard-modeline) + (add-hook 'image-mode-hook #'doom-modeline-set-media-modeline) + (add-hook 'message-mode-hook #'doom-modeline-set-message-modeline) + (add-hook 'git-commit-mode-hook #'doom-modeline-set-message-modeline) + (add-hook 'magit-mode-hook #'doom-modeline-set-vcs-modeline) + (add-hook 'circe-mode-hook #'doom-modeline-set-special-modeline) + (add-hook 'erc-mode-hook #'doom-modeline-set-special-modeline) + (add-hook 'rcirc-mode-hook #'doom-modeline-set-special-modeline) + (add-hook 'pdf-view-mode-hook #'doom-modeline-set-pdf-modeline) + (add-hook 'org-src-mode-hook #'doom-modeline-set-org-src-modeline) + (add-hook 'git-timemachine-mode-hook #'doom-modeline-set-timemachine-modeline) + (add-hook 'paradox-menu-mode-hook #'doom-modeline-set-package-modeline) + (add-hook 'xwidget-webkit-mode-hook #'doom-modeline-set-minimal-modeline) + + ;; Add advices + (advice-add #'helm-display-mode-line :after #'doom-modeline-set-helm-modeline)) + (progn + ;; Restore mode-line + (let ((original-format (doom-modeline--original-value 'mode-line-format))) + (setq-default mode-line-format original-format) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (setq mode-line-format original-format)))) + + ;; For two-column editing + (setq 2C-mode-line-format (doom-modeline--original-value '2C-mode-line-format)) + + ;; Remove hooks + (remove-hook 'Info-mode-hook #'doom-modeline-set-info-modeline) + (remove-hook 'dired-mode-hook #'doom-modeline-set-project-modeline) + (remove-hook 'dashboard-mode-hook #'doom-modeline-set-dashboard-modeline) + (remove-hook 'image-mode-hook #'doom-modeline-set-media-modeline) + (remove-hook 'message-mode-hook #'doom-modeline-set-message-modeline) + (remove-hook 'git-commit-mode-hook #'doom-modeline-set-message-modeline) + (remove-hook 'magit-mode-hook #'doom-modeline-set-vcs-modeline) + (remove-hook 'circe-mode-hook #'doom-modeline-set-special-modeline) + (remove-hook 'erc-mode-hook #'doom-modeline-set-special-modeline) + (remove-hook 'rcirc-mode-hook #'doom-modeline-set-special-modeline) + (remove-hook 'pdf-view-mode-hook #'doom-modeline-set-pdf-modeline) + (remove-hook 'org-src-mode-hook #'doom-modeline-set-org-src-modeline) + (remove-hook 'git-timemachine-mode-hook #'doom-modeline-set-timemachine-modeline) + (remove-hook 'paradox-menu-mode-hook #'doom-modeline-set-package-modeline) + (remove-hook 'xwidget-webkit-mode-hook #'doom-modeline-set-minimal-modeline) + + ;; Remove advices + (advice-remove #'helm-display-mode-line #'doom-modeline-set-helm-modeline)))) + +(provide 'doom-modeline) + +;;; doom-modeline.el ends here diff --git a/code/elpa/shrink-path-20190208.1335/shrink-path-autoloads.el b/code/elpa/shrink-path-20190208.1335/shrink-path-autoloads.el new file mode 100644 index 0000000..776b017 --- /dev/null +++ b/code/elpa/shrink-path-20190208.1335/shrink-path-autoloads.el @@ -0,0 +1,22 @@ +;;; shrink-path-autoloads.el --- automatically extracted autoloads -*- lexical-binding: t -*- +;; +;;; Code: + +(add-to-list 'load-path (directory-file-name + (or (file-name-directory #$) (car load-path)))) + + +;;;### (autoloads nil "shrink-path" "shrink-path.el" (0 0 0 0)) +;;; Generated autoloads from shrink-path.el + +(register-definition-prefixes "shrink-path" '("shrink-path-")) + +;;;*** + +;; Local Variables: +;; version-control: never +;; no-byte-compile: t +;; no-update-autoloads: t +;; coding: utf-8 +;; End: +;;; shrink-path-autoloads.el ends here diff --git a/code/elpa/shrink-path-20190208.1335/shrink-path-pkg.el b/code/elpa/shrink-path-20190208.1335/shrink-path-pkg.el new file mode 100644 index 0000000..c568bd0 --- /dev/null +++ b/code/elpa/shrink-path-20190208.1335/shrink-path-pkg.el @@ -0,0 +1,2 @@ +;;; Generated package description from shrink-path.el -*- no-byte-compile: t -*- +(define-package "shrink-path" "20190208.1335" "fish-style path" '((emacs "24") (s "1.6.1") (dash "1.8.0") (f "0.10.0")) :commit "c14882c8599aec79a6e8ef2d06454254bb3e1e41" :authors '(("Benjamin Andresen")) :maintainer '("Benjamin Andresen") :url "https://gitlab.com/bennya/shrink-path.el") diff --git a/code/elpa/shrink-path-20190208.1335/shrink-path.el b/code/elpa/shrink-path-20190208.1335/shrink-path.el new file mode 100644 index 0000000..154bfd6 --- /dev/null +++ b/code/elpa/shrink-path-20190208.1335/shrink-path.el @@ -0,0 +1,150 @@ +;;; shrink-path.el --- fish-style path -*- lexical-binding: t; -*- + +;; Copyright (C) 2017 Benjamin Andresen + +;; Author: Benjamin Andresen +;; Version: 0.3.1 +;; Package-Version: 20190208.1335 +;; Package-Commit: c14882c8599aec79a6e8ef2d06454254bb3e1e41 +;; URL: https://gitlab.com/bennya/shrink-path.el +;; Package-Requires: ((emacs "24") (s "1.6.1") (dash "1.8.0") (f "0.10.0")) + +;; This file is NOT part of GNU Emacs. + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3, or (at your option) +;; any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file LICENSE. If not, write to the +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; Commentary: + +;; Provides functions that offer fish shell[1] path truncation. +;; Directory /usr/share/emacs/site-lisp => /u/s/e/site-lisp +;; +;; Also includes utility functions that make integration in eshell or the +;; modeline easier. +;; +;; [1] https://fishshell.com/ + + +;;; Code: +(require 'dash) +(require 's) +(require 'f) +(require 'rx) + +(defun shrink-path--truncate (str) + "Return STR's first character or first two characters if hidden." + (substring str 0 (if (s-starts-with? "." str) 2 1))) + +(defun shrink-path--dirs-internal (full-path &optional truncate-all) + "Return fish-style truncated string based on FULL-PATH. +Optional parameter TRUNCATE-ALL will cause the function to truncate the last +directory too." + (let* ((home (expand-file-name "~")) + (path (replace-regexp-in-string + (s-concat "^" home) "~" full-path)) + (split (s-split "/" path 'omit-nulls)) + (split-len (length split)) + shrunk) + (->> split + (--map-indexed (if (= it-index (1- split-len)) + (if truncate-all (shrink-path--truncate it) it) + (shrink-path--truncate it))) + (s-join "/") + (setq shrunk)) + (s-concat (unless (s-matches? (rx bos (or "~" "/")) shrunk) "/") + shrunk + (unless (s-ends-with? "/" shrunk) "/")))) + + +(defun shrink-path-dirs (&optional path truncate-tail) + "Given PATH return fish-styled shrunken down path. +TRUNCATE-TAIL will cause the function to truncate the last directory too." + (let* ((path (or path default-directory)) + (path (f-full path))) + (cond + ((s-equals? (f-short path) "/") "/") + ((s-matches? (rx bos (or "~" "/") eos) "~/")) + (t (shrink-path--dirs-internal path truncate-tail))))) + +(defun shrink-path-expand (str &optional absolute-p) + "Return expanded path from STR if found or list of matches on multiple. +The path referred to by STR has to exist for this to work. +If ABSOLUTE-P is t the returned path will be absolute." + (let* ((str-split (s-split "/" str 'omit-nulls)) + (head (car str-split))) + (if (= (length str-split) 1) + (s-concat "/" str-split) + (--> (-drop 1 str-split) ;; drop head + (-map (lambda (e) (s-concat e "*")) it) + (-drop-last 1 it) ;; drop tail as it may not exist + (s-join "/" it) + (s-concat (if (s-equals? head "~") "~/" head) it) + (f-glob it) + (-map (lambda (e) (s-concat e "/" (-last-item str-split))) it) + (if absolute-p (-map #'f-full it) (-map #'f-abbrev it)) + (if (= (length it) 1) (car it) it))))) + +(defun shrink-path-prompt (&optional pwd) + "Return cons of BASE and DIR for PWD. +If PWD isn't provided will default to `default-directory'." + (let* ((pwd (or pwd default-directory)) + (shrunk (shrink-path-dirs pwd)) + (split (--> shrunk (s-split "/" it 'omit-nulls))) + base dir) + (setq dir (or (-last-item split) "/")) + (setq base (if (s-equals? dir "/") "" + (s-chop-suffix (s-concat dir "/") shrunk))) + (cons base dir))) + +(defun shrink-path-file (file &optional truncate-tail) + "Return FILE's shrunk down path and filename. +TRUNCATE-TAIL controls if the last directory should also be shortened." + (let ((filename (f-filename file)) + (dirname (f-dirname file))) + (s-concat (shrink-path-dirs dirname truncate-tail) filename))) + +(defun shrink-path-file-expand (str &optional exists-p absolute-p) + "Return STR's expanded filename. +The path referred to by STR has to exist for this to work. +If EXISTS-P is t the filename also has to exist. +If ABSOLUTE-P is t the returned path will be absolute." + (let ((expanded (shrink-path-expand str absolute-p))) + (if (and expanded exists-p) + (if (f-exists? expanded) expanded) + expanded))) + +(defun shrink-path-file-mixed (shrink-path rel-path filename) + "Returns list of mixed truncated file name locations. + +Consists of SHRINK-PATH's parent, SHRINK-PATH basename, relative REL-PATH and +FILENAME. +For use in modeline or prompts, etc." + (let ((shrunk-dirs (shrink-path-prompt shrink-path)) + sp-parent sp-rel rel-rel nd-file) + + (when (f-descendant-of? filename shrink-path) + (when shrunk-dirs + (setq sp-parent (car shrunk-dirs) + sp-rel (cdr shrunk-dirs))) + (setq rel-rel (if (or (f-same? rel-path shrink-path) + (s-equals? (f-relative rel-path shrink-path) ".")) + nil + (f-relative rel-path shrink-path))) + (setq nd-file (file-name-nondirectory filename)) + + (list sp-parent sp-rel rel-rel nd-file)))) + +(provide 'shrink-path) +;;; shrink-path.el ends here diff --git a/common/fonts/all-the-icons.ttf b/common/fonts/all-the-icons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..634d48e99f20948a9864b445fe9ec21f55f62b07 GIT binary patch literal 44732 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 Q`2ay0j*BvS>wW+J3s^76TmS$7 literal 0 HcmV?d00001 diff --git a/common/fonts/file-icons.ttf b/common/fonts/file-icons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..dd42225c804fbf624aaf5b7289b0137a62246316 GIT binary patch literal 489672 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

Kki0go|WfkVfl@{g91>D>!FipFSz(A!{x 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

XS<+8PC&k%m378Jw@>Y!L?(1I@|*hIVj_{g7ME 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

UbT^y_>Ub5-Ar<-6|HaAydrX8foJq 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 a&Jp1WiPU%sUs5uKfByd;irDh1EdK(e@hH>) literal 0 HcmV?d00001 diff --git a/common/fonts/fontawesome.ttf b/common/fonts/fontawesome.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f221e50a2ef60738ba30932d834530cdfe55cb3e GIT binary patch literal 152796 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

=v_rA!CPE#mM^4@)}X7qf;At+v)G*FZd&; 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 ALjV8( literal 0 HcmV?d00001 diff --git a/common/fonts/material-design-icons.ttf b/common/fonts/material-design-icons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..7015564ad166a3e9d88c82f17829f0cc01ebe29a GIT binary patch literal 128180 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 ohyj3!`#ee%L;DTjx@8!5k5~VH0QmdE^#A|> literal 0 HcmV?d00001 diff --git a/common/fonts/octicons.ttf b/common/fonts/octicons.ttf new file mode 100644 index 0000000000000000000000000000000000000000..6f3edd66791e5ad76e6a9e2c56650afac6d2d05a GIT binary patch literal 52544 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 z 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%0D#Rj$k_pOl`WL;%6e`2iA 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 C!5iiP literal 0 HcmV?d00001 diff --git a/org/elpa/doom-modeline-20220412.853/doom-modeline-autoloads.el b/org/elpa/doom-modeline-20220412.853/doom-modeline-autoloads.el new file mode 100644 index 0000000..481641c --- /dev/null +++ b/org/elpa/doom-modeline-20220412.853/doom-modeline-autoloads.el @@ -0,0 +1,135 @@ +;;; doom-modeline-autoloads.el --- automatically extracted autoloads -*- lexical-binding: t -*- +;; +;;; Code: + +(add-to-list 'load-path (directory-file-name + (or (file-name-directory #$) (car load-path)))) + + +;;;### (autoloads nil "doom-modeline" "doom-modeline.el" (0 0 0 0)) +;;; Generated autoloads from doom-modeline.el + +(autoload 'doom-modeline-init "doom-modeline" "\ +Initialize doom mode-line." nil nil) + +(autoload 'doom-modeline-set-main-modeline "doom-modeline" "\ +Set main mode-line. +If DEFAULT is non-nil, set the default mode-line for all buffers. + +\(fn &optional DEFAULT)" nil nil) + +(autoload 'doom-modeline-set-minimal-modeline "doom-modeline" "\ +Set minimal mode-line." nil nil) + +(autoload 'doom-modeline-set-special-modeline "doom-modeline" "\ +Set special mode-line." nil nil) + +(autoload 'doom-modeline-set-project-modeline "doom-modeline" "\ +Set project mode-line." nil nil) + +(autoload 'doom-modeline-set-dashboard-modeline "doom-modeline" "\ +Set dashboard mode-line." nil nil) + +(autoload 'doom-modeline-set-vcs-modeline "doom-modeline" "\ +Set vcs mode-line." nil nil) + +(autoload 'doom-modeline-set-info-modeline "doom-modeline" "\ +Set Info mode-line." nil nil) + +(autoload 'doom-modeline-set-package-modeline "doom-modeline" "\ +Set package mode-line." nil nil) + +(autoload 'doom-modeline-set-media-modeline "doom-modeline" "\ +Set media mode-line." nil nil) + +(autoload 'doom-modeline-set-message-modeline "doom-modeline" "\ +Set message mode-line." nil nil) + +(autoload 'doom-modeline-set-pdf-modeline "doom-modeline" "\ +Set pdf mode-line." nil nil) + +(autoload 'doom-modeline-set-org-src-modeline "doom-modeline" "\ +Set org-src mode-line." nil nil) + +(autoload 'doom-modeline-set-helm-modeline "doom-modeline" "\ +Set helm mode-line. + +\(fn &rest _)" nil nil) + +(autoload 'doom-modeline-set-timemachine-modeline "doom-modeline" "\ +Set timemachine mode-line." nil nil) + +(defvar doom-modeline-mode nil "\ +Non-nil if Doom-Modeline mode is enabled. +See the `doom-modeline-mode' command +for a description of this minor mode. +Setting this variable directly does not take effect; +either customize it (see the info node `Easy Customization') +or call the function `doom-modeline-mode'.") + +(custom-autoload 'doom-modeline-mode "doom-modeline" nil) + +(autoload 'doom-modeline-mode "doom-modeline" "\ +Toggle doom-modeline on or off. + +This is a minor mode. If called interactively, toggle the +`Doom-Modeline mode' mode. If the prefix argument is positive, +enable the mode, and if it is zero or negative, disable the mode. + +If called from Lisp, toggle the mode if ARG is `toggle'. Enable +the mode if ARG is nil, omitted, or is a positive number. +Disable the mode if ARG is a negative number. + +To check whether the minor mode is enabled in the current buffer, +evaluate `(default-value \\='doom-modeline-mode)'. + +The mode's hook is called both when the mode is enabled and when +it is disabled. + +\(fn &optional ARG)" t nil) + +(register-definition-prefixes "doom-modeline" '("doom-modeline-mode-map")) + +;;;*** + +;;;### (autoloads nil "doom-modeline-core" "doom-modeline-core.el" +;;;;;; (0 0 0 0)) +;;; Generated autoloads from doom-modeline-core.el + +(register-definition-prefixes "doom-modeline-core" '("doom-modeline")) + +;;;*** + +;;;### (autoloads nil "doom-modeline-env" "doom-modeline-env.el" +;;;;;; (0 0 0 0)) +;;; Generated autoloads from doom-modeline-env.el + (autoload 'doom-modeline-env-setup-python "doom-modeline-env") + (autoload 'doom-modeline-env-setup-ruby "doom-modeline-env") + (autoload 'doom-modeline-env-setup-perl "doom-modeline-env") + (autoload 'doom-modeline-env-setup-go "doom-modeline-env") + (autoload 'doom-modeline-env-setup-elixir "doom-modeline-env") + (autoload 'doom-modeline-env-setup-rust "doom-modeline-env") + +(register-definition-prefixes "doom-modeline-env" '("doom-modeline-")) + +;;;*** + +;;;### (autoloads nil "doom-modeline-segments" "doom-modeline-segments.el" +;;;;;; (0 0 0 0)) +;;; Generated autoloads from doom-modeline-segments.el + +(register-definition-prefixes "doom-modeline-segments" '("doom-modeline-")) + +;;;*** + +;;;### (autoloads nil nil ("doom-modeline-pkg.el") (0 0 0 0)) + +;;;*** + +;; Local Variables: +;; version-control: never +;; no-byte-compile: t +;; no-update-autoloads: t +;; coding: utf-8 +;; End: +;;; doom-modeline-autoloads.el ends here diff --git a/org/elpa/doom-modeline-20220412.853/doom-modeline-core.el b/org/elpa/doom-modeline-20220412.853/doom-modeline-core.el new file mode 100644 index 0000000..86360f1 --- /dev/null +++ b/org/elpa/doom-modeline-20220412.853/doom-modeline-core.el @@ -0,0 +1,1394 @@ +;;; doom-modeline-core.el --- The core libraries for doom-modeline -*- lexical-binding: t; -*- + +;; Copyright (C) 2018-2020 Vincent Zhang + +;; This file is not part of GNU Emacs. + +;; +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . +;; + +;;; Commentary: +;; +;; The core libraries for doom-modeline. +;; + +;;; Code: + +(require 'cl-lib) +(require 'subr-x) +(require 'dash) +(require 'all-the-icons) +(require 'shrink-path) + + +;; +;; Compatibility +;; + +(eval-and-compile + (when (< emacs-major-version 26) + ;; Define `if-let*' and `when-let*' variants for 25 users. + (unless (fboundp 'if-let*) (defalias 'if-let* #'if-let)) + (unless (fboundp 'when-let*) (defalias 'when-let* #'when-let)))) + +;; Don’t compact font caches during GC. +(when (eq system-type 'windows-nt) + (setq inhibit-compacting-font-caches t)) + +;;`file-local-name' is introduced in 25.2.2. +(unless (fboundp 'file-local-name) + (defun file-local-name (file) + "Return the local name component of FILE. +It returns a file name which can be used directly as argument of +`process-file', `start-file-process', or `shell-command'." + (or (file-remote-p file 'localname) file))) + +;; Set correct font width for `all-the-icons' for appropriate mode-line width. +;; @see https://emacs.stackexchange.com/questions/14420/how-can-i-fix-incorrect-character-width +(defun doom-modeline--set-char-widths (alist) + "Set correct widths of icons characters in ALIST." + (while (char-table-parent char-width-table) + (setq char-width-table (char-table-parent char-width-table))) + (dolist (pair alist) + (let ((width (car pair)) + (chars (cdr pair)) + (table (make-char-table nil))) + (dolist (char chars) + (set-char-table-range table char width)) + (optimize-char-table table) + (set-char-table-parent table char-width-table) + (setq char-width-table table)))) + +(defconst doom-modeline-rhs-icons-alist + '((2 . (;; VCS + ?\xf0ac ; git-compare + ?\xf023 ; git-merge + ?\xf03f ; arrow-down + ?\xf02d ; alert + ?\xf020 ; git-branch + + ;; Checker + ?\xe611 ; do_not_disturb_alt + ?\xe5ca ; check + ?\xe192 ; access_time + ?\xe624 ; sim_card_alert + ?\xe034 ; pause + ?\xe645 ; priority_high + + ;; Minor modes + ?\xf02f ; gear + + ;; Persp + ?\xe2c7 ; folder + + ;; Preview + ?\xe8a0 ; pageview + + ;; REPL + ?\xf155 ; dollar-sign + + ;; LSP + ?\xf135 ; rocket + + ;; GitHub + ?\xf09b ; github + + ;; Debug + ?\xf188 ; bug + + ;; Mail + ?\xe0be ; email + + ;; IRC + ?\xe0c9 ; message + + ;; Battery + ?\xe939 ; battery-charging + ?\xf244 ; battery-empty + ?\xf240 ; battery-full + ?\xf242 ; battery-half + ?\xf243 ; battery-quarter + ?\xf241 ; battery-three-quarters + )))) + +(defun doom-modeline-set-char-widths (&rest _) + "Set char widths for the unicode icons." + (doom-modeline--set-char-widths doom-modeline-rhs-icons-alist)) + +(if (and (daemonp) + (not (frame-parameter nil 'client))) + (add-hook 'after-make-frame-functions #'doom-modeline-set-char-widths) + (and (display-graphic-p) (doom-modeline-set-char-widths))) + + +;; +;; Customization +;; + +(defgroup doom-modeline nil + "A minimal and modern mode-line." + :group 'mode-line + :link '(url-link :tag "Homepage" "https://github.com/seagle0128/doom-modeline")) + +(defcustom doom-modeline-support-imenu nil + "If non-nil, cause imenu to see `doom-modeline' declarations. +This is done by adjusting `lisp-imenu-generic-expression' to +include support for finding `doom-modeline-def-*' forms. + +Must be set before loading doom-modeline." + :type 'boolean + :set (lambda (_sym val) + (if val + (add-hook 'emacs-lisp-mode-hook #'doom-modeline-add-imenu) + (remove-hook 'emacs-lisp-mode-hook #'doom-modeline-add-imenu))) + :group 'doom-modeline) + +(defcustom doom-modeline-height 25 + "How tall the mode-line should be. It's only respected in GUI. +If the actual char height is larger, it respects the actual char height. +If `doom-modeline-height' is <= 0 the modeline will have default height." + :type 'integer + :group 'doom-modeline) + +(defcustom doom-modeline-bar-width 4 + "How wide the mode-line bar should be. It's only respected in GUI." + :type 'integer + :set (lambda (sym val) + (set sym (if (> val 0) val 1))) + :group 'doom-modeline) + +(defcustom doom-modeline-hud nil + "Whether to use hud instead of default bar. It's only respected in GUI." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-hud-min-height 2 + "Minimum height in pixels of the \"thumb\" of the hud. +Only respected in GUI." + :type 'integer + :set (lambda (sym val) + (set sym (if (> val 1) val 1))) + :group 'doom-modeline) + +(defcustom doom-modeline-window-width-limit 0.25 + "The limit of the window width. + +If `window-width' is smaller than the limit, some information won't be +displayed. It can be an integer or a float number. `nil' means no limit." + :type '(choice integer + float + (const :tag "Disable" nil)) + :group 'doom-modeline) + +(defcustom doom-modeline-project-detection 'auto + "How to detect the project root. + +nil means to use `default-directory'. + +The project management packages have some issues on detecting project root. +e.g. `projectile' doesn't handle symlink folders well, while `project' is +unable to handle sub-projects. +Specify another one if you encounter the issue." + :type '(choice (const :tag "Auto-detect" auto) + (const :tag "Find File in Project" ffip) + (const :tag "Projectile" projectile) + (const :tag "Built-in Project" project) + (const :tag "Disable" nil)) + :group 'doom-modeline) + +(defcustom doom-modeline-buffer-file-name-style 'auto + "Determines the style used by `doom-modeline-buffer-file-name'. + +Given ~/Projects/FOSS/emacs/lisp/comint.el + auto => emacs/lisp/comint.el (in a project) or comint.el + truncate-upto-project => ~/P/F/emacs/lisp/comint.el + truncate-from-project => ~/Projects/FOSS/emacs/l/comint.el + truncate-with-project => emacs/l/comint.el + truncate-except-project => ~/P/F/emacs/l/comint.el + truncate-upto-root => ~/P/F/e/lisp/comint.el + truncate-all => ~/P/F/e/l/comint.el + truncate-nil => ~/Projects/FOSS/emacs/lisp/comint.el + relative-from-project => emacs/lisp/comint.el + relative-to-project => lisp/comint.el + file-name => comint.el + buffer-name => comint.el<2> (uniquify buffer name)" + :type '(choice (const auto) + (const truncate-upto-project) + (const truncate-upto-project) + (const truncate-from-project) + (const truncate-with-project) + (const truncate-except-project) + (const truncate-upto-root) + (const truncate-all) + (const truncate-nil) + (const relative-from-project) + (const relative-to-project) + (const file-name) + (const buffer-name)) + :group'doom-modeline) + +(defcustom doom-modeline-icon t + "Whether display the icons in the mode-line. + +While using the server mode in GUI, should set the value explicitly." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-major-mode-icon t + "Whether display the icon for `major-mode'. + +It respects `doom-modeline-icon'." + :type 'boolean + :group'doom-modeline) + +(defcustom doom-modeline-major-mode-color-icon t + "Whether display the colorful icon for `major-mode'. + +It respects `all-the-icons-color-icons'." + :type 'boolean + :group'doom-modeline) + +(defcustom doom-modeline-buffer-state-icon t + "Whether display the icon for the buffer state. + +It respects `doom-modeline-icon'." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-buffer-modification-icon t + "Whether display the modification icon for the buffer. + +It respects `doom-modeline-icon' and `doom-modeline-buffer-state-icon'." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-unicode-fallback nil + "Whether to use unicode as a fallback (instead of ASCII) when not using icons." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-buffer-name t + "Whether display the buffer name." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-minor-modes nil + "Whether display the minor modes in the mode-line." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-enable-word-count nil + "If non-nil, a word count will be added to the selection-info modeline segment." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-continuous-word-count-modes + '(markdown-mode gfm-mode org-mode) + "Major modes in which to display word count continuously. + +It respects `doom-modeline-enable-word-count'." + :type '(repeat (symbol :tag "Major-Mode") ) + :group 'doom-modeline) + +(defcustom doom-modeline-buffer-encoding t + "Whether display the buffer encoding." + :type '(choice (const :tag "Always" t) + (const :tag "When non-default" nondefault) + (const :tag "Never" nil)) + :group 'doom-modeline) + +(defcustom doom-modeline-default-coding-system 'utf-8 + "Default coding system for `doom-modeline-buffer-encoding' `nondefault'." + :type 'coding-system + :group 'doom-modeline) + +(defcustom doom-modeline-default-eol-type 0 + "Default EOL type for `doom-modeline-buffer-encoding' `nondefault'." + :type '(choice (const :tag "Unix-style LF" 0) + (const :tag "DOS-style CRLF" 1) + (const :tag "Mac-style CR" 2)) + :group 'doom-modeline) + +(defcustom doom-modeline-indent-info nil + "Whether display the indentation information." + :type 'boolean + :group 'doom-modeline) + +;; It is based upon `editorconfig-indentation-alist' but is used to read indentation levels instead +;; of setting them. (https://github.com/editorconfig/editorconfig-emacs) +(defcustom doom-modeline-indent-alist + '((apache-mode apache-indent-level) + (awk-mode c-basic-offset) + (bpftrace-mode c-basic-offset) + (c++-mode c-basic-offset) + (c-mode c-basic-offset) + (cmake-mode cmake-tab-width) + (coffee-mode coffee-tab-width) + (cperl-mode cperl-indent-level) + (crystal-mode crystal-indent-level) + (csharp-mode c-basic-offset) + (css-mode css-indent-offset) + (d-mode c-basic-offset) + (emacs-lisp-mode lisp-indent-offset) + (enh-ruby-mode enh-ruby-indent-level) + (erlang-mode erlang-indent-level) + (ess-mode ess-indent-offset) + (f90-mode f90-associate-indent + f90-continuation-indent + f90-critical-indent + f90-do-indent + f90-if-indent + f90-program-indent + f90-type-indent) + (feature-mode feature-indent-offset + feature-indent-level) + (fsharp-mode fsharp-continuation-offset + fsharp-indent-level + fsharp-indent-offset) + (groovy-mode groovy-indent-offset) + (haskell-mode haskell-indent-spaces + haskell-indent-offset + haskell-indentation-layout-offset + haskell-indentation-left-offset + haskell-indentation-starter-offset + haskell-indentation-where-post-offset + haskell-indentation-where-pre-offset + shm-indent-spaces) + (haxor-mode haxor-tab-width) + (idl-mode c-basic-offset) + (jade-mode jade-tab-width) + (java-mode c-basic-offset) + (js-mode js-indent-level) + (js-jsx-mode js-indent-level + sgml-basic-offset) + (js2-mode js2-basic-offset) + (js2-jsx-mode js2-basic-offset + sgml-basic-offset) + (js3-mode js3-indent-level) + (json-mode js-indent-level) + (julia-mode julia-indent-offset) + (kotlin-mode kotlin-tab-width) + (latex-mode tex-indent-basic) + (lisp-mode lisp-indent-offset) + (livescript-mode livescript-tab-width) + (lua-mode lua-indent-level) + (matlab-mode matlab-indent-level) + (mips-mode mips-tab-width) + (mustache-mode mustache-basic-offset) + (nasm-mode nasm-basic-offset) + (nginx-mode nginx-indent-level) + (nxml-mode nxml-child-indent) + (objc-mode c-basic-offset) + (octave-mode octave-block-offset) + (perl-mode perl-indent-level) + (php-mode c-basic-offset) + (pike-mode c-basic-offset) + (ps-mode ps-mode-tab) + (pug-mode pug-tab-width) + (puppet-mode puppet-indent-level) + (python-mode python-indent-offset) + (ruby-mode ruby-indent-level) + (rust-mode rust-indent-offset) + (rustic-mode rustic-indent-offset) + (scala-mode scala-indent:step) + (scss-mode css-indent-offset) + (sgml-mode sgml-basic-offset) + (sh-mode sh-basic-offset + sh-indentation) + (slim-mode slim-indent-offset) + (sml-mode sml-indent-level) + (tcl-mode tcl-indent-level + tcl-continued-indent-level) + (terra-mode terra-indent-level) + (typescript-mode typescript-indent-level) + (verilog-mode verilog-indent-level + verilog-indent-level-behavioral + verilog-indent-level-declaration + verilog-indent-level-module + verilog-cexp-indent + verilog-case-indent) + (web-mode web-mode-attr-indent-offset + web-mode-attr-value-indent-offset + web-mode-code-indent-offset + web-mode-css-indent-offset + web-mode-markup-indent-offset + web-mode-sql-indent-offset + web-mode-block-padding + web-mode-script-padding + web-mode-style-padding) + (yaml-mode yaml-indent-offset)) + "Indentation retrieving variables matched to major modes used + when `doom-modeline-indent-info' is non-nil. When multiple + variables are specified for a mode, they will be tried resolved + in the given order." + :type '(alist :key-type symbol :value-type sexp) + :group 'doom-modeline) + +(defcustom doom-modeline-checker-simple-format t + "If non-nil, only display one number for checker information if applicable." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-number-limit 99 + "The maximum number displayed for notifications." + :type 'integer + :group 'doom-modeline) + +(defcustom doom-modeline-vcs-max-length 12 + "The maximum displayed length of the branch name of version control." + :type 'integer + :group 'doom-modeline) + +(defcustom doom-modeline-workspace-name t + "Whether display the workspace name. + +Non-nil to display in the mode-line." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-persp-name t + "Whether display the perspective name. + +Non-nil to display in the mode-line." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-display-default-persp-name nil + "If non nil the default perspective name is displayed in the mode-line." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-persp-icon t + "If non nil the perspective name is displayed alongside a folder icon." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-repl t + "Whether display the `repl' state. + +Non-nil to display in the mode-line." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-lsp t + "Whether display the `lsp' state. + +Non-nil to display in the mode-line." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-github nil + "Whether display the GitHub notifications. + +It requires `ghub' and `async' packages." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-github-interval 1800 ; (* 30 60) + "The interval of checking GitHub." + :type 'integer + :group 'doom-modeline) + +(defcustom doom-modeline-env-version t + "Whether display the environment version." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-modal-icon t + "Whether display the modal state icon. + +Including `evil', `overwrite', `god', `ryo' and `xah-fly-keys', etc." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-mu4e nil + "Whether display the mu4e notifications. + +It requires `mu4e-alert' package." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-gnus nil + "Whether to display notifications from gnus. + +It requires `gnus' to be setup" + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-gnus-timer 2 + "The wait time in minutes before gnus fetches mail. + +If nil, don't set up a hook." + :type 'integer + :group 'doom-modeline) + +(defcustom doom-modeline-gnus-idle nil + "Whether to wait an idle time to scan for news. + +When t, sets `doom-modeline-gnus-timer' as an idle timer. If a +number, Emacs must have been idle this given time, checked after +reach the defined timer, to fetch news. The time step can be +configured in `gnus-demon-timestep'." + :type '(choice + (boolean :tag "Set `doom-modeline-gnus-timer' as an idle timer") + (number :tag "Set a custom idle timer")) + :group 'doom-modeline) + +(defcustom doom-modeline-gnus-excluded-groups nil + "A list of groups to be excluded from the unread count. +Groups' names list in `gnus-newsrc-alist'`" + :type '(repeat string) + :group 'doom-modeline) + +(defcustom doom-modeline-irc t + "Whether display the irc notifications. + +It requires `circe' or `erc' package." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-irc-buffers nil + "Whether display the unread irc buffers." + :type 'boolean + :group 'doom-modeline) + +(defcustom doom-modeline-irc-stylize 'identity + "Function to stylize the irc buffer names." + :type 'function + :group 'doom-modeline) + + +;; +;; Faces +;; + +(defgroup doom-modeline-faces nil + "The faces of `doom-modeline'." + :group 'doom-modeline + :group 'faces + :link '(url-link :tag "Homepage" "https://github.com/seagle0128/doom-modeline")) + +(defface doom-modeline-spc-face + '((t (:inherit mode-line))) + "Face used for the white space." + :group 'doom-modeline-faces) + +(defface doom-modeline-spc-inactive-face + '((t (:inherit mode-line-inactive))) + "Face used for the inactive white space." + :group 'doom-modeline-faces) + +(defface doom-modeline-vspc-face + '((t (:inherit variable-pitch))) + "Face used for the variable white space." + :group 'doom-modeline-faces) + +(defface doom-modeline-vspc-inactive-face + '((t (:inherit (mode-line-inactive doom-modeline-vspc-face)))) + "Face used for the variable white space." + :group 'doom-modeline-faces) + +(defface doom-modeline-buffer-path + '((t (:inherit (mode-line-emphasis bold)))) + "Face used for the dirname part of the buffer path." + :group 'doom-modeline-faces) + +(defface doom-modeline-buffer-file + '((t (:inherit (mode-line-buffer-id bold)))) + "Face used for the filename part of the mode-line buffer path." + :group 'doom-modeline-faces) + +(defface doom-modeline-buffer-modified + '((t (:inherit (error bold) :background nil))) + "Face used for the 'unsaved' symbol in the mode-line." + :group 'doom-modeline-faces) + +(defface doom-modeline-buffer-major-mode + '((t (:inherit (mode-line-emphasis bold)))) + "Face used for the major-mode segment in the mode-line." + :group 'doom-modeline-faces) + +(defface doom-modeline-buffer-minor-mode + '((t (:inherit font-lock-doc-face :slant normal))) + "Face used for the minor-modes segment in the mode-line." + :group 'doom-modeline-faces) + +(defface doom-modeline-project-parent-dir + '((t (:inherit (font-lock-comment-face bold)))) + "Face used for the project parent directory of the mode-line buffer path." + :group 'doom-modeline-faces) + +(defface doom-modeline-project-dir + '((t (:inherit (font-lock-string-face bold)))) + "Face used for the project directory of the mode-line buffer path." + :group 'doom-modeline-faces) + +(defface doom-modeline-project-root-dir + '((t (:inherit (mode-line-emphasis bold)))) + "Face used for the project part of the mode-line buffer path." + :group 'doom-modeline-faces) + +(defface doom-modeline-highlight + '((t (:inherit mode-line-emphasis))) + "Face for bright segments of the mode-line." + :group 'doom-modeline-faces) + +(defface doom-modeline-panel + '((t (:inherit mode-line-highlight))) + "Face for 'X out of Y' segments, such as `anzu', `evil-substitute' and`iedit', etc." + :group 'doom-modeline-faces) + +(defface doom-modeline-host + '((t (:inherit italic))) + "Face for remote hosts in the mode-line." + :group 'doom-modeline-faces) + +(defface doom-modeline-input-method + '((t (:inherit (mode-line-emphasis bold)))) + "Face for input method in the mode-line." + :group 'doom-modeline-faces) + +(defface doom-modeline-input-method-alt + '((t (:inherit (font-lock-doc-face bold) :slant normal))) + "Alternative face for input method in the mode-line." + :group 'doom-modeline-faces) + +(defface doom-modeline-debug + '((t (:inherit (font-lock-doc-face bold) :slant normal))) + "Face for debug-level messages in the mode-line. Used by vcs, checker, etc." + :group 'doom-modeline-faces) + +(defface doom-modeline-info + '((t (:inherit (success bold)))) + "Face for info-level messages in the mode-line. Used by vcs, checker, etc." + :group 'doom-modeline-faces) + +(defface doom-modeline-warning + '((t (:inherit (warning bold)))) + "Face for warnings in the mode-line. Used by vcs, checker, etc." + :group 'doom-modeline-faces) + +(defface doom-modeline-urgent + '((t (:inherit (error bold)))) + "Face for errors in the mode-line. Used by vcs, checker, etc." + :group 'doom-modeline-faces) + +(defface doom-modeline-notification + '((t (:inherit doom-modeline-warning))) + "Face for notifications in the mode-line. Used by GitHub, mu4e, +etc. (also see the face `doom-modeline-unread-number')." + :group 'doom-modeline-faces) + +(defface doom-modeline-unread-number + '((t (:slant italic :weight normal))) + "Face for unread number in the mode-line. Used by GitHub, mu4e, etc." + :group 'doom-modeline-faces) + +(defface doom-modeline-bar + '((t (:inherit highlight))) + "The face used for the left-most bar in the mode-line of an active window." + :group 'doom-modeline-faces) + +(defface doom-modeline-bar-inactive + `((t (:background ,(face-foreground 'mode-line-inactive)))) + "The face used for the left-most bar in the mode-line of an inactive window." + :group 'doom-modeline-faces) + +(defface doom-modeline-debug-visual + `((((class color) (background light)) + (:background ,(face-foreground 'all-the-icons-orange))) + (((class color) (background dark)) + (:background ,(face-foreground 'all-the-icons-dorange)))) + "Face to use for the mode-line while debugging." + :group 'doom-modeline) + +(defface doom-modeline-evil-emacs-state + '((t (:inherit (font-lock-builtin-face bold)))) + "Face for the Emacs state tag in evil state indicator." + :group 'doom-modeline-faces) + +(defface doom-modeline-evil-insert-state + '((t (:inherit (font-lock-keyword-face bold)))) + "Face for the insert state tag in evil state indicator." + :group 'doom-modeline-faces) + +(defface doom-modeline-evil-motion-state + '((t :inherit (font-lock-doc-face bold) :slant normal)) + "Face for the motion state tag in evil state indicator." + :group 'doom-modeline-faces) + +(defface doom-modeline-evil-normal-state + '((t (:inherit doom-modeline-info))) + "Face for the normal state tag in evil state indicator." + :group 'doom-modeline-faces) + +(defface doom-modeline-evil-operator-state + '((t (:inherit doom-modeline-buffer-file))) + "Face for the operator state tag in evil state indicator." + :group 'doom-modeline-faces) + +(defface doom-modeline-evil-visual-state + '((t (:inherit doom-modeline-warning))) + "Face for the visual state tag in evil state indicator." + :group 'doom-modeline-faces) + +(defface doom-modeline-evil-replace-state + '((t (:inherit doom-modeline-urgent))) + "Face for the replace state tag in evil state indicator." + :group 'doom-modeline-faces) + +(defface doom-modeline-persp-name + '((t (:inherit (font-lock-comment-face italic)))) + "Face for the persp name." + :group 'doom-modeline-faces) + +(defface doom-modeline-persp-buffer-not-in-persp + '((t (:inherit (font-lock-doc-face bold italic)))) + "Face for the buffers which are not in the persp." + :group 'doom-modeline-faces) + +(defface doom-modeline-repl-success + '((t (:inherit success :weight normal))) + "Face for REPL success state." + :group 'doom-modeline-faces) + +(defface doom-modeline-repl-warning + '((t (:inherit warning :weight normal))) + "Face for REPL warning state." + :group 'doom-modeline-faces) + +(defface doom-modeline-lsp-success + '((t (:inherit success :weight normal))) + "Face for LSP success state." + :group 'doom-modeline-faces) + +(defface doom-modeline-lsp-warning + '((t (:inherit warning :weight normal))) + "Face for LSP warning state." + :group 'doom-modeline-faces) + +(defface doom-modeline-lsp-error + '((t (:inherit error :weight normal))) + "Face for LSP error state." + :group 'doom-modeline-faces) + +(defface doom-modeline-lsp-running + '((t (:inherit compilation-mode-line-run :weight normal :slant normal))) + "Face for LSP running state." + :group 'doom-modeline-faces) + +(defface doom-modeline-battery-charging + '((t (:inherit success :weight normal))) + "Face for battery charging status." + :group 'doom-modeline-faces) + +(defface doom-modeline-battery-full + '((t (:inherit success :weight normal))) + "Face for battery full status." + :group 'doom-modeline-faces) + +(defface doom-modeline-battery-normal + '((t (:inherit mode-line :weight normal))) + "Face for battery normal status." + :group 'doom-modeline-faces) + +(defface doom-modeline-battery-warning + '((t (:inherit warning :weight normal))) + "Face for battery warning status." + :group 'doom-modeline-faces) + +(defface doom-modeline-battery-critical + '((t (:inherit error :weight normal))) + "Face for battery critical status." + :group 'doom-modeline-faces) + +(defface doom-modeline-battery-error + '((t (:inherit error :weight normal))) + "Face for battery error status." + :group 'doom-modeline-faces) + +(defface doom-modeline-buffer-timemachine + '((t (:inherit doom-modeline-buffer-file :slant italic))) + "Face for timemachine status." + :group 'doom-modeline-faces) + + +;; +;; Externals +;; + +(declare-function face-remap-remove-relative "face-remap") +(declare-function ffip-get-project-root-directory "ext:find-file-in-project") +(declare-function project-root "ext:project") +(declare-function projectile-project-root "ext:projectile") + + +;; +;; Utilities +;; + +(defun doom-modeline-add-font-lock () + "Fontify `doom-modeline-def-*' statements." + (font-lock-add-keywords + 'emacs-lisp-mode + '(("(\\(doom-modeline-def-.+\\)\\_> +\\(.*?\\)\\_>" + (1 font-lock-keyword-face) + (2 font-lock-constant-face))))) +(doom-modeline-add-font-lock) + +(defun doom-modeline-add-imenu () + "Add to `imenu' index." + (add-to-list + 'imenu-generic-expression + '("Modelines" + "^\\s-*(\\(doom-modeline-def-modeline\\)\\s-+\\(\\(?:\\sw\\|\\s_\\|\\s'\\|\\\\.\\)+\\)" + 2)) + (add-to-list + 'imenu-generic-expression + '("Segments" + "^\\s-*(\\(doom-modeline-def-segment\\)\\s-+\\(\\(?:\\sw\\|\\s_\\|\\\\.\\)+\\)" + 2)) + (add-to-list + 'imenu-generic-expression + '("Envs" + "^\\s-*(\\(doom-modeline-def-env\\)\\s-+\\(\\(?:\\sw\\|\\s_\\|\\\\.\\)+\\)" + 2))) + + +;; +;; Core helpers +;; + +;; FIXME #183: Force to calculate mode-line height +;; @see https://github.com/seagle0128/doom-modeline/issues/183 +;; @see https://github.com/seagle0128/doom-modeline/issues/483 +(defun doom-modeline-redisplay (&rest _) + "Call `redisplay' to trigger mode-line height calculations. + +Certain functions, including e.g. `fit-window-to-buffer', base +their size calculations on values which are incorrect if the +mode-line has a height different from that of the `default' face +and certain other calculations have not yet taken place for the +window in question. + +These calculations can be triggered by calling `redisplay' +explicitly at the appropriate time and this functions purpose +is to make it easier to do so. + +This function is like `redisplay' with non-nil FORCE argument, +but it will only trigger a redisplay when there is a non nil +`mode-line-format' and the height of the mode-line is different +from that of the `default' face. This function is intended to be +used as an advice to window creation functions." + (when (and (bound-and-true-p doom-modeline-mode) + mode-line-format + (/= (frame-char-height) (window-mode-line-height))) + (redisplay t))) +(unless (>= emacs-major-version 29) + (advice-add #'fit-window-to-buffer :before #'doom-modeline-redisplay)) + +;; Keep `doom-modeline-current-window' up-to-date +(defun doom-modeline--get-current-window (&optional frame) + "Get the current window but should exclude the child windows." + (if (and (fboundp 'frame-parent) (frame-parent frame)) + (frame-selected-window (frame-parent frame)) + (frame-selected-window frame))) + +(defvar doom-modeline-current-window (doom-modeline--get-current-window)) + +(defun doom-modeline--active () + "Whether is an active window." + (unless (and (bound-and-true-p mini-frame-frame) + (and (frame-live-p mini-frame-frame) + (frame-visible-p mini-frame-frame))) + (and doom-modeline-current-window + (eq (doom-modeline--get-current-window) doom-modeline-current-window)))) + +(defun doom-modeline-set-selected-window (&rest _) + "Set `doom-modeline-current-window' appropriately." + (let ((win (doom-modeline--get-current-window))) + (setq doom-modeline-current-window + (if (minibuffer-window-active-p win) + (minibuffer-selected-window) + win)))) + +(defun doom-modeline-unset-selected-window () + "Unset `doom-modeline-current-window' appropriately." + (setq doom-modeline-current-window nil)) + +(add-hook 'pre-redisplay-functions #'doom-modeline-set-selected-window) + +;; Ensure modeline is inactive when Emacs is unfocused (and active otherwise) +(defvar doom-modeline-remap-face-cookie nil) +(defun doom-modeline-focus () + "Focus mode-line." + (when doom-modeline-remap-face-cookie + (require 'face-remap) + (face-remap-remove-relative doom-modeline-remap-face-cookie))) +(defun doom-modeline-unfocus () + "Unfocus mode-line." + (setq doom-modeline-remap-face-cookie + (face-remap-add-relative 'mode-line 'mode-line-inactive))) + +(with-no-warnings + (if (boundp 'after-focus-change-function) + (progn + (defun doom-modeline-focus-change (&rest _) + (if (frame-focus-state) + (doom-modeline-focus) + (doom-modeline-unfocus))) + (advice-add #'handle-switch-frame :after #'doom-modeline-focus-change) + (add-function :after after-focus-change-function #'doom-modeline-focus-change)) + (progn + (add-hook 'focus-in-hook #'doom-modeline-focus) + (add-hook 'focus-out-hook #'doom-modeline-unfocus)))) + + +;; +;; Core +;; + +(defvar doom-modeline-fn-alist ()) +(defvar doom-modeline-var-alist ()) + +(defmacro doom-modeline-def-segment (name &rest body) + "Defines a modeline segment NAME with BODY and byte compiles it." + (declare (indent defun) (doc-string 2)) + (let ((sym (intern (format "doom-modeline-segment--%s" name))) + (docstring (if (stringp (car body)) + (pop body) + (format "%s modeline segment" name)))) + (cond ((and (symbolp (car body)) + (not (cdr body))) + (add-to-list 'doom-modeline-var-alist (cons name (car body))) + `(add-to-list 'doom-modeline-var-alist (cons ',name ',(car body)))) + (t + (add-to-list 'doom-modeline-fn-alist (cons name sym)) + `(progn + (fset ',sym (lambda () ,docstring ,@body)) + (add-to-list 'doom-modeline-fn-alist (cons ',name ',sym)) + ,(unless (bound-and-true-p byte-compile-current-file) + `(let (byte-compile-warnings) + (byte-compile #',sym)))))))) + +(defun doom-modeline--prepare-segments (segments) + "Prepare mode-line `SEGMENTS'." + (let (forms it) + (dolist (seg segments) + (cond ((stringp seg) + (push seg forms)) + ((symbolp seg) + (cond ((setq it (cdr (assq seg doom-modeline-fn-alist))) + (push (list :eval (list it)) forms)) + ((setq it (cdr (assq seg doom-modeline-var-alist))) + (push it forms)) + ((error "%s is not a defined segment" seg)))) + ((error "%s is not a valid segment" seg)))) + (nreverse forms))) + +(defvar doom-modeline--font-width-cache nil) +(defun doom-modeline--font-width () + "Cache the font width." + (if (display-graphic-p) + (let ((attributes (face-all-attributes 'mode-line))) + (or (cdr (assoc attributes doom-modeline--font-width-cache)) + (let ((width (window-font-width nil 'mode-line))) + (push (cons attributes width) doom-modeline--font-width-cache) + width))) + 1)) + +;; Refresh the font width after setting frame parameters +;; to ensure the font width is correct. +(defun doom-modeline-refresh-font-width-cache (&rest _) + "Refresh the font width cache." + (setq doom-modeline--font-width-cache nil) + (doom-modeline--font-width)) +(add-hook 'window-setup-hook #'doom-modeline-refresh-font-width-cache) +(add-hook 'after-make-frame-functions #'doom-modeline-refresh-font-width-cache) +(add-hook 'after-setting-font-hook #'doom-modeline-refresh-font-width-cache) +(add-hook 'server-after-make-frame-hook #'doom-modeline-refresh-font-width-cache) + +(defun doom-modeline-def-modeline (name lhs &optional rhs) + "Defines a modeline format and byte-compiles it. +NAME is a symbol to identify it (used by `doom-modeline' for retrieval). +LHS and RHS are lists of symbols of modeline segments defined with +`doom-modeline-def-segment'. + +Example: + (doom-modeline-def-modeline 'minimal + '(bar matches \" \" buffer-info) + '(media-info major-mode)) + (doom-modeline-set-modeline 'minimal t)" + (let ((sym (intern (format "doom-modeline-format--%s" name))) + (lhs-forms (doom-modeline--prepare-segments lhs)) + (rhs-forms (doom-modeline--prepare-segments rhs))) + (defalias sym + (lambda () + (list lhs-forms + (propertize + " " + 'face (if (doom-modeline--active) 'mode-line 'mode-line-inactive) + 'display `((space + :align-to + (- (+ right right-fringe right-margin scroll-bar) + ,(* (let ((width (doom-modeline--font-width))) + (or (and (= width 1) 1) + (/ width (frame-char-width) 1.0))) + (string-width + (format-mode-line (cons "" rhs-forms)))))))) + rhs-forms)) + (concat "Modeline:\n" + (format " %s\n %s" + (prin1-to-string lhs) + (prin1-to-string rhs)))))) +(put 'doom-modeline-def-modeline 'lisp-indent-function 'defun) + +(defun doom-modeline (key) + "Return a mode-line configuration associated with KEY (a symbol). +Throws an error if it doesn't exist." + (let ((fn (intern-soft (format "doom-modeline-format--%s" key)))) + (when (functionp fn) + `(:eval (,fn))))) + +(defun doom-modeline-set-modeline (key &optional default) + "Set the modeline format. Does nothing if the modeline KEY doesn't exist. +If DEFAULT is non-nil, set the default mode-line for all buffers." + (when-let ((modeline (doom-modeline key))) + (setf (if default + (default-value 'mode-line-format) + (buffer-local-value 'mode-line-format (current-buffer))) + (list "%e" modeline)))) + + +;; +;; Helpers +;; + +(defsubst doom-modeline-spc () + "Text style with whitespace." + (propertize " " 'face (if (doom-modeline--active) + 'doom-modeline-spc-face + 'doom-modeline-spc-inactive-face))) + +(defsubst doom-modeline-wspc () + "Text style with wide whitespace." + (propertize " " 'face (if (doom-modeline--active) + 'doom-modeline-spc-face + 'doom-modeline-spc-inactive-face))) + +(defsubst doom-modeline-vspc () + "Text style with icons in mode-line." + (propertize " " 'face (if (doom-modeline--active) + 'doom-modeline-vspc-face + 'doom-modeline-vspc-inactive-face))) + +(defun doom-modeline--font-height () + "Calculate the actual char height of the mode-line." + (let ((height (face-attribute 'mode-line :height))) + ;; WORKAROUND: Fix tall issue of 27 on Linux + ;; @see https://github.com/seagle0128/doom-modeline/issues/271 + (round + (* (if (or (<= doom-modeline-height 0) + (and (>= emacs-major-version 27) + (not (eq system-type 'darwin)))) + 1.0 + (if doom-modeline-icon 1.68 1.25)) + (cond ((integerp height) (/ height 10)) + ((floatp height) (* height (frame-char-height))) + (t (frame-char-height))))))) + +(defun doom-modeline--original-value (sym) + "Return the original value for SYM, if any. + +If SYM has an original value, return it in a list. Return nil +otherwise." + (let* ((orig-val-expr (get sym 'standard-value))) + (when (consp orig-val-expr) + (ignore-errors + (list + (eval (car orig-val-expr))))))) + +(defun doom-modeline-add-variable-watcher (symbol watch-function) + "Cause WATCH-FUNCTION to be called when SYMBOL is set if possible. + +See docs of `add-variable-watcher'." + (when (fboundp 'add-variable-watcher) + (add-variable-watcher symbol watch-function))) + +(defun doom-modeline-propertize-icon (icon &optional face) + "Propertize the ICON with the specified FACE. + +The face should be the first attribute, or the font family may be overridden. +So convert the face \":family XXX :height XXX :inherit XXX\" to +\":inherit XXX :family XXX :height XXX\". +See https://github.com/seagle0128/doom-modeline/issues/301." + (if (and doom-modeline-icon (display-graphic-p)) + (when-let ((props (get-text-property 0 'face icon))) + (cl-destructuring-bind (&key family height inherit &allow-other-keys) props + (propertize icon 'face `(:inherit ,(or face inherit props) + :family ,family + :height ,height)))) + (propertize icon 'face face))) + +(defun doom-modeline-icon (icon-set icon-name unicode text &rest args) + "Display icon of ICON-NAME with ARGS in mode-line. + +ICON-SET includes `octicon', `faicon', `material', `alltheicons' and `fileicon', +etc. +UNICODE is the unicode char fallback. TEXT is the ASCII char fallback. +ARGS is same as `all-the-icons-octicon' and others." + (let ((face (or (plist-get args :face) 'mode-line))) + (or + ;; Icons + (when (and (display-graphic-p) + doom-modeline-icon + icon-name + (not (string-empty-p icon-name))) + (when-let* ((func (all-the-icons--function-name icon-set)) + (icon (and (fboundp func) (apply func icon-name args)))) + (doom-modeline-propertize-icon icon face))) + ;; Unicode fallback + (and doom-modeline-unicode-fallback + unicode + (not (string-empty-p unicode)) + (char-displayable-p (string-to-char unicode)) + (propertize unicode 'face face)) + ;; ASCII text + (and text (propertize text 'face face)) + ""))) + +(defun doom-modeline--create-bar-image (face width height) + "Create the bar image. +Use FACE1 for the bar, FACE2 for the background. +WIDTH and HEIGHT are the image size in pixels." + (when (and (display-graphic-p) + (image-type-available-p 'pbm)) + (propertize + " " 'display + (let ((color (or (face-background face nil t) "None"))) + (ignore-errors + (create-image + (concat (format "P1\n%i %i\n" width height) + (make-string (* width height) ?1) + "\n") + 'pbm t :foreground color :ascent 'center)))))) + +(defun doom-modeline--create-hud-image + (face1 face2 width height top-margin bottom-margin) + "Create the hud image. +Use FACE1 for the bar, FACE2 for the background. +WIDTH and HEIGHT are the image size in pixels. +TOP-MARGIN and BOTTOM-MARGIN are the size of the margin above and below the bar, +respectively." + (when (and (display-graphic-p) + (image-type-available-p 'pbm)) + (let ((min-height (min height doom-modeline-hud-min-height))) + (unless (> (- height top-margin bottom-margin) min-height) + (let ((margin (- height min-height))) + (setq top-margin (/ (* margin top-margin) (+ top-margin bottom-margin)) + bottom-margin (- margin top-margin))))) + (propertize + " " 'display + (let ((color1 (or (face-background face1 nil t) "None")) + (color2 (or (face-background face2 nil t) "None"))) + (create-image + (concat + (format "P1\n%i %i\n" width height) + (make-string (* top-margin width) ?0) + (make-string (* (- height top-margin bottom-margin) width) ?1) + (make-string (* bottom-margin width) ?0) + "\n") + 'pbm t :foreground color1 :background color2 :ascent 'center))))) + +;; Check whether `window-total-width' is smaller than the limit +(defvar-local doom-modeline--limited-width-p nil) +(defun doom-modeline-window-size-change-function (&rest _) + "Function for `window-size-change-functions'." + (setq doom-modeline--limited-width-p + (cond + ((integerp doom-modeline-window-width-limit) + (<= (window-total-width) doom-modeline-window-width-limit)) + ((floatp doom-modeline-window-width-limit) + (<= (/ (window-total-width) (frame-width) 1.0) + doom-modeline-window-width-limit))))) + +(add-hook 'window-size-change-functions #'doom-modeline-window-size-change-function) +(add-hook 'buffer-list-update-hook #'doom-modeline-window-size-change-function) + +(defvar-local doom-modeline--project-root nil) +(defun doom-modeline--project-root () + "Get the path to the root of your project. +Return nil if no project was found." + (or doom-modeline--project-root + (setq doom-modeline--project-root + (pcase (if (eq doom-modeline-project-detection 'auto) + (cond + ((fboundp 'ffip-get-project-root-directory) 'ffip) + ((fboundp 'projectile-project-root) 'projectile) + ((fboundp 'project-current) 'project) + (t 'default)) + doom-modeline-project-detection) + ('ffip + (let ((inhibit-message t)) + (ffip-get-project-root-directory))) + ('projectile + (projectile-project-root)) + ('project + (when-let ((project (project-current))) + (expand-file-name (if (fboundp 'project-root) + (project-root project) + (cdr project))))))))) + +(defun doom-modeline-project-p () + "Check if the file is in a project." + (doom-modeline--project-root)) + +(defun doom-modeline-project-root () + "Get the path to the root of your project. +Return `default-directory' if no project was found." + (or (doom-modeline--project-root) default-directory)) + +(defun doom-modeline-buffer-file-name () + "Propertized variable `buffer-file-name' based on +`doom-modeline-buffer-file-name-style'." + (let* ((buffer-file-name (file-local-name (or (buffer-file-name (buffer-base-buffer)) ""))) + (buffer-file-truename (file-local-name + (or buffer-file-truename (file-truename buffer-file-name) ""))) + (file-name + (pcase doom-modeline-buffer-file-name-style + ('auto + (if (doom-modeline-project-p) + (doom-modeline--buffer-file-name buffer-file-name buffer-file-truename nil nil 'hide) + (propertize "%b" 'face 'doom-modeline-buffer-file))) + ('truncate-upto-project + (doom-modeline--buffer-file-name buffer-file-name buffer-file-truename 'shrink)) + ('truncate-from-project + (doom-modeline--buffer-file-name buffer-file-name buffer-file-truename nil 'shrink)) + ('truncate-with-project + (doom-modeline--buffer-file-name buffer-file-name buffer-file-truename 'shrink 'shink 'hide)) + ('truncate-except-project + (doom-modeline--buffer-file-name buffer-file-name buffer-file-truename 'shrink 'shink)) + ('truncate-upto-root + (doom-modeline--buffer-file-name-truncate buffer-file-name buffer-file-truename)) + ('truncate-all + (doom-modeline--buffer-file-name-truncate buffer-file-name buffer-file-truename t)) + ('truncate-nil + (doom-modeline--buffer-file-name buffer-file-name buffer-file-truename)) + ('relative-to-project + (doom-modeline--buffer-file-name-relative buffer-file-name buffer-file-truename)) + ('relative-from-project + (doom-modeline--buffer-file-name buffer-file-name buffer-file-truename nil nil 'hide)) + ('file-name + (propertize (file-name-nondirectory buffer-file-name) + 'face 'doom-modeline-buffer-file)) + ((or 'buffer-name _) + (propertize "%b" 'face 'doom-modeline-buffer-file))))) + (propertize (if (string-empty-p file-name) + (propertize "%b" 'face 'doom-modeline-buffer-file) + file-name) + 'mouse-face 'mode-line-highlight + 'help-echo (concat buffer-file-truename + (unless (string= (file-name-nondirectory buffer-file-truename) + (buffer-name)) + (concat "\n" (buffer-name))) + "\nmouse-1: Previous buffer\nmouse-3: Next buffer") + 'local-map mode-line-buffer-identification-keymap))) + +(defun doom-modeline--buffer-file-name-truncate (file-path true-file-path &optional truncate-tail) + "Propertized variable `buffer-file-name' that truncates every dir along path. +If TRUNCATE-TAIL is t also truncate the parent directory of the file." + (let ((dirs (shrink-path-prompt (file-name-directory true-file-path)))) + (if (null dirs) + (propertize "%b" 'face 'doom-modeline-buffer-file) + (let ((dirname (car dirs)) + (basename (cdr dirs))) + (concat (propertize (concat dirname + (if truncate-tail (substring basename 0 1) basename) + "/") + 'face 'doom-modeline-project-root-dir) + (propertize (file-name-nondirectory file-path) + 'face 'doom-modeline-buffer-file)))))) + +(defun doom-modeline--buffer-file-name-relative (_file-path true-file-path &optional include-project) + "Propertized variable `buffer-file-name' showing directories relative to +project's root only." + (let ((root (file-local-name (doom-modeline-project-root)))) + (if (null root) + (propertize "%b" 'face 'doom-modeline-buffer-file) + (let ((relative-dirs (file-relative-name (file-name-directory true-file-path) + (if include-project (concat root "../") root)))) + (and (equal "./" relative-dirs) (setq relative-dirs "")) + (concat (propertize relative-dirs 'face 'doom-modeline-buffer-path) + (propertize (file-name-nondirectory true-file-path) + 'face 'doom-modeline-buffer-file)))))) + +(defun doom-modeline--buffer-file-name (file-path + _true-file-path + &optional + truncate-project-root-parent + truncate-project-relative-path + hide-project-root-parent) + "Propertized variable `buffer-file-name' given by FILE-PATH. +If TRUNCATE-PROJECT-ROOT-PARENT is non-nil will be saved by truncating project +root parent down fish-shell style. + +Example: + ~/Projects/FOSS/emacs/lisp/comint.el => ~/P/F/emacs/lisp/comint.el + +If TRUNCATE-PROJECT-RELATIVE-PATH is non-nil will be saved by truncating project +relative path down fish-shell style. + +Example: + ~/Projects/FOSS/emacs/lisp/comint.el => ~/Projects/FOSS/emacs/l/comint.el + +If HIDE-PROJECT-ROOT-PARENT is non-nil will hide project root parent. + +Example: + ~/Projects/FOSS/emacs/lisp/comint.el => emacs/lisp/comint.el" + (let ((project-root (file-local-name (doom-modeline-project-root)))) + (concat + ;; Project root parent + (unless hide-project-root-parent + (when-let (root-path-parent + (file-name-directory (directory-file-name project-root))) + (propertize + (if (and truncate-project-root-parent + (not (string-empty-p root-path-parent)) + (not (string= root-path-parent "/"))) + (shrink-path--dirs-internal root-path-parent t) + (abbreviate-file-name root-path-parent)) + 'face 'doom-modeline-project-parent-dir))) + ;; Project directory + (propertize + (concat (file-name-nondirectory (directory-file-name project-root)) "/") + 'face 'doom-modeline-project-dir) + ;; relative path + (propertize + (when-let (relative-path (file-relative-name + (or (file-name-directory file-path) "./") + project-root)) + (if (string= relative-path "./") + "" + (if truncate-project-relative-path + (substring (shrink-path--dirs-internal relative-path t) 1) + relative-path))) + 'face 'doom-modeline-buffer-path) + ;; File name + (propertize (file-name-nondirectory file-path) + 'face 'doom-modeline-buffer-file)))) + +(provide 'doom-modeline-core) + +;;; doom-modeline-core.el ends here diff --git a/org/elpa/doom-modeline-20220412.853/doom-modeline-env.el b/org/elpa/doom-modeline-20220412.853/doom-modeline-env.el new file mode 100644 index 0000000..87c8c50 --- /dev/null +++ b/org/elpa/doom-modeline-20220412.853/doom-modeline-env.el @@ -0,0 +1,275 @@ +;;; doom-modeline-env.el --- A environment parser for doom-modeline -*- lexical-binding: t -*- + +;; Copyright (C) 2019-2020 Justin Barclay, Vincent Zhang + +;; This file is not part of GNU Emacs. + +;; +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . +;; +;;; Commentary: +;; +;; Parse programming environment. +;; + +;;; Code: + +(require 'subr-x) +(require 'doom-modeline-core) + + +;; Externals +(defvar python-shell-interpreter) + + +;; Customizations + +(defgroup doom-modeline-env nil + "The environment parser for doom-modeline." + :group 'doom-modeline + :link '(url-link :tag "Homepage" "https://github.com/seagle0128/doom-modeline")) + +(defcustom doom-modeline-env-load-string "..." + "What to display as the version while a new one is being loaded." + :type 'string + :group 'doom-modeline-env) + +(defcustom doom-modeline-before-update-env-hook nil + "Hooks that run before the modeline version string is updated." + :type 'hook + :group 'doom-modeline-env) + +(defcustom doom-modeline-after-update-env-hook nil + "Hooks that run after the modeline version string is updated." + :type 'hook + :group 'doom-modeline-env) + + +;; Variables + +;; Show version string for multi-version managers like rvm, rbenv, pyenv, etc. +(defvar-local doom-modeline-env--version nil + "The version to display with major-mode in mode-line. +Example: \"2.6.0\"") + +(defvar-local doom-modeline-env--command nil + "A program that we're looking to extract version information from. +Example: \"ruby\"") + +(defvar-local doom-modeline-env--command-args nil + "A list of arguments for the command to extract the version from. +Example: '(\"--version\") ") + +(defvar-local doom-modeline-env--parser nil + "A function that returns version number from a command --version (or similar). +Example: 'doom-modeline-env--ruby") + + +;; Functions & Macros + +(defun doom-modeline-update-env () + "Update environment info on mode-line." + (when (and doom-modeline-env-version + doom-modeline-env--command + (executable-find doom-modeline-env--command) + doom-modeline-env--command-args + doom-modeline-env--parser) + (let ((default-directory (doom-modeline-project-root)) + (buffer (current-buffer))) + (run-hooks 'doom-modeline-before-update-env-hook) + (setq doom-modeline-env--version doom-modeline-env-load-string) + (doom-modeline-env--get + doom-modeline-env--command + doom-modeline-env--command-args + (lambda (prog-version) + (with-current-buffer buffer + (setq doom-modeline-env--version + (funcall doom-modeline-env--parser prog-version)) + (run-hooks 'doom-modeline-after-update-env-hook))))))) + +(add-hook 'find-file-hook #'doom-modeline-update-env) +(with-no-warnings + (if (boundp 'after-focus-change-function) + (add-function + :after after-focus-change-function + (lambda () + (if (frame-focus-state) + (doom-modeline-update-env)))) + (add-hook 'focus-in-hook #'doom-modeline-update-env))) + +(defun doom-modeline-env--get (prog args callback) + "Start a sub process using PROG and apply the ARGS to the sub process. +Once it receives information from STDOUT, it closes off the subprocess and +passes on the information into the CALLBACK. +Example: + (doom-modeline-env--get + \"ruby\" + '(\"--version\") + (lambda (line) + (message (doom-modeline-parser--ruby line)))" + (let ((proc (apply 'start-process + ;; Flaten process-args into a single list so we can handle + ;; variadic length args + (append + (list "doom-modeline-env" nil prog) + args))) + (parser callback)) + (set-process-filter proc + (lambda (_proc line) + (ignore-errors + (funcall parser line)))))) + +(cl-defmacro doom-modeline-def-env (name &key hooks command parser) + "Defines a handler for updating & displaying a version string for a language. + +NAME is an unquoted symbol representing the handler's unique ID. +HOOKS is a list of hook symbols where this handler should be triggered. +COMMAND should be a function that returns a shell command and its arguments (as + a list). It is run on HOOKS. It takes no arguments. +PARSER should be a function for parsing COMMAND's output line-by-line, to + extract the version string." + (declare (indent defun)) + (unless (and hooks command parser) + (error "'%s' env is missing either :hooks, :command or :parser" name)) + (let ((parse-fn (intern (format "doom-modeline-env--%s-parse" name))) + (action-fn (intern (format "doom-modeline-env--%s-args" name))) + (setup-fn (intern (format "doom-modeline-env-setup-%s" name))) + (update-fn (intern (format "doom-modeline-env-update-%s" name))) + (enable-var (intern (format "doom-modeline-env-enable-%s" name))) + (command-var (intern (format "doom-modeline-env-%s-command" name))) + (parser-var (intern (format "doom-modeline-env-%s-parser-fn" name))) + (exe-var (intern (format "doom-modeline-env-%s-executable" name)))) + (macroexp-progn + `((defcustom ,enable-var t + ,(format "Whether to display the version string for %s buffers." name) + :type 'boolean + :group 'doom-modeline-env) + (defvar ,command-var ',action-fn + ,(concat "A function that returns the shell command and arguments (as a list) to\n" + "produce a version string.")) + (defvar ,parser-var ',parse-fn + ,(format "The function to parse each line of `%s'\'s output." command-var)) + (defcustom ,exe-var nil + ,(format (concat "What executable to use for the version indicator in %s buffers.\n\n" + "If nil, the default binary for this language is used.") + name) + :type 'string + :group 'doom-modeline-env) + (defalias ',parse-fn ,parser + (format "The line parser for %s buffers.\n\nUsed by `%s'." + ',name ',update-fn)) + (defalias ',action-fn ,command + (format "The command resolver for %s buffers.\n\nUsed by `%s'." + ',name ',update-fn)) + (defalias ',setup-fn + (lambda () + (if enable-local-variables + (add-hook 'hack-local-variables-hook #',update-fn nil t) + (,update-fn))) + (format "Prepares the modeline to later display the %s version string." + ',name)) + (defalias ',update-fn + (lambda () + (when ,enable-var + (when-let* ((command-list (funcall ,command-var)) + (exe (executable-find (car command-list)))) + (setq doom-modeline-env--command exe + doom-modeline-env--command-args (cdr command-list) + doom-modeline-env--parser ,parser-var) + (doom-modeline-update-env)))) + (format "Updates the %s version string in the modeline." ',name)) + (let ((hooks ',(eval hooks))) + (dolist (hook (if (listp hooks) hooks (list hooks))) + (add-hook hook #',setup-fn))))))) + + +;; Bootstrap +;; Versions, support Python, Ruby, Perl and Golang, etc. + +;;;###autoload (autoload 'doom-modeline-env-setup-python "doom-modeline-env") +(doom-modeline-def-env python + :hooks 'python-mode-hook + :command (lambda () (cond ((and (fboundp 'pipenv-project-p) + (pipenv-project-p)) + (list "pipenv" "run" + (or doom-modeline-env-python-executable + python-shell-interpreter + "python") + "--version")) + ((executable-find "pyenv") (list "pyenv" "version-name")) + ((list (or doom-modeline-env-python-executable + python-shell-interpreter + "python") + "--version")))) + :parser (lambda (line) (let ((version (split-string line))) + (if (>= (length version) 2) + (cadr version) + (car version))))) + +;;;###autoload (autoload 'doom-modeline-env-setup-ruby "doom-modeline-env") +(doom-modeline-def-env ruby + :hooks '(ruby-mode-hook enh-ruby-mode-hook) + :command (lambda () (list (or doom-modeline-env-ruby-executable "ruby") "--version")) + :parser (lambda (line) + (car (split-string + (cadr + (split-string line)) + "p")))) + +;;;###autoload (autoload 'doom-modeline-env-setup-perl "doom-modeline-env") +(doom-modeline-def-env perl + :hooks 'perl-mode-hook + :command (lambda () (list (or doom-modeline-env-perl-executable "perl") "--version")) + :parser (lambda (line) + (cadr + (split-string + (car + (split-string + (cadr + (split-string line "(")) + ")")) + "v")))) + +;;;###autoload (autoload 'doom-modeline-env-setup-go "doom-modeline-env") +(doom-modeline-def-env go + :hooks 'go-mode-hook + :command (lambda () (list (or doom-modeline-env-go-executable "go") "version")) + :parser (lambda (line) + (cadr + (split-string + (cadr + (cdr + (split-string line))) + "go")))) + +;;;###autoload (autoload 'doom-modeline-env-setup-elixir "doom-modeline-env") +(doom-modeline-def-env elixir + :hooks 'elixir-mode-hook + :command (lambda () (list (or doom-modeline-env-elixir-executable "elixir") "--version")) + :parser (lambda (line) (cadr (split-string line)))) + +;;;###autoload (autoload 'doom-modeline-env-setup-rust "doom-modeline-env") +(doom-modeline-def-env rust + :hooks 'rust-mode-hook + :command (lambda () (list (or doom-modeline-env-rust-executable "rustc") "--version")) + :parser (lambda (line) + (car + (split-string + (cadr + (split-string line)) + "-")))) + +(provide 'doom-modeline-env) + +;;; doom-modeline-env.el ends here diff --git a/org/elpa/doom-modeline-20220412.853/doom-modeline-pkg.el b/org/elpa/doom-modeline-20220412.853/doom-modeline-pkg.el new file mode 100644 index 0000000..c289f03 --- /dev/null +++ b/org/elpa/doom-modeline-20220412.853/doom-modeline-pkg.el @@ -0,0 +1,15 @@ +(define-package "doom-modeline" "20220412.853" "A minimal and modern mode-line" + '((emacs "25.1") + (all-the-icons "2.2.0") + (shrink-path "0.2.0") + (dash "2.11.0")) + :commit "7d8eb7c44087a62d8dd6e8ba1afc26facd914fbc" :authors + '(("Vincent Zhang" . "seagle0128@gmail.com")) + :maintainer + '("Vincent Zhang" . "seagle0128@gmail.com") + :keywords + '("faces" "mode-line") + :url "https://github.com/seagle0128/doom-modeline") +;; Local Variables: +;; no-byte-compile: t +;; End: diff --git a/org/elpa/doom-modeline-20220412.853/doom-modeline-segments.el b/org/elpa/doom-modeline-20220412.853/doom-modeline-segments.el new file mode 100644 index 0000000..d0970d1 --- /dev/null +++ b/org/elpa/doom-modeline-20220412.853/doom-modeline-segments.el @@ -0,0 +1,2969 @@ +;;; doom-modeline-segments.el --- The segments for doom-modeline -*- lexical-binding: t; -*- + +;; Copyright (C) 2018-2020 Vincent Zhang + +;; This file is not part of GNU Emacs. + +;; +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . +;; + +;;; Commentary: +;; +;; The segments for doom-modeline. +;; Use `doom-modeline-def-segment' to create a new segment. +;; + +;;; Code: + +(require 'all-the-icons) +(require 'cl-lib) +(require 'seq) +(require 'subr-x) +(require 'doom-modeline-core) +(require 'doom-modeline-env) + + +;; +;; Externals +;; + +(defvar Info-current-file) +(defvar Info-current-node) +(defvar Info-mode-line-node-keymap) +(defvar anzu--cached-count) +(defvar anzu--current-position) +(defvar anzu--overflow-p) +(defvar anzu--state) +(defvar anzu--total-matched) +(defvar anzu-cons-mode-line-p) +(defvar aw-keys) +(defvar battery-echo-area-format) +(defvar battery-load-critical) +(defvar battery-mode-line-format) +(defvar battery-mode-line-limit) +(defvar battery-status-function) +(defvar boon-command-state) +(defvar boon-insert-state) +(defvar boon-off-state) +(defvar boon-special-state) +(defvar edebug-execution-mode) +(defvar eglot--managed-mode) +(defvar erc-modified-channels-alist) +(defvar evil-ex-active-highlights-alist) +(defvar evil-ex-argument) +(defvar evil-ex-range) +(defvar evil-mc-frozen) +(defvar evil-state) +(defvar evil-visual-beginning) +(defvar evil-visual-end) +(defvar evil-visual-selection) +(defvar flycheck-current-errors) +(defvar flycheck-mode-menu-map) +(defvar flymake--mode-line-format) +(defvar flymake--state) +(defvar flymake-menu) +(defvar gnus-newsrc-alist) +(defvar gnus-newsrc-hashtb) +(defvar grip--process) +(defvar helm--mode-line-display-prefarg) +(defvar iedit-occurrences-overlays) +(defvar meow--indicator) +(defvar minions-direct) +(defvar minions-mode-line-lighter) +(defvar minions-mode-line-minor-modes-map) +(defvar mlscroll-minimum-current-width) +(defvar mlscroll-right-align) +(defvar mu4e-alert-mode-line) +(defvar mu4e-alert-modeline-formatter) +(defvar nyan-minimum-window-width) +(defvar objed--obj-state) +(defvar objed--object) +(defvar objed-modeline-setup-func) +(defvar persp-nil-name) +(defvar phi-replace--mode-line-format) +(defvar phi-search--selection) +(defvar phi-search-mode-line-format) +(defvar poke-line-minimum-window-width) +(defvar rcirc-activity) +(defvar sml-modeline-len) +(defvar symbol-overlay-keywords-alist) +(defvar symbol-overlay-temp-symbol) +(defvar text-scale-mode-amount) +(defvar tracking-buffers) +(defvar winum-auto-setup-mode-line) +(defvar xah-fly-insert-state-p) + +(declare-function anzu--reset-status "ext:anzu") +(declare-function anzu--where-is-here "ext:anzu") +(declare-function async-inject-variables "ext:async") +(declare-function async-start "ext:async") +(declare-function avy-traverse "ext:avy") +(declare-function avy-tree "ext:avy") +(declare-function aw-update "ext:ace-window") +(declare-function aw-window-list "ext:ace-window") +(declare-function battery-format "battery") +(declare-function battery-update "battery") +(declare-function boon-modeline-string "ext:boon") +(declare-function boon-state-string "ext:boon") +(declare-function cider--connection-info "ext:cider") +(declare-function cider-connected-p "ext:cider") +(declare-function cider-current-repl "ext:cider") +(declare-function cider-jack-in "ext:cider") +(declare-function cider-quit "ext:cider") +(declare-function citre-mode "ext:citre-basic-tools") +(declare-function dap--cur-session "ext:dap-mode") +(declare-function dap--debug-session-name "ext:dap-mode") +(declare-function dap--debug-session-state "ext:dap-mode") +(declare-function dap--session-running "ext:dap-mode") +(declare-function dap-debug-recent "ext:dap-mode") +(declare-function dap-disconnect "ext:dap-mode") +(declare-function dap-hydra "ext:dap-hydra") +(declare-function edebug-help "edebug") +(declare-function edebug-next-mode "edebug") +(declare-function edebug-stop "edebug") +(declare-function eglot "ext:eglot") +(declare-function eglot--major-mode "ext:eglot" t t) +(declare-function eglot--project-nickname "ext:eglot" t t) +(declare-function eglot--spinner "ext:eglot" t t) +(declare-function eglot-clear-status "ext:eglot") +(declare-function eglot-current-server "ext:eglot") +(declare-function eglot-events-buffer "ext:eglot") +(declare-function eglot-forget-pending-continuations "ext:eglot") +(declare-function eglot-managed-p "ext:glot") +(declare-function eglot-reconnect "ext:eglot") +(declare-function eglot-shutdown "ext:eglot") +(declare-function eglot-stderr-buffer "ext:eglot") +(declare-function erc-switch-to-buffer "erc") +(declare-function erc-track-switch-buffer "erc-track") +(declare-function evil-delimited-arguments "ext:evil-common") +(declare-function evil-emacs-state-p "ext:evil-states" t t) +(declare-function evil-force-normal-state "ext:evil-commands" t t) +(declare-function evil-insert-state-p "ext:evil-states" t t) +(declare-function evil-motion-state-p "ext:evil-states" t t) +(declare-function evil-normal-state-p "ext:evil-states" t t) +(declare-function evil-operator-state-p "ext:evil-states" t t) +(declare-function evil-replace-state-p "ext:evil-states" t t) +(declare-function evil-state-property "ext:evil-common") +(declare-function evil-visual-state-p "ext:evil-states" t t) +(declare-function eyebrowse--get "ext:eyebrowse") +(declare-function face-remap-remove-relative "face-remap") +(declare-function fancy-narrow-active-p "ext:fancy-narrow") +(declare-function flycheck-buffer "ext:flycheck") +(declare-function flycheck-count-errors "ext:flycheck") +(declare-function flycheck-error-level-compilation-level "ext:flycheck") +(declare-function flycheck-list-errors "ext:flycheck") +(declare-function flycheck-next-error "ext:flycheck") +(declare-function flycheck-previous-error "ext:flycheck") +(declare-function flymake--diag-type "ext:flymake" t t) +(declare-function flymake--handle-report "ext:flymake") +(declare-function flymake--lookup-type-property "ext:flymake") +(declare-function flymake--state-diags "ext:flymake" t t) +(declare-function flymake-disabled-backends "ext:flymake") +(declare-function flymake-goto-next-error "ext:flymake") +(declare-function flymake-goto-prev-error "ext:flymake") +(declare-function flymake-reporting-backends "ext:flymake") +(declare-function flymake-running-backends "ext:flymake") +(declare-function flymake-show-buffer-diagnostics "ext:flymake") +(declare-function flymake-show-diagnostics-buffer "ext:flymake") +(declare-function flymake-start "ext:flymake") +(declare-function follow-all-followers "follow") +(declare-function gnus-demon-add-handler "gnus-demon") +(declare-function grip--preview-url "ext:grip-mode") +(declare-function grip-browse-preview "ext:grip-mode") +(declare-function grip-restart-preview "ext:grip-mode") +(declare-function grip-stop-preview "ext:grip-mode") +(declare-function helm-candidate-number-at-point "ext:helm-core") +(declare-function helm-get-candidate-number "ext:helm-core") +(declare-function iedit-find-current-occurrence-overlay "ext:iedit-lib") +(declare-function iedit-prev-occurrence "ext:iedit-lib") +(declare-function image-get-display-property "image-mode") +(declare-function jsonrpc--request-continuations "ext:jsonrpc" t t) +(declare-function jsonrpc-last-error "ext:jsonrpc" t t) +(declare-function lsp--workspace-print "ext:lsp-mode") +(declare-function lsp-describe-session "ext:lsp-mode") +(declare-function lsp-workspace-folders-open "ext:lsp-mode") +(declare-function lsp-workspace-restart "ext:lsp-mode") +(declare-function lsp-workspace-shutdown "ext:lsp-mode") +(declare-function lsp-workspaces "ext:lsp-mode") +(declare-function lv-message "ext:lv") +(declare-function mc/num-cursors "ext:multiple-cursors-core") +(declare-function mlscroll-mode-line "ext:mlscroll") +(declare-function mu4e-alert-default-mode-line-formatter "ext:mu4e-alert") +(declare-function mu4e-alert-enable-mode-line-display "ext:mu4e-alert") +(declare-function nyan-create "ext:nyan-mode") +(declare-function org-edit-src-save "ext:org-src") +(declare-function parrot-create "ext:parrot") +(declare-function pdf-cache-number-of-pages "ext:pdf-cache" t t) +(declare-function persp-add-buffer "ext:persp-mode") +(declare-function persp-contain-buffer-p "ext:persp-mode") +(declare-function persp-switch "ext:persp-mode") +(declare-function phi-search--initialize "ext:phi-search") +(declare-function poke-line-create "ext:poke-line") +(declare-function popup-create "ext:popup") +(declare-function popup-delete "ext:popup") +(declare-function rcirc-next-active-buffer "rcirc") +(declare-function rcirc-short-buffer-name "rcirc") +(declare-function rcirc-switch-to-server-buffer "rcirc") +(declare-function rcirc-window-configuration-change "rcirc") +(declare-function rime--should-enable-p "ext:rime") +(declare-function rime--should-inline-ascii-p "ext:rime") +(declare-function sml-modeline-create "ext:sml-modeline") +(declare-function symbol-overlay-assoc "ext:symbol-overlay") +(declare-function symbol-overlay-get-list "ext:symbol-overlay") +(declare-function symbol-overlay-get-symbol "ext:symbol-overlay") +(declare-function symbol-overlay-rename "ext:symbol-overlay") +(declare-function tab-bar--current-tab "tab-bar") +(declare-function tab-bar--current-tab-index "tab-bar") +(declare-function tracking-next-buffer "ext:tracking") +(declare-function tracking-previous-buffer "ext:tracking") +(declare-function tracking-shorten "ext:tracking") +(declare-function undo-tree-redo-1 "ext:undo-tree") +(declare-function undo-tree-undo-1 "ext:undo-tree") +(declare-function warning-numeric-level "warnings") +(declare-function window-numbering-clear-mode-line "ext:window-numbering") +(declare-function window-numbering-get-number-string "ext:window-numbering") +(declare-function window-numbering-install-mode-line "ext:window-numbering") +(declare-function winum--clear-mode-line "ext:winum") +(declare-function winum--install-mode-line "ext:winum") +(declare-function winum-get-number-string "ext:winum") + + + +;; +;; Buffer information +;; + +(defvar-local doom-modeline--buffer-file-icon nil) +(defun doom-modeline-update-buffer-file-icon (&rest _) + "Update file icon in mode-line." + (setq doom-modeline--buffer-file-icon + (when (and (display-graphic-p) + doom-modeline-icon + doom-modeline-major-mode-icon) + (let ((icon (all-the-icons-icon-for-buffer))) + (propertize (if (or (null icon) (symbolp icon)) + (doom-modeline-icon 'faicon "file-o" nil nil + :face 'all-the-icons-dsilver + :height 0.9 + :v-adjust 0.0) + icon) + 'help-echo (format "Major-mode: %s" (format-mode-line mode-name)) + 'display '(raise -0.135)))))) +(add-hook 'find-file-hook #'doom-modeline-update-buffer-file-icon) +(add-hook 'after-change-major-mode-hook #'doom-modeline-update-buffer-file-icon) +(add-hook 'clone-indirect-buffer-hook #'doom-modeline-update-buffer-file-icon) + +(doom-modeline-add-variable-watcher + 'doom-modeline-icon + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-icon val) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (doom-modeline-update-buffer-file-icon)))))) + +(defun doom-modeline-buffer-file-state-icon (icon unicode text face) + "Displays an ICON of buffer state with FACE. +UNICODE and TEXT are the alternatives if it is not applicable. +Uses `all-the-icons-material' to fetch the icon." + (doom-modeline-icon 'material icon unicode text + :face face + :height 1.1 + :v-adjust -0.225)) + +(defvar-local doom-modeline--buffer-file-state-icon nil) +(defun doom-modeline-update-buffer-file-state-icon (&rest _) + "Update the buffer or file state in mode-line." + (setq doom-modeline--buffer-file-state-icon + (when doom-modeline-buffer-state-icon + (ignore-errors + (concat + (cond (buffer-read-only + (doom-modeline-buffer-file-state-icon + "lock" "πŸ”’" "%1*" `(:inherit doom-modeline-warning + :weight ,(if doom-modeline-icon + 'normal + 'bold)))) + ((and buffer-file-name (buffer-modified-p) + doom-modeline-buffer-modification-icon) + (doom-modeline-buffer-file-state-icon + "save" "πŸ’Ύ" "%1*" `(:inherit doom-modeline-buffer-modified + :weight ,(if doom-modeline-icon + 'normal + 'bold)))) + ((and buffer-file-name + (not (file-remote-p buffer-file-name)) ; Avoid freezing while connection is lost + (not (file-exists-p buffer-file-name))) + (doom-modeline-buffer-file-state-icon + "do_not_disturb_alt" "🚫" "!" 'doom-modeline-urgent)) + (t "")) + (when (or (buffer-narrowed-p) + (and (bound-and-true-p fancy-narrow-mode) + (fancy-narrow-active-p)) + (bound-and-true-p dired-narrow-mode)) + (doom-modeline-buffer-file-state-icon + "vertical_align_center" "↕" "><" 'doom-modeline-warning))))))) + +(defvar-local doom-modeline--buffer-file-name nil) +(defun doom-modeline-update-buffer-file-name (&rest _) + "Update buffer file name in mode-line." + (setq doom-modeline--buffer-file-name + (ignore-errors + (save-match-data + (if buffer-file-name + (doom-modeline-buffer-file-name) + (propertize "%b" + 'face 'doom-modeline-buffer-file + 'mouse-face 'mode-line-highlight + 'help-echo "Buffer name +mouse-1: Previous buffer\nmouse-3: Next buffer" + 'local-map mode-line-buffer-identification-keymap)))))) +(add-hook 'find-file-hook #'doom-modeline-update-buffer-file-name) +(add-hook 'after-save-hook #'doom-modeline-update-buffer-file-name) +(add-hook 'clone-indirect-buffer-hook #'doom-modeline-update-buffer-file-name) +(add-hook 'evil-insert-state-exit-hook #'doom-modeline-update-buffer-file-name) +(advice-add #'not-modified :after #'doom-modeline-update-buffer-file-name) +(advice-add #'rename-buffer :after #'doom-modeline-update-buffer-file-name) +(advice-add #'set-visited-file-name :after #'doom-modeline-update-buffer-file-name) +(advice-add #'pop-to-buffer :after #'doom-modeline-update-buffer-file-name) +(advice-add #'undo :after #'doom-modeline-update-buffer-file-name) +(advice-add #'undo-tree-undo-1 :after #'doom-modeline-update-buffer-file-name) +(advice-add #'undo-tree-redo-1 :after #'doom-modeline-update-buffer-file-name) +(advice-add #'fill-paragraph :after #'doom-modeline-update-buffer-file-name) +(advice-add #'popup-create :after #'doom-modeline-update-buffer-file-name) +(advice-add #'popup-delete :after #'doom-modeline-update-buffer-file-name) +(advice-add #'org-edit-src-save :after #'doom-modeline-update-buffer-file-name) +(advice-add #'symbol-overlay-rename :after #'doom-modeline-update-buffer-file-name) + +(doom-modeline-add-variable-watcher + 'doom-modeline-buffer-file-name-style + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-buffer-file-name-style val) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (when buffer-file-name + (doom-modeline-update-buffer-file-name))))))) + +(defsubst doom-modeline--buffer-mode-icon () + "The icon of the current major mode." + (when (and doom-modeline-icon doom-modeline-major-mode-icon) + (when-let ((icon (or doom-modeline--buffer-file-icon + (doom-modeline-update-buffer-file-icon)))) + (concat + (let ((active (doom-modeline--active))) + (if (and active doom-modeline-major-mode-color-icon) + icon + (doom-modeline-propertize-icon icon (if active + 'mode-line + 'mode-line-inactive)))) + (doom-modeline-vspc))))) + +(defsubst doom-modeline--buffer-state-icon () + "The icon of the current buffer state." + (when doom-modeline-buffer-state-icon + (when-let ((icon (doom-modeline-update-buffer-file-state-icon))) + (concat + (if (doom-modeline--active) + icon + (doom-modeline-propertize-icon icon 'mode-line-inactive)) + (doom-modeline-vspc))))) + +(defsubst doom-modeline--buffer-name () + "The current buffer name." + (when doom-modeline-buffer-name + (if (and (not (eq doom-modeline-buffer-file-name-style 'file-name)) + doom-modeline--limited-width-p) + ;; Only display the buffer name if the window is small, and doesn't need to + ;; respect file-name style. + (propertize "%b" + 'face (cond ((and buffer-file-name (buffer-modified-p)) + 'doom-modeline-buffer-modified) + ((doom-modeline--active) 'doom-modeline-buffer-file) + (t 'mode-line-inactive)) + 'mouse-face 'mode-line-highlight + 'help-echo "Buffer name +mouse-1: Previous buffer\nmouse-3: Next buffer" + 'local-map mode-line-buffer-identification-keymap) + (when-let ((name (or doom-modeline--buffer-file-name + (doom-modeline-update-buffer-file-name)))) + (if (doom-modeline--active) + ;; Check if the buffer is modified + (if (and buffer-file-name (buffer-modified-p)) + (propertize name 'face 'doom-modeline-buffer-modified) + name) + (propertize name 'face 'mode-line-inactive)))))) + +(doom-modeline-def-segment buffer-info + "Combined information about the current buffer, including the current working +directory, the file name, and its state (modified, read-only or non-existent)." + (concat + (doom-modeline-spc) + (doom-modeline--buffer-mode-icon) + (doom-modeline--buffer-state-icon) + (doom-modeline--buffer-name))) + +(doom-modeline-def-segment buffer-info-simple + "Display only the current buffer's name, but with fontification." + (concat + (doom-modeline-spc) + (doom-modeline--buffer-mode-icon) + (doom-modeline--buffer-state-icon) + (propertize "%b" + 'face (cond ((and buffer-file-name (buffer-modified-p)) + 'doom-modeline-buffer-modified) + ((doom-modeline--active) 'doom-modeline-buffer-file) + (t 'mode-line-inactive)) + 'mouse-face 'mode-line-highlight + 'help-echo "Buffer name +mouse-1: Previous buffer\nmouse-3: Next buffer" + 'local-map mode-line-buffer-identification-keymap))) + +(doom-modeline-def-segment buffer-default-directory + "Displays `default-directory' with the icon and state . This is for special +buffers like the scratch buffer where knowing the current project directory is +important." + (let ((face (cond ((buffer-modified-p) + 'doom-modeline-buffer-modified) + ((doom-modeline--active) 'doom-modeline-buffer-path) + (t 'mode-line-inactive)))) + (concat (doom-modeline-spc) + (and doom-modeline-major-mode-icon + (concat (doom-modeline-icon + 'octicon "file-directory" "πŸ–Ώ" "" + :face face :v-adjust -0.05 :height 1.25) + (doom-modeline-vspc))) + (doom-modeline--buffer-state-icon) + (propertize (abbreviate-file-name default-directory) 'face face)))) + +(doom-modeline-def-segment buffer-default-directory-simple + "Displays `default-directory'. This is for special buffers like the scratch +buffer where knowing the current project directory is important." + (let ((face (if (doom-modeline--active) 'doom-modeline-buffer-path 'mode-line-inactive))) + (concat (doom-modeline-spc) + (and doom-modeline-major-mode-icon + (concat (doom-modeline-icon + 'octicon "file-directory" "πŸ–Ώ" "" + :face face :v-adjust -0.05 :height 1.25) + (doom-modeline-vspc))) + (propertize (abbreviate-file-name default-directory) 'face face)))) + + +;; +;; Encoding +;; + +(doom-modeline-def-segment buffer-encoding + "Displays the eol and the encoding style of the buffer the same way Atom does." + (when doom-modeline-buffer-encoding + (let ((face (if (doom-modeline--active) 'mode-line 'mode-line-inactive)) + (mouse-face 'mode-line-highlight)) + (concat + (doom-modeline-spc) + + ;; eol type + (let ((eol (coding-system-eol-type buffer-file-coding-system))) + (when (or (eq doom-modeline-buffer-encoding t) + (and (eq doom-modeline-buffer-encoding 'nondefault) + (not (equal eol doom-modeline-default-eol-type)))) + (propertize + (pcase eol + (0 "LF ") + (1 "CRLF ") + (2 "CR ") + (_ "")) + 'face face + 'mouse-face mouse-face + 'help-echo (format "End-of-line style: %s\nmouse-1: Cycle" + (pcase eol + (0 "Unix-style LF") + (1 "DOS-style CRLF") + (2 "Mac-style CR") + (_ "Undecided"))) + 'local-map (let ((map (make-sparse-keymap))) + (define-key map [mode-line mouse-1] 'mode-line-change-eol) + map)))) + + ;; coding system + (let* ((sys (coding-system-plist buffer-file-coding-system)) + (cat (plist-get sys :category)) + (sym (if (memq cat + '(coding-category-undecided coding-category-utf-8)) + 'utf-8 + (plist-get sys :name)))) + (when (or (eq doom-modeline-buffer-encoding t) + (and (eq doom-modeline-buffer-encoding 'nondefault) + (not (eq cat 'coding-category-undecided)) + (not (eq sym doom-modeline-default-coding-system)))) + (propertize + (upcase (symbol-name sym)) + 'face face + 'mouse-face mouse-face + 'help-echo 'mode-line-mule-info-help-echo + 'local-map mode-line-coding-system-map))) + + (doom-modeline-spc))))) + + +;; +;; Indentation +;; + +(doom-modeline-def-segment indent-info + "Displays the indentation information." + (when doom-modeline-indent-info + (let ((do-propertize + (lambda (mode size) + (propertize + (format " %s %d " mode size) + 'face (if (doom-modeline--active) 'mode-line 'mode-line-inactive))))) + (if indent-tabs-mode + (funcall do-propertize "TAB" tab-width) + (let ((lookup-var + (seq-find (lambda (var) + (and var (boundp var) (symbol-value var))) + (cdr (assoc major-mode doom-modeline-indent-alist)) nil))) + (funcall do-propertize "SPC" + (if lookup-var + (symbol-value lookup-var) + tab-width))))))) + +;; +;; Remote host +;; + +(doom-modeline-def-segment remote-host + "Hostname for remote buffers." + (when default-directory + (when-let ((host (file-remote-p default-directory 'host))) + (propertize + (concat "@" host) + 'face (if (doom-modeline--active) 'doom-modeline-host 'mode-line-inactive))))) + + +;; +;; Major mode +;; + +(doom-modeline-def-segment major-mode + "The major mode, including environment and text-scale info." + (propertize + (concat + (doom-modeline-spc) + (propertize (format-mode-line + (or (and (boundp 'delighted-modes) + (cadr (assq major-mode delighted-modes))) + mode-name)) + 'help-echo "Major mode\n\ + mouse-1: Display major mode menu\n\ + mouse-2: Show help for major mode\n\ + mouse-3: Toggle minor modes" + 'mouse-face 'mode-line-highlight + 'local-map mode-line-major-mode-keymap) + (when (and doom-modeline-env-version doom-modeline-env--version) + (format " %s" doom-modeline-env--version)) + (and (boundp 'text-scale-mode-amount) + (/= text-scale-mode-amount 0) + (format + (if (> text-scale-mode-amount 0) + " (%+d)" + " (%-d)") + text-scale-mode-amount)) + (doom-modeline-spc)) + 'face (if (doom-modeline--active) + 'doom-modeline-buffer-major-mode + 'mode-line-inactive))) + + +;; +;; Process +;; + +(doom-modeline-def-segment process + "The process info." + (if (doom-modeline--active) + mode-line-process + (propertize (format-mode-line mode-line-process) + 'face 'mode-line-inactive))) + + +;; +;; Minor modes +;; + +(doom-modeline-def-segment minor-modes + (when doom-modeline-minor-modes + (let ((face (if (doom-modeline--active) + 'doom-modeline-buffer-minor-mode + 'mode-line-inactive)) + (mouse-face 'mode-line-highlight) + (help-echo "Minor mode + mouse-1: Display minor mode menu + mouse-2: Show help for minor mode + mouse-3: Toggle minor modes")) + (if (bound-and-true-p minions-mode) + `((:propertize ("" ,(--filter (memq (car it) minions-direct) + minor-mode-alist)) + face ,face + mouse-face ,mouse-face + help-echo ,help-echo + local-map ,mode-line-minor-mode-keymap) + ,(doom-modeline-spc) + (:propertize ("" ,(doom-modeline-icon 'octicon "gear" "βš™" + minions-mode-line-lighter + :face face :v-adjust -0.05)) + mouse-face ,mouse-face + help-echo "Minions +mouse-1: Display minor modes menu" + local-map ,minions-mode-line-minor-modes-map) + ,(doom-modeline-spc)) + `((:propertize ("" minor-mode-alist) + face ,face + mouse-face ,mouse-face + help-echo ,help-echo + local-map ,mode-line-minor-mode-keymap) + ,(doom-modeline-spc)))))) + + +;; +;; VCS +;; + +(defun doom-modeline-vcs-icon (icon &optional unicode text face voffset) + "Displays the vcs ICON with FACE and VOFFSET. + +UNICODE and TEXT are fallbacks. +Uses `all-the-icons-octicon' to fetch the icon." + (doom-modeline-icon 'octicon icon unicode text + :face face :v-adjust (or voffset -0.1))) + +(defvar-local doom-modeline--vcs-icon nil) +(defun doom-modeline-update-vcs-icon (&rest _) + "Update icon of vcs state in mode-line." + (setq doom-modeline--vcs-icon + (when (and vc-mode buffer-file-name) + (let* ((backend (vc-backend buffer-file-name)) + (state (vc-state (file-local-name buffer-file-name) backend))) + (cond ((memq state '(edited added)) + (doom-modeline-vcs-icon "git-compare" "⇆" "*" 'doom-modeline-info -0.05)) + ((eq state 'needs-merge) + (doom-modeline-vcs-icon "git-merge" "β›™" "?" 'doom-modeline-info)) + ((eq state 'needs-update) + (doom-modeline-vcs-icon "arrow-down" "↓" "!" 'doom-modeline-warning)) + ((memq state '(removed conflict unregistered)) + (doom-modeline-vcs-icon "alert" "⚠" "!" 'doom-modeline-urgent)) + (t + (doom-modeline-vcs-icon "git-branch" "ξ‚ " "@" 'doom-modeline-info -0.05))))))) +(add-hook 'find-file-hook #'doom-modeline-update-vcs-icon) +(add-hook 'after-save-hook #'doom-modeline-update-vcs-icon) +(advice-add #'vc-refresh-state :after #'doom-modeline-update-vcs-icon) + +(doom-modeline-add-variable-watcher + 'doom-modeline-icon + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-icon val) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (doom-modeline-update-vcs-icon)))))) + +(doom-modeline-add-variable-watcher + 'doom-modeline-unicode-fallback + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-unicode-fallback val) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (doom-modeline-update-vcs-icon)))))) + +(defvar-local doom-modeline--vcs-text nil) +(defun doom-modeline-update-vcs-text (&rest _) + "Update text of vcs state in mode-line." + (setq doom-modeline--vcs-text + (when (and vc-mode buffer-file-name) + (let* ((backend (vc-backend buffer-file-name)) + (state (vc-state (file-local-name buffer-file-name) backend)) + (str (if vc-display-status + (substring vc-mode (+ (if (eq backend 'Hg) 2 3) 2)) + ""))) + (propertize (if (> (length str) doom-modeline-vcs-max-length) + (concat + (substring str 0 (- doom-modeline-vcs-max-length 3)) + "...") + str) + 'mouse-face 'mode-line-highlight + 'face (cond ((eq state 'needs-update) + 'doom-modeline-warning) + ((memq state '(removed conflict unregistered)) + 'doom-modeline-urgent) + (t 'doom-modeline-info))))))) +(add-hook 'find-file-hook #'doom-modeline-update-vcs-text) +(add-hook 'after-save-hook #'doom-modeline-update-vcs-text) +(advice-add #'vc-refresh-state :after #'doom-modeline-update-vcs-text) + +(doom-modeline-def-segment vcs + "Displays the current branch, colored based on its state." + (let ((active (doom-modeline--active))) + (when-let ((icon doom-modeline--vcs-icon) + (text doom-modeline--vcs-text)) + (concat + (doom-modeline-spc) + (propertize + (concat + (if active + icon + (doom-modeline-propertize-icon icon 'mode-line-inactive)) + (doom-modeline-vspc)) + 'mouse-face 'mode-line-highlight + 'help-echo (get-text-property 1 'help-echo vc-mode) + 'local-map (get-text-property 1 'local-map vc-mode)) + (if active + text + (propertize text 'face 'mode-line-inactive)) + (doom-modeline-spc))))) + + +;; +;; Checker +;; + +(defun doom-modeline-checker-icon (icon unicode text face) + "Displays the checker ICON with FACE. + +UNICODE and TEXT are fallbacks. +Uses `all-the-icons-material' to fetch the icon." + (doom-modeline-icon 'material icon unicode text + :face face :height 1.1 :v-adjust -0.225)) + +(defun doom-modeline-checker-text (text &optional face) + "Displays TEXT with FACE." + (propertize text 'face (or face 'mode-line))) + +;; Flycheck + +(defun doom-modeline--flycheck-count-errors () + "Count the number of ERRORS, grouped by level. + +Return an alist, where each ITEM is a cons cell whose `car' is an +error level, and whose `cdr' is the number of errors of that +level." + (let ((info 0) (warning 0) (error 0)) + (mapc + (lambda (item) + (let ((count (cdr item))) + (pcase (flycheck-error-level-compilation-level (car item)) + (0 (cl-incf info count)) + (1 (cl-incf warning count)) + (2 (cl-incf error count))))) + (flycheck-count-errors flycheck-current-errors)) + `((info . ,info) (warning . ,warning) (error . ,error)))) + +(defvar-local doom-modeline--flycheck-icon nil) +(defun doom-modeline-update-flycheck-icon (&optional status) + "Update flycheck icon via STATUS." + (setq doom-modeline--flycheck-icon + (when-let + ((icon + (pcase status + ('finished (if flycheck-current-errors + (let-alist (doom-modeline--flycheck-count-errors) + (doom-modeline-checker-icon + "block" "🚫" "!" + (cond ((> .error 0) 'doom-modeline-urgent) + ((> .warning 0) 'doom-modeline-warning) + (t 'doom-modeline-info)))) + (doom-modeline-checker-icon "check" "βœ“" "-" 'doom-modeline-info))) + ('running (doom-modeline-checker-icon "access_time" "⏱" "*" 'doom-modeline-debug)) + ('no-checker (doom-modeline-checker-icon "sim_card_alert" "⚠" "-" 'doom-modeline-debug)) + ('errored (doom-modeline-checker-icon "sim_card_alert" "⚠" "-" 'doom-modeline-urgent)) + ('interrupted (doom-modeline-checker-icon "pause" "⏸" "=" 'doom-modeline-debug)) + ('suspicious (doom-modeline-checker-icon "priority_high" "❗" "!" 'doom-modeline-urgent)) + (_ nil)))) + (propertize icon + 'help-echo (concat "Flycheck\n" + (pcase status + ('finished "mouse-1: Display minor mode menu +mouse-2: Show help for minor mode") + ('running "Running...") + ('no-checker "No Checker") + ('errored "Error") + ('interrupted "Interrupted") + ('suspicious "Suspicious"))) + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (define-key map [mode-line down-mouse-1] + flycheck-mode-menu-map) + (define-key map [mode-line mouse-2] + (lambda () + (interactive) + (describe-function 'flycheck-mode))) + map))))) +(add-hook 'flycheck-status-changed-functions #'doom-modeline-update-flycheck-icon) +(add-hook 'flycheck-mode-hook #'doom-modeline-update-flycheck-icon) + +(doom-modeline-add-variable-watcher + 'doom-modeline-icon + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-icon val) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (when (bound-and-true-p flycheck-mode) + (flycheck-buffer))))))) + +(doom-modeline-add-variable-watcher + 'doom-modeline-unicode-fallback + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-unicode-fallback val) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (when (bound-and-true-p flycheck-mode) + (flycheck-buffer))))))) + +(defvar-local doom-modeline--flycheck-text nil) +(defun doom-modeline-update-flycheck-text (&optional status) + "Update flycheck text via STATUS." + (setq doom-modeline--flycheck-text + (when-let + ((text + (pcase status + ('finished (when flycheck-current-errors + (let-alist (doom-modeline--flycheck-count-errors) + (if doom-modeline-checker-simple-format + (doom-modeline-checker-text + (number-to-string (+ .error .warning .info)) + (cond ((> .error 0) 'doom-modeline-urgent) + ((> .warning 0) 'doom-modeline-warning) + (t 'doom-modeline-info))) + (format "%s/%s/%s" + (doom-modeline-checker-text (number-to-string .error) + 'doom-modeline-urgent) + (doom-modeline-checker-text (number-to-string .warning) + 'doom-modeline-warning) + (doom-modeline-checker-text (number-to-string .info) + 'doom-modeline-info)))))) + ('running nil) + ('no-checker nil) + ('errored (doom-modeline-checker-text "Error" 'doom-modeline-urgent)) + ('interrupted (doom-modeline-checker-text "Interrupted" 'doom-modeline-debug)) + ('suspicious (doom-modeline-checker-text "Suspicious" 'doom-modeline-urgent)) + (_ nil)))) + (propertize + text + 'help-echo (pcase status + ('finished + (concat + (when flycheck-current-errors + (let-alist (doom-modeline--flycheck-count-errors) + (format "error: %d, warning: %d, info: %d\n" .error .warning .info))) + "mouse-1: Show all errors +mouse-3: Next error" + (if (featurep 'mwheel) + "\nwheel-up/wheel-down: Previous/next error"))) + ('running "Running...") + ('no-checker "No Checker") + ('errored "Error") + ('interrupted "Interrupted") + ('suspicious "Suspicious")) + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (define-key map [mode-line mouse-1] + #'flycheck-list-errors) + (define-key map [mode-line mouse-3] + #'flycheck-next-error) + (when (featurep 'mwheel) + (define-key map [mode-line mouse-wheel-down-event] + (lambda (event) + (interactive "e") + (with-selected-window (posn-window (event-start event)) + (flycheck-previous-error 1)))) + (define-key map [mode-line mouse-wheel-up-event] + (lambda (event) + (interactive "e") + (with-selected-window (posn-window (event-start event)) + (flycheck-next-error 1)))) + map)))))) +(add-hook 'flycheck-status-changed-functions #'doom-modeline-update-flycheck-text) +(add-hook 'flycheck-mode-hook #'doom-modeline-update-flycheck-text) + +;; Flymake + +;; Compatibility +;; @see https://github.com/emacs-mirror/emacs/commit/6e100869012da9244679696634cab6b9cac96303. +(with-eval-after-load 'flymake + (unless (boundp 'flymake--state) + (defvaralias 'flymake--state 'flymake--backend-state)) + (unless (fboundp 'flymake--state-diags) + (defalias 'flymake--state-diags 'flymake--backend-state-diags))) + +(defvar-local doom-modeline--flymake-icon nil) +(defun doom-modeline-update-flymake-icon (&rest _) + "Update flymake icon." + (setq flymake--mode-line-format nil) ; remove the lighter of minor mode + (setq doom-modeline--flymake-icon + (let* ((known (hash-table-keys flymake--state)) + (running (flymake-running-backends)) + (disabled (flymake-disabled-backends)) + (reported (flymake-reporting-backends)) + (all-disabled (and disabled (null running))) + (some-waiting (cl-set-difference running reported))) + (when-let + ((icon + (cond + (some-waiting (doom-modeline-checker-icon "access_time" "⏰" "*" 'doom-modeline-debug)) + ((null known) (doom-modeline-checker-icon "sim_card_alert" "❓" "?" 'doom-modeline-debug)) + (all-disabled (doom-modeline-checker-icon "sim_card_alert" "❗" "!" 'doom-modeline-urgent)) + (t (let ((.error 0) + (.warning 0) + (.note 0)) + (progn + (cl-loop + with warning-level = (warning-numeric-level :warning) + with note-level = (warning-numeric-level :debug) + for state being the hash-values of flymake--state + do (cl-loop + with diags = (flymake--state-diags state) + for diag in diags do + (let ((severity (flymake--lookup-type-property (flymake--diag-type diag) 'severity + (warning-numeric-level :error)))) + (cond ((> severity warning-level) (cl-incf .error)) + ((> severity note-level) (cl-incf .warning)) + (t (cl-incf .note)))))) + (if (> (+ .error .warning .note) 0) + (doom-modeline-checker-icon "do_not_disturb_alt" "🚫" "!" + (cond ((> .error 0) 'doom-modeline-urgent) + ((> .warning 0) 'doom-modeline-warning) + (t 'doom-modeline-info))) + (doom-modeline-checker-icon "check" "βœ”" "-" 'doom-modeline-info)))))))) + (propertize + icon + 'help-echo (concat "Flymake\n" + (cond + (some-waiting "Running...") + ((null known) "No Checker") + (all-disabled "All Checkers Disabled") + (t (format "%d/%d backends running +mouse-1: Display minor mode menu +mouse-2: Show help for minor mode" + (length running) (length known))))) + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (define-key map [mode-line down-mouse-1] + flymake-menu) + (define-key map [mode-line mouse-2] + (lambda () + (interactive) + (describe-function 'flymake-mode))) + map)))))) +(advice-add #'flymake--handle-report :after #'doom-modeline-update-flymake-icon) + +(doom-modeline-add-variable-watcher + 'doom-modeline-icon + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-icon val) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (when (bound-and-true-p flymake-mode) + (flymake-start))))))) + +(doom-modeline-add-variable-watcher + 'doom-modeline-unicode-fallback + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-unicode-fallback val) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (when (bound-and-true-p flymake-mode) + (flymake-start))))))) + +(defvar-local doom-modeline--flymake-text nil) +(defun doom-modeline-update-flymake-text (&rest _) + "Update flymake text." + (setq flymake--mode-line-format nil) ; remove the lighter of minor mode + (setq doom-modeline--flymake-text + (let* ((known (hash-table-keys flymake--state)) + (running (flymake-running-backends)) + (disabled (flymake-disabled-backends)) + (reported (flymake-reporting-backends)) + (all-disabled (and disabled (null running))) + (some-waiting (cl-set-difference running reported)) + (warning-level (warning-numeric-level :warning)) + (note-level (warning-numeric-level :debug)) + (.error 0) + (.warning 0) + (.note 0)) + (maphash (lambda (_b state) + (cl-loop + with diags = (flymake--state-diags state) + for diag in diags do + (let ((severity (flymake--lookup-type-property (flymake--diag-type diag) 'severity + (warning-numeric-level :error)))) + (cond ((> severity warning-level) (cl-incf .error)) + ((> severity note-level) (cl-incf .warning)) + (t (cl-incf .note)))))) + flymake--state) + (when-let + ((text + (cond + (some-waiting doom-modeline--flymake-text) + ((null known) nil) + (all-disabled nil) + (t (let ((num (+ .error .warning .note))) + (when (> num 0) + (if doom-modeline-checker-simple-format + (doom-modeline-checker-text (number-to-string num) + (cond ((> .error 0) 'doom-modeline-urgent) + ((> .warning 0) 'doom-modeline-warning) + (t 'doom-modeline-info))) + (format "%s/%s/%s" + (doom-modeline-checker-text (number-to-string .error) + 'doom-modeline-urgent) + (doom-modeline-checker-text (number-to-string .warning) + 'doom-modeline-warning) + (doom-modeline-checker-text (number-to-string .note) + 'doom-modeline-info))))))))) + (propertize + text + 'help-echo (cond + (some-waiting "Running...") + ((null known) "No Checker") + (all-disabled "All Checkers Disabled") + (t (format "error: %d, warning: %d, note: %d +mouse-1: List all problems%s" + .error .warning .note + (if (featurep 'mwheel) + "\nwheel-up/wheel-down: Previous/next problem")))) + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (define-key map [mode-line mouse-1] + #'flymake-show-diagnostics-buffer) + (when (featurep 'mwheel) + (define-key map (vector 'mode-line + mouse-wheel-down-event) + (lambda (event) + (interactive "e") + (with-selected-window (posn-window (event-start event)) + (flymake-goto-prev-error 1 nil t)))) + (define-key map (vector 'mode-line + mouse-wheel-up-event) + (lambda (event) + (interactive "e") + (with-selected-window (posn-window (event-start event)) + (flymake-goto-next-error 1 nil t)))) + map))))))) +(advice-add #'flymake--handle-report :after #'doom-modeline-update-flymake-text) + +(doom-modeline-def-segment checker + "Displays color-coded error status in the current buffer with pretty icons." + (let ((active (doom-modeline--active)) + (seg (cond ((and (bound-and-true-p flymake-mode) + (bound-and-true-p flymake--state)) ; only support 26+ + `(,doom-modeline--flymake-icon . ,doom-modeline--flymake-text)) + ((bound-and-true-p flycheck-mode) + `(,doom-modeline--flycheck-icon . ,doom-modeline--flycheck-text))))) + (let ((icon (car seg)) + (text (cdr seg))) + (concat + (when icon + (concat + (doom-modeline-spc) + (if active + icon + (doom-modeline-propertize-icon icon 'mode-line-inactive)))) + (when text + (concat + (if icon (doom-modeline-vspc) (doom-modeline-spc)) + (if active + text + (propertize text 'face 'mode-line-inactive)))) + (doom-modeline-spc))))) + + +;; +;; Word Count +;; + +(doom-modeline-def-segment word-count + "The buffer word count. +Displayed when in a major mode in `doom-modeline-continuous-word-count-modes'. +Respects `doom-modeline-enable-word-count'." + (when (and doom-modeline-enable-word-count + (member major-mode doom-modeline-continuous-word-count-modes)) + (propertize (format " %dW" (count-words (point-min) (point-max))) + 'face (if (doom-modeline--active) + 'mode-line + 'mode-line-inactive)))) + + +;; +;; Selection +;; + +(defsubst doom-modeline-column (pos) + "Get the column of the position `POS'." + (save-excursion (goto-char pos) + (current-column))) + +(doom-modeline-def-segment selection-info + "Information about the current selection, such as how many characters and +lines are selected, or the NxM dimensions of a block selection." + (when (and (or mark-active (and (bound-and-true-p evil-local-mode) + (eq evil-state 'visual))) + (doom-modeline--active)) + (cl-destructuring-bind (beg . end) + (if (and (bound-and-true-p evil-local-mode) (eq evil-state 'visual)) + (cons evil-visual-beginning evil-visual-end) + (cons (region-beginning) (region-end))) + (propertize + (let ((lines (count-lines beg (min end (point-max))))) + (concat (doom-modeline-spc) + (cond ((or (bound-and-true-p rectangle-mark-mode) + (and (bound-and-true-p evil-visual-selection) + (eq 'block evil-visual-selection))) + (let ((cols (abs (- (doom-modeline-column end) + (doom-modeline-column beg))))) + (format "%dx%dB" lines cols))) + ((and (bound-and-true-p evil-visual-selection) + (eq evil-visual-selection 'line)) + (format "%dL" lines)) + ((> lines 1) + (format "%dC %dL" (- end beg) lines)) + (t + (format "%dC" (- end beg)))) + (when doom-modeline-enable-word-count + (format " %dW" (count-words beg end))) + (doom-modeline-spc))) + 'face 'doom-modeline-highlight)))) + + +;; +;; Matches (macro, anzu, evil-substitute, iedit, symbol-overlay and multi-cursors) +;; + +(defsubst doom-modeline--macro-recording () + "Display current Emacs or evil macro being recorded." + (when (and (doom-modeline--active) + (or defining-kbd-macro executing-kbd-macro)) + (let ((sep (propertize " " 'face 'doom-modeline-panel )) + (vsep (propertize " " 'face + '(:inherit (doom-modeline-panel variable-pitch))))) + (concat + sep + (doom-modeline-icon 'material "fiber_manual_record" "●" + (if (bound-and-true-p evil-this-macro) + (char-to-string evil-this-macro) + "Macro") + :face 'doom-modeline-panel + :v-adjust -0.225) + vsep + (doom-modeline-icon 'octicon "triangle-right" "β–Ά" ">" + :face 'doom-modeline-panel + :v-adjust -0.05) + sep)))) + +;; `anzu' and `evil-anzu' expose current/total state that can be displayed in the +;; mode-line. +(defun doom-modeline-fix-anzu-count (positions here) + "Calulate anzu count via POSITIONS and HERE." + (cl-loop for (start . end) in positions + collect t into before + when (and (>= here start) (<= here end)) + return (length before) + finally return 0)) + +(advice-add #'anzu--where-is-here :override #'doom-modeline-fix-anzu-count) + +(setq anzu-cons-mode-line-p nil) ; manage modeline segment ourselves +;; Ensure anzu state is cleared when searches & iedit are done +(with-eval-after-load 'anzu + (add-hook 'isearch-mode-end-hook #'anzu--reset-status t) + (add-hook 'iedit-mode-end-hook #'anzu--reset-status) + (advice-add #'evil-force-normal-state :after #'anzu--reset-status) + ;; Fix matches segment mirroring across all buffers + (mapc #'make-variable-buffer-local + '(anzu--total-matched + anzu--current-position anzu--state anzu--cached-count + anzu--cached-positions anzu--last-command + anzu--last-isearch-string anzu--overflow-p))) + +(defsubst doom-modeline--anzu () + "Show the match index and total number thereof. +Requires `anzu', also `evil-anzu' if using `evil-mode' for compatibility with +`evil-search'." + (when (and (bound-and-true-p anzu--state) + (not (bound-and-true-p iedit-mode))) + (propertize + (let ((here anzu--current-position) + (total anzu--total-matched)) + (cond ((eq anzu--state 'replace-query) + (format " %d replace " anzu--cached-count)) + ((eq anzu--state 'replace) + (format " %d/%d " here total)) + (anzu--overflow-p + (format " %s+ " total)) + (t + (format " %s/%d " here total)))) + 'face (if (doom-modeline--active) 'doom-modeline-panel 'mode-line-inactive)))) + +(defsubst doom-modeline--evil-substitute () + "Show number of matches for evil-ex substitutions and highlights in real time." + (when (and (bound-and-true-p evil-local-mode) + (or (assq 'evil-ex-substitute evil-ex-active-highlights-alist) + (assq 'evil-ex-global-match evil-ex-active-highlights-alist) + (assq 'evil-ex-buffer-match evil-ex-active-highlights-alist))) + (propertize + (let ((range (if evil-ex-range + (cons (car evil-ex-range) (cadr evil-ex-range)) + (cons (line-beginning-position) (line-end-position)))) + (pattern (car-safe (evil-delimited-arguments evil-ex-argument 2)))) + (if pattern + (format " %s matches " (how-many pattern (car range) (cdr range))) + " - ")) + 'face (if (doom-modeline--active) 'doom-modeline-panel 'mode-line-inactive)))) + +(defun doom-modeline-themes--overlay-sort (a b) + "Sort overlay A and B." + (< (overlay-start a) (overlay-start b))) + +(defsubst doom-modeline--iedit () + "Show the number of iedit regions matches + what match you're on." + (when (and (bound-and-true-p iedit-mode) + (bound-and-true-p iedit-occurrences-overlays)) + (propertize + (let ((this-oc (or (let ((inhibit-message t)) + (iedit-find-current-occurrence-overlay)) + (save-excursion (iedit-prev-occurrence) + (iedit-find-current-occurrence-overlay)))) + (length (length iedit-occurrences-overlays))) + (format " %s/%d " + (if this-oc + (- length + (length (memq this-oc (sort (append iedit-occurrences-overlays nil) + #'doom-modeline-themes--overlay-sort))) + -1) + "-") + length)) + 'face (if (doom-modeline--active) 'doom-modeline-panel 'mode-line-inactive)))) + +(defsubst doom-modeline--symbol-overlay () + "Show the number of matches for symbol overlay." + (when-let ((active (doom-modeline--active))) + (when (and (bound-and-true-p symbol-overlay-keywords-alist) + (not (bound-and-true-p symbol-overlay-temp-symbol)) + (not (bound-and-true-p iedit-mode))) + (let* ((keyword (symbol-overlay-assoc (symbol-overlay-get-symbol t))) + (symbol (car keyword)) + (before (symbol-overlay-get-list -1 symbol)) + (after (symbol-overlay-get-list 1 symbol)) + (count (length before))) + (if (symbol-overlay-assoc symbol) + (propertize + (format (concat " %d/%d " (and (cadr keyword) "in scope ")) + (+ count 1) + (+ count (length after))) + 'face (if active 'doom-modeline-panel 'mode-line-inactive))))))) + +(defsubst doom-modeline--multiple-cursors () + "Show the number of multiple cursors." + (cl-destructuring-bind (count . face) + (cond ((bound-and-true-p multiple-cursors-mode) + (cons (mc/num-cursors) + (if (doom-modeline--active) + 'doom-modeline-panel + 'mode-line-inactive))) + ((bound-and-true-p evil-mc-cursor-list) + (cons (length evil-mc-cursor-list) + (cond ((not (doom-modeline--active)) 'mode-line-inactive) + (evil-mc-frozen 'doom-modeline-bar) + ('doom-modeline-panel)))) + ((cons nil nil))) + (when count + (concat (propertize " " 'face face) + (or (doom-modeline-icon 'faicon "i-cursor" nil nil + :face face :v-adjust -0.0575) + (propertize "I" + 'face `(:inherit ,face :height 1.4 :weight normal) + 'display '(raise -0.1))) + (propertize (doom-modeline-vspc) + 'face `(:inherit (variable-pitch ,face))) + (propertize (format "%d " count) + 'face face))))) + +(defsubst doom-modeline--phi-search () + "Show the number of matches for `phi-search' and `phi-replace'." + (when-let ((active (doom-modeline--active))) + (when (bound-and-true-p phi-search--overlays) + (let ((total (length phi-search--overlays)) + (selection phi-search--selection)) + (when selection + (propertize + (format " %d/%d " (1+ selection) total) + 'face (if active 'doom-modeline-panel 'mode-line-inactive))))))) + +(defun doom-modeline--override-phi-search-mode-line (orig-fun &rest args) + "Override the mode-line of `phi-search' and `phi-replace'." + (if (bound-and-true-p doom-modeline-mode) + (apply orig-fun mode-line-format (cdr args)) + (apply orig-fun args))) +(advice-add #'phi-search--initialize :around #'doom-modeline--override-phi-search-mode-line) + +(defsubst doom-modeline--buffer-size () + "Show buffer size." + (when size-indication-mode + (concat (doom-modeline-spc) + (propertize "%I" + 'face (if (doom-modeline--active) 'mode-line 'mode-line-inactive) + 'help-echo "Buffer size +mouse-1: Display Line and Column Mode Menu" + 'mouse-face 'mode-line-highlight + 'local-map mode-line-column-line-number-mode-map) + (doom-modeline-spc)))) + +(doom-modeline-def-segment matches + "Displays: 1. the currently recording macro, 2. A current/total for the +current search term (with `anzu'), 3. The number of substitutions being +conducted with `evil-ex-substitute', and/or 4. The number of active `iedit' +regions, 5. The current/total for the highlight term (with `symbol-overlay'), +6. The number of active `multiple-cursors'." + (let ((meta (concat (doom-modeline--macro-recording) + (doom-modeline--anzu) + (doom-modeline--phi-search) + (doom-modeline--evil-substitute) + (doom-modeline--iedit) + (doom-modeline--symbol-overlay) + (doom-modeline--multiple-cursors)))) + (or (and (not (string-empty-p meta)) meta) + (doom-modeline--buffer-size)))) + +(doom-modeline-def-segment buffer-size + "Display buffer size." + (doom-modeline--buffer-size)) + +;; +;; Media +;; + +(doom-modeline-def-segment media-info + "Metadata regarding the current file, such as dimensions for images." + ;; TODO Include other information + (cond ((eq major-mode 'image-mode) + (cl-destructuring-bind (width . height) + (when (fboundp 'image-size) + (image-size (image-get-display-property) :pixels)) + (propertize + (format " %dx%d " width height) + 'face (if (doom-modeline--active) 'mode-line 'mode-line-inactive)))))) + + +;; +;; Bars +;; + +(defvar doom-modeline--bar-active nil) +(defvar doom-modeline--bar-inactive nil) + +(defsubst doom-modeline--bar () + "The default bar regulates the height of the mode-line in GUI." + (unless (and doom-modeline--bar-active doom-modeline--bar-inactive) + (let ((width doom-modeline-bar-width) + (height (max doom-modeline-height + (doom-modeline--font-height)))) + (when (and (numberp width) (numberp height)) + (setq doom-modeline--bar-active + (doom-modeline--create-bar-image 'doom-modeline-bar width height) + doom-modeline--bar-inactive + (doom-modeline--create-bar-image + 'doom-modeline-bar-inactive width height))))) + (if (doom-modeline--active) + doom-modeline--bar-active + doom-modeline--bar-inactive)) + +(defun doom-modeline-refresh-bars () + "Refresh mode-line bars on next redraw." + (setq doom-modeline--bar-active nil + doom-modeline--bar-inactive nil)) + +(cl-defstruct doom-modeline--hud-cache active inactive top-margin bottom-margin) + +(defsubst doom-modeline--hud () + "Powerline's hud segment reimplemented in the style of Doom's bar segment." + (let* ((ws (window-start)) + (we (window-end)) + (bs (buffer-size)) + (height (max doom-modeline-height + (doom-modeline--font-height))) + (top-margin (if (zerop bs) + 0 + (/ (* height (1- ws)) bs))) + (bottom-margin (if (zerop bs) + 0 + (max 0 (/ (* height (- bs we 1)) bs)))) + (cache (or (window-parameter nil 'doom-modeline--hud-cache) + (set-window-parameter nil 'doom-modeline--hud-cache + (make-doom-modeline--hud-cache))))) + (unless (and (doom-modeline--hud-cache-active cache) + (doom-modeline--hud-cache-inactive cache) + (= top-margin (doom-modeline--hud-cache-top-margin cache)) + (= bottom-margin + (doom-modeline--hud-cache-bottom-margin cache))) + (setf (doom-modeline--hud-cache-active cache) + (doom-modeline--create-hud-image + 'doom-modeline-bar 'default doom-modeline-bar-width + height top-margin bottom-margin) + (doom-modeline--hud-cache-inactive cache) + (doom-modeline--create-hud-image + 'doom-modeline-bar-inactive 'default doom-modeline-bar-width + height top-margin bottom-margin) + (doom-modeline--hud-cache-top-margin cache) top-margin + (doom-modeline--hud-cache-bottom-margin cache) bottom-margin)) + (if (doom-modeline--active) + (doom-modeline--hud-cache-active cache) + (doom-modeline--hud-cache-inactive cache)))) + +(defun doom-modeline-invalidate-huds () + "Invalidate all cached hud images." + (dolist (frame (frame-list)) + (dolist (window (window-list frame)) + (set-window-parameter window 'doom-modeline--hud-cache nil)))) + +(doom-modeline-add-variable-watcher + 'doom-modeline-height + (lambda (_sym val op _where) + (when (and (eq op 'set) (integerp val)) + (doom-modeline-refresh-bars) + (doom-modeline-invalidate-huds)))) + +(doom-modeline-add-variable-watcher + 'doom-modeline-bar-width + (lambda (_sym val op _where) + (when (and (eq op 'set) (integerp val)) + (doom-modeline-refresh-bars) + (doom-modeline-invalidate-huds)))) + +(add-hook 'after-setting-font-hook #'doom-modeline-refresh-bars) +(add-hook 'after-setting-font-hook #'doom-modeline-invalidate-huds) + +(doom-modeline-def-segment bar + "The bar regulates the height of the mode-line in GUI." + (if doom-modeline-hud + (doom-modeline--hud) + (doom-modeline--bar))) + +(doom-modeline-def-segment hud + "Powerline's hud segment reimplemented in the style of Doom's bar segment." + (doom-modeline--hud)) + + +;; +;; Window number +;; + +;; HACK: `ace-window-display-mode' should respect the ignore buffers. +(defun doom-modeline-aw-update () + "Update ace-window-path window parameter for all windows. +Ensure all windows are labeled so the user can select a specific +one. The ignored buffers are excluded unless `aw-ignore-on' is nil." + (let ((ignore-window-parameters t)) + (avy-traverse + (avy-tree (aw-window-list) aw-keys) + (lambda (path leaf) + (set-window-parameter + leaf 'ace-window-path + (propertize + (apply #'string (reverse path)) + 'face 'aw-mode-line-face)))))) +(advice-add #'aw-update :override #'doom-modeline-aw-update) + +;; Remove original window number of `ace-window-display-mode'. +(add-hook 'ace-window-display-mode-hook + (lambda () + (setq-default mode-line-format + (assq-delete-all 'ace-window-display-mode + (default-value 'mode-line-format))))) + +(advice-add #'window-numbering-install-mode-line :override #'ignore) +(advice-add #'window-numbering-clear-mode-line :override #'ignore) +(advice-add #'winum--install-mode-line :override #'ignore) +(advice-add #'winum--clear-mode-line :override #'ignore) + +(doom-modeline-def-segment window-number + "The current window number." + (let ((num (cond + ((bound-and-true-p ace-window-display-mode) + (aw-update) + (window-parameter (selected-window) 'ace-window-path)) + ((bound-and-true-p winum-mode) + (setq winum-auto-setup-mode-line nil) + (winum-get-number-string)) + ((bound-and-true-p window-numbering-mode) + (window-numbering-get-number-string)) + (t "")))) + (if (and (< 0 (length num)) + (< 1 (length (cl-mapcan + (lambda (frame) + ;; Exclude minibuffer and child frames + (unless (and (fboundp 'frame-parent) + (frame-parent frame)) + (window-list frame 'never))) + (visible-frame-list))))) + (propertize (format " %s " num) + 'face (if (doom-modeline--active) + 'doom-modeline-buffer-major-mode + 'mode-line-inactive)) + (doom-modeline-spc)))) + + +;; +;; Workspace +;; + +(doom-modeline-def-segment workspace-name + "The current workspace name or number. +Requires `eyebrowse-mode' to be enabled or `tab-bar-mode' tabs to be created." + (when doom-modeline-workspace-name + (when-let + ((name (cond + ((and (bound-and-true-p eyebrowse-mode) + (< 1 (length (eyebrowse--get 'window-configs)))) + (assq-delete-all 'eyebrowse-mode mode-line-misc-info) + (when-let* + ((num (eyebrowse--get 'current-slot)) + (tag (nth 2 (assoc num (eyebrowse--get 'window-configs))))) + (if (< 0 (length tag)) tag (int-to-string num)))) + ((and (fboundp 'tab-bar-mode) + (< 1 (length (frame-parameter nil 'tabs)))) + (let* ((current-tab (tab-bar--current-tab)) + (tab-index (tab-bar--current-tab-index)) + (explicit-name (alist-get 'explicit-name current-tab)) + (tab-name (alist-get 'name current-tab))) + (if explicit-name tab-name (+ 1 tab-index))))))) + (propertize (format " %s " name) 'face + (if (doom-modeline--active) + 'doom-modeline-buffer-major-mode + 'mode-line-inactive))))) + + +;; +;; Perspective +;; + +(defvar-local doom-modeline--persp-name nil) +(defun doom-modeline-update-persp-name (&rest _) + "Update perspective name in mode-line." + (setq doom-modeline--persp-name + ;; Support `persp-mode', while not support `perspective' + (when (and doom-modeline-persp-name + (bound-and-true-p persp-mode) + (fboundp 'safe-persp-name) + (fboundp 'get-current-persp)) + (let* ((persp (get-current-persp)) + (name (safe-persp-name persp)) + (face (if (and persp + (not (persp-contain-buffer-p (current-buffer) persp))) + 'doom-modeline-persp-buffer-not-in-persp + 'doom-modeline-persp-name)) + (icon (doom-modeline-icon 'material "folder" "πŸ–Ώ" "#" + :face `(:inherit ,face :slant normal) + :height 1.1 + :v-adjust -0.225))) + (when (or doom-modeline-display-default-persp-name + (not (string-equal persp-nil-name name))) + (concat (doom-modeline-spc) + (propertize (concat (and doom-modeline-persp-icon + (concat icon (doom-modeline-vspc))) + (propertize name 'face face)) + 'help-echo "mouse-1: Switch perspective +mouse-2: Show help for minor mode" + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (define-key map [mode-line mouse-1] + #'persp-switch) + (define-key map [mode-line mouse-2] + (lambda () + (interactive) + (describe-function 'persp-mode))) + map)) + (doom-modeline-spc))))))) + +(add-hook 'buffer-list-update-hook #'doom-modeline-update-persp-name) +(add-hook 'find-file-hook #'doom-modeline-update-persp-name) +(add-hook 'persp-activated-functions #'doom-modeline-update-persp-name) +(add-hook 'persp-renamed-functions #'doom-modeline-update-persp-name) +(advice-add #'lv-message :after #'doom-modeline-update-persp-name) + +(doom-modeline-def-segment persp-name + "The current perspective name." + (when (and (doom-modeline--active) + (not doom-modeline--limited-width-p)) + doom-modeline--persp-name)) + + +;; +;; Misc info +;; + +(doom-modeline-def-segment misc-info + "Mode line construct for miscellaneous information. +By default, this shows the information specified by `global-mode-string'." + (when (and (doom-modeline--active) + (not doom-modeline--limited-width-p)) + '("" mode-line-misc-info))) + + +;; +;; Position +;; + +;; Be compatible with Emacs 25. +(defvar doom-modeline-column-zero-based + (if (boundp 'column-number-indicator-zero-based) + column-number-indicator-zero-based + t) + "When non-nil, mode line displays column numbers zero-based. +See `column-number-indicator-zero-based'.") + +(defvar doom-modeline-percent-position + (if (boundp 'mode-line-percent-position) + mode-line-percent-position + '(-3 "%p")) + "Specification of \"percentage offset\" of window through buffer. +See `mode-line-percent-position'.") + +(doom-modeline-add-variable-watcher + 'column-number-indicator-zero-based + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-column-zero-based val)))) + +(doom-modeline-add-variable-watcher + 'mode-line-percent-position + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-percent-position val)))) + +(doom-modeline-def-segment buffer-position + "The buffer position information." + (let* ((active (doom-modeline--active)) + (lc '(line-number-mode + (column-number-mode + (doom-modeline-column-zero-based "%l:%c" "%l:%C") + "%l") + (column-number-mode (doom-modeline-column-zero-based ":%c" ":%C")))) + (face (if active 'mode-line 'mode-line-inactive)) + (mouse-face 'mode-line-highlight) + (local-map mode-line-column-line-number-mode-map)) + (concat + (doom-modeline-wspc) + + ;; Line and column + (propertize (format-mode-line lc) + 'face face + 'help-echo "Buffer position\n\ +mouse-1: Display Line and Column Mode Menu" + 'mouse-face mouse-face + 'local-map local-map) + + ;; Position + (cond ((and active + (bound-and-true-p nyan-mode) + (not doom-modeline--limited-width-p) + (>= (window-width) nyan-minimum-window-width)) + (concat + (doom-modeline-wspc) + (propertize (nyan-create) 'mouse-face mouse-face))) + ((and active + (bound-and-true-p poke-line-mode) + (not doom-modeline--limited-width-p) + (>= (window-width) poke-line-minimum-window-width)) + (concat + (doom-modeline-wspc) + (propertize (poke-line-create) 'mouse-face mouse-face))) + ((and active + (bound-and-true-p mlscroll-mode) + (not doom-modeline--limited-width-p) + (>= (window-width) mlscroll-minimum-current-width)) + (concat + (doom-modeline-wspc) + (let ((mlscroll-right-align nil)) + (format-mode-line (mlscroll-mode-line))))) + ((and active + (bound-and-true-p sml-modeline-mode) + (not doom-modeline--limited-width-p) + (>= (window-width) sml-modeline-len)) + (concat + (doom-modeline-wspc) + (propertize (sml-modeline-create) 'mouse-face mouse-face))) + (t "")) + + ;; Percent position + (when doom-modeline-percent-position + (concat + (doom-modeline-spc) + (propertize (format-mode-line '("" doom-modeline-percent-position "%%")) + 'face face + 'help-echo "Buffer percentage\n\ +mouse-1: Display Line and Column Mode Menu" + 'mouse-face mouse-face + 'local-map local-map))) + + (when (or line-number-mode column-number-mode doom-modeline-percent-position) + (doom-modeline-spc))))) + +;; +;; Party parrot +;; +(doom-modeline-def-segment parrot + "The party parrot animated icon. Requires `parrot-mode' to be enabled." + (when (and (doom-modeline--active) + (not doom-modeline--limited-width-p) + (bound-and-true-p parrot-mode)) + (concat (doom-modeline-wspc) + (parrot-create) + (doom-modeline-spc)))) + +;; +;; Modals (evil, overwrite, god, ryo and xah-fly-keys, etc.) +;; + +(defun doom-modeline--modal-icon (text face help-echo) + "Display the model icon with FACE and HELP-ECHO. +TEXT is alternative if icon is not available." + (propertize (doom-modeline-icon + 'material + (when doom-modeline-modal-icon "fiber_manual_record") + "●" + text + :face (if (doom-modeline--active) face 'mode-line-inactive) + :v-adjust -0.225) + 'help-echo help-echo)) + +(defsubst doom-modeline--evil () + "The current evil state. Requires `evil-mode' to be enabled." + (when (bound-and-true-p evil-local-mode) + (doom-modeline--modal-icon + (let ((tag (evil-state-property evil-state :tag t))) + (if (stringp tag) tag (funcall tag))) + (cond + ((evil-normal-state-p) 'doom-modeline-evil-normal-state) + ((evil-emacs-state-p) 'doom-modeline-evil-emacs-state) + ((evil-insert-state-p) 'doom-modeline-evil-insert-state) + ((evil-motion-state-p) 'doom-modeline-evil-motion-state) + ((evil-visual-state-p) 'doom-modeline-evil-visual-state) + ((evil-operator-state-p) 'doom-modeline-evil-operator-state) + ((evil-replace-state-p) 'doom-modeline-evil-replace-state) + (t 'doom-modeline-evil-normal-state)) + (evil-state-property evil-state :name t)))) + +(defsubst doom-modeline--overwrite () + "The current overwrite state which is enabled by command `overwrite-mode'." + (when (and (bound-and-true-p overwrite-mode) + (not (bound-and-true-p evil-local-mode))) + (doom-modeline--modal-icon " " 'doom-modeline-urgent "Overwrite mode"))) + +(defsubst doom-modeline--god () + "The current god state which is enabled by the command `god-mode'." + (when (bound-and-true-p god-local-mode) + (doom-modeline--modal-icon " " 'doom-modeline-evil-normal-state "God mode"))) + +(defsubst doom-modeline--ryo () + "The current ryo-modal state which is enabled by the command `ryo-modal-mode'." + (when (bound-and-true-p ryo-modal-mode) + (doom-modeline--modal-icon "" 'doom-modeline-evil-normal-state "Ryo modal"))) + +(defsubst doom-modeline--xah-fly-keys () + "The current `xah-fly-keys' state." + (when (bound-and-true-p xah-fly-keys) + (if xah-fly-insert-state-p + (doom-modeline--modal-icon " " + 'doom-modeline-evil-insert-state + (format "Xah-fly insert mode")) + (doom-modeline--modal-icon " " + 'doom-modeline-evil-normal-state + (format "Xah-fly command mode"))))) + +(defsubst doom-modeline--boon () + "The current Boon state. Requires `boon-mode' to be enabled." + (when (bound-and-true-p boon-local-mode) + (doom-modeline--modal-icon + (boon-state-string) + (cond + (boon-command-state 'doom-modeline-evil-normal-state) + (boon-insert-state 'doom-modeline-evil-insert-state) + (boon-special-state 'doom-modeline-evil-emacs-state) + (boon-off-state 'doom-modeline-evil-operator-state) + (t 'doom-modeline-evil-operator-state)) + (boon-modeline-string)))) + +(defsubst doom-modeline--meow () + "The current Meow state. Requires `meow-mode' to be enabled." + (when (bound-and-true-p meow-mode) + meow--indicator)) + +(doom-modeline-def-segment modals + "Displays modal editing states, including `evil', `overwrite', `god', `ryo' +and `xha-fly-kyes', etc." + (let* ((evil (doom-modeline--evil)) + (ow (doom-modeline--overwrite)) + (god (doom-modeline--god)) + (ryo (doom-modeline--ryo)) + (xf (doom-modeline--xah-fly-keys)) + (boon (doom-modeline--boon)) + (vsep (doom-modeline-vspc)) + (meow (doom-modeline--meow)) + (sep (and (or evil ow god ryo xf boon) (doom-modeline-spc)))) + (concat sep + (and evil (concat evil (and (or ow god ryo xf boon meow) vsep))) + (and ow (concat ow (and (or god ryo xf boon meow) vsep))) + (and god (concat god (and (or ryo xf boon meow) vsep))) + (and ryo (concat ryo (and (or xf boon meow) vsep))) + (and xf (concat xf (and (or boon meow) vsep))) + (and boon (concat boon (and meow vsep))) + meow + sep))) + +;; +;; Objed state +;; + +(defvar doom-modeline--objed-active nil) + +(defun doom-modeline-update-objed (_ &optional reset) + "Update `objed' status, inactive when RESET is true." + (setq doom-modeline--objed-active (not reset))) + +(setq objed-modeline-setup-func #'doom-modeline-update-objed) + +(doom-modeline-def-segment objed-state () + "The current objed state." + (when (and doom-modeline--objed-active + (doom-modeline--active)) + (propertize (format " %s(%s) " + (symbol-name objed--object) + (char-to-string (aref (symbol-name objed--obj-state) 0))) + 'face 'doom-modeline-evil-emacs-state + 'help-echo (format "Objed object: %s (%s)" + (symbol-name objed--object) + (symbol-name objed--obj-state))))) + + +;; +;; Input method +;; + +(doom-modeline-def-segment input-method + "The current input method." + (propertize (cond (current-input-method + (concat (doom-modeline-spc) + current-input-method-title + (doom-modeline-spc))) + ((and (bound-and-true-p evil-local-mode) + (bound-and-true-p evil-input-method)) + (concat + (doom-modeline-spc) + (nth 3 (assoc default-input-method input-method-alist)) + (doom-modeline-spc))) + (t "")) + 'face (if (doom-modeline--active) + (if (and (bound-and-true-p rime-mode) + (equal current-input-method "rime")) + (if (and (rime--should-enable-p) + (not (rime--should-inline-ascii-p))) + 'doom-modeline-input-method + 'doom-modeline-input-method-alt) + 'doom-modeline-input-method) + 'mode-line-inactive) + 'help-echo (concat + "Current input method: " + current-input-method + "\n\ +mouse-2: Disable input method\n\ +mouse-3: Describe current input method") + 'mouse-face 'mode-line-highlight + 'local-map mode-line-input-method-map)) + + +;; +;; Info +;; + +(doom-modeline-def-segment info-nodes + "The topic and nodes in the Info buffer." + (let ((active (doom-modeline--active))) + (concat + (propertize " (" 'face (if active 'mode-line 'mode-line-inactive)) + ;; topic + (propertize (if (stringp Info-current-file) + (replace-regexp-in-string + "%" "%%" + (file-name-sans-extension + (file-name-nondirectory Info-current-file))) + (format "*%S*" Info-current-file)) + 'face (if active 'doom-modeline-info 'mode-line-inactive)) + (propertize ") " 'face (if active 'mode-line 'mode-line-inactive)) + ;; node + (when Info-current-node + (propertize (replace-regexp-in-string + "%" "%%" Info-current-node) + 'face (if active 'doom-modeline-buffer-path 'mode-line-inactive) + 'help-echo + "mouse-1: scroll forward, mouse-3: scroll back" + 'mouse-face 'mode-line-highlight + 'local-map Info-mode-line-node-keymap))))) + + +;; +;; REPL +;; + +(defun doom-modeline-repl-icon (text face) + "Display REPL icon (or TEXT in terminal) with FACE." + (doom-modeline-icon 'faicon "terminal" "$" text + :face face :height 1.0 :v-adjust -0.0575)) + +(defvar doom-modeline--cider nil) + +(defun doom-modeline-update-cider () + "Update cider repl state." + (setq doom-modeline--cider + (let* ((connected (cider-connected-p)) + (face (if connected 'doom-modeline-repl-success 'doom-modeline-repl-warning)) + (repl-buffer (cider-current-repl nil nil)) + (cider-info (when repl-buffer + (cider--connection-info repl-buffer t))) + (icon (doom-modeline-repl-icon "REPL" face))) + (propertize icon + 'help-echo + (if connected + (format "CIDER Connected %s\nmouse-2: CIDER quit" cider-info) + "CIDER Disconnected\nmouse-1: CIDER jack-in") + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (if connected + (define-key map [mode-line mouse-2] + #'cider-quit) + (define-key map [mode-line mouse-1] + #'cider-jack-in)) + map))))) + +(add-hook 'cider-connected-hook #'doom-modeline-update-cider) +(add-hook 'cider-disconnected-hook #'doom-modeline-update-cider) +(add-hook 'cider-mode-hook #'doom-modeline-update-cider) + +(doom-modeline-def-segment repl + "The REPL state." + (when doom-modeline-repl + (when-let (icon (when (bound-and-true-p cider-mode) + doom-modeline--cider)) + (concat + (doom-modeline-spc) + (if (doom-modeline--active) + icon + (doom-modeline-propertize-icon icon 'mode-line-inactive)) + (doom-modeline-spc))))) + + +;; +;; LSP +;; + +(defun doom-modeline-lsp-icon (text face) + "Display LSP icon (or TEXT in terminal) with FACE." + (doom-modeline-icon 'faicon "rocket" "πŸš€" text + :face face :height 1.0 :v-adjust -0.0575)) + +(defvar-local doom-modeline--lsp nil) +(defun doom-modeline-update-lsp (&rest _) + "Update `lsp-mode' state." + (setq doom-modeline--lsp + (let* ((workspaces (lsp-workspaces)) + (face (if workspaces 'doom-modeline-lsp-success 'doom-modeline-lsp-warning)) + (icon (doom-modeline-lsp-icon "LSP" face))) + (propertize icon + 'help-echo + (if workspaces + (concat "LSP Connected " + (string-join + (mapcar (lambda (w) + (format "[%s]\n" (lsp--workspace-print w))) + workspaces)) + "C-mouse-1: Switch to another workspace folder +mouse-1: Describe current session +mouse-2: Quit server +mouse-3: Reconnect to server") + "LSP Disconnected +mouse-1: Reload to start server") + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (if workspaces + (progn + (define-key map [mode-line C-mouse-1] + #'lsp-workspace-folders-open) + (define-key map [mode-line mouse-1] + #'lsp-describe-session) + (define-key map [mode-line mouse-2] + #'lsp-workspace-shutdown) + (define-key map [mode-line mouse-3] + #'lsp-workspace-restart)) + (progn + (define-key map [mode-line mouse-1] + (lambda () + (interactive) + (ignore-errors (revert-buffer t t)))))) + map))))) +(add-hook 'lsp-before-initialize-hook #'doom-modeline-update-lsp) +(add-hook 'lsp-after-initialize-hook #'doom-modeline-update-lsp) +(add-hook 'lsp-after-uninitialized-functions #'doom-modeline-update-lsp) +(add-hook 'lsp-before-open-hook #'doom-modeline-update-lsp) +(add-hook 'lsp-after-open-hook #'doom-modeline-update-lsp) + +(defvar-local doom-modeline--eglot nil) +(defun doom-modeline-update-eglot () + "Update `eglot' state." + (setq doom-modeline--eglot + (pcase-let* ((server (and (eglot-managed-p) (eglot-current-server))) + (nick (and server (eglot--project-nickname server))) + (pending (and server (hash-table-count + (jsonrpc--request-continuations server)))) + (`(,_id ,doing ,done-p ,detail) (and server (eglot--spinner server))) + (last-error (and server (jsonrpc-last-error server))) + (face (cond (last-error 'doom-modeline-lsp-error) + ((and doing (not done-p)) 'doom-modeline-lsp-running) + ((and pending (cl-plusp pending)) 'doom-modeline-lsp-warning) + (nick 'doom-modeline-lsp-success) + (t 'doom-modeline-lsp-warning))) + (icon (doom-modeline-lsp-icon "EGLOT" face))) + (propertize icon + 'help-echo (cond + (last-error + (format "EGLOT\nAn error occured: %s +mouse-3: Clear this status" (plist-get last-error :message))) + ((and doing (not done-p)) + (format "EGLOT\n%s%s" doing + (if detail (format "%s" detail) ""))) + ((and pending (cl-plusp pending)) + (format "EGLOT\n%d outstanding requests" pending)) + (nick (format "EGLOT Connected (%s/%s) +C-mouse-1: Go to server errors +mouse-1: Go to server events +mouse-2: Quit server +mouse-3: Reconnect to server" nick (eglot--major-mode server))) + (t "EGLOT Disconnected +mouse-1: Start server")) + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (cond (last-error + (define-key map [mode-line mouse-3] + #'eglot-clear-status)) + ((and pending (cl-plusp pending)) + (define-key map [mode-line mouse-3] + #'eglot-forget-pending-continuations)) + (nick + (define-key map [mode-line C-mouse-1] + #'eglot-stderr-buffer) + (define-key map [mode-line mouse-1] + #'eglot-events-buffer) + (define-key map [mode-line mouse-2] + #'eglot-shutdown) + (define-key map [mode-line mouse-3] + #'eglot-reconnect)) + (t (define-key map [mode-line mouse-1] + #'eglot))) + map))))) +(add-hook 'eglot-managed-mode-hook #'doom-modeline-update-eglot) + +(defvar-local doom-modeline--tags nil) +(defun doom-modeline-update-tags () + "Update tags state." + (setq doom-modeline--tags + (propertize + (doom-modeline-lsp-icon "LSP" 'doom-modeline-lsp-success) + 'help-echo "TAGS: Citre mode +mouse-1: Toggle citre mode" + 'mouse-face 'mode-line-highlight + 'local-map (make-mode-line-mouse-map 'mouse-1 #'citre-mode)))) +(add-hook 'citre-mode-hook #'doom-modeline-update-tags) + +(defun doom-modeline-update-lsp-icon () + "Update lsp icon." + (cond ((bound-and-true-p lsp-mode) + (doom-modeline-update-lsp)) + ((bound-and-true-p eglot--managed-mode) + (doom-modeline-update-eglot)) + ((bound-and-true-p citre-mode) + (doom-modeline-update-tags)))) + +(doom-modeline-add-variable-watcher + 'doom-modeline-icon + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-icon val) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (doom-modeline-update-lsp-icon)))))) + +(doom-modeline-add-variable-watcher + 'doom-modeline-unicode-fallback + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-unicode-fallback val) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (doom-modeline-update-lsp-icon)))))) + +(doom-modeline-def-segment lsp + "The LSP server state." + (when (and doom-modeline-lsp + (not doom-modeline--limited-width-p)) + (let ((active (doom-modeline--active)) + (icon (cond ((bound-and-true-p lsp-mode) + doom-modeline--lsp) + ((bound-and-true-p eglot--managed-mode) + doom-modeline--eglot) + ((bound-and-true-p citre-mode) + doom-modeline--tags)))) + (when icon + (concat + (doom-modeline-spc) + (if active + icon + (doom-modeline-propertize-icon icon 'mode-line-inactive)) + (doom-modeline-spc)))))) + +(defun doom-modeline-override-eglot-modeline () + "Override `eglot' mode-line." + (if (bound-and-true-p doom-modeline-mode) + (setq mode-line-misc-info + (delq (assq 'eglot--managed-mode mode-line-misc-info) mode-line-misc-info)) + (add-to-list 'mode-line-misc-info + `(eglot--managed-mode (" [" eglot--mode-line-format "] "))))) +(add-hook 'eglot-managed-mode-hook #'doom-modeline-override-eglot-modeline) +(add-hook 'doom-modeline-mode-hook #'doom-modeline-override-eglot-modeline) + + +;; +;; GitHub +;; + +(defvar doom-modeline--github-notification-number 0) +(defvar doom-modeline-before-github-fetch-notification-hook nil + "Hooks before fetching GitHub notifications. +Example: + (add-hook 'doom-modeline-before-github-fetch-notification-hook + #'auth-source-pass-enable)") +(defun doom-modeline--github-fetch-notifications () + "Fetch GitHub notifications." + (when (and doom-modeline-github + (require 'async nil t)) + (async-start + `(lambda () + ,(async-inject-variables + "\\`\\(load-path\\|auth-sources\\|doom-modeline-before-github-fetch-notification-hook\\)\\'") + (run-hooks 'doom-modeline-before-github-fetch-notification-hook) + (when (require 'ghub nil t) + (with-timeout (10) + (ignore-errors + (when-let* ((username (ghub--username ghub-default-host)) + (token (ghub--token ghub-default-host username 'ghub t))) + (ghub-get "/notifications" nil + :query '((notifications . "true")) + :username username + :auth token + :noerror t)))))) + (lambda (result) + (message "") ; suppress message + (setq doom-modeline--github-notification-number (length result)))))) + +(defvar doom-modeline--github-timer nil) +(defun doom-modeline-github-timer () + "Start/Stop the timer for GitHub fetching." + (if (timerp doom-modeline--github-timer) + (cancel-timer doom-modeline--github-timer)) + (setq doom-modeline--github-timer + (and doom-modeline-github + (run-with-idle-timer 30 + doom-modeline-github-interval + #'doom-modeline--github-fetch-notifications)))) + +(doom-modeline-add-variable-watcher + 'doom-modeline-github + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-github val) + (doom-modeline-github-timer)))) + +(doom-modeline-github-timer) + +(doom-modeline-def-segment github + "The GitHub notifications." + (when (and doom-modeline-github + (doom-modeline--active) + (not doom-modeline--limited-width-p) + (numberp doom-modeline--github-notification-number) + (> doom-modeline--github-notification-number 0)) + (concat + (doom-modeline-spc) + (propertize + (concat + (doom-modeline-icon 'faicon "github" "πŸ””" "#" + :face 'doom-modeline-notification + :v-adjust -0.0575) + (doom-modeline-vspc) + ;; GitHub API is paged, and the limit is 50 + (propertize + (if (>= doom-modeline--github-notification-number 50) + "50+" + (number-to-string doom-modeline--github-notification-number)) + 'face '(:inherit + (doom-modeline-unread-number doom-modeline-notification)))) + 'help-echo "Github Notifications +mouse-1: Show notifications +mouse-3: Fetch notifications" + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (define-key map [mode-line mouse-1] + (lambda () + "Open GitHub notifications page." + (interactive) + (run-with-idle-timer 300 nil #'doom-modeline--github-fetch-notifications) + (browse-url "https://github.com/notifications"))) + (define-key map [mode-line mouse-3] + (lambda () + "Fetching GitHub notifications." + (interactive) + (message "Fetching GitHub notifications...") + (doom-modeline--github-fetch-notifications))) + map)) + (doom-modeline-spc)))) + + +;; +;; Debug states +;; + +;; Highlight the mode-line while debugging. +(defvar-local doom-modeline--debug-cookie nil) +(defun doom-modeline--debug-visual (&rest _) + "Update the face of mode-line for debugging." + (mapc (lambda (buffer) + (with-current-buffer buffer + (setq doom-modeline--debug-cookie + (face-remap-add-relative 'mode-line 'doom-modeline-debug-visual)) + (force-mode-line-update))) + (buffer-list))) + +(defun doom-modeline--normal-visual (&rest _) + "Restore the face of mode-line." + (mapc (lambda (buffer) + (with-current-buffer buffer + (when doom-modeline--debug-cookie + (face-remap-remove-relative doom-modeline--debug-cookie) + (force-mode-line-update)))) + (buffer-list))) + +(add-hook 'dap-session-created-hook #'doom-modeline--debug-visual) +(add-hook 'dap-terminated-hook #'doom-modeline--normal-visual) + +(defun doom-modeline-debug-icon (face &rest args) + "Display debug icon with FACE and ARGS." + (doom-modeline-icon 'faicon "bug" "πŸ›" "!" :face face :v-adjust -0.0575 args)) + +(defun doom-modeline--debug-dap () + "The current `dap-mode' state." + (when (and (bound-and-true-p dap-mode) + (bound-and-true-p lsp-mode)) + (when-let ((session (dap--cur-session))) + (when (dap--session-running session) + (propertize (doom-modeline-debug-icon 'doom-modeline-info) + 'help-echo (format "DAP (%s - %s) +mouse-1: Display debug hydra +mouse-2: Display recent configurations +mouse-3: Disconnect session" + (dap--debug-session-name session) + (dap--debug-session-state session)) + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (define-key map [mode-line mouse-1] + #'dap-hydra) + (define-key map [mode-line mouse-2] + #'dap-debug-recent) + (define-key map [mode-line mouse-3] + #'dap-disconnect) + map)))))) + +(defvar-local doom-modeline--debug-dap nil) +(defun doom-modeline-update-debug-dap (&rest _) + "Update dap debug state." + (setq doom-modeline--debug-dap (doom-modeline--debug-dap))) + +(add-hook 'dap-session-created-hook #'doom-modeline-update-debug-dap) +(add-hook 'dap-session-changed-hook #'doom-modeline-update-debug-dap) +(add-hook 'dap-terminated-hook #'doom-modeline-update-debug-dap) + +(defsubst doom-modeline--debug-edebug () + "The current `edebug' state." + (when (bound-and-true-p edebug-mode) + (propertize (doom-modeline-debug-icon 'doom-modeline-info) + 'help-echo (format "EDebug (%s) +mouse-1: Show help +mouse-2: Next +mouse-3: Stop debugging" + edebug-execution-mode) + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (define-key map [mode-line mouse-1] + #'edebug-help) + (define-key map [mode-line mouse-2] + #'edebug-next-mode) + (define-key map [mode-line mouse-3] + #'edebug-stop) + map)))) + +(defsubst doom-modeline--debug-on-error () + "The current `debug-on-error' state." + (when debug-on-error + (propertize (doom-modeline-debug-icon 'doom-modeline-urgent) + 'help-echo "Debug on Error +mouse-1: Toggle Debug on Error" + 'mouse-face 'mode-line-highlight + 'local-map (make-mode-line-mouse-map 'mouse-1 #'toggle-debug-on-error)))) + +(defsubst doom-modeline--debug-on-quit () + "The current `debug-on-quit' state." + (when debug-on-quit + (propertize (doom-modeline-debug-icon 'doom-modeline-warning) + 'help-echo "Debug on Quit +mouse-1: Toggle Debug on Quit" + 'mouse-face 'mode-line-highlight + 'local-map (make-mode-line-mouse-map 'mouse-1 #'toggle-debug-on-quit)))) + +(doom-modeline-def-segment debug + "The current debug state." + (when (and (doom-modeline--active) + (not doom-modeline--limited-width-p)) + (let* ((dap doom-modeline--debug-dap) + (edebug (doom-modeline--debug-edebug)) + (on-error (doom-modeline--debug-on-error)) + (on-quit (doom-modeline--debug-on-quit)) + (vsep (doom-modeline-vspc)) + (sep (and (or dap edebug on-error on-quit) (doom-modeline-spc)))) + (concat sep + (and dap (concat dap (and (or edebug on-error on-quit) vsep))) + (and edebug (concat edebug (and (or on-error on-quit) vsep))) + (and on-error (concat on-error (and on-quit vsep))) + on-quit + sep)))) + + +;; +;; PDF pages +;; + +(defvar-local doom-modeline--pdf-pages nil) +(defun doom-modeline-update-pdf-pages () + "Update PDF pages." + (setq doom-modeline--pdf-pages + (format " P%d/%d " + (or (eval `(pdf-view-current-page)) 0) + (pdf-cache-number-of-pages)))) +(add-hook 'pdf-view-change-page-hook #'doom-modeline-update-pdf-pages) + +(doom-modeline-def-segment pdf-pages + "Display PDF pages." + (propertize doom-modeline--pdf-pages + 'face (if (doom-modeline--active) 'mode-line 'mode-line-inactive))) + + +;; +;; `mu4e-alert' notifications +;; + +(doom-modeline-def-segment mu4e + "Show notifications of any unread emails in `mu4e'." + (when (and doom-modeline-mu4e + (doom-modeline--active) + (not doom-modeline--limited-width-p) + (bound-and-true-p mu4e-alert-mode-line) + (numberp mu4e-alert-mode-line) + ;; don't display if the unread mails count is zero + (> mu4e-alert-mode-line 0)) + (concat + (doom-modeline-spc) + (propertize + (concat + (doom-modeline-icon 'material "email" "πŸ“§" "#" + :face 'doom-modeline-notification + :height 1.1 :v-adjust -0.2) + (doom-modeline-vspc) + (propertize + (if (> mu4e-alert-mode-line doom-modeline-number-limit) + (format "%d+" doom-modeline-number-limit) + (number-to-string mu4e-alert-mode-line)) + 'face '(:inherit + (doom-modeline-unread-number doom-modeline-notification)))) + 'mouse-face 'mode-line-highlight + 'keymap '(mode-line keymap + (mouse-1 . mu4e-alert-view-unread-mails) + (mouse-2 . mu4e-alert-view-unread-mails) + (mouse-3 . mu4e-alert-view-unread-mails)) + 'help-echo (concat (if (= mu4e-alert-mode-line 1) + "You have an unread email" + (format "You have %s unread emails" mu4e-alert-mode-line)) + "\nClick here to view " + (if (= mu4e-alert-mode-line 1) "it" "them"))) + (doom-modeline-spc)))) + +(defun doom-modeline-override-mu4e-alert-modeline (&rest _) + "Delete `mu4e-alert-mode-line' from global modeline string." + (when (featurep 'mu4e-alert) + (if (and doom-modeline-mu4e + (bound-and-true-p doom-modeline-mode)) + ;; Delete original modeline + (progn + (setq global-mode-string + (delete '(:eval mu4e-alert-mode-line) global-mode-string)) + (setq mu4e-alert-modeline-formatter #'identity)) + ;; Recover default settings + (setq mu4e-alert-modeline-formatter #'mu4e-alert-default-mode-line-formatter)))) +(advice-add #'mu4e-alert-enable-mode-line-display + :after #'doom-modeline-override-mu4e-alert-modeline) +(add-hook 'doom-modeline-mode-hook #'doom-modeline-override-mu4e-alert-modeline) + + +;; +;; `gnus' notifications +;; + +(defvar doom-modeline--gnus-unread-mail 0) +(defvar doom-modeline--gnus-started nil + "Used to determine if gnus has started.") +(defun doom-modeline-update-gnus-status (&rest _) + "Get the total number of unread news of gnus group." + (setq doom-modeline--gnus-unread-mail + (when (and doom-modeline-gnus + doom-modeline--gnus-started) + (let ((total-unread-news-number 0)) + (mapc (lambda (g) + (let* ((group (car g)) + (unread (eval `(gnus-group-unread ,group)))) + (when (and (not (seq-contains-p doom-modeline-gnus-excluded-groups group)) + (numberp unread) + (> unread 0)) + (setq total-unread-news-number (+ total-unread-news-number unread))))) + gnus-newsrc-alist) + total-unread-news-number)))) + +;; Update the modeline after changes have been made +(add-hook 'gnus-group-update-hook #'doom-modeline-update-gnus-status) +(add-hook 'gnus-summary-update-hook #'doom-modeline-update-gnus-status) +(add-hook 'gnus-group-update-group-hook #'doom-modeline-update-gnus-status) +(add-hook 'gnus-after-getting-new-news-hook #'doom-modeline-update-gnus-status) + +;; Only start to listen to gnus when gnus is actually running +(defun doom-modeline-start-gnus-listener () + "Start GNUS listener." + (when (and doom-modeline-gnus + (not doom-modeline--gnus-started)) + (setq doom-modeline--gnus-started t) + ;; Scan gnus in the background if the timer is higher than 0 + (doom-modeline-update-gnus-status) + (if (> doom-modeline-gnus-timer 0) + (gnus-demon-add-handler 'gnus-demon-scan-news doom-modeline-gnus-timer doom-modeline-gnus-idle)))) +(add-hook 'gnus-started-hook #'doom-modeline-start-gnus-listener) + +;; Stop the listener if gnus isn't running +(defun doom-modeline-stop-gnus-listener () + "Stop GNUS listener." + (setq doom-modeline--gnus-started nil)) +(add-hook 'gnus-exit-gnus-hook #'doom-modeline-stop-gnus-listener) + +(doom-modeline-def-segment gnus + "Show notifications of any unread emails in `gnus'." + (when (and (doom-modeline--active) + (not doom-modeline--limited-width-p) + doom-modeline-gnus + doom-modeline--gnus-started + ;; Don't display if the unread mails count is zero + (numberp doom-modeline--gnus-unread-mail) + (> doom-modeline--gnus-unread-mail 0)) + (concat + (doom-modeline-spc) + (propertize + (concat + (doom-modeline-icon 'material "email" "πŸ“§" "#" + :face 'doom-modeline-notification + :height 1.1 :v-adjust -0.2) + (doom-modeline-vspc) + (propertize + (if (> doom-modeline--gnus-unread-mail doom-modeline-number-limit) + (format "%d+" doom-modeline-number-limit) + (number-to-string doom-modeline--gnus-unread-mail)) + 'face '(:inherit + (doom-modeline-unread-number doom-modeline-notification)))) + 'mouse-face 'mode-line-highlight + 'help-echo (if (= doom-modeline--gnus-unread-mail 1) + "You have an unread email" + (format "You have %s unread emails" doom-modeline--gnus-unread-mail))) + (doom-modeline-spc)))) + + +;; +;; IRC notifications +;; + +(defun doom-modeline--shorten-irc (name) + "Wrapper for `tracking-shorten' and `erc-track-shorten-function' with NAME. + +One key difference is that when `tracking-shorten' and +`erc-track-shorten-function' returns nil we will instead return the original +value of name. This is necessary in cases where the user has stylized the name +to be an icon and we don't want to remove that so we just return the original." + (or (and (boundp 'tracking-shorten) + (car (tracking-shorten (list name)))) + (and (boundp 'erc-track-shorten-function) + (functionp erc-track-shorten-function) + (car (funcall erc-track-shorten-function (list name)))) + (and (boundp 'rcirc-short-buffer-name) + (rcirc-short-buffer-name name)) + name)) + +(defun doom-modeline--tracking-buffers (buffers) + "Logic to convert some irc BUFFERS to their font-awesome icon." + (mapconcat + (lambda (b) + (propertize + (doom-modeline--shorten-irc (funcall doom-modeline-irc-stylize b)) + 'face '(:inherit (doom-modeline-unread-number doom-modeline-notification)) + 'help-echo (format "IRC Notification: %s\nmouse-1: Switch to buffer" b) + 'mouse-face 'mode-line-highlight + 'local-map (make-mode-line-mouse-map 'mouse-1 + (lambda () + (interactive) + (when (buffer-live-p (get-buffer b)) + (switch-to-buffer b)))))) + buffers + (doom-modeline-vspc))) + +(defun doom-modeline--circe-p () + "Check if `circe' is in use." + (boundp 'tracking-mode-line-buffers)) + +(defun doom-modeline--erc-p () + "Check if `erc' is in use." + (boundp 'erc-modified-channels-alist)) + +(defun doom-modeline--rcirc-p () + "Check if `rcirc' is in use." + (bound-and-true-p rcirc-track-minor-mode)) + +(defun doom-modeline--get-buffers () + "Gets the buffers that have activity." + (cond + ((doom-modeline--circe-p) + tracking-buffers) + ((doom-modeline--erc-p) + (mapcar (lambda (l) + (buffer-name (car l))) + erc-modified-channels-alist)) + ((doom-modeline--rcirc-p) + (mapcar (lambda (b) + (buffer-name b)) + rcirc-activity)))) + +;; Create a modeline segment that contains all the irc tracked buffers +(doom-modeline-def-segment irc-buffers + "The list of shortened, unread irc buffers." + (when (and doom-modeline-irc + (doom-modeline--active) + (not doom-modeline--limited-width-p)) + (let* ((buffers (doom-modeline--get-buffers)) + (number (length buffers))) + (when (> number 0) + (concat + (doom-modeline-spc) + (doom-modeline--tracking-buffers buffers) + (doom-modeline-spc)))))) + +(doom-modeline-def-segment irc + "A notification icon for any unread irc buffer." + (when (and doom-modeline-irc + (doom-modeline--active) + (not doom-modeline--limited-width-p)) + (let* ((buffers (doom-modeline--get-buffers)) + (number (length buffers))) + (when (> number 0) + (concat + (doom-modeline-spc) + + (propertize (concat + (doom-modeline-icon 'material "message" "πŸ—Š" "#" + :face 'doom-modeline-notification + :height 1.0 :v-adjust -0.225) + (doom-modeline-vspc) + ;; Display the number of unread buffers + (propertize (number-to-string number) + 'face '(:inherit + (doom-modeline-unread-number + doom-modeline-notification)))) + 'help-echo (format "IRC Notifications: %s\n%s" + (mapconcat + (lambda (b) (funcall doom-modeline-irc-stylize b)) + buffers + ", ") + (cond + ((doom-modeline--circe-p) + "mouse-1: Switch to previous unread buffer +mouse-3: Switch to next unread buffer") + ((doom-modeline--erc-p) + "mouse-1: Switch to buffer +mouse-3: Switch to next unread buffer") + ((doom-modeline--rcirc-p) + "mouse-1: Switch to server buffer +mouse-3: Switch to next unread buffer"))) + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (cond + ((doom-modeline--circe-p) + (define-key map [mode-line mouse-1] + #'tracking-previous-buffer) + (define-key map [mode-line mouse-3] + #'tracking-next-buffer)) + ((doom-modeline--erc-p) + (define-key map [mode-line mouse-1] + #'erc-switch-to-buffer) + (define-key map [mode-line mouse-3] + #'erc-track-switch-buffer)) + ((doom-modeline--rcirc-p) + (define-key map [mode-line mouse-1] + #'rcirc-switch-to-server-buffer) + (define-key map [mode-line mouse-3] + #'rcirc-next-active-buffer))) + map)) + + ;; Display the unread irc buffers as well + (when doom-modeline-irc-buffers + (concat (doom-modeline-spc) + (doom-modeline--tracking-buffers buffers))) + + (doom-modeline-spc)))))) + +(defun doom-modeline-override-rcirc-modeline () + "Override default `rcirc' mode-line." + (if (bound-and-true-p doom-modeline-mode) + (setq global-mode-string + (delq 'rcirc-activity-string global-mode-string)) + (when (and rcirc-track-minor-mode + (not (memq 'rcirc-activity-string global-mode-string))) + (setq global-mode-string + (append global-mode-string '(rcirc-activity-string)))))) +(add-hook 'rcirc-track-minor-mode-hook #'doom-modeline-override-rcirc-modeline) +(add-hook 'doom-modeline-mode-hook #'doom-modeline-override-rcirc-modeline) + + +;; +;; Battery status +;; + +(defvar doom-modeline--battery-status nil) +(defun doom-modeline-update-battery-status () + "Update battery status." + (setq doom-modeline--battery-status + (when (bound-and-true-p display-battery-mode) + (let* ((data (and battery-status-function + (functionp battery-status-function) + (funcall battery-status-function))) + (charging? (string-equal "AC" (cdr (assoc ?L data)))) + (percentage (car (read-from-string (or (cdr (assq ?p data)) "ERR")))) + (valid-percentage? (and (numberp percentage) + (>= percentage 0) + (<= percentage battery-mode-line-limit))) + (face (if valid-percentage? + (cond (charging? 'doom-modeline-battery-charging) + ((< percentage battery-load-critical) 'doom-modeline-battery-critical) + ((< percentage 25) 'doom-modeline-battery-warning) + ((< percentage 95) 'doom-modeline-battery-normal) + (t 'doom-modeline-battery-full)) + 'doom-modeline-battery-error)) + (icon (if valid-percentage? + (cond (charging? + (doom-modeline-icon 'alltheicon "battery-charging" "πŸ”‹" "+" + :face face :height 1.4 :v-adjust -0.1)) + ((> percentage 95) + (doom-modeline-icon 'faicon "battery-full" "πŸ”‹" "-" + :face face :v-adjust -0.0575)) + ((> percentage 70) + (doom-modeline-icon 'faicon "battery-three-quarters" "πŸ”‹" "-" + :face face :v-adjust -0.0575)) + ((> percentage 40) + (doom-modeline-icon 'faicon "battery-half" "πŸ”‹" "-" + :face face :v-adjust -0.0575)) + ((> percentage battery-load-critical) + (doom-modeline-icon 'faicon "battery-quarter" "πŸ”‹" "-" + :face face :v-adjust -0.0575)) + (t (doom-modeline-icon 'faicon "battery-empty" "πŸ”‹" "!" + :face face :v-adjust -0.0575))) + (doom-modeline-icon 'faicon "battery-empty" "⚠" "N/A" + :face face :v-adjust -0.0575))) + (text (if valid-percentage? (format "%d%%%%" percentage) "")) + (help-echo (if (and battery-echo-area-format data valid-percentage?) + (battery-format battery-echo-area-format data) + "Battery status not available"))) + (cons (propertize icon 'help-echo help-echo) + (propertize text 'face face 'help-echo help-echo)))))) + +(doom-modeline-add-variable-watcher + 'doom-modeline-icon + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-icon val) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (doom-modeline-update-battery-status)))))) + +(doom-modeline-add-variable-watcher + 'doom-modeline-unicode-fallback + (lambda (_sym val op _where) + (when (eq op 'set) + (setq doom-modeline-unicode-fallback val) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (doom-modeline-update-battery-status)))))) + +(doom-modeline-def-segment battery + "Display battery status." + (when (and (doom-modeline--active) + (not doom-modeline--limited-width-p) + (bound-and-true-p display-battery-mode)) + (concat (doom-modeline-spc) + (concat + (car doom-modeline--battery-status) + (doom-modeline-vspc) + (cdr doom-modeline--battery-status)) + (doom-modeline-spc)))) + +(defun doom-modeline-override-battery-modeline () + "Override default battery mode-line." + (if (bound-and-true-p doom-modeline-mode) + (progn + (advice-add #'battery-update :override #'doom-modeline-update-battery-status) + (setq global-mode-string + (delq 'battery-mode-line-string global-mode-string)) + (and (bound-and-true-p display-battery-mode) (battery-update))) + (progn + (advice-remove #'battery-update #'doom-modeline-update-battery-status) + (when (and display-battery-mode battery-status-function battery-mode-line-format + (not (memq 'battery-mode-line-string global-mode-string))) + (setq global-mode-string + (append global-mode-string '(battery-mode-line-string))))))) +(add-hook 'display-battery-mode-hook #'doom-modeline-override-battery-modeline) +(add-hook 'doom-modeline-mode-hook #'doom-modeline-override-battery-modeline) + + +;; +;; Package information +;; + +(doom-modeline-def-segment package + "Show package information via `paradox'." + (let ((active (doom-modeline--active))) + (concat + (let ((front (format-mode-line 'mode-line-front-space))) + (if active + front + (propertize front 'face 'mode-line-inactive))) + + (when (and doom-modeline-icon doom-modeline-major-mode-icon) + (concat + (doom-modeline-spc) + (doom-modeline-icon 'faicon "archive" nil nil + :face (if active + (if doom-modeline-major-mode-color-icon + 'all-the-icons-silver + 'mode-line) + 'mode-line-inactive) + :height 1.0 + :v-adjust -0.0575))) + (let ((info (format-mode-line 'mode-line-buffer-identification))) + (if active + info + (propertize info 'face 'mode-line-inactive)))))) + + +;; +;; Helm +;; + +(defvar doom-modeline--helm-buffer-ids + '(("*helm*" . "HELM") + ("*helm M-x*" . "HELM M-x") + ("*swiper*" . "SWIPER") + ("*Projectile Perspectives*" . "HELM Projectile Perspectives") + ("*Projectile Layouts*" . "HELM Projectile Layouts") + ("*helm-ag*" . (lambda () + (format "HELM Ag: Using %s" + (car (split-string helm-ag-base-command)))))) + "Alist of custom helm buffer names to use. +The cdr can also be a function that returns a name to use.") + +(doom-modeline-def-segment helm-buffer-id + "Helm session identifier." + (when (bound-and-true-p helm-alive-p) + (let ((active (doom-modeline--active))) + (concat + (doom-modeline-spc) + (when doom-modeline-icon + (concat + (doom-modeline-icon 'fileicon "elisp" nil nil + :face (if active + (if doom-modeline-major-mode-color-icon + 'all-the-icons-blue + 'mode-line) + 'mode-line-inactive) + :height 1.0 + :v-adjust -0.15) + (doom-modeline-spc))) + (propertize + (let ((custom (cdr (assoc (buffer-name) doom-modeline--helm-buffer-ids))) + (case-fold-search t) + (name (replace-regexp-in-string "-" " " (buffer-name)))) + (cond ((stringp custom) custom) + ((functionp custom) (funcall custom)) + (t + (string-match "\\*helm:? \\(mode \\)?\\([^\\*]+\\)\\*" name) + (concat "HELM " (capitalize (match-string 2 name)))))) + 'face (if active' doom-modeline-buffer-file 'mode-line-inactive)) + (doom-modeline-spc))))) + +(doom-modeline-def-segment helm-number + "Number of helm candidates." + (when (bound-and-true-p helm-alive-p) + (let ((active (doom-modeline--active))) + (concat + (propertize (format " %d/%d" + (helm-candidate-number-at-point) + (helm-get-candidate-number t)) + 'face (if active 'doom-modeline-buffer-path 'mode-line-inactive)) + (propertize (format " (%d total) " (helm-get-candidate-number)) + 'face (if active 'doom-modeline-info 'mode-line-inactive)))))) + +(doom-modeline-def-segment helm-help + "Helm keybindings help." + (when (bound-and-true-p helm-alive-p) + (let ((active (doom-modeline--active))) + (-interleave + (mapcar (lambda (s) + (propertize (substitute-command-keys s) + 'face (if active + 'doom-modeline-buffer-file + 'mode-line-inactive))) + '("\\\\[helm-help]" + "\\\\[helm-select-action]" + "\\\\[helm-maybe-exit-minibuffer]/F1/F2...")) + (mapcar (lambda (s) + (propertize s 'face (if active 'mode-line 'mode-line-inactive))) + '("(help) " "(actions) " "(action) ")))))) + +(doom-modeline-def-segment helm-prefix-argument + "Helm prefix argument." + (when (and (bound-and-true-p helm-alive-p) + helm--mode-line-display-prefarg) + (let ((arg (prefix-numeric-value (or prefix-arg current-prefix-arg)))) + (unless (= arg 1) + (propertize (format "C-u %s" arg) + 'face (if (doom-modeline--active) + 'doom-modeline-info + 'mode-line-inactive)))))) + +(defvar doom-modeline--helm-current-source nil + "The currently active helm source.") +(doom-modeline-def-segment helm-follow + "Helm follow indicator." + (when (and (bound-and-true-p helm-alive-p) + doom-modeline--helm-current-source + (eq 1 (cdr (assq 'follow doom-modeline--helm-current-source)))) + (propertize "HF" 'face (if (doom-modeline--active) + 'mode-line + 'mode-line-inactive)))) + +;; +;; Git timemachine +;; + +(doom-modeline-def-segment git-timemachine + (let ((active (doom-modeline--active))) + (concat + (doom-modeline-spc) + (doom-modeline--buffer-mode-icon) + (doom-modeline--buffer-state-icon) + (propertize "*%b*" 'face (if active + 'doom-modeline-buffer-timemachine + 'mode-line-inactive))))) + +;; +;; Markdown/Org preview +;; + +(doom-modeline-def-segment grip + (when (bound-and-true-p grip-mode) + (concat + (doom-modeline-spc) + (let ((face (if (doom-modeline--active) + (if grip--process + (pcase (process-status grip--process) + ('run 'doom-modeline-buffer-path) + ('exit 'doom-modeline-warning) + (_ 'doom-modeline-urgent)) + 'doom-modeline-urgent) + 'mode-line-inactive))) + (propertize (doom-modeline-icon 'material "pageview" "πŸ—" "@" + :face (if doom-modeline-icon + `(:inherit ,face :weight normal) + face) + :height 1.2 :v-adjust -0.2) + 'help-echo (format "Preview on %s +mouse-1: Preview in browser +mouse-2: Stop preview +mouse-3: Restart preview" + (grip--preview-url)) + 'mouse-face 'mode-line-highlight + 'local-map (let ((map (make-sparse-keymap))) + (define-key map [mode-line mouse-1] + #'grip-browse-preview) + (define-key map [mode-line mouse-2] + #'grip-stop-preview) + (define-key map [mode-line mouse-3] + #'grip-restart-preview) + map))) + (doom-modeline-spc)))) + +;; +;; Follow mode +;; + +(doom-modeline-def-segment follow + (when (bound-and-true-p follow-mode) + (let* ((windows (follow-all-followers)) + (nwindows (length windows)) + (nfollowing (- (length (memq (selected-window) windows)) + 1))) + (concat + (doom-modeline-spc) + (propertize (format "Follow %d/%d" (- nwindows nfollowing) nwindows) + 'face 'doom-modeline-buffer-minor-mode))))) + +(provide 'doom-modeline-segments) + +;;; doom-modeline-segments.el ends here diff --git a/org/elpa/doom-modeline-20220412.853/doom-modeline.el b/org/elpa/doom-modeline-20220412.853/doom-modeline.el new file mode 100644 index 0000000..b48bda5 --- /dev/null +++ b/org/elpa/doom-modeline-20220412.853/doom-modeline.el @@ -0,0 +1,311 @@ +;;; doom-modeline.el --- A minimal and modern mode-line -*- lexical-binding: t; -*- + +;; Copyright (C) 2018-2020 Vincent Zhang + +;; Author: Vincent Zhang +;; Homepage: https://github.com/seagle0128/doom-modeline +;; Version: 3.3.0 +;; Package-Requires: ((emacs "25.1") (all-the-icons "2.2.0") (shrink-path "0.2.0") (dash "2.11.0")) +;; Keywords: faces mode-line + +;; This file is not part of GNU Emacs. + +;; +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation, either version 3 of the License, or +;; (at your option) any later version. +;; +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. +;; +;; You should have received a copy of the GNU General Public License +;; along with this program. If not, see . +;; + +;;; Commentary: +;; +;; This package offers a fancy and fast mode-line inspired by minimalism design. +;; +;; It's integrated into Doom Emacs (https://github.com/hlissner/doom-emacs) and +;; Centaur Emacs (https://github.com/seagle0128/.emacs.d). +;; +;; The doom-modeline offers: +;; - A match count panel (for anzu, iedit, multiple-cursors, symbol-overlay, +;; evil-search and evil-substitute) +;; - An indicator for recording a macro +;; - Current environment version (e.g. python, ruby, go, etc.) in the major-mode +;; - A customizable mode-line height (see doom-modeline-height) +;; - A minor modes segment which is compatible with minions +;; - An error/warning count segment for flymake/flycheck +;; - A workspace number segment for eyebrowse +;; - A perspective name segment for persp-mode +;; - A window number segment for winum and window-numbering +;; - An indicator for modal editing state, including evil, overwrite, god, ryo +;; and xah-fly-keys, etc. +;; - An indicator for battery status +;; - An indicator for current input method +;; - An indicator for debug state +;; - An indicator for remote host +;; - An indicator for LSP state with lsp-mode or eglot +;; - An indicator for github notifications +;; - An indicator for unread emails with mu4e-alert +;; - An indicator for unread emails with gnus (basically builtin) +;; - An indicator for irc notifications with circe, rcirc or erc. +;; - An indicator for buffer position which is compatible with nyan-mode or poke-line +;; - An indicator for party parrot +;; - An indicator for PDF page number with pdf-tools +;; - An indicator for markdown/org previews with grip +;; - Truncated file name, file icon, buffer state and project name in buffer +;; information segment, which is compatible with project, find-file-in-project +;; and projectile +;; - New mode-line for Info-mode buffers +;; - New package mode-line for paradox +;; - New mode-line for helm buffers +;; - New mode-line for git-timemachine buffers +;; +;; Installation: +;; From melpa, `M-x package-install RET doom-modeline RET`. +;; In `init.el`, +;; (require 'doom-modeline) +;; (doom-modeline-mode 1) +;; or +;; (use-package doom-modeline +;; :ensure t +;; :hook (after-init . doom-modeline-mode)) +;; + +;;; Code: + +(require 'doom-modeline-core) +(require 'doom-modeline-segments) + + +;; +;; Mode lines +;; + +(doom-modeline-def-modeline 'main + '(bar workspace-name window-number modals matches follow buffer-info remote-host buffer-position word-count parrot selection-info) + '(objed-state misc-info persp-name battery grip irc mu4e gnus github debug repl lsp minor-modes input-method indent-info buffer-encoding major-mode process vcs checker)) + +(doom-modeline-def-modeline 'minimal + '(bar matches buffer-info-simple) + '(media-info major-mode)) + +(doom-modeline-def-modeline 'special + '(bar window-number modals matches buffer-info buffer-position word-count parrot selection-info) + '(objed-state misc-info battery irc-buffers debug minor-modes input-method indent-info buffer-encoding major-mode process)) + +(doom-modeline-def-modeline 'project + '(bar window-number modals buffer-default-directory) + '(misc-info battery irc mu4e gnus github debug minor-modes input-method major-mode process)) + +(doom-modeline-def-modeline 'dashboard + '(bar window-number buffer-default-directory-simple) + '(misc-info battery irc mu4e gnus github debug minor-modes input-method major-mode process)) + +(doom-modeline-def-modeline 'vcs + '(bar window-number modals matches buffer-info buffer-position parrot selection-info) + '(misc-info battery irc mu4e gnus github debug minor-modes buffer-encoding major-mode process)) + +(doom-modeline-def-modeline 'package + '(bar window-number package) + '(misc-info major-mode process)) + +(doom-modeline-def-modeline 'info + '(bar window-number buffer-info info-nodes buffer-position parrot selection-info) + '(misc-info buffer-encoding major-mode)) + +(doom-modeline-def-modeline 'media + '(bar window-number buffer-size buffer-info) + '(misc-info media-info major-mode process vcs)) + +(doom-modeline-def-modeline 'message + '(bar window-number modals matches buffer-info-simple buffer-position word-count parrot selection-info) + '(objed-state misc-info battery debug minor-modes input-method indent-info buffer-encoding major-mode)) + +(doom-modeline-def-modeline 'pdf + '(bar window-number matches buffer-info pdf-pages) + '(misc-info major-mode process vcs)) + +(doom-modeline-def-modeline 'org-src + '(bar window-number modals matches buffer-info-simple buffer-position word-count parrot selection-info) + '(objed-state misc-info debug lsp minor-modes input-method indent-info buffer-encoding major-mode process checker)) + +(doom-modeline-def-modeline 'helm + '(bar helm-buffer-id helm-number helm-follow helm-prefix-argument) + '(helm-help)) + +(doom-modeline-def-modeline 'timemachine + '(bar window-number modals matches git-timemachine buffer-position word-count parrot selection-info) + '(misc-info minor-modes indent-info buffer-encoding major-mode)) + + +;; +;; Interfaces +;; + +;;;###autoload +(defun doom-modeline-init () + "Initialize doom mode-line." + (doom-modeline-mode 1)) +(make-obsolete 'doom-modeline-init 'doom-modeline-mode "1.6.0") + +;;;###autoload +(defun doom-modeline-set-main-modeline (&optional default) + "Set main mode-line. +If DEFAULT is non-nil, set the default mode-line for all buffers." + (doom-modeline-set-modeline 'main default)) + +;;;###autoload +(defun doom-modeline-set-minimal-modeline () + "Set minimal mode-line." + (doom-modeline-set-modeline 'minimal)) + +;;;###autoload +(defun doom-modeline-set-special-modeline () + "Set special mode-line." + (doom-modeline-set-modeline 'special)) + +;;;###autoload +(defun doom-modeline-set-project-modeline () + "Set project mode-line." + (doom-modeline-set-modeline 'project)) + +;;;###autoload +(defun doom-modeline-set-dashboard-modeline () + "Set dashboard mode-line." + (doom-modeline-set-modeline 'dashboard)) + +;;;###autoload +(defun doom-modeline-set-vcs-modeline () + "Set vcs mode-line." + (doom-modeline-set-modeline 'vcs)) + +;;;###autoload +(defun doom-modeline-set-info-modeline () + "Set Info mode-line." + (doom-modeline-set-modeline 'info)) + +;;;###autoload +(defun doom-modeline-set-package-modeline () + "Set package mode-line." + (doom-modeline-set-modeline 'package)) + +;;;###autoload +(defun doom-modeline-set-media-modeline () + "Set media mode-line." + (doom-modeline-set-modeline 'media)) + +;;;###autoload +(defun doom-modeline-set-message-modeline () + "Set message mode-line." + (doom-modeline-set-modeline 'message)) + +;;;###autoload +(defun doom-modeline-set-pdf-modeline () + "Set pdf mode-line." + (doom-modeline-set-modeline 'pdf)) + +;;;###autoload +(defun doom-modeline-set-org-src-modeline () + "Set org-src mode-line." + (doom-modeline-set-modeline 'org-src)) + +;;;###autoload +(defun doom-modeline-set-helm-modeline (&rest _) ; To advice helm + "Set helm mode-line." + (doom-modeline-set-modeline 'helm)) + +;;;###autoload +(defun doom-modeline-set-timemachine-modeline () + "Set timemachine mode-line." + (doom-modeline-set-modeline 'timemachine)) + + +;; +;; Minor mode +;; + +(defvar doom-modeline-mode-map (make-sparse-keymap)) + +;; Suppress warnings +(defvar 2C-mode-line-format) +(declare-function helm-display-mode-line "ext:helm-core") + +;;;###autoload +(define-minor-mode doom-modeline-mode + "Toggle doom-modeline on or off." + :group 'doom-modeline + :global t + :lighter nil + :keymap doom-modeline-mode-map + (if doom-modeline-mode + (progn + (doom-modeline-refresh-bars) ; Create bars + (doom-modeline-set-main-modeline t) ; Set default mode-line + + ;; Apply to all existing buffers. + (dolist (buf (buffer-list)) + (with-current-buffer buf + (doom-modeline-set-main-modeline))) + + ;; For two-column editing + (setq 2C-mode-line-format (doom-modeline 'special)) + + ;; Add hooks + (add-hook 'Info-mode-hook #'doom-modeline-set-info-modeline) + (add-hook 'dired-mode-hook #'doom-modeline-set-project-modeline) + (add-hook 'dashboard-mode-hook #'doom-modeline-set-dashboard-modeline) + (add-hook 'image-mode-hook #'doom-modeline-set-media-modeline) + (add-hook 'message-mode-hook #'doom-modeline-set-message-modeline) + (add-hook 'git-commit-mode-hook #'doom-modeline-set-message-modeline) + (add-hook 'magit-mode-hook #'doom-modeline-set-vcs-modeline) + (add-hook 'circe-mode-hook #'doom-modeline-set-special-modeline) + (add-hook 'erc-mode-hook #'doom-modeline-set-special-modeline) + (add-hook 'rcirc-mode-hook #'doom-modeline-set-special-modeline) + (add-hook 'pdf-view-mode-hook #'doom-modeline-set-pdf-modeline) + (add-hook 'org-src-mode-hook #'doom-modeline-set-org-src-modeline) + (add-hook 'git-timemachine-mode-hook #'doom-modeline-set-timemachine-modeline) + (add-hook 'paradox-menu-mode-hook #'doom-modeline-set-package-modeline) + (add-hook 'xwidget-webkit-mode-hook #'doom-modeline-set-minimal-modeline) + + ;; Add advices + (advice-add #'helm-display-mode-line :after #'doom-modeline-set-helm-modeline)) + (progn + ;; Restore mode-line + (let ((original-format (doom-modeline--original-value 'mode-line-format))) + (setq-default mode-line-format original-format) + (dolist (buf (buffer-list)) + (with-current-buffer buf + (setq mode-line-format original-format)))) + + ;; For two-column editing + (setq 2C-mode-line-format (doom-modeline--original-value '2C-mode-line-format)) + + ;; Remove hooks + (remove-hook 'Info-mode-hook #'doom-modeline-set-info-modeline) + (remove-hook 'dired-mode-hook #'doom-modeline-set-project-modeline) + (remove-hook 'dashboard-mode-hook #'doom-modeline-set-dashboard-modeline) + (remove-hook 'image-mode-hook #'doom-modeline-set-media-modeline) + (remove-hook 'message-mode-hook #'doom-modeline-set-message-modeline) + (remove-hook 'git-commit-mode-hook #'doom-modeline-set-message-modeline) + (remove-hook 'magit-mode-hook #'doom-modeline-set-vcs-modeline) + (remove-hook 'circe-mode-hook #'doom-modeline-set-special-modeline) + (remove-hook 'erc-mode-hook #'doom-modeline-set-special-modeline) + (remove-hook 'rcirc-mode-hook #'doom-modeline-set-special-modeline) + (remove-hook 'pdf-view-mode-hook #'doom-modeline-set-pdf-modeline) + (remove-hook 'org-src-mode-hook #'doom-modeline-set-org-src-modeline) + (remove-hook 'git-timemachine-mode-hook #'doom-modeline-set-timemachine-modeline) + (remove-hook 'paradox-menu-mode-hook #'doom-modeline-set-package-modeline) + (remove-hook 'xwidget-webkit-mode-hook #'doom-modeline-set-minimal-modeline) + + ;; Remove advices + (advice-remove #'helm-display-mode-line #'doom-modeline-set-helm-modeline)))) + +(provide 'doom-modeline) + +;;; doom-modeline.el ends here diff --git a/org/elpa/shrink-path-20190208.1335/shrink-path-autoloads.el b/org/elpa/shrink-path-20190208.1335/shrink-path-autoloads.el new file mode 100644 index 0000000..776b017 --- /dev/null +++ b/org/elpa/shrink-path-20190208.1335/shrink-path-autoloads.el @@ -0,0 +1,22 @@ +;;; shrink-path-autoloads.el --- automatically extracted autoloads -*- lexical-binding: t -*- +;; +;;; Code: + +(add-to-list 'load-path (directory-file-name + (or (file-name-directory #$) (car load-path)))) + + +;;;### (autoloads nil "shrink-path" "shrink-path.el" (0 0 0 0)) +;;; Generated autoloads from shrink-path.el + +(register-definition-prefixes "shrink-path" '("shrink-path-")) + +;;;*** + +;; Local Variables: +;; version-control: never +;; no-byte-compile: t +;; no-update-autoloads: t +;; coding: utf-8 +;; End: +;;; shrink-path-autoloads.el ends here diff --git a/org/elpa/shrink-path-20190208.1335/shrink-path-pkg.el b/org/elpa/shrink-path-20190208.1335/shrink-path-pkg.el new file mode 100644 index 0000000..c568bd0 --- /dev/null +++ b/org/elpa/shrink-path-20190208.1335/shrink-path-pkg.el @@ -0,0 +1,2 @@ +;;; Generated package description from shrink-path.el -*- no-byte-compile: t -*- +(define-package "shrink-path" "20190208.1335" "fish-style path" '((emacs "24") (s "1.6.1") (dash "1.8.0") (f "0.10.0")) :commit "c14882c8599aec79a6e8ef2d06454254bb3e1e41" :authors '(("Benjamin Andresen")) :maintainer '("Benjamin Andresen") :url "https://gitlab.com/bennya/shrink-path.el") diff --git a/org/elpa/shrink-path-20190208.1335/shrink-path.el b/org/elpa/shrink-path-20190208.1335/shrink-path.el new file mode 100644 index 0000000..154bfd6 --- /dev/null +++ b/org/elpa/shrink-path-20190208.1335/shrink-path.el @@ -0,0 +1,150 @@ +;;; shrink-path.el --- fish-style path -*- lexical-binding: t; -*- + +;; Copyright (C) 2017 Benjamin Andresen + +;; Author: Benjamin Andresen +;; Version: 0.3.1 +;; Package-Version: 20190208.1335 +;; Package-Commit: c14882c8599aec79a6e8ef2d06454254bb3e1e41 +;; URL: https://gitlab.com/bennya/shrink-path.el +;; Package-Requires: ((emacs "24") (s "1.6.1") (dash "1.8.0") (f "0.10.0")) + +;; This file is NOT part of GNU Emacs. + +;; This program is free software; you can redistribute it and/or modify +;; it under the terms of the GNU General Public License as published by +;; the Free Software Foundation; either version 3, or (at your option) +;; any later version. + +;; This program is distributed in the hope that it will be useful, +;; but WITHOUT ANY WARRANTY; without even the implied warranty of +;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;; GNU General Public License for more details. + +;; You should have received a copy of the GNU General Public License +;; along with GNU Emacs; see the file LICENSE. If not, write to the +;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, +;; Boston, MA 02110-1301, USA. + +;;; Commentary: + +;; Provides functions that offer fish shell[1] path truncation. +;; Directory /usr/share/emacs/site-lisp => /u/s/e/site-lisp +;; +;; Also includes utility functions that make integration in eshell or the +;; modeline easier. +;; +;; [1] https://fishshell.com/ + + +;;; Code: +(require 'dash) +(require 's) +(require 'f) +(require 'rx) + +(defun shrink-path--truncate (str) + "Return STR's first character or first two characters if hidden." + (substring str 0 (if (s-starts-with? "." str) 2 1))) + +(defun shrink-path--dirs-internal (full-path &optional truncate-all) + "Return fish-style truncated string based on FULL-PATH. +Optional parameter TRUNCATE-ALL will cause the function to truncate the last +directory too." + (let* ((home (expand-file-name "~")) + (path (replace-regexp-in-string + (s-concat "^" home) "~" full-path)) + (split (s-split "/" path 'omit-nulls)) + (split-len (length split)) + shrunk) + (->> split + (--map-indexed (if (= it-index (1- split-len)) + (if truncate-all (shrink-path--truncate it) it) + (shrink-path--truncate it))) + (s-join "/") + (setq shrunk)) + (s-concat (unless (s-matches? (rx bos (or "~" "/")) shrunk) "/") + shrunk + (unless (s-ends-with? "/" shrunk) "/")))) + + +(defun shrink-path-dirs (&optional path truncate-tail) + "Given PATH return fish-styled shrunken down path. +TRUNCATE-TAIL will cause the function to truncate the last directory too." + (let* ((path (or path default-directory)) + (path (f-full path))) + (cond + ((s-equals? (f-short path) "/") "/") + ((s-matches? (rx bos (or "~" "/") eos) "~/")) + (t (shrink-path--dirs-internal path truncate-tail))))) + +(defun shrink-path-expand (str &optional absolute-p) + "Return expanded path from STR if found or list of matches on multiple. +The path referred to by STR has to exist for this to work. +If ABSOLUTE-P is t the returned path will be absolute." + (let* ((str-split (s-split "/" str 'omit-nulls)) + (head (car str-split))) + (if (= (length str-split) 1) + (s-concat "/" str-split) + (--> (-drop 1 str-split) ;; drop head + (-map (lambda (e) (s-concat e "*")) it) + (-drop-last 1 it) ;; drop tail as it may not exist + (s-join "/" it) + (s-concat (if (s-equals? head "~") "~/" head) it) + (f-glob it) + (-map (lambda (e) (s-concat e "/" (-last-item str-split))) it) + (if absolute-p (-map #'f-full it) (-map #'f-abbrev it)) + (if (= (length it) 1) (car it) it))))) + +(defun shrink-path-prompt (&optional pwd) + "Return cons of BASE and DIR for PWD. +If PWD isn't provided will default to `default-directory'." + (let* ((pwd (or pwd default-directory)) + (shrunk (shrink-path-dirs pwd)) + (split (--> shrunk (s-split "/" it 'omit-nulls))) + base dir) + (setq dir (or (-last-item split) "/")) + (setq base (if (s-equals? dir "/") "" + (s-chop-suffix (s-concat dir "/") shrunk))) + (cons base dir))) + +(defun shrink-path-file (file &optional truncate-tail) + "Return FILE's shrunk down path and filename. +TRUNCATE-TAIL controls if the last directory should also be shortened." + (let ((filename (f-filename file)) + (dirname (f-dirname file))) + (s-concat (shrink-path-dirs dirname truncate-tail) filename))) + +(defun shrink-path-file-expand (str &optional exists-p absolute-p) + "Return STR's expanded filename. +The path referred to by STR has to exist for this to work. +If EXISTS-P is t the filename also has to exist. +If ABSOLUTE-P is t the returned path will be absolute." + (let ((expanded (shrink-path-expand str absolute-p))) + (if (and expanded exists-p) + (if (f-exists? expanded) expanded) + expanded))) + +(defun shrink-path-file-mixed (shrink-path rel-path filename) + "Returns list of mixed truncated file name locations. + +Consists of SHRINK-PATH's parent, SHRINK-PATH basename, relative REL-PATH and +FILENAME. +For use in modeline or prompts, etc." + (let ((shrunk-dirs (shrink-path-prompt shrink-path)) + sp-parent sp-rel rel-rel nd-file) + + (when (f-descendant-of? filename shrink-path) + (when shrunk-dirs + (setq sp-parent (car shrunk-dirs) + sp-rel (cdr shrunk-dirs))) + (setq rel-rel (if (or (f-same? rel-path shrink-path) + (s-equals? (f-relative rel-path shrink-path) ".")) + nil + (f-relative rel-path shrink-path))) + (setq nd-file (file-name-nondirectory filename)) + + (list sp-parent sp-rel rel-rel nd-file)))) + +(provide 'shrink-path) +;;; shrink-path.el ends here