在Emacs中,如何强制执行最多行长度,例如80个字符?我希望它在我的代码中插入正确的换行符,就像文本fill-paragraph
一样,如果可能的话,正确插入行的第二部分。
这里有一个小例子:
LongNameType<PrettyLong, AlsoLong> doSomethingWithLongFunctionName(int a, int b);
foo();
如果我确实fill-paragraph
,它就变成了:
LongNameType<PrettyLong, AlsoLong>
doSomethingWithLongFunctionName(int a, int b); foo();
而我更喜欢这个:
LongNameType<PrettyLong, AlsoLong>
doSomethingWithLongFunctionName(int a, int b);
foo();
答案 0 :(得分:5)
fill-paragraph和auto-fill-mode故意不包装代码。有太多的方法可以做到这一点,它可能会弄错。他们会发表评论,但这对你没有帮助。
我做过的唯一方法是明确地将文本放在我想要的地方。然后自动缩进应该将虚线放在正确的位置。
您是否正在尝试重排大量现有代码?或者尝试自动填写你正在编写的代码?
答案 1 :(得分:5)
有number of packages警告您线路长度限制。就个人而言,我使用wide-column,它会根据当前列更改光标颜色。
答案 2 :(得分:1)
我使用modeline-posn包。如果它大于指定值,它会突出显示模式行中的列号。
答案 3 :(得分:1)
您应该查看Emacs的众多“垂直线”库中的一个。有些人总是在整个缓冲区上保持垂直高亮线(不是你真正想要的),但是其他库总是将垂直高光放在修复列上,这不是你想要的,但你可以立即看到当你应该包装线时。
答案 4 :(得分:0)
不是真正的emacser,但是如果你在auto-fill-mode期间开启c++-mode会怎样?
C ++模式应该会给你自动缩进,而自动填充模式会给你换行.......
答案 5 :(得分:0)
尝试
'(c-max-one-liner-length 80)
'(fill-column 80)
'(c-ignore-auto-fill (quote (string cpp)))
希望它有所帮助。
答案 6 :(得分:0)
您可以使用更高级的clang-format软件包。
(setq clang-format-style "file")
或添加到custom-set-variables
'(clang-format-style "file")
。clang-format -style=gnu -dump-config > .clang-format
生成模板样式,然后将其放置在项目的根目录中。ColumnLimit: 120
更改为80或您想要的任何值。这将使用clang-format工具强制限制列数。