MyNixOS website logo
Description

Fast incremental vi and emacs tags.

Yet another tags program. Like hasktags, it uses its own parser rather than haskell-src or haskell-src-exts, so it's fast. It understands hsc and literate haskell.

In addition, it will load an existing tags file and merge generated tags.

The intent is to bind it to vim's BufWrite autocommand to automatically keep the tags file up to date. This only works for files changed by the editor of course, so there are separate git hooks to update on pulls etc.

With the --fully_qualified flag and a fancy vim function, it can disambiguate tags based on their qualification, even if it's locally renamed. So M.x will find A.B.x if you import A.B as M.

To see the configuration examples, you probably have to get the source via cabal unpack or git clone.

Limitations:

  • Not using a real haskell parser means there is likely to be dark corners that don't parse right.

  • Code has to be indented "properly", so brace and semicolon style with strange dedents will probably confuse it.

fast-tags - fast and robust tag generator for Haskell

Build Status

Supported GHC versions

Tested with GHC 7.10, 8.0, 8.2, 8.4, 8.4, 8.6, 8.8, 8.10, 9.0.

Installation

Build with either cabal or stack.

Usage

In order to generate tags for all Haskell files under current directory, issue

  fast-tags -R .

You can also generate tags that span accross directories or projects:

fast-tags -R . path/to/other/project

See the tools directory for editor and source control integration.

Metadata

Version

2.0.2

Executables (1)

  • bin/fast-tags

Platforms (77)

    Darwin
    FreeBSD
    Genode
    GHCJS
    Linux
    MMIXware
    NetBSD
    none
    OpenBSD
    Redox
    Solaris
    WASI
    Windows
Show all
  • aarch64-darwin
  • aarch64-freebsd
  • aarch64-genode
  • aarch64-linux
  • aarch64-netbsd
  • aarch64-none
  • aarch64-windows
  • aarch64_be-none
  • arm-none
  • armv5tel-linux
  • armv6l-linux
  • armv6l-netbsd
  • armv6l-none
  • armv7a-darwin
  • armv7a-linux
  • armv7a-netbsd
  • armv7l-linux
  • armv7l-netbsd
  • avr-none
  • i686-cygwin
  • i686-darwin
  • i686-freebsd
  • i686-genode
  • i686-linux
  • i686-netbsd
  • i686-none
  • i686-openbsd
  • i686-windows
  • javascript-ghcjs
  • loongarch64-linux
  • m68k-linux
  • m68k-netbsd
  • m68k-none
  • microblaze-linux
  • microblaze-none
  • microblazeel-linux
  • microblazeel-none
  • mips-linux
  • mips-none
  • mips64-linux
  • mips64-none
  • mips64el-linux
  • mipsel-linux
  • mipsel-netbsd
  • mmix-mmixware
  • msp430-none
  • or1k-none
  • powerpc-netbsd
  • powerpc-none
  • powerpc64-linux
  • powerpc64le-linux
  • powerpcle-none
  • riscv32-linux
  • riscv32-netbsd
  • riscv32-none
  • riscv64-linux
  • riscv64-netbsd
  • riscv64-none
  • rx-none
  • s390-linux
  • s390-none
  • s390x-linux
  • s390x-none
  • vc4-none
  • wasm32-wasi
  • wasm64-wasi
  • x86_64-cygwin
  • x86_64-darwin
  • x86_64-freebsd
  • x86_64-genode
  • x86_64-linux
  • x86_64-netbsd
  • x86_64-none
  • x86_64-openbsd
  • x86_64-redox
  • x86_64-solaris
  • x86_64-windows