diff options
author | Adam Stankiewicz <sheerun@sher.pl> | 2014-03-01 00:15:51 +0100 |
---|---|---|
committer | Adam Stankiewicz <sheerun@sher.pl> | 2014-03-01 00:15:51 +0100 |
commit | 9b3b092d15503ed70ea4bf60c4e1345b196c3677 (patch) | |
tree | 45fdb6e08c380ab8bfe0988c66b15ab014688a55 /ftplugin/scala.vim | |
parent | 959a2ffa3ddf3a716b37e15d0034546236a97957 (diff) | |
download | vim-polyglot-9b3b092d15503ed70ea4bf60c4e1345b196c3677.tar.gz vim-polyglot-9b3b092d15503ed70ea4bf60c4e1345b196c3677.zip |
Update
Diffstat (limited to 'ftplugin/scala.vim')
-rw-r--r-- | ftplugin/scala.vim | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/ftplugin/scala.vim b/ftplugin/scala.vim index b042d4d3..18941e07 100644 --- a/ftplugin/scala.vim +++ b/ftplugin/scala.vim @@ -168,3 +168,27 @@ let g:tagbar_type_scala = { \ 'case class' : 'r' \ } \ } + +function! s:CreateOrExpression(keywords) + return '('.join(a:keywords, '|').')' +endfunction + +function! s:NextSection(backwards) + if a:backwards + let dir = '?' + else + let dir = '/' + endif + let keywords = [ 'def', 'class', 'trait', 'object' ] + let keywordsOrExpression = s:CreateOrExpression(keywords) + + let modifiers = [ 'public', 'private', 'private\[\w*\]', 'protected', 'abstract', 'case', 'override', 'implicit', 'final', 'sealed'] + let modifierOrExpression = s:CreateOrExpression(modifiers) + + let regex = '^ *('.modifierOrExpression.' )* *'.keywordsOrExpression."\r" + execute 'silent normal! ' . dir . '\v'.regex +endfunction + +noremap <script> <buffer> <silent> ]] :call <SID>NextSection(0)<cr> + +noremap <script> <buffer> <silent> [[ :call <SID>NextSection(1)<cr> |