annotate runtime/ftplugin/ruby.vim @ 7399:d45f2dbdac8d v7.4.1004

commit https://github.com/vim/vim/commit/08b7bae91adb79d30d4c923fd758e2f7cecd33ef Author: Bram Moolenaar <Bram@vim.org> Date: Wed Dec 30 17:56:05 2015 +0100 patch 7.4.1004 Problem: Using Makefile when auto/config.mk does not exists results in warnings. Solution: Use default values for essential variables.
author Christian Brabandt <cb@256bit.org>
date Wed, 30 Dec 2015 18:00:04 +0100
parents a5352e73dc00
children 43efa4f5a8ea
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
1 " Vim filetype plugin
831
f24a95dae8ee updated for version 7.0d05
vimboss
parents: 829
diff changeset
2 " Language: Ruby
4869
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
3 " Maintainer: Tim Pope <vimNOSPAM@tpope.org>
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
4 " URL: https://github.com/vim-ruby/vim-ruby
1123
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
5 " Release Coordinator: Doug Kearns <dougkearns@gmail.com>
530
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
6 " ----------------------------------------------------------------------------
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
8 if (exists("b:did_ftplugin"))
530
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
9 finish
7
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
10 endif
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
11 let b:did_ftplugin = 1
3fc0f57ecb91 updated for version 7.0001
vimboss
parents:
diff changeset
12
530
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
13 let s:cpo_save = &cpo
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
14 set cpo&vim
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
15
1123
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
16 if has("gui_running") && !has("gui_win32")
4869
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
17 setlocal keywordprg=ri\ -T\ -f\ bs
1123
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
18 else
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
19 setlocal keywordprg=ri
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
20 endif
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
21
530
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
22 " Matchit support
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
23 if exists("loaded_matchit") && !exists("b:match_words")
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
24 let b:match_ignorecase = 0
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
25
1123
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
26 let b:match_words =
1215
1d08aac0aea9 updated for version 7.1b
vimboss
parents: 1123
diff changeset
27 \ '\<\%(if\|unless\|case\|while\|until\|for\|do\|class\|module\|def\|begin\)\>=\@!' .
1123
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
28 \ ':' .
1215
1d08aac0aea9 updated for version 7.1b
vimboss
parents: 1123
diff changeset
29 \ '\<\%(else\|elsif\|ensure\|when\|rescue\|break\|redo\|next\|retry\)\>' .
1123
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
30 \ ':' .
1215
1d08aac0aea9 updated for version 7.1b
vimboss
parents: 1123
diff changeset
31 \ '\<end\>' .
1123
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
32 \ ',{:},\[:\],(:)'
530
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
33
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
34 let b:match_skip =
1123
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
35 \ "synIDattr(synID(line('.'),col('.'),0),'name') =~ '" .
1215
1d08aac0aea9 updated for version 7.1b
vimboss
parents: 1123
diff changeset
36 \ "\\<ruby\\%(String\\|StringDelimiter\\|ASCIICode\\|Escape\\|" .
1d08aac0aea9 updated for version 7.1b
vimboss
parents: 1123
diff changeset
37 \ "Interpolation\\|NoInterpolation\\|Comment\\|Documentation\\|" .
1d08aac0aea9 updated for version 7.1b
vimboss
parents: 1123
diff changeset
38 \ "ConditionalModifier\\|RepeatModifier\\|OptionalDo\\|" .
1d08aac0aea9 updated for version 7.1b
vimboss
parents: 1123
diff changeset
39 \ "Function\\|BlockArgument\\|KeywordAsMethod\\|ClassVariable\\|" .
1d08aac0aea9 updated for version 7.1b
vimboss
parents: 1123
diff changeset
40 \ "InstanceVariable\\|GlobalVariable\\|Symbol\\)\\>'"
530
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
41 endif
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
42
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
43 setlocal formatoptions-=t formatoptions+=croql
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
44
4869
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
45 setlocal include=^\\s*\\<\\(load\\>\\\|require\\>\\\|autoload\\s*:\\=[\"']\\=\\h\\w*[\"']\\=,\\)
530
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
46 setlocal includeexpr=substitute(substitute(v:fname,'::','/','g'),'$','.rb','')
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
47 setlocal suffixesadd=.rb
831
f24a95dae8ee updated for version 7.0d05
vimboss
parents: 829
diff changeset
48
1123
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
49 if exists("&ofu") && has("ruby")
831
f24a95dae8ee updated for version 7.0d05
vimboss
parents: 829
diff changeset
50 setlocal omnifunc=rubycomplete#Complete
f24a95dae8ee updated for version 7.0d05
vimboss
parents: 829
diff changeset
51 endif
530
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
52
1123
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
53 " To activate, :set ballooneval
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
54 if has('balloon_eval') && exists('+balloonexpr')
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
55 setlocal balloonexpr=RubyBalloonexpr()
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
56 endif
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
57
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
58
530
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
59 " TODO:
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
60 "setlocal define=^\\s*def
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
61
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
62 setlocal comments=:#
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
63 setlocal commentstring=#\ %s
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
64
4869
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
65 if !exists('g:ruby_version_paths')
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
66 let g:ruby_version_paths = {}
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
67 endif
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
68
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
69 function! s:query_path(root)
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
70 let code = "print $:.join %q{,}"
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
71 if &shell =~# 'sh' && $PATH !~# '\s'
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
72 let prefix = 'env PATH='.$PATH.' '
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
73 else
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
74 let prefix = ''
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
75 endif
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
76 if &shellxquote == "'"
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
77 let path_check = prefix.'ruby -e "' . code . '"'
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
78 else
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
79 let path_check = prefix."ruby -e '" . code . "'"
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
80 endif
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
81
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
82 let cd = haslocaldir() ? 'lcd' : 'cd'
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
83 let cwd = getcwd()
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
84 try
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
85 exe cd fnameescape(a:root)
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
86 let path = split(system(path_check),',')
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
87 exe cd fnameescape(cwd)
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
88 return path
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
89 finally
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
90 exe cd fnameescape(cwd)
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
91 endtry
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
92 endfunction
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
93
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
94 function! s:build_path(path)
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
95 let path = join(map(copy(a:path), 'v:val ==# "." ? "" : v:val'), ',')
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
96 if &g:path !~# '\v^\.%(,/%(usr|emx)/include)=,,$'
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
97 let path = substitute(&g:path,',,$',',','') . ',' . path
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
98 endif
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
99 return path
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
100 endfunction
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
101
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
102 if !exists('b:ruby_version') && !exists('g:ruby_path') && isdirectory(expand('%:p:h'))
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
103 let s:version_file = findfile('.ruby-version', '.;')
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
104 if !empty(s:version_file)
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
105 let b:ruby_version = get(readfile(s:version_file, '', 1), '')
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
106 if !has_key(g:ruby_version_paths, b:ruby_version)
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
107 let g:ruby_version_paths[b:ruby_version] = s:query_path(fnamemodify(s:version_file, ':p:h'))
530
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
108 endif
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
109 endif
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
110 endif
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
111
4869
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
112 if exists("g:ruby_path")
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
113 let s:ruby_path = type(g:ruby_path) == type([]) ? join(g:ruby_path, ',') : g:ruby_path
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
114 elseif has_key(g:ruby_version_paths, get(b:, 'ruby_version', ''))
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
115 let s:ruby_paths = g:ruby_version_paths[b:ruby_version]
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
116 let s:ruby_path = s:build_path(s:ruby_paths)
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
117 else
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
118 if !exists('g:ruby_default_path')
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
119 if has("ruby") && has("win32")
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
120 ruby ::VIM::command( 'let g:ruby_default_path = split("%s",",")' % $:.join(%q{,}) )
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
121 elseif executable('ruby')
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
122 let g:ruby_default_path = s:query_path($HOME)
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
123 else
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
124 let g:ruby_default_path = map(split($RUBYLIB,':'), 'v:val ==# "." ? "" : v:val')
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
125 endif
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
126 endif
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
127 let s:ruby_paths = g:ruby_default_path
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
128 let s:ruby_path = s:build_path(s:ruby_paths)
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
129 endif
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
130
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
131 if stridx(&l:path, s:ruby_path) == -1
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
132 let &l:path = s:ruby_path
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
133 endif
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
134 if exists('s:ruby_paths') && stridx(&l:tags, join(map(copy(s:ruby_paths),'v:val."/tags"'),',')) == -1
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
135 let &l:tags = &tags . ',' . join(map(copy(s:ruby_paths),'v:val."/tags"'),',')
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
136 endif
530
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
137
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
138 if has("gui_win32") && !exists("b:browsefilter")
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
139 let b:browsefilter = "Ruby Source Files (*.rb)\t*.rb\n" .
1123
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
140 \ "All Files (*.*)\t*.*\n"
530
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
141 endif
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
142
4869
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
143 let b:undo_ftplugin = "setl fo< inc< inex< sua< def< com< cms< path< tags< kp<"
1215
1d08aac0aea9 updated for version 7.1b
vimboss
parents: 1123
diff changeset
144 \."| unlet! b:browsefilter b:match_ignorecase b:match_words b:match_skip"
1d08aac0aea9 updated for version 7.1b
vimboss
parents: 1123
diff changeset
145 \."| if exists('&ofu') && has('ruby') | setl ofu< | endif"
1d08aac0aea9 updated for version 7.1b
vimboss
parents: 1123
diff changeset
146 \."| if has('balloon_eval') && exists('+bexpr') | setl bexpr< | endif"
1d08aac0aea9 updated for version 7.1b
vimboss
parents: 1123
diff changeset
147
1d08aac0aea9 updated for version 7.1b
vimboss
parents: 1123
diff changeset
148 if !exists("g:no_plugin_maps") && !exists("g:no_ruby_maps")
2225
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
149 nnoremap <silent> <buffer> [m :<C-U>call <SID>searchsyn('\<def\>','rubyDefine','b','n')<CR>
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
150 nnoremap <silent> <buffer> ]m :<C-U>call <SID>searchsyn('\<def\>','rubyDefine','','n')<CR>
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
151 nnoremap <silent> <buffer> [M :<C-U>call <SID>searchsyn('\<end\>','rubyDefine','b','n')<CR>
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
152 nnoremap <silent> <buffer> ]M :<C-U>call <SID>searchsyn('\<end\>','rubyDefine','','n')<CR>
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
153 xnoremap <silent> <buffer> [m :<C-U>call <SID>searchsyn('\<def\>','rubyDefine','b','v')<CR>
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
154 xnoremap <silent> <buffer> ]m :<C-U>call <SID>searchsyn('\<def\>','rubyDefine','','v')<CR>
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
155 xnoremap <silent> <buffer> [M :<C-U>call <SID>searchsyn('\<end\>','rubyDefine','b','v')<CR>
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
156 xnoremap <silent> <buffer> ]M :<C-U>call <SID>searchsyn('\<end\>','rubyDefine','','v')<CR>
1215
1d08aac0aea9 updated for version 7.1b
vimboss
parents: 1123
diff changeset
157
2225
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
158 nnoremap <silent> <buffer> [[ :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','b','n')<CR>
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
159 nnoremap <silent> <buffer> ]] :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','','n')<CR>
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
160 nnoremap <silent> <buffer> [] :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','b','n')<CR>
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
161 nnoremap <silent> <buffer> ][ :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','','n')<CR>
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
162 xnoremap <silent> <buffer> [[ :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','b','v')<CR>
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
163 xnoremap <silent> <buffer> ]] :<C-U>call <SID>searchsyn('\<\%(class\<Bar>module\)\>','rubyModule\<Bar>rubyClass','','v')<CR>
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
164 xnoremap <silent> <buffer> [] :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','b','v')<CR>
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
165 xnoremap <silent> <buffer> ][ :<C-U>call <SID>searchsyn('\<end\>','rubyModule\<Bar>rubyClass','','v')<CR>
1215
1d08aac0aea9 updated for version 7.1b
vimboss
parents: 1123
diff changeset
166
1d08aac0aea9 updated for version 7.1b
vimboss
parents: 1123
diff changeset
167 let b:undo_ftplugin = b:undo_ftplugin
1d08aac0aea9 updated for version 7.1b
vimboss
parents: 1123
diff changeset
168 \."| sil! exe 'unmap <buffer> [[' | sil! exe 'unmap <buffer> ]]' | sil! exe 'unmap <buffer> []' | sil! exe 'unmap <buffer> ]['"
1d08aac0aea9 updated for version 7.1b
vimboss
parents: 1123
diff changeset
169 \."| sil! exe 'unmap <buffer> [m' | sil! exe 'unmap <buffer> ]m' | sil! exe 'unmap <buffer> [M' | sil! exe 'unmap <buffer> ]M'"
2225
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
170
4869
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
171 if maparg('im','n') == ''
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
172 onoremap <silent> <buffer> im :<C-U>call <SID>wrap_i('[m',']M')<CR>
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
173 onoremap <silent> <buffer> am :<C-U>call <SID>wrap_a('[m',']M')<CR>
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
174 xnoremap <silent> <buffer> im :<C-U>call <SID>wrap_i('[m',']M')<CR>
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
175 xnoremap <silent> <buffer> am :<C-U>call <SID>wrap_a('[m',']M')<CR>
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
176 let b:undo_ftplugin = b:undo_ftplugin
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
177 \."| sil! exe 'ounmap <buffer> im' | sil! exe 'ounmap <buffer> am'"
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
178 \."| sil! exe 'xunmap <buffer> im' | sil! exe 'xunmap <buffer> am'"
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
179 endif
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
180
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
181 if maparg('iM','n') == ''
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
182 onoremap <silent> <buffer> iM :<C-U>call <SID>wrap_i('[[','][')<CR>
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
183 onoremap <silent> <buffer> aM :<C-U>call <SID>wrap_a('[[','][')<CR>
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
184 xnoremap <silent> <buffer> iM :<C-U>call <SID>wrap_i('[[','][')<CR>
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
185 xnoremap <silent> <buffer> aM :<C-U>call <SID>wrap_a('[[','][')<CR>
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
186 let b:undo_ftplugin = b:undo_ftplugin
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
187 \."| sil! exe 'ounmap <buffer> iM' | sil! exe 'ounmap <buffer> aM'"
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
188 \."| sil! exe 'xunmap <buffer> iM' | sil! exe 'xunmap <buffer> aM'"
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
189 endif
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
190
2225
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
191 if maparg("\<C-]>",'n') == ''
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
192 nnoremap <silent> <buffer> <C-]> :<C-U>exe v:count1."tag <C-R>=RubyCursorIdentifier()<CR>"<CR>
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
193 nnoremap <silent> <buffer> g<C-]> :<C-U>exe "tjump <C-R>=RubyCursorIdentifier()<CR>"<CR>
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
194 nnoremap <silent> <buffer> g] :<C-U>exe "tselect <C-R>=RubyCursorIdentifier()<CR>"<CR>
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
195 nnoremap <silent> <buffer> <C-W>] :<C-U>exe v:count1."stag <C-R>=RubyCursorIdentifier()<CR>"<CR>
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
196 nnoremap <silent> <buffer> <C-W><C-]> :<C-U>exe v:count1."stag <C-R>=RubyCursorIdentifier()<CR>"<CR>
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
197 nnoremap <silent> <buffer> <C-W>g<C-]> :<C-U>exe "stjump <C-R>=RubyCursorIdentifier()<CR>"<CR>
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
198 nnoremap <silent> <buffer> <C-W>g] :<C-U>exe "stselect <C-R>=RubyCursorIdentifier()<CR>"<CR>
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
199 nnoremap <silent> <buffer> <C-W>} :<C-U>exe "ptag <C-R>=RubyCursorIdentifier()<CR>"<CR>
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
200 nnoremap <silent> <buffer> <C-W>g} :<C-U>exe "ptjump <C-R>=RubyCursorIdentifier()<CR>"<CR>
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
201 let b:undo_ftplugin = b:undo_ftplugin
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
202 \."| sil! exe 'nunmap <buffer> <C-]>'| sil! exe 'nunmap <buffer> g<C-]>'| sil! exe 'nunmap <buffer> g]'"
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
203 \."| sil! exe 'nunmap <buffer> <C-W>]'| sil! exe 'nunmap <buffer> <C-W><C-]>'"
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
204 \."| sil! exe 'nunmap <buffer> <C-W>g<C-]>'| sil! exe 'nunmap <buffer> <C-W>g]'"
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
205 \."| sil! exe 'nunmap <buffer> <C-W>}'| sil! exe 'nunmap <buffer> <C-W>g}'"
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
206 endif
4869
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
207
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
208 if maparg("gf",'n') == ''
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
209 " By using findfile() rather than gf's normal behavior, we prevent
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
210 " erroneously editing a directory.
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
211 nnoremap <silent> <buffer> gf :<C-U>exe <SID>gf(v:count1,"gf",'edit')<CR>
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
212 nnoremap <silent> <buffer> <C-W>f :<C-U>exe <SID>gf(v:count1,"\<Lt>C-W>f",'split')<CR>
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
213 nnoremap <silent> <buffer> <C-W><C-F> :<C-U>exe <SID>gf(v:count1,"\<Lt>C-W>\<Lt>C-F>",'split')<CR>
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
214 nnoremap <silent> <buffer> <C-W>gf :<C-U>exe <SID>gf(v:count1,"\<Lt>C-W>gf",'tabedit')<CR>
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
215 let b:undo_ftplugin = b:undo_ftplugin
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
216 \."| sil! exe 'nunmap <buffer> gf' | sil! exe 'nunmap <buffer> <C-W>f' | sil! exe 'nunmap <buffer> <C-W><C-F>' | sil! exe 'nunmap <buffer> <C-W>gf'"
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
217 endif
1215
1d08aac0aea9 updated for version 7.1b
vimboss
parents: 1123
diff changeset
218 endif
530
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
219
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
220 let &cpo = s:cpo_save
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
221 unlet s:cpo_save
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
222
1123
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
223 if exists("g:did_ruby_ftplugin_functions")
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
224 finish
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
225 endif
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
226 let g:did_ruby_ftplugin_functions = 1
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
227
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
228 function! RubyBalloonexpr()
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
229 if !exists('s:ri_found')
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
230 let s:ri_found = executable('ri')
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
231 endif
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
232 if s:ri_found
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
233 let line = getline(v:beval_lnum)
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
234 let b = matchstr(strpart(line,0,v:beval_col),'\%(\w\|[:.]\)*$')
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
235 let a = substitute(matchstr(strpart(line,v:beval_col),'^\w*\%([?!]\|\s*=\)\?'),'\s\+','','g')
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
236 let str = b.a
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
237 let before = strpart(line,0,v:beval_col-strlen(b))
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
238 let after = strpart(line,v:beval_col+strlen(a))
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
239 if str =~ '^\.'
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
240 let str = substitute(str,'^\.','#','g')
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
241 if before =~ '\]\s*$'
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
242 let str = 'Array'.str
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
243 elseif before =~ '}\s*$'
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
244 " False positives from blocks here
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
245 let str = 'Hash'.str
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
246 elseif before =~ "[\"'`]\\s*$" || before =~ '\$\d\+\s*$'
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
247 let str = 'String'.str
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
248 elseif before =~ '\$\d\+\.\d\+\s*$'
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
249 let str = 'Float'.str
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
250 elseif before =~ '\$\d\+\s*$'
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
251 let str = 'Integer'.str
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
252 elseif before =~ '/\s*$'
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
253 let str = 'Regexp'.str
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
254 else
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
255 let str = substitute(str,'^#','.','')
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
256 endif
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
257 endif
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
258 let str = substitute(str,'.*\.\s*to_f\s*\.\s*','Float#','')
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
259 let str = substitute(str,'.*\.\s*to_i\%(nt\)\=\s*\.\s*','Integer#','')
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
260 let str = substitute(str,'.*\.\s*to_s\%(tr\)\=\s*\.\s*','String#','')
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
261 let str = substitute(str,'.*\.\s*to_sym\s*\.\s*','Symbol#','')
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
262 let str = substitute(str,'.*\.\s*to_a\%(ry\)\=\s*\.\s*','Array#','')
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
263 let str = substitute(str,'.*\.\s*to_proc\s*\.\s*','Proc#','')
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
264 if str !~ '^\w'
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
265 return ''
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
266 endif
4869
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
267 silent! let res = substitute(system("ri -f rdoc -T \"".str.'"'),'\n$','','')
1215
1d08aac0aea9 updated for version 7.1b
vimboss
parents: 1123
diff changeset
268 if res =~ '^Nothing known about' || res =~ '^Bad argument:' || res =~ '^More than one method'
1123
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
269 return ''
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
270 endif
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
271 return res
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
272 else
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
273 return ""
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
274 endif
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
275 endfunction
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
276
2225
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
277 function! s:searchsyn(pattern,syn,flags,mode)
4869
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
278 norm! m'
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
279 if a:mode ==# 'v'
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
280 norm! gv
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
281 endif
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
282 let i = 0
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
283 let cnt = v:count ? v:count : 1
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
284 while i < cnt
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
285 let i = i + 1
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
286 let line = line('.')
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
287 let col = col('.')
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
288 let pos = search(a:pattern,'W'.a:flags)
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
289 while pos != 0 && s:synname() !~# a:syn
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
290 let pos = search(a:pattern,'W'.a:flags)
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
291 endwhile
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
292 if pos == 0
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
293 call cursor(line,col)
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
294 return
2225
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
295 endif
4869
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
296 endwhile
1215
1d08aac0aea9 updated for version 7.1b
vimboss
parents: 1123
diff changeset
297 endfunction
1d08aac0aea9 updated for version 7.1b
vimboss
parents: 1123
diff changeset
298
1d08aac0aea9 updated for version 7.1b
vimboss
parents: 1123
diff changeset
299 function! s:synname()
4869
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
300 return synIDattr(synID(line('.'),col('.'),0),'name')
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
301 endfunction
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
302
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
303 function! s:wrap_i(back,forward)
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
304 execute 'norm k'.a:forward
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
305 let line = line('.')
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
306 execute 'norm '.a:back
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
307 if line('.') == line - 1
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
308 return s:wrap_a(a:back,a:forward)
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
309 endif
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
310 execute 'norm jV'.a:forward.'k'
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
311 endfunction
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
312
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
313 function! s:wrap_a(back,forward)
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
314 execute 'norm '.a:forward
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
315 if line('.') < line('$') && getline(line('.')+1) ==# ''
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
316 let after = 1
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
317 endif
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
318 execute 'norm '.a:back
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
319 while getline(line('.')-1) =~# '^\s*#' && line('.')
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
320 -
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
321 endwhile
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
322 if exists('after')
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
323 execute 'norm V'.a:forward.'j'
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
324 elseif line('.') > 1 && getline(line('.')-1) =~# '^\s*$'
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
325 execute 'norm kV'.a:forward
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
326 else
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
327 execute 'norm V'.a:forward
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
328 endif
1215
1d08aac0aea9 updated for version 7.1b
vimboss
parents: 1123
diff changeset
329 endfunction
1123
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
330
2225
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
331 function! RubyCursorIdentifier()
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
332 let asciicode = '\%(\w\|[]})\"'."'".']\)\@<!\%(?\%(\\M-\\C-\|\\C-\\M-\|\\M-\\c\|\\c\\M-\|\\c\|\\C-\|\\M-\)\=\%(\\\o\{1,3}\|\\x\x\{1,2}\|\\\=\S\)\)'
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
333 let number = '\%(\%(\w\|[]})\"'."'".']\s*\)\@<!-\)\=\%(\<[[:digit:]_]\+\%(\.[[:digit:]_]\+\)\=\%([Ee][[:digit:]_]\+\)\=\>\|\<0[xXbBoOdD][[:xdigit:]_]\+\>\)\|'.asciicode
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
334 let operator = '\%(\[\]\|<<\|<=>\|[!<>]=\=\|===\=\|[!=]\~\|>>\|\*\*\|\.\.\.\=\|=>\|[~^&|*/%+-]\)'
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
335 let method = '\%(\<[_a-zA-Z]\w*\>\%([?!]\|\s*=>\@!\)\=\)'
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
336 let global = '$\%([!$&"'."'".'*+,./:;<=>?@\`~]\|-\=\w\+\>\)'
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
337 let symbolizable = '\%(\%(@@\=\)\w\+\>\|'.global.'\|'.method.'\|'.operator.'\)'
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
338 let pattern = '\C\s*\%('.number.'\|\%(:\@<!:\)\='.symbolizable.'\)'
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
339 let [lnum, col] = searchpos(pattern,'bcn',line('.'))
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
340 let raw = matchstr(getline('.')[col-1 : ],pattern)
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
341 let stripped = substitute(substitute(raw,'\s\+=$','=',''),'^\s*:\=','','')
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
342 return stripped == '' ? expand("<cword>") : stripped
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
343 endfunction
dd5c1983e355 Runtime file updates.
Bram Moolenaar <bram@vim.org>
parents: 2034
diff changeset
344
4869
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
345 function! s:gf(count,map,edit) abort
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
346 if getline('.') =~# '^\s*require_relative\s*\(["'']\).*\1\s*$'
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
347 let target = matchstr(getline('.'),'\(["'']\)\zs.\{-\}\ze\1')
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
348 return a:edit.' %:h/'.target.'.rb'
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
349 elseif getline('.') =~# '^\s*\%(require[( ]\|load[( ]\|autoload[( ]:\w\+,\)\s*\s*\%(::\)\=File\.expand_path(\(["'']\)\.\./.*\1,\s*__FILE__)\s*$'
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
350 let target = matchstr(getline('.'),'\(["'']\)\.\./\zs.\{-\}\ze\1')
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
351 return a:edit.' %:h/'.target.'.rb'
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
352 elseif getline('.') =~# '^\s*\%(require \|load \|autoload :\w\+,\)\s*\(["'']\).*\1\s*$'
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
353 let target = matchstr(getline('.'),'\(["'']\)\zs.\{-\}\ze\1')
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
354 else
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
355 let target = expand('<cfile>')
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
356 endif
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
357 let found = findfile(target, &path, a:count)
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
358 if found ==# ''
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
359 return 'norm! '.a:count.a:map
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
360 else
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
361 return a:edit.' '.fnameescape(found)
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
362 endif
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
363 endfunction
a5352e73dc00 Update runtime files.
Bram Moolenaar <bram@vim.org>
parents: 2225
diff changeset
364
530
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
365 "
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
366 " Instructions for enabling "matchit" support:
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
367 "
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
368 " 1. Look for the latest "matchit" plugin at
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
369 "
1123
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
370 " http://www.vim.org/scripts/script.php?script_id=39
530
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
371 "
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
372 " It is also packaged with Vim, in the $VIMRUNTIME/macros directory.
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
373 "
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
374 " 2. Copy "matchit.txt" into a "doc" directory (e.g. $HOME/.vim/doc).
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
375 "
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
376 " 3. Copy "matchit.vim" into a "plugin" directory (e.g. $HOME/.vim/plugin).
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
377 "
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
378 " 4. Ensure this file (ftplugin/ruby.vim) is installed.
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
379 "
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
380 " 5. Ensure you have this line in your $HOME/.vimrc:
1123
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
381 " filetype plugin on
530
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
382 "
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
383 " 6. Restart Vim and create the matchit documentation:
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
384 "
1123
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
385 " :helptags ~/.vim/doc
530
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
386 "
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
387 " Now you can do ":help matchit", and you should be able to use "%" on Ruby
1123
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
388 " keywords. Try ":echo b:match_words" to be sure.
530
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
389 "
1123
c4cd8ad60bee updated for version 7.1a
vimboss
parents: 867
diff changeset
390 " Thanks to Mark J. Reed for the instructions. See ":help vimrc" for the
530
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
391 " locations of plugin directories, etc., as there are several options, and it
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
392 " differs on Windows. Email gsinclair@soyabean.com.au if you need help.
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
393 "
339999b511a0 updated for version 7.0148
vimboss
parents: 7
diff changeset
394
1621
82b5078be2dd updated for version 7.2a
vimboss
parents: 1215
diff changeset
395 " vim: nowrap sw=2 sts=2 ts=8: