summaryrefslogtreecommitdiff
path: root/runtime/indent/rst.vim
diff options
context:
space:
mode:
authorBram Moolenaar <Bram@vim.org>2011-09-14 17:55:08 +0200
committerBram Moolenaar <Bram@vim.org>2011-09-14 17:55:08 +0200
commit5302d9ebc1be723a25ff3dc62388305f6862749d (patch)
treedcd450a19d82d9eda33ba5fb9e1becd85f87a469 /runtime/indent/rst.vim
parentddab33232a81e713c2748fc3daab763f07dd76f1 (diff)
downloadvim-git-5302d9ebc1be723a25ff3dc62388305f6862749d.tar.gz
Updated runtime files.
Diffstat (limited to 'runtime/indent/rst.vim')
-rw-r--r--runtime/indent/rst.vim34
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