82 lines
2.9 KiB
EmacsLisp
82 lines
2.9 KiB
EmacsLisp
;;; acdw-modeline.el -*- lexical-binding: t; coding: utf-8-unix -*-
|
|
;; Author: Case Duckworth <acdw@acdw.net>
|
|
;; 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)
|
|
|
|
(defun acdw-modeline/buffer-name () ; gonsie
|
|
(propertize " %b "
|
|
'face
|
|
(if (buffer-modified-p)
|
|
'font-lock-warning-face
|
|
'font-lock-type-face)
|
|
'help-echo (buffer-file-name)))
|
|
|
|
(defun acdw-modeline/god-mode-indicator ()
|
|
(when (bound-and-true-p god-local-mode)
|
|
" God"))
|
|
|
|
(defun acdw-modeline/modified () ; modified from `simple-modeline'
|
|
"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))))
|
|
|
|
(defun acdw-modeline/minions () ; by me
|
|
"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)))
|
|
|
|
(defun acdw-modeline/vc-branch ()
|
|
;; from https://www.gonsie.com/blorg/modeline.html, from Doom
|
|
(if-let ((backend (vc-backend buffer-file-name)))
|
|
(substring vc-mode (+ (if (eq backend 'Hg) 2 3) 2))))
|
|
|
|
(provide 'acdw-modeline)
|