ElmCast / elm-vim

Elm plugin for Vim
BSD 3-Clause "New" or "Revised" License
572 stars 102 forks source link

First pass at ctags integration #95

Open naddeoa opened 7 years ago

naddeoa commented 7 years ago

This adds a bunch of ctag kinds that I find useful for myself.

Configuration options: g:elm_ctags_config - Location of the .cnf file that ctags uses. By default, it is defaulting to the one that I've added to this repo. I added this option because people may have their own ~/.ctags file with elm configuration (and other languages) already, which causes tagbar to show duplicate entires.

g:elm_ctags_target_dirs - The directories that should be indexed by ctags. By default, I made it ./elm-stuff and ./src so that people can jump around their own source as well as the core library stuff.

g:elm_ctags_exe - Name of the ctags executable, just so people can point it to /usr/local/bin or something.

Outstanding issues:

naddeoa commented 7 years ago

Thought I would throw this out there. I noticed you were starting to do some ctag stuff as I was. You probably have more experience writing vimscript than I do and I'm not sure if I'm going about it the right way yet.

I was considering somethign more substantial but I heard that there is a lot of work going into elm-format pretty soon so I wanted to hold off an anything more fancy than a ctags script.

naddeoa commented 7 years ago

Thought might be helpful to include a screenshot of how this ends up looking in practice atm. I'm open to suggestion of course. I do like having things like imports split out into a separate tag section, especially when I drop into other people's code and I want a quick overview of the things they depend on.

screenshot sun nov 06 2016 15 09 59 gmt-0800 pst 1262x1056

ajhager commented 7 years ago

Thank you for this PR! There seem to be some problems with the regex patterns, though. Constants, functions, and ports display the names twice (perhaps they are matching twice, once for the type declaration and once for the thing itself.) Also, I am getting values in the 'contructors' section that are not actually defined in that file, but are just used (for instance True, False, Maybe, Just, etc.)

Finally, for some reason I am seeing "This branch has conflicts that must be resolved: Conflicting files ftplugin/elm/tagbar.vim", so I am unable to merge it at the moment.

naddeoa commented 7 years ago

I'll resolve the conflicts. I probably just have to rebase from your repo.

As for the duplicates: I had that issue too. For me, it was caused by having repeats of the regex language definitions in ~/.ctags (or other configuration locations). I packaged the ctag definition along with the addon in my commit to make it "Just work", but if you already had the definition somewhere else then they both get used. Is that the case for you? I know you must have had them at one point if you were playing around with ctags.

Do you have a pastebin or something of the file that shows the True, False etc? I didn't see that in my testing. One important note: it really only works properly on a file that is formatted by elm-format. Without making some assumptions its pretty hard to get all of these in with just --regex switches in ctags.

naddeoa commented 7 years ago

Ok, I just squashed them into a single commit and rebased, you should be good to go now. Let me know if you prefer having the commits broken out too; I can switch it back.

I noticed one thing when I was resolving conflicts: I had a typo. I misspelled constants in mine, so that might be one source of duplication in tagbar.

naddeoa commented 7 years ago

Any updates here? Just noticed I was still using my own branch when I ran VundleInstall and it reset back to your repo.

dustinfarris commented 7 years ago

👍