2009-04-23 7 views
43

Ich verwende den Emacs-Speaks-Statistics (ESS) -Modus für Emacs. Beim Bearbeiten von R-Code werden alle Kommentarzeilen (die mit # beginnen) automatisch nach ganz rechts verschoben, wenn ich darüber eine neue Zeile erzeuge. Wie sollte ich meine .emacs.el-Datei ändern, um das Problem zu beheben?Emacs ESS Mode - Tabbing für Kommentar Region

Zum Beispiel habe ich:

# Comment 

Jetzt, nach meinem Cursor am Anfang der Zeile setzen und die Eingabetaste drücken, erhalte ich:

       # Comment 

Vielen Dank für alle Hinweise.

Antwort

51

Verwenden Sie '###', wenn die Kommentare nicht eingerückt sein sollen. Nach dem manual,

standardmäßig beginnen Kommentare mit ‚###‘ sind an den Anfang des die Linie ausgerichtet sind. Kommentare beginnend mit '##' sind auf den aktuellen Stand von Einrückung für den Block mit der Kommentar ausgerichtet. Schließlich kommentiert mit ‚#‘ beginnen, ausgerichtet sind, zu einer Spalte auf der rechten Seite (40. Spalte standardmäßig, aber dieser Wert ist durch die Variable gesteuert Kommentar-Spalte) oder kurz nach dem Ausdruck auf der Linie enthält den Kommentar, wenn er über die Einrückungsspalte hinausgeht.

+1

Ich bin froh, dass ich schaute, bevor ich genau die gleiche Frage gestellt habe. Ich habe diese Antwort markiert, weil ich denke, dass es eine bessere Lösung ist als die obige Antwort. Ich habe lange gedacht, dass dies ein Fehler/Problem mit ESS-Modus war, aber nachdem ich meine Syntax optimiert habe, sind meine Probleme alle weg. – Choens

+3

Diese Konvention mag seltsam erscheinen, wenn Sie Emacs nicht viel benutzen. Diese Konvention stammt jedoch von lisp und emacs-lisp, wobei die Anzahl der Semikolons den Typ des Kommentars und somit die Art des eingerückten Kommentars angibt. –

29

Entweder

(setq ess-fancy-comments nil) 

wenn Sie wollen nie Single- # Kommentare einrücken oder

(add-hook 'ess-mode-hook 
      (lambda() 
      (local-set-key (kbd "RET") 'newline))) 

wenn Sie wollen von Geben Sie das Verhalten ändern, damit es nicht Einzug.

+0

Dies ist nur sublime! Vielen Dank!!! – aL3xa

+4

Eher denke ich, dass Sie "#" für End-of-Line-Kommentare verwenden sollten, und diese sind absichtlich in die gleiche Spalte eingerückt -> nice code "Listing". Für die anderen Kommentare, wirklich kommen in die Angewohnheit der Verwendung von "##" (viel mehr als "###"): Diese Einrückung als andere "Anweisungen" in diesem Block des Codes –

+2

Ich bin immer noch dafür zu entscheiden, wie viele Nummern ich verwenden soll. Eins ist im Allgemeinen ausreichend, daher wird diese Antwort sehr geschätzt, da mein Kommentar nicht an einen Ort verschoben wird, den ich nicht möchte ... – user989762

1

Jounis Antwort funktionierte nicht für mich. Aber ich fand hier ein Ansatz, der tut: https://stat.ethz.ch/pipermail/ess-help/2016-May/010970.html

(defun my-ess-settings() 
    (setq ess-indent-with-fancy-comments nil)) 
    (add-hook 'ess-mode-hook #'my-ess-settings) 
+0

Ja, ich musste das auch tun, damit es funktioniert, sonst würde es lokal überschrieben werden. –