1071d4279SBram Moolenaar" Vim filetype plugin file 2071d4279SBram Moolenaar" Language: python 3c95a302aSBram Moolenaar" Maintainer: James Sully <[email protected]> 4c95a302aSBram Moolenaar" Previous Maintainer: Johannes Zellner <[email protected]> 5*dc083288SBram Moolenaar" Last Change: Tue, 09 October 2016 6c95a302aSBram Moolenaar" https://github.com/sullyj3/vim-ftplugin-python 7071d4279SBram Moolenaar 8071d4279SBram Moolenaarif exists("b:did_ftplugin") | finish | endif 9071d4279SBram Moolenaarlet b:did_ftplugin = 1 109a7224b5SBram Moolenaarlet s:keepcpo= &cpo 119a7224b5SBram Moolenaarset cpo&vim 12071d4279SBram Moolenaar 13071d4279SBram Moolenaarsetlocal cinkeys-=0# 14071d4279SBram Moolenaarsetlocal indentkeys-=0# 1592dff182SBram Moolenaarsetlocal include=^\\s*\\(from\\\|import\\) 16071d4279SBram Moolenaarsetlocal includeexpr=substitute(v:fname,'\\.','/','g') 17071d4279SBram Moolenaarsetlocal suffixesadd=.py 1836782084SBram Moolenaarsetlocal comments=b:#,fb:- 1936782084SBram Moolenaarsetlocal commentstring=#\ %s 20071d4279SBram Moolenaar 2118144c84SBram Moolenaarsetlocal omnifunc=pythoncomplete#Complete 22a40ceaf8SBram Moolenaar 23071d4279SBram Moolenaarset wildignore+=*.pyc 24071d4279SBram Moolenaar 25*dc083288SBram Moolenaarlet b:next_toplevel='\v%$\|^(class\|def\|async def)>' 26*dc083288SBram Moolenaarlet b:prev_toplevel='\v^(class\|def\|async def)>' 27*dc083288SBram Moolenaarlet b:next='\v%$\|^\s*(class\|def\|async def)>' 28*dc083288SBram Moolenaarlet b:prev='\v^\s*(class\|def\|async def)>' 29e18dbe86SBram Moolenaar 30abd468edSBram Moolenaarexecute "nnoremap <silent> <buffer> ]] :call <SID>Python_jump('n', '". b:next_toplevel."', 'W')<cr>" 31abd468edSBram Moolenaarexecute "nnoremap <silent> <buffer> [[ :call <SID>Python_jump('n', '". b:prev_toplevel."', 'Wb')<cr>" 32abd468edSBram Moolenaarexecute "nnoremap <silent> <buffer> ]m :call <SID>Python_jump('n', '". b:next."', 'W')<cr>" 33abd468edSBram Moolenaarexecute "nnoremap <silent> <buffer> [m :call <SID>Python_jump('n', '". b:prev."', 'Wb')<cr>" 34abd468edSBram Moolenaar 35abd468edSBram Moolenaarexecute "onoremap <silent> <buffer> ]] :call <SID>Python_jump('o', '". b:next_toplevel."', 'W')<cr>" 36abd468edSBram Moolenaarexecute "onoremap <silent> <buffer> [[ :call <SID>Python_jump('o', '". b:prev_toplevel."', 'Wb')<cr>" 37abd468edSBram Moolenaarexecute "onoremap <silent> <buffer> ]m :call <SID>Python_jump('o', '". b:next."', 'W')<cr>" 38abd468edSBram Moolenaarexecute "onoremap <silent> <buffer> [m :call <SID>Python_jump('o', '". b:prev."', 'Wb')<cr>" 39abd468edSBram Moolenaar 40abd468edSBram Moolenaarexecute "xnoremap <silent> <buffer> ]] :call <SID>Python_jump('x', '". b:next_toplevel."', 'W')<cr>" 41abd468edSBram Moolenaarexecute "xnoremap <silent> <buffer> [[ :call <SID>Python_jump('x', '". b:prev_toplevel."', 'Wb')<cr>" 42abd468edSBram Moolenaarexecute "xnoremap <silent> <buffer> ]m :call <SID>Python_jump('x', '". b:next."', 'W')<cr>" 43abd468edSBram Moolenaarexecute "xnoremap <silent> <buffer> [m :call <SID>Python_jump('x', '". b:prev."', 'Wb')<cr>" 44071d4279SBram Moolenaar 4536782084SBram Moolenaarif !exists('*<SID>Python_jump') 46e18dbe86SBram Moolenaar fun! <SID>Python_jump(mode, motion, flags) range 47e18dbe86SBram Moolenaar if a:mode == 'x' 48e18dbe86SBram Moolenaar normal! gv 49e18dbe86SBram Moolenaar endif 50e18dbe86SBram Moolenaar 51e18dbe86SBram Moolenaar normal! 0 52e18dbe86SBram Moolenaar 53071d4279SBram Moolenaar let cnt = v:count1 54071d4279SBram Moolenaar mark ' 55071d4279SBram Moolenaar while cnt > 0 56e18dbe86SBram Moolenaar call search(a:motion, a:flags) 57071d4279SBram Moolenaar let cnt = cnt - 1 58071d4279SBram Moolenaar endwhile 59e18dbe86SBram Moolenaar 60e18dbe86SBram Moolenaar normal! ^ 61071d4279SBram Moolenaar endfun 6236782084SBram Moolenaarendif 63071d4279SBram Moolenaar 6436782084SBram Moolenaarif has("browsefilter") && !exists("b:browsefilter") 65071d4279SBram Moolenaar let b:browsefilter = "Python Files (*.py)\t*.py\n" . 66071d4279SBram Moolenaar \ "All Files (*.*)\t*.*\n" 67071d4279SBram Moolenaarendif 689a7224b5SBram Moolenaar 69abd468edSBram Moolenaarif !exists("g:python_recommended_style") || g:python_recommended_style != 0 70b1332080SBram Moolenaar " As suggested by PEP8. 71b1332080SBram Moolenaar setlocal expandtab shiftwidth=4 softtabstop=4 tabstop=8 72abd468edSBram Moolenaarendif 73b1332080SBram Moolenaar 74b1332080SBram Moolenaar" First time: try finding "pydoc". 75b1332080SBram Moolenaarif !exists('g:pydoc_executable') 76b1332080SBram Moolenaar if executable('pydoc') 77b1332080SBram Moolenaar let g:pydoc_executable = 1 78b1332080SBram Moolenaar else 79b1332080SBram Moolenaar let g:pydoc_executable = 0 80b1332080SBram Moolenaar endif 81b1332080SBram Moolenaarendif 82b1332080SBram Moolenaar" If "pydoc" was found use it for keywordprg. 83b1332080SBram Moolenaarif g:pydoc_executable 84b1332080SBram Moolenaar setlocal keywordprg=pydoc 85b1332080SBram Moolenaarendif 86b1332080SBram Moolenaar 879a7224b5SBram Moolenaarlet &cpo = s:keepcpo 889a7224b5SBram Moolenaarunlet s:keepcpo 89