;;; -*- lexical-binding: t -*- ;; ;; this file: ;; https://dataswamp.org/~incal/emacs-init/mode-line.el (require 'cl-lib) (defvar-local show-modes-mode nil) (defun toggle-local-var (var) (set-variable var (not (symbol-value var)) t) ) (defun toggle-column-number-mode (&optional msg) (interactive "P") (if msg (message "%d" (current-column)) (toggle-local-var 'column-number-mode) )) (defun toggle-line-number-mode (&optional msg) (interactive "P") (if msg (message "%d" (line-number-at-pos)) (toggle-local-var 'line-number-mode) )) (defun toggle-show-modes-mode (&optional show) (interactive "P") (if show (message "%s" major-mode) (toggle-local-var 'show-modes-mode) )) (defalias 'cols #'toggle-column-number-mode) (defalias 'lines #'toggle-line-number-mode) (defalias 'modes #'toggle-show-modes-mode) (setq-default mode-line-format '(" " (:eval (unless (or buffer-read-only (member major-mode '(erc-mode eshell-mode inferior-emacs-lisp-mode inferior-lisp-mode message-mode shell-mode slime-repl-mode) )) mode-line-modified) ) " " (:eval (cl-case major-mode (message-mode (buffer-name)) (w3m-mode (replace-regexp-in-string "%" "%%" w3m-current-title)) (t (cond (dired-directory dired-directory) (buffer-file-name (abbreviate-file-name buffer-file-name)) (t mode-line-buffer-identification) )))) " " (:eval (when show-modes-mode (format "%s " major-mode) )) (line-number-mode "[%l %p] ") (column-number-mode "%c") )) (defun fundamental-mode-hook-f () (lines) ) (add-hook 'fundamental-mode-hook #'fundamental-mode-hook-f) (provide 'mode-line)