Mercurial > emacs
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 |