Developing lsquic
=================

Generating Tags
---------------

Over the years, we have developed a wrapper around `Universal Ctags`_
to generate convenient tags so that, for example, ``ci_packet_in`` will
be able to take you to any of its implementations such as
``full_conn_ci_packet_in()``, ``evanescent_conn_ci_packet_in()``, and
others.

_Exuberant_ Ctags will work, too, but the more recent and maintained fork
of it, the _Universal_ Ctags, is preferred.  (If you are on Ubuntu, you
should clone Universal Ctags from GitHub and compiled it yourself.  The
version that comes in the Ubuntu package -- at the time of this writing
-- is so slow as to be considered broken).

The wrapper is ``tools/gen-tags.pl``.  Run it in the source directory:

.. highlight:: bash

::

    sh$ cd lsquic
    sh$ ./tools/gen-tags.pl

Maintaining Documentation
-------------------------

Documentation -- the ``*.rst`` files under ``docs/`` should be kept up-to-date
with changes in the API in ``include/lsquic.h``.

For convenience, tags for the documentation files can be generated by passing
the ``--docs`` argument to ``tools/gen-tags.pl``.

.. _`Universal Ctags`: https://ctags.io/
