Definir recuo para a função de script de shell

11

Eu estou tentando definir o número de espaços por recuo para iniciar uma nova função em sh-mode(sub-modo bash). Eu tentei definir:

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

(como mostrado na custom-set-variablesna .emacs) e alguns outros também, mas nenhum deles teve qualquer efeito!

Robin Green
fonte
A maneira de definir variáveis ​​não é via custom-set-variables(que é usada internamente pelo Customize, mas não deve ser usada manualmente). Melhor usar coisas como (setq sh-basic-offset 2).
27517 Stefan

Respostas:

7

Definir sh-basic-offseto recuo necessário é o necessário - mas o que eu não percebi é que também é necessário fechar e reabrir todos os arquivos de script de shell antes que a personalização entre em vigor. Não me lembro de ter feito isso antes no emacs.

Robin Green
fonte
11
Após a alteração .emacs, você deve sair do emacs e reiniciá-lo, ou usar M-x load-filepara recarregar seu .emacsarquivo . Se você deseja recarregar um arquivo que você abriu no seu editor, pode dizer C-x C-v RETURNpara "revisitá-lo".
Alex L
O arquivo de carregamento @AlexL não funciona nesse caso específico. Como eu disse, isso é muito incomum. Normalmente, basta personalizar uma variável.
Robin Green
Hmm ... você sabe por que isso seria @ robin-green? Estou curioso.
Alex L
Você também pode usar M-x set-variablese quiser alterar isso apenas para o buffer em que está trabalhando.
kotakotakota
1

Eu ajustei o offset básico para 2, mas isso não pareceu funcionar, voltei pressionado C-h v sh-<TAB>e percebi que havia um sh-indentationconjunto de variáveis ​​para 2 e tudo parece funcionar como um encanto agora.

Albaro Pereyra
fonte
Por favor, esclareça o que você quer dizer com "set-basic-offset" e também esclareça exatamente como "você define essa variável para 2".
27517 Stefan
O fórum omitiu a guia porque eu coloquei entre o caractere maior que e menor que. Ch v sh- "pressione a tecla" preenchimento automático irá mostrar uma lista de variáveis.
Albaro Pereyra
Corrigi sua marcação, mas seu comentário ainda não explica o que você quis dizer com "set-basic-offset" nem como "define essa variável para 2".
21417 Stefan #
Esta variável está obsoleta desde 26.1, use em seu sh-basic-offsetlugar.
Goetzc #
0

Eu tive a mesma experiência que o Albaro: definir sh-basic-offset sem efeito, mas definir sh-recuo funcionando conforme o esperado.

No meu caso, (setq sh-basic-offset 2)avaliei com o emacs, por exemplo. via Mx eval-expression. Estou executando GNU Emacs 25.2.2 (x86_64-pc-linux-gnu, GTK+ Version 3.22.21) of 2017-09-22, modified by Debian. Meu principal modo é o script Shell.

Wes
fonte