packages feed

hs-tags-0.1.5.1: README.md

[![Hackage version](https://img.shields.io/hackage/v/hs-tags.svg?label=Hackage&color=informational)](http://hackage.haskell.org/package/hs-tags)
[![Hackage CI](https://matrix.hackage.haskell.org/api/v2/packages/hs-tags/badge)](https://matrix.hackage.haskell.org/package/hs-tags)
[![hs-tags on Stackage Nightly](https://stackage.org/package/hs-tags/badge/nightly)](https://stackage.org/nightly/package/hs-tags)
[![Stackage LTS version](https://www.stackage.org/package/hs-tags/badge/lts?label=Stackage)](https://www.stackage.org/package/hs-tags)
[![Cabal build](https://github.com/agda/hs-tags/workflows/Haskell-CI/badge.svg)](https://github.com/agda/hs-tags/actions)

hs-tags - Generate tags for Haskell code
========================================

Generate `tags` (ctags) or `TAGS` (etags) file for a bunch of Haskell files.
These files are used by editors (e.g. `TAGS` by Emacs) to implement _jump-to-definition_ (e.g. `M-.` in Emacs).

In contrast to [hasktags](http://hackage.haskell.org/package/hasktags), `hs-tags` uses the GHC Haskell parser to read the Haskell files and find definition sites.

Example use:
```
find src -name "*.*hs" | xargs \
  hs-tags --cabal Foo.cabal -i dist/build/autogen/cabal_macros.h -e
```
Creates Emacs `TAGS` from Haskell files residing in folder `src/` of the project as defined in `Foo.cabal`, using preprocessor definitions from `dist/build/autogen/cabal_macros.h`.

Command line reference:
```
hs-tags
                --help              Show help.
  -c[FILE]      --ctags[=FILE]      Generate ctags (default file=tags)
  -e[FILE]      --etags[=FILE]      Generate etags (default file=TAGS)
  -i FILE       --include=FILE      File to #include
  -I DIRECTORY                      Directory in the include path
                --cabal=CABAL FILE  Cabal configuration to load additional
                                    language options from
                                    (library options are used)
```

Some related projects:

- [hasktags](http://hackage.haskell.org/package/hasktags):
  popular ctags and etags generator, using its own parser.

- [fast-tags](https://hackage.haskell.org/package/fast-tags):
  ctags and etags, fast, incremental, using its own parser.

- [ghc-tags-plugin](https://hackage.haskell.org/package/ghc-tags-plugin):
  ctags and etags emitted during compilation by a ghc-plugin.

- [hothasktags](https://hackage.haskell.org/package/hothasktags)
  (_unmaintained_?):
  ctags generator, using the [haskell-src-exts](https://hackage.haskell.org/package/haskell-src-exts) parser.

- [htags](https://hackage.haskell.org/package/htags):
  ctags for Haskell 98, using the [haskell-src](https://hackage.haskell.org/package/haskell-src) parser.

- [codex](https://hackage.haskell.org/package/codex):
  ctags and etags for dependencies, using
  [hasktags](http://hackage.haskell.org/package/hasktags).