emacs-diffs
[Top][All Lists]
Advanced

[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))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]