~protesilaos/logos

f2a4d5dbcab0e157c258ce0fa31dae19b0ee9bf2 — Protesilaos Stavrou 1 year, 2 months ago fcc13bf
Give more descriptive names to functions that set state
2 files changed, 28 insertions(+), 17 deletions(-)

M README.org
M logos.el
M README.org => README.org +6 -6
@@ 511,8 511,8 @@ functionality of ~logos-focus-mode~ at the user level ([[#h:a2540f2f-1159-4e5c-a
  (when my-logos-org-indent
    ;; Disable `org-indent-mode' when `logos-focus-mode' is enabled and
    ;; restore it when `logos-focus-mode' is disabled.  The
    ;; `logos--mode' function takes care of the technicalities.
    (logos--mode 'org-indent-mode -1)))
    ;; `logos-set-mode-arg' function takes care of the technicalities.
    (logos-set-mode-arg 'org-indent-mode -1)))

(add-hook 'logos-focus-mode-hook #'my-logos-org-indent)
#+end_src


@@ 526,8 526,8 @@ not needed, the following will suffice:
  "Set `my-logos-org-indent' in `logos-focus-mode'."
  ;; Disable `org-indent-mode' when `logos-focus-mode' is enabled and
  ;; restore it when `logos-focus-mode' is disabled.  The
  ;; `logos--mode' function takes care of the technicalities.
  (logos--mode 'org-indent-mode -1))
  ;; `logos-set-mode-arg' function takes care of the technicalities.
  (logos-set-mode-arg 'org-indent-mode -1))

(add-hook 'logos-focus-mode-hook #'my-logos-org-indent)
#+end_src


@@ 544,13 544,13 @@ to disable the ~menu-bar-mode~ and ~tool-bar-mode~ when activating the
#+begin_src emacs-lisp
;; Assuming the `menu-bar-mode' is enabled by default...
(defun my-logos-hide-menu-bar ()
  (logos--mode 'menu-bar-mode -1))
  (logos-set-mode-arg 'menu-bar-mode -1))

(add-hook 'logos-focus-mode-hook #'my-logos-hide-menu-bar)

;; Assuming the `tool-bar-mode' is enabled by default...
(defun my-logos-hide-tool-bar ()
  (logos--mode 'tool-bar-mode -1))
  (logos-set-mode-arg 'tool-bar-mode -1))

(add-hook 'logos-focus-mode-hook #'my-logos-hide-tool-bar)
#+end_src

M logos.el => logos.el +22 -11
@@ 406,11 406,17 @@ If narrowing is in effect, widen the view."

;;;; Optional "focus mode" and utilities

;; I learnt about the method of using `logos--mode' and `logos--set'
;; from Daniel Mendler: <https://github.com/minad>.
;; I learnt about the method of using `logos-set-mode-arg' and
;; `logos-set-buffer-local-value' from Daniel Mendler:
;; <https://github.com/minad>.
(defvar-local logos--restore nil)

(defun logos--mode (mode arg)
(define-obsolete-function-alias
  'logos--mode
  'logos-set-mode-arg
  "1.1.0")

(defun logos-set-mode-arg (mode arg)
  "Set MODE to ARG.
ARG is either 1 or -1.  The current value changes to its
alternate, thus toggling MODE."


@@ 419,7 425,12 @@ alternate, thus toggling MODE."
      (push (lambda () (funcall mode old)) logos--restore)
      (funcall mode arg))))

(defun logos--set (var val)
(define-obsolete-function-alias
  'logos--set
  'logos-set-buffer-local-value
  "1.1.0")

(defun logos-set-buffer-local-value (var val)
  "Set VAR to buffer-local VAL."
  (let ((old (and (boundp var) (symbol-value var))))
    (unless (equal old val)


@@ 478,22 489,22 @@ options: `logos-scroll-lock', `logos-variable-pitch',
(defun logos--variable-pitch ()
  "Set `logos-variable-pitch'."
  (when (and logos-variable-pitch (not (derived-mode-p 'prog-mode)))
    (logos--mode 'variable-pitch-mode 1)))
    (logos-set-mode-arg 'variable-pitch-mode 1)))

(defun logos--scroll-lock ()
  "Set `logos-scroll-lock'."
  (when logos-scroll-lock
    (logos--mode 'scroll-lock-mode 1)))
    (logos-set-mode-arg 'scroll-lock-mode 1)))

(defun logos--indicate-buffer-boundaries ()
  "Set `logos-hide-buffer-boundaries'."
  (when logos-hide-buffer-boundaries
    (logos--set 'indicate-buffer-boundaries nil)))
    (logos-set-buffer-local-value 'indicate-buffer-boundaries nil)))

(defun logos--hide-cursor ()
  "Set `logos-hide-cursor'."
  (when logos-hide-cursor
    (logos--set 'cursor-type nil)))
    (logos-set-buffer-local-value 'cursor-type nil)))

;; FIXME 2022-03-13: The mode line is not redrawn properly.  Not even
;; with `force-mode-line-update', unless something happens like


@@ 509,17 520,17 @@ options: `logos-scroll-lock', `logos-variable-pitch',
(defun logos--hide-mode-line ()
  "Set `logos-hide-mode-line'."
  (when logos-hide-mode-line
    (logos--set 'mode-line-format nil)))
    (logos-set-buffer-local-value 'mode-line-format nil)))

(defun logos--buffer-read-only ()
  "Set `logos-buffer-read-only'."
  (when logos-buffer-read-only
    (logos--set 'buffer-read-only t)))
    (logos-set-buffer-local-value 'buffer-read-only t)))

(defun logos--olivetti ()
  "Set `logos-olivetti'."
  (when (and logos-olivetti (require 'olivetti nil t))
    (logos--mode 'olivetti-mode 1)))
    (logos-set-mode-arg 'olivetti-mode 1)))

(defvar-local logos--fringe-remap-cookie nil
  "Cookie of remapped `fringe' face.")