Establecer sangría para la función de script de shell

11

Estoy tratando de establecer el número de espacios por sangría para iniciar una nueva función en sh-mode(sub-modo bash). He intentado configurar:

'(sh-basic-offset 2)
'(sh-indentation 2)
'(smie-indent-basic 2)

(como se muestra en custom-set-variablesen .emacs) y algunos otros también, pero ninguno de ellos ha tenido ningún efecto!

Robin Green
fuente
La forma de establecer variables no es a través de custom-set-variables(que es lo que internamente utiliza Customize pero que no debe usarse a mano). Mejor usar cosas como (setq sh-basic-offset 2).
Stefan

Respuestas:

7

sh-basic-offsetLo que se necesita es establecer la sangría requerida, pero de lo que no me di cuenta es que también es necesario cerrar y volver a abrir todos los archivos de script de shell antes de que la personalización surta efecto. No recuerdo haber tenido que hacer esto antes en emacs.

Robin Green
fuente
1
Después de cambiar .emacs, debe salir de emacs y reiniciarlo, o usarlo M-x load-filepara volver .emacsa cargar el archivo. Si desea volver a cargar un archivo que tiene abierto en su editor, puede decir C-x C-v RETURN"volver a visitarlo".
Alex L
El archivo de carga @AlexL no funciona en este caso particular. Como dije, esto es muy inusual. Por lo general, simplemente personalizar una variable es suficiente.
Robin Green
Hmm ... ¿sabes por qué esto sería @ robin-green? Soy curioso.
Alex L
También puede usarlo M-x set-variablesi desea cambiar esto para el búfer en el que está trabajando.
kotakotakota
1

Configuré-basic-offset en 2 pero eso no pareció funcionar, volví a presionar C-h v sh-<TAB>y me di cuenta de que había una sh-indentationvariable que configuré en 2 y todo parece funcionar como un encanto ahora.

Albaro Pereyra
fuente
Aclare lo que quiere decir con "set-basic-offset" y también aclare exactamente cómo "establece esa variable en 2".
Stefan
El foro omitió la pestaña porque puse entre el carácter mayor y menor que. Ch v sh- "presionar tab" autocompletar le mostrará una lista de variables.
Albaro Pereyra
Arregle su marcado, pero su comentario aún no explica qué quería decir con "set-basic-offset" ni cómo "establece esa variable en 2".
Stefan
Esta variable es obsoleta desde 26.1, use sh-basic-offseten su lugar.
goetzc
0

Tuve la misma experiencia que Albaro: configurar sh-basic-offset sin efecto, pero configurar sh-indentación funcionando como se esperaba.

En mi caso, evalué (setq sh-basic-offset 2)con emacs, por ejemplo. a través de Mx eval-expression. Estoy funcionando GNU Emacs 25.2.2 (x86_64-pc-linux-gnu, GTK+ Version 3.22.21) of 2017-09-22, modified by Debian. Mi modo principal es Shell-script.

Wes
fuente