;;; chistory.el --- list command history
;; Copyright (C) 1985 Free Software Foundation, Inc.
-;; Principal author K. Shane Hartman
+
+;; Author: K. Shane Hartman
+;; Maintainer: FSF
;; This file is part of GNU Emacs.
;; GNU Emacs is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
-;; the Free Software Foundation; either version 1, or (at your option)
+;; the Free Software Foundation; either version 2, or (at your option)
;; any later version.
;; GNU Emacs is distributed in the hope that it will be useful,
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
-;; along with GNU Emacs; see the file COPYING. If not, write to
-;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;; along with GNU Emacs; see the file COPYING. If not, write to the
+;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+;; Boston, MA 02111-1307, USA.
+;;; Commentary:
;; This really has nothing to do with list-command-history per se, but
-;; its a nice alternative to C-x ESC (repeat-complex-command) and
+;; its a nice alternative to C-x ESC ESC (repeat-complex-command) and
;; functions as a lister if given no pattern. It's not important
;; enough to warrant a file of its own.
+;;; Code:
+
;;;###autoload
(defun repeat-matching-complex-command (&optional pattern)
"Edit and re-evaluate complex command with name matching PATTERN.
editing and the result is evaluated."
(interactive "sRedo Command (regexp): ")
(if pattern
- (if (equal (setq pattern
- (substring pattern
- (or (string-match "[ \t]*[^ \t]" pattern)
- (length pattern))))
- "")
- (setq pattern nil)))
+ (if (string-match "[^ \t]" pattern)
+ (setq pattern (substring pattern (match-beginning 0)))
+ (setq pattern nil)))
(let ((history command-history)
(temp)
(what))
(while (and history (not what))
(setq temp (car history))
(if (and (or (not pattern) (string-match pattern (symbol-name (car temp))))
- (y-or-n-p (format "Redo %s? " (setq temp (prin1-to-string temp)))))
+ (y-or-n-p (format "Redo %S? " temp)))
(setq what (car history))
(setq history (cdr history))))
(if (not what)
'(command-history-mode
list-command-history
electric-command-history)
- "*A list of symbols. If `default-list-command-history-filter' is
-given a list whose car is an element of this list, then it will return
-non-nil (indicating the list should be discarded from the history).
+ "*A list of symbols to be ignored by `default-command-history-filter'.
+It that function is given a list whose car is an element of this list,
+then it will return non-nil (indicating the list should be discarded from
+the history).
Initially, all commands related to the command history are discarded.")
(defvar list-command-history-filter 'default-command-history-filter
- "If non-nil, should be the name of a function of one argument.
+ "Predicate to test which commands should be excluded from the history listing.
+If non-nil, should be the name of a function of one argument.
It is passed each element of the command history when
\\[list-command-history] is called. If the filter returns non-nil for
some element, that element is excluded from the history listing. The
(memq (car frob) default-command-history-filter-garbage)))
(defvar list-command-history-max 32
- "*If non-nil, should be a positive number which specifies the maximum
-length of the Command History listing produced by `list-command-history'.")
+ "*If non-nil, maximum length of the listing produced by `list-command-history'.")
;;;###autoload
(defun list-command-history ()
(beginning-of-line)
(read (current-buffer)))
(set-buffer
- (cdr (buffer-list)))))))
+ (car (cdr (buffer-list))))))))
;;;###autoload
(defun command-history-mode ()