2

前言(你可以跳过它):在 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 )

PS 我在这里看到了一些方向,但无法理解它们,并且不确定它们是否可用于设置编码样式。

4

1 回答 1

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。

于 2013-11-07T22:00:43.230 回答