diff runtime/indent/dtd.vim @ 39:c16898406ff2

synchorinize version 7.3.081
author one@zeus.cr.ie.u-ryukyu.ac.jp
date Fri, 17 Dec 2010 17:43:06 +0900
parents db46d51a3939
children 67300faee616
line wrap: on
line diff
--- a/runtime/indent/dtd.vim	Wed Nov 26 18:20:31 2008 +0900
+++ b/runtime/indent/dtd.vim	Fri Dec 17 17:43:06 2010 +0900
@@ -1,7 +1,7 @@
 " Vim indent file
 " Language:	    DTD (Document Type Definition for XML)
 " Maintainer:       Nikolai Weibull <now@bitwi.se>
-" Latest Revision:  2008-07-18
+" Latest Revision:  2010-09-21
 
 let s:cpo_save = &cpo
 set cpo&vim
@@ -52,7 +52,7 @@
   let end = a:end
   let parentheses = [end - 1]
   while token != ""
-    let [token, end] = s:lex(a:line, end, '^\%([(),|]\|[A-Za-z0-9_-]\+\)[?*+]\=')
+    let [token, end] = s:lex(a:line, end, '^\%([(),|]\|[A-Za-z0-9_-]\+\|#PCDATA\|%[A-Za-z0-9_-]\+;\)[?*+]\=')
     if token[0] == '('
       call add(parentheses, end - 1)
     elseif token[0] == ')'
@@ -80,7 +80,7 @@
   let lnum = line('.')
   let col = col('.')
   let indent = indent('.')
-  let line = join(getline(lnum, v:lnum - 1), "\n")
+  let line = lnum == v:lnum ? getline(lnum) : join(getline(lnum, v:lnum - 1), "\n")
 
   let [declaration, end] = s:lex1(line, col)
   if declaration == ""
@@ -106,7 +106,7 @@
     " Check for token following element name.  This can be a specification of
     " whether the start or end tag may be omitted.  If nothing is found, indent
     " one level.
-    let [token, end] = s:lex(line, end)
+    let [token, end] = s:lex(line, end, '^\%([-O(]\|ANY\|EMPTY\)')
     let n = 0
     while token =~ '[-O]' && n < 2
       let [token, end] = s:lex(line, end, '^\%([-O(]\|ANY\|EMPTY\)')
@@ -214,8 +214,7 @@
 
       " Finally look for the attribute’s default value.  If non exists, indent
       " two levels.
-      " TODO: Do validation of keywords (#REQUIRED|#IMPLIED)?
-      let [default, end] = s:lex(line, end, '^\%("\_[^"]*"\|[^[:space:]]\+\)')
+      let [default, end] = s:lex(line, end, '^\%("\_[^"]*"\|#\(REQUIRED\|IMPLIED\|FIXED\)\)')
       if default == ""
         return indent + &sw * 2
       elseif default == '#FIXED'