bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#7966: 23.1.50; bold property, dark background, and defface


From: Glenn Morris
Subject: bug#7966: 23.1.50; bold property, dark background, and defface
Date: Fri, 04 Feb 2011 14:02:35 -0500
User-agent: Gnus (www.gnus.org), GNU Emacs (www.gnu.org/software/emacs/)

"Jose F. Morales" wrote:

> BTW, I have checked that the font-locking part of many .el files still
> use the old ":bold t" (e.g., org-mode), and so, are misbehaving.

I would change them all to use :weight, but I imagine it's because they
want to be compatible with old Emacs versions, sigh.

Can the use of :bold and :italic at least be declared obsolete?

Anyway, here is a possible fix. I would appreciate comments from people
who understand the face code.

I wonder if this issue affects anything else. I also tried adding bold
and italic to face-attribute-name-alist, and changing
internal-get-lisp-face-attribute; but that seemed to cause problems.

=== modified file 'lisp/faces.el'
*** lisp/faces.el       2011-02-03 06:55:48 +0000
--- lisp/faces.el       2011-02-04 18:53:56 +0000
***************
*** 1605,1617 ****
  is used.  If nil or omitted, use the selected frame."
    (unless frame
      (setq frame (selected-frame)))
!   (let ((list face-attribute-name-alist)
!       (match t))
      (while (and match (not (null list)))
        (let* ((attr (car (car list)))
             (specified-value
!             (if (plist-member attrs attr)
!                 (plist-get attrs attr)
                'unspecified))
             (value-now (face-attribute face attr frame)))
        (setq match (equal specified-value value-now))
--- 1605,1631 ----
  is used.  If nil or omitted, use the selected frame."
    (unless frame
      (setq frame (selected-frame)))
!   (let* ((list face-attribute-name-alist)
!        (match t)
!        (bold (and (plist-member attrs :bold)
!                   (not (plist-member attrs :weight))))
!        (italic (and (plist-member attrs :italic)
!                     (not (plist-member attrs :slant))))
!        (plist (if (or bold italic)
!                   (copy-sequence attrs)
!                 attrs)))
!     ;; Handle the Emacs 20 :bold and :italic properties.
!     (if bold
!       (plist-put plist :weight (if bold 'bold 'normal)))
!     (if italic
!       (plist-put plist :slant (if italic 'italic 'normal)))
      (while (and match (not (null list)))
        (let* ((attr (car (car list)))
             (specified-value
!             (if (plist-member plist attr)
!                 (plist-get plist attr)
                'unspecified))
             (value-now (face-attribute face attr frame)))
        (setq match (equal specified-value value-now))






reply via email to

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