slashmili / alchemist.vim

Elixir Integration Into Vim
https://github.com/slashmili/alchemist.vim/wiki
GNU General Public License v3.0
651 stars 38 forks source link

Autocomplete imports already written module #165

Closed rmad17 closed 1 year ago

rmad17 commented 4 years ago

If autocomplete/docs or etc doesn't work for you before creating issue please check Debugging page and make sure your basic setup works

https://github.com/slashmili/alchemist.vim/wiki/Debugging

and answer these questions:

  1. Elixir/OTP/Python version

Elixir: 1.10.2 (compiled with Erlang/OTP 21)

OTP: 21

Python: 2.7( I have python3 in my system but its not the default python version)

  1. Are you using VIM or Neovim? Please provide the version. Neovim v0.3.8 (uses python3)

  2. Which pluging are you using:

[ ] basic omnifunc [ ] YouCompleteMe [x] deoplete

  1. Which steps of Debugging passed?

[ ] Elixir Module definition [ ] Elixir Function definition [ ] Elixir Module/Function docs [ ] Your Project Module definition [ ] Your Project Function definition

  1. Do you have a specific setup? Like Docker and etc No

I have a weird problem. My autocomplete works twice. So suppose I write IO. I get all suggestions for IO module and then say I hit enter on inspect it inserts IO.inspects and my whole text becomes IO.IO.inspects. This happens most of the times with all modules. Sometimes it tends to work normally.

NickNeck commented 4 years ago

I have the same problem. This seems to happen when you take the proposed text from the source around. As a workaround, you can disable the source. I am not sure if this behavior comes up with the source buffer too.

Config to ignore sources:

let g:deoplete#ignore_sources = {}
let g:deoplete#ignore_sources._ = ['buffer', 'around']
rmad17 commented 4 years ago

@NickNeck Now the error has reduced in frequency but it still exisits. Also buffer does not help.

NickNeck commented 4 years ago

Yeah, that doesn't fix the problem it just reduces the pain. Hopefully, @slashmili can say a little bit more about this problem. @rmad17 have you asked in the elixir forum if someone else has this problem?

slashmili commented 4 years ago

Hi!

Sorry for the late respond, I tried it locally an it looks ok(as usual 😉 ) https://asciinema.org/a/zHREnYcDur7ejdJHXif7oaJWr

Can you show me how do you get into the situation with IO.IO.inspects ?

I also think texts in buffer are causing the issue. if I can reproduce it, I'll see if I can somehow skip putting prefix for buffers. Also not sure why buffers are passed to Alchemist ...

On the side note, I just released a new version that has support for asyncomplete.vim plugin(#161). If you are not a deoplete user and just trying it because of alchemist.vim you might want to try asyncomplete.vim.

NickNeck commented 4 years ago

Hello @slashmili here is a little asciicast to show the problem: https://asciinema.org/a/FYGuCyVfrfa4kmkBTWYrZxV9D

balena commented 4 years ago

I was having exactly the same problem and it gone away after migrating to asyncomplete.vim. Other problems came, though, as now I don't get completion for the current file, like, I don't get local variable names, functions, etc. But at least the annoyance described here doesn't happen anymore.

slashmili commented 4 years ago

Ok maybe asyncomplete.vim is not for everyone. I'm also new to it! (for buffer you need asyncomplete-buffer.vim)

So it looks like for some reason when deoplete offers auto-complete based on around source, it decides to put extra IO.

I would expect that since the source of around is not Alchemist, it shouldn't have done that 🤷

To be honest I don't have any clue why this is happening. I've been using asyncomplete.vim past few months. I've just switched back to deoplete and try to debug it.

However I can't give you a time when it's going to happen. could be this week or the worst case end of the next month but it will happen since I myself will get annoyed with it 😆