;;; acdw-modeline.el -*- lexical-binding: t; coding: utf-8-unix -*- ;; Author: Case Duckworth ;; Created: Sometime during Covid-19, 2020 ;; Keywords: configuration ;; URL: https://tildegit.org/acdw/emacs ;; This file is NOT part of GNU Emacs. ;;; License: ;; Everyone is permitted to do whatever with this software, without ;; limitation. This software comes without any warranty whatsoever, ;; but with two pieces of advice: ;; - Don't hurt yourself. ;; - Make good choices. ;;; Commentary: ;; `acdw-modeline' is a dumping ground for extra modeline functions, so they ;; don't clutter up `init.el'. ;;; Code: (require 'simple-modeline) (require 'minions) ;; modified from `simple-modeline' (defun acdw-modeline/modified () "Displays a color-coded buffer modification/read-only indicator in the mode-line." (if (not (string-match-p "\\*.*\\*" (buffer-name))) (let* ((read-only (and buffer-read-only (buffer-file-name))) (modified (buffer-modified-p))) (propertize (if read-only " =" (if modified " +" " -")) 'help-echo (format (concat "Buffer is %s and %smodified\n" "mouse-1: Toggle read-only status.") (if read-only "read-only" "writable") (if modified "" "not ")) 'local-map (purecopy (simple-modeline-make-mouse-map 'mouse-1 (lambda (event) (interactive "e") (with-selected-window (posn-window (event-start event)) (read-only-mode 'toggle))))) 'mouse-face 'mode-line-highlight)))) ;; all me, baby (defun acdw-modeline/minions () "Display a button for `minions-minor-modes-menu'." (concat " " (propertize "&" 'help-echo (format "Minor modes menu\nmouse-1: show menu.") 'local-map (purecopy (simple-modeline-make-mouse-map 'mouse-1 (lambda (event) (interactive "e") (with-selected-window (posn-window (event-start event)) (minions-minor-modes-menu))))) 'mouse-face 'mode-line-highlight))) ;; from https://www.gonsie.com/blorg/modeline.html, from Doom (defun acdw-modeline/vc-branch () (let ((backend (vc-backend buffer-file-name))) (substring vc-mode (+ (if (eq backend 'Hg) 2 3) 2)))) ;; from gonsie (defun acdw-modeline/buffer-name () (propertize " %b " 'face (if (buffer-modified-p) 'font-lock-warning-face 'font-lock-type-face) 'help-echo (buffer-file-name))) (provide 'acdw-modeline)