manateelazycat / lsp-bridge

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

开启lsp-bridge-semantic-tokens-mode 在clangd server C++代码中似乎并没有生效 #921

Closed zijianyue closed 2 months ago

zijianyue commented 2 months ago

debug信息

image

但是方法名并没有出现高亮,比如这里

image
manateelazycat commented 2 months ago

lsp-bridge-semantic-tokens-mode 选项打开了吗?

我自己平常也不用 semantic

zijianyue commented 2 months ago

打开了

manateelazycat commented 2 months ago

发一下测试代码和全部日志吧, 估计要5.1以后才有时间了。

zijianyue commented 2 months ago

main.cpp

#include <iostream>
#include <cmath>

struct Point {
    double x, y;
    Point(double x_, double y_) : x(x_), y(y_) {}

};
double distance(const Point& p1, const Point& p2) {
    double dx = p1.x - p2.x;
    double dy = p1.y - p2.y;
    return std::sqrt(dx * dx + dy * dy);
}
int main() {
    auto p1 = Point(1,2);
    auto p2 = Point(3,4);
    auto ret = distance(p1, p2);
    std::cout << "ret :" << ret << std::endl;
    ret = distance(p2, p1);
    std::cout << "ret2 :" << ret << std::endl;

    return 0;
}
manateelazycat commented 2 months ago

@xhcoding 大佬能帮忙看一下吗? 我看了一下日志, LSP Server 都返回了Tokens信息, 但是 get_faces_index 总是返回 None, 导致 render_tokens.add 这行代码没执行。

xhcoding commented 2 months ago

lsp-bridge-semantic-tokens-mode 高亮需要根据文档自己配置,默认只会高亮宏关闭:https://github.com/manateelazycat/lsp-bridge/wiki/Semantic-Tokens-%5B%E7%AE%80%E4%BD%93%E4%B8%AD%E6%96%87%5D

比如函数高亮成红色,类高亮成橘色, namespace 高亮成绿色:

    (defface lsp-bridge-semantic-tokens-function-face
    '((t :foreground "red"))
    "Face used for globalScope token."
    :group 'lsp-bridge-semantic-tokens)

  (defface lsp-bridge-semantic-tokens-class-face
    '((t :foreground "orange"))
    "Face used for globalScope token."
    :group 'lsp-bridge-semantic-tokens)

  (defface lsp-bridge-semantic-tokens-namespace-face
    '((t :foreground "green"))
    "Face used for globalScope token."
    :group 'lsp-bridge-semantic-tokens)

  (setq-default lsp-bridge-semantic-tokens-type-faces
                [("function" . lsp-bridge-semantic-tokens-function-face)
                 ("class" . lsp-bridge-semantic-tokens-class-face)
                 ("namespace" . lsp-bridge-semantic-tokens-namespace-face)
                 ])

  (setq-default lsp-bridge-semantic-tokens-ignore-modifier-limit-types ["function" "class" "namespace"])

image

manateelazycat commented 2 months ago

感谢 @xhcoding 大佬解惑, @zijianyue 我按照Wiki测试的写了配置以后就可以正常工作了。

zijianyue commented 2 months ago

能正常使用了!