[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#74362: 31.0.50; Add completions for font names
From: |
Stefan Monnier |
Subject: |
bug#74362: 31.0.50; Add completions for font names |
Date: |
Sat, 16 Nov 2024 10:12:21 -0500 |
User-agent: |
Gnus/5.13 (Gnus v5.13) |
>> > Also, the doc string of customize-face should be amended to say that
>> > it offers completion on fonts.
>> Hmm... the docstring currently doesn't describe the UI at all (and
>> I can't think of a reason why it should). Similarly the manual doesn't
>> seem to describe any part of the UI of `customize-face`.
>> Apparently, we presume the UI is self-explanatory. If we want to fix
>> that, I think it's beyond the scope of this patch submission.
> How about mentioning the completion in the help-echo of this field?
I don't understand why you'd want that, so I don't know how it should be
phrased. Can you point to some other help-echo which states such
a thing, for inspiration?
> Btw, could set-face-font also benefit from this improvement?
AFAICT `set-face-font` already has its own completion.
> Btw^2: When we select a font, do we have to change the Foundry as
> well? Or does Emacs disregard any non-matching foundries (if, for
> example, the selected Family is not available with the specified
> Foundry)?
I can't remember the last time I used the foundry attribute, so you're
asking the wrong guy, sorry. In my corner of the world, font foundries
are simply never used (and the info I can find about foundries of
installed fonts on my system is weird/poor(?), with non-descript names
suggesting nobody else cares about them).
>> + ;; Cache the list for a max of 60s.
>> + (let ((time (float-time)))
>> + (if (and lastlist (eq (selected-frame) lastframe)
>> + (> 60 (- time lasttime)))
> Maybe the 60 thing should be a defvar?
I doubt it's worth the trouble, but if you insist I'll do that.
>> --- a/lisp/cus-face.el
>> +++ b/lisp/cus-face.el
>> @@ -48,6 +48,7 @@ custom-declare-face
>> (defconst custom-face-attributes
>> `((:family
>> (string :tag "Font Family"
>> + :completions custom-face--font-completion
>> :help-echo "Font family or fontset alias name."))
>
> I'm curious: how come :foreground and :background don't need a
> :completions specifier, and yet they provide completion OOTB?
Because those use the `color` widget defined in `wid-edit.el`:
(define-widget 'color 'editable-field
"Choose a color name (with sample)."
:format "%{%t%}: %v (%{sample%})\n"
:value-create 'widget-color-value-create
:size (1+ (apply #'max 13 ; Longest RGB hex string.
(mapcar #'length (defined-colors))))
:tag "Color"
:value "black"
:completions (defined-colors)
:sample-face-get 'widget-color-sample-face-get
:notify 'widget-color-notify
:match #'widget-color-match
:validate #'widget-color-validate
:action 'widget-color-action)
- Stefan