Ok, I've had this kicking around for months. It has taken me until now to get around to actually packaging it up so that anyone could use it.
Check it out: https://github.com/JuliaEditorSupport/deoplete-julia It actually works pretty well (even if I can't write reasonable code in demos): https://asciinema.org/a/688g8iyhj1idrtz8ooptr6iso Neovim <https://neovim.io/>is very close to vim in functionality -- it can run all the same extensions etc. If you run vim, you should not really even notice the change to neovim, as a used. As a plug-in developer though, things have gotten way better. Writing a smart syntax completer for regular vim was historically nearly impossible, because vim didn't support background tasks. Neovim supports background takes out of the box, and these are used by Deoplete <https://github.com/Shougo/deoplete.nvim>completion engine, which this plugin extends. Syntax completion is loaded from what is exported from any modules you `using`, as well as from `Base` and `Core`. It also spits out help text, as it goes (as you can see in the demo) The way it works is a little bit (maybe a lot evil). `jltag` loads up every module you `using` and generates a semantic tagfile (technically a legal exuberant-ctags file even, I think). It uses reflection to dump out all kinds of useful info, like docstrings and constant values and a bunch of other stuff. It caches this in a file, which is then loaded by a small chunck of python code, that runs in deoplete. If your dependency modules change the cache is regenerated. `jltag` and the files it generated could be ported to be used with another syntax completion engine. I think you could with only a little work, get normal Vim YouCompleteMe <https://github.com/Valloric/YouCompleteMe>syntax completion working, by telling it to load from these tag files. but YCM has a terrifying codebase, and overall architecture. You could probably get a bunch of other syntax completers that accept tag files working too. (or you could use the ctagger from julialang/julia/contrib <https://github.com/JuliaLang/julia/blob/master/contrib/ctags> to do that) Anyway, if you are a Vim user, I suggest grabbing Neovim, and Deoplete and then firing this up. Let me know what you think, and raise some issues over in the repo.
