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

これは、私がしばらくの間自分で使用してきたソリューションです。コードが少し多いので、 要点にまとめました。

それはあなたが求めるものに近いことをします。これが結果です。

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 に答える