;;; mood-line-segment-modal.el --- A modal editing status segment for mood-line -*- lexical-binding: t; -*- ;; ;; Author: trevDev() ;; Jessie Hildebrandt ;; Homepage: https://gitlab.com/jessieh/mood-line ;; ;; This file is not part of GNU Emacs. ;;; Commentary: ;; ;; This segment displays modal editing information for the current buffer. ;;; License: ;; ;; 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 2, 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; see the file COPYING. If not, write to ;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth ;; Floor, Boston, MA 02110-1301, USA. ;;; Code: ;; -------------------------------------------------------------------------- ;; ;; ;; Custom definitions ;; ;; -------------------------------------------------------------------------- ;; ;; ---------------------------------- ;; ;; Group definitions ;; ---------------------------------- ;; (defgroup mood-line-segment-modal nil "A modal editing status segment for mood-line." :group 'mood-line) ;; ---------------------------------- ;; ;; Variable definitions ;; ---------------------------------- ;; (defcustom mood-line-segment-modal-evil-state-alist '((normal . ("" . font-lock-variable-name-face)) (insert . ("" . font-lock-string-face)) (visual . ("" . font-lock-keyword-face)) (replace . ("" . font-lock-type-face)) (motion . ("" . font-lock-constant-face)) (operator . ("" . font-lock-function-name-face)) (emacs . ("" . font-lock-builtin-face))) "Alist specifying indicators and faces for corresponding `evil-mode' states. The face may be either a face symbol or a property list of key-value pairs; e.g., (:foreground \"red\")." :group 'mood-line-segment-modal :type '(alist :key-type symbol :value-type (cons (string :tag "Display text") (choice :tag "Face" face plist)))) (defcustom mood-line-segment-modal-meow-state-alist '((normal . ("" . font-lock-variable-name-face)) (insert . ("" . font-lock-string-face)) (keypad . ("" . font-lock-keyword-face)) (beacon . ("" . font-lock-type-face)) (motion . ("" . font-lock-constant-face))) "Alist specifying indicators and faces corresponding `meow-mode' states. The face may be either a face symbol or a property list of key-value pairs; e.g., (:foreground \"red\")." :group 'mood-line-segment-modal :type '(alist :key-type symbol :value-type (cons (string :tag "Display text") (choice :tag "Face" face plist)))) ;; -------------------------------------------------------------------------- ;; ;; ;; Modal editing segments ;; ;; -------------------------------------------------------------------------- ;; ;; ---------------------------------- ;; ;; Evil segment ;; ---------------------------------- ;; (defun mood-line-segment-modal--evil-fn () "Return the current `evil-mode' state." (when (boundp 'evil-state) (let ((mode-cons (alist-get evil-state mood-line-segment-modal-evil-state-alist))) (concat (propertize (car mode-cons) 'face (cdr mode-cons)))))) ;; ---------------------------------- ;; ;; Meow segment ;; ---------------------------------- ;; (defun mood-line-segment-modal--meow-fn () "Return the current `meow-mode' state." (when (boundp 'meow--current-state) (let ((mode-cons (alist-get meow--current-state mood-line-segment-modal-meow-state-alist))) (concat (propertize (car mode-cons) 'face (cdr mode-cons)))))) ;; ---------------------------------- ;; ;; Xah segment ;; ---------------------------------- ;; (defun mood-line-segment-modal--xah-fn () "Display the current xah-fly-keys state." (if (bound-and-true-p xah-fly-insert-state-p) "" "")) ;; ---------------------------------- ;; ;; God segment ;; ---------------------------------- ;; (defun mood-line-segment-modal--god-fn () "Return an indicator of whether or not `god-mode' is active." (if (bound-and-true-p god-local-mode) (propertize "" 'face 'mood-line-status-warning) "---")) ;; -------------------------------------------------------------------------- ;; ;; ;; Provide package ;; ;; -------------------------------------------------------------------------- ;; (provide 'mood-line-segment-modal) ;;; mood-line-segment-modal.el ends here