Emacs - show-paren-mode リージョンの変更

Emacs - show-paren-mode リージョンの変更

私はEmacsのshow-paren-modeが好きですが、閉じ括弧の強調表示の動作を変更したいと思います。

つまり、点が右括弧の上にあるときに左括弧を強調表示したいのです。デフォルトの動作は、ドットが閉じ括弧の後の文字の上にあるときに開く括弧を強調表示します。

これは変えやすいですか?また、show-paren-modeの動作を変更せずに維持することで得られる潜在的な利点にも興味があります。

答え1

Emacs 24.3以降、この機能は親表示モードでは使用できません。

以下は、カーソルの後ろではなく、前の閉じ括弧と一致するようにShow Parenパターンを調整する完全にテストされていないコード(ブラウザに直接入力)です。

(defadvice show-paren-function 
  (around show-paren-closing-before
          activate compile)
  (if (eq (syntax-class (syntax-after (point))) 5)
      (save-excursion
        (forward-char)
        ad-do-it)
    ad-do-it))

また、カーソルの前の閉じ括弧を選択しますが、カーソルが閉じ括弧の後の閉じ括弧の上にある場合は、カーソルの下の閉じ括弧が優先されます。カーソルが奇妙になる前に閉じ括弧を見ないようにこの問題を修正しました(flet ((char-syntax …)) ad-do-it)

答え2

25.1には、これを実行する変数があります。

(setq show-paren-when-point-inside-parent t)

答え3

とうまく機能するように@Gillesの答えを修正しました。これにより、悪い状態になることができないか、evil閉じ括弧を強調表示する前に追加の制約が追加されます。emacsinsertreplace

(defadvice show-paren-function
  (around show-paren-closing-before
          activate compile)
  (if (and
       (eq (syntax-class (syntax-after (point))) 5)
       (not (memq evil-state '(emacs insert replace))))
      (save-excursion
        (forward-char)
        ad-do-it)
    ad-do-it))

(これは実際に邪悪なデフォルト設定で予想される動作ですが、何らかの理由で私のEmacs 26.3設定では機能しません。)

答え4

次の値で独自の機能を提供できますshow-paren-data-function

,----
| show-paren-data-function is a variable defined in `paren.el'.
| Its value is show-paren--default
| 
|   This variable can be risky when used as a file-local variable.
| 
| Documentation:
| Function to find the opener/closer at point and its match.
| The function is called with no argument and should return either nil
| if there's no opener/closer at point, or a list of the form
| (HERE-BEG HERE-END THERE-BEG THERE-END MISMATCH)
| Where HERE-BEG..HERE-END is expected to be around point.
 ----

インスピレーションを得るには、の定義を参照してくださいshow-paren--default

については利点:右角かっこを追加するたびに、一致する左角かっこが表示されます。言葉にならないのですか?

関連情報