From: Juri Linkov Date: Mon, 4 Jul 2005 01:03:23 +0000 (+0000) Subject: (read-face-name): Put the code for getting a face name X-Git-Tag: emacs-pretest-22.0.90~8456 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=224d108edcfc2d6d156434aeac4cdd828fc8c679;p=emacs.git (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. --- diff --git a/lisp/faces.el b/lisp/faces.el index bdaee4cec5f..cad2e932519 100644 --- a/lisp/faces.el +++ b/lisp/faces.el @@ -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