]> code.delx.au - gnu-emacs/blobdiff - lisp/macros.el
Add new keywords of Python 3.5
[gnu-emacs] / lisp / macros.el
index 66cc4bba28c7899d889126fd97078855f1971fb1..f7a4732d6016577533ca932c40462cc4671998e5 100644 (file)
@@ -1,17 +1,18 @@
 ;;; macros.el --- non-primitive commands for keyboard macros
 
-;; Copyright (C) 1985, 1986, 1987, 1992, 1994, 1995, 2001, 2002, 2003,
-;;   2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+;; Copyright (C) 1985-1987, 1992, 1994-1995, 2001-2016 Free Software
+;; Foundation, Inc.
 
-;; Maintainer: FSF
+;; Maintainer: emacs-devel@gnu.org
 ;; Keywords: abbrev
+;; Package: emacs
 
 ;; This file is part of GNU Emacs.
 
-;; GNU Emacs is free software; you can redistribute it and/or modify
+;; 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 2, or (at your option)
-;; any later version.
+;; the Free Software Foundation, either version 3 of the License, or
+;; (at your option) any later version.
 
 ;; GNU Emacs is distributed in the hope that it will be useful,
 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
@@ -19,9 +20,7 @@
 ;; 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, Inc., 51 Franklin Street, Fifth Floor,
-;; Boston, MA 02110-1301, USA.
+;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.
 
 ;;; Commentary:
 
@@ -40,19 +39,20 @@ The symbol's function definition becomes the keyboard macro string.
 Such a \"function\" cannot be called from Lisp, but it is a valid editor command."
   (interactive "SName for last kbd macro: ")
   (or last-kbd-macro
-      (error "No keyboard macro defined"))
+      (user-error "No keyboard macro defined"))
   (and (fboundp symbol)
        (not (stringp (symbol-function symbol)))
        (not (vectorp (symbol-function symbol)))
-       (error "Function %s is already defined and not a keyboard macro"
+       (user-error "Function %s is already defined and not a keyboard macro"
              symbol))
   (if (string-equal symbol "")
-      (error "No command name given"))
+      (user-error "No command name given"))
   (fset symbol last-kbd-macro))
 
 ;;;###autoload
 (defun insert-kbd-macro (macroname &optional keys)
-  "Insert in buffer the definition of kbd macro NAME, as Lisp code.
+  "Insert in buffer the definition of kbd macro MACRONAME, as Lisp code.
+MACRONAME should be a symbol.
 Optional second arg KEYS means also record the keys it is on
 \(this is the prefix argument, when calling interactively).
 
@@ -128,51 +128,20 @@ use this command, and then save the file."
                     (delete-region (point) (1+ (point)))
                     (insert "\\M-\\C-?"))))))
       (if (vectorp definition)
-         (let ((len (length definition)) (i 0) char mods)
+         (let ((len (length definition)) (i 0) char)
            (while (< i len)
              (insert (if (zerop i) ?\[ ?\s))
              (setq char (aref definition i)
                    i (1+ i))
-             (cond ((not (numberp char))
-                    (prin1 char (current-buffer)))
-                   (t
-                    (insert "?")
-                    (setq mods (event-modifiers char)
-                          char (event-basic-type char))
-                    (while mods
-                      (cond ((eq (car mods) 'control)
-                             (insert "\\C-"))
-                            ((eq (car mods) 'meta)
-                             (insert "\\M-"))
-                            ((eq (car mods) 'hyper)
-                             (insert "\\H-"))
-                            ((eq (car mods) 'super)
-                             (insert "\\s-"))
-                            ((eq (car mods) 'alt)
-                             (insert "\\A-"))
-                            ((and (eq (car mods) 'shift)
-                                  (>= char ?a)
-                                  (<= char ?z))
-                             (setq char (upcase char)))
-                            ((eq (car mods) 'shift)
-                             (insert "\\S-")))
-                      (setq mods (cdr mods)))
-                    (cond ((= char ?\\)
-                           (insert "\\\\"))
-                           ((= char ?\")
-                            (insert "\\\""))
-                          ((= char ?\;)
-                           (insert "\\;"))
-                          ((= char 127)
-                           (insert "\\C-?"))
-                          ((< char 127)
-                           (insert char))
-                          (t (insert "\\" (format "%o" char)))))))
+             (if (not (numberp char))
+                  (prin1 char (current-buffer))
+                (princ (prin1-char char) (current-buffer))))
            (insert ?\]))
        (prin1 definition (current-buffer))))
     (insert ")\n")
     (if keys
-       (let ((keys (where-is-internal macroname '(keymap))))
+       (let ((keys (where-is-internal (symbol-function macroname)
+                                      '(keymap))))
          (while keys
            (insert "(global-set-key ")
            (prin1 (car keys) (current-buffer))
@@ -197,7 +166,7 @@ Your options are: \\<query-replace-map>
   (interactive "P")
   (or executing-kbd-macro
       defining-kbd-macro
-      (error "Not defining or executing kbd macro"))
+      (user-error "Not defining or executing kbd macro"))
   (if flag
       (let (executing-kbd-macro defining-kbd-macro)
        (recursive-edit))
@@ -243,8 +212,7 @@ Possibilities: \\<query-replace-map>
 \\[exit]       Stop the macro entirely right now.
 \\[recenter]   Redisplay the screen, then ask again.
 \\[edit]       Enter recursive edit; ask again when you exit from that."))
-                    (save-excursion
-                      (set-buffer standard-output)
+                    (with-current-buffer standard-output
                       (help-mode)))))))))))
 
 ;;;###autoload
@@ -292,7 +260,7 @@ and then select the region of un-tablified names and use
   (or macro
       (progn
        (if (null last-kbd-macro)
-           (error "No keyboard macro has been defined"))
+           (user-error "No keyboard macro has been defined"))
        (setq macro last-kbd-macro)))
   (save-excursion
     (let ((end-marker (copy-marker bottom))
@@ -308,7 +276,7 @@ and then select the region of un-tablified names and use
          (set-marker next-line-marker (point)))
        (save-excursion
          (let ((mark-active nil))
-           (execute-kbd-macro (or macro last-kbd-macro)))))
+           (execute-kbd-macro macro))))
       (set-marker end-marker nil)
       (set-marker next-line-marker nil))))
 
@@ -316,5 +284,4 @@ and then select the region of un-tablified names and use
 
 (provide 'macros)
 
-;;; arch-tag: 346ed1a5-1220-4bc8-b533-961ee704361f
 ;;; macros.el ends here