diff --git a/python3/vimspector/code.py b/python3/vimspector/code.py index e1b7f59..628fa63 100644 --- a/python3/vimspector/code.py +++ b/python3/vimspector/code.py @@ -41,14 +41,25 @@ class CodeView( object ): self._current_frame = None with utils.LetCurrentWindow( self._window ): - vim.command( 'nnoremenu WinBar.■\\ Stop :call vimspector#Stop()' ) - vim.command( 'nnoremenu WinBar.▶\\ Cont :call vimspector#Continue()' ) - vim.command( 'nnoremenu WinBar.▷\\ Pause :call vimspector#Pause()' ) - vim.command( 'nnoremenu WinBar.↷\\ Next :call vimspector#StepOver()' ) - vim.command( 'nnoremenu WinBar.→\\ Step :call vimspector#StepInto()' ) - vim.command( 'nnoremenu WinBar.←\\ Out :call vimspector#StepOut()' ) - vim.command( 'nnoremenu WinBar.⟲: :call vimspector#Restart()' ) - vim.command( 'nnoremenu WinBar.✕ :call vimspector#Reset()' ) + if utils.UseWinBar(): + # Buggy neovim doesn't render correctly when the WinBar is defined: + # https://github.com/neovim/neovim/issues/12689 + vim.command( 'nnoremenu WinBar.■\\ Stop ' + ':call vimspector#Stop()' ) + vim.command( 'nnoremenu WinBar.▶\\ Cont ' + ':call vimspector#Continue()' ) + vim.command( 'nnoremenu WinBar.▷\\ Pause ' + ':call vimspector#Pause()' ) + vim.command( 'nnoremenu WinBar.↷\\ Next ' + ':call vimspector#StepOver()' ) + vim.command( 'nnoremenu WinBar.→\\ Step ' + ':call vimspector#StepInto()' ) + vim.command( 'nnoremenu WinBar.←\\ Out ' + ':call vimspector#StepOut()' ) + vim.command( 'nnoremenu WinBar.⟲: ' + ':call vimspector#Restart()' ) + vim.command( 'nnoremenu WinBar.✕ ' + ':call vimspector#Reset()' ) if not signs.SignDefined( 'vimspectorPC' ): signs.DefineSign( 'vimspectorPC', diff --git a/python3/vimspector/output.py b/python3/vimspector/output.py index eedefc1..cf2a213 100644 --- a/python3/vimspector/output.py +++ b/python3/vimspector/output.py @@ -210,6 +210,9 @@ class OutputView( object ): utils.CleanUpHiddenBuffer( buf_to_delete ) def _RenderWinBar( self, category ): + if not utils.UseWinBar(): + return + if not self._window.valid: return diff --git a/python3/vimspector/utils.py b/python3/vimspector/utils.py index 66f8d40..5ab9872 100644 --- a/python3/vimspector/utils.py +++ b/python3/vimspector/utils.py @@ -785,3 +785,9 @@ def WindowID( window, tab=None ): if tab is None: tab = window.tabpage return int( Call( 'win_getid', window.number, tab.number ) ) + + +def UseWinBar(): + # Buggy neovim doesn't render correctly when the WinBar is defined: + # https://github.com/neovim/neovim/issues/12689 + return not int( Call( 'has', 'nvim' ) ) diff --git a/python3/vimspector/variables.py b/python3/vimspector/variables.py index b50793d..1d62c04 100644 --- a/python3/vimspector/variables.py +++ b/python3/vimspector/variables.py @@ -159,12 +159,13 @@ class VariablesView( object ): vim.command( 'nnoremap :call vimspector#DeleteWatch()' ) - vim.command( 'nnoremenu 1.1 WinBar.New ' - ':call vimspector#AddWatch()' ) - vim.command( 'nnoremenu 1.2 WinBar.Expand/Collapse ' - ':call vimspector#ExpandVariable()' ) - vim.command( 'nnoremenu 1.3 WinBar.Delete ' - ':call vimspector#DeleteWatch()' ) + if utils.UseWinBar(): + vim.command( 'nnoremenu 1.1 WinBar.New ' + ':call vimspector#AddWatch()' ) + vim.command( 'nnoremenu 1.2 WinBar.Expand/Collapse ' + ':call vimspector#ExpandVariable()' ) + vim.command( 'nnoremenu 1.3 WinBar.Delete ' + ':call vimspector#DeleteWatch()' ) # Set the (global!) balloon expr if supported has_balloon = int( vim.eval( "has( 'balloon_eval' )" ) )