xref: /vim-8.2.3635/runtime/ftplugin/python.vim (revision c95a302a)
1071d4279SBram Moolenaar" Vim filetype plugin file
2071d4279SBram Moolenaar" Language:	python
3*c95a302aSBram Moolenaar" Maintainer:	James Sully <[email protected]>
4*c95a302aSBram Moolenaar" Previous Maintainer: Johannes Zellner <[email protected]>
5*c95a302aSBram Moolenaar" Last Change:	Fri, 10 June 2016
6*c95a302aSBram 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*c95a302aSBram Moolenaarnnoremap <silent> <buffer> ]] :call <SID>Python_jump('/^\(class\\|def\)\>')<cr>
26*c95a302aSBram Moolenaarnnoremap <silent> <buffer> [[ :call <SID>Python_jump('?^\(class\\|def\)\>')<cr>
27*c95a302aSBram Moolenaarnnoremap <silent> <buffer> ]m :call <SID>Python_jump('/^\s*\(class\\|def\)\>')<cr>
28*c95a302aSBram Moolenaarnnoremap <silent> <buffer> [m :call <SID>Python_jump('?^\s*\(class\\|def\)\>')<cr>
29071d4279SBram Moolenaar
3036782084SBram Moolenaarif !exists('*<SID>Python_jump')
31071d4279SBram Moolenaar  fun! <SID>Python_jump(motion) range
32071d4279SBram Moolenaar      let cnt = v:count1
33071d4279SBram Moolenaar      let save = @/    " save last search pattern
34071d4279SBram Moolenaar      mark '
35071d4279SBram Moolenaar      while cnt > 0
36071d4279SBram Moolenaar	  silent! exe a:motion
37071d4279SBram Moolenaar	  let cnt = cnt - 1
38071d4279SBram Moolenaar      endwhile
39071d4279SBram Moolenaar      call histdel('/', -1)
40071d4279SBram Moolenaar      let @/ = save    " restore last search pattern
41071d4279SBram Moolenaar  endfun
4236782084SBram Moolenaarendif
43071d4279SBram Moolenaar
4436782084SBram Moolenaarif has("browsefilter") && !exists("b:browsefilter")
45071d4279SBram Moolenaar    let b:browsefilter = "Python Files (*.py)\t*.py\n" .
46071d4279SBram Moolenaar		       \ "All Files (*.*)\t*.*\n"
47071d4279SBram Moolenaarendif
489a7224b5SBram Moolenaar
49b1332080SBram Moolenaar" As suggested by PEP8.
50b1332080SBram Moolenaarsetlocal expandtab shiftwidth=4 softtabstop=4 tabstop=8
51b1332080SBram Moolenaar
52b1332080SBram Moolenaar" First time: try finding "pydoc".
53b1332080SBram Moolenaarif !exists('g:pydoc_executable')
54b1332080SBram Moolenaar    if executable('pydoc')
55b1332080SBram Moolenaar        let g:pydoc_executable = 1
56b1332080SBram Moolenaar    else
57b1332080SBram Moolenaar        let g:pydoc_executable = 0
58b1332080SBram Moolenaar    endif
59b1332080SBram Moolenaarendif
60b1332080SBram Moolenaar" If "pydoc" was found use it for keywordprg.
61b1332080SBram Moolenaarif g:pydoc_executable
62b1332080SBram Moolenaar    setlocal keywordprg=pydoc
63b1332080SBram Moolenaarendif
64b1332080SBram Moolenaar
659a7224b5SBram Moolenaarlet &cpo = s:keepcpo
669a7224b5SBram Moolenaarunlet s:keepcpo
67