diff options
Diffstat (limited to 'runtime/indent/ruby.vim')
-rw-r--r-- | runtime/indent/ruby.vim | 53 |
1 files changed, 19 insertions, 34 deletions
diff --git a/runtime/indent/ruby.vim b/runtime/indent/ruby.vim index e5946ebc8..5d48a798c 100644 --- a/runtime/indent/ruby.vim +++ b/runtime/indent/ruby.vim @@ -1,16 +1,10 @@ " Vim indent file -" Language: Ruby -" Maintainer: Gavin Sinclair <gsinclair at soyabean.com.au> -" Developer: Nikolai Weibull <source at pcppopper.org> -" Info: $Id$ -" URL: http://vim-ruby.rubyforge.org/ -" Anon CVS: See above site -" Licence: GPL (http://www.gnu.org) -" Disclaimer: -" This program is distributed in the hope that it will be useful, -" but WITHOUT ANY WARRANTY; without even the implied warranty of -" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -" GNU General Public License for more details. +" Language: Ruby +" Maintainer: Gavin Sinclair <gsinclair at soyabean.com.au> +" Developer: Nikolai Weibull <source at pcppopper.org> +" Info: $Id$ +" URL: http://vim-ruby.rubyforge.org +" Anon CVS: See above site " ---------------------------------------------------------------------------- " 0. Initialization {{{1 @@ -42,17 +36,13 @@ set cpo&vim let s:syng_strcom = '\<ruby\%(String\|StringDelimiter\|ASCIICode' . \ '\|Interpolation\|NoInterpolation\|Escape\|Comment\|Documentation\)\>' -" Regex of syntax group names that are strings or comments. -let s:syng_strcom2 = '\<ruby\%(String' . - \ '\|Interpolation\|NoInterpolation\|Escape\|Comment\|Documentation\)\>' - " Regex of syntax group names that are strings. let s:syng_string = - \ '\<ruby\%(String\|Interpolation\|NoInterpolation\|Escape\)\>' + \ '\<ruby\%(String\|StringDelimiter\|Interpolation\|NoInterpolation\|Escape\)\>' " Regex of syntax group names that are strings or documentation. let s:syng_stringdoc = - \'\<ruby\%(String\|Interpolation\|NoInterpolation\|Escape\|Documentation\)\>' + \'\<ruby\%(String\|StringDelimiter\|Interpolation\|NoInterpolation\|Escape\|Documentation\)\>' " Expression used to check whether we should skip a match with searchpair(). let s:skip_expr = @@ -109,11 +99,6 @@ function s:IsInStringOrComment(lnum, col) return synIDattr(synID(a:lnum, a:col, 0), 'name') =~ s:syng_strcom endfunction -" Check if the character at lnum:col is inside a string or comment. -function s:IsInStringOrComment2(lnum, col) - return synIDattr(synID(a:lnum, a:col, 0), 'name') =~ s:syng_strcom2 -endfunction - " Check if the character at lnum:col is inside a string. function s:IsInString(lnum, col) return synIDattr(synID(a:lnum, a:col, 0), 'name') =~ s:syng_string @@ -134,14 +119,14 @@ function s:PrevNonBlankNonString(lnum) let line = getline(lnum) if line =~ '^=begin$' if in_block - let in_block = 0 + let in_block = 0 else - break + break endif elseif !in_block && line =~ '^=end$' let in_block = 1 elseif !in_block && line !~ '^\s*#.*$' && !(s:IsInStringOrComment(lnum, 1) - \ && s:IsInStringOrComment(lnum, strlen(line))) + \ && s:IsInStringOrComment(lnum, strlen(line))) break endif let lnum = prevnonblank(lnum - 1) @@ -160,7 +145,7 @@ function s:GetMSL(lnum) let line = getline(lnum) let col = match(line, s:continuation_regex2) + 1 if (col > 0 && !s:IsInStringOrComment(lnum, col)) - \ || s:IsInString(lnum, strlen(line)) + \ || s:IsInString(lnum, strlen(line)) let msl = lnum else break @@ -181,9 +166,9 @@ function s:LineHasOpeningBrackets(lnum) if !s:IsInStringOrComment(a:lnum, pos + 1) let idx = stridx('(){}[]', line[pos]) if idx % 2 == 0 - let open_{idx} = open_{idx} + 1 + let open_{idx} = open_{idx} + 1 else - let open_{idx - 1} = open_{idx - 1} - 1 + let open_{idx - 1} = open_{idx - 1} - 1 endif endif let pos = match(line, '[][(){}]', pos + 1) @@ -246,13 +231,13 @@ function GetRubyIndent() if s:Match(v:lnum, s:ruby_deindent_keywords) call cursor(v:lnum, 1) if searchpair(s:end_start_regex, s:end_middle_regex, s:end_end_regex, 'bW', - \ s:end_skip_expr) > 0 + \ s:end_skip_expr) > 0 let line = getline('.') if strpart(line, 0, col('.') - 1) =~ '=\s*$' && \ strpart(line, col('.') - 1, 2) !~ 'do' - let ind = virtcol('.') - 1 + let ind = virtcol('.') - 1 else - let ind = indent('.') + let ind = indent('.') endif endif return ind @@ -302,12 +287,12 @@ function GetRubyIndent() if col > 0 call cursor(lnum, col) if searchpair(s:end_start_regex, '', s:end_end_regex, 'bW', - \ s:end_skip_expr) > 0 + \ s:end_skip_expr) > 0 let n = line('.') let ind = indent('.') let msl = s:GetMSL(n) if msl != n - let ind = indent(msl) + let ind = indent(msl) end return ind endif |