[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] Changes to emacs/lisp/term.el
From: |
Richard M. Stallman |
Subject: |
[Emacs-diffs] Changes to emacs/lisp/term.el |
Date: |
Tue, 04 Feb 2003 06:43:03 -0500 |
Index: emacs/lisp/term.el
diff -c emacs/lisp/term.el:1.47 emacs/lisp/term.el:1.48
*** emacs/lisp/term.el:1.47 Tue Apr 16 14:50:07 2002
--- emacs/lisp/term.el Tue Feb 4 06:43:01 2003
***************
*** 688,694 ****
(defvar term-ansi-at-save-anon nil)
(defvar term-ansi-current-bold 0)
(defvar term-ansi-current-color 0)
! (defvar term-ansi-face-alredy-done 0)
(defvar term-ansi-current-bg-color 0)
(defvar term-ansi-current-underline 0)
(defvar term-ansi-current-highlight 0)
--- 688,694 ----
(defvar term-ansi-at-save-anon nil)
(defvar term-ansi-current-bold 0)
(defvar term-ansi-current-color 0)
! (defvar term-ansi-face-already-done 0)
(defvar term-ansi-current-bg-color 0)
(defvar term-ansi-current-underline 0)
(defvar term-ansi-current-highlight 0)
***************
*** 697,707 ****
(defvar term-ansi-default-fg 0)
(defvar term-ansi-default-bg 0)
(defvar term-ansi-current-temp 0)
- (defvar term-ansi-fg-faces-vector nil)
- (defvar term-ansi-bg-faces-vector nil)
- (defvar term-ansi-inv-fg-faces-vector nil)
- (defvar term-ansi-inv-bg-faces-vector nil)
- (defvar term-ansi-reverse-faces-vector nil)
;;; Four should be enough, if you want more, just add. -mm
(defvar term-terminal-more-parameters 0)
--- 697,702 ----
***************
*** 712,829 ****
;;; faces -mm
! (defmacro term-ignore-error (&rest body)
! `(condition-case nil
! (progn ,@body)
! (error nil)))
!
! (defvar term-default-fg-color nil)
! (defvar term-default-bg-color nil)
!
! (when (fboundp 'make-face)
! ;;; --- Simple faces ---
! (copy-face 'default 'term-default)
! (make-face 'term-default-fg)
! (make-face 'term-default-bg)
! (make-face 'term-default-fg-inv)
! (make-face 'term-default-bg-inv)
! (make-face 'term-bold)
! (make-face 'term-underline)
! (make-face 'term-invisible)
! (make-face 'term-invisible-inv)
!
! (term-ignore-error
! (set-face-foreground 'term-default-fg term-default-fg-color))
! (term-ignore-error
! (set-face-background 'term-default-bg term-default-bg-color))
!
! (term-ignore-error
! (set-face-foreground 'term-default-fg-inv term-default-bg-color))
! (term-ignore-error
! (set-face-background 'term-default-bg-inv term-default-fg-color))
!
! (term-ignore-error
! (set-face-background 'term-invisible term-default-bg-color))
!
! (term-ignore-error
! (set-face-background 'term-invisible-inv term-default-fg-color))
!
! ;; Set the colors of the new faces.
! (term-ignore-error
! (make-face-bold 'term-bold))
!
! (term-ignore-error
! (set-face-underline-p 'term-underline t))
!
! ;;; --- Fg faces ---
! (make-face 'term-black)
! (make-face 'term-red)
! (make-face 'term-green)
! (make-face 'term-yellow)
! (make-face 'term-blue)
! (make-face 'term-magenta)
! (make-face 'term-cyan)
! (make-face 'term-white)
!
! (term-ignore-error
! (set-face-foreground 'term-black "black"))
! (term-ignore-error
! (set-face-foreground 'term-red "red"))
! (term-ignore-error
! (set-face-foreground 'term-green "green"))
! (term-ignore-error
! (set-face-foreground 'term-yellow "yellow"))
! (term-ignore-error
! (set-face-foreground 'term-blue "blue"))
! (term-ignore-error
! (set-face-foreground 'term-magenta "magenta"))
! (term-ignore-error
! (set-face-foreground 'term-cyan "cyan"))
! (term-ignore-error
! (set-face-foreground 'term-white "white"))
!
! ;;; --- Bg faces ---
! (make-face 'term-blackbg)
! (make-face 'term-redbg)
! (make-face 'term-greenbg)
! (make-face 'term-yellowbg)
! (make-face 'term-bluebg)
! (make-face 'term-magentabg)
! (make-face 'term-cyanbg)
! (make-face 'term-whitebg)
!
! (term-ignore-error
! (set-face-background 'term-blackbg "black"))
! (term-ignore-error
! (set-face-background 'term-redbg "red"))
! (term-ignore-error
! (set-face-background 'term-greenbg "green"))
! (term-ignore-error
! (set-face-background 'term-yellowbg "yellow"))
! (term-ignore-error
! (set-face-background 'term-bluebg "blue"))
! (term-ignore-error
! (set-face-background 'term-magentabg "magenta"))
! (term-ignore-error
! (set-face-background 'term-cyanbg "cyan"))
! (term-ignore-error
! (set-face-background 'term-whitebg "white")))
!
! (defvar ansi-term-fg-faces-vector
! [term-default-fg term-black term-red term-green term-yellow term-blue
! term-magenta term-cyan term-white])
!
! (defvar ansi-term-bg-faces-vector
! [term-default-bg term-blackbg term-redbg term-greenbg term-yellowbg
! term-bluebg term-magentabg term-cyanbg term-whitebg])
!
! (defvar ansi-term-inv-bg-faces-vector
! [term-default-fg-inv term-black term-red term-green term-yellow term-blue
! term-magenta term-cyan term-white])
!
! (defvar ansi-term-inv-fg-faces-vector
! [term-default-bg-inv term-blackbg term-redbg term-greenbg term-yellowbg
! term-bluebg term-magentabg term-cyanbg term-whitebg])
;;; Inspiration came from comint.el -mm
(defvar term-buffer-maximum-size 2048
--- 707,725 ----
;;; faces -mm
! (defcustom term-default-fg-color nil
! "Default color for foreground in `term'."
! :group 'term
! :type 'string)
!
! (defcustom term-default-bg-color nil
! "Default color for background in `term'."
! :group 'term
! :type 'string)
!
! (defvar ansi-term-color-vector
! [nil "black" "red" "green" "yellow" "blue"
! "magenta" "cyan" "white"])
;;; Inspiration came from comint.el -mm
(defvar term-buffer-maximum-size 2048
***************
*** 832,838 ****
Notice that a setting of 0 means 'don't truncate anything'. This variable
is buffer-local.")
;;;
!
(term-if-xemacs
(defvar term-terminal-menu
'("Terminal"
--- 728,734 ----
Notice that a setting of 0 means 'don't truncate anything'. This variable
is buffer-local.")
;;;
!
(term-if-xemacs
(defvar term-terminal-menu
'("Terminal"
***************
*** 841,989 ****
[ "Enable paging" term-pager-toggle (not term-pager-count)]
[ "Disable paging" term-pager-toggle term-pager-count])))
- (put 'term-mode 'mode-class 'special)
-
- (defun term-mode ()
- "Major mode for interacting with an inferior interpreter.
- Interpreter name is same as buffer name, sans the asterisks.
- In line sub-mode, return at end of buffer sends line as input,
- while return not at end copies rest of line to end and sends it.
- In char sub-mode, each character (except `term-escape-char`) is
- set immediately.
-
- This mode is typically customised to create inferior-lisp-mode,
- shell-mode, etc.. This can be done by setting the hooks
- term-input-filter-functions, term-input-filter, term-input-sender and
- term-get-old-input to appropriate functions, and the variable
- term-prompt-regexp to the appropriate regular expression.
-
- An input history is maintained of size `term-input-ring-size', and
- can be accessed with the commands \\[term-next-input],
- \\[term-previous-input], and \\[term-dynamic-list-input-ring].
- Input ring history expansion can be achieved with the commands
- \\[term-replace-by-expanded-history] or \\[term-magic-space].
- Input ring expansion is controlled by the variable `term-input-autoexpand',
- and addition is controlled by the variable `term-input-ignoredups'.
-
- Input to, and output from, the subprocess can cause the window to scroll to
- the end of the buffer. See variables `term-scroll-to-bottom-on-input',
- and `term-scroll-to-bottom-on-output'.
-
- If you accidentally suspend your process, use \\[term-continue-subjob]
- to continue it.
-
- \\{term-mode-map}
-
- Entry to this mode runs the hooks on term-mode-hook"
- (interactive)
- ;; Do not remove this. All major modes must do this.
- (kill-all-local-variables)
- (setq major-mode 'term-mode)
- (setq mode-name "Term")
- (use-local-map term-mode-map)
- (make-local-variable 'term-home-marker)
- (setq term-home-marker (copy-marker 0))
- (make-local-variable 'term-saved-home-marker)
- (make-local-variable 'term-height)
- (make-local-variable 'term-width)
- (setq term-width (1- (window-width)))
- (setq term-height (1- (window-height)))
- (make-local-variable 'term-terminal-parameter)
- (make-local-variable 'term-saved-cursor)
- (make-local-variable 'term-last-input-start)
- (setq term-last-input-start (make-marker))
- (make-local-variable 'term-last-input-end)
- (setq term-last-input-end (make-marker))
- (make-local-variable 'term-last-input-match)
- (setq term-last-input-match "")
- (make-local-variable 'term-prompt-regexp) ; Don't set; default
- (make-local-variable 'term-input-ring-size) ; ...to global val.
- (make-local-variable 'term-input-ring)
- (make-local-variable 'term-input-ring-file-name)
- (or (and (boundp 'term-input-ring) term-input-ring)
- (setq term-input-ring (make-ring term-input-ring-size)))
- (make-local-variable 'term-input-ring-index)
- (or (and (boundp 'term-input-ring-index) term-input-ring-index)
- (setq term-input-ring-index nil))
-
- (make-local-variable 'term-command-hook)
- (setq term-command-hook (symbol-function 'term-command-hook))
-
- ;;; I'm not sure these saves are necessary but, since I
- ;;; haven't tested the whole thing on a net connected machine with
- ;;; a properly configured ange-ftp, I've decided to be conservative
- ;;; and put them in. -mm
-
- (make-local-variable 'term-ansi-at-host)
- (setq term-ansi-at-host (system-name))
-
- (make-local-variable 'term-ansi-at-dir)
- (setq term-ansi-at-dir default-directory)
-
- (make-local-variable 'term-ansi-at-message)
- (setq term-ansi-at-message nil)
-
- ;;; For user tracking purposes -mm
- (make-local-variable 'ange-ftp-default-user)
- (make-local-variable 'ange-ftp-default-password)
- (make-local-variable 'ange-ftp-generate-anonymous-password)
-
- ;;; You may want to have different scroll-back sizes -mm
- (make-local-variable 'term-buffer-maximum-size)
-
- ;;; Of course these have to be buffer-local -mm
- (make-local-variable 'term-ansi-current-bold)
- (make-local-variable 'term-ansi-current-color)
- (make-local-variable 'term-ansi-face-alredy-done)
- (make-local-variable 'term-ansi-current-bg-color)
- (make-local-variable 'term-ansi-current-underline)
- (make-local-variable 'term-ansi-current-highlight)
- (make-local-variable 'term-ansi-current-reverse)
- (make-local-variable 'term-ansi-current-invisible)
-
- (make-local-variable 'term-terminal-state)
- (make-local-variable 'term-kill-echo-list)
- (make-local-variable 'term-start-line-column)
- (make-local-variable 'term-current-column)
- (make-local-variable 'term-current-row)
- (make-local-variable 'term-log-buffer)
- (make-local-variable 'term-scroll-start)
- (make-local-variable 'term-scroll-end)
- (setq term-scroll-end term-height)
- (make-local-variable 'term-scroll-with-delete)
- (make-local-variable 'term-pager-count)
- (make-local-variable 'term-pager-old-local-map)
- (make-local-variable 'term-old-mode-map)
- (make-local-variable 'term-insert-mode)
- (make-local-variable 'term-dynamic-complete-functions)
- (make-local-variable 'term-completion-fignore)
- (make-local-variable 'term-get-old-input)
- (make-local-variable 'term-matching-input-from-input-string)
- (make-local-variable 'term-input-autoexpand)
- (make-local-variable 'term-input-ignoredups)
- (make-local-variable 'term-delimiter-argument-list)
- (make-local-variable 'term-input-filter-functions)
- (make-local-variable 'term-input-filter)
- (make-local-variable 'term-input-sender)
- (make-local-variable 'term-eol-on-send)
- (make-local-variable 'term-scroll-to-bottom-on-output)
- (make-local-variable 'term-scroll-show-maximum-output)
- (make-local-variable 'term-ptyp)
- (make-local-variable 'term-exec-hook)
- (make-local-variable 'term-vertical-motion)
- (make-local-variable 'term-pending-delete-marker)
- (setq term-pending-delete-marker (make-marker))
- (make-local-variable 'term-current-face)
- (make-local-variable 'term-pending-frame)
- (setq term-pending-frame nil)
- (run-hooks 'term-mode-hook)
- (term-if-xemacs
- (set-buffer-menubar
- (append current-menubar (list term-terminal-menu))))
- (or term-input-ring
- (setq term-input-ring (make-ring term-input-ring-size)))
- (term-update-mode-line))
-
(if term-mode-map
nil
(setq term-mode-map (make-sparse-keymap))
--- 737,742 ----
***************
*** 1016,1022 ****
(define-key term-mode-map "\C-c\C-j" 'term-line-mode)
(define-key term-mode-map "\C-c\C-q" 'term-pager-toggle)
-
; ;; completion:
; (define-key term-mode-map [menu-bar completion]
; (cons "Complete" (make-sparse-keymap "Complete")))
--- 769,774 ----
***************
*** 1114,1120 ****
--- 866,1083 ----
(define-key term-mode-map [menu-bar signals]
(setq term-signals-menu (cons "Signals" newmap)))
)))
+
+ ;; Set up term-raw-map, etc.
+
+ (defun term-set-escape-char (c)
+ "Change term-escape-char and keymaps that depend on it."
+ (if term-escape-char
+ (define-key term-raw-map term-escape-char 'term-send-raw))
+ (setq c (make-string 1 c))
+ (define-key term-raw-map c term-raw-escape-map)
+ ;; Define standard bindings in term-raw-escape-map
+ (define-key term-raw-escape-map "\C-v"
+ (lookup-key (current-global-map) "\C-v"))
+ (define-key term-raw-escape-map "\C-u"
+ (lookup-key (current-global-map) "\C-u"))
+ (define-key term-raw-escape-map c 'term-send-raw)
+ (define-key term-raw-escape-map "\C-q" 'term-pager-toggle)
+ ;; The keybinding for term-char-mode is needed by the menubar code.
+ (define-key term-raw-escape-map "\C-k" 'term-char-mode)
+ (define-key term-raw-escape-map "\C-j" 'term-line-mode)
+ ;; It's convenient to have execute-extended-command here.
+ (define-key term-raw-escape-map [?\M-x] 'execute-extended-command))
+
+ (let* ((map (make-keymap))
+ (esc-map (make-keymap))
+ (i 0))
+ (while (< i 128)
+ (define-key map (make-string 1 i) 'term-send-raw)
+ (define-key esc-map (make-string 1 i) 'term-send-raw-meta)
+ (setq i (1+ i)))
+ (dolist (elm (generic-character-list))
+ (define-key map (vector elm) 'term-send-raw))
+ (define-key map "\e" esc-map)
+ (setq term-raw-map map)
+ (setq term-raw-escape-map
+ (copy-keymap (lookup-key (current-global-map) "\C-x")))
+
+ ;;; Added nearly all the 'grey keys' -mm
+
+ (progn
+ (term-if-xemacs
+ (define-key term-raw-map [button2] 'term-mouse-paste))
+ (term-ifnot-xemacs
+ (define-key term-raw-map [mouse-2] 'term-mouse-paste)
+ (define-key term-raw-map [menu-bar terminal] term-terminal-menu)
+ (define-key term-raw-map [menu-bar signals] term-signals-menu))
+ (define-key term-raw-map [up] 'term-send-up)
+ (define-key term-raw-map [down] 'term-send-down)
+ (define-key term-raw-map [right] 'term-send-right)
+ (define-key term-raw-map [left] 'term-send-left)
+ (define-key term-raw-map [delete] 'term-send-del)
+ (define-key term-raw-map [backspace] 'term-send-backspace)
+ (define-key term-raw-map [home] 'term-send-home)
+ (define-key term-raw-map [end] 'term-send-end)
+ (define-key term-raw-map [prior] 'term-send-prior)
+ (define-key term-raw-map [next] 'term-send-next)))
+
+ (term-set-escape-char ?\C-c)
+
+ (put 'term-mode 'mode-class 'special)
+
+ (defun term-mode ()
+ "Major mode for interacting with an inferior interpreter.
+ The interpreter name is same as buffer name, sans the asterisks.
+ There are two submodes: line mode and char mode. By default, you are
+ in char mode. In char sub-mode, each character (except
+ `term-escape-char') is set immediately.
+
+ In line mode, you send a line of input at a time; use
+ \\[term-send-input] to send.
+
+ In line mode, this maintains an input history of size
+ `term-input-ring-size', and you can access it with the commands
+ \\[term-next-input], \\[term-previous-input], and
+ \\[term-dynamic-list-input-ring]. Input ring history expansion can be
+ achieved with the commands \\[term-replace-by-expanded-history] or
+ \\[term-magic-space]. Input ring expansion is controlled by the
+ variable `term-input-autoexpand', and addition is controlled by the
+ variable `term-input-ignoredups'.
+
+ Input to, and output from, the subprocess can cause the window to scroll to
+ the end of the buffer. See variables `term-scroll-to-bottom-on-input',
+ and `term-scroll-to-bottom-on-output'.
+
+ If you accidentally suspend your process, use \\[term-continue-subjob]
+ to continue it.
+
+ This mode can be customised to create specific modes for running
+ particular subprocesses. This can be done by setting the hooks
+ `term-input-filter-functions', `term-input-filter',
+ `term-input-sender' and `term-get-old-input' to appropriate functions,
+ and the variable `term-prompt-regexp' to the appropriate regular
+ expression.
+
+ Commands in raw mode:
+
+ \\{term-raw-map}
+
+ Commands in line mode:
+
+ \\{term-mode-map}
+
+ Entry to this mode runs the hooks on `term-mode-hook'."
+ (interactive)
+ ;; Do not remove this. All major modes must do this.
+ (kill-all-local-variables)
+ (setq major-mode 'term-mode)
+ (setq mode-name "Term")
+ (use-local-map term-mode-map)
+ (make-local-variable 'term-home-marker)
+ (setq term-home-marker (copy-marker 0))
+ (make-local-variable 'term-saved-home-marker)
+ (make-local-variable 'term-height)
+ (make-local-variable 'term-width)
+ (setq term-width (1- (window-width)))
+ (setq term-height (1- (window-height)))
+ (make-local-variable 'term-terminal-parameter)
+ (make-local-variable 'term-saved-cursor)
+ (make-local-variable 'term-last-input-start)
+ (setq term-last-input-start (make-marker))
+ (make-local-variable 'term-last-input-end)
+ (setq term-last-input-end (make-marker))
+ (make-local-variable 'term-last-input-match)
+ (setq term-last-input-match "")
+ (make-local-variable 'term-prompt-regexp) ; Don't set; default
+ (make-local-variable 'term-input-ring-size) ; ...to global val.
+ (make-local-variable 'term-input-ring)
+ (make-local-variable 'term-input-ring-file-name)
+ (or (and (boundp 'term-input-ring) term-input-ring)
+ (setq term-input-ring (make-ring term-input-ring-size)))
+ (make-local-variable 'term-input-ring-index)
+ (or (and (boundp 'term-input-ring-index) term-input-ring-index)
+ (setq term-input-ring-index nil))
+
+ (make-local-variable 'term-command-hook)
+ (setq term-command-hook (symbol-function 'term-command-hook))
+
+ ;;; I'm not sure these saves are necessary but, since I
+ ;;; haven't tested the whole thing on a net connected machine with
+ ;;; a properly configured ange-ftp, I've decided to be conservative
+ ;;; and put them in. -mm
+
+ (make-local-variable 'term-ansi-at-host)
+ (setq term-ansi-at-host (system-name))
+
+ (make-local-variable 'term-ansi-at-dir)
+ (setq term-ansi-at-dir default-directory)
+
+ (make-local-variable 'term-ansi-at-message)
+ (setq term-ansi-at-message nil)
+
+ ;;; For user tracking purposes -mm
+ (make-local-variable 'ange-ftp-default-user)
+ (make-local-variable 'ange-ftp-default-password)
+ (make-local-variable 'ange-ftp-generate-anonymous-password)
+
+ ;;; You may want to have different scroll-back sizes -mm
+ (make-local-variable 'term-buffer-maximum-size)
+
+ ;;; Of course these have to be buffer-local -mm
+ (make-local-variable 'term-ansi-current-bold)
+ (make-local-variable 'term-ansi-current-color)
+ (make-local-variable 'term-ansi-face-already-done)
+ (make-local-variable 'term-ansi-current-bg-color)
+ (make-local-variable 'term-ansi-current-underline)
+ (make-local-variable 'term-ansi-current-highlight)
+ (make-local-variable 'term-ansi-current-reverse)
+ (make-local-variable 'term-ansi-current-invisible)
+
+ (make-local-variable 'term-terminal-state)
+ (make-local-variable 'term-kill-echo-list)
+ (make-local-variable 'term-start-line-column)
+ (make-local-variable 'term-current-column)
+ (make-local-variable 'term-current-row)
+ (make-local-variable 'term-log-buffer)
+ (make-local-variable 'term-scroll-start)
+ (make-local-variable 'term-scroll-end)
+ (setq term-scroll-end term-height)
+ (make-local-variable 'term-scroll-with-delete)
+ (make-local-variable 'term-pager-count)
+ (make-local-variable 'term-pager-old-local-map)
+ (make-local-variable 'term-old-mode-map)
+ (make-local-variable 'term-insert-mode)
+ (make-local-variable 'term-dynamic-complete-functions)
+ (make-local-variable 'term-completion-fignore)
+ (make-local-variable 'term-get-old-input)
+ (make-local-variable 'term-matching-input-from-input-string)
+ (make-local-variable 'term-input-autoexpand)
+ (make-local-variable 'term-input-ignoredups)
+ (make-local-variable 'term-delimiter-argument-list)
+ (make-local-variable 'term-input-filter-functions)
+ (make-local-variable 'term-input-filter)
+ (make-local-variable 'term-input-sender)
+ (make-local-variable 'term-eol-on-send)
+ (make-local-variable 'term-scroll-to-bottom-on-output)
+ (make-local-variable 'term-scroll-show-maximum-output)
+ (make-local-variable 'term-ptyp)
+ (make-local-variable 'term-exec-hook)
+ (make-local-variable 'term-vertical-motion)
+ (make-local-variable 'term-pending-delete-marker)
+ (setq term-pending-delete-marker (make-marker))
+ (make-local-variable 'term-current-face)
+ (make-local-variable 'term-pending-frame)
+ (setq term-pending-frame nil)
+ (run-hooks 'term-mode-hook)
+ (term-if-xemacs
+ (set-buffer-menubar
+ (append current-menubar (list term-terminal-menu))))
+ (or term-input-ring
+ (setq term-input-ring (make-ring term-input-ring-size)))
+ (term-update-mode-line))
+
(defun term-reset-size (height width)
(setq term-height height)
(setq term-width width)
***************
*** 1227,1296 ****
(defun term-send-next () (interactive) (term-send-raw-string "\e[6~"))
(defun term-send-del () (interactive) (term-send-raw-string "\C-?"))
(defun term-send-backspace () (interactive) (term-send-raw-string "\C-H"))
!
! (defun term-set-escape-char (c)
! "Change term-escape-char and keymaps that depend on it."
! (if term-escape-char
! (define-key term-raw-map term-escape-char 'term-send-raw))
! (setq c (make-string 1 c))
! (define-key term-raw-map c term-raw-escape-map)
! ;; Define standard bindings in term-raw-escape-map
! (define-key term-raw-escape-map "\C-x"
! (lookup-key (current-global-map) "\C-x"))
! (define-key term-raw-escape-map "\C-v"
! (lookup-key (current-global-map) "\C-v"))
! (define-key term-raw-escape-map "\C-u"
! (lookup-key (current-global-map) "\C-u"))
! (define-key term-raw-escape-map c 'term-send-raw)
! (define-key term-raw-escape-map "\C-q" 'term-pager-toggle)
! ;; The keybinding for term-char-mode is needed by the menubar code.
! (define-key term-raw-escape-map "\C-k" 'term-char-mode)
! (define-key term-raw-escape-map "\C-j" 'term-line-mode)
! ;; It's convenient to have execute-extended-command here.
! (define-key term-raw-escape-map [?\M-x] 'execute-extended-command))
!
(defun term-char-mode ()
"Switch to char (\"raw\") sub-mode of term mode.
Each character you type is sent directly to the inferior without
intervention from Emacs, except for the escape character (usually C-c)."
(interactive)
- (if (not term-raw-map)
- (let* ((map (make-keymap))
- (esc-map (make-keymap))
- (i 0))
- (while (< i 128)
- (define-key map (make-string 1 i) 'term-send-raw)
- (define-key esc-map (make-string 1 i) 'term-send-raw-meta)
- (setq i (1+ i)))
- (dolist (elm (generic-character-list))
- (define-key map (vector elm) 'term-send-raw))
- (define-key map "\e" esc-map)
- (setq term-raw-map map)
- (setq term-raw-escape-map
- (copy-keymap (lookup-key (current-global-map) "\C-x")))
-
- ;;; Added nearly all the 'grey keys' -mm
-
- (progn
- (term-if-xemacs
- (define-key term-raw-map [button2] 'term-mouse-paste))
- (term-ifnot-xemacs
- (define-key term-raw-map [mouse-2] 'term-mouse-paste)
- (define-key term-raw-map [menu-bar terminal] term-terminal-menu)
- (define-key term-raw-map [menu-bar signals] term-signals-menu))
- (define-key term-raw-map [up] 'term-send-up)
- (define-key term-raw-map [down] 'term-send-down)
- (define-key term-raw-map [right] 'term-send-right)
- (define-key term-raw-map [left] 'term-send-left)
- (define-key term-raw-map [delete] 'term-send-del)
- (define-key term-raw-map [backspace] 'term-send-backspace)
- (define-key term-raw-map [home] 'term-send-home)
- (define-key term-raw-map [end] 'term-send-end)
- (define-key term-raw-map [prior] 'term-send-prior)
- (define-key term-raw-map [next] 'term-send-next))
-
-
- (term-set-escape-char ?\C-c)))
;; FIXME: Emit message? Cfr ilisp-raw-message
(if (term-in-line-mode)
(progn
--- 1190,1201 ----
(defun term-send-next () (interactive) (term-send-raw-string "\e[6~"))
(defun term-send-del () (interactive) (term-send-raw-string "\C-?"))
(defun term-send-backspace () (interactive) (term-send-raw-string "\C-H"))
!
(defun term-char-mode ()
"Switch to char (\"raw\") sub-mode of term mode.
Each character you type is sent directly to the inferior without
intervention from Emacs, except for the escape character (usually C-c)."
(interactive)
;; FIXME: Emit message? Cfr ilisp-raw-message
(if (term-in-line-mode)
(progn
***************
*** 1353,1359 ****
;;;###autoload
(defun term (program)
! "Start a terminal-emulator in a new buffer."
(interactive (list (read-from-minibuffer "Run program: "
(or explicit-shell-file-name
(getenv "ESHELL")
--- 1258,1268 ----
;;;###autoload
(defun term (program)
! "Start a terminal-emulator in a new buffer.
! The buffer is in Term mode; see `term-mode' for the
! commands to use in that buffer.
!
! \\<term-raw-map>Type \\[switch-to-buffer] to switch to another buffer."
(interactive (list (read-from-minibuffer "Run program: "
(or explicit-shell-file-name
(getenv "ESHELL")
***************
*** 3046,3059 ****
;;; 0 (Reset) or unknown (reset anyway)
(t
! (setq term-current-face
! (list 'term-default-fg 'term-default-bg))
(setq term-ansi-current-underline 0)
(setq term-ansi-current-bold 0)
(setq term-ansi-current-reverse 0)
(setq term-ansi-current-color 0)
(setq term-ansi-current-invisible 0)
! (setq term-ansi-face-alredy-done 1)
(setq term-ansi-current-bg-color 0)))
; (message "Debug: U-%d R-%d B-%d I-%d D-%d F-%d B-%d"
--- 2955,2967 ----
;;; 0 (Reset) or unknown (reset anyway)
(t
! (setq term-current-face nil)
(setq term-ansi-current-underline 0)
(setq term-ansi-current-bold 0)
(setq term-ansi-current-reverse 0)
(setq term-ansi-current-color 0)
(setq term-ansi-current-invisible 0)
! (setq term-ansi-face-already-done 1)
(setq term-ansi-current-bg-color 0)))
; (message "Debug: U-%d R-%d B-%d I-%d D-%d F-%d B-%d"
***************
*** 3061,3113 ****
; term-ansi-current-reverse
; term-ansi-current-bold
; term-ansi-current-invisible
! ; term-ansi-face-alredy-done
; term-ansi-current-color
; term-ansi-current-bg-color)
! (if (= term-ansi-face-alredy-done 0)
(if (= term-ansi-current-reverse 1)
! (progn
! (if (= term-ansi-current-invisible 1)
! (if (= term-ansi-current-color 0)
! (setq term-current-face
! '(term-default-bg-inv term-default-fg))
! (setq term-current-face
! (list (elt ansi-term-inv-fg-faces-vector
term-ansi-current-color)
! (elt ansi-term-inv-bg-faces-vector
term-ansi-current-color))))
! ;; No need to bother with anything else if it's invisible
! (progn
(setq term-current-face
! (list (elt ansi-term-inv-fg-faces-vector
term-ansi-current-color)
! (elt ansi-term-inv-bg-faces-vector
term-ansi-current-bg-color)))
! (if (= term-ansi-current-bold 1)
! (setq term-current-face
! (append '(term-bold) term-current-face)))
! (if (= term-ansi-current-underline 1)
! (setq term-current-face
! (append '(term-underline) term-current-face))))))
! (if (= term-ansi-current-invisible 1)
! (if (= term-ansi-current-bg-color 0)
(setq term-current-face
! '(term-default-fg-inv term-default-bg))
! (setq term-current-face
! (list (elt ansi-term-fg-faces-vector
term-ansi-current-bg-color)
! (elt ansi-term-bg-faces-vector
term-ansi-current-bg-color))))
! ;; No need to bother with anything else if it's invisible
(setq term-current-face
! (list (elt ansi-term-fg-faces-vector term-ansi-current-color)
! (elt ansi-term-bg-faces-vector
term-ansi-current-bg-color)))
(if (= term-ansi-current-bold 1)
(setq term-current-face
! (append '(term-bold) term-current-face)))
(if (= term-ansi-current-underline 1)
(setq term-current-face
! (append '(term-underline) term-current-face))))))
; (message "Debug %S" term-current-face)
! (setq term-ansi-face-alredy-done 0))
;;; Handle a character assuming (eq terminal-state 2) -
--- 2969,3033 ----
; term-ansi-current-reverse
; term-ansi-current-bold
; term-ansi-current-invisible
! ; term-ansi-face-already-done
; term-ansi-current-color
; term-ansi-current-bg-color)
! (if (= term-ansi-face-already-done 0)
(if (= term-ansi-current-reverse 1)
! (if (= term-ansi-current-invisible 1)
! (setq term-current-face
! (if (= term-ansi-current-color 0)
! (list :background
! term-default-fg-color
! :foreground
! term-default-fg-color)
! (list :background
! (elt ansi-term-color-vector term-ansi-current-color)
! :foreground
! (elt ansi-term-color-vector
term-ansi-current-color)))
! ;; No need to bother with anything else if it's invisible
! )
! (setq term-current-face
! (list :background
! (elt ansi-term-color-vector term-ansi-current-color)
! :foreground
! (elt ansi-term-color-vector
term-ansi-current-bg-color)))
! (if (= term-ansi-current-bold 1)
(setq term-current-face
! (append '(:weight bold) term-current-face)))
! (if (= term-ansi-current-underline 1)
(setq term-current-face
! (append '(:underline t) term-current-face))))
! (if (= term-ansi-current-invisible 1)
! (setq term-current-face
! (if (= term-ansi-current-bg-color 0)
! (list :background
! term-default-bg-color
! :foreground
! term-default-bg-color)
! (list :foreground
! (elt ansi-term-color-vector
term-ansi-current-bg-color)
! :background
! (elt ansi-term-color-vector
term-ansi-current-bg-color)))
! ;; No need to bother with anything else if it's invisible
! )
(setq term-current-face
! (list :foreground
! (elt ansi-term-color-vector term-ansi-current-color)
! :background
! (elt ansi-term-color-vector term-ansi-current-bg-color)))
(if (= term-ansi-current-bold 1)
(setq term-current-face
! (append '(:weight bold) term-current-face)))
(if (= term-ansi-current-underline 1)
(setq term-current-face
! (append '(:underline t) term-current-face))))))
; (message "Debug %S" term-current-face)
! (setq term-ansi-face-already-done 0))
;;; Handle a character assuming (eq terminal-state 2) -
***************
*** 3246,3252 ****
;; Default value for the symbol term-command-hook.
(defun term-command-hook (string)
! (cond ((= (aref string 0) ?\032)
;; gdb (when invoked with -fullname) prints:
;; \032\032FULLFILENAME:LINENUMBER:CHARPOS:BEG_OR_MIDDLE:PC\n
(let* ((first-colon (string-match ":" string 1))
--- 3166,3174 ----
;; Default value for the symbol term-command-hook.
(defun term-command-hook (string)
! (cond ((equal string "")
! t)
! ((= (aref string 0) ?\032)
;; gdb (when invoked with -fullname) prints:
;; \032\032FULLFILENAME:LINENUMBER:CHARPOS:BEG_OR_MIDDLE:PC\n
(let* ((first-colon (string-match ":" string 1))
- [Emacs-diffs] Changes to emacs/lisp/term.el,
Richard M. Stallman <=