ポイントを囲む括弧のタイプ(つまり、 '('、 '['、または '{')を見つける方法はありますか?例(|ポイントを表すために使用)
{ abc, | df }
'{'を返す必要があります。
{ abc[ | ], 123 }
'['を返す必要があります。理想的には、引用符も処理したいと思います。
誰かが好奇心が強い場合や詳細が必要な場合:私の目的は:、Pythonでelectric-spacing(smart-operatorとも呼ばれます)を使用してスマートな自動間隔を設定することです。問題は、通常(Pythonの場合):はスライス演算子またはfor / if / ...ステートメントの開始であり、スペースで囲まないでください。ただし、ディクショナリ内では代入演算子のようなものなので、スペースで囲む必要があります。私ので、ポイントはdictの(すなわち内部の内側にあるかどうかを確認する方法の必要性{})ではなく、(すなわちない内部その辞書内のスライス操作や文字列の内部[]または"")。
編集:
以下は、abo-aboの回答に基づいて私が作成したヘルパー関数です。
(defun enclosing-paren ()
"Return the closing parenthesis of the enclosing parens, or nil if not inside any parens."
(ignore-errors
(save-excursion
(up-list)
(char-before))))
次に、最後の述語は次のとおりです。
(and (not (in-string-p))
(eq (enclosing-paren) ?\}))
編集2:
上記の関数は遅すぎることがわかりました(a :が入力されたときに顕著な遅延が発生することがよくありました)。今は代わりにStefanの回答を使用しています。
""、組み込みのを使用できますin-string-p。