Add an error check for correct formatting in Deflate uncompressed
[sgt/halibut] / misc / halibut.vim
index 6443471..49b2380 100644 (file)
@@ -3,7 +3,7 @@
 " Maintainer:  Jacob Nevins <jacobn+vim@chiark.greenend.org.uk>
 " URL:          http://www.chiark.greenend.org.uk/~sgtatham/halibut/
 " Filenames:    *.but
-" Version:      $Id: halibut.vim,v 1.6 2004/04/01 23:06:46 jtn Exp $
+" Version:      $Id: halibut.vim,v 1.12 2004/07/16 12:54:59 jacob Exp $
 
 " I've never been entirely comfortable with vim's syntax highlighting
 " facilities, so this may have all sorts of nasty loose ends, corner cases
 
 " Based on docs in Halibut CVS 2004-03-31
 
+" FIXME:
+"   - sync - last blank line, \quote, \lcont
+"   - add "display" etc for speed?
+
 " Rune from vim 6.1 help
 " For version 5.x: Clear all syntax items
 " For version 6.x: Quit when a syntax file was already loaded
@@ -35,7 +39,6 @@ syn match butIllegalChar "\\"
 " (matches current iscmd() in input.c; there are some oddballs which
 " don't fit this handled specially below)
 syn match butCmdGeneric "\\[A-Za-z0-9]\+" nextgroup=butTextArg
-" was: [A-Za-z0-9#]\+
 
 syn cluster butText contains=butLiteral,@butCmd,butTodo
 
@@ -57,7 +60,7 @@ syn region butQLEmph   matchgroup=butCmdSpecific start="\\e\_s\@=" matchgroup=NO
 syn match butQLEmphInv "\S\@=[^bi]" contained
 
 " Paragraph level comment -- might need to come before inline comment.
-syn region butCommentPara start="\\#\_s\@=" end="^\s*$" contains=butTodo
+syn region butCommentPara start="\\#" end="^\s*$" contains=butTodo
 
 " Inline comments -- nested braces are honoured.
 syn region butComment matchgroup=Comment start="\\#{" skip="\\}" end="}" contains=butCommentBrace,butTodo
@@ -72,8 +75,8 @@ syn match butCmdSpecific "\\U\_s\@=" nextgroup=butTextHeading
 " ...and overall title
 syn match butCmdSpecific "\\title\_s\@=" nextgroup=butTextHeading
 
-" Bulleted lists
-syn match butCmdSpecific "\\\(b\|n\|dd\)" nextgroup=butIdentArg
+" Bulleted lists -- arguments optional
+syn match butCmdSpecific "\\\(b\|n\|dd\)[^A-Za-z0-9]\@=" nextgroup=butIdentArg
 
 " Config
 syn match butCmdSpecific "\\cfg{\@=" nextgroup=butCfgArg
@@ -88,20 +91,21 @@ syn match butCmdSpecific "\\define{\@=" nextgroup=butIdentArg
 
 " Specific inline commands
 " (Some of these are defined out of paranoia about clashes with code quotes.)
+" Indexing -- invisible entries. (includes \I\c, \I\cw; \I\e left; no \q, \cq)
+syn match butCmdSpecific "\\I\(\\cw\|\\c\)\={\@=" nextgroup=butIndexArg
 " Formatting.
 syn match butCmdSpecific "\\e{\@=" nextgroup=butEmphArg
 syn match butCmdSpecific "\\c{\@=" nextgroup=butTextArg
 syn match butCmdSpecific "\\cw{\@=" nextgroup=butTextArg
+syn match butCmdSpecific "\\cq{\@=" nextgroup=butTextArg
 syn match butCmdSpecific "\\W{\@=" nextgroup=butHyperArg
-" Indexing -- invisible entries.
-syn match butCmdSpecific "\\I{\@=" nextgroup=butIndexArg
 " Xref commands
 syn match butCmdSpecific "\\[kK]{\@=" nextgroup=butIdentArg
 " Unicode literal -- a bit special.
-syn match butLiteral     "\\u\x*" nextgroup=butTextArg
+syn match butLiteral     "\\u\x\{,4}" nextgroup=butTextArg
 
 " Command cluster.
-syn cluster butCmd contains=butCmdGeneric,butCmdSpecific,ButComment
+syn cluster butCmd contains=butCmdGeneric,butCmdSpecific,butComment,butQuoteLit,butQLEmph,butCommentPara,butLiteral
 
 " Types of argument. XXX is this cluster still useful?
 syn cluster butArgument contains=butTextArg,butIdentArg,butEmphArgmbutCfgArg,butIdentArgH,butTextArgH