]> git.eshelyaron.com Git - emacs.git/commitdiff
command-history-mode inherits from special-mode
authorSam Steingold <sds@gnu.org>
Tue, 20 Feb 2018 20:30:51 +0000 (15:30 -0500)
committerSam Steingold <sds@gnu.org>
Tue, 20 Feb 2018 20:31:07 +0000 (15:31 -0500)
(command-history-mode-map): Add `special-mode-map' to parents.
(command-history-mode): Parent is `special-mode', not
`fundamental-mode', set `revert-buffer-function'.
(command-history-revert): Define for `revert-buffer-function'.

lisp/chistory.el

index d557c9f4eee76cbe651178daf47731823339594a..b4a8b6e72f905f1803d46884cbfdd36f43dd9b49 100644 (file)
@@ -125,8 +125,8 @@ The buffer is left in Command History mode."
   'command-history-mode-map "24.1")
 (defvar command-history-mode-map
   (let ((map (make-sparse-keymap)))
-    (set-keymap-parent map lisp-mode-shared-map)
-    (suppress-keymap map)
+    (set-keymap-parent map (make-composed-keymap lisp-mode-shared-map
+                                                 special-mode-map))
     (define-key map "x" 'command-history-repeat)
     (define-key map "\n" 'next-line)
     (define-key map "\r" 'next-line)
@@ -134,20 +134,23 @@ The buffer is left in Command History mode."
     map)
   "Keymap for `command-history-mode'.")
 
-(define-derived-mode command-history-mode fundamental-mode "Command History"
+(define-derived-mode command-history-mode special-mode "Command History"
   "Major mode for listing and repeating recent commands.
 
 Keybindings:
 \\{command-history-mode-map}"
   (lisp-mode-variables nil)
-  (set-syntax-table emacs-lisp-mode-syntax-table)
-  (setq buffer-read-only t))
+  (set (make-local-variable 'revert-buffer-function) 'command-history-revert)
+  (set-syntax-table emacs-lisp-mode-syntax-table))
 
 (defcustom command-history-hook nil
   "If non-nil, its value is called on entry to `command-history-mode'."
   :type 'hook
   :group 'chistory)
 
+(defun command-history-revert (_ignore-auto _noconfirm)
+  (list-command-history))
+
 (defun command-history-repeat ()
   "Repeat the command shown on the current line.
 The buffer for that command is the previous current buffer."