Emacs Ruby Symbol Wort Vervollständigung

8

Oft definiere ich ein Ruby-Symbol (zB :some_value ), dann möchte ich eine Methode mit dem gleichen Namen def some_value erstellen.

Leider funktioniert die Autokomplettierung ( M + / ) für das zweite Vorkommen von some_value string nicht, da sie etwas anders ist ( :some_value vs some_value ).

Wie kann ich Emacs einrichten, um solche Ereignisse zu behandeln?

    
vise 04.08.2010, 07:09
quelle

5 Antworten

7

Angenommen, M- / ist an die Dbb-Erweiterung gebunden, können Sie den Dabbrev-Modus so konfigurieren, dass beim Erweitern von Strings bestimmte Präfixe ignoriert werden. Um einen einzelnen Doppelpunkt zu einem Präfix zu machen, das ignoriert werden soll, geben Sie

ein %Vor%

und dann

%Vor%

Dies bringt Sie zur Anpassungsseite für den Dabbrev-Modus. Gehe zum Punkt Dabbrev Abbrev Skip Leading Regexp und klicke auf Value menu . Wählen Sie aus dem Menü "Regexp".

Nun sehen Sie ein Textfeld mit der Bezeichnung "Regexp:" neben dem Wertemenü, in dem Sie einen einzelnen Doppelpunkt eingeben.

%Vor%

Klicken Sie dann in der nächsten Zeile auf den Button State und wählen Sie den Wert "Save for Future Sessions".

    
Thomas 07.12.2010, 15:19
quelle
2

Zuerst meine Ergebnisse! Ich habe :some_crazy_symbol in mein Modell eingegeben. Auf einer neuen Zeile tippte ich def so , schlug M-/ zweimal und endete mit

%Vor%

(Rinari lieferte das end .)

Ich habe das ziemlich gut mit hippie-expand geschafft. Wenn Sie es testen möchten, binden Sie hippie-expand an M-/ like so:

%Vor%

Hier ist die Dokumentation . Hippie expandiert, indem er verschiedene Erweiterungen am aktuellen Punkt ausprobiert. Diese Erweiterungen werden in der Variablen hippie-expand-try-functions-list gespeichert. Auf meinem System (und standardmäßig) ist diese Variable auf:

gesetzt

(try-complete-file-name-partially try-complete-file-name try-expand-all-abbrevs try-expand-list try-expand-line try-expand-dabbrev try-expand-dabbrev-all-buffers try-expand-dabbrev-from-kill try-complete-lisp-symbol-partially try-complete-lisp-symbol)

Die Minibuffer-Anzeige zeigte, dass diese spezielle Erweiterung mit der Funktion try-expand-dabbrev erreicht wurde.

    
Sam Ritchie 07.12.2010 15:50
quelle
1

Keine direkte Antwort auf Ihre Frage, aber Sie sollten eine intelligentere automatische Ruby-Vervollständigung erhalten, indem Sie den automatischen Vervollständigungsmodus verwenden mit rsense .

    
darioo 07.12.2010 15:26
quelle
1

Wenn Dabbrev Abkürzung Führender Regexp überspringen und hippie-expand nicht genau das tun, was Sie wollen, und Sie einige Fähigkeiten haben, können Sie eine benutzerdefinierte Funktion für hippie-expand erstellen.

Siehe den Abschnitt über " Teilstring-Erweiterung " auf < eine href="http://www.emacswiki.org/emacs/HippieExpand"> hippie-expand Seite im Emacs-Wiki. Es gibt eine Funktion, die Sie dort verwenden könnten, die Sie anpassen könnten ..

  

Unterstring-Erweiterung

     

Beim Lisp-Programmieren ist Standard-Dabbrev weniger nützlich, da Emacs keine Namespaces hat. Daher beginnen Symbole in einem Paket mit demselben Präfix, daher muss das gleiche Präfix immer wieder eingegeben werden, wenn man Symbole aus dem Paket vervollständigen möchte . Wie bei IswitchBuffers ist es viel effektiver, wenn ein eindeutiger Teilstring eingegeben werden kann, um zum gewünschten Symbol zu gelangen.

     

Dabbrev bietet diesbezüglich nichts, also wandte ich mich an Hippie Expand, das ich noch nie zuvor benutzt hatte.

     

Hier ist eine Funktion, die auf der Erweiterung dabbrew von hippie expand basiert und die Teilstring-Erweiterung ausführt:

%Vor%     
Bert F 07.12.2010 15:51
quelle
1

Ich dachte, ich würde die Lösung teilen, die ich für hippie-expand gefunden habe.

Zusammenfassend:

%Vor%

hippie-expand erweitert Symbole in ruby-mode , wenn : als Interpunktionszeichen betrachtet wird. Daher erstellt dieser Hinweis eine temporäre Syntaxtabelle, in der : ein Interpunktionszeichen ist und hippie-expand damit aufruft.

    
waymondo 02.07.2015 15:48
quelle

Tags und Links