Emacs配置lsp-mode+ccls后函数补全带参数占位符问题求助
解决lsp-mode + ccls函数补全参数占位符问题
方案1:将占位符改为仅显示参数类型
添加以下配置到你的Emacs初始化文件,调整ccls的补全标签格式,让参数占位符只保留类型信息:
(setq ccls-initialization-options '(:completion (:detailedLabel t :placeholder t :labelFormat "${type}")))
配置生效后,补全foo函数会显示为foo(${1:int}, ${2:String *}),仅保留参数类型作为占位符内容。
方案2:完全移除所有参数占位符
如果不需要任何占位符,直接关闭lsp的代码片段(snippet)功能即可,补全后仅生成函数名加空括号:
;; 全局关闭lsp snippet功能 (setq lsp-enable-snippets nil) ;; 或者仅针对ccls关闭snippet (setq ccls-initialization-options '(:completion (:enableSnippet nil)))
若你使用company作为补全框架,还可以补充设置:
(setq company-lsp-enable-snippets nil)
配置修改后,重启Emacs或重新打开项目,让lsp-mode重新加载ccls配置即可生效。
内容的提问来源于stack exchange,提问作者Zanchet2020
相关产品推荐
相关产品推荐

