[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [ELPA] New package: marginalia
From: |
Daniel Mendler |
Subject: |
Re: [ELPA] New package: marginalia |
Date: |
Tue, 1 Jun 2021 23:07:39 +0200 |
On 6/1/21 10:54 PM, Juri Linkov wrote:
>>>> BTW, I hope we can merge some of that code directly into Emacs itself.
>>>
>>> For example, marginalia--symbol-class adds new symbol characters to
>>> the replacement of `help--symbol-completion-table-affixation',
>>> but it would be better to add new characters directly to
>>> `help--symbol-completion-table-affixation'...
>>
>> Yes, I would be glad if you merge back the `marginalia--symbol-class` to
>> the Emacs help system! The `marginalia--symbol-class` has been inspired
>> by your `help--symbol-completion-table-affixation`, but I wanted to go a
>> little step further in Marginalia. Maybe it makes sense to add
>> `help--symbol-class` such that the function can be reused potentially at
>> other places?
>
> Maybe something like...
> Then you could use it, and prepend/append more characters
> such as: o for obsolete, ! for advised, * for modified.
I am not sure if we would benefit much from this in Marginalia, since we
would still have to check the type of the symbol.
What about adding the extended `symbol-class` function from Marginalia
directly to help-fns.el? Note that the Marginalia function returns
multiple characters "fv" if a symbol denotes both a function and a variable.
Do you want to keep the `symbol-class` to be a single character under
all circumstances?
Daniel
~~~
(defun marginalia--symbol-class (s)
"Return symbol class characters for symbol S.
Function:
f function
c command
m macro
! advised
o obsolete
Variable:
u custom
v variable
l local
* modified
o obsolete
Other:
a face
t cl-type"
(format
"%-6s"
(concat
(when (fboundp s)
(concat
(and (get s 'byte-obsolete-info) "o")
(cond
((commandp s) "c")
((eq (car-safe (symbol-function s)) 'macro) "m")
(t "f"))
(and (marginalia--advised s) "!")))
(when (boundp s)
(concat
(and (get s 'byte-obsolete-variable) "o")
(and (local-variable-if-set-p s) "l")
(if (custom-variable-p s) "u" "v")
(and (ignore-errors (not (equal (symbol-value s) (default-value
s)))) "*")))
(and (facep s) "a")
(and (fboundp 'cl-find-class) (cl-find-class s) "t"))))
~~~