]> code.delx.au - gnu-emacs/blobdiff - lisp/terminal.el
* progmodes/python.el (python-info-current-defun): Fix failed
[gnu-emacs] / lisp / terminal.el
index e584cc4a24331ff77e6a97b0623edca4cee4d324..e7903c65061363d3c5e6d82965eb2a569ce132b0 100644 (file)
@@ -1,7 +1,7 @@
 ;;; terminal.el --- terminal emulator for GNU Emacs
 
-;; Copyright (C) 1986, 1987, 1988, 1989, 1993, 1994, 2001, 2002, 2003,
-;;   2004, 2005, 2006, 2007, 2008 Free Software Foundation, Inc.
+;; Copyright (C) 1986-1989, 1993-1994, 2001-2013 Free Software
+;; Foundation, Inc.
 
 ;; Author: Richard Mlynarik <mly@eddie.mit.edu>
 ;; Maintainer: FSF
@@ -50,7 +50,7 @@
 
 
 (defcustom terminal-escape-char ?\C-^
-  "*All characters except for this are passed verbatim through the
+  "All characters except for this are passed verbatim through the
 terminal-emulator.  This character acts as a prefix for commands
 to the emulator program itself.  Type this character twice to send
 it through the emulator.  Type ? after typing it for a list of
@@ -60,7 +60,7 @@ This variable is local to each terminal-emulator buffer."
   :group 'terminal)
 
 (defcustom terminal-scrolling t ;;>> Setting this to t sort-of defeats my whole aim in writing this package...
-  "*If non-nil, the terminal-emulator will losingly `scroll' when output occurs
+  "If non-nil, the terminal-emulator will losingly `scroll' when output occurs
 past the bottom of the screen.  If nil, output will win and `wrap' to the top
 of the screen.
 This variable is local to each terminal-emulator buffer."
@@ -68,7 +68,7 @@ This variable is local to each terminal-emulator buffer."
   :group 'terminal)
 
 (defcustom terminal-more-processing t
-  "*If non-nil, do more-processing.
+  "If non-nil, do more-processing.
 This variable is local to each terminal-emulator buffer."
   :type 'boolean
   :group 'terminal)
@@ -77,7 +77,7 @@ This variable is local to each terminal-emulator buffer."
 ;; and expects to actually see anything, you should probably set this to
 ;; around 400
 (defcustom terminal-redisplay-interval 5000
-  "*Maximum number of characters which will be processed by the
+  "Maximum number of characters which will be processed by the
 terminal-emulator before a screen redisplay is forced.
 Set this to a large value for greater throughput,
 set it smaller for more frequent updates but overall slower
@@ -105,8 +105,8 @@ performance."
     (define-key map [t] 'te-pass-through)
     (define-key map [switch-frame] 'handle-switch-frame)
     (define-key map "\e" terminal-meta-map)
-    ;(define-key map "\C-l"
-    ;  '(lambda () (interactive) (te-pass-through) (redraw-display)))
+    ;;(define-key map "\C-l"
+    ;;  (lambda () (interactive) (te-pass-through) (redraw-display)))
     (setq terminal-map map)))
 
 (defvar terminal-escape-map nil)
@@ -225,7 +225,7 @@ performance."
      ;;  you hit esc key...
      ((and (stringp s)
           (string= s (make-string 1 terminal-escape-char)))
-      (setq last-command-char terminal-escape-char)
+      (setq last-command-event terminal-escape-char)
       (let ((terminal-escape-char -259))
        (te-pass-through)))
 
@@ -326,8 +326,7 @@ Very poor man's file transfer protocol."
             (message "Output logging off."))
     (if (get-buffer name)
        nil
-      (save-excursion
-       (set-buffer (get-buffer-create name))
+      (with-current-buffer (get-buffer-create name)
        (fundamental-mode)
        (buffer-disable-undo (current-buffer))
        (erase-buffer)))
@@ -396,10 +395,10 @@ set it smaller for more frequent updates (but overall slower performance."
 (put 'te-more-break-unread 'suppress-keymap t)
 (defun te-more-break-unread ()
   (interactive)
-  (if (eq last-input-char terminal-escape-char)
+  (if (eq last-input-event terminal-escape-char)
       (call-interactively 'te-escape)
     (message "Continuing from more break (\"%s\" typed, %d chars output pending...)"
-            (single-key-description last-input-char)
+            (single-key-description last-input-event)
             (te-pending-output-length))
     (setq te-more-count 259259)
     (te-more-break-unwind)
@@ -469,29 +468,29 @@ One characters is treated specially:
 the terminal escape character (normally C-^)
 lets you type a terminal emulator command."
   (interactive)
-  (cond ((eq last-input-char terminal-escape-char)
+  (cond ((eq last-input-event terminal-escape-char)
         (call-interactively 'te-escape))
        (t
         ;; Convert `return' to C-m, etc.
-        (if (and (symbolp last-input-char)
-                 (get last-input-char 'ascii-character))
-            (setq last-input-char (get last-input-char 'ascii-character)))
+        (if (and (symbolp last-input-event)
+                 (get last-input-event 'ascii-character))
+            (setq last-input-event (get last-input-event 'ascii-character)))
         ;; Convert meta characters to 8-bit form for transmission.
-        (if (and (integerp last-input-char)
-                 (not (zerop (logand last-input-char ?\M-\^@))))
-            (setq last-input-char (+ 128 (logand last-input-char 127))))
+        (if (and (integerp last-input-event)
+                 (not (zerop (logand last-input-event ?\M-\^@))))
+            (setq last-input-event (+ 128 (logand last-input-event 127))))
         ;; Now ignore all but actual characters.
         ;; (It ought to be possible to send through function
         ;; keys as character sequences if we add a description
         ;; to our termcap entry of what they should look like.)
-        (if (integerp last-input-char)
+        (if (integerp last-input-event)
             (progn
               (and terminal-more-processing (null (cdr te-pending-output))
                    (te-set-more-count nil))
-              (process-send-string te-process (make-string 1 last-input-char))
+              (process-send-string te-process (make-string 1 last-input-event))
               (te-process-output t))
           (message "Function key `%s' ignored"
-                   (single-key-description last-input-char))))))
+                   (single-key-description last-input-event))))))
 
 
 (defun te-set-window-start ()
@@ -610,8 +609,7 @@ together with a command \\<terminal-edit-map>to return to terminal emulation: \\
                               "%-"))
   (set-process-filter te-process
     (function (lambda (process string)
-               (save-excursion
-                 (set-buffer (process-buffer process))
+               (with-current-buffer (process-buffer process)
                  (setq te-pending-output (nconc te-pending-output
                                                 (list string))))
                  (te-update-pending-output-display))))
@@ -874,27 +872,22 @@ move to start of new line, clear to end of line."
 \f
 
 (defun te-filter (process string)
-  (let* ((obuf (current-buffer)))
-    ;; can't use save-excursion, as that preserves point, which we don't want
-    (unwind-protect
-       (progn
-         (set-buffer (process-buffer process))
-         (goto-char te-saved-point)
-         (and (bufferp te-log-buffer)
-              (if (null (buffer-name te-log-buffer))
-                  ;; killed
-                  (setq te-log-buffer nil)
-                (set-buffer te-log-buffer)
-                (goto-char (point-max))
-                (insert-before-markers string)
-                (set-buffer (process-buffer process))))
-         (setq te-pending-output (nconc te-pending-output (list string)))
-         (te-update-pending-output-display)
-         (te-process-output (eq (current-buffer)
-                                (window-buffer (selected-window))))
-         (set-buffer (process-buffer process))
-         (setq te-saved-point (point)))
-      (set-buffer obuf))))
+  (with-current-buffer (process-buffer process)
+    (goto-char te-saved-point)
+    (and (bufferp te-log-buffer)
+         (if (null (buffer-name te-log-buffer))
+             ;; killed
+             (setq te-log-buffer nil)
+           (set-buffer te-log-buffer)
+           (goto-char (point-max))
+           (insert-before-markers string)
+           (set-buffer (process-buffer process))))
+    (setq te-pending-output (nconc te-pending-output (list string)))
+    (te-update-pending-output-display)
+    (te-process-output (eq (current-buffer)
+                           (window-buffer (selected-window))))
+    (set-buffer (process-buffer process))
+    (setq te-saved-point (point))))
 
 ;; (A version of the following comment which might be distractingly offensive
 ;; to some readers has been moved to term-nasty.el.)
@@ -1012,7 +1005,7 @@ move to start of new line, clear to end of line."
        (unwind-protect
            (progn
              (set-process-filter te-process
-                                 (function (lambda (p s)
+                                 (function (lambda (_p s)
                                     (or (eq (length s) 1)
                                         (setq te-pending-output (list 1 s)))
                                     (throw 'char (aref s 0)))))
@@ -1043,8 +1036,7 @@ move to start of new line, clear to end of line."
   (cond ((eq (process-status process) 'run))
        ((null (buffer-name (process-buffer process)))) ;deleted
        (t (let ((b (current-buffer)))
-            (save-excursion
-              (set-buffer (process-buffer process))
+            (with-current-buffer (process-buffer process)
               (setq buffer-read-only nil)
               (fundamental-mode)
               (goto-char (point-max))
@@ -1062,7 +1054,7 @@ move to start of new line, clear to end of line."
 ;; and it's apparently not needed in BSD.
 
 (defcustom explicit-shell-file-name nil
-  "*If non-nil, is file name to use for explicitly requested inferior shell."
+  "If non-nil, is file name to use for explicitly requested inferior shell."
   :type '(choice (const :tag "None" nil)
                 file)
   :group 'terminal)
@@ -1097,27 +1089,26 @@ This function calls the value of terminal-mode-hook if that exists
 and is non-nil after the terminal buffer has been set up and the
 subprocess started."
   (interactive
-    (cons (save-excursion
-           (set-buffer (get-buffer-create "*terminal*"))
-           (buffer-name (if (or (not (boundp 'te-process))
-                                (null te-process)
-                                (not (eq (process-status te-process)
-                                         'run)))
-                            (current-buffer)
-                          (generate-new-buffer "*terminal*"))))
-         (append
-           (let* ((default-s
-                    ;; Default shell is same thing M-x shell uses.
-                    (or explicit-shell-file-name
-                        (getenv "ESHELL")
-                        (getenv "SHELL")
-                        "/bin/sh"))
-                  (s (read-string
-                      (format "Run program in emulator (default %s): "
-                              default-s))))
-             (if (equal s "")
-                 (list default-s '())
-               (te-parse-program-and-args s))))))
+   (cons (with-current-buffer (get-buffer-create "*terminal*")
+           (buffer-name (if (or (not (boundp 'te-process))
+                                (null te-process)
+                                (not (eq (process-status te-process)
+                                         'run)))
+                            (current-buffer)
+                          (generate-new-buffer "*terminal*"))))
+         (append
+          (let* ((default-s
+                   ;; Default shell is same thing M-x shell uses.
+                   (or explicit-shell-file-name
+                       (getenv "ESHELL")
+                       (getenv "SHELL")
+                       "/bin/sh"))
+                 (s (read-string
+                     (format "Run program in emulator (default %s): "
+                             default-s))))
+            (if (equal s "")
+                (list default-s '())
+              (te-parse-program-and-args s))))))
   (switch-to-buffer buffer)
   (if (null width) (setq width (- (window-width (selected-window)) 1)))
   (if (null height) (setq height (- (window-height (selected-window)) 1)))
@@ -1294,7 +1285,7 @@ in the directory specified by `te-terminfo-directory'."
        ;; Rename it to the desired name.
        ;; We use this roundabout approach
        ;; to avoid any risk of writing a name that
-       ;; was michievouslyt set up as a symlink.
+       ;; was mischievously set up as a symlink.
        (rename-file temp-file file-name))
       ;; Now compile that source to make the binary that the
       ;; programs actually use.
@@ -1336,7 +1327,7 @@ in the directory specified by `te-terminfo-directory'."
          "im=:ei=:dm=:ed=:mi:do=^p^j:nl=^p^j:bs:")
 )
 
-(defun te-tic-sentinel (proc state-change)
+(defun te-tic-sentinel (_proc state-change)
   "If tic has finished, delete the .tif file"
   (if (equal state-change "finished
 ")
@@ -1344,5 +1335,4 @@ in the directory specified by `te-terminfo-directory'."
 
 (provide 'terminal)
 
-;; arch-tag: 0ae1d7d7-90ef-4566-a531-6e7ff8c79b2f
 ;;; terminal.el ends here