The hasktags package

[ Tags: bsd3, development, library, program ] [ Propose Tags ]

Produces ctags "tags" and etags TAGS files for Haskell programs.

[Skip to Readme]


Versions 0.67, 0.68, 0.68.1, 0.68.2, 0.68.3, 0.68.4, 0.68.5, 0.68.6, 0.68.7, 0.69.0, 0.69.1, 0.69.2,, 0.69.3, 0.69.4 (info)
Dependencies base (==4.*), bytestring (>=0.9 && <0.11), directory (>=1.1 && <1.4), filepath, hasktags, json (>=0.5 && <0.10), unix, utf8-string [details]
License BSD3
Copyright The University Court of the University of Glasgow
Author The GHC Team
Maintainer Jack Henahan <>, Marc Weber <>, Marco Túlio Pimenta Gontijo <>
Category Development
Home page
Bug tracker
Source repo head: git clone
Uploaded Tue Oct 24 15:31:20 UTC 2017 by jhenahan
Distributions Arch:0.69.4, Debian:0.69.1, FreeBSD:0.69.1, NixOS:0.69.4
Executables hasktags
Downloads 14359 total (163 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Docs available [build log]
Last success reported on 2017-10-24 [all 1 reports]
Hackage Matrix CI





When set to true tokens will be print at various places. This helps understanding why hasktags does not behave the way it should


Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info


Maintainer's Corner

For package maintainers and hackage trustees

Readme for hasktags-0.69.4

[back to package description]
# hasktags
A tool to generate tag files for vim and emacs

What is it for? A tag file is a index containing key items of your project such as
- function names
- module names
- data declarations
- ...

So that you can find / jump to them fast.

Build hasktags (standard cabal build)

Ctag format:
hasktags --ignore-close-implementation --ctags .

Etag format (used by emacs):
hasktags --ignore-close-implementation --etags .

Both formats:
hasktags --ignore-close-implementation .

*NB:* Generating both tags generates a file called `TAGS` for Emacs, and one called `ctags` for Vim.

### ViM
let tags+=tagfile " tags,TAGS is the default setting so probably you don't have to do anything
`:tjump foo<tab>` or such. See `:h` tags

### NEdit
Load the "tags" file using File/Load Tags File.
Use "Ctrl-D" to search for a tag.

### XEmacs/Emacs
Load the "TAGS" file using "visit-tags-table"
Use "M-." to search for a tag.

### jedit
There is a plugin.

### Tests
To run the tests, do `cd testcases; sh`.

## History
In the past this tool was distributed with ghc. I forked and added some
features.  hasktags itself was moved out of the ghc repository. Then I only
verified that my fork finds at least as much tags as the one forked by Igloo.

## Future
Things which could be done in the future:
- make json support optional
- Marco Túlio Pimenta Gontijo proposed replacing json by aeson because it might
  be faster

## Maintainers
See cabal file

## Comments about literate haskell ([lhs][]):
Alex no longer supports bird style ">", so should we drop support, too?

## Contributors
- Tsuru Capital (github/liyang)
- Marco Túlio Pimenta Gontijo (github/marcotmarcot)

Add all people having contributed before Oct 2012
This includes people contributing to the darcs repository as well as people
having contributed when this repository has been part of ghc

# Related work
List taken from announce of lushtags.

And probably much more