]> code.delx.au - gnu-emacs/blobdiff - lisp/terminal.el
* progmodes/python.el (python-info-current-defun): Fix current
[gnu-emacs] / lisp / terminal.el
index d79ea1a47ef1aee5aac9f93266dec5716c4604d5..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, 2009 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
@@ -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)
@@ -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))
@@ -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