emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Patch to term.el


From: Vinicius Jose Latorre
Subject: Re: Patch to term.el
Date: Sun, 05 Aug 2007 11:14:45 -0300
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.6) Gecko/20070802 SeaMonkey/1.1.4

Richard Stallman wrote:
Would someone please install this patch (a tiny change)
in Emacs 22?  It is a tiny change.

Done in trunk and Emacs 22 branch.


Date: Mon, 23 Jul 2007 12:22:56 -0700 (PDT)
From: Peter Povinec <address@hidden>
To: Dan Nicolaescu <address@hidden>
In-Reply-To: <address@hidden>
MIME-Version: 1.0
Content-Type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
Message-ID: <address@hidden>
X-detected-kernel: FreeBSD 6.x (1)
X-Mailman-Approved-At: Mon, 23 Jul 2007 16:43:41 -0400
Cc: address@hidden
Subject: Re: Setting term-default-fg-color/term-default-bg-color has no
        effect
X-BeenThere: address@hidden
X-Mailman-Version: 2.1.5
Precedence: list
List-Id: "Bug reports for GNU Emacs,
        the Swiss army knife of text editors" <bug-gnu-emacs.gnu.org>
List-Unsubscribe: <http://lists.gnu.org/mailman/listinfo/bug-gnu-emacs>,
        <mailto:address@hidden>
List-Archive: <http://lists.gnu.org/pipermail/bug-gnu-emacs>
List-Post: <mailto:address@hidden>
List-Help: <mailto:address@hidden>
List-Subscribe: <http://lists.gnu.org/mailman/listinfo/bug-gnu-emacs>,
        <mailto:address@hidden>
Sender: address@hidden
Errors-To: address@hidden
X-detected-kernel: Linux 2.6, seldom 2.4 (older, 4)

Can you please describe exactly what are you doing and how? How did
you test your patch?

The basic idea is the same as it was in Emacs 21.  Take the user preferences
in terms of fg/bg colors as stored in term-default-fg-color and
term-default-bg-color and apply them consistently every time term-current-face
is set.  This is done for the initial value of term-current-face, when the
terminal is reset in term-reset-terminal, and when the escape sequences
setting the default fg/bg colors are interpreted in term-handle-color-array. Note that this was partially done already in term-handle-color-array, e.g. in the case of setting reverse+invisible.
For the testing, I've tested with my color customizations, including colored
terminal prompt in csh.  I verified the reverse video logic by running 'top'
and 'emacs -nw' inside an ansi-term, both with my customizations, and plain
emacs.  Customizations to term-default-fg-color or term-default-bg-color while
one or more term sessions are running take effect as expected, e.g. by running
'reset'.
> > ! (defcustom term-default-fg-color (face-foreground term-current-face)
  >     "Default color for foreground in `term'."
  >     :group 'term
  >     :type 'string)
> > ! (defcustom term-default-bg-color (face-background term-current-face)
  >     "Default color for background in `term'."
  >     :group 'term
  >     :type 'string)

This can't be right, term-current-face is nil when term.el is
loaded...

See line 462 (in revision 1.89):
(defvar term-current-face 'default)

I'd agree the code would be easier to read if this line was moved, but as I
mentioned I didn't want to do any unnecessary changes to keep this a tiny
patch.


  > + ;;; Start with requested fg/bg.
> + (setq term-current-face (list :background term-default-bg-color > + :foreground term-default-fg-color))

We don't want forms that have side effects at the top level...

Moved to (term-mode) now.

The updated patch is below.
HTH,
--Peter


2007-07-23  Peter Povinec  <ppovinec <at> yahoo.com>

* term.el: Honor term-default-fg-color and term-default-bg-color settings when modifying term-current-face. (term-default-fg-color, term-default-bg-color): initialized from default term-current-face (term-mode, term-reset-terminal): set term-current-face with term-default-fg-color and term-default-bg-color
        (term-handle-colors-array): term-current-face has term-default-fg-color
        and term-default-bg-color after reset escape sequence
        (term-handle-colors-array): set term-current-color with
term-default-fg/bg-color instead of ansi-term-color-vector when the index (term-ansi-current-color or term-ansi-current-bg-color) is zero


*** /home/ppovinec/term.el.orig 2007-06-24 01:04:07.298996000 -0700
--- /home/ppovinec/term.el      2007-07-23 12:18:01.418489000 -0700
***************
*** 695,706 ****
;;; faces -mm ! (defcustom term-default-fg-color 'unspecified
    "Default color for foreground in `term'."
    :group 'term
    :type 'string)
! (defcustom term-default-bg-color 'unspecified
    "Default color for background in `term'."
    :group 'term
    :type 'string)
--- 695,706 ----
;;; faces -mm ! (defcustom term-default-fg-color (face-foreground term-current-face)
    "Default color for foreground in `term'."
    :group 'term
    :type 'string)
! (defcustom term-default-bg-color (face-background term-current-face)
    "Default color for background in `term'."
    :group 'term
    :type 'string)
***************
*** 1098,1103 ****
--- 1098,1105 ----
    (make-local-variable 'term-pending-delete-marker)
    (setq term-pending-delete-marker (make-marker))
    (make-local-variable 'term-current-face)
+ (setq term-current-face (list :background term-default-bg-color + :foreground term-default-fg-color))
    (make-local-variable 'term-pending-frame)
    (setq term-pending-frame nil)
    ;; Cua-mode's keybindings interfere with the term keybindings, disable it.
***************
*** 3055,3061 ****
    (setq term-scroll-start 0)
    (setq term-scroll-end term-height)
    (setq term-insert-mode nil)
!   (setq term-current-face nil)
    (setq term-ansi-current-underline nil)
    (setq term-ansi-current-bold nil)
    (setq term-ansi-current-reverse nil)
--- 3057,3064 ----
    (setq term-scroll-start 0)
    (setq term-scroll-end term-height)
    (setq term-insert-mode nil)
! (setq term-current-face (list :background term-default-bg-color ! :foreground term-default-fg-color))
    (setq term-ansi-current-underline nil)
    (setq term-ansi-current-bold nil)
    (setq term-ansi-current-reverse nil)
***************
*** 3117,3123 ****
;;; 0 (Reset) or unknown (reset anyway)
     (t
!     (setq term-current-face nil)
      (setq term-ansi-current-underline nil)
      (setq term-ansi-current-bold nil)
      (setq term-ansi-current-reverse nil)
--- 3120,3127 ----
;;; 0 (Reset) or unknown (reset anyway)
     (t
! (setq term-current-face (list :background term-default-bg-color ! :foreground term-default-fg-color))
      (setq term-ansi-current-underline nil)
      (setq term-ansi-current-bold nil)
      (setq term-ansi-current-reverse nil)
***************
*** 3154,3164 ****
            (setq term-current-face
                  (list :background
                        (if (= term-ansi-current-color 0)
!                           (face-foreground 'default)
                          (elt ansi-term-color-vector term-ansi-current-color))
                        :foreground
                        (if (= term-ansi-current-bg-color 0)
!                           (face-background 'default)
                          (elt ansi-term-color-vector 
term-ansi-current-bg-color))))
            (when term-ansi-current-bold
              (setq term-current-face
--- 3158,3168 ----
            (setq term-current-face
                  (list :background
                        (if (= term-ansi-current-color 0)
!                           term-default-fg-color
                          (elt ansi-term-color-vector term-ansi-current-color))
                        :foreground
                        (if (= term-ansi-current-bg-color 0)
!                           term-default-bg-color
                          (elt ansi-term-color-vector 
term-ansi-current-bg-color))))
            (when term-ansi-current-bold
              (setq term-current-face
***************
*** 3181,3189 ****
                  )
          (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)))
          (when term-ansi-current-bold
            (setq term-current-face
                  (append '(:weight bold) term-current-face)))
--- 3185,3198 ----
                  )
          (setq term-current-face
                (list :foreground
!                       (if (= term-ansi-current-color 0)
!                           term-default-fg-color
!                         (elt ansi-term-color-vector
term-ansi-current-color))
                      :background
+                       (if (= term-ansi-current-bg-color 0)
+                           term-default-bg-color
                      (elt ansi-term-color-vector term-ansi-current-bg-color)))
+                 )
          (when term-ansi-current-bold
            (setq term-current-face
                  (append '(:weight bold) term-current-face)))





reply via email to

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