GNU bug report logs -
#4988
23.1; In Emacs 23, face-spec-set amends instead of setting
Previous Next
Reported by: trentbuck <at> gmail.com
Date: Fri, 20 Nov 2009 14:35:03 UTC
Severity: normal
Done: Chong Yidong <cyd <at> gnu.org>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 4988 in the body.
You can then email your comments to 4988 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-submit-list <at> lists.donarmstrong.com, Emacs Bugs <bug-gnu-emacs <at> gnu.org>
:
bug#4988
; Package
emacs
.
(Fri, 20 Nov 2009 14:35:04 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
trentbuck <at> gmail.com
:
New bug report received and forwarded. Copy sent to
Emacs Bugs <bug-gnu-emacs <at> gnu.org>
.
(Fri, 20 Nov 2009 14:35:04 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> emacsbugs.donarmstrong.com (full text, mbox):
In Emacs 22,
(face-spec-set 'ido-subdir '((t :inherit dired-directory)))
sets the ido-subdir face. In Emacs 23, the same form merely amends
the defface spec -- the defface's :foreground "red" property isn't
unset. This problem has existed for a long time; until recently I was
working around it with filthy kludges of the form
(put 'ido-subdir 'face-alias 'dired-directory)
Today, I wanted to make w3m-anchor inherit from the 'link face, but to
override :underline. So I tried this, and rediscovered the problem.
(face-spec-set 'w3m-anchor '((t :inherit link :underline nil)))
The elisp code below, when loaded by emacs -Q, demonstrates the
problem (by taking snapshots of customize-face's rendering of the face
after each attempt).
I apologize for the ranting below. By this point, I am sick of trying
to wade through all this new 'theme-foo crap that manages to make the
face subsystem even more obtuse and confusing than it already was.
;; Goal: to completely destory upstream's ido-subdir's spec and
;; replace it with a simple (t :inherit 'dired-directory).
;;
;; Load this with emacs -Q -l example.el
(require 'dired)
(require 'ido)
(defun snapshot (description)
(customize-face 'ido-subdir)
(search-forward "Attributes: ")
(kill-ring-save (point-at-bol)
(point-max))
(switch-to-buffer "*scratch*")
(insert description)
(insert "\n")
(yank)
(insert "\n"))
(snapshot "Before doing anything")
(face-spec-set 'ido-subdir '((t :inherit dired-directory)) t)
(snapshot "face-spec-set with FOR-DEFFACE does nothing. Just checking...")
(face-spec-set 'ido-subdir '((t :inherit dired-directory)))
(snapshot "face-spec-set without FOR-DEFFACE *amends* in Emacs 23,
whereas in Emacs 22 it used to work as advertised -- it *set* the face!")
(face-spec-reset-face 'ido-subdir)
(face-spec-set 'ido-subdir '((t :inherit dired-directory)))
(snapshot "Does a face-spec-RESET-face work? No!")
(custom-set-faces '(ido-subdir ((t :inherit dired-directory))))
(snapshot "CUSTOM-SET-FACES works (if you comment out the previous
attempts above), but it's aesthetically ugly to have multiple C-S-F
calls in my .emacs. Nor do I want to sort my .emacs configuration by
the kind of variables I set -- foo face configuration belongs with foo
variable configuration and foo helper functions.")
(face-spec-set 'ido-subdir '((t :foreground nil :inherit dired-directory)))
(snapshot "Yes, I can use :foreground nil, but to do so, I need to
know that upstream is using :foreground and not something else. Am I
expected to use :foo nil for *ALL* properties, in case upstream
decides to set another property in the next release?!")
In GNU Emacs 23.1.1 (i486-pc-linux-gnu)
of 2009-09-14 on raven, modified by Debian
configured using `configure '--build=i486-linux-gnu' '--host=i486-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var/lib' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--enable-locallisppath=/etc/emacs23:/etc/emacs:/usr/local/share/emacs/23.1/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/23.1/site-lisp:/usr/share/emacs/site-lisp:/usr/share/emacs/23.1/leim' '--with-x=no' 'build_alias=i486-linux-gnu' 'host_alias=i486-linux-gnu' 'CFLAGS=-DDEBIAN -g -O2' 'LDFLAGS=-g' 'CPPFLAGS=''
Important settings:
value of $LC_ALL: nil
value of $LC_COLLATE: C
value of $LC_CTYPE: nil
value of $LC_MESSAGES: nil
value of $LC_MONETARY: nil
value of $LC_NUMERIC: nil
value of $LC_TIME: nil
value of $LANG: en_AU.utf8
value of $XMODIFIERS: nil
locale-coding-system: utf-8-unix
default-enable-multibyte-characters: t
Major mode: rcirc
Minor modes in effect:
shell-dirtrack-mode: t
rcirc-low-priority-flag: t
rcirc-omit-mode: t
diff-auto-refine-mode: t
rcirc-track-minor-mode: t
xterm-mouse-mode: t
savehist-mode: t
icomplete-mode: t
partial-completion-mode: t
show-paren-mode: t
delete-selection-mode: t
use-hard-newlines: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
global-auto-composition-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
column-number-mode: t
line-number-mode: t
transient-mark-mode: t
Recent input:
t , SPC DEL DEL SPC E V E R SPC g o o DEL DEL DEL b
e c o m e SPC e DEL t e l e v i s i o n SPC r p DEL
DEL p r e s e n t e r s RET E v e n SPC o n e s SPC
w i t h SPC n o SPC f a c i a l SPC ESC b ESC [ 1 ~
C-k E v e n SPC t h e SPC w u s s y SPC o n e s SPC
w i t h SPC n o SPC m o u s t a c h e , SPC l i k e
SPC M a c C DEL G u y v e r ESC [ 1 ~ C-k C-x ESC O
D ESC O B ESC O A ESC O A ESC [ 4 ~ ESC O C C-x ESC
O C ESC x r e p o r t SPC e m a c s SPC b u g RET f
a c e - s p e c - s e t SPC n o w SPC a m e n d s ESC
[ 1 ~ C-k TAB C-g C-x ESC O B TAB I SPC n e v e r SPC
c l a i m e d SPC h e SPC w a s SPC c o o l SPC - -
SPC j u s t SPC h i s SPC n a m e SPC i s SPC c o o
l RET C-r j e w i s h RET RET RET C-x ESC O D C-x ESC
O C ESC x ESC O A RET
Recent messages:
Mark saved where search started [6 times]
Mark set
Mark activated
Quit
Mark set
Mark saved where search started
Mark set [2 times]
Quit [2 times]
windmove-do-window-select: Minibuffer is inactive
Mark saved where search started
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#4988
; Package
emacs
.
(Sun, 25 Nov 2012 04:58:01 GMT)
Full text and
rfc822 format available.
Message #8 received at submit <at> debbugs.gnu.org (full text, mbox):
trentbuck <at> gmail.com writes:
> In Emacs 22,
>
> (face-spec-set 'ido-subdir '((t :inherit dired-directory)))
>
> sets the ido-subdir face. In Emacs 23, the same form merely amends
> the defface spec -- the defface's :foreground "red" property isn't
> unset.
I've committed a change to face-spec-set in trunk which fixes this.
Reply sent
to
Chong Yidong <cyd <at> gnu.org>
:
You have taken responsibility.
(Sun, 25 Nov 2012 04:58:02 GMT)
Full text and
rfc822 format available.
Notification sent
to
trentbuck <at> gmail.com
:
bug acknowledged by developer.
(Sun, 25 Nov 2012 04:58:02 GMT)
Full text and
rfc822 format available.
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Sun, 23 Dec 2012 12:24:05 GMT)
Full text and
rfc822 format available.
This bug report was last modified 12 years and 182 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.