From 927161400852869e8a935ddee5605a2068b0d570 Mon Sep 17 00:00:00 2001 From: Strahinja Markovic Date: Mon, 29 Aug 2011 14:13:01 +0200 Subject: [PATCH] Fix bug with python3 support crashing Gundo The recent change that introduced python3 support also made it the default python version used for Gundo. This caused a problem with certain versions of vim where upon toggling the Gundo window, we would be greeted with an error message: "This Vim cannot execute :py3 after using :python" This commit adds a g:gundo_prefer_python3 variable (default 0) that can be used to set a preference for python3. By default, python2 will be used. This also required moving the variable initialization code to the top, since just evaluating `has('python3')` seems to trigger the vim error. --- autoload/gundo.vim | 50 ++++++++++++++++++++++++---------------------- 1 file changed, 26 insertions(+), 24 deletions(-) diff --git a/autoload/gundo.vim b/autoload/gundo.vim index 15ceb8d..41eac79 100644 --- a/autoload/gundo.vim +++ b/autoload/gundo.vim @@ -19,24 +19,6 @@ if v:version < '703'"{{{ finish endif"}}} -if has('python3')"{{{ - let s:has_supported_python = 2 -elseif has('python') - let s:has_supported_python = 1 -else - let s:has_supported_python = 0 -endif - -if !s:has_supported_python - function! s:GundoDidNotLoad() - echohl WarningMsg|echomsg "Gundo requires Vim to be compiled with Python 2.4+"|echohl None - endfunction - command! -nargs=0 GundoToggle call s:GundoDidNotLoad() - finish -endif"}}} - -let s:plugin_path = escape(expand(':p:h'), '\') - if !exists('g:gundo_width')"{{{ let g:gundo_width = 45 endif"}}} @@ -61,7 +43,27 @@ endif"}}} if !exists("g:gundo_close_on_revert")"{{{ let g:gundo_close_on_revert = 0 endif"}}} +if !exists("g:gundo_prefer_python3")"{{{ + let g:gundo_prefer_python3 = 0 +endif"}}} +if has('python')"{{{ + let s:has_supported_python = 1 +elseif g:gundo_prefer_python3 && has('python3') + let s:has_supported_python = 2 +else + let s:has_supported_python = 0 +endif + +if !s:has_supported_python + function! s:GundoDidNotLoad() + echohl WarningMsg|echomsg "Gundo requires Vim to be compiled with Python 2.4+"|echohl None + endfunction + command! -nargs=0 GundoToggle call s:GundoDidNotLoad() + finish +endif"}}} + +let s:plugin_path = escape(expand(':p:h'), '\') "}}} "{{{ Gundo utility functions @@ -265,7 +267,7 @@ endfunction"}}} function! s:GundoOpen()"{{{ if !exists('g:gundo_py_loaded') - if s:has_supported_python == 2 + if s:has_supported_python == 2 && g:gundo_prefer_python3 exe 'py3file ' . s:plugin_path . '/gundo.py' python3 initPythonModule() else @@ -370,7 +372,7 @@ endfunction"}}} "{{{ Gundo rendering function! s:GundoRenderGraph()"{{{ - if s:has_supported_python == 2 + if s:has_supported_python == 2 && g:gundo_prefer_python3 python3 GundoRenderGraph() else python GundoRenderGraph() @@ -378,7 +380,7 @@ function! s:GundoRenderGraph()"{{{ endfunction"}}} function! s:GundoRenderPreview()"{{{ - if s:has_supported_python == 2 + if s:has_supported_python == 2 && g:gundo_prefer_python3 python3 GundoRenderPreview() else python GundoRenderPreview() @@ -386,7 +388,7 @@ function! s:GundoRenderPreview()"{{{ endfunction"}}} function! s:GundoRenderChangePreview()"{{{ - if s:has_supported_python == 2 + if s:has_supported_python == 2 && g:gundo_prefer_python3 python3 GundoRenderChangePreview() else python GundoRenderChangePreview() @@ -398,7 +400,7 @@ endfunction"}}} "{{{ Gundo undo/redo function! s:GundoRevert()"{{{ - if s:has_supported_python == 2 + if s:has_supported_python == 2 && g:gundo_prefer_python3 python3 GundoRevert() else python GundoRevert() @@ -406,7 +408,7 @@ function! s:GundoRevert()"{{{ endfunction"}}} function! s:GundoPlayTo()"{{{ - if s:has_supported_python == 2 + if s:has_supported_python == 2 && g:gundo_prefer_python3 python3 GundoPlayTo() else python GundoPlayTo()