ブラケットを自動的にフォーマットする
(Cでコーディングするための)Allmanスタイルのフォーマットに従って中かっこを配置/配置/インデントする関数を作成しようとしています。 一般的に言えば、私はユーザーが機能をカスタマイズするために使用できるSmartparensのインターフェースのファンです。私はSmartparensインターフェースを使用して他の関数をたくさん書いたので、この時点でパッケージを切り替えないようにしてください。そうは言っても、私はパッケージにとらわれない実装を受け入れています(たとえば、defadviceここで関連性があるかもしれませんか?)。 目の前の問題に移ります。最終目標は何ですか?コーディングしていて、以下に示す状態になったとしましょう。パイプ記号はカーソルを表します。関数ヘッダーと開き括弧を入力しました{。Smartparensが自動的に閉じ括弧を追加しました }。この時点で、それを押してくださいRET... int main {|} ...次のようになります: int main { | } この動作を引き起こす関数を書くことができましたが、それは最初のレベルのインデント(たとえば、上の例のメイン関数)でのみ機能します。それ以降のレベルのインデントでは機能しません(gifを参照)。 関連するコードは次のとおりです。関数はきれいではありませんが、うまくいくと思います...最後の行はSmartparensへのインターフェースです。 助言がありますか? (defun my-create-newline-and-enter-sexp (&rest _ignored) "Open a new brace or bracket expression, with relevant newlines and indent. " (interactive) (progn (backward-char 2) (newline) (forward-char) (newline) (indent-according-to-mode) (previous-line 2) (indent-according-to-mode) (next-line) (next-line) (indent-according-to-mode))) (sp-local-pair 'c-mode "{" …