diff --git a/README.md b/README.md index c359275..8a55739 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,8 @@ -vim-argument-swapper -========================== +# vim-argument-swapper A VIM plugin to swap 2 arguments in a method call/definition. -Usage -===== +# Usage Put cursor over the first argument, `:ArgumentSwapperSwap`, done. @@ -14,8 +12,7 @@ Map it to a leader shortcut, for example: map as :ArgumentSwapperSwap ``` -Why? -==== +# Why? To make it easy to turn: @@ -29,9 +26,14 @@ into: in_array($needle, $haystack); ``` -Installation -============ +# Installation Using [vim-plug](https://github.com/junegunn/vim-plug): `Plug 'robertbasic/vim-argument-swapper'` + +# Configuration + +By default the plugin uses Python 3. + +`let g:argumentswapper_python_version = 2` in your `.vimrc` file to use Python 2. diff --git a/autoload/argumentswapper.py b/autoload/argumentswapper.py new file mode 100644 index 0000000..631b316 --- /dev/null +++ b/autoload/argumentswapper.py @@ -0,0 +1,21 @@ +import os +import sys +import vim + +def swap(): + from argumentswapper import swapper + + (row, column) = vim.current.window.cursor + line = vim.current.line + new_line = swapper.swap(line, column) + vim.current.buffer[row - 1] = new_line + +def setup_py_imports(): + python_plugin_path_loaded = int(vim.eval('exists("g:argumentswapper_plugin_path_loaded")')) + + if python_plugin_path_loaded == 0: + vim.command("let g:argumentswapper_plugin_path_loaded=1") + + plugin_path = vim.eval("g:argumentswapper_plugin_path") + python_plugin_path = os.path.abspath('%s/../lib' % (plugin_path)) + sys.path.append(python_plugin_path) diff --git a/autoload/argumentswapper.vim b/autoload/argumentswapper.vim index 6c3a739..d6bf5c7 100644 --- a/autoload/argumentswapper.vim +++ b/autoload/argumentswapper.vim @@ -1,30 +1,15 @@ function! argumentswapper#ArgumentSwapperSwap() -python << endpython -import vim -from argumentswapper import swapper - -(row, column) = vim.current.window.cursor -line = vim.current.line -new_line = swapper.swap(line, column) -vim.current.buffer[row - 1] = new_line - -endpython + if g:argumentswapper_python_version == 3 + python3 swap() + else + python swap() + endif endfunction function! argumentswapper#SetupPyImports() -python << endpython -import os -import sys -import vim - -python_plugin_path_loaded = int(vim.eval('exists("g:argumentswapper_plugin_path_loaded")')) - -if python_plugin_path_loaded == 0: - vim.command("let g:argumentswapper_plugin_path_loaded=1") - - plugin_path = vim.eval("g:argumentswapper_plugin_path") - python_plugin_path = os.path.abspath('%s/../lib' % (plugin_path)) - sys.path.append(python_plugin_path) - -endpython + if g:argumentswapper_python_version == 3 + python3 setup_py_imports() + else + python setup_py_imports() + endif endfunction diff --git a/plugin/argumentswapper.vim b/plugin/argumentswapper.vim index 5a34698..83ae05a 100644 --- a/plugin/argumentswapper.vim +++ b/plugin/argumentswapper.vim @@ -5,6 +5,16 @@ let g:argumentswapper_plugin_loaded = 1 let g:argumentswapper_plugin_path = expand(':p:h') +if !exists('g:argumentswapper_python_version') + let g:argumentswapper_python_version = 3 +endif + +if g:argumentswapper_python_version == 3 + exe 'py3file ' . g:argumentswapper_plugin_path . '/../autoload/argumentswapper.py' +else + exe 'pyfile ' . g:argumentswapper_plugin_path . '/../autoload/argumentswapper.py' +endif + " To setup Python imports call argumentswapper#SetupPyImports()