;;; acdw-reading.el --- minor mode for reading -*- lexical-binding: t -*- ;; Copyright 2021 Case Duckworth <(rot13-string "npqj@npqj.arg")> ;; 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: ;; here is my attempt at a reading mode. ;;; Code: (defvar-local //indicate-empty-lines nil) (defvar-local //indicate-buffer-boundaries nil) ;;;###autoload (define-minor-mode reading-mode "A mode for reading." :init-value nil :lighter " Read" :keymap (make-sparse-keymap) (if reading-mode (progn ;; turn on ;; settings (setq-local //indicate-empty-lines indicate-empty-lines indicate-empty-lines nil //indicate-buffer-boundaries indicate-buffer-boundaries indicate-buffer-boundaries nil) ;; disable modes (dolist (mode '(display-fill-column-indicator-mode blink-cursor-mode)) (when (fboundp mode) (set (make-local-variable (intern (format "//%s" mode))) (symbol-value mode)) (funcall mode -1))) ;; enable modes (dolist (mode '(olivetti-mode)) (when (fboundp mode) (set (make-local-variable (intern (format "//%s" mode))) (symbol-value mode)) (funcall mode +1)))) ;; turn off ;; restore settings (setq-local indicate-empty-lines //indicate-empty-lines indicate-buffer-boundaries //indicate-buffer-boundaries) ;; restore modes (dolist (mode '(display-fill-column-indicator-mode olivetti-mode blink-cursor-mode)) (when (fboundp mode) (funcall mode (if (symbol-value (intern (format "//%s" mode))) +1 -1)))))) (provide 'acdw-reading) ;;; acdw-reading.el ends here