numirias / semshi

🌈 Semantic Highlighting for Python in Neovim
1.03k stars 34 forks source link

Running inside Oni #10

Open numirias opened 6 years ago

numirias commented 6 years ago

As reported by @CrossR, running Semshi inside Oni raises an error when opening a Python file:

        if not self._options.active: # pylint: disable=protected-access
AttributeError: 'NoneType' object has no attribute 'active'

The cause seems to be that Semshi does some initialization on BufEnter, however Oni doesn't always trigger that event first, so Semshi may be uninitialized when a Python file is opened.

numirias commented 6 years ago

@CrossR Do you know if Oni implements buffer highlighting? After some quick tests, it seems calls like nvim_buf_add_highlight() don't have any effect.

Semshi relies on that API for its highlighting, so without it the plugin wouldn't be of much use inside Oni anyway.

Edit: Sorry, my bad. There seems to be another unrelated issue with Oni not recognizing Semshi's highlight groups, therefore not displaying the highlights.

CrossR commented 6 years ago

It could be the Oni is overriding some of the events Semshi is using somehow.

There is a tonne of autocmds setup over here : https://github.com/onivim/oni/blob/master/vim/core/oni-core-interop/plugin/init.vim

I'm going to try and remove them and see if that changes the behaviour of Semshi. And it should work for highlights, or at least Oni uses them in a few places for LSP related bits.

numirias commented 6 years ago

And it should work for highlights, or at least Oni uses them in a few places for LSP related bits.

Yep, I could make highlighting work after re-applying the highlight groups in my init.vim. However, I noted refreshing highlights in large files seems a bit slower than in neovim directly and some highlights are still missing -- I'll see what I can do to improve that (or whether its a bug in Oni).

CrossR commented 6 years ago

Yep, I could make highlighting work after re-applying the highlight groups in my init.vim.

There is certainly a known issue where highlights from a users init.vim are being clobbered by Oni settings, wouldn't surprise me if that is popping up here again. Its something I'm hoping to look into from this next week, so I'll see if fixing that helps as well.

numirias commented 6 years ago

It looks like none of VimEnter, BufEnter and GUIEnter is triggered (or gets through to Semshi) when starting up Oni with a Python file. Want me to file an issue over there?

CrossR commented 6 years ago

Sure! Would be good to have an issue tracking that. I'm intending to mess with the Python API so I'll hopefully clean up these bugs first.

numirias commented 6 years ago

Just to let you know, I made a change so that Semshi ensures initialization irrespective of the event order (83f56bfac9debd3c29ef7a9630b57e32d43e5f63) as this has also caused problems elsewhere (#11) - just in case you're still investigating and seeing changed behavior.

Now, the only major difference when running inside Oni seems to be that it doesn't apply (or clears) Semshi's highlight group declarations which therefore need to be re-applied manually.

132ikl commented 5 years ago

As an addendum, the selected word higlight only works if you reload the colorscheme, or run :hilight, strangely enough. :redraw does not do anything.