Pergunta

Ao escrever scripts executáveis ​​e arquivos de configuração declarativos que usam uma linguagem comum (por exemplo.Python), muitas vezes acho indesejável adicionar uma extensão ao nome do arquivo.Muitos editores de texto com realce de sintaxe (por exemplo.Geany) subsequentemente não conseguem determinar automaticamente o tipo de arquivo.

Existe algum método padrão para indicar aos editores o tipo de fonte do arquivo?

Foi útil?

Solução

Normalmente, a linha shebang é usada como alternativa.

Por exemplo, um script Ruby sem extensão começaria com:

#!/usr/bin/env ruby

Outras dicas

Vim

O Vim tem um conceito chamado modelar.Uma modeline é uma linha especialmente formatada nas primeiras ou últimas 5 linhas do arquivo de texto, que permite que você :setlocal variáveis ​​locais.Por exemplo, para C:

 /* vi: set filetype=c fileencoding=UTF-8 shiftwidth=4 tabstop=4 expandtab */

ou Rubi:

 # vi: set filetype=ruby fileencoding=UTF-8 shiftwidth=2 tabstop=2 expandtab

Mais um pouco de documentação.

Emacs

O Emacs tem um conceito semelhante, chamado Variáveis ​​de arquivo.

As variáveis ​​de arquivo são especificadas no início do arquivo (na primeira linha ou, se houver uma linha shebang, na segunda) neste formato:

/* *-* mode: cc c-basic-offset: 4; tab-width: 4; indent-tabs-mode: nil *-* */

ou no final:

# Local Variables:
# mode: ruby
# coding: utf-8
# c-basic-offset: 2
# tab-width: 2
# indent-tabs-mode: nil
# End:

j

jEdit chama isso propriedades locais do buffer.Eles devem ficar entre as primeiras ou últimas 10 linhas e ter a seguinte aparência:

# :mode=ruby:indentSize=2:tabSize=2:noTabs=true:

jEdit também usa a linha shebang como substituto para detecção de modo.

Edição Komodo

Existe um plugin chamado Komode (trocadilho intencional) que adiciona suporte modeline ao Komodo Edit:

# komode: le=unix language=ruby codepage=utf8 tab=2 notabs indent=2

Ele também compreende um subconjunto limitado de modelos do Vim.

Outros

Muitos outros editores também têm suas próprias variantes ou suportam uma das opções acima (geralmente Vim).

Codificação Python/Ruby

Tanto Ruby 1.9 quanto Python exigem que a codificação para arquivos de origem não-ASCII seja especificada explicitamente.Felizmente, eles fazem isso de uma forma compatível com os modelos Emacs e Vim.(Basicamente, eles procuram a string coding seguido por um caractere que não seja uma palavra seguido por um espaço em branco seguido por um nome de codificação válido.Ambos Vim fileencoding= e Emacs' coding: satisfazer esses requisitos.)

Gerador de Modelina

Aqui está um simples gerador de modelina, que gera modelos para Vim, Emacs e jEdit.

Isso funciona para muitos editores se você estiver usando shebangs não padrão:

#!/usr/bin/env python3
# filetype=python
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top