Ctags für Bash-Variablen generieren?

7

Wenn ich ctags für ein in bash geschriebenes Projekt ausführe, werden Tags für Funktionen generiert, jedoch nicht für Variablen.
zB wenn ich rennectags --list-kinds=sh

f Funktionen

Im Vergleich dazu, wenn ich die Liste für die Sprache "c" starte, werden viel mehr Tag-Typen aufgenommen.
Ist es möglich, Tags für Bash-Variablen zu generieren? oder kennt jemand einen benutzerdefinierten regulären Ausdruck, der hinzugefügt werden kann ~/.ctags, um dies zu aktivieren?

the_velour_fog
quelle
Möglicher Hinweis
Cometsong
@Cometsong danke, aber selbst wenn Sie ctags erhalten, um den Dateityp zu erkennen, ist der einzige Tag-Typ, den ctags für Shell-Dateien erzeugen kann - standardmäßig - Funktionen. Im Wesentlichen muss eine Regex-Regel geschrieben werden. Die Regeln sind ziemlich einfach zu schreiben, was mich (möglicherweise falsch) davon ausgehen lässt, dass es ein Problem gibt, das andere nicht lösen konnten, und daher noch keine Regex-Regel.
the_velour_fog

Antworten:

4

Basierend auf der Eingabeaufforderung von @Cometsong habe ich den regulären Regex-Ausdruck unten geschrieben und zu meinem hinzugefügt ~/.ctags

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

Bisher scheint es ganz gut zu funktionieren

the_velour_fog
quelle
3

Ein regulärer Ausdruck kann erstellt werden, um Variablendeklarationen wie zu finden [A-z]…=[A-z0-9]

Eine andere für die variable Verwendung, um ein \$in die Front aufzunehmen

Mein eigenes yaml-spezifisches .ctags-Beispiel ist:

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

Natürlich modifiziert für Bash-Ismen.

--regex-sh=/^.*[ \t]*([A-Za-z][A-Za-z0-9_]*)=[".]*/\1/k,tasks/
--languages=+sh
Kometengesang
quelle
danke, warum hast du deine Regex gelöscht? Ich denke, es brauchte ein ^Plus, um Strings in Anführungszeichen auf der rechten Seite von =zBfoo="hello world"
the_velour_fog
Siehe zum Beispiel Bearbeiten (derzeit nicht getestet).
Cometsong