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.
author |
Strahinja Markovic <strahinja.markovic@gmail.com> |
date |
Mon, 29 Aug 2011 14:13:01 +0200 |
parents |
9524242bda64
|
children |
25f505f044d0
|
branches/tags |
(none) |
files |
autoload/gundo.vim |
Changes
--- a/autoload/gundo.vim Mon Aug 08 17:07:25 2011 -0400
+++ b/autoload/gundo.vim Mon Aug 29 14:13:01 2011 +0200
@@ -19,24 +19,6 @@
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('<sfile>:p:h'), '\')
-
if !exists('g:gundo_width')"{{{
let g:gundo_width = 45
endif"}}}
@@ -61,7 +43,27 @@
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('<sfile>:p:h'), '\')
"}}}
"{{{ Gundo utility functions
@@ -265,7 +267,7 @@
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 @@
"{{{ 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 @@
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 @@
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 @@
"{{{ 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 @@
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()