1999-07-21 21:43:52 +00:00
|
|
|
|
;;; faces.el --- Lisp faces
|
1993-04-03 23:28:03 +00:00
|
|
|
|
|
2015-01-01 22:26:41 +00:00
|
|
|
|
;; Copyright (C) 1992-1996, 1998-2015 Free Software Foundation, Inc.
|
1993-04-03 23:28:03 +00:00
|
|
|
|
|
2014-02-10 01:34:22 +00:00
|
|
|
|
;; Maintainer: emacs-devel@gnu.org
|
2002-05-02 05:41:46 +00:00
|
|
|
|
;; Keywords: internal
|
2010-08-29 16:17:13 +00:00
|
|
|
|
;; Package: emacs
|
2001-08-06 10:12:17 +00:00
|
|
|
|
|
1993-04-03 23:28:03 +00:00
|
|
|
|
;; This file is part of GNU Emacs.
|
|
|
|
|
|
2008-05-06 08:06:51 +00:00
|
|
|
|
;; GNU Emacs is free software: you can redistribute it and/or modify
|
1993-04-03 23:28:03 +00:00
|
|
|
|
;; it under the terms of the GNU General Public License as published by
|
2008-05-06 08:06:51 +00:00
|
|
|
|
;; the Free Software Foundation, either version 3 of the License, or
|
|
|
|
|
;; (at your option) any later version.
|
1993-04-03 23:28:03 +00:00
|
|
|
|
|
|
|
|
|
;; GNU Emacs is distributed in the hope that it will be useful,
|
|
|
|
|
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
|
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
|
;; GNU General Public License for more details.
|
|
|
|
|
|
|
|
|
|
;; You should have received a copy of the GNU General Public License
|
2008-05-06 08:06:51 +00:00
|
|
|
|
;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
|
1993-04-03 23:28:03 +00:00
|
|
|
|
|
|
|
|
|
;;; Commentary:
|
|
|
|
|
|
|
|
|
|
;;; Code:
|
|
|
|
|
|
2012-05-24 07:53:21 +00:00
|
|
|
|
(defcustom term-file-prefix (purecopy "term/")
|
|
|
|
|
"If non-nil, Emacs startup performs terminal-specific initialization.
|
|
|
|
|
It does this by: (load (concat term-file-prefix (getenv \"TERM\")))
|
|
|
|
|
|
|
|
|
|
You may set this variable to nil in your init file if you do not wish
|
|
|
|
|
the terminal-initialization file to be loaded."
|
|
|
|
|
:type '(choice (const :tag "No terminal-specific initialization" nil)
|
|
|
|
|
(string :tag "Name of directory with term files"))
|
|
|
|
|
:group 'terminals)
|
|
|
|
|
|
2014-03-28 01:39:30 +00:00
|
|
|
|
(defcustom term-file-aliases
|
|
|
|
|
'(("apollo" . "vt100")
|
|
|
|
|
("vt102" . "vt100")
|
|
|
|
|
("vt125" . "vt100")
|
|
|
|
|
("vt201" . "vt200")
|
|
|
|
|
("vt220" . "vt200")
|
|
|
|
|
("vt240" . "vt200")
|
|
|
|
|
("vt300" . "vt200")
|
|
|
|
|
("vt320" . "vt200")
|
|
|
|
|
("vt400" . "vt200")
|
|
|
|
|
("vt420" . "vt200")
|
|
|
|
|
)
|
|
|
|
|
"Alist of terminal type aliases.
|
|
|
|
|
Entries are of the form (TYPE . ALIAS), where both elements are strings.
|
|
|
|
|
This means to treat a terminal of type TYPE as if it were of type ALIAS."
|
|
|
|
|
:type '(alist :key-type (string :tag "Terminal")
|
|
|
|
|
:value-type (string :tag "Alias"))
|
|
|
|
|
:group 'terminals
|
2014-09-29 18:14:08 +00:00
|
|
|
|
:version "25.1")
|
2014-03-28 01:39:30 +00:00
|
|
|
|
|
2010-11-01 06:13:43 +00:00
|
|
|
|
(declare-function xw-defined-colors "term/common-win" (&optional frame))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
2005-08-31 13:48:58 +00:00
|
|
|
|
(defvar help-xref-stack-item)
|
2008-06-30 19:35:59 +00:00
|
|
|
|
|
|
|
|
|
(defvar face-name-history nil
|
|
|
|
|
"History list for some commands that read face names.
|
|
|
|
|
Maximum length of the history list is determined by the value
|
|
|
|
|
of `history-length', which see.")
|
|
|
|
|
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
;;; Font selection.
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
|
|
|
|
|
(defgroup font-selection nil
|
|
|
|
|
"Influencing face font selection."
|
|
|
|
|
:group 'faces)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defcustom face-font-selection-order
|
|
|
|
|
'(:width :height :weight :slant)
|
2008-12-03 05:48:14 +00:00
|
|
|
|
"A list specifying how face font selection chooses fonts.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
Each of the four symbols `:width', `:height', `:weight', and `:slant'
|
|
|
|
|
must appear once in the list, and the list must not contain any other
|
2007-10-10 20:18:20 +00:00
|
|
|
|
elements. Font selection first tries to find a best matching font
|
2007-10-09 11:48:08 +00:00
|
|
|
|
for those face attributes that appear before in the list. For
|
1999-07-21 21:43:52 +00:00
|
|
|
|
example, if `:slant' appears before `:height', font selection first
|
|
|
|
|
tries to find a font with a suitable slant, even if this results in
|
|
|
|
|
a font height that isn't optimal."
|
2002-12-07 20:57:53 +00:00
|
|
|
|
:tag "Font selection order"
|
2000-07-18 19:07:15 +00:00
|
|
|
|
:type '(list symbol symbol symbol symbol)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
:group 'font-selection
|
|
|
|
|
:set #'(lambda (symbol value)
|
|
|
|
|
(set-default symbol value)
|
|
|
|
|
(internal-set-font-selection-order value)))
|
|
|
|
|
|
2000-11-10 14:34:23 +00:00
|
|
|
|
|
2008-06-25 00:39:59 +00:00
|
|
|
|
;; In the absence of Fontconfig support, Monospace and Sans Serif are
|
2008-06-24 18:18:05 +00:00
|
|
|
|
;; unavailable, and we fall back on the courier and helv families,
|
|
|
|
|
;; which are generally available.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(defcustom face-font-family-alternatives
|
* textmodes/tex-mode.el (tex-alt-dvi-print-command)
(tex-dvi-print-command, tex-bibtex-command, tex-start-commands)
(tex-start-options, slitex-run-command, latex-run-command)
(tex-run-command, tex-directory):
* textmodes/ispell.el (ispell-html-skip-alists)
(ispell-tex-skip-alists, ispell-tex-skip-alists):
* textmodes/fill.el (adaptive-fill-first-line-regexp):
(adaptive-fill-regexp):
* textmodes/dns-mode.el (auto-mode-alist):
* progmodes/python.el (interpreter-mode-alist):
* progmodes/etags.el (tags-compression-info-list):
* progmodes/etags.el (tags-file-name):
* net/browse-url.el (browse-url-galeon-program)
(browse-url-firefox-program):
* mail/sendmail.el (mail-signature-file)
(mail-citation-prefix-regexp):
* international/mule-conf.el (eight-bit):
* international/latexenc.el (latex-inputenc-coding-alist):
* international/fontset.el (x-pixel-size-width-font-regexp):
* emacs-lisp/warnings.el (warning-type-format):
* emacs-lisp/trace.el (trace-buffer):
* emacs-lisp/lisp-mode.el (lisp-interaction-mode-map)
(emacs-lisp-mode-map):
* calendar/holidays.el (holiday-solar-holidays)
(holiday-bahai-holidays, holiday-islamic-holidays)
(holiday-christian-holidays, holiday-hebrew-holidays)
(hebrew-holidays-4, hebrew-holidays-3, hebrew-holidays-2)
(hebrew-holidays-1, holiday-oriental-holidays)
(holiday-general-holidays):
* x-dnd.el (x-dnd-known-types):
* tool-bar.el (tool-bar):
* startup.el (site-run-file):
* shell.el (shell-dumb-shell-regexp):
* rfn-eshadow.el (file-name-shadow-tty-properties)
(file-name-shadow-properties):
* paths.el (remote-shell-program, news-directory):
* mouse.el ([C-down-mouse-3]):
* menu-bar.el (menu-bar-tools-menu):
* jka-cmpr-hook.el (jka-compr-load-suffixes)
(jka-compr-mode-alist-additions, jka-compr-compression-info-list)
(jka-compr-compression-info-list):
* isearch.el (search-whitespace-regexp):
* image-file.el (image-file-name-extensions):
* find-dired.el (find-ls-option):
* files.el (directory-listing-before-filename-regexp)
(directory-free-space-args, insert-directory-program)
(list-directory-brief-switches, magic-fallback-mode-alist)
(magic-fallback-mode-alist, auto-mode-interpreter-regexp)
(automount-dir-prefix):
* faces.el (face-x-resources, x-font-regexp, x-font-regexp-head)
(x-font-regexp-slant, x-font-regexp-weight, face-x-resources)
(face-font-registry-alternatives, face-font-registry-alternatives)
(face-font-family-alternatives):
* facemenu.el (facemenu-add-new-face, facemenu-background-menu)
(facemenu-foreground-menu, facemenu-face-menu):
* epa-hook.el (epa-file-name-regexp):
* dnd.el (dnd-protocol-alist):
* textmodes/rst.el (auto-mode-alist):
* button.el (default-button): Purecopy strings.
2009-11-06 05:16:23 +00:00
|
|
|
|
(mapcar (lambda (arg) (mapcar 'purecopy arg))
|
2008-06-21 19:42:51 +00:00
|
|
|
|
'(("Monospace" "courier" "fixed")
|
2008-10-26 04:32:09 +00:00
|
|
|
|
("courier" "CMU Typewriter Text" "fixed")
|
2008-06-25 00:39:59 +00:00
|
|
|
|
("Sans Serif" "helv" "helvetica" "arial" "fixed")
|
* textmodes/tex-mode.el (tex-alt-dvi-print-command)
(tex-dvi-print-command, tex-bibtex-command, tex-start-commands)
(tex-start-options, slitex-run-command, latex-run-command)
(tex-run-command, tex-directory):
* textmodes/ispell.el (ispell-html-skip-alists)
(ispell-tex-skip-alists, ispell-tex-skip-alists):
* textmodes/fill.el (adaptive-fill-first-line-regexp):
(adaptive-fill-regexp):
* textmodes/dns-mode.el (auto-mode-alist):
* progmodes/python.el (interpreter-mode-alist):
* progmodes/etags.el (tags-compression-info-list):
* progmodes/etags.el (tags-file-name):
* net/browse-url.el (browse-url-galeon-program)
(browse-url-firefox-program):
* mail/sendmail.el (mail-signature-file)
(mail-citation-prefix-regexp):
* international/mule-conf.el (eight-bit):
* international/latexenc.el (latex-inputenc-coding-alist):
* international/fontset.el (x-pixel-size-width-font-regexp):
* emacs-lisp/warnings.el (warning-type-format):
* emacs-lisp/trace.el (trace-buffer):
* emacs-lisp/lisp-mode.el (lisp-interaction-mode-map)
(emacs-lisp-mode-map):
* calendar/holidays.el (holiday-solar-holidays)
(holiday-bahai-holidays, holiday-islamic-holidays)
(holiday-christian-holidays, holiday-hebrew-holidays)
(hebrew-holidays-4, hebrew-holidays-3, hebrew-holidays-2)
(hebrew-holidays-1, holiday-oriental-holidays)
(holiday-general-holidays):
* x-dnd.el (x-dnd-known-types):
* tool-bar.el (tool-bar):
* startup.el (site-run-file):
* shell.el (shell-dumb-shell-regexp):
* rfn-eshadow.el (file-name-shadow-tty-properties)
(file-name-shadow-properties):
* paths.el (remote-shell-program, news-directory):
* mouse.el ([C-down-mouse-3]):
* menu-bar.el (menu-bar-tools-menu):
* jka-cmpr-hook.el (jka-compr-load-suffixes)
(jka-compr-mode-alist-additions, jka-compr-compression-info-list)
(jka-compr-compression-info-list):
* isearch.el (search-whitespace-regexp):
* image-file.el (image-file-name-extensions):
* find-dired.el (find-ls-option):
* files.el (directory-listing-before-filename-regexp)
(directory-free-space-args, insert-directory-program)
(list-directory-brief-switches, magic-fallback-mode-alist)
(magic-fallback-mode-alist, auto-mode-interpreter-regexp)
(automount-dir-prefix):
* faces.el (face-x-resources, x-font-regexp, x-font-regexp-head)
(x-font-regexp-slant, x-font-regexp-weight, face-x-resources)
(face-font-registry-alternatives, face-font-registry-alternatives)
(face-font-family-alternatives):
* facemenu.el (facemenu-add-new-face, facemenu-background-menu)
(facemenu-foreground-menu, facemenu-face-menu):
* epa-hook.el (epa-file-name-regexp):
* dnd.el (dnd-protocol-alist):
* textmodes/rst.el (auto-mode-alist):
* button.el (default-button): Purecopy strings.
2009-11-06 05:16:23 +00:00
|
|
|
|
("helv" "helvetica" "arial" "fixed")))
|
2008-12-03 05:48:14 +00:00
|
|
|
|
"Alist of alternative font family names.
|
2002-01-13 09:56:13 +00:00
|
|
|
|
Each element has the form (FAMILY ALTERNATIVE1 ALTERNATIVE2 ...).
|
1999-07-21 21:43:52 +00:00
|
|
|
|
If fonts of family FAMILY can't be loaded, try ALTERNATIVE1, then
|
|
|
|
|
ALTERNATIVE2 etc."
|
2002-12-07 20:57:53 +00:00
|
|
|
|
:tag "Alternative font families to try"
|
2000-07-18 19:07:15 +00:00
|
|
|
|
:type '(repeat (repeat string))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
:group 'font-selection
|
|
|
|
|
:set #'(lambda (symbol value)
|
|
|
|
|
(set-default symbol value)
|
|
|
|
|
(internal-set-alternative-font-family-alist value)))
|
|
|
|
|
|
|
|
|
|
|
2000-11-10 14:34:23 +00:00
|
|
|
|
;; This is defined originally in xfaces.c.
|
|
|
|
|
(defcustom face-font-registry-alternatives
|
* textmodes/tex-mode.el (tex-alt-dvi-print-command)
(tex-dvi-print-command, tex-bibtex-command, tex-start-commands)
(tex-start-options, slitex-run-command, latex-run-command)
(tex-run-command, tex-directory):
* textmodes/ispell.el (ispell-html-skip-alists)
(ispell-tex-skip-alists, ispell-tex-skip-alists):
* textmodes/fill.el (adaptive-fill-first-line-regexp):
(adaptive-fill-regexp):
* textmodes/dns-mode.el (auto-mode-alist):
* progmodes/python.el (interpreter-mode-alist):
* progmodes/etags.el (tags-compression-info-list):
* progmodes/etags.el (tags-file-name):
* net/browse-url.el (browse-url-galeon-program)
(browse-url-firefox-program):
* mail/sendmail.el (mail-signature-file)
(mail-citation-prefix-regexp):
* international/mule-conf.el (eight-bit):
* international/latexenc.el (latex-inputenc-coding-alist):
* international/fontset.el (x-pixel-size-width-font-regexp):
* emacs-lisp/warnings.el (warning-type-format):
* emacs-lisp/trace.el (trace-buffer):
* emacs-lisp/lisp-mode.el (lisp-interaction-mode-map)
(emacs-lisp-mode-map):
* calendar/holidays.el (holiday-solar-holidays)
(holiday-bahai-holidays, holiday-islamic-holidays)
(holiday-christian-holidays, holiday-hebrew-holidays)
(hebrew-holidays-4, hebrew-holidays-3, hebrew-holidays-2)
(hebrew-holidays-1, holiday-oriental-holidays)
(holiday-general-holidays):
* x-dnd.el (x-dnd-known-types):
* tool-bar.el (tool-bar):
* startup.el (site-run-file):
* shell.el (shell-dumb-shell-regexp):
* rfn-eshadow.el (file-name-shadow-tty-properties)
(file-name-shadow-properties):
* paths.el (remote-shell-program, news-directory):
* mouse.el ([C-down-mouse-3]):
* menu-bar.el (menu-bar-tools-menu):
* jka-cmpr-hook.el (jka-compr-load-suffixes)
(jka-compr-mode-alist-additions, jka-compr-compression-info-list)
(jka-compr-compression-info-list):
* isearch.el (search-whitespace-regexp):
* image-file.el (image-file-name-extensions):
* find-dired.el (find-ls-option):
* files.el (directory-listing-before-filename-regexp)
(directory-free-space-args, insert-directory-program)
(list-directory-brief-switches, magic-fallback-mode-alist)
(magic-fallback-mode-alist, auto-mode-interpreter-regexp)
(automount-dir-prefix):
* faces.el (face-x-resources, x-font-regexp, x-font-regexp-head)
(x-font-regexp-slant, x-font-regexp-weight, face-x-resources)
(face-font-registry-alternatives, face-font-registry-alternatives)
(face-font-family-alternatives):
* facemenu.el (facemenu-add-new-face, facemenu-background-menu)
(facemenu-foreground-menu, facemenu-face-menu):
* epa-hook.el (epa-file-name-regexp):
* dnd.el (dnd-protocol-alist):
* textmodes/rst.el (auto-mode-alist):
* button.el (default-button): Purecopy strings.
2009-11-06 05:16:23 +00:00
|
|
|
|
(mapcar (lambda (arg) (mapcar 'purecopy arg))
|
2012-09-17 11:55:02 +00:00
|
|
|
|
(if (featurep 'w32)
|
2002-01-26 00:03:28 +00:00
|
|
|
|
'(("iso8859-1" "ms-oemlatin")
|
2006-11-27 04:36:00 +00:00
|
|
|
|
("gb2312.1980" "gb2312" "gbk" "gb18030")
|
2001-10-04 17:14:53 +00:00
|
|
|
|
("jisx0208.1990" "jisx0208.1983" "jisx0208.1978")
|
|
|
|
|
("ksc5601.1989" "ksx1001.1992" "ksc5601.1987")
|
|
|
|
|
("muletibetan-2" "muletibetan-0"))
|
2006-11-27 04:36:00 +00:00
|
|
|
|
'(("gb2312.1980" "gb2312.80&gb8565.88" "gbk" "gb18030")
|
2001-10-04 17:14:53 +00:00
|
|
|
|
("jisx0208.1990" "jisx0208.1983" "jisx0208.1978")
|
|
|
|
|
("ksc5601.1989" "ksx1001.1992" "ksc5601.1987")
|
* textmodes/tex-mode.el (tex-alt-dvi-print-command)
(tex-dvi-print-command, tex-bibtex-command, tex-start-commands)
(tex-start-options, slitex-run-command, latex-run-command)
(tex-run-command, tex-directory):
* textmodes/ispell.el (ispell-html-skip-alists)
(ispell-tex-skip-alists, ispell-tex-skip-alists):
* textmodes/fill.el (adaptive-fill-first-line-regexp):
(adaptive-fill-regexp):
* textmodes/dns-mode.el (auto-mode-alist):
* progmodes/python.el (interpreter-mode-alist):
* progmodes/etags.el (tags-compression-info-list):
* progmodes/etags.el (tags-file-name):
* net/browse-url.el (browse-url-galeon-program)
(browse-url-firefox-program):
* mail/sendmail.el (mail-signature-file)
(mail-citation-prefix-regexp):
* international/mule-conf.el (eight-bit):
* international/latexenc.el (latex-inputenc-coding-alist):
* international/fontset.el (x-pixel-size-width-font-regexp):
* emacs-lisp/warnings.el (warning-type-format):
* emacs-lisp/trace.el (trace-buffer):
* emacs-lisp/lisp-mode.el (lisp-interaction-mode-map)
(emacs-lisp-mode-map):
* calendar/holidays.el (holiday-solar-holidays)
(holiday-bahai-holidays, holiday-islamic-holidays)
(holiday-christian-holidays, holiday-hebrew-holidays)
(hebrew-holidays-4, hebrew-holidays-3, hebrew-holidays-2)
(hebrew-holidays-1, holiday-oriental-holidays)
(holiday-general-holidays):
* x-dnd.el (x-dnd-known-types):
* tool-bar.el (tool-bar):
* startup.el (site-run-file):
* shell.el (shell-dumb-shell-regexp):
* rfn-eshadow.el (file-name-shadow-tty-properties)
(file-name-shadow-properties):
* paths.el (remote-shell-program, news-directory):
* mouse.el ([C-down-mouse-3]):
* menu-bar.el (menu-bar-tools-menu):
* jka-cmpr-hook.el (jka-compr-load-suffixes)
(jka-compr-mode-alist-additions, jka-compr-compression-info-list)
(jka-compr-compression-info-list):
* isearch.el (search-whitespace-regexp):
* image-file.el (image-file-name-extensions):
* find-dired.el (find-ls-option):
* files.el (directory-listing-before-filename-regexp)
(directory-free-space-args, insert-directory-program)
(list-directory-brief-switches, magic-fallback-mode-alist)
(magic-fallback-mode-alist, auto-mode-interpreter-regexp)
(automount-dir-prefix):
* faces.el (face-x-resources, x-font-regexp, x-font-regexp-head)
(x-font-regexp-slant, x-font-regexp-weight, face-x-resources)
(face-font-registry-alternatives, face-font-registry-alternatives)
(face-font-family-alternatives):
* facemenu.el (facemenu-add-new-face, facemenu-background-menu)
(facemenu-foreground-menu, facemenu-face-menu):
* epa-hook.el (epa-file-name-regexp):
* dnd.el (dnd-protocol-alist):
* textmodes/rst.el (auto-mode-alist):
* button.el (default-button): Purecopy strings.
2009-11-06 05:16:23 +00:00
|
|
|
|
("muletibetan-2" "muletibetan-0"))))
|
2008-12-03 05:48:14 +00:00
|
|
|
|
"Alist of alternative font registry names.
|
2002-01-13 09:56:13 +00:00
|
|
|
|
Each element has the form (REGISTRY ALTERNATIVE1 ALTERNATIVE2 ...).
|
2000-12-04 06:27:16 +00:00
|
|
|
|
If fonts of registry REGISTRY can be loaded, font selection
|
|
|
|
|
tries to find a best matching font among all fonts of registry
|
|
|
|
|
REGISTRY, ALTERNATIVE1, ALTERNATIVE2, and etc."
|
2002-12-07 20:57:53 +00:00
|
|
|
|
:tag "Alternative font registries to try"
|
2000-11-10 14:34:23 +00:00
|
|
|
|
:type '(repeat (repeat string))
|
2000-11-12 00:38:44 +00:00
|
|
|
|
:version "21.1"
|
2000-11-10 14:34:23 +00:00
|
|
|
|
:group 'font-selection
|
|
|
|
|
:set #'(lambda (symbol value)
|
|
|
|
|
(set-default symbol value)
|
|
|
|
|
(internal-set-alternative-font-registry-alist value)))
|
|
|
|
|
|
1993-05-11 19:14:34 +00:00
|
|
|
|
|
1999-07-21 21:43:52 +00:00
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
;;; Creation, copying.
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defun face-list ()
|
2011-09-21 01:31:53 +00:00
|
|
|
|
"Return a list of all defined faces."
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(mapcar #'car face-new-frame-defaults))
|
|
|
|
|
|
2014-04-12 14:25:53 +00:00
|
|
|
|
(defun make-face (face)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
"Define a new face with name FACE, a symbol.
|
2012-03-21 07:02:13 +00:00
|
|
|
|
Do not call this directly from Lisp code; use `defface' instead.
|
|
|
|
|
|
2014-04-12 14:25:53 +00:00
|
|
|
|
If FACE is already known as a face, leave it unmodified. Return FACE."
|
2008-06-30 19:35:59 +00:00
|
|
|
|
(interactive (list (read-from-minibuffer
|
|
|
|
|
"Make face: " nil nil t 'face-name-history)))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(unless (facep face)
|
|
|
|
|
;; Make frame-local faces (this also makes the global one).
|
|
|
|
|
(dolist (frame (frame-list))
|
|
|
|
|
(internal-make-lisp-face face frame))
|
|
|
|
|
;; Add the face to the face menu.
|
|
|
|
|
(when (fboundp 'facemenu-add-new-face)
|
|
|
|
|
(facemenu-add-new-face face))
|
|
|
|
|
;; Define frame-local faces for all frames from X resources.
|
2014-04-12 14:25:53 +00:00
|
|
|
|
(make-face-x-resource-internal face))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
face)
|
|
|
|
|
|
|
|
|
|
(defun make-empty-face (face)
|
|
|
|
|
"Define a new, empty face with name FACE.
|
2012-03-21 07:02:13 +00:00
|
|
|
|
Do not call this directly from Lisp code; use `defface' instead."
|
2008-06-30 19:35:59 +00:00
|
|
|
|
(interactive (list (read-from-minibuffer
|
|
|
|
|
"Make empty face: " nil nil t 'face-name-history)))
|
2014-04-12 14:31:03 +00:00
|
|
|
|
(make-face face))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
(defun copy-face (old-face new-face &optional frame new-frame)
|
2012-03-21 07:02:13 +00:00
|
|
|
|
"Define a face named NEW-FACE, which is a copy of OLD-FACE.
|
|
|
|
|
This function does not copy face customization data, so NEW-FACE
|
|
|
|
|
will not be made customizable. Most Lisp code should not call
|
|
|
|
|
this function; use `defface' with :inherit instead.
|
|
|
|
|
|
|
|
|
|
If NEW-FACE already exists as a face, modify it to be like
|
|
|
|
|
OLD-FACE. If NEW-FACE doesn't already exist, create it.
|
|
|
|
|
|
|
|
|
|
If the optional argument FRAME is a frame, change NEW-FACE on
|
|
|
|
|
FRAME only. If FRAME is t, copy the frame-independent default
|
|
|
|
|
specification for OLD-FACE to NEW-FACE. If FRAME is nil, copy
|
|
|
|
|
the defaults as well as the faces on each existing frame.
|
|
|
|
|
|
|
|
|
|
If the optional fourth argument NEW-FRAME is given, copy the
|
|
|
|
|
information from face OLD-FACE on frame FRAME to NEW-FACE on
|
|
|
|
|
frame NEW-FRAME. In this case, FRAME must not be nil."
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(let ((inhibit-quit t))
|
|
|
|
|
(if (null frame)
|
|
|
|
|
(progn
|
2007-12-23 18:09:10 +00:00
|
|
|
|
(when new-frame
|
|
|
|
|
(error "Copying face %s from all frames to one frame"
|
|
|
|
|
old-face))
|
|
|
|
|
(make-empty-face new-face)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(dolist (frame (frame-list))
|
|
|
|
|
(copy-face old-face new-face frame))
|
|
|
|
|
(copy-face old-face new-face t))
|
2007-12-23 18:09:10 +00:00
|
|
|
|
(make-empty-face new-face)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(internal-copy-lisp-face old-face new-face frame new-frame))
|
|
|
|
|
new-face))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
;;; Predicates, type checks.
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
|
|
|
|
|
(defun facep (face)
|
2007-12-29 19:10:34 +00:00
|
|
|
|
"Return non-nil if FACE is a face name; nil otherwise.
|
|
|
|
|
A face name can be a string or a symbol."
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(internal-lisp-face-p face))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defun check-face (face)
|
|
|
|
|
"Signal an error if FACE doesn't name a face.
|
|
|
|
|
Value is FACE."
|
|
|
|
|
(unless (facep face)
|
|
|
|
|
(error "Not a face: %s" face))
|
|
|
|
|
face)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;; The ID returned is not to be confused with the internally used IDs
|
|
|
|
|
;; of realized faces. The ID assigned to Lisp faces is used to
|
|
|
|
|
;; support faces in display table entries.
|
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun face-id (face &optional _frame)
|
2002-07-09 07:35:10 +00:00
|
|
|
|
"Return the internal ID of face with name FACE.
|
2007-06-05 10:13:03 +00:00
|
|
|
|
If FACE is a face-alias, return the ID of the target face.
|
2005-03-08 02:55:39 +00:00
|
|
|
|
The optional argument FRAME is ignored, since the internal face ID
|
|
|
|
|
of a face name is the same for all frames."
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(check-face face)
|
2007-06-05 10:13:03 +00:00
|
|
|
|
(or (get face 'face)
|
|
|
|
|
(face-id (get face 'face-alias))))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
(defun face-equal (face1 face2 &optional frame)
|
|
|
|
|
"Non-nil if faces FACE1 and FACE2 are equal.
|
|
|
|
|
Faces are considered equal if all their attributes are equal.
|
2005-06-03 10:38:05 +00:00
|
|
|
|
If the optional argument FRAME is given, report on FACE1 and FACE2 in that frame.
|
|
|
|
|
If FRAME is t, report on the defaults for FACE1 and FACE2 (for new frames).
|
1999-07-21 21:43:52 +00:00
|
|
|
|
If FRAME is omitted or nil, use the selected frame."
|
|
|
|
|
(internal-lisp-face-equal-p face1 face2 frame))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defun face-differs-from-default-p (face &optional frame)
|
2004-06-04 02:50:50 +00:00
|
|
|
|
"Return non-nil if FACE displays differently from the default face.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
If the optional argument FRAME is given, report on face FACE in that frame.
|
|
|
|
|
If FRAME is t, report on the defaults for face FACE (for new frames).
|
2004-06-04 02:50:50 +00:00
|
|
|
|
If FRAME is omitted or nil, use the selected frame."
|
2004-06-04 10:12:53 +00:00
|
|
|
|
(let ((attrs
|
2007-12-30 16:26:54 +00:00
|
|
|
|
(delq :inherit (mapcar 'car face-attribute-name-alist)))
|
2004-06-04 10:12:53 +00:00
|
|
|
|
(differs nil))
|
|
|
|
|
(while (and attrs (not differs))
|
|
|
|
|
(let* ((attr (pop attrs))
|
|
|
|
|
(attr-val (face-attribute face attr frame t)))
|
|
|
|
|
(when (and
|
|
|
|
|
(not (eq attr-val 'unspecified))
|
|
|
|
|
(display-supports-face-attributes-p (list attr attr-val)
|
|
|
|
|
frame))
|
|
|
|
|
(setq differs attr))))
|
|
|
|
|
differs))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defun face-nontrivial-p (face &optional frame)
|
|
|
|
|
"True if face FACE has some non-nil attribute.
|
|
|
|
|
If the optional argument FRAME is given, report on face FACE in that frame.
|
|
|
|
|
If FRAME is t, report on the defaults for face FACE (for new frames).
|
|
|
|
|
If FRAME is omitted or nil, use the selected frame."
|
|
|
|
|
(not (internal-lisp-face-empty-p face frame)))
|
|
|
|
|
|
|
|
|
|
|
2015-02-26 18:09:48 +00:00
|
|
|
|
(defun face-list-p (face-or-list)
|
|
|
|
|
"True if FACE-OR-LIST is a list of faces.
|
|
|
|
|
Return nil if FACE-OR-LIST is a non-nil atom, or a cons cell whose car
|
|
|
|
|
is either 'foreground-color, 'background-color, or a keyword."
|
|
|
|
|
;; The logic of merge_face_ref (xfaces.c) is recreated here.
|
|
|
|
|
(and (listp face-or-list)
|
|
|
|
|
(not (memq (car face-or-list)
|
|
|
|
|
'(foreground-color background-color)))
|
|
|
|
|
(not (keywordp (car face-or-list)))))
|
|
|
|
|
|
|
|
|
|
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
;;; Setting face attributes from X resources.
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
|
|
|
|
|
(defcustom face-x-resources
|
* textmodes/tex-mode.el (tex-alt-dvi-print-command)
(tex-dvi-print-command, tex-bibtex-command, tex-start-commands)
(tex-start-options, slitex-run-command, latex-run-command)
(tex-run-command, tex-directory):
* textmodes/ispell.el (ispell-html-skip-alists)
(ispell-tex-skip-alists, ispell-tex-skip-alists):
* textmodes/fill.el (adaptive-fill-first-line-regexp):
(adaptive-fill-regexp):
* textmodes/dns-mode.el (auto-mode-alist):
* progmodes/python.el (interpreter-mode-alist):
* progmodes/etags.el (tags-compression-info-list):
* progmodes/etags.el (tags-file-name):
* net/browse-url.el (browse-url-galeon-program)
(browse-url-firefox-program):
* mail/sendmail.el (mail-signature-file)
(mail-citation-prefix-regexp):
* international/mule-conf.el (eight-bit):
* international/latexenc.el (latex-inputenc-coding-alist):
* international/fontset.el (x-pixel-size-width-font-regexp):
* emacs-lisp/warnings.el (warning-type-format):
* emacs-lisp/trace.el (trace-buffer):
* emacs-lisp/lisp-mode.el (lisp-interaction-mode-map)
(emacs-lisp-mode-map):
* calendar/holidays.el (holiday-solar-holidays)
(holiday-bahai-holidays, holiday-islamic-holidays)
(holiday-christian-holidays, holiday-hebrew-holidays)
(hebrew-holidays-4, hebrew-holidays-3, hebrew-holidays-2)
(hebrew-holidays-1, holiday-oriental-holidays)
(holiday-general-holidays):
* x-dnd.el (x-dnd-known-types):
* tool-bar.el (tool-bar):
* startup.el (site-run-file):
* shell.el (shell-dumb-shell-regexp):
* rfn-eshadow.el (file-name-shadow-tty-properties)
(file-name-shadow-properties):
* paths.el (remote-shell-program, news-directory):
* mouse.el ([C-down-mouse-3]):
* menu-bar.el (menu-bar-tools-menu):
* jka-cmpr-hook.el (jka-compr-load-suffixes)
(jka-compr-mode-alist-additions, jka-compr-compression-info-list)
(jka-compr-compression-info-list):
* isearch.el (search-whitespace-regexp):
* image-file.el (image-file-name-extensions):
* find-dired.el (find-ls-option):
* files.el (directory-listing-before-filename-regexp)
(directory-free-space-args, insert-directory-program)
(list-directory-brief-switches, magic-fallback-mode-alist)
(magic-fallback-mode-alist, auto-mode-interpreter-regexp)
(automount-dir-prefix):
* faces.el (face-x-resources, x-font-regexp, x-font-regexp-head)
(x-font-regexp-slant, x-font-regexp-weight, face-x-resources)
(face-font-registry-alternatives, face-font-registry-alternatives)
(face-font-family-alternatives):
* facemenu.el (facemenu-add-new-face, facemenu-background-menu)
(facemenu-foreground-menu, facemenu-face-menu):
* epa-hook.el (epa-file-name-regexp):
* dnd.el (dnd-protocol-alist):
* textmodes/rst.el (auto-mode-alist):
* button.el (default-button): Purecopy strings.
2009-11-06 05:16:23 +00:00
|
|
|
|
(mapcar
|
|
|
|
|
(lambda (arg)
|
|
|
|
|
;; FIXME; can we purecopy some of the conses too?
|
2011-02-01 21:37:12 +00:00
|
|
|
|
(cons (car arg)
|
|
|
|
|
(cons (purecopy (car (cdr arg))) (purecopy (cdr (cdr arg))))))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
'((:family (".attributeFamily" . "Face.AttributeFamily"))
|
2008-06-13 01:56:55 +00:00
|
|
|
|
(:foundry (".attributeFoundry" . "Face.AttributeFoundry"))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(:width (".attributeWidth" . "Face.AttributeWidth"))
|
|
|
|
|
(:height (".attributeHeight" . "Face.AttributeHeight"))
|
|
|
|
|
(:weight (".attributeWeight" . "Face.AttributeWeight"))
|
|
|
|
|
(:slant (".attributeSlant" . "Face.AttributeSlant"))
|
|
|
|
|
(:foreground (".attributeForeground" . "Face.AttributeForeground"))
|
2013-11-01 15:47:10 +00:00
|
|
|
|
(:distant-foreground
|
|
|
|
|
(".attributeDistantForeground" . "Face.AttributeDistantForeground"))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(:background (".attributeBackground" . "Face.AttributeBackground"))
|
|
|
|
|
(:overline (".attributeOverline" . "Face.AttributeOverline"))
|
|
|
|
|
(:strike-through (".attributeStrikeThrough" . "Face.AttributeStrikeThrough"))
|
|
|
|
|
(:box (".attributeBox" . "Face.AttributeBox"))
|
|
|
|
|
(:underline (".attributeUnderline" . "Face.AttributeUnderline"))
|
|
|
|
|
(:inverse-video (".attributeInverse" . "Face.AttributeInverse"))
|
|
|
|
|
(:stipple
|
|
|
|
|
(".attributeStipple" . "Face.AttributeStipple")
|
|
|
|
|
(".attributeBackgroundPixmap" . "Face.AttributeBackgroundPixmap"))
|
|
|
|
|
(:bold (".attributeBold" . "Face.AttributeBold"))
|
|
|
|
|
(:italic (".attributeItalic" . "Face.AttributeItalic"))
|
2000-08-26 11:50:06 +00:00
|
|
|
|
(:font (".attributeFont" . "Face.AttributeFont"))
|
* textmodes/tex-mode.el (tex-alt-dvi-print-command)
(tex-dvi-print-command, tex-bibtex-command, tex-start-commands)
(tex-start-options, slitex-run-command, latex-run-command)
(tex-run-command, tex-directory):
* textmodes/ispell.el (ispell-html-skip-alists)
(ispell-tex-skip-alists, ispell-tex-skip-alists):
* textmodes/fill.el (adaptive-fill-first-line-regexp):
(adaptive-fill-regexp):
* textmodes/dns-mode.el (auto-mode-alist):
* progmodes/python.el (interpreter-mode-alist):
* progmodes/etags.el (tags-compression-info-list):
* progmodes/etags.el (tags-file-name):
* net/browse-url.el (browse-url-galeon-program)
(browse-url-firefox-program):
* mail/sendmail.el (mail-signature-file)
(mail-citation-prefix-regexp):
* international/mule-conf.el (eight-bit):
* international/latexenc.el (latex-inputenc-coding-alist):
* international/fontset.el (x-pixel-size-width-font-regexp):
* emacs-lisp/warnings.el (warning-type-format):
* emacs-lisp/trace.el (trace-buffer):
* emacs-lisp/lisp-mode.el (lisp-interaction-mode-map)
(emacs-lisp-mode-map):
* calendar/holidays.el (holiday-solar-holidays)
(holiday-bahai-holidays, holiday-islamic-holidays)
(holiday-christian-holidays, holiday-hebrew-holidays)
(hebrew-holidays-4, hebrew-holidays-3, hebrew-holidays-2)
(hebrew-holidays-1, holiday-oriental-holidays)
(holiday-general-holidays):
* x-dnd.el (x-dnd-known-types):
* tool-bar.el (tool-bar):
* startup.el (site-run-file):
* shell.el (shell-dumb-shell-regexp):
* rfn-eshadow.el (file-name-shadow-tty-properties)
(file-name-shadow-properties):
* paths.el (remote-shell-program, news-directory):
* mouse.el ([C-down-mouse-3]):
* menu-bar.el (menu-bar-tools-menu):
* jka-cmpr-hook.el (jka-compr-load-suffixes)
(jka-compr-mode-alist-additions, jka-compr-compression-info-list)
(jka-compr-compression-info-list):
* isearch.el (search-whitespace-regexp):
* image-file.el (image-file-name-extensions):
* find-dired.el (find-ls-option):
* files.el (directory-listing-before-filename-regexp)
(directory-free-space-args, insert-directory-program)
(list-directory-brief-switches, magic-fallback-mode-alist)
(magic-fallback-mode-alist, auto-mode-interpreter-regexp)
(automount-dir-prefix):
* faces.el (face-x-resources, x-font-regexp, x-font-regexp-head)
(x-font-regexp-slant, x-font-regexp-weight, face-x-resources)
(face-font-registry-alternatives, face-font-registry-alternatives)
(face-font-family-alternatives):
* facemenu.el (facemenu-add-new-face, facemenu-background-menu)
(facemenu-foreground-menu, facemenu-face-menu):
* epa-hook.el (epa-file-name-regexp):
* dnd.el (dnd-protocol-alist):
* textmodes/rst.el (auto-mode-alist):
* button.el (default-button): Purecopy strings.
2009-11-06 05:16:23 +00:00
|
|
|
|
(:inherit (".attributeInherit" . "Face.AttributeInherit"))))
|
2008-12-03 05:48:14 +00:00
|
|
|
|
"List of X resources and classes for face attributes.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
Each element has the form (ATTRIBUTE ENTRY1 ENTRY2...) where ATTRIBUTE is
|
|
|
|
|
the name of a face attribute, and each ENTRY is a cons of the form
|
2001-10-12 16:38:32 +00:00
|
|
|
|
\(RESOURCE . CLASS) with RESOURCE being the resource and CLASS being the
|
1999-07-21 21:43:52 +00:00
|
|
|
|
X resource class for the attribute."
|
2000-09-10 21:55:22 +00:00
|
|
|
|
:type '(repeat (cons symbol (repeat (cons string string))))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
:group 'faces)
|
|
|
|
|
|
|
|
|
|
|
2008-06-12 03:56:20 +00:00
|
|
|
|
(declare-function internal-face-x-get-resource "xfaces.c"
|
2013-05-11 02:27:28 +00:00
|
|
|
|
(resource class &optional frame))
|
2008-06-12 03:56:20 +00:00
|
|
|
|
|
|
|
|
|
(declare-function internal-set-lisp-face-attribute-from-resource "xfaces.c"
|
|
|
|
|
(face attr value &optional frame))
|
|
|
|
|
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(defun set-face-attribute-from-resource (face attribute resource class frame)
|
|
|
|
|
"Set FACE's ATTRIBUTE from X resource RESOURCE, class CLASS on FRAME.
|
|
|
|
|
Value is the attribute value specified by the resource, or nil
|
|
|
|
|
if not present. This function displays a message if the resource
|
|
|
|
|
specifies an invalid attribute."
|
|
|
|
|
(let* ((face-name (face-name face))
|
|
|
|
|
(value (internal-face-x-get-resource (concat face-name resource)
|
|
|
|
|
class frame)))
|
|
|
|
|
(when value
|
|
|
|
|
(condition-case ()
|
|
|
|
|
(internal-set-lisp-face-attribute-from-resource
|
|
|
|
|
face attribute (downcase value) frame)
|
|
|
|
|
(error
|
|
|
|
|
(message "Face %s, frame %s: invalid attribute %s %s from X resource"
|
|
|
|
|
face-name frame attribute value))))
|
|
|
|
|
value))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defun set-face-attributes-from-resources (face frame)
|
|
|
|
|
"Set attributes of FACE from X resources for FRAME."
|
2009-03-16 20:46:59 +00:00
|
|
|
|
(when (memq (framep frame) '(x w32))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(dolist (definition face-x-resources)
|
|
|
|
|
(let ((attribute (car definition)))
|
|
|
|
|
(dolist (entry (cdr definition))
|
|
|
|
|
(set-face-attribute-from-resource face attribute (car entry)
|
|
|
|
|
(cdr entry) frame))))))
|
2001-05-29 16:12:03 +00:00
|
|
|
|
|
|
|
|
|
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(defun make-face-x-resource-internal (face &optional frame)
|
|
|
|
|
"Fill frame-local FACE on FRAME from X resources.
|
2014-04-05 07:44:56 +00:00
|
|
|
|
FRAME nil or not specified means do it for all frames.
|
|
|
|
|
|
|
|
|
|
If `inhibit-x-resources' is non-nil, this function does nothing."
|
|
|
|
|
(unless inhibit-x-resources
|
|
|
|
|
(dolist (frame (if (null frame) (frame-list) (list frame)))
|
|
|
|
|
;; `x-create-frame' already took care of correctly handling
|
|
|
|
|
;; the reverse video case-- do _not_ touch the default face
|
|
|
|
|
(unless (and (eq face 'default)
|
|
|
|
|
(frame-parameter frame 'reverse))
|
|
|
|
|
(set-face-attributes-from-resources face frame)))))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
;;; Retrieving face attributes.
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
|
1994-12-04 14:18:45 +00:00
|
|
|
|
(defun face-name (face)
|
1993-04-03 23:28:03 +00:00
|
|
|
|
"Return the name of face FACE."
|
2014-07-09 18:46:33 +00:00
|
|
|
|
(symbol-name (check-face face)))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
|
2007-12-30 16:26:54 +00:00
|
|
|
|
(defun face-all-attributes (face &optional frame)
|
|
|
|
|
"Return an alist stating the attributes of FACE.
|
|
|
|
|
Each element of the result has the form (ATTR-NAME . ATTR-VALUE).
|
2010-07-31 17:21:16 +00:00
|
|
|
|
If FRAME is omitted or nil the value describes the default attributes,
|
2007-12-30 16:26:54 +00:00
|
|
|
|
but if you specify FRAME, the value describes the attributes
|
|
|
|
|
of FACE on FRAME."
|
2007-12-31 15:02:34 +00:00
|
|
|
|
(mapcar (lambda (pair)
|
|
|
|
|
(let ((attr (car pair)))
|
|
|
|
|
(cons attr (face-attribute face attr (or frame t)))))
|
2007-12-30 16:26:54 +00:00
|
|
|
|
face-attribute-name-alist))
|
|
|
|
|
|
2001-10-28 10:19:33 +00:00
|
|
|
|
(defun face-attribute (face attribute &optional frame inherit)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
"Return the value of FACE's ATTRIBUTE on FRAME.
|
|
|
|
|
If the optional argument FRAME is given, report on face FACE in that frame.
|
|
|
|
|
If FRAME is t, report on the defaults for face FACE (for new frames).
|
2001-10-28 10:19:33 +00:00
|
|
|
|
If FRAME is omitted or nil, use the selected frame.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
2001-10-28 10:19:33 +00:00
|
|
|
|
If INHERIT is nil, only attributes directly defined by FACE are considered,
|
|
|
|
|
so the return value may be `unspecified', or a relative value.
|
|
|
|
|
If INHERIT is non-nil, FACE's definition of ATTRIBUTE is merged with the
|
|
|
|
|
faces specified by its `:inherit' attribute; however the return value
|
|
|
|
|
may still be `unspecified' or relative.
|
|
|
|
|
If INHERIT is a face or a list of faces, then the result is further merged
|
|
|
|
|
with that face (or faces), until it becomes specified and absolute.
|
|
|
|
|
|
|
|
|
|
To ensure that the return value is always specified and absolute, use a
|
|
|
|
|
value of `default' for INHERIT; this will resolve any unspecified or
|
|
|
|
|
relative values by merging with the `default' face (which is always
|
|
|
|
|
completely specified)."
|
|
|
|
|
(let ((value (internal-get-lisp-face-attribute face attribute frame)))
|
|
|
|
|
(when (and inherit (face-attribute-relative-p attribute value))
|
|
|
|
|
;; VALUE is relative, so merge with inherited faces
|
|
|
|
|
(let ((inh-from (face-attribute face :inherit frame)))
|
|
|
|
|
(unless (or (null inh-from) (eq inh-from 'unspecified))
|
2005-11-01 07:19:07 +00:00
|
|
|
|
(condition-case nil
|
|
|
|
|
(setq value
|
|
|
|
|
(face-attribute-merged-with attribute value inh-from frame))
|
|
|
|
|
;; The `inherit' attribute may point to non existent faces.
|
|
|
|
|
(error nil)))))
|
2001-10-28 10:19:33 +00:00
|
|
|
|
(when (and inherit
|
|
|
|
|
(not (eq inherit t))
|
|
|
|
|
(face-attribute-relative-p attribute value))
|
(face-spec-choose): Allow `t' to appear before the end.
(mode-line, tool-bar, minibuffer-prompt, region, fringe, bold, italic)
(bold-italic, underline, highlight, secondary-selection, fixed-pitch)
(variable-pitch, trailing-whitespace): Don't use the old-style entries.
(mode-line-inactive, header-line): Move the `t' section to the
beginning so the `:inherit' setting can be shared.
2002-03-04 23:00:28 +00:00
|
|
|
|
;; We should merge with INHERIT as well
|
2001-10-28 10:19:33 +00:00
|
|
|
|
(setq value (face-attribute-merged-with attribute value inherit frame)))
|
|
|
|
|
value))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
2001-10-28 10:19:33 +00:00
|
|
|
|
(defun face-attribute-merged-with (attribute value faces &optional frame)
|
|
|
|
|
"Merges ATTRIBUTE, initially VALUE, with faces from FACES until absolute.
|
|
|
|
|
FACES may be either a single face or a list of faces.
|
2005-07-20 15:38:50 +00:00
|
|
|
|
\[This is an internal function.]"
|
2001-10-28 10:19:33 +00:00
|
|
|
|
(cond ((not (face-attribute-relative-p attribute value))
|
|
|
|
|
value)
|
|
|
|
|
((null faces)
|
|
|
|
|
value)
|
|
|
|
|
((consp faces)
|
|
|
|
|
(face-attribute-merged-with
|
|
|
|
|
attribute
|
|
|
|
|
(face-attribute-merged-with attribute value (car faces) frame)
|
|
|
|
|
(cdr faces)
|
|
|
|
|
frame))
|
|
|
|
|
(t
|
|
|
|
|
(merge-face-attribute attribute
|
|
|
|
|
value
|
|
|
|
|
(face-attribute faces attribute frame t)))))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defmacro face-attribute-specified-or (value &rest body)
|
|
|
|
|
"Return VALUE, unless it's `unspecified', in which case evaluate BODY and return the result."
|
|
|
|
|
(let ((temp (make-symbol "value")))
|
|
|
|
|
`(let ((,temp ,value))
|
|
|
|
|
(if (not (eq ,temp 'unspecified))
|
|
|
|
|
,temp
|
|
|
|
|
,@body))))
|
|
|
|
|
|
|
|
|
|
(defun face-foreground (face &optional frame inherit)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
"Return the foreground color name of FACE, or nil if unspecified.
|
|
|
|
|
If the optional argument FRAME is given, report on face FACE in that frame.
|
|
|
|
|
If FRAME is t, report on the defaults for face FACE (for new frames).
|
2001-10-28 10:19:33 +00:00
|
|
|
|
If FRAME is omitted or nil, use the selected frame.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
2001-10-28 10:19:33 +00:00
|
|
|
|
If INHERIT is nil, only a foreground color directly defined by FACE is
|
|
|
|
|
considered, so the return value may be nil.
|
|
|
|
|
If INHERIT is t, and FACE doesn't define a foreground color, then any
|
|
|
|
|
foreground color that FACE inherits through its `:inherit' attribute
|
|
|
|
|
is considered as well; however the return value may still be nil.
|
|
|
|
|
If INHERIT is a face or a list of faces, then it is used to try to
|
|
|
|
|
resolve an unspecified foreground color.
|
|
|
|
|
|
|
|
|
|
To ensure that a valid color is always returned, use a value of
|
|
|
|
|
`default' for INHERIT; this will resolve any unspecified values by
|
|
|
|
|
merging with the `default' face (which is always completely specified)."
|
|
|
|
|
(face-attribute-specified-or (face-attribute face :foreground frame inherit)
|
|
|
|
|
nil))
|
|
|
|
|
|
|
|
|
|
(defun face-background (face &optional frame inherit)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
"Return the background color name of FACE, or nil if unspecified.
|
|
|
|
|
If the optional argument FRAME is given, report on face FACE in that frame.
|
|
|
|
|
If FRAME is t, report on the defaults for face FACE (for new frames).
|
2001-10-28 10:19:33 +00:00
|
|
|
|
If FRAME is omitted or nil, use the selected frame.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
2001-10-28 10:19:33 +00:00
|
|
|
|
If INHERIT is nil, only a background color directly defined by FACE is
|
|
|
|
|
considered, so the return value may be nil.
|
|
|
|
|
If INHERIT is t, and FACE doesn't define a background color, then any
|
|
|
|
|
background color that FACE inherits through its `:inherit' attribute
|
|
|
|
|
is considered as well; however the return value may still be nil.
|
|
|
|
|
If INHERIT is a face or a list of faces, then it is used to try to
|
|
|
|
|
resolve an unspecified background color.
|
|
|
|
|
|
|
|
|
|
To ensure that a valid color is always returned, use a value of
|
|
|
|
|
`default' for INHERIT; this will resolve any unspecified values by
|
|
|
|
|
merging with the `default' face (which is always completely specified)."
|
|
|
|
|
(face-attribute-specified-or (face-attribute face :background frame inherit)
|
|
|
|
|
nil))
|
|
|
|
|
|
|
|
|
|
(defun face-stipple (face &optional frame inherit)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
"Return the stipple pixmap name of FACE, or nil if unspecified.
|
|
|
|
|
If the optional argument FRAME is given, report on face FACE in that frame.
|
|
|
|
|
If FRAME is t, report on the defaults for face FACE (for new frames).
|
2001-10-28 10:19:33 +00:00
|
|
|
|
If FRAME is omitted or nil, use the selected frame.
|
|
|
|
|
|
|
|
|
|
If INHERIT is nil, only a stipple directly defined by FACE is
|
|
|
|
|
considered, so the return value may be nil.
|
|
|
|
|
If INHERIT is t, and FACE doesn't define a stipple, then any stipple
|
|
|
|
|
that FACE inherits through its `:inherit' attribute is considered as
|
|
|
|
|
well; however the return value may still be nil.
|
|
|
|
|
If INHERIT is a face or a list of faces, then it is used to try to
|
|
|
|
|
resolve an unspecified stipple.
|
|
|
|
|
|
|
|
|
|
To ensure that a valid stipple or nil is always returned, use a value of
|
|
|
|
|
`default' for INHERIT; this will resolve any unspecified values by merging
|
|
|
|
|
with the `default' face (which is always completely specified)."
|
|
|
|
|
(face-attribute-specified-or (face-attribute face :stipple frame inherit)
|
|
|
|
|
nil))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defalias 'face-background-pixmap 'face-stipple)
|
|
|
|
|
|
|
|
|
|
|
2012-11-21 08:39:08 +00:00
|
|
|
|
(defun face-underline-p (face &optional frame inherit)
|
2012-11-15 07:30:46 +00:00
|
|
|
|
"Return non-nil if FACE specifies a non-nil underlining.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
If the optional argument FRAME is given, report on face FACE in that frame.
|
|
|
|
|
If FRAME is t, report on the defaults for face FACE (for new frames).
|
2012-11-21 08:39:08 +00:00
|
|
|
|
If FRAME is omitted or nil, use the selected frame.
|
|
|
|
|
Optional argument INHERIT is passed to `face-attribute'."
|
|
|
|
|
(face-attribute-specified-or
|
|
|
|
|
(face-attribute face :underline frame inherit) nil))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
|
2012-11-21 08:39:08 +00:00
|
|
|
|
(defun face-inverse-video-p (face &optional frame inherit)
|
2012-11-15 07:30:46 +00:00
|
|
|
|
"Return non-nil if FACE specifies a non-nil inverse-video.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
If the optional argument FRAME is given, report on face FACE in that frame.
|
|
|
|
|
If FRAME is t, report on the defaults for face FACE (for new frames).
|
2012-11-21 08:39:08 +00:00
|
|
|
|
If FRAME is omitted or nil, use the selected frame.
|
|
|
|
|
Optional argument INHERIT is passed to `face-attribute'."
|
|
|
|
|
(eq (face-attribute face :inverse-video frame inherit) t))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
|
2012-11-21 08:39:08 +00:00
|
|
|
|
(defun face-bold-p (face &optional frame inherit)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
"Return non-nil if the font of FACE is bold on FRAME.
|
|
|
|
|
If the optional argument FRAME is given, report on face FACE in that frame.
|
|
|
|
|
If FRAME is t, report on the defaults for face FACE (for new frames).
|
|
|
|
|
If FRAME is omitted or nil, use the selected frame.
|
2012-11-21 08:39:08 +00:00
|
|
|
|
Optional argument INHERIT is passed to `face-attribute'.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
Use `face-attribute' for finer control."
|
2012-11-21 08:39:08 +00:00
|
|
|
|
(let ((bold (face-attribute face :weight frame inherit)))
|
1999-09-06 15:57:48 +00:00
|
|
|
|
(memq bold '(semi-bold bold extra-bold ultra-bold))))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
|
2012-11-21 08:39:08 +00:00
|
|
|
|
(defun face-italic-p (face &optional frame inherit)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
"Return non-nil if the font of FACE is italic on FRAME.
|
|
|
|
|
If the optional argument FRAME is given, report on face FACE in that frame.
|
|
|
|
|
If FRAME is t, report on the defaults for face FACE (for new frames).
|
|
|
|
|
If FRAME is omitted or nil, use the selected frame.
|
2012-11-21 08:39:08 +00:00
|
|
|
|
Optional argument INHERIT is passed to `face-attribute'.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
Use `face-attribute' for finer control."
|
2012-11-21 08:39:08 +00:00
|
|
|
|
(let ((italic (face-attribute face :slant frame inherit)))
|
1999-09-09 14:54:23 +00:00
|
|
|
|
(memq italic '(italic oblique))))
|
2001-05-29 16:12:03 +00:00
|
|
|
|
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
;;; Face documentation.
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
|
|
|
|
|
(defun face-documentation (face)
|
2005-06-22 14:20:18 +00:00
|
|
|
|
"Get the documentation string for FACE.
|
|
|
|
|
If FACE is a face-alias, get the documentation for the target face."
|
2013-06-23 20:29:18 +00:00
|
|
|
|
(let ((alias (get face 'face-alias)))
|
2005-06-22 14:20:18 +00:00
|
|
|
|
(if alias
|
2013-06-23 20:29:18 +00:00
|
|
|
|
(let ((doc (get alias 'face-documentation)))
|
2009-08-31 01:32:58 +00:00
|
|
|
|
(format "%s is an alias for the face `%s'.%s" face alias
|
2005-06-22 14:20:18 +00:00
|
|
|
|
(if doc (format "\n%s" doc)
|
|
|
|
|
"")))
|
|
|
|
|
(get face 'face-documentation))))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defun set-face-documentation (face string)
|
|
|
|
|
"Set the documentation string for FACE to STRING."
|
1999-12-16 19:41:04 +00:00
|
|
|
|
;; Perhaps the text should go in DOC.
|
1999-11-30 13:55:34 +00:00
|
|
|
|
(put face 'face-documentation (purecopy string)))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defalias 'face-doc-string 'face-documentation)
|
|
|
|
|
(defalias 'set-face-doc-string 'set-face-documentation)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
;; Setting face attributes.
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defun set-face-attribute (face frame &rest args)
|
|
|
|
|
"Set attributes of FACE on FRAME from ARGS.
|
Face cleanups. Remove some uses of old-style face spec and :bold/:italic.
* faces.el (set-face-attribute): Doc fix.
(modify-face): Don't use :bold and :italic.
(error, warning, success): Tweak definitions.
* cus-edit.el (custom-modified, custom-invalid, custom-rogue)
(custom-modified, custom-set, custom-changed, custom-themed)
(custom-saved, custom-button, custom-button-mouse)
(custom-button-pressed, custom-state, custom-comment-tag)
(custom-variable-tag, custom-group-tag-1, custom-group-tag)
(custom-group-subtitle): Use new-style face specs.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face): Remove obsolete face alias.
* epa.el (epa-validity-high, epa-validity-medium)
(epa-validity-low, epa-mark, epa-field-name, epa-string)
(epa-field-name, epa-field-body):
* font-lock.el (font-lock-comment-face, font-lock-string-face)
(font-lock-keyword-face, font-lock-builtin-face)
(font-lock-function-name-face, font-lock-variable-name-face)
(font-lock-type-face, font-lock-constant-face):
* ido.el (ido-first-match, ido-only-match, ido-subdir)
(ido-virtual, ido-indicator, ido-incomplete-regexp):
* speedbar.el (speedbar-button-face, speedbar-file-face)
(speedbar-directory-face, speedbar-tag-face)
(speedbar-selected-face, speedbar-highlight-face)
(speedbar-separator-face):
* whitespace.el (whitespace-newline, whitespace-space)
(whitespace-hspace, whitespace-tab, whitespace-trailing)
(whitespace-line, whitespace-space-before-tab)
(whitespace-space-after-tab, whitespace-indentation)
(whitespace-empty):
* emulation/cua-base.el (cua-global-mark):
* eshell/em-prompt.el (eshell-prompt):
* net/newst-plainview.el (newsticker-new-item-face)
(newsticker-old-item-face, newsticker-immortal-item-face)
(newsticker-obsolete-item-face, newsticker-date-face)
(newsticker-statistics-face, newsticker-default-face):
* net/newst-reader.el (newsticker-feed-face)
(newsticker-extra-face, newsticker-enclosure-face):
* net/newst-treeview.el (newsticker-treeview-face)
(newsticker-treeview-new-face, newsticker-treeview-old-face)
(newsticker-treeview-immortal-face)
(newsticker-treeview-obsolete-face)
(newsticker-treeview-selection-face):
* net/rcirc.el (rcirc-my-nick, rcirc-other-nick)
(rcirc-bright-nick, rcirc-server, rcirc-timestamp)
(rcirc-nick-in-message, rcirc-nick-in-message-full-line)
(rcirc-prompt, rcirc-track-keyword, rcirc-url, rcirc-keyword):
* nxml/nxml-outln.el (nxml-heading, nxml-outline-indicator)
(nxml-outline-active-indicator, nxml-outline-ellipsis):
* play/mpuz.el (mpuz-unsolved, mpuz-solved, mpuz-trivial)
(mpuz-text):
* progmodes/vera-mode.el (vera-font-lock-number)
(vera-font-lock-function, vera-font-lock-interface):
* textmodes/table.el (table-cell): Use new-style face specs, and
don't use the old :bold and :italic attributes.
* erc-button.el (erc-button):
* erc-goodies.el (erc-bold-face, erc-inverse-face)
(erc-underline-face, fg:erc-color-*):
* erc-match.el (erc-current-nick-face, erc-dangerous-host-face)
(erc-pal-face, erc-fool-face, erc-keyword-face):
* erc-stamp.el (erc-timestamp-face): Likewise.
* erc.el (erc-direct-msg-face, erc-header-line, erc-input-face)
(erc-command-indicator-face, erc-notice-face, erc-action-face)
(erc-error-face, erc-my-nick-face, erc-nick-default-face)
(erc-nick-msg-face): Use new-style face specs, and avoid :bold.
* progmodes/ebrowse.el (ebrowse-tree-mark, ebrowse-root-class)
(ebrowse-member-attribute, ebrowse-default, ebrowse-file-name)
(ebrowse-member-class, ebrowse-progress): Likewise.
(ebrowse-tree-mark-face, ebrowse-root-class-face)
(ebrowse-file-name-face, ebrowse-default-face)
(ebrowse-member-attribute-face, ebrowse-member-class-face)
(ebrowse-progress-face): Remove obsolete faces.
* progmodes/flymake.el (flymake-errline, flymake-warnline):
Inherit from error and warning faces respectively.
* textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate):
Likewise.
(flyspell-incorrect-face, flyspell-duplicate-face): Remove
obsolete aliases.
* display.texi (Face Attributes): Font family does not accept
wildcards. De-document obsolete :bold and :italic attributes.
(Defining Faces): Use new-style face spec format.
2012-06-08 16:39:49 +00:00
|
|
|
|
This function overrides the face attributes specified by FACE's
|
|
|
|
|
face spec. It is mostly intended for internal use only.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
Face cleanups. Remove some uses of old-style face spec and :bold/:italic.
* faces.el (set-face-attribute): Doc fix.
(modify-face): Don't use :bold and :italic.
(error, warning, success): Tweak definitions.
* cus-edit.el (custom-modified, custom-invalid, custom-rogue)
(custom-modified, custom-set, custom-changed, custom-themed)
(custom-saved, custom-button, custom-button-mouse)
(custom-button-pressed, custom-state, custom-comment-tag)
(custom-variable-tag, custom-group-tag-1, custom-group-tag)
(custom-group-subtitle): Use new-style face specs.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face): Remove obsolete face alias.
* epa.el (epa-validity-high, epa-validity-medium)
(epa-validity-low, epa-mark, epa-field-name, epa-string)
(epa-field-name, epa-field-body):
* font-lock.el (font-lock-comment-face, font-lock-string-face)
(font-lock-keyword-face, font-lock-builtin-face)
(font-lock-function-name-face, font-lock-variable-name-face)
(font-lock-type-face, font-lock-constant-face):
* ido.el (ido-first-match, ido-only-match, ido-subdir)
(ido-virtual, ido-indicator, ido-incomplete-regexp):
* speedbar.el (speedbar-button-face, speedbar-file-face)
(speedbar-directory-face, speedbar-tag-face)
(speedbar-selected-face, speedbar-highlight-face)
(speedbar-separator-face):
* whitespace.el (whitespace-newline, whitespace-space)
(whitespace-hspace, whitespace-tab, whitespace-trailing)
(whitespace-line, whitespace-space-before-tab)
(whitespace-space-after-tab, whitespace-indentation)
(whitespace-empty):
* emulation/cua-base.el (cua-global-mark):
* eshell/em-prompt.el (eshell-prompt):
* net/newst-plainview.el (newsticker-new-item-face)
(newsticker-old-item-face, newsticker-immortal-item-face)
(newsticker-obsolete-item-face, newsticker-date-face)
(newsticker-statistics-face, newsticker-default-face):
* net/newst-reader.el (newsticker-feed-face)
(newsticker-extra-face, newsticker-enclosure-face):
* net/newst-treeview.el (newsticker-treeview-face)
(newsticker-treeview-new-face, newsticker-treeview-old-face)
(newsticker-treeview-immortal-face)
(newsticker-treeview-obsolete-face)
(newsticker-treeview-selection-face):
* net/rcirc.el (rcirc-my-nick, rcirc-other-nick)
(rcirc-bright-nick, rcirc-server, rcirc-timestamp)
(rcirc-nick-in-message, rcirc-nick-in-message-full-line)
(rcirc-prompt, rcirc-track-keyword, rcirc-url, rcirc-keyword):
* nxml/nxml-outln.el (nxml-heading, nxml-outline-indicator)
(nxml-outline-active-indicator, nxml-outline-ellipsis):
* play/mpuz.el (mpuz-unsolved, mpuz-solved, mpuz-trivial)
(mpuz-text):
* progmodes/vera-mode.el (vera-font-lock-number)
(vera-font-lock-function, vera-font-lock-interface):
* textmodes/table.el (table-cell): Use new-style face specs, and
don't use the old :bold and :italic attributes.
* erc-button.el (erc-button):
* erc-goodies.el (erc-bold-face, erc-inverse-face)
(erc-underline-face, fg:erc-color-*):
* erc-match.el (erc-current-nick-face, erc-dangerous-host-face)
(erc-pal-face, erc-fool-face, erc-keyword-face):
* erc-stamp.el (erc-timestamp-face): Likewise.
* erc.el (erc-direct-msg-face, erc-header-line, erc-input-face)
(erc-command-indicator-face, erc-notice-face, erc-action-face)
(erc-error-face, erc-my-nick-face, erc-nick-default-face)
(erc-nick-msg-face): Use new-style face specs, and avoid :bold.
* progmodes/ebrowse.el (ebrowse-tree-mark, ebrowse-root-class)
(ebrowse-member-attribute, ebrowse-default, ebrowse-file-name)
(ebrowse-member-class, ebrowse-progress): Likewise.
(ebrowse-tree-mark-face, ebrowse-root-class-face)
(ebrowse-file-name-face, ebrowse-default-face)
(ebrowse-member-attribute-face, ebrowse-member-class-face)
(ebrowse-progress-face): Remove obsolete faces.
* progmodes/flymake.el (flymake-errline, flymake-warnline):
Inherit from error and warning faces respectively.
* textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate):
Likewise.
(flyspell-incorrect-face, flyspell-duplicate-face): Remove
obsolete aliases.
* display.texi (Face Attributes): Font family does not accept
wildcards. De-document obsolete :bold and :italic attributes.
(Defining Faces): Use new-style face spec format.
2012-06-08 16:39:49 +00:00
|
|
|
|
If FRAME is nil, set the attributes for all existing frames, as
|
|
|
|
|
well as the default for new frames. If FRAME is t, change the
|
|
|
|
|
default for new frames only.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
Face cleanups. Remove some uses of old-style face spec and :bold/:italic.
* faces.el (set-face-attribute): Doc fix.
(modify-face): Don't use :bold and :italic.
(error, warning, success): Tweak definitions.
* cus-edit.el (custom-modified, custom-invalid, custom-rogue)
(custom-modified, custom-set, custom-changed, custom-themed)
(custom-saved, custom-button, custom-button-mouse)
(custom-button-pressed, custom-state, custom-comment-tag)
(custom-variable-tag, custom-group-tag-1, custom-group-tag)
(custom-group-subtitle): Use new-style face specs.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face): Remove obsolete face alias.
* epa.el (epa-validity-high, epa-validity-medium)
(epa-validity-low, epa-mark, epa-field-name, epa-string)
(epa-field-name, epa-field-body):
* font-lock.el (font-lock-comment-face, font-lock-string-face)
(font-lock-keyword-face, font-lock-builtin-face)
(font-lock-function-name-face, font-lock-variable-name-face)
(font-lock-type-face, font-lock-constant-face):
* ido.el (ido-first-match, ido-only-match, ido-subdir)
(ido-virtual, ido-indicator, ido-incomplete-regexp):
* speedbar.el (speedbar-button-face, speedbar-file-face)
(speedbar-directory-face, speedbar-tag-face)
(speedbar-selected-face, speedbar-highlight-face)
(speedbar-separator-face):
* whitespace.el (whitespace-newline, whitespace-space)
(whitespace-hspace, whitespace-tab, whitespace-trailing)
(whitespace-line, whitespace-space-before-tab)
(whitespace-space-after-tab, whitespace-indentation)
(whitespace-empty):
* emulation/cua-base.el (cua-global-mark):
* eshell/em-prompt.el (eshell-prompt):
* net/newst-plainview.el (newsticker-new-item-face)
(newsticker-old-item-face, newsticker-immortal-item-face)
(newsticker-obsolete-item-face, newsticker-date-face)
(newsticker-statistics-face, newsticker-default-face):
* net/newst-reader.el (newsticker-feed-face)
(newsticker-extra-face, newsticker-enclosure-face):
* net/newst-treeview.el (newsticker-treeview-face)
(newsticker-treeview-new-face, newsticker-treeview-old-face)
(newsticker-treeview-immortal-face)
(newsticker-treeview-obsolete-face)
(newsticker-treeview-selection-face):
* net/rcirc.el (rcirc-my-nick, rcirc-other-nick)
(rcirc-bright-nick, rcirc-server, rcirc-timestamp)
(rcirc-nick-in-message, rcirc-nick-in-message-full-line)
(rcirc-prompt, rcirc-track-keyword, rcirc-url, rcirc-keyword):
* nxml/nxml-outln.el (nxml-heading, nxml-outline-indicator)
(nxml-outline-active-indicator, nxml-outline-ellipsis):
* play/mpuz.el (mpuz-unsolved, mpuz-solved, mpuz-trivial)
(mpuz-text):
* progmodes/vera-mode.el (vera-font-lock-number)
(vera-font-lock-function, vera-font-lock-interface):
* textmodes/table.el (table-cell): Use new-style face specs, and
don't use the old :bold and :italic attributes.
* erc-button.el (erc-button):
* erc-goodies.el (erc-bold-face, erc-inverse-face)
(erc-underline-face, fg:erc-color-*):
* erc-match.el (erc-current-nick-face, erc-dangerous-host-face)
(erc-pal-face, erc-fool-face, erc-keyword-face):
* erc-stamp.el (erc-timestamp-face): Likewise.
* erc.el (erc-direct-msg-face, erc-header-line, erc-input-face)
(erc-command-indicator-face, erc-notice-face, erc-action-face)
(erc-error-face, erc-my-nick-face, erc-nick-default-face)
(erc-nick-msg-face): Use new-style face specs, and avoid :bold.
* progmodes/ebrowse.el (ebrowse-tree-mark, ebrowse-root-class)
(ebrowse-member-attribute, ebrowse-default, ebrowse-file-name)
(ebrowse-member-class, ebrowse-progress): Likewise.
(ebrowse-tree-mark-face, ebrowse-root-class-face)
(ebrowse-file-name-face, ebrowse-default-face)
(ebrowse-member-attribute-face, ebrowse-member-class-face)
(ebrowse-progress-face): Remove obsolete faces.
* progmodes/flymake.el (flymake-errline, flymake-warnline):
Inherit from error and warning faces respectively.
* textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate):
Likewise.
(flyspell-incorrect-face, flyspell-duplicate-face): Remove
obsolete aliases.
* display.texi (Face Attributes): Font family does not accept
wildcards. De-document obsolete :bold and :italic attributes.
(Defining Faces): Use new-style face spec format.
2012-06-08 16:39:49 +00:00
|
|
|
|
ARGS must come in pairs ATTRIBUTE VALUE. ATTRIBUTE must be a
|
|
|
|
|
valid face attribute name. All attributes can be set to
|
|
|
|
|
`unspecified'; this fact is not further mentioned below.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
The following attributes are recognized:
|
|
|
|
|
|
|
|
|
|
`:family'
|
|
|
|
|
|
Face cleanups. Remove some uses of old-style face spec and :bold/:italic.
* faces.el (set-face-attribute): Doc fix.
(modify-face): Don't use :bold and :italic.
(error, warning, success): Tweak definitions.
* cus-edit.el (custom-modified, custom-invalid, custom-rogue)
(custom-modified, custom-set, custom-changed, custom-themed)
(custom-saved, custom-button, custom-button-mouse)
(custom-button-pressed, custom-state, custom-comment-tag)
(custom-variable-tag, custom-group-tag-1, custom-group-tag)
(custom-group-subtitle): Use new-style face specs.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face): Remove obsolete face alias.
* epa.el (epa-validity-high, epa-validity-medium)
(epa-validity-low, epa-mark, epa-field-name, epa-string)
(epa-field-name, epa-field-body):
* font-lock.el (font-lock-comment-face, font-lock-string-face)
(font-lock-keyword-face, font-lock-builtin-face)
(font-lock-function-name-face, font-lock-variable-name-face)
(font-lock-type-face, font-lock-constant-face):
* ido.el (ido-first-match, ido-only-match, ido-subdir)
(ido-virtual, ido-indicator, ido-incomplete-regexp):
* speedbar.el (speedbar-button-face, speedbar-file-face)
(speedbar-directory-face, speedbar-tag-face)
(speedbar-selected-face, speedbar-highlight-face)
(speedbar-separator-face):
* whitespace.el (whitespace-newline, whitespace-space)
(whitespace-hspace, whitespace-tab, whitespace-trailing)
(whitespace-line, whitespace-space-before-tab)
(whitespace-space-after-tab, whitespace-indentation)
(whitespace-empty):
* emulation/cua-base.el (cua-global-mark):
* eshell/em-prompt.el (eshell-prompt):
* net/newst-plainview.el (newsticker-new-item-face)
(newsticker-old-item-face, newsticker-immortal-item-face)
(newsticker-obsolete-item-face, newsticker-date-face)
(newsticker-statistics-face, newsticker-default-face):
* net/newst-reader.el (newsticker-feed-face)
(newsticker-extra-face, newsticker-enclosure-face):
* net/newst-treeview.el (newsticker-treeview-face)
(newsticker-treeview-new-face, newsticker-treeview-old-face)
(newsticker-treeview-immortal-face)
(newsticker-treeview-obsolete-face)
(newsticker-treeview-selection-face):
* net/rcirc.el (rcirc-my-nick, rcirc-other-nick)
(rcirc-bright-nick, rcirc-server, rcirc-timestamp)
(rcirc-nick-in-message, rcirc-nick-in-message-full-line)
(rcirc-prompt, rcirc-track-keyword, rcirc-url, rcirc-keyword):
* nxml/nxml-outln.el (nxml-heading, nxml-outline-indicator)
(nxml-outline-active-indicator, nxml-outline-ellipsis):
* play/mpuz.el (mpuz-unsolved, mpuz-solved, mpuz-trivial)
(mpuz-text):
* progmodes/vera-mode.el (vera-font-lock-number)
(vera-font-lock-function, vera-font-lock-interface):
* textmodes/table.el (table-cell): Use new-style face specs, and
don't use the old :bold and :italic attributes.
* erc-button.el (erc-button):
* erc-goodies.el (erc-bold-face, erc-inverse-face)
(erc-underline-face, fg:erc-color-*):
* erc-match.el (erc-current-nick-face, erc-dangerous-host-face)
(erc-pal-face, erc-fool-face, erc-keyword-face):
* erc-stamp.el (erc-timestamp-face): Likewise.
* erc.el (erc-direct-msg-face, erc-header-line, erc-input-face)
(erc-command-indicator-face, erc-notice-face, erc-action-face)
(erc-error-face, erc-my-nick-face, erc-nick-default-face)
(erc-nick-msg-face): Use new-style face specs, and avoid :bold.
* progmodes/ebrowse.el (ebrowse-tree-mark, ebrowse-root-class)
(ebrowse-member-attribute, ebrowse-default, ebrowse-file-name)
(ebrowse-member-class, ebrowse-progress): Likewise.
(ebrowse-tree-mark-face, ebrowse-root-class-face)
(ebrowse-file-name-face, ebrowse-default-face)
(ebrowse-member-attribute-face, ebrowse-member-class-face)
(ebrowse-progress-face): Remove obsolete faces.
* progmodes/flymake.el (flymake-errline, flymake-warnline):
Inherit from error and warning faces respectively.
* textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate):
Likewise.
(flyspell-incorrect-face, flyspell-duplicate-face): Remove
obsolete aliases.
* display.texi (Face Attributes): Font family does not accept
wildcards. De-document obsolete :bold and :italic attributes.
(Defining Faces): Use new-style face spec format.
2012-06-08 16:39:49 +00:00
|
|
|
|
VALUE must be a string specifying the font family
|
|
|
|
|
\(e.g. \"Monospace\") or a fontset.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
2008-06-13 01:56:55 +00:00
|
|
|
|
`:foundry'
|
|
|
|
|
|
|
|
|
|
VALUE must be a string specifying the font foundry,
|
Fix minor quoting problems in doc strings
These were glitches regardless of how or whether we tackle the
problem of grave accent in doc strings.
* lisp/calc/calc-aent.el (math-restore-placeholders):
* lisp/ido.el (ido-ignore-buffers, ido-ignore-files):
* lisp/leim/quail/cyrillic.el ("bulgarian-alt-phonetic"):
* lisp/leim/quail/hebrew.el ("hebrew-new")
("hebrew-biblical-sil"):
* lisp/leim/quail/thai.el ("thai-kesmanee"):
* lisp/progmodes/idlw-shell.el (idlwave-shell-file-name-chars):
Used curved quotes to avoid ambiguities like ‘`''’ in doc strings.
* lisp/calendar/calendar.el (calendar-month-abbrev-array):
* lisp/cedet/semantic/mru-bookmark.el (semantic-mrub-cache-flush-fcn):
* lisp/cedet/semantic/symref.el (semantic-symref-tool-baseclass):
* lisp/cedet/semantic/tag.el (semantic-tag-copy)
(semantic-tag-components):
* lisp/cedet/srecode/cpp.el (srecode-semantic-handle-:cpp):
* lisp/cedet/srecode/texi.el (srecode-texi-texify-docstring):
* lisp/emacs-lisp/byte-opt.el (byte-optimize-all-constp):
* lisp/emacs-lisp/checkdoc.el (checkdoc-message-text-engine):
* lisp/emacs-lisp/generator.el (iter-next):
* lisp/gnus/gnus-art.el (gnus-treat-strip-list-identifiers)
(gnus-article-mode-syntax-table):
* lisp/net/rlogin.el (rlogin-directory-tracking-mode):
* lisp/net/soap-client.el (soap-wsdl-get):
* lisp/net/telnet.el (telnet-mode):
* lisp/org/org-compat.el (org-number-sequence):
* lisp/org/org.el (org-remove-highlights-with-change)
(org-structure-template-alist):
* lisp/org/ox-html.el (org-html-link-org-files-as-html):
* lisp/play/handwrite.el (handwrite-10pt, handwrite-11pt)
(handwrite-12pt, handwrite-13pt):
* lisp/progmodes/f90.el (f90-mode, f90-abbrev-start):
* lisp/progmodes/idlwave.el (idlwave-mode, idlwave-check-abbrev):
* lisp/progmodes/verilog-mode.el (verilog-tool)
(verilog-string-replace-matches, verilog-preprocess)
(verilog-auto-insert-lisp, verilog-auto-insert-last):
* lisp/textmodes/makeinfo.el (makeinfo-options):
* src/font.c (Ffont_spec):
Fix minor quoting problems in doc strings, e.g., missing quote,
``x'' where `x' was meant, etc.
* lisp/erc/erc-backend.el (erc-process-sentinel-2):
Fix minor quoting problem in other string.
* lisp/leim/quail/ethiopic.el ("ethiopic"):
* lisp/term/tvi970.el (tvi970-set-keypad-mode):
Omit unnecessary quotes.
* lisp/faces.el (set-face-attribute, set-face-underline)
(set-face-inverse-video, x-create-frame-with-faces):
* lisp/gnus/gnus-group.el (gnus-group-nnimap-edit-acl):
* lisp/mail/supercite.el (sc-attribs-%@-addresses)
(sc-attribs-!-addresses, sc-attribs-<>-addresses):
* lisp/net/tramp.el (tramp-methods):
* lisp/recentf.el (recentf-show-file-shortcuts-flag):
* lisp/textmodes/artist.el (artist-ellipse-right-char)
(artist-ellipse-left-char, artist-vaporize-fuzziness)
(artist-spray-chars, artist-mode, artist-replace-string)
(artist-put-pixel, artist-text-see-thru):
* lisp/vc/ediff-util.el (ediff-submit-report):
* lisp/vc/log-edit.el (log-edit-changelog-full-paragraphs):
Use double-quotes rather than TeX markup in doc strings.
* lisp/skeleton.el (skeleton-pair-insert-maybe):
Reword to avoid the need for grave accent and apostrophe.
* lisp/xt-mouse.el (xterm-mouse-tracking-enable-sequence):
Don't use grave and acute accents to quote.
2015-05-19 21:59:15 +00:00
|
|
|
|
e.g., \"adobe\". If a font foundry is specified, wild-cards `*'
|
2008-06-13 01:56:55 +00:00
|
|
|
|
and `?' are allowed.
|
|
|
|
|
|
1999-07-21 21:43:52 +00:00
|
|
|
|
`:width'
|
|
|
|
|
|
|
|
|
|
VALUE specifies the relative proportionate width of the font to use.
|
|
|
|
|
It must be one of the symbols `ultra-condensed', `extra-condensed',
|
|
|
|
|
`condensed', `semi-condensed', `normal', `semi-expanded', `expanded',
|
|
|
|
|
`extra-expanded', or `ultra-expanded'.
|
|
|
|
|
|
|
|
|
|
`:height'
|
|
|
|
|
|
Face cleanups. Remove some uses of old-style face spec and :bold/:italic.
* faces.el (set-face-attribute): Doc fix.
(modify-face): Don't use :bold and :italic.
(error, warning, success): Tweak definitions.
* cus-edit.el (custom-modified, custom-invalid, custom-rogue)
(custom-modified, custom-set, custom-changed, custom-themed)
(custom-saved, custom-button, custom-button-mouse)
(custom-button-pressed, custom-state, custom-comment-tag)
(custom-variable-tag, custom-group-tag-1, custom-group-tag)
(custom-group-subtitle): Use new-style face specs.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face): Remove obsolete face alias.
* epa.el (epa-validity-high, epa-validity-medium)
(epa-validity-low, epa-mark, epa-field-name, epa-string)
(epa-field-name, epa-field-body):
* font-lock.el (font-lock-comment-face, font-lock-string-face)
(font-lock-keyword-face, font-lock-builtin-face)
(font-lock-function-name-face, font-lock-variable-name-face)
(font-lock-type-face, font-lock-constant-face):
* ido.el (ido-first-match, ido-only-match, ido-subdir)
(ido-virtual, ido-indicator, ido-incomplete-regexp):
* speedbar.el (speedbar-button-face, speedbar-file-face)
(speedbar-directory-face, speedbar-tag-face)
(speedbar-selected-face, speedbar-highlight-face)
(speedbar-separator-face):
* whitespace.el (whitespace-newline, whitespace-space)
(whitespace-hspace, whitespace-tab, whitespace-trailing)
(whitespace-line, whitespace-space-before-tab)
(whitespace-space-after-tab, whitespace-indentation)
(whitespace-empty):
* emulation/cua-base.el (cua-global-mark):
* eshell/em-prompt.el (eshell-prompt):
* net/newst-plainview.el (newsticker-new-item-face)
(newsticker-old-item-face, newsticker-immortal-item-face)
(newsticker-obsolete-item-face, newsticker-date-face)
(newsticker-statistics-face, newsticker-default-face):
* net/newst-reader.el (newsticker-feed-face)
(newsticker-extra-face, newsticker-enclosure-face):
* net/newst-treeview.el (newsticker-treeview-face)
(newsticker-treeview-new-face, newsticker-treeview-old-face)
(newsticker-treeview-immortal-face)
(newsticker-treeview-obsolete-face)
(newsticker-treeview-selection-face):
* net/rcirc.el (rcirc-my-nick, rcirc-other-nick)
(rcirc-bright-nick, rcirc-server, rcirc-timestamp)
(rcirc-nick-in-message, rcirc-nick-in-message-full-line)
(rcirc-prompt, rcirc-track-keyword, rcirc-url, rcirc-keyword):
* nxml/nxml-outln.el (nxml-heading, nxml-outline-indicator)
(nxml-outline-active-indicator, nxml-outline-ellipsis):
* play/mpuz.el (mpuz-unsolved, mpuz-solved, mpuz-trivial)
(mpuz-text):
* progmodes/vera-mode.el (vera-font-lock-number)
(vera-font-lock-function, vera-font-lock-interface):
* textmodes/table.el (table-cell): Use new-style face specs, and
don't use the old :bold and :italic attributes.
* erc-button.el (erc-button):
* erc-goodies.el (erc-bold-face, erc-inverse-face)
(erc-underline-face, fg:erc-color-*):
* erc-match.el (erc-current-nick-face, erc-dangerous-host-face)
(erc-pal-face, erc-fool-face, erc-keyword-face):
* erc-stamp.el (erc-timestamp-face): Likewise.
* erc.el (erc-direct-msg-face, erc-header-line, erc-input-face)
(erc-command-indicator-face, erc-notice-face, erc-action-face)
(erc-error-face, erc-my-nick-face, erc-nick-default-face)
(erc-nick-msg-face): Use new-style face specs, and avoid :bold.
* progmodes/ebrowse.el (ebrowse-tree-mark, ebrowse-root-class)
(ebrowse-member-attribute, ebrowse-default, ebrowse-file-name)
(ebrowse-member-class, ebrowse-progress): Likewise.
(ebrowse-tree-mark-face, ebrowse-root-class-face)
(ebrowse-file-name-face, ebrowse-default-face)
(ebrowse-member-attribute-face, ebrowse-member-class-face)
(ebrowse-progress-face): Remove obsolete faces.
* progmodes/flymake.el (flymake-errline, flymake-warnline):
Inherit from error and warning faces respectively.
* textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate):
Likewise.
(flyspell-incorrect-face, flyspell-duplicate-face): Remove
obsolete aliases.
* display.texi (Face Attributes): Font family does not accept
wildcards. De-document obsolete :bold and :italic attributes.
(Defining Faces): Use new-style face spec format.
2012-06-08 16:39:49 +00:00
|
|
|
|
VALUE specifies the relative or absolute height of the font. An
|
|
|
|
|
absolute height is an integer, and specifies font height in units
|
|
|
|
|
of 1/10 pt. A relative height is either a floating point number,
|
2011-02-03 06:55:48 +00:00
|
|
|
|
which specifies a scaling factor for the underlying face height;
|
Face cleanups. Remove some uses of old-style face spec and :bold/:italic.
* faces.el (set-face-attribute): Doc fix.
(modify-face): Don't use :bold and :italic.
(error, warning, success): Tweak definitions.
* cus-edit.el (custom-modified, custom-invalid, custom-rogue)
(custom-modified, custom-set, custom-changed, custom-themed)
(custom-saved, custom-button, custom-button-mouse)
(custom-button-pressed, custom-state, custom-comment-tag)
(custom-variable-tag, custom-group-tag-1, custom-group-tag)
(custom-group-subtitle): Use new-style face specs.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face): Remove obsolete face alias.
* epa.el (epa-validity-high, epa-validity-medium)
(epa-validity-low, epa-mark, epa-field-name, epa-string)
(epa-field-name, epa-field-body):
* font-lock.el (font-lock-comment-face, font-lock-string-face)
(font-lock-keyword-face, font-lock-builtin-face)
(font-lock-function-name-face, font-lock-variable-name-face)
(font-lock-type-face, font-lock-constant-face):
* ido.el (ido-first-match, ido-only-match, ido-subdir)
(ido-virtual, ido-indicator, ido-incomplete-regexp):
* speedbar.el (speedbar-button-face, speedbar-file-face)
(speedbar-directory-face, speedbar-tag-face)
(speedbar-selected-face, speedbar-highlight-face)
(speedbar-separator-face):
* whitespace.el (whitespace-newline, whitespace-space)
(whitespace-hspace, whitespace-tab, whitespace-trailing)
(whitespace-line, whitespace-space-before-tab)
(whitespace-space-after-tab, whitespace-indentation)
(whitespace-empty):
* emulation/cua-base.el (cua-global-mark):
* eshell/em-prompt.el (eshell-prompt):
* net/newst-plainview.el (newsticker-new-item-face)
(newsticker-old-item-face, newsticker-immortal-item-face)
(newsticker-obsolete-item-face, newsticker-date-face)
(newsticker-statistics-face, newsticker-default-face):
* net/newst-reader.el (newsticker-feed-face)
(newsticker-extra-face, newsticker-enclosure-face):
* net/newst-treeview.el (newsticker-treeview-face)
(newsticker-treeview-new-face, newsticker-treeview-old-face)
(newsticker-treeview-immortal-face)
(newsticker-treeview-obsolete-face)
(newsticker-treeview-selection-face):
* net/rcirc.el (rcirc-my-nick, rcirc-other-nick)
(rcirc-bright-nick, rcirc-server, rcirc-timestamp)
(rcirc-nick-in-message, rcirc-nick-in-message-full-line)
(rcirc-prompt, rcirc-track-keyword, rcirc-url, rcirc-keyword):
* nxml/nxml-outln.el (nxml-heading, nxml-outline-indicator)
(nxml-outline-active-indicator, nxml-outline-ellipsis):
* play/mpuz.el (mpuz-unsolved, mpuz-solved, mpuz-trivial)
(mpuz-text):
* progmodes/vera-mode.el (vera-font-lock-number)
(vera-font-lock-function, vera-font-lock-interface):
* textmodes/table.el (table-cell): Use new-style face specs, and
don't use the old :bold and :italic attributes.
* erc-button.el (erc-button):
* erc-goodies.el (erc-bold-face, erc-inverse-face)
(erc-underline-face, fg:erc-color-*):
* erc-match.el (erc-current-nick-face, erc-dangerous-host-face)
(erc-pal-face, erc-fool-face, erc-keyword-face):
* erc-stamp.el (erc-timestamp-face): Likewise.
* erc.el (erc-direct-msg-face, erc-header-line, erc-input-face)
(erc-command-indicator-face, erc-notice-face, erc-action-face)
(erc-error-face, erc-my-nick-face, erc-nick-default-face)
(erc-nick-msg-face): Use new-style face specs, and avoid :bold.
* progmodes/ebrowse.el (ebrowse-tree-mark, ebrowse-root-class)
(ebrowse-member-attribute, ebrowse-default, ebrowse-file-name)
(ebrowse-member-class, ebrowse-progress): Likewise.
(ebrowse-tree-mark-face, ebrowse-root-class-face)
(ebrowse-file-name-face, ebrowse-default-face)
(ebrowse-member-attribute-face, ebrowse-member-class-face)
(ebrowse-progress-face): Remove obsolete faces.
* progmodes/flymake.el (flymake-errline, flymake-warnline):
Inherit from error and warning faces respectively.
* textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate):
Likewise.
(flyspell-incorrect-face, flyspell-duplicate-face): Remove
obsolete aliases.
* display.texi (Face Attributes): Font family does not accept
wildcards. De-document obsolete :bold and :italic attributes.
(Defining Faces): Use new-style face spec format.
2012-06-08 16:39:49 +00:00
|
|
|
|
or a function that takes a single argument (the underlying face
|
|
|
|
|
height) and returns the new height. Note that for the `default'
|
|
|
|
|
face, you must specify an absolute height (since there is nothing
|
2011-02-03 06:55:48 +00:00
|
|
|
|
for it to be relative to).
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
`:weight'
|
|
|
|
|
|
|
|
|
|
VALUE specifies the weight of the font to use. It must be one of the
|
|
|
|
|
symbols `ultra-bold', `extra-bold', `bold', `semi-bold', `normal',
|
|
|
|
|
`semi-light', `light', `extra-light', `ultra-light'.
|
|
|
|
|
|
|
|
|
|
`:slant'
|
|
|
|
|
|
|
|
|
|
VALUE specifies the slant of the font to use. It must be one of the
|
|
|
|
|
symbols `italic', `oblique', `normal', `reverse-italic', or
|
|
|
|
|
`reverse-oblique'.
|
|
|
|
|
|
|
|
|
|
`:foreground', `:background'
|
|
|
|
|
|
|
|
|
|
VALUE must be a color name, a string.
|
|
|
|
|
|
|
|
|
|
`:underline'
|
|
|
|
|
|
2012-06-17 00:32:36 +00:00
|
|
|
|
VALUE specifies whether characters in FACE should be underlined.
|
|
|
|
|
If VALUE is t, underline with foreground color of the face.
|
|
|
|
|
If VALUE is a string, underline with that color.
|
|
|
|
|
If VALUE is nil, explicitly don't underline.
|
|
|
|
|
|
|
|
|
|
Otherwise, VALUE must be a property list of the form:
|
|
|
|
|
|
|
|
|
|
`(:color COLOR :style STYLE)'.
|
|
|
|
|
|
|
|
|
|
COLOR can be a either a color name string or `foreground-color'.
|
|
|
|
|
STYLE can be either `line' or `wave'.
|
|
|
|
|
If a keyword/value pair is missing from the property list, a
|
|
|
|
|
default value will be used for the value.
|
|
|
|
|
The default value of COLOR is the foreground color of the face.
|
|
|
|
|
The default value of STYLE is `line'.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
`:overline'
|
|
|
|
|
|
|
|
|
|
VALUE specifies whether characters in FACE should be overlined. If
|
|
|
|
|
VALUE is t, overline with foreground color of the face. If VALUE is a
|
|
|
|
|
string, overline with that color. If VALUE is nil, explicitly don't
|
|
|
|
|
overline.
|
|
|
|
|
|
|
|
|
|
`:strike-through'
|
|
|
|
|
|
|
|
|
|
VALUE specifies whether characters in FACE should be drawn with a line
|
|
|
|
|
striking through them. If VALUE is t, use the foreground color of the
|
|
|
|
|
face. If VALUE is a string, strike-through with that color. If VALUE
|
|
|
|
|
is nil, explicitly don't strike through.
|
|
|
|
|
|
|
|
|
|
`:box'
|
|
|
|
|
|
|
|
|
|
VALUE specifies whether characters in FACE should have a box drawn
|
|
|
|
|
around them. If VALUE is nil, explicitly don't draw boxes. If
|
|
|
|
|
VALUE is t, draw a box with lines of width 1 in the foreground color
|
|
|
|
|
of the face. If VALUE is a string, the string must be a color name,
|
|
|
|
|
and the box is drawn in that color with a line width of 1. Otherwise,
|
|
|
|
|
VALUE must be a property list of the form `(:line-width WIDTH
|
|
|
|
|
:color COLOR :style STYLE)'. If a keyword/value pair is missing from
|
|
|
|
|
the property list, a default value will be used for the value, as
|
|
|
|
|
specified below. WIDTH specifies the width of the lines to draw; it
|
2001-02-09 12:35:36 +00:00
|
|
|
|
defaults to 1. If WIDTH is negative, the absolute value is the width
|
|
|
|
|
of the lines, and draw top/bottom lines inside the characters area,
|
|
|
|
|
not around it. COLOR is the name of the color to draw in, default is
|
1999-07-21 21:43:52 +00:00
|
|
|
|
the foreground color of the face for simple boxes, and the background
|
|
|
|
|
color of the face for 3D boxes. STYLE specifies whether a 3D box
|
|
|
|
|
should be draw. If STYLE is `released-button', draw a box looking
|
|
|
|
|
like a released 3D button. If STYLE is `pressed-button' draw a box
|
|
|
|
|
that appears like a pressed button. If STYLE is nil, the default if
|
|
|
|
|
the property list doesn't contain a style specification, draw a 2D
|
|
|
|
|
box.
|
|
|
|
|
|
|
|
|
|
`:inverse-video'
|
|
|
|
|
|
|
|
|
|
VALUE specifies whether characters in FACE should be displayed in
|
2000-05-09 15:45:57 +00:00
|
|
|
|
inverse video. VALUE must be one of t or nil.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
`:stipple'
|
|
|
|
|
|
|
|
|
|
If VALUE is a string, it must be the name of a file of pixmap data.
|
|
|
|
|
The directories listed in the `x-bitmap-file-path' variable are
|
|
|
|
|
searched. Alternatively, VALUE may be a list of the form (WIDTH
|
|
|
|
|
HEIGHT DATA) where WIDTH and HEIGHT are the size in pixels, and DATA
|
|
|
|
|
is a string containing the raw bits of the bitmap. VALUE nil means
|
|
|
|
|
explicitly don't use a stipple pattern.
|
|
|
|
|
|
2008-06-13 01:56:55 +00:00
|
|
|
|
For convenience, attributes `:family', `:foundry', `:width',
|
|
|
|
|
`:height', `:weight', and `:slant' may also be set in one step
|
|
|
|
|
from an X font name:
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
`:font'
|
|
|
|
|
|
Face cleanups. Remove some uses of old-style face spec and :bold/:italic.
* faces.el (set-face-attribute): Doc fix.
(modify-face): Don't use :bold and :italic.
(error, warning, success): Tweak definitions.
* cus-edit.el (custom-modified, custom-invalid, custom-rogue)
(custom-modified, custom-set, custom-changed, custom-themed)
(custom-saved, custom-button, custom-button-mouse)
(custom-button-pressed, custom-state, custom-comment-tag)
(custom-variable-tag, custom-group-tag-1, custom-group-tag)
(custom-group-subtitle): Use new-style face specs.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face): Remove obsolete face alias.
* epa.el (epa-validity-high, epa-validity-medium)
(epa-validity-low, epa-mark, epa-field-name, epa-string)
(epa-field-name, epa-field-body):
* font-lock.el (font-lock-comment-face, font-lock-string-face)
(font-lock-keyword-face, font-lock-builtin-face)
(font-lock-function-name-face, font-lock-variable-name-face)
(font-lock-type-face, font-lock-constant-face):
* ido.el (ido-first-match, ido-only-match, ido-subdir)
(ido-virtual, ido-indicator, ido-incomplete-regexp):
* speedbar.el (speedbar-button-face, speedbar-file-face)
(speedbar-directory-face, speedbar-tag-face)
(speedbar-selected-face, speedbar-highlight-face)
(speedbar-separator-face):
* whitespace.el (whitespace-newline, whitespace-space)
(whitespace-hspace, whitespace-tab, whitespace-trailing)
(whitespace-line, whitespace-space-before-tab)
(whitespace-space-after-tab, whitespace-indentation)
(whitespace-empty):
* emulation/cua-base.el (cua-global-mark):
* eshell/em-prompt.el (eshell-prompt):
* net/newst-plainview.el (newsticker-new-item-face)
(newsticker-old-item-face, newsticker-immortal-item-face)
(newsticker-obsolete-item-face, newsticker-date-face)
(newsticker-statistics-face, newsticker-default-face):
* net/newst-reader.el (newsticker-feed-face)
(newsticker-extra-face, newsticker-enclosure-face):
* net/newst-treeview.el (newsticker-treeview-face)
(newsticker-treeview-new-face, newsticker-treeview-old-face)
(newsticker-treeview-immortal-face)
(newsticker-treeview-obsolete-face)
(newsticker-treeview-selection-face):
* net/rcirc.el (rcirc-my-nick, rcirc-other-nick)
(rcirc-bright-nick, rcirc-server, rcirc-timestamp)
(rcirc-nick-in-message, rcirc-nick-in-message-full-line)
(rcirc-prompt, rcirc-track-keyword, rcirc-url, rcirc-keyword):
* nxml/nxml-outln.el (nxml-heading, nxml-outline-indicator)
(nxml-outline-active-indicator, nxml-outline-ellipsis):
* play/mpuz.el (mpuz-unsolved, mpuz-solved, mpuz-trivial)
(mpuz-text):
* progmodes/vera-mode.el (vera-font-lock-number)
(vera-font-lock-function, vera-font-lock-interface):
* textmodes/table.el (table-cell): Use new-style face specs, and
don't use the old :bold and :italic attributes.
* erc-button.el (erc-button):
* erc-goodies.el (erc-bold-face, erc-inverse-face)
(erc-underline-face, fg:erc-color-*):
* erc-match.el (erc-current-nick-face, erc-dangerous-host-face)
(erc-pal-face, erc-fool-face, erc-keyword-face):
* erc-stamp.el (erc-timestamp-face): Likewise.
* erc.el (erc-direct-msg-face, erc-header-line, erc-input-face)
(erc-command-indicator-face, erc-notice-face, erc-action-face)
(erc-error-face, erc-my-nick-face, erc-nick-default-face)
(erc-nick-msg-face): Use new-style face specs, and avoid :bold.
* progmodes/ebrowse.el (ebrowse-tree-mark, ebrowse-root-class)
(ebrowse-member-attribute, ebrowse-default, ebrowse-file-name)
(ebrowse-member-class, ebrowse-progress): Likewise.
(ebrowse-tree-mark-face, ebrowse-root-class-face)
(ebrowse-file-name-face, ebrowse-default-face)
(ebrowse-member-attribute-face, ebrowse-member-class-face)
(ebrowse-progress-face): Remove obsolete faces.
* progmodes/flymake.el (flymake-errline, flymake-warnline):
Inherit from error and warning faces respectively.
* textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate):
Likewise.
(flyspell-incorrect-face, flyspell-duplicate-face): Remove
obsolete aliases.
* display.texi (Face Attributes): Font family does not accept
wildcards. De-document obsolete :bold and :italic attributes.
(Defining Faces): Use new-style face spec format.
2012-06-08 16:39:49 +00:00
|
|
|
|
Set font-related face attributes from VALUE. VALUE must be a
|
|
|
|
|
valid font name or font object. Setting this attribute will also
|
|
|
|
|
set the `:family', `:foundry', `:width', `:height', `:weight',
|
|
|
|
|
and `:slant' attributes.
|
2000-08-26 10:59:51 +00:00
|
|
|
|
|
|
|
|
|
`:inherit'
|
|
|
|
|
|
Face cleanups. Remove some uses of old-style face spec and :bold/:italic.
* faces.el (set-face-attribute): Doc fix.
(modify-face): Don't use :bold and :italic.
(error, warning, success): Tweak definitions.
* cus-edit.el (custom-modified, custom-invalid, custom-rogue)
(custom-modified, custom-set, custom-changed, custom-themed)
(custom-saved, custom-button, custom-button-mouse)
(custom-button-pressed, custom-state, custom-comment-tag)
(custom-variable-tag, custom-group-tag-1, custom-group-tag)
(custom-group-subtitle): Use new-style face specs.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face): Remove obsolete face alias.
* epa.el (epa-validity-high, epa-validity-medium)
(epa-validity-low, epa-mark, epa-field-name, epa-string)
(epa-field-name, epa-field-body):
* font-lock.el (font-lock-comment-face, font-lock-string-face)
(font-lock-keyword-face, font-lock-builtin-face)
(font-lock-function-name-face, font-lock-variable-name-face)
(font-lock-type-face, font-lock-constant-face):
* ido.el (ido-first-match, ido-only-match, ido-subdir)
(ido-virtual, ido-indicator, ido-incomplete-regexp):
* speedbar.el (speedbar-button-face, speedbar-file-face)
(speedbar-directory-face, speedbar-tag-face)
(speedbar-selected-face, speedbar-highlight-face)
(speedbar-separator-face):
* whitespace.el (whitespace-newline, whitespace-space)
(whitespace-hspace, whitespace-tab, whitespace-trailing)
(whitespace-line, whitespace-space-before-tab)
(whitespace-space-after-tab, whitespace-indentation)
(whitespace-empty):
* emulation/cua-base.el (cua-global-mark):
* eshell/em-prompt.el (eshell-prompt):
* net/newst-plainview.el (newsticker-new-item-face)
(newsticker-old-item-face, newsticker-immortal-item-face)
(newsticker-obsolete-item-face, newsticker-date-face)
(newsticker-statistics-face, newsticker-default-face):
* net/newst-reader.el (newsticker-feed-face)
(newsticker-extra-face, newsticker-enclosure-face):
* net/newst-treeview.el (newsticker-treeview-face)
(newsticker-treeview-new-face, newsticker-treeview-old-face)
(newsticker-treeview-immortal-face)
(newsticker-treeview-obsolete-face)
(newsticker-treeview-selection-face):
* net/rcirc.el (rcirc-my-nick, rcirc-other-nick)
(rcirc-bright-nick, rcirc-server, rcirc-timestamp)
(rcirc-nick-in-message, rcirc-nick-in-message-full-line)
(rcirc-prompt, rcirc-track-keyword, rcirc-url, rcirc-keyword):
* nxml/nxml-outln.el (nxml-heading, nxml-outline-indicator)
(nxml-outline-active-indicator, nxml-outline-ellipsis):
* play/mpuz.el (mpuz-unsolved, mpuz-solved, mpuz-trivial)
(mpuz-text):
* progmodes/vera-mode.el (vera-font-lock-number)
(vera-font-lock-function, vera-font-lock-interface):
* textmodes/table.el (table-cell): Use new-style face specs, and
don't use the old :bold and :italic attributes.
* erc-button.el (erc-button):
* erc-goodies.el (erc-bold-face, erc-inverse-face)
(erc-underline-face, fg:erc-color-*):
* erc-match.el (erc-current-nick-face, erc-dangerous-host-face)
(erc-pal-face, erc-fool-face, erc-keyword-face):
* erc-stamp.el (erc-timestamp-face): Likewise.
* erc.el (erc-direct-msg-face, erc-header-line, erc-input-face)
(erc-command-indicator-face, erc-notice-face, erc-action-face)
(erc-error-face, erc-my-nick-face, erc-nick-default-face)
(erc-nick-msg-face): Use new-style face specs, and avoid :bold.
* progmodes/ebrowse.el (ebrowse-tree-mark, ebrowse-root-class)
(ebrowse-member-attribute, ebrowse-default, ebrowse-file-name)
(ebrowse-member-class, ebrowse-progress): Likewise.
(ebrowse-tree-mark-face, ebrowse-root-class-face)
(ebrowse-file-name-face, ebrowse-default-face)
(ebrowse-member-attribute-face, ebrowse-member-class-face)
(ebrowse-progress-face): Remove obsolete faces.
* progmodes/flymake.el (flymake-errline, flymake-warnline):
Inherit from error and warning faces respectively.
* textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate):
Likewise.
(flyspell-incorrect-face, flyspell-duplicate-face): Remove
obsolete aliases.
* display.texi (Face Attributes): Font family does not accept
wildcards. De-document obsolete :bold and :italic attributes.
(Defining Faces): Use new-style face spec format.
2012-06-08 16:39:49 +00:00
|
|
|
|
VALUE is the name of a face from which to inherit attributes, or
|
|
|
|
|
a list of face names. Attributes from inherited faces are merged
|
|
|
|
|
into the face like an underlying face would be, with higher
|
|
|
|
|
priority than underlying faces.
|
|
|
|
|
|
|
|
|
|
For backward compatibility, the keywords `:bold' and `:italic'
|
|
|
|
|
can be used to specify weight and slant respectively. This usage
|
|
|
|
|
is considered obsolete. For these two keywords, the VALUE must
|
|
|
|
|
be either t or nil. A value of t for `:bold' is equivalent to
|
|
|
|
|
setting `:weight' to `bold', and a value of t for `:italic' is
|
|
|
|
|
equivalent to setting `:slant' to `italic'. But if `:weight' is
|
|
|
|
|
specified in the face spec, `:bold' is ignored, and if `:slant'
|
|
|
|
|
is specified, `:italic' is ignored."
|
2008-10-14 19:01:50 +00:00
|
|
|
|
(setq args (purecopy args))
|
|
|
|
|
(let ((where (if (null frame) 0 frame))
|
|
|
|
|
(spec args)
|
2015-07-01 16:33:56 +00:00
|
|
|
|
family foundry orig-family orig-foundry)
|
2003-05-28 11:17:33 +00:00
|
|
|
|
;; If we set the new-frame defaults, this face is modified outside Custom.
|
|
|
|
|
(if (memq where '(0 t))
|
2005-06-22 14:20:18 +00:00
|
|
|
|
(put (or (get face 'face-alias) face) 'face-modified t))
|
2008-10-14 19:01:50 +00:00
|
|
|
|
;; If family and/or foundry are specified, set it first. Certain
|
|
|
|
|
;; face attributes, e.g. :weight semi-condensed, are not supported
|
|
|
|
|
;; in every font. See bug#1127.
|
|
|
|
|
(while spec
|
|
|
|
|
(cond ((eq (car spec) :family)
|
|
|
|
|
(setq family (cadr spec)))
|
|
|
|
|
((eq (car spec) :foundry)
|
|
|
|
|
(setq foundry (cadr spec))))
|
|
|
|
|
(setq spec (cddr spec)))
|
|
|
|
|
(when (or family foundry)
|
|
|
|
|
(when (and (stringp family)
|
|
|
|
|
(string-match "\\([^-]*\\)-\\([^-]*\\)" family))
|
2015-07-01 16:33:56 +00:00
|
|
|
|
(setq orig-foundry foundry
|
|
|
|
|
orig-family family)
|
2008-10-14 19:01:50 +00:00
|
|
|
|
(unless foundry
|
2009-05-19 01:28:54 +00:00
|
|
|
|
(setq foundry (match-string 1 family)))
|
2015-07-01 16:33:56 +00:00
|
|
|
|
(setq family (match-string 2 family))
|
|
|
|
|
;; Reject bogus "families" that are all-digits -- those are some
|
|
|
|
|
;; weird font names, like Foobar-12, that end in a number.
|
|
|
|
|
(when (string-match "\\`[0-9]*\\'" family)
|
|
|
|
|
(setq family orig-family)
|
|
|
|
|
(setq foundry orig-foundry)))
|
2010-02-07 04:14:26 +00:00
|
|
|
|
(when (or (stringp family) (eq family 'unspecified))
|
2008-10-14 19:01:50 +00:00
|
|
|
|
(internal-set-lisp-face-attribute face :family (purecopy family)
|
|
|
|
|
where))
|
2010-02-07 04:14:26 +00:00
|
|
|
|
(when (or (stringp foundry) (eq foundry 'unspecified))
|
2008-10-14 19:01:50 +00:00
|
|
|
|
(internal-set-lisp-face-attribute face :foundry (purecopy foundry)
|
|
|
|
|
where)))
|
2000-09-07 09:50:30 +00:00
|
|
|
|
(while args
|
2008-10-14 19:01:50 +00:00
|
|
|
|
(unless (memq (car args) '(:family :foundry))
|
2008-06-28 15:53:07 +00:00
|
|
|
|
(internal-set-lisp-face-attribute face (car args)
|
|
|
|
|
(purecopy (cadr args))
|
|
|
|
|
where))
|
2008-10-14 19:01:50 +00:00
|
|
|
|
(setq args (cddr args)))))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun make-face-bold (face &optional frame _noerror)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
"Make the font of FACE be bold, if possible.
|
|
|
|
|
FRAME nil or not specified means change face on all frames.
|
1999-11-03 17:17:28 +00:00
|
|
|
|
Argument NOERROR is ignored and retained for compatibility.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
Use `set-face-attribute' for finer control of the font weight."
|
2013-04-13 01:10:09 +00:00
|
|
|
|
(interactive (list (read-face-name "Make which face bold"
|
|
|
|
|
(face-at-point t))))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(set-face-attribute face frame :weight 'bold))
|
|
|
|
|
|
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun make-face-unbold (face &optional frame _noerror)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
"Make the font of FACE be non-bold, if possible.
|
1999-11-03 17:17:28 +00:00
|
|
|
|
FRAME nil or not specified means change face on all frames.
|
|
|
|
|
Argument NOERROR is ignored and retained for compatibility."
|
2013-04-13 01:10:09 +00:00
|
|
|
|
(interactive (list (read-face-name "Make which face non-bold"
|
|
|
|
|
(face-at-point t))))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(set-face-attribute face frame :weight 'normal))
|
|
|
|
|
|
2001-05-29 16:12:03 +00:00
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun make-face-italic (face &optional frame _noerror)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
"Make the font of FACE be italic, if possible.
|
|
|
|
|
FRAME nil or not specified means change face on all frames.
|
1999-11-03 17:17:28 +00:00
|
|
|
|
Argument NOERROR is ignored and retained for compatibility.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
Use `set-face-attribute' for finer control of the font slant."
|
2013-04-13 01:10:09 +00:00
|
|
|
|
(interactive (list (read-face-name "Make which face italic"
|
|
|
|
|
(face-at-point t))))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(set-face-attribute face frame :slant 'italic))
|
|
|
|
|
|
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun make-face-unitalic (face &optional frame _noerror)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
"Make the font of FACE be non-italic, if possible.
|
2000-05-09 15:45:57 +00:00
|
|
|
|
FRAME nil or not specified means change face on all frames.
|
|
|
|
|
Argument NOERROR is ignored and retained for compatibility."
|
2013-04-13 01:10:09 +00:00
|
|
|
|
(interactive (list (read-face-name "Make which face non-italic"
|
|
|
|
|
(face-at-point t))))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(set-face-attribute face frame :slant 'normal))
|
|
|
|
|
|
2001-05-29 16:12:03 +00:00
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun make-face-bold-italic (face &optional frame _noerror)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
"Make the font of FACE be bold and italic, if possible.
|
|
|
|
|
FRAME nil or not specified means change face on all frames.
|
1999-11-03 17:17:28 +00:00
|
|
|
|
Argument NOERROR is ignored and retained for compatibility.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
Use `set-face-attribute' for finer control of font weight and slant."
|
2013-04-13 01:10:09 +00:00
|
|
|
|
(interactive (list (read-face-name "Make which face bold-italic"
|
|
|
|
|
(face-at-point t))))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(set-face-attribute face frame :weight 'bold :slant 'italic))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defun set-face-font (face font &optional frame)
|
|
|
|
|
"Change font-related attributes of FACE to those of FONT (a string).
|
|
|
|
|
FRAME nil or not specified means change face on all frames.
|
2008-06-13 01:56:55 +00:00
|
|
|
|
This sets the attributes `:family', `:foundry', `:width',
|
|
|
|
|
`:height', `:weight', and `:slant'. When called interactively,
|
|
|
|
|
prompt for the face and font."
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(interactive (read-face-and-attribute :font))
|
|
|
|
|
(set-face-attribute face frame :font font))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;; Implementation note: Emulating gray background colors with a
|
|
|
|
|
;; stipple pattern is now part of the face realization process, and is
|
|
|
|
|
;; done in C depending on the frame on which the face is realized.
|
|
|
|
|
|
|
|
|
|
(defun set-face-background (face color &optional frame)
|
|
|
|
|
"Change the background color of face FACE to COLOR (a string).
|
|
|
|
|
FRAME nil or not specified means change face on all frames.
|
2005-01-01 14:21:37 +00:00
|
|
|
|
COLOR can be a system-defined color name (see `list-colors-display')
|
|
|
|
|
or a hex spec of the form #RRGGBB.
|
|
|
|
|
When called interactively, prompts for the face and color."
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(interactive (read-face-and-attribute :background))
|
2001-02-13 02:03:58 +00:00
|
|
|
|
(set-face-attribute face frame :background (or color 'unspecified)))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defun set-face-foreground (face color &optional frame)
|
|
|
|
|
"Change the foreground color of face FACE to COLOR (a string).
|
|
|
|
|
FRAME nil or not specified means change face on all frames.
|
2005-01-01 14:21:37 +00:00
|
|
|
|
COLOR can be a system-defined color name (see `list-colors-display')
|
|
|
|
|
or a hex spec of the form #RRGGBB.
|
|
|
|
|
When called interactively, prompts for the face and color."
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(interactive (read-face-and-attribute :foreground))
|
2001-02-13 02:03:58 +00:00
|
|
|
|
(set-face-attribute face frame :foreground (or color 'unspecified)))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defun set-face-stipple (face stipple &optional frame)
|
|
|
|
|
"Change the stipple pixmap of face FACE to STIPPLE.
|
|
|
|
|
FRAME nil or not specified means change face on all frames.
|
2000-05-09 15:45:57 +00:00
|
|
|
|
STIPPLE should be a string, the name of a file of pixmap data.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
The directories listed in the `x-bitmap-file-path' variable are searched.
|
|
|
|
|
|
|
|
|
|
Alternatively, STIPPLE may be a list of the form (WIDTH HEIGHT DATA)
|
|
|
|
|
where WIDTH and HEIGHT are the size in pixels,
|
|
|
|
|
and DATA is a string, containing the raw bits of the bitmap."
|
|
|
|
|
(interactive (read-face-and-attribute :stipple))
|
2001-02-13 02:03:58 +00:00
|
|
|
|
(set-face-attribute face frame :stipple (or stipple 'unspecified)))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
|
2012-11-15 07:30:46 +00:00
|
|
|
|
(defun set-face-underline (face underline &optional frame)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
"Specify whether face FACE is underlined.
|
|
|
|
|
UNDERLINE nil means FACE explicitly doesn't underline.
|
2012-11-15 07:30:46 +00:00
|
|
|
|
UNDERLINE t means FACE underlines with its foreground color.
|
|
|
|
|
If UNDERLINE is a string, underline with that color.
|
|
|
|
|
|
|
|
|
|
UNDERLINE may also be a list of the form (:color COLOR :style STYLE),
|
|
|
|
|
where COLOR is a string or `foreground-color', and STYLE is either
|
|
|
|
|
`line' or `wave'. :color may be omitted, which means to use the
|
|
|
|
|
foreground color. :style may be omitted, which means to use a line.
|
|
|
|
|
|
1999-07-21 21:43:52 +00:00
|
|
|
|
FRAME nil or not specified means change face on all frames.
|
2015-05-20 02:08:11 +00:00
|
|
|
|
Use `set-face-attribute' to \"unspecify\" underlining."
|
2012-11-15 07:30:46 +00:00
|
|
|
|
(interactive (read-face-and-attribute :underline))
|
2007-02-01 16:30:13 +00:00
|
|
|
|
(set-face-attribute face frame :underline underline))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
2012-11-15 07:30:46 +00:00
|
|
|
|
(define-obsolete-function-alias 'set-face-underline-p
|
|
|
|
|
'set-face-underline "24.3")
|
2005-08-22 19:53:05 +00:00
|
|
|
|
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
2012-11-21 08:27:13 +00:00
|
|
|
|
(defun set-face-inverse-video (face inverse-video-p &optional frame)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
"Specify whether face FACE is in inverse video.
|
|
|
|
|
INVERSE-VIDEO-P non-nil means FACE displays explicitly in inverse video.
|
|
|
|
|
INVERSE-VIDEO-P nil means FACE explicitly is not in inverse video.
|
|
|
|
|
FRAME nil or not specified means change face on all frames.
|
2015-05-20 02:08:11 +00:00
|
|
|
|
Use `set-face-attribute' to \"unspecify\" the inverse video attribute."
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(interactive
|
|
|
|
|
(let ((list (read-face-and-attribute :inverse-video)))
|
2012-11-21 08:27:13 +00:00
|
|
|
|
(list (car list) (if (cadr list) t))))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(set-face-attribute face frame :inverse-video inverse-video-p))
|
|
|
|
|
|
2012-11-21 08:27:13 +00:00
|
|
|
|
(define-obsolete-function-alias 'set-face-inverse-video-p
|
|
|
|
|
'set-face-inverse-video "24.4")
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
2012-11-21 08:27:13 +00:00
|
|
|
|
(defun set-face-bold (face bold-p &optional frame)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
"Specify whether face FACE is bold.
|
|
|
|
|
BOLD-P non-nil means FACE should explicitly display bold.
|
|
|
|
|
BOLD-P nil means FACE should explicitly display non-bold.
|
|
|
|
|
FRAME nil or not specified means change face on all frames.
|
|
|
|
|
Use `set-face-attribute' or `modify-face' for finer control."
|
|
|
|
|
(if (null bold-p)
|
|
|
|
|
(make-face-unbold face frame)
|
|
|
|
|
(make-face-bold face frame)))
|
|
|
|
|
|
2012-11-21 08:27:13 +00:00
|
|
|
|
(define-obsolete-function-alias 'set-face-bold-p 'set-face-bold "24.4")
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
2012-11-21 08:27:13 +00:00
|
|
|
|
|
|
|
|
|
(defun set-face-italic (face italic-p &optional frame)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
"Specify whether face FACE is italic.
|
|
|
|
|
ITALIC-P non-nil means FACE should explicitly display italic.
|
|
|
|
|
ITALIC-P nil means FACE should explicitly display non-italic.
|
|
|
|
|
FRAME nil or not specified means change face on all frames.
|
|
|
|
|
Use `set-face-attribute' or `modify-face' for finer control."
|
|
|
|
|
(if (null italic-p)
|
|
|
|
|
(make-face-unitalic face frame)
|
|
|
|
|
(make-face-italic face frame)))
|
|
|
|
|
|
2012-11-21 08:27:13 +00:00
|
|
|
|
(define-obsolete-function-alias 'set-face-italic-p 'set-face-italic "24.4")
|
|
|
|
|
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
(defalias 'set-face-background-pixmap 'set-face-stipple)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defun invert-face (face &optional frame)
|
|
|
|
|
"Swap the foreground and background colors of FACE.
|
2001-10-29 18:06:50 +00:00
|
|
|
|
If FRAME is omitted or nil, it means change face on all frames.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
If FACE specifies neither foreground nor background color,
|
|
|
|
|
set its foreground and background to the background and foreground
|
|
|
|
|
of the default face. Value is FACE."
|
2013-04-13 01:10:09 +00:00
|
|
|
|
(interactive (list (read-face-name "Invert face" (face-at-point t))))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(let ((fg (face-attribute face :foreground frame))
|
|
|
|
|
(bg (face-attribute face :background frame)))
|
2001-10-29 18:06:50 +00:00
|
|
|
|
(if (not (and (eq fg 'unspecified) (eq bg 'unspecified)))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(set-face-attribute face frame :foreground bg :background fg)
|
|
|
|
|
(set-face-attribute face frame
|
|
|
|
|
:foreground
|
|
|
|
|
(face-attribute 'default :background frame)
|
|
|
|
|
:background
|
|
|
|
|
(face-attribute 'default :foreground frame))))
|
|
|
|
|
face)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
;;; Interactively modifying faces.
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
|
2013-05-08 15:06:28 +00:00
|
|
|
|
(defvar crm-separator) ; from crm.el
|
|
|
|
|
|
2010-07-02 22:28:52 +00:00
|
|
|
|
(defun read-face-name (prompt &optional default multiple)
|
2013-04-13 01:10:09 +00:00
|
|
|
|
"Read one or more face names, prompting with PROMPT.
|
|
|
|
|
PROMPT should not end in a space or a colon.
|
2012-11-23 07:56:27 +00:00
|
|
|
|
|
2013-04-13 01:10:09 +00:00
|
|
|
|
Return DEFAULT if the user enters the empty string.
|
2013-04-27 17:01:17 +00:00
|
|
|
|
If DEFAULT is non-nil, it should be a single face or a list of face names
|
|
|
|
|
\(symbols or strings). In the latter case, return the `car' of DEFAULT
|
|
|
|
|
\(if MULTIPLE is nil, see below), or DEFAULT (if MULTIPLE is non-nil).
|
|
|
|
|
|
|
|
|
|
If MULTIPLE is non-nil, this function uses `completing-read-multiple'
|
|
|
|
|
to read multiple faces with \"[ \\t]*,[ \\t]*\" as the separator regexp
|
|
|
|
|
and it returns a list of face names. Otherwise, it reads and returns
|
|
|
|
|
a single face name."
|
2013-04-13 01:10:09 +00:00
|
|
|
|
(if (and default (not (stringp default)))
|
|
|
|
|
(setq default
|
|
|
|
|
(cond ((symbolp default)
|
|
|
|
|
(symbol-name default))
|
|
|
|
|
(multiple
|
|
|
|
|
(mapconcat (lambda (f) (if (symbolp f) (symbol-name f) f))
|
|
|
|
|
default ", "))
|
|
|
|
|
;; If we only want one, and the default is more than one,
|
|
|
|
|
;; discard the unwanted ones.
|
|
|
|
|
(t (symbol-name (car default))))))
|
2013-12-20 23:06:17 +00:00
|
|
|
|
(when (and default (not multiple))
|
|
|
|
|
(require 'crm)
|
|
|
|
|
;; For compatibility with `completing-read-multiple' use `crm-separator'
|
|
|
|
|
;; to define DEFAULT if MULTIPLE is nil.
|
|
|
|
|
(setq default (car (split-string default crm-separator t))))
|
2013-04-27 17:01:17 +00:00
|
|
|
|
|
|
|
|
|
(let ((prompt (if default
|
|
|
|
|
(format "%s (default `%s'): " prompt default)
|
|
|
|
|
(format "%s: " prompt)))
|
|
|
|
|
aliasfaces nonaliasfaces faces)
|
2013-04-13 01:10:09 +00:00
|
|
|
|
;; Build up the completion tables.
|
2005-06-13 20:47:08 +00:00
|
|
|
|
(mapatoms (lambda (s)
|
2013-04-13 01:10:09 +00:00
|
|
|
|
(if (facep s)
|
2005-06-13 20:47:08 +00:00
|
|
|
|
(if (get s 'face-alias)
|
|
|
|
|
(push (symbol-name s) aliasfaces)
|
|
|
|
|
(push (symbol-name s) nonaliasfaces)))))
|
2013-04-27 17:01:17 +00:00
|
|
|
|
(if multiple
|
|
|
|
|
(progn
|
|
|
|
|
(dolist (face (completing-read-multiple
|
|
|
|
|
prompt
|
|
|
|
|
(completion-table-in-turn nonaliasfaces aliasfaces)
|
|
|
|
|
nil t nil 'face-name-history default))
|
|
|
|
|
;; Ignore elements that are not faces
|
|
|
|
|
;; (for example, because DEFAULT was "all faces")
|
|
|
|
|
(if (facep face) (push (intern face) faces)))
|
|
|
|
|
(nreverse faces))
|
|
|
|
|
(let ((face (completing-read
|
|
|
|
|
prompt
|
2013-04-13 01:10:09 +00:00
|
|
|
|
(completion-table-in-turn nonaliasfaces aliasfaces)
|
2013-04-27 17:01:17 +00:00
|
|
|
|
nil t nil 'face-name-history default)))
|
|
|
|
|
(if (facep face) (intern face))))))
|
2002-04-26 22:31:16 +00:00
|
|
|
|
|
2008-06-12 03:56:20 +00:00
|
|
|
|
;; Not defined without X, but behind window-system test.
|
|
|
|
|
(defvar x-bitmap-file-path)
|
2002-04-26 22:31:16 +00:00
|
|
|
|
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(defun face-valid-attribute-values (attribute &optional frame)
|
|
|
|
|
"Return valid values for face attribute ATTRIBUTE.
|
|
|
|
|
The optional argument FRAME is used to determine available fonts
|
2010-03-24 00:17:31 +00:00
|
|
|
|
and colors. If it is nil or not specified, the selected frame is used.
|
|
|
|
|
Value is an alist of (NAME . VALUE) if ATTRIBUTE expects a value out
|
|
|
|
|
of a set of discrete values. Value is `integerp' if ATTRIBUTE expects
|
1999-07-21 21:43:52 +00:00
|
|
|
|
an integer value."
|
2001-05-29 16:12:03 +00:00
|
|
|
|
(let ((valid
|
Further GV/CL cleanups.
* lisp/emacs-lisp/gv.el (gv-get): Autoload functions to find their
gv-expander.
(gv--defun-declaration): New function.
(defun-declarations-alist): Use it.
(gv-define-modify-macro, gv-pushnew!, gv-inc!, gv-dec!): Remove.
(gv-place): Autoload.
* lisp/emacs-lisp/cl.el (cl--dotimes, cl--dolist): Remember subr.el's
original definition of dotimes and dolist.
* lisp/emacs-lisp/cl-macs.el (cl-expr-access-order): Remove unused.
(cl-dolist, cl-dotimes): Use `dolist' and `dotimes'.
* lisp/emacs-lisp/cl-lib.el: Move gv handlers from cl-macs to here.
(cl-fifth, cl-sixth, cl-seventh, cl-eighth)
(cl-ninth, cl-tenth): Move gv handler to the function's definition.
* lisp/emacs-lisp/cl-extra.el (cl-subseq, cl-get, cl-getf): Move gv handler
to the function's definition.
* lisp/Makefile.in (COMPILE_FIRST): Re-order to speed it up by about 50%.
* lisp/window.el:
* lisp/files.el:
* lisp/faces.el:
* lisp/env.el: Don't use CL.
2012-06-22 21:24:54 +00:00
|
|
|
|
(pcase attribute
|
|
|
|
|
(`:family
|
Converted display hooks to be display-local. Plus many bugfixes.
lib-src/emacsclient.c (window_change_signal): Renamed to pass_signal_to_emacs.
(init_signal): Pass SIGINT and SIGQUIT to the emacs process.
lisp/faces.el (face-valid-attribute-values): Use the window-system
function, not the variable.
(read-face-attribute, face-spec-set-match-display, frame-set-background-mode)
(face-set-after-frame-default): Ditto.
lisp/frame.el (make-frame-on-tty): Added interactive declaration
(suggested by Robert J. Chassell). Use tty-create-frame-with-faces,
not make-terminal-frame.
src/termhooks.h (struct display_method): Renamed to display for brevity.
(struct display): Added all display hook variables as members of this structure.
Added next_display, reference_count, type and display_info components.
(FRAME_MUST_WRITE_SPACES, FRAME_FAST_CLEAR_END_OF_LINE, FRAME_LINE_INS_DEL_OK)
(FRAME_CHAR_INS_DEL_OK, FRAME_SCROLL_REGION_OK, FRAME_SCROLL_REGION_COST)
(FRAME_MEMORY_BELOW_FRAME, FRAME_RIF): Updated for struct display.
(FRAME_DISPLAY): New macro.
(create_display, delete_display): New prototypes.
src/frame.h (struct frame): Added `display' member, removed display_method.
(FRAME_LIVE_P): Look at f->display, not f->output_data.
src/termchar.h (struct tty_display_info): Removed display_method component.
(FRAME_TTY): Use the display structure, not output_data.
src/term.c (display_list): New variable.
(cursor_to_hook, raw_cursor_to_hook, clear_to_end_hook, clear_frame_hook)
(clear_end_of_line_hook, ins_del_lines_hook, delete_glyphs_hook)
(ring_bell_hook, reset_terminal_modes_hook, set_terminal_modes_hook)
(update_begin_hook, update_end_hook, set_terminal_window_hook)
(insert_glyphs_hook, write_glyphs_hook, delete_glyphs_hoo, read_socket_hook)
(frame_up_to_date_hook, mouse_position_hook, frame_rehighlight_hook)
(frame_raise_lower_hook, set_vertical_scroll_bar_hook, condemn_scroll_bars_hook)
(redeem_scroll_bar_hook, judge_scroll_bars_hook): Moved to struct display.
(tty_display_method_template): Removed.
(syms_of_term): Don't initialize tty_display_method_template.
(ring_bell, set_terminal_modes, reset_terminal_modes, update_begin)
(update_end, set_terminal_window, cursor_to, raw_cursor_to, clear_to_end)
(clear_frame, clear_end_of_line, write_glyphs, insert_glyphs)
(delete_glyphs, ins_del_lines): Access display hooks through the frame pointer.
(Ftty_display_color_p): Use the frame given as a parameter, or else return nil.
(Ftty_display_color_cells): Ditto.
(get_named_tty): Renamed to get_named_tty_display, changed return type to struct display.
(term_dummy_init): Renamed to initial_term_init. Create and return an initial display.
(term_init): Initialize a new struct display and return a pointer to
it instead of tty_display_info. Removed frame initialization kludge.
(Fdelete_tty): Updated for struct display.
(delete_tty): The parameter type is now struct display, not tty_display_info.
Delete the display, too.
(create_tty_output): New function for creating tty_output structures.
(delete_tty_output): New function for deleting tty_output structures.
(create_display): New function for creating and registering display structures.
(delete_display): New function for deleting and unregistering display structures.
src/dispextern.h: Updated prototypes.
src/dispnew.c: Include frame.h before termhooks.h.
(init_display): Updated term_init call to new signature.
src/emacs.c: Include frame.h (for termhooks.h).
src/keymap.c: Ditto.
src/lread.c: Ditto.
src/xsmfns.c: Ditto.
src/process.c: Include frame.h before termhooks.h.
src/frame.c (Fwindow_system): New function.
(syms_of_frame): Initialize it.
(make_terminal_frame): Open the terminal device before creating the new frame.
Disable scrollbars here, term_init cannot do that anymore.
(Fdelete_frame): Use the new delete_frame_hook, don't do display-specific
frame deletion here. Ditto for delete_display_hook.
(Fmouse_position, Fmouse_pixel_position, Fraise_frame, Flower_frame)
(Fredirect_frame_focus): Access display hooks through the frame pointer.
src/keyboard.c: Include frame.h before termhooks.h.
(start_polling, input_polling_used, stop_polling, gobble_input): Ignore read_socket_hook.
(kbd_buffer_get_event, Fset_input_mode): Access display hooks through the frame pointer.
(read_avail_input): Loop through all display devices for and call all read_socket_hook functions. Check ttys even if read_socket_hook returned an error.
src/sysdep.c (discard_tty_input): Ignore read_socket_hook.
(stuff_char): Don't do anything if the current frame is not on a termcap display.
(request_sigio, unrequest_sigio): Ignore read_socket_hook.
(init_sys_modes): Always call narrow_foreground_group. Set up terminal modes and sigio even under X.
src/xdisp.c (message2_nolog, message3_nolog, redisplay_internal)
(set_vertical_scroll_bar, redisplay_window): Access display hooks through the frame pointer.
(echo_area_display): Don't be afraid of termcap frames during an X+tty combo session.
src/xfaces.c: Include termhooks.h.
(Ftty_supports_face_attributes_p): Use the given frame, not selected_frame.
src/xfns.c (x_set_scroll_bar_foreground, x_set_scroll_bar_background): Access display hooks through the frame pointer.
(Fx_create_frame, x_create_tip_frame): Initialize the frame's display structure.
src/xmenu.c: Include termhooks.h after frame.h.
src/xselect.c (x_own_selection, some_frame_on_display, x_get_foreign_selection)
(Fx_disown_selection_internal, Fx_get_cut_buffer_internal)
(Fx_store_cut_buffer_internal, Fx_rotate_cut_buffers_internal): Don't do anything
if the selected frame is not an X frame.
src/xterm.c (x_display_method): Removed.
(x_create_frame_display, x_delete_frame_display): New functions for handling struct display objects.
(x_term_init): Set up a new struct display object, too.
(x_delete_display): Delete the struct display corresponding to the X display.
(x_initialize): Moved hook initialization to x_create_frame_display.
src/xterm.h (x_display_method): Removed.
(struct x_display_info): Added frame_display component.
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-44
2004-01-05 05:54:35 +00:00
|
|
|
|
(if (window-system frame)
|
2009-01-09 14:11:12 +00:00
|
|
|
|
(mapcar (lambda (x) (cons x x))
|
2008-05-14 01:56:27 +00:00
|
|
|
|
(font-family-list))
|
2001-05-29 16:12:03 +00:00
|
|
|
|
;; Only one font on TTYs.
|
|
|
|
|
(list (cons "default" "default"))))
|
Further GV/CL cleanups.
* lisp/emacs-lisp/gv.el (gv-get): Autoload functions to find their
gv-expander.
(gv--defun-declaration): New function.
(defun-declarations-alist): Use it.
(gv-define-modify-macro, gv-pushnew!, gv-inc!, gv-dec!): Remove.
(gv-place): Autoload.
* lisp/emacs-lisp/cl.el (cl--dotimes, cl--dolist): Remember subr.el's
original definition of dotimes and dolist.
* lisp/emacs-lisp/cl-macs.el (cl-expr-access-order): Remove unused.
(cl-dolist, cl-dotimes): Use `dolist' and `dotimes'.
* lisp/emacs-lisp/cl-lib.el: Move gv handlers from cl-macs to here.
(cl-fifth, cl-sixth, cl-seventh, cl-eighth)
(cl-ninth, cl-tenth): Move gv handler to the function's definition.
* lisp/emacs-lisp/cl-extra.el (cl-subseq, cl-get, cl-getf): Move gv handler
to the function's definition.
* lisp/Makefile.in (COMPILE_FIRST): Re-order to speed it up by about 50%.
* lisp/window.el:
* lisp/files.el:
* lisp/faces.el:
* lisp/env.el: Don't use CL.
2012-06-22 21:24:54 +00:00
|
|
|
|
(`:foundry
|
2008-06-13 01:56:55 +00:00
|
|
|
|
(list nil))
|
Further GV/CL cleanups.
* lisp/emacs-lisp/gv.el (gv-get): Autoload functions to find their
gv-expander.
(gv--defun-declaration): New function.
(defun-declarations-alist): Use it.
(gv-define-modify-macro, gv-pushnew!, gv-inc!, gv-dec!): Remove.
(gv-place): Autoload.
* lisp/emacs-lisp/cl.el (cl--dotimes, cl--dolist): Remember subr.el's
original definition of dotimes and dolist.
* lisp/emacs-lisp/cl-macs.el (cl-expr-access-order): Remove unused.
(cl-dolist, cl-dotimes): Use `dolist' and `dotimes'.
* lisp/emacs-lisp/cl-lib.el: Move gv handlers from cl-macs to here.
(cl-fifth, cl-sixth, cl-seventh, cl-eighth)
(cl-ninth, cl-tenth): Move gv handler to the function's definition.
* lisp/emacs-lisp/cl-extra.el (cl-subseq, cl-get, cl-getf): Move gv handler
to the function's definition.
* lisp/Makefile.in (COMPILE_FIRST): Re-order to speed it up by about 50%.
* lisp/window.el:
* lisp/files.el:
* lisp/faces.el:
* lisp/env.el: Don't use CL.
2012-06-22 21:24:54 +00:00
|
|
|
|
(`:width
|
2008-08-06 12:19:35 +00:00
|
|
|
|
(mapcar #'(lambda (x) (cons (symbol-name (aref x 1)) (aref x 1)))
|
2008-05-14 01:56:27 +00:00
|
|
|
|
font-width-table))
|
Further GV/CL cleanups.
* lisp/emacs-lisp/gv.el (gv-get): Autoload functions to find their
gv-expander.
(gv--defun-declaration): New function.
(defun-declarations-alist): Use it.
(gv-define-modify-macro, gv-pushnew!, gv-inc!, gv-dec!): Remove.
(gv-place): Autoload.
* lisp/emacs-lisp/cl.el (cl--dotimes, cl--dolist): Remember subr.el's
original definition of dotimes and dolist.
* lisp/emacs-lisp/cl-macs.el (cl-expr-access-order): Remove unused.
(cl-dolist, cl-dotimes): Use `dolist' and `dotimes'.
* lisp/emacs-lisp/cl-lib.el: Move gv handlers from cl-macs to here.
(cl-fifth, cl-sixth, cl-seventh, cl-eighth)
(cl-ninth, cl-tenth): Move gv handler to the function's definition.
* lisp/emacs-lisp/cl-extra.el (cl-subseq, cl-get, cl-getf): Move gv handler
to the function's definition.
* lisp/Makefile.in (COMPILE_FIRST): Re-order to speed it up by about 50%.
* lisp/window.el:
* lisp/files.el:
* lisp/faces.el:
* lisp/env.el: Don't use CL.
2012-06-22 21:24:54 +00:00
|
|
|
|
(`:weight
|
2008-08-06 12:19:35 +00:00
|
|
|
|
(mapcar #'(lambda (x) (cons (symbol-name (aref x 1)) (aref x 1)))
|
2008-05-14 01:56:27 +00:00
|
|
|
|
font-weight-table))
|
Further GV/CL cleanups.
* lisp/emacs-lisp/gv.el (gv-get): Autoload functions to find their
gv-expander.
(gv--defun-declaration): New function.
(defun-declarations-alist): Use it.
(gv-define-modify-macro, gv-pushnew!, gv-inc!, gv-dec!): Remove.
(gv-place): Autoload.
* lisp/emacs-lisp/cl.el (cl--dotimes, cl--dolist): Remember subr.el's
original definition of dotimes and dolist.
* lisp/emacs-lisp/cl-macs.el (cl-expr-access-order): Remove unused.
(cl-dolist, cl-dotimes): Use `dolist' and `dotimes'.
* lisp/emacs-lisp/cl-lib.el: Move gv handlers from cl-macs to here.
(cl-fifth, cl-sixth, cl-seventh, cl-eighth)
(cl-ninth, cl-tenth): Move gv handler to the function's definition.
* lisp/emacs-lisp/cl-extra.el (cl-subseq, cl-get, cl-getf): Move gv handler
to the function's definition.
* lisp/Makefile.in (COMPILE_FIRST): Re-order to speed it up by about 50%.
* lisp/window.el:
* lisp/files.el:
* lisp/faces.el:
* lisp/env.el: Don't use CL.
2012-06-22 21:24:54 +00:00
|
|
|
|
(`:slant
|
2008-08-06 12:19:35 +00:00
|
|
|
|
(mapcar #'(lambda (x) (cons (symbol-name (aref x 1)) (aref x 1)))
|
2008-05-14 01:56:27 +00:00
|
|
|
|
font-slant-table))
|
Further GV/CL cleanups.
* lisp/emacs-lisp/gv.el (gv-get): Autoload functions to find their
gv-expander.
(gv--defun-declaration): New function.
(defun-declarations-alist): Use it.
(gv-define-modify-macro, gv-pushnew!, gv-inc!, gv-dec!): Remove.
(gv-place): Autoload.
* lisp/emacs-lisp/cl.el (cl--dotimes, cl--dolist): Remember subr.el's
original definition of dotimes and dolist.
* lisp/emacs-lisp/cl-macs.el (cl-expr-access-order): Remove unused.
(cl-dolist, cl-dotimes): Use `dolist' and `dotimes'.
* lisp/emacs-lisp/cl-lib.el: Move gv handlers from cl-macs to here.
(cl-fifth, cl-sixth, cl-seventh, cl-eighth)
(cl-ninth, cl-tenth): Move gv handler to the function's definition.
* lisp/emacs-lisp/cl-extra.el (cl-subseq, cl-get, cl-getf): Move gv handler
to the function's definition.
* lisp/Makefile.in (COMPILE_FIRST): Re-order to speed it up by about 50%.
* lisp/window.el:
* lisp/files.el:
* lisp/faces.el:
* lisp/env.el: Don't use CL.
2012-06-22 21:24:54 +00:00
|
|
|
|
(`:inverse-video
|
2008-05-14 01:56:27 +00:00
|
|
|
|
(mapcar #'(lambda (x) (cons (symbol-name x) x))
|
|
|
|
|
(internal-lisp-face-attribute-values attribute)))
|
Further GV/CL cleanups.
* lisp/emacs-lisp/gv.el (gv-get): Autoload functions to find their
gv-expander.
(gv--defun-declaration): New function.
(defun-declarations-alist): Use it.
(gv-define-modify-macro, gv-pushnew!, gv-inc!, gv-dec!): Remove.
(gv-place): Autoload.
* lisp/emacs-lisp/cl.el (cl--dotimes, cl--dolist): Remember subr.el's
original definition of dotimes and dolist.
* lisp/emacs-lisp/cl-macs.el (cl-expr-access-order): Remove unused.
(cl-dolist, cl-dotimes): Use `dolist' and `dotimes'.
* lisp/emacs-lisp/cl-lib.el: Move gv handlers from cl-macs to here.
(cl-fifth, cl-sixth, cl-seventh, cl-eighth)
(cl-ninth, cl-tenth): Move gv handler to the function's definition.
* lisp/emacs-lisp/cl-extra.el (cl-subseq, cl-get, cl-getf): Move gv handler
to the function's definition.
* lisp/Makefile.in (COMPILE_FIRST): Re-order to speed it up by about 50%.
* lisp/window.el:
* lisp/files.el:
* lisp/faces.el:
* lisp/env.el: Don't use CL.
2012-06-22 21:24:54 +00:00
|
|
|
|
((or `:underline `:overline `:strike-through `:box)
|
Converted display hooks to be display-local. Plus many bugfixes.
lib-src/emacsclient.c (window_change_signal): Renamed to pass_signal_to_emacs.
(init_signal): Pass SIGINT and SIGQUIT to the emacs process.
lisp/faces.el (face-valid-attribute-values): Use the window-system
function, not the variable.
(read-face-attribute, face-spec-set-match-display, frame-set-background-mode)
(face-set-after-frame-default): Ditto.
lisp/frame.el (make-frame-on-tty): Added interactive declaration
(suggested by Robert J. Chassell). Use tty-create-frame-with-faces,
not make-terminal-frame.
src/termhooks.h (struct display_method): Renamed to display for brevity.
(struct display): Added all display hook variables as members of this structure.
Added next_display, reference_count, type and display_info components.
(FRAME_MUST_WRITE_SPACES, FRAME_FAST_CLEAR_END_OF_LINE, FRAME_LINE_INS_DEL_OK)
(FRAME_CHAR_INS_DEL_OK, FRAME_SCROLL_REGION_OK, FRAME_SCROLL_REGION_COST)
(FRAME_MEMORY_BELOW_FRAME, FRAME_RIF): Updated for struct display.
(FRAME_DISPLAY): New macro.
(create_display, delete_display): New prototypes.
src/frame.h (struct frame): Added `display' member, removed display_method.
(FRAME_LIVE_P): Look at f->display, not f->output_data.
src/termchar.h (struct tty_display_info): Removed display_method component.
(FRAME_TTY): Use the display structure, not output_data.
src/term.c (display_list): New variable.
(cursor_to_hook, raw_cursor_to_hook, clear_to_end_hook, clear_frame_hook)
(clear_end_of_line_hook, ins_del_lines_hook, delete_glyphs_hook)
(ring_bell_hook, reset_terminal_modes_hook, set_terminal_modes_hook)
(update_begin_hook, update_end_hook, set_terminal_window_hook)
(insert_glyphs_hook, write_glyphs_hook, delete_glyphs_hoo, read_socket_hook)
(frame_up_to_date_hook, mouse_position_hook, frame_rehighlight_hook)
(frame_raise_lower_hook, set_vertical_scroll_bar_hook, condemn_scroll_bars_hook)
(redeem_scroll_bar_hook, judge_scroll_bars_hook): Moved to struct display.
(tty_display_method_template): Removed.
(syms_of_term): Don't initialize tty_display_method_template.
(ring_bell, set_terminal_modes, reset_terminal_modes, update_begin)
(update_end, set_terminal_window, cursor_to, raw_cursor_to, clear_to_end)
(clear_frame, clear_end_of_line, write_glyphs, insert_glyphs)
(delete_glyphs, ins_del_lines): Access display hooks through the frame pointer.
(Ftty_display_color_p): Use the frame given as a parameter, or else return nil.
(Ftty_display_color_cells): Ditto.
(get_named_tty): Renamed to get_named_tty_display, changed return type to struct display.
(term_dummy_init): Renamed to initial_term_init. Create and return an initial display.
(term_init): Initialize a new struct display and return a pointer to
it instead of tty_display_info. Removed frame initialization kludge.
(Fdelete_tty): Updated for struct display.
(delete_tty): The parameter type is now struct display, not tty_display_info.
Delete the display, too.
(create_tty_output): New function for creating tty_output structures.
(delete_tty_output): New function for deleting tty_output structures.
(create_display): New function for creating and registering display structures.
(delete_display): New function for deleting and unregistering display structures.
src/dispextern.h: Updated prototypes.
src/dispnew.c: Include frame.h before termhooks.h.
(init_display): Updated term_init call to new signature.
src/emacs.c: Include frame.h (for termhooks.h).
src/keymap.c: Ditto.
src/lread.c: Ditto.
src/xsmfns.c: Ditto.
src/process.c: Include frame.h before termhooks.h.
src/frame.c (Fwindow_system): New function.
(syms_of_frame): Initialize it.
(make_terminal_frame): Open the terminal device before creating the new frame.
Disable scrollbars here, term_init cannot do that anymore.
(Fdelete_frame): Use the new delete_frame_hook, don't do display-specific
frame deletion here. Ditto for delete_display_hook.
(Fmouse_position, Fmouse_pixel_position, Fraise_frame, Flower_frame)
(Fredirect_frame_focus): Access display hooks through the frame pointer.
src/keyboard.c: Include frame.h before termhooks.h.
(start_polling, input_polling_used, stop_polling, gobble_input): Ignore read_socket_hook.
(kbd_buffer_get_event, Fset_input_mode): Access display hooks through the frame pointer.
(read_avail_input): Loop through all display devices for and call all read_socket_hook functions. Check ttys even if read_socket_hook returned an error.
src/sysdep.c (discard_tty_input): Ignore read_socket_hook.
(stuff_char): Don't do anything if the current frame is not on a termcap display.
(request_sigio, unrequest_sigio): Ignore read_socket_hook.
(init_sys_modes): Always call narrow_foreground_group. Set up terminal modes and sigio even under X.
src/xdisp.c (message2_nolog, message3_nolog, redisplay_internal)
(set_vertical_scroll_bar, redisplay_window): Access display hooks through the frame pointer.
(echo_area_display): Don't be afraid of termcap frames during an X+tty combo session.
src/xfaces.c: Include termhooks.h.
(Ftty_supports_face_attributes_p): Use the given frame, not selected_frame.
src/xfns.c (x_set_scroll_bar_foreground, x_set_scroll_bar_background): Access display hooks through the frame pointer.
(Fx_create_frame, x_create_tip_frame): Initialize the frame's display structure.
src/xmenu.c: Include termhooks.h after frame.h.
src/xselect.c (x_own_selection, some_frame_on_display, x_get_foreign_selection)
(Fx_disown_selection_internal, Fx_get_cut_buffer_internal)
(Fx_store_cut_buffer_internal, Fx_rotate_cut_buffers_internal): Don't do anything
if the selected frame is not an X frame.
src/xterm.c (x_display_method): Removed.
(x_create_frame_display, x_delete_frame_display): New functions for handling struct display objects.
(x_term_init): Set up a new struct display object, too.
(x_delete_display): Delete the struct display corresponding to the X display.
(x_initialize): Moved hook initialization to x_create_frame_display.
src/xterm.h (x_display_method): Removed.
(struct x_display_info): Added frame_display component.
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-44
2004-01-05 05:54:35 +00:00
|
|
|
|
(if (window-system frame)
|
2001-05-29 16:12:03 +00:00
|
|
|
|
(nconc (mapcar #'(lambda (x) (cons (symbol-name x) x))
|
|
|
|
|
(internal-lisp-face-attribute-values attribute))
|
|
|
|
|
(mapcar #'(lambda (c) (cons c c))
|
2007-02-07 14:08:58 +00:00
|
|
|
|
(defined-colors frame)))
|
2001-05-29 16:12:03 +00:00
|
|
|
|
(mapcar #'(lambda (x) (cons (symbol-name x) x))
|
|
|
|
|
(internal-lisp-face-attribute-values attribute))))
|
Further GV/CL cleanups.
* lisp/emacs-lisp/gv.el (gv-get): Autoload functions to find their
gv-expander.
(gv--defun-declaration): New function.
(defun-declarations-alist): Use it.
(gv-define-modify-macro, gv-pushnew!, gv-inc!, gv-dec!): Remove.
(gv-place): Autoload.
* lisp/emacs-lisp/cl.el (cl--dotimes, cl--dolist): Remember subr.el's
original definition of dotimes and dolist.
* lisp/emacs-lisp/cl-macs.el (cl-expr-access-order): Remove unused.
(cl-dolist, cl-dotimes): Use `dolist' and `dotimes'.
* lisp/emacs-lisp/cl-lib.el: Move gv handlers from cl-macs to here.
(cl-fifth, cl-sixth, cl-seventh, cl-eighth)
(cl-ninth, cl-tenth): Move gv handler to the function's definition.
* lisp/emacs-lisp/cl-extra.el (cl-subseq, cl-get, cl-getf): Move gv handler
to the function's definition.
* lisp/Makefile.in (COMPILE_FIRST): Re-order to speed it up by about 50%.
* lisp/window.el:
* lisp/files.el:
* lisp/faces.el:
* lisp/env.el: Don't use CL.
2012-06-22 21:24:54 +00:00
|
|
|
|
((or `:foreground `:background)
|
2001-05-29 16:12:03 +00:00
|
|
|
|
(mapcar #'(lambda (c) (cons c c))
|
|
|
|
|
(defined-colors frame)))
|
Further GV/CL cleanups.
* lisp/emacs-lisp/gv.el (gv-get): Autoload functions to find their
gv-expander.
(gv--defun-declaration): New function.
(defun-declarations-alist): Use it.
(gv-define-modify-macro, gv-pushnew!, gv-inc!, gv-dec!): Remove.
(gv-place): Autoload.
* lisp/emacs-lisp/cl.el (cl--dotimes, cl--dolist): Remember subr.el's
original definition of dotimes and dolist.
* lisp/emacs-lisp/cl-macs.el (cl-expr-access-order): Remove unused.
(cl-dolist, cl-dotimes): Use `dolist' and `dotimes'.
* lisp/emacs-lisp/cl-lib.el: Move gv handlers from cl-macs to here.
(cl-fifth, cl-sixth, cl-seventh, cl-eighth)
(cl-ninth, cl-tenth): Move gv handler to the function's definition.
* lisp/emacs-lisp/cl-extra.el (cl-subseq, cl-get, cl-getf): Move gv handler
to the function's definition.
* lisp/Makefile.in (COMPILE_FIRST): Re-order to speed it up by about 50%.
* lisp/window.el:
* lisp/files.el:
* lisp/faces.el:
* lisp/env.el: Don't use CL.
2012-06-22 21:24:54 +00:00
|
|
|
|
(`:height
|
2001-05-29 16:12:03 +00:00
|
|
|
|
'integerp)
|
Further GV/CL cleanups.
* lisp/emacs-lisp/gv.el (gv-get): Autoload functions to find their
gv-expander.
(gv--defun-declaration): New function.
(defun-declarations-alist): Use it.
(gv-define-modify-macro, gv-pushnew!, gv-inc!, gv-dec!): Remove.
(gv-place): Autoload.
* lisp/emacs-lisp/cl.el (cl--dotimes, cl--dolist): Remember subr.el's
original definition of dotimes and dolist.
* lisp/emacs-lisp/cl-macs.el (cl-expr-access-order): Remove unused.
(cl-dolist, cl-dotimes): Use `dolist' and `dotimes'.
* lisp/emacs-lisp/cl-lib.el: Move gv handlers from cl-macs to here.
(cl-fifth, cl-sixth, cl-seventh, cl-eighth)
(cl-ninth, cl-tenth): Move gv handler to the function's definition.
* lisp/emacs-lisp/cl-extra.el (cl-subseq, cl-get, cl-getf): Move gv handler
to the function's definition.
* lisp/Makefile.in (COMPILE_FIRST): Re-order to speed it up by about 50%.
* lisp/window.el:
* lisp/files.el:
* lisp/faces.el:
* lisp/env.el: Don't use CL.
2012-06-22 21:24:54 +00:00
|
|
|
|
(`:stipple
|
2009-01-13 12:41:34 +00:00
|
|
|
|
(and (memq (window-system frame) '(x ns)) ; No stipple on w32
|
2001-05-29 16:12:03 +00:00
|
|
|
|
(mapcar #'list
|
|
|
|
|
(apply #'nconc
|
|
|
|
|
(mapcar (lambda (dir)
|
|
|
|
|
(and (file-readable-p dir)
|
|
|
|
|
(file-directory-p dir)
|
|
|
|
|
(directory-files dir)))
|
|
|
|
|
x-bitmap-file-path)))))
|
Further GV/CL cleanups.
* lisp/emacs-lisp/gv.el (gv-get): Autoload functions to find their
gv-expander.
(gv--defun-declaration): New function.
(defun-declarations-alist): Use it.
(gv-define-modify-macro, gv-pushnew!, gv-inc!, gv-dec!): Remove.
(gv-place): Autoload.
* lisp/emacs-lisp/cl.el (cl--dotimes, cl--dolist): Remember subr.el's
original definition of dotimes and dolist.
* lisp/emacs-lisp/cl-macs.el (cl-expr-access-order): Remove unused.
(cl-dolist, cl-dotimes): Use `dolist' and `dotimes'.
* lisp/emacs-lisp/cl-lib.el: Move gv handlers from cl-macs to here.
(cl-fifth, cl-sixth, cl-seventh, cl-eighth)
(cl-ninth, cl-tenth): Move gv handler to the function's definition.
* lisp/emacs-lisp/cl-extra.el (cl-subseq, cl-get, cl-getf): Move gv handler
to the function's definition.
* lisp/Makefile.in (COMPILE_FIRST): Re-order to speed it up by about 50%.
* lisp/window.el:
* lisp/files.el:
* lisp/faces.el:
* lisp/env.el: Don't use CL.
2012-06-22 21:24:54 +00:00
|
|
|
|
(`:inherit
|
2001-05-29 16:12:03 +00:00
|
|
|
|
(cons '("none" . nil)
|
|
|
|
|
(mapcar #'(lambda (c) (cons (symbol-name c) c))
|
|
|
|
|
(face-list))))
|
Further GV/CL cleanups.
* lisp/emacs-lisp/gv.el (gv-get): Autoload functions to find their
gv-expander.
(gv--defun-declaration): New function.
(defun-declarations-alist): Use it.
(gv-define-modify-macro, gv-pushnew!, gv-inc!, gv-dec!): Remove.
(gv-place): Autoload.
* lisp/emacs-lisp/cl.el (cl--dotimes, cl--dolist): Remember subr.el's
original definition of dotimes and dolist.
* lisp/emacs-lisp/cl-macs.el (cl-expr-access-order): Remove unused.
(cl-dolist, cl-dotimes): Use `dolist' and `dotimes'.
* lisp/emacs-lisp/cl-lib.el: Move gv handlers from cl-macs to here.
(cl-fifth, cl-sixth, cl-seventh, cl-eighth)
(cl-ninth, cl-tenth): Move gv handler to the function's definition.
* lisp/emacs-lisp/cl-extra.el (cl-subseq, cl-get, cl-getf): Move gv handler
to the function's definition.
* lisp/Makefile.in (COMPILE_FIRST): Re-order to speed it up by about 50%.
* lisp/window.el:
* lisp/files.el:
* lisp/faces.el:
* lisp/env.el: Don't use CL.
2012-06-22 21:24:54 +00:00
|
|
|
|
(_
|
2001-05-29 16:12:03 +00:00
|
|
|
|
(error "Internal error")))))
|
2000-08-26 10:59:51 +00:00
|
|
|
|
(if (and (listp valid) (not (memq attribute '(:inherit))))
|
1999-08-12 14:35:33 +00:00
|
|
|
|
(nconc (list (cons "unspecified" 'unspecified)) valid)
|
|
|
|
|
valid)))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
|
2009-11-11 06:36:41 +00:00
|
|
|
|
(defconst face-attribute-name-alist
|
1999-07-21 21:43:52 +00:00
|
|
|
|
'((:family . "font family")
|
2008-06-13 01:56:55 +00:00
|
|
|
|
(:foundry . "font foundry")
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(:width . "character set width")
|
|
|
|
|
(:height . "height in 1/10 pt")
|
|
|
|
|
(:weight . "weight")
|
|
|
|
|
(:slant . "slant")
|
|
|
|
|
(:underline . "underline")
|
|
|
|
|
(:overline . "overline")
|
|
|
|
|
(:strike-through . "strike-through")
|
|
|
|
|
(:box . "box")
|
|
|
|
|
(:inverse-video . "inverse-video display")
|
|
|
|
|
(:foreground . "foreground color")
|
|
|
|
|
(:background . "background color")
|
2000-08-26 10:59:51 +00:00
|
|
|
|
(:stipple . "background stipple")
|
|
|
|
|
(:inherit . "inheritance"))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
"An alist of descriptive names for face attributes.
|
|
|
|
|
Each element has the form (ATTRIBUTE-NAME . DESCRIPTION) where
|
|
|
|
|
ATTRIBUTE-NAME is a face attribute name (a keyword symbol), and
|
|
|
|
|
DESCRIPTION is a descriptive name for ATTRIBUTE-NAME.")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defun face-descriptive-attribute-name (attribute)
|
|
|
|
|
"Return a descriptive name for ATTRIBUTE."
|
|
|
|
|
(cdr (assq attribute face-attribute-name-alist)))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defun face-read-string (face default name &optional completion-alist)
|
|
|
|
|
"Interactively read a face attribute string value.
|
2000-08-26 10:59:51 +00:00
|
|
|
|
FACE is the face whose attribute is read. If non-nil, DEFAULT is the
|
|
|
|
|
default string to return if no new value is entered. NAME is a
|
|
|
|
|
descriptive name of the attribute for prompting. COMPLETION-ALIST is an
|
|
|
|
|
alist of valid values, if non-nil.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
2000-08-26 10:59:51 +00:00
|
|
|
|
Entering nothing accepts the default string DEFAULT.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
Value is the new attribute value."
|
2000-08-26 10:59:51 +00:00
|
|
|
|
;; Capitalize NAME (we don't use `capitalize' because that capitalizes
|
|
|
|
|
;; each word in a string separately).
|
|
|
|
|
(setq name (concat (upcase (substring name 0 1)) (substring name 1)))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(let* ((completion-ignore-case t)
|
|
|
|
|
(value (completing-read
|
|
|
|
|
(if default
|
2000-08-26 10:59:51 +00:00
|
|
|
|
(format "%s for face `%s' (default %s): "
|
|
|
|
|
name face default)
|
|
|
|
|
(format "%s for face `%s': " name face))
|
2005-11-17 07:20:51 +00:00
|
|
|
|
completion-alist nil nil nil nil default)))
|
1999-08-12 14:35:33 +00:00
|
|
|
|
(if (equal value "") default value)))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defun face-read-integer (face default name)
|
|
|
|
|
"Interactively read an integer face attribute value.
|
|
|
|
|
FACE is the face whose attribute is read. DEFAULT is the default
|
|
|
|
|
value to return if no new value is entered. NAME is a descriptive
|
|
|
|
|
name of the attribute for prompting. Value is the new attribute value."
|
1999-08-12 14:35:33 +00:00
|
|
|
|
(let ((new-value
|
|
|
|
|
(face-read-string face
|
2000-08-26 10:59:51 +00:00
|
|
|
|
(format "%s" default)
|
1999-08-12 14:35:33 +00:00
|
|
|
|
name
|
|
|
|
|
(list (cons "unspecified" 'unspecified)))))
|
2000-08-26 10:59:51 +00:00
|
|
|
|
(cond ((equal new-value "unspecified")
|
|
|
|
|
'unspecified)
|
|
|
|
|
((member new-value '("unspecified-fg" "unspecified-bg"))
|
|
|
|
|
new-value)
|
|
|
|
|
(t
|
2005-05-16 11:34:49 +00:00
|
|
|
|
(string-to-number new-value)))))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
|
2012-11-15 07:30:46 +00:00
|
|
|
|
;; FIXME this does allow you to enter the list forms of :box,
|
|
|
|
|
;; :stipple, or :underline, because face-valid-attribute-values does
|
|
|
|
|
;; not return those forms.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(defun read-face-attribute (face attribute &optional frame)
|
|
|
|
|
"Interactively read a new value for FACE's ATTRIBUTE.
|
|
|
|
|
Optional argument FRAME nil or unspecified means read an attribute value
|
|
|
|
|
of a global face. Value is the new attribute value."
|
|
|
|
|
(let* ((old-value (face-attribute face attribute frame))
|
|
|
|
|
(attribute-name (face-descriptive-attribute-name attribute))
|
|
|
|
|
(valid (face-valid-attribute-values attribute frame))
|
|
|
|
|
new-value)
|
|
|
|
|
;; Represent complex attribute values as strings by printing them
|
|
|
|
|
;; out. Stipple can be a vector; (WIDTH HEIGHT DATA). Box can be
|
|
|
|
|
;; a list `(:width WIDTH :color COLOR)' or `(:width WIDTH :shadow
|
2012-11-15 07:30:46 +00:00
|
|
|
|
;; SHADOW)'. Underline can be `(:color COLOR :style STYLE)'.
|
|
|
|
|
(and (memq attribute '(:box :stipple :underline))
|
|
|
|
|
(or (consp old-value)
|
|
|
|
|
(vectorp old-value))
|
|
|
|
|
(setq old-value (prin1-to-string old-value)))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(cond ((listp valid)
|
2000-08-26 10:59:51 +00:00
|
|
|
|
(let ((default
|
|
|
|
|
(or (car (rassoc old-value valid))
|
|
|
|
|
(format "%s" old-value))))
|
|
|
|
|
(setq new-value
|
|
|
|
|
(face-read-string face default attribute-name valid))
|
|
|
|
|
(if (equal new-value default)
|
|
|
|
|
;; Nothing changed, so don't bother with all the stuff
|
|
|
|
|
;; below. In particular, this avoids a non-tty color
|
|
|
|
|
;; from being canonicalized for a tty when the user
|
|
|
|
|
;; just uses the default.
|
|
|
|
|
(setq new-value old-value)
|
|
|
|
|
;; Terminal frames can support colors that don't appear
|
|
|
|
|
;; explicitly in VALID, using color approximation code
|
|
|
|
|
;; in tty-colors.el.
|
2000-12-15 03:12:09 +00:00
|
|
|
|
(when (and (memq attribute '(:foreground :background))
|
2008-07-27 18:24:48 +00:00
|
|
|
|
(not (memq (window-system frame) '(x w32 ns)))
|
2000-12-15 03:12:09 +00:00
|
|
|
|
(not (member new-value
|
|
|
|
|
'("unspecified"
|
|
|
|
|
"unspecified-fg" "unspecified-bg"))))
|
2000-12-15 03:18:26 +00:00
|
|
|
|
(setq new-value (car (tty-color-desc new-value frame))))
|
2000-12-15 03:12:09 +00:00
|
|
|
|
(when (assoc new-value valid)
|
|
|
|
|
(setq new-value (cdr (assoc new-value valid)))))))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
((eq valid 'integerp)
|
|
|
|
|
(setq new-value (face-read-integer face old-value attribute-name)))
|
|
|
|
|
(t (error "Internal error")))
|
|
|
|
|
;; Convert stipple and box value text we read back to a list or
|
|
|
|
|
;; vector if it looks like one. This makes the assumption that a
|
|
|
|
|
;; pixmap file name won't start with an open-paren.
|
2012-11-15 07:30:46 +00:00
|
|
|
|
(and (memq attribute '(:stipple :box :underline))
|
|
|
|
|
(stringp new-value)
|
2013-06-23 20:29:18 +00:00
|
|
|
|
(string-match-p "^[[(]" new-value)
|
2012-11-15 07:30:46 +00:00
|
|
|
|
(setq new-value (read new-value)))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
new-value))
|
|
|
|
|
|
2008-06-12 03:56:20 +00:00
|
|
|
|
(declare-function fontset-list "fontset.c" ())
|
|
|
|
|
(declare-function x-list-fonts "xfaces.c"
|
|
|
|
|
(pattern &optional face frame maximum width))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
(defun read-face-font (face &optional frame)
|
|
|
|
|
"Read the name of a font for FACE on FRAME.
|
2005-07-20 15:38:50 +00:00
|
|
|
|
If optional argument FRAME is nil or omitted, use the selected frame."
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(let ((completion-ignore-case t))
|
2000-08-27 02:04:26 +00:00
|
|
|
|
(completing-read (format "Set font attributes of face `%s' from font: " face)
|
2004-04-16 12:51:06 +00:00
|
|
|
|
(append (fontset-list) (x-list-fonts "*" nil frame)))))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defun read-all-face-attributes (face &optional frame)
|
|
|
|
|
"Interactively read all attributes for FACE.
|
2005-07-20 15:38:50 +00:00
|
|
|
|
If optional argument FRAME is nil or omitted, use the selected frame.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
Value is a property list of attribute names and new values."
|
|
|
|
|
(let (result)
|
|
|
|
|
(dolist (attribute face-attribute-name-alist result)
|
|
|
|
|
(setq result (cons (car attribute)
|
|
|
|
|
(cons (read-face-attribute face (car attribute) frame)
|
|
|
|
|
result))))))
|
|
|
|
|
|
2001-04-25 15:22:53 +00:00
|
|
|
|
(defun modify-face (&optional face foreground background stipple
|
2007-02-01 16:30:13 +00:00
|
|
|
|
bold-p italic-p underline inverse-p frame)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
"Modify attributes of faces interactively.
|
|
|
|
|
If optional argument FRAME is nil or omitted, modify the face used
|
2001-04-25 15:22:53 +00:00
|
|
|
|
for newly created frame, i.e. the global face.
|
|
|
|
|
For non-interactive use, `set-face-attribute' is preferred.
|
2005-07-20 15:38:50 +00:00
|
|
|
|
When called from Lisp, if FACE is nil, all arguments but FRAME are ignored
|
2001-04-25 15:22:53 +00:00
|
|
|
|
and the face and its settings are obtained by querying the user."
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(interactive)
|
2001-04-25 15:22:53 +00:00
|
|
|
|
(if face
|
|
|
|
|
(set-face-attribute face frame
|
|
|
|
|
:foreground (or foreground 'unspecified)
|
|
|
|
|
:background (or background 'unspecified)
|
|
|
|
|
:stipple stipple
|
Face cleanups. Remove some uses of old-style face spec and :bold/:italic.
* faces.el (set-face-attribute): Doc fix.
(modify-face): Don't use :bold and :italic.
(error, warning, success): Tweak definitions.
* cus-edit.el (custom-modified, custom-invalid, custom-rogue)
(custom-modified, custom-set, custom-changed, custom-themed)
(custom-saved, custom-button, custom-button-mouse)
(custom-button-pressed, custom-state, custom-comment-tag)
(custom-variable-tag, custom-group-tag-1, custom-group-tag)
(custom-group-subtitle): Use new-style face specs.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face): Remove obsolete face alias.
* epa.el (epa-validity-high, epa-validity-medium)
(epa-validity-low, epa-mark, epa-field-name, epa-string)
(epa-field-name, epa-field-body):
* font-lock.el (font-lock-comment-face, font-lock-string-face)
(font-lock-keyword-face, font-lock-builtin-face)
(font-lock-function-name-face, font-lock-variable-name-face)
(font-lock-type-face, font-lock-constant-face):
* ido.el (ido-first-match, ido-only-match, ido-subdir)
(ido-virtual, ido-indicator, ido-incomplete-regexp):
* speedbar.el (speedbar-button-face, speedbar-file-face)
(speedbar-directory-face, speedbar-tag-face)
(speedbar-selected-face, speedbar-highlight-face)
(speedbar-separator-face):
* whitespace.el (whitespace-newline, whitespace-space)
(whitespace-hspace, whitespace-tab, whitespace-trailing)
(whitespace-line, whitespace-space-before-tab)
(whitespace-space-after-tab, whitespace-indentation)
(whitespace-empty):
* emulation/cua-base.el (cua-global-mark):
* eshell/em-prompt.el (eshell-prompt):
* net/newst-plainview.el (newsticker-new-item-face)
(newsticker-old-item-face, newsticker-immortal-item-face)
(newsticker-obsolete-item-face, newsticker-date-face)
(newsticker-statistics-face, newsticker-default-face):
* net/newst-reader.el (newsticker-feed-face)
(newsticker-extra-face, newsticker-enclosure-face):
* net/newst-treeview.el (newsticker-treeview-face)
(newsticker-treeview-new-face, newsticker-treeview-old-face)
(newsticker-treeview-immortal-face)
(newsticker-treeview-obsolete-face)
(newsticker-treeview-selection-face):
* net/rcirc.el (rcirc-my-nick, rcirc-other-nick)
(rcirc-bright-nick, rcirc-server, rcirc-timestamp)
(rcirc-nick-in-message, rcirc-nick-in-message-full-line)
(rcirc-prompt, rcirc-track-keyword, rcirc-url, rcirc-keyword):
* nxml/nxml-outln.el (nxml-heading, nxml-outline-indicator)
(nxml-outline-active-indicator, nxml-outline-ellipsis):
* play/mpuz.el (mpuz-unsolved, mpuz-solved, mpuz-trivial)
(mpuz-text):
* progmodes/vera-mode.el (vera-font-lock-number)
(vera-font-lock-function, vera-font-lock-interface):
* textmodes/table.el (table-cell): Use new-style face specs, and
don't use the old :bold and :italic attributes.
* erc-button.el (erc-button):
* erc-goodies.el (erc-bold-face, erc-inverse-face)
(erc-underline-face, fg:erc-color-*):
* erc-match.el (erc-current-nick-face, erc-dangerous-host-face)
(erc-pal-face, erc-fool-face, erc-keyword-face):
* erc-stamp.el (erc-timestamp-face): Likewise.
* erc.el (erc-direct-msg-face, erc-header-line, erc-input-face)
(erc-command-indicator-face, erc-notice-face, erc-action-face)
(erc-error-face, erc-my-nick-face, erc-nick-default-face)
(erc-nick-msg-face): Use new-style face specs, and avoid :bold.
* progmodes/ebrowse.el (ebrowse-tree-mark, ebrowse-root-class)
(ebrowse-member-attribute, ebrowse-default, ebrowse-file-name)
(ebrowse-member-class, ebrowse-progress): Likewise.
(ebrowse-tree-mark-face, ebrowse-root-class-face)
(ebrowse-file-name-face, ebrowse-default-face)
(ebrowse-member-attribute-face, ebrowse-member-class-face)
(ebrowse-progress-face): Remove obsolete faces.
* progmodes/flymake.el (flymake-errline, flymake-warnline):
Inherit from error and warning faces respectively.
* textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate):
Likewise.
(flyspell-incorrect-face, flyspell-duplicate-face): Remove
obsolete aliases.
* display.texi (Face Attributes): Font family does not accept
wildcards. De-document obsolete :bold and :italic attributes.
(Defining Faces): Use new-style face spec format.
2012-06-08 16:39:49 +00:00
|
|
|
|
:weight (if bold-p 'bold 'normal)
|
|
|
|
|
:slant (if italic-p 'italic 'normal)
|
2007-02-01 16:30:13 +00:00
|
|
|
|
:underline underline
|
2001-04-25 15:22:53 +00:00
|
|
|
|
:inverse-video inverse-p)
|
2013-04-13 01:10:09 +00:00
|
|
|
|
(setq face (read-face-name "Modify face" (face-at-point t)))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(apply #'set-face-attribute face frame
|
|
|
|
|
(read-all-face-attributes face frame))))
|
|
|
|
|
|
|
|
|
|
(defun read-face-and-attribute (attribute &optional frame)
|
|
|
|
|
"Read face name and face attribute value.
|
|
|
|
|
ATTRIBUTE is the attribute whose new value is read.
|
|
|
|
|
FRAME nil or unspecified means read attribute value of global face.
|
|
|
|
|
Value is a list (FACE NEW-VALUE) where FACE is the face read
|
2001-04-25 15:22:53 +00:00
|
|
|
|
\(a symbol), and NEW-VALUE is value read."
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(cond ((eq attribute :font)
|
2000-08-27 02:04:26 +00:00
|
|
|
|
(let* ((prompt "Set font-related attributes of face")
|
2013-04-13 01:10:09 +00:00
|
|
|
|
(face (read-face-name prompt (face-at-point t)))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(font (read-face-font face frame)))
|
|
|
|
|
(list face font)))
|
|
|
|
|
(t
|
|
|
|
|
(let* ((attribute-name (face-descriptive-attribute-name attribute))
|
2000-08-26 10:59:51 +00:00
|
|
|
|
(prompt (format "Set %s of face" attribute-name))
|
2013-04-13 01:10:09 +00:00
|
|
|
|
(face (read-face-name prompt (face-at-point t)))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(new-value (read-face-attribute face attribute frame)))
|
|
|
|
|
(list face new-value)))))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
;;; Listing faces.
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
|
2009-11-11 06:36:41 +00:00
|
|
|
|
(defconst list-faces-sample-text
|
1999-07-21 21:43:52 +00:00
|
|
|
|
"abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
2012-04-09 13:05:48 +00:00
|
|
|
|
"Text string to display as the sample text for `list-faces-display'.")
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;; The name list-faces would be more consistent, but let's avoid a
|
|
|
|
|
;; conflict with Lucid, which uses that name differently.
|
|
|
|
|
|
2002-12-21 20:18:03 +00:00
|
|
|
|
(defvar help-xref-stack)
|
2005-02-03 06:47:16 +00:00
|
|
|
|
(defun list-faces-display (&optional regexp)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
"List all faces, using the same sample text in each.
|
|
|
|
|
The sample text is a string that comes from the variable
|
2005-02-03 06:47:16 +00:00
|
|
|
|
`list-faces-sample-text'.
|
|
|
|
|
|
|
|
|
|
If REGEXP is non-nil, list only those faces with names matching
|
|
|
|
|
this regular expression. When called interactively with a prefix
|
2014-02-14 06:59:24 +00:00
|
|
|
|
argument, prompt for a regular expression using `read-regexp'."
|
2005-02-03 06:47:16 +00:00
|
|
|
|
(interactive (list (and current-prefix-arg
|
2008-06-30 19:35:59 +00:00
|
|
|
|
(read-regexp "List faces matching regexp"))))
|
2005-06-01 10:43:54 +00:00
|
|
|
|
(let ((all-faces (zerop (length regexp)))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(frame (selected-frame))
|
2005-06-01 10:43:54 +00:00
|
|
|
|
(max-length 0)
|
|
|
|
|
faces line-format
|
2000-02-16 22:58:42 +00:00
|
|
|
|
disp-frame window face-name)
|
2005-06-01 10:43:54 +00:00
|
|
|
|
;; We filter and take the max length in one pass
|
|
|
|
|
(setq faces
|
|
|
|
|
(delq nil
|
|
|
|
|
(mapcar (lambda (f)
|
|
|
|
|
(let ((s (symbol-name f)))
|
2013-06-23 20:29:18 +00:00
|
|
|
|
(when (or all-faces (string-match-p regexp s))
|
2005-06-01 10:43:54 +00:00
|
|
|
|
(setq max-length (max (length s) max-length))
|
|
|
|
|
f)))
|
|
|
|
|
(sort (face-list) #'string-lessp))))
|
|
|
|
|
(unless faces
|
|
|
|
|
(error "No faces matching \"%s\"" regexp))
|
|
|
|
|
(setq max-length (1+ max-length)
|
|
|
|
|
line-format (format "%%-%ds" max-length))
|
2007-11-10 09:57:18 +00:00
|
|
|
|
(with-help-window "*Faces*"
|
* x-dnd.el (x-dnd-maybe-call-test-function):
* window.el (split-window-vertically):
* whitespace.el (whitespace-help-on):
* vc-rcs.el (vc-rcs-consult-headers):
* userlock.el (ask-user-about-lock-help)
(ask-user-about-supersession-help):
* type-break.el (type-break-force-mode-line-update):
* time-stamp.el (time-stamp-conv-warn):
* terminal.el (te-set-output-log, te-more-break, te-filter)
(te-sentinel,terminal-emulator):
* term.el (make-term, term-exec, term-sentinel, term-read-input-ring)
(term-write-input-ring, term-check-source, term-start-output-log):
(term-display-buffer-line, term-dynamic-list-completions):
(term-ansi-make-term, serial-term):
* subr.el (selective-display):
* strokes.el (strokes-xpm-to-compressed-string, strokes-decode-buffer)
(strokes-encode-buffer, strokes-xpm-for-compressed-string):
* speedbar.el (speedbar-buffers-tail-notes, speedbar-buffers-item-info)
(speedbar-reconfigure-keymaps, speedbar-add-localized-speedbar-support)
(speedbar-remove-localized-speedbar-support)
(speedbar-set-mode-line-format, speedbar-create-tag-hierarchy)
(speedbar-update-special-contents, speedbar-buffer-buttons-engine)
(speedbar-buffers-line-directory):
* simple.el (shell-command-on-region, append-to-buffer)
(prepend-to-buffer):
* shadowfile.el (shadow-save-todo-file):
* scroll-bar.el (scroll-bar-set-window-start, scroll-bar-drag-1)
(scroll-bar-maybe-set-window-start):
* sb-image.el (speedbar-image-dump):
* saveplace.el (save-place-alist-to-file, save-places-to-alist)
(load-save-place-alist-from-file):
* ps-samp.el (ps-print-message-from-summary):
* ps-print.el (ps-flush-output, ps-insert-file, ps-get-boundingbox)
(ps-background-image, ps-begin-job, ps-do-despool):
* ps-bdf.el (bdf-find-file, bdf-read-font-info):
* printing.el (pr-interface, pr-ps-file-print, pr-find-buffer-visiting)
(pr-ps-message-from-summary, pr-lpr-message-from-summary):
(pr-call-process, pr-file-list, pr-interface-save):
* novice.el (disabled-command-function)
(enable-command, disable-command):
* mouse.el (mouse-buffer-menu-alist):
* mouse-copy.el (mouse-kill-preserving-secondary):
* macros.el (kbd-macro-query):
* ledit.el (ledit-go-to-lisp, ledit-go-to-liszt):
* informat.el (batch-info-validate):
* ido.el (ido-copy-current-word, ido-initiate-auto-merge):
* hippie-exp.el (try-expand-dabbrev-visible):
* help-mode.el (help-make-xrefs):
* help-fns.el (describe-variable):
* generic-x.el (bat-generic-mode-run-as-comint):
* finder.el (finder-mouse-select):
* find-dired.el (find-dired-sentinel):
* filesets.el (filesets-file-close):
* files.el (list-directory):
* faces.el (list-faces-display, describe-face):
* facemenu.el (list-colors-display):
* ezimage.el (ezimage-image-association-dump, ezimage-image-dump):
* epg.el (epg--process-filter, epg-cancel):
* epa.el (epa--marked-keys, epa--select-keys, epa-display-info)
(epa--read-signature-type):
* emerge.el (emerge-copy-as-kill-A, emerge-copy-as-kill-B)
(emerge-file-names):
* ehelp.el (electric-helpify):
* ediff.el (ediff-regions-wordwise, ediff-regions-linewise):
* ediff-vers.el (rcs-ediff-view-revision):
* ediff-util.el (ediff-setup):
* ediff-mult.el (ediff-append-custom-diff):
* ediff-diff.el (ediff-exec-process, ediff-process-sentinel)
(ediff-wordify):
* echistory.el (Electric-command-history-redo-expression):
* dos-w32.el (find-file-not-found-set-buffer-file-coding-system):
* disp-table.el (describe-display-table):
* dired.el (dired-find-buffer-nocreate):
* dired-aux.el (dired-rename-subdir, dired-dwim-target-directory):
* dabbrev.el (dabbrev--same-major-mode-p):
* chistory.el (list-command-history):
* apropos.el (apropos-documentation):
* allout.el (allout-obtain-passphrase):
(allout-copy-exposed-to-buffer):
(allout-verify-passphrase): Use with-current-buffer.
2009-11-13 22:19:45 +00:00
|
|
|
|
(with-current-buffer standard-output
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(setq truncate-lines t)
|
2000-02-16 22:58:42 +00:00
|
|
|
|
(insert
|
|
|
|
|
(substitute-command-keys
|
|
|
|
|
(concat
|
2011-08-07 14:14:54 +00:00
|
|
|
|
"\\<help-mode-map>Use "
|
2000-02-17 14:01:20 +00:00
|
|
|
|
(if (display-mouse-p) "\\[help-follow-mouse] or ")
|
2000-02-23 20:39:38 +00:00
|
|
|
|
"\\[help-follow] on a face name to customize it\n"
|
2002-02-26 12:13:35 +00:00
|
|
|
|
"or on its sample text for a description of the face.\n\n")))
|
2000-02-16 22:58:42 +00:00
|
|
|
|
(setq help-xref-stack nil)
|
2005-02-03 06:47:16 +00:00
|
|
|
|
(dolist (face faces)
|
2000-02-16 22:58:42 +00:00
|
|
|
|
(setq face-name (symbol-name face))
|
2005-06-01 10:43:54 +00:00
|
|
|
|
(insert (format line-format face-name))
|
2000-02-16 22:58:42 +00:00
|
|
|
|
;; Hyperlink to a customization buffer for the face. Using
|
|
|
|
|
;; the help xref mechanism may not be the best way.
|
|
|
|
|
(save-excursion
|
|
|
|
|
(save-match-data
|
|
|
|
|
(search-backward face-name)
|
2005-05-19 20:57:04 +00:00
|
|
|
|
(setq help-xref-stack-item `(list-faces-display ,regexp))
|
2002-04-26 22:31:16 +00:00
|
|
|
|
(help-xref-button 0 'help-customize-face face)))
|
|
|
|
|
(let ((beg (point))
|
|
|
|
|
(line-beg (line-beginning-position)))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(insert list-faces-sample-text)
|
2000-02-16 22:58:42 +00:00
|
|
|
|
;; Hyperlink to a help buffer for the face.
|
|
|
|
|
(save-excursion
|
|
|
|
|
(save-match-data
|
|
|
|
|
(search-backward list-faces-sample-text)
|
2001-10-12 01:53:58 +00:00
|
|
|
|
(help-xref-button 0 'help-face face)))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(insert "\n")
|
|
|
|
|
(put-text-property beg (1- (point)) 'face face)
|
2002-04-26 22:31:16 +00:00
|
|
|
|
;; Make all face commands default to the proper face
|
|
|
|
|
;; anywhere in the line.
|
|
|
|
|
(put-text-property line-beg (1- (point)) 'read-face-name face)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
;; If the sample text has multiple lines, line up all of them.
|
|
|
|
|
(goto-char beg)
|
|
|
|
|
(forward-line 1)
|
|
|
|
|
(while (not (eobp))
|
2005-06-01 10:43:54 +00:00
|
|
|
|
(insert-char ?\s max-length)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(forward-line 1))))
|
2007-11-10 09:57:18 +00:00
|
|
|
|
(goto-char (point-min))))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
;; If the *Faces* buffer appears in a different frame,
|
|
|
|
|
;; copy all the face definitions from FRAME,
|
|
|
|
|
;; so that the display will reflect the frame that was selected.
|
|
|
|
|
(setq window (get-buffer-window (get-buffer "*Faces*") t))
|
|
|
|
|
(setq disp-frame (if window (window-frame window)
|
|
|
|
|
(car (frame-list))))
|
|
|
|
|
(or (eq frame disp-frame)
|
2013-06-23 20:29:18 +00:00
|
|
|
|
(dolist (face (face-list))
|
|
|
|
|
(copy-face face face frame disp-frame)))))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
2005-02-03 06:47:16 +00:00
|
|
|
|
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(defun describe-face (face &optional frame)
|
|
|
|
|
"Display the properties of face FACE on FRAME.
|
2002-05-16 07:49:59 +00:00
|
|
|
|
Interactively, FACE defaults to the faces of the character after point
|
2002-04-26 22:31:16 +00:00
|
|
|
|
and FRAME defaults to the selected frame.
|
|
|
|
|
|
1999-07-21 21:43:52 +00:00
|
|
|
|
If the optional argument FRAME is given, report on face FACE in that frame.
|
|
|
|
|
If FRAME is t, report on the defaults for face FACE (for new frames).
|
|
|
|
|
If FRAME is omitted or nil, use the selected frame."
|
2013-04-04 02:12:25 +00:00
|
|
|
|
(interactive (list (read-face-name "Describe face"
|
2013-04-13 01:10:09 +00:00
|
|
|
|
(or (face-at-point t) 'default)
|
2013-04-04 02:12:25 +00:00
|
|
|
|
t)))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(let* ((attrs '((:family . "Family")
|
2008-06-13 01:56:55 +00:00
|
|
|
|
(:foundry . "Foundry")
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(:width . "Width")
|
|
|
|
|
(:height . "Height")
|
|
|
|
|
(:weight . "Weight")
|
|
|
|
|
(:slant . "Slant")
|
|
|
|
|
(:foreground . "Foreground")
|
2013-11-08 17:26:03 +00:00
|
|
|
|
(:distant-foreground . "DistantForeground")
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(:background . "Background")
|
|
|
|
|
(:underline . "Underline")
|
|
|
|
|
(:overline . "Overline")
|
|
|
|
|
(:strike-through . "Strike-through")
|
|
|
|
|
(:box . "Box")
|
|
|
|
|
(:inverse-video . "Inverse")
|
2000-03-21 00:31:38 +00:00
|
|
|
|
(:stipple . "Stipple")
|
2002-09-27 04:54:47 +00:00
|
|
|
|
(:font . "Font")
|
|
|
|
|
(:fontset . "Fontset")
|
2000-08-26 05:51:52 +00:00
|
|
|
|
(:inherit . "Inherit")))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(max-width (apply #'max (mapcar #'(lambda (x) (length (cdr x)))
|
|
|
|
|
attrs))))
|
2009-10-02 03:48:36 +00:00
|
|
|
|
(help-setup-xref (list #'describe-face face)
|
|
|
|
|
(called-interactively-p 'interactive))
|
2002-04-26 22:31:16 +00:00
|
|
|
|
(unless face
|
|
|
|
|
(setq face 'default))
|
|
|
|
|
(if (not (listp face))
|
|
|
|
|
(setq face (list face)))
|
2007-11-10 09:57:18 +00:00
|
|
|
|
(with-help-window (help-buffer)
|
* x-dnd.el (x-dnd-maybe-call-test-function):
* window.el (split-window-vertically):
* whitespace.el (whitespace-help-on):
* vc-rcs.el (vc-rcs-consult-headers):
* userlock.el (ask-user-about-lock-help)
(ask-user-about-supersession-help):
* type-break.el (type-break-force-mode-line-update):
* time-stamp.el (time-stamp-conv-warn):
* terminal.el (te-set-output-log, te-more-break, te-filter)
(te-sentinel,terminal-emulator):
* term.el (make-term, term-exec, term-sentinel, term-read-input-ring)
(term-write-input-ring, term-check-source, term-start-output-log):
(term-display-buffer-line, term-dynamic-list-completions):
(term-ansi-make-term, serial-term):
* subr.el (selective-display):
* strokes.el (strokes-xpm-to-compressed-string, strokes-decode-buffer)
(strokes-encode-buffer, strokes-xpm-for-compressed-string):
* speedbar.el (speedbar-buffers-tail-notes, speedbar-buffers-item-info)
(speedbar-reconfigure-keymaps, speedbar-add-localized-speedbar-support)
(speedbar-remove-localized-speedbar-support)
(speedbar-set-mode-line-format, speedbar-create-tag-hierarchy)
(speedbar-update-special-contents, speedbar-buffer-buttons-engine)
(speedbar-buffers-line-directory):
* simple.el (shell-command-on-region, append-to-buffer)
(prepend-to-buffer):
* shadowfile.el (shadow-save-todo-file):
* scroll-bar.el (scroll-bar-set-window-start, scroll-bar-drag-1)
(scroll-bar-maybe-set-window-start):
* sb-image.el (speedbar-image-dump):
* saveplace.el (save-place-alist-to-file, save-places-to-alist)
(load-save-place-alist-from-file):
* ps-samp.el (ps-print-message-from-summary):
* ps-print.el (ps-flush-output, ps-insert-file, ps-get-boundingbox)
(ps-background-image, ps-begin-job, ps-do-despool):
* ps-bdf.el (bdf-find-file, bdf-read-font-info):
* printing.el (pr-interface, pr-ps-file-print, pr-find-buffer-visiting)
(pr-ps-message-from-summary, pr-lpr-message-from-summary):
(pr-call-process, pr-file-list, pr-interface-save):
* novice.el (disabled-command-function)
(enable-command, disable-command):
* mouse.el (mouse-buffer-menu-alist):
* mouse-copy.el (mouse-kill-preserving-secondary):
* macros.el (kbd-macro-query):
* ledit.el (ledit-go-to-lisp, ledit-go-to-liszt):
* informat.el (batch-info-validate):
* ido.el (ido-copy-current-word, ido-initiate-auto-merge):
* hippie-exp.el (try-expand-dabbrev-visible):
* help-mode.el (help-make-xrefs):
* help-fns.el (describe-variable):
* generic-x.el (bat-generic-mode-run-as-comint):
* finder.el (finder-mouse-select):
* find-dired.el (find-dired-sentinel):
* filesets.el (filesets-file-close):
* files.el (list-directory):
* faces.el (list-faces-display, describe-face):
* facemenu.el (list-colors-display):
* ezimage.el (ezimage-image-association-dump, ezimage-image-dump):
* epg.el (epg--process-filter, epg-cancel):
* epa.el (epa--marked-keys, epa--select-keys, epa-display-info)
(epa--read-signature-type):
* emerge.el (emerge-copy-as-kill-A, emerge-copy-as-kill-B)
(emerge-file-names):
* ehelp.el (electric-helpify):
* ediff.el (ediff-regions-wordwise, ediff-regions-linewise):
* ediff-vers.el (rcs-ediff-view-revision):
* ediff-util.el (ediff-setup):
* ediff-mult.el (ediff-append-custom-diff):
* ediff-diff.el (ediff-exec-process, ediff-process-sentinel)
(ediff-wordify):
* echistory.el (Electric-command-history-redo-expression):
* dos-w32.el (find-file-not-found-set-buffer-file-coding-system):
* disp-table.el (describe-display-table):
* dired.el (dired-find-buffer-nocreate):
* dired-aux.el (dired-rename-subdir, dired-dwim-target-directory):
* dabbrev.el (dabbrev--same-major-mode-p):
* chistory.el (list-command-history):
* apropos.el (apropos-documentation):
* allout.el (allout-obtain-passphrase):
(allout-copy-exposed-to-buffer):
(allout-verify-passphrase): Use with-current-buffer.
2009-11-13 22:19:45 +00:00
|
|
|
|
(with-current-buffer standard-output
|
2002-04-26 22:31:16 +00:00
|
|
|
|
(dolist (f face)
|
2007-10-14 20:40:31 +00:00
|
|
|
|
(if (stringp f) (setq f (intern f)))
|
2009-01-11 17:27:37 +00:00
|
|
|
|
;; We may get called for anonymous faces (i.e., faces
|
|
|
|
|
;; expressed using prop-value plists). Those can't be
|
|
|
|
|
;; usefully customized, so ignore them.
|
|
|
|
|
(when (symbolp f)
|
|
|
|
|
(insert "Face: " (symbol-name f))
|
|
|
|
|
(if (not (facep f))
|
|
|
|
|
(insert " undefined face.\n")
|
|
|
|
|
(let ((customize-label "customize this face")
|
|
|
|
|
file-name)
|
|
|
|
|
(insert (concat " (" (propertize "sample" 'font-lock-face f) ")"))
|
|
|
|
|
(princ (concat " (" customize-label ")\n"))
|
2009-08-31 01:32:58 +00:00
|
|
|
|
;; FIXME not sure how much of this belongs here, and
|
|
|
|
|
;; how much in `face-documentation'. The latter is
|
|
|
|
|
;; not used much, but needs to return nil for
|
|
|
|
|
;; undocumented faces.
|
|
|
|
|
(let ((alias (get f 'face-alias))
|
|
|
|
|
(face f)
|
|
|
|
|
obsolete)
|
|
|
|
|
(when alias
|
|
|
|
|
(setq face alias)
|
|
|
|
|
(insert
|
Improve the optional translation of quotes
Fix several problems with the recently-added custom variable
help-quote-translation where the code would quote inconsistently
in help buffers. Add support for quoting 'like this', which
is common in other GNU programs in ASCII environments. Change
help-quote-translation to use more mnemonic values: values are now the
initial quoting char, e.g., (setq help-quote-translation ?`) gets the
traditional Emacs help-buffer quoting style `like this'. Change the
default behavior of substitute-command-keys to match what's done in
set-locale-environment, i.e., quote ‘like this’ if displayable,
'like this' otherwise.
* doc/lispref/help.texi (Keys in Documentation): Document
new behavior of substitute-command-keys, and document
help-quote-translation.
* doc/lispref/tips.texi (Documentation Tips):
Mention the effect of help-quote-translation.
* etc/NEWS: Mention new behavior of substitute-command-keys,
and merge help-quote-translation news into it.
When talking about doc strings, mention new ways to type quotes.
* lisp/cedet/mode-local.el (overload-docstring-extension):
Revert my recent change to this function, which shouldn't be
needed as the result is a doc string.
* lisp/cedet/mode-local.el (mode-local-print-binding)
(mode-local-describe-bindings-2):
* lisp/cedet/srecode/srt-mode.el (srecode-macro-help):
* lisp/cus-theme.el (describe-theme-1):
* lisp/descr-text.el (describe-text-properties-1, describe-char):
* lisp/emacs-lisp/cl-generic.el (cl--generic-describe):
* lisp/emacs-lisp/eieio-opt.el (eieio-help-class)
(eieio-help-constructor):
* lisp/emacs-lisp/package.el (describe-package-1):
* lisp/faces.el (describe-face):
* lisp/help-fns.el (help-fns--key-bindings)
(help-fns--compiler-macro, help-fns--parent-mode)
(help-fns--obsolete, help-fns--interactive-only)
(describe-function-1, describe-variable):
* lisp/help.el (describe-mode):
Use substitute-command-keys to ensure a more-consistent quoting
style in help buffers.
* lisp/cus-start.el (standard):
Document new help-quote-translation behavior.
* lisp/emacs-lisp/lisp-mode.el (lisp-fdefs):
* lisp/help-mode.el (help-xref-symbol-regexp, help-xref-info-regexp)
(help-xref-url-regexp):
* lisp/international/mule-cmds.el (help-xref-mule-regexp-template):
* lisp/wid-edit.el (widget-documentation-link-regexp):
Also match 'foo', in case we're in a help buffer generated when
help-quote-translation is ?'.
* src/doc.c: Include disptab.h, for DISP_CHAR_VECTOR.
(LEFT_SINGLE_QUOTATION_MARK, uLSQM0, uLSQM1, uLSQM2, uRSQM0)
(uRSQM1, uRSQM2, LSQM, RSQM): New constants.
(Fsubstitute_command_keys): Document and implement new behavior.
(Vhelp_quote_translation): Document new behavior.
2015-06-19 07:35:43 +00:00
|
|
|
|
(format (substitute-command-keys
|
|
|
|
|
"\n %s is an alias for the face ‘%s’.\n%s")
|
2009-08-31 01:32:58 +00:00
|
|
|
|
f alias
|
|
|
|
|
(if (setq obsolete (get f 'obsolete-face))
|
Improve the optional translation of quotes
Fix several problems with the recently-added custom variable
help-quote-translation where the code would quote inconsistently
in help buffers. Add support for quoting 'like this', which
is common in other GNU programs in ASCII environments. Change
help-quote-translation to use more mnemonic values: values are now the
initial quoting char, e.g., (setq help-quote-translation ?`) gets the
traditional Emacs help-buffer quoting style `like this'. Change the
default behavior of substitute-command-keys to match what's done in
set-locale-environment, i.e., quote ‘like this’ if displayable,
'like this' otherwise.
* doc/lispref/help.texi (Keys in Documentation): Document
new behavior of substitute-command-keys, and document
help-quote-translation.
* doc/lispref/tips.texi (Documentation Tips):
Mention the effect of help-quote-translation.
* etc/NEWS: Mention new behavior of substitute-command-keys,
and merge help-quote-translation news into it.
When talking about doc strings, mention new ways to type quotes.
* lisp/cedet/mode-local.el (overload-docstring-extension):
Revert my recent change to this function, which shouldn't be
needed as the result is a doc string.
* lisp/cedet/mode-local.el (mode-local-print-binding)
(mode-local-describe-bindings-2):
* lisp/cedet/srecode/srt-mode.el (srecode-macro-help):
* lisp/cus-theme.el (describe-theme-1):
* lisp/descr-text.el (describe-text-properties-1, describe-char):
* lisp/emacs-lisp/cl-generic.el (cl--generic-describe):
* lisp/emacs-lisp/eieio-opt.el (eieio-help-class)
(eieio-help-constructor):
* lisp/emacs-lisp/package.el (describe-package-1):
* lisp/faces.el (describe-face):
* lisp/help-fns.el (help-fns--key-bindings)
(help-fns--compiler-macro, help-fns--parent-mode)
(help-fns--obsolete, help-fns--interactive-only)
(describe-function-1, describe-variable):
* lisp/help.el (describe-mode):
Use substitute-command-keys to ensure a more-consistent quoting
style in help buffers.
* lisp/cus-start.el (standard):
Document new help-quote-translation behavior.
* lisp/emacs-lisp/lisp-mode.el (lisp-fdefs):
* lisp/help-mode.el (help-xref-symbol-regexp, help-xref-info-regexp)
(help-xref-url-regexp):
* lisp/international/mule-cmds.el (help-xref-mule-regexp-template):
* lisp/wid-edit.el (widget-documentation-link-regexp):
Also match 'foo', in case we're in a help buffer generated when
help-quote-translation is ?'.
* src/doc.c: Include disptab.h, for DISP_CHAR_VECTOR.
(LEFT_SINGLE_QUOTATION_MARK, uLSQM0, uLSQM1, uLSQM2, uRSQM0)
(uRSQM1, uRSQM2, LSQM, RSQM): New constants.
(Fsubstitute_command_keys): Document and implement new behavior.
(Vhelp_quote_translation): Document new behavior.
2015-06-19 07:35:43 +00:00
|
|
|
|
(format (substitute-command-keys
|
|
|
|
|
" This face is obsolete%s; use ‘%s’ instead.\n")
|
2009-08-31 01:32:58 +00:00
|
|
|
|
(if (stringp obsolete)
|
|
|
|
|
(format " since %s" obsolete)
|
|
|
|
|
"")
|
|
|
|
|
alias)
|
|
|
|
|
""))))
|
|
|
|
|
(insert "\nDocumentation:\n"
|
Support curved quotes in doc strings
Emacs's traditional doc string style has been to quote symbols
`like this'. This worked well on now-obsolete terminals where
` and ' were symmetric quotes, but nowadays curved quotes
‘like this’ look better. Support quoting the new way too.
(Bug#20385)
* doc/lispref/tips.texi (Documentation Tips): Symbols can be quoted
‘like-this’ as well as `like-this'.
* etc/NEWS: Mention this.
* lisp/cedet/mode-local.el (overload-docstring-extension)
(mode-local-print-binding, mode-local-describe-bindings-2):
* lisp/cus-theme.el (describe-theme-1):
* lisp/descr-text.el (describe-text-properties-1, describe-char):
* lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine):
* lisp/emacs-lisp/cl-generic.el (cl--generic-describe):
* lisp/emacs-lisp/eieio-opt.el (eieio-help-class)
(eieio-help-constructor):
* lisp/emacs-lisp/package.el (describe-package-1):
* lisp/faces.el (describe-face):
* lisp/help-fns.el (help-fns--key-bindings)
(help-fns--compiler-macro, help-fns--parent-mode, help-fns--obsolete):
(help-fns--interactive-only, describe-function-1):
(describe-variable):
* lisp/help.el (describe-mode):
* lisp/international/mule-cmds.el (describe-input-method)
(describe-language-environment):
* lisp/international/mule-diag.el (describe-character-set)
(print-coding-system-briefly, list-input-methods)
(list-input-methods-1):
Insert curved quotes rather than grave accent and apostrophe.
* lisp/cedet/srecode/texi.el (srecode-texi-texify-docstring):
* lisp/emacs-lisp/checkdoc.el (checkdoc-this-string-valid-engine)
(checkdoc-proper-noun-region-engine):
* lisp/emacs-lisp/lisp-mode.el (lisp-el-font-lock-keywords-2)
(lisp-cl-font-lock-keywords-2):
* lisp/finder.el (finder-font-lock-keywords):
* lisp/gnus/gnus-art.el (gnus-button-alist):
* lisp/help-fns.el (help-do-arg-highlight)
(describe-function-1, describe-variable):
* lisp/help-mode.el (help-xref-symbol-regexp)
(help-xref-info-regexp, help-xref-url-regexp):
* lisp/help.el (describe-mode):
* lisp/international/mule-cmds.el (help-xref-mule-regexp-template):
* lisp/wid-edit.el (widget-documentation-link-regexp):
Parse symbols quoted ‘like-this’ as well as `like-this'.
* lisp/progmodes/elisp-mode.el (emacs-lisp-mode):
Add "‘" and "’" to electric-pair-text-pairs.
(elisp--form-quoted-p): Also allow "‘" as a quoting char.
(elisp-completion-at-point, elisp--preceding-sexp):
Also treat "‘" and "’" as quoting chars.
2015-05-28 07:06:14 +00:00
|
|
|
|
(substitute-command-keys
|
|
|
|
|
(or (face-documentation face)
|
|
|
|
|
"Not documented as a face."))
|
2009-08-31 01:32:58 +00:00
|
|
|
|
"\n\n"))
|
2009-01-11 17:27:37 +00:00
|
|
|
|
(with-current-buffer standard-output
|
|
|
|
|
(save-excursion
|
|
|
|
|
(re-search-backward
|
|
|
|
|
(concat "\\(" customize-label "\\)") nil t)
|
|
|
|
|
(help-xref-button 1 'help-customize-face f)))
|
|
|
|
|
(setq file-name (find-lisp-object-file-name f 'defface))
|
|
|
|
|
(when file-name
|
Improve the optional translation of quotes
Fix several problems with the recently-added custom variable
help-quote-translation where the code would quote inconsistently
in help buffers. Add support for quoting 'like this', which
is common in other GNU programs in ASCII environments. Change
help-quote-translation to use more mnemonic values: values are now the
initial quoting char, e.g., (setq help-quote-translation ?`) gets the
traditional Emacs help-buffer quoting style `like this'. Change the
default behavior of substitute-command-keys to match what's done in
set-locale-environment, i.e., quote ‘like this’ if displayable,
'like this' otherwise.
* doc/lispref/help.texi (Keys in Documentation): Document
new behavior of substitute-command-keys, and document
help-quote-translation.
* doc/lispref/tips.texi (Documentation Tips):
Mention the effect of help-quote-translation.
* etc/NEWS: Mention new behavior of substitute-command-keys,
and merge help-quote-translation news into it.
When talking about doc strings, mention new ways to type quotes.
* lisp/cedet/mode-local.el (overload-docstring-extension):
Revert my recent change to this function, which shouldn't be
needed as the result is a doc string.
* lisp/cedet/mode-local.el (mode-local-print-binding)
(mode-local-describe-bindings-2):
* lisp/cedet/srecode/srt-mode.el (srecode-macro-help):
* lisp/cus-theme.el (describe-theme-1):
* lisp/descr-text.el (describe-text-properties-1, describe-char):
* lisp/emacs-lisp/cl-generic.el (cl--generic-describe):
* lisp/emacs-lisp/eieio-opt.el (eieio-help-class)
(eieio-help-constructor):
* lisp/emacs-lisp/package.el (describe-package-1):
* lisp/faces.el (describe-face):
* lisp/help-fns.el (help-fns--key-bindings)
(help-fns--compiler-macro, help-fns--parent-mode)
(help-fns--obsolete, help-fns--interactive-only)
(describe-function-1, describe-variable):
* lisp/help.el (describe-mode):
Use substitute-command-keys to ensure a more-consistent quoting
style in help buffers.
* lisp/cus-start.el (standard):
Document new help-quote-translation behavior.
* lisp/emacs-lisp/lisp-mode.el (lisp-fdefs):
* lisp/help-mode.el (help-xref-symbol-regexp, help-xref-info-regexp)
(help-xref-url-regexp):
* lisp/international/mule-cmds.el (help-xref-mule-regexp-template):
* lisp/wid-edit.el (widget-documentation-link-regexp):
Also match 'foo', in case we're in a help buffer generated when
help-quote-translation is ?'.
* src/doc.c: Include disptab.h, for DISP_CHAR_VECTOR.
(LEFT_SINGLE_QUOTATION_MARK, uLSQM0, uLSQM1, uLSQM2, uRSQM0)
(uRSQM1, uRSQM2, LSQM, RSQM): New constants.
(Fsubstitute_command_keys): Document and implement new behavior.
(Vhelp_quote_translation): Document new behavior.
2015-06-19 07:35:43 +00:00
|
|
|
|
(princ (substitute-command-keys "Defined in ‘"))
|
2009-01-11 17:27:37 +00:00
|
|
|
|
(princ (file-name-nondirectory file-name))
|
Improve the optional translation of quotes
Fix several problems with the recently-added custom variable
help-quote-translation where the code would quote inconsistently
in help buffers. Add support for quoting 'like this', which
is common in other GNU programs in ASCII environments. Change
help-quote-translation to use more mnemonic values: values are now the
initial quoting char, e.g., (setq help-quote-translation ?`) gets the
traditional Emacs help-buffer quoting style `like this'. Change the
default behavior of substitute-command-keys to match what's done in
set-locale-environment, i.e., quote ‘like this’ if displayable,
'like this' otherwise.
* doc/lispref/help.texi (Keys in Documentation): Document
new behavior of substitute-command-keys, and document
help-quote-translation.
* doc/lispref/tips.texi (Documentation Tips):
Mention the effect of help-quote-translation.
* etc/NEWS: Mention new behavior of substitute-command-keys,
and merge help-quote-translation news into it.
When talking about doc strings, mention new ways to type quotes.
* lisp/cedet/mode-local.el (overload-docstring-extension):
Revert my recent change to this function, which shouldn't be
needed as the result is a doc string.
* lisp/cedet/mode-local.el (mode-local-print-binding)
(mode-local-describe-bindings-2):
* lisp/cedet/srecode/srt-mode.el (srecode-macro-help):
* lisp/cus-theme.el (describe-theme-1):
* lisp/descr-text.el (describe-text-properties-1, describe-char):
* lisp/emacs-lisp/cl-generic.el (cl--generic-describe):
* lisp/emacs-lisp/eieio-opt.el (eieio-help-class)
(eieio-help-constructor):
* lisp/emacs-lisp/package.el (describe-package-1):
* lisp/faces.el (describe-face):
* lisp/help-fns.el (help-fns--key-bindings)
(help-fns--compiler-macro, help-fns--parent-mode)
(help-fns--obsolete, help-fns--interactive-only)
(describe-function-1, describe-variable):
* lisp/help.el (describe-mode):
Use substitute-command-keys to ensure a more-consistent quoting
style in help buffers.
* lisp/cus-start.el (standard):
Document new help-quote-translation behavior.
* lisp/emacs-lisp/lisp-mode.el (lisp-fdefs):
* lisp/help-mode.el (help-xref-symbol-regexp, help-xref-info-regexp)
(help-xref-url-regexp):
* lisp/international/mule-cmds.el (help-xref-mule-regexp-template):
* lisp/wid-edit.el (widget-documentation-link-regexp):
Also match 'foo', in case we're in a help buffer generated when
help-quote-translation is ?'.
* src/doc.c: Include disptab.h, for DISP_CHAR_VECTOR.
(LEFT_SINGLE_QUOTATION_MARK, uLSQM0, uLSQM1, uLSQM2, uRSQM0)
(uRSQM1, uRSQM2, LSQM, RSQM): New constants.
(Fsubstitute_command_keys): Document and implement new behavior.
(Vhelp_quote_translation): Document new behavior.
2015-06-19 07:35:43 +00:00
|
|
|
|
(princ (substitute-command-keys "’"))
|
2009-01-11 17:27:37 +00:00
|
|
|
|
;; Make a hyperlink to the library.
|
|
|
|
|
(save-excursion
|
Improve the optional translation of quotes
Fix several problems with the recently-added custom variable
help-quote-translation where the code would quote inconsistently
in help buffers. Add support for quoting 'like this', which
is common in other GNU programs in ASCII environments. Change
help-quote-translation to use more mnemonic values: values are now the
initial quoting char, e.g., (setq help-quote-translation ?`) gets the
traditional Emacs help-buffer quoting style `like this'. Change the
default behavior of substitute-command-keys to match what's done in
set-locale-environment, i.e., quote ‘like this’ if displayable,
'like this' otherwise.
* doc/lispref/help.texi (Keys in Documentation): Document
new behavior of substitute-command-keys, and document
help-quote-translation.
* doc/lispref/tips.texi (Documentation Tips):
Mention the effect of help-quote-translation.
* etc/NEWS: Mention new behavior of substitute-command-keys,
and merge help-quote-translation news into it.
When talking about doc strings, mention new ways to type quotes.
* lisp/cedet/mode-local.el (overload-docstring-extension):
Revert my recent change to this function, which shouldn't be
needed as the result is a doc string.
* lisp/cedet/mode-local.el (mode-local-print-binding)
(mode-local-describe-bindings-2):
* lisp/cedet/srecode/srt-mode.el (srecode-macro-help):
* lisp/cus-theme.el (describe-theme-1):
* lisp/descr-text.el (describe-text-properties-1, describe-char):
* lisp/emacs-lisp/cl-generic.el (cl--generic-describe):
* lisp/emacs-lisp/eieio-opt.el (eieio-help-class)
(eieio-help-constructor):
* lisp/emacs-lisp/package.el (describe-package-1):
* lisp/faces.el (describe-face):
* lisp/help-fns.el (help-fns--key-bindings)
(help-fns--compiler-macro, help-fns--parent-mode)
(help-fns--obsolete, help-fns--interactive-only)
(describe-function-1, describe-variable):
* lisp/help.el (describe-mode):
Use substitute-command-keys to ensure a more-consistent quoting
style in help buffers.
* lisp/cus-start.el (standard):
Document new help-quote-translation behavior.
* lisp/emacs-lisp/lisp-mode.el (lisp-fdefs):
* lisp/help-mode.el (help-xref-symbol-regexp, help-xref-info-regexp)
(help-xref-url-regexp):
* lisp/international/mule-cmds.el (help-xref-mule-regexp-template):
* lisp/wid-edit.el (widget-documentation-link-regexp):
Also match 'foo', in case we're in a help buffer generated when
help-quote-translation is ?'.
* src/doc.c: Include disptab.h, for DISP_CHAR_VECTOR.
(LEFT_SINGLE_QUOTATION_MARK, uLSQM0, uLSQM1, uLSQM2, uRSQM0)
(uRSQM1, uRSQM2, LSQM, RSQM): New constants.
(Fsubstitute_command_keys): Document and implement new behavior.
(Vhelp_quote_translation): Document new behavior.
2015-06-19 07:35:43 +00:00
|
|
|
|
(re-search-backward
|
|
|
|
|
(substitute-command-keys "‘\\([^‘’]+\\)’") nil t)
|
2009-01-11 17:27:37 +00:00
|
|
|
|
(help-xref-button 1 'help-face-def f file-name))
|
|
|
|
|
(princ ".")
|
|
|
|
|
(terpri)
|
|
|
|
|
(terpri))
|
|
|
|
|
(dolist (a attrs)
|
|
|
|
|
(let ((attr (face-attribute f (car a) frame)))
|
|
|
|
|
(insert (make-string (- max-width (length (cdr a))) ?\s)
|
|
|
|
|
(cdr a) ": " (format "%s" attr))
|
|
|
|
|
(if (and (eq (car a) :inherit)
|
|
|
|
|
(not (eq attr 'unspecified)))
|
|
|
|
|
;; Make a hyperlink to the parent face.
|
|
|
|
|
(save-excursion
|
|
|
|
|
(re-search-backward ": \\([^:]+\\)" nil t)
|
|
|
|
|
(help-xref-button 1 'help-face attr)))
|
|
|
|
|
(insert "\n")))))
|
|
|
|
|
(terpri)))))))
|
2001-10-12 01:53:58 +00:00
|
|
|
|
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
;;; Face specifications (defface).
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
|
|
|
|
|
;; Parameter FRAME Is kept for call compatibility to with previous
|
|
|
|
|
;; face implementation.
|
|
|
|
|
|
2011-04-19 13:44:55 +00:00
|
|
|
|
(defun face-attr-construct (face &optional _frame)
|
|
|
|
|
"Return a `defface'-style attribute list for FACE.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
Value is a property list of pairs ATTRIBUTE VALUE for all specified
|
|
|
|
|
face attributes of FACE where ATTRIBUTE is the attribute name and
|
2011-04-19 13:44:55 +00:00
|
|
|
|
VALUE is the specified value of that attribute.
|
|
|
|
|
Argument FRAME is ignored and retained for compatibility."
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(let (result)
|
|
|
|
|
(dolist (entry face-attribute-name-alist result)
|
|
|
|
|
(let* ((attribute (car entry))
|
|
|
|
|
(value (face-attribute face attribute)))
|
|
|
|
|
(unless (eq value 'unspecified)
|
|
|
|
|
(setq result (nconc (list attribute value) result)))))))
|
2001-05-29 16:12:03 +00:00
|
|
|
|
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
(defun face-spec-set-match-display (display frame)
|
|
|
|
|
"Non-nil if DISPLAY matches FRAME.
|
|
|
|
|
DISPLAY is part of a spec such as can be used in `defface'.
|
|
|
|
|
If FRAME is nil, the current FRAME is used."
|
|
|
|
|
(let* ((conjuncts display)
|
|
|
|
|
conjunct req options
|
|
|
|
|
;; t means we have succeeded against all the conjuncts in
|
|
|
|
|
;; DISPLAY that have been tested so far.
|
|
|
|
|
(match t))
|
|
|
|
|
(if (eq conjuncts t)
|
|
|
|
|
(setq conjuncts nil))
|
|
|
|
|
(while (and conjuncts match)
|
|
|
|
|
(setq conjunct (car conjuncts)
|
|
|
|
|
conjuncts (cdr conjuncts)
|
|
|
|
|
req (car conjunct)
|
|
|
|
|
options (cdr conjunct)
|
|
|
|
|
match (cond ((eq req 'type)
|
Converted display hooks to be display-local. Plus many bugfixes.
lib-src/emacsclient.c (window_change_signal): Renamed to pass_signal_to_emacs.
(init_signal): Pass SIGINT and SIGQUIT to the emacs process.
lisp/faces.el (face-valid-attribute-values): Use the window-system
function, not the variable.
(read-face-attribute, face-spec-set-match-display, frame-set-background-mode)
(face-set-after-frame-default): Ditto.
lisp/frame.el (make-frame-on-tty): Added interactive declaration
(suggested by Robert J. Chassell). Use tty-create-frame-with-faces,
not make-terminal-frame.
src/termhooks.h (struct display_method): Renamed to display for brevity.
(struct display): Added all display hook variables as members of this structure.
Added next_display, reference_count, type and display_info components.
(FRAME_MUST_WRITE_SPACES, FRAME_FAST_CLEAR_END_OF_LINE, FRAME_LINE_INS_DEL_OK)
(FRAME_CHAR_INS_DEL_OK, FRAME_SCROLL_REGION_OK, FRAME_SCROLL_REGION_COST)
(FRAME_MEMORY_BELOW_FRAME, FRAME_RIF): Updated for struct display.
(FRAME_DISPLAY): New macro.
(create_display, delete_display): New prototypes.
src/frame.h (struct frame): Added `display' member, removed display_method.
(FRAME_LIVE_P): Look at f->display, not f->output_data.
src/termchar.h (struct tty_display_info): Removed display_method component.
(FRAME_TTY): Use the display structure, not output_data.
src/term.c (display_list): New variable.
(cursor_to_hook, raw_cursor_to_hook, clear_to_end_hook, clear_frame_hook)
(clear_end_of_line_hook, ins_del_lines_hook, delete_glyphs_hook)
(ring_bell_hook, reset_terminal_modes_hook, set_terminal_modes_hook)
(update_begin_hook, update_end_hook, set_terminal_window_hook)
(insert_glyphs_hook, write_glyphs_hook, delete_glyphs_hoo, read_socket_hook)
(frame_up_to_date_hook, mouse_position_hook, frame_rehighlight_hook)
(frame_raise_lower_hook, set_vertical_scroll_bar_hook, condemn_scroll_bars_hook)
(redeem_scroll_bar_hook, judge_scroll_bars_hook): Moved to struct display.
(tty_display_method_template): Removed.
(syms_of_term): Don't initialize tty_display_method_template.
(ring_bell, set_terminal_modes, reset_terminal_modes, update_begin)
(update_end, set_terminal_window, cursor_to, raw_cursor_to, clear_to_end)
(clear_frame, clear_end_of_line, write_glyphs, insert_glyphs)
(delete_glyphs, ins_del_lines): Access display hooks through the frame pointer.
(Ftty_display_color_p): Use the frame given as a parameter, or else return nil.
(Ftty_display_color_cells): Ditto.
(get_named_tty): Renamed to get_named_tty_display, changed return type to struct display.
(term_dummy_init): Renamed to initial_term_init. Create and return an initial display.
(term_init): Initialize a new struct display and return a pointer to
it instead of tty_display_info. Removed frame initialization kludge.
(Fdelete_tty): Updated for struct display.
(delete_tty): The parameter type is now struct display, not tty_display_info.
Delete the display, too.
(create_tty_output): New function for creating tty_output structures.
(delete_tty_output): New function for deleting tty_output structures.
(create_display): New function for creating and registering display structures.
(delete_display): New function for deleting and unregistering display structures.
src/dispextern.h: Updated prototypes.
src/dispnew.c: Include frame.h before termhooks.h.
(init_display): Updated term_init call to new signature.
src/emacs.c: Include frame.h (for termhooks.h).
src/keymap.c: Ditto.
src/lread.c: Ditto.
src/xsmfns.c: Ditto.
src/process.c: Include frame.h before termhooks.h.
src/frame.c (Fwindow_system): New function.
(syms_of_frame): Initialize it.
(make_terminal_frame): Open the terminal device before creating the new frame.
Disable scrollbars here, term_init cannot do that anymore.
(Fdelete_frame): Use the new delete_frame_hook, don't do display-specific
frame deletion here. Ditto for delete_display_hook.
(Fmouse_position, Fmouse_pixel_position, Fraise_frame, Flower_frame)
(Fredirect_frame_focus): Access display hooks through the frame pointer.
src/keyboard.c: Include frame.h before termhooks.h.
(start_polling, input_polling_used, stop_polling, gobble_input): Ignore read_socket_hook.
(kbd_buffer_get_event, Fset_input_mode): Access display hooks through the frame pointer.
(read_avail_input): Loop through all display devices for and call all read_socket_hook functions. Check ttys even if read_socket_hook returned an error.
src/sysdep.c (discard_tty_input): Ignore read_socket_hook.
(stuff_char): Don't do anything if the current frame is not on a termcap display.
(request_sigio, unrequest_sigio): Ignore read_socket_hook.
(init_sys_modes): Always call narrow_foreground_group. Set up terminal modes and sigio even under X.
src/xdisp.c (message2_nolog, message3_nolog, redisplay_internal)
(set_vertical_scroll_bar, redisplay_window): Access display hooks through the frame pointer.
(echo_area_display): Don't be afraid of termcap frames during an X+tty combo session.
src/xfaces.c: Include termhooks.h.
(Ftty_supports_face_attributes_p): Use the given frame, not selected_frame.
src/xfns.c (x_set_scroll_bar_foreground, x_set_scroll_bar_background): Access display hooks through the frame pointer.
(Fx_create_frame, x_create_tip_frame): Initialize the frame's display structure.
src/xmenu.c: Include termhooks.h after frame.h.
src/xselect.c (x_own_selection, some_frame_on_display, x_get_foreign_selection)
(Fx_disown_selection_internal, Fx_get_cut_buffer_internal)
(Fx_store_cut_buffer_internal, Fx_rotate_cut_buffers_internal): Don't do anything
if the selected frame is not an X frame.
src/xterm.c (x_display_method): Removed.
(x_create_frame_display, x_delete_frame_display): New functions for handling struct display objects.
(x_term_init): Set up a new struct display object, too.
(x_delete_display): Delete the struct display corresponding to the X display.
(x_initialize): Moved hook initialization to x_create_frame_display.
src/xterm.h (x_display_method): Removed.
(struct x_display_info): Added frame_display component.
git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-44
2004-01-05 05:54:35 +00:00
|
|
|
|
(or (memq (window-system frame) options)
|
2011-09-11 04:28:07 +00:00
|
|
|
|
(and (memq 'graphic options)
|
|
|
|
|
(memq (window-system frame) '(x w32 ns)))
|
2000-11-13 15:03:35 +00:00
|
|
|
|
;; FIXME: This should be revisited to use
|
|
|
|
|
;; display-graphic-p, provided that the
|
|
|
|
|
;; color selection depends on the number
|
|
|
|
|
;; of supported colors, and all defface's
|
|
|
|
|
;; are changed to look at number of colors
|
|
|
|
|
;; instead of (type graphic) etc.
|
2011-04-30 17:57:07 +00:00
|
|
|
|
(if (null (window-system frame))
|
|
|
|
|
(memq 'tty options)
|
|
|
|
|
(or (and (memq 'motif options)
|
|
|
|
|
(featurep 'motif))
|
|
|
|
|
(and (memq 'gtk options)
|
|
|
|
|
(featurep 'gtk))
|
|
|
|
|
(and (memq 'lucid options)
|
|
|
|
|
(featurep 'x-toolkit)
|
|
|
|
|
(not (featurep 'motif))
|
|
|
|
|
(not (featurep 'gtk)))
|
|
|
|
|
(and (memq 'x-toolkit options)
|
|
|
|
|
(featurep 'x-toolkit))))))
|
2004-04-16 12:51:06 +00:00
|
|
|
|
((eq req 'min-colors)
|
|
|
|
|
(>= (display-color-cells frame) (car options)))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
((eq req 'class)
|
|
|
|
|
(memq (frame-parameter frame 'display-type) options))
|
|
|
|
|
((eq req 'background)
|
|
|
|
|
(memq (frame-parameter frame 'background-mode)
|
|
|
|
|
options))
|
2002-06-10 02:15:24 +00:00
|
|
|
|
((eq req 'supports)
|
|
|
|
|
(display-supports-face-attributes-p options frame))
|
2000-05-09 15:45:57 +00:00
|
|
|
|
(t (error "Unknown req `%S' with options `%S'"
|
1999-07-21 21:43:52 +00:00
|
|
|
|
req options)))))
|
|
|
|
|
match))
|
|
|
|
|
|
|
|
|
|
|
2014-04-05 07:25:52 +00:00
|
|
|
|
(defun face-spec-choose (spec &optional frame no-match-retval)
|
|
|
|
|
"Return the proper attributes for FRAME, out of SPEC.
|
|
|
|
|
|
|
|
|
|
If no match is found or SPEC is nil, return nil, unless NO-MATCH-RETVAL
|
|
|
|
|
is given, in which case return its value instead."
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(unless frame
|
|
|
|
|
(setq frame (selected-frame)))
|
|
|
|
|
(let ((tail spec)
|
2014-04-05 07:25:52 +00:00
|
|
|
|
result defaults match-found)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(while tail
|
2000-10-27 01:46:13 +00:00
|
|
|
|
(let* ((entry (pop tail))
|
|
|
|
|
(display (car entry))
|
2004-12-13 19:29:33 +00:00
|
|
|
|
(attrs (cdr entry))
|
|
|
|
|
thisval)
|
|
|
|
|
;; Get the attributes as actually specified by this alternative.
|
|
|
|
|
(setq thisval
|
|
|
|
|
(if (null (cdr attrs)) ;; was (listp (car attrs))
|
|
|
|
|
;; Old-style entry, the attribute list is the
|
|
|
|
|
;; first element.
|
|
|
|
|
(car attrs)
|
|
|
|
|
attrs))
|
|
|
|
|
|
|
|
|
|
;; If the condition is `default', that sets the default
|
|
|
|
|
;; for following conditions.
|
|
|
|
|
(if (eq display 'default)
|
|
|
|
|
(setq defaults thisval)
|
|
|
|
|
;; Otherwise, if it matches, use it.
|
|
|
|
|
(when (face-spec-set-match-display display frame)
|
2014-04-05 07:25:52 +00:00
|
|
|
|
(setq result thisval
|
|
|
|
|
tail nil
|
|
|
|
|
match-found t)))))
|
|
|
|
|
;; If defaults have been found, it's safe to just append those to the result
|
|
|
|
|
;; list (which at this point will be either nil or contain actual specs) and
|
|
|
|
|
;; return it to the caller. Since there will most definitely be something to
|
|
|
|
|
;; return in this case, there's no need to know/check if a match was found.
|
|
|
|
|
(if defaults
|
|
|
|
|
(append result defaults)
|
|
|
|
|
(if match-found
|
|
|
|
|
result
|
|
|
|
|
no-match-retval))))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defun face-spec-reset-face (face &optional frame)
|
|
|
|
|
"Reset all attributes of FACE on FRAME to unspecified."
|
2012-03-04 15:03:51 +00:00
|
|
|
|
(apply 'set-face-attribute face frame
|
|
|
|
|
(if (eq face 'default)
|
|
|
|
|
;; For the default face, avoid making any attribute
|
2012-03-12 22:35:55 +00:00
|
|
|
|
;; unspecified. Instead, set attributes to default values
|
2012-03-04 15:03:51 +00:00
|
|
|
|
;; (see also realize_default_face in xfaces.c).
|
|
|
|
|
(append
|
|
|
|
|
'(:underline nil :overline nil :strike-through nil
|
|
|
|
|
:box nil :inverse-video nil :stipple nil :inherit nil)
|
2012-03-18 14:18:01 +00:00
|
|
|
|
;; `display-graphic-p' is unavailable when running
|
|
|
|
|
;; temacs, prior to loading frame.el.
|
2013-12-21 15:31:09 +00:00
|
|
|
|
(when (fboundp 'display-graphic-p)
|
|
|
|
|
(unless (display-graphic-p frame)
|
|
|
|
|
`(:family "default" :foundry "default" :width normal
|
|
|
|
|
:height 1 :weight normal :slant normal
|
|
|
|
|
:foreground ,(if (frame-parameter nil 'reverse)
|
|
|
|
|
"unspecified-bg"
|
|
|
|
|
"unspecified-fg")
|
|
|
|
|
:background ,(if (frame-parameter nil 'reverse)
|
|
|
|
|
"unspecified-fg"
|
|
|
|
|
"unspecified-bg")))))
|
2012-03-04 15:03:51 +00:00
|
|
|
|
;; For all other faces, unspecify all attributes.
|
|
|
|
|
(apply 'append
|
|
|
|
|
(mapcar (lambda (x) (list (car x) 'unspecified))
|
|
|
|
|
face-attribute-name-alist)))))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
2012-11-25 04:50:20 +00:00
|
|
|
|
(defun face-spec-set (face spec &optional spec-type)
|
|
|
|
|
"Set the face spec SPEC for FACE.
|
|
|
|
|
See `defface' for the format of SPEC.
|
|
|
|
|
|
2013-12-21 15:31:09 +00:00
|
|
|
|
The appearance of each face is controlled by its specs (set via
|
|
|
|
|
this function), and by the internal frame-specific face
|
|
|
|
|
attributes (set via `set-face-attribute').
|
2013-12-21 13:44:20 +00:00
|
|
|
|
|
2013-12-21 15:31:09 +00:00
|
|
|
|
This function also defines FACE as a valid face name if it is not
|
|
|
|
|
already one, and (re)calculates its attributes on existing
|
|
|
|
|
frames.
|
2012-11-25 04:50:20 +00:00
|
|
|
|
|
|
|
|
|
The argument SPEC-TYPE determines which spec to set:
|
|
|
|
|
nil or `face-override-spec' means the override spec (which is
|
|
|
|
|
usually what you want if calling this function outside of
|
|
|
|
|
Custom code);
|
|
|
|
|
`customized-face' or `saved-face' means the customized spec or
|
|
|
|
|
the saved custom spec;
|
|
|
|
|
`face-defface-spec' means the default spec
|
|
|
|
|
(usually set only via `defface');
|
|
|
|
|
`reset' means to ignore SPEC, but clear the `customized-face'
|
|
|
|
|
and `face-override-spec' specs;
|
|
|
|
|
Any other value means not to set any spec, but to run the
|
2013-12-21 13:44:20 +00:00
|
|
|
|
function for its other effects."
|
2012-11-25 04:50:20 +00:00
|
|
|
|
(if (get face 'face-alias)
|
|
|
|
|
(setq face (get face 'face-alias)))
|
|
|
|
|
;; Save SPEC to the relevant symbol property.
|
|
|
|
|
(unless spec-type
|
|
|
|
|
(setq spec-type 'face-override-spec))
|
|
|
|
|
(if (memq spec-type '(face-defface-spec face-override-spec
|
|
|
|
|
customized-face saved-face))
|
|
|
|
|
(put face spec-type spec))
|
|
|
|
|
(if (memq spec-type '(reset saved-face))
|
|
|
|
|
(put face 'customized-face nil))
|
|
|
|
|
;; Setting the face spec via Custom empties out any override spec,
|
2012-12-07 02:37:20 +00:00
|
|
|
|
;; similar to how setting a variable via Custom changes its values.
|
2012-11-25 04:50:20 +00:00
|
|
|
|
(if (memq spec-type '(customized-face saved-face reset))
|
|
|
|
|
(put face 'face-override-spec nil))
|
|
|
|
|
;; If we reset the face based on its custom spec, it is unmodified
|
|
|
|
|
;; as far as Custom is concerned.
|
|
|
|
|
(unless (eq face 'face-override-spec)
|
|
|
|
|
(put face 'face-modified nil))
|
2013-12-21 15:31:09 +00:00
|
|
|
|
;; Initialize the face if it does not exist, then recalculate.
|
|
|
|
|
(make-empty-face face)
|
|
|
|
|
(dolist (frame (frame-list))
|
|
|
|
|
(face-spec-recalc face frame)))
|
2007-12-30 03:32:34 +00:00
|
|
|
|
|
|
|
|
|
(defun face-spec-recalc (face frame)
|
|
|
|
|
"Reset the face attributes of FACE on FRAME according to its specs.
|
2014-04-28 19:14:17 +00:00
|
|
|
|
The following sources are applied in this order:
|
|
|
|
|
|
|
|
|
|
face reset to default values if it's the default face, otherwise set
|
2014-04-30 18:01:36 +00:00
|
|
|
|
to unspecified (through `face-spec-reset-face')
|
2014-04-05 07:15:11 +00:00
|
|
|
|
|
|
|
|
|
|
(theme and user customization)
|
2014-04-30 18:01:36 +00:00
|
|
|
|
or: if none of the above exist, and none match the current frame or
|
|
|
|
|
inherited from the defface spec instead of overwriting it
|
2014-04-28 19:14:17 +00:00
|
|
|
|
entirely, the following is applied instead:
|
2014-04-05 07:15:11 +00:00
|
|
|
|
(defface default spec)
|
2014-04-28 19:14:17 +00:00
|
|
|
|
(X resources (if applicable))
|
2014-04-05 07:15:11 +00:00
|
|
|
|
|
|
|
|
|
|
defface override spec"
|
2012-11-25 04:50:20 +00:00
|
|
|
|
(while (get face 'face-alias)
|
|
|
|
|
(setq face (get face 'face-alias)))
|
2007-12-30 03:32:34 +00:00
|
|
|
|
(face-spec-reset-face face frame)
|
2012-11-25 04:50:20 +00:00
|
|
|
|
;; If FACE is customized or themed, set the custom spec from
|
2013-12-22 13:40:44 +00:00
|
|
|
|
;; `theme-face' records.
|
|
|
|
|
(let ((theme-faces (get face 'theme-face))
|
2014-04-05 07:25:52 +00:00
|
|
|
|
(no-match-found 0)
|
2013-12-22 13:40:44 +00:00
|
|
|
|
spec theme-face-applied)
|
2012-11-25 04:50:20 +00:00
|
|
|
|
(if theme-faces
|
2013-12-22 13:40:44 +00:00
|
|
|
|
(dolist (elt (reverse theme-faces))
|
2014-04-05 07:25:52 +00:00
|
|
|
|
(setq spec (face-spec-choose (cadr elt) frame no-match-found))
|
|
|
|
|
(unless (eq spec no-match-found)
|
2013-12-22 13:40:44 +00:00
|
|
|
|
(face-spec-set-2 face frame spec)
|
|
|
|
|
(setq theme-face-applied t))))
|
|
|
|
|
;; If there was a spec applicable to FRAME, that overrides the
|
|
|
|
|
;; defface spec entirely (rather than inheriting from it). If
|
2014-04-28 19:14:17 +00:00
|
|
|
|
;; there was no spec applicable to FRAME, apply the defface spec
|
|
|
|
|
;; as well as any applicable X resources.
|
2013-12-22 13:40:44 +00:00
|
|
|
|
(unless theme-face-applied
|
|
|
|
|
(setq spec (face-spec-choose (face-default-spec face) frame))
|
2014-04-28 19:14:17 +00:00
|
|
|
|
(face-spec-set-2 face frame spec)
|
|
|
|
|
(make-face-x-resource-internal face frame))
|
2013-12-22 13:40:44 +00:00
|
|
|
|
(setq spec (face-spec-choose (get face 'face-override-spec) frame))
|
2014-04-05 07:15:11 +00:00
|
|
|
|
(face-spec-set-2 face frame spec)))
|
2007-12-30 03:32:34 +00:00
|
|
|
|
|
|
|
|
|
(defun face-spec-set-2 (face frame spec)
|
|
|
|
|
"Set the face attributes of FACE on FRAME according to SPEC."
|
2013-12-22 13:40:44 +00:00
|
|
|
|
(let (attrs)
|
2008-10-17 17:14:31 +00:00
|
|
|
|
(while spec
|
|
|
|
|
(when (assq (car spec) face-x-resources)
|
|
|
|
|
(push (car spec) attrs)
|
|
|
|
|
(push (cadr spec) attrs))
|
|
|
|
|
(setq spec (cddr spec)))
|
|
|
|
|
(apply 'set-face-attribute face frame (nreverse attrs))))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
(defun face-attr-match-p (face attrs &optional frame)
|
2000-08-20 12:02:24 +00:00
|
|
|
|
"Return t if attributes of FACE match values in plist ATTRS.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
Optional parameter FRAME is the frame whose definition of FACE
|
|
|
|
|
is used. If nil or omitted, use the selected frame."
|
|
|
|
|
(unless frame
|
|
|
|
|
(setq frame (selected-frame)))
|
2011-02-08 04:10:15 +00:00
|
|
|
|
(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)))
|
2010-10-14 03:55:18 +00:00
|
|
|
|
(while (and match list)
|
|
|
|
|
(let* ((attr (caar list))
|
2000-08-20 12:02:24 +00:00
|
|
|
|
(specified-value
|
2011-02-08 04:10:15 +00:00
|
|
|
|
(if (plist-member plist attr)
|
|
|
|
|
(plist-get plist attr)
|
2000-08-20 12:02:24 +00:00
|
|
|
|
'unspecified))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(value-now (face-attribute face attr frame)))
|
2000-08-20 12:02:24 +00:00
|
|
|
|
(setq match (equal specified-value value-now))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(setq list (cdr list))))
|
|
|
|
|
match))
|
|
|
|
|
|
2010-10-14 03:55:18 +00:00
|
|
|
|
(defsubst face-spec-match-p (face spec &optional frame)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
"Return t if FACE, on FRAME, matches what SPEC says it should look like."
|
|
|
|
|
(face-attr-match-p face (face-spec-choose spec frame) frame))
|
|
|
|
|
|
2000-10-24 01:17:23 +00:00
|
|
|
|
(defsubst face-default-spec (face)
|
2000-10-23 05:32:59 +00:00
|
|
|
|
"Return the default face-spec for FACE, ignoring any user customization.
|
|
|
|
|
If there is no default for FACE, return nil."
|
|
|
|
|
(get face 'face-defface-spec))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
2000-10-24 01:17:23 +00:00
|
|
|
|
(defsubst face-user-default-spec (face)
|
|
|
|
|
"Return the user's customized face-spec for FACE, or the default if none.
|
2001-04-25 15:22:53 +00:00
|
|
|
|
If there is neither a user setting nor a default for FACE, return nil."
|
2005-06-21 15:59:12 +00:00
|
|
|
|
(or (get face 'customized-face)
|
|
|
|
|
(get face 'saved-face)
|
2000-10-24 01:17:23 +00:00
|
|
|
|
(face-default-spec face)))
|
|
|
|
|
|
Changes for automatic remapping of X colors on terminal frames:
* term/pc-win.el (msdos-setup-initial-frame): New function, run by
term-setup-hook. Call msdos-remember-default-colors and
msdos-handle-reverse-video.
(msdos-face-setup): Parts of code moved to
msdos-setup-initial-frame.
(msdos-handle-reverse-video): New function, modeled after
x-handle-reverse-video.
(make-msdos-frame): Don't use initial-frame-alist and
default-frame-alist. Call msdos-handle-reverse-video.
(msdos-color-aliases): Remove.
(msdos-color-translate, msdos-approximate-color): Remove.
(msdos-color-values): Use 16-bit RGB values. RGB values updated
for better approximation of X colors.
(msdos-face-setup): Call tty-color-clear. Remove code that sets
up tty-color-alist (it is now on startup.el).
(x-display-color-p, x-color-defined-p, x-color-values,
x-defined-colors, face-color-supported-p, face-color-gray-p):
Remove.
* facemenu.el (facemenu-read-color, list-colors-display): Use
defined-colors for all frame types.
(facemenu-color-equal): Use color-values for all frame types.
* faces.el (read-face-attribute): For :foreground and :background
attributes and frames on character terminals, translate the color
to the closest supported one before looking it up in the list of
valid values.
(face-valid-attribute-values): Call defined-colors for all types
of frames.
(defined-colors, color-defined-p, color-values, display-color-p):
New finctions.
(x-defined-colors, x-color-defined-p, x-color-values,
x-display-color-p): Aliases for the above.
* startup.el (command-line): Register terminal colors for frame
types other than x and w32, but only if the terminal supports
colors. Call tty-color-define instead of face-register-tty-color.
* term/x-win.el (xw-defined-colors): Renamed from
x-defined-colors.
* term/w32-win.el (xw-defined-colors): Likewise.
* term/tty-colors.el: New file.
* loadup.el: Load term/tty-colors.
1999-12-06 17:55:00 +00:00
|
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
;;; Frame-type independent color support.
|
|
|
|
|
;;; We keep the old x-* names as aliases for back-compatibility.
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
|
|
|
|
|
(defun defined-colors (&optional frame)
|
|
|
|
|
"Return a list of colors supported for a particular frame.
|
|
|
|
|
The argument FRAME specifies which frame to try.
|
|
|
|
|
The value may be different for frames on different display types.
|
2006-06-05 17:21:37 +00:00
|
|
|
|
If FRAME doesn't support colors, the value is nil.
|
|
|
|
|
If FRAME is nil, that stands for the selected frame."
|
2008-07-27 18:24:48 +00:00
|
|
|
|
(if (memq (framep (or frame (selected-frame))) '(x w32 ns))
|
Changes for automatic remapping of X colors on terminal frames:
* term/pc-win.el (msdos-setup-initial-frame): New function, run by
term-setup-hook. Call msdos-remember-default-colors and
msdos-handle-reverse-video.
(msdos-face-setup): Parts of code moved to
msdos-setup-initial-frame.
(msdos-handle-reverse-video): New function, modeled after
x-handle-reverse-video.
(make-msdos-frame): Don't use initial-frame-alist and
default-frame-alist. Call msdos-handle-reverse-video.
(msdos-color-aliases): Remove.
(msdos-color-translate, msdos-approximate-color): Remove.
(msdos-color-values): Use 16-bit RGB values. RGB values updated
for better approximation of X colors.
(msdos-face-setup): Call tty-color-clear. Remove code that sets
up tty-color-alist (it is now on startup.el).
(x-display-color-p, x-color-defined-p, x-color-values,
x-defined-colors, face-color-supported-p, face-color-gray-p):
Remove.
* facemenu.el (facemenu-read-color, list-colors-display): Use
defined-colors for all frame types.
(facemenu-color-equal): Use color-values for all frame types.
* faces.el (read-face-attribute): For :foreground and :background
attributes and frames on character terminals, translate the color
to the closest supported one before looking it up in the list of
valid values.
(face-valid-attribute-values): Call defined-colors for all types
of frames.
(defined-colors, color-defined-p, color-values, display-color-p):
New finctions.
(x-defined-colors, x-color-defined-p, x-color-values,
x-display-color-p): Aliases for the above.
* startup.el (command-line): Register terminal colors for frame
types other than x and w32, but only if the terminal supports
colors. Call tty-color-define instead of face-register-tty-color.
* term/x-win.el (xw-defined-colors): Renamed from
x-defined-colors.
* term/w32-win.el (xw-defined-colors): Likewise.
* term/tty-colors.el: New file.
* loadup.el: Load term/tty-colors.
1999-12-06 17:55:00 +00:00
|
|
|
|
(xw-defined-colors frame)
|
2000-01-02 14:12:09 +00:00
|
|
|
|
(mapcar 'car (tty-color-alist frame))))
|
Changes for automatic remapping of X colors on terminal frames:
* term/pc-win.el (msdos-setup-initial-frame): New function, run by
term-setup-hook. Call msdos-remember-default-colors and
msdos-handle-reverse-video.
(msdos-face-setup): Parts of code moved to
msdos-setup-initial-frame.
(msdos-handle-reverse-video): New function, modeled after
x-handle-reverse-video.
(make-msdos-frame): Don't use initial-frame-alist and
default-frame-alist. Call msdos-handle-reverse-video.
(msdos-color-aliases): Remove.
(msdos-color-translate, msdos-approximate-color): Remove.
(msdos-color-values): Use 16-bit RGB values. RGB values updated
for better approximation of X colors.
(msdos-face-setup): Call tty-color-clear. Remove code that sets
up tty-color-alist (it is now on startup.el).
(x-display-color-p, x-color-defined-p, x-color-values,
x-defined-colors, face-color-supported-p, face-color-gray-p):
Remove.
* facemenu.el (facemenu-read-color, list-colors-display): Use
defined-colors for all frame types.
(facemenu-color-equal): Use color-values for all frame types.
* faces.el (read-face-attribute): For :foreground and :background
attributes and frames on character terminals, translate the color
to the closest supported one before looking it up in the list of
valid values.
(face-valid-attribute-values): Call defined-colors for all types
of frames.
(defined-colors, color-defined-p, color-values, display-color-p):
New finctions.
(x-defined-colors, x-color-defined-p, x-color-values,
x-display-color-p): Aliases for the above.
* startup.el (command-line): Register terminal colors for frame
types other than x and w32, but only if the terminal supports
colors. Call tty-color-define instead of face-register-tty-color.
* term/x-win.el (xw-defined-colors): Renamed from
x-defined-colors.
* term/w32-win.el (xw-defined-colors): Likewise.
* term/tty-colors.el: New file.
* loadup.el: Load term/tty-colors.
1999-12-06 17:55:00 +00:00
|
|
|
|
(defalias 'x-defined-colors 'defined-colors)
|
|
|
|
|
|
2008-06-12 03:56:20 +00:00
|
|
|
|
(declare-function xw-color-defined-p "xfns.c" (color &optional frame))
|
|
|
|
|
|
Changes for automatic remapping of X colors on terminal frames:
* term/pc-win.el (msdos-setup-initial-frame): New function, run by
term-setup-hook. Call msdos-remember-default-colors and
msdos-handle-reverse-video.
(msdos-face-setup): Parts of code moved to
msdos-setup-initial-frame.
(msdos-handle-reverse-video): New function, modeled after
x-handle-reverse-video.
(make-msdos-frame): Don't use initial-frame-alist and
default-frame-alist. Call msdos-handle-reverse-video.
(msdos-color-aliases): Remove.
(msdos-color-translate, msdos-approximate-color): Remove.
(msdos-color-values): Use 16-bit RGB values. RGB values updated
for better approximation of X colors.
(msdos-face-setup): Call tty-color-clear. Remove code that sets
up tty-color-alist (it is now on startup.el).
(x-display-color-p, x-color-defined-p, x-color-values,
x-defined-colors, face-color-supported-p, face-color-gray-p):
Remove.
* facemenu.el (facemenu-read-color, list-colors-display): Use
defined-colors for all frame types.
(facemenu-color-equal): Use color-values for all frame types.
* faces.el (read-face-attribute): For :foreground and :background
attributes and frames on character terminals, translate the color
to the closest supported one before looking it up in the list of
valid values.
(face-valid-attribute-values): Call defined-colors for all types
of frames.
(defined-colors, color-defined-p, color-values, display-color-p):
New finctions.
(x-defined-colors, x-color-defined-p, x-color-values,
x-display-color-p): Aliases for the above.
* startup.el (command-line): Register terminal colors for frame
types other than x and w32, but only if the terminal supports
colors. Call tty-color-define instead of face-register-tty-color.
* term/x-win.el (xw-defined-colors): Renamed from
x-defined-colors.
* term/w32-win.el (xw-defined-colors): Likewise.
* term/tty-colors.el: New file.
* loadup.el: Load term/tty-colors.
1999-12-06 17:55:00 +00:00
|
|
|
|
(defun color-defined-p (color &optional frame)
|
2012-11-23 07:56:27 +00:00
|
|
|
|
"Return non-nil if COLOR is supported on frame FRAME.
|
|
|
|
|
COLOR should be a string naming a color (e.g. \"white\"), or a
|
|
|
|
|
string specifying a color's RGB components (e.g. \"#ff12ec\"), or
|
|
|
|
|
the symbol `unspecified'.
|
|
|
|
|
|
|
|
|
|
This function returns nil if COLOR is the symbol `unspecified',
|
|
|
|
|
or one of the strings \"unspecified-fg\" or \"unspecified-bg\".
|
|
|
|
|
|
|
|
|
|
If FRAME is omitted or nil, use the selected frame."
|
|
|
|
|
(unless (member color '(unspecified "unspecified-bg" "unspecified-fg"))
|
2008-07-27 18:24:48 +00:00
|
|
|
|
(if (member (framep (or frame (selected-frame))) '(x w32 ns))
|
Changes for automatic remapping of X colors on terminal frames:
* term/pc-win.el (msdos-setup-initial-frame): New function, run by
term-setup-hook. Call msdos-remember-default-colors and
msdos-handle-reverse-video.
(msdos-face-setup): Parts of code moved to
msdos-setup-initial-frame.
(msdos-handle-reverse-video): New function, modeled after
x-handle-reverse-video.
(make-msdos-frame): Don't use initial-frame-alist and
default-frame-alist. Call msdos-handle-reverse-video.
(msdos-color-aliases): Remove.
(msdos-color-translate, msdos-approximate-color): Remove.
(msdos-color-values): Use 16-bit RGB values. RGB values updated
for better approximation of X colors.
(msdos-face-setup): Call tty-color-clear. Remove code that sets
up tty-color-alist (it is now on startup.el).
(x-display-color-p, x-color-defined-p, x-color-values,
x-defined-colors, face-color-supported-p, face-color-gray-p):
Remove.
* facemenu.el (facemenu-read-color, list-colors-display): Use
defined-colors for all frame types.
(facemenu-color-equal): Use color-values for all frame types.
* faces.el (read-face-attribute): For :foreground and :background
attributes and frames on character terminals, translate the color
to the closest supported one before looking it up in the list of
valid values.
(face-valid-attribute-values): Call defined-colors for all types
of frames.
(defined-colors, color-defined-p, color-values, display-color-p):
New finctions.
(x-defined-colors, x-color-defined-p, x-color-values,
x-display-color-p): Aliases for the above.
* startup.el (command-line): Register terminal colors for frame
types other than x and w32, but only if the terminal supports
colors. Call tty-color-define instead of face-register-tty-color.
* term/x-win.el (xw-defined-colors): Renamed from
x-defined-colors.
* term/w32-win.el (xw-defined-colors): Likewise.
* term/tty-colors.el: New file.
* loadup.el: Load term/tty-colors.
1999-12-06 17:55:00 +00:00
|
|
|
|
(xw-color-defined-p color frame)
|
2000-01-02 14:12:09 +00:00
|
|
|
|
(numberp (tty-color-translate color frame)))))
|
Changes for automatic remapping of X colors on terminal frames:
* term/pc-win.el (msdos-setup-initial-frame): New function, run by
term-setup-hook. Call msdos-remember-default-colors and
msdos-handle-reverse-video.
(msdos-face-setup): Parts of code moved to
msdos-setup-initial-frame.
(msdos-handle-reverse-video): New function, modeled after
x-handle-reverse-video.
(make-msdos-frame): Don't use initial-frame-alist and
default-frame-alist. Call msdos-handle-reverse-video.
(msdos-color-aliases): Remove.
(msdos-color-translate, msdos-approximate-color): Remove.
(msdos-color-values): Use 16-bit RGB values. RGB values updated
for better approximation of X colors.
(msdos-face-setup): Call tty-color-clear. Remove code that sets
up tty-color-alist (it is now on startup.el).
(x-display-color-p, x-color-defined-p, x-color-values,
x-defined-colors, face-color-supported-p, face-color-gray-p):
Remove.
* facemenu.el (facemenu-read-color, list-colors-display): Use
defined-colors for all frame types.
(facemenu-color-equal): Use color-values for all frame types.
* faces.el (read-face-attribute): For :foreground and :background
attributes and frames on character terminals, translate the color
to the closest supported one before looking it up in the list of
valid values.
(face-valid-attribute-values): Call defined-colors for all types
of frames.
(defined-colors, color-defined-p, color-values, display-color-p):
New finctions.
(x-defined-colors, x-color-defined-p, x-color-values,
x-display-color-p): Aliases for the above.
* startup.el (command-line): Register terminal colors for frame
types other than x and w32, but only if the terminal supports
colors. Call tty-color-define instead of face-register-tty-color.
* term/x-win.el (xw-defined-colors): Renamed from
x-defined-colors.
* term/w32-win.el (xw-defined-colors): Likewise.
* term/tty-colors.el: New file.
* loadup.el: Load term/tty-colors.
1999-12-06 17:55:00 +00:00
|
|
|
|
(defalias 'x-color-defined-p 'color-defined-p)
|
|
|
|
|
|
2008-06-12 03:56:20 +00:00
|
|
|
|
(declare-function xw-color-values "xfns.c" (color &optional frame))
|
|
|
|
|
|
Changes for automatic remapping of X colors on terminal frames:
* term/pc-win.el (msdos-setup-initial-frame): New function, run by
term-setup-hook. Call msdos-remember-default-colors and
msdos-handle-reverse-video.
(msdos-face-setup): Parts of code moved to
msdos-setup-initial-frame.
(msdos-handle-reverse-video): New function, modeled after
x-handle-reverse-video.
(make-msdos-frame): Don't use initial-frame-alist and
default-frame-alist. Call msdos-handle-reverse-video.
(msdos-color-aliases): Remove.
(msdos-color-translate, msdos-approximate-color): Remove.
(msdos-color-values): Use 16-bit RGB values. RGB values updated
for better approximation of X colors.
(msdos-face-setup): Call tty-color-clear. Remove code that sets
up tty-color-alist (it is now on startup.el).
(x-display-color-p, x-color-defined-p, x-color-values,
x-defined-colors, face-color-supported-p, face-color-gray-p):
Remove.
* facemenu.el (facemenu-read-color, list-colors-display): Use
defined-colors for all frame types.
(facemenu-color-equal): Use color-values for all frame types.
* faces.el (read-face-attribute): For :foreground and :background
attributes and frames on character terminals, translate the color
to the closest supported one before looking it up in the list of
valid values.
(face-valid-attribute-values): Call defined-colors for all types
of frames.
(defined-colors, color-defined-p, color-values, display-color-p):
New finctions.
(x-defined-colors, x-color-defined-p, x-color-values,
x-display-color-p): Aliases for the above.
* startup.el (command-line): Register terminal colors for frame
types other than x and w32, but only if the terminal supports
colors. Call tty-color-define instead of face-register-tty-color.
* term/x-win.el (xw-defined-colors): Renamed from
x-defined-colors.
* term/w32-win.el (xw-defined-colors): Likewise.
* term/tty-colors.el: New file.
* loadup.el: Load term/tty-colors.
1999-12-06 17:55:00 +00:00
|
|
|
|
(defun color-values (color &optional frame)
|
|
|
|
|
"Return a description of the color named COLOR on frame FRAME.
|
2011-02-21 06:03:36 +00:00
|
|
|
|
COLOR should be a string naming a color (e.g. \"white\"), or a
|
|
|
|
|
string specifying a color's RGB components (e.g. \"#ff12ec\").
|
|
|
|
|
|
|
|
|
|
Return a list of three integers, (RED GREEN BLUE), each between 0
|
|
|
|
|
and either 65280 or 65535 (the maximum depends on the system).
|
|
|
|
|
Use `color-name-to-rgb' if you want RGB floating-point values
|
|
|
|
|
normalized to 1.0.
|
|
|
|
|
|
Changes for automatic remapping of X colors on terminal frames:
* term/pc-win.el (msdos-setup-initial-frame): New function, run by
term-setup-hook. Call msdos-remember-default-colors and
msdos-handle-reverse-video.
(msdos-face-setup): Parts of code moved to
msdos-setup-initial-frame.
(msdos-handle-reverse-video): New function, modeled after
x-handle-reverse-video.
(make-msdos-frame): Don't use initial-frame-alist and
default-frame-alist. Call msdos-handle-reverse-video.
(msdos-color-aliases): Remove.
(msdos-color-translate, msdos-approximate-color): Remove.
(msdos-color-values): Use 16-bit RGB values. RGB values updated
for better approximation of X colors.
(msdos-face-setup): Call tty-color-clear. Remove code that sets
up tty-color-alist (it is now on startup.el).
(x-display-color-p, x-color-defined-p, x-color-values,
x-defined-colors, face-color-supported-p, face-color-gray-p):
Remove.
* facemenu.el (facemenu-read-color, list-colors-display): Use
defined-colors for all frame types.
(facemenu-color-equal): Use color-values for all frame types.
* faces.el (read-face-attribute): For :foreground and :background
attributes and frames on character terminals, translate the color
to the closest supported one before looking it up in the list of
valid values.
(face-valid-attribute-values): Call defined-colors for all types
of frames.
(defined-colors, color-defined-p, color-values, display-color-p):
New finctions.
(x-defined-colors, x-color-defined-p, x-color-values,
x-display-color-p): Aliases for the above.
* startup.el (command-line): Register terminal colors for frame
types other than x and w32, but only if the terminal supports
colors. Call tty-color-define instead of face-register-tty-color.
* term/x-win.el (xw-defined-colors): Renamed from
x-defined-colors.
* term/w32-win.el (xw-defined-colors): Likewise.
* term/tty-colors.el: New file.
* loadup.el: Load term/tty-colors.
1999-12-06 17:55:00 +00:00
|
|
|
|
If FRAME is omitted or nil, use the selected frame.
|
|
|
|
|
If FRAME cannot display COLOR, the value is nil.
|
2011-02-21 06:03:36 +00:00
|
|
|
|
|
|
|
|
|
COLOR can also be the symbol `unspecified' or one of the strings
|
|
|
|
|
\"unspecified-fg\" or \"unspecified-bg\", in which case the
|
|
|
|
|
return value is nil."
|
|
|
|
|
(cond
|
|
|
|
|
((member color '(unspecified "unspecified-fg" "unspecified-bg"))
|
|
|
|
|
nil)
|
|
|
|
|
((memq (framep (or frame (selected-frame))) '(x w32 ns))
|
|
|
|
|
(xw-color-values color frame))
|
|
|
|
|
(t
|
|
|
|
|
(tty-color-values color frame))))
|
|
|
|
|
|
Changes for automatic remapping of X colors on terminal frames:
* term/pc-win.el (msdos-setup-initial-frame): New function, run by
term-setup-hook. Call msdos-remember-default-colors and
msdos-handle-reverse-video.
(msdos-face-setup): Parts of code moved to
msdos-setup-initial-frame.
(msdos-handle-reverse-video): New function, modeled after
x-handle-reverse-video.
(make-msdos-frame): Don't use initial-frame-alist and
default-frame-alist. Call msdos-handle-reverse-video.
(msdos-color-aliases): Remove.
(msdos-color-translate, msdos-approximate-color): Remove.
(msdos-color-values): Use 16-bit RGB values. RGB values updated
for better approximation of X colors.
(msdos-face-setup): Call tty-color-clear. Remove code that sets
up tty-color-alist (it is now on startup.el).
(x-display-color-p, x-color-defined-p, x-color-values,
x-defined-colors, face-color-supported-p, face-color-gray-p):
Remove.
* facemenu.el (facemenu-read-color, list-colors-display): Use
defined-colors for all frame types.
(facemenu-color-equal): Use color-values for all frame types.
* faces.el (read-face-attribute): For :foreground and :background
attributes and frames on character terminals, translate the color
to the closest supported one before looking it up in the list of
valid values.
(face-valid-attribute-values): Call defined-colors for all types
of frames.
(defined-colors, color-defined-p, color-values, display-color-p):
New finctions.
(x-defined-colors, x-color-defined-p, x-color-values,
x-display-color-p): Aliases for the above.
* startup.el (command-line): Register terminal colors for frame
types other than x and w32, but only if the terminal supports
colors. Call tty-color-define instead of face-register-tty-color.
* term/x-win.el (xw-defined-colors): Renamed from
x-defined-colors.
* term/w32-win.el (xw-defined-colors): Likewise.
* term/tty-colors.el: New file.
* loadup.el: Load term/tty-colors.
1999-12-06 17:55:00 +00:00
|
|
|
|
(defalias 'x-color-values 'color-values)
|
|
|
|
|
|
2008-06-12 03:56:20 +00:00
|
|
|
|
(declare-function xw-display-color-p "xfns.c" (&optional terminal))
|
|
|
|
|
|
Changes for automatic remapping of X colors on terminal frames:
* term/pc-win.el (msdos-setup-initial-frame): New function, run by
term-setup-hook. Call msdos-remember-default-colors and
msdos-handle-reverse-video.
(msdos-face-setup): Parts of code moved to
msdos-setup-initial-frame.
(msdos-handle-reverse-video): New function, modeled after
x-handle-reverse-video.
(make-msdos-frame): Don't use initial-frame-alist and
default-frame-alist. Call msdos-handle-reverse-video.
(msdos-color-aliases): Remove.
(msdos-color-translate, msdos-approximate-color): Remove.
(msdos-color-values): Use 16-bit RGB values. RGB values updated
for better approximation of X colors.
(msdos-face-setup): Call tty-color-clear. Remove code that sets
up tty-color-alist (it is now on startup.el).
(x-display-color-p, x-color-defined-p, x-color-values,
x-defined-colors, face-color-supported-p, face-color-gray-p):
Remove.
* facemenu.el (facemenu-read-color, list-colors-display): Use
defined-colors for all frame types.
(facemenu-color-equal): Use color-values for all frame types.
* faces.el (read-face-attribute): For :foreground and :background
attributes and frames on character terminals, translate the color
to the closest supported one before looking it up in the list of
valid values.
(face-valid-attribute-values): Call defined-colors for all types
of frames.
(defined-colors, color-defined-p, color-values, display-color-p):
New finctions.
(x-defined-colors, x-color-defined-p, x-color-values,
x-display-color-p): Aliases for the above.
* startup.el (command-line): Register terminal colors for frame
types other than x and w32, but only if the terminal supports
colors. Call tty-color-define instead of face-register-tty-color.
* term/x-win.el (xw-defined-colors): Renamed from
x-defined-colors.
* term/w32-win.el (xw-defined-colors): Likewise.
* term/tty-colors.el: New file.
* loadup.el: Load term/tty-colors.
1999-12-06 17:55:00 +00:00
|
|
|
|
(defun display-color-p (&optional display)
|
|
|
|
|
"Return t if DISPLAY supports color.
|
|
|
|
|
The optional argument DISPLAY specifies which display to ask about.
|
|
|
|
|
DISPLAY should be either a frame or a display name (a string).
|
|
|
|
|
If omitted or nil, that stands for the selected frame's display."
|
2008-07-27 18:24:48 +00:00
|
|
|
|
(if (memq (framep-on-display display) '(x w32 ns))
|
2000-02-02 11:38:16 +00:00
|
|
|
|
(xw-display-color-p display)
|
|
|
|
|
(tty-display-color-p display)))
|
Changes for automatic remapping of X colors on terminal frames:
* term/pc-win.el (msdos-setup-initial-frame): New function, run by
term-setup-hook. Call msdos-remember-default-colors and
msdos-handle-reverse-video.
(msdos-face-setup): Parts of code moved to
msdos-setup-initial-frame.
(msdos-handle-reverse-video): New function, modeled after
x-handle-reverse-video.
(make-msdos-frame): Don't use initial-frame-alist and
default-frame-alist. Call msdos-handle-reverse-video.
(msdos-color-aliases): Remove.
(msdos-color-translate, msdos-approximate-color): Remove.
(msdos-color-values): Use 16-bit RGB values. RGB values updated
for better approximation of X colors.
(msdos-face-setup): Call tty-color-clear. Remove code that sets
up tty-color-alist (it is now on startup.el).
(x-display-color-p, x-color-defined-p, x-color-values,
x-defined-colors, face-color-supported-p, face-color-gray-p):
Remove.
* facemenu.el (facemenu-read-color, list-colors-display): Use
defined-colors for all frame types.
(facemenu-color-equal): Use color-values for all frame types.
* faces.el (read-face-attribute): For :foreground and :background
attributes and frames on character terminals, translate the color
to the closest supported one before looking it up in the list of
valid values.
(face-valid-attribute-values): Call defined-colors for all types
of frames.
(defined-colors, color-defined-p, color-values, display-color-p):
New finctions.
(x-defined-colors, x-color-defined-p, x-color-values,
x-display-color-p): Aliases for the above.
* startup.el (command-line): Register terminal colors for frame
types other than x and w32, but only if the terminal supports
colors. Call tty-color-define instead of face-register-tty-color.
* term/x-win.el (xw-defined-colors): Renamed from
x-defined-colors.
* term/w32-win.el (xw-defined-colors): Likewise.
* term/tty-colors.el: New file.
* loadup.el: Load term/tty-colors.
1999-12-06 17:55:00 +00:00
|
|
|
|
(defalias 'x-display-color-p 'display-color-p)
|
|
|
|
|
|
2008-06-12 03:56:20 +00:00
|
|
|
|
(declare-function x-display-grayscale-p "xfns.c" (&optional terminal))
|
|
|
|
|
|
2000-02-02 11:38:16 +00:00
|
|
|
|
(defun display-grayscale-p (&optional display)
|
2014-10-08 10:16:45 +00:00
|
|
|
|
"Return non-nil if frames on DISPLAY can display shades of gray.
|
|
|
|
|
DISPLAY should be either a frame or a display name (a string).
|
|
|
|
|
If omitted or nil, that stands for the selected frame's display."
|
2000-02-02 11:38:16 +00:00
|
|
|
|
(let ((frame-type (framep-on-display display)))
|
|
|
|
|
(cond
|
2008-07-27 18:24:48 +00:00
|
|
|
|
((memq frame-type '(x w32 ns))
|
2000-02-02 11:38:16 +00:00
|
|
|
|
(x-display-grayscale-p display))
|
|
|
|
|
(t
|
|
|
|
|
(> (tty-color-gray-shades display) 2)))))
|
|
|
|
|
|
2010-10-24 18:43:31 +00:00
|
|
|
|
(defun read-color (&optional prompt convert-to-RGB allow-empty-name msg)
|
2011-12-05 15:23:56 +00:00
|
|
|
|
"Read a color name or RGB triplet.
|
2010-10-24 18:43:31 +00:00
|
|
|
|
Completion is available for color names, but not for RGB triplets.
|
|
|
|
|
|
2011-12-05 15:23:56 +00:00
|
|
|
|
RGB triplets have the form \"#RRGGBB\". Each of the R, G, and B
|
|
|
|
|
components can have one to four digits, but all three components
|
|
|
|
|
must have the same number of digits. Each digit is a hex value
|
|
|
|
|
between 0 and F; either upper case or lower case for A through F
|
|
|
|
|
are acceptable.
|
2010-10-24 18:43:31 +00:00
|
|
|
|
|
|
|
|
|
In addition to standard color names and RGB hex values, the
|
|
|
|
|
following are available as color candidates. In each case, the
|
|
|
|
|
corresponding color is used.
|
2007-10-29 13:54:00 +00:00
|
|
|
|
|
|
|
|
|
* `foreground at point' - foreground under the cursor
|
|
|
|
|
* `background at point' - background under the cursor
|
|
|
|
|
|
2010-10-24 18:43:31 +00:00
|
|
|
|
Optional arg PROMPT is the prompt; if nil, use a default prompt.
|
2007-10-29 13:54:00 +00:00
|
|
|
|
|
2010-10-24 18:43:31 +00:00
|
|
|
|
Interactively, or with optional arg CONVERT-TO-RGB-P non-nil,
|
|
|
|
|
convert an input color name to an RGB hex string. Return the RGB
|
|
|
|
|
hex string.
|
2007-10-29 13:54:00 +00:00
|
|
|
|
|
2010-10-24 18:43:31 +00:00
|
|
|
|
If optional arg ALLOW-EMPTY-NAME is non-nil, the user is allowed
|
|
|
|
|
to enter an empty color name (the empty string).
|
2007-10-29 13:54:00 +00:00
|
|
|
|
|
2010-10-24 18:43:31 +00:00
|
|
|
|
Interactively, or with optional arg MSG non-nil, print the
|
|
|
|
|
resulting color name in the echo area."
|
2007-10-29 13:54:00 +00:00
|
|
|
|
(interactive "i\np\ni\np") ; Always convert to RGB interactively.
|
|
|
|
|
(let* ((completion-ignore-case t)
|
2010-10-24 18:43:31 +00:00
|
|
|
|
(colors (or facemenu-color-alist
|
|
|
|
|
(append '("foreground at point" "background at point")
|
|
|
|
|
(if allow-empty-name '(""))
|
|
|
|
|
(defined-colors))))
|
|
|
|
|
(color (completing-read
|
|
|
|
|
(or prompt "Color (name or #RGB triplet): ")
|
|
|
|
|
;; Completing function for reading colors, accepting
|
|
|
|
|
;; both color names and RGB triplets.
|
|
|
|
|
(lambda (string pred flag)
|
|
|
|
|
(cond
|
|
|
|
|
((null flag) ; Try completion.
|
|
|
|
|
(or (try-completion string colors pred)
|
|
|
|
|
(if (color-defined-p string)
|
|
|
|
|
string)))
|
|
|
|
|
((eq flag t) ; List all completions.
|
|
|
|
|
(or (all-completions string colors pred)
|
|
|
|
|
(if (color-defined-p string)
|
|
|
|
|
(list string))))
|
|
|
|
|
((eq flag 'lambda) ; Test completion.
|
2013-12-20 06:11:00 +00:00
|
|
|
|
(or (member string colors)
|
2010-10-24 18:43:31 +00:00
|
|
|
|
(color-defined-p string)))))
|
2011-04-19 13:44:55 +00:00
|
|
|
|
nil t)))
|
2010-10-24 18:43:31 +00:00
|
|
|
|
|
|
|
|
|
;; Process named colors.
|
|
|
|
|
(when (member color colors)
|
|
|
|
|
(cond ((string-equal color "foreground at point")
|
|
|
|
|
(setq color (foreground-color-at-point)))
|
|
|
|
|
((string-equal color "background at point")
|
|
|
|
|
(setq color (background-color-at-point))))
|
|
|
|
|
(when (and convert-to-RGB
|
|
|
|
|
(not (string-equal color "")))
|
|
|
|
|
(let ((components (x-color-values color)))
|
2013-06-23 20:29:18 +00:00
|
|
|
|
(unless (string-match-p "^#\\(?:[a-fA-F0-9][a-fA-F0-9][a-fA-F0-9]\\)+$" color)
|
2010-10-24 18:43:31 +00:00
|
|
|
|
(setq color (format "#%04X%04X%04X"
|
|
|
|
|
(logand 65535 (nth 0 components))
|
|
|
|
|
(logand 65535 (nth 1 components))
|
|
|
|
|
(logand 65535 (nth 2 components))))))))
|
|
|
|
|
(when msg (message "Color: `%s'" color))
|
|
|
|
|
color))
|
|
|
|
|
|
2013-04-13 01:10:09 +00:00
|
|
|
|
(defun face-at-point (&optional thing multiple)
|
2007-10-29 13:54:00 +00:00
|
|
|
|
"Return the face of the character after point.
|
|
|
|
|
If it has more than one face, return the first one.
|
2013-04-13 01:10:09 +00:00
|
|
|
|
If THING is non-nil try first to get a face name from the buffer.
|
|
|
|
|
IF MULTIPLE is non-nil, return a list of all faces.
|
|
|
|
|
Return nil if there is no face."
|
|
|
|
|
(let (faces)
|
|
|
|
|
(if thing
|
|
|
|
|
;; Try to get a face name from the buffer.
|
|
|
|
|
(let ((face (intern-soft (thing-at-point 'symbol))))
|
|
|
|
|
(if (facep face)
|
|
|
|
|
(push face faces))))
|
|
|
|
|
;; Add the named faces that the `read-face-name' or `face' property uses.
|
|
|
|
|
(let ((faceprop (or (get-char-property (point) 'read-face-name)
|
|
|
|
|
(get-char-property (point) 'face))))
|
|
|
|
|
(cond ((facep faceprop)
|
|
|
|
|
(push faceprop faces))
|
2015-02-26 18:09:48 +00:00
|
|
|
|
((face-list-p faceprop)
|
2013-04-13 01:10:09 +00:00
|
|
|
|
(dolist (face faceprop)
|
|
|
|
|
(if (facep face)
|
|
|
|
|
(push face faces))))))
|
2015-05-27 22:15:27 +00:00
|
|
|
|
(if multiple
|
|
|
|
|
(delete-dups (nreverse faces))
|
|
|
|
|
(car (last faces)))))
|
2007-10-29 13:54:00 +00:00
|
|
|
|
|
|
|
|
|
(defun foreground-color-at-point ()
|
|
|
|
|
"Return the foreground color of the character after point."
|
|
|
|
|
;; `face-at-point' alone is not sufficient. It only gets named faces.
|
|
|
|
|
;; Need also pick up any face properties that are not associated with named faces.
|
|
|
|
|
(let ((face (or (face-at-point)
|
|
|
|
|
(get-char-property (point) 'read-face-name)
|
|
|
|
|
(get-char-property (point) 'face))))
|
|
|
|
|
(cond ((and face (symbolp face))
|
|
|
|
|
(let ((value (face-foreground face nil 'default)))
|
|
|
|
|
(if (member value '("unspecified-fg" "unspecified-bg"))
|
|
|
|
|
nil
|
|
|
|
|
value)))
|
|
|
|
|
((consp face)
|
|
|
|
|
(cond ((memq 'foreground-color face) (cdr (memq 'foreground-color face)))
|
|
|
|
|
((memq ':foreground face) (cadr (memq ':foreground face)))))
|
|
|
|
|
(t nil)))) ; Invalid face value.
|
|
|
|
|
|
|
|
|
|
(defun background-color-at-point ()
|
|
|
|
|
"Return the background color of the character after point."
|
|
|
|
|
;; `face-at-point' alone is not sufficient. It only gets named faces.
|
|
|
|
|
;; Need also pick up any face properties that are not associated with named faces.
|
|
|
|
|
(let ((face (or (face-at-point)
|
|
|
|
|
(get-char-property (point) 'read-face-name)
|
|
|
|
|
(get-char-property (point) 'face))))
|
|
|
|
|
(cond ((and face (symbolp face))
|
|
|
|
|
(let ((value (face-background face nil 'default)))
|
|
|
|
|
(if (member value '("unspecified-fg" "unspecified-bg"))
|
|
|
|
|
nil
|
|
|
|
|
value)))
|
|
|
|
|
((consp face)
|
|
|
|
|
(cond ((memq 'background-color face) (cdr (memq 'background-color face)))
|
|
|
|
|
((memq ':background face) (cadr (memq ':background face)))))
|
|
|
|
|
(t nil)))) ; Invalid face value.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
;;; Frame creation.
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
|
2013-09-18 03:53:10 +00:00
|
|
|
|
(declare-function x-display-list "xfns.c" ())
|
|
|
|
|
(declare-function x-open-connection "xfns.c"
|
|
|
|
|
(display &optional xrm-string must-succeed))
|
|
|
|
|
(declare-function x-get-resource "frame.c"
|
|
|
|
|
(attribute class &optional component subclass))
|
2008-06-12 03:56:20 +00:00
|
|
|
|
(declare-function x-parse-geometry "frame.c" (string))
|
2012-09-27 07:28:48 +00:00
|
|
|
|
(defvar x-display-name)
|
2008-06-12 03:56:20 +00:00
|
|
|
|
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(defun x-handle-named-frame-geometry (parameters)
|
|
|
|
|
"Add geometry parameters for a named frame to parameter list PARAMETERS.
|
|
|
|
|
Value is the new parameter list."
|
2009-06-27 20:44:03 +00:00
|
|
|
|
;; Note that `x-resource-name' has a global meaning.
|
2010-07-01 00:14:17 +00:00
|
|
|
|
(let ((x-resource-name (cdr (assq 'name parameters))))
|
2009-06-27 20:44:03 +00:00
|
|
|
|
(when x-resource-name
|
|
|
|
|
;; Before checking X resources, we must have an X connection.
|
|
|
|
|
(or (window-system)
|
|
|
|
|
(x-display-list)
|
|
|
|
|
(x-open-connection (or (cdr (assq 'display parameters))
|
|
|
|
|
x-display-name)))
|
|
|
|
|
(let (res-geometry parsed)
|
|
|
|
|
(and (setq res-geometry (x-get-resource "geometry" "Geometry"))
|
|
|
|
|
(setq parsed (x-parse-geometry res-geometry))
|
|
|
|
|
(setq parameters
|
2010-07-01 00:14:17 +00:00
|
|
|
|
(append parameters parsed
|
2009-06-27 20:44:03 +00:00
|
|
|
|
;; If the resource specifies a position,
|
|
|
|
|
;; take note of that.
|
|
|
|
|
(if (or (assq 'top parsed) (assq 'left parsed))
|
|
|
|
|
'((user-position . t) (user-size . t)))))))))
|
|
|
|
|
parameters)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
(defun x-handle-reverse-video (frame parameters)
|
|
|
|
|
"Handle the reverse-video frame parameter and X resource.
|
|
|
|
|
`x-create-frame' does not handle this one."
|
|
|
|
|
(when (cdr (or (assq 'reverse parameters)
|
|
|
|
|
(let ((resource (x-get-resource "reverseVideo"
|
|
|
|
|
"ReverseVideo")))
|
|
|
|
|
(if resource
|
|
|
|
|
(cons nil (member (downcase resource)
|
|
|
|
|
'("on" "true")))))))
|
|
|
|
|
(let* ((params (frame-parameters frame))
|
|
|
|
|
(bg (cdr (assq 'foreground-color params)))
|
|
|
|
|
(fg (cdr (assq 'background-color params))))
|
|
|
|
|
(modify-frame-parameters frame
|
|
|
|
|
(list (cons 'foreground-color fg)
|
|
|
|
|
(cons 'background-color bg)))
|
|
|
|
|
(if (equal bg (cdr (assq 'border-color params)))
|
|
|
|
|
(modify-frame-parameters frame
|
|
|
|
|
(list (cons 'border-color fg))))
|
|
|
|
|
(if (equal bg (cdr (assq 'mouse-color params)))
|
|
|
|
|
(modify-frame-parameters frame
|
|
|
|
|
(list (cons 'mouse-color fg))))
|
|
|
|
|
(if (equal bg (cdr (assq 'cursor-color params)))
|
|
|
|
|
(modify-frame-parameters frame
|
|
|
|
|
(list (cons 'cursor-color fg)))))))
|
|
|
|
|
|
2008-06-12 03:56:20 +00:00
|
|
|
|
(declare-function x-create-frame "xfns.c" (parms))
|
2010-11-01 06:13:43 +00:00
|
|
|
|
(declare-function x-setup-function-keys "term/common-win" (frame))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
(defun x-create-frame-with-faces (&optional parameters)
|
2010-07-01 00:14:17 +00:00
|
|
|
|
"Create and return a frame with frame parameters PARAMETERS.
|
|
|
|
|
If PARAMETERS specify a frame name, handle X geometry resources
|
|
|
|
|
for that name. If PARAMETERS includes a `reverse' parameter, or
|
Fix minor quoting problems in doc strings
These were glitches regardless of how or whether we tackle the
problem of grave accent in doc strings.
* lisp/calc/calc-aent.el (math-restore-placeholders):
* lisp/ido.el (ido-ignore-buffers, ido-ignore-files):
* lisp/leim/quail/cyrillic.el ("bulgarian-alt-phonetic"):
* lisp/leim/quail/hebrew.el ("hebrew-new")
("hebrew-biblical-sil"):
* lisp/leim/quail/thai.el ("thai-kesmanee"):
* lisp/progmodes/idlw-shell.el (idlwave-shell-file-name-chars):
Used curved quotes to avoid ambiguities like ‘`''’ in doc strings.
* lisp/calendar/calendar.el (calendar-month-abbrev-array):
* lisp/cedet/semantic/mru-bookmark.el (semantic-mrub-cache-flush-fcn):
* lisp/cedet/semantic/symref.el (semantic-symref-tool-baseclass):
* lisp/cedet/semantic/tag.el (semantic-tag-copy)
(semantic-tag-components):
* lisp/cedet/srecode/cpp.el (srecode-semantic-handle-:cpp):
* lisp/cedet/srecode/texi.el (srecode-texi-texify-docstring):
* lisp/emacs-lisp/byte-opt.el (byte-optimize-all-constp):
* lisp/emacs-lisp/checkdoc.el (checkdoc-message-text-engine):
* lisp/emacs-lisp/generator.el (iter-next):
* lisp/gnus/gnus-art.el (gnus-treat-strip-list-identifiers)
(gnus-article-mode-syntax-table):
* lisp/net/rlogin.el (rlogin-directory-tracking-mode):
* lisp/net/soap-client.el (soap-wsdl-get):
* lisp/net/telnet.el (telnet-mode):
* lisp/org/org-compat.el (org-number-sequence):
* lisp/org/org.el (org-remove-highlights-with-change)
(org-structure-template-alist):
* lisp/org/ox-html.el (org-html-link-org-files-as-html):
* lisp/play/handwrite.el (handwrite-10pt, handwrite-11pt)
(handwrite-12pt, handwrite-13pt):
* lisp/progmodes/f90.el (f90-mode, f90-abbrev-start):
* lisp/progmodes/idlwave.el (idlwave-mode, idlwave-check-abbrev):
* lisp/progmodes/verilog-mode.el (verilog-tool)
(verilog-string-replace-matches, verilog-preprocess)
(verilog-auto-insert-lisp, verilog-auto-insert-last):
* lisp/textmodes/makeinfo.el (makeinfo-options):
* src/font.c (Ffont_spec):
Fix minor quoting problems in doc strings, e.g., missing quote,
``x'' where `x' was meant, etc.
* lisp/erc/erc-backend.el (erc-process-sentinel-2):
Fix minor quoting problem in other string.
* lisp/leim/quail/ethiopic.el ("ethiopic"):
* lisp/term/tvi970.el (tvi970-set-keypad-mode):
Omit unnecessary quotes.
* lisp/faces.el (set-face-attribute, set-face-underline)
(set-face-inverse-video, x-create-frame-with-faces):
* lisp/gnus/gnus-group.el (gnus-group-nnimap-edit-acl):
* lisp/mail/supercite.el (sc-attribs-%@-addresses)
(sc-attribs-!-addresses, sc-attribs-<>-addresses):
* lisp/net/tramp.el (tramp-methods):
* lisp/recentf.el (recentf-show-file-shortcuts-flag):
* lisp/textmodes/artist.el (artist-ellipse-right-char)
(artist-ellipse-left-char, artist-vaporize-fuzziness)
(artist-spray-chars, artist-mode, artist-replace-string)
(artist-put-pixel, artist-text-see-thru):
* lisp/vc/ediff-util.el (ediff-submit-report):
* lisp/vc/log-edit.el (log-edit-changelog-full-paragraphs):
Use double-quotes rather than TeX markup in doc strings.
* lisp/skeleton.el (skeleton-pair-insert-maybe):
Reword to avoid the need for grave accent and apostrophe.
* lisp/xt-mouse.el (xterm-mouse-tracking-enable-sequence):
Don't use grave and acute accents to quote.
2015-05-19 21:59:15 +00:00
|
|
|
|
the X resource \"reverseVideo\" is present, handle that."
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(setq parameters (x-handle-named-frame-geometry parameters))
|
2008-07-10 03:32:53 +00:00
|
|
|
|
(let* ((params (copy-tree parameters))
|
|
|
|
|
(visibility-spec (assq 'visibility parameters))
|
|
|
|
|
(delayed-params '(foreground-color background-color font
|
|
|
|
|
border-color cursor-color mouse-color
|
|
|
|
|
visibility scroll-bar-foreground
|
|
|
|
|
scroll-bar-background))
|
|
|
|
|
frame success)
|
|
|
|
|
(dolist (param delayed-params)
|
|
|
|
|
(setq params (assq-delete-all param params)))
|
|
|
|
|
(setq frame (x-create-frame `((visibility . nil) . ,params)))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(unwind-protect
|
|
|
|
|
(progn
|
2005-06-26 03:19:45 +00:00
|
|
|
|
(x-setup-function-keys frame)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(x-handle-reverse-video frame parameters)
|
2010-10-14 03:55:18 +00:00
|
|
|
|
(frame-set-background-mode frame t)
|
2008-07-08 17:27:04 +00:00
|
|
|
|
(face-set-after-frame-default frame parameters)
|
2006-03-26 13:57:43 +00:00
|
|
|
|
(if (null visibility-spec)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(make-frame-visible frame)
|
|
|
|
|
(modify-frame-parameters frame (list visibility-spec)))
|
|
|
|
|
(setq success t))
|
|
|
|
|
(unless success
|
|
|
|
|
(delete-frame frame)))
|
|
|
|
|
frame))
|
|
|
|
|
|
2008-07-08 17:27:04 +00:00
|
|
|
|
(defun face-set-after-frame-default (frame &optional parameters)
|
|
|
|
|
"Initialize the frame-local faces of FRAME.
|
|
|
|
|
Calculate the face definitions using the face specs, custom theme
|
2008-07-10 03:32:53 +00:00
|
|
|
|
settings, X resources, and `face-new-frame-defaults'.
|
2008-07-08 17:27:04 +00:00
|
|
|
|
Finally, apply any relevant face attributes found amongst the
|
2010-07-01 00:14:17 +00:00
|
|
|
|
frame parameters in PARAMETERS."
|
2014-04-14 15:38:43 +00:00
|
|
|
|
;; The `reverse' is so that `default' goes first.
|
|
|
|
|
(dolist (face (nreverse (face-list)))
|
|
|
|
|
(condition-case ()
|
|
|
|
|
(progn
|
|
|
|
|
;; Initialize faces from face spec and custom theme.
|
|
|
|
|
(face-spec-recalc face frame)
|
|
|
|
|
;; Apply attributes specified by face-new-frame-defaults
|
|
|
|
|
(internal-merge-in-global-face face frame))
|
|
|
|
|
;; Don't let invalid specs prevent frame creation.
|
|
|
|
|
(error nil)))
|
2010-10-14 03:55:18 +00:00
|
|
|
|
|
2008-07-08 17:27:04 +00:00
|
|
|
|
;; Apply attributes specified by frame parameters.
|
2007-02-06 22:36:42 +00:00
|
|
|
|
(let ((face-params '((foreground-color default :foreground)
|
2008-07-08 17:27:04 +00:00
|
|
|
|
(background-color default :background)
|
|
|
|
|
(font default :font)
|
|
|
|
|
(border-color border :background)
|
|
|
|
|
(cursor-color cursor :background)
|
|
|
|
|
(scroll-bar-foreground scroll-bar :foreground)
|
|
|
|
|
(scroll-bar-background scroll-bar :background)
|
|
|
|
|
(mouse-color mouse :background))))
|
2007-02-06 22:36:42 +00:00
|
|
|
|
(dolist (param face-params)
|
2008-07-08 17:27:04 +00:00
|
|
|
|
(let* ((param-name (nth 0 param))
|
2010-07-01 00:14:17 +00:00
|
|
|
|
(value (cdr (assq param-name parameters))))
|
2008-07-08 17:27:04 +00:00
|
|
|
|
(if value
|
|
|
|
|
(set-face-attribute (nth 1 param) frame
|
Try to improve handling of fullwidth/-height frames.
* frame.el (frame-notice-user-settings): Update
`frame-size-history'.
(make-frame): Update `frame-size-history'. Call
`frame-after-make-frame'.
* faces.el (face-set-after-frame-default): Remove call to
frame-can-run-window-configuration-change-hook.
* frame.c (frame_size_history_add): New function.
(frame_inhibit_resize): Consider frame_inhibit_implied_resize
only after frame's after_make_frame slot is true. Inhibit
resizing fullwidth-/height frames in one direction only. Update
frame_size_history.
(adjust_frame_size): Call frame_size_history_add.
(make_frame): Initalize after_make_frame slot.
(Fmake_terminal_frame): Adjust adjust_frame_size call.
(Fcan_run_window_configuration_change_hook): Rename to
Fframe_after_make_frame. Set after_make_frame slot. Return
second argument.
(x_set_frame_parameters): Postpone handling fullscreen parameter
until after width and height parameters have been set. Apply
width and height changes only if can_x_set_window_size is true.
Update frame_size_history.
(Qadjust_frame_size_1, Qadjust_frame_size_2)
(Qadjust_frame_size_3, QEmacsFrameResize, Qframe_inhibit_resize)
(Qx_set_fullscreen, Qx_check_fullscreen, Qx_set_window_size_1)
(Qxg_frame_resized, Qxg_frame_set_char_size_1)
(Qxg_frame_set_char_size_2, Qxg_frame_set_char_size_3)
(Qxg_change_toolbar_position, Qx_net_wm_state)
(Qx_handle_net_wm_state, Qtb_size_cb, Qupdate_frame_tool_bar)
(Qfree_frame_tool_bar): New symbol for updating
frame_size_history.
(Qtip_frame, Qterminal_frame): New symbols.
(Vframe_adjust_size_history): Rename to frame_size_history.
* frame.h (struct frame): Rename
can_run_window_configuration_change_hook slot to
after_make_frame.
(frame_size_history_add): Extern.
* gtkutil.c (xg_frame_resized): Call frame_size_history_add.
Don't set FRAME_PIXEL_WIDTH and FRAME_PIXEL_HEIGHT here.
(xg_frame_set_char_size): Try to preserve the status of
fullwidth/-height frames. Call frame_size_history_add.
(tb_size_cb, update_frame_tool_bar, free_frame_tool_bar)
(xg_change_toolbar_position): Call frame_size_history_add.
* w32fns.c (x_change_tool_bar_height): Handle frame's fullscreen
status.
(Fx_create_frame): Process fullscreen parameter after frame has
been resized.
(x_create_tip_frame): Pass Qtip_frame to adjust_frame_size.
(Fx_frame_geometry): Don't pollute pure storage.
* w32term.c (w32_read_socket): For WM_WINDOWPOSCHANGED,
WM_ACTIVATE and WM_ACTIVATEAPP set frame's visibility before
calling w32fullscreen_hook. For WM_DISPLAYCHANGE call
w32fullscreen_hook immediately.
(x_fullscreen_adjust, x_check_fullscreen): Remove.
(w32fullscreen_hook): Call change_frame_size just as with a
"normal" frame resize operation. Call do_pending_window_change.
(x_set_window_size): Try to handle fullwidth and fullheight more
accurately. Don't rely on w32_enable_frame_resize_hack.
(w32_enable_frame_resize_hack): Remove variable.
* widget.c (EmacsFrameResize): Remove dead code. Call
frame_size_history_add
* window.c (run_window_configuration_change_hook): Check
f->after_make_frame instead of
f->can_run_window_configuration_change_hook.
* xfns.c (x_change_tool_bar_height): Handle frame's fullscreen status.
(Fx_create_frame): Process fullscreen parameter after frame has
been resized.
(Fx_frame_geometry): Don't pollute pure storage.
* xterm.c (x_net_wm_state, x_handle_net_wm_state): Call
frame_size_history_add.
(do_ewmh_fullscreen): Handle x_frame_normalize_before_maximize.
(x_check_fullscreen): Count in menubar when calling
XResizeWindow. Wait for ConfigureNotify event. Call
frame_size_history_add.
(x_set_window_size_1): Remove PIXELWISE argument. Try to handle
changing a fullheight frame's width or a fullwidth frame's
height. Call frame_size_history_add.
(x_set_window_size): Simplify xg_frame_set_char_size and
x_set_window_size_1 calls.
(x_frame_normalize_before_maximize): New variable.
2015-02-07 10:51:03 +00:00
|
|
|
|
(nth 2 param) value))))))
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
2000-10-28 17:17:42 +00:00
|
|
|
|
(defun tty-handle-reverse-video (frame parameters)
|
|
|
|
|
"Handle the reverse-video frame parameter for terminal frames."
|
2010-07-01 00:14:17 +00:00
|
|
|
|
(when (cdr (assq 'reverse parameters))
|
2000-10-28 17:17:42 +00:00
|
|
|
|
(let* ((params (frame-parameters frame))
|
|
|
|
|
(bg (cdr (assq 'foreground-color params)))
|
|
|
|
|
(fg (cdr (assq 'background-color params))))
|
|
|
|
|
(modify-frame-parameters frame
|
|
|
|
|
(list (cons 'foreground-color fg)
|
|
|
|
|
(cons 'background-color bg)))
|
|
|
|
|
(if (equal bg (cdr (assq 'mouse-color params)))
|
|
|
|
|
(modify-frame-parameters frame
|
|
|
|
|
(list (cons 'mouse-color fg))))
|
|
|
|
|
(if (equal bg (cdr (assq 'cursor-color params)))
|
|
|
|
|
(modify-frame-parameters frame
|
|
|
|
|
(list (cons 'cursor-color fg)))))))
|
|
|
|
|
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
|
|
|
|
(defun tty-create-frame-with-faces (&optional parameters)
|
2010-07-01 00:14:17 +00:00
|
|
|
|
"Create and return a frame from optional frame parameters PARAMETERS.
|
|
|
|
|
If PARAMETERS contains a `reverse' parameter, handle that."
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(let ((frame (make-terminal-frame parameters))
|
|
|
|
|
success)
|
|
|
|
|
(unwind-protect
|
2004-05-23 02:34:53 +00:00
|
|
|
|
(with-selected-frame frame
|
2000-10-28 17:17:42 +00:00
|
|
|
|
(tty-handle-reverse-video frame (frame-parameters frame))
|
2005-09-07 02:29:18 +00:00
|
|
|
|
|
2007-10-18 19:02:23 +00:00
|
|
|
|
(unless (terminal-parameter frame 'terminal-initted)
|
|
|
|
|
(set-terminal-parameter frame 'terminal-initted t)
|
|
|
|
|
(set-locale-environment nil frame)
|
2014-02-26 19:40:56 +00:00
|
|
|
|
(tty-run-terminal-initialization frame nil t))
|
2010-10-14 03:55:18 +00:00
|
|
|
|
(frame-set-background-mode frame t)
|
2008-07-08 17:27:04 +00:00
|
|
|
|
(face-set-after-frame-default frame parameters)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(setq success t))
|
|
|
|
|
(unless success
|
|
|
|
|
(delete-frame frame)))
|
|
|
|
|
frame))
|
1993-04-03 23:28:03 +00:00
|
|
|
|
|
2006-05-20 15:28:05 +00:00
|
|
|
|
(defun tty-find-type (pred type)
|
|
|
|
|
"Return the longest prefix of TYPE to which PRED returns non-nil.
|
|
|
|
|
TYPE should be a tty type name such as \"xterm-16color\".
|
|
|
|
|
|
|
|
|
|
The function tries only those prefixes that are followed by a
|
|
|
|
|
dash or underscore in the original type name, like \"xterm\" in
|
|
|
|
|
the above example."
|
|
|
|
|
(let (hyphend)
|
|
|
|
|
(while (and type
|
|
|
|
|
(not (funcall pred type)))
|
|
|
|
|
;; Strip off last hyphen and what follows, then try again
|
|
|
|
|
(setq type
|
2013-06-23 20:29:18 +00:00
|
|
|
|
(if (setq hyphend (string-match-p "[-_][^-_]+$" type))
|
2006-05-20 15:28:05 +00:00
|
|
|
|
(substring type 0 hyphend)
|
|
|
|
|
nil))))
|
|
|
|
|
type)
|
|
|
|
|
|
2013-07-08 22:26:37 +00:00
|
|
|
|
(defvar tty-setup-hook nil
|
|
|
|
|
"Hook run after running the initialization function of a new text terminal.
|
2014-02-25 08:41:47 +00:00
|
|
|
|
Specifically, `tty-run-terminal-initialization' runs this.
|
2013-07-08 22:26:37 +00:00
|
|
|
|
This can be used to fine tune the `input-decode-map', for example.")
|
|
|
|
|
|
2014-02-26 19:40:56 +00:00
|
|
|
|
(defun tty-run-terminal-initialization (frame &optional type run-hook)
|
2006-05-20 17:02:47 +00:00
|
|
|
|
"Run the special initialization code for the terminal type of FRAME.
|
|
|
|
|
The optional TYPE parameter may be used to override the autodetected
|
2014-02-26 19:40:56 +00:00
|
|
|
|
terminal type to a different value.
|
|
|
|
|
|
Introduce `term-file-aliases', replacing some small lisp/term files
* lisp/faces.el (term-file-aliases): New variable.
(tty-run-terminal-initialization): Respect term-file-aliases.
* lisp/term/apollo.el, lisp/term/vt102.el, lisp/term/vt125.el:
* lisp/term/vt201.el, lisp/term/vt220.el, lisp/term/vt240.el:
* lisp/term/vt300.el, lisp/term/vt320.el, lisp/term/vt400.el:
* lisp/term/vt420.el: Remove files, replaced by aliases.
* lisp/term/README: Mention term-file-aliases.
* lisp/term/AT386.el, lisp/term/news.el, lisp/term/tvi970.el:
* lisp/term/vt100.el, lisp/term/wyse50.el: Remove obsolete comment.
* doc/emacs/custom.texi (Terminal Init): Mention term-file-aliases.
* doc/lispref/os.texi (Terminal-Specific): Mention term-file-aliases.
* etc/NEWS: Mention this.
2014-03-28 01:29:54 +00:00
|
|
|
|
This consults `term-file-aliases' to map terminal types to their aliases.
|
|
|
|
|
|
2014-02-26 19:40:56 +00:00
|
|
|
|
If optional argument RUN-HOOK is non-nil, then as a final step,
|
|
|
|
|
this runs the hook `tty-setup-hook'.
|
2014-02-25 08:41:47 +00:00
|
|
|
|
|
|
|
|
|
If you set `term-file-prefix' to nil, this function does nothing."
|
2006-05-20 17:02:47 +00:00
|
|
|
|
(setq type (or type (tty-type frame)))
|
2014-03-28 07:16:42 +00:00
|
|
|
|
(let ((alias (tty-find-type
|
|
|
|
|
(lambda (typ) (assoc typ term-file-aliases)) type)))
|
|
|
|
|
(if alias (setq type (cdr (assoc alias term-file-aliases)))))
|
2005-09-07 02:29:18 +00:00
|
|
|
|
;; Load library for our terminal type.
|
|
|
|
|
;; User init file can set term-file-prefix to nil to prevent this.
|
|
|
|
|
(with-selected-frame frame
|
2007-10-18 19:02:23 +00:00
|
|
|
|
(unless (null term-file-prefix)
|
2006-05-20 15:28:05 +00:00
|
|
|
|
(let* (term-init-func)
|
|
|
|
|
;; First, load the terminal initialization file, if it is
|
|
|
|
|
;; available and it hasn't been loaded already.
|
|
|
|
|
(tty-find-type #'(lambda (type)
|
|
|
|
|
(let ((file (locate-library (concat term-file-prefix type))))
|
|
|
|
|
(and file
|
|
|
|
|
(or (assoc file load-history)
|
|
|
|
|
(load file t t)))))
|
2006-05-20 17:02:47 +00:00
|
|
|
|
type)
|
2006-05-20 15:28:05 +00:00
|
|
|
|
;; Next, try to find a matching initialization function, and call it.
|
|
|
|
|
(tty-find-type #'(lambda (type)
|
|
|
|
|
(fboundp (setq term-init-func
|
|
|
|
|
(intern (concat "terminal-init-" type)))))
|
2006-05-20 17:02:47 +00:00
|
|
|
|
type)
|
2005-09-17 19:00:49 +00:00
|
|
|
|
(when (fboundp term-init-func)
|
2006-05-20 15:28:05 +00:00
|
|
|
|
(funcall term-init-func))
|
2013-07-07 19:35:54 +00:00
|
|
|
|
(set-terminal-parameter frame 'terminal-initted term-init-func)
|
2014-02-26 19:40:56 +00:00
|
|
|
|
(if run-hook (run-hooks 'tty-setup-hook))))))
|
1993-04-03 23:28:03 +00:00
|
|
|
|
|
1999-07-21 21:43:52 +00:00
|
|
|
|
;; Called from C function init_display to initialize faces of the
|
|
|
|
|
;; dumped terminal frame on startup.
|
1993-04-03 23:28:03 +00:00
|
|
|
|
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(defun tty-set-up-initial-frame-faces ()
|
|
|
|
|
(let ((frame (selected-frame)))
|
2010-10-14 03:55:18 +00:00
|
|
|
|
(frame-set-background-mode frame t)
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(face-set-after-frame-default frame)))
|
2001-05-29 16:12:03 +00:00
|
|
|
|
|
1993-05-11 19:14:34 +00:00
|
|
|
|
|
1999-07-21 21:43:52 +00:00
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
;;; Standard faces.
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
1993-04-03 23:28:03 +00:00
|
|
|
|
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(defgroup basic-faces nil
|
|
|
|
|
"The standard faces of Emacs."
|
|
|
|
|
:group 'faces)
|
1995-07-17 22:57:32 +00:00
|
|
|
|
|
2008-04-05 14:39:13 +00:00
|
|
|
|
(defface default
|
|
|
|
|
'((t nil)) ; If this were nil, face-defface-spec would not be set.
|
1999-07-21 21:43:52 +00:00
|
|
|
|
"Basic default face."
|
|
|
|
|
:group 'basic-faces)
|
1993-04-03 23:28:03 +00:00
|
|
|
|
|
2005-09-29 22:55:13 +00:00
|
|
|
|
(defface bold
|
|
|
|
|
'((t :weight bold))
|
|
|
|
|
"Basic bold face."
|
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
|
|
|
|
(defface italic
|
|
|
|
|
'((((supports :slant italic))
|
|
|
|
|
:slant italic)
|
|
|
|
|
(((supports :underline t))
|
|
|
|
|
:underline t)
|
|
|
|
|
(t
|
2011-10-02 23:53:59 +00:00
|
|
|
|
;; Default to italic, even if it doesn't appear to be supported,
|
|
|
|
|
;; because in some cases the display engine will do its own
|
|
|
|
|
;; workaround (to `dim' on ttys).
|
2005-09-29 22:55:13 +00:00
|
|
|
|
:slant italic))
|
|
|
|
|
"Basic italic face."
|
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
|
|
|
|
(defface bold-italic
|
|
|
|
|
'((t :weight bold :slant italic))
|
|
|
|
|
"Basic bold-italic face."
|
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
|
|
|
|
(defface underline
|
|
|
|
|
'((((supports :underline t))
|
|
|
|
|
:underline t)
|
|
|
|
|
(((supports :weight bold))
|
|
|
|
|
:weight bold)
|
|
|
|
|
(t :underline t))
|
|
|
|
|
"Basic underlined face."
|
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
|
|
|
|
(defface fixed-pitch
|
2008-06-21 19:42:51 +00:00
|
|
|
|
'((t :family "Monospace"))
|
2005-09-29 22:55:13 +00:00
|
|
|
|
"The basic fixed-pitch face."
|
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
|
|
|
|
(defface variable-pitch
|
2008-06-25 00:39:59 +00:00
|
|
|
|
'((t :family "Sans Serif"))
|
2005-09-29 22:55:13 +00:00
|
|
|
|
"The basic variable-pitch face."
|
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
|
|
|
|
(defface shadow
|
|
|
|
|
'((((class color grayscale) (min-colors 88) (background light))
|
|
|
|
|
:foreground "grey50")
|
|
|
|
|
(((class color grayscale) (min-colors 88) (background dark))
|
|
|
|
|
:foreground "grey70")
|
|
|
|
|
(((class color) (min-colors 8) (background light))
|
|
|
|
|
:foreground "green")
|
|
|
|
|
(((class color) (min-colors 8) (background dark))
|
|
|
|
|
:foreground "yellow"))
|
|
|
|
|
"Basic face for shadowed text."
|
|
|
|
|
:group 'basic-faces
|
|
|
|
|
:version "22.1")
|
|
|
|
|
|
2006-01-23 01:16:57 +00:00
|
|
|
|
(defface link
|
|
|
|
|
'((((class color) (min-colors 88) (background light))
|
2011-07-10 02:04:45 +00:00
|
|
|
|
:foreground "RoyalBlue3" :underline t)
|
2006-01-23 01:16:57 +00:00
|
|
|
|
(((class color) (background light))
|
|
|
|
|
:foreground "blue" :underline t)
|
|
|
|
|
(((class color) (min-colors 88) (background dark))
|
|
|
|
|
:foreground "cyan1" :underline t)
|
|
|
|
|
(((class color) (background dark))
|
|
|
|
|
:foreground "cyan" :underline t)
|
|
|
|
|
(t :inherit underline))
|
|
|
|
|
"Basic face for unvisited links."
|
|
|
|
|
:group 'basic-faces
|
|
|
|
|
:version "22.1")
|
|
|
|
|
|
|
|
|
|
(defface link-visited
|
|
|
|
|
'((default :inherit link)
|
|
|
|
|
(((class color) (background light)) :foreground "magenta4")
|
|
|
|
|
(((class color) (background dark)) :foreground "violet"))
|
|
|
|
|
"Basic face for visited links."
|
|
|
|
|
:group 'basic-faces
|
|
|
|
|
:version "22.1")
|
|
|
|
|
|
2005-09-29 22:55:13 +00:00
|
|
|
|
(defface highlight
|
|
|
|
|
'((((class color) (min-colors 88) (background light))
|
|
|
|
|
:background "darkseagreen2")
|
|
|
|
|
(((class color) (min-colors 88) (background dark))
|
|
|
|
|
:background "darkolivegreen")
|
|
|
|
|
(((class color) (min-colors 16) (background light))
|
|
|
|
|
:background "darkseagreen2")
|
|
|
|
|
(((class color) (min-colors 16) (background dark))
|
|
|
|
|
:background "darkolivegreen")
|
|
|
|
|
(((class color) (min-colors 8))
|
|
|
|
|
:background "green" :foreground "black")
|
|
|
|
|
(t :inverse-video t))
|
|
|
|
|
"Basic face for highlighting."
|
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
2009-09-27 16:06:33 +00:00
|
|
|
|
;; Region face: under NS, default to the system-defined selection
|
|
|
|
|
;; color (optimized for the fixed white background of other apps),
|
|
|
|
|
;; if background is light.
|
2005-09-29 22:55:13 +00:00
|
|
|
|
(defface region
|
|
|
|
|
'((((class color) (min-colors 88) (background dark))
|
|
|
|
|
:background "blue3")
|
2010-08-11 18:28:10 +00:00
|
|
|
|
(((class color) (min-colors 88) (background light) (type gtk))
|
2013-11-01 15:47:10 +00:00
|
|
|
|
:distant-foreground "gtk_selection_fg_color"
|
2010-08-11 18:28:10 +00:00
|
|
|
|
:background "gtk_selection_bg_color")
|
2009-09-27 16:06:33 +00:00
|
|
|
|
(((class color) (min-colors 88) (background light) (type ns))
|
2013-11-01 15:47:10 +00:00
|
|
|
|
:distant-foreground "ns_selection_fg_color"
|
2013-09-28 10:01:50 +00:00
|
|
|
|
:background "ns_selection_bg_color")
|
2005-09-29 22:55:13 +00:00
|
|
|
|
(((class color) (min-colors 88) (background light))
|
|
|
|
|
:background "lightgoldenrod2")
|
|
|
|
|
(((class color) (min-colors 16) (background dark))
|
|
|
|
|
:background "blue3")
|
|
|
|
|
(((class color) (min-colors 16) (background light))
|
|
|
|
|
:background "lightgoldenrod2")
|
|
|
|
|
(((class color) (min-colors 8))
|
|
|
|
|
:background "blue" :foreground "white")
|
|
|
|
|
(((type tty) (class mono))
|
|
|
|
|
:inverse-video t)
|
|
|
|
|
(t :background "gray"))
|
|
|
|
|
"Basic face for highlighting the region."
|
|
|
|
|
:version "21.1"
|
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
|
|
|
|
(defface secondary-selection
|
|
|
|
|
'((((class color) (min-colors 88) (background light))
|
|
|
|
|
:background "yellow1")
|
|
|
|
|
(((class color) (min-colors 88) (background dark))
|
|
|
|
|
:background "SkyBlue4")
|
|
|
|
|
(((class color) (min-colors 16) (background light))
|
|
|
|
|
:background "yellow")
|
|
|
|
|
(((class color) (min-colors 16) (background dark))
|
|
|
|
|
:background "SkyBlue4")
|
|
|
|
|
(((class color) (min-colors 8))
|
|
|
|
|
:background "cyan" :foreground "black")
|
|
|
|
|
(t :inverse-video t))
|
|
|
|
|
"Basic face for displaying the secondary selection."
|
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
|
|
|
|
(defface trailing-whitespace
|
|
|
|
|
'((((class color) (background light))
|
|
|
|
|
:background "red1")
|
|
|
|
|
(((class color) (background dark))
|
|
|
|
|
:background "red1")
|
|
|
|
|
(t :inverse-video t))
|
|
|
|
|
"Basic face for highlighting trailing whitespace."
|
|
|
|
|
:version "21.1"
|
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
|
|
|
|
(defface escape-glyph
|
|
|
|
|
'((((background dark)) :foreground "cyan")
|
|
|
|
|
;; See the comment in minibuffer-prompt for
|
|
|
|
|
;; the reason not to use blue on MS-DOS.
|
|
|
|
|
(((type pc)) :foreground "magenta")
|
|
|
|
|
;; red4 is too dark, but some say blue is too loud.
|
|
|
|
|
;; brown seems to work ok. -- rms.
|
|
|
|
|
(t :foreground "brown"))
|
2006-08-05 04:42:57 +00:00
|
|
|
|
"Face for characters displayed as sequences using `^' or `\\'."
|
2005-09-29 22:55:13 +00:00
|
|
|
|
:group 'basic-faces
|
|
|
|
|
:version "22.1")
|
|
|
|
|
|
|
|
|
|
(defface nobreak-space
|
|
|
|
|
'((((class color) (min-colors 88)) :inherit escape-glyph :underline t)
|
|
|
|
|
(((class color) (min-colors 8)) :background "magenta")
|
|
|
|
|
(t :inverse-video t))
|
|
|
|
|
"Face for displaying nobreak space."
|
|
|
|
|
:group 'basic-faces
|
|
|
|
|
:version "22.1")
|
1994-10-17 07:31:52 +00:00
|
|
|
|
|
2006-01-16 23:45:34 +00:00
|
|
|
|
(defgroup mode-line-faces nil
|
|
|
|
|
"Faces used in the mode line."
|
2006-09-14 23:54:44 +00:00
|
|
|
|
:group 'mode-line
|
2006-01-16 23:45:34 +00:00
|
|
|
|
:group 'faces
|
|
|
|
|
:version "22.1")
|
|
|
|
|
|
1999-09-12 20:21:44 +00:00
|
|
|
|
(defface mode-line
|
2004-12-23 18:28:13 +00:00
|
|
|
|
'((((class color) (min-colors 88))
|
(face-spec-choose): Allow `t' to appear before the end.
(mode-line, tool-bar, minibuffer-prompt, region, fringe, bold, italic)
(bold-italic, underline, highlight, secondary-selection, fixed-pitch)
(variable-pitch, trailing-whitespace): Don't use the old-style entries.
(mode-line-inactive, header-line): Move the `t' section to the
beginning so the `:inherit' setting can be shared.
2002-03-04 23:00:28 +00:00
|
|
|
|
:box (:line-width -1 :style released-button)
|
|
|
|
|
:background "grey75" :foreground "black")
|
1999-07-21 21:43:52 +00:00
|
|
|
|
(t
|
(face-spec-choose): Allow `t' to appear before the end.
(mode-line, tool-bar, minibuffer-prompt, region, fringe, bold, italic)
(bold-italic, underline, highlight, secondary-selection, fixed-pitch)
(variable-pitch, trailing-whitespace): Don't use the old-style entries.
(mode-line-inactive, header-line): Move the `t' section to the
beginning so the `:inherit' setting can be shared.
2002-03-04 23:00:28 +00:00
|
|
|
|
:inverse-video t))
|
2002-02-08 23:51:56 +00:00
|
|
|
|
"Basic mode line face for selected window."
|
1999-09-13 13:59:58 +00:00
|
|
|
|
:version "21.1"
|
2006-01-16 23:45:34 +00:00
|
|
|
|
:group 'mode-line-faces
|
1999-07-21 21:43:52 +00:00
|
|
|
|
:group 'basic-faces)
|
1993-04-03 23:28:03 +00:00
|
|
|
|
|
2002-02-08 23:51:56 +00:00
|
|
|
|
(defface mode-line-inactive
|
2004-12-13 19:29:33 +00:00
|
|
|
|
'((default
|
(face-spec-choose): Allow `t' to appear before the end.
(mode-line, tool-bar, minibuffer-prompt, region, fringe, bold, italic)
(bold-italic, underline, highlight, secondary-selection, fixed-pitch)
(variable-pitch, trailing-whitespace): Don't use the old-style entries.
(mode-line-inactive, header-line): Move the `t' section to the
beginning so the `:inherit' setting can be shared.
2002-03-04 23:00:28 +00:00
|
|
|
|
:inherit mode-line)
|
2004-12-23 18:28:13 +00:00
|
|
|
|
(((class color) (min-colors 88) (background light))
|
2002-02-08 23:51:56 +00:00
|
|
|
|
:weight light
|
|
|
|
|
:box (:line-width -1 :color "grey75" :style nil)
|
|
|
|
|
:foreground "grey20" :background "grey90")
|
2004-12-23 18:28:13 +00:00
|
|
|
|
(((class color) (min-colors 88) (background dark) )
|
2002-02-12 02:59:39 +00:00
|
|
|
|
:weight light
|
|
|
|
|
:box (:line-width -1 :color "grey40" :style nil)
|
(face-spec-choose): Allow `t' to appear before the end.
(mode-line, tool-bar, minibuffer-prompt, region, fringe, bold, italic)
(bold-italic, underline, highlight, secondary-selection, fixed-pitch)
(variable-pitch, trailing-whitespace): Don't use the old-style entries.
(mode-line-inactive, header-line): Move the `t' section to the
beginning so the `:inherit' setting can be shared.
2002-03-04 23:00:28 +00:00
|
|
|
|
:foreground "grey80" :background "grey30"))
|
2002-02-08 23:51:56 +00:00
|
|
|
|
"Basic mode line face for non-selected windows."
|
2005-02-09 15:50:47 +00:00
|
|
|
|
:version "22.1"
|
2006-01-16 23:45:34 +00:00
|
|
|
|
:group 'mode-line-faces
|
|
|
|
|
:group 'basic-faces)
|
2009-09-02 03:06:25 +00:00
|
|
|
|
(define-obsolete-face-alias 'modeline-inactive 'mode-line-inactive "22.1")
|
2006-01-16 23:45:34 +00:00
|
|
|
|
|
|
|
|
|
(defface mode-line-highlight
|
|
|
|
|
'((((class color) (min-colors 88))
|
|
|
|
|
:box (:line-width 2 :color "grey40" :style released-button))
|
|
|
|
|
(t
|
|
|
|
|
:inherit highlight))
|
|
|
|
|
"Basic mode line face for highlighting."
|
|
|
|
|
:version "22.1"
|
|
|
|
|
:group 'mode-line-faces
|
|
|
|
|
:group 'basic-faces)
|
2009-09-02 03:06:25 +00:00
|
|
|
|
(define-obsolete-face-alias 'modeline-highlight 'mode-line-highlight "22.1")
|
2006-01-16 23:45:34 +00:00
|
|
|
|
|
2008-03-11 02:58:23 +00:00
|
|
|
|
(defface mode-line-emphasis
|
|
|
|
|
'((t (:weight bold)))
|
|
|
|
|
"Face used to emphasize certain mode line features.
|
|
|
|
|
Use the face `mode-line-highlight' for features that can be selected."
|
|
|
|
|
:version "23.1"
|
|
|
|
|
:group 'mode-line-faces
|
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
2006-01-16 23:45:34 +00:00
|
|
|
|
(defface mode-line-buffer-id
|
|
|
|
|
'((t (:weight bold)))
|
|
|
|
|
"Face used for buffer identification parts of the mode line."
|
|
|
|
|
:version "22.1"
|
|
|
|
|
:group 'mode-line-faces
|
2002-02-08 23:51:56 +00:00
|
|
|
|
:group 'basic-faces)
|
2009-09-02 03:06:25 +00:00
|
|
|
|
(define-obsolete-face-alias 'modeline-buffer-id 'mode-line-buffer-id "22.1")
|
1997-04-21 03:56:57 +00:00
|
|
|
|
|
1999-09-05 16:38:56 +00:00
|
|
|
|
(defface header-line
|
2004-12-13 19:29:33 +00:00
|
|
|
|
'((default
|
2004-04-16 12:51:06 +00:00
|
|
|
|
:inherit mode-line)
|
|
|
|
|
(((type tty))
|
2000-10-12 07:52:42 +00:00
|
|
|
|
;; This used to be `:inverse-video t', but that doesn't look very
|
|
|
|
|
;; good when combined with inverse-video mode-lines and multiple
|
|
|
|
|
;; windows. Underlining looks better, and is more consistent with
|
|
|
|
|
;; the window-system face variants, which deemphasize the
|
|
|
|
|
;; header-line in relation to the mode-line face. If a terminal
|
|
|
|
|
;; can't underline, then the header-line will end up without any
|
|
|
|
|
;; highlighting; this may be too confusing in general, although it
|
|
|
|
|
;; happens to look good with the only current use of header-lines,
|
|
|
|
|
;; the info browser. XXX
|
2004-04-16 12:51:06 +00:00
|
|
|
|
:inverse-video nil ;Override the value inherited from mode-line.
|
2002-07-03 07:09:44 +00:00
|
|
|
|
:underline t)
|
2000-10-23 04:50:20 +00:00
|
|
|
|
(((class color grayscale) (background light))
|
2000-11-14 09:02:02 +00:00
|
|
|
|
:background "grey90" :foreground "grey20"
|
2004-04-16 12:51:06 +00:00
|
|
|
|
:box nil)
|
2000-10-23 04:50:20 +00:00
|
|
|
|
(((class color grayscale) (background dark))
|
2000-11-14 09:02:02 +00:00
|
|
|
|
:background "grey20" :foreground "grey90"
|
2004-04-16 12:51:06 +00:00
|
|
|
|
:box nil)
|
2000-10-23 04:50:20 +00:00
|
|
|
|
(((class mono) (background light))
|
2000-11-14 09:02:02 +00:00
|
|
|
|
:background "white" :foreground "black"
|
|
|
|
|
:inverse-video nil
|
|
|
|
|
:box nil
|
2004-04-16 12:51:06 +00:00
|
|
|
|
:underline t)
|
2000-10-23 04:50:20 +00:00
|
|
|
|
(((class mono) (background dark))
|
2000-11-14 09:02:02 +00:00
|
|
|
|
:background "black" :foreground "white"
|
|
|
|
|
:inverse-video nil
|
|
|
|
|
:box nil
|
2004-04-16 12:51:06 +00:00
|
|
|
|
:underline t))
|
1999-09-05 16:38:56 +00:00
|
|
|
|
"Basic header-line face."
|
1999-09-13 13:59:58 +00:00
|
|
|
|
:version "21.1"
|
1999-07-21 21:43:52 +00:00
|
|
|
|
:group 'basic-faces)
|
1997-05-25 21:39:38 +00:00
|
|
|
|
|
2005-09-29 22:55:13 +00:00
|
|
|
|
(defface vertical-border
|
|
|
|
|
'((((type tty)) :inherit mode-line-inactive))
|
|
|
|
|
"Face used for vertical window dividers on ttys."
|
|
|
|
|
:version "22.1"
|
1999-07-21 21:43:52 +00:00
|
|
|
|
:group 'basic-faces)
|
1997-04-21 03:56:57 +00:00
|
|
|
|
|
2014-02-04 07:36:58 +00:00
|
|
|
|
(defface window-divider '((t :foreground "gray60"))
|
|
|
|
|
"Basic face for window dividers.
|
|
|
|
|
When a divider is less than 3 pixels wide, it is drawn solidly
|
|
|
|
|
with the foreground of this face. For larger dividers this face
|
|
|
|
|
is used for the inner part while the first pixel line/column is
|
|
|
|
|
drawn with the `window-divider-first-pixel' face and the last
|
|
|
|
|
pixel line/column with the `window-divider-last-pixel' face."
|
|
|
|
|
:version "24.4"
|
2015-07-02 07:03:45 +00:00
|
|
|
|
:group 'window-divider
|
2014-02-04 07:36:58 +00:00
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
|
|
|
|
(defface window-divider-first-pixel
|
|
|
|
|
'((t :foreground "gray80"))
|
|
|
|
|
"Basic face for first pixel line/column of window dividers.
|
|
|
|
|
When a divider is at least 3 pixels wide, its first pixel
|
|
|
|
|
line/column is drawn with the foreground of this face. If you do
|
|
|
|
|
not want to accentuate the first pixel line/column, set this to
|
|
|
|
|
the same as `window-divider' face."
|
|
|
|
|
:version "24.4"
|
2015-07-02 07:03:45 +00:00
|
|
|
|
:group 'window-divider
|
2014-02-04 07:36:58 +00:00
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
|
|
|
|
(defface window-divider-last-pixel
|
|
|
|
|
'((t :foreground "gray40"))
|
|
|
|
|
"Basic face for last pixel line/column of window dividers.
|
|
|
|
|
When a divider is at least 3 pixels wide, its last pixel
|
|
|
|
|
line/column is drawn with the foreground of this face. If you do
|
|
|
|
|
not want to accentuate the last pixel line/column, set this to
|
|
|
|
|
the same as `window-divider' face."
|
|
|
|
|
:version "24.4"
|
2015-07-02 07:03:45 +00:00
|
|
|
|
:group 'window-divider
|
2014-02-04 07:36:58 +00:00
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
2005-08-23 21:01:24 +00:00
|
|
|
|
(defface minibuffer-prompt
|
|
|
|
|
'((((background dark)) :foreground "cyan")
|
|
|
|
|
;; Don't use blue because many users of the MS-DOS port customize
|
|
|
|
|
;; their foreground color to be blue.
|
|
|
|
|
(((type pc)) :foreground "magenta")
|
2007-03-04 17:44:42 +00:00
|
|
|
|
(t :foreground "medium blue"))
|
2005-08-23 21:01:24 +00:00
|
|
|
|
"Face for minibuffer prompts.
|
|
|
|
|
By default, Emacs automatically adds this face to the value of
|
|
|
|
|
`minibuffer-prompt-properties', which is a list of text properties
|
|
|
|
|
used to display the prompt text."
|
2005-02-09 15:50:47 +00:00
|
|
|
|
:version "22.1"
|
2001-12-24 16:39:31 +00:00
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
|
|
|
|
(setq minibuffer-prompt-properties
|
|
|
|
|
(append minibuffer-prompt-properties (list 'face 'minibuffer-prompt)))
|
|
|
|
|
|
1999-09-07 14:48:52 +00:00
|
|
|
|
(defface fringe
|
2000-06-26 15:05:34 +00:00
|
|
|
|
'((((class color) (background light))
|
(face-spec-choose): Allow `t' to appear before the end.
(mode-line, tool-bar, minibuffer-prompt, region, fringe, bold, italic)
(bold-italic, underline, highlight, secondary-selection, fixed-pitch)
(variable-pitch, trailing-whitespace): Don't use the old-style entries.
(mode-line-inactive, header-line): Move the `t' section to the
beginning so the `:inherit' setting can be shared.
2002-03-04 23:00:28 +00:00
|
|
|
|
:background "grey95")
|
|
|
|
|
(((class color) (background dark))
|
|
|
|
|
:background "grey10")
|
|
|
|
|
(t
|
|
|
|
|
:background "gray"))
|
1999-09-07 14:48:52 +00:00
|
|
|
|
"Basic face for the fringes to the left and right of windows under X."
|
|
|
|
|
:version "21.1"
|
2000-02-16 22:58:42 +00:00
|
|
|
|
:group 'frames
|
1999-09-07 14:48:52 +00:00
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
2006-04-21 23:36:59 +00:00
|
|
|
|
(defface scroll-bar '((t nil))
|
1999-09-07 14:48:52 +00:00
|
|
|
|
"Basic face for the scroll bar colors under X."
|
|
|
|
|
:version "21.1"
|
2000-02-16 22:58:42 +00:00
|
|
|
|
:group 'frames
|
1999-09-07 14:48:52 +00:00
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
2006-04-21 23:36:59 +00:00
|
|
|
|
(defface border '((t nil))
|
1999-09-07 14:48:52 +00:00
|
|
|
|
"Basic face for the frame border under X."
|
|
|
|
|
:version "21.1"
|
2000-02-16 22:58:42 +00:00
|
|
|
|
:group 'frames
|
1999-09-07 14:48:52 +00:00
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
2010-10-14 03:55:18 +00:00
|
|
|
|
(defface cursor
|
|
|
|
|
'((((background light)) :background "black")
|
|
|
|
|
(((background dark)) :background "white"))
|
2004-09-14 19:57:52 +00:00
|
|
|
|
"Basic face for the cursor color under X.
|
2011-10-18 06:17:05 +00:00
|
|
|
|
Currently, only the `:background' attribute is meaningful; all
|
|
|
|
|
other attributes are ignored. The cursor foreground color is
|
|
|
|
|
taken from the background color of the underlying text.
|
|
|
|
|
|
2004-09-14 19:57:52 +00:00
|
|
|
|
Note: Other faces cannot inherit from the cursor face."
|
1999-09-07 14:48:52 +00:00
|
|
|
|
:version "21.1"
|
2000-02-16 22:58:42 +00:00
|
|
|
|
:group 'cursor
|
1999-09-07 14:48:52 +00:00
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
2004-09-14 19:57:52 +00:00
|
|
|
|
(put 'cursor 'face-no-inherit t)
|
1999-09-07 14:48:52 +00:00
|
|
|
|
|
2006-04-21 23:36:59 +00:00
|
|
|
|
(defface mouse '((t nil))
|
1999-09-07 14:48:52 +00:00
|
|
|
|
"Basic face for the mouse color under X."
|
1999-07-30 18:03:23 +00:00
|
|
|
|
:version "21.1"
|
2000-02-16 22:58:42 +00:00
|
|
|
|
:group 'mouse
|
1999-07-21 21:43:52 +00:00
|
|
|
|
:group 'basic-faces)
|
1993-05-11 19:14:34 +00:00
|
|
|
|
|
2005-09-29 22:55:13 +00:00
|
|
|
|
(defface tool-bar
|
|
|
|
|
'((default
|
|
|
|
|
:box (:line-width 1 :style released-button)
|
|
|
|
|
:foreground "black")
|
2008-07-27 18:24:48 +00:00
|
|
|
|
(((type x w32 ns) (class color))
|
2005-09-29 22:55:13 +00:00
|
|
|
|
:background "grey75")
|
|
|
|
|
(((type x) (class mono))
|
|
|
|
|
:background "grey"))
|
|
|
|
|
"Basic tool-bar face."
|
|
|
|
|
:version "21.1"
|
1999-07-21 21:43:52 +00:00
|
|
|
|
:group 'basic-faces)
|
1993-05-11 19:14:34 +00:00
|
|
|
|
|
2005-09-29 22:55:13 +00:00
|
|
|
|
(defface menu
|
|
|
|
|
'((((type tty))
|
|
|
|
|
:inverse-video t)
|
|
|
|
|
(((type x-toolkit))
|
|
|
|
|
)
|
2002-06-10 02:15:24 +00:00
|
|
|
|
(t
|
2005-09-29 22:55:13 +00:00
|
|
|
|
:inverse-video t))
|
|
|
|
|
"Basic face for the font and colors of the menu bar and popup menus."
|
1999-09-13 13:59:58 +00:00
|
|
|
|
:version "21.1"
|
2005-09-29 22:55:13 +00:00
|
|
|
|
:group 'menu
|
1999-09-13 13:59:58 +00:00
|
|
|
|
:group 'basic-faces)
|
1993-04-03 23:28:03 +00:00
|
|
|
|
|
2012-08-26 02:57:07 +00:00
|
|
|
|
(defface help-argument-name '((t :inherit italic))
|
2009-08-13 15:59:34 +00:00
|
|
|
|
"Face to highlight argument names in *Help* buffers."
|
|
|
|
|
:group 'help)
|
2010-10-29 00:50:13 +00:00
|
|
|
|
|
2010-11-01 04:09:26 +00:00
|
|
|
|
(defface glyphless-char
|
|
|
|
|
'((((type tty)) :inherit underline)
|
2010-11-20 11:47:49 +00:00
|
|
|
|
(((type pc)) :inherit escape-glyph)
|
2010-11-01 04:09:26 +00:00
|
|
|
|
(t :height 0.6))
|
2010-10-29 00:50:13 +00:00
|
|
|
|
"Face for displaying non-graphic characters (e.g. U+202A (LRE)).
|
|
|
|
|
It is used for characters of no fonts too."
|
|
|
|
|
:version "24.1"
|
|
|
|
|
:group 'basic-faces)
|
2011-08-18 11:36:19 +00:00
|
|
|
|
|
|
|
|
|
(defface error
|
Face cleanups. Remove some uses of old-style face spec and :bold/:italic.
* faces.el (set-face-attribute): Doc fix.
(modify-face): Don't use :bold and :italic.
(error, warning, success): Tweak definitions.
* cus-edit.el (custom-modified, custom-invalid, custom-rogue)
(custom-modified, custom-set, custom-changed, custom-themed)
(custom-saved, custom-button, custom-button-mouse)
(custom-button-pressed, custom-state, custom-comment-tag)
(custom-variable-tag, custom-group-tag-1, custom-group-tag)
(custom-group-subtitle): Use new-style face specs.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face): Remove obsolete face alias.
* epa.el (epa-validity-high, epa-validity-medium)
(epa-validity-low, epa-mark, epa-field-name, epa-string)
(epa-field-name, epa-field-body):
* font-lock.el (font-lock-comment-face, font-lock-string-face)
(font-lock-keyword-face, font-lock-builtin-face)
(font-lock-function-name-face, font-lock-variable-name-face)
(font-lock-type-face, font-lock-constant-face):
* ido.el (ido-first-match, ido-only-match, ido-subdir)
(ido-virtual, ido-indicator, ido-incomplete-regexp):
* speedbar.el (speedbar-button-face, speedbar-file-face)
(speedbar-directory-face, speedbar-tag-face)
(speedbar-selected-face, speedbar-highlight-face)
(speedbar-separator-face):
* whitespace.el (whitespace-newline, whitespace-space)
(whitespace-hspace, whitespace-tab, whitespace-trailing)
(whitespace-line, whitespace-space-before-tab)
(whitespace-space-after-tab, whitespace-indentation)
(whitespace-empty):
* emulation/cua-base.el (cua-global-mark):
* eshell/em-prompt.el (eshell-prompt):
* net/newst-plainview.el (newsticker-new-item-face)
(newsticker-old-item-face, newsticker-immortal-item-face)
(newsticker-obsolete-item-face, newsticker-date-face)
(newsticker-statistics-face, newsticker-default-face):
* net/newst-reader.el (newsticker-feed-face)
(newsticker-extra-face, newsticker-enclosure-face):
* net/newst-treeview.el (newsticker-treeview-face)
(newsticker-treeview-new-face, newsticker-treeview-old-face)
(newsticker-treeview-immortal-face)
(newsticker-treeview-obsolete-face)
(newsticker-treeview-selection-face):
* net/rcirc.el (rcirc-my-nick, rcirc-other-nick)
(rcirc-bright-nick, rcirc-server, rcirc-timestamp)
(rcirc-nick-in-message, rcirc-nick-in-message-full-line)
(rcirc-prompt, rcirc-track-keyword, rcirc-url, rcirc-keyword):
* nxml/nxml-outln.el (nxml-heading, nxml-outline-indicator)
(nxml-outline-active-indicator, nxml-outline-ellipsis):
* play/mpuz.el (mpuz-unsolved, mpuz-solved, mpuz-trivial)
(mpuz-text):
* progmodes/vera-mode.el (vera-font-lock-number)
(vera-font-lock-function, vera-font-lock-interface):
* textmodes/table.el (table-cell): Use new-style face specs, and
don't use the old :bold and :italic attributes.
* erc-button.el (erc-button):
* erc-goodies.el (erc-bold-face, erc-inverse-face)
(erc-underline-face, fg:erc-color-*):
* erc-match.el (erc-current-nick-face, erc-dangerous-host-face)
(erc-pal-face, erc-fool-face, erc-keyword-face):
* erc-stamp.el (erc-timestamp-face): Likewise.
* erc.el (erc-direct-msg-face, erc-header-line, erc-input-face)
(erc-command-indicator-face, erc-notice-face, erc-action-face)
(erc-error-face, erc-my-nick-face, erc-nick-default-face)
(erc-nick-msg-face): Use new-style face specs, and avoid :bold.
* progmodes/ebrowse.el (ebrowse-tree-mark, ebrowse-root-class)
(ebrowse-member-attribute, ebrowse-default, ebrowse-file-name)
(ebrowse-member-class, ebrowse-progress): Likewise.
(ebrowse-tree-mark-face, ebrowse-root-class-face)
(ebrowse-file-name-face, ebrowse-default-face)
(ebrowse-member-attribute-face, ebrowse-member-class-face)
(ebrowse-progress-face): Remove obsolete faces.
* progmodes/flymake.el (flymake-errline, flymake-warnline):
Inherit from error and warning faces respectively.
* textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate):
Likewise.
(flyspell-incorrect-face, flyspell-duplicate-face): Remove
obsolete aliases.
* display.texi (Face Attributes): Font family does not accept
wildcards. De-document obsolete :bold and :italic attributes.
(Defining Faces): Use new-style face spec format.
2012-06-08 16:39:49 +00:00
|
|
|
|
'((default :weight bold)
|
|
|
|
|
(((class color) (min-colors 88) (background light)) :foreground "Red1")
|
|
|
|
|
(((class color) (min-colors 88) (background dark)) :foreground "Pink")
|
|
|
|
|
(((class color) (min-colors 16) (background light)) :foreground "Red1")
|
|
|
|
|
(((class color) (min-colors 16) (background dark)) :foreground "Pink")
|
|
|
|
|
(((class color) (min-colors 8)) :foreground "red")
|
|
|
|
|
(t :inverse-video t))
|
2011-08-18 11:36:19 +00:00
|
|
|
|
"Basic face used to highlight errors and to denote failure."
|
|
|
|
|
:version "24.1"
|
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
|
|
|
|
(defface warning
|
Face cleanups. Remove some uses of old-style face spec and :bold/:italic.
* faces.el (set-face-attribute): Doc fix.
(modify-face): Don't use :bold and :italic.
(error, warning, success): Tweak definitions.
* cus-edit.el (custom-modified, custom-invalid, custom-rogue)
(custom-modified, custom-set, custom-changed, custom-themed)
(custom-saved, custom-button, custom-button-mouse)
(custom-button-pressed, custom-state, custom-comment-tag)
(custom-variable-tag, custom-group-tag-1, custom-group-tag)
(custom-group-subtitle): Use new-style face specs.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face): Remove obsolete face alias.
* epa.el (epa-validity-high, epa-validity-medium)
(epa-validity-low, epa-mark, epa-field-name, epa-string)
(epa-field-name, epa-field-body):
* font-lock.el (font-lock-comment-face, font-lock-string-face)
(font-lock-keyword-face, font-lock-builtin-face)
(font-lock-function-name-face, font-lock-variable-name-face)
(font-lock-type-face, font-lock-constant-face):
* ido.el (ido-first-match, ido-only-match, ido-subdir)
(ido-virtual, ido-indicator, ido-incomplete-regexp):
* speedbar.el (speedbar-button-face, speedbar-file-face)
(speedbar-directory-face, speedbar-tag-face)
(speedbar-selected-face, speedbar-highlight-face)
(speedbar-separator-face):
* whitespace.el (whitespace-newline, whitespace-space)
(whitespace-hspace, whitespace-tab, whitespace-trailing)
(whitespace-line, whitespace-space-before-tab)
(whitespace-space-after-tab, whitespace-indentation)
(whitespace-empty):
* emulation/cua-base.el (cua-global-mark):
* eshell/em-prompt.el (eshell-prompt):
* net/newst-plainview.el (newsticker-new-item-face)
(newsticker-old-item-face, newsticker-immortal-item-face)
(newsticker-obsolete-item-face, newsticker-date-face)
(newsticker-statistics-face, newsticker-default-face):
* net/newst-reader.el (newsticker-feed-face)
(newsticker-extra-face, newsticker-enclosure-face):
* net/newst-treeview.el (newsticker-treeview-face)
(newsticker-treeview-new-face, newsticker-treeview-old-face)
(newsticker-treeview-immortal-face)
(newsticker-treeview-obsolete-face)
(newsticker-treeview-selection-face):
* net/rcirc.el (rcirc-my-nick, rcirc-other-nick)
(rcirc-bright-nick, rcirc-server, rcirc-timestamp)
(rcirc-nick-in-message, rcirc-nick-in-message-full-line)
(rcirc-prompt, rcirc-track-keyword, rcirc-url, rcirc-keyword):
* nxml/nxml-outln.el (nxml-heading, nxml-outline-indicator)
(nxml-outline-active-indicator, nxml-outline-ellipsis):
* play/mpuz.el (mpuz-unsolved, mpuz-solved, mpuz-trivial)
(mpuz-text):
* progmodes/vera-mode.el (vera-font-lock-number)
(vera-font-lock-function, vera-font-lock-interface):
* textmodes/table.el (table-cell): Use new-style face specs, and
don't use the old :bold and :italic attributes.
* erc-button.el (erc-button):
* erc-goodies.el (erc-bold-face, erc-inverse-face)
(erc-underline-face, fg:erc-color-*):
* erc-match.el (erc-current-nick-face, erc-dangerous-host-face)
(erc-pal-face, erc-fool-face, erc-keyword-face):
* erc-stamp.el (erc-timestamp-face): Likewise.
* erc.el (erc-direct-msg-face, erc-header-line, erc-input-face)
(erc-command-indicator-face, erc-notice-face, erc-action-face)
(erc-error-face, erc-my-nick-face, erc-nick-default-face)
(erc-nick-msg-face): Use new-style face specs, and avoid :bold.
* progmodes/ebrowse.el (ebrowse-tree-mark, ebrowse-root-class)
(ebrowse-member-attribute, ebrowse-default, ebrowse-file-name)
(ebrowse-member-class, ebrowse-progress): Likewise.
(ebrowse-tree-mark-face, ebrowse-root-class-face)
(ebrowse-file-name-face, ebrowse-default-face)
(ebrowse-member-attribute-face, ebrowse-member-class-face)
(ebrowse-progress-face): Remove obsolete faces.
* progmodes/flymake.el (flymake-errline, flymake-warnline):
Inherit from error and warning faces respectively.
* textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate):
Likewise.
(flyspell-incorrect-face, flyspell-duplicate-face): Remove
obsolete aliases.
* display.texi (Face Attributes): Font family does not accept
wildcards. De-document obsolete :bold and :italic attributes.
(Defining Faces): Use new-style face spec format.
2012-06-08 16:39:49 +00:00
|
|
|
|
'((default :weight bold)
|
|
|
|
|
(((class color) (min-colors 16)) :foreground "DarkOrange")
|
|
|
|
|
(((class color)) :foreground "yellow"))
|
2011-08-18 11:36:19 +00:00
|
|
|
|
"Basic face used to highlight warnings."
|
|
|
|
|
:version "24.1"
|
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
|
|
|
|
(defface success
|
Face cleanups. Remove some uses of old-style face spec and :bold/:italic.
* faces.el (set-face-attribute): Doc fix.
(modify-face): Don't use :bold and :italic.
(error, warning, success): Tweak definitions.
* cus-edit.el (custom-modified, custom-invalid, custom-rogue)
(custom-modified, custom-set, custom-changed, custom-themed)
(custom-saved, custom-button, custom-button-mouse)
(custom-button-pressed, custom-state, custom-comment-tag)
(custom-variable-tag, custom-group-tag-1, custom-group-tag)
(custom-group-subtitle): Use new-style face specs.
(custom-invalid-face, custom-rogue-face, custom-modified-face)
(custom-set-face, custom-changed-face, custom-saved-face)
(custom-button-face, custom-button-pressed-face)
(custom-documentation-face, custom-state-face)
(custom-comment-face, custom-comment-tag-face)
(custom-variable-tag-face, custom-variable-button-face)
(custom-face-tag-face, custom-group-tag-face-1)
(custom-group-tag-face): Remove obsolete face alias.
* epa.el (epa-validity-high, epa-validity-medium)
(epa-validity-low, epa-mark, epa-field-name, epa-string)
(epa-field-name, epa-field-body):
* font-lock.el (font-lock-comment-face, font-lock-string-face)
(font-lock-keyword-face, font-lock-builtin-face)
(font-lock-function-name-face, font-lock-variable-name-face)
(font-lock-type-face, font-lock-constant-face):
* ido.el (ido-first-match, ido-only-match, ido-subdir)
(ido-virtual, ido-indicator, ido-incomplete-regexp):
* speedbar.el (speedbar-button-face, speedbar-file-face)
(speedbar-directory-face, speedbar-tag-face)
(speedbar-selected-face, speedbar-highlight-face)
(speedbar-separator-face):
* whitespace.el (whitespace-newline, whitespace-space)
(whitespace-hspace, whitespace-tab, whitespace-trailing)
(whitespace-line, whitespace-space-before-tab)
(whitespace-space-after-tab, whitespace-indentation)
(whitespace-empty):
* emulation/cua-base.el (cua-global-mark):
* eshell/em-prompt.el (eshell-prompt):
* net/newst-plainview.el (newsticker-new-item-face)
(newsticker-old-item-face, newsticker-immortal-item-face)
(newsticker-obsolete-item-face, newsticker-date-face)
(newsticker-statistics-face, newsticker-default-face):
* net/newst-reader.el (newsticker-feed-face)
(newsticker-extra-face, newsticker-enclosure-face):
* net/newst-treeview.el (newsticker-treeview-face)
(newsticker-treeview-new-face, newsticker-treeview-old-face)
(newsticker-treeview-immortal-face)
(newsticker-treeview-obsolete-face)
(newsticker-treeview-selection-face):
* net/rcirc.el (rcirc-my-nick, rcirc-other-nick)
(rcirc-bright-nick, rcirc-server, rcirc-timestamp)
(rcirc-nick-in-message, rcirc-nick-in-message-full-line)
(rcirc-prompt, rcirc-track-keyword, rcirc-url, rcirc-keyword):
* nxml/nxml-outln.el (nxml-heading, nxml-outline-indicator)
(nxml-outline-active-indicator, nxml-outline-ellipsis):
* play/mpuz.el (mpuz-unsolved, mpuz-solved, mpuz-trivial)
(mpuz-text):
* progmodes/vera-mode.el (vera-font-lock-number)
(vera-font-lock-function, vera-font-lock-interface):
* textmodes/table.el (table-cell): Use new-style face specs, and
don't use the old :bold and :italic attributes.
* erc-button.el (erc-button):
* erc-goodies.el (erc-bold-face, erc-inverse-face)
(erc-underline-face, fg:erc-color-*):
* erc-match.el (erc-current-nick-face, erc-dangerous-host-face)
(erc-pal-face, erc-fool-face, erc-keyword-face):
* erc-stamp.el (erc-timestamp-face): Likewise.
* erc.el (erc-direct-msg-face, erc-header-line, erc-input-face)
(erc-command-indicator-face, erc-notice-face, erc-action-face)
(erc-error-face, erc-my-nick-face, erc-nick-default-face)
(erc-nick-msg-face): Use new-style face specs, and avoid :bold.
* progmodes/ebrowse.el (ebrowse-tree-mark, ebrowse-root-class)
(ebrowse-member-attribute, ebrowse-default, ebrowse-file-name)
(ebrowse-member-class, ebrowse-progress): Likewise.
(ebrowse-tree-mark-face, ebrowse-root-class-face)
(ebrowse-file-name-face, ebrowse-default-face)
(ebrowse-member-attribute-face, ebrowse-member-class-face)
(ebrowse-progress-face): Remove obsolete faces.
* progmodes/flymake.el (flymake-errline, flymake-warnline):
Inherit from error and warning faces respectively.
* textmodes/flyspell.el (flyspell-incorrect, flyspell-duplicate):
Likewise.
(flyspell-incorrect-face, flyspell-duplicate-face): Remove
obsolete aliases.
* display.texi (Face Attributes): Font family does not accept
wildcards. De-document obsolete :bold and :italic attributes.
(Defining Faces): Use new-style face spec format.
2012-06-08 16:39:49 +00:00
|
|
|
|
'((default :weight bold)
|
|
|
|
|
(((class color) (min-colors 16) (background light)) :foreground "ForestGreen")
|
|
|
|
|
(((class color) (min-colors 88) (background dark)) :foreground "Green1")
|
|
|
|
|
(((class color) (min-colors 16) (background dark)) :foreground "Green")
|
|
|
|
|
(((class color)) :foreground "green"))
|
2011-08-18 11:36:19 +00:00
|
|
|
|
"Basic face used to indicate successful operation."
|
|
|
|
|
:version "24.1"
|
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
2013-09-28 11:04:49 +00:00
|
|
|
|
;; Faces for TTY menus.
|
|
|
|
|
(defface tty-menu-enabled-face
|
|
|
|
|
'((t
|
|
|
|
|
:foreground "yellow" :background "blue" :weight bold))
|
|
|
|
|
"Face for displaying enabled items in TTY menus."
|
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
|
|
|
|
(defface tty-menu-disabled-face
|
|
|
|
|
'((((class color) (min-colors 16))
|
|
|
|
|
:foreground "lightgray" :background "blue")
|
|
|
|
|
(t
|
|
|
|
|
:foreground "white" :background "blue"))
|
|
|
|
|
"Face for displaying disabled items in TTY menus."
|
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
|
|
|
|
(defface tty-menu-selected-face
|
|
|
|
|
'((t :background "red"))
|
|
|
|
|
"Face for displaying the currently selected item in TTY menus."
|
|
|
|
|
:group 'basic-faces)
|
|
|
|
|
|
2013-12-13 04:14:17 +00:00
|
|
|
|
(defgroup paren-showing-faces nil
|
|
|
|
|
"Faces used to highlight paren matches."
|
|
|
|
|
:group 'paren-showing
|
|
|
|
|
:group 'faces
|
|
|
|
|
:version "22.1")
|
|
|
|
|
|
|
|
|
|
(defface show-paren-match
|
|
|
|
|
'((((class color) (background light))
|
|
|
|
|
:background "turquoise") ; looks OK on tty (becomes cyan)
|
|
|
|
|
(((class color) (background dark))
|
|
|
|
|
:background "steelblue3") ; looks OK on tty (becomes blue)
|
|
|
|
|
(((background dark))
|
|
|
|
|
:background "grey50")
|
|
|
|
|
(t
|
|
|
|
|
:background "gray"))
|
|
|
|
|
"Face used for a matching paren."
|
|
|
|
|
:group 'paren-showing-faces)
|
|
|
|
|
|
|
|
|
|
(defface show-paren-mismatch
|
|
|
|
|
'((((class color)) (:foreground "white" :background "purple"))
|
|
|
|
|
(t (:inverse-video t)))
|
|
|
|
|
"Face used for a mismatching paren."
|
|
|
|
|
:group 'paren-showing-faces)
|
|
|
|
|
|
1993-04-03 23:28:03 +00:00
|
|
|
|
|
1999-07-21 21:43:52 +00:00
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
;;; Manipulating font names.
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
|
|
|
|
2011-11-15 07:55:13 +00:00
|
|
|
|
;; This is here for compatibility with Emacs 20.2. For example,
|
2000-05-14 15:30:59 +00:00
|
|
|
|
;; international/fontset.el uses x-resolve-font-name. The following
|
|
|
|
|
;; functions are not used in the face implementation itself.
|
1993-04-03 23:28:03 +00:00
|
|
|
|
|
1996-12-16 01:33:02 +00:00
|
|
|
|
(defvar x-font-regexp nil)
|
|
|
|
|
(defvar x-font-regexp-head nil)
|
|
|
|
|
(defvar x-font-regexp-weight nil)
|
|
|
|
|
(defvar x-font-regexp-slant nil)
|
1993-04-03 23:28:03 +00:00
|
|
|
|
|
1995-07-25 22:06:08 +00:00
|
|
|
|
(defconst x-font-regexp-weight-subnum 1)
|
|
|
|
|
(defconst x-font-regexp-slant-subnum 2)
|
|
|
|
|
(defconst x-font-regexp-swidth-subnum 3)
|
|
|
|
|
(defconst x-font-regexp-adstyle-subnum 4)
|
|
|
|
|
|
1993-04-03 23:28:03 +00:00
|
|
|
|
;;; Regexps matching font names in "Host Portable Character Representation."
|
|
|
|
|
;;;
|
|
|
|
|
(let ((- "[-?]")
|
|
|
|
|
(foundry "[^-]+")
|
|
|
|
|
(family "[^-]+")
|
|
|
|
|
(weight "\\(bold\\|demibold\\|medium\\)") ; 1
|
|
|
|
|
; (weight\? "\\(\\*\\|bold\\|demibold\\|medium\\|\\)") ; 1
|
|
|
|
|
(weight\? "\\([^-]*\\)") ; 1
|
|
|
|
|
(slant "\\([ior]\\)") ; 2
|
|
|
|
|
; (slant\? "\\([ior?*]?\\)") ; 2
|
|
|
|
|
(slant\? "\\([^-]?\\)") ; 2
|
|
|
|
|
; (swidth "\\(\\*\\|normal\\|semicondensed\\|\\)") ; 3
|
|
|
|
|
(swidth "\\([^-]*\\)") ; 3
|
|
|
|
|
; (adstyle "\\(\\*\\|sans\\|\\)") ; 4
|
1995-07-27 19:10:36 +00:00
|
|
|
|
(adstyle "\\([^-]*\\)") ; 4
|
1993-04-03 23:28:03 +00:00
|
|
|
|
(pixelsize "[0-9]+")
|
|
|
|
|
(pointsize "[0-9][0-9]+")
|
|
|
|
|
(resx "[0-9][0-9]+")
|
|
|
|
|
(resy "[0-9][0-9]+")
|
|
|
|
|
(spacing "[cmp?*]")
|
|
|
|
|
(avgwidth "[0-9]+")
|
|
|
|
|
(registry "[^-]+")
|
|
|
|
|
(encoding "[^-]+")
|
|
|
|
|
)
|
|
|
|
|
(setq x-font-regexp
|
* textmodes/tex-mode.el (tex-alt-dvi-print-command)
(tex-dvi-print-command, tex-bibtex-command, tex-start-commands)
(tex-start-options, slitex-run-command, latex-run-command)
(tex-run-command, tex-directory):
* textmodes/ispell.el (ispell-html-skip-alists)
(ispell-tex-skip-alists, ispell-tex-skip-alists):
* textmodes/fill.el (adaptive-fill-first-line-regexp):
(adaptive-fill-regexp):
* textmodes/dns-mode.el (auto-mode-alist):
* progmodes/python.el (interpreter-mode-alist):
* progmodes/etags.el (tags-compression-info-list):
* progmodes/etags.el (tags-file-name):
* net/browse-url.el (browse-url-galeon-program)
(browse-url-firefox-program):
* mail/sendmail.el (mail-signature-file)
(mail-citation-prefix-regexp):
* international/mule-conf.el (eight-bit):
* international/latexenc.el (latex-inputenc-coding-alist):
* international/fontset.el (x-pixel-size-width-font-regexp):
* emacs-lisp/warnings.el (warning-type-format):
* emacs-lisp/trace.el (trace-buffer):
* emacs-lisp/lisp-mode.el (lisp-interaction-mode-map)
(emacs-lisp-mode-map):
* calendar/holidays.el (holiday-solar-holidays)
(holiday-bahai-holidays, holiday-islamic-holidays)
(holiday-christian-holidays, holiday-hebrew-holidays)
(hebrew-holidays-4, hebrew-holidays-3, hebrew-holidays-2)
(hebrew-holidays-1, holiday-oriental-holidays)
(holiday-general-holidays):
* x-dnd.el (x-dnd-known-types):
* tool-bar.el (tool-bar):
* startup.el (site-run-file):
* shell.el (shell-dumb-shell-regexp):
* rfn-eshadow.el (file-name-shadow-tty-properties)
(file-name-shadow-properties):
* paths.el (remote-shell-program, news-directory):
* mouse.el ([C-down-mouse-3]):
* menu-bar.el (menu-bar-tools-menu):
* jka-cmpr-hook.el (jka-compr-load-suffixes)
(jka-compr-mode-alist-additions, jka-compr-compression-info-list)
(jka-compr-compression-info-list):
* isearch.el (search-whitespace-regexp):
* image-file.el (image-file-name-extensions):
* find-dired.el (find-ls-option):
* files.el (directory-listing-before-filename-regexp)
(directory-free-space-args, insert-directory-program)
(list-directory-brief-switches, magic-fallback-mode-alist)
(magic-fallback-mode-alist, auto-mode-interpreter-regexp)
(automount-dir-prefix):
* faces.el (face-x-resources, x-font-regexp, x-font-regexp-head)
(x-font-regexp-slant, x-font-regexp-weight, face-x-resources)
(face-font-registry-alternatives, face-font-registry-alternatives)
(face-font-family-alternatives):
* facemenu.el (facemenu-add-new-face, facemenu-background-menu)
(facemenu-foreground-menu, facemenu-face-menu):
* epa-hook.el (epa-file-name-regexp):
* dnd.el (dnd-protocol-alist):
* textmodes/rst.el (auto-mode-alist):
* button.el (default-button): Purecopy strings.
2009-11-06 05:16:23 +00:00
|
|
|
|
(purecopy (concat "\\`\\*?[-?*]"
|
1993-04-03 23:28:03 +00:00
|
|
|
|
foundry - family - weight\? - slant\? - swidth - adstyle -
|
1995-07-02 08:34:02 +00:00
|
|
|
|
pixelsize - pointsize - resx - resy - spacing - avgwidth -
|
|
|
|
|
registry - encoding "\\*?\\'"
|
* textmodes/tex-mode.el (tex-alt-dvi-print-command)
(tex-dvi-print-command, tex-bibtex-command, tex-start-commands)
(tex-start-options, slitex-run-command, latex-run-command)
(tex-run-command, tex-directory):
* textmodes/ispell.el (ispell-html-skip-alists)
(ispell-tex-skip-alists, ispell-tex-skip-alists):
* textmodes/fill.el (adaptive-fill-first-line-regexp):
(adaptive-fill-regexp):
* textmodes/dns-mode.el (auto-mode-alist):
* progmodes/python.el (interpreter-mode-alist):
* progmodes/etags.el (tags-compression-info-list):
* progmodes/etags.el (tags-file-name):
* net/browse-url.el (browse-url-galeon-program)
(browse-url-firefox-program):
* mail/sendmail.el (mail-signature-file)
(mail-citation-prefix-regexp):
* international/mule-conf.el (eight-bit):
* international/latexenc.el (latex-inputenc-coding-alist):
* international/fontset.el (x-pixel-size-width-font-regexp):
* emacs-lisp/warnings.el (warning-type-format):
* emacs-lisp/trace.el (trace-buffer):
* emacs-lisp/lisp-mode.el (lisp-interaction-mode-map)
(emacs-lisp-mode-map):
* calendar/holidays.el (holiday-solar-holidays)
(holiday-bahai-holidays, holiday-islamic-holidays)
(holiday-christian-holidays, holiday-hebrew-holidays)
(hebrew-holidays-4, hebrew-holidays-3, hebrew-holidays-2)
(hebrew-holidays-1, holiday-oriental-holidays)
(holiday-general-holidays):
* x-dnd.el (x-dnd-known-types):
* tool-bar.el (tool-bar):
* startup.el (site-run-file):
* shell.el (shell-dumb-shell-regexp):
* rfn-eshadow.el (file-name-shadow-tty-properties)
(file-name-shadow-properties):
* paths.el (remote-shell-program, news-directory):
* mouse.el ([C-down-mouse-3]):
* menu-bar.el (menu-bar-tools-menu):
* jka-cmpr-hook.el (jka-compr-load-suffixes)
(jka-compr-mode-alist-additions, jka-compr-compression-info-list)
(jka-compr-compression-info-list):
* isearch.el (search-whitespace-regexp):
* image-file.el (image-file-name-extensions):
* find-dired.el (find-ls-option):
* files.el (directory-listing-before-filename-regexp)
(directory-free-space-args, insert-directory-program)
(list-directory-brief-switches, magic-fallback-mode-alist)
(magic-fallback-mode-alist, auto-mode-interpreter-regexp)
(automount-dir-prefix):
* faces.el (face-x-resources, x-font-regexp, x-font-regexp-head)
(x-font-regexp-slant, x-font-regexp-weight, face-x-resources)
(face-font-registry-alternatives, face-font-registry-alternatives)
(face-font-family-alternatives):
* facemenu.el (facemenu-add-new-face, facemenu-background-menu)
(facemenu-foreground-menu, facemenu-face-menu):
* epa-hook.el (epa-file-name-regexp):
* dnd.el (dnd-protocol-alist):
* textmodes/rst.el (auto-mode-alist):
* button.el (default-button): Purecopy strings.
2009-11-06 05:16:23 +00:00
|
|
|
|
)))
|
1993-04-03 23:28:03 +00:00
|
|
|
|
(setq x-font-regexp-head
|
* textmodes/tex-mode.el (tex-alt-dvi-print-command)
(tex-dvi-print-command, tex-bibtex-command, tex-start-commands)
(tex-start-options, slitex-run-command, latex-run-command)
(tex-run-command, tex-directory):
* textmodes/ispell.el (ispell-html-skip-alists)
(ispell-tex-skip-alists, ispell-tex-skip-alists):
* textmodes/fill.el (adaptive-fill-first-line-regexp):
(adaptive-fill-regexp):
* textmodes/dns-mode.el (auto-mode-alist):
* progmodes/python.el (interpreter-mode-alist):
* progmodes/etags.el (tags-compression-info-list):
* progmodes/etags.el (tags-file-name):
* net/browse-url.el (browse-url-galeon-program)
(browse-url-firefox-program):
* mail/sendmail.el (mail-signature-file)
(mail-citation-prefix-regexp):
* international/mule-conf.el (eight-bit):
* international/latexenc.el (latex-inputenc-coding-alist):
* international/fontset.el (x-pixel-size-width-font-regexp):
* emacs-lisp/warnings.el (warning-type-format):
* emacs-lisp/trace.el (trace-buffer):
* emacs-lisp/lisp-mode.el (lisp-interaction-mode-map)
(emacs-lisp-mode-map):
* calendar/holidays.el (holiday-solar-holidays)
(holiday-bahai-holidays, holiday-islamic-holidays)
(holiday-christian-holidays, holiday-hebrew-holidays)
(hebrew-holidays-4, hebrew-holidays-3, hebrew-holidays-2)
(hebrew-holidays-1, holiday-oriental-holidays)
(holiday-general-holidays):
* x-dnd.el (x-dnd-known-types):
* tool-bar.el (tool-bar):
* startup.el (site-run-file):
* shell.el (shell-dumb-shell-regexp):
* rfn-eshadow.el (file-name-shadow-tty-properties)
(file-name-shadow-properties):
* paths.el (remote-shell-program, news-directory):
* mouse.el ([C-down-mouse-3]):
* menu-bar.el (menu-bar-tools-menu):
* jka-cmpr-hook.el (jka-compr-load-suffixes)
(jka-compr-mode-alist-additions, jka-compr-compression-info-list)
(jka-compr-compression-info-list):
* isearch.el (search-whitespace-regexp):
* image-file.el (image-file-name-extensions):
* find-dired.el (find-ls-option):
* files.el (directory-listing-before-filename-regexp)
(directory-free-space-args, insert-directory-program)
(list-directory-brief-switches, magic-fallback-mode-alist)
(magic-fallback-mode-alist, auto-mode-interpreter-regexp)
(automount-dir-prefix):
* faces.el (face-x-resources, x-font-regexp, x-font-regexp-head)
(x-font-regexp-slant, x-font-regexp-weight, face-x-resources)
(face-font-registry-alternatives, face-font-registry-alternatives)
(face-font-family-alternatives):
* facemenu.el (facemenu-add-new-face, facemenu-background-menu)
(facemenu-foreground-menu, facemenu-face-menu):
* epa-hook.el (epa-file-name-regexp):
* dnd.el (dnd-protocol-alist):
* textmodes/rst.el (auto-mode-alist):
* button.el (default-button): Purecopy strings.
2009-11-06 05:16:23 +00:00
|
|
|
|
(purecopy (concat "\\`[-?*]" foundry - family - weight\? - slant\?
|
|
|
|
|
"\\([-*?]\\|\\'\\)")))
|
|
|
|
|
(setq x-font-regexp-slant (purecopy (concat - slant -)))
|
|
|
|
|
(setq x-font-regexp-weight (purecopy (concat - weight -)))
|
2000-05-09 15:45:57 +00:00
|
|
|
|
nil)
|
1993-04-03 23:28:03 +00:00
|
|
|
|
|
1999-07-21 21:43:52 +00:00
|
|
|
|
|
1993-05-25 13:19:28 +00:00
|
|
|
|
(defun x-resolve-font-name (pattern &optional face frame)
|
|
|
|
|
"Return a font name matching PATTERN.
|
2000-05-10 09:35:14 +00:00
|
|
|
|
All wildcards in PATTERN are instantiated.
|
1993-05-26 19:42:36 +00:00
|
|
|
|
If PATTERN is nil, return the name of the frame's base font, which never
|
|
|
|
|
contains wildcards.
|
1994-12-15 13:49:51 +00:00
|
|
|
|
Given optional arguments FACE and FRAME, return a font which is
|
|
|
|
|
also the same size as FACE on FRAME, or fail."
|
1993-05-29 04:36:40 +00:00
|
|
|
|
(and (eq frame t)
|
|
|
|
|
(setq frame nil))
|
1993-05-26 19:42:36 +00:00
|
|
|
|
(if pattern
|
1993-11-21 07:23:17 +00:00
|
|
|
|
;; Note that x-list-fonts has code to handle a face with nil as its font.
|
1996-08-31 22:03:30 +00:00
|
|
|
|
(let ((fonts (x-list-fonts pattern face frame 1)))
|
1993-05-26 19:42:36 +00:00
|
|
|
|
(or fonts
|
|
|
|
|
(if face
|
2013-06-23 20:29:18 +00:00
|
|
|
|
(if (string-match-p "\\*" pattern)
|
1995-01-28 08:27:31 +00:00
|
|
|
|
(if (null (face-font face))
|
|
|
|
|
(error "No matching fonts are the same height as the frame default font")
|
|
|
|
|
(error "No matching fonts are the same height as face `%s'" face))
|
|
|
|
|
(if (null (face-font face))
|
|
|
|
|
(error "Height of font `%s' doesn't match the frame default font"
|
|
|
|
|
pattern)
|
|
|
|
|
(error "Height of font `%s' doesn't match face `%s'"
|
|
|
|
|
pattern face)))
|
1993-05-31 18:02:03 +00:00
|
|
|
|
(error "No fonts match `%s'" pattern)))
|
1993-05-26 19:42:36 +00:00
|
|
|
|
(car fonts))
|
|
|
|
|
(cdr (assq 'font (frame-parameters (selected-frame))))))
|
1993-05-25 13:19:28 +00:00
|
|
|
|
|
2012-10-23 02:39:13 +00:00
|
|
|
|
(defcustom font-list-limit 100
|
|
|
|
|
"This variable is obsolete and has no effect."
|
|
|
|
|
:type 'integer
|
|
|
|
|
:group 'display)
|
|
|
|
|
(make-obsolete-variable 'font-list-limit nil "24.3")
|
|
|
|
|
|
1993-05-09 23:48:41 +00:00
|
|
|
|
(provide 'faces)
|
|
|
|
|
|
2000-05-09 15:45:57 +00:00
|
|
|
|
;;; faces.el ends here
|