求一份mac上可用的emacs+ccls配置


#1
  1. 通过brew install了ccls到/usr/local/bin下
  2. 在mac上follow spacemacs的配置教程,在.spacemacs中加了如下code: (c-c++ :variables c-c+±backend 'lsp-cquery c-c+±lsp-executable “/usr/local/bin/ccls”)
  3. 在项目下添加了.ccls文件 %clang %cpp -std=gnu++14 -isystem/usr/include
  4. 在项目下通过cmake生成了compile_commands.json
  5. 手动运行/usr/local/bin/ccls --index=.生成了.ccls-cache目录
  6. 打开项目中的一个.cpp文件,SPC m g g 说要去找TAGS文件;wiki上说的快捷键也没法用。

求一个可用的emacs+ccls的配置文件,spacemacs或者doom-emacs的都可以。


#2

Centaur Emacs 可用,可以试试看


#3

找到原因了。是因为我的spacemacs用的是master branch的,切换到develop branch配置就生效了。

目前的问题是:SPC m g g报错:(可能不是同一个命令按出来的,尝试了几个命令) lsp–send-request-async: No workspace could handle textDocument/references No jump handler was able to find this symbol.


#4

尝试了下,不会用。emacs太多年不用了,快捷键都忘了。


#5

这…… 竟然无言以为~~~


#6

emacs lsp是怎么确定workspace的?必须要用特定的打开方式吗?还是随便打开个文件,会自动找这个文件所在的上层目录作为workspace?


#7

赞!尝试了spacemacs, doom-emacs和centuar emacs。只有centuar emacs配置成功了ccls。

centuar emacs下有配置lsp相关的快捷键吗?现在是通过m-x lsp-find-difinition 进行跳转的。


#8

跳转快捷键是通用的:M-., M-, 绑定的是lsp-ui-peek-find-definition.

M-x lsp-ui-peek-find-definition就能看到快捷键,其他同理。


#9

多谢多谢。

提几个小意见:

  1. 在dashboard选择一个项目,然后find file时,能不能过滤掉.ccls-cache目录,不然一个不小心就去编辑cache里的文件了。
  2. 在dashboard选择一个项目,然后find file选择文件后,没有任何反应,界面还是dashboard。但看buffer是已经打开这个文件了。能不在在find file选择文件后切换buffer,不再显示dashboard了。

#10
  1. 可以自己设置 counsel-find-file-ignore-regexp。配置文件是~/.emacs.d/custom.el
  2. q退出 dashboard,在当前 workspace 中会自动切换到 buffer,如果还不行,禁用persp-mode-projectile-bridge-mode

#11

这两个设置好像都没起效果。是我设置错了吗?

(setq counsel-find-file-ignore-regexp ".*\.ccls.*")
(setq persp-mode-projectile-bridge-mode nil)

#12

函数和变量文档里有详细说明

(setq counsel-find-file-ignore-regexp "^\\.ccls.*")
(persp-mode-projectile-bridge-mode -1)

#13

第一个,试了文档里的regexp和你的代码,都不行。

(setq persp-mode-projectile-bridge-mode -1)起作用了。