Commit 224d108e authored by Juri Linkov's avatar Juri Linkov
Browse files

(read-face-name): Put the code for getting a face name

from the buffer before adding the faces from the `face' property.
Use `completing-read-multiple' instead of `completing-read'.
Require `crm'.  Add default value and post-process the returned
list of faces.
parent 62a3378e
......@@ -869,7 +869,10 @@ Otherwise, return a single face."
(aliasfaces nil)
(nonaliasfaces nil)
faces)
;; Make a list of the named faces that the `face' property uses.
;; Try to get a face name from the buffer.
(if (memq (intern-soft (thing-at-point 'symbol)) (face-list))
(setq faces (list (intern-soft (thing-at-point 'symbol)))))
;; Add the named faces that the `face' property uses.
(if (and (listp faceprop)
;; Don't treat an attribute spec as a list of faces.
(not (keywordp (car faceprop)))
......@@ -879,10 +882,6 @@ Otherwise, return a single face."
(push f faces)))
(if (symbolp faceprop)
(push faceprop faces)))
;; If there are none, try to get a face name from the buffer.
(if (and (null faces)
(memq (intern-soft (thing-at-point 'symbol)) (face-list)))
(setq faces (list (intern-soft (thing-at-point 'symbol)))))
;; Build up the completion tables.
(mapatoms (lambda (s)
......@@ -896,22 +895,27 @@ Otherwise, return a single face."
(unless multiple
(if faces
(setq faces (list (car faces)))))
(require 'crm)
(let* ((input
;; Read the input.
(completing-read
(completing-read-multiple
(if (or faces string-describing-default)
(format "%s (default %s): " prompt
(if faces (mapconcat 'symbol-name faces ", ")
(if faces (mapconcat 'symbol-name faces ",")
string-describing-default))
(format "%s: " prompt))
(complete-in-turn nonaliasfaces aliasfaces) nil t))
(complete-in-turn nonaliasfaces aliasfaces)
nil t nil nil
(if faces (mapconcat 'symbol-name faces ","))))
;; Canonicalize the output.
(output
(if (equal input "")
faces
(if (stringp input)
(list (intern input))
input))))
(cond ((or (equal input "") (equal input '("")))
faces)
((stringp input)
(mapcar 'intern (split-string input ", *" t)))
((listp input)
(mapcar 'intern input))
(input))))
;; Return either a list of faces or just one face.
(if multiple
output
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment