在执行 (setq tab-width 4)
并且 (eglot-ensure)
之后,新编辑一个文件(没有任何 clang 相关配置文件),按 tab 键或者执行 (eglot-format)
,缩进都是按 tab 等于 2 个空格,也就是 clangd
的默认来的。
有没有办法让缩进默认 4 个空格,除非被 .clang-format
覆盖?
Eglot 版本是 20211009 ,clangd 12.0.1 。在早一点的版本里, tab-width
似乎能影响 eglot-format
。但是这几个版本的 eglot-format
都是把 tabSize
设置为 tab-width
,不知道为什么现在就不行了。另外,我也想让 tab-width
影响 tab
键的行为,这在早一点的版本里也不行。
有没有配置 clangd 或者配置 emacs 的方法?
修改 c-basic-offset
有效,至于 eglot-format
,我觉得可能是 clangd 的 bug 。
Clang 和 Emacs 都是区分 TabWidth
和 IndentWidth
的。我最后从 clang-format
读取这两个值,然后修改 Emacs 的设置。目前没有比较好的设定全局默认值的方式,不过至少可以让 Clang 和 Emacs 保持一致。
(let* ((c (shell-command-to-string "clang-format --dump-config"))
(w (progn
(string-match "^TabWidth:[^0-9]*\\([0-9]+\\)$" c)
(string-to-number (match-string 1 c))))
(o (progn
(string-match "^IndentWidth:[^0-9]*\\([0-9]+\\)$" c)
(string-to-number (match-string 1 c)))))
(setq-local tab-width w c-basic-offset o))
1 个赞