新手求助关于回车后自动缩进的问题

_E5_B1_8F_E5_B9_95_E5_BD_95_E5_88_B6_202025-09-01_20170343_converted

现象如图:按下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)
  )