akiyosi / goneovim

A GUI frontend for neovim.
MIT License
2.39k stars 62 forks source link

Prevent crash with Noice #423

Closed folke closed 1 year ago

folke commented 1 year ago

Hi!

I'm the author of noice.nvim and I'm currently investigating issues with Noice withing Guis.

There's currently a Neovim issue that prevenst Noice to work with GUIs with multigrid enabled, but I have an upstream PR for that already.

With that fix, Goneovim still crashes, since it will potentially receive cmdline and messages events, while the settings for that are disabled.

I assume that's because Goneovim tries to process the event, but didnt do internal setup first.

Goneovim should skip messages and cmdline events when it's not configured in it's settings I think.

Thank you!

crash report ❯ panic: runtime error: invalid memory address or nil pointer dereference [signal SIGSEGV: segmentation violation code=0x1 addr=0x0 pc=0x762eae] goroutine 1 [running, locked to thread]: github.com/akiyosi/goneovim/editor.(*Message).msgShow(0x0, {0xc0003f69d0, 0x1, 0x55c565?}) github.com/akiyosi/goneovim/editor/message.go:291 +0x1ee github.com/akiyosi/goneovim/editor.(*Workspace).handleRedraw(0xc00016e000, {0xc00017e0b0?, 0x7, 0xc00014ee78?}) github.com/akiyosi/goneovim/editor/workspace.go:1594 +0x385 github.com/akiyosi/goneovim/editor.(*Workspace).registerSignal.func1() github.com/akiyosi/goneovim/editor/workspace.go:341 +0xb7 github.com/akiyosi/goneovim/editor.callbackworkspaceSignalada841_RedrawSignal(0xc0000021a0?) github.com/akiyosi/goneovim/editor/moc.go:4097 +0x3c github.com/akiyosi/goneovim/editor._Cfunc_workspaceSignalada841_EventDefault(0x2d08f40, 0x7efbf8003f50) _cgo_gotypes.go:6970 +0x49 github.com/akiyosi/goneovim/editor.(*workspaceSignal).EventDefault.func1(0x8?, {0x14425b8?, 0xc0000e6d28?}) github.com/akiyosi/goneovim/editor/moc.go:4711 +0x9f github.com/akiyosi/goneovim/editor.(*workspaceSignal).EventDefault(0x2d08f40?, {0x14425b8?, 0xc0000e6d28?}) github.com/akiyosi/goneovim/editor/moc.go:4711 +0x37 github.com/akiyosi/goneovim/editor.callbackworkspaceSignalada841_Event(0x54cee6?, 0x7efbf8003f50) github.com/akiyosi/goneovim/editor/moc.go:4706 +0xf1 github.com/therecipe/qt/widgets._Cfunc_QApplication_QApplication_Exec() _cgo_gotypes.go:2602 +0x48 github.com/therecipe/qt/widgets.QApplication_Exec(...) github.com/therecipe/qt/widgets/widgets-minimal.go:2934 github.com/akiyosi/goneovim/editor.InitEditor({{0x0, 0x0}, {0x0, 0x0}, {0x0, 0x0}, {0x7ffcbb6e1387, 0x10}, {0x0, 0x0}, ...}, ...) github.com/akiyosi/goneovim/editor/editor.go:392 +0xec5 main.main() github.com/akiyosi/goneovim/cmd/goneovim/main.go:72 +0x1bb
akiyosi commented 1 year ago

@folke

Hi :) Thanks for this issue report. I investigated the implementation and found that goneovim was not implemented with the expectation that other UIs would enable ext-options. I have fixed this issue in https://github.com/akiyosi/goneovim/commit/5deb344616313bb848cff1c26f494cbcf924b383.

By the way, noice.nvim is a great plugin. ext-options in Neovim has been used only by a very few GUIs and is a rarely used feature. I hope that as noice.nvim becomes more popular, the UI externalization feature with ext-options will become more sophisticated.

folke commented 1 year ago

That's awesome, thanks!

Now wait till my upstream PR gets merged :)

przepompownia commented 1 year ago

@akiyosi thanks for https://github.com/akiyosi/goneovim/commit/5deb344616313bb848cff1c26f494cbcf924b383 and releasing nightly build with it (although I could not reproduce such crash before).

folke commented 1 year ago

The upstream PR got merged, so closing this. Thanks again!