网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
01月22日漏签0天
linux吧 关注:536,749贴子:2,574,176
  • 看贴

  • 图片

  • 吧主推荐

  • 视频

  • 游戏

  • 2回复贴,共1页
<<返回linux吧
>0< 加载中...

https://maskray.me/blog/2017-12-03-c++-language-server-cque

  • 只看楼主
  • 收藏

  • 回复
  • MasterRay
  • -----rwx
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
原文 https://maskray.me/blog/2017-12-03-c++-language-server-cquery
## cquery安裝、配置
<https://github.com/jacobdufault/cquery>。Arch Linux可用[aur/cquery-git](https://aur.archlinux.org/packages/cquery-git)。
* 構建language server可執行文件
+ `./waf configure`
+ `./waf build`,構建`build/$variant/bin/cquery`
* 編輯器安裝language client插件(Emacs lsp-mode、Neovim LanguageClient-neovim、VSCode安裝cquery/vscode-client裏的插件)
* 爲你的C/C++/Objective-C項目生成`compile_commands.json`,參見下文。
用編輯器打開C++文件時,language client插件會根據配置的language server可執行文件路徑啓動language server進程,用[JSON-RPC 2.0](http://www.jsonrpc.org/specification)協議通過stdio通信,協議內容見<https://microsoft.github.io/language-server-protocol/specification>。
Language client用`initialize`請求告知language server自己支持的功能(ClientCapabilities)、項目路徑(rootUri)、初始化選項(initializationOptions,cquery需要知道`cacheDirectory`路徑)。之後各種語言相關功能都通過與language server通信實現:
+ 光標移動時向language server發送`textDocument/hover`請求,language server返回變量/函數聲明信息、註釋等
+ 查找定義發送`textDocument/definition`請求,language server返回定義所在的文件、行列號
+ 查找引用發送`textDocument/references`請求
+ 查找當前文檔定義的符號(通常是頂層的outline)發送`textDocument/documentSymbol`請求
+ 查找項目定義的符號(只查找outline的也很有用)發送`workspace/symbol`請求
+ 補全`textDocument/completion`
+ 文檔編輯操作發送`textDocument/didChange`
+ cquery還支持一些Language Server Protocol之外的擴展,比如`$cquery/derived`用於查找派生的類、方法等


  • MasterRay
  • -----rwx
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
cquery最近改动与libclang.so一字节补丁


2026-01-22 04:04:45
广告
不感兴趣
开通SVIP免广告
  • MasterRay
  • -----rwx
    7
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
可执行文件从build/app变到build/release/bin/cquery了,支持release/debug/asan等多种waf variants,使用RPATH
./waf configure --bundled=5.0.1可以用上最新出炉的clang+llvm 5.0.1
Riatre把Windows构建修好了 #154
FreeBSD可以使用了 #155及third party库改动,感谢ngkaho1234把sparsepp FreeBSD kvm搞定
不需要在initializationOptions里指定resourceDir了,感谢jiegec的#137
各种模板改进和function template/class template内函数引用的支持。支持了CXCursor_OverloadedDeclRef函数调用#174,但template call template clang-c接口没有暴露相应信息,可能无解。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 2回复贴,共1页
<<返回linux吧
分享到:
©2026 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示