P: Czy istnieje ogólny sposób na wykrycie, czy punkt znajduje się w dopasowanej parze znaków?
To znaczy: czy istnieje ogólna funkcja predykatu (lub coś w tym rodzaju), która może określić, czy punkt znajduje się pomiędzy dopasowaną parą, czy niektórymi dowolnie wybranymi znakami? Myślę o jednym, który oceniałby t
, powiedzmy, w następujących scenariuszach w !
odniesieniu do punktu:
"!" (quotes in general)
``!'' (LaTeX quotes)
$!$ (LaTeX math)
(!) (lisp parens)
*!* (org emphasis)
Edycja : syntax-ppss
wydaje się być dobrym punktem wyjścia, ale nie jest dla mnie jasne, w jaki sposób można go dostosować do par dopasowanych do wielu znaków (np. `` Cytaty LaTeX '', a nawet dopasowane <b>html tags</b>
). Zastanawiam się, czy istnieje ogólne rozwiązanie, czy też wymagałoby to specjalnie skonstruowanego analizatora składni.
parse-partial-sexp
wyjaśnia strukturę danych zwróconąsyntax-ppss
bardziej szczegółowo niż sekcja instrukcji Elisp, do której linkowałem.Jeśli chcesz na przykład sprawdzić, czy między nawiasami klamrowymi, użyj tego:
Jasne, możesz zastąpić nawiasy klamrowe czymkolwiek chcesz.
EDYTOWAĆ:
Bardziej użyteczną funkcją będzie coś podobnego:
źródło
}
, i nie ma nic pomiędzy{}
. Prawidłowe sparowanie ograniczników z wyrażeniami regularnymi może być trudne. Lepiej używaćsyntax-pps
zgodnie z sugestią @paprika.}
nie jest zachowanie, które widziałem: \ ale tak, uzyskanie par za pomocąlooking-at
sprawdza tekst zaczynając od punktu. chyba że punkt na}
pierwszym stwierdzeniu powyżej nie powinien działać? Może różnica między wersjami Emacsa. : /