Emacs c++模式在预处理器语句后创建尾随空格+反斜杠
Emacs C++ mode creates trailing space+backslash after preprocessor statements
在过去的一年中,我多次尝试使用Emacs 24.4/24.5来编写c++代码。然而,每次我遇到预处理器语句的一个非常基本的问题:当我在带有预处理器语句的行上按ENTER时,Emacs会插入奇怪的尾随空格和尾随。通常,下一行的缩进是错误的,而且,这种行为在这一行继续。因此,在
#include <iostream>
之后按ENTER三次,例如会产生:
#include <iostream>
| <- this is where the cursor is now (at indentation 2)
澄清一下:每行都用空格填充,并以结尾。
同样,如果我将光标放在#include
行开头并按ENTER,我将在上面得到一个丑陋的空格+斜杠行。
我的ENTER键(Emacs术语中的RET
)绑定到(autopair-newline)
。
我怎样才能摆脱这种行为?我基本上不希望Emacs在这里做任何花哨的事情,只是一个简单的"新行"。请注意,我一般不希望将RET
还原为完全普通的"新行"(例如,我希望在其他情况下保持自动缩进)。因此,我想知道是什么导致了这种行为?
我已经找到解决这个问题的办法了。在CC模式文档中有一个绑定ENTER的示例,它执行换行+缩进。实际上,我已经得到了换行+缩进的行为,因为我通常将RET
绑定到'comment-indent-new-line
。但显然'comment-indent-new-line
不能很好地配合CC模式。我现在已经将它添加到init.el
中,它只是覆盖c-initialization-hook
中的绑定:
(defun my-make-CR-do-indent ()
(define-key c-mode-base-map "C-m" 'c-context-line-break))
(add-hook 'c-initialization-hook 'my-make-CR-do-indent)
相关文章:
- 如何创建一个CMake变量,除非显式重写,否则使用默认值
- 使用std::multimap迭代器创建std::list
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 2D数组来自文本输入,中间有空格
- 使用CMake创建QML插件
- 如何在c++中为模板函数实例创建快捷方式
- 在C++中,是否可以基于给定的标识符创建基类的新实例,反之亦然
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- OpenCV EqualizeHist()从彩色图像创建黑白图像
- 试图在visual studio上用C++创建一个桌面应用程序
- std::threads可以从Windows DLL中的全局变量创建/销毁吗?
- 如何在C++20中创建模板别名的推导指南
- 从文件中读取多行.txt字符串删除空格并创建新文件进行输出
- 如何使用循环从另一个字符串创建一个没有空格的新字符串
- 打印具有相等空格的星形数以创建V
- 我正在尝试在下划线之间创建空格,这代表一个秘密短语
- 在屏幕上拼接的字符之间创建空格 - SDL
- 基于另一个字符串创建一个由空格 (_) 和空格组成的字符串
- Emacs c++模式在预处理器语句后创建尾随空格+反斜杠
- 创建一个允许输入中空格的读取函数(C++)