2010-08-24 18 views
7

Ich muss Rechtschreibprüfung ein großes Dokument mit vielen Kamelkasken Wörter. Ich möchte, dass Ispell oder Aspell überprüft, ob die einzelnen Wörter richtig geschrieben sind.Mit ispell/aspell, um zu prüfen, kamelverkleidet Wörter

Also, falls dieses Wort:

ScientificProgrezGoesBoink

Ich würde dies haben lieben es vorschlagen, statt:

ScientificProgressGoesBoink

Gibt es Jeder Weg, dies zu tun? (Und ich meine, während es auf einem Emacs-Puffer läuft.) Beachten Sie, dass ich nicht unbedingt will, dass es die vollständige Alternative vorschlägt. Wenn es jedoch versteht, dass Progrez nicht erkannt wird, würde ich es lieben, zumindest diesen Teil ersetzen oder dieses Wort meinem privaten Wörterbuch hinzufügen zu können, anstatt jedes Kamel-Wort in das Wörterbuch aufzunehmen.

+0

Ich bin ziemlich sicher, dass einige cc-Modus mit camel case word umgehen kann - so konzeptionell könnte ich mir vorstellen, dass dies möglich ist. Ich habe absolut keine Ahnung wie. – cristobalito

+1

wäre es schön, eine allgemeine Lösung dafür zu haben. Aspell erlaubt die Überprüfung von zusammenlaufenden Wörtern, aber das ist zu liberal. –

Antwort

0

Sie sollten die mit Kamel umhüllten Wörter analysieren und aufteilen, dann die individuelle Schreibweise für jeden einzelnen prüfen und einen Vorschlag zusammenstellen, der den einzelnen Vorschlag für jedes falsch geschriebene Token berücksichtigt. Wenn man bedenkt, dass jedes falsch geschriebene Token mehrere Vorschläge haben kann, klingt das für mich ein wenig ineffizient.

+1

Ich hatte auf etwas leichteres gehofft, möglicherweise auf Subwort-Modus oder einige ispell-Modus Konfigurationsoptionen. Aspell hat Filter, aber AFAICT, es gibt keine Möglichkeit, eigene anzugeben. –

+1

FWIW, Brille-Modus macht einige ähnliche Parsing. – phils

3

Ich nahm @phils Vorschläge und grub ein wenig tiefer. Es stellt sich heraus, dass, wenn Sie camelCase-mode bekommen und einige von ispell wie folgt neu konfigurieren:

(defun ispell-get-word (following) 
    (when following 
    (camelCase-forward-word 1)) 
    (let* ((start (progn (camelCase-backward-word 1) 
         (point))) 
     (end (progn (camelCase-forward-word 1) 
        (point)))) 
    (list (buffer-substring-no-properties start end) 
      start end))) 

dann, in diesem Fall einzelne Kamel Wörter suchAsThisOne verrohrten tatsächlich korrekt buchstabieren-geprüft. (Es sei denn, Sie sind am Anfang eines Dokuments - ich habe gerade herausgefunden.)

So ist dies eindeutig nicht die volle Lösung, aber es ist zumindest etwas.