前言(你可以跳过它):在emacs init.el中我设置了我的代码格式样式:
(setq bws-c-style
'((c-basic-offset . 2)
(indent-tabs-mode . nil) ; All indentation be made from spaces only
(c-tab-always-indent . t)
(c-offsets-alist . (
(access-label . /)
(defun-block-intro . +)
(substatement-open . 0)
(inline-open . 0)
(arglist-cont .(c-lineup-arglist-operators 0))
(arglist-cont-nonempty . c-lineup-argcont)
(arglist-cont-nonempty . (c-lineup-arglist-operators c-lineup-arglist))
(arglist-close . (c-lineup-arglist-close-under-paren))
(comment-intro . +)
(case-label . +)
)
)
(hs-special-modes-alist . (
(c++-mode "#if" "#endif" "/[*/]" nil nil)
(c++-mode "{" "}" "/[*/]" nil nil)
)
)
(c-cleanup-list . (
scope-operator
empty-defun-braces
defun-close-semi
list-close-comma
)
)
)
)
(defun lconfig-c-mode ()
(progn
(c-add-style "My Coding Style" bws-c-style t)))
(add-hook 'c++-mode-hook 'lconfig-c-mode)
有了这样的风格,如果我必须将函数参数分成几行,我可以使用 TAB -key轻松对齐它们:
void foo( int one, const int& two,
const double* const three, float& our )
非常方便。
问题: 是否可以设置我的代码格式样式,以便它将每个单词分开对齐然后整行?像这样:
void foo( int one, const int& two,
const double* const three, float& four )
P.S。我看到了一些方向here,但无法理解它们,也不确定它们是否可用于设置编码风格。
答案 0 :(得分:3)
这是我一直在使用的解决方案。 有不止一些代码,所以我把它放在一个 gist
它与您提出的要求接近。这是结果。
void foo(int one,
int two,
const double* const three,
float& four)
只是为了确保没有其他代码干扰, 开始像这样测试:
emacs -q -l calign.el test.cc
写一些代码, C-x h TAB 。 现在 3 将对齐参数。 当区域处于活动状态时,它会这样做,否则只插入3个。