ポイントを囲む括弧のタイプ(つまり、 '('、 '['、または '{')を見つける方法はありますか?例(|
ポイントを表すために使用)
{ 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
。