Sophie

Sophie

distrib > * > 2008.0 > x86_64 > by-pkgid > c6d8198fd3a861c932152544cde921fd > files > 5

vile-9.5r-1mdv2008.0.src.rpm

# vile 9.5b - patch 2005/10/2 - Thomas Dickey <dickey@invisible-island.net>
# ------------------------------------------------------------------------------
# CHANGES            |   34 ++++++
# MANIFEST           |    2 
# bind.c             |    8 -
# buffer.c           |    9 +
# config.guess       |   52 +--------
# config.sub         |   26 ++--
# exec.c             |    4 
# file.c             |   11 +-
# filters/filters.c  |   13 +-
# filters/lex-filt.l |  267 ++++++++++++++++++++++++++++++++++++++++++++++-----
# filters/lex.key    |   16 ++-
# filters/mailfilt.l |    6 -
# filters/vb.key     |    3 
# input.c            |    3 
# makefile.icc       |    6 -
# ntconio.c          |    7 +
# ntwinio.c          |    7 +
# os2keys.h          |   34 ++++++
# os2vio.c           |   31 ++++-
# patchlev.h         |    2 
# proto.h            |    3 
# revlist            |   46 ++++----
# vile-9.5.spec      |    9 +
# 23 files changed, 458 insertions(+), 141 deletions(-)
# ------------------------------------------------------------------------------
Index: CHANGES
--- vile-9.5a+/CHANGES	2005-09-05 00:34:38.000000000 +0000
+++ vile-9.5b/CHANGES	2005-10-03 00:13:03.000000000 +0000
@@ -1,5 +1,39 @@
 Changes for vile 9.6 (released ??? ??? ?? ????)
 
+ 20051002 (b)
+	> Tom Dickey:
+	+ update config.guess, config.sub
+	+ improve os2vio.c, adding a check to distinguish between fullscreen
+	  and VIO to allow using bright background colors in the latter (report
+	  by George Eccles).
+	+ add KEY_xxx definitions to OS/2 and Win32 drivers, defining up to
+	  KEY_F35 for the former and KEY_F24 for the latter (report by George
+	  Eccles).
+	+ several improvements and fixes to lex-filt.l
+	  + expressions for regular expression parsing are more complete, which
+	    allows separating patterns from state lists.  That allows some
+	    error-checking in the rules section to flag spurious whitespace
+	    after a regular expression.  The more-complete regular expressions
+	    make the parser much larger (about 5 times the original size).
+	    A rewrite in C might be shorter.
+	  + ignore case of "%s" vs "%S" or "%state", etc.
+	  + parse the pattern names, applying highlighting to the names where
+	    they are embedded in regular expressions.
+	  + parse the "%s" (state) lists, applying highlighting to the states.
+	  + handle flex's <<EOF>> token.
+	  + handle character classes in the RANGE pattern.
+	+ remove an update() call from the logic in input.c which decodes
+	  hex/octal input after a ^V.  That caused the screen to move the view
+	  according to the address in the command, e.g.,
+		:%s/^Vx12
+	  would scroll to the bottom on entry of the "x" (report by Daniel L
+	  Ashbrook).
+	+ correct behavior of set-dos command, which did not recompute the
+	  buffer-size.
+	+ make end-of-token test for store-proc consistent with bind-key,
+	  i.e., alphanumerics and hyphen.  Amend that test to allow underscore
+	  (report by George Eccles).
+
  20050905 (a)
 	> Tom Dickey:
 	+ review/improve vl-filt.l based on Verilog LRM draft
Index: MANIFEST
--- vile-9.5a+/MANIFEST	2005-09-05 22:19:13.000000000 +0000
+++ vile-9.5b/MANIFEST	2005-10-03 00:22:06.000000000 +0000
@@ -1,4 +1,4 @@
-MANIFEST for vile, version v9_5a
+MANIFEST for vile, version v9_5b
 --------------------------------------------------------------------------------
 MANIFEST                        this file
 CHANGES                         Change-log for VILE
Index: bind.c
Prereq:  1.284 
--- vile-9.5a+/bind.c	2005-07-13 23:25:16.000000000 +0000
+++ vile-9.5b/bind.c	2005-10-02 21:15:05.000000000 +0000
@@ -3,7 +3,7 @@
  *
  *	written 11-feb-86 by Daniel Lawrence
  *
- * $Header: /usr/build/vile/vile/RCS/bind.c,v 1.284 2005/07/13 23:25:16 tom Exp $
+ * $Header: /usr/build/vile/vile/RCS/bind.c,v 1.285 2005/09/22 22:05:18 tom Exp $
  *
  */
 
@@ -871,12 +871,12 @@
 	{ KEY_F27,	   "KEY_F27" },
 	{ KEY_F28,	   "KEY_F28" },
 	{ KEY_F29,	   "KEY_F29" },
+	{ KEY_F30,	   "KEY_F30" },
 	{ KEY_F31,	   "KEY_F31" },
 	{ KEY_F32,	   "KEY_F32" },
 	{ KEY_F33,	   "KEY_F33" },
 	{ KEY_F34,	   "KEY_F34" },
 	{ KEY_F35,	   "KEY_F35" },
-	{ KEY_F30,	   "KEY_F30" },
 	{ 0,		   0 },
 	{ KEY_KP_F1,	   "KEY_KP_F1" },
 	{ KEY_KP_F2,	   "KEY_KP_F2" },
@@ -2796,9 +2796,9 @@
  *	so it can be picked up by the commands argument getter later.
  */
 
-#define ismostpunct(c) (isPunct(c) && (c) != '-')
+#define ismostpunct(c) (isPunct(c) && (c) != '-' && (c) != '_')
 
-static int
+int
 eol_command(const char *buffer, unsigned cpos, int c, int eolchar)
 {
     /*
Index: buffer.c
Prereq:  1.294 
--- vile-9.5a+/buffer.c	2005-07-17 14:56:19.000000000 +0000
+++ vile-9.5b/buffer.c	2005-09-26 22:50:14.000000000 +0000
@@ -5,7 +5,7 @@
  * keys. Like everyone else, they set hints
  * for the display system.
  *
- * $Header: /usr/build/vile/vile/RCS/buffer.c,v 1.294 2005/07/17 14:56:19 tom Exp $
+ * $Header: /usr/build/vile/vile/RCS/buffer.c,v 1.296 2005/09/26 22:50:14 tom Exp $
  *
  */
 
@@ -2532,6 +2532,13 @@
 
 	bp->b_bytecount = numchars;
 	bp->b_linecount = numlines;
+
+	TRACE(("bsizes %s %s %d lines, %lu bytes\n",
+	       bp->b_bname,
+	       b_val(bp, MDDOS) ? "dos" : "unix",
+	       numlines,
+	       (unsigned long) numchars));
+
 	b_set_counted(bp);
 	code = TRUE;
     }
Index: config.guess
--- vile-9.5a+/config.guess	2005-06-25 18:48:45.000000000 +0000
+++ vile-9.5b/config.guess	2005-09-24 19:51:40.000000000 +0000
@@ -3,7 +3,7 @@
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
 #   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
 
-timestamp='2005-05-27'
+timestamp='2005-09-19'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -125,7 +125,7 @@
 	;;
  ,,*)   CC_FOR_BUILD=$CC ;;
  ,*,*)  CC_FOR_BUILD=$HOST_CC ;;
-esac ;'
+esac ; set_cc_for_build= ;'
 
 # This is needed to find uname on a Pyramid OSx when run in the BSD universe.
 # (ghazi@noc.rutgers.edu 1994-08-24)
@@ -199,44 +199,9 @@
 	# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM is used.
 	echo "${machine}-${os}${release}"
 	exit ;;
-    amd64:OpenBSD:*:*)
-	echo x86_64-unknown-openbsd${UNAME_RELEASE}
-	exit ;;
-    amiga:OpenBSD:*:*)
-	echo m68k-unknown-openbsd${UNAME_RELEASE}
-	exit ;;
-    cats:OpenBSD:*:*)
-	echo arm-unknown-openbsd${UNAME_RELEASE}
-	exit ;;
-    hp300:OpenBSD:*:*)
-	echo m68k-unknown-openbsd${UNAME_RELEASE}
-	exit ;;
-    luna88k:OpenBSD:*:*)
-    	echo m88k-unknown-openbsd${UNAME_RELEASE}
-	exit ;;
-    mac68k:OpenBSD:*:*)
-	echo m68k-unknown-openbsd${UNAME_RELEASE}
-	exit ;;
-    macppc:OpenBSD:*:*)
-	echo powerpc-unknown-openbsd${UNAME_RELEASE}
-	exit ;;
-    mvme68k:OpenBSD:*:*)
-	echo m68k-unknown-openbsd${UNAME_RELEASE}
-	exit ;;
-    mvme88k:OpenBSD:*:*)
-	echo m88k-unknown-openbsd${UNAME_RELEASE}
-	exit ;;
-    mvmeppc:OpenBSD:*:*)
-	echo powerpc-unknown-openbsd${UNAME_RELEASE}
-	exit ;;
-    sgi:OpenBSD:*:*)
-	echo mips64-unknown-openbsd${UNAME_RELEASE}
-	exit ;;
-    sun3:OpenBSD:*:*)
-	echo m68k-unknown-openbsd${UNAME_RELEASE}
-	exit ;;
     *:OpenBSD:*:*)
-	echo ${UNAME_MACHINE}-unknown-openbsd${UNAME_RELEASE}
+	UNAME_MACHINE_ARCH=`arch | sed 's/OpenBSD.//'`
+	echo ${UNAME_MACHINE_ARCH}-unknown-openbsd${UNAME_RELEASE}
 	exit ;;
     *:ekkoBSD:*:*)
 	echo ${UNAME_MACHINE}-unknown-ekkobsd${UNAME_RELEASE}
@@ -658,8 +623,7 @@
 	esac
 	if [ ${HP_ARCH} = "hppa2.0w" ]
 	then
-	    # avoid double evaluation of $set_cc_for_build
-	    test -n "$CC_FOR_BUILD" || eval $set_cc_for_build
+	    eval $set_cc_for_build
 
 	    # hppa2.0w-hp-hpux* has a 64-bit kernel and a compiler generating
 	    # 32-bit code.  hppa64-hp-hpux* has the same kernel and a compiler
@@ -830,7 +794,7 @@
     i*:UWIN*:*)
 	echo ${UNAME_MACHINE}-pc-uwin
 	exit ;;
-    amd64:CYGWIN*:*:*)
+    amd64:CYGWIN*:*:* | x86_64:CYGWIN*:*:*)
 	echo x86_64-unknown-cygwin
 	exit ;;
     p*:CYGWIN*:*)
@@ -909,6 +873,9 @@
 	eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep ^CPU=`
 	test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
 	;;
+    or32:Linux:*:*)
+	echo or32-unknown-linux-gnu
+	exit ;;
     ppc:Linux:*:*)
 	echo powerpc-unknown-linux-gnu
 	exit ;;
@@ -1218,7 +1185,6 @@
     *:Darwin:*:*)
 	UNAME_PROCESSOR=`uname -p` || UNAME_PROCESSOR=unknown
 	case $UNAME_PROCESSOR in
-	    *86) UNAME_PROCESSOR=i686 ;;
 	    unknown) UNAME_PROCESSOR=powerpc ;;
 	esac
 	echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
Index: config.sub
--- vile-9.5a+/config.sub	2005-06-25 18:49:00.000000000 +0000
+++ vile-9.5b/config.sub	2005-09-24 19:51:26.000000000 +0000
@@ -3,7 +3,7 @@
 #   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
 #   2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
 
-timestamp='2005-06-02'
+timestamp='2005-07-08'
 
 # This file is (in principle) common to ALL GNU software.
 # The presence of a machine in this file suggests that SOME GNU software
@@ -248,6 +248,7 @@
 	| mips64vr4100 | mips64vr4100el \
 	| mips64vr4300 | mips64vr4300el \
 	| mips64vr5000 | mips64vr5000el \
+	| mips64vr5900 | mips64vr5900el \
 	| mipsisa32 | mipsisa32el \
 	| mipsisa32r2 | mipsisa32r2el \
 	| mipsisa64 | mipsisa64el \
@@ -259,11 +260,11 @@
 	| ms1 \
 	| msp430 \
 	| ns16k | ns32k \
-	| openrisc | or32 \
+	| or32 \
 	| pdp10 | pdp11 | pj | pjl \
 	| powerpc | powerpc64 | powerpc64le | powerpcle | ppcbe \
 	| pyramid \
-	| sh | sh[1234] | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
+	| sh | sh[1234] | sh[24]a | sh[23]e | sh[34]eb | shbe | shle | sh[1234]le | sh3ele \
 	| sh64 | sh64le \
 	| sparc | sparc64 | sparc64b | sparc86x | sparclet | sparclite \
 	| sparcv8 | sparcv9 | sparcv9b \
@@ -326,6 +327,7 @@
 	| mips64vr4100-* | mips64vr4100el-* \
 	| mips64vr4300-* | mips64vr4300el-* \
 	| mips64vr5000-* | mips64vr5000el-* \
+	| mips64vr5900-* | mips64vr5900el-* \
 	| mipsisa32-* | mipsisa32el-* \
 	| mipsisa32r2-* | mipsisa32r2el-* \
 	| mipsisa64-* | mipsisa64el-* \
@@ -342,7 +344,7 @@
 	| powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* | ppcbe-* \
 	| pyramid-* \
 	| romp-* | rs6000-* \
-	| sh-* | sh[1234]-* | sh[23]e-* | sh[34]eb-* | shbe-* \
+	| sh-* | sh[1234]-* | sh[24]a-* | sh[23]e-* | sh[34]eb-* | shbe-* \
 	| shle-* | sh[1234]le-* | sh3ele-* | sh64-* | sh64le-* \
 	| sparc-* | sparc64-* | sparc64b-* | sparc86x-* | sparclet-* \
 	| sparclite-* \
@@ -769,9 +771,8 @@
 		basic_machine=hppa1.1-oki
 		os=-proelf
 		;;
-	or32 | or32-*)
+	openrisc | openrisc-*)
 		basic_machine=or32-unknown
-		os=-coff
 		;;
 	os400)
 		basic_machine=powerpc-ibm
@@ -1097,12 +1098,9 @@
 	we32k)
 		basic_machine=we32k-att
 		;;
-	sh3 | sh4 | sh[34]eb | sh[1234]le | sh[23]ele)
+	sh[1234] | sh[24]a | sh[34]eb | sh[1234]le | sh[23]ele)
 		basic_machine=sh-unknown
 		;;
-	sh64)
-		basic_machine=sh64-unknown
-		;;
 	sparc | sparcv8 | sparcv9 | sparcv9b)
 		basic_machine=sparc-sun
 		;;
@@ -1189,7 +1187,8 @@
 	      | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
 	      | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
 	      | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
-	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* | -skyos*)
+	      | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
+	      | -skyos* | -haiku*)
 	# Remember, each alternative MUST END IN *, to match a version number.
 		;;
 	-qnx*)
@@ -1207,7 +1206,7 @@
 		os=`echo $os | sed -e 's|nto|nto-qnx|'`
 		;;
 	-sim | -es1800* | -hms* | -xray | -os68k* | -none* | -v88r* \
-	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* \
+	      | -windows* | -osx | -abug | -netware* | -os9* | -beos* | -haiku* \
 	      | -macos* | -mpw* | -magic* | -mmixware* | -mon960* | -lnews*)
 		;;
 	-mac*)
@@ -1396,6 +1395,9 @@
 	*-be)
 		os=-beos
 		;;
+	*-haiku)
+		os=-haiku
+		;;
 	*-ibm)
 		os=-aix
 		;;
Index: exec.c
Prereq:  1.279 
--- vile-9.5a+/exec.c	2005-07-17 18:00:32.000000000 +0000
+++ vile-9.5b/exec.c	2005-09-22 22:05:19.000000000 +0000
@@ -4,7 +4,7 @@
  *	original by Daniel Lawrence, but
  *	much modified since then.  assign no blame to him.  -pgf
  *
- * $Header: /usr/build/vile/vile/RCS/exec.c,v 1.279 2005/07/17 18:00:32 tom Exp $
+ * $Header: /usr/build/vile/vile/RCS/exec.c,v 1.280 2005/09/22 22:05:19 tom Exp $
  *
  */
 
@@ -1419,7 +1419,7 @@
     /* get the name of the procedure */
     tb_scopy(&name, "");
     if ((status = kbd_reply("Procedure name: ", &name,
-			    eol_history, ' ', KBD_NORMAL, no_completion)) != TRUE)
+			    eol_command, ' ', KBD_NORMAL, no_completion)) != TRUE)
 	return status;
 
     return setup_macro_buffer(name, -1);
Index: file.c
Prereq:  1.385 
--- vile-9.5a+/file.c	2005-09-04 18:09:22.000000000 +0000
+++ vile-9.5b/file.c	2005-09-22 23:19:30.000000000 +0000
@@ -5,7 +5,7 @@
  * reading and writing of the disk are
  * in "fileio.c".
  *
- * $Header: /usr/build/vile/vile/RCS/file.c,v 1.385 2005/09/04 18:09:22 tom Exp $
+ * $Header: /usr/build/vile/vile/RCS/file.c,v 1.386 2005/09/22 23:19:30 tom Exp $
  */
 
 #include "estruct.h"
@@ -1200,10 +1200,17 @@
 static int
 modified_record_sep(RECORD_SEP record_sep)
 {
+    TRACE((T_CALLED "modified_record_sep(%s)\n",
+	   choice_to_name(fsm_recordsep_choices, record_sep)));
+
     explicit_dosmode(curbp, record_sep);
     guess_dosmode(curbp);
     explicit_dosmode(curbp, record_sep);	/* ignore the guess - only want to strip CR's */
-    return TRUE;
+
+    b_clr_counted(curbp);
+    bsizes(curbp);
+
+    returnCode(TRUE);
 }
 
 /*
Index: filters/filters.c
Prereq:  1.98 
--- vile-9.5a+/filters/filters.c	2005-03-13 18:00:39.000000000 +0000
+++ vile-9.5b/filters/filters.c	2005-09-30 00:59:45.000000000 +0000
@@ -1,7 +1,7 @@
 /*
  * Common utility functions for vile syntax/highlighter programs
  *
- * $Header: /usr/build/vile/vile/filters/RCS/filters.c,v 1.98 2005/03/13 18:00:39 tom Exp $
+ * $Header: /usr/build/vile/vile/filters/RCS/filters.c,v 1.99 2005/09/30 00:59:45 tom Exp $
  *
  */
 
@@ -403,9 +403,14 @@
 {
     char *save = flt_bfr_attr;
 
-    flt_bfr_finish();
-    flt_puts(text, length, attr);
-    flt_bfr_attr = save;
+    if ((save == 0 && attr == 0) ||
+	(save != 0 && attr != 0 && !strcmp(save, attr))) {
+	flt_bfr_append(text, length);
+    } else {
+	flt_bfr_finish();
+	flt_puts(text, length, attr);
+	flt_bfr_attr = save;
+    }
 }
 
 void
Index: filters/lex-filt.l
Prereq:  1.26 
--- vile-9.5a+/filters/lex-filt.l	2005-09-03 15:04:26.000000000 +0000
+++ vile-9.5b/filters/lex-filt.l	2005-10-01 00:29:52.000000000 +0000
@@ -1,8 +1,8 @@
-%s RULES RULE1 RULEX ACTIONS ACTION2 ACTION3 CODE COMMENT
+%s RULES RULE1 RULEX RULER STATES ACTIONS ACTION1 ACTION2 ACTION3 CODE COMMENT
 
 %{
 /*
- * $Header: /usr/build/vile/vile/filters/RCS/lex-filt.l,v 1.26 2005/09/03 15:04:26 tom Exp $
+ * $Header: /usr/build/vile/vile/filters/RCS/lex-filt.l,v 1.41 2005/10/01 00:29:52 tom Exp $
  *
  * Filter to add vile "attribution" sequences to selected bits of LEX program.
  */
@@ -12,68 +12,124 @@
 
 DefineFilter("lex");
 
+#define NAME_LEX_PATTERN "LexPattern"
+#define NAME_LEX_SECTION "LexSection"
+#define NAME_LEX_STATES  "LexStates"
+
 static char *Comment_attr;
+static char *Error_attr;
 static char *Ident_attr;
 static char *Keyword_attr;
 static char *Number_attr;
 static char *Preproc_attr;
 static char *String_attr;
 
+static char *Pattern_attr;
+static char *Section_attr;
+static char *States_attr;
+
 static int section = 0;
 static int nesting = 0;
 
 static void set_rules(void);
 static void set_state(void);
+static void write_patterns(char *text, int len);
 static void write_states(char *text, int len);
 
 %}
 
 SPACE		[[:blank:]]
 
-DIRECTIVE	^%[^[:blank:]]
-
 IDENT		[[:alpha:]_][[:alnum:]_]*
 
+DIRECTIVE	^%([{}%]|{IDENT})
+
 INTEGER		[-+]?([[:digit:]]+)
 
 SSTRING		\'(\\.|[^'\\])*\'
 DSTRING		\"(\\.|[^"\\])*\"
 STRINGS		({SSTRING}|{DSTRING})
 
-QUOTED		\"([^"\r\n]|\\\")+\"
-RANGE		"["([^\n\r\[\]]|\\\[|\\\])*"]"
-PATTERN		(\\.|{RANGE}|[^ \t\n])+
+ESCAPED		(\\[^\n\r])
+
+UNQUOTED0	([^{}"\\[\][:space:]<>])
+UNQUOTED1	([^{}"\\[\][:space:]])
+
+QUOTED		(\"([^"\\\r\n]|{ESCAPED})*\")
+
+CCLASS		("[:"{IDENT}":]")
+
+RANGE0		(\^[^\n\r])
+RANGE1		([^\n\r\]]|{CCLASS}|{ESCAPED})
+RANGE		("["{RANGE0}?{RANGE1}*"]")
+
+LIMITED		([[:digit:]]+(,[[:digit:]]+)*)
+BRACED		("{"({IDENT}|{LIMITED}+)"}")
+
+PATTERN0	({ESCAPED}|{BRACED}|{QUOTED}|{RANGE}|{UNQUOTED0})
+PATTERN1	({ESCAPED}|{BRACED}|{QUOTED}|{RANGE}|{UNQUOTED1})
+PATTERN		(({PATTERN0}|"("{PATTERN1}")")+|"<<EOF>>")
+PATTERNS	(({PATTERN0}|{PATTERN1}|"("{PATTERN1}")")+|"<<EOF>>")
+
 STATES		("<"({IDENT}|\,)+">")
-MATCH		{STATES}?{PATTERN}
 
 %%
 
 <INITIAL,RULES,ACTIONS,CODE>{DIRECTIVE}	{
-		    WriteToken(Keyword_attr);
+		    WriteToken(Section_attr);
 		    switch(yytext[1]) {
 		    case '%':
-		    	section++;
+			section++;
 			set_state();
 			break;
 		    case '{':
-		    	new_state(CODE);
+			new_state(CODE);
 			break;
 		    case '}':
 			set_state();
 			break;
+		    case 'S': /* FALLTHRU */
+		    case 's': /* FALLTHRU */
+		    case 'X': /* FALLTHRU */
+		    case 'x':
+			new_state(STATES);
+			break;
 		    default:
 			break;
 		    }
 		}
 
-<RULES>^{IDENT}		{ WriteToken(Ident_attr); new_state(RULE1); }
+<STATES>{IDENT}		{ insert_keyword(yytext, States_attr, 0);
+			  WriteToken(keyword_attr(yytext)); }
+<STATES>{SPACE}		{ ECHO; }
+<STATES>[^\n[:blank:]]	{ WriteToken(Error_attr); }
+<STATES>[\n]		{ ECHO; set_state(); }
+
+<RULES>^{IDENT}		{
+			  if (set_symbol_table(NAME_LEX_PATTERN)) {
+			      insert_keyword(yytext, Pattern_attr, 0);
+			      WriteToken(keyword_attr(yytext));
+			      set_symbol_table(filter_def.filter_name);
+			  } else {
+			      WriteToken(Ident_attr);
+			  }
+			  new_state(RULE1);
+			}
 <RULE1>{SPACE}+		{ ECHO; new_state(RULEX); }
-<RULEX>.*		{ WriteToken(String_attr); new_state(RULES); }
-
-<ACTIONS>^{MATCH}	{ write_states(yytext, yyleng); new_state(ACTION2); }
+<RULEX>{PATTERNS}	{ write_patterns(yytext, yyleng); new_state(RULER); }
+<RULER>[^\n]*		{ WriteToken(Error_attr); }
+<RULER>[\n]		{ ECHO; new_state(RULES); }
+
+<ACTIONS>^{STATES}?	{ write_states(yytext, yyleng); new_state(ACTION1); }
+<ACTIONS>^{PATTERN}	{ write_patterns(yytext, yyleng); new_state(ACTION2); }
+<ACTION1>{PATTERN}?	{ write_patterns(yytext, yyleng); new_state(ACTION2); }
+<ACTION1>[\n]		{ ECHO; new_state(ACTIONS); }
+<ACTION1>{SPACE}+	{ ECHO; new_state(ACTION3); }
+<ACTION2>[\n]		{ ECHO; new_state(ACTIONS); }
 <ACTION2>{SPACE}+	{ ECHO; new_state(ACTION3); }
 <ACTION3>\{		{ ECHO; nesting = 1; new_state(CODE); }
-<ACTION3>[^\{].*$	{ ECHO; new_state(ACTIONS); }
+<ACTION3>[^\{/\n].*$	{ ECHO; }
+<ACTION3>[\n]		{ ECHO; new_state(ACTIONS); }
 
 <CODE>{IDENT}		{ WriteToken(keyword_attr(yytext)); }
 <CODE>{STRINGS}		{ WriteToken(String_attr); }
@@ -81,7 +137,8 @@
 <CODE>\{		{ ECHO; nesting++; }
 <CODE>\}		{ ECHO; if (--nesting <= 0) { nesting = 0; set_rules(); } }
 
-<CODE,RULES>"/*"	{ PushQuote(COMMENT, Comment_attr); }
+<ACTION3,CODE,RULES>"//"[^\n]*	{ WriteToken(Comment_attr); }
+<ACTION3,CODE,RULES>"/*"	{ PushQuote(COMMENT, Comment_attr); }
 <COMMENT>[^*]*		{ flt_bfr_append(yytext, yyleng); }
 <COMMENT>"*"+[^*/]*	{ flt_bfr_append(yytext, yyleng); }
 <COMMENT>"*"+"/"	{ PopQuote(); }
@@ -109,23 +166,169 @@
 	set_state();
 }
 
-/* For some reason, I cannot get flex to yield the substrings for <STATES>
- * and {PATTERN}, so I merged the two in the actions and split them here.
+static void
+write_1state(char *text, int len)
+{
+    char *attr = keyword_attr(text);
+    if (attr == 0)
+	attr = Error_attr;
+    flt_bfr_embed(text, len, attr);
+}
+
+/*
+ * FIXME: do this with lex states
  */
 static void
 write_states(char *text, int len)
 {
     int n;
+    char *next;
+    char *last;
+
     if (text[0] == '<') {	/* only happens if we have {STATES} */
-	char *next = strchr(text, '>');
-	if (next != 0) {	/* ...or is confused with a {PATTERN} */
-	    n = 1 + next - text;
-	    flt_puts(text, n, Keyword_attr);
+	flt_bfr_begin(Keyword_attr);
+	flt_bfr_append(text, 1);
+	++text;
+	--len;
+
+	if ((last = strchr(text, '>')) != 0)
+	    *last = 0;
+
+	while ((next = strchr(text, ',')) != 0) {
+	    *next = 0;
+	    write_1state(text, next - text);
+	    *next = ',';
+	    len -= (next - text);
+	    text = next;
+
+	    flt_bfr_append(text, 1);
+	    ++text;
+	    --len;
+	}
+	if (last != 0) {	/* ...or is confused with a {PATTERN} */
+	    n = 1 + last - text;
+	    write_1state(text, n - 1);
+	    *last = '>';
+	    flt_bfr_append(last, 1);
 	    text += n;
 	    len -= n;
 	}
+	flt_bfr_finish();
     }
-    flt_puts(text, len, String_attr);
+}
+
+static int
+ok_to_embed(char *text, int first, int last, int value)
+{
+    return (value != first
+    	 && value < last
+	 && text[value] == R_CURLY)
+	     ? (value + 1)
+	     : -1;
+}
+
+static int
+parse_ident(char *text, int first, int last)
+{
+    int n;
+    for (n = first; n < last; ++n) {
+	int ch = CharOf(text[n]);
+	int ok;
+	if (n == first) {
+	    ok = isalpha(ch);
+	} else {
+	    ok = isalnum(ch) || (ch == '_');
+	}
+	if (!ok)
+	    break;
+    }
+    return ok_to_embed(text, first, last, n);
+}
+
+static int
+parse_limits(char *text, int first, int last)
+{
+    int n;
+    for (n = first; n < last; ++n) {
+	int ch = CharOf(text[n]);
+	int ok;
+	if (n == first) {
+	    ok = isdigit(ch);
+	} else {
+	    ok = isdigit(ch) || (ch == ',');
+	}
+	if (!ok)
+	    break;
+    }
+    return ok_to_embed(text, first, last, n);
+}
+
+/*
+ * FIXME: do this with lex states
+ */
+static void
+write_patterns(char *text, int len)
+{
+    char *attr;
+    int quoted = 0;
+    int escape = 0;
+    int ranges = 0;
+    int first, last, next;
+
+    set_symbol_table(NAME_LEX_PATTERN);
+
+    flt_bfr_begin(String_attr);
+    for (first = last = 0; last < len; ++last) {
+	int ch = CharOf(text[last]);
+
+	if (escape) {
+	    escape = 0;
+	} else if (quoted) {
+	    if (ch == DQUOTE)
+		quoted = 0;
+	} else if (ranges) {
+	    if (ch == L_BLOCK) {
+		++ranges;
+	    } else if (ch == R_BLOCK) {
+		--ranges;
+	    }
+	} else {
+	    if (ch == '\\') {
+		escape = 1;
+	    } else if (ch == DQUOTE) {
+		quoted = 1;
+	    } else if (ch == L_BLOCK) {
+		ranges = 1;
+	    } else if (ch == L_CURLY) {
+		flt_bfr_append(text + first, last - first);
+		if ((next = parse_ident(text, last + 1, len)) > 0) {
+		    int save = text[next - 1];
+		    text[next - 1] = 0;
+		    /*
+		     * flex accepts forward-references to names, but this
+		     * is a one-pass highlighter and cannot tell if a failure
+		     * is a forward reference.  But show an error anyway since
+		     * it is more likely to be useful.
+		     */
+		    if ((attr = keyword_attr(text + last + 1)) == 0)
+			attr = Error_attr;
+		    text[next - 1] = save;
+		    flt_bfr_embed(text + last, next - last, attr);
+		    first = next;
+		} else if ((next = parse_limits(text, last + 1, len)) >= 0) {
+		    flt_bfr_embed(text + last, next - last, Number_attr);
+		    first = next;
+		} else {
+		    flt_bfr_embed(text + last, len - last, Error_attr);
+		    break;
+		}
+	    }
+	}
+    }
+    flt_bfr_append(text + first, len - first);
+    flt_bfr_finish();
+
+    set_symbol_table(filter_def.filter_name);
 }
 
 static void
@@ -137,15 +340,31 @@
 do_filter(FILE *inputs)
 {
     yyin = inputs;
+
     section = 0;
     nesting = 0;
+
     Comment_attr = class_attr(NAME_COMMENT);
+    Error_attr   = class_attr(NAME_ERROR);
     Ident_attr   = class_attr(NAME_IDENT);
     Keyword_attr = class_attr(NAME_KEYWORD);
     Number_attr  = class_attr(NAME_NUMBER);
     Preproc_attr = class_attr(NAME_PREPROC);
     String_attr  = class_attr(NAME_LITERAL);
 
+    if ((Section_attr = class_attr(NAME_LEX_SECTION)) == 0)
+	Section_attr = Keyword_attr;
+
+    if ((States_attr = class_attr(NAME_LEX_STATES)) == 0)
+	States_attr = Keyword_attr;
+
+    flt_make_symtab(NAME_LEX_PATTERN);
+    set_symbol_table(NAME_LEX_PATTERN);
+    if ((Pattern_attr = class_attr(NAME_LEX_PATTERN)) == 0)
+	Pattern_attr = String_attr;
+
+    set_symbol_table(filter_def.filter_name);
+
     begin_state(RULES);
     while (yylex() > 0) {
     }
Index: filters/lex.key
Prereq:  1.4 
--- vile-9.5a+/filters/lex.key	1999-03-08 11:49:05.000000000 +0000
+++ vile-9.5b/filters/lex.key	2005-09-30 22:40:26.000000000 +0000
@@ -1,6 +1,20 @@
-: $Id: lex.key,v 1.4 1999/03/08 11:49:05 tom Exp $
+: $Id: lex.key,v 1.8 2005/09/30 22:40:26 tom Exp $
 : LEX Macros
 BEGIN
 ECHO
 REJECT
+:
+: Display section-markers such as "%{" and "%%" as an action.
+: The filter will default to "Keyword" otherwise.
+.class LexSection:Action
+:
+: The filter colors state-names with "LexStates", which defaults to "Keyword".
+.class LexStates
+INITIAL:LexStates
+:
 .include c
+:
+: Define a separate table for pattern names.  It contains one class, which
+: is given the same name "LexPattern".
+.table LexPattern
+.class LexPattern:Ident2
Index: filters/mailfilt.l
Prereq:  1.16 
--- vile-9.5a+/filters/mailfilt.l	2005-09-05 01:31:56.000000000 +0000
+++ vile-9.5b/filters/mailfilt.l	2005-09-30 22:32:32.000000000 +0000
@@ -5,7 +5,7 @@
 %{
 
 /*
- * $Header: /usr/build/vile/vile/filters/RCS/mailfilt.l,v 1.16 2005/09/05 01:31:56 tom Exp $
+ * $Header: /usr/build/vile/vile/filters/RCS/mailfilt.l,v 1.17 2005/09/30 22:32:32 tom Exp $
  *
  * Filter to add vile "attribution" sequences to selected bits of mail
  */
@@ -25,14 +25,14 @@
 
 BLANK		[ \t]
 
-BEGIN_HEADER	^"From "{EMAIL}
-
 LABEL		^[[:alpha:]]([[:alpha:]-]+):
 
 NAME		[[:alnum:]_+.#-]+
 ADDRESS		({NAME}|\.)+
 EMAIL		{NAME}@{ADDRESS}
 
+BEGIN_HEADER	^"From "{EMAIL}
+
 URL		[[:alpha:]]+"://"[[:alnum:]%/.~_#?=-]+
 
 %%
Index: filters/vb.key
Prereq:  1.5 
--- vile-9.5a+/filters/vb.key	2005-06-25 15:30:31.000000000 +0000
+++ vile-9.5b/filters/vb.key	2005-10-02 23:37:39.000000000 +0000
@@ -1,4 +1,4 @@
-: $Id: vb.key,v 1.5 2005/06/25 15:30:31 tom Exp $
+: $Id: vb.key,v 1.6 2005/10/02 23:37:39 tom Exp $
 : statements:
 alias
 appactivate
@@ -730,3 +730,4 @@
 rtrim$
 ucase$
 .default
+.class LineNumber:Comment
Index: input.c
Prereq:  1.283 
--- vile-9.5a+/input.c	2005-05-27 01:44:55.000000000 +0000
+++ vile-9.5b/input.c	2005-09-26 23:01:43.000000000 +0000
@@ -44,7 +44,7 @@
  *	tgetc_avail()     true if a key is avail from tgetc() or below.
  *	keystroke_avail() true if a key is avail from keystroke() or below.
  *
- * $Header: /usr/build/vile/vile/RCS/input.c,v 1.283 2005/05/27 01:44:55 tom Exp $
+ * $Header: /usr/build/vile/vile/RCS/input.c,v 1.284 2005/09/26 23:01:43 tom Exp $
  *
  */
 
@@ -1538,7 +1538,6 @@
 
 	    if (i >= digs)
 		break;
-	    (void) update(FALSE);
 	    c = keystroke_raw8();
 	} while (isbackspace(c) ||
 		 (isDigit(c) && base >= 10) ||
Index: makefile.icc
Prereq:  1.13 
--- vile-9.5a+/makefile.icc	1999-03-26 00:26:04.000000000 +0000
+++ vile-9.5b/makefile.icc	2005-10-02 23:26:34.000000000 +0000
@@ -1,6 +1,6 @@
 #
 # 'vile' and 'mktbls' makefile for IBM C Set ++ 2.x (OS/2)
-# $Header: /usr/build/vile/vile/RCS/makefile.icc,v 1.13 1999/03/26 00:26:04 tom Exp $
+# $Header: /usr/build/vile/vile/RCS/makefile.icc,v 1.14 2005/10/02 23:26:34 tom Exp $
 #
 
 #
@@ -111,7 +111,7 @@
 version:
 	@-del version$O
 
-$(TARGET) : version $(VILE_DEPS)
+$(TARGET) : $(VILE_DEPS)
   $(CC) $(CFLAGS) $(VILE_DEPS) /Fe$@
 
 #		*Individual File Dependencies*
@@ -211,7 +211,7 @@
 
 main$O:		$(VILE_CFG) main.c	nevars.h
 
-$(SCREEN)$O:	$(VILE_CFG) $(SCREEN).c
+$(SCREEN)$O:	$(VILE_CFG) $(SCREEN).c os2keys.h
 
 nebind.h \
 nefunc.h \
Index: ntconio.c
Prereq:  1.82 
--- vile-9.5a+/ntconio.c	2005-01-20 11:58:44.000000000 +0000
+++ vile-9.5b/ntconio.c	2005-10-02 21:47:00.000000000 +0000
@@ -1,7 +1,7 @@
 /*
  * Uses the Win32 console API.
  *
- * $Header: /usr/build/vile/vile/RCS/ntconio.c,v 1.82 2005/01/20 11:58:44 tom Exp $
+ * $Header: /usr/build/vile/vile/RCS/ntconio.c,v 1.83 2005/10/02 21:47:00 tom Exp $
  *
  */
 
@@ -648,6 +648,11 @@
     { VK_F18,		KEY_F18 },
     { VK_F19,		KEY_F19 },
     { VK_F20,		KEY_F20 },
+    { VK_F21,		KEY_F21 },
+    { VK_F22,		KEY_F22 },
+    { VK_F23,		KEY_F23 },
+    { VK_F24,		KEY_F24 },
+    /* winuser.h stops with VK_F24 */
     /* Allow ^-6 to invoke the alternate-buffer command, a la Unix.  */
     { '6',		'6' },
     /* Support recognition of ^@ */
Index: ntwinio.c
Prereq:  1.148 
--- vile-9.5a+/ntwinio.c	2005-07-17 18:15:25.000000000 +0000
+++ vile-9.5b/ntwinio.c	2005-10-02 21:47:00.000000000 +0000
@@ -1,7 +1,7 @@
 /*
  * Uses the Win32 screen API.
  *
- * $Header: /usr/build/vile/vile/RCS/ntwinio.c,v 1.148 2005/07/17 18:15:25 cmorgan Exp $
+ * $Header: /usr/build/vile/vile/RCS/ntwinio.c,v 1.149 2005/10/02 21:47:00 tom Exp $
  * Written by T.E.Dickey for vile (october 1997).
  * -- improvements by Clark Morgan (see w32cbrd.c, w32pipe.c).
  */
@@ -1763,6 +1763,11 @@
     { VK_F18,		KEY_F18 },
     { VK_F19,		KEY_F19 },
     { VK_F20,		KEY_F20 },
+    { VK_F21,		KEY_F21 },
+    { VK_F22,		KEY_F22 },
+    { VK_F23,		KEY_F23 },
+    { VK_F24,		KEY_F24 },
+    /* winuser.h stops with VK_F24 */
     /* Allow ^-6 to invoke the alternate-buffer command, a la Unix.  */
     { '6',		'6' },
     /* Support recognition of ^@ */
Index: os2keys.h
Prereq:  1.1 
--- vile-9.5a+/os2keys.h	1997-11-30 23:51:25.000000000 +0000
+++ vile-9.5b/os2keys.h	2005-10-02 21:56:00.000000000 +0000
@@ -1,5 +1,5 @@
 /*
- * $Header: /usr/build/vile/vile/RCS/os2keys.h,v 1.1 1997/11/30 23:51:25 tom Exp $
+ * $Header: /usr/build/vile/vile/RCS/os2keys.h,v 1.2 2005/10/02 21:56:00 tom Exp $
  *
  * Function-key definitions used for OS/2 VIO driver, as well as OS/2 EMX
  * driver.
@@ -45,6 +45,38 @@
 	{ K00(133), KEY_F11 },
 	{ K00(134), KEY_F12 },
 
+	/* Additional function keys on a normal keyboard are obtained by
+	 * shift and control modifiers.  These are as documented in ncurses'
+	 * emx.src, and stop with KEY_F35, since that corresponds to the
+	 * limit for X11.
+	 */
+	{ K00('T'), KEY_F13 },	/* shifted F1 */
+	{ K00('U'), KEY_F14 },
+	{ K00('V'), KEY_F15 },
+	{ K00('W'), KEY_F16 },
+	{ K00('X'), KEY_F17 },
+	{ K00('Y'), KEY_F18 },
+	{ K00('Z'), KEY_F19 },
+	{ K00('['), KEY_F20 },
+	{ K00('\\'), KEY_F21 },
+	{ K00(']'), KEY_F22 },
+	{ K00(135), KEY_F23 },
+	{ K00(136), KEY_F24 },	/* shifted F12 */
+	{ K00('^'), KEY_F25 },	/* control F1 */
+	{ K00('_'), KEY_F26 },
+	{ K00('`'), KEY_F27 },
+	{ K00('a'), KEY_F28 },
+	{ K00('b'), KEY_F29 },
+	{ K00('c'), KEY_F30 },
+	{ K00('d'), KEY_F31 },
+	{ K00('e'), KEY_F32 },
+	{ K00('f'), KEY_F33 },
+	{ K00('g'), KEY_F34 },
+	{ K00(137), KEY_F35 },	/* control F11 */
+
+	/* shift-tab */
+	{ K00(15), KEY_BackTab },
+
 	/* Keypad codes (with Num Lock off): */
 	{ K00('G'), KEY_Home },
 	{ K00('H'), KEY_Up },
Index: os2vio.c
Prereq:  1.31 
--- vile-9.5a+/os2vio.c	2005-01-18 01:40:09.000000000 +0000
+++ vile-9.5b/os2vio.c	2005-10-02 23:13:25.000000000 +0000
@@ -3,7 +3,7 @@
  * Modified from a really old version of "borland.c" (before the VIO
  * stuff went in there.)
  *
- * $Header: /usr/build/vile/vile/RCS/os2vio.c,v 1.31 2005/01/18 01:40:09 tom Exp $
+ * $Header: /usr/build/vile/vile/RCS/os2vio.c,v 1.32 2005/10/02 23:13:25 tom Exp $
  */
 
 #include "estruct.h"
@@ -35,7 +35,7 @@
 #define	NPAUSE	200		/* # times thru update to pause */
 #define	SPACE	32		/* space character              */
 
-#define	AttrColor(b, f)	((((UINT)ctrans[b] & 7) << 4) | ((UINT)ctrans[f] & 15))
+#define	AttrColor(b, f)	((((UINT)ctrans[b] & (blinking ? 7 : 15)) << 4) | ((UINT)ctrans[f] & 15))
 
 int cfcolor = -1;		/* current foreground color */
 int cbcolor = -1;		/* current background color */
@@ -56,6 +56,7 @@
 static int MaxRows, MaxColumns;
 static int TextFree;
 static int TextRow, TextColumn;
+static int blinking = 1;
 
 #define blank_cell()	( BlankCell[1] = TextAttr, BlankCell )
 
@@ -69,6 +70,7 @@
 
     vinfo.cb = sizeof(vinfo);
     (void) VioGetMode(&vinfo, 0);
+    TRACE(("scinit VioGetMode %dx%d\n", vinfo.row, vinfo.col));
 
     MaxRows = vinfo.row;
     MaxColumns = vinfo.col;
@@ -393,9 +395,9 @@
 #endif
 
 static void
-vio_beep()
+vio_beep(void)
 {
-#if	OPT_FLASH
+#if OPT_FLASH
     if (global_g_val(GMDFLASH)) {
 	flash_display();
 	return;
@@ -408,6 +410,10 @@
 static void
 vio_open(void)
 {
+#if OPT_COLOR
+    PTIB ptib;
+    PPIB ppib;
+#endif
     int i;
 
     /* Initialize output buffer. */
@@ -421,12 +427,21 @@
     }
 
 #if OPT_COLOR
-    {
+    blinking = 1;		/* nonzero if "bright" background would blink */
+    DosGetInfoBlocks(&ptib, &ppib);
+    TRACE(("DosGetInfoBlocks pib_ultype = %d\n", ppib->pib_ultype));
+    /* 0=FS, 1=DOS, 2=VIO, 3=PM */
+    if (ppib->pib_ultype == 2) {
+	blinking = 0;		/* VIO won't blink */
+    } else if (ppib->pib_ultype == 0) {
 	VIOINTENSITY intense;
 	intense.cb = sizeof(intense);
 	intense.type = 2;
 	intense.fs = 1;		/* ask for bright colors, not blink */
-	VioSetState(&intense, 0);
+	if (VioSetState(&intense, 0) == 0) {
+	    blinking = 0;
+	    TRACE(("vio_open VioSetState\n"));
+	}
     }
     set_palette(initpalettestr);
     vio_fcol(gfcolor);
@@ -454,7 +469,7 @@
 }
 
 static void
-vio_kopen()
+vio_kopen(void)
 {				/* open the keyboard */
     MouOpen(NULL, &hmou);
     MouDrawPtr(hmou);
@@ -462,7 +477,7 @@
 }
 
 static void
-vio_kclose()
+vio_kclose(void)
 {				/* close the keyboard */
     MouClose(hmou);
     return;
Index: patchlev.h
--- vile-9.5a+/patchlev.h	2005-08-30 00:25:11.000000000 +0000
+++ vile-9.5b/patchlev.h	2005-09-22 22:09:07.000000000 +0000
@@ -1,3 +1,3 @@
 #define VILE_VERSION "9.5"
 /* set to "" for no patches */
-#define VILE_PATCHLEVEL "a"
+#define VILE_PATCHLEVEL "b"
Index: proto.h
Prereq:  1.552 
--- vile-9.5a+/proto.h	2005-06-03 00:38:55.000000000 +0000
+++ vile-9.5b/proto.h	2005-09-22 22:05:19.000000000 +0000
@@ -4,7 +4,7 @@
  *
  *   Created: Thu May 14 15:44:40 1992
  *
- * $Header: /usr/build/vile/vile/RCS/proto.h,v 1.552 2005/06/03 00:38:55 tom Exp $
+ * $Header: /usr/build/vile/vile/RCS/proto.h,v 1.553 2005/09/22 22:05:19 tom Exp $
  *
  */
 
@@ -123,6 +123,7 @@
 extern char *kcod2pstr (int c, char *seq, int limit);
 extern const CMDFUNC *engl2fnc (const char *fname);
 extern const CMDFUNC *kcod2fnc (BINDINGS *bs, int c);
+extern int eol_command (EOL_ARGS);
 extern int fnc2kcod (const CMDFUNC *);
 extern int fnc2kins (const CMDFUNC *);
 extern int kbd_complete (DONE_ARGS, const char *table, size_t size_entry);
Index: revlist
--- vile-9.5a+/revlist	2005-09-05 22:17:05.000000000 +0000
+++ vile-9.5b/revlist	2005-10-03 00:21:01.000000000 +0000
@@ -1,6 +1,6 @@
-revlist for vile, version v9_5a
+revlist for vile, version v9_5b
 --------------------------------------------------------------------------------
-CHANGES	1.861
+CHANGES	1.867
 CHANGES.R3	1.1
 CHANGES.R4	1.1
 CHANGES.R5	1.1
@@ -18,18 +18,18 @@
 api.c	1.37
 api.h	1.13
 basic.c	1.122
-bind.c	1.284
+bind.c	1.286
 borland.c	1.32
 btree.c	1.21
 btree.h	1.4
-buffer.c	1.294
+buffer.c	1.296
 buglist	1.402
 builtflt.c	1.47
 chgdfunc.h	1.17
 cmdtbl	1.238
 config.emx	1.2
-config.guess	1.1
-config.sub	1.1
+config.guess	1.2
+config.sub	1.2
 config_h.in	1.2
 configure	1.2
 configure.in	1.220
@@ -43,10 +43,10 @@
 edef.h	1.320
 estruct.h	1.584
 eval.c	1.348
-exec.c	1.279
+exec.c	1.280
 externs.c	1.10
 fences.c	1.83
-file.c	1.385
+file.c	1.386
 filec.c	1.121
 fileio.c	1.179
 finderr.c	1.130
@@ -55,7 +55,7 @@
 gppconio.c	1.2
 history.c	1.82
 ibmpc.c	1.97
-input.c	1.283
+input.c	1.284
 insert.c	1.143
 install.sh	1.7
 isearch.c	1.60
@@ -66,7 +66,7 @@
 makefile.blc	1.18
 makefile.djg	1.32
 makefile.emx	1.5
-makefile.icc	1.13
+makefile.icc	1.14
 makefile.in	1.195
 makefile.tbc	1.24
 makefile.wat	1.26
@@ -80,25 +80,25 @@
 modetbl	1.235
 msgs.c	1.26
 npopen.c	1.92
-ntconio.c	1.82
-ntwinio.c	1.148
+ntconio.c	1.83
+ntwinio.c	1.149
 oneliner.c	1.108
 opers.c	1.90
-os2keys.h	1.1
+os2keys.h	1.2
 os2pipe.c	1.5
-os2vio.c	1.31
-patchlev.h	1.337
+os2vio.c	1.32
+patchlev.h	1.338
 path.c	1.150
 perl.xs	1.104
 plugin.c	1.1
 plugin.h	1.1
-proto.h	1.552
+proto.h	1.553
 pscreen.h	1.2
 ptypemap	1.7
 random.c	1.287
 regexp.c	1.110
 region.c	1.132
-revlist	v9_5a
+revlist	v9_5b
 search.c	1.137
 select.c	1.158
 sinstall.sh	1.1
@@ -114,7 +114,7 @@
 ucrypt.c	1.15
 undo.c	1.88
 version.c	1.57
-vile-9.5.spec	1.2
+vile-9.5.spec	1.3
 vile.1	1.30
 vile.hlp	1.602
 vile.wmconfig	1.1
@@ -202,7 +202,7 @@
 filters/fdl-filt.l	1.10
 filters/fdl.key	1.4
 filters/filterio.c	1.28
-filters/filters.c	1.98
+filters/filters.c	1.99
 filters/filters.h	1.94
 filters/filters.rc	1.202
 filters/flt_defs.h	1.1
@@ -223,14 +223,14 @@
 filters/key-filt.c	1.19
 filters/latex.key	1.2
 filters/latexflt.l	1.41
-filters/lex-filt.l	1.26
-filters/lex.key	1.4
+filters/lex-filt.l	1.41
+filters/lex.key	1.8
 filters/lisp.key	1.2
 filters/lispfilt.l	1.11
 filters/m4-filt.c	1.25
 filters/m4.key	1.3
 filters/mail.key	1.3
-filters/mailfilt.l	1.16
+filters/mailfilt.l	1.17
 filters/make.key	1.8
 filters/makefile.2nd	1.11
 filters/makefile.djg	1.3
@@ -308,7 +308,7 @@
 filters/txt-filt.l	1.19
 filters/unfilter.c	1.8
 filters/unfilter.h	1.1
-filters/vb.key	1.5
+filters/vb.key	1.6
 filters/vile.key	1.8
 filters/vilefilt.l	1.31
 filters/vim.key	1.2
Index: vile-9.5.spec
Prereq:  1.2 
--- vile-9.5a+/vile-9.5.spec	2005-08-30 00:40:38.000000000 +0000
+++ vile-9.5b/vile-9.5.spec	2005-09-22 22:09:45.000000000 +0000
@@ -1,7 +1,7 @@
 Summary: VILE VI Like Emacs editor
-# $Header: /usr/build/vile/vile/RCS/vile-9.5.spec,v 1.2 2005/08/30 00:40:38 tom Exp $
+# $Header: /usr/build/vile/vile/RCS/vile-9.5.spec,v 1.3 2005/09/22 22:09:45 tom Exp $
 Name: vile
-Version: 9.5a
+Version: 9.5b
 # each patch should update the version
 Release: 1
 Copyright: GPL
@@ -9,6 +9,7 @@
 URL: ftp://invisible-island.net/vile
 Source0: vile-9.5.tgz
 Patch1: vile-9.5a.patch.gz
+Patch2: vile-9.5b.patch.gz
 # each patch should add itself to this list
 Packager: Thomas Dickey <dickey@invisible-island.net>
 BuildRoot: %{_tmppath}/%{name}-root
@@ -22,6 +23,7 @@
 %prep
 %setup -q -n vile-9.5
 %patch1 -p1
+%patch2 -p1
 # each patch should add itself to this list
 
 %build
@@ -74,6 +76,9 @@
 %changelog
 # each patch should add its ChangeLog entries here
 
+* Thu Sep 22 2005 Thomas Dickey
+- added patch for 9.5b
+
 * Sun Aug 29 2005 Thomas Dickey
 - added patch for 9.5a