From mboxrd@z Thu Jan 1 00:00:00 1970 From: John Kitchin Subject: Re: dynamically set face [was: semi-visible stars?] Date: Thu, 01 Dec 2016 14:07:36 -0500 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain Return-path: Received: from eggs.gnu.org ([2001:4830:134:3::10]:43101) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cCWht-0006oS-3U for emacs-orgmode@gnu.org; Thu, 01 Dec 2016 14:07:46 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cCWho-0003a5-4e for emacs-orgmode@gnu.org; Thu, 01 Dec 2016 14:07:45 -0500 Received: from mail-qk0-x236.google.com ([2607:f8b0:400d:c09::236]:35208) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cCWhn-0003ZP-U4 for emacs-orgmode@gnu.org; Thu, 01 Dec 2016 14:07:40 -0500 Received: by mail-qk0-x236.google.com with SMTP id n204so255374194qke.2 for ; Thu, 01 Dec 2016 11:07:39 -0800 (PST) In-reply-to: List-Id: "General discussions about Org-mode." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-orgmode-bounces+geo-emacs-orgmode=m.gmane.org@gnu.org Sender: "Emacs-orgmode" To: Matt Price Cc: Org Mode Try: `((((background light)) (:foreground ,(format (face-attribute 'default :background)) )) (((background dark)) (:foreground ,(format (face-attribute 'default :background))))) Note the backtick and the commas. The functions in your list are treated like data and not evaluated. The backtick and commas will evaluate the format sexps and might do what you want. I am pretty sure this won't be dynamic though, it will only define the face when it is loaded in your init files. For that, it seems like you might need to use set-face-attribute in a hook function. As for the persistence, I guess something is getting saved in your custom.el file which gets reloaded after a restart. Matt Price writes: > On Thu, Dec 1, 2016 at 10:22 AM, Matt Price wrote: > >> >> >> On Wed, Nov 30, 2016 at 3:41 PM, Matt Price wrote: >> >>> I have been fooling around a little bit with color-themes and also the >>> new emacs 24+ custom themes, and find that (perhaps because of using >>> desktop-mode) there are certain traces of the theming that get left behind >>> in the display even when I've restarted Emacs after trying hard to erase >>> them. >>> >>> One of these is the frequent appearance of pale stars even when >>> org-indent-mode is turned on. See the attached screenshot for details. >>> The initial stars in a lower-level headline are visible, as are leading >>> stars in front of the indented text. I find this quite distracting! Does >>> anyone know what might be causing this, how I can get rid of them, and also >>> how I would in general go about figuring out how to identify the cause of >>> similar appearance-related issues in Emacs? >>> >> >> I just navigated to org-faces.el and executed M-C-x on this defface: >> >> (defface org-hide >> '((((background light)) (:foreground "white")) >> (((background dark)) (:foreground "black"))) >> "Face used to hide leading stars in headlines. >> The foreground color of this face should be equal to the background >> color of the frame." >> :group 'org-faces) >> >> problem solved. Sorry for the noise. >> >> OK, not solved, exactly. I have (setq color-theme-is-global t) in order to > differentiate between different frames (one for mail, one for code, one for > org). When I switch between the mail frame (using the 'wheat' theme) and > the org frame (which uses a default theme), the color of org-hide seems to > get set to the light golden brown color that 'wheat' ueses as its > background color. Here's the extremely short definition of the wheat > color-theme: > > (defun color-theme-wheat () > "Default colors on a wheat background. > Calls the standard color theme function `color-theme-standard' in order > to reset all faces." > (interactive) > (color-theme-standard) > (let ((color-theme-is-cumulative t)) > (color-theme-install > '(color-theme-wheat > ((background-color . "Wheat")))))) > > I'm not sure why this messes up the other frames, but clearly it does. I'm > thinking that if I can dynamically set the :foreground color to *whatever > the background color is in the frame*, that might fix the issue. So I > tried this: > > > (defface org-hide > '((((background light)) (:foreground (format (face-attribute 'default > :background)) )) > (((background dark)) (:foreground (format (face-attribute 'default > :background))))) > "Face used to hide leading stars in headlines. > The foreground color of this face should be equal to the background > color of the frame." > :group 'org-faces) > > but I get this error: > > set-face-attribute: Wrong type argument: stringp, (format (face-attribute > (quote default) :background)) > > Obviously my understanding of lisp types is a little weak, but (type-of > (format (face-attribute 'default :background))) returns "string". So > what's wrong here? And am I going about this the right way? > > Thank you! > m > > > >> >>> Thank you! >>> >>> Matt >>> >>> >> -- Professor John Kitchin Doherty Hall A207F Department of Chemical Engineering Carnegie Mellon University Pittsburgh, PA 15213 412-268-7803 @johnkitchin http://kitchingroup.cheme.cmu.edu