Revision: miles@gnu.org--gnu-2005/emacs--cvs-trunk--0--patch-419
[bpt/emacs.git] / lisp / macros.el
index 72ba3f1..41024e4 100644 (file)
@@ -1,6 +1,6 @@
 ;;; macros.el --- non-primitive commands for keyboard macros
 
-;; Copyright (C) 1985, 86, 87, 92, 94, 95 Free Software Foundation, Inc.
+;; Copyright (C) 1985, 86, 87, 92, 94, 95, 04 Free Software Foundation, Inc.
 
 ;; Maintainer: FSF
 ;; Keywords: abbrev
@@ -63,7 +63,15 @@ bindings.
 
 To save a kbd macro, visit a file of Lisp code such as your `~/.emacs',
 use this command, and then save the file."
-  (interactive "CInsert kbd macro (name): \nP")
+  (interactive (list (intern (completing-read "Insert kbd macro (name): "
+                                             obarray
+                                             (lambda (elt)
+                                               (and (fboundp elt)
+                                                    (or (stringp (symbol-function elt))
+                                                        (vectorp (symbol-function elt))
+                                                        (get elt 'kmacro))))
+                                             t))
+                    current-prefix-arg))
   (let (definition)
     (if (string= (symbol-name macroname) "")
        (progn
@@ -151,7 +159,7 @@ use this command, and then save the file."
                     (cond ((= char ?\\)
                            (insert "\\\\"))
                            ((= char ?\")
-                            (insert "\\\""))   
+                            (insert "\\\""))
                           ((= char ?\;)
                            (insert "\\;"))
                           ((= char 127)
@@ -240,8 +248,9 @@ Possibilities: \\<query-replace-map>
 
 ;;;###autoload
 (defun apply-macro-to-region-lines (top bottom &optional macro)
-  "For each complete line between point and mark, move to the beginning
-of the line, and run the last keyboard macro.
+  "Apply last keyboard macro to all lines in the region.
+For each line that begins in the region, move to the beginning of
+the line, and run the last keyboard macro.
 
 When called from lisp, this function takes two arguments TOP and
 BOTTOM, describing the current region.  TOP must be before BOTTOM.
@@ -277,8 +286,7 @@ and write a macro to massage a word into a table entry:
     \\C-x )
 
 and then select the region of un-tablified names and use
-`\\[apply-macro-to-region-lines]' to build the table from the names.
-"
+`\\[apply-macro-to-region-lines]' to build the table from the names."
   (interactive "r")
   (or macro
       (progn
@@ -286,10 +294,7 @@ and then select the region of un-tablified names and use
            (error "No keyboard macro has been defined"))
        (setq macro last-kbd-macro)))
   (save-excursion
-    (let ((end-marker (progn
-                       (goto-char bottom)
-                       (beginning-of-line)
-                       (point-marker)))
+    (let ((end-marker (copy-marker bottom))
          next-line-marker)
       (goto-char top)
       (if (not (bolp))