new upstream prerelease
authormirabilos <m@mirbsd.org>
Sat, 8 Oct 2016 18:56:54 +0000 (20:56 +0200)
committermirabilos <m@mirbsd.org>
Sat, 8 Oct 2016 18:56:54 +0000 (20:56 +0200)
33 files changed:
LIST
Makefile.am
Makefile.bsd-wrapper
Makefile.in
NEWS
TODO
b.c
builtins.c
cmd.c
configure
configure.ac
i18n.c
jmacsrc.in
joe.1.in
joerc.in
jpicorc.in
jstarrc.in
jupprc
main.c
path.c
path.h
pw.c
rjoerc.in
strlfun.inc
syntax.c
syntax.h
syntax/c.jsf.in
syntax/tex.jsf.in [new file with mode: 0644]
tab.c
tty.c
tw.c
uedit.c
uedit.h

diff --git a/LIST b/LIST
index f48f63e..1ae6a44 100644 (file)
--- a/LIST
+++ b/LIST
@@ -1,4 +1,4 @@
-$MirOS: contrib/code/jupp/LIST,v 1.9 2014/06/09 16:06:45 tg Exp $
+$MirOS: contrib/code/jupp/LIST,v 1.10 2016/10/07 20:07:49 tg Exp $
 -----------------------------------------------------------------
 
 Joe commands grouped by function
@@ -80,6 +80,7 @@ pedge         Move cursor to previous edge
 prevpos                Move cursor to previous position in cursor position history
 prevword       Move cursor to beginning of previous word
 rtarw          Move cursor right
+rvmatch                Move cursor to matching delimiter, ambiguous to the left
 setmark                Set a bookmark
 tomatch                Move cursor to matching delimiter
 tos            Move cursor to top of screen
index 7c6dede..5707493 100644 (file)
@@ -1,4 +1,4 @@
-# $MirOS: contrib/code/jupp/Makefile.am,v 1.8 2012/06/07 22:16:07 tg Exp $
+# $MirOS: contrib/code/jupp/Makefile.am,v 1.10 2016/10/08 17:44:17 tg Exp $
 
 AUTOMAKE_OPTIONS = foreign
 
@@ -9,11 +9,11 @@ EXTRA_DIST = COPYING INFO LIST NEWS README README.cvs TODO docs/help-system.html
        syntax/pascal.jsf.in syntax/html.jsf.in syntax/vhdl.jsf.in syntax/fortran.jsf.in \
        syntax/java.jsf.in syntax/xml.jsf.in syntax/tcl.jsf.in charmaps/klingon.in docs HINTS \
        syntax/lisp.jsf.in syntax/csh.jsf.in syntax/mail.jsf.in syntax/mason.jsf.in \
-       syntax/diff.jsf.in syntax/asm.jsf.in
+       syntax/diff.jsf.in syntax/asm.jsf.in syntax/tex.jsf.in
 
 JOE_ALIASES = jmacs jpico jstar jupp rjoe
 
-sysconfjoesubdir = /joe
+sysconfjoesubdir = @sysconfjoesubdir@
 sysconf_joedir = $(sysconfdir)$(sysconfjoesubdir)
 sysconf_joe_DATA = joerc jmacsrc jstarrc rjoerc jpicorc jupprc
 
@@ -23,7 +23,7 @@ sysconf_syntax_DATA = syntax/c.jsf syntax/perl.jsf syntax/verilog.jsf \
        syntax/mail.jsf syntax/pascal.jsf syntax/html.jsf syntax/vhdl.jsf \
        syntax/fortran.jsf syntax/java.jsf syntax/xml.jsf syntax/tcl.jsf \
        syntax/lisp.jsf syntax/csh.jsf syntax/mason.jsf syntax/diff.jsf \
-       syntax/asm.jsf
+       syntax/asm.jsf syntax/tex.jsf
 
 sysconf_charmapsdir = $(sysconf_joedir)/charmaps
 sysconf_charmaps_DATA = charmaps/klingon
@@ -73,6 +73,6 @@ uninstall-local:
 
 distclean-local:
        rm -f *~
-       rm -f stamp-h.in charmaps/klingon syntax/asm.jsf syntax/c.jsf syntax/conf.jsf syntax/csh.jsf syntax/diff.jsf syntax/fortran.jsf syntax/html.jsf syntax/java.jsf syntax/lisp.jsf syntax/mail.jsf syntax/mason.jsf syntax/pascal.jsf syntax/perl.jsf syntax/php.jsf syntax/python.jsf syntax/sh.jsf syntax/tcl.jsf syntax/verilog.jsf syntax/vhdl.jsf syntax/xml.jsf
+       rm -f stamp-h.in charmaps/klingon syntax/asm.jsf syntax/c.jsf syntax/conf.jsf syntax/csh.jsf syntax/diff.jsf syntax/fortran.jsf syntax/html.jsf syntax/java.jsf syntax/lisp.jsf syntax/mail.jsf syntax/mason.jsf syntax/pascal.jsf syntax/perl.jsf syntax/php.jsf syntax/python.jsf syntax/sh.jsf syntax/tcl.jsf syntax/tex.jsf syntax/verilog.jsf syntax/vhdl.jsf syntax/xml.jsf
 
 .PHONY: termcap
index 7405f8b..08e0f3d 100644 (file)
@@ -1,10 +1,10 @@
-# $MirOS: contrib/code/jupp/Makefile.bsd-wrapper,v 1.2 2013/11/07 22:22:50 tg Exp $
+# $MirOS: contrib/code/jupp/Makefile.bsd-wrapper,v 1.5 2016/10/08 17:44:17 tg Exp $
 #-
 # make -f Makefile.bsd-wrapper CFPREFIX=/usr/mpkg sysconfjoesubdir=/joe
 
 MAN=           joe.1
 INST_TARGET=   INSTALL_MAN= install
-CLEANFILES+=   charmaps syntax
+CLEANFILES+=   .deps charmaps syntax joe.txt{,~}
 
 CFPREFIX?=     /usr/local
 .if ${CFPREFIX} == "/usr"
@@ -16,9 +16,14 @@ CFETC?=              /etc
 sysconfjoesubdir?=/jupp
 
 CFARGS+=       --prefix=${CFPREFIX:Q} \
+               --bindir=${CFPREFIX:Q}/bin \
                --mandir=${CFMANDIR:Q} \
-               --sysconfdir=${CFETC:Q}
-XARGS+=                sysconfjoesubdir=${sysconfjoesubdir:Q}
+               --sysconfdir=${CFETC:Q} \
+               --enable-sysconfjoesubdir=${sysconfjoesubdir:Q}
+
+.ifmake winman
+CFARGS+=       --enable-win32reloc=old
+.endif
 
 .include <bsd.own.mk>
 FSFISLIB=      No
@@ -33,4 +38,39 @@ COPTS+=              -Wno-unused-parameter \
 
 joe.1: config.status
 
+winman: joe.1
+       nrcon -mandoc joe.1 | col -bx >joe.txt~
+       print '$$-3,$$d\n,g/^MirOS BSD/.-3,.+10d\nwq' | ed -s joe.txt~
+       cat -s joe.txt~ | sed \
+           -e 's/\(jupp\)\( .global-options\)/\132\2/' \
+           -e '1d' -e '$$d' -e $$'s/$$/\r/' >joe.txt
+
+
+.ifmake joe.pdf
+V_GROFF!=      pkg_info -e 'groff-*'
+V_GHOSTSCRIPT!=        pkg_info -e 'ghostscript-*'
+.  if empty(V_GROFF) || empty(V_GHOSTSCRIPT)
+.    error empty V_GROFF=${V_GROFF} or V_GHOSTSCRIPT=${V_GHOSTSCRIPT}
+.  endif
+.endif
+
+CLEANFILES+=   joe.htm joe.ps1 joe.pdf
+CATS_KW=       jmacs, joe, jpico, jstar, jupp, rjoe
+CATS_TITLE_joe_1=joe - Joe's Own Editor
+joe.htm: joe.cat1
+       set -e; . ${BSDSRCDIR:Q}/scripts/roff2htm; set_target_absolute; \
+           do_conversion_verbose joe 1 joe.cat1 joe.htm
+joe.pdf: joe.ps1
+       x=$$(ident joe.1 | \
+           awk '/Mir''OS:/ { print $$4$$5; }' | \
+           tr -dc 0-9); (( $${#x} == 14 )) || exit 1; exec \
+           ${MKSH} ${BSDSRCDIR:Q}/contrib/hosted/tg/ps2pdfmir -p pa4 -c \
+           -o joe.pdf '[' /Author '(The MirOS Project)' \
+           /Title '('${CATS_TITLE_joe_1:Q}')' \
+           /Subject '(BSD Reference Manual)' /ModDate "(D:$$x)" \
+           /Creator '(GNU groff version ${V_GROFF:S/groff-//} \(MirPorts\))' \
+           /Producer '(Artifex Ghostscript ${V_GHOSTSCRIPT:S/ghostscript-//:S/-artifex//} \(MirPorts\))' \
+           /Keywords '('${CATS_KW:Q}')' /DOCINFO pdfmark \
+           -f joe.ps1
+
 .include <bsd.cfwrap.mk>
index 6f0cafe..b369813 100644 (file)
@@ -14,8 +14,8 @@
 
 @SET_MAKE@
 
-# $MirOS: contrib/code/jupp/Makefile.in,v 1.12 2012/07/18 17:09:59 tg Exp $
-# $miros: contrib/code/jupp/Makefile.am,v 1.8 2012/06/07 22:16:07 tg Exp $
+# $MirOS: contrib/code/jupp/Makefile.in,v 1.13 2016/10/08 17:56:32 tg Exp $
+# $miros: contrib/code/jupp/Makefile.am,v 1.10 2016/10/08 17:44:17 tg Exp $
 
 
 
@@ -65,6 +65,7 @@ DIST_COMMON = README $(am__configure_deps) $(noinst_HEADERS) \
        $(top_srcdir)/syntax/php.jsf.in \
        $(top_srcdir)/syntax/python.jsf.in \
        $(top_srcdir)/syntax/sh.jsf.in $(top_srcdir)/syntax/tcl.jsf.in \
+       $(top_srcdir)/syntax/tex.jsf.in \
        $(top_srcdir)/syntax/verilog.jsf.in \
        $(top_srcdir)/syntax/vhdl.jsf.in \
        $(top_srcdir)/syntax/xml.jsf.in COPYING ChangeLog NEWS TODO \
@@ -86,7 +87,8 @@ CONFIG_CLEAN_FILES = joe.1 joerc jmacsrc jstarrc rjoerc jpicorc \
        syntax/mail.jsf syntax/pascal.jsf syntax/html.jsf \
        syntax/vhdl.jsf syntax/fortran.jsf syntax/java.jsf \
        syntax/xml.jsf syntax/tcl.jsf charmaps/klingon syntax/lisp.jsf \
-       syntax/csh.jsf syntax/mason.jsf syntax/diff.jsf syntax/asm.jsf
+       syntax/csh.jsf syntax/mason.jsf syntax/diff.jsf syntax/asm.jsf \
+       syntax/tex.jsf
 @WANT_TERMIDX_TRUE@am__EXEEXT_1 = termidx$(EXEEXT)
 am__installdirs = "$(DESTDIR)$(bindir)" "$(DESTDIR)$(man1dir)" \
        "$(DESTDIR)$(sysconf_charmapsdir)" \
@@ -227,6 +229,11 @@ htmldir = @htmldir@
 includedir = @includedir@
 infodir = @infodir@
 install_sh = @install_sh@
+joeinitcopy = @joeinitcopy@
+joeinitfile = @joeinitfile@
+joeresides = @joeresides@
+jrcafter = @jrcafter@
+jrcbefore = @jrcbefore@
 libdir = @libdir@
 libexecdir = @libexecdir@
 localedir = @localedir@
@@ -241,6 +248,7 @@ psdir = @psdir@
 sbindir = @sbindir@
 sharedstatedir = @sharedstatedir@
 sysconfdir = @sysconfdir@
+sysconfjoesubdir = @sysconfjoesubdir@
 target = @target@
 target_alias = @target_alias@
 target_cpu = @target_cpu@
@@ -254,10 +262,9 @@ EXTRA_DIST = COPYING INFO LIST NEWS README README.cvs TODO docs/help-system.html
        syntax/pascal.jsf.in syntax/html.jsf.in syntax/vhdl.jsf.in syntax/fortran.jsf.in \
        syntax/java.jsf.in syntax/xml.jsf.in syntax/tcl.jsf.in charmaps/klingon.in docs HINTS \
        syntax/lisp.jsf.in syntax/csh.jsf.in syntax/mail.jsf.in syntax/mason.jsf.in \
-       syntax/diff.jsf.in syntax/asm.jsf.in
+       syntax/diff.jsf.in syntax/asm.jsf.in syntax/tex.jsf.in
 
 JOE_ALIASES = jmacs jpico jstar jupp rjoe
-sysconfjoesubdir = /joe
 sysconf_joedir = $(sysconfdir)$(sysconfjoesubdir)
 sysconf_joe_DATA = joerc jmacsrc jstarrc rjoerc jpicorc jupprc
 sysconf_syntaxdir = $(sysconf_joedir)/syntax
@@ -266,7 +273,7 @@ sysconf_syntax_DATA = syntax/c.jsf syntax/perl.jsf syntax/verilog.jsf \
        syntax/mail.jsf syntax/pascal.jsf syntax/html.jsf syntax/vhdl.jsf \
        syntax/fortran.jsf syntax/java.jsf syntax/xml.jsf syntax/tcl.jsf \
        syntax/lisp.jsf syntax/csh.jsf syntax/mason.jsf syntax/diff.jsf \
-       syntax/asm.jsf
+       syntax/asm.jsf syntax/tex.jsf
 
 sysconf_charmapsdir = $(sysconf_joedir)/charmaps
 sysconf_charmaps_DATA = charmaps/klingon
@@ -396,6 +403,8 @@ syntax/diff.jsf: $(top_builddir)/config.status $(top_srcdir)/syntax/diff.jsf.in
        cd $(top_builddir) && $(SHELL) ./config.status $@
 syntax/asm.jsf: $(top_builddir)/config.status $(top_srcdir)/syntax/asm.jsf.in
        cd $(top_builddir) && $(SHELL) ./config.status $@
+syntax/tex.jsf: $(top_builddir)/config.status $(top_srcdir)/syntax/tex.jsf.in
+       cd $(top_builddir) && $(SHELL) ./config.status $@
 install-binPROGRAMS:
        @$(NORMAL_INSTALL)
        test -z "$(bindir)" || $(mkdir_p) "$(DESTDIR)$(bindir)"
@@ -894,7 +903,7 @@ uninstall-local:
 
 distclean-local:
        rm -f *~
-       rm -f stamp-h.in charmaps/klingon syntax/asm.jsf syntax/c.jsf syntax/conf.jsf syntax/csh.jsf syntax/diff.jsf syntax/fortran.jsf syntax/html.jsf syntax/java.jsf syntax/lisp.jsf syntax/mail.jsf syntax/mason.jsf syntax/pascal.jsf syntax/perl.jsf syntax/php.jsf syntax/python.jsf syntax/sh.jsf syntax/tcl.jsf syntax/verilog.jsf syntax/vhdl.jsf syntax/xml.jsf
+       rm -f stamp-h.in charmaps/klingon syntax/asm.jsf syntax/c.jsf syntax/conf.jsf syntax/csh.jsf syntax/diff.jsf syntax/fortran.jsf syntax/html.jsf syntax/java.jsf syntax/lisp.jsf syntax/mail.jsf syntax/mason.jsf syntax/pascal.jsf syntax/perl.jsf syntax/php.jsf syntax/python.jsf syntax/sh.jsf syntax/tcl.jsf syntax/tex.jsf syntax/verilog.jsf syntax/vhdl.jsf syntax/xml.jsf
 
 .PHONY: termcap
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
diff --git a/NEWS b/NEWS
index 1a562ce..056b112 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,9 +1,20 @@
-$MirOS: contrib/code/jupp/NEWS,v 1.92 2014/10/23 17:10:44 tg Exp $
-------------------------------------------------------------------
+$MirOS: contrib/code/jupp/NEWS,v 1.103 2016/10/08 17:44:17 tg Exp $
+-------------------------------------------------------------------
 
 JUPP-current
 
 - …
+- Update internationalisation data to Unicode 9.0.0
+- Bind execmd in jstarrc, so all flavours bind it
+- Fix paths in joe(1) manpage
+- jupprc: ^Q= searches for merge conflict markers (CVS, git)
+- Add syntax file for tex (LaTeX; *.cls *.sty *.tex)
+- Make syntax highlighting code use UTF-8 by individual octets
+- ^Q] now also works for ASCII quotation marks (jupp, jstar)
+- ^Q[ is distinct from ^Q] when ambiguous (jupp, jstar)
+- Unbreak tab-completing filenames with spaces
+- Fix filenames with backslashes
+- configure --enable-sysconfjoesubdir to also get the manual page
 
 JOE 3.1jupp28
 
diff --git a/TODO b/TODO
index 9b97b90..59a7fe5 100644 (file)
--- a/TODO
+++ b/TODO
@@ -481,7 +481,8 @@ New features:
 Math: octal(?), more functions. (-lm?)
 
 Perl compatible regex search.
-(Ugh. But grouping lile \+\(foo\+ \) would be cool.)
+(Ugh. But grouping like \+\(foo\+ \) would be cool.)
+(Also, alternatives and/or backreferences, think ^Q=)
 
 Improvements for regular text
 -----------------------------
@@ -662,9 +663,12 @@ Other requests:
 • bracketed paste mode should disable autoindent, wordwrap,
   updating the status line, …(?) ⇐ implemented using a “paste”
   labeled ftype that is switched to using the UI (command)
-• ^Q] should work for “'” and “"” too
 • switch from autoconf to mirtoconf2
+• asarch requests merging the .joe_state file code, although
+  it must be disabled by default like mksh’s HISTFILE is:
+  18:48⎜«asarch» That would be for a wish list then: to keep the
+       ⎜    list of all opened files with their last position
 • …
 
 __________________________________________________________________
-$MirOS: contrib/code/jupp/TODO,v 1.20 2014/10/23 16:27:25 tg Exp $
+$MirOS: contrib/code/jupp/TODO,v 1.25 2016/10/08 16:42:00 tg Exp $
diff --git a/b.c b/b.c
index f71e4b5..952da40 100644 (file)
--- a/b.c
+++ b/b.c
@@ -1,4 +1,4 @@
-/* $MirOS: contrib/code/jupp/b.c,v 1.12 2014/10/23 16:10:27 tg Exp $ */
+/* $MirOS: contrib/code/jupp/b.c,v 1.15 2016/10/08 17:42:12 tg Exp $ */
 /*
  *     Editor engine
  *     Copyright
@@ -567,7 +567,7 @@ int pgetb(P *p)
 int pgetc(P *p)
 {
        if (p->b->o.charmap->type) {
-               int val, c, d, n, wid;
+               int val, c, n, wid;
                /* int m, oc; */
 
                val = p->valcol;        /* Remember if column number was valid */
@@ -603,14 +603,15 @@ int pgetc(P *p)
                /* m = n; */
 
                if (n) {
-                       while (n) {
+                       int d;
+
+                       do {
                                d = brc(p);
                                if (d == NO_MORE_DATA || (d&0xC0)!=0x80)
                                        break;
                                pgetb(p);
                                c = ((c<<6)|(d&0x3F));
-                               --n;
-                       }
+                       } while (--n);
                        if (n) { /* FIXME: there was a bad UTF-8 sequence */
                                /* How to represent this? */
                                /* pbkwd(p,m-n);
@@ -2142,7 +2143,9 @@ B *bload(unsigned char *s)
                        mod_time = sbuf.st_mtime;
                }
        }
+#if HAVE_BACKSLASH_PATHS
        joesep(n);
+#endif
 
        /* Abort if couldn't open */
        if (!fi) {
@@ -2456,7 +2459,9 @@ int bsave(P *p, unsigned char *s, long int size, int flag)
                f = fopen((char *)s, "w");
                norm = 1;
        }
+#if HAVE_BACKSLASH_PATHS
        joesep(s);
+#endif
 
        if (!f) {
                error = -4;
index 2ffec01..d0cbc7c 100644 (file)
@@ -1,9 +1,11 @@
 /* Built-in files */
 
 /*
-       <jupprc grep -v $'^[\t ]' | while IFS= read -r x; do
+       LC_ALL=C grep -ve $'^[\t ]' -e '^-syntax' jupprc | sed \
+           -e '/^:cua/,$d' -e '/^:Pastecua/,/^$/d' -e 1d \
+           -e 's/@(#) jupprc/@(#) blt_in/' | cat -s | while IFS= read -r x; do
                x=${x//\\/\\\\}; print -r -- $'\t\t'\""${x//\"/\\\"}\n"\";
-       done | perl -pi -e 's/[^\ca-~]/sprintf "\\x%02X", unpack("U", $&)/eg'
+       done | perl -pe 's/[^\ca-~]/sprintf "\\x%02X", unpack("U", $&)/eg'
  */
 
 #include "types.h"
@@ -72,7 +74,7 @@ const unsigned char * const builtins[] = {
                "\\i \\i^A previous word ^QS beg. of line ^KY kill ^T  >word ^QL refresh  ^KZ shell  \\i \\i\n"
                "\\i \\i^F next word     ^QD end of line  ^K/ pipe ^QY >line ^O  options  \\u\\bFILE\\b\\u       \\i \\i\n"
                "\\i \\i\\u\\bSEARCH\\b\\u           ^QR top of file  ^KB begin          \\u\\bBUFFER\\b\\u       ^KE new    \\i \\i\n"
-               "\\i \\i^QF find first   ^QC end of file  ^KK end  ^K] space ^U undo      ^KR import \\i \\i\n"
+               "\\i \\i^QF find first   ^QC end of file  ^KK end            ^U undo      ^KR import \\i \\i\n"
                "\\i \\i^L  find next    ^QO byte offset  ^KD reformat       ^^ redo      ^KW export \\i \\i\n"
                "}\n"
                "\n"
@@ -102,13 +104,14 @@ const unsigned char * const builtins[] = {
                "\n"
                "{Programs\n"
                "\\i   Help Screen    turn off with ^J     prev. screen ^[,    next screen ^[.     \\i\n"
-               "\\i \\i\\u\\bGOTO\\b\\u                  \\u\\bCOMPILING\\b\\u                    \\u\\bINDENT\\b\\u       \\u\\bSLIDING\\b\\u      \\i \\i\n"
-               "\\i \\i^Q- to column number  ^[C Compile & parse errors   ^K. more     ^W up        \\i \\i\n"
-               "\\i \\i^QI to line number    ^[E Parse errors             ^K, less     ^Z down      \\i \\i\n"
-               "\\i \\i^QP previous place    \\u\\bGOTO AFTER COMPILING\\b\\u         ^KA center   \\u\\bINSERT MATH\\b\\u  \\i \\i\n"
-               "\\i \\i^K= next place        ^[N previous error    \\u\\bSPECIAL\\b\\u             ^[# equation \\i \\i\n"
-               "\\i \\i^Q[ matching brace    ^[M next error        ^[- exec. juppcmd   ^[= result   \\i \\i\n"
-               "\\i \\i \\b\\uFreedroidz\\u:\\b ^KF save current *.nxc file, compile, transfer to the NXT brick \\i \\i\n"
+               "\\i \\i\\u\\bGOTO\\b\\u                               \\u\\bCOMPILING\\b\\u                    \\u\\bSLIDING\\b\\u      \\i \\i\n"
+               "\\i \\i^Q] matching brace, ^Q[ reverse    ^[C compile & parse errors   ^W up        \\i \\i\n"
+               "\\i \\i^Q= merge conflict marker          ^[E parse errors             ^Z down      \\i \\i\n"
+               "\\i \\i^Q- to column number  \\u\\bINDENT\\b\\u       ^KF save, compile & upload to NXT brick   \\i \\i\n"
+               "\\i \\i^QI to line number    ^K. more     \\u\\bGOTO AFTER COMPILING\\b\\u         \\u\\bINSERT MATH\\b\\u  \\i \\i\n"
+               "\\i \\i^QP previous place    ^K, less     ^[N previous error           ^[# equation \\i \\i\n"
+               "\\i \\i^K= next place        ^KA centre   ^[M next error      \\u\\bSPECIAL\\b\\u  ^[= result   \\i \\i\n"
+               "\\i \\i                      ^K] kill whitespace at EOL       ^[- jupp command line \\i \\i\n"
                "}\n"
                "\n"
                "{Search\n"
@@ -142,7 +145,7 @@ const unsigned char * const builtins[] = {
                "\\i \\i go to \\uhttp://sf.net/projects/joe-editor/\\u for upstream bug reports. JUPP 2.8 \\i \\i\n"
                "\\i \\i for DOS compiled by A. Totlis, packed with LHarc 2.13; JUPP 3.x for UNIX\\d(R)\\d \\i \\i\n"
                "\\i \\i at \\uhttp://mirbsd.de/jupp\\u and by \\bThorsten \"\\dmirabilos\\d\" Glaser <\\utg@mirbsd.org\\u>\\b \\i \\i\n"
-               "\\i \\i @(#) blt_in 2014-10-23; 3.1; autoCR-LF; UTF-8 via locale; per-file encoding \\i \\i\n"
+               "\\i \\i @(#) blt_in 2016-10-08; 3.1; autoCR-LF; UTF-8 via locale; per-file encoding \\i \\i\n"
                "}\n"
                "\n"
                "{CharTable\n"
@@ -227,6 +230,7 @@ const unsigned char * const builtins[] = {
                ":main\n"
                ":inherit windows\n"
                "bof,qrepl,\"\\\\[\",quote,\"i\",quote,\"k\",quote,\"l\",quote,\"m ]\\\\+\\\\[\",quote,\"i\",quote,\"k\",quote,\"l\",quote,\"m ]\\\\$\",rtn,rtn,rtn,\"r\",eof   ^K ]\n"
+               "ffirst,\"\\\\^\\\\[<>=]\\\\[<>=]\\\\[<>=]\\\\[<>=]\\\\[<>=]\\\\[<>=]\\\\[<>=]\\\\[ \\\\n]\",rtn,rtn,ltarw                                                      ^Q =\n"
                "splitw,prevw,scratch,\"nbc-Output\",rtn,nextw,save,markk,bol,markb,prevw,prevw,blkcpy,nextw,nextw,rtn,prevw,eol,\"'\",bol,qrepl,\"'\",rtn,rtn,\"'\\\\\\\\''\",rtn,\"r\",backs,backs,backs,bol,\"fn='\",eol,rtn,\"case $fn in\",rtn,\"*.nxc) ;;\",rtn,\"*) echo '==> Error: filename not *.nxc'; exit ;;\",rtn,\"esac\",rtn,\"nbc -d \\\"$fn\\\"; x=$?\",rtn,\"if test $x = 0; then echo '==> OK'; else echo '==> Error code:' $x; fi\",rtn,nmark,filt,\"sh\",rtn,rtn,\"Press ^KQ to close this window!\",rtn   ^K F\n"
                "splitw,prevw,scratch,\"nbc-Output\",rtn,nextw,save,markk,bol,markb,prevw,prevw,blkcpy,nextw,nextw,rtn,prevw,eol,\"'\",bol,qrepl,\"'\",rtn,rtn,\"'\\\\\\\\''\",rtn,\"r\",backs,backs,backs,bol,\"fn='\",eol,rtn,\"case $fn in\",rtn,\"*.nxc) ;;\",rtn,\"*) echo '==> Error: filename not *.nxc'; exit ;;\",rtn,\"esac\",rtn,\"nbc -d \\\"$fn\\\"; x=$?\",rtn,\"if test $x = 0; then echo '==> OK'; else echo '==> Error code:' $x; fi\",rtn,nmark,filt,\"sh\",rtn,rtn,\"Press ^KQ to close this window!\",rtn   ^K f\n"
                "splitw,prevw,scratch,\"nbc-Output\",rtn,nextw,save,markk,bol,markb,prevw,prevw,blkcpy,nextw,nextw,rtn,prevw,eol,\"'\",bol,qrepl,\"'\",rtn,rtn,\"'\\\\\\\\''\",rtn,\"r\",backs,backs,backs,bol,\"fn='\",eol,rtn,\"case $fn in\",rtn,\"*.nxc) ;;\",rtn,\"*) echo '==> Error: filename not *.nxc'; exit ;;\",rtn,\"esac\",rtn,\"nbc -d \\\"$fn\\\"; x=$?\",rtn,\"if test $x = 0; then echo '==> OK'; else echo '==> Error code:' $x; fi\",rtn,nmark,filt,\"sh\",rtn,rtn,\"Press ^KQ to close this window!\",rtn   ^K ^F\n"
@@ -443,11 +447,11 @@ const unsigned char * const builtins[] = {
                "tomarkk                ^Q ^K\n"
                "tomarkk                ^Q k\n"
                "tomarkk                ^[ q k\n"
-               "tomatch                ^Q [\n"
+               "rvmatch                ^Q [\n"
                "tomatch                ^Q ]\n"
-               "tomatch                ^Q ^[\n"
+               "rvmatch                ^Q ^[\n"
                "tomatch                ^Q ^]\n"
-               "tomatch                ^[ q [\n"
+               "rvmatch                ^[ q [\n"
                "tomatch                ^[ q ]\n"
                "tos            ^Q E\n"
                "tos            ^Q ^E\n"
@@ -534,5 +538,5 @@ const unsigned char * const builtins[] = {
                ":querysr\n"
                "type           ^@ TO \xFF\n"
 ,      NULL
-,      "@(#) $MirOS: contrib/code/jupp/builtins.c,v 1.20 2014/10/23 16:34:18 tg Exp $"
+,      "@(#) $MirOS: contrib/code/jupp/builtins.c,v 1.22 2016/10/08 17:56:33 tg Exp $"
 };
diff --git a/cmd.c b/cmd.c
index 088f508..2e5ed6c 100644 (file)
--- a/cmd.c
+++ b/cmd.c
@@ -1,4 +1,4 @@
-/* $MirOS: contrib/code/jupp/cmd.c,v 1.12 2013/08/19 19:19:30 tg Exp $ */
+/* $MirOS: contrib/code/jupp/cmd.c,v 1.15 2016/10/08 14:58:45 tg Exp $ */
 /*
  *     Command execution
  *     Copyright
@@ -128,11 +128,11 @@ CMD cmds[] = {
        {US "crawlr", TYPETW + TYPEPW, ucrawlr, NULL, 1, US "crawll"},
        {US "delbol", TYPETW + TYPEPW + EFIXXCOL + EKILL + EMOD, udelbl, NULL, 1, US "deleol"},
        {US "delch", TYPETW + TYPEPW + ECHKXCOL + EFIXXCOL + EMINOR + EKILL + EMOD, udelch, NULL, 1, US "backs"},
-       {US "deleol", TYPETW + TYPEPW + EKILL + EMOD, udelel, NULL, 1, US "delbol"}, 
-       {US "dellin", TYPETW + TYPEPW + EFIXXCOL + EKILL + EMOD, udelln, NULL, 1, NULL}, 
+       {US "deleol", TYPETW + TYPEPW + EKILL + EMOD, udelel, NULL, 1, US "delbol"},
+       {US "dellin", TYPETW + TYPEPW + EFIXXCOL + EKILL + EMOD, udelln, NULL, 1, NULL},
        {US "delw", TYPETW + TYPEPW + EFIXXCOL + ECHKXCOL + EKILL + EMOD, u_word_delete, NULL, 1, US "backw"},
        {US "dnarw", TYPETW + TYPEPW + EMOVE, udnarw, NULL, 1, US "uparw"},
-       {US "dnarwmenu", TYPEMENU, umdnarw, NULL, 1, US "uparwmenu"}, 
+       {US "dnarwmenu", TYPEMENU, umdnarw, NULL, 1, US "uparwmenu"},
        {US "dnslide", TYPETW + TYPEPW + TYPEMENU + TYPEQW + EMOVE, udnslide, NULL, 1, US "upslide"},
        {US "drop", TYPETW + TYPEPW, udrop, NULL, 0, NULL},
        {US "dupw", TYPETW, uduptw, NULL, 0, NULL},
@@ -163,11 +163,11 @@ CMD cmds[] = {
        {US "hnext", TYPETW + TYPEPW + TYPEQW, u_help_next, NULL, 0, NULL},
        {US "hprev", TYPETW + TYPEPW + TYPEQW, u_help_prev, NULL, 0, NULL},
        {US "insc", TYPETW + TYPEPW + EFIXXCOL + EMOD, uinsc, NULL, 1, US "delch"},
-       {US "insf", TYPETW + TYPEPW + EMOD, uinsf, NULL, 0, NULL}, 
+       {US "insf", TYPETW + TYPEPW + EMOD, uinsf, NULL, 0, NULL},
        {US "keymap", TYPETW + TYPEPW, ukeymap, NULL, 0, NULL},
        {US "lindent", TYPETW + TYPEPW + EFIXXCOL + EMOD + EBLOCK, ulindent, NULL, 1, US "rindent"},
        {US "line", TYPETW + TYPEPW, uline, NULL, 0, NULL},
-       {US "lose", TYPETW + TYPEPW, ulose, NULL, 0, NULL}, 
+       {US "lose", TYPETW + TYPEPW, ulose, NULL, 0, NULL},
        {US "lower", TYPETW + TYPEPW + EMOD + EBLOCK, ulower, NULL, 0, NULL},
        {US "ltarw", TYPETW + TYPEPW /* + EFIXXCOL + ECHKXCOL */, u_goto_left, NULL, 1, US "rtarw"},
        {US "ltarwmenu", TYPEMENU, umltarw, NULL, 1, US "rtarwmenu"},
@@ -181,8 +181,8 @@ CMD cmds[] = {
        {US "mode", TYPETW + TYPEPW + TYPEQW, umode, NULL, 0, NULL},
        {US "msg", TYPETW + TYPEPW + TYPEQW + TYPEMENU, umsg, NULL, 0, NULL},
        {US "nbuf", TYPETW, unbuf, NULL, 1, US "pbuf"},
-       {US "nedge", TYPETW + TYPEPW + EFIXXCOL, unedge, NULL, 1, US "pedge"}, 
-       {US "nextpos", TYPETW + TYPEPW + EFIXXCOL + EMID + EPOS, unextpos, NULL, 1, US "prevpos"}, 
+       {US "nedge", TYPETW + TYPEPW + EFIXXCOL, unedge, NULL, 1, US "pedge"},
+       {US "nextpos", TYPETW + TYPEPW + EFIXXCOL + EMID + EPOS, unextpos, NULL, 1, US "prevpos"},
        {US "nextw", TYPETW + TYPEPW + TYPEMENU + TYPEQW, unextw, NULL, 1, US "prevw"},
        {US "nextword", TYPETW + TYPEPW + EFIXXCOL, u_goto_next, NULL, 1, US "prevword"},
        {US "nmark", TYPETW + TYPEPW, unmark, NULL, 0, NULL},
@@ -192,15 +192,15 @@ CMD cmds[] = {
        {US "open", TYPETW + TYPEPW + EFIXXCOL + EMOD, uopen, NULL, 1, US "deleol"},
        {US "parserr", TYPETW, uparserr, NULL, 0, NULL},
        {US "pbuf", TYPETW, upbuf, NULL, 1, US "nbuf"},
-       {US "pedge", TYPETW + TYPEPW + EFIXXCOL, upedge, NULL, 1, US "nedge"}, 
+       {US "pedge", TYPETW + TYPEPW + EFIXXCOL, upedge, NULL, 1, US "nedge"},
        {US "pgdn", TYPETW + TYPEPW + TYPEMENU + TYPEQW + EMOVE, upgdn, NULL, 1, US "pgup"},
-       {US "pgdnmenu", TYPEMENU, umpgdn, NULL, 1, US "pgupmenu"}, 
+       {US "pgdnmenu", TYPEMENU, umpgdn, NULL, 1, US "pgupmenu"},
        {US "pgup", TYPETW + TYPEPW + TYPEMENU + TYPEQW + EMOVE, upgup, NULL, 1, US "pgdn"},
-       {US "pgupmenu", TYPEMENU, umpgup, NULL, 1, US "pgdnmenu"}, 
+       {US "pgupmenu", TYPEMENU, umpgup, NULL, 1, US "pgdnmenu"},
        {US "picokill", TYPETW + TYPEPW + EFIXXCOL + EKILL + EMOD, upicokill, NULL, 1, NULL},
-       {US "play", TYPETW + TYPEPW + TYPEMENU + TYPEQW, uplay, NULL, 1, NULL}, /* EFIXX? */ 
-       {US "prevpos", TYPETW + TYPEPW + EPOS + EMID + EFIXXCOL, uprevpos, NULL, 1, US "nextpos"}, 
-       {US "prevw", TYPETW + TYPEPW + TYPEMENU + TYPEQW, uprevw, NULL, 1, US "nextw"}, 
+       {US "play", TYPETW + TYPEPW + TYPEMENU + TYPEQW, uplay, NULL, 1, NULL}, /* EFIXX? */
+       {US "prevpos", TYPETW + TYPEPW + EPOS + EMID + EFIXXCOL, uprevpos, NULL, 1, US "nextpos"},
+       {US "prevw", TYPETW + TYPEPW + TYPEMENU + TYPEQW, uprevw, NULL, 1, US "nextw"},
        {US "prevword", TYPETW + TYPEPW + EFIXXCOL + ECHKXCOL, u_goto_prev, NULL, 1, US "nextword"},
        {US "prverr", TYPETW, uprverr, NULL, 1, US "nxterr"},
        {US "psh", TYPETW + TYPEPW + TYPEMENU + TYPEQW, upsh, NULL, 0, NULL},
@@ -213,13 +213,14 @@ CMD cmds[] = {
        {US "record", TYPETW + TYPEPW + TYPEMENU + TYPEQW, urecord, NULL, 0, NULL},
        {US "redo", TYPETW + TYPEPW + EFIXXCOL, uredo, NULL, 1, US "undo"},
        {US "retype", TYPETW + TYPEPW + TYPEMENU + TYPEQW, uretyp, NULL, 0, NULL},
-       {US "rfirst", TYPETW + TYPEPW, prfirst, NULL, 0, NULL}, 
+       {US "rfirst", TYPETW + TYPEPW, prfirst, NULL, 0, NULL},
        {US "rindent", TYPETW + TYPEPW + EFIXXCOL + EMOD + EBLOCK, urindent, NULL, 1, US "lindent"},
        {US "run", TYPETW + TYPEPW, urun, NULL, 0, NULL},
        {US "rsrch", TYPETW + TYPEPW, ursrch, NULL, 0, NULL},
        {US "rtarw", TYPETW + TYPEPW /* + EFIXXCOL */, u_goto_right, NULL, 1, US "ltarw"}, /* EFIX removed for picture mode */
        {US "rtarwmenu", TYPEMENU, umrtarw, NULL, 1, US "ltarwmenu"},
        {US "rtn", TYPETW + TYPEPW + TYPEMENU + TYPEQW + EMOD, urtn, NULL, 1, NULL},
+       {US "rvmatch", TYPETW + TYPEPW + EFIXXCOL, urvmatch, NULL, 0, NULL},
        {US "save", TYPETW, usave, NULL, 0, NULL},
        {US "scratch", TYPETW + TYPEPW, uscratch, NULL, 0, NULL},
        {US "select", TYPETW + TYPEPW, uselect, NULL, 0, NULL},
@@ -241,11 +242,11 @@ CMD cmds[] = {
        {US "tos", TYPETW + TYPEPW + EMOVE, utos, NULL, 0, NULL},
        {US "tw0", TYPETW + TYPEPW + TYPEQW + TYPEMENU, utw0, NULL, 0, NULL},
        {US "tw1", TYPETW + TYPEPW + TYPEQW + TYPEMENU, utw1, NULL, 0, NULL},
-       {US "txt", TYPETW + TYPEPW, utxt, NULL, 0, NULL}, 
+       {US "txt", TYPETW + TYPEPW, utxt, NULL, 0, NULL},
        {US "type", TYPETW + TYPEPW + TYPEQW + TYPEMENU + EMINOR + EMOD, utype, NULL, 1, US "backs"},
        {US "undo", TYPETW + TYPEPW + EFIXXCOL, uundo, NULL, 1, US "redo"},
        {US "uparw", TYPETW + TYPEPW + EMOVE, uuparw, NULL, 1, US "dnarw"},
-       {US "uparwmenu", TYPEMENU, umuparw, NULL, 1, US "dnarwmenu"}, 
+       {US "uparwmenu", TYPEMENU, umuparw, NULL, 1, US "dnarwmenu"},
        {US "upper", TYPETW + TYPEPW + EMOD + EBLOCK, uupper, NULL, 0, NULL},
        {US "upslide", TYPETW + TYPEPW + TYPEMENU + TYPEQW + EMOVE, uupslide, NULL, 1, US "dnslide"},
        {US "yank", TYPETW + TYPEPW + EFIXXCOL + EMOD, uyank, NULL, 1, NULL},
@@ -323,7 +324,7 @@ int execmd(CMD *cmd, int k)
        else
                justkilled = 0;
 
     skip:
+ skip:
 
        /* Make dislayed cursor column equal the actual cursor column
         * for commands which arn't simple vertical movements */
@@ -400,7 +401,8 @@ static int cmdcmplt(BW *bw)
 {
        if (!scmds)
                scmds = getcmds();
-       return simple_cmplt(bw,scmds);
+       /*XXX simple_cmplt does p_goto_bol, better only to last comma */
+       return simple_cmplt(bw, scmds);
 }
 
 static int docmd(BW *bw, unsigned char *s, void *object, int *notify)
index 3b92633..80d2df6 100644 (file)
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61-MirPorts-1 for joe 3.1jupp28.
+# Generated by GNU Autoconf 2.61-MirPorts-1 for joe 3.1jupp29~pre1.
 #
 # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
 # 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
@@ -572,8 +572,8 @@ SHELL=${CONFIG_SHELL-/bin/sh}
 # Identity of this package.
 PACKAGE_NAME='joe'
 PACKAGE_TARNAME='joe'
-PACKAGE_VERSION='3.1jupp28'
-PACKAGE_STRING='joe 3.1jupp28'
+PACKAGE_VERSION='3.1jupp29~pre1'
+PACKAGE_STRING='joe 3.1jupp29~pre1'
 PACKAGE_BUGREPORT=''
 
 ac_unique_file="b.c"
@@ -708,6 +708,12 @@ EGREP
 LN_S
 WANT_TERMIDX_TRUE
 WANT_TERMIDX_FALSE
+sysconfjoesubdir
+joeinitfile
+joeinitcopy
+joeresides
+jrcbefore
+jrcafter
 LIBOBJS
 SPELL
 LTLIBOBJS'
@@ -1223,7 +1229,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures joe 3.1jupp28 to adapt to many kinds of systems.
+\`configure' configures joe 3.1jupp29~pre1 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1294,7 +1300,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of joe 3.1jupp28:";;
+     short | recursive ) echo "Configuration of joe 3.1jupp29~pre1:";;
    esac
   cat <<\_ACEOF
 
@@ -1310,6 +1316,8 @@ Optional Features:
   --disable-search-libs   do not search in any external libraries
   --disable-getpwnam      disable use of getpwnam function
   --disable-termidx       do not build the termidx binary
+  --enable-sysconfjoesubdir=/joe  (default value)
+  --enable-win32reloc     enable win32 self-relocation
   --disable-largefile     omit support for large files
 
 Some influential environment variables:
@@ -1385,7 +1393,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-joe configure 3.1jupp28
+joe configure 3.1jupp29~pre1
 generated by GNU Autoconf 2.61-MirPorts-1
 
 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
@@ -1399,7 +1407,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by joe $as_me 3.1jupp28, which was
+It was created by joe $as_me 3.1jupp29~pre1, which was
 generated by GNU Autoconf 2.61-MirPorts-1.  Invocation command line was
 
   $ $0 $@
@@ -2200,7 +2208,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='joe'
- VERSION='3.1jupp28'
+ VERSION='3.1jupp29~pre1'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -4484,6 +4492,53 @@ else
 fi
 
 
+# Check whether --enable-sysconfjoesubdir was given.
+if test "${enable_sysconfjoesubdir+set}" = set; then
+  enableval=$enable_sysconfjoesubdir; sysconfjoesubdir=$enableval
+else
+  sysconfjoesubdir=yes
+fi
+
+if test x"$sysconfjoesubdir" = x"yes"; then
+       sysconfjoesubdir=/joe
+elif test x"$sysconfjoesubdir" = x"no"; then
+       sysconfjoesubdir=
+fi
+
+
+# Check whether --enable-win32reloc was given.
+if test "${enable_win32reloc+set}" = set; then
+  enableval=$enable_win32reloc; win32reloc=$enableval
+else
+  win32reloc=auto
+fi
+
+test x"$win32reloc" = x"old" || win32reloc=no # currently not implemented
+if test x"$win32reloc" = x"yes"; then
+       joeinitfile='\fBjoerc\fR in the same directory as the binary resides in'
+       joeinitcopy='which resides in the same directory as the binary'
+       joeresides='C:\eProgram\ Files\ejupp32\ejoe.exe'
+       jrcbefore=''
+       jrcafter=' in the same directory as the binary'
+elif test x"$win32reloc" = x"old"; then
+       joeinitfile='\fBc:/windows/system32/joe/joerc\fR'
+       joeinitcopy='which resides in \fBc:/windows/system32/joe/joerc\fR'
+       joeresides='c:/windows/system32/joe.exe'
+       jrcbefore='c:/windows/system32/joe/'
+       jrcafter=''
+else
+       joeinitfile='usually \fB'$sysconfdir$sysconfjoesubdir'/joerc\fR'
+       joeinitcopy='which normally resides in \fB'$sysconfdir$sysconfjoesubdir'/joerc\fR'
+       joeresides=$bindir'/joe'
+       jrcbefore=$sysconfdir$sysconfjoesubdir/
+       jrcafter=''
+fi
+
+
+
+
+
+
 
 # Checks for header files.
 
@@ -10482,7 +10537,7 @@ fi
 
 
 
-ac_config_files="$ac_config_files Makefile joe.1 joerc jmacsrc jstarrc rjoerc jpicorc syntax/c.jsf syntax/perl.jsf syntax/verilog.jsf syntax/sh.jsf syntax/python.jsf syntax/conf.jsf syntax/php.jsf syntax/mail.jsf syntax/pascal.jsf syntax/html.jsf syntax/vhdl.jsf syntax/fortran.jsf syntax/java.jsf syntax/xml.jsf syntax/tcl.jsf charmaps/klingon syntax/lisp.jsf syntax/csh.jsf syntax/mason.jsf syntax/diff.jsf syntax/asm.jsf"
+ac_config_files="$ac_config_files Makefile joe.1 joerc jmacsrc jstarrc rjoerc jpicorc syntax/c.jsf syntax/perl.jsf syntax/verilog.jsf syntax/sh.jsf syntax/python.jsf syntax/conf.jsf syntax/php.jsf syntax/mail.jsf syntax/pascal.jsf syntax/html.jsf syntax/vhdl.jsf syntax/fortran.jsf syntax/java.jsf syntax/xml.jsf syntax/tcl.jsf charmaps/klingon syntax/lisp.jsf syntax/csh.jsf syntax/mason.jsf syntax/diff.jsf syntax/asm.jsf syntax/tex.jsf"
 
 cat >confcache <<\_ACEOF
 # This file is a shell script that caches the results of configure
@@ -10908,7 +10963,7 @@ exec 6>&1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by joe $as_me 3.1jupp28, which was
+This file was extended by joe $as_me 3.1jupp29~pre1, which was
 generated by GNU Autoconf 2.61-MirPorts-1.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -10961,7 +11016,7 @@ Report bugs to <bug-autoconf@gnu.org>."
 _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF
 ac_cs_version="\\
-joe config.status 3.1jupp28
+joe config.status 3.1jupp29~pre1
 configured by $0, generated by GNU Autoconf 2.61-MirPorts-1,
   with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
 
@@ -11104,6 +11159,7 @@ do
     "syntax/mason.jsf") CONFIG_FILES="$CONFIG_FILES syntax/mason.jsf" ;;
     "syntax/diff.jsf") CONFIG_FILES="$CONFIG_FILES syntax/diff.jsf" ;;
     "syntax/asm.jsf") CONFIG_FILES="$CONFIG_FILES syntax/asm.jsf" ;;
+    "syntax/tex.jsf") CONFIG_FILES="$CONFIG_FILES syntax/tex.jsf" ;;
 
   *) { { echo "$as_me:$LINENO: error: invalid argument: $ac_config_target" >&5
 echo "$as_me: error: invalid argument: $ac_config_target" >&2;}
@@ -11261,8 +11317,8 @@ EGREP!$EGREP$ac_delim
 LN_S!$LN_S$ac_delim
 WANT_TERMIDX_TRUE!$WANT_TERMIDX_TRUE$ac_delim
 WANT_TERMIDX_FALSE!$WANT_TERMIDX_FALSE$ac_delim
-LIBOBJS!$LIBOBJS$ac_delim
-SPELL!$SPELL$ac_delim
+sysconfjoesubdir!$sysconfjoesubdir$ac_delim
+joeinitfile!$joeinitfile$ac_delim
 _ACEOF
 
   if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
@@ -11304,10 +11360,16 @@ _ACEOF
 ac_delim='%!_!# '
 for ac_last_try in false false false false false :; do
   cat >conf$$subs.sed <<_ACEOF
+joeinitcopy!$joeinitcopy$ac_delim
+joeresides!$joeresides$ac_delim
+jrcbefore!$jrcbefore$ac_delim
+jrcafter!$jrcafter$ac_delim
+LIBOBJS!$LIBOBJS$ac_delim
+SPELL!$SPELL$ac_delim
 LTLIBOBJS!$LTLIBOBJS$ac_delim
 _ACEOF
 
-  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 1; then
+  if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 7; then
     break
   elif $ac_last_try; then
     { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
index 68a39ec..6a3ed47 100644 (file)
@@ -1,4 +1,4 @@
-# $MirOS: contrib/code/jupp/configure.ac,v 1.46 2014/10/23 16:27:26 tg Exp $
+# $MirOS: contrib/code/jupp/configure.ac,v 1.48 2016/10/08 17:44:17 tg Exp $
 #-
 # Process this file with autoconf to produce a configure script.
 
@@ -6,7 +6,7 @@
 AC_PREREQ(2.54)
 
 #### Here's the only place where to change version number ####
-AC_INIT(joe, 3.1jupp28)
+AC_INIT(joe, 3.1jupp29~pre1)
 #### But see main.c for the Copyright (c) owner and year! ####
 AC_CONFIG_SRCDIR([b.c])
 
@@ -95,6 +95,45 @@ AC_ARG_ENABLE([termidx],
        termidx=$enableval, termidx=yes)
 AM_CONDITIONAL([WANT_TERMIDX], [test x"$termidx" != x"no"])
 
+AC_ARG_ENABLE([sysconfjoesubdir],
+[  --enable-sysconfjoesubdir=/joe  (default value)],
+       [sysconfjoesubdir=$enableval], [sysconfjoesubdir=yes])
+if test x"$sysconfjoesubdir" = x"yes"; then
+       sysconfjoesubdir=/joe
+elif test x"$sysconfjoesubdir" = x"no"; then
+       sysconfjoesubdir=
+fi
+AC_SUBST(sysconfjoesubdir)
+
+AC_ARG_ENABLE([win32reloc],
+[  --enable-win32reloc     enable win32 self-relocation],
+       [win32reloc=$enableval], [win32reloc=auto])
+test x"$win32reloc" = x"old" || win32reloc=no # currently not implemented
+if test x"$win32reloc" = x"yes"; then
+       joeinitfile='\fBjoerc\fR in the same directory as the binary resides in'
+       joeinitcopy='which resides in the same directory as the binary'
+       joeresides='C:\eProgram\ Files\ejupp32\ejoe.exe'
+       jrcbefore=''
+       jrcafter=' in the same directory as the binary'
+elif test x"$win32reloc" = x"old"; then
+       joeinitfile='\fBc:/windows/system32/joe/joerc\fR'
+       joeinitcopy='which resides in \fBc:/windows/system32/joe/joerc\fR'
+       joeresides='c:/windows/system32/joe.exe'
+       jrcbefore='c:/windows/system32/joe/'
+       jrcafter=''
+else
+       joeinitfile='usually \fB'$sysconfdir$sysconfjoesubdir'/joerc\fR'
+       joeinitcopy='which normally resides in \fB'$sysconfdir$sysconfjoesubdir'/joerc\fR'
+       joeresides=$bindir'/joe'
+       jrcbefore=$sysconfdir$sysconfjoesubdir/
+       jrcafter=''
+fi
+AC_SUBST(joeinitfile)
+AC_SUBST(joeinitcopy)
+AC_SUBST(joeresides)
+AC_SUBST(jrcbefore)
+AC_SUBST(jrcafter)
+
 
 # Checks for header files.
 
@@ -206,5 +245,5 @@ syntax/c.jsf syntax/perl.jsf syntax/verilog.jsf syntax/sh.jsf syntax/python.jsf
 syntax/conf.jsf syntax/php.jsf syntax/mail.jsf syntax/pascal.jsf syntax/html.jsf
 syntax/vhdl.jsf syntax/fortran.jsf syntax/java.jsf syntax/xml.jsf syntax/tcl.jsf
 charmaps/klingon syntax/lisp.jsf syntax/csh.jsf syntax/mason.jsf syntax/diff.jsf
-syntax/asm.jsf])
+syntax/asm.jsf syntax/tex.jsf])
 AC_OUTPUT
diff --git a/i18n.c b/i18n.c
index cb449b6..1a438aa 100644 (file)
--- a/i18n.c
+++ b/i18n.c
@@ -1,7 +1,7 @@
 #if 0
 .if "0" == "1"
 #endif
-/* $MirOS: contrib/code/jupp/i18n.c,v 1.14 2014/06/26 18:02:30 tg Exp $ */
+/* $MirOS: contrib/code/jupp/i18n.c,v 1.15 2016/09/01 12:54:41 tg Exp $ */
 /*
  *     UNICODE/ISO-10646 functions for JOE
  *     Copyright
@@ -25,7 +25,7 @@
 #include "utf8.h"
 #include "i18n.h"
 
-/* From: X11/xc/programs/xterm/wcwidth.c,v 1.8 2014/06/24 19:53:53 tg Exp $ */
+/* From: X11/xc/programs/xterm/wcwidth.c,v 1.9 */
 
 struct mb_ucsrange {
        unsigned int beg;
@@ -36,8 +36,8 @@ static size_t mb_ucsbsearch(const struct mb_ucsrange arr[], size_t elems,
     unsigned int val);
 
 /*
- * Generated by MirOS: contrib/code/Snippets/eawparse,v 1.2 2013/11/30 13:45:17 tg Exp $
- * from the Unicode Character Database, Version 7.0.0
+ * Generated from the Unicode Character Database, Version 9.0.0, by
+ * MirOS: contrib/code/Snippets/eawparse,v 1.3 2014/11/16 12:16:24 tg Exp $
  */
 
 static const struct mb_ucsrange mb_ucs_combining[] = {
@@ -67,7 +67,7 @@ static const struct mb_ucsrange mb_ucs_combining[] = {
        { 0x0825, 0x0827 },
        { 0x0829, 0x082D },
        { 0x0859, 0x085B },
-       { 0x08E4, 0x0902 },
+       { 0x08D4, 0x0902 },
        { 0x093A, 0x093A },
        { 0x093C, 0x093C },
        { 0x0941, 0x0948 },
@@ -162,6 +162,7 @@ static const struct mb_ucsrange mb_ucs_combining[] = {
        { 0x17C9, 0x17D3 },
        { 0x17DD, 0x17DD },
        { 0x180B, 0x180E },
+       { 0x1885, 0x1886 },
        { 0x18A9, 0x18A9 },
        { 0x1920, 0x1922 },
        { 0x1927, 0x1928 },
@@ -200,7 +201,7 @@ static const struct mb_ucsrange mb_ucs_combining[] = {
        { 0x1CF4, 0x1CF4 },
        { 0x1CF8, 0x1CF9 },
        { 0x1DC0, 0x1DF5 },
-       { 0x1DFC, 0x1DFF },
+       { 0x1DFB, 0x1DFF },
        { 0x200B, 0x200F },
        { 0x202A, 0x202E },
        { 0x2060, 0x2064 },
@@ -213,13 +214,13 @@ static const struct mb_ucsrange mb_ucs_combining[] = {
        { 0x3099, 0x309A },
        { 0xA66F, 0xA672 },
        { 0xA674, 0xA67D },
-       { 0xA69F, 0xA69F },
+       { 0xA69E, 0xA69F },
        { 0xA6F0, 0xA6F1 },
        { 0xA802, 0xA802 },
        { 0xA806, 0xA806 },
        { 0xA80B, 0xA80B },
        { 0xA825, 0xA826 },
-       { 0xA8C4, 0xA8C4 },
+       { 0xA8C4, 0xA8C5 },
        { 0xA8E0, 0xA8F1 },
        { 0xA926, 0xA92D },
        { 0xA947, 0xA951 },
@@ -246,7 +247,7 @@ static const struct mb_ucsrange mb_ucs_combining[] = {
        { 0xABED, 0xABED },
        { 0xFB1E, 0xFB1E },
        { 0xFE00, 0xFE0F },
-       { 0xFE20, 0xFE2D },
+       { 0xFE20, 0xFE2F },
        { 0xFEFF, 0xFEFF },
        { 0xFFF9, 0xFFFB },
        { 0x101FD, 0x101FD },
@@ -270,16 +271,21 @@ static const struct mb_ucsrange mb_ucs_combining[] = {
        { 0x11173, 0x11173 },
        { 0x11180, 0x11181 },
        { 0x111B6, 0x111BE },
+       { 0x111CA, 0x111CC },
        { 0x1122F, 0x11231 },
        { 0x11234, 0x11234 },
        { 0x11236, 0x11237 },
+       { 0x1123E, 0x1123E },
        { 0x112DF, 0x112DF },
        { 0x112E3, 0x112EA },
-       { 0x11301, 0x11301 },
+       { 0x11300, 0x11301 },
        { 0x1133C, 0x1133C },
        { 0x11340, 0x11340 },
        { 0x11366, 0x1136C },
        { 0x11370, 0x11374 },
+       { 0x11438, 0x1143F },
+       { 0x11442, 0x11444 },
+       { 0x11446, 0x11446 },
        { 0x114B3, 0x114B8 },
        { 0x114BA, 0x114BA },
        { 0x114BF, 0x114C0 },
@@ -287,6 +293,7 @@ static const struct mb_ucsrange mb_ucs_combining[] = {
        { 0x115B2, 0x115B5 },
        { 0x115BC, 0x115BD },
        { 0x115BF, 0x115C0 },
+       { 0x115DC, 0x115DD },
        { 0x11633, 0x1163A },
        { 0x1163D, 0x1163D },
        { 0x1163F, 0x11640 },
@@ -294,6 +301,16 @@ static const struct mb_ucsrange mb_ucs_combining[] = {
        { 0x116AD, 0x116AD },
        { 0x116B0, 0x116B5 },
        { 0x116B7, 0x116B7 },
+       { 0x1171D, 0x1171F },
+       { 0x11722, 0x11725 },
+       { 0x11727, 0x1172B },
+       { 0x11C30, 0x11C36 },
+       { 0x11C38, 0x11C3D },
+       { 0x11C3F, 0x11C3F },
+       { 0x11C92, 0x11CA7 },
+       { 0x11CAA, 0x11CB0 },
+       { 0x11CB2, 0x11CB3 },
+       { 0x11CB5, 0x11CB6 },
        { 0x16AF0, 0x16AF4 },
        { 0x16B30, 0x16B36 },
        { 0x16F8F, 0x16F92 },
@@ -304,7 +321,19 @@ static const struct mb_ucsrange mb_ucs_combining[] = {
        { 0x1D185, 0x1D18B },
        { 0x1D1AA, 0x1D1AD },
        { 0x1D242, 0x1D244 },
+       { 0x1DA00, 0x1DA36 },
+       { 0x1DA3B, 0x1DA6C },
+       { 0x1DA75, 0x1DA75 },
+       { 0x1DA84, 0x1DA84 },
+       { 0x1DA9B, 0x1DA9F },
+       { 0x1DAA1, 0x1DAAF },
+       { 0x1E000, 0x1E006 },
+       { 0x1E008, 0x1E018 },
+       { 0x1E01B, 0x1E021 },
+       { 0x1E023, 0x1E024 },
+       { 0x1E026, 0x1E02A },
        { 0x1E8D0, 0x1E8D6 },
+       { 0x1E944, 0x1E94A },
        { 0xE0001, 0xE0001 },
        { 0xE0020, 0xE007F },
        { 0xE0100, 0xE01EF }
@@ -312,7 +341,40 @@ static const struct mb_ucsrange mb_ucs_combining[] = {
 
 static const struct mb_ucsrange mb_ucs_fullwidth[] = {
        { 0x1100, 0x115F },
+       { 0x231A, 0x231B },
        { 0x2329, 0x232A },
+       { 0x23E9, 0x23EC },
+       { 0x23F0, 0x23F0 },
+       { 0x23F3, 0x23F3 },
+       { 0x25FD, 0x25FE },
+       { 0x2614, 0x2615 },
+       { 0x2648, 0x2653 },
+       { 0x267F, 0x267F },
+       { 0x2693, 0x2693 },
+       { 0x26A1, 0x26A1 },
+       { 0x26AA, 0x26AB },
+       { 0x26BD, 0x26BE },
+       { 0x26C4, 0x26C5 },
+       { 0x26CE, 0x26CE },
+       { 0x26D4, 0x26D4 },
+       { 0x26EA, 0x26EA },
+       { 0x26F2, 0x26F3 },
+       { 0x26F5, 0x26F5 },
+       { 0x26FA, 0x26FA },
+       { 0x26FD, 0x26FD },
+       { 0x2705, 0x2705 },
+       { 0x270A, 0x270B },
+       { 0x2728, 0x2728 },
+       { 0x274C, 0x274C },
+       { 0x274E, 0x274E },
+       { 0x2753, 0x2755 },
+       { 0x2757, 0x2757 },
+       { 0x2795, 0x2797 },
+       { 0x27B0, 0x27B0 },
+       { 0x27BF, 0x27BF },
+       { 0x2B1B, 0x2B1C },
+       { 0x2B50, 0x2B50 },
+       { 0x2B55, 0x2B55 },
        { 0x2E80, 0x303E },
        { 0x3040, 0xA4CF },
        { 0xA960, 0xA97F },
@@ -322,11 +384,49 @@ static const struct mb_ucsrange mb_ucs_fullwidth[] = {
        { 0xFE30, 0xFE6F },
        { 0xFF00, 0xFF60 },
        { 0xFFE0, 0xFFE6 },
+       { 0x16FE0, 0x16FE0 },
+       { 0x17000, 0x187EC },
+       { 0x18800, 0x18AF2 },
        { 0x1B000, 0x1B001 },
+       { 0x1F004, 0x1F004 },
+       { 0x1F0CF, 0x1F0CF },
+       { 0x1F18E, 0x1F18E },
+       { 0x1F191, 0x1F19A },
        { 0x1F200, 0x1F202 },
-       { 0x1F210, 0x1F23A },
+       { 0x1F210, 0x1F23B },
        { 0x1F240, 0x1F248 },
        { 0x1F250, 0x1F251 },
+       { 0x1F300, 0x1F320 },
+       { 0x1F32D, 0x1F335 },
+       { 0x1F337, 0x1F37C },
+       { 0x1F37E, 0x1F393 },
+       { 0x1F3A0, 0x1F3CA },
+       { 0x1F3CF, 0x1F3D3 },
+       { 0x1F3E0, 0x1F3F0 },
+       { 0x1F3F4, 0x1F3F4 },
+       { 0x1F3F8, 0x1F43E },
+       { 0x1F440, 0x1F440 },
+       { 0x1F442, 0x1F4FC },
+       { 0x1F4FF, 0x1F53D },
+       { 0x1F54B, 0x1F54E },
+       { 0x1F550, 0x1F567 },
+       { 0x1F57A, 0x1F57A },
+       { 0x1F595, 0x1F596 },
+       { 0x1F5A4, 0x1F5A4 },
+       { 0x1F5FB, 0x1F64F },
+       { 0x1F680, 0x1F6C5 },
+       { 0x1F6CC, 0x1F6CC },
+       { 0x1F6D0, 0x1F6D2 },
+       { 0x1F6EB, 0x1F6EC },
+       { 0x1F6F4, 0x1F6F6 },
+       { 0x1F910, 0x1F91E },
+       { 0x1F920, 0x1F927 },
+       { 0x1F930, 0x1F930 },
+       { 0x1F933, 0x1F93E },
+       { 0x1F940, 0x1F94B },
+       { 0x1F950, 0x1F95E },
+       { 0x1F980, 0x1F991 },
+       { 0x1F9C0, 0x1F9C0 },
        { 0x20000, 0x2FFFD },
        { 0x30000, 0x3FFFD }
 };
@@ -679,6 +779,7 @@ static const struct mb_ucsrange data_wctype_upper[] = {
        { 0x10A0, 0x10C5 },
        { 0x10C7, 0x10C7 },
        { 0x10CD, 0x10CD },
+       { 0x13A0, 0x13F5 },
        { 0x1E00, 0x1E00 },
        { 0x1E02, 0x1E02 },
        { 0x1E04, 0x1E04 },
@@ -985,11 +1086,15 @@ static const struct mb_ucsrange data_wctype_upper[] = {
        { 0xA7A4, 0xA7A4 },
        { 0xA7A6, 0xA7A6 },
        { 0xA7A8, 0xA7A8 },
-       { 0xA7AA, 0xA7AD },
-       { 0xA7B0, 0xA7B1 },
+       { 0xA7AA, 0xA7AE },
+       { 0xA7B0, 0xA7B4 },
+       { 0xA7B6, 0xA7B6 },
        { 0xFF21, 0xFF3A },
        { 0x10400, 0x10427 },
-       { 0x118A0, 0x118BF }
+       { 0x104B0, 0x104D3 },
+       { 0x10C80, 0x10CB2 },
+       { 0x118A0, 0x118BF },
+       { 0x1E900, 0x1E921 }
 };
 
 MAKE_ISW(upper)
@@ -1145,8 +1250,7 @@ static const struct mb_ucsrange data_wctype_lower[] = {
        { 0x0260, 0x0261 },
        { 0x0263, 0x0263 },
        { 0x0265, 0x0266 },
-       { 0x0268, 0x0269 },
-       { 0x026B, 0x026C },
+       { 0x0268, 0x026C },
        { 0x026F, 0x026F },
        { 0x0271, 0x0272 },
        { 0x0275, 0x0275 },
@@ -1155,7 +1259,7 @@ static const struct mb_ucsrange data_wctype_lower[] = {
        { 0x0283, 0x0283 },
        { 0x0287, 0x028C },
        { 0x0292, 0x0292 },
-       { 0x029E, 0x029E },
+       { 0x029D, 0x029E },
        { 0x0345, 0x0345 },
        { 0x0371, 0x0371 },
        { 0x0373, 0x0373 },
@@ -1281,6 +1385,8 @@ static const struct mb_ucsrange data_wctype_lower[] = {
        { 0x052D, 0x052D },
        { 0x052F, 0x052F },
        { 0x0561, 0x0586 },
+       { 0x13F8, 0x13FD },
+       { 0x1C80, 0x1C88 },
        { 0x1D79, 0x1D79 },
        { 0x1D7D, 0x1D7D },
        { 0x1E01, 0x1E01 },
@@ -1591,9 +1697,16 @@ static const struct mb_ucsrange data_wctype_lower[] = {
        { 0xA7A5, 0xA7A5 },
        { 0xA7A7, 0xA7A7 },
        { 0xA7A9, 0xA7A9 },
+       { 0xA7B5, 0xA7B5 },
+       { 0xA7B7, 0xA7B7 },
+       { 0xAB53, 0xAB53 },
+       { 0xAB70, 0xABBF },
        { 0xFF41, 0xFF5A },
        { 0x10428, 0x1044F },
-       { 0x118C0, 0x118DF }
+       { 0x104D8, 0x104FB },
+       { 0x10CC0, 0x10CF2 },
+       { 0x118C0, 0x118DF },
+       { 0x1E922, 0x1E943 }
 };
 
 MAKE_ISW(lower)
@@ -1650,7 +1763,8 @@ static const struct mb_ucsrange data_wctype_alpha[] = {
        { 0x0824, 0x0824 },
        { 0x0828, 0x0828 },
        { 0x0840, 0x0858 },
-       { 0x08A0, 0x08B2 },
+       { 0x08A0, 0x08B4 },
+       { 0x08B6, 0x08BD },
        { 0x0904, 0x0939 },
        { 0x093D, 0x093D },
        { 0x0950, 0x0950 },
@@ -1686,6 +1800,7 @@ static const struct mb_ucsrange data_wctype_alpha[] = {
        { 0x0ABD, 0x0ABD },
        { 0x0AD0, 0x0AD0 },
        { 0x0AE0, 0x0AE1 },
+       { 0x0AF9, 0x0AF9 },
        { 0x0B05, 0x0B0C },
        { 0x0B0F, 0x0B10 },
        { 0x0B13, 0x0B28 },
@@ -1712,8 +1827,9 @@ static const struct mb_ucsrange data_wctype_alpha[] = {
        { 0x0C12, 0x0C28 },
        { 0x0C2A, 0x0C39 },
        { 0x0C3D, 0x0C3D },
-       { 0x0C58, 0x0C59 },
+       { 0x0C58, 0x0C5A },
        { 0x0C60, 0x0C61 },
+       { 0x0C80, 0x0C80 },
        { 0x0C85, 0x0C8C },
        { 0x0C8E, 0x0C90 },
        { 0x0C92, 0x0CA8 },
@@ -1728,7 +1844,8 @@ static const struct mb_ucsrange data_wctype_alpha[] = {
        { 0x0D12, 0x0D3A },
        { 0x0D3D, 0x0D3D },
        { 0x0D4E, 0x0D4E },
-       { 0x0D60, 0x0D61 },
+       { 0x0D54, 0x0D56 },
+       { 0x0D5F, 0x0D61 },
        { 0x0D7A, 0x0D7F },
        { 0x0D85, 0x0D96 },
        { 0x0D9A, 0x0DB1 },
@@ -1789,7 +1906,8 @@ static const struct mb_ucsrange data_wctype_alpha[] = {
        { 0x1312, 0x1315 },
        { 0x1318, 0x135A },
        { 0x1380, 0x138F },
-       { 0x13A0, 0x13F4 },
+       { 0x13A0, 0x13F5 },
+       { 0x13F8, 0x13FD },
        { 0x1401, 0x166C },
        { 0x166F, 0x167F },
        { 0x1681, 0x169A },
@@ -1805,14 +1923,15 @@ static const struct mb_ucsrange data_wctype_alpha[] = {
        { 0x17D7, 0x17D7 },
        { 0x17DC, 0x17DC },
        { 0x1820, 0x1877 },
-       { 0x1880, 0x18A8 },
+       { 0x1880, 0x1884 },
+       { 0x1887, 0x18A8 },
        { 0x18AA, 0x18AA },
        { 0x18B0, 0x18F5 },
        { 0x1900, 0x191E },
        { 0x1950, 0x196D },
        { 0x1970, 0x1974 },
        { 0x1980, 0x19AB },
-       { 0x19C1, 0x19C7 },
+       { 0x19B0, 0x19C9 },
        { 0x1A00, 0x1A16 },
        { 0x1A20, 0x1A54 },
        { 0x1AA7, 0x1AA7 },
@@ -1824,6 +1943,7 @@ static const struct mb_ucsrange data_wctype_alpha[] = {
        { 0x1C00, 0x1C23 },
        { 0x1C4D, 0x1C4F },
        { 0x1C5A, 0x1C7D },
+       { 0x1C80, 0x1C88 },
        { 0x1CE9, 0x1CEC },
        { 0x1CEE, 0x1CF1 },
        { 0x1CF5, 0x1CF6 },
@@ -1898,7 +2018,7 @@ static const struct mb_ucsrange data_wctype_alpha[] = {
        { 0x31A0, 0x31BA },
        { 0x31F0, 0x31FF },
        { 0x3400, 0x4DB5 },
-       { 0x4E00, 0x9FCC },
+       { 0x4E00, 0x9FD5 },
        { 0xA000, 0xA48C },
        { 0xA4D0, 0xA4FD },
        { 0xA500, 0xA60C },
@@ -1909,9 +2029,8 @@ static const struct mb_ucsrange data_wctype_alpha[] = {
        { 0xA6A0, 0xA6E5 },
        { 0xA717, 0xA71F },
        { 0xA722, 0xA788 },
-       { 0xA78B, 0xA78E },
-       { 0xA790, 0xA7AD },
-       { 0xA7B0, 0xA7B1 },
+       { 0xA78B, 0xA7AE },
+       { 0xA7B0, 0xA7B7 },
        { 0xA7F7, 0xA801 },
        { 0xA803, 0xA805 },
        { 0xA807, 0xA80A },
@@ -1920,6 +2039,7 @@ static const struct mb_ucsrange data_wctype_alpha[] = {
        { 0xA882, 0xA8B3 },
        { 0xA8F2, 0xA8F7 },
        { 0xA8FB, 0xA8FB },
+       { 0xA8FD, 0xA8FD },
        { 0xA90A, 0xA925 },
        { 0xA930, 0xA946 },
        { 0xA960, 0xA97C },
@@ -1948,9 +2068,8 @@ static const struct mb_ucsrange data_wctype_alpha[] = {
        { 0xAB20, 0xAB26 },
        { 0xAB28, 0xAB2E },
        { 0xAB30, 0xAB5A },
-       { 0xAB5C, 0xAB5F },
-       { 0xAB64, 0xAB65 },
-       { 0xABC0, 0xABE2 },
+       { 0xAB5C, 0xAB65 },
+       { 0xAB70, 0xABE2 },
        { 0xAC00, 0xD7A3 },
        { 0xD7B0, 0xD7C6 },
        { 0xD7CB, 0xD7FB },
@@ -1996,6 +2115,8 @@ static const struct mb_ucsrange data_wctype_alpha[] = {
        { 0x103A0, 0x103C3 },
        { 0x103C8, 0x103CF },
        { 0x10400, 0x1049D },
+       { 0x104B0, 0x104D3 },
+       { 0x104D8, 0x104FB },
        { 0x10500, 0x10527 },
        { 0x10530, 0x10563 },
        { 0x10600, 0x10736 },
@@ -2009,6 +2130,8 @@ static const struct mb_ucsrange data_wctype_alpha[] = {
        { 0x1083F, 0x10855 },
        { 0x10860, 0x10876 },
        { 0x10880, 0x1089E },
+       { 0x108E0, 0x108F2 },
+       { 0x108F4, 0x108F5 },
        { 0x10900, 0x10915 },
        { 0x10920, 0x10939 },
        { 0x10980, 0x109B7 },
@@ -2026,6 +2149,8 @@ static const struct mb_ucsrange data_wctype_alpha[] = {
        { 0x10B60, 0x10B72 },
        { 0x10B80, 0x10B91 },
        { 0x10C00, 0x10C48 },
+       { 0x10C80, 0x10CB2 },
+       { 0x10CC0, 0x10CF2 },
        { 0x11003, 0x11037 },
        { 0x11083, 0x110AF },
        { 0x110D0, 0x110E8 },
@@ -2035,8 +2160,14 @@ static const struct mb_ucsrange data_wctype_alpha[] = {
        { 0x11183, 0x111B2 },
        { 0x111C1, 0x111C4 },
        { 0x111DA, 0x111DA },
+       { 0x111DC, 0x111DC },
        { 0x11200, 0x11211 },
        { 0x11213, 0x1122B },
+       { 0x11280, 0x11286 },
+       { 0x11288, 0x11288 },
+       { 0x1128A, 0x1128D },
+       { 0x1128F, 0x1129D },
+       { 0x1129F, 0x112A8 },
        { 0x112B0, 0x112DE },
        { 0x11305, 0x1130C },
        { 0x1130F, 0x11310 },
@@ -2045,19 +2176,30 @@ static const struct mb_ucsrange data_wctype_alpha[] = {
        { 0x11332, 0x11333 },
        { 0x11335, 0x11339 },
        { 0x1133D, 0x1133D },
+       { 0x11350, 0x11350 },
        { 0x1135D, 0x11361 },
+       { 0x11400, 0x11434 },
+       { 0x11447, 0x1144A },
        { 0x11480, 0x114AF },
        { 0x114C4, 0x114C5 },
        { 0x114C7, 0x114C7 },
        { 0x11580, 0x115AE },
+       { 0x115D8, 0x115DB },
        { 0x11600, 0x1162F },
        { 0x11644, 0x11644 },
        { 0x11680, 0x116AA },
+       { 0x11700, 0x11719 },
        { 0x118A0, 0x118DF },
        { 0x118FF, 0x118FF },
        { 0x11AC0, 0x11AF8 },
-       { 0x12000, 0x12398 },
+       { 0x11C00, 0x11C08 },
+       { 0x11C0A, 0x11C2E },
+       { 0x11C40, 0x11C40 },
+       { 0x11C72, 0x11C8F },
+       { 0x12000, 0x12399 },
+       { 0x12480, 0x12543 },
        { 0x13000, 0x1342E },
+       { 0x14400, 0x14646 },
        { 0x16800, 0x16A38 },
        { 0x16A40, 0x16A5E },
        { 0x16AD0, 0x16AED },
@@ -2068,6 +2210,9 @@ static const struct mb_ucsrange data_wctype_alpha[] = {
        { 0x16F00, 0x16F44 },
        { 0x16F50, 0x16F50 },
        { 0x16F93, 0x16F9F },
+       { 0x16FE0, 0x16FE0 },
+       { 0x17000, 0x187EC },
+       { 0x18800, 0x18AF2 },
        { 0x1B000, 0x1B001 },
        { 0x1BC00, 0x1BC6A },
        { 0x1BC70, 0x1BC7C },
@@ -2104,6 +2249,7 @@ static const struct mb_ucsrange data_wctype_alpha[] = {
        { 0x1D7AA, 0x1D7C2 },
        { 0x1D7C4, 0x1D7CB },
        { 0x1E800, 0x1E8C4 },
+       { 0x1E900, 0x1E943 },
        { 0x1EE00, 0x1EE03 },
        { 0x1EE05, 0x1EE1F },
        { 0x1EE21, 0x1EE22 },
@@ -2140,6 +2286,7 @@ static const struct mb_ucsrange data_wctype_alpha[] = {
        { 0x20000, 0x2A6D6 },
        { 0x2A700, 0x2B734 },
        { 0x2B740, 0x2B81D },
+       { 0x2B820, 0x2CEA1 },
        { 0x2F800, 0x2FA1D }
 };
 
@@ -2156,8 +2303,8 @@ int joe_iswdigit(struct charmap *foo, int c)
 }
 
 /*
- * this includes ;WS;
- * except U+2007 (<noBreak> FIGURE SPACE)
+ * plus ;WS;
+ *  except U+2007 (<noBreak> FIGURE SPACE)
  * plus U+200B (ZERO WIDTH SPACE)
  * plus U+2029 (PARAGRAPH SEPARATOR)
  */
@@ -2238,7 +2385,7 @@ static const struct mb_ucsrange data_wctype_punct[] = {
        { 0x0830, 0x083E },
        { 0x0859, 0x085B },
        { 0x085E, 0x085E },
-       { 0x08E4, 0x0903 },
+       { 0x08D4, 0x0903 },
        { 0x093A, 0x093C },
        { 0x093E, 0x094F },
        { 0x0951, 0x0957 },
@@ -2302,10 +2449,10 @@ static const struct mb_ucsrange data_wctype_punct[] = {
        { 0x0D3E, 0x0D44 },
        { 0x0D46, 0x0D48 },
        { 0x0D4A, 0x0D4D },
-       { 0x0D57, 0x0D57 },
+       { 0x0D4F, 0x0D4F },
+       { 0x0D57, 0x0D5E },
        { 0x0D62, 0x0D63 },
-       { 0x0D66, 0x0D75 },
-       { 0x0D79, 0x0D79 },
+       { 0x0D66, 0x0D79 },
        { 0x0D82, 0x0D83 },
        { 0x0DCA, 0x0DCA },
        { 0x0DCF, 0x0DD4 },
@@ -2356,13 +2503,12 @@ static const struct mb_ucsrange data_wctype_punct[] = {
        { 0x17F0, 0x17F9 },
        { 0x1800, 0x180E },
        { 0x1810, 0x1819 },
+       { 0x1885, 0x1886 },
        { 0x18A9, 0x18A9 },
        { 0x1920, 0x192B },
        { 0x1930, 0x193B },
        { 0x1940, 0x1940 },
        { 0x1944, 0x194F },
-       { 0x19B0, 0x19C0 },
-       { 0x19C8, 0x19C9 },
        { 0x19D0, 0x19DA },
        { 0x19DE, 0x19FF },
        { 0x1A17, 0x1A1B },
@@ -2392,7 +2538,7 @@ static const struct mb_ucsrange data_wctype_punct[] = {
        { 0x1CF2, 0x1CF4 },
        { 0x1CF8, 0x1CF9 },
        { 0x1DC0, 0x1DF5 },
-       { 0x1DFC, 0x1DFF },
+       { 0x1DFB, 0x1DFF },
        { 0x1FBD, 0x1FBD },
        { 0x1FBF, 0x1FC1 },
        { 0x1FCD, 0x1FCF },
@@ -2403,7 +2549,7 @@ static const struct mb_ucsrange data_wctype_punct[] = {
        { 0x2066, 0x2070 },
        { 0x2074, 0x207E },
        { 0x2080, 0x208E },
-       { 0x20A0, 0x20BD },
+       { 0x20A0, 0x20BE },
        { 0x20D0, 0x20F0 },
        { 0x2100, 0x2101 },
        { 0x2103, 0x2106 },
@@ -2420,8 +2566,8 @@ static const struct mb_ucsrange data_wctype_punct[] = {
        { 0x214A, 0x214D },
        { 0x214F, 0x215F },
        { 0x2180, 0x2182 },
-       { 0x2185, 0x2189 },
-       { 0x2190, 0x23FA },
+       { 0x2185, 0x218B },
+       { 0x2190, 0x23FE },
        { 0x2400, 0x2426 },
        { 0x2440, 0x244A },
        { 0x2460, 0x24B5 },
@@ -2430,13 +2576,14 @@ static const struct mb_ucsrange data_wctype_punct[] = {
        { 0x2B98, 0x2BB9 },
        { 0x2BBD, 0x2BC8 },
        { 0x2BCA, 0x2BD1 },
+       { 0x2BEC, 0x2BEF },
        { 0x2CE5, 0x2CEA },
        { 0x2CEF, 0x2CF1 },
        { 0x2CF9, 0x2CFF },
        { 0x2D70, 0x2D70 },
        { 0x2D7F, 0x2D7F },
        { 0x2DE0, 0x2E2E },
-       { 0x2E30, 0x2E42 },
+       { 0x2E30, 0x2E44 },
        { 0x2E80, 0x2E99 },
        { 0x2E9B, 0x2EF3 },
        { 0x2F00, 0x2FD5 },
@@ -2459,7 +2606,7 @@ static const struct mb_ucsrange data_wctype_punct[] = {
        { 0xA60D, 0xA60F },
        { 0xA620, 0xA629 },
        { 0xA66F, 0xA67E },
-       { 0xA69F, 0xA69F },
+       { 0xA69E, 0xA69F },
        { 0xA6E6, 0xA6F7 },
        { 0xA700, 0xA716 },
        { 0xA720, 0xA721 },
@@ -2471,10 +2618,11 @@ static const struct mb_ucsrange data_wctype_punct[] = {
        { 0xA830, 0xA839 },
        { 0xA874, 0xA877 },
        { 0xA880, 0xA881 },
-       { 0xA8B4, 0xA8C4 },
+       { 0xA8B4, 0xA8C5 },
        { 0xA8CE, 0xA8D9 },
        { 0xA8E0, 0xA8F1 },
        { 0xA8F8, 0xA8FA },
+       { 0xA8FC, 0xA8FC },
        { 0xA900, 0xA909 },
        { 0xA926, 0xA92F },
        { 0xA947, 0xA953 },
@@ -2510,8 +2658,7 @@ static const struct mb_ucsrange data_wctype_punct[] = {
        { 0xFD3E, 0xFD3F },
        { 0xFDFC, 0xFDFD },
        { 0xFE00, 0xFE19 },
-       { 0xFE20, 0xFE2D },
-       { 0xFE30, 0xFE52 },
+       { 0xFE20, 0xFE52 },
        { 0xFE54, 0xFE66 },
        { 0xFE68, 0xFE6B },
        { 0xFEFF, 0xFEFF },
@@ -2523,7 +2670,7 @@ static const struct mb_ucsrange data_wctype_punct[] = {
        { 0xFFF9, 0xFFFD },
        { 0x10100, 0x10102 },
        { 0x10107, 0x10133 },
-       { 0x10137, 0x1018C },
+       { 0x10137, 0x1018E },
        { 0x10190, 0x1019B },
        { 0x101A0, 0x101A0 },
        { 0x101D0, 0x101FD },
@@ -2539,9 +2686,13 @@ static const struct mb_ucsrange data_wctype_punct[] = {
        { 0x10857, 0x1085F },
        { 0x10877, 0x1087F },
        { 0x108A7, 0x108AF },
+       { 0x108FB, 0x108FF },
        { 0x10916, 0x1091B },
        { 0x1091F, 0x1091F },
        { 0x1093F, 0x1093F },
+       { 0x109BC, 0x109BD },
+       { 0x109C0, 0x109CF },
+       { 0x109D2, 0x109FF },
        { 0x10A01, 0x10A03 },
        { 0x10A05, 0x10A06 },
        { 0x10A0C, 0x10A0F },
@@ -2558,6 +2709,7 @@ static const struct mb_ucsrange data_wctype_punct[] = {
        { 0x10B78, 0x10B7F },
        { 0x10B99, 0x10B9C },
        { 0x10BA9, 0x10BAF },
+       { 0x10CFA, 0x10CFF },
        { 0x10E60, 0x10E7E },
        { 0x11000, 0x11002 },
        { 0x11038, 0x1104D },
@@ -2571,14 +2723,16 @@ static const struct mb_ucsrange data_wctype_punct[] = {
        { 0x11173, 0x11175 },
        { 0x11180, 0x11182 },
        { 0x111B3, 0x111C0 },
-       { 0x111C5, 0x111C8 },
-       { 0x111CD, 0x111CD },
+       { 0x111C5, 0x111CD },
        { 0x111D0, 0x111D9 },
+       { 0x111DB, 0x111DB },
+       { 0x111DD, 0x111DF },
        { 0x111E1, 0x111F4 },
-       { 0x1122C, 0x1123D },
+       { 0x1122C, 0x1123E },
+       { 0x112A9, 0x112A9 },
        { 0x112DF, 0x112EA },
        { 0x112F0, 0x112F9 },
-       { 0x11301, 0x11303 },
+       { 0x11300, 0x11303 },
        { 0x1133C, 0x1133C },
        { 0x1133E, 0x11344 },
        { 0x11347, 0x11348 },
@@ -2587,16 +2741,31 @@ static const struct mb_ucsrange data_wctype_punct[] = {
        { 0x11362, 0x11363 },
        { 0x11366, 0x1136C },
        { 0x11370, 0x11374 },
+       { 0x11435, 0x11446 },
+       { 0x1144B, 0x11459 },
+       { 0x1145B, 0x1145B },
+       { 0x1145D, 0x1145D },
        { 0x114B0, 0x114C3 },
        { 0x114C6, 0x114C6 },
        { 0x114D0, 0x114D9 },
        { 0x115AF, 0x115B5 },
-       { 0x115B8, 0x115C9 },
+       { 0x115B8, 0x115D7 },
+       { 0x115DC, 0x115DD },
        { 0x11630, 0x11643 },
        { 0x11650, 0x11659 },
+       { 0x11660, 0x1166C },
        { 0x116AB, 0x116B7 },
        { 0x116C0, 0x116C9 },
+       { 0x1171D, 0x1172B },
+       { 0x11730, 0x1173F },
        { 0x118E0, 0x118F2 },
+       { 0x11C2F, 0x11C36 },
+       { 0x11C38, 0x11C3F },
+       { 0x11C41, 0x11C45 },
+       { 0x11C50, 0x11C6C },
+       { 0x11C70, 0x11C71 },
+       { 0x11C92, 0x11CA7 },
+       { 0x11CA9, 0x11CB6 },
        { 0x12400, 0x1246E },
        { 0x12470, 0x12474 },
        { 0x16A60, 0x16A69 },
@@ -2611,7 +2780,7 @@ static const struct mb_ucsrange data_wctype_punct[] = {
        { 0x1BC9C, 0x1BCA3 },
        { 0x1D000, 0x1D0F5 },
        { 0x1D100, 0x1D126 },
-       { 0x1D129, 0x1D1DD },
+       { 0x1D129, 0x1D1E8 },
        { 0x1D200, 0x1D245 },
        { 0x1D300, 0x1D356 },
        { 0x1D360, 0x1D371 },
@@ -2625,8 +2794,18 @@ static const struct mb_ucsrange data_wctype_punct[] = {
        { 0x1D789, 0x1D789 },
        { 0x1D7A9, 0x1D7A9 },
        { 0x1D7C3, 0x1D7C3 },
-       { 0x1D7CE, 0x1D7FF },
+       { 0x1D7CE, 0x1DA8B },
+       { 0x1DA9B, 0x1DA9F },
+       { 0x1DAA1, 0x1DAAF },
+       { 0x1E000, 0x1E006 },
+       { 0x1E008, 0x1E018 },
+       { 0x1E01B, 0x1E021 },
+       { 0x1E023, 0x1E024 },
+       { 0x1E026, 0x1E02A },
        { 0x1E8C7, 0x1E8D6 },
+       { 0x1E944, 0x1E94A },
+       { 0x1E950, 0x1E959 },
+       { 0x1E95E, 0x1E95F },
        { 0x1EEF0, 0x1EEF1 },
        { 0x1F000, 0x1F02B },
        { 0x1F030, 0x1F093 },
@@ -2637,23 +2816,14 @@ static const struct mb_ucsrange data_wctype_punct[] = {
        { 0x1F100, 0x1F10C },
        { 0x1F110, 0x1F12E },
        { 0x1F130, 0x1F16B },
-       { 0x1F170, 0x1F19A },
+       { 0x1F170, 0x1F1AC },
        { 0x1F1E6, 0x1F202 },
-       { 0x1F210, 0x1F23A },
+       { 0x1F210, 0x1F23B },
        { 0x1F240, 0x1F248 },
        { 0x1F250, 0x1F251 },
-       { 0x1F300, 0x1F32C },
-       { 0x1F330, 0x1F37D },
-       { 0x1F380, 0x1F3CE },
-       { 0x1F3D4, 0x1F3F7 },
-       { 0x1F400, 0x1F4FE },
-       { 0x1F500, 0x1F54A },
-       { 0x1F550, 0x1F579 },
-       { 0x1F57B, 0x1F5A3 },
-       { 0x1F5A5, 0x1F642 },
-       { 0x1F645, 0x1F6CF },
+       { 0x1F300, 0x1F6D2 },
        { 0x1F6E0, 0x1F6EC },
-       { 0x1F6F0, 0x1F6F3 },
+       { 0x1F6F0, 0x1F6F6 },
        { 0x1F700, 0x1F773 },
        { 0x1F780, 0x1F7D4 },
        { 0x1F800, 0x1F80B },
@@ -2661,6 +2831,14 @@ static const struct mb_ucsrange data_wctype_punct[] = {
        { 0x1F850, 0x1F859 },
        { 0x1F860, 0x1F887 },
        { 0x1F890, 0x1F8AD },
+       { 0x1F910, 0x1F91E },
+       { 0x1F920, 0x1F927 },
+       { 0x1F930, 0x1F930 },
+       { 0x1F933, 0x1F93E },
+       { 0x1F940, 0x1F94B },
+       { 0x1F950, 0x1F95E },
+       { 0x1F980, 0x1F991 },
+       { 0x1F9C0, 0x1F9C0 },
        { 0xE0001, 0xE0001 },
        { 0xE0020, 0xE007F },
        { 0xE0100, 0xE01EF },
@@ -2695,8 +2873,9 @@ static const struct mb_ucsrange data_wctype_graph[] = {
        { 0x0830, 0x083E },
        { 0x0840, 0x085B },
        { 0x085E, 0x085E },
-       { 0x08A0, 0x08B2 },
-       { 0x08E4, 0x0983 },
+       { 0x08A0, 0x08B4 },
+       { 0x08B6, 0x08BD },
+       { 0x08D4, 0x0983 },
        { 0x0985, 0x098C },
        { 0x098F, 0x0990 },
        { 0x0993, 0x09A8 },
@@ -2739,6 +2918,7 @@ static const struct mb_ucsrange data_wctype_graph[] = {
        { 0x0AD0, 0x0AD0 },
        { 0x0AE0, 0x0AE3 },
        { 0x0AE6, 0x0AF1 },
+       { 0x0AF9, 0x0AF9 },
        { 0x0B01, 0x0B03 },
        { 0x0B05, 0x0B0C },
        { 0x0B0F, 0x0B10 },
@@ -2778,11 +2958,10 @@ static const struct mb_ucsrange data_wctype_graph[] = {
        { 0x0C46, 0x0C48 },
        { 0x0C4A, 0x0C4D },
        { 0x0C55, 0x0C56 },
-       { 0x0C58, 0x0C59 },
+       { 0x0C58, 0x0C5A },
        { 0x0C60, 0x0C63 },
        { 0x0C66, 0x0C6F },
-       { 0x0C78, 0x0C7F },
-       { 0x0C81, 0x0C83 },
+       { 0x0C78, 0x0C83 },
        { 0x0C85, 0x0C8C },
        { 0x0C8E, 0x0C90 },
        { 0x0C92, 0x0CA8 },
@@ -2802,11 +2981,9 @@ static const struct mb_ucsrange data_wctype_graph[] = {
        { 0x0D12, 0x0D3A },
        { 0x0D3D, 0x0D44 },
        { 0x0D46, 0x0D48 },
-       { 0x0D4A, 0x0D4E },
-       { 0x0D57, 0x0D57 },
-       { 0x0D60, 0x0D63 },
-       { 0x0D66, 0x0D75 },
-       { 0x0D79, 0x0D7F },
+       { 0x0D4A, 0x0D4F },
+       { 0x0D54, 0x0D63 },
+       { 0x0D66, 0x0D7F },
        { 0x0D82, 0x0D83 },
        { 0x0D85, 0x0D96 },
        { 0x0D9A, 0x0DB1 },
@@ -2866,7 +3043,8 @@ static const struct mb_ucsrange data_wctype_graph[] = {
        { 0x1318, 0x135A },
        { 0x135D, 0x137C },
        { 0x1380, 0x1399 },
-       { 0x13A0, 0x13F4 },
+       { 0x13A0, 0x13F5 },
+       { 0x13F8, 0x13FD },
        { 0x1400, 0x169C },
        { 0x16A0, 0x16F8 },
        { 0x1700, 0x170C },
@@ -2905,12 +3083,12 @@ static const struct mb_ucsrange data_wctype_graph[] = {
        { 0x1B80, 0x1BF3 },
        { 0x1BFC, 0x1C37 },
        { 0x1C3B, 0x1C49 },
-       { 0x1C4D, 0x1C7F },
+       { 0x1C4D, 0x1C88 },
        { 0x1CC0, 0x1CC7 },
        { 0x1CD0, 0x1CF6 },
        { 0x1CF8, 0x1CF9 },
        { 0x1D00, 0x1DF5 },
-       { 0x1DFC, 0x1F15 },
+       { 0x1DFB, 0x1F15 },
        { 0x1F18, 0x1F1D },
        { 0x1F20, 0x1F45 },
        { 0x1F48, 0x1F4D },
@@ -2930,10 +3108,10 @@ static const struct mb_ucsrange data_wctype_graph[] = {
        { 0x2066, 0x2071 },
        { 0x2074, 0x208E },
        { 0x2090, 0x209C },
-       { 0x20A0, 0x20BD },
+       { 0x20A0, 0x20BE },
        { 0x20D0, 0x20F0 },
-       { 0x2100, 0x2189 },
-       { 0x2190, 0x23FA },
+       { 0x2100, 0x218B },
+       { 0x2190, 0x23FE },
        { 0x2400, 0x2426 },
        { 0x2440, 0x244A },
        { 0x2460, 0x2B73 },
@@ -2941,6 +3119,7 @@ static const struct mb_ucsrange data_wctype_graph[] = {
        { 0x2B98, 0x2BB9 },
        { 0x2BBD, 0x2BC8 },
        { 0x2BCA, 0x2BD1 },
+       { 0x2BEC, 0x2BEF },
        { 0x2C00, 0x2C2E },
        { 0x2C30, 0x2C5E },
        { 0x2C60, 0x2CF3 },
@@ -2958,7 +3137,7 @@ static const struct mb_ucsrange data_wctype_graph[] = {
        { 0x2DC8, 0x2DCE },
        { 0x2DD0, 0x2DD6 },
        { 0x2DD8, 0x2DDE },
-       { 0x2DE0, 0x2E42 },
+       { 0x2DE0, 0x2E44 },
        { 0x2E80, 0x2E99 },
        { 0x2E9B, 0x2EF3 },
        { 0x2F00, 0x2FD5 },
@@ -2973,21 +3152,19 @@ static const struct mb_ucsrange data_wctype_graph[] = {
        { 0x31F0, 0x321E },
        { 0x3220, 0x32FE },
        { 0x3300, 0x4DB5 },
-       { 0x4DC0, 0x9FCC },
+       { 0x4DC0, 0x9FD5 },
        { 0xA000, 0xA48C },
        { 0xA490, 0xA4C6 },
        { 0xA4D0, 0xA62B },
-       { 0xA640, 0xA69D },
-       { 0xA69F, 0xA6F7 },
-       { 0xA700, 0xA78E },
-       { 0xA790, 0xA7AD },
-       { 0xA7B0, 0xA7B1 },
+       { 0xA640, 0xA6F7 },
+       { 0xA700, 0xA7AE },
+       { 0xA7B0, 0xA7B7 },
        { 0xA7F7, 0xA82B },
        { 0xA830, 0xA839 },
        { 0xA840, 0xA877 },
-       { 0xA880, 0xA8C4 },
+       { 0xA880, 0xA8C5 },
        { 0xA8CE, 0xA8D9 },
-       { 0xA8E0, 0xA8FB },
+       { 0xA8E0, 0xA8FD },
        { 0xA900, 0xA953 },
        { 0xA95F, 0xA97C },
        { 0xA980, 0xA9CD },
@@ -3003,9 +3180,8 @@ static const struct mb_ucsrange data_wctype_graph[] = {
        { 0xAB11, 0xAB16 },
        { 0xAB20, 0xAB26 },
        { 0xAB28, 0xAB2E },
-       { 0xAB30, 0xAB5F },
-       { 0xAB64, 0xAB65 },
-       { 0xABC0, 0xABED },
+       { 0xAB30, 0xAB65 },
+       { 0xAB70, 0xABED },
        { 0xABF0, 0xABF9 },
        { 0xAC00, 0xD7A3 },
        { 0xD7B0, 0xD7C6 },
@@ -3025,8 +3201,7 @@ static const struct mb_ucsrange data_wctype_graph[] = {
        { 0xFD92, 0xFDC7 },
        { 0xFDF0, 0xFDFD },
        { 0xFE00, 0xFE19 },
-       { 0xFE20, 0xFE2D },
-       { 0xFE30, 0xFE52 },
+       { 0xFE20, 0xFE52 },
        { 0xFE54, 0xFE66 },
        { 0xFE68, 0xFE6B },
        { 0xFE70, 0xFE74 },
@@ -3049,7 +3224,7 @@ static const struct mb_ucsrange data_wctype_graph[] = {
        { 0x10080, 0x100FA },
        { 0x10100, 0x10102 },
        { 0x10107, 0x10133 },
-       { 0x10137, 0x1018C },
+       { 0x10137, 0x1018E },
        { 0x10190, 0x1019B },
        { 0x101A0, 0x101A0 },
        { 0x101D0, 0x101FD },
@@ -3064,6 +3239,8 @@ static const struct mb_ucsrange data_wctype_graph[] = {
        { 0x103C8, 0x103D5 },
        { 0x10400, 0x1049D },
        { 0x104A0, 0x104A9 },
+       { 0x104B0, 0x104D3 },
+       { 0x104D8, 0x104FB },
        { 0x10500, 0x10527 },
        { 0x10530, 0x10563 },
        { 0x1056F, 0x1056F },
@@ -3078,12 +3255,14 @@ static const struct mb_ucsrange data_wctype_graph[] = {
        { 0x1083F, 0x10855 },
        { 0x10857, 0x1089E },
        { 0x108A7, 0x108AF },
-       { 0x10900, 0x1091B },
+       { 0x108E0, 0x108F2 },
+       { 0x108F4, 0x108F5 },
+       { 0x108FB, 0x1091B },
        { 0x1091F, 0x10939 },
        { 0x1093F, 0x1093F },
        { 0x10980, 0x109B7 },
-       { 0x109BE, 0x109BF },
-       { 0x10A00, 0x10A03 },
+       { 0x109BC, 0x109CF },
+       { 0x109D2, 0x10A03 },
        { 0x10A05, 0x10A06 },
        { 0x10A0C, 0x10A13 },
        { 0x10A15, 0x10A17 },
@@ -3101,6 +3280,9 @@ static const struct mb_ucsrange data_wctype_graph[] = {
        { 0x10B99, 0x10B9C },
        { 0x10BA9, 0x10BAF },
        { 0x10C00, 0x10C48 },
+       { 0x10C80, 0x10CB2 },
+       { 0x10CC0, 0x10CF2 },
+       { 0x10CFA, 0x10CFF },
        { 0x10E60, 0x10E7E },
        { 0x11000, 0x1104D },
        { 0x11052, 0x1106F },
@@ -3110,15 +3292,19 @@ static const struct mb_ucsrange data_wctype_graph[] = {
        { 0x11100, 0x11134 },
        { 0x11136, 0x11143 },
        { 0x11150, 0x11176 },
-       { 0x11180, 0x111C8 },
-       { 0x111CD, 0x111CD },
-       { 0x111D0, 0x111DA },
+       { 0x11180, 0x111CD },
+       { 0x111D0, 0x111DF },
        { 0x111E1, 0x111F4 },
        { 0x11200, 0x11211 },
-       { 0x11213, 0x1123D },
+       { 0x11213, 0x1123E },
+       { 0x11280, 0x11286 },
+       { 0x11288, 0x11288 },
+       { 0x1128A, 0x1128D },
+       { 0x1128F, 0x1129D },
+       { 0x1129F, 0x112A9 },
        { 0x112B0, 0x112EA },
        { 0x112F0, 0x112F9 },
-       { 0x11301, 0x11303 },
+       { 0x11300, 0x11303 },
        { 0x11305, 0x1130C },
        { 0x1130F, 0x11310 },
        { 0x11313, 0x11328 },
@@ -3128,25 +3314,42 @@ static const struct mb_ucsrange data_wctype_graph[] = {
        { 0x1133C, 0x11344 },
        { 0x11347, 0x11348 },
        { 0x1134B, 0x1134D },
+       { 0x11350, 0x11350 },
        { 0x11357, 0x11357 },
        { 0x1135D, 0x11363 },
        { 0x11366, 0x1136C },
        { 0x11370, 0x11374 },
+       { 0x11400, 0x11459 },
+       { 0x1145B, 0x1145B },
+       { 0x1145D, 0x1145D },
        { 0x11480, 0x114C7 },
        { 0x114D0, 0x114D9 },
        { 0x11580, 0x115B5 },
-       { 0x115B8, 0x115C9 },
+       { 0x115B8, 0x115DD },
        { 0x11600, 0x11644 },
        { 0x11650, 0x11659 },
+       { 0x11660, 0x1166C },
        { 0x11680, 0x116B7 },
        { 0x116C0, 0x116C9 },
+       { 0x11700, 0x11719 },
+       { 0x1171D, 0x1172B },
+       { 0x11730, 0x1173F },
        { 0x118A0, 0x118F2 },
        { 0x118FF, 0x118FF },
        { 0x11AC0, 0x11AF8 },
-       { 0x12000, 0x12398 },
+       { 0x11C00, 0x11C08 },
+       { 0x11C0A, 0x11C36 },
+       { 0x11C38, 0x11C45 },
+       { 0x11C50, 0x11C6C },
+       { 0x11C70, 0x11C8F },
+       { 0x11C92, 0x11CA7 },
+       { 0x11CA9, 0x11CB6 },
+       { 0x12000, 0x12399 },
        { 0x12400, 0x1246E },
        { 0x12470, 0x12474 },
+       { 0x12480, 0x12543 },
        { 0x13000, 0x1342E },
+       { 0x14400, 0x14646 },
        { 0x16800, 0x16A38 },
        { 0x16A40, 0x16A5E },
        { 0x16A60, 0x16A69 },
@@ -3161,6 +3364,9 @@ static const struct mb_ucsrange data_wctype_graph[] = {
        { 0x16F00, 0x16F44 },
        { 0x16F50, 0x16F7E },
        { 0x16F8F, 0x16F9F },
+       { 0x16FE0, 0x16FE0 },
+       { 0x17000, 0x187EC },
+       { 0x18800, 0x18AF2 },
        { 0x1B000, 0x1B001 },
        { 0x1BC00, 0x1BC6A },
        { 0x1BC70, 0x1BC7C },
@@ -3169,7 +3375,7 @@ static const struct mb_ucsrange data_wctype_graph[] = {
        { 0x1BC9C, 0x1BCA3 },
        { 0x1D000, 0x1D0F5 },
        { 0x1D100, 0x1D126 },
-       { 0x1D129, 0x1D1DD },
+       { 0x1D129, 0x1D1E8 },
        { 0x1D200, 0x1D245 },
        { 0x1D300, 0x1D356 },
        { 0x1D360, 0x1D371 },
@@ -3193,9 +3399,19 @@ static const struct mb_ucsrange data_wctype_graph[] = {
        { 0x1D54A, 0x1D550 },
        { 0x1D552, 0x1D6A5 },
        { 0x1D6A8, 0x1D7CB },
-       { 0x1D7CE, 0x1D7FF },
+       { 0x1D7CE, 0x1DA8B },
+       { 0x1DA9B, 0x1DA9F },
+       { 0x1DAA1, 0x1DAAF },
+       { 0x1E000, 0x1E006 },
+       { 0x1E008, 0x1E018 },
+       { 0x1E01B, 0x1E021 },
+       { 0x1E023, 0x1E024 },
+       { 0x1E026, 0x1E02A },
        { 0x1E800, 0x1E8C4 },
        { 0x1E8C7, 0x1E8D6 },
+       { 0x1E900, 0x1E94A },
+       { 0x1E950, 0x1E959 },
+       { 0x1E95E, 0x1E95F },
        { 0x1EE00, 0x1EE03 },
        { 0x1EE05, 0x1EE1F },
        { 0x1EE21, 0x1EE22 },
@@ -3239,23 +3455,14 @@ static const struct mb_ucsrange data_wctype_graph[] = {
        { 0x1F100, 0x1F10C },
        { 0x1F110, 0x1F12E },
        { 0x1F130, 0x1F16B },
-       { 0x1F170, 0x1F19A },
+       { 0x1F170, 0x1F1AC },
        { 0x1F1E6, 0x1F202 },
-       { 0x1F210, 0x1F23A },
+       { 0x1F210, 0x1F23B },
        { 0x1F240, 0x1F248 },
        { 0x1F250, 0x1F251 },
-       { 0x1F300, 0x1F32C },
-       { 0x1F330, 0x1F37D },
-       { 0x1F380, 0x1F3CE },
-       { 0x1F3D4, 0x1F3F7 },
-       { 0x1F400, 0x1F4FE },
-       { 0x1F500, 0x1F54A },
-       { 0x1F550, 0x1F579 },
-       { 0x1F57B, 0x1F5A3 },
-       { 0x1F5A5, 0x1F642 },
-       { 0x1F645, 0x1F6CF },
+       { 0x1F300, 0x1F6D2 },
        { 0x1F6E0, 0x1F6EC },
-       { 0x1F6F0, 0x1F6F3 },
+       { 0x1F6F0, 0x1F6F6 },
        { 0x1F700, 0x1F773 },
        { 0x1F780, 0x1F7D4 },
        { 0x1F800, 0x1F80B },
@@ -3263,9 +3470,18 @@ static const struct mb_ucsrange data_wctype_graph[] = {
        { 0x1F850, 0x1F859 },
        { 0x1F860, 0x1F887 },
        { 0x1F890, 0x1F8AD },
+       { 0x1F910, 0x1F91E },
+       { 0x1F920, 0x1F927 },
+       { 0x1F930, 0x1F930 },
+       { 0x1F933, 0x1F93E },
+       { 0x1F940, 0x1F94B },
+       { 0x1F950, 0x1F95E },
+       { 0x1F980, 0x1F991 },
+       { 0x1F9C0, 0x1F9C0 },
        { 0x20000, 0x2A6D6 },
        { 0x2A700, 0x2B734 },
        { 0x2B740, 0x2B81D },
+       { 0x2B820, 0x2CEA1 },
        { 0x2F800, 0x2FA1D },
        { 0xE0001, 0xE0001 },
        { 0xE0020, 0xE007F },
@@ -3301,8 +3517,9 @@ static const struct mb_ucsrange data_wctype_print[] = {
        { 0x0830, 0x083E },
        { 0x0840, 0x085B },
        { 0x085E, 0x085E },
-       { 0x08A0, 0x08B2 },
-       { 0x08E4, 0x0983 },
+       { 0x08A0, 0x08B4 },
+       { 0x08B6, 0x08BD },
+       { 0x08D4, 0x0983 },
        { 0x0985, 0x098C },
        { 0x098F, 0x0990 },
        { 0x0993, 0x09A8 },
@@ -3345,6 +3562,7 @@ static const struct mb_ucsrange data_wctype_print[] = {
        { 0x0AD0, 0x0AD0 },
        { 0x0AE0, 0x0AE3 },
        { 0x0AE6, 0x0AF1 },
+       { 0x0AF9, 0x0AF9 },
        { 0x0B01, 0x0B03 },
        { 0x0B05, 0x0B0C },
        { 0x0B0F, 0x0B10 },
@@ -3384,11 +3602,10 @@ static const struct mb_ucsrange data_wctype_print[] = {
        { 0x0C46, 0x0C48 },
        { 0x0C4A, 0x0C4D },
        { 0x0C55, 0x0C56 },
-       { 0x0C58, 0x0C59 },
+       { 0x0C58, 0x0C5A },
        { 0x0C60, 0x0C63 },
        { 0x0C66, 0x0C6F },
-       { 0x0C78, 0x0C7F },
-       { 0x0C81, 0x0C83 },
+       { 0x0C78, 0x0C83 },
        { 0x0C85, 0x0C8C },
        { 0x0C8E, 0x0C90 },
        { 0x0C92, 0x0CA8 },
@@ -3408,11 +3625,9 @@ static const struct mb_ucsrange data_wctype_print[] = {
        { 0x0D12, 0x0D3A },
        { 0x0D3D, 0x0D44 },
        { 0x0D46, 0x0D48 },
-       { 0x0D4A, 0x0D4E },
-       { 0x0D57, 0x0D57 },
-       { 0x0D60, 0x0D63 },
-       { 0x0D66, 0x0D75 },
-       { 0x0D79, 0x0D7F },
+       { 0x0D4A, 0x0D4F },
+       { 0x0D54, 0x0D63 },
+       { 0x0D66, 0x0D7F },
        { 0x0D82, 0x0D83 },
        { 0x0D85, 0x0D96 },
        { 0x0D9A, 0x0DB1 },
@@ -3472,7 +3687,8 @@ static const struct mb_ucsrange data_wctype_print[] = {
        { 0x1318, 0x135A },
        { 0x135D, 0x137C },
        { 0x1380, 0x1399 },
-       { 0x13A0, 0x13F4 },
+       { 0x13A0, 0x13F5 },
+       { 0x13F8, 0x13FD },
        { 0x1400, 0x169C },
        { 0x16A0, 0x16F8 },
        { 0x1700, 0x170C },
@@ -3511,12 +3727,12 @@ static const struct mb_ucsrange data_wctype_print[] = {
        { 0x1B80, 0x1BF3 },
        { 0x1BFC, 0x1C37 },
        { 0x1C3B, 0x1C49 },
-       { 0x1C4D, 0x1C7F },
+       { 0x1C4D, 0x1C88 },
        { 0x1CC0, 0x1CC7 },
        { 0x1CD0, 0x1CF6 },
        { 0x1CF8, 0x1CF9 },
        { 0x1D00, 0x1DF5 },
-       { 0x1DFC, 0x1F15 },
+       { 0x1DFB, 0x1F15 },
        { 0x1F18, 0x1F1D },
        { 0x1F20, 0x1F45 },
        { 0x1F48, 0x1F4D },
@@ -3536,10 +3752,10 @@ static const struct mb_ucsrange data_wctype_print[] = {
        { 0x2066, 0x2071 },
        { 0x2074, 0x208E },
        { 0x2090, 0x209C },
-       { 0x20A0, 0x20BD },
+       { 0x20A0, 0x20BE },
        { 0x20D0, 0x20F0 },
-       { 0x2100, 0x2189 },
-       { 0x2190, 0x23FA },
+       { 0x2100, 0x218B },
+       { 0x2190, 0x23FE },
        { 0x2400, 0x2426 },
        { 0x2440, 0x244A },
        { 0x2460, 0x2B73 },
@@ -3547,6 +3763,7 @@ static const struct mb_ucsrange data_wctype_print[] = {
        { 0x2B98, 0x2BB9 },
        { 0x2BBD, 0x2BC8 },
        { 0x2BCA, 0x2BD1 },
+       { 0x2BEC, 0x2BEF },
        { 0x2C00, 0x2C2E },
        { 0x2C30, 0x2C5E },
        { 0x2C60, 0x2CF3 },
@@ -3564,7 +3781,7 @@ static const struct mb_ucsrange data_wctype_print[] = {
        { 0x2DC8, 0x2DCE },
        { 0x2DD0, 0x2DD6 },
        { 0x2DD8, 0x2DDE },
-       { 0x2DE0, 0x2E42 },
+       { 0x2DE0, 0x2E44 },
        { 0x2E80, 0x2E99 },
        { 0x2E9B, 0x2EF3 },
        { 0x2F00, 0x2FD5 },
@@ -3579,21 +3796,19 @@ static const struct mb_ucsrange data_wctype_print[] = {
        { 0x31F0, 0x321E },
        { 0x3220, 0x32FE },
        { 0x3300, 0x4DB5 },
-       { 0x4DC0, 0x9FCC },
+       { 0x4DC0, 0x9FD5 },
        { 0xA000, 0xA48C },
        { 0xA490, 0xA4C6 },
        { 0xA4D0, 0xA62B },
-       { 0xA640, 0xA69D },
-       { 0xA69F, 0xA6F7 },
-       { 0xA700, 0xA78E },
-       { 0xA790, 0xA7AD },
-       { 0xA7B0, 0xA7B1 },
+       { 0xA640, 0xA6F7 },
+       { 0xA700, 0xA7AE },
+       { 0xA7B0, 0xA7B7 },
        { 0xA7F7, 0xA82B },
        { 0xA830, 0xA839 },
        { 0xA840, 0xA877 },
-       { 0xA880, 0xA8C4 },
+       { 0xA880, 0xA8C5 },
        { 0xA8CE, 0xA8D9 },
-       { 0xA8E0, 0xA8FB },
+       { 0xA8E0, 0xA8FD },
        { 0xA900, 0xA953 },
        { 0xA95F, 0xA97C },
        { 0xA980, 0xA9CD },
@@ -3609,9 +3824,8 @@ static const struct mb_ucsrange data_wctype_print[] = {
        { 0xAB11, 0xAB16 },
        { 0xAB20, 0xAB26 },
        { 0xAB28, 0xAB2E },
-       { 0xAB30, 0xAB5F },
-       { 0xAB64, 0xAB65 },
-       { 0xABC0, 0xABED },
+       { 0xAB30, 0xAB65 },
+       { 0xAB70, 0xABED },
        { 0xABF0, 0xABF9 },
        { 0xAC00, 0xD7A3 },
        { 0xD7B0, 0xD7C6 },
@@ -3631,8 +3845,7 @@ static const struct mb_ucsrange data_wctype_print[] = {
        { 0xFD92, 0xFDC7 },
        { 0xFDF0, 0xFDFD },
        { 0xFE00, 0xFE19 },
-       { 0xFE20, 0xFE2D },
-       { 0xFE30, 0xFE52 },
+       { 0xFE20, 0xFE52 },
        { 0xFE54, 0xFE66 },
        { 0xFE68, 0xFE6B },
        { 0xFE70, 0xFE74 },
@@ -3655,7 +3868,7 @@ static const struct mb_ucsrange data_wctype_print[] = {
        { 0x10080, 0x100FA },
        { 0x10100, 0x10102 },
        { 0x10107, 0x10133 },
-       { 0x10137, 0x1018C },
+       { 0x10137, 0x1018E },
        { 0x10190, 0x1019B },
        { 0x101A0, 0x101A0 },
        { 0x101D0, 0x101FD },
@@ -3670,6 +3883,8 @@ static const struct mb_ucsrange data_wctype_print[] = {
        { 0x103C8, 0x103D5 },
        { 0x10400, 0x1049D },
        { 0x104A0, 0x104A9 },
+       { 0x104B0, 0x104D3 },
+       { 0x104D8, 0x104FB },
        { 0x10500, 0x10527 },
        { 0x10530, 0x10563 },
        { 0x1056F, 0x1056F },
@@ -3684,12 +3899,14 @@ static const struct mb_ucsrange data_wctype_print[] = {
        { 0x1083F, 0x10855 },
        { 0x10857, 0x1089E },
        { 0x108A7, 0x108AF },
-       { 0x10900, 0x1091B },
+       { 0x108E0, 0x108F2 },
+       { 0x108F4, 0x108F5 },
+       { 0x108FB, 0x1091B },
        { 0x1091F, 0x10939 },
        { 0x1093F, 0x1093F },
        { 0x10980, 0x109B7 },
-       { 0x109BE, 0x109BF },
-       { 0x10A00, 0x10A03 },
+       { 0x109BC, 0x109CF },
+       { 0x109D2, 0x10A03 },
        { 0x10A05, 0x10A06 },
        { 0x10A0C, 0x10A13 },
        { 0x10A15, 0x10A17 },
@@ -3707,6 +3924,9 @@ static const struct mb_ucsrange data_wctype_print[] = {
        { 0x10B99, 0x10B9C },
        { 0x10BA9, 0x10BAF },
        { 0x10C00, 0x10C48 },
+       { 0x10C80, 0x10CB2 },
+       { 0x10CC0, 0x10CF2 },
+       { 0x10CFA, 0x10CFF },
        { 0x10E60, 0x10E7E },
        { 0x11000, 0x1104D },
        { 0x11052, 0x1106F },
@@ -3716,15 +3936,19 @@ static const struct mb_ucsrange data_wctype_print[] = {
        { 0x11100, 0x11134 },
        { 0x11136, 0x11143 },
        { 0x11150, 0x11176 },
-       { 0x11180, 0x111C8 },
-       { 0x111CD, 0x111CD },
-       { 0x111D0, 0x111DA },
+       { 0x11180, 0x111CD },
+       { 0x111D0, 0x111DF },
        { 0x111E1, 0x111F4 },
        { 0x11200, 0x11211 },
-       { 0x11213, 0x1123D },
+       { 0x11213, 0x1123E },
+       { 0x11280, 0x11286 },
+       { 0x11288, 0x11288 },
+       { 0x1128A, 0x1128D },
+       { 0x1128F, 0x1129D },
+       { 0x1129F, 0x112A9 },
        { 0x112B0, 0x112EA },
        { 0x112F0, 0x112F9 },
-       { 0x11301, 0x11303 },
+       { 0x11300, 0x11303 },
        { 0x11305, 0x1130C },
        { 0x1130F, 0x11310 },
        { 0x11313, 0x11328 },
@@ -3734,25 +3958,42 @@ static const struct mb_ucsrange data_wctype_print[] = {
        { 0x1133C, 0x11344 },
        { 0x11347, 0x11348 },
        { 0x1134B, 0x1134D },
+       { 0x11350, 0x11350 },
        { 0x11357, 0x11357 },
        { 0x1135D, 0x11363 },
        { 0x11366, 0x1136C },
        { 0x11370, 0x11374 },
+       { 0x11400, 0x11459 },
+       { 0x1145B, 0x1145B },
+       { 0x1145D, 0x1145D },
        { 0x11480, 0x114C7 },
        { 0x114D0, 0x114D9 },
        { 0x11580, 0x115B5 },
-       { 0x115B8, 0x115C9 },
+       { 0x115B8, 0x115DD },
        { 0x11600, 0x11644 },
        { 0x11650, 0x11659 },
+       { 0x11660, 0x1166C },
        { 0x11680, 0x116B7 },
        { 0x116C0, 0x116C9 },
+       { 0x11700, 0x11719 },
+       { 0x1171D, 0x1172B },
+       { 0x11730, 0x1173F },
        { 0x118A0, 0x118F2 },
        { 0x118FF, 0x118FF },
        { 0x11AC0, 0x11AF8 },
-       { 0x12000, 0x12398 },
+       { 0x11C00, 0x11C08 },
+       { 0x11C0A, 0x11C36 },
+       { 0x11C38, 0x11C45 },
+       { 0x11C50, 0x11C6C },
+       { 0x11C70, 0x11C8F },
+       { 0x11C92, 0x11CA7 },
+       { 0x11CA9, 0x11CB6 },
+       { 0x12000, 0x12399 },
        { 0x12400, 0x1246E },
        { 0x12470, 0x12474 },
+       { 0x12480, 0x12543 },
        { 0x13000, 0x1342E },
+       { 0x14400, 0x14646 },
        { 0x16800, 0x16A38 },
        { 0x16A40, 0x16A5E },
        { 0x16A60, 0x16A69 },
@@ -3767,6 +4008,9 @@ static const struct mb_ucsrange data_wctype_print[] = {
        { 0x16F00, 0x16F44 },
        { 0x16F50, 0x16F7E },
        { 0x16F8F, 0x16F9F },
+       { 0x16FE0, 0x16FE0 },
+       { 0x17000, 0x187EC },
+       { 0x18800, 0x18AF2 },
        { 0x1B000, 0x1B001 },
        { 0x1BC00, 0x1BC6A },
        { 0x1BC70, 0x1BC7C },
@@ -3775,7 +4019,7 @@ static const struct mb_ucsrange data_wctype_print[] = {
        { 0x1BC9C, 0x1BCA3 },
        { 0x1D000, 0x1D0F5 },
        { 0x1D100, 0x1D126 },
-       { 0x1D129, 0x1D1DD },
+       { 0x1D129, 0x1D1E8 },
        { 0x1D200, 0x1D245 },
        { 0x1D300, 0x1D356 },
        { 0x1D360, 0x1D371 },
@@ -3799,9 +4043,19 @@ static const struct mb_ucsrange data_wctype_print[] = {
        { 0x1D54A, 0x1D550 },
        { 0x1D552, 0x1D6A5 },
        { 0x1D6A8, 0x1D7CB },
-       { 0x1D7CE, 0x1D7FF },
+       { 0x1D7CE, 0x1DA8B },
+       { 0x1DA9B, 0x1DA9F },
+       { 0x1DAA1, 0x1DAAF },
+       { 0x1E000, 0x1E006 },
+       { 0x1E008, 0x1E018 },
+       { 0x1E01B, 0x1E021 },
+       { 0x1E023, 0x1E024 },
+       { 0x1E026, 0x1E02A },
        { 0x1E800, 0x1E8C4 },
        { 0x1E8C7, 0x1E8D6 },
+       { 0x1E900, 0x1E94A },
+       { 0x1E950, 0x1E959 },
+       { 0x1E95E, 0x1E95F },
        { 0x1EE00, 0x1EE03 },
        { 0x1EE05, 0x1EE1F },
        { 0x1EE21, 0x1EE22 },
@@ -3845,23 +4099,14 @@ static const struct mb_ucsrange data_wctype_print[] = {
        { 0x1F100, 0x1F10C },
        { 0x1F110, 0x1F12E },
        { 0x1F130, 0x1F16B },
-       { 0x1F170, 0x1F19A },
+       { 0x1F170, 0x1F1AC },
        { 0x1F1E6, 0x1F202 },
-       { 0x1F210, 0x1F23A },
+       { 0x1F210, 0x1F23B },
        { 0x1F240, 0x1F248 },
        { 0x1F250, 0x1F251 },
-       { 0x1F300, 0x1F32C },
-       { 0x1F330, 0x1F37D },
-       { 0x1F380, 0x1F3CE },
-       { 0x1F3D4, 0x1F3F7 },
-       { 0x1F400, 0x1F4FE },
-       { 0x1F500, 0x1F54A },
-       { 0x1F550, 0x1F579 },
-       { 0x1F57B, 0x1F5A3 },
-       { 0x1F5A5, 0x1F642 },
-       { 0x1F645, 0x1F6CF },
+       { 0x1F300, 0x1F6D2 },
        { 0x1F6E0, 0x1F6EC },
-       { 0x1F6F0, 0x1F6F3 },
+       { 0x1F6F0, 0x1F6F6 },
        { 0x1F700, 0x1F773 },
        { 0x1F780, 0x1F7D4 },
        { 0x1F800, 0x1F80B },
@@ -3869,9 +4114,18 @@ static const struct mb_ucsrange data_wctype_print[] = {
        { 0x1F850, 0x1F859 },
        { 0x1F860, 0x1F887 },
        { 0x1F890, 0x1F8AD },
+       { 0x1F910, 0x1F91E },
+       { 0x1F920, 0x1F927 },
+       { 0x1F930, 0x1F930 },
+       { 0x1F933, 0x1F93E },
+       { 0x1F940, 0x1F94B },
+       { 0x1F950, 0x1F95E },
+       { 0x1F980, 0x1F991 },
+       { 0x1F9C0, 0x1F9C0 },
        { 0x20000, 0x2A6D6 },
        { 0x2A700, 0x2B734 },
        { 0x2B740, 0x2B81D },
+       { 0x2B820, 0x2CEA1 },
        { 0x2F800, 0x2FA1D },
        { 0xE0001, 0xE0001 },
        { 0xE0020, 0xE007F },
@@ -3891,10 +4145,10 @@ static const struct mb_ucsrange data_wctype_xdigit[] = {
 MAKE_ISW(xdigit)
 
 /*
- * this includes ;Zs;
- * except U+00A0 (<noBreak> NON-BREAKING SPACE)
- * except U+2007 (<noBreak> FIGURE SPACE)
- * except U+202F (<noBreak> NARROW NO-BREAK SPACE)
+ * plus ;Zs;
+ *  except U+00A0 (<noBreak> NON-BREAKING SPACE)
+ *  except U+2007 (<noBreak> FIGURE SPACE)
+ *  except U+202F (<noBreak> NARROW NO-BREAK SPACE)
  * plus U+200B (ZERO WIDTH SPACE)
  */
 static const struct mb_ucsrange data_wctype_blank[] = {
@@ -4081,6 +4335,7 @@ static const struct mb_ucsrange data_wcrange_toupper[] = {
        { 0x0266, 0x0266 },
        { 0x0268, 0x0268 },
        { 0x0269, 0x0269 },
+       { 0x026A, 0x026A },
        { 0x026B, 0x026B },
        { 0x026C, 0x026C },
        { 0x026F, 0x026F },
@@ -4096,6 +4351,7 @@ static const struct mb_ucsrange data_wcrange_toupper[] = {
        { 0x028A, 0x028B },
        { 0x028C, 0x028C },
        { 0x0292, 0x0292 },
+       { 0x029D, 0x029D },
        { 0x029E, 0x029E },
        { 0x0345, 0x0345 },
        { 0x0371, 0x0371 },
@@ -4236,6 +4492,15 @@ static const struct mb_ucsrange data_wcrange_toupper[] = {
        { 0x052D, 0x052D },
        { 0x052F, 0x052F },
        { 0x0561, 0x0586 },
+       { 0x13F8, 0x13FD },
+       { 0x1C80, 0x1C80 },
+       { 0x1C81, 0x1C81 },
+       { 0x1C82, 0x1C82 },
+       { 0x1C83, 0x1C84 },
+       { 0x1C85, 0x1C85 },
+       { 0x1C86, 0x1C86 },
+       { 0x1C87, 0x1C87 },
+       { 0x1C88, 0x1C88 },
        { 0x1D79, 0x1D79 },
        { 0x1D7D, 0x1D7D },
        { 0x1E01, 0x1E01 },
@@ -4553,9 +4818,16 @@ static const struct mb_ucsrange data_wcrange_toupper[] = {
        { 0xA7A5, 0xA7A5 },
        { 0xA7A7, 0xA7A7 },
        { 0xA7A9, 0xA7A9 },
+       { 0xA7B5, 0xA7B5 },
+       { 0xA7B7, 0xA7B7 },
+       { 0xAB53, 0xAB53 },
+       { 0xAB70, 0xABBF },
        { 0xFF41, 0xFF5A },
        { 0x10428, 0x1044F },
-       { 0x118C0, 0x118DF }
+       { 0x104D8, 0x104FB },
+       { 0x10CC0, 0x10CF2 },
+       { 0x118C0, 0x118DF },
+       { 0x1E922, 0x1E943 }
 };
 
 static const int data_wcdelta_toupper[] = {
@@ -4728,6 +5000,7 @@ static const int data_wcdelta_toupper[] = {
        -42308,
        209,
        211,
+       -42308,
        -10743,
        -42305,
        211,
@@ -4743,6 +5016,7 @@ static const int data_wcdelta_toupper[] = {
        217,
        71,
        219,
+       -42261,
        -42258,
        -84,
        1,
@@ -4883,6 +5157,15 @@ static const int data_wcdelta_toupper[] = {
        1,
        1,
        48,
+       8,
+       6254,
+       6253,
+       6244,
+       6242,
+       6243,
+       6236,
+       6181,
+       -35266,
        -35332,
        -3814,
        1,
@@ -5200,9 +5483,16 @@ static const int data_wcdelta_toupper[] = {
        1,
        1,
        1,
+       1,
+       1,
+       928,
+       38864,
        32,
        40,
-       32
+       40,
+       64,
+       32,
+       34
 };
 
 int joe_towupper(struct charmap *foo, int c)
@@ -5521,6 +5811,8 @@ static const struct mb_ucsrange data_wcrange_tolower[] = {
        { 0x10A0, 0x10C5 },
        { 0x10C7, 0x10C7 },
        { 0x10CD, 0x10CD },
+       { 0x13A0, 0x13EF },
+       { 0x13F0, 0x13F5 },
        { 0x1E00, 0x1E00 },
        { 0x1E02, 0x1E02 },
        { 0x1E04, 0x1E04 },
@@ -5847,11 +6139,19 @@ static const struct mb_ucsrange data_wcrange_tolower[] = {
        { 0xA7AB, 0xA7AB },
        { 0xA7AC, 0xA7AC },
        { 0xA7AD, 0xA7AD },
+       { 0xA7AE, 0xA7AE },
        { 0xA7B0, 0xA7B0 },
        { 0xA7B1, 0xA7B1 },
+       { 0xA7B2, 0xA7B2 },
+       { 0xA7B3, 0xA7B3 },
+       { 0xA7B4, 0xA7B4 },
+       { 0xA7B6, 0xA7B6 },
        { 0xFF21, 0xFF3A },
        { 0x10400, 0x10427 },
-       { 0x118A0, 0x118BF }
+       { 0x104B0, 0x104D3 },
+       { 0x10C80, 0x10CB2 },
+       { 0x118A0, 0x118BF },
+       { 0x1E900, 0x1E921 }
 };
 
 static const int data_wcdelta_tolower[] = {
@@ -6160,6 +6460,8 @@ static const int data_wcdelta_tolower[] = {
        7264,
        7264,
        7264,
+       38864,
+       8,
        1,
        1,
        1,
@@ -6486,11 +6788,19 @@ static const int data_wcdelta_tolower[] = {
        -42319,
        -42315,
        -42305,
+       -42308,
        -42258,
        -42282,
+       -42261,
+       928,
+       1,
+       1,
        32,
        40,
-       32
+       40,
+       64,
+       32,
+       34
 };
 
 int joe_towlower(struct charmap *foo, int c)
index a9060f9..59d699f 100644 (file)
@@ -1,11 +1,11 @@
- $MirOS: contrib/code/jupp/jmacsrc.in,v 1.20 2014/07/13 12:58:51 tg Exp $
+ $MirOS: contrib/code/jupp/jmacsrc.in,v 1.22 2016/10/08 17:44:18 tg Exp $
 
                          Initialization file for JOE
                                 GNU-Emacs Joe
 
  JOE looks for this file in:
        1 - $HOME/.jmacsrc
-       2 - @sysconfdir@/jmacsrc
+       2 - @jrcbefore@jmacsrc@jrcafter@
 
  This file can include other files by placing the following include command
  in the first column:
 *.tcl
 -syntax tcl
 
+ === TeX
+*.cls
+-syntax tex
+
+*.sty
+-syntax tex
+
+*.tex
+-syntax tex
+
  === Verilog
 *.v
 -syntax verilog
index 306f1f5..b14bee0 100644 (file)
--- a/joe.1.in
+++ b/joe.1.in
@@ -1,4 +1,4 @@
-.\" $MirOS: contrib/code/jupp/joe.1.in,v 1.14 2012/12/30 21:45:13 tg Exp $
+.\" $MirOS: contrib/code/jupp/joe.1.in,v 1.17 2016/10/08 17:44:18 tg Exp $
 .\"-
 .TH JOE 1
 .SH Name
@@ -36,7 +36,7 @@ determines the personality of the editor.
 
 JUPP is free software; you can distribute it and/or modify it under the
 terms of the GNU General Public License, Version 1, as published by the
-Free Software Foundation.
+Free Software Foundation.  (main.c contains more detailled exceptions.)
 I have no plans for turning JOE into a commercial or share-ware product.
 See the source code for exact authorship and licencing information.
 JOE is available over the Internet from \fBhttp://joe-editor.sf.net/\fR.
@@ -84,14 +84,14 @@ is on.  To page through other topics, hit ^[, and ^[. (that is, ESC , and
 ESC .).  Use \fB^K H\fR to dismiss the help window.
 
 You can customize the keyboard layout, the help screens and a number of
-behavior defaults by copying JOE's initialization file (usually
-\fB@sysconfdir@/joerc\fR) to \fB.joerc\fR in your home directory and then
-by modifying it.  See the section \fBjoerc\fR below.
+behavior defaults by copying JOE's initialisation file (@joeinitfile@)
+to \fB.joerc\fR in your home directory and then by modifying it.
+See the section \fBjoerc\fR below.
 
 To have JOE used as your default editor for e-mail and News, you need to set
 the \fBEDITOR\fR and \fBVISUAL\fR environment variables in your shell
-initialization file (\fB.cshrc\fR or \fB.profile\fR) to refer to JOE (joe
-usually resides as \fB@bindir@/joe\fR).
+initialization file (\fB.cshrc\fR or \fB.profile\fR) to refer to JOE (the
+joe binary usually resides as \fB@joeresides@\fR).
 
 There are a number of other obscure invocation parameters which may have to
 be set, particularly if your terminal screen is not updating as you think it
@@ -804,15 +804,20 @@ quota.
 
 .SH The\ joerc file
 \fB^T\fR options, the help screens and the key-sequence to editor command
-bindings are all defined in JOE's initialization file.  If you make a copy
-of this file (which normally resides in \fB@sysconfdir@/joerc\fR) to
-\fB$HOME/.joerc\fR, you can customize these setting to your liking.  The
-syntax of the initialization file should be fairly obvious and there are
-further instruction in it.
+bindings are all defined in JOE's initialization file.
+If you make a copy of this file (@joeinitcopy@) to \fB$HOME/.joerc\fR,
+you can customise these settings to your liking.
+The syntax of the initialization file should be fairly obvious,
+and there are further instruction in it.
 
 .SH Acknowledgments
-JOE was written by Joseph H. Allen.  If you have bug reports or questions,
-e-mail them to jhallen@world.std.com.  Larry Foard (entropy@world.std.com)
-and Gary Gray (ggray@world.std.com) also helped with the creation of JOE.
-Thorsten Glaser (tg@mirbsd.org) created JUPP, and the 16-bit MS-DOS version
-of JUPP 2.8 was compiled by Andreas Totlis (atotlis@t-online.de).
+JOE was written by Joseph H. Allen.
+If you have bug reports or questions, e-mail them to jhallen@world.std.com.
+Larry Foard (entropy@world.std.com) and Gary Gray (ggray@world.std.com)
+also helped with the creation of JOE.
+Thorsten "mirabilos" Glaser (tg@mirbsd.org) created JUPP, and the 16-bit MS-DOS
+version of JUPP 2.8 was compiled by Andreas Totlis (atotlis@t-online.de).
+
+.SH Bugs
+This manual page describes only the JOE flavour; documentation for JUPP is
+especially missing.
index 2ad1264..92f31a8 100644 (file)
--- a/joerc.in
+++ b/joerc.in
@@ -1,4 +1,4 @@
- $MirOS: contrib/code/jupp/joerc.in,v 1.21 2014/07/13 12:58:51 tg Exp $
+ $MirOS: contrib/code/jupp/joerc.in,v 1.23 2016/10/08 17:44:18 tg Exp $
 
                          Initialization file for JOE
                                 Standard Joe
@@ -7,7 +7,7 @@
 
  JOE looks for this file in:
        1 - $HOME/.joerc
-       2 - @sysconfdir@/joerc
+       2 - @jrcbefore@joerc@jrcafter@
 
  This file can include other files by placing the following include command
  in the first column:
 *.tcl
 -syntax tcl
 
+ === TeX
+*.cls
+-syntax tex
+
+*.sty
+-syntax tex
+
+*.tex
+-syntax tex
+
  === Verilog
 *.v
 -syntax verilog
index e996739..e9dac10 100644 (file)
@@ -1,11 +1,11 @@
- $MirOS: contrib/code/jupp/jpicorc.in,v 1.20 2014/07/13 12:58:51 tg Exp $
+ $MirOS: contrib/code/jupp/jpicorc.in,v 1.22 2016/10/08 17:44:19 tg Exp $
 
                          Initialization file for JOE
                                  Super Pico
 
  JOE looks for this file in:
        1 - $HOME/.jpicorc
-       2 - @sysconfdir@/jpicorc
+       2 - @jrcbefore@jpicorc@jrcafter@
 
  This file can include other files by placing the following include command
  in the first column:
 *.tcl
 -syntax tcl
 
+ === TeX
+*.cls
+-syntax tex
+
+*.sty
+-syntax tex
+
+*.tex
+-syntax tex
+
  === Verilog
 *.v
 -syntax verilog
index 197c032..5efb8e8 100644 (file)
@@ -1,11 +1,11 @@
- $MirOS: contrib/code/jupp/jstarrc.in,v 1.20 2014/07/13 12:58:52 tg Exp $
+ $MirOS: contrib/code/jupp/jstarrc.in,v 1.24 2016/10/08 17:44:19 tg Exp $
 
                          Initialization file for JOE
                            WordStar / Turbo-C Joe
 
  JOE looks for this file in:
        1 - $HOME/.jstarrc
-       2 - @sysconfdir@/jstarrc
+       2 - @jrcbefore@jstarrc@jrcafter@
 
  This file can include other files by placing the following include command
  in the first column:
 *.tcl
 -syntax tcl
 
+ === TeX
+*.cls
+-syntax tex
+
+*.sty
+-syntax tex
+
+*.tex
+-syntax tex
+
  === Verilog
 *.v
 -syntax verilog
@@ -950,6 +960,9 @@ bos,eol             ^Q X
 bos,eol                ^Q ^X
 bos,eol                ^Q x
 bos,eol                ^Q .kd
+execmd         ^[ x            Prompt for command to execute
+execmd         ^[ X            Prompt for command to execute
+execmd         ^[ ^X           Prompt for command to execute
 exsave         ^K X            Save and exit
 exsave         ^K ^X
 exsave         ^K x
@@ -1031,8 +1044,8 @@ tomarkb           ^Q b
 tomarkk                ^Q K            Go to end of marked block
 tomarkk                ^Q ^K
 tomarkk                ^Q k
-tomatch                ^Q [            Goto matching parenthasis
-tomatch                ^Q ^[
+rvmatch                ^Q [            Goto matching parenthasis
+rvmatch                ^Q ^[
 tomatch                ^Q ]
 tomatch                ^Q ^]
 undo           ^U              Undo changes
diff --git a/jupprc b/jupprc
index 882963e..c45cf74 100644 (file)
--- a/jupprc
+++ b/jupprc
@@ -1,4 +1,4 @@
- "jupp" resource file for Jupp3.1*nix (c) 1997-2014 Thorsten Glaser
+ "jupp" resource file for Jupp3.1*nix (c) 1997-2016 Thorsten Glaser
  Provided that these terms and disclaimer and all copyright notices
  are retained or reproduced in an accompanying document, permission
  is granted to deal in this work without restriction, including un-
 *.tcl
 -syntax tcl
 
+ === TeX
+*.cls
+-syntax tex
+
+*.sty
+-syntax tex
+
+*.tex
+-syntax tex
+
  === Verilog
 *.v
 -syntax verilog
 \i \i^A previous word ^QS beg. of line ^KY kill ^T  >word ^QL refresh  ^KZ shell  \i \i
 \i \i^F next word     ^QD end of line  ^K/ pipe ^QY >line ^O  options  \u\bFILE\b\u       \i \i
 \i \i\u\bSEARCH\b\u           ^QR top of file  ^KB begin          \u\bBUFFER\b\u       ^KE new    \i \i
-\i \i^QF find first   ^QC end of file  ^KK end  ^K] space ^U undo      ^KR import \i \i
+\i \i^QF find first   ^QC end of file  ^KK end            ^U undo      ^KR import \i \i
 \i \i^L  find next    ^QO byte offset  ^KD reformat       ^^ redo      ^KW export \i \i
 }
 
 
 {Programs
 \i   Help Screen    turn off with ^J     prev. screen ^[,    next screen ^[.     \i
-\i \i\u\bGOTO\b\u                  \u\bCOMPILING\b\u                    \u\bINDENT\b\u       \u\bSLIDING\b\u      \i \i
-\i \i^Q- to column number  ^[C Compile & parse errors   ^K. more     ^W up        \i \i
-\i \i^QI to line number    ^[E Parse errors             ^K, less     ^Z down      \i \i
-\i \i^QP previous place    \u\bGOTO AFTER COMPILING\b\u         ^KA center   \u\bINSERT MATH\b\u  \i \i
-\i \i^K= next place        ^[N previous error    \u\bSPECIAL\b\u             ^[# equation \i \i
-\i \i^Q[ matching brace    ^[M next error        ^[- exec. juppcmd   ^[= result   \i \i
-\i \i \b\uFreedroidz\u:\b ^KF save current *.nxc file, compile, transfer to the NXT brick \i \i
+\i \i\u\bGOTO\b\u                               \u\bCOMPILING\b\u                    \u\bSLIDING\b\u      \i \i
+\i \i^Q] matching brace, ^Q[ reverse    ^[C compile & parse errors   ^W up        \i \i
+\i \i^Q= merge conflict marker          ^[E parse errors             ^Z down      \i \i
+\i \i^Q- to column number  \u\bINDENT\b\u       ^KF save, compile & upload to NXT brick   \i \i
+\i \i^QI to line number    ^K. more     \u\bGOTO AFTER COMPILING\b\u         \u\bINSERT MATH\b\u  \i \i
+\i \i^QP previous place    ^K, less     ^[N previous error           ^[# equation \i \i
+\i \i^K= next place        ^KA centre   ^[M next error      \u\bSPECIAL\b\u  ^[= result   \i \i
+\i \i                      ^K] kill whitespace at EOL       ^[- jupp command line \i \i
 }
 
 {Search
 \i \i go to \uhttp://sf.net/projects/joe-editor/\u for upstream bug reports. JUPP 2.8 \i \i
 \i \i for DOS compiled by A. Totlis, packed with LHarc 2.13; JUPP 3.x for UNIX\d(R)\d \i \i
 \i \i at \uhttp://mirbsd.de/jupp\u and by \bThorsten "\dmirabilos\d" Glaser <\utg@mirbsd.org\u>\b \i \i
-\i \i @(#) jupprc 2014-10-23; 3.1; autoCR-LF; UTF-8 via locale; per-file encoding \i \i
+\i \i @(#) jupprc 2016-10-08; 3.1; autoCR-LF; UTF-8 via locale; per-file encoding \i \i
 }
 
  #HOOK#3103 additional help screens
@@ -579,6 +590,7 @@ keymap,"prompt",rtn                 ^D
 :inherit windows
  #HOOK#3105 main keybindings
 bof,qrepl,"\\[",quote,"i",quote,"k",quote,"l",quote,"m ]\\+\\[",quote,"i",quote,"k",quote,"l",quote,"m ]\\$",rtn,rtn,rtn,"r",eof       ^K ]
+ffirst,"\\^\\[<>=]\\[<>=]\\[<>=]\\[<>=]\\[<>=]\\[<>=]\\[<>=]\\[ \\n]",rtn,rtn,ltarw                                                    ^Q =
 splitw,prevw,scratch,"nbc-Output",rtn,nextw,save,markk,bol,markb,prevw,prevw,blkcpy,nextw,nextw,rtn,prevw,eol,"'",bol,qrepl,"'",rtn,rtn,"'\\\\''",rtn,"r",backs,backs,backs,bol,"fn='",eol,rtn,"case $fn in",rtn,"*.nxc) ;;",rtn,"*) echo '==> Error: filename not *.nxc'; exit ;;",rtn,"esac",rtn,"nbc -d \"$fn\"; x=$?",rtn,"if test $x = 0; then echo '==> OK'; else echo '==> Error code:' $x; fi",rtn,nmark,filt,"sh",rtn,rtn,"Press ^KQ to close this window!",rtn       ^K F
 splitw,prevw,scratch,"nbc-Output",rtn,nextw,save,markk,bol,markb,prevw,prevw,blkcpy,nextw,nextw,rtn,prevw,eol,"'",bol,qrepl,"'",rtn,rtn,"'\\\\''",rtn,"r",backs,backs,backs,bol,"fn='",eol,rtn,"case $fn in",rtn,"*.nxc) ;;",rtn,"*) echo '==> Error: filename not *.nxc'; exit ;;",rtn,"esac",rtn,"nbc -d \"$fn\"; x=$?",rtn,"if test $x = 0; then echo '==> OK'; else echo '==> Error code:' $x; fi",rtn,nmark,filt,"sh",rtn,rtn,"Press ^KQ to close this window!",rtn       ^K f
 splitw,prevw,scratch,"nbc-Output",rtn,nextw,save,markk,bol,markb,prevw,prevw,blkcpy,nextw,nextw,rtn,prevw,eol,"'",bol,qrepl,"'",rtn,rtn,"'\\\\''",rtn,"r",backs,backs,backs,bol,"fn='",eol,rtn,"case $fn in",rtn,"*.nxc) ;;",rtn,"*) echo '==> Error: filename not *.nxc'; exit ;;",rtn,"esac",rtn,"nbc -d \"$fn\"; x=$?",rtn,"if test $x = 0; then echo '==> OK'; else echo '==> Error code:' $x; fi",rtn,nmark,filt,"sh",rtn,rtn,"Press ^KQ to close this window!",rtn       ^K ^F
@@ -795,11 +807,11 @@ tomarkk           ^Q K
 tomarkk                ^Q ^K
 tomarkk                ^Q k
 tomarkk                ^[ q k
-tomatch                ^Q [
+rvmatch                ^Q [
 tomatch                ^Q ]
-tomatch                ^Q ^[
+rvmatch                ^Q ^[
 tomatch                ^Q ^]
-tomatch                ^[ q [
+rvmatch                ^[ q [
 tomatch                ^[ q ]
 tos            ^Q E
 tos            ^Q ^E
diff --git a/main.c b/main.c
index 9de13b0..7a5ae1d 100644 (file)
--- a/main.c
+++ b/main.c
@@ -1,6 +1,6 @@
-/* $MirOS: contrib/code/jupp/main.c,v 1.23 2014/03/04 23:04:11 tg Exp $ */
+/* $MirOS: contrib/code/jupp/main.c,v 1.25 2016/10/07 20:09:55 tg Exp $ */
 
-#define JUPP_IS_COPYRIGHT_C_BY "2014 mirabilos"
+#define JUPP_IS_COPYRIGHT_C_BY "2016 mirabilos"
 
 /*-
  * Copyright (c) 2004ff. Thorsten Glaser
@@ -16,7 +16,7 @@
  * example libraries or when using crunchgen, into a combined binary,
  * that may be conveyed under any version of the GPL, as published by
  * the Free Software Foundation, and any compatible licence permitted
- * by the GPL.
+ * by any version of the GPL, as above.
  *
  * This work is provided "AS IS" and WITHOUT WARRANTY of any kind, to
  * the utmost extent permitted by applicable law, neither express nor
diff --git a/path.c b/path.c
index a118a31..33f0cbc 100644 (file)
--- a/path.c
+++ b/path.c
@@ -1,4 +1,4 @@
-/* $MirOS: contrib/code/jupp/path.c,v 1.10 2013/08/19 22:48:32 tg Exp $ */
+/* $MirOS: contrib/code/jupp/path.c,v 1.11 2016/10/08 16:25:59 tg Exp $ */
 /* 
  *     Directory and path functions
  *     Copyright
 #  endif
 #endif
 
-#ifdef __MSDOS__       /* paths in MS-DOS can include a drive letter followed by semicolon */
-#define        do_if_drive_letter(path, command) do { \
-                                               if ((path)[0] && (path)[1] == ':') { \
-                                                       command; \
-                                               } \
-                                       } while(0)
+#if HAVE_DRIVE_LETTERS
+#define do_if_drive_letter(path, command) do {         \
+       if ((path)[1] == ':' && (                       \
+           ((path)[0] >= 'a' && (path)[0] <= 'z') ||   \
+           ((path)[0] >= 'A' && (path)[0] <= 'Z'))) {  \
+               command;                                \
+       }                                               \
+} while (/* CONSTCOND */ 0)
 #else
-#define do_if_drive_letter(path, command)      do { } while(0)
+#define do_if_drive_letter(path, command) do { } while (/* CONSTCOND */ 0)
 #endif
 #define skip_drive_letter(path)        do_if_drive_letter((path), (path) += 2)
 
 #endif
 
 /********************************************************************/
+#if HAVE_BACKSLASH_PATHS
 unsigned char *joesep(unsigned char *path)
 {
        int x;
@@ -108,6 +111,7 @@ unsigned char *joesep(unsigned char *path)
                        path[x] = '/';
        return path;
 }
+#endif
 /********************************************************************/
 unsigned char *namprt(unsigned char *path)
 {
diff --git a/path.h b/path.h
index 2fa0f20..b7c448a 100644 (file)
--- a/path.h
+++ b/path.h
@@ -1,4 +1,4 @@
-/* $MirOS: contrib/code/jupp/path.h,v 1.8 2013/08/19 22:48:33 tg Exp $ */
+/* $MirOS: contrib/code/jupp/path.h,v 1.10 2016/10/08 16:42:00 tg Exp $ */
 /*
  *     Directory and path functions
  *     Copyright
 
 #include "config.h"
 
+#if defined(__MSDOS__) || defined(__DJGPP__) || defined(__EMX__) || \
+    defined(__CYGWIN__) || defined(_WIN32)
+/*XXX check this for all platforms */
+#define HAVE_BACKSLASH_PATHS 1
+#define HAVE_DRIVE_LETTERS 1
+#else
+#define HAVE_BACKSLASH_PATHS 0
+#define HAVE_DRIVE_LETTERS 0
+#endif
+
+#if HAVE_BACKSLASH_PATHS
 unsigned char *joesep PARAMS((unsigned char *path));
+#else
+#define joesep(path) (path)
+#endif
 
 /* char *namprt(char *path);
  * Return name part of a path.  There is no name if the last character
diff --git a/pw.c b/pw.c
index da6c338..fccadae 100644 (file)
--- a/pw.c
+++ b/pw.c
@@ -1,4 +1,4 @@
-/* $MirOS: contrib/code/jupp/pw.c,v 1.5 2009/10/18 14:52:56 tg Exp $ */
+/* $MirOS: contrib/code/jupp/pw.c,v 1.6 2016/10/08 14:58:46 tg Exp $ */
 /*
  *     Prompt windows
  *     Copyright
@@ -198,7 +198,7 @@ WATOM watompw = {
 
 /* Create a prompt window */
 
-BW *wmkpw(W *w, unsigned char *prompt, B **history, int (*func) (), unsigned char *huh, int (*abrt) (), int (*tab) (), void *object, int *notify,struct charmap *map)
+BW *wmkpw(W *w, unsigned char *prompt, B **history, int (*func) (), unsigned char *huh, int (*abrt) (), int (*tab) (), void *object, int *notify, struct charmap *map)
 {
        W *new;
        PW *pw;
@@ -244,9 +244,9 @@ BW *wmkpw(W *w, unsigned char *prompt, B **history, int (*func) (), unsigned cha
 unsigned char **regsub(unsigned char **z, int len, unsigned char *s)
 {
        unsigned char **lst = NULL;
-       int x;
+       int x = -1;
 
-       for (x = 0; x != len; ++x)
+       while (++x < len)
                if (rmatch(s, z[x]))
                        lst = vaadd(lst, vsncpy(NULL, 0, sz(z[x])));
        return lst;
index 9803cee..ca7d370 100644 (file)
--- a/rjoerc.in
+++ b/rjoerc.in
@@ -1,11 +1,11 @@
- $MirOS: contrib/code/jupp/rjoerc.in,v 1.20 2014/07/13 12:58:52 tg Exp $
+ $MirOS: contrib/code/jupp/rjoerc.in,v 1.22 2016/10/08 17:44:19 tg Exp $
 
                          Initialization file for JOE
                             Restricted access Joe
 
  JOE looks for this file in:
        1 - $HOME/.rjoerc
-       2 - @sysconfdir@/rjoerc
+       2 - @jrcbefore@rjoerc@jrcafter@
 
  This file can include other files by placing the following include command
  in the first column:
 *.tcl
 -syntax tcl
 
+ === TeX
+*.cls
+-syntax tex
+
+*.sty
+-syntax tex
+
+*.tex
+-syntax tex
+
  === Verilog
 *.v
 -syntax verilog
index 5b75a1c..7aae75d 100644 (file)
@@ -3,7 +3,7 @@ ifeq (0,gmake ignores from here)
 #endif
 /*-
  * Copyright (c) 2006, 2008, 2011
- *     Thorsten Glaser <tg@mirbsd.org>
+ *     mirabilos <m@mirbsd.org>
  *
  * Provided that these terms and disclaimer and all copyright notices
  * are retained or reproduced in an accompanying document, permission
@@ -25,9 +25,9 @@ ifeq (0,gmake ignores from here)
  * plies only to the strlcpy(3) portion of the code, as Thorsten Gla-
  * ser write the following strlcat(3) implementation according to the
  * spec. Both functions below have been optimised according to sugge-
- * stions from Bodo Eggert. Thorsten Glaser also has merged this code
- * with strxfrm(3) for ISO-10646-only systems and the wide char vari-
- * ants wcslcat(3), wcslcpy(3), and wcsxfrm(3).
+ * stions from Bodo Eggert. mirabilos merged the code with strxfrm(3)
+ * (Unicode-only systems) and the wide character variants wcslcat(3),
+ * wcslcpy(3), and wcsxfrm(3).
  */
 
 #include <sys/types.h>
@@ -39,7 +39,7 @@ ifeq (0,gmake ignores from here)
 #define __RCSID(x)             static const char __rcsid[] = x
 #endif
 
-__RCSID("$MirOS: contrib/code/jupp/strlfun.inc,v 1.4 2011/11/11 20:39:31 tg Exp $");
+__RCSID("$MirOS: contrib/code/jupp/strlfun.inc,v 1.5 2016/03/06 13:47:13 tg Exp $");
 
 #ifdef WIDEC
 #ifdef OUTSIDE_OF_LIBKERN
index 2cab431..b1b8d86 100644 (file)
--- a/syntax.c
+++ b/syntax.c
@@ -1,4 +1,4 @@
-/* $MirOS: contrib/code/jupp/syntax.c,v 1.11 2014/06/26 17:51:14 tg Exp $ */
+/* $MirOS: contrib/code/jupp/syntax.c,v 1.12 2016/10/07 19:43:55 tg Exp $ */
 /*
  *     Syntax highlighting DFA interpreter
  *     Copyright
 #include "charmap.h"
 #include "syntax.h"
 
+static struct {
+       unsigned char buf[6];
+       unsigned char start;
+       unsigned char limit;
+       unsigned eaten : 1;
+       unsigned ebbed : 1;
+       unsigned unget : 1;
+       unsigned first : 1;
+} utfstate;
+
+static int
+utfoctet(P *p)
+{
+       int c;
+
+       utfstate.first = 0;
+       if (utfstate.eaten) {
+ ate:
+               if (utfstate.start < utfstate.limit)
+                       return (utfstate.buf[utfstate.start++]);
+               if (utfstate.ebbed)
+                       return (NO_MORE_DATA);
+               utfstate.eaten = utfstate.limit = 0;
+       }
+       if (!utfstate.limit) {
+               utfstate.first = 1;
+               if (utfstate.unget) {
+                       c = utfstate.buf[utfstate.start];
+                       utfstate.unget = 0;
+               } else
+                       c = pgetb(p);
+               if ((c == NO_MORE_DATA) || (c < 0x80))
+                       return (c);
+               if ((c < 0xC2) || (c >= 0xFE))
+                       return (0xFF);
+               utfstate.start = 0;
+               utfstate.buf[utfstate.start++] = (unsigned char)c;
+               utfstate.limit = (c < 0xE0) ? 2 : (c < 0xF0) ? 3 :
+                   (c < 0xF8) ? 4 : (c < 0xFC) ? 5 : 6;
+       }
+       while (utfstate.start < utfstate.limit) {
+               if (((c = pgetb(p)) == NO_MORE_DATA) || ((c ^ 0x80) > 0x3F)) {
+                       /* invalid follow byte, invalidate all previous ones */
+                       utfstate.limit = 0;
+                       while (utfstate.limit < utfstate.start)
+                               utfstate.buf[utfstate.limit++] = 0xFF;
+                       /* append this as ungetch unless the well is dry */
+                       if (c == NO_MORE_DATA)
+                               utfstate.ebbed = 1;
+                       else {
+                               utfstate.buf[utfstate.limit] = (unsigned char)c;
+                               utfstate.unget = 1;
+                       }
+                       /* now return those bytes */
+                       break;
+               }
+               utfstate.buf[utfstate.start++] = (unsigned char)c;
+       }
+       utfstate.start = 0;
+       utfstate.eaten = 1;
+       goto ate;
+}
+
+static int
+octetutf(P *p)
+{
+       int c;
+
+       if (!(utfstate.start < utfstate.limit)) {
+               if ((c = pgetb(p)) == NO_MORE_DATA)
+                       return (NO_MORE_DATA);
+
+               utfstate.limit = utf8_encode(utfstate.buf,
+                   to_uni(p->b->o.charmap, c));
+               utfstate.start = 0;
+       }
+       return (utfstate.buf[utfstate.start++]);
+}
+
 /* Parse one line.  Returns new state.
    'syntax' is the loaded syntax definition for this buffer.
    'line' is advanced to start of next line.
 int *attr_buf = 0;
 int attr_size = 0;
 
-int parse(struct high_syntax *syntax,P *line,int state)
+int parse(struct high_syntax *syntax, P *line, int state)
 {
        struct high_state *h = syntax->states[state];
                        /* Current state */
        unsigned char buf[20];  /* Name buffer (trunc after 19 characters) */
-       int buf_idx=0;  /* Index into buffer */
-       int c;          /* Current character */
+       int buf_idx = 0;        /* Index into buffer */
+       int buf_len = 0;        /* counts only starting characters */
+       int buf_en = 0;         /* Set for name buffering */
        int *attr_end = attr_buf+attr_size;
        int *attr = attr_buf;
-       int buf_en = 0; /* Set for name buffering */
-       int ofst = 0;   /* record offset after we've stopped buffering */
+       int c;                  /* Current character */
+       int ofst = 0;   /* record length after we've stopped buffering */
+       int (*getoctet)(P *) = line->b->o.charmap->type ? utfoctet : octetutf;
+
+       memset(&utfstate, 0, sizeof(utfstate));
+       buf[0] = 0;
 
        /* Get next character */
-       while((c=pgetb(line))!=NO_MORE_DATA) {
+       while((c = getoctet(line)) != NO_MORE_DATA) {
                struct high_cmd *cmd, *kw_cmd;
                int x;
 
@@ -54,7 +138,8 @@ int parse(struct high_syntax *syntax,P *line,int state)
                }
 
                /* Advance to next attribute position (note attr[-1] below) */
-               attr++;
+               if (utfstate.first)
+                       attr++;
 
                /* Loop while noeat */
                do {
@@ -69,8 +154,8 @@ int parse(struct high_syntax *syntax,P *line,int state)
                                cmd = kw_cmd;
                                h = cmd->new_state;
                                /* Recolor keyword */
-                               for(x= -(buf_idx+1);x<-1;++x)
-                                       attr[x-ofst] = h -> color;
+                               for (x = -(buf_len + 1); x < -1; ++x)
+                                       attr[x - ofst] = h->color;
                        } else {
                                h = cmd->new_state;
                        }
@@ -84,6 +169,7 @@ int parse(struct high_syntax *syntax,P *line,int state)
                        /* Start buffering? */
                        if (cmd->start_buffering) {
                                buf_idx = 0;
+                               buf_len = 0;
                                buf_en = 1;
                                ofst = 0;
                        }
@@ -94,13 +180,15 @@ int parse(struct high_syntax *syntax,P *line,int state)
                } while(cmd->noeat);
 
                /* Save character in buffer */
-               if (buf_idx<19 && buf_en)
-                       buf[buf_idx++]=c;
                if (!buf_en)
-                       ++ofst;
-               buf[buf_idx] = 0;
+                       ofst += utfstate.first;
+               else if (buf_idx < 19) {
+                       buf[buf_idx++] = c;
+                       buf[buf_idx] = 0;
+                       buf_len += utfstate.first;
+               }
 
-               if(c=='\n')
+               if (c == '\n')
                        break;
        }
        /* Return new state number */
@@ -109,7 +197,7 @@ int parse(struct high_syntax *syntax,P *line,int state)
 
 /* Subroutines for load_dfa() */
 
-static struct high_state *find_state(struct high_syntax *syntax,unsigned char *name)
+static struct high_state *find_state(struct high_syntax *syntax, const unsigned char *name)
 {
        int x;
        struct high_state *state;
@@ -123,7 +211,7 @@ static struct high_state *find_state(struct high_syntax *syntax,unsigned char *n
        if(x==syntax->nstates) {
                int y;
                state=malloc(sizeof(struct high_state));
-               state->name=(unsigned char *)strdup((char *)name);
+               state->name=(const unsigned char *)strdup((const char *)name);
                state->no=syntax->nstates;
                state->color=FG_WHITE;
                if(!syntax->nstates)
@@ -159,7 +247,7 @@ mkcmd(void)
 
 struct high_syntax *syntax_list;
 
-struct high_syntax *load_dfa(unsigned char *name)
+struct high_syntax *load_dfa(const unsigned char *name)
 {
        unsigned char buf[1024];
        unsigned char bf[256];
@@ -203,7 +291,7 @@ struct high_syntax *load_dfa(unsigned char *name)
 
        /* Create new one */
        syntax = malloc(sizeof(struct high_syntax));
-       syntax->name = (unsigned char *)strdup((char *)name);
+       syntax->name = (const unsigned char *)strdup((const char *)name);
        syntax->next = syntax_list;
        syntax_list = syntax;
        syntax->nstates = 0;
index fd3d5ee..0585d72 100644 (file)
--- a/syntax.h
+++ b/syntax.h
@@ -1,4 +1,4 @@
-/* $MirOS: contrib/code/jupp/syntax.h,v 1.2 2008/05/13 13:08:26 tg Exp $ */
+/* $MirOS: contrib/code/jupp/syntax.h,v 1.3 2016/10/07 19:43:55 tg Exp $ */
 
 #ifndef _Isyntax
 #define _Isyntax 1
@@ -17,7 +17,7 @@
 
 struct high_color {
        struct high_color *next;
-       unsigned char *name;            /* Symbolic name of color */
+       const unsigned char *name;      /* Symbolic name of color */
        int color;                      /* Color value */
 };
 
@@ -25,7 +25,7 @@ struct high_color {
 
 struct high_state {
        int no;                         /* State number */
-       unsigned char *name;            /* Highlight state name */
+       const unsigned char *name;      /* Highlight state name */
        int color;                      /* Color for this state */
        struct high_cmd *cmd[256];      /* Character table */
 };
@@ -33,20 +33,20 @@ struct high_state {
 /* Command (transition) */
 
 struct high_cmd {
-       int noeat;                      /* Set to give this character to next state */
-       int recolor;                    /* No. chars to recolor if <0. */
-       int start_buffering;            /* Set if we should start buffering */
-       int stop_buffering;             /* Set if we should stop buffering */
        struct high_state *new_state;   /* The new state */
        HASH *keywords;                 /* Hash table of keywords */
-       int ignore;                     /* Set to ignore case */
+       int recolor;                    /* No. chars to recolor if <0. */
+       unsigned noeat : 1;             /* Set to give this character to next state */
+       unsigned start_buffering : 1;   /* Set if we should start buffering */
+       unsigned stop_buffering : 1;    /* Set if we should stop buffering */
+       unsigned ignore : 1;            /* Set to ignore case */
 };
 
 /* Loaded form of syntax file */
 
 struct high_syntax {
        struct high_syntax *next;       /* Linked list of loaded syntaxes */
-       unsigned char *name;                    /* Name of this syntax */
+       const unsigned char *name;      /* Name of this syntax */
        struct high_state **states;     /* The states of this syntax.  states[0] is idle state */
        int nstates;                    /* No. states */
        int szstates;                   /* Malloc size of states array */
@@ -57,11 +57,11 @@ struct high_syntax {
 
 /* Find a syntax.  Load it if necessary. */
 
-struct high_syntax *load_dfa(unsigned char *name);
+struct high_syntax *load_dfa(const unsigned char *name);
 
 /* Parse a lines.  Returns new state. */
 
 extern int *attr_buf;
-int parse(struct high_syntax *syntax,P *line,int state);
+int parse(struct high_syntax *syntax, P *line, int state);
 
 #endif
index 9078103..c903a28 100644 (file)
@@ -1,4 +1,4 @@
-# $MirOS: contrib/code/jupp/syntax/c.jsf.in,v 1.6 2013/12/24 22:50:07 tg Exp $
+# $MirOS: contrib/code/jupp/syntax/c.jsf.in,v 1.7 2016/10/07 19:43:56 tg Exp $
 #-
 # JOE syntax highlight file for C and C++
 
 # Weirdness: only states have colors, not transitions.  This means that you
 # sometimes have to make dummy states with '* next-state noeat' just to get
 # a color specification.
+#
+# Encoding: everything is handled as UTF-8 by octets, that is, you can have
+# individual octets change states (the colour of the last octet applies).
+# The JSF files themselves must accordingly be encoded in UTF-8. When a raw
+# octet or an invalid UTF-8 sequence is read, a number of \xFF octets are
+# matched on.
 
 
 # Define no. sync lines
@@ -121,7 +127,7 @@ done
        *               preinc
        " \t"           preinc_ws
        "\n"            reset
-       
+
 :preinc_ws Preproc
        *               prebad          recolor=-1
        " \t"           preinc_ws
@@ -131,12 +137,12 @@ done
 :preinc_local IncLocal
        *               preinc_local
        "\"\n"          reset
-       
+
 :preinc_system IncSystem
        *               preinc_system
        ">\n"           reset
 
-:prebad        Bad     
+:prebad        Bad
        *               prebad
        "\n"            reset
 
@@ -145,7 +151,7 @@ done
        *               predef
        " \t"           predef_ws
        "\n"            reset
-       
+
 :predef_ws Preproc
        *               prebad          recolor=-1
        " \t"           predef_ws
@@ -161,12 +167,12 @@ done
        "\n"            reset
        "\\"            preproc_cont
        "/"             preproc_slash
-       
+
 :preproc_slash Preproc
        *               preproc         noeat
        "*"             comment         recolor=-2
        "/"             line_comment    recolor=-2
-       
+
 :preproc_cont Preproc
        *               preproc_cont
        "\n"            preproc
diff --git a/syntax/tex.jsf.in b/syntax/tex.jsf.in
new file mode 100644 (file)
index 0000000..5018ed6
--- /dev/null
@@ -0,0 +1,38 @@
+# $MirOS: contrib/code/jupp/syntax/tex.jsf.in,v 1.1 2016/10/07 10:57:08 tg Exp $
+#-
+# JOE syntax highlight file for minimal Teχ (no verbatim or math)
+
+-
+
+=Idle
+=Comment       green
+=Syntax                bold yellow
+=Keyword       bold white
+=Special       bold red
+
+:idle Idle
+       *               idle
+       "%"             comment         recolor=-1
+       "\\"            escape          recolor=-1
+       "~{}"           syntax          recolor=-1
+       "#&_$"          special         recolor=-1
+
+:comment Comment
+       *               comment
+       "\n"            idle
+
+:escape Idle
+       *               special         recolor=-2
+       "~{}#&_%$"      idle
+       "\\ "           syntax          recolor=-2
+       "a-zA-Z"        keyword         recolor=-2
+
+:keyword Keyword
+       *               idle            noeat
+       "a-zA-Z"        keyword
+
+:syntax Syntax
+       *               idle            noeat
+
+:special Special
+       *               idle            noeat
diff --git a/tab.c b/tab.c
index 5bffb87..62d37db 100644 (file)
--- a/tab.c
+++ b/tab.c
@@ -1,4 +1,4 @@
-/* $MirOS: contrib/code/jupp/tab.c,v 1.4 2010/04/08 15:31:03 tg Exp $ */
+/* $MirOS: contrib/code/jupp/tab.c,v 1.5 2016/10/08 14:58:46 tg Exp $ */
 /*
  *     File selection menu
  *     Copyright
@@ -288,17 +288,16 @@ static int tababrt(BW *bw, int cursor, TAB *tab)
        return -1;
 }
 
-P *p_goto_start_of_path(P *p)
+static void p_goto_start_of_path(P *p)
 {
-       int c;
-       do
-               c = prgetc(p);
-       while (c!=NO_MORE_DATA && c!=' ' && c!='\n');
-
-       if (c!=NO_MORE_DATA)
-               pgetc(p);
-
-       return p;
+       while (/* CONSTCOND */ 1)
+               switch (prgetc(p)) {
+               case '\n':
+                       pgetc(p);
+                       /* FALLTHROUGH */
+               case NO_MORE_DATA:
+                       return;
+               }
 }
 
 /*****************************************************************************/
diff --git a/tty.c b/tty.c
index bd53c41..f062a5a 100644 (file)
--- a/tty.c
+++ b/tty.c
@@ -1,4 +1,4 @@
-/* $MirOS: contrib/code/jupp/tty.c,v 1.20 2014/07/25 22:10:23 tg Exp $ */
+/* $MirOS: contrib/code/jupp/tty.c,v 1.21 2016/10/07 19:38:22 tg Exp $ */
 /*
  *     UNIX Tty and Process interface
  *     Copyright
@@ -1014,7 +1014,7 @@ MPX *mpxmk(int *ptyfd, const unsigned char *cmd, unsigned char **args, void (*fu
        int comm[2];
        pid_t pid;
        int x;
-       MPX *m;
+       MPX *m = NULL;
        unsigned char *name;
 
        /* Get pty/tty pair */
diff --git a/tw.c b/tw.c
index 3f7950f..ba3288d 100644 (file)
--- a/tw.c
+++ b/tw.c
@@ -1,4 +1,4 @@
-/* $MirOS: contrib/code/jupp/tw.c,v 1.8 2012/06/07 22:16:09 tg Exp $ */
+/* $MirOS: contrib/code/jupp/tw.c,v 1.9 2016/10/08 16:42:00 tg Exp $ */
 /* 
  *     Text editing windows
  *     Copyright
@@ -239,9 +239,24 @@ static unsigned char *stagen(unsigned char *stalin, BW *bw, unsigned char *s, in
                                else
                                        stalin = vsadd(stalin, fill);
                                break;
-                       case 'n':
-                               stalin = vsncpy(sv(stalin), sz(bw->b->name ? bw->b->name : (unsigned char *)"Unnamed"));
+                       case 'n': {
+                               unsigned char fnc;
+                               const unsigned char *fn = bw->b->name ? bw->b->name :
+                                   (const unsigned char *)"Unnamed";
+
+ escape_loop:
+                               switch ((fnc = *fn++)) {
+                               case '\\':
+                                       stalin = vsadd(stalin, fnc);
+                                       /* FALLTHROUGH */
+                               default:
+                                       stalin = vsadd(stalin, fnc);
+                                       goto escape_loop;
+                               case '\0':
+                                       break;
+                               }
                                break;
+                           }
                        case 'm':
                                if (bw->b->changed)
                                        stalin = vsncpy(sv(stalin), sc("(Modified)"));
diff --git a/uedit.c b/uedit.c
index 9fe800c..673e428 100644 (file)
--- a/uedit.c
+++ b/uedit.c
@@ -1,4 +1,4 @@
-/* $MirOS: contrib/code/jupp/uedit.c,v 1.11 2013/11/07 21:50:36 tg Exp $ */
+/* $MirOS: contrib/code/jupp/uedit.c,v 1.14 2016/10/07 20:36:41 tg Exp $ */
 /*
  *     Basic user edit functions
  *     Copyright
@@ -37,7 +37,7 @@ int pgamnt = -1;              /* No. of PgUp/PgDn lines to keep */
 
 /******** i don't like global var ******/
 
-/* 
+/*
  * Move cursor to beginning of line
  */
 int u_goto_bol(BW *bw)
@@ -65,7 +65,7 @@ int uhome(BW *bw)
        p = pdup(bw->cursor);
 
        if (bw->o.indentfirst) {
-               if ((bw->o.smarthome) && (piscol(p) > pisindent(p))) { 
+               if ((bw->o.smarthome) && (piscol(p) > pisindent(p))) {
                        p_goto_bol(p);
                        while (joe_isblank(p->b->o.charmap,brc(p)))
                                pgetc(p);
@@ -180,7 +180,7 @@ int u_goto_right(BW *bw)
 }
 
 /*
- * Move cursor to beginning of previous word or if there isn't 
+ * Move cursor to beginning of previous word or if there isn't
  * previous word then go to beginning of the file
  *
  * WORD is a sequence non-white-space characters
@@ -216,7 +216,7 @@ int u_goto_prev(BW *bw)
 }
 
 /*
- * Move cursor to end of next word or if there isn't 
+ * Move cursor to end of next word or if there isn't
  * next word then go to end of the file
  *
  * WORD is a sequence non-white-space characters
@@ -318,12 +318,14 @@ int unedge(BW *bw)
 
 /* Move cursor to matching delimiter */
 
-int utomatch(BW *bw)
+static int
+utomatch_i(BW *bw, int dir)
 {
        int d;
-       int c,                  /* Character under cursor */
-        f,                     /* Character to find */
-        dir;                   /* 1 to search forward, -1 to search backward */
+       int c;                  /* character under cursor */
+       int f;                  /* character to find */
+       P *p;
+       int cnt = 0;            /* delimiter depth */
 
        switch (c = brch(bw->cursor)) {
        case '(':
@@ -338,10 +340,6 @@ int utomatch(BW *bw)
                f = '}';
                dir = 1;
                break;
-       case '`':
-               f = '\'';
-               dir = 1;
-               break;
        case '<':
                f = '>';
                dir = 1;
@@ -358,51 +356,55 @@ int utomatch(BW *bw)
                f = '{';
                dir = -1;
                break;
-       case '\'':
-               f = '`';
-               dir = -1;
-               break;
        case '>':
                f = '<';
                dir = -1;
                break;
+       case '"':
+       case '\'':
+       case '`':
+               f = c;
+               break;
        default:
                return -1;
        }
 
+       p = pdup(bw->cursor);
        if (dir == 1) {
-               P *p = pdup(bw->cursor);
-               int cnt = 0;    /* No. levels of delimiters we're in */
-
                while ((d = pgetc(p)) != NO_MORE_DATA) {
-                       if (d == c)
-                               ++cnt;
-                       else if (d == f && !--cnt) {
+                       if (d == f && f != c && !--cnt) {
                                prgetc(p);
-                               pset(bw->cursor, p);
-                               break;
+                               goto match_found;
+                       } else if (d == c) {
+                               ++cnt;
+                               if (f == c)
+                                       c = NO_MORE_DATA;
                        }
                }
-               prm(p);
        } else {
-               P *p = pdup(bw->cursor);
-               int cnt = 0;    /* No. levels of delimiters we're in */
-
                while ((d = prgetc(p)) != NO_MORE_DATA) {
-                       if (d == c)
+                       if (d == f && !cnt--)
+                               goto match_found;
+                       else if (d == c)
                                ++cnt;
-                       else if (d == f)
-                               if (!cnt--) {
-                                       pset(bw->cursor, p);
-                                       break;
-                               }
                }
-               prm(p);
        }
-       if (d == NO_MORE_DATA)
-               return -1;
-       else
-               return 0;
+       if (/* CONSTCOND */ 0) {
+ match_found:
+               pset(bw->cursor, p);
+       }
+       prm(p);
+       return ((d == NO_MORE_DATA) ? -1 : 0);
+}
+
+int utomatch(BW *bw)
+{
+       return (utomatch_i(bw, 1));
+}
+
+int urvmatch(BW *bw)
+{
+       return (utomatch_i(bw, -1));
 }
 
 /* Move cursor up */
@@ -816,7 +818,7 @@ int ubacks(BW *bw, int k)
                   is a multiple of indentation width, we're not at beginning of line,
                   'smarthome' option is enabled, and indentation is purely made out of
                   indent characters (or purify indents is enabled). */
-               
+
                /* Ignore purify for backspace */
                if (col == indent && (col%indwid)==0 && col!=0 && bw->o.smartbacks) {
                        P *p;
@@ -854,7 +856,7 @@ int ubacks(BW *bw, int k)
                return -1;
 }
 
-/* 
+/*
  * Delete sequence of characters (alphabetic, numeric) or (white-space)
  *     if cursor is on the white-space it will delete all white-spaces
  *             until alphanumeric character
@@ -1105,7 +1107,7 @@ int utypebw_raw(BW *bw, int k, int no_decode)
                                        k = utf8_decode_string(buf);
                                }
                        }
-                       
+
                        binsc(bw->cursor, k);
                }
 
diff --git a/uedit.h b/uedit.h
index e60e968..a6cc705 100644 (file)
--- a/uedit.h
+++ b/uedit.h
@@ -1,4 +1,4 @@
-/* $MirOS: contrib/code/jupp/uedit.h,v 1.4 2014/06/09 16:32:55 tg Exp $ */
+/* $MirOS: contrib/code/jupp/uedit.h,v 1.5 2016/10/07 20:07:50 tg Exp $ */
 /*
  *     Basic user edit functions
  *     Copyright
@@ -31,6 +31,7 @@ int u_goto_next PARAMS((BW *bw));     /* move cursor to next word, edge,
                                           or end of line */
 
 int utomatch PARAMS((BW *bw));
+int urvmatch PARAMS((BW *bw));
 int uuparw PARAMS((BW *bw));
 int udnarw PARAMS((BW *bw));
 int utos PARAMS((BW *bw));