From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Richard Stallman Newsgroups: gmane.emacs.devel Subject: Patch to term.el Date: Sun, 05 Aug 2007 09:31:29 -0400 Message-ID: Reply-To: rms@gnu.org NNTP-Posting-Host: lo.gmane.org Content-Type: text/plain; charset=ISO-8859-15 X-Trace: sea.gmane.org 1186320550 5547 80.91.229.12 (5 Aug 2007 13:29:10 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Sun, 5 Aug 2007 13:29:10 +0000 (UTC) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sun Aug 05 15:29:08 2007 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1IHgAL-0003Ka-HS for ged-emacs-devel@m.gmane.org; Sun, 05 Aug 2007 15:29:08 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IHgAJ-0003iN-MK for ged-emacs-devel@m.gmane.org; Sun, 05 Aug 2007 09:29:03 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IHgAF-0003hy-UY for emacs-devel@gnu.org; Sun, 05 Aug 2007 09:29:00 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IHgAE-0003hW-0Z for emacs-devel@gnu.org; Sun, 05 Aug 2007 09:28:59 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IHgAD-0003hQ-QE for emacs-devel@gnu.org; Sun, 05 Aug 2007 09:28:57 -0400 Original-Received: from fencepost.gnu.org ([140.186.70.10]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IHgAB-0001yD-QU for emacs-devel@gnu.org; Sun, 05 Aug 2007 09:28:56 -0400 Original-Received: from rms by fencepost.gnu.org with local (Exim 4.60) (envelope-from ) id 1IHgCf-0007Rg-Bf; Sun, 05 Aug 2007 09:31:29 -0400 X-Detected-Kernel: Linux 2.6, seldom 2.4 (older, 4) X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:76052 Archived-At: Would someone please install this patch (a tiny change) in Emacs 22? It is a tiny change. Date: Mon, 23 Jul 2007 12:22:56 -0700 (PDT) From: Peter Povinec To: Dan Nicolaescu In-Reply-To: <200707021728.l62HSpEj014971@oogie-boogie.ics.uci.edu> MIME-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Message-ID: <831335.3790.qm@web57313.mail.re1.yahoo.com> X-detected-kernel: FreeBSD 6.x (1) X-Mailman-Approved-At: Mon, 23 Jul 2007 16:43:41 -0400 Cc: bug-gnu-emacs@gnu.org Subject: Re: Setting term-default-fg-color/term-default-bg-color has no effect X-BeenThere: bug-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: bug-gnu-emacs-bounces+rms=gnu.org@gnu.org Errors-To: bug-gnu-emacs-bounces+rms=gnu.org@gnu.org 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 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))) ____________________________________________________________________________________