* custom-set-faces for various file types @ 2020-11-22 17:30 Christopher Dimech 2020-11-22 20:57 ` Michael Heerdegen 0 siblings, 1 reply; 9+ messages in thread From: Christopher Dimech @ 2020-11-22 17:30 UTC (permalink / raw) To: Help Gnu Emacs I am setting custom-set-faces for various file types (e.g. .org). I see that emacs requires only one instance of custom-set-variables. When setting custom-set-faces for org mode, is it acceptable to put the custom-set-faces code for that file type in the corresponding org-init.el file (etc for other file types). Or is it a better strategy in have all custom-set-faces together? Regards Christopher ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: custom-set-faces for various file types 2020-11-22 17:30 custom-set-faces for various file types Christopher Dimech @ 2020-11-22 20:57 ` Michael Heerdegen 2020-11-22 21:16 ` Christopher Dimech 0 siblings, 1 reply; 9+ messages in thread From: Michael Heerdegen @ 2020-11-22 20:57 UTC (permalink / raw) To: help-gnu-emacs Christopher Dimech <dimech@gmx.com> writes: > I am setting custom-set-faces for various file types (e.g. .org). > I see that emacs requires only one instance of custom-set-variables. > > When setting custom-set-faces for org mode, is it acceptable to put > the custom-set-faces code for that file type in the corresponding > org-init.el file (etc for other file types). > > Or is it a better strategy in have all custom-set-faces together? What is your goal? Faces looking differently depending on the major mode? Michael. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: custom-set-faces for various file types 2020-11-22 20:57 ` Michael Heerdegen @ 2020-11-22 21:16 ` Christopher Dimech 2020-11-22 21:39 ` Michael Heerdegen 0 siblings, 1 reply; 9+ messages in thread From: Christopher Dimech @ 2020-11-22 21:16 UTC (permalink / raw) To: Michael Heerdegen; +Cc: help-gnu-emacs > Sent: Sunday, November 22, 2020 at 9:57 PM > From: "Michael Heerdegen" <michael_heerdegen@web.de> > To: help-gnu-emacs@gnu.org > Subject: Re: custom-set-faces for various file types > > Christopher Dimech <dimech@gmx.com> writes: > > > I am setting custom-set-faces for various file types (e.g. .org). > > I see that emacs requires only one instance of custom-set-variables. > > > > When setting custom-set-faces for org mode, is it acceptable to put > > the custom-set-faces code for that file type in the corresponding > > org-init.el file (etc for other file types). > > > > Or is it a better strategy in have all custom-set-faces together? > > What is your goal? Faces looking differently depending on the major > mode? I would like that some special constructs are highligthed so that the contrast would be suitable for assistive reasons. For instance, in current texinfo modes, constructs in pure tex do not get highlighted. So I have some code that uses custom-set-faces in texi-init.el. The Manual says that custom-set-variables must be only called once. I can call it once in emacs-init.el, then call custom-set-faces in each major mode init file where I would like a change. Another possibility is to put them all together in emacs-init.el that sets the highlighting, even though I would also have separate org-init.el, texi-init.el, and so on. > Michael. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: custom-set-faces for various file types 2020-11-22 21:16 ` Christopher Dimech @ 2020-11-22 21:39 ` Michael Heerdegen 2020-11-22 22:04 ` Christopher Dimech 2020-11-22 22:10 ` Christopher Dimech 0 siblings, 2 replies; 9+ messages in thread From: Michael Heerdegen @ 2020-11-22 21:39 UTC (permalink / raw) To: help-gnu-emacs Christopher Dimech <dimech@gmx.com> writes: > > What is your goal? Faces looking differently depending on the major > > mode? > > I would like that some special constructs are highligthed so that the > contrast would be suitable for assistive reasons. For instance, in > current texinfo modes, constructs in pure tex do not get highlighted. > So I have some code that uses custom-set-faces in texi-init.el. > > The Manual says that custom-set-variables must be only called once. > [...] I don't think custom is the right tool for your purpose. Face definitions are global. You can switch between settings ("themes"), but the effect is always global. For texinfo, maybe you could instead change the font-locking of the mode? It's defined in `texinfo-font-lock-keywords'. Maybe it's enough to add an entry to that list? Emacs also supports per-buffer modifications of faces. The mechanism is called "face-remap". You could use it in the mode's hooks to change how a face looks like in buffers using that mode. `face-remap-add-relative' is the function to use, takes a face and a list of specs. Using that would be a cleaner solution for your case I think. Michael. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: custom-set-faces for various file types 2020-11-22 21:39 ` Michael Heerdegen @ 2020-11-22 22:04 ` Christopher Dimech 2020-11-22 22:10 ` Christopher Dimech 1 sibling, 0 replies; 9+ messages in thread From: Christopher Dimech @ 2020-11-22 22:04 UTC (permalink / raw) To: Michael Heerdegen; +Cc: help-gnu-emacs I was using this for org mode (custom-set-faces '(org-level-1 ((t (:foreground "cyan1")))) '(org-level-2 ((t (:foreground "chartreuse")))) '(org-level-3 ((t (:foreground "dark orange")))) '(org-level-4 ((t (:foreground "yellow")))) '(org-level-5 ((t (:foreground "magenta")))) '(org-level-6 ((t (:foreground "tan1")))) '(org-level-7 ((t (:foreground "deep sky blue")))) '(org-level-8 ((t (:foreground "orange red")))) ) > Sent: Sunday, November 22, 2020 at 10:39 PM > From: "Michael Heerdegen" <michael_heerdegen@web.de> > To: help-gnu-emacs@gnu.org > Subject: Re: custom-set-faces for various file types > > Christopher Dimech <dimech@gmx.com> writes: > > > > What is your goal? Faces looking differently depending on the major > > > mode? > > > > I would like that some special constructs are highligthed so that the > > contrast would be suitable for assistive reasons. For instance, in > > current texinfo modes, constructs in pure tex do not get highlighted. > > So I have some code that uses custom-set-faces in texi-init.el. > > > > The Manual says that custom-set-variables must be only called once. > > [...] > > I don't think custom is the right tool for your purpose. Face > definitions are global. You can switch between settings ("themes"), but > the effect is always global. > > For texinfo, maybe you could instead change the font-locking of the > mode? It's defined in `texinfo-font-lock-keywords'. Maybe it's enough > to add an entry to that list? > > Emacs also supports per-buffer modifications of faces. The mechanism is > called "face-remap". You could use it in the mode's hooks to change how > a face looks like in buffers using that mode. `face-remap-add-relative' > is the function to use, takes a face and a list of specs. Using that > would be a cleaner solution for your case I think. > > Michael. > > > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: custom-set-faces for various file types 2020-11-22 21:39 ` Michael Heerdegen 2020-11-22 22:04 ` Christopher Dimech @ 2020-11-22 22:10 ` Christopher Dimech 2020-11-22 22:53 ` Christopher Dimech 1 sibling, 1 reply; 9+ messages in thread From: Christopher Dimech @ 2020-11-22 22:10 UTC (permalink / raw) To: Michael Heerdegen; +Cc: help-gnu-emacs Could you help me redo the following using face-remap (add-hook 'texinfo-mode-hook (custom-set-faces '(font-lock-variable-name-face ((t (:foreground "green")))) '(font-lock-builtin-face ((t (:foreground "green")))) )) ;; ---------------------------------------------------------------------- ;; Colourise Texinfo Outlines Levels (Chapters, Sections, Headlines) (custom-set-faces '(texinfo-heading ((t (:inherit font-lock-function-name-face :foreground "#ffdd00"))) )) ;; ---------------------------------------------------------------------- ;; Colourise Org-Mode Heading Levels (custom-set-faces '(org-level-1 ((t (:foreground "cyan1")))) '(org-level-2 ((t (:foreground "chartreuse")))) '(org-level-3 ((t (:foreground "dark orange")))) '(org-level-4 ((t (:foreground "yellow")))) '(org-level-5 ((t (:foreground "magenta")))) '(org-level-6 ((t (:foreground "tan1")))) '(org-level-7 ((t (:foreground "deep sky blue")))) '(org-level-8 ((t (:foreground "orange red")))) ) > Sent: Sunday, November 22, 2020 at 10:39 PM > From: "Michael Heerdegen" <michael_heerdegen@web.de> > To: help-gnu-emacs@gnu.org > Subject: Re: custom-set-faces for various file types > > Christopher Dimech <dimech@gmx.com> writes: > > > > What is your goal? Faces looking differently depending on the major > > > mode? > > > > I would like that some special constructs are highligthed so that the > > contrast would be suitable for assistive reasons. For instance, in > > current texinfo modes, constructs in pure tex do not get highlighted. > > So I have some code that uses custom-set-faces in texi-init.el. > > > > The Manual says that custom-set-variables must be only called once. > > [...] > > I don't think custom is the right tool for your purpose. Face > definitions are global. You can switch between settings ("themes"), but > the effect is always global. > > For texinfo, maybe you could instead change the font-locking of the > mode? It's defined in `texinfo-font-lock-keywords'. Maybe it's enough > to add an entry to that list? > > Emacs also supports per-buffer modifications of faces. The mechanism is > called "face-remap". You could use it in the mode's hooks to change how > a face looks like in buffers using that mode. `face-remap-add-relative' > is the function to use, takes a face and a list of specs. Using that > would be a cleaner solution for your case I think. > > Michael. > > > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: custom-set-faces for various file types 2020-11-22 22:10 ` Christopher Dimech @ 2020-11-22 22:53 ` Christopher Dimech 2020-11-22 23:38 ` Michael Heerdegen 0 siblings, 1 reply; 9+ messages in thread From: Christopher Dimech @ 2020-11-22 22:53 UTC (permalink / raw) To: Christopher Dimech; +Cc: Michael Heerdegen, help-gnu-emacs Would this be good (add-hook 'org-mode-hook (lambda () (face-remap-add-relative '(org-level-1 ((t (:foreground "cyan1")))) '(org-level-2 ((t (:foreground "chartreuse")))) '(org-level-3 ((t (:foreground "dark orange")))) '(org-level-4 ((t (:foreground "yellow")))) '(org-level-5 ((t (:foreground "magenta")))) '(org-level-6 ((t (:foreground "tan1")))) '(org-level-7 ((t (:foreground "deep sky blue")))) '(org-level-8 ((t (:foreground "orange red")))) ))) > Sent: Sunday, November 22, 2020 at 11:10 PM > From: "Christopher Dimech" <dimech@gmx.com> > To: "Michael Heerdegen" <michael_heerdegen@web.de> > Cc: help-gnu-emacs@gnu.org > Subject: Re: custom-set-faces for various file types > > Could you help me redo the following using face-remap > > (add-hook 'texinfo-mode-hook > (custom-set-faces > '(font-lock-variable-name-face ((t (:foreground "green")))) > '(font-lock-builtin-face ((t (:foreground "green")))) )) > > ;; ---------------------------------------------------------------------- > ;; Colourise Texinfo Outlines Levels (Chapters, Sections, Headlines) > (custom-set-faces > '(texinfo-heading > ((t (:inherit font-lock-function-name-face > :foreground "#ffdd00"))) )) > > ;; ---------------------------------------------------------------------- > ;; Colourise Org-Mode Heading Levels > (custom-set-faces > '(org-level-1 ((t (:foreground "cyan1")))) > '(org-level-2 ((t (:foreground "chartreuse")))) > '(org-level-3 ((t (:foreground "dark orange")))) > '(org-level-4 ((t (:foreground "yellow")))) > '(org-level-5 ((t (:foreground "magenta")))) > '(org-level-6 ((t (:foreground "tan1")))) > '(org-level-7 ((t (:foreground "deep sky blue")))) > '(org-level-8 ((t (:foreground "orange red")))) ) > > > > > Sent: Sunday, November 22, 2020 at 10:39 PM > > From: "Michael Heerdegen" <michael_heerdegen@web.de> > > To: help-gnu-emacs@gnu.org > > Subject: Re: custom-set-faces for various file types > > > > Christopher Dimech <dimech@gmx.com> writes: > > > > > > What is your goal? Faces looking differently depending on the major > > > > mode? > > > > > > I would like that some special constructs are highligthed so that the > > > contrast would be suitable for assistive reasons. For instance, in > > > current texinfo modes, constructs in pure tex do not get highlighted. > > > So I have some code that uses custom-set-faces in texi-init.el. > > > > > > The Manual says that custom-set-variables must be only called once. > > > [...] > > > > I don't think custom is the right tool for your purpose. Face > > definitions are global. You can switch between settings ("themes"), but > > the effect is always global. > > > > For texinfo, maybe you could instead change the font-locking of the > > mode? It's defined in `texinfo-font-lock-keywords'. Maybe it's enough > > to add an entry to that list? > > > > Emacs also supports per-buffer modifications of faces. The mechanism is > > called "face-remap". You could use it in the mode's hooks to change how > > a face looks like in buffers using that mode. `face-remap-add-relative' > > is the function to use, takes a face and a list of specs. Using that > > would be a cleaner solution for your case I think. > > > > Michael. > > > > > > > > ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: custom-set-faces for various file types 2020-11-22 22:53 ` Christopher Dimech @ 2020-11-22 23:38 ` Michael Heerdegen 2020-11-22 23:52 ` Christopher Dimech 0 siblings, 1 reply; 9+ messages in thread From: Michael Heerdegen @ 2020-11-22 23:38 UTC (permalink / raw) To: Christopher Dimech; +Cc: help-gnu-emacs Christopher Dimech <dimech@gmx.com> writes: > Would this be good > > (add-hook 'org-mode-hook > (lambda () > (face-remap-add-relative > '(org-level-1 ((t (:foreground "cyan1")))) > '(org-level-2 ((t (:foreground "chartreuse")))) > '(org-level-3 ((t (:foreground "dark orange")))) > '(org-level-4 ((t (:foreground "yellow")))) > '(org-level-5 ((t (:foreground "magenta")))) > '(org-level-6 ((t (:foreground "tan1")))) > '(org-level-7 ((t (:foreground "deep sky blue")))) > '(org-level-8 ((t (:foreground "orange red")))) ))) So far you only showed settings of different, mode specific faces. Your situation seems to be less complex than I understood, and you don't need face remapping for these examples; simple `face-spec-set' calls are good enough. BTW, as far as I recall, if you know what your are doing, it is even ok to have multiple `custom-set-faces' calls in your init file. I don't recall what happens when your custom file gets written, probably it will save your settings a second time there, and that may cause trouble (only later, much later...) So, for your init file, `face-spec-set' is better, and for per mode settings of the faces shared by several modes, you want to use face remapping. `text-scale-mode' is such a use case, for example (it modifies the `default' face, i.e., by inheriting, mostly all faces, buffer locally). Michael. ^ permalink raw reply [flat|nested] 9+ messages in thread
* Re: custom-set-faces for various file types 2020-11-22 23:38 ` Michael Heerdegen @ 2020-11-22 23:52 ` Christopher Dimech 0 siblings, 0 replies; 9+ messages in thread From: Christopher Dimech @ 2020-11-22 23:52 UTC (permalink / raw) To: Michael Heerdegen; +Cc: help-gnu-emacs > Sent: Monday, November 23, 2020 at 12:38 AM > From: "Michael Heerdegen" <michael_heerdegen@web.de> > To: "Christopher Dimech" <dimech@gmx.com> > Cc: help-gnu-emacs@gnu.org > Subject: Re: custom-set-faces for various file types > > Christopher Dimech <dimech@gmx.com> writes: > > > Would this be good > > > > (add-hook 'org-mode-hook > > (lambda () > > (face-remap-add-relative > > '(org-level-1 ((t (:foreground "cyan1")))) > > '(org-level-2 ((t (:foreground "chartreuse")))) > > '(org-level-3 ((t (:foreground "dark orange")))) > > '(org-level-4 ((t (:foreground "yellow")))) > > '(org-level-5 ((t (:foreground "magenta")))) > > '(org-level-6 ((t (:foreground "tan1")))) > > '(org-level-7 ((t (:foreground "deep sky blue")))) > > '(org-level-8 ((t (:foreground "orange red")))) ))) > > So far you only showed settings of different, mode specific faces. Your > situation seems to be less complex than I understood, and you don't need > face remapping for these examples; simple `face-spec-set' calls are good > enough. Correct. They are already mode specific. Still I might need to change others and would have a good system. It would also help others making modifications without having to figure out what to do. Still, as you suggest I can code tho part for mode specific faces differently. Then others can find a number of different constructs to learn from, rather than just one way that simply solve mp problems. > BTW, as far as I recall, if you know what your are doing, it is even ok > to have multiple `custom-set-faces' calls in your init file. I don't > recall what happens when your custom file gets written, probably it will > save your settings a second time there, and that may cause trouble (only > later, much later...) > > So, for your init file, `face-spec-set' is better, and for per mode > settings of the faces shared by several modes, you want to use face > remapping. `text-scale-mode' is such a use case, for example (it > modifies the `default' face, i.e., by inheriting, mostly all faces, > buffer locally). > > > Michael. > > ^ permalink raw reply [flat|nested] 9+ messages in thread
end of thread, other threads:[~2020-11-22 23:52 UTC | newest] Thread overview: 9+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2020-11-22 17:30 custom-set-faces for various file types Christopher Dimech 2020-11-22 20:57 ` Michael Heerdegen 2020-11-22 21:16 ` Christopher Dimech 2020-11-22 21:39 ` Michael Heerdegen 2020-11-22 22:04 ` Christopher Dimech 2020-11-22 22:10 ` Christopher Dimech 2020-11-22 22:53 ` Christopher Dimech 2020-11-22 23:38 ` Michael Heerdegen 2020-11-22 23:52 ` Christopher Dimech
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).