F: Gibt es eine allgemeine Methode, um festzustellen, ob sich der Punkt in einem übereinstimmenden Zeichenpaar befindet oder nicht?
Das heißt: Gibt es eine allgemeine Prädikatfunktion (oder etwas anderes), die bestimmen kann, ob ein Punkt zwischen einem übereinstimmenden Paar oder zwischen willkürlich ausgewählten Zeichen liegt? Ich denke über eines nach, das t
in den folgenden Szenarien ausgewertet wird , !
wobei auf Punkt verwiesen wird:
"!" (quotes in general)
``!'' (LaTeX quotes)
$!$ (LaTeX math)
(!) (lisp parens)
*!* (org emphasis)
Bearbeiten : syntax-ppss
scheint ein guter Ausgangspunkt zu sein, aber es ist mir nicht klar, wie man es an mehrere Zeichen entsprechende Paare anpassen würde (zB die `` LaTeX-Anführungszeichen '' oder sogar passende <b>html tags</b>
). Ich frage mich, ob es eine allgemeine Lösung gibt oder ob es einen speziell entwickelten Parser erfordern würde.
parse-partial-sexp
die zurückgegebene Datenstruktursyntax-ppss
ausführlicher erklärt als der von mir verlinkte Abschnitt des Elisp-Handbuchs.Wenn Sie zum Beispiel prüfen möchten, ob zwischen geschweiften Klammern Folgendes steht:
Sicher, Sie können die geschweiften Klammern durch das ersetzen, was Sie wollen.
BEARBEITEN:
Eine nützlichere Funktion wird in etwa so aussehen:
quelle
}
steht und sich nichts zwischen dem befindet{}
. Es kann schwierig sein, gepaarte Trennzeichen mit regulären Ausdrücken in Einklang zu bringen. Bessersyntax-pps
als @paprika vorgeschlagen.}
nicht das Verhalten ist, das ich gesehen habe: \ aber ja, die Paare mit regulären Ausdrücken zu bekommen ist in der Tat schwieriglooking-at
Untersucht den Text ab Punkt. Es sei denn, Punkt ist auf der}
ersten Aussage oben sollte nicht funktionieren? Vielleicht ein Unterschied zwischen den Emacs-Versionen. : /