现象如图:按下RET后 “ deviceinfo->getName()” 向上提了一行,正常应该为光标当前行向下移动一行,上方保持不变。
当前开启的mode:如图,所有mode均为默认设置。
盲猜是 clangd 干的。
可以在 .clang-format
里面加入 DisableFormat: true
来禁用自动格式化。
开了 electric-indent-mode 后回车自动触发 reindent.
规则见 c-ts-mode.el 的 c-ts-mode-indent-style.
需要自行调整 style (rules) 可以参考文档:
一个例子:
(use-package c-ts-mode
:config
(defun +my-indent-style()
(if (version< emacs-version "31")
`(;; ((parent-is "declaration_list") parent-bol 0) ;; namespace
((match nil "argument_list" nil 0 1) parent-bol c-ts-mode-indent-offset)
((parent-is "argument_list") c-ts-mode--first-sibling 0)
((match nil "parameter_list" nil 0 1) parent-bol c-ts-mode-indent-offset)
((parent-is "parameter_list") c-ts-mode--first-sibling 0)
,@(alist-get 'k&r (c-ts-mode--indent-styles 'cpp)))
`((cpp
;; rules copied from 42yeah
((n-p-gp nil nil "namespace_definition") grand-parent 0)
((match nil "argument_list" nil 1 1) parent-bol c-ts-mode-indent-offset)
((parent-is "argument_list") (nth-sibling 1) 0)
((match nil "parameter_list" nil 1 1) parent-bol c-ts-mode-indent-offset)
((parent-is "parameter_list") (nth-sibling 1) 0)
,@(alist-get 'cpp (c-ts-mode--simple-indent-rules 'cpp 'k&r))))
))
(setq c-ts-mode-indent-style #'+my-indent-style)
)