diff options
author | Bram Moolenaar <Bram@vim.org> | 2011-09-14 17:55:08 +0200 |
---|---|---|
committer | Bram Moolenaar <Bram@vim.org> | 2011-09-14 17:55:08 +0200 |
commit | 5302d9ebc1be723a25ff3dc62388305f6862749d (patch) | |
tree | dcd450a19d82d9eda33ba5fb9e1becd85f87a469 /runtime/indent/rst.vim | |
parent | ddab33232a81e713c2748fc3daab763f07dd76f1 (diff) | |
download | vim-git-5302d9ebc1be723a25ff3dc62388305f6862749d.tar.gz |
Updated runtime files.
Diffstat (limited to 'runtime/indent/rst.vim')
-rw-r--r-- | runtime/indent/rst.vim | 34 |
1 files changed, 20 insertions, 14 deletions
diff --git a/runtime/indent/rst.vim b/runtime/indent/rst.vim index f936c9b2f..80d3308fd 100644 --- a/runtime/indent/rst.vim +++ b/runtime/indent/rst.vim @@ -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 @@ if exists("*GetRSTIndent") 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 @@ function GetRSTIndent() 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 |