Especifique a variante shell nas variáveis locais do Emacs para o arquivo

3

Como posso especificar a variante de shell para um arquivo nas variáveis locais do Emacs desse arquivo, quando o arquivo não é um programa independente?

O Emacs me permite especificar que um arquivo de inclusão do shell deve ser aberto no modo sh , definindo uma variável local nas dicas do editor:

# Local variables:
# coding: utf-8
# mode: sh
# End:
# vim: fileencoding=utf-8 filetype=bash :

Eu posso especificar para o Vim que a variante do shell do arquivo é especificamente Bash, e ele obedece a dica do editor para apresentar o realce específico da sintaxe Bash. Mas o Emacs tem o modo sh , que abrange todas as variantes do shell.

O Emacs interpretará corretamente tal arquivo se ele tiver uma linha shebang (por exemplo, #! /bin/bash ). Mas alguns arquivos não são programas autônomos, então eu não quero que eles tenham uma linha shebang.

O modo Emacs sh trata esses arquivos como a sintaxe do shell Posix, o que eles não são. O modo sh tem o conceito de "variante" da sintaxe do shell; mas não consigo descobrir como especificar, nas dicas do editor do arquivo, qual variante usar para o arquivo.

Como posso definir as dicas do editor no arquivo para dizer ao Emacs que sua sintaxe é Bash?

Actualização 2014-04-24: Eu relatei o erro Emacs # 17333 para este comportamento em falta .

    
por bignose 18.04.2014 / 04:21

1 resposta

2

Observando o código sh-mode , parece que alguém pode ter desejado permitir isso configurando sh-shell ou talvez sh-shell-file como uma variável de arquivo local. Nem funciona realmente, no entanto. Por favor, considere enviar um relatório de bug para o mantenedor sh-mode sobre isso. Parece que deve ser tão fácil quanto adicionar sh-shell: bash ao bloco de variáveis locais do arquivo, e essa pode ter sido a intenção original, mas simplesmente não funciona.

O que funciona é um dos seguintes:

  1. Nomeie o arquivo para algo que termina em .bash .

  2. Adicione eval: (sh-set-shell "bash") ao bloco de variáveis locais do arquivo. Por padrão, o Emacs mostrará um aviso de que este pode ser um código não seguro, embora possa ser desativado.

por 18.04.2014 / 20:37