]> git.ipfire.org Git - thirdparty/tor.git/commitdiff
Add documentation about building a TAGS file.
authorNick Mathewson <nickm@torproject.org>
Mon, 6 Jan 2020 18:31:30 +0000 (13:31 -0500)
committerNick Mathewson <nickm@torproject.org>
Mon, 6 Jan 2020 18:31:30 +0000 (13:31 -0500)
Patch from opara.  Closes ticket 32779.

changes/ticket32779 [new file with mode: 0644]
doc/HACKING/HelpfulTools.md

diff --git a/changes/ticket32779 b/changes/ticket32779
new file mode 100644 (file)
index 0000000..1b7ccaa
--- /dev/null
@@ -0,0 +1,3 @@
+  o Documentation:
+    - Add documentation in 'HelpfulTools.md' to describe how to build a tag
+      file. Closes ticket 32779.
index cba57e875dc52c34fb166fcc0a5750f27cd6f856..866b3212878dd93447c5a0e6feb96a035ac4e228 100644 (file)
@@ -315,6 +315,30 @@ If you use emacs for editing Tor and nothing else, you could always just say:
 There is probably a better way to do this.  No, we are probably not going
 to clutter the files with emacs stuff.
 
+Building a tag file (code index)
+--------------------------------
+
+Many functions in tor use `MOCK_IMPL` wrappers for unit tests. Your
+tag-building program must be told how to handle this syntax.
+
+If you're using emacs, you can generate an emacs-compatible tag file using
+`make tags`. This will run your system's `etags`. Tor's build system assumes
+that you're using the emacs-specific version of `etags` (bundled under the
+`xemacs21-bin` package on Debian). This is incompatible with other versions of
+`etags` such as the version provided by Exuberant Ctags.
+
+If you're using vim or emacs, you can also use Universal Ctags to build a tag
+file using the syntax:
+
+    ctags -R -D 'MOCK_IMPL(r,h,a)=r h a' .
+
+If you're using an older version of Universal Ctags, you can use the following
+instead:
+
+    ctags -R --mline-regex-c='/MOCK_IMPL\([^,]+,\W*([a-zA-Z0-9_]+)\W*,/\1/f/{mgroup=1}' .
+
+A vim-compatible tag file will be generated by default. If you use emacs, add
+the `-e` flag to generate an emacs-compatible tag file.
 
 Doxygen
 -------