(define-key map "\r" 'te-more-break-advance-one-line)
(setq terminal-more-break-map map)))
-
+
\f
;;; Pacify the byte compiler
(defvar te-process nil)
;; Required to support terminfo systems
(defconst te-terminal-name-prefix "emacs-virtual")
(defvar te-terminal-name nil)
-(defvar te-terminfo-systems '(hpux usg-unix-v)
-"List of system types that support terminfo instead of termcap")
-
\f
;;;; escape map
(defun te-escape ()
(interactive)
- (let (s
- (local (current-local-map))
- (global (current-global-map)))
+ (let (s
+ (local (current-local-map))
+ (global (current-global-map)))
(unwind-protect
- (progn
- (use-global-map terminal-escape-map)
- (use-local-map terminal-escape-map)
- (setq s (read-key-sequence
- (if prefix-arg
- (format "Emacs Terminal escape> %d "
- (prefix-numeric-value prefix-arg))
- "Emacs Terminal escape> "))))
+ (progn
+ (use-global-map terminal-escape-map)
+ (use-local-map terminal-escape-map)
+ (setq s (read-key-sequence
+ (if current-prefix-arg
+ (format "Emacs Terminal escape> %d "
+ (prefix-numeric-value current-prefix-arg))
+ "Emacs Terminal escape> "))))
(use-global-map global)
(use-local-map local))
+
(message "")
- (cond ((string= s (make-string 1 terminal-escape-char))
- (setq last-command-char terminal-escape-char)
- (let ((terminal-escape-char -259))
- (te-pass-through)))
- ((setq s (lookup-key terminal-escape-map s))
- (call-interactively s)))))
+
+ (cond
+ ;; Certain keys give vector notation, like [escape] when
+ ;; you hit esc key...
+ ((and (stringp s)
+ (string= s (make-string 1 terminal-escape-char)))
+ (setq last-command-char terminal-escape-char)
+ (let ((terminal-escape-char -259))
+ (te-pass-through)))
+
+ ((setq s (lookup-key terminal-escape-map s))
+ (call-interactively s)))
+
+ ))
+
(defun te-escape-help ()
"Provide help on commands available after terminal-escape-char is typed."
(setq l (cdr l))))
nil)))))
-
+
(defun te-escape-extended-command ()
(interactive)
"Discontinue output log."
(interactive)
(te-set-output-log nil))
-
+
(defun te-toggle (sym arg)
(set sym (cond ((not (numberp arg)) arg)
(cond ((eq last-input-char terminal-escape-char)
(call-interactively 'te-escape))
(t
- ;; Convert `return' to C-m, etc.
+ ;; 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)))
;; Convert meta characters to 8-bit form for transmission.
(if (and (integerp last-input-char)
- (not (zerop (logand last-input-char (lsh 1 23)))))
+ (not (zerop (logand last-input-char ?\M-\^@))))
(setq last-input-char (+ 128 (logand last-input-char 127))))
;; Now ignore all but actual characters.
;; (It ought to be possible to send through function
"Start editing the terminal emulator buffer with ordinary Emacs commands."
(interactive)
(terminal-edit-mode)
- (set-buffer-modified-p (buffer-modified-p))
+ (force-mode-line-update)
;; Make mode line update.
(if (eq (key-binding "\C-c\C-c") 'terminal-cease-edit)
(message "Editing: Type C-c C-c to return to Terminal")
(set-process-filter te-process te-more-old-filter)
(goto-char te-more-old-point)
(setq mode-line-format te-more-old-mode-line-format)
- (set-buffer-modified-p (buffer-modified-p))
+ (force-mode-line-update)
(let ((buffer-read-only nil))
(cond ((eobp))
(terminal-more-break-insertion
(forward-char 1) (end-of-line)
(delete-region (- (point) te-width) (point))
(insert-char ?\ te-width))))
-
+
;; ^p ^l
(defun te-clear-screen ()
;; (A version of the following comment which might be distractingly offensive
;; to some readers has been moved to term-nasty.el.)
;; unix lacks ITS-style tty control...
-(defun te-process-output (preemptable)
+(defun te-process-output (preemptible)
;;>> There seems no good reason to ever disallow preemption
- (setq preemptable t)
+ (setq preemptible t)
(catch 'te-process-output
(let ((buffer-read-only nil)
(string nil) ostring start char (matchpos nil))
;; (Perhaps some operating system or
;; other is completely incompetent...)
(?\C-m . te-beginning-of-line)
- (?\C-g . te-beep)
- (?\C-h . te-backward-char)
- (?\C-i . te-output-tab))))
+ (?\C-g . te-beep)
+ (?\C-h . te-backward-char)
+ (?\C-i . te-output-tab))))
'te-losing-unix)))
(te-redisplay-if-necessary 1))
- (and preemptable
+ (and preemptible
(input-pending-p)
- ;; preemptable output! Oh my!!
+ ;; preemptible output! Oh my!!
(throw 'te-process-output t)))))
;; We must update window-point in every window displaying our buffer
(let* ((s (selected-window))
(defun te-update-pending-output-display ()
(if (null (cdr te-pending-output))
- (setq te-pending-output-info "")
+ (setq te-pending-output-info "")
(let ((length (te-pending-output-length)))
(if (< length 1500)
(setq te-pending-output-info "")
(setq te-pending-output-info (format "(%dK chars output pending) "
(/ (+ length 512) 1024))))))
- ;; update mode line
- (set-buffer-modified-p (buffer-modified-p)))
+ (force-mode-line-update))
\f
(defun te-sentinel (process message)
(if (null height) (setq height (- (window-height (selected-window)) 1)))
(terminal-mode)
(setq te-width width te-height height)
- (setq te-terminal-name (concat te-terminal-name-prefix "-" te-width
+ (setq te-terminal-name (concat te-terminal-name-prefix "-" te-width
te-height))
(setq mode-line-buffer-identification
(list (format "Emacs terminal %dx%d: %%b " te-width te-height)
(format "%s; exec %s"
te-stty-string
(mapconcat 'te-quote-arg-for-sh
- (cons program args) " "))))
+ (cons program args) " "))))
(set-process-filter te-process 'te-filter)
(set-process-sentinel te-process 'te-sentinel))
(error (fundamental-mode)
(concat "\"" harder "\"")))))
(defun te-create-terminfo ()
- "Create and compile a terminfo entry for the virtual terminal. This is kept
+ "Create and compile a terminfo entry for the virtual terminal. This is kept
in the /tmp directory"
- (if (and (member system-type te-terminfo-systems)
- (not (file-exists-p (concat "/tmp/"
+ (if (and system-uses-terminfo
+ (not (file-exists-p (concat "/tmp/"
(substring te-terminal-name-prefix 0 1)
"/" te-terminal-name))))
- (let ( (terminfo
- (concat
+ (let ( (terminfo
+ (concat
(format "%s,mir, xon,cols#%d, lines#%d,"
te-terminal-name te-width te-height)
"bel=^P^G, clear=^P\\f, cr=^P^A, cub1=^P^B, cud1=^P\\n,"
(write-file file-name)
(kill-buffer nil)
)
- (let ( (process-environment
+ (let ( (process-environment
(cons (concat "TERMINFO=" "/tmp")
process-environment)) )
(set-process-sentinel (start-process "tic" nil "tic" file-name)