emacs-devel
[Top][All Lists]
Advanced

[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"))))
~~~



reply via email to

[Prev in Thread] Current Thread [Next in Thread]