File: ctags-json-output.5.rst.in

package info (click to toggle)
codelite 17.0.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 136,204 kB
  • sloc: cpp: 491,547; ansic: 280,393; php: 10,259; sh: 8,930; lisp: 7,664; vhdl: 6,518; python: 6,020; lex: 4,920; yacc: 3,123; perl: 2,385; javascript: 1,715; cs: 1,193; xml: 1,110; makefile: 804; cobol: 741; sql: 709; ruby: 620; f90: 566; ada: 534; asm: 464; fortran: 350; objc: 289; tcl: 258; java: 157; erlang: 61; pascal: 51; ml: 49; awk: 44; haskell: 36
file content (123 lines) | stat: -rw-r--r-- 4,038 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
.. _ctags-json-output(5):

==============================================================
ctags-json-output
==============================================================
---------------------------------------------------------------------------------
JSON based ctags output
---------------------------------------------------------------------------------
:Version: 1.0
:Manual group: Universal Ctags
:Manual section: 5

SYNOPSIS
--------
|	**@CTAGS_NAME_EXECUTABLE@** --output-format=json ...

DESCRIPTION
-----------
Universal Ctags supports `JSON <https://www.json.org/>`_ (strictly
speaking `JSON Lines <https://jsonlines.org/>`_) output format if the
ctags executable is built with ``libjansson``.  JSON output goes to
standard output by default.

Format
------
Each JSON line represents a tag.

.. code-block:: console

	$ ctags --extras=+p --output-format=json --fields=-s input.py
	{"_type": "ptag", "name": "JSON_OUTPUT_VERSION", "path": "1.0", "pattern": "in development"}
	{"_type": "ptag", "name": "TAG_FILE_SORTED", "path": "1", "pattern": "0=unsorted, 1=sorted, 2=foldcase"}
	...
	{"_type": "tag", "name": "Klass", "path": "/tmp/input.py", "pattern": "/^class Klass:$/", "language": "Python", "kind": "class"}
	{"_type": "tag", "name": "method", "path": "/tmp/input.py", "pattern": "/^    def method(self):$/", "language": "Python", "kind": "member", "scope": "Klass", "scopeKind": "class"}
	...

A key not starting with ``_`` is mapped to a field of ctags.
"``--output-format=json --list-fields``" options list the fields.

A key starting with ``_`` represents meta information of the JSON
line.  Currently only ``_type`` key is used. If the value for the key
is ``tag``, the JSON line represents a regular tag. If the value is
``ptag``, the line represents a pseudo-tag.

The output format can be changed in the
future. ``JSON_OUTPUT_VERSION`` pseudo-tag provides a change
client-tools to handle the changes.  Current version is "1.0". A
client-tool can extract the version with ``path`` key from the
pseudo-tag.

The JSON output format is newly designed and has no limitation found
in the default tags file format.

* The values for ``kind`` key are represented in long-name flags.
  No one-letter is here.

* Scope names and scope kinds have distinguished keys: ``scope`` and ``scopeKind``.
  They are combined in the default tags file format.

Data type used in a field
-------------------------
Values for the most of all keys are represented in JSON string type.
However, some of them are represented in string, integer, and/or boolean type.

"``--output-format=json --list-fields``" options show What kind of data type
used in a field of JSON.

.. code-block:: console

	$ ctags --output-format=json --list-fields
	#LETTER NAME           ENABLED LANGUAGE         JSTYPE FIXED DESCRIPTION
	F       input          yes     NONE             s--    no    input file
	...
	P       pattern        yes     NONE             s-b    no    pattern
	...
	f       file           yes     NONE             --b    no    File-restricted scoping
	...
	e       end            no      NONE             -i-    no    end lines of various items
	...

``JSTYPE`` column shows the data types.

'``s``'
	string

'``i``'
	integer

'``b``'
	boolean (true or false)

For an example, the value for ``pattern`` field of ctags takes a string or a boolean value.

VERSIONS
--------

Change since "0.0"
~~~~~~~~~~~~~~~~~~

* New key ``kindName`` for ``TAG_ROLE_DESCRIPTION`` pseudo tag

  ``kindName`` is added to store the name of the kind in ``TAG_ROLE_DESCRIPTION``
  pseudo tags.

  In 0.0, a "TAG_ROLE_DESCRIPTION" pseudo tag was printed like:

  .. code-block:: JSON

      {"_type": "ptag", "name": "TAG_ROLE_DESCRIPTION",
                        "parserName": "LANG!KIND", }

  In 1.0, it is printed like:

  .. code-block:: JSON

      {"_type": "ptag", "name": "TAG_ROLE_DESCRIPTION",
                        "parserName": "LANG",
                        "kindName": "KIND",  }

SEE ALSO
--------
ctags(1), tags(5), ctags-client-tools(7)