xref: /Universal-ctags/man/ctags-lang-julia.7.rst.in (revision 4d8561a9e6e1ef50804d27ff33e9111faf292f87)
13cc79e5cSAmaiKinono.. _ctags-lang-julia(7):
23cc79e5cSAmaiKinono
33cc79e5cSAmaiKinono==============================================================
43cc79e5cSAmaiKinonoctags-lang-julia
53cc79e5cSAmaiKinono==============================================================
63cc79e5cSAmaiKinono-------------------------------------------------------------------
73cc79e5cSAmaiKinonoRandom notes about tagging Julia source code with Universal-ctags
83cc79e5cSAmaiKinono-------------------------------------------------------------------
93cc79e5cSAmaiKinono:Version: @VERSION@
103cc79e5cSAmaiKinono:Manual group: Universal-ctags
113cc79e5cSAmaiKinono:Manual section: 7
123cc79e5cSAmaiKinono
133cc79e5cSAmaiKinonoSYNOPSIS
143cc79e5cSAmaiKinono--------
153cc79e5cSAmaiKinono|	**@CTAGS_NAME_EXECUTABLE@** ... --languages=+Julia ...
163cc79e5cSAmaiKinono|	**@CTAGS_NAME_EXECUTABLE@** ... --language-force=Julia ...
173cc79e5cSAmaiKinono|	**@CTAGS_NAME_EXECUTABLE@** ... --map-Julia=+.jl ...
183cc79e5cSAmaiKinono
193cc79e5cSAmaiKinonoDESCRIPTION
203cc79e5cSAmaiKinono-----------
213cc79e5cSAmaiKinonoThis man page gathers random notes about tagging Julia source code.
223cc79e5cSAmaiKinono
233cc79e5cSAmaiKinonoTAGGING ``import`` AND ``using`` EXPRESSIONS
243cc79e5cSAmaiKinono--------------------------------------------
253cc79e5cSAmaiKinono
263cc79e5cSAmaiKinonoSummary
273cc79e5cSAmaiKinono~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
283cc79e5cSAmaiKinono
293cc79e5cSAmaiKinono`using X`
303cc79e5cSAmaiKinono
313cc79e5cSAmaiKinono	==== ========== ================== ===================
323cc79e5cSAmaiKinono	name kind       role               other noticeable fields
333cc79e5cSAmaiKinono	==== ========== ================== ===================
343cc79e5cSAmaiKinono	X    module     used               N/A
353cc79e5cSAmaiKinono	==== ========== ================== ===================
363cc79e5cSAmaiKinono
373cc79e5cSAmaiKinono`using X: a, b`
383cc79e5cSAmaiKinono
393cc79e5cSAmaiKinono	==== ========== ================== ===================
403cc79e5cSAmaiKinono	name kind       role               other noticeable fields
413cc79e5cSAmaiKinono	==== ========== ================== ===================
423cc79e5cSAmaiKinono	X    module     namespace          N/A
433cc79e5cSAmaiKinono	a, b unknown    used               scope:module:X
443cc79e5cSAmaiKinono	==== ========== ================== ===================
453cc79e5cSAmaiKinono
463cc79e5cSAmaiKinono`import X`
473cc79e5cSAmaiKinono
483cc79e5cSAmaiKinono	==== ========== ================== ===================
493cc79e5cSAmaiKinono	name kind       role               other noticeable fields
503cc79e5cSAmaiKinono	==== ========== ================== ===================
513cc79e5cSAmaiKinono	X    module     imported           N/A
523cc79e5cSAmaiKinono	==== ========== ================== ===================
533cc79e5cSAmaiKinono
543cc79e5cSAmaiKinono`import X.a, Y.b`
553cc79e5cSAmaiKinono
563cc79e5cSAmaiKinono	==== ========== ================== ===================
573cc79e5cSAmaiKinono	name kind       role               other noticeable fields
583cc79e5cSAmaiKinono	==== ========== ================== ===================
593cc79e5cSAmaiKinono	X, Y module     namespace          N/A
603cc79e5cSAmaiKinono	a    unknown    imported           scope:module:X
613cc79e5cSAmaiKinono	b    unknown    imported           scope:module:Y
623cc79e5cSAmaiKinono	==== ========== ================== ===================
633cc79e5cSAmaiKinono
643cc79e5cSAmaiKinono`import X: a, b`
653cc79e5cSAmaiKinono
663cc79e5cSAmaiKinono	==== ========== ================== ===================
673cc79e5cSAmaiKinono	name kind       role               other noticeable fields
683cc79e5cSAmaiKinono	==== ========== ================== ===================
693cc79e5cSAmaiKinono	X    module     namespace          N/A
703cc79e5cSAmaiKinono	a,b  unknown    imported           scope:module:X
713cc79e5cSAmaiKinono	==== ========== ================== ===================
723cc79e5cSAmaiKinono
733cc79e5cSAmaiKinonoExamples
743cc79e5cSAmaiKinono~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
753cc79e5cSAmaiKinono"input.jl"
763cc79e5cSAmaiKinono
773cc79e5cSAmaiKinono.. code-block:: Julia
783cc79e5cSAmaiKinono
793cc79e5cSAmaiKinono	using X0
803cc79e5cSAmaiKinono
813cc79e5cSAmaiKinono"output.tags"
823cc79e5cSAmaiKinonowith "--options=NONE -o - --extras=+r --fields=+rzK input.jl"
833cc79e5cSAmaiKinono
843cc79e5cSAmaiKinono.. code-block:: tags
853cc79e5cSAmaiKinono
86*4d8561a9SMasatake YAMATO	X0	input.jl	/^using X0$/;"	kind:module	roles:used
873cc79e5cSAmaiKinono
883cc79e5cSAmaiKinono``--extras=+r`` (or ``--extras=+{reference}``) option is needed for this tag,
893cc79e5cSAmaiKinonosince it's a reference tag. This is because module ``X`` is not defined here.
903cc79e5cSAmaiKinonoIt is defined in another file. Enable ``roles:`` field with ``--fields=+r`` is
913cc79e5cSAmaiKinonofor recording that the module is "used", i.e., loaded by ``using``.
923cc79e5cSAmaiKinono
933cc79e5cSAmaiKinono"input.jl"
943cc79e5cSAmaiKinono
953cc79e5cSAmaiKinono.. code-block:: Julia
963cc79e5cSAmaiKinono
973cc79e5cSAmaiKinono	import X1.a, X2.b, X3
983cc79e5cSAmaiKinono
993cc79e5cSAmaiKinono"output.tags"
1003cc79e5cSAmaiKinonowith "--options=NONE -o - --extras=+r --fields=+rzKZ input.jl"
1013cc79e5cSAmaiKinono
1023cc79e5cSAmaiKinono.. code-block:: tags
1033cc79e5cSAmaiKinono
104*4d8561a9SMasatake YAMATO	X1	input.jl	/^import X1.a, X2.b, X3$/;"	kind:module	roles:namespace
105*4d8561a9SMasatake YAMATO	X2	input.jl	/^import X1.a, X2.b, X3$/;"	kind:module	roles:namespace
106*4d8561a9SMasatake YAMATO	X3	input.jl	/^import X1.a, X2.b, X3$/;"	kind:module	roles:imported
107*4d8561a9SMasatake YAMATO	a	input.jl	/^import X1.a, X2.b, X3$/;"	kind:unknown	scope:module:X1	roles:imported
108*4d8561a9SMasatake YAMATO	b	input.jl	/^import X1.a, X2.b, X3$/;"	kind:unknown	scope:module:X2	roles:imported
1093cc79e5cSAmaiKinono
1103cc79e5cSAmaiKinonoWhy ``X1`` and ``X2`` have role "namespace", while ``X3`` have role "imported"?
1113cc79e5cSAmaiKinonoIt's because the symbol ``a`` in module ``X1``, and ``b`` in module ``X2`` are
1123cc79e5cSAmaiKinonobrought to the current scope, but ``X1`` and ``X2`` themselves are not. We use
1133cc79e5cSAmaiKinono"namespace" role for such modules.
1143cc79e5cSAmaiKinono
1153cc79e5cSAmaiKinono``X3`` is different. The symbol ``X3``, together with all exported symbols in
1163cc79e5cSAmaiKinono``X3``, is brought to current scope. For such modules, we use "imported" or
1173cc79e5cSAmaiKinono"used" role depending whether they are loaded by ``import`` or ``using``.
1183cc79e5cSAmaiKinono
1193cc79e5cSAmaiKinonoAlso, notice that ``a`` and ``b`` have the "unknown" kind. This is because we
1203cc79e5cSAmaiKinonocannot know whether it's a function, constant, or macro, etc.
1213cc79e5cSAmaiKinono
1223cc79e5cSAmaiKinonoSEE ALSO
1233cc79e5cSAmaiKinono--------
1243cc79e5cSAmaiKinonoctags(1), ctags-client-tools(7)
125