2009-04-23 9 views
43

Sto utilizzando la modalità Emacs-Speaks-Statistics (ESS) per Emacs. Quando si modifica il codice R, qualsiasi riga di commento (quelle che iniziano con #) viene automaticamente visualizzata a schede all'estrema destra quando creo una nuova riga sopra di essa. Come dovrei cambiare il mio file .emacs.el per risolvere il problema?Modalità ESS Emacs - Tab per regione commento

Per esempio, ho:

# Comment 

Ora, dopo aver messo il mio cursore all'inizio della riga e premendo Invio, ottengo:

       # Comment 

Grazie per eventuali suggerimenti.

risposta

51

Utilizzare '###' se non si desidera che i commenti rientrino. Secondo il manual,

Per impostazione predefinita, i commenti che iniziano con ‘###’ sono allineati all'inizio del linea. I commenti che iniziano con '##' sono allineati al livello corrente del rientro per il blocco contenente il commento . Infine, commenta che inizia con '#' sono allineate ad una colonna a destra (la colonna 40th di default, ma questo valore è controllata dal commento-colonna della variabile,) o subito dopo l' espressione sulla linea contenente il commento se si estende oltre la colonna di rientro .

+1

Sono contento di aver guardato prima di fare questa stessa identica domanda. Ho segnalato questa risposta perché penso che sia davvero una soluzione migliore rispetto alla risposta di cui sopra. Ho pensato a lungo che si trattasse di un bug/problema con la modalità ESS, ma dopo aver modificato la mia sintassi, i miei problemi sono scomparsi. – Choens

+3

Questa convenzione può sembrare strana se non si usa molto Emacs. Tuttavia, questa convenzione proviene da lisp ed emacs-lisp, dove il numero di punti e virgola denota il tipo di commento, e quindi come dovrebbe essere indentato. –

29

In entrambi i

(setq ess-fancy-comments nil) 

se non si desidera far rientrare single # commenti, o

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

se si desidera modificare il comportamento di Invio in modo che non trattino.

+0

Questo è solo sublime! Grazie!!! – aL3xa

+4

Piuttosto, penso che dovresti usare "#" per i commenti di fine linea, e questi sono piacevolmente rientrati nella stessa colonna di proposito -> bel codice "elenco". Per gli altri commenti, prendi davvero l'abitudine di usare "##" (molto più di "###"): questi indent come altre "dichiarazioni" all'interno di quel blocco di codice –

+2

Sono ancora a favore di decidere quanti # dovrei usare. Uno è generalmente sufficiente quindi questa risposta è molto apprezzata in quanto il mio commento non viene spostato in una posizione che non voglio che sia ... – user989762

1

La risposta di Jouni non ha funzionato per me. Ma ho trovato un approccio qui che fa: 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

Sì, dovevo farlo anche perché funzionasse, altrimenti verrebbe cancellato localmente. –

Problemi correlati