summaryrefslogtreecommitdiffstats
path: root/ftplugin/scala.vim
diff options
context:
space:
mode:
authorAdam Stankiewicz <sheerun@sher.pl>2014-03-01 00:15:51 +0100
committerAdam Stankiewicz <sheerun@sher.pl>2014-03-01 00:15:51 +0100
commit9b3b092d15503ed70ea4bf60c4e1345b196c3677 (patch)
tree45fdb6e08c380ab8bfe0988c66b15ab014688a55 /ftplugin/scala.vim
parent959a2ffa3ddf3a716b37e15d0034546236a97957 (diff)
downloadvim-polyglot-9b3b092d15503ed70ea4bf60c4e1345b196c3677.tar.gz
vim-polyglot-9b3b092d15503ed70ea4bf60c4e1345b196c3677.zip
Update
Diffstat (limited to 'ftplugin/scala.vim')
-rw-r--r--ftplugin/scala.vim24
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>