I tried CTags plugin for Kate editor. It kinda works, index builds silently (no error messages), database file along with the necessary menu entries appears. Then Go to definition
- No hits found
.
I am not surprised too much. Apparently, Kate builds the index this way:
ctags -R --c++-types=+px --extra=+q --excmd=pattern --exclude=Makefile --exclude=.
It is suggestive of C++; I cannot tell more. What is the correct command line for Haskell ctags?
UPD:
hasktags
has been suggested. I managed to install and run it tentatively:
$ stack exec hasktags
Usage: hasktags [OPTION...] [files or directories...]
directories will be replaced by DIR/**/*.hs DIR/**/*.lhs
Thus hasktags . tags all important files in the current
directory.
If directories are symlinks they will not be followed
unless you pass -L.
A special file "STDIN" will make hasktags read the line separated file
list to be tagged from STDIN.
-c --ctags generate CTAGS file (ctags)
-e --etags generate ETAGS file (etags)
-b --both generate both CTAGS and ETAGS
-a --append append to existing CTAGS and/or ETAGS file(s). Afterward this file will no longer be sorted!
--ignore-close-implementation ignores found implementation if it is closer than 7 lines - so you can jump to definition in one shot
-o --output= output to given file, instead of 'tags', '-' file is stdout
-f --file= same as -o, but used as compatibility with ctags
-x --extendedctag Generate additional information in ctag file.
--cache Cache file data.
-L --follow-symlinks follow symlinks when recursing directories
-S[.hs,.lhs] --suffixes[=.hs,.lhs] list of hs suffixes including "."
-R --tags-absolute make tags paths absolute. Useful when setting tags files in other directories
-h --help This help
There is also some path in Kate CTags database file
:
/home/alexey/.local/share/kate/katectags/session_db_20171216_180641
I can't make much out of hasktags
readme.
I use hasktags and a shell function in my
.zshrc
to simplify things: