mirror of
https://codeberg.org/scip/novel-mode.git
synced 2025-12-18 04:50:59 +01:00
added transient for help and todo list
This commit is contained in:
@@ -108,10 +108,17 @@ Example:
|
|||||||
(lambda ()
|
(lambda ()
|
||||||
(set-face-font 'default "Courier")))
|
(set-face-font 'default "Courier")))
|
||||||
|
|
||||||
|
# TODO
|
||||||
|
|
||||||
|
- add a possibility to save current settings for later reading sessions
|
||||||
|
- fix fill mode in displayed text, if possible (currently newlines are disturbing the reading experience)
|
||||||
|
- [DONE] replace help in echo area with transient
|
||||||
|
- do not double font size on startup
|
||||||
|
|
||||||
# Meta
|
# Meta
|
||||||
|
|
||||||
|
|
||||||
Copyright (C) 2016, T.v.Dein <tlinden@cpan.org>
|
Copyright (C) 2016-2023, T.v.Dein <tlinden@cpan.org>
|
||||||
|
|
||||||
This file is NOT part of Emacs.
|
This file is NOT part of Emacs.
|
||||||
|
|
||||||
|
|||||||
120
novel-mode.el
120
novel-mode.el
@@ -1,6 +1,6 @@
|
|||||||
;;; novel-mode.el --- screen reader
|
;;; novel-mode.el --- screen reader
|
||||||
|
|
||||||
;; Copyright (C) 2016, T.v.Dein <tlinden@cpan.org>
|
;; Copyright (C) 2016-2023, T.v.Dein <tlinden@cpan.org>
|
||||||
|
|
||||||
;; This file is NOT part of Emacs.
|
;; This file is NOT part of Emacs.
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@
|
|||||||
;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
|
||||||
;; USA
|
;; USA
|
||||||
|
|
||||||
;; Version: 0.01
|
;; Version: 0.02
|
||||||
;; Author: T.v.Dein <tlinden@cpan.org>
|
;; Author: T.v.Dein <tlinden@cpan.org>
|
||||||
;; Keywords: read books novels
|
;; Keywords: read books novels
|
||||||
;; URL: https://github.com/tlinden/novel-mode
|
;; URL: https://github.com/tlinden/novel-mode
|
||||||
@@ -132,9 +132,12 @@
|
|||||||
|
|
||||||
|
|
||||||
;;; Code:
|
;;; Code:
|
||||||
|
(eval-when-compile
|
||||||
|
(require 'transient))
|
||||||
|
|
||||||
;;;; Constants:
|
;;;; Constants:
|
||||||
|
|
||||||
(defconst novel-mode-versioni "0.01" "Novel mode version")
|
(defconst novel-mode-version "0.02" "Novel mode version")
|
||||||
|
|
||||||
(defgroup novel-mode nil
|
(defgroup novel-mode nil
|
||||||
"screen reader mode"
|
"screen reader mode"
|
||||||
@@ -143,19 +146,19 @@
|
|||||||
:link '(url-link :tag "Repository" "https://github.com/tlinden/novel-mode"))
|
:link '(url-link :tag "Repository" "https://github.com/tlinden/novel-mode"))
|
||||||
|
|
||||||
;; various vars to remember previous states
|
;; various vars to remember previous states
|
||||||
(defvar novel--mlf nil)
|
(defvar novel--modelineformat nil)
|
||||||
(defvar novel--vlm nil)
|
(defvar novel--visuallinemode nil)
|
||||||
(defvar novel--ww nil)
|
(defvar novel--wordwrap nil)
|
||||||
(defvar novel--mbm nil)
|
(defvar novel--menubar nil)
|
||||||
(defvar novel--tbm nil)
|
(defvar novel--toolbar nil)
|
||||||
(defvar novel--sbm nil)
|
(defvar novel--scrollbar nil)
|
||||||
(defvar novel--ct nil)
|
(defvar novel--cursortype nil)
|
||||||
|
|
||||||
;; set on startup
|
;; set on startup
|
||||||
(defvar novel--max-margin nil)
|
(defvar novel--max-margin nil)
|
||||||
(defvar novel--cur-margin nil)
|
(defvar novel--cur-margin nil)
|
||||||
|
|
||||||
;; remember last invertion state, if any. we start with t by purpose, keep this
|
;; remember last inversion state, if any. we start with t by purpose, keep this
|
||||||
(defvar novel--invert-state t)
|
(defvar novel--invert-state t)
|
||||||
|
|
||||||
|
|
||||||
@@ -220,14 +223,23 @@ COMMANDS is a list of alternating OLDDEF NEWDEF command names."
|
|||||||
(defun novel--backup-states()
|
(defun novel--backup-states()
|
||||||
"Store current states in variables for later restoration"
|
"Store current states in variables for later restoration"
|
||||||
;; various vars to remember previous states
|
;; various vars to remember previous states
|
||||||
(setq novel--mlf mode-line-format
|
(setq novel--modelineformat mode-line-format
|
||||||
novel--vlm visual-line-mode
|
novel--visuallinemode visual-line-mode
|
||||||
novel--ww word-wrap
|
novel--wordwrap word-wrap
|
||||||
novel--mbm menu-bar-mode
|
novel--menubar menu-bar-mode
|
||||||
novel--tbm tool-bar-mode
|
novel--toolbar tool-bar-mode
|
||||||
novel--ct cursor-type
|
novel--cursortype cursor-type
|
||||||
novel--sbm scroll-bar-mode))
|
novel--scrollbar scroll-bar-mode))
|
||||||
|
|
||||||
|
(defun novel--restore-states()
|
||||||
|
"Restore old states of various system settings"
|
||||||
|
(setq cursor-type novel--cursortype
|
||||||
|
mode-line-format novel--modelineformat
|
||||||
|
visual-line-mode novel--visuallinemode
|
||||||
|
word-wrap novel--wordwrap
|
||||||
|
menu-bar-mode novel--menubar
|
||||||
|
tool-bar-mode novel--toolbar
|
||||||
|
scroll-bar-mode novel--scrollbar))
|
||||||
|
|
||||||
;;;; Hooks:
|
;;;; Hooks:
|
||||||
|
|
||||||
@@ -344,8 +356,7 @@ COMMANDS is a list of alternating OLDDEF NEWDEF command names."
|
|||||||
|
|
||||||
(novel--remap-self-insert) ; disable all keys but ours
|
(novel--remap-self-insert) ; disable all keys but ours
|
||||||
|
|
||||||
(run-hooks 'novel-mode-post-start-hook)
|
(run-hooks 'novel-mode-post-start-hook))
|
||||||
)
|
|
||||||
|
|
||||||
;; disable, restore everything back to normal
|
;; disable, restore everything back to normal
|
||||||
(progn
|
(progn
|
||||||
@@ -353,30 +364,72 @@ COMMANDS is a list of alternating OLDDEF NEWDEF command names."
|
|||||||
|
|
||||||
(setq scroll-step 0
|
(setq scroll-step 0
|
||||||
scroll-conservatively 0
|
scroll-conservatively 0
|
||||||
line-spacing nil
|
line-spacing nil)
|
||||||
cursor-type novel--ct
|
|
||||||
mode-line-format novel--mlf
|
(novel--restore-states)
|
||||||
visual-line-mode novel--vlm
|
|
||||||
word-wrap novel--ww
|
|
||||||
menu-bar-mode novel--mbm
|
|
||||||
tool-bar-mode novel--tbm
|
|
||||||
scroll-bar-mode novel--sbm)
|
|
||||||
|
|
||||||
(set-fringe-mode 1)
|
(set-fringe-mode 1)
|
||||||
(set-window-margins nil 0 0)
|
(set-window-margins nil 0 0)
|
||||||
(variable-pitch-mode 0)
|
(variable-pitch-mode 0)
|
||||||
(text-scale-increase -2)
|
(text-scale-increase 0)
|
||||||
(put this-command 'state-on-p nil)
|
(put this-command 'state-on-p nil)
|
||||||
(novel--reset-remap-self-insert)
|
(novel--reset-remap-self-insert)
|
||||||
|
|
||||||
(if (not novel--invert-state)
|
(if (not novel--invert-state)
|
||||||
(novel-invert))
|
(novel-invert))
|
||||||
|
|
||||||
(run-hooks 'novel-mode-post-stop-hook)
|
(run-hooks 'novel-mode-post-stop-hook)))
|
||||||
))
|
|
||||||
(redraw-frame (selected-frame)))
|
(redraw-frame (selected-frame)))
|
||||||
|
|
||||||
(defun novel-help()
|
(transient-define-suffix novel--suffix-incr-margins ()
|
||||||
|
:transient t
|
||||||
|
(interactive)
|
||||||
|
(novel-incr-margins))
|
||||||
|
|
||||||
|
(transient-define-suffix novel--suffix-decr-margins ()
|
||||||
|
:transient t
|
||||||
|
(interactive)
|
||||||
|
(novel-decr-margins))
|
||||||
|
|
||||||
|
(transient-define-suffix novel--suffix-incr-font ()
|
||||||
|
:transient t
|
||||||
|
(interactive)
|
||||||
|
(novel-incr-font-size))
|
||||||
|
|
||||||
|
(transient-define-suffix novel--suffix-decr-font ()
|
||||||
|
:transient t
|
||||||
|
(interactive)
|
||||||
|
(novel-decr-font-size))
|
||||||
|
|
||||||
|
(transient-define-suffix novel--suffix-invert ()
|
||||||
|
(interactive)
|
||||||
|
(novel-invert))
|
||||||
|
|
||||||
|
(transient-define-prefix novel-help()
|
||||||
|
"Interactive help for novel mode"
|
||||||
|
[:class transient-columns
|
||||||
|
["Navigating"
|
||||||
|
:pad-keys t
|
||||||
|
("n" "scroll one page down" novel-page-down)
|
||||||
|
("p" "scroll one page up" novel-page-up)
|
||||||
|
("<down>" "scroll one line down" novel-down)
|
||||||
|
("<up>" "scroll one line up" novel-up)
|
||||||
|
("SPC" "scroll one page down" novel-page-down)]
|
||||||
|
|
||||||
|
["Settings"
|
||||||
|
:pad-keys t
|
||||||
|
("<left>" "increase left and right margins" novel--suffix-incr-margins)
|
||||||
|
("<right>" "decrease left and right margins" novel--suffix-decr-margins)
|
||||||
|
("+" "increase font size" novel--suffix-incr-font)
|
||||||
|
("-" "decrease font size" novel--suffix-decr-font)
|
||||||
|
("i" "invert video display" novel--suffix-invert)]
|
||||||
|
|
||||||
|
["Novel Mode"
|
||||||
|
:pad-keys t
|
||||||
|
("C-g" "close help buffer" transient-quit-one)
|
||||||
|
("q" "quit novel mode" novel-mode)]])
|
||||||
|
|
||||||
|
(defun novel--old-help()
|
||||||
"Display help"
|
"Display help"
|
||||||
(interactive)
|
(interactive)
|
||||||
(message "Available commands in novel mode:
|
(message "Available commands in novel mode:
|
||||||
@@ -424,8 +477,7 @@ COMMANDS is a list of alternating OLDDEF NEWDEF command names."
|
|||||||
(define-key map (kbd "h") 'novel-help)
|
(define-key map (kbd "h") 'novel-help)
|
||||||
(define-key map (kbd "?") 'novel-help)
|
(define-key map (kbd "?") 'novel-help)
|
||||||
map)
|
map)
|
||||||
(novel-toggle)
|
(novel-toggle))
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
(provide 'novel-mode)
|
(provide 'novel-mode)
|
||||||
|
|||||||
Reference in New Issue
Block a user