From: Robert Pluim Date: Tue, 23 Jul 2024 09:33:44 +0000 (+0200) Subject: Improve 'emacs-news-view-mode' menus and bindings X-Git-Tag: archive/raspbian/1%30.1+1-3+rpi1^2~2^2~20^2~642 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=de9f9add1383c6154805ad4b3738af4c896522e4;p=emacs.git Improve 'emacs-news-view-mode' menus and bindings * lisp/textmodes/emacs-news-mode.el (emacs-news-mode-map): Move non-editing commands from here... (emacs-news-common-map): ... to here. (emacs-news-view-mode): Remove hard-coded 'special-mode' bindings. (emacs-news-view-mode-map): Inherit from 'special-mode-map' and 'emacs-news-common-map' here instead. (emacs-news-mode--menu-common-1): New defconst for menu items common to 'news-mode' and 'news-view-mode'. (emacs-news-mode--menu-common-2): Second new defconst for common items. (emacs-news-mode-menu): Use them. (emacs-news-view-mode-menu): New menu, which omits the buffer editing commands. This builds on the fix for Bug#72080. --- diff --git a/lisp/textmodes/emacs-news-mode.el b/lisp/textmodes/emacs-news-mode.el index ca897ec4567..edeb1540feb 100644 --- a/lisp/textmodes/emacs-news-mode.el +++ b/lisp/textmodes/emacs-news-mode.el @@ -47,40 +47,53 @@ "C-c C-b" #'outline-backward-same-level "C-c C-n" #'outline-next-visible-heading "C-c C-p" #'outline-previous-visible-heading - "C-c C-u" #'outline-up-heading) - -(defvar-keymap emacs-news-mode-map - :parent emacs-news-common-map + "C-c C-u" #'outline-up-heading + ;; `news-mode' motion commands. "C-c C-s" #'emacs-news-next-untagged-entry "C-c C-r" #'emacs-news-previous-untagged-entry - "C-c C-t" #'emacs-news-cycle-tag - "C-c C-d" #'emacs-news-delete-temporary-markers "C-c C-g" #'emacs-news-goto-section "C-c C-j" #'emacs-news-find-heading - "C-c C-e" #'emacs-news-count-untagged-entries + "C-c C-e" #'emacs-news-count-untagged-entries) + +(defvar-keymap emacs-news-mode-map + :parent emacs-news-common-map "C-x C-q" #'emacs-news-view-mode + ;; `news-mode' editing commands. + "C-c C-t" #'emacs-news-cycle-tag + "C-c C-d" #'emacs-news-delete-temporary-markers " " #'emacs-news-open-line) +(defconst emacs-news-mode--menu-common-1 + '(["Next Untagged" emacs-news-next-untagged-entry :help "Go to next untagged entry"] + ["Previous Untagged" emacs-news-previous-untagged-entry :help "Go to previous untagged entry"] + ["Count Untagged" emacs-news-count-untagged-entries :help "Count the number of untagged entries"] + "--")) + +(defconst emacs-news-mode--menu-common-2 + '(["Goto Section" emacs-news-goto-section :help "Prompt for section and go to it"] + ["Goto Heading" emacs-news-find-heading :help "Prompt for heading and go to it"] + "--")) + (easy-menu-define emacs-news-mode-menu emacs-news-mode-map "Menu for `emacs-news-mode'." - '("News" - ["Next Untagged" emacs-news-next-untagged-entry :help "Go to next untagged entry"] - ["Previous Untagged" emacs-news-previous-untagged-entry :help "Go to previous untagged entry"] - ["Count Untagged" emacs-news-count-untagged-entries :help "Count the number of untagged entries"] + `("News" + ,@emacs-news-mode--menu-common-1 ["Cycle Tag" emacs-news-cycle-tag :help "Cycle documentation tag of current entry"] ["Delete Tags" emacs-news-delete-temporary-markers :help "Delete all documentation tags in buffer"] "--" - ["Goto Section" emacs-news-goto-section :help "Prompt for section and go to it"] - ["Goto Heading" emacs-news-find-heading :help "Prompt for heading and go to it"] - "--" + ,@emacs-news-mode--menu-common-2 ["Enter View Mode" emacs-news-view-mode :help "Enter view-only mode"])) -(defvar emacs-news-view-mode-map - ;; This is defined this way instead of inheriting because we're - ;; deriving the mode from `special-mode' and want the keys from there. - (let ((map (copy-keymap emacs-news-common-map))) - (keymap-set map "C-x C-q" #'emacs-news-mode) - map)) +(defvar-keymap emacs-news-view-mode-map + :parent (make-composed-keymap emacs-news-common-map special-mode-map) + "C-x C-q" #'emacs-news-mode) + +(easy-menu-define emacs-news-view-mode-menu emacs-news-view-mode-map + "Menu for `emacs-news-view-mode'." + `("News" + ,@emacs-news-mode--menu-common-1 + ,@emacs-news-mode--menu-common-2 + ["Enter NEWS Mode" emacs-news-mode :help "Enter NEWS mode"])) (defvar emacs-news-mode-font-lock-keywords `(("^---$" 0 'emacs-news-does-not-need-documentation) @@ -111,17 +124,7 @@ "Major mode for viewing the Emacs NEWS file." (setq buffer-read-only t) (emacs-news--buttonize) - (button-mode) - ;; Bind useful browsing keys. - (keymap-local-set "q" 'quit-window) - (keymap-local-set "SPC" 'scroll-up-command) - (keymap-local-set "S-SPC" 'scroll-down-command) - (keymap-local-set "DEL" 'scroll-down-command) - (keymap-local-set "?" 'describe-mode) - (keymap-local-set "h" 'describe-mode) - (keymap-local-set ">" 'end-of-buffer) - (keymap-local-set "<" 'beginning-of-buffer) - (keymap-local-set "g" 'revert-buffer)) + (button-mode)) (defun emacs-news--fill-paragraph (&optional justify) (cond