2009-04-23 33 views
43

Estoy usando el modo Emacs-Speaks-Statistics (ESS) para Emacs. Cuando edito el código R, cualquier línea de comentario (aquellas que comienzan con #) se etiqueta automáticamente a la extrema derecha cuando creo una nueva línea encima de ella. ¿Cómo debo cambiar mi archivo .emacs.el para arreglar esto?Emacs Modo ESS - Tabbing para comentario Región

Por ejemplo, tengo:

# Comment 

Ahora, después de poner mi cursor al principio de la línea y pulsar Intro, me sale:

       # Comment 

Gracias por cualquier insinuación.

Respuesta

51

Use '###' si no desea que se sangren los comentarios. De acuerdo con la manual,

Por defecto, los comentarios comienzan con ‘###’ están alineados con el comienzo de la línea . Los comentarios que comienzan con '##' están alineados con el nivel actual de la sangría para el bloque que contiene el comentario. Por último, comenta comenzando con '#' están alineados a una columna a la derecha (la columna 40a por defecto, pero este valor es controlado por el comentario columnas variable) o justo después de la expresión en la línea que contiene el comentario si se extiende más allá de la columna de sangría .

+1

Estoy contento de haber mirado antes de hacer esta misma pregunta exacta. Marqué esta respuesta porque creo que es realmente una mejor solución que la respuesta anterior. Durante mucho tiempo pensé que se trataba de un error/problema con el modo ESS, pero después de ajustar mi sintaxis, todos mis problemas desaparecieron. – Choens

+3

Esta convención puede parecer extraña si no usa mucho Emacs. Sin embargo, esta convención proviene de lisp y emacs-lisp, donde el número de punto y coma denota el tipo de comentario y, por lo tanto, cómo debe sangrarse. –

29

De cualquier

(setq ess-fancy-comments nil) 

si no desea aplicar la sangría solo o # comentarios o

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

si desea cambiar el comportamiento de Enter para que no se guión.

+0

Esto es simplemente sublime! ¡¡¡Gracias!!! – aL3xa

+4

Creo que debería usar "#" para los comentarios al final de la línea, y estos están bien sangrados a la misma columna a propósito -> buen código "listado". Para los otros comentarios, realmente me meto en el hábito de usar "##" (mucho más que "###"): Estos sangrados como otras "declaraciones" dentro de ese bloque de código –

+2

Todavía estoy a favor de decidir cuántos #s debo usar. Uno es generalmente suficiente, por lo que esta respuesta es muy apreciada ya que mi comentario no se mueve a una ubicación que no quiero que sea ... – user989762

1

La respuesta de Jouni no funcionó para mí. Pero me encontré con un enfoque que hace aquí: 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í, también tuve que hacer esto para que funcionara; de lo contrario, se anularía localmente. –