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-juliaIt actually works pretty well (even if I can't write reasonable code in demos):
https://asciinema.org/a/688g8iyhj1idrtz8ooptr6isoNeovim 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 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 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 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.