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.
This commit is contained in:
Strahinja Markovic 2011-08-29 14:13:01 +02:00
parent 240efe7415
commit 9271614008

View File

@ -19,24 +19,6 @@ if v:version < '703'"{{{
finish finish
endif"}}} 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('<sfile>:p:h'), '\')
if !exists('g:gundo_width')"{{{ if !exists('g:gundo_width')"{{{
let g:gundo_width = 45 let g:gundo_width = 45
endif"}}} endif"}}}
@ -61,7 +43,27 @@ endif"}}}
if !exists("g:gundo_close_on_revert")"{{{ if !exists("g:gundo_close_on_revert")"{{{
let g:gundo_close_on_revert = 0 let g:gundo_close_on_revert = 0
endif"}}} 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('<sfile>:p:h'), '\')
"}}} "}}}
"{{{ Gundo utility functions "{{{ Gundo utility functions
@ -265,7 +267,7 @@ endfunction"}}}
function! s:GundoOpen()"{{{ function! s:GundoOpen()"{{{
if !exists('g:gundo_py_loaded') 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' exe 'py3file ' . s:plugin_path . '/gundo.py'
python3 initPythonModule() python3 initPythonModule()
else else
@ -370,7 +372,7 @@ endfunction"}}}
"{{{ Gundo rendering "{{{ Gundo rendering
function! s:GundoRenderGraph()"{{{ function! s:GundoRenderGraph()"{{{
if s:has_supported_python == 2 if s:has_supported_python == 2 && g:gundo_prefer_python3
python3 GundoRenderGraph() python3 GundoRenderGraph()
else else
python GundoRenderGraph() python GundoRenderGraph()
@ -378,7 +380,7 @@ function! s:GundoRenderGraph()"{{{
endfunction"}}} endfunction"}}}
function! s:GundoRenderPreview()"{{{ function! s:GundoRenderPreview()"{{{
if s:has_supported_python == 2 if s:has_supported_python == 2 && g:gundo_prefer_python3
python3 GundoRenderPreview() python3 GundoRenderPreview()
else else
python GundoRenderPreview() python GundoRenderPreview()
@ -386,7 +388,7 @@ function! s:GundoRenderPreview()"{{{
endfunction"}}} endfunction"}}}
function! s:GundoRenderChangePreview()"{{{ function! s:GundoRenderChangePreview()"{{{
if s:has_supported_python == 2 if s:has_supported_python == 2 && g:gundo_prefer_python3
python3 GundoRenderChangePreview() python3 GundoRenderChangePreview()
else else
python GundoRenderChangePreview() python GundoRenderChangePreview()
@ -398,7 +400,7 @@ endfunction"}}}
"{{{ Gundo undo/redo "{{{ Gundo undo/redo
function! s:GundoRevert()"{{{ function! s:GundoRevert()"{{{
if s:has_supported_python == 2 if s:has_supported_python == 2 && g:gundo_prefer_python3
python3 GundoRevert() python3 GundoRevert()
else else
python GundoRevert() python GundoRevert()
@ -406,7 +408,7 @@ function! s:GundoRevert()"{{{
endfunction"}}} endfunction"}}}
function! s:GundoPlayTo()"{{{ function! s:GundoPlayTo()"{{{
if s:has_supported_python == 2 if s:has_supported_python == 2 && g:gundo_prefer_python3
python3 GundoPlayTo() python3 GundoPlayTo()
else else
python GundoPlayTo() python GundoPlayTo()