Gerar ctags para variáveis ​​bash?

7

Quando executo ctags para um projeto escrito em bash, são geradas tags para funções, mas não para variáveis.
por exemplo, se eu correrctags --list-kinds=sh

funções f

Em comparação com se eu executar a lista para o idioma "c", muitos tipos de tags são incluídos.
É possível gerar tags para variáveis ​​bash? ou alguém conhece um regex personalizado que pode ser adicionado ~/.ctagspara ativar isso?

the_velour_fog
fonte
Possível causa de resposta: stackoverflow.com/q/11740202/1600630
Cometsong
@Cometsong obrigado, mas mesmo quando você obtém ctags para reconhecer o tipo de arquivo, o único tipo de tag ctags é capaz de produzir para arquivos shell - por padrão - são funções. essencialmente uma regra regex precisa ser escrita. as regras são muito fáceis de escrever, o que me leva a supor (possivelmente errado) que há algum problema que outros ainda não foram capazes de resolver e, portanto, nenhuma regra de regex ainda.
the_velour_fog

Respostas:

4

com base no prompt do @Cometsong, adicionei a expressão regex abaixo e a minha ~/.ctags

--regex-sh=/^[ \t]*(local)?[ \t]*([A-Za-z0-9_-]+)=/\2/v,variable,variables/

Até agora, parece estar funcionando muito bem

the_velour_fog
fonte
3

Um regex pode ser construído para encontrar declarações variáveis ​​como [A-z]…=[A-z0-9]

Outro para uso variável para incluir um \$na frente

Meu próprio exemplo .ctags específico do yaml é:

--regex-c=/^( YAML langdef config )/\1/k,t/
--langdef=yaml
--langmap=yaml:.yml.yaml
--regex-yaml=/^[ \t]*-[ \t]*.*:[ \t]*(.+)/\1/k,tasks/
--languages=+yaml

Modificado para bash-ismos, é claro.

--regex-sh=/^.*[ \t]*([A-Za-z][A-Za-z0-9_]*)=[".]*/\1/k,tasks/
--languages=+sh
Cometsong
fonte
obrigado, por que você excluiu seu regex? Eu acho que precisava de um ^mais necessária a capacidade de cordas de captura dentro de aspas no lado direito da =exfoo="hello world"
the_velour_fog
Veja editar por exemplo (atualmente não testado).
Cometsong