ctags-lang-julia¶
Random notes about tagging Julia source code with Universal-ctags
- Version
 5.9.0
- Manual group
 Universal-ctags
- Manual section
 7
SYNOPSIS¶
DESCRIPTION¶
This man page gathers random notes about tagging Julia source code.
TAGGING import AND using EXPRESSIONS¶
Summary¶
using X
name
kind
role
other noticeable fields
X
module
used
N/A
using X: a, b
name
kind
role
other noticeable fields
X
module
namespace
N/A
a, b
unknown
used
scope:module:X
import X
name
kind
role
other noticeable fields
X
module
imported
N/A
import X.a, Y.b
name
kind
role
other noticeable fields
X, Y
module
namespace
N/A
a
unknown
imported
scope:module:X
b
unknown
imported
scope:module:Y
import X: a, b
name
kind
role
other noticeable fields
X
module
namespace
N/A
a,b
unknown
imported
scope:module:X
Examples¶
“input.jl”
using X0
“output.tags” with “--options=NONE -o - --extras=+r --fields=+rzK input.jl”
X0      input.jl        /^using X0$/;"  kind:module     roles:used
--extras=+r (or --extras=+{reference}) option is needed for this tag,
since it’s a reference tag. This is because module X is not defined here.
It is defined in another file. Enable roles: field with --fields=+r is
for recording that the module is “used”, i.e., loaded by using.
“input.jl”
import X1.a, X2.b, X3
“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
Why X1 and X2 have role “namespace”, while X3 have 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
“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.