2010-12-08 28 views
10

¿Cómo deshabilitar la sangría automática en Emacs globalmente o solo para algunos modos?Deshabilitar la sangría automática de forma global en Emacs

Tengo una serie de paquetes instalados para RubyOnRails (ruby, html, js, css).

Digamos que quiero deshabilitar la autoinscripción para css-mode.

+3

No hay sangrado automático de forma predeterminada. Creo que primero debes aclarar tu pregunta. –

Respuesta

3

Es posible que desee buscar nombres de variables que contengan la palabra electric. (Este es el lenguaje común de Emacs para las acciones que se producen de forma automática, cuando se introducen determinados caracteres visibles.)

En este caso, Mxapropos-variableRETelectricRET me muestra que hay una variable css-electric-keys que contiene una lista de "Teclas de autoinserción que deben desencadenar una nueva sangría".

Usted podría utilizar M-xcustomize-variableRETcss-electric-keysRET para establecer esta lista a cero, o añadir (setq css-electric-keys nil) a su archivo de inicio.

A veces se usa un modo menor para implementar comportamientos eléctricos, de modo que puede encenderlos y apagarlos más fácilmente. Los que probablemente se encontraría a través de Mxapropos-commandRETelectricRET, y es probable que utilice un gancho modo mayor para asegurar que el modo menor eléctrica fue desactivado, de manera similar a esto:

(add-hook 'MAJORMODE-mode-hook 'my-MAJORMODE-mode-hook) 
(defun my-MAJORMODE-mode-hook() 
    (ELECTRICMODE-mode 0)) 
+0

¿Cómo averiguas qué términos usar en tu último ejemplo de modo ELECTRICMODE? Tengo problemas para desactivar la autoincripción en archivos JavaScript y no he tenido suerte con tus otras sugerencias para JS, desafortunadamente. – Malvineous

+4

Mi mejor sugerencia es familiarizarme lo más posible con la naturaleza de autoevaluación de Emacs y los comandos que giran en torno a esta instalación. Para el modo javascript utilicé 'Mx find-function RET javascript-mode RET' para abrir el archivo fuente que lo define, y luego simplemente busqué" auto "y rápidamente encontré un hit apropiado en esta variable:' Ch v js-auto- indent-flag RET' (que es personalizable, por lo que también podría haberlo encontrado usando 'Mx customize-group RET js RET' (" javascript "hubiera sido mejor, pero" js "fue una obviedad bastante obvia)) – phils

+0

De forma similar, 'Mx apropos-variable RET sangrar RET' (después de cargar el modo) descubrir la variable' js-auto-indent-flag'. Como recomendación general, puede ser útil leer el manual del sección Ayuda: 'M-: (información" (emacs) Ayuda ") RET'. Una vez que tenga un manejo decente sobre cómo encontrar cosas como esta, la personalización se vuelve un proceso mucho más fácil. – phils

1

Para mí, en emacs 24.x, Mxelectric-indent-mode alterno el comportamiento que quería deshabilitar.

Fwiw, el comportamiento fue que RET estaba atado al comando newline que se define en simple.el ... Entre otras cosas, el comportamiento de esa orden es alterado por electric-indent-mode.

+0

La próxima vez que mi tecla enter no lo haga hacer lo que quiero, recordaré simplemente 'Ch k RET' para ver a qué función/comando está obligado. – daveloyall

Cuestiones relacionadas