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