Tags

From HaskellWiki
Revision as of 22:37, 14 March 2007 by Claus (talk | contribs)
Jump to navigation Jump to search

Introduction

"Tags" are a listing of code objects in a group of files, together with their precise location, often used by text editors to quickly jump around in a program. ctags (for C) was the first tag-generation program.

There are currently a number of different ways to generate tags with Haskell.

This page should be used to collect information on tag-generation for Haskell, including information on how to use tags with common editors and what benefits they can give you.

Haskell tag generators

Chris Ryder and Simon Thompson give a tag generator's source in a paper

Norman Ramsey and Kathleen Fisher's partial hasktags implementation using the GHC API is in darcs. There's also a GHC trac task relating to it.

echo ":ctags" | ghci -v0 Main.hs

echo ":etags" | ghci -v0 Main.hs

utils/hasktags from GHC.

Usage

The tags file generated in ctags format can be used in (amongst others) vim, BBEdit, TextMate and NEdit. The one in etags format can be used in at least Emacs. Note that the default names for the file in ctags format and the file in etags format are 'tags' and 'TAGS' respectively. These names clash on case-insensitive filesystems, such as Mac OS's HFS and HFS+ in the default configuration.

In vi, one jumps to a tag using either

:tag <tag-to-jump-to>

or by using control-] with the cursor on the tag to jump to. Using control-T returns to the previous position.

Random other bits

http://vim-taglist.sourceforge.net/

Vim

Using tags

:help tags

:help tags-file-format

:help cursorhold-example