Inkrementelle Suche nach nicht akzentuierten Zeichen

691
user38983

Verfügt Emacs über einen inkrementellen Suchmodus, bei dem die Suche nach einem Zeichen nach sich selbst und nach anderen Versionen des Zeichens mit Akzentzeichen sucht, ähnlich wie Google Chrome (mindestens v27) bei der Suche auf einer Seite?

Gibt es alternativ eine zusätzliche Bibliothek oder einen elisp-Code, mit dem die inkrementelle Suche in einem solchen Modus durchgeführt werden kann?

Beispiel: Inkrementelle Suche nach:

  • "Manana", würde "Manana" oder "mañana" finden
  • "kunterbunt", würde auch "Mötley Crüe" finden (ohne Berücksichtigung der Groß- und Kleinschreibung).

Selbst eine Lösung, die nur eine Teilmenge dieser Zeichen abdeckt, wäre hilfreich.

6
Tolle Frage. Juri Linkov sprach davon, dies für Emacs umzusetzen, aber bis jetzt ist nichts daraus geworden. Sehen Sie sich diese beiden Emacs-Bug-Threads an: (1) http://debbugs.gnu.org/cgi/bugreport.cgi?bug=13041 und (2) http://debbugs.gnu.org/cgi/bugreport.cgi?bug = 13480 # 41. Drew vor 10 Jahren 0
Nicht die Lösung, aber es gibt Bibliotheken, die zumindest Akzente aus dem Text entfernen können. Möglicherweise können Sie einiges von dem, was Sie möchten, mit einem davon erledigen (Akzente vorübergehend entfernen usw.). Ich glaube, es gibt mehrere solcher Bibliotheken, aber ich kenne nur eine, die ich vor langer Zeit geschrieben habe: [unaccent.el] (http://www.emacswiki.org/emacs-de/download/unaccent.el). Sie können zweifellos etwas jüngeres und besseres finden. Aber wir brauchen wirklich eine Lösung, wie sie im ersten Bug-Thread erwähnt wurde. Drew vor 10 Jahren 0
Dieser Link (http://thread.gmane.org/gmane.emacs.devel/117003/focus=117959) im ersten Fehler, den Sie erwähnt haben, entspricht meinem aktuellen Bedarf perfekt. Gibt es eine Möglichkeit, Ihren Kommentar (und möglicherweise den Code-Ausschnitt) als Antwort einzugeben, damit ich ihn als Antwort akzeptieren kann? user38983 vor 10 Jahren 0

2 Antworten auf die Frage

5
Drew

Tolle Frage. Juri Linkov sprach davon, dies für Emacs umzusetzen, aber bis jetzt ist nichts daraus geworden. Sehen Sie diese zwei Emacs-Bugthreads:

Sehen Sie sich zum Beispiel diesen Teil des ersten Bug-Threads an. Es enthält diesen Code von Ulrich Müller:

 (let ((eqv-list '("aAàÀáÁâããääåÅ") "cCçÇ" "eEèÈéÉêÊëË" "iIìÌíÍîÎïÏ" "nNñÑ" "oOòÒóÓôÔõÕöÖøØ" "uUùÙúÚûÛüÜ" "yYýÝÿ")) (Tabelle (Standardfalltabelle)) Kanon) (setq canon (Kopie-Sequenz-Tabelle)) (mapcar (lambda (s)) (mapcar (lambda (c) (aset canon c (aref s 0))) s)) Eqv-Liste) (Set-Char-Table-Extra-Slot-Tabelle 1 Kanon) (set-char-table-extra-slot-tabelle 2 null) (Set-Standard-Case-Table-Tabelle)) 

AKTUALISIEREN

Die Zeichenfaltung (die Fähigkeit, von Akzenten und Ähnlichem zu suchen, wenn gesucht), wird in Emacs 25 verfügbar sein. Siehe NEWS( C-h N) in einem Emacs 25-Entwicklungsbuild. Dies ist eine willkommene Ergänzung und verspricht, in zukünftigen Versionen verbessert zu werden.

Meine Bibliothek character-fold+.elist eine mögliche Erweiterung, die jetzt verfügbar ist. Sie können optional nicht nur nach Akzentzeichen suchen (z. B. é), indem Sie das Basiszeichen eingeben (z. B. e), sondern auch einen umgekehrten Typ einer Reihe gleichwertiger Zeichen ausführen, um nach einem Zeichen zu suchen. Außerdem können Sie die Zeichenfaltung anpassen, indem Sie Ihre eigenen Äquivalenzklassen hinzufügen (und die von Emacs definierten, außer den für Diakritiker definierten) bearbeiten.

Hier ist eine Nachricht emacs-devel@gnu.orgdazu.

1
Rémi

Ich habe keine perfekte Lösung, aber ich verwende die inkrementelle Regex-Suche: C-S-s ma[nñ]anaoder C-S-s ma.anaaber das ist nicht ideal.