ctags-lang-julia(7)
π Name π
ctags-lang-julia β literally just a pile of random notes about tagging Julia source code with Universal-ctags π (yep, this is the ctags-lang-julia(7) page from the Universal-ctags manual, iykyk)
β¨ SYNOPSIS β¨
ctags ... --languages=+Julia ...
ctags ... --language-force=Julia ...
ctags ... --map-Julia=+.jl ...
πΈ DESCRIPTION πΈ
This man page gathers random notes about tagging Julia source code. That's it, that's the vibe β no big overarching thesis, just notes, bestie π«Ά
π¦ TAGGING import AND using EXPRESSIONS π¦
π Summary π
using X
- name:
Xβ kind:moduleβ role:usedβ other noticeable fields: N/A
using X: a, b
- name:
Xβ kind:moduleβ role:namespaceβ other noticeable fields: N/A - name:
a, bβ kind:unknownβ role:usedβ other noticeable fields:scope:module:X
import X
- name:
Xβ kind:moduleβ role:importedβ other noticeable fields: N/A
import X.a, Y.b
- name:
X, Yβ kind:moduleβ role:namespaceβ other noticeable fields: N/A - name:
aβ kind:unknownβ role:importedβ other noticeable fields:scope:module:X - name:
bβ kind:unknownβ role:importedβ other noticeable fields:scope:module:Y
import X: a, b
- name:
Xβ kind:moduleβ role:namespaceβ other noticeable fields: N/A - name:
a,bβ kind:unknownβ role:importedβ other noticeable fields:scope:module:X
π Examples π
Okay so first up, "input.jl":
using X0
and "output.tags" with --options=NONE -o - --extras=+r --fields=+rzK input.jl:
X0 input.jl /^using X0$/;" kind:module roles:used
The --extras=+r (or --extras=+{reference}) option is needed for this tag, since it's a reference tag β because module X is not defined here, it's defined in another file. Enabling the roles: field with --fields=+r is for recording that the module is "used", i.e. loaded by using π
Next one, "input.jl":
import X1.a, X2.b, X3
and "output.tags" with --options=NONE -o - --extras=+r --fields=+rzKZ input.jl:
X1 input.jl /^import X1.a, X2.b, X3$/;" kind:module roles:namespace
X2 input.jl /^import X1.a, X2.b, X3$/;" kind:module roles:namespace
X3 input.jl /^import X1.a, X2.b, X3$/;" kind:module roles:imported
a input.jl /^import X1.a, X2.b, X3$/;" kind:unknown scope:module:X1 roles:imported
b input.jl /^import X1.a, X2.b, X3$/;" kind:unknown scope:module:X2 roles:imported
So likeβ¦ why do X1 and X2 have role "namespace", while X3 has role "imported"? π It's because the symbol a in module X1, and b in module X2 are brought to the current scope, but X1 and X2 themselves are not. We use the "namespace" role for such modules.
X3 is different. The symbol X3, together with all exported symbols in X3, is brought to current scope. For such modules, we use "imported" or "used" role depending whether they are loaded by import or using.
Also, notice that a and b have the "unknown" kind. This is because we cannot know whether it's a function, constant, or macro, etc. π
π SEE ALSO π
That's the whole page, bestie β thanks for reading, you ate π
β¨ This was version 6.2.1 of ctags-lang-julia(7) from Universal-ctags, mwah π π
π¦ where this page comes from
- ubuntu resolute: universal-ctags 6.2.1-1 Β· GPL-2.0-or-later
- ubuntu stonking: universal-ctags 6.2.1-1 Β· GPL-2.0-or-later
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms