diff runtime/ftplugin/AppendMatchGroup.vim @ 391:289b19a6f2ed v7.0103

updated for version 7.0103
author vimboss
date Tue, 05 Jul 2005 21:48:14 +0000
parents bdeee1504ac1
children
line wrap: on
line diff
--- a/runtime/ftplugin/AppendMatchGroup.vim
+++ b/runtime/ftplugin/AppendMatchGroup.vim
@@ -1,125 +1,125 @@
-" Vim filetype plugin file utility
-" Language:    * (various)
-" Maintainer:  Dave Silvia <dsilvia@mchsi.com>
-" Date:        6/30/2004
-
-" The start of match (b:SOM) default is:
-"       '\<'
-" The end of match (b:EOM) default is:
-"       '\>'
-"
-" If you want to use some other start/end of match, just assign the
-" value to the b:SOM|EOM variable in your filetype script.
-"
-" SEE: :h pattern.txt
-"      :h pattern-searches
-"      :h regular-expression
-"      :h matchit
-
-let s:myName=expand("<sfile>:t")
-
-" matchit.vim not loaded -- don't do anyting
-if !exists("loaded_matchit")
-	echomsg s:myName.": matchit.vim not loaded -- finishing without loading"
-	finish
-endif
-
-" already been here -- don't redefine
-if exists("*AppendMatchGroup")
-	finish
-endif
-
-" Function To Build b:match_words
-" The following function, 'AppendMatchGroup', helps to increase
-" readability of your filetype script if you choose to use matchit.
-" It also precludes many construction errors, reducing the
-" construction to simply invoking the function with the match words.
-" As an example, let's take the ubiquitous if/then/else/endif type
-" of construct.  This is how the entry in your filetype script would look.
-"
-"     " source the AppendMatchGroup function file
-"     runtime ftplugin/AppendMatchGroup.vim
-"
-"     " fill b:match_words
-"     call AppendMatchGroup('if,then,else,endif')
-"
-" And the b:match_words constructed would look like:
-"
-"     \<if\>:\<then\>:\<else\>:\<endif\>
-" 
-" Use of AppendMatchGroup makes your filetype script is a little
-" less busy and a lot more readable.  Additionally, it
-" checks three critical things:
-"
-"      1)  Do you have at least 2 entries in your match group.
-"
-"      2)  Does the buffer variable 'b:match_words' exist?  if not, create it.
-"
-"      3)  If the buffer variable 'b:match_words' does exist, is the last
-"          character a ','?  If not, add it before appending.
-" 
-" You should now be able to match 'if/then/else/endif' in succession
-" in your source file, in just about any construction you may have
-" chosen for them.
-"
-" To add another group, simply call 'AppendMatchGroup again.  E.G.:
-"
-"      call AppendMatchGroup('while,do,endwhile')
-
-function AppendMatchGroup(mwordList)
-	let List=a:mwordList
-	let Comma=match(List,',')
-	if Comma == -1 || Comma == strlen(List)-1
-		echoerr "Must supply a comma separated list of at least 2 entries."
-		echoerr "Supplied list: <".List.">"
-		return
-	endif
-	let listEntryBegin=0
-	let listEntryEnd=Comma
-	let listEntry=strpart(List,listEntryBegin,listEntryEnd-listEntryBegin)
-	let List=strpart(List,Comma+1)
-	let Comma=match(List,',')
-	" if listEntry is all spaces || List is empty || List is all spaces
-	if (match(listEntry,'\s\+') == 0 && match(listEntry,'\S\+') == -1)
-			\ || List == '' || (match(List,'\s\+') == 0 && match(List,'\S\+') == -1)
-		echoerr "Can't use all spaces for an entry <".listEntry.">"
-		echoerr "Remaining supplied list: <".List.">"
-		return
-	endif
-
-	if !exists("b:SOM")
-		let b:SOM='\<'
-	endif
-	if !exists("b:EOM")
-		let b:EOM='\>'
-	endif
-	if !exists("b:match_words")
-		let b:match_words=''
-	endif
-	if b:match_words != '' && match(b:match_words,',$') == -1
-		let b:match_words=b:match_words.','
-	endif
-	" okay, all set add first entry in this list
-	let b:match_words=b:match_words.b:SOM.listEntry.b:EOM.':'
-	while Comma != -1
-		let listEntryEnd=Comma
-		let listEntry=strpart(List,listEntryBegin,listEntryEnd-listEntryBegin)
-		let List=strpart(List,Comma+1)
-		let Comma=match(List,',')
-		" if listEntry is all spaces
-		if match(listEntry,'\s\+') == 0 && match(listEntry,'\S\+') == -1
-			echoerr "Can't use all spaces for an entry <".listEntry."> - skipping"
-			echoerr "Remaining supplied list: <".List.">"
-			continue
-		endif
-		let b:match_words=b:match_words.b:SOM.listEntry.b:EOM.':'
-	endwhile
-	let listEntry=List
-	let b:match_words=b:match_words.b:SOM.listEntry.b:EOM
-endfunction
-
-" TODO:  Write a wrapper to handle multiple groups in one function call.
-"        Don't see a lot of utility in this as it would undoubtedly warrant
-"        continuation lines in the filetype script and it would be a toss
-"        up as to which is more readable: individual calls one to a line or
-"        a single call with continuation lines.  I vote for the former.
+" Vim filetype plugin file utility
+" Language:    * (various)
+" Maintainer:  Dave Silvia <dsilvia@mchsi.com>
+" Date:        6/30/2004
+
+" The start of match (b:SOM) default is:
+"       '\<'
+" The end of match (b:EOM) default is:
+"       '\>'
+"
+" If you want to use some other start/end of match, just assign the
+" value to the b:SOM|EOM variable in your filetype script.
+"
+" SEE: :h pattern.txt
+"      :h pattern-searches
+"      :h regular-expression
+"      :h matchit
+
+let s:myName=expand("<sfile>:t")
+
+" matchit.vim not loaded -- don't do anyting
+if !exists("loaded_matchit")
+	echomsg s:myName.": matchit.vim not loaded -- finishing without loading"
+	finish
+endif
+
+" already been here -- don't redefine
+if exists("*AppendMatchGroup")
+	finish
+endif
+
+" Function To Build b:match_words
+" The following function, 'AppendMatchGroup', helps to increase
+" readability of your filetype script if you choose to use matchit.
+" It also precludes many construction errors, reducing the
+" construction to simply invoking the function with the match words.
+" As an example, let's take the ubiquitous if/then/else/endif type
+" of construct.  This is how the entry in your filetype script would look.
+"
+"     " source the AppendMatchGroup function file
+"     runtime ftplugin/AppendMatchGroup.vim
+"
+"     " fill b:match_words
+"     call AppendMatchGroup('if,then,else,endif')
+"
+" And the b:match_words constructed would look like:
+"
+"     \<if\>:\<then\>:\<else\>:\<endif\>
+" 
+" Use of AppendMatchGroup makes your filetype script is a little
+" less busy and a lot more readable.  Additionally, it
+" checks three critical things:
+"
+"      1)  Do you have at least 2 entries in your match group.
+"
+"      2)  Does the buffer variable 'b:match_words' exist?  if not, create it.
+"
+"      3)  If the buffer variable 'b:match_words' does exist, is the last
+"          character a ','?  If not, add it before appending.
+" 
+" You should now be able to match 'if/then/else/endif' in succession
+" in your source file, in just about any construction you may have
+" chosen for them.
+"
+" To add another group, simply call 'AppendMatchGroup again.  E.G.:
+"
+"      call AppendMatchGroup('while,do,endwhile')
+
+function AppendMatchGroup(mwordList)
+	let List=a:mwordList
+	let Comma=match(List,',')
+	if Comma == -1 || Comma == strlen(List)-1
+		echoerr "Must supply a comma separated list of at least 2 entries."
+		echoerr "Supplied list: <".List.">"
+		return
+	endif
+	let listEntryBegin=0
+	let listEntryEnd=Comma
+	let listEntry=strpart(List,listEntryBegin,listEntryEnd-listEntryBegin)
+	let List=strpart(List,Comma+1)
+	let Comma=match(List,',')
+	" if listEntry is all spaces || List is empty || List is all spaces
+	if (match(listEntry,'\s\+') == 0 && match(listEntry,'\S\+') == -1)
+			\ || List == '' || (match(List,'\s\+') == 0 && match(List,'\S\+') == -1)
+		echoerr "Can't use all spaces for an entry <".listEntry.">"
+		echoerr "Remaining supplied list: <".List.">"
+		return
+	endif
+
+	if !exists("b:SOM")
+		let b:SOM='\<'
+	endif
+	if !exists("b:EOM")
+		let b:EOM='\>'
+	endif
+	if !exists("b:match_words")
+		let b:match_words=''
+	endif
+	if b:match_words != '' && match(b:match_words,',$') == -1
+		let b:match_words=b:match_words.','
+	endif
+	" okay, all set add first entry in this list
+	let b:match_words=b:match_words.b:SOM.listEntry.b:EOM.':'
+	while Comma != -1
+		let listEntryEnd=Comma
+		let listEntry=strpart(List,listEntryBegin,listEntryEnd-listEntryBegin)
+		let List=strpart(List,Comma+1)
+		let Comma=match(List,',')
+		" if listEntry is all spaces
+		if match(listEntry,'\s\+') == 0 && match(listEntry,'\S\+') == -1
+			echoerr "Can't use all spaces for an entry <".listEntry."> - skipping"
+			echoerr "Remaining supplied list: <".List.">"
+			continue
+		endif
+		let b:match_words=b:match_words.b:SOM.listEntry.b:EOM.':'
+	endwhile
+	let listEntry=List
+	let b:match_words=b:match_words.b:SOM.listEntry.b:EOM
+endfunction
+
+" TODO:  Write a wrapper to handle multiple groups in one function call.
+"        Don't see a lot of utility in this as it would undoubtedly warrant
+"        continuation lines in the filetype script and it would be a toss
+"        up as to which is more readable: individual calls one to a line or
+"        a single call with continuation lines.  I vote for the former.