首页 > 其他分享 ># neovim为工作区添加本地clangd配置

# neovim为工作区添加本地clangd配置

时间:2023-08-17 23:35:32浏览次数:36  
标签:neovim clangd -- lua 添加 query nvim

1 背景

尝试使用neovim开发stm32,使用clangd作为LSP提供代码补全等功能。

2 思路

  1. 使用stm32cubeMX生成一个基于makefile的stm32工程。

  2. 使用bearcompiledb基于makefile生成compile_commands.json文件。

  3. 为clangd配置--query-driver选项,使其使用arm-none-eabi-gcc编译器。

由于--query-driver选项是直接传递给clangd可执行文件的参数,无法在当前目录下的clangd配置文件(如.clangd)中进行配置。

如果你的neovim的LSP基于coc.nvim进行部署,则该参数可以在coc-settings.json中进行配置,比较方便。

如果你的neovim的LSP基于nvim-lspconfig进行部署,则该参数需要在nvim-lspconfig插件初始化clangd时传入。需要修改lua配置文件,比较麻烦。本文针对此情形提出一种解决方案。

3 解决方案

  1. 启用neovim的exrc特性,允许neovim从当前目录下的.nvim.lua.nvimrc.exrc文件中读取局部的配置。使得开发者能够针对不同项目灵活配置LSP、DAP等,避免频繁修改全局的neovim配置。
  2. 在项目目录中创建.nvim.lua文件,在该文件中重新配置clangd并传入--query-driver参数。

4 具体做法

  1. 在neovim配置中添加set exrc(vimscript)vim.o.exrc = true(lua)。

  2. 在项目目录中创建.nvim.lua文件。

  3. .nvim.lua文件中写入如下内容:

require("lspconfig").clangd.setup({
  cmd = {
    "clangd",
    "--query-driver=*arm-none-eabi*",
    -- NOTE:使用如下绝对路径时反而无效
    -- "--query-driver=${path_to_compiler}\\gcc-arm-none-eabi\\12.2.rel1\\bin\\arm-none-eabi*",
  },
  filetypes = { "c", "cpp", "objc", "objcpp", "cuda", "proto" },
})

标签:neovim,clangd,--,lua,添加,query,nvim
From: https://www.cnblogs.com/yann-qu/p/17639175.html

相关文章

  • 动态添加表单元素
    <html><head><title>动态添加表单元素</title></head><scriptlanguage="javascript">functionAddElement(mytype){varmytype,TemO=document.getElementById("add");varnewInput=document.createElement("......
  • Spartacus 添加 PWA 应用到 home 的实现原理分析
    代码位置:https://github.com/SAP/spartacus/blob/develop-6.4.x/projects/storefrontlib/cms-structure/pwa/services/add-to-home-screen.service.ts这段Angular代码是一个用于添加到主屏幕(AddtoHomeScreen)功能的服务,它是为Spartacus项目中的PWA模块设计的。PWA代表Progressi......
  • python3添加ssl模块
    1.安装opensslwget https://www.openssl.org/source/openssl-1.1.1v.tar.gztar openssl-1.1.1v.tar.gzcd openssl-1.1.1v./config--prefix=/usr/local/opensslsharedzlib测试/usr/local/openssl/bin/openssl 若报错:/usr/local/openssl/bin/openssl:errorwhileloa......
  • mysql添加只读账号,virtualBox添加端口映射
    用root用户进入mysqlmysql-uroot-pusemysqlCREATEUSER‘test’@’localhost’IDENTIFIEDBY‘testmm'grantselecton*.*totest@"localhost"Identifiedby"testmm";添加端口转发点击设置弹出 添加端口转发,访问1022端口就是访问虚拟机22端口 附加其它......
  • .NET Core读取配置文件 配置文件可以是JSON、XML或INI等格式,需要添加 Microsoft.Exten
    .NETCore读取配置文件配置文件可以是JSON、XML或INI等格式需要添加Microsoft.Extensions.Configuration扩展包原文链接:https://pythonjishu.com/qipsfiygesyrqfi/下面是“.NETCore读取配置文件”的完整攻略:1.创建配置文件首先,我们需要在项目中创建一个配置文件,以便存......
  • 添加阿里云CDN的步骤
    添加阿里云CDN的步骤1.创建好一个加速域名2.创建CDN域名alicdn.apecome.com这个地址,源站,还是设置的这个服务器123.57.242.103.修改【加速域名】的类型,从A记录改为CNAME4.如何判断,静态资源是否使用到了CDN1.查看是否有CNAME[root@master-61~]#pingalicdn.apecome......
  • System.ArgumentException:“不能在多处添加或插入项“2”。必须首先将其从当前位置移
    ListViewItemitem=newListViewItem();foreach(Personpinperson1){item.SubItems[0].Text=p.Id.ToString();item.SubItems.Add(p.Name);......
  • vue-treeselect 校验失败添加红框
    需求vue-treeselect校验及清除校验这篇介绍了用@input在校验失败时显示校验信息。但还需要同时显示红色边框。如下图所示:解决办法思路:动态绑定类名,校验失败时切换类名,更改边框颜色。子组件SelectTree二次封装vue-treeselect:组件SelectTree<template><divclass=......
  • 不重启Docker能添加自签SSL证书镜像仓库吗?
    应用背景在企业应用Docker规划初期配置非安全镜像仓库时,有时会遗漏一些仓库没配置,但此时应用程序已经在Docker平台上部署起来了,体量越大就越不会让人去直接重启Docker。那么,不重启Docker能添加自签SSL证书镜像仓库吗?可以,在文中会找到答案。实现思路实现思路来自Docker官网(htt......
  • 使用hutool给excel单元格标黄和添加批注
    packagecom.yc.cloud.excel.util;importcn.hutool.poi.excel.ExcelWriter;importlombok.extern.slf4j.Slf4j;importorg.apache.poi.hssf.usermodel.HSSFClientAnchor;importorg.apache.poi.hssf.usermodel.HSSFRichTextString;importorg.apache.poi.ss.usermodel.......