neovide / neovide

No Nonsense Neovim Client in Rust
https://neovide.dev
MIT License
12.71k stars 515 forks source link

Support ginit.lua #888

Closed clason closed 10 months ago

clason commented 3 years ago

This Is Neovim!

(Sorry, couldn't resist. But would be nice to have native Lua config for neovide!)

This of course begs the question which should have precedence: Here we should follow neovim's lead and treat having both as an error.

clason commented 3 years ago

Hmm, that might not be so easy since neovide seems to ignore variables set via Lua? (So, e.g., lua vim.g.neovide_cursor_animation_length=0 sets the variable correctly according to neovim, but neovide isn't affected by the change.)

smolck commented 3 years ago

Why would we add this? Does Neovide already support ginit.vim and so this would just make it work with Lua too? To me, it seems better/easier to be able to configure things from your normal init.lua (or init.vim) in a if vim.g.neovide == 1 block, if possible.

clason commented 3 years ago

Why would we add this? Does Neovide already support ginit.vim and so this would just make it work with Lua too?

Yes, exactly.

To me, it seems better/easier to be able to configure things from your normal init.lua (or init.vim) in a if vim.g.neovide == 1 block, if possible.

To me, it makes more sense to configure GUI settings in a separate config since it's irrelevant to normal neovim use ;)

smolck commented 3 years ago

To me, it makes more sense to configure GUI settings in a separate config since it's irrelevant to normal neovim use ;)

That's fair, but at the same time not necessarily. E.g. if I'm configuring the builtin LSP, and want to use handlers for things like the signature help etc. that the GUI provides (currently only a thing in uivonim afaik, but other GUIs could very well do this in the future), I can't really do that in a separate config, as I need access to the calls to setup so I can do e.g. lspconfig.whatever_language.setup({ handlers = the_gui_handlers }). To achieve that with a separate config I'd have to duplicate stuff, or just change vim.lsp.handlers directly and not do it on a per-language basis, right?

That's just one example, and I'd imagine there are/could be others. Plus, if has('gui_name')/if g:gui_name seems to be the convention among GUIs anyways, although maybe that's not a reason to not support ginit in general. I think it just tends to be what people expect.

At this point though I'm more arguing in favor of removing the whole ginit.* thing entirely, instead of whether or not we should add ginit.lua.

clason commented 3 years ago

That's something completely different. I'm just talking about the vimscript config options from the Wiki.

If we have to configure neovide through neovim -- rather than its own neovide-settings.json (which is already a thing!) -- it should be Lua first.

clason commented 3 years ago

(The issue is that in https://github.com/neovide/neovide/blob/d5404299ee57164d6621ad81092f2e3f60b74c8e/src/settings/mod.rs#L114 the dictwatcheradd only triggers on changes from vimscript, not through the API -- this is a Neovim issue.)

clason commented 3 years ago

(Still think neovide_settings.json is the better place for this than a neovim init file ;))

Kethku commented 3 years ago

Thats wild. I think there is an existing issue; maybe you raised it? Is there an upstream report?

smolck commented 3 years ago

I have a PR to fix it: https://github.com/neovim/neovim/pull/15373

Kethku commented 10 months ago

This is fixed in upstream