comparison lisp/term.el @ 61481:d4014c213e7e

* term.el (term-ansi-current-bold, term-ansi-current-underline) (term-ansi-current-reverse, term-ansi-current-invisible) (term-ansi-face-already-done): Change to boolean. (term-reset-terminal, term-handle-colors-array): Handle the above vars accordingly. (term-buffer-vertical-motion): Rename from buffer-vertical-motion. (term-emulate-terminal): Use the new name. * faces.el (secondary-selection): Use yellow1, not yellow. (trailing-whitespace): Use red1, not red.
author Dan Nicolaescu <dann@ics.uci.edu>
date Mon, 11 Apr 2005 20:47:25 +0000
parents a2c0a72230cf
children 7167a1afa2aa 146c086df160
comparison
equal deleted inserted replaced
61480:db45074f7e94 61481:d4014c213e7e
682 (defvar term-ansi-at-user nil) 682 (defvar term-ansi-at-user nil)
683 (defvar term-ansi-at-message nil) 683 (defvar term-ansi-at-message nil)
684 (defvar term-ansi-at-save-user nil) 684 (defvar term-ansi-at-save-user nil)
685 (defvar term-ansi-at-save-pwd nil) 685 (defvar term-ansi-at-save-pwd nil)
686 (defvar term-ansi-at-save-anon nil) 686 (defvar term-ansi-at-save-anon nil)
687 (defvar term-ansi-current-bold 0) 687 (defvar term-ansi-current-bold nil)
688 (defvar term-ansi-current-color 0) 688 (defvar term-ansi-current-color 0)
689 (defvar term-ansi-face-already-done 0) 689 (defvar term-ansi-face-already-done nil)
690 (defvar term-ansi-current-bg-color 0) 690 (defvar term-ansi-current-bg-color 0)
691 (defvar term-ansi-current-underline 0) 691 (defvar term-ansi-current-underline nil)
692 (defvar term-ansi-current-highlight 0) 692 (defvar term-ansi-current-reverse nil)
693 (defvar term-ansi-current-reverse 0) 693 (defvar term-ansi-current-invisible nil)
694 (defvar term-ansi-current-invisible 0)
695 694
696 ;;; Four should be enough, if you want more, just add. -mm 695 ;;; Four should be enough, if you want more, just add. -mm
697 (defvar term-terminal-more-parameters 0) 696 (defvar term-terminal-more-parameters 0)
698 (defvar term-terminal-previous-parameter-2 -1) 697 (defvar term-terminal-previous-parameter-2 -1)
699 (defvar term-terminal-previous-parameter-3 -1) 698 (defvar term-terminal-previous-parameter-3 -1)
730 [ "Character mode" term-char-mode (term-in-line-mode)] 729 [ "Character mode" term-char-mode (term-in-line-mode)]
731 [ "Line mode" term-line-mode (term-in-char-mode)] 730 [ "Line mode" term-line-mode (term-in-char-mode)]
732 [ "Enable paging" term-pager-toggle (not term-pager-count)] 731 [ "Enable paging" term-pager-toggle (not term-pager-count)]
733 [ "Disable paging" term-pager-toggle term-pager-count]))) 732 [ "Disable paging" term-pager-toggle term-pager-count])))
734 733
735 (if term-mode-map 734 (unless term-mode-map
736 nil
737 (setq term-mode-map (make-sparse-keymap)) 735 (setq term-mode-map (make-sparse-keymap))
738 (define-key term-mode-map "\ep" 'term-previous-input) 736 (define-key term-mode-map "\ep" 'term-previous-input)
739 (define-key term-mode-map "\en" 'term-next-input) 737 (define-key term-mode-map "\en" 'term-next-input)
740 (define-key term-mode-map "\er" 'term-previous-matching-input) 738 (define-key term-mode-map "\er" 'term-previous-matching-input)
741 (define-key term-mode-map "\es" 'term-next-matching-input) 739 (define-key term-mode-map "\es" 'term-next-matching-input)
1060 (make-local-variable 'term-ansi-current-bold) 1058 (make-local-variable 'term-ansi-current-bold)
1061 (make-local-variable 'term-ansi-current-color) 1059 (make-local-variable 'term-ansi-current-color)
1062 (make-local-variable 'term-ansi-face-already-done) 1060 (make-local-variable 'term-ansi-face-already-done)
1063 (make-local-variable 'term-ansi-current-bg-color) 1061 (make-local-variable 'term-ansi-current-bg-color)
1064 (make-local-variable 'term-ansi-current-underline) 1062 (make-local-variable 'term-ansi-current-underline)
1065 (make-local-variable 'term-ansi-current-highlight)
1066 (make-local-variable 'term-ansi-current-reverse) 1063 (make-local-variable 'term-ansi-current-reverse)
1067 (make-local-variable 'term-ansi-current-invisible) 1064 (make-local-variable 'term-ansi-current-invisible)
1068 1065
1069 (make-local-variable 'term-terminal-state) 1066 (make-local-variable 'term-terminal-state)
1070 (make-local-variable 'term-kill-echo-list) 1067 (make-local-variable 'term-kill-echo-list)
2507 ;;; Note: (current-column) yields column in buffer line. 2504 ;;; Note: (current-column) yields column in buffer line.
2508 2505
2509 (defun term-horizontal-column () 2506 (defun term-horizontal-column ()
2510 (- (term-current-column) (term-start-line-column))) 2507 (- (term-current-column) (term-start-line-column)))
2511 2508
2512 ;; Calls either vertical-motion or buffer-vertical-motion 2509 ;; Calls either vertical-motion or term-buffer-vertical-motion
2513 (defmacro term-vertical-motion (count) 2510 (defmacro term-vertical-motion (count)
2514 (list 'funcall 'term-vertical-motion count)) 2511 (list 'funcall 'term-vertical-motion count))
2515 2512
2516 ;; An emulation of vertical-motion that is independent of having a window. 2513 ;; An emulation of vertical-motion that is independent of having a window.
2517 ;; Instead, it uses the term-width variable as the logical window width. 2514 ;; Instead, it uses the term-width variable as the logical window width.
2518 2515
2519 (defun buffer-vertical-motion (count) 2516 (defun term-buffer-vertical-motion (count)
2520 (cond ((= count 0) 2517 (cond ((= count 0)
2521 (move-to-column (* term-width (/ (current-column) term-width))) 2518 (move-to-column (* term-width (/ (current-column) term-width)))
2522 0) 2519 0)
2523 ((> count 0) 2520 ((> count 0)
2524 (let ((H) 2521 (let ((H)
2699 (if (eq (window-buffer) (current-buffer)) 2696 (if (eq (window-buffer) (current-buffer))
2700 (progn 2697 (progn
2701 (setq term-vertical-motion (symbol-function 'vertical-motion)) 2698 (setq term-vertical-motion (symbol-function 'vertical-motion))
2702 (term-check-size proc)) 2699 (term-check-size proc))
2703 (setq term-vertical-motion 2700 (setq term-vertical-motion
2704 (symbol-function 'buffer-vertical-motion))) 2701 (symbol-function 'term-buffer-vertical-motion)))
2705 2702
2706 (setq save-marker (copy-marker (process-mark proc))) 2703 (setq save-marker (copy-marker (process-mark proc)))
2707 2704
2708 (if (/= (point) (process-mark proc)) 2705 (if (/= (point) (process-mark proc))
2709 (progn (setq save-point (point-marker)) 2706 (progn (setq save-point (point-marker))
3039 (erase-buffer) 3036 (erase-buffer)
3040 (setq term-current-row 0) 3037 (setq term-current-row 0)
3041 (setq term-current-column 1) 3038 (setq term-current-column 1)
3042 (setq term-insert-mode nil) 3039 (setq term-insert-mode nil)
3043 (setq term-current-face nil) 3040 (setq term-current-face nil)
3044 (setq term-ansi-current-underline 0) 3041 (setq term-ansi-current-underline nil)
3045 (setq term-ansi-current-bold 0) 3042 (setq term-ansi-current-bold nil)
3046 (setq term-ansi-current-reverse 0) 3043 (setq term-ansi-current-reverse nil)
3047 (setq term-ansi-current-color 0) 3044 (setq term-ansi-current-color 0)
3048 (setq term-ansi-current-invisible 0) 3045 (setq term-ansi-current-invisible nil)
3049 (setq term-ansi-face-already-done 0) 3046 (setq term-ansi-face-already-done nil)
3050 (setq term-ansi-current-bg-color 0)) 3047 (setq term-ansi-current-bg-color 0))
3051 3048
3052 ;;; New function to deal with ansi colorized output, as you can see you can 3049 ;;; New function to deal with ansi colorized output, as you can see you can
3053 ;;; have any bold/underline/fg/bg/reverse combination. -mm 3050 ;;; have any bold/underline/fg/bg/reverse combination. -mm
3054 3051
3055 (defun term-handle-colors-array (parameter) 3052 (defun term-handle-colors-array (parameter)
3056 (cond 3053 (cond
3057 3054
3058 ;;; Bold (terminfo: bold) 3055 ;;; Bold (terminfo: bold)
3059 ((eq parameter 1) 3056 ((eq parameter 1)
3060 (setq term-ansi-current-bold 1)) 3057 (setq term-ansi-current-bold t))
3061 3058
3062 ;;; Underline 3059 ;;; Underline
3063 ((eq parameter 4) 3060 ((eq parameter 4)
3064 (setq term-ansi-current-underline 1)) 3061 (setq term-ansi-current-underline t))
3065 3062
3066 ;;; Blink (unsupported by Emacs), will be translated to bold. 3063 ;;; Blink (unsupported by Emacs), will be translated to bold.
3067 ;;; This may change in the future though. 3064 ;;; This may change in the future though.
3068 ((eq parameter 5) 3065 ((eq parameter 5)
3069 (setq term-ansi-current-bold 1)) 3066 (setq term-ansi-current-bold t))
3070 3067
3071 ;;; Reverse 3068 ;;; Reverse
3072 ((eq parameter 7) 3069 ((eq parameter 7)
3073 (setq term-ansi-current-reverse 1)) 3070 (setq term-ansi-current-reverse t))
3074 3071
3075 ;;; Invisible 3072 ;;; Invisible
3076 ((eq parameter 8) 3073 ((eq parameter 8)
3077 (setq term-ansi-current-invisible 1)) 3074 (setq term-ansi-current-invisible t))
3078 3075
3079 ;;; Reset underline (i.e. terminfo rmul) 3076 ;;; Reset underline (i.e. terminfo rmul)
3080 ((eq parameter 24) 3077 ((eq parameter 24)
3081 (setq term-ansi-current-underline 0)) 3078 (setq term-ansi-current-underline nil))
3082 3079
3083 ;;; Reset reverse (i.e. terminfo rmso) 3080 ;;; Reset reverse (i.e. terminfo rmso)
3084 ((eq parameter 27) 3081 ((eq parameter 27)
3085 (setq term-ansi-current-reverse 0)) 3082 (setq term-ansi-current-reverse nil))
3086 3083
3087 ;;; Foreground 3084 ;;; Foreground
3088 ((and (>= parameter 30) (<= parameter 37)) 3085 ((and (>= parameter 30) (<= parameter 37))
3089 (setq term-ansi-current-color (- parameter 29))) 3086 (setq term-ansi-current-color (- parameter 29)))
3090 3087
3101 (setq term-ansi-current-bg-color 0)) 3098 (setq term-ansi-current-bg-color 0))
3102 3099
3103 ;;; 0 (Reset) or unknown (reset anyway) 3100 ;;; 0 (Reset) or unknown (reset anyway)
3104 (t 3101 (t
3105 (setq term-current-face nil) 3102 (setq term-current-face nil)
3106 (setq term-ansi-current-underline 0) 3103 (setq term-ansi-current-underline nil)
3107 (setq term-ansi-current-bold 0) 3104 (setq term-ansi-current-bold nil)
3108 (setq term-ansi-current-reverse 0) 3105 (setq term-ansi-current-reverse nil)
3109 (setq term-ansi-current-color 0) 3106 (setq term-ansi-current-color 0)
3110 (setq term-ansi-current-invisible 0) 3107 (setq term-ansi-current-invisible nil)
3111 (setq term-ansi-face-already-done 1) 3108 (setq term-ansi-face-already-done t)
3112 (setq term-ansi-current-bg-color 0))) 3109 (setq term-ansi-current-bg-color 0)))
3113 3110
3114 ; (message "Debug: U-%d R-%d B-%d I-%d D-%d F-%d B-%d" 3111 ; (message "Debug: U-%d R-%d B-%d I-%d D-%d F-%d B-%d"
3115 ; term-ansi-current-underline 3112 ; term-ansi-current-underline
3116 ; term-ansi-current-reverse 3113 ; term-ansi-current-reverse
3119 ; term-ansi-face-already-done 3116 ; term-ansi-face-already-done
3120 ; term-ansi-current-color 3117 ; term-ansi-current-color
3121 ; term-ansi-current-bg-color) 3118 ; term-ansi-current-bg-color)
3122 3119
3123 3120
3124 (if (= term-ansi-face-already-done 0) 3121 (unless term-ansi-face-already-done
3125 (if (= term-ansi-current-reverse 1) 3122 (if term-ansi-current-reverse
3126 (if (= term-ansi-current-invisible 1) 3123 (if term-ansi-current-invisible
3127 (setq term-current-face 3124 (setq term-current-face
3128 (if (= term-ansi-current-color 0) 3125 (if (= term-ansi-current-color 0)
3129 (list :background 3126 (list :background
3130 term-default-fg-color 3127 term-default-fg-color
3131 :foreground 3128 :foreground
3143 (elt ansi-term-color-vector term-ansi-current-color)) 3140 (elt ansi-term-color-vector term-ansi-current-color))
3144 :foreground 3141 :foreground
3145 (if (= term-ansi-current-bg-color 0) 3142 (if (= term-ansi-current-bg-color 0)
3146 (face-background 'default) 3143 (face-background 'default)
3147 (elt ansi-term-color-vector term-ansi-current-bg-color)))) 3144 (elt ansi-term-color-vector term-ansi-current-bg-color))))
3148 (if (= term-ansi-current-bold 1) 3145 (when term-ansi-current-bold
3149 (setq term-current-face 3146 (setq term-current-face
3150 (append '(:weight bold) term-current-face))) 3147 (append '(:weight bold) term-current-face)))
3151 (if (= term-ansi-current-underline 1) 3148 (when term-ansi-current-underline
3152 (setq term-current-face 3149 (setq term-current-face
3153 (append '(:underline t) term-current-face)))) 3150 (append '(:underline t) term-current-face))))
3154 (if (= term-ansi-current-invisible 1) 3151 (if term-ansi-current-invisible
3155 (setq term-current-face 3152 (setq term-current-face
3156 (if (= term-ansi-current-bg-color 0) 3153 (if (= term-ansi-current-bg-color 0)
3157 (list :background 3154 (list :background
3158 term-default-bg-color 3155 term-default-bg-color
3159 :foreground 3156 :foreground
3167 (setq term-current-face 3164 (setq term-current-face
3168 (list :foreground 3165 (list :foreground
3169 (elt ansi-term-color-vector term-ansi-current-color) 3166 (elt ansi-term-color-vector term-ansi-current-color)
3170 :background 3167 :background
3171 (elt ansi-term-color-vector term-ansi-current-bg-color))) 3168 (elt ansi-term-color-vector term-ansi-current-bg-color)))
3172 (if (= term-ansi-current-bold 1) 3169 (when term-ansi-current-bold
3173 (setq term-current-face 3170 (setq term-current-face
3174 (append '(:weight bold) term-current-face))) 3171 (append '(:weight bold) term-current-face)))
3175 (if (= term-ansi-current-underline 1) 3172 (when term-ansi-current-underline
3176 (setq term-current-face 3173 (setq term-current-face
3177 (append '(:underline t) term-current-face)))))) 3174 (append '(:underline t) term-current-face))))))
3178 3175
3179 ;;; (message "Debug %S" term-current-face) 3176 ;;; (message "Debug %S" term-current-face)
3180 (setq term-ansi-face-already-done 0)) 3177 (setq term-ansi-face-already-done nil))
3181 3178
3182 3179
3183 ;;; Handle a character assuming (eq terminal-state 2) - 3180 ;;; Handle a character assuming (eq terminal-state 2) -
3184 ;;; i.e. we have previously seen Escape followed by ?[. 3181 ;;; i.e. we have previously seen Escape followed by ?[.
3185 3182