blob: e2d290d1a1c4a0dfa2ce1201af850065c4dec725 [file] [log] [blame]
Bram Moolenaar071d4272004-06-13 20:20:40 +00001" Vim filetype plugin file
2" Language: python
Bram Moolenaarc95a3022016-06-12 23:01:46 +02003" Maintainer: James Sully <sullyj3@gmail.com>
4" Previous Maintainer: Johannes Zellner <johannes@zellner.org>
Bram Moolenaar64d8e252016-09-06 22:12:34 +02005" Last Change: Fri, 02 September 2016
Bram Moolenaarc95a3022016-06-12 23:01:46 +02006" https://github.com/sullyj3/vim-ftplugin-python
Bram Moolenaar071d4272004-06-13 20:20:40 +00007
8if exists("b:did_ftplugin") | finish | endif
9let b:did_ftplugin = 1
Bram Moolenaar9a7224b2012-04-30 15:56:52 +020010let s:keepcpo= &cpo
11set cpo&vim
Bram Moolenaar071d4272004-06-13 20:20:40 +000012
13setlocal cinkeys-=0#
14setlocal indentkeys-=0#
Bram Moolenaar92dff182014-02-11 19:15:50 +010015setlocal include=^\\s*\\(from\\\|import\\)
Bram Moolenaar071d4272004-06-13 20:20:40 +000016setlocal includeexpr=substitute(v:fname,'\\.','/','g')
17setlocal suffixesadd=.py
Bram Moolenaar36782082013-11-28 13:53:34 +010018setlocal comments=b:#,fb:-
19setlocal commentstring=#\ %s
Bram Moolenaar071d4272004-06-13 20:20:40 +000020
Bram Moolenaar18144c82006-04-12 21:52:12 +000021setlocal omnifunc=pythoncomplete#Complete
Bram Moolenaara40ceaf2006-01-13 22:35:40 +000022
Bram Moolenaar071d4272004-06-13 20:20:40 +000023set wildignore+=*.pyc
24
Bram Moolenaar64d8e252016-09-06 22:12:34 +020025noremap <silent> <buffer> ]] :call <SID>Python_jump('n', '\v%$\|^(class\|def)>', 'W')<cr>
26noremap <silent> <buffer> [[ :call <SID>Python_jump('n', '\v^(class\|def)>', 'Wb')<cr>
27noremap <silent> <buffer> ]m :call <SID>Python_jump('n', '\v%$\|^\s*(class\|def)>', 'W')<cr>
28noremap <silent> <buffer> [m :call <SID>Python_jump('n', '\v^\s*(class\|def)>', 'Wb')<cr>
Bram Moolenaare18dbe82016-07-02 21:42:23 +020029
30xnoremap <silent> <buffer> ]] :call <SID>Python_jump('x', '\v%$\|^(class\|def)>', 'W')<cr>
31xnoremap <silent> <buffer> [[ :call <SID>Python_jump('x', '\v^(class\|def)>', 'Wb')<cr>
32xnoremap <silent> <buffer> ]m :call <SID>Python_jump('x', '\v%$\|^\s*(class\|def)>', 'W')<cr>
33xnoremap <silent> <buffer> [m :call <SID>Python_jump('x', '\v^\s*(class\|def)>', 'Wb')<cr>
Bram Moolenaar071d4272004-06-13 20:20:40 +000034
Bram Moolenaar36782082013-11-28 13:53:34 +010035if !exists('*<SID>Python_jump')
Bram Moolenaare18dbe82016-07-02 21:42:23 +020036 fun! <SID>Python_jump(mode, motion, flags) range
37 if a:mode == 'x'
38 normal! gv
39 endif
40
41 normal! 0
42
Bram Moolenaar36782082013-11-28 13:53:34 +010043 let cnt = v:count1
Bram Moolenaar36782082013-11-28 13:53:34 +010044 mark '
45 while cnt > 0
Bram Moolenaare18dbe82016-07-02 21:42:23 +020046 call search(a:motion, a:flags)
47 let cnt = cnt - 1
Bram Moolenaar36782082013-11-28 13:53:34 +010048 endwhile
Bram Moolenaare18dbe82016-07-02 21:42:23 +020049
50 normal! ^
Bram Moolenaar36782082013-11-28 13:53:34 +010051 endfun
52endif
Bram Moolenaar071d4272004-06-13 20:20:40 +000053
Bram Moolenaar36782082013-11-28 13:53:34 +010054if has("browsefilter") && !exists("b:browsefilter")
Bram Moolenaar071d4272004-06-13 20:20:40 +000055 let b:browsefilter = "Python Files (*.py)\t*.py\n" .
Bram Moolenaare18dbe82016-07-02 21:42:23 +020056 \ "All Files (*.*)\t*.*\n"
Bram Moolenaar071d4272004-06-13 20:20:40 +000057endif
Bram Moolenaar9a7224b2012-04-30 15:56:52 +020058
Bram Moolenaarb1332082013-10-06 14:22:40 +020059" As suggested by PEP8.
60setlocal expandtab shiftwidth=4 softtabstop=4 tabstop=8
61
62" First time: try finding "pydoc".
63if !exists('g:pydoc_executable')
64 if executable('pydoc')
65 let g:pydoc_executable = 1
66 else
67 let g:pydoc_executable = 0
68 endif
69endif
70" If "pydoc" was found use it for keywordprg.
71if g:pydoc_executable
72 setlocal keywordprg=pydoc
73endif
74
Bram Moolenaar9a7224b2012-04-30 15:56:52 +020075let &cpo = s:keepcpo
76unlet s:keepcpo