C などのプログラミング モードで paredit を使用する場合、関数を呼び出そうとすると ( と入力すると、括弧の前にスペースが挿入され、次のようになります。
foo ()
paredit のソースを変更せずにスペースの挿入を無効にする方法はありますか?
C などのプログラミング モードで paredit を使用する場合、関数を呼び出そうとすると ( と入力すると、括弧の前にスペースが挿入され、次のようになります。
foo ()
paredit のソースを変更せずにスペースの挿入を無効にする方法はありますか?
さて、pareditが機能しているように見えるのは、構文テーブルをチェックして、単語/記号などの直後にペアを挿入しているかどうかを確認することです。この場合、スペースが強制的に挿入されます。その機能をオーバーライドする必要があります。これは、アドバイス、関数決定スペースの再定義、構文テーブルの変更など、さまざまな方法で実行できます。
私は簡単に試してみます:
(defun paredit-space-for-delimiter-p (endp delimiter)
(and (not (if endp (eobp) (bobp)))
(memq (char-syntax (if endp (char-after) (char-before)))
(list ?\" ;; REMOVED ?w ?_
(let ((matching (matching-paren delimiter)))
(and matching (char-syntax matching)))))))
これは明らかに、を使用するすべての場所に適用されますparedit
。よりモード固有のものが必要な場合は、そのand
ステートメントにいくつかの条件を追加できます(例(and ... (memq major-mode '(c-mode lisp-mode)))
)。
だから...私は「ソース」を変更したと思いますが、同じことを1つのピースで行うことができますdefadvice
...それはすべてelispなので、違いは最小限です。このタイプの動作を制御するための設定はないようです。
見るparedit-space-for-delimiter-predicates