An open API service indexing awesome lists of open source software.

https://github.com/agda/hs-tags

Generate ctags and etags for Haskell files
https://github.com/agda/hs-tags

Last synced: about 1 year ago
JSON representation

Generate ctags and etags for Haskell files

Awesome Lists containing this project

README

          

[![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).