xref: /Universal-ctags/man/ctags-lang-gdscript.7.rst.in (revision d0c0924987971a1f9d254812183bf8090fdde620)
148331065SMasatake YAMATO.. _ctags-lang-gdscript(7):
248331065SMasatake YAMATO
348331065SMasatake YAMATO==============================================================
448331065SMasatake YAMATOctags-lang-gdscript
548331065SMasatake YAMATO==============================================================
648331065SMasatake YAMATO--------------------------------------------------------------------
748331065SMasatake YAMATORandom notes about tagging GDScript source code with Universal Ctags
848331065SMasatake YAMATO--------------------------------------------------------------------
948331065SMasatake YAMATO:Version: @VERSION@
1048331065SMasatake YAMATO:Manual group: Universal Ctags
1148331065SMasatake YAMATO:Manual section: 7
1248331065SMasatake YAMATO
1348331065SMasatake YAMATOSYNOPSIS
1448331065SMasatake YAMATO--------
1548331065SMasatake YAMATO|	**@CTAGS_NAME_EXECUTABLE@** ... --languages=+GDScript ...
1648331065SMasatake YAMATO|	**@CTAGS_NAME_EXECUTABLE@** ... --language-force=GDScript ...
1748331065SMasatake YAMATO|	**@CTAGS_NAME_EXECUTABLE@** ... --map-GDScript=+.gd ...
1848331065SMasatake YAMATO
1948331065SMasatake YAMATODESCRIPTION
2048331065SMasatake YAMATO-----------
2148331065SMasatake YAMATOThis man page gathers random notes about tagging GDScript source code
2248331065SMasatake YAMATOwith Universal Ctags.
2348331065SMasatake YAMATO
2448331065SMasatake YAMATOStoring Annotations
2548331065SMasatake YAMATO-------------------
2648331065SMasatake YAMATOLike the Python parser storing decorations to ``decorations`` field,
2748331065SMasatake YAMATOthe GDScript parser stores annotations
2848331065SMasatake YAMATOstarting from `@` to the language specific field, ``annotations``.
2948331065SMasatake YAMATOThough the field is enabled explicitly in following examples, the
3048331065SMasatake YAMATOfield is enabled by default.
3148331065SMasatake YAMATO
3248331065SMasatake YAMATO"input.gd"
3348331065SMasatake YAMATO
3448331065SMasatake YAMATO.. code-block:: GDScript
3548331065SMasatake YAMATO
3648331065SMasatake YAMATO	@export
3748331065SMasatake YAMATO	var s = "Hello"
3848331065SMasatake YAMATO
3948331065SMasatake YAMATO	@master
4048331065SMasatake YAMATO	func f(msg):
4148331065SMasatake YAMATO		print(msg)
4248331065SMasatake YAMATO
4348331065SMasatake YAMATO"output.tags"
4448331065SMasatake YAMATOwith "--options=NONE --sort=no --fields-GDScript=+{annotations} -o - input.gd"
4548331065SMasatake YAMATO
4648331065SMasatake YAMATO.. code-block:: tags
4748331065SMasatake YAMATO
4848331065SMasatake YAMATO	s	input.gd	/^var s = "Hello"$/;"	v	annotations:export
4948331065SMasatake YAMATO	f	input.gd	/^func f(msg):$/;"	m	annotations:master
5048331065SMasatake YAMATO
5148331065SMasatake YAMATOExtracting `func`
5248331065SMasatake YAMATO-----------------
5348331065SMasatake YAMATOA language object defined with `func` keyword is tagged with ``method`` kind.
5448331065SMasatake YAMATOLike annotations, the parser stores keywords modifying `func` like `static` to
5548331065SMasatake YAMATOthe ``annotations`` field.
5648331065SMasatake YAMATO
5748331065SMasatake YAMATO"input.gd"
5848331065SMasatake YAMATO
5948331065SMasatake YAMATO.. code-block:: GDScript
6048331065SMasatake YAMATO
6148331065SMasatake YAMATO	func f(x):
6248331065SMasatake YAMATO		return x
6348331065SMasatake YAMATO
6448331065SMasatake YAMATO	static func f_s(x):
6548331065SMasatake YAMATO		reutrn x
6648331065SMasatake YAMATO
6748331065SMasatake YAMATO	remote func f_r(x):
6848331065SMasatake YAMATO		return x
6948331065SMasatake YAMATO
7048331065SMasatake YAMATO
7148331065SMasatake YAMATO"output.tags"
7248331065SMasatake YAMATOwith "--options=NONE --sort=no --fields=+K --fields-GDScript=+{annotations} -o - input.gd"
7348331065SMasatake YAMATO
7448331065SMasatake YAMATO.. code-block:: tags
7548331065SMasatake YAMATO
7648331065SMasatake YAMATO	f	input.gd	/^func f(x):$/;"	method
7748331065SMasatake YAMATO	f_s	input.gd	/^static func f_s(x):$/;"	method	annotations:static
7848331065SMasatake YAMATO	f_r	input.gd	/^remote func f_r(x):$/;"	method	annotations:remote
7948331065SMasatake YAMATO
8048331065SMasatake YAMATOTagging implicitly defined classes
8148331065SMasatake YAMATO----------------------------------
8248331065SMasatake YAMATO"A file is a class!" in GDScript.  A class is implicitly
8348331065SMasatake YAMATOdefined. Functions, variables, constants, and signals are parts of the
8448331065SMasatake YAMATOclass though the class is unnamed by default.
8548331065SMasatake YAMATO
8648331065SMasatake YAMATOIf the language specific extra, ``implicitClass``, is enabled, the
8748331065SMasatake YAMATOparser makes a anonymous tag for the class. The parser fills the scope
8848331065SMasatake YAMATOfields of the tags for all language objects defined in the file with
8948331065SMasatake YAMATOthe anonymous tag.
9048331065SMasatake YAMATO
9148331065SMasatake YAMATOLet's see an example demonstrating the effect of the extra.
9248331065SMasatake YAMATO
9348331065SMasatake YAMATOTurning off the extra:
9448331065SMasatake YAMATO
9548331065SMasatake YAMATO"input.gd"
9648331065SMasatake YAMATO
9748331065SMasatake YAMATO.. code-block:: GDScript
9848331065SMasatake YAMATO
9948331065SMasatake YAMATO	func f(x):
10048331065SMasatake YAMATO		return x
10148331065SMasatake YAMATO
10248331065SMasatake YAMATO"output.tags"
10348331065SMasatake YAMATOwith "--options=NONE --fields=+KZ --extras-GDScript=-{implicitClass} -o - input.gd"
10448331065SMasatake YAMATO
10548331065SMasatake YAMATO.. code-block:: tags
10648331065SMasatake YAMATO
10748331065SMasatake YAMATO	f	input.gd	/^func f(x):$/;"	method
10848331065SMasatake YAMATO
10948331065SMasatake YAMATOTurning on the extra:
11048331065SMasatake YAMATO
11148331065SMasatake YAMATO"input.gd"
11248331065SMasatake YAMATO
11348331065SMasatake YAMATO.. code-block:: GDScript
11448331065SMasatake YAMATO
11548331065SMasatake YAMATO	func g(x):
11648331065SMasatake YAMATO		return x
11748331065SMasatake YAMATO
11848331065SMasatake YAMATO"output.tags"
11948331065SMasatake YAMATOwith "--options=NONE --fields=+KZ --extras-GDScript=+{implicitClass} -o - input.gd"
12048331065SMasatake YAMATO
12148331065SMasatake YAMATO.. code-block:: tags
12248331065SMasatake YAMATO
12348331065SMasatake YAMATO	anon_class_84011bee0100	input.gd	/^func g(x):$/;"	class
12448331065SMasatake YAMATO	g	input.gd	/^func g(x):$/;"	method	scope:class:anon_class_84011bee0100
12548331065SMasatake YAMATO
12648331065SMasatake YAMATOTagging the name specified with `class_name`
12748331065SMasatake YAMATO---------------------------------------------
12848331065SMasatake YAMATO`class_name` is a keyword for giving a name to the implicitly defined
12948331065SMasatake YAMATOclass.  If ``implicitClass`` is turned off, the parser just extract
13048331065SMasatake YAMATOthe name coming after the keyword with ``class`` kind. If
13148331065SMasatake YAMATO``implicitClass`` is turned on, the parser converts the anonymous tag
13248331065SMasatake YAMATOto a non-anonymous tag with the specified name.  When converting,
13348331065SMasatake YAMATOthe parser also updates scope fields of the other tags in the file.
13448331065SMasatake YAMATO
13548331065SMasatake YAMATOTurning off the extra:
13648331065SMasatake YAMATO
13748331065SMasatake YAMATO"input.gd"
13848331065SMasatake YAMATO
13948331065SMasatake YAMATO.. code-block:: GDScript
14048331065SMasatake YAMATO
14148331065SMasatake YAMATO	class_name c
14248331065SMasatake YAMATO
14348331065SMasatake YAMATO	func f(x):
14448331065SMasatake YAMATO		return x
14548331065SMasatake YAMATO
14648331065SMasatake YAMATO"output.tags"
14748331065SMasatake YAMATOwith "--options=NONE --fields=+KZ --extras-GDScript=-{implicitClass} -o - input.gd"
14848331065SMasatake YAMATO
14948331065SMasatake YAMATO.. code-block:: tags
15048331065SMasatake YAMATO
15148331065SMasatake YAMATO	c	input.gd	/^class_name c$/;"	class
15248331065SMasatake YAMATO	f	input.gd	/^func f(x):$/;"	method
15348331065SMasatake YAMATO
15448331065SMasatake YAMATOTurning on the extra:
15548331065SMasatake YAMATO
15648331065SMasatake YAMATO"input.gd"
15748331065SMasatake YAMATO
15848331065SMasatake YAMATO.. code-block:: GDScript
15948331065SMasatake YAMATO
16048331065SMasatake YAMATO	class_name C
16148331065SMasatake YAMATO	func g(x):
16248331065SMasatake YAMATO		return x
16348331065SMasatake YAMATO
16448331065SMasatake YAMATO"output.tags"
16548331065SMasatake YAMATOwith "--options=NONE --fields=+KZ --extras-GDScript=+{implicitClass} -o - input.gd"
16648331065SMasatake YAMATO
16748331065SMasatake YAMATO.. code-block:: tags
16848331065SMasatake YAMATO
16948331065SMasatake YAMATO	C	input.gd	/^class_name C$/;"	class
17048331065SMasatake YAMATO	g	input.gd	/^func g(x):$/;"	method	scope:class:C
17148331065SMasatake YAMATO
17248331065SMasatake YAMATOFilling ``inherits`` field
17348331065SMasatake YAMATO--------------------------
17448331065SMasatake YAMATO`extends` keyword specifies the super class for the implicitly defined class.
17548331065SMasatake YAMATOIf `implicitClass` extra is turned on, the parser fills ``inherits`` field
17648331065SMasatake YAMATOof the tag for the implicitly defined class with the name of super class.
17748331065SMasatake YAMATO
17848331065SMasatake YAMATO"input.gd"
17948331065SMasatake YAMATO
18048331065SMasatake YAMATO.. code-block:: GDScript
18148331065SMasatake YAMATO
18248331065SMasatake YAMATO	extends B
18348331065SMasatake YAMATO	class_name C
18448331065SMasatake YAMATO
18548331065SMasatake YAMATO"output.tags"
18648331065SMasatake YAMATOwith "--options=NONE --fields=+Ki --extras-GDScript=+{implicitClass} -o - input.gd"
18748331065SMasatake YAMATO
18848331065SMasatake YAMATO.. code-block:: tags
18948331065SMasatake YAMATO
19048331065SMasatake YAMATO	C	input.gd	/^class_name C$/;"	class	inherits:B
19148331065SMasatake YAMATO
192*d0c09249SMasatake YAMATOWhen `--extras=+r` is given, the parser extracts the class specified with the
193*d0c09249SMasatake YAMATO`extends` keyword as a referece tag of ``class`` kind with ``extended`` role.
194*d0c09249SMasatake YAMATO
195*d0c09249SMasatake YAMATO"input.gd"
196*d0c09249SMasatake YAMATO
197*d0c09249SMasatake YAMATO.. code-block:: GDScript
198*d0c09249SMasatake YAMATO
199*d0c09249SMasatake YAMATO	extends B
200*d0c09249SMasatake YAMATO
201*d0c09249SMasatake YAMATO"output.tags"
202*d0c09249SMasatake YAMATOwith "--options=NONE --fields=+rEK --extras=+r -o - input.gd"
203*d0c09249SMasatake YAMATO
204*d0c09249SMasatake YAMATO.. code-block:: tags
205*d0c09249SMasatake YAMATO
206*d0c09249SMasatake YAMATO	B	input.gd	/^extends B$/;"	class	roles:extended	extras:reference
207*d0c09249SMasatake YAMATO
20848331065SMasatake YAMATOSEE ALSO
20948331065SMasatake YAMATO--------
21048331065SMasatake YAMATOctags(1)
211