私はEmacsが初めてです。
すべてのモードで機能する elisp 関数を作成しようとしています。insert-parentheses
具体的には、次のキー シーケンスが自動インデントのみをサポートするダム エディターに対して行うのと同じ方法で、中かっこ (少し似ています) を挿入する関数を作成したいと考えています。
"{" <ret> "}" <up-arrow> <end> <ret> <tab>
このキー シーケンスは、Java と C# (bsd) スタイルのインデントの両方で機能します。ブレースを使用するすべての emacs モード、およびプレーン テキスト ファイルで動作させるには、これが必要です。emacs モードがなくてもブレースを使用する他のフォーマットがあります。
これが私の12回目かそこらの試みです:
(defun insert-braces-macro ()
(interactive)
(insert "{")
(newline)
(indent-relative t)
(insert "}")
(forward-line -1)
(end-of-line)
(newline)
(indent-relative t)
(indent-relative nil))
残念ながら、これはうまくいきません。indent-relative
Java スタイルでは正しくインデントされないため、正しい関数ではないと思います。
f |
次のように展開します。
f {
|
}
Cモードでは:
somelongword another |
次のように展開されます。
somelongword another {
|
}
しかしindent-according-to-mode
、C っぽいモードではインデントが多すぎ (末尾の '}' がインデントされます)、Fundamental モードではまったくインデントされないため、正しくありません。
これを処理する正しい方法は何ですか?