Initial revision
[bpt/emacs.git] / lisp / chistory.el
index 620288f..3685e01 100644 (file)
@@ -1,13 +1,15 @@
 ;;; 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.
@@ -34,19 +40,16 @@ command history is offered.  The form is placed in the minibuffer for
 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)
@@ -60,13 +63,15 @@ editing and the result is evaluated."
   '(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
@@ -79,8 +84,7 @@ from the command history."
       (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 ()
@@ -146,7 +150,7 @@ The buffer for that command is the previous current buffer."
                (beginning-of-line)
                (read (current-buffer)))
            (set-buffer
-            (cdr (buffer-list)))))))
+            (car (cdr (buffer-list))))))))
 
 ;;;###autoload
 (defun command-history-mode ()