"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
"<remap> <open-line>" #'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)
"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