manateelazycat / lsp-bridge

A blazingly fast LSP client for Emacs
GNU General Public License v3.0
1.35k stars 197 forks source link

semantic-tokens 渲染modifiers时能否支持combine和override混用 #948

Closed zijianyue closed 1 month ago

zijianyue commented 1 month ago

我有个疑问,比如我想将readonly的函数变成const的颜色(添加以下配置),就不适用combine(最新的默认值)了,这时候期望用override(原默认值)

(setq-default lsp-bridge-semantic-tokens-type-modifier-faces
                                                        [("globalScope" . lsp-bridge-semantic-tokens-global-scope-face)
                                                         ("readonly" . lsp-bridge-semantic-tokens-enum-member-face)])

期望的效果,以C++为例,来自lsp-mode,readonly的函数打了const标记 image


是不是可以这样:如果modifier的face中有Foreground就按override,否则就是combine,比如粗体,斜体这些辅助型配置

manateelazycat commented 1 month ago

@zijianyue 我推送了 https://github.com/manateelazycat/lsp-bridge/commit/2f961febfc87ad5e2140ecfc1b2686b552080018

你更新测试, 看看是不是你想要的效果?

zijianyue commented 1 month ago

感谢反馈,测试结果不符合预期

image

期望的效果

image

我的配置如下

(defface lsp-bridge-semantic-tokens-global-scope-face
  '((t :weight bold))
  "Face used for globalScope token."
  :group 'lsp-bridge-semantic-tokens)
(defface lsp-bridge-semantic-tokens-enum-member-face
  '((t (:inherit font-lock-constant-face)))
  "Face used for enum name."
  :group 'lsp-bridge-semantic-tokens)
(setq-default lsp-bridge-semantic-tokens-type-modifier-faces
              [("globalScope" . lsp-bridge-semantic-tokens-global-scope-face)
               ("readonly" . lsp-bridge-semantic-tokens-enum-member-face)])
manateelazycat commented 1 month ago

现在是按照有 foreground 的就用 override 策略, 没有的就按照 combine 策略的。

请详细说明一下哪里不符合? 我平常用这个功能很少。

zijianyue commented 1 month ago

不符合是指上面的begin()函数是一个readonly函数,期望走override,显示为紫色(函数的基础颜色是黄色);OLLess函数是一个global scope的函数,期望走combine,显示为加粗的黄色。 我debug了一把,发现readonly的时候并没有进入override分支,而是走了最下面的默认分支,使用了函数的基础颜色,这跟实际现象也是能对的上的。

image
manateelazycat commented 1 month ago

我上一个补丁没有写好, 我又推送了 https://github.com/manateelazycat/lsp-bridge/commit/72b02ecec0449335fefda56054251a35d834e26b

麻烦再更新测试一下吧, 谢谢

zijianyue commented 1 month ago

完美解决

manateelazycat commented 1 month ago

完美解决

盲修的, 感谢耐心反馈。