Difference between revisions of "Tags"
Bartholomew (talk | contribs) (added link to gasbag) |
(Clean up and bring up to date.) |
||
Line 2: | Line 2: | ||
== Introduction == |
== Introduction == |
||
− | "Tags" are a listing of code |
+ | "Tags" are a listing of source code definitions in a group of files, together with their precise location, often used by text editors to quickly jump around in a program. For example, they allow you in a editor that supports tags to jump to the definition of a function when you come across a use of that function. <tt>ctags</tt> (for C) was the first tag-generation program. See the [http://en.wikipedia.org/wiki/Ctags wikipedia article] for more information. |
There are currently a number of different ways to generate tags with |
There are currently a number of different ways to generate tags with |
||
Haskell. |
Haskell. |
||
+ | == Tags Formats == |
||
− | 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. |
||
+ | |||
+ | Tag files can be produced in a number of different formats supported by different editors. The two most common formats are 'ctags', which is supported by Vim and others, and 'etags', which is supported by Emacs. Note that the default names for the file in ctags format and the file in etags format are 'tags' and 'TAGS' respectively |
||
== Haskell tag generators == |
== Haskell tag generators == |
||
+ | * [http://www.haskell.org/ghc GHC]: Can generate tag files from GHCi. Use either the ':ctags' or ':etags' commands to produce a tags file for the currently loaded modules. |
||
− | Chris Ryder and Simon Thompson give a tag generator's source in |
||
− | [http://www.cs.kent.ac.uk/pubs/2005/2266/content.pdf a paper] |
||
− | |||
− | Norman Ramsey and Kathleen Fisher's partial hasktags implementation |
||
− | using the GHC API is [http://darcs.haskell.org/ghctags/ in darcs]. |
||
− | There's also a [http://hackage.haskell.org/trac/ghc/ticket/946 GHC trac task] relating to it. |
||
− | |||
⚫ | |||
− | |||
⚫ | |||
− | |||
− | utils/hasktags from GHC. |
||
− | |||
⚫ | |||
− | options recognised by hasktags). |
||
⚫ | |||
− | |||
− | The tags file generated in ctags format can be used in (amongst others) vim, BBEdit 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 |
||
− | <pre> |
||
− | :tag <tag-to-jump-to> |
||
− | </pre> |
||
− | or by using control-] with the cursor on the tag to jump to. Using control-T returns to the |
||
− | previous position. |
||
− | |||
− | == Random other bits == |
||
− | |||
⚫ | |||
+ | :For example: |
||
− | [http://www.vim.org Vim] |
||
⚫ | |||
⚫ | |||
+ | * [http://hackage.haskell.org/package/hasktags Hasktags]: Can produce either a ctags or etags compatible tag file. |
||
⚫ | |||
⚫ | |||
⚫ | |||
+ | You can also find the source code for a tag generator in Chris Ryder and Simon Thompson [http://www.cs.kent.ac.uk/pubs/2005/2266/content.pdf paper] on porting the Haskell Refactoring tool, HaRe, to the GHC API. |
||
⚫ | |||
+ | == More Information == |
||
⚫ | |||
⚫ | |||
− | [http://vimdoc.sourceforge.net/htmldoc/windows.html#CursorHold-example :help cursorhold-example] |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
+ | === Others === |
||
⚫ | |||
⚫ | |||
− | Chapter 14 of the BBEdit manual |
+ | * Chapter 14 of the BBEdit manual covers using tags |
Revision as of 21:55, 28 April 2011
Introduction
"Tags" are a listing of source code definitions in a group of files, together with their precise location, often used by text editors to quickly jump around in a program. For example, they allow you in a editor that supports tags to jump to the definition of a function when you come across a use of that function. ctags (for C) was the first tag-generation program. See the wikipedia article for more information.
There are currently a number of different ways to generate tags with Haskell.
Tags Formats
Tag files can be produced in a number of different formats supported by different editors. The two most common formats are 'ctags', which is supported by Vim and others, and 'etags', which is supported by Emacs. Note that the default names for the file in ctags format and the file in etags format are 'tags' and 'TAGS' respectively
Haskell tag generators
- GHC: Can generate tag files from GHCi. Use either the ':ctags' or ':etags' commands to produce a tags file for the currently loaded modules.
- For example:
- echo ":ctags" | ghci -v0 Main.hs
- echo ":etags" | ghci -v0 Main.hs
- Hasktags: Can produce either a ctags or etags compatible tag file.
- Gasbag: An apparently improved version of Hasktags.
You can also find the source code for a tag generator in Chris Ryder and Simon Thompson paper on porting the Haskell Refactoring tool, HaRe, to the GHC API.
More Information
Vim
- Using tags in Vim
- :help tags
- insert-mode tag completion (ctrl-x ctrl-])
- :help cursorhold-example
- Vim plugin to view all tags in a window
Others
- NEdit documentation for using tags
- Chapter 14 of the BBEdit manual covers using tags