xref: /vim-8.2.3635/runtime/ftplugin/python.vim (revision e18dbe86)
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*e18dbe86SBram Moolenaar" Last Change:	Wed, 29 June 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*e18dbe86SBram Moolenaarnnoremap <silent> <buffer> ]] :call <SID>Python_jump('n', '\v%$\|^(class\|def)>', 'W')<cr>
26*e18dbe86SBram Moolenaarnnoremap <silent> <buffer> [[ :call <SID>Python_jump('n', '\v^(class\|def)>', 'Wb')<cr>
27*e18dbe86SBram Moolenaarnnoremap <silent> <buffer> ]m :call <SID>Python_jump('n', '\v%$\|^\s*(class\|def)>', 'W')<cr>
28*e18dbe86SBram Moolenaarnnoremap <silent> <buffer> [m :call <SID>Python_jump('n', '\v^\s*(class\|def)>', 'Wb')<cr>
29*e18dbe86SBram Moolenaar
30*e18dbe86SBram Moolenaarxnoremap <silent> <buffer> ]] :call <SID>Python_jump('x', '\v%$\|^(class\|def)>', 'W')<cr>
31*e18dbe86SBram Moolenaarxnoremap <silent> <buffer> [[ :call <SID>Python_jump('x', '\v^(class\|def)>', 'Wb')<cr>
32*e18dbe86SBram Moolenaarxnoremap <silent> <buffer> ]m :call <SID>Python_jump('x', '\v%$\|^\s*(class\|def)>', 'W')<cr>
33*e18dbe86SBram Moolenaarxnoremap <silent> <buffer> [m :call <SID>Python_jump('x', '\v^\s*(class\|def)>', 'Wb')<cr>
34071d4279SBram Moolenaar
3536782084SBram Moolenaarif !exists('*<SID>Python_jump')
36*e18dbe86SBram Moolenaar  fun! <SID>Python_jump(mode, motion, flags) range
37*e18dbe86SBram Moolenaar      if a:mode == 'x'
38*e18dbe86SBram Moolenaar          normal! gv
39*e18dbe86SBram Moolenaar      endif
40*e18dbe86SBram Moolenaar
41*e18dbe86SBram Moolenaar      normal! 0
42*e18dbe86SBram Moolenaar
43071d4279SBram Moolenaar      let cnt = v:count1
44071d4279SBram Moolenaar      mark '
45071d4279SBram Moolenaar      while cnt > 0
46*e18dbe86SBram Moolenaar          call search(a:motion, a:flags)
47071d4279SBram Moolenaar          let cnt = cnt - 1
48071d4279SBram Moolenaar      endwhile
49*e18dbe86SBram Moolenaar
50*e18dbe86SBram Moolenaar      normal! ^
51071d4279SBram Moolenaar  endfun
5236782084SBram Moolenaarendif
53071d4279SBram Moolenaar
5436782084SBram Moolenaarif has("browsefilter") && !exists("b:browsefilter")
55071d4279SBram Moolenaar    let b:browsefilter = "Python Files (*.py)\t*.py\n" .
56071d4279SBram Moolenaar                \ "All Files (*.*)\t*.*\n"
57071d4279SBram Moolenaarendif
589a7224b5SBram Moolenaar
59b1332080SBram Moolenaar" As suggested by PEP8.
60b1332080SBram Moolenaarsetlocal expandtab shiftwidth=4 softtabstop=4 tabstop=8
61b1332080SBram Moolenaar
62b1332080SBram Moolenaar" First time: try finding "pydoc".
63b1332080SBram Moolenaarif !exists('g:pydoc_executable')
64b1332080SBram Moolenaar    if executable('pydoc')
65b1332080SBram Moolenaar        let g:pydoc_executable = 1
66b1332080SBram Moolenaar    else
67b1332080SBram Moolenaar        let g:pydoc_executable = 0
68b1332080SBram Moolenaar    endif
69b1332080SBram Moolenaarendif
70b1332080SBram Moolenaar" If "pydoc" was found use it for keywordprg.
71b1332080SBram Moolenaarif g:pydoc_executable
72b1332080SBram Moolenaar    setlocal keywordprg=pydoc
73b1332080SBram Moolenaarendif
74b1332080SBram Moolenaar
759a7224b5SBram Moolenaarlet &cpo = s:keepcpo
769a7224b5SBram Moolenaarunlet s:keepcpo
77