Mercurial > hg > RemoteEditor > vim7
diff runtime/indent/rst.vim @ 48:67300faee616 v7-3-618
v7-3-618
author | Shinji KONO <kono@ie.u-ryukyu.ac.jp> |
---|---|
date | Wed, 01 Aug 2012 18:08:28 +0900 |
parents | 76efa0be13f1 |
children |
line wrap: on
line diff
--- a/runtime/indent/rst.vim Wed Aug 01 18:03:06 2012 +0900 +++ b/runtime/indent/rst.vim Wed Aug 01 18:08:28 2012 +0900 @@ -1,7 +1,7 @@ " Vim indent file " Language: reStructuredText Documentation Format " Maintainer: Nikolai Weibull <now@bitwi.se> -" Latest Revision: 2006-12-20 +" Latest Revision: 2011-08-03 if exists("b:did_indent") finish @@ -16,6 +16,9 @@ finish endif +let s:itemization_pattern = '^\s*[-*+]\s' +let s:enumeration_pattern = '^\s*\%(\d\+\|#\)\.\s\+' + function GetRSTIndent() let lnum = prevnonblank(v:lnum - 1) if lnum == 0 @@ -25,27 +28,30 @@ let ind = indent(lnum) let line = getline(lnum) - if line =~ '^\s*[-*+]\s' - let ind = ind + 2 - elseif line =~ '^\s*\d\+.\s' - let ind = ind + matchend(substitute(line, '^\s*', '', ''), '\d\+.\s\+') + if line =~ s:itemization_pattern + let ind += 2 + elseif line =~ s:enumeration_pattern + let ind += matchend(line, s:enumeration_pattern) endif let line = getline(v:lnum - 1) + " Indent :FIELD: lines. Don’t match if there is no text after the field or + " if the text ends with a sent-ender. + if line =~ '^:.\+:\s\{-1,\}\S.\+[^.!?:]$' + return matchend(line, '^:.\{-1,}:\s\+') + endif + if line =~ '^\s*$' execute lnum - call search('^\s*\%([-*+]\s\|\d\+.\s\|\.\.\|$\)', 'bW') + call search('^\s*\%([-*+]\s\|\%(\d\+\|#\)\.\s\|\.\.\|$\)', 'bW') let line = getline('.') - if line =~ '^\s*[-*+]' - let ind = ind - 2 - elseif line =~ '^\s*\d\+\.\s' - let ind = ind - matchend(substitute(line, '^\s*', '', ''), - \ '\d\+\.\s\+') + if line =~ s:itemization_pattern + let ind -= 2 + elseif line =~ s:enumeration_pattern + let ind -= matchend(line, s:enumeration_pattern) elseif line =~ '^\s*\.\.' - let ind = ind - 3 - else - let ind = ind + let ind -= 3 endif endif