You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Doom Emacs配置:关闭单行注释自动换行,保留多行注释功能

Doom Emacs 关闭单行注释自动换行并保留多行注释功能的配置

以下是可添加到你的Doom Emacs配置文件(通常是~/.doom.d/config.el)的Elisp代码,实现关闭单行注释//的自动换行,同时保留多行注释/* */的自动续行功能:

;; 针对使用//和/* */注释的语言(如C/C++/JS/Java等)配置注释行为
(add-hook! '(c-mode-hook c++-mode-hook js-mode-hook java-mode-hook)
  ;; 仅在注释内容内启用自动填充
  (setq-local comment-auto-fill-only-comments t)
  ;; 让多行注释自动续行并添加*
  (setq-local comment-style 'multi-line)

  ;; 自定义函数:检测是否处于单行注释,是则禁用自动填充
  (defun my-disable-single-line-comment-auto-fill ()
    (let ((syntax-state (syntax-ppss)))
      (if (and (nth 4 syntax-state)  ;; 检查是否处于注释块内
               (string= (comment-start) "//"))  ;; 检查是否是单行注释
          (auto-fill-mode -1)
        (auto-fill-mode 1))))

  ;; 将函数绑定到输入后钩子,实时检测注释类型
  (add-hook 'post-self-insert-hook #'my-disable-single-line-comment-auto-fill nil t))

代码说明

  • add-hook!:Doom Emacs的钩子语法,针对指定的编程语言模式生效
  • comment-auto-fill-only-comments:限制自动填充仅作用于注释内容
  • comment-style 'multi-line:确保多行注释/* */在回车后自动插入换行和*
  • 自定义的my-disable-single-line-comment-auto-fill函数:通过syntax-ppss检测当前是否处于单行注释中,动态开启/关闭自动填充,从而阻止单行注释自动续行

内容的提问来源于stack exchange,提问作者Krys

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 15:47:49