xref: /Universal-ctags/docs/parser-tcl.rst (revision bb84f88a985e0b87fe4313a43b215269a119c4d1)
1a4f2b2b1SMasatake YAMATO.. _tcl:
2a4f2b2b1SMasatake YAMATO
3a4f2b2b1SMasatake YAMATO======================================================================
45a233a2dSMasatake YAMATOThe new Tcl parser
5a4f2b2b1SMasatake YAMATO======================================================================
6a4f2b2b1SMasatake YAMATO
7a4f2b2b1SMasatake YAMATO:Maintainer: Masatake YAMATO <yamato@redhat.com>
8a4f2b2b1SMasatake YAMATO
9a4f2b2b1SMasatake YAMATOTcl parser is rewritten as a token oriented parser to support
10a4f2b2b1SMasatake YAMATOnamespace.  It was line oriented parser. Some incompatibility between
11*bb84f88aSHiroo HAYASHIExuberant Ctags is introduced in the rewriting.
12a4f2b2b1SMasatake YAMATO
13a4f2b2b1SMasatake YAMATOThe line oriented parser captures `class`, `public|protected|private
14a4f2b2b1SMasatake YAMATOmethod`.  They are definitions in ITcl and TclOO. The new token oriented Tcl
15a4f2b2b1SMasatake YAMATOparser ignores them.  Instead ITcl and TclOO subparser running on Tcl base
16a4f2b2b1SMasatake YAMATOparser capture them.
17ab2b027aSMasatake YAMATO
18ab2b027aSMasatake YAMATOKnown bugs
19ab2b027aSMasatake YAMATO----------------------------------------------------------------------
20ab2b027aSMasatake YAMATO
21ab2b027aSMasatake YAMATOFull qualified tags
22ab2b027aSMasatake YAMATO^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
23ab2b027aSMasatake YAMATO
24ab2b027aSMasatake YAMATOThe separator used in full qualified tags should be `::` but `.` is
25ab2b027aSMasatake YAMATOused.
26ab2b027aSMasatake YAMATO
27ab2b027aSMasatake YAMATOA ITcl or TclOO class `C` can be defined in a Tcl namespace `N`:
28ab2b027aSMasatake YAMATO
29ab2b027aSMasatake YAMATO.. code-block:: Tcl
30ab2b027aSMasatake YAMATO
31ab2b027aSMasatake YAMATO    namespace eval N {
32ab2b027aSMasatake YAMATO	oo::class create C {
33ab2b027aSMasatake YAMATO	}
34ab2b027aSMasatake YAMATO    }
35ab2b027aSMasatake YAMATO
36ab2b027aSMasatake YAMATOWhen ``--extras=+q`` is given, currently ctags reports::
37ab2b027aSMasatake YAMATO
38ab2b027aSMasatake YAMATO	N.C ...
39ab2b027aSMasatake YAMATO
40ab2b027aSMasatake YAMATOThis should be::
41ab2b027aSMasatake YAMATO
42ab2b027aSMasatake YAMATO	N::C ...
43ab2b027aSMasatake YAMATO
44ab2b027aSMasatake YAMATOMuch work is needed to fix this.
45ab2b027aSMasatake YAMATO
46ab2b027aSMasatake YAMATONested procs
47ab2b027aSMasatake YAMATO^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
48ab2b027aSMasatake YAMATO
49ab2b027aSMasatake YAMATO`proc` defined in a `proc` cannot be captured well.
50ab2b027aSMasatake YAMATOThis is a regression.
51