-----
Do note that the joerc files must be written using the 8-bit encoding
-(probably ISO-8859-1), not UTF-8.
+(probably ISO-8859-1), not UTF-8. Syntax files, on the other hand,
+absolutely must be written in UTF-8 since jupp29.
JOE now handles two classes of character sets: UTF-8 and byte coded (like
ISO-8859-1). It can not yet handle other major classes such as UTF-16 or
- Search, incremental search, and search & replace all operate as usual.
__________________________________________________________________
-$MirOS: contrib/code/jupp/HINTS,v 1.8 2014/06/29 11:39:50 tg Exp $
+$MirOS: contrib/code/jupp/HINTS,v 1.9 2016/10/30 00:19:42 tg Exp $
--- /dev/null
+#!/bin/mksh
+# $MirOS: contrib/code/jupp/Make-w32.sh,v 1.7 2016/10/30 02:44:19 tg Exp $
+
+extrawarnings="-Wall -Wextra"
+extrawarnings="$extrawarnings -Wno-unused-parameter"
+echo "N: gcc-3.4.4-999 does not support -Wno-missing-field-initializers"
+echo "N: expect warnings about those, they are known, do not report them"
+extrawarnings="$extrawarnings -Wno-old-style-definition -Wno-strict-prototypes"
+extrawarnings="$extrawarnings -Wno-cast-qual"
+extrawarnings="$extrawarnings -Wno-missing-prototypes -Wno-missing-declarations"
+
+export LC_ALL=C
+set -ex
+[[ -s configure && -s jupprc && -s charmaps/klingon.in ]]
+
+jupp=$(sed -n "/^PACKAGE_VERSION='3\.1jupp\([0-9]*\)[~'].*\$/s//\1/p" configure)
+jwin=
+while (( jupp > 34 )); do
+ jwin=${jwin}z
+ (( jupp -= 25 ))
+done
+typeset -i1 tmp
+(( tmp = 1#a - 10 + jupp ))
+jwin=$jwin${tmp#1#}
+jtop=jwin31$jwin
+typeset -u jWIN=$jwin
+
+rm -rf mkw32
+mkdir mkw32{,/{build,$jtop}}
+cd mkw32/build
+export CFLAGS='-Os -march=i486 -mtune=pentium-mmx'
+export CPPFLAGS='-DJUPPRC_BUILTIN_NAME=\"jupp32rc\"'
+mksh ../../configure \
+ --prefix=c:/windows/system32 \
+ --sysconfdir=c:/windows/system32 \
+ --disable-dependency-tracking \
+ --disable-curses \
+ --disable-termcap \
+ --disable-search-libs \
+ --disable-getpwnam \
+ --disable-termidx \
+ --enable-win32reloc
+make AM_CFLAGS="$extrawarnings"
+cp charmaps/* syntax/* ../$jtop/
+cp jmacsrc joerc jpicorc jstarrc ../$jtop/
+cp joe.exe ../$jtop/jupp32.exe
+cd ../..
+cp COPYING mkw32/$jtop/copying.txt
+cp /bin/cygwin1.dll mkw32/$jtop/
+cp joe.txt mkw32/$jtop/jupp32.txt
+cp jupprc mkw32/$jtop/jupp32rc
+cd mkw32/$jtop
+:>setup.inf
+for x in *; do
+ [[ $x = *[A-Z]* ]] || continue
+ mv "$x" ../_TMP
+ typeset -l lc
+ lc=$x
+ mv ../_TMP "$lc"
+done
+sed -b -e "s!@jwin@!$jupp!g" -e "s!@ts@!$(date -u +%m/%d/%Y)!g" \
+ <../../setup.inf | while IFS= read -r line; do
+ if [[ $line = '@files@'* ]]; then
+ stat -c '%n=1,,%s\r' *
+ else
+ print -r -- "$line"
+ fi
+done >setup.inf
+sed -bi "/^setup.inf=1,,/s/^.*\$/$(stat -c '%n=1,,%s\r' setup.inf)/" setup.inf
+sed -bi "/^setup.inf=1,,/s/^.*\$/$(stat -c '%n=1,,%s\r' setup.inf)/" setup.inf
+chmod 444 *
+cd ..
+zip -D -X -9 -k ../JWIN31$jWIN.ZIP $jtop/*
+cd ..
+ls -l JWIN31$jWIN.ZIP
+rm -rf mkw32
-# $MirOS: contrib/code/jupp/Makefile.am,v 1.10 2016/10/08 17:44:17 tg Exp $
+# $MirOS: contrib/code/jupp/Makefile.am,v 1.15 2016/10/30 02:21:05 tg Exp $
AUTOMAKE_OPTIONS = foreign
-EXTRA_DIST = COPYING INFO LIST NEWS README README.cvs TODO docs/help-system.html \
- joerc.in jmacsrc.in jstarrc.in rjoerc.in jpicorc.in jupprc \
- joe.1.in dir.c syntax/c.jsf.in syntax/perl.jsf.in syntax/verilog.jsf.in \
- syntax/conf.jsf.in syntax/python.jsf.in syntax/php.jsf.in syntax/sh.jsf.in \
- 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/tex.jsf.in
+EXTRA_DIST = \
+ COPYING HINTS INFO LIST NEWS README README.cvs TODO dir.c \
+ win32.c jmacsrc.in joe.1.in joerc.in jpicorc.in jstarrc.in \
+ jupprc rjoerc.in charmaps/klingon.in docs/help-system.html \
+ syntax/asm.jsf.in syntax/c.jsf.in syntax/conf.jsf.in \
+ syntax/csh.jsf.in syntax/diff.jsf.in syntax/fortran.jsf.in \
+ syntax/html.jsf.in syntax/java.jsf.in syntax/lisp.jsf.in \
+ syntax/mail.jsf.in syntax/mason.jsf.in syntax/pascal.jsf.in \
+ syntax/perl.jsf.in syntax/php.jsf.in syntax/python.jsf.in \
+ syntax/sh.jsf.in syntax/tcl.jsf.in syntax/tex.jsf.in \
+ syntax/verilog.jsf.in syntax/vhdl.jsf.in syntax/xml.jsf.in
JOE_ALIASES = jmacs jpico jstar jupp rjoe
sysconfjoesubdir = @sysconfjoesubdir@
sysconf_joedir = $(sysconfdir)$(sysconfjoesubdir)
-sysconf_joe_DATA = joerc jmacsrc jstarrc rjoerc jpicorc jupprc
+sysconf_joe_DATA = jmacsrc joerc jpicorc jstarrc jupprc rjoerc
sysconf_syntaxdir = $(sysconf_joedir)/syntax
-sysconf_syntax_DATA = syntax/c.jsf syntax/perl.jsf syntax/verilog.jsf \
- syntax/conf.jsf syntax/python.jsf syntax/php.jsf syntax/sh.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/tex.jsf
+sysconf_syntax_DATA = \
+ 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
sysconf_charmapsdir = $(sysconf_joedir)/charmaps
sysconf_charmaps_DATA = charmaps/klingon
bin_PROGRAMS += termidx
endif
-INCLUDES = -DJOERC="\"$(sysconf_joedir)/\""
+if JUPP_WIN32RELOC
+joe_WIN32_SRCS = win32.c
+joe_WIN32_DEFS = -DJUPP_WIN32RELOC=1 -UJOERC
+else
+joe_WIN32_SRCS = # nothing
+joe_WIN32_DEFS = -DJUPP_WIN32RELOC=0 -DJOERC="\"$(sysconf_joedir)/\""
+endif
+
+INCLUDES = $(joe_WIN32_DEFS)
# joe_LDADD = @REQRD_LIBS@
-joe_SOURCES = b.c blocks.c bw.c cmd.c hash.c help.c kbd.c macro.c main.c menu.c \
- path.c poshist.c pw.c queue.c qw.c rc.c regex.c scrn.c tab.c termcap.c \
- tty.c tw.c ublock.c uedit.c uerror.c ufile.c uformat.c uisrch.c umath.c \
- undo.c usearch.c ushell.c utag.c va.c vfile.c vs.c w.c utils.c syntax.c \
- utf8.c selinux.c i18n.c charmap.c builtin.c builtins.c compat.c
+joe_SOURCES = \
+ b.c blocks.c builtin.c builtins.c bw.c charmap.c cmd.c compat.c \
+ hash.c help.c i18n.c kbd.c macro.c main.c menu.c path.c \
+ poshist.c pw.c queue.c qw.c rc.c regex.c scrn.c selinux.c \
+ syntax.c tab.c termcap.c tty.c tw.c ublock.c uedit.c uerror.c \
+ ufile.c uformat.c uisrch.c umath.c undo.c usearch.c ushell.c \
+ utag.c utf8.c utils.c va.c vfile.c vs.c w.c $(joe_WIN32_SRCS)
termidx_SOURCES = termidx.c
+man_joeinitfile=@joeinitfile@
+man_joeresides=@joeresides@
+man_joeinitcopy=@joeinitcopy@
+joe.1: joe.1.in
+ sed \
+ -e 's!@''joeinitfile''@!$(man_joeinitfile)!g' \
+ -e 's!@''joeresides''@!$(man_joeresides)!g' \
+ -e 's!@''joeinitcopy''@!$(man_joeinitcopy)!g' \
+ <$? >$@~
+ mv -f $@~ $@
+
install-exec-hook:
cd $(DESTDIR)$(bindir) && for i in $(JOE_ALIASES); do \
rm -f $$i; \
-# $MirOS: contrib/code/jupp/Makefile.bsd-wrapper,v 1.5 2016/10/08 17:44:17 tg Exp $
+# $MirOS: contrib/code/jupp/Makefile.bsd-wrapper,v 1.9 2016/10/30 00:04:18 tg Exp $
#-
# make -f Makefile.bsd-wrapper CFPREFIX=/usr/mpkg sysconfjoesubdir=/joe
MAN= joe.1
INST_TARGET= INSTALL_MAN= install
-CLEANFILES+= .deps charmaps syntax joe.txt{,~}
+CLEANFILES+= .deps charmap charmaps syntax joe.1 joe.txt{,~} jupp
CFPREFIX?= /usr/local
.if ${CFPREFIX} == "/usr"
--enable-sysconfjoesubdir=${sysconfjoesubdir:Q}
.ifmake winman
-CFARGS+= --enable-win32reloc=old
+CFARGS+= --enable-win32reloc
.endif
.include <bsd.own.mk>
.endif
joe.1: config.status
+ cd ${FSFOBJDIR} && ${FSFMAKE} $@
+
+all: jupplink
+jupplink: config.status
+ @ln -sf joe jupp
winman: joe.1
nrcon -mandoc joe.1 | col -bx >joe.txt~
@SET_MAKE@
-# $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 $
+# $MirOS: contrib/code/jupp/Makefile.in,v 1.15 2016/10/30 02:50:04 tg Exp $
+# $miros: contrib/code/jupp/Makefile.am,v 1.15 2016/10/30 02:21:05 tg Exp $
DIST_COMMON = README $(am__configure_deps) $(noinst_HEADERS) \
$(srcdir)/Makefile.am $(srcdir)/Makefile.in \
$(srcdir)/autoconf.h.in $(srcdir)/jmacsrc.in \
- $(srcdir)/joe.1.in $(srcdir)/joerc.in $(srcdir)/jpicorc.in \
- $(srcdir)/jstarrc.in $(srcdir)/rjoerc.in \
- $(top_srcdir)/charmaps/klingon.in $(top_srcdir)/configure \
- $(top_srcdir)/syntax/asm.jsf.in $(top_srcdir)/syntax/c.jsf.in \
- $(top_srcdir)/syntax/conf.jsf.in \
+ $(srcdir)/joerc.in $(srcdir)/jpicorc.in $(srcdir)/jstarrc.in \
+ $(srcdir)/rjoerc.in $(top_srcdir)/charmaps/klingon.in \
+ $(top_srcdir)/configure $(top_srcdir)/syntax/asm.jsf.in \
+ $(top_srcdir)/syntax/c.jsf.in $(top_srcdir)/syntax/conf.jsf.in \
$(top_srcdir)/syntax/csh.jsf.in \
$(top_srcdir)/syntax/diff.jsf.in \
$(top_srcdir)/syntax/fortran.jsf.in \
configure.lineno configure.status.lineno
mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
CONFIG_HEADER = autoconf.h
-CONFIG_CLEAN_FILES = joe.1 joerc jmacsrc jstarrc rjoerc jpicorc \
- syntax/c.jsf syntax/perl.jsf syntax/verilog.jsf syntax/sh.jsf \
+CONFIG_CLEAN_FILES = 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 \
"$(DESTDIR)$(sysconf_joedir)" "$(DESTDIR)$(sysconf_syntaxdir)"
binPROGRAMS_INSTALL = $(INSTALL_PROGRAM)
PROGRAMS = $(bin_PROGRAMS)
-am_joe_OBJECTS = b.$(OBJEXT) blocks.$(OBJEXT) bw.$(OBJEXT) \
- cmd.$(OBJEXT) hash.$(OBJEXT) help.$(OBJEXT) kbd.$(OBJEXT) \
- macro.$(OBJEXT) main.$(OBJEXT) menu.$(OBJEXT) path.$(OBJEXT) \
- poshist.$(OBJEXT) pw.$(OBJEXT) queue.$(OBJEXT) qw.$(OBJEXT) \
- rc.$(OBJEXT) regex.$(OBJEXT) scrn.$(OBJEXT) tab.$(OBJEXT) \
- termcap.$(OBJEXT) tty.$(OBJEXT) tw.$(OBJEXT) ublock.$(OBJEXT) \
- uedit.$(OBJEXT) uerror.$(OBJEXT) ufile.$(OBJEXT) \
- uformat.$(OBJEXT) uisrch.$(OBJEXT) umath.$(OBJEXT) \
- undo.$(OBJEXT) usearch.$(OBJEXT) ushell.$(OBJEXT) \
- utag.$(OBJEXT) va.$(OBJEXT) vfile.$(OBJEXT) vs.$(OBJEXT) \
- w.$(OBJEXT) utils.$(OBJEXT) syntax.$(OBJEXT) utf8.$(OBJEXT) \
- selinux.$(OBJEXT) i18n.$(OBJEXT) charmap.$(OBJEXT) \
- builtin.$(OBJEXT) builtins.$(OBJEXT) compat.$(OBJEXT)
+am__joe_SOURCES_DIST = b.c blocks.c builtin.c builtins.c bw.c \
+ charmap.c cmd.c compat.c hash.c help.c i18n.c kbd.c macro.c \
+ main.c menu.c path.c poshist.c pw.c queue.c qw.c rc.c regex.c \
+ scrn.c selinux.c syntax.c tab.c termcap.c tty.c tw.c ublock.c \
+ uedit.c uerror.c ufile.c uformat.c uisrch.c umath.c undo.c \
+ usearch.c ushell.c utag.c utf8.c utils.c va.c vfile.c vs.c w.c \
+ win32.c
+@JUPP_WIN32RELOC_TRUE@am__objects_1 = win32.$(OBJEXT)
+am_joe_OBJECTS = b.$(OBJEXT) blocks.$(OBJEXT) builtin.$(OBJEXT) \
+ builtins.$(OBJEXT) bw.$(OBJEXT) charmap.$(OBJEXT) \
+ cmd.$(OBJEXT) compat.$(OBJEXT) hash.$(OBJEXT) help.$(OBJEXT) \
+ i18n.$(OBJEXT) kbd.$(OBJEXT) macro.$(OBJEXT) main.$(OBJEXT) \
+ menu.$(OBJEXT) path.$(OBJEXT) poshist.$(OBJEXT) pw.$(OBJEXT) \
+ queue.$(OBJEXT) qw.$(OBJEXT) rc.$(OBJEXT) regex.$(OBJEXT) \
+ scrn.$(OBJEXT) selinux.$(OBJEXT) syntax.$(OBJEXT) \
+ tab.$(OBJEXT) termcap.$(OBJEXT) tty.$(OBJEXT) tw.$(OBJEXT) \
+ ublock.$(OBJEXT) uedit.$(OBJEXT) uerror.$(OBJEXT) \
+ ufile.$(OBJEXT) uformat.$(OBJEXT) uisrch.$(OBJEXT) \
+ umath.$(OBJEXT) undo.$(OBJEXT) usearch.$(OBJEXT) \
+ ushell.$(OBJEXT) utag.$(OBJEXT) utf8.$(OBJEXT) utils.$(OBJEXT) \
+ va.$(OBJEXT) vfile.$(OBJEXT) vs.$(OBJEXT) w.$(OBJEXT) \
+ $(am__objects_1)
joe_OBJECTS = $(am_joe_OBJECTS)
joe_LDADD = $(LDADD)
am_termidx_OBJECTS = termidx.$(OBJEXT)
CCLD = $(CC)
LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@
SOURCES = $(joe_SOURCES) $(termidx_SOURCES)
-DIST_SOURCES = $(joe_SOURCES) $(termidx_SOURCES)
+DIST_SOURCES = $(am__joe_SOURCES_DIST) $(termidx_SOURCES)
man1dir = $(mandir)/man1
INSTALL_MAN_AM = install-man
NROFF = nroff
INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@
INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+JUPP_WIN32RELOC_FALSE = @JUPP_WIN32RELOC_FALSE@
+JUPP_WIN32RELOC_TRUE = @JUPP_WIN32RELOC_TRUE@
LDFLAGS = @LDFLAGS@
LIBOBJS = @LIBOBJS@
LIBS = @LIBS@
target_os = @target_os@
target_vendor = @target_vendor@
AUTOMAKE_OPTIONS = foreign
-EXTRA_DIST = COPYING INFO LIST NEWS README README.cvs TODO docs/help-system.html \
- joerc.in jmacsrc.in jstarrc.in rjoerc.in jpicorc.in jupprc \
- joe.1.in dir.c syntax/c.jsf.in syntax/perl.jsf.in syntax/verilog.jsf.in \
- syntax/conf.jsf.in syntax/python.jsf.in syntax/php.jsf.in syntax/sh.jsf.in \
- 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/tex.jsf.in
+EXTRA_DIST = \
+ COPYING HINTS INFO LIST NEWS README README.cvs TODO dir.c \
+ win32.c jmacsrc.in joe.1.in joerc.in jpicorc.in jstarrc.in \
+ jupprc rjoerc.in charmaps/klingon.in docs/help-system.html \
+ syntax/asm.jsf.in syntax/c.jsf.in syntax/conf.jsf.in \
+ syntax/csh.jsf.in syntax/diff.jsf.in syntax/fortran.jsf.in \
+ syntax/html.jsf.in syntax/java.jsf.in syntax/lisp.jsf.in \
+ syntax/mail.jsf.in syntax/mason.jsf.in syntax/pascal.jsf.in \
+ syntax/perl.jsf.in syntax/php.jsf.in syntax/python.jsf.in \
+ syntax/sh.jsf.in syntax/tcl.jsf.in syntax/tex.jsf.in \
+ syntax/verilog.jsf.in syntax/vhdl.jsf.in syntax/xml.jsf.in
JOE_ALIASES = jmacs jpico jstar jupp rjoe
sysconf_joedir = $(sysconfdir)$(sysconfjoesubdir)
-sysconf_joe_DATA = joerc jmacsrc jstarrc rjoerc jpicorc jupprc
+sysconf_joe_DATA = jmacsrc joerc jpicorc jstarrc jupprc rjoerc
sysconf_syntaxdir = $(sysconf_joedir)/syntax
-sysconf_syntax_DATA = syntax/c.jsf syntax/perl.jsf syntax/verilog.jsf \
- syntax/conf.jsf syntax/python.jsf syntax/php.jsf syntax/sh.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/tex.jsf
+sysconf_syntax_DATA = \
+ 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
sysconf_charmapsdir = $(sysconf_joedir)/charmaps
sysconf_charmaps_DATA = charmaps/klingon
ufile.h uformat.h uisrch.h umath.h undo.h usearch.h ushell.h utag.h \
utils.h va.h vfile.h vs.h w.h utf8.h syntax.h i18n.h charmap.h builtin.h
-INCLUDES = -DJOERC="\"$(sysconf_joedir)/\""
+@JUPP_WIN32RELOC_FALSE@joe_WIN32_SRCS = # nothing
+@JUPP_WIN32RELOC_TRUE@joe_WIN32_SRCS = win32.c
+@JUPP_WIN32RELOC_FALSE@joe_WIN32_DEFS = -DJUPP_WIN32RELOC=0 -DJOERC="\"$(sysconf_joedir)/\""
+@JUPP_WIN32RELOC_TRUE@joe_WIN32_DEFS = -DJUPP_WIN32RELOC=1 -UJOERC
+INCLUDES = $(joe_WIN32_DEFS)
# joe_LDADD = @REQRD_LIBS@
-joe_SOURCES = b.c blocks.c bw.c cmd.c hash.c help.c kbd.c macro.c main.c menu.c \
- path.c poshist.c pw.c queue.c qw.c rc.c regex.c scrn.c tab.c termcap.c \
- tty.c tw.c ublock.c uedit.c uerror.c ufile.c uformat.c uisrch.c umath.c \
- undo.c usearch.c ushell.c utag.c va.c vfile.c vs.c w.c utils.c syntax.c \
- utf8.c selinux.c i18n.c charmap.c builtin.c builtins.c compat.c
+joe_SOURCES = \
+ b.c blocks.c builtin.c builtins.c bw.c charmap.c cmd.c compat.c \
+ hash.c help.c i18n.c kbd.c macro.c main.c menu.c path.c \
+ poshist.c pw.c queue.c qw.c rc.c regex.c scrn.c selinux.c \
+ syntax.c tab.c termcap.c tty.c tw.c ublock.c uedit.c uerror.c \
+ ufile.c uformat.c uisrch.c umath.c undo.c usearch.c ushell.c \
+ utag.c utf8.c utils.c va.c vfile.c vs.c w.c $(joe_WIN32_SRCS)
termidx_SOURCES = termidx.c
+man_joeinitfile = @joeinitfile@
+man_joeresides = @joeresides@
+man_joeinitcopy = @joeinitcopy@
all: autoconf.h
$(MAKE) $(AM_MAKEFLAGS) all-am
distclean-hdr:
-rm -f autoconf.h stamp-h1
-joe.1: $(top_builddir)/config.status $(srcdir)/joe.1.in
- cd $(top_builddir) && $(SHELL) ./config.status $@
joerc: $(top_builddir)/config.status $(srcdir)/joerc.in
cd $(top_builddir) && $(SHELL) ./config.status $@
jmacsrc: $(top_builddir)/config.status $(srcdir)/jmacsrc.in
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vfile.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vs.Po@am__quote@
@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/w.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/win32.Po@am__quote@
.c.o:
@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
uninstall-sysconf_charmapsDATA uninstall-sysconf_joeDATA \
uninstall-sysconf_syntaxDATA
+joe.1: joe.1.in
+ sed \
+ -e 's!@''joeinitfile''@!$(man_joeinitfile)!g' \
+ -e 's!@''joeresides''@!$(man_joeresides)!g' \
+ -e 's!@''joeinitcopy''@!$(man_joeinitcopy)!g' \
+ <$? >$@~
+ mv -f $@~ $@
install-exec-hook:
cd $(DESTDIR)$(bindir) && for i in $(JOE_ALIASES); do \
-$MirOS: contrib/code/jupp/NEWS,v 1.103 2016/10/08 17:44:17 tg Exp $
+$MirOS: contrib/code/jupp/NEWS,v 1.104 2016/10/30 00:19:42 tg Exp $
-------------------------------------------------------------------
-JUPP-current
+JOE 3.1jupp29
-- …
- Update internationalisation data to Unicode 9.0.0
- Bind execmd in jstarrc, so all flavours bind it
- Fix paths in joe(1) manpage
- Unbreak tab-completing filenames with spaces
- Fix filenames with backslashes
- configure --enable-sysconfjoesubdir to also get the manual page
+- Apply fixes from lintian, thank you!
+- Only look in JOERC/termcap if its path does not include a delimiter
+- Allow overriding the name of the built-in *jupprc (to *jupp32rc,
+ so the jupp32 build can use the pristine source)
+- Add win32 self-relocation, no hardcoded JOERC any more, optional
+ (used in the jupp32 portable build but NOT for the Cygwin package!)
+- Fix generating the manpage, now done by the Makefile
JOE 3.1jupp28
New features:
-----------------------
- move *rc files to .etc/joe directory?
+ move *rc files to .etc/joe directory? Or XDG, see below.
check all instances of 'chars': use unicode to locale symbols instead.
EBCDIC ?
Syntax Highlighting:
--------------------
-UTF-8 syntax files?
-
Support for more languages:
Paragraph reformat mode for TeX files.
│ jupp TODO │
└───────────┘
-• do not let configure handle expansion for the manpage,
- currently @joeresides@ expands to ${exec_prefix}/bin
- (unexpanded); a Makefile can correct that
+• replace all int with size_t where applicable
• merge syntax handling code from joe-3.7+
• merge math from joe-3.7+
• add group support to regex code
• use mirkev (better code for hashtables)
• attach labels to ftypes; allow ftypes to inherit from these
labels, instead of fdefault; add UI to apply an ftype, including
- fdefault, to the current buffer
-• regex needs groups
+ fdefault, to the current buffer (requested by Wayne Cuddy)
+• regex needs groups like 「\+\(foo\)」
• 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)
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
+ Natureshadow agrees with me that this is a JOE antifeature
+• ANSI syntax highlighting; auto-turn it on in shell windows (‽)
+• proper redraw for lines that had combining characters in them
+• add a soft line break flag: display as line-wrapped, do not
+ save any newlines introduced by that
+• put all configuration files into /usr/share, allow the user
+ to override all of them (not just the rc files) from their
+ home directory (XDG config dirs)
+• rc.c: struct glopts.set (int*) violates the strict aliasing
+ rule as it’s treated as (unsigned char *) for type 2 (global
+ option string), consider a union instead (check local types!)
• …
__________________________________________________________________
-$MirOS: contrib/code/jupp/TODO,v 1.26 2016/10/08 19:28:44 tg Exp $
+$MirOS: contrib/code/jupp/TODO,v 1.29 2016/10/30 02:46:25 tg Exp $
#include "types.h"
+#ifndef JUPPRC_BUILTIN_NAME
+#define JUPPRC_BUILTIN_NAME "jupprc"
+#endif
+
const unsigned char * const builtins[] = {
- US "jupprc", US
+ US JUPPRC_BUILTIN_NAME, US
"-asis\n"
"-assume_color\n"
"-dopadding\n"
":querysr\n"
"type ^@ TO \xFF\n"
, NULL
-, "@(#) $MirOS: contrib/code/jupp/builtins.c,v 1.22 2016/10/08 17:56:33 tg Exp $"
+, "@(#) $MirOS: contrib/code/jupp/builtins.c,v 1.23 2016/10/29 21:42:56 tg Exp $"
};
#if 0
.if "0" == "1"
#endif
-/* $MirOS: contrib/code/jupp/charmap.c,v 1.15 2014/10/23 17:10:44 tg Exp $ */
+/* $MirOS: contrib/code/jupp/charmap.c,v 1.16 2016/10/29 23:44:44 tg Exp $ */
/*
* UNICODE/ISO-10646 conversion utilities
* Copyright
}
/* Check JOERCcharmaps */
- if (!f) {
+ if (!f && has_JOERC) {
joe_snprintf_2((char *)buf, sizeof(buf),
- "%scharmaps/%s", JOERC, name);
+ "%scharmaps/%s", get_JOERC, name);
f = fopen((char *)buf, "r");
}
}
}
- if (!chpwd(US (JOERC "charmaps")) && (t = rexpnd(US "*"))) {
+ if (!chJpwd(US ("charmaps")) && (t = rexpnd(US "*"))) {
for (x = 0; x != aLEN(t); ++x)
if (strcmp(t[x], "..")) {
for (y = 0; y != aLEN(encodings); ++y)
SRCS+= i18n.c path.c utf8.c utils.c va.c vs.c
NOMAN= Yes
CPPFLAGS+= -DTEST -DTEST_CHARMAP
-CPPFLAGS+= -D'JOERC="/etc/joe"'
+CPPFLAGS+= -DJUPP_WIN32RELOC=0 -DJOERC=\"/etc/joe\"
.include <bsd.own.mk>
#! /bin/sh
# Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.61-MirPorts-1 for joe 3.1jupp29~pre1.
+# Generated by GNU Autoconf 2.61-MirPorts-1 for joe 3.1jupp29.
#
# Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
# 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
# Identity of this package.
PACKAGE_NAME='joe'
PACKAGE_TARNAME='joe'
-PACKAGE_VERSION='3.1jupp29~pre1'
-PACKAGE_STRING='joe 3.1jupp29~pre1'
+PACKAGE_VERSION='3.1jupp29'
+PACKAGE_STRING='joe 3.1jupp29'
PACKAGE_BUGREPORT=''
ac_unique_file="b.c"
WANT_TERMIDX_TRUE
WANT_TERMIDX_FALSE
sysconfjoesubdir
+JUPP_WIN32RELOC_TRUE
+JUPP_WIN32RELOC_FALSE
joeinitfile
joeinitcopy
joeresides
# 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.1jupp29~pre1 to adapt to many kinds of systems.
+\`configure' configures joe 3.1jupp29 to adapt to many kinds of systems.
Usage: $0 [OPTION]... [VAR=VALUE]...
if test -n "$ac_init_help"; then
case $ac_init_help in
- short | recursive ) echo "Configuration of joe 3.1jupp29~pre1:";;
+ short | recursive ) echo "Configuration of joe 3.1jupp29:";;
esac
cat <<\_ACEOF
test -n "$ac_init_help" && exit $ac_status
if $ac_init_version; then
cat <<\_ACEOF
-joe configure 3.1jupp29~pre1
+joe configure 3.1jupp29
generated by GNU Autoconf 2.61-MirPorts-1
Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001,
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.1jupp29~pre1, which was
+It was created by joe $as_me 3.1jupp29, which was
generated by GNU Autoconf 2.61-MirPorts-1. Invocation command line was
$ $0 $@
# Define the identity of the package.
PACKAGE='joe'
- VERSION='3.1jupp29~pre1'
+ VERSION='3.1jupp29'
cat >>confdefs.h <<_ACEOF
if test "${enable_win32reloc+set}" = set; then
enableval=$enable_win32reloc; win32reloc=$enableval
else
- win32reloc=auto
+ win32reloc=no
+fi
+
+
+
+if test x"$win32reloc" = x"yes"; then
+ JUPP_WIN32RELOC_TRUE=
+ JUPP_WIN32RELOC_FALSE='#'
+else
+ JUPP_WIN32RELOC_TRUE='#'
+ JUPP_WIN32RELOC_FALSE=
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'
+ 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'
+ joeresides='C:\\eProgramme\\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'
+ 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'
+ joeinitfile='usually \\fB'$sysconfdir$sysconfjoesubdir'/joerc\\fR'
+ joeinitcopy='which normally resides in \\fB'$sysconfdir$sysconfjoesubdir'/joerc\\fR'
joeresides=$bindir'/joe'
jrcbefore=$sysconfdir$sysconfjoesubdir/
jrcafter=''
-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"
+ac_config_files="$ac_config_files Makefile 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
Usually this means the macro was only invoked conditionally." >&2;}
{ (exit 1); exit 1; }; }
fi
+if test -z "${JUPP_WIN32RELOC_TRUE}" && test -z "${JUPP_WIN32RELOC_FALSE}"; then
+ { { echo "$as_me:$LINENO: error: conditional \"JUPP_WIN32RELOC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&5
+echo "$as_me: error: conditional \"JUPP_WIN32RELOC\" was never defined.
+Usually this means the macro was only invoked conditionally." >&2;}
+ { (exit 1); exit 1; }; }
+fi
: ${CONFIG_STATUS=./config.status}
ac_clean_files_save=$ac_clean_files
# 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.1jupp29~pre1, which was
+This file was extended by joe $as_me 3.1jupp29, which was
generated by GNU Autoconf 2.61-MirPorts-1. Invocation command line was
CONFIG_FILES = $CONFIG_FILES
_ACEOF
cat >>$CONFIG_STATUS <<_ACEOF
ac_cs_version="\\
-joe config.status 3.1jupp29~pre1
+joe config.status 3.1jupp29
configured by $0, generated by GNU Autoconf 2.61-MirPorts-1,
with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\"
"autoconf.h") CONFIG_HEADERS="$CONFIG_HEADERS autoconf.h" ;;
"depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;;
"Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;;
- "joe.1") CONFIG_FILES="$CONFIG_FILES joe.1" ;;
"joerc") CONFIG_FILES="$CONFIG_FILES joerc" ;;
"jmacsrc") CONFIG_FILES="$CONFIG_FILES jmacsrc" ;;
"jstarrc") CONFIG_FILES="$CONFIG_FILES jstarrc" ;;
WANT_TERMIDX_TRUE!$WANT_TERMIDX_TRUE$ac_delim
WANT_TERMIDX_FALSE!$WANT_TERMIDX_FALSE$ac_delim
sysconfjoesubdir!$sysconfjoesubdir$ac_delim
-joeinitfile!$joeinitfile$ac_delim
+JUPP_WIN32RELOC_TRUE!$JUPP_WIN32RELOC_TRUE$ac_delim
_ACEOF
if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 97; then
ac_delim='%!_!# '
for ac_last_try in false false false false false :; do
cat >conf$$subs.sed <<_ACEOF
+JUPP_WIN32RELOC_FALSE!$JUPP_WIN32RELOC_FALSE$ac_delim
+joeinitfile!$joeinitfile$ac_delim
joeinitcopy!$joeinitcopy$ac_delim
joeresides!$joeresides$ac_delim
jrcbefore!$jrcbefore$ac_delim
LTLIBOBJS!$LTLIBOBJS$ac_delim
_ACEOF
- if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 7; then
+ if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 9; then
break
elif $ac_last_try; then
{ { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5
-# $MirOS: contrib/code/jupp/configure.ac,v 1.48 2016/10/08 17:44:17 tg Exp $
+# $MirOS: contrib/code/jupp/configure.ac,v 1.52 2016/10/30 02:47:28 tg Exp $
#-
# Process this file with autoconf to produce a configure script.
AC_PREREQ(2.54)
#### Here's the only place where to change version number ####
-AC_INIT(joe, 3.1jupp29~pre1)
+AC_INIT(joe, 3.1jupp29)
#### But see main.c for the Copyright (c) owner and year! ####
AC_CONFIG_SRCDIR([b.c])
AC_ARG_ENABLE([win32reloc],
[ --enable-win32reloc enable win32 self-relocation],
- [win32reloc=$enableval], [win32reloc=auto])
-test x"$win32reloc" = x"old" || win32reloc=no # currently not implemented
+ [win32reloc=$enableval], [win32reloc=no])
+AM_CONDITIONAL([JUPP_WIN32RELOC], [test x"$win32reloc" = x"yes"])
if test x"$win32reloc" = x"yes"; then
- joeinitfile='\fBjoerc\fR in the same directory as the binary resides in'
+ 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'
+ joeresides='C:\\eProgramme\\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'
+ 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'
+ joeinitfile='usually \\fB'$sysconfdir$sysconfjoesubdir'/joerc\\fR'
+ joeinitcopy='which normally resides in \\fB'$sysconfdir$sysconfjoesubdir'/joerc\\fR'
joeresides=$bindir'/joe'
jrcbefore=$sysconfdir$sysconfjoesubdir/
jrcafter=''
# Check for programs..
AC_CHECK_PROG(SPELL,aspell,aspell,ispell)
-AC_CONFIG_FILES([Makefile joe.1 joerc jmacsrc jstarrc rjoerc jpicorc
+AC_CONFIG_FILES([Makefile 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
\r
JUPP is free software; you can distribute it and/or modify\r
it under the terms of the GNU General Public License, Ver-\r
- sion 1, as published by the Free Software Foundation. I have\r
- no plans for turning JOE into a commercial or share-ware\r
- product. See the source code for exact authorship and\r
- licencing information. JOE is available over the Internet\r
- from http://joe-editor.sf.net/. JUPP is available at\r
- http://mirbsd.de/jupp.\r
+ sion 1, as published by the Free Software Foundation.\r
+ (main.c contains more detailled exceptions.) I have no plans\r
+ for turning JOE into a commercial or share-ware product. See\r
+ the source code for exact authorship and licencing informa-\r
+ tion. JOE is available over the Internet from http://joe-\r
+ editor.sf.net/. JUPP is available at http://mirbsd.de/jupp.\r
\r
Usage\r
To start the editor, type joe followed by zero or more names\r
H to dismiss the help window.\r
\r
You can customize the keyboard layout, the help screens and\r
- a number of behavior defaults by copying JOE's initializa-\r
- tion file (c:/windows/system32/joe/joerc) to .joerc in your\r
- home directory and then by modifying it. See the section\r
- joerc below.\r
+ a number of behavior defaults by copying JOE's initialisa-\r
+ tion file (joerc in the same directory as the binary resides\r
+ in) to .joerc in your home directory and then by modifying\r
+ it. See the section joerc below.\r
\r
To have JOE used as your default editor for e-mail and News,\r
you need to set the EDITOR and VISUAL environment variables\r
in your shell initialization file (.cshrc or .profile) to\r
- refer to JOE (joe resides as c:/windows/system32/joe.exe).\r
-\r
+ refer to JOE (the joe binary usually resides as\r
+ C:\Programme\jupp32\joe.exe).\r
There are a number of other obscure invocation parameters\r
which may have to be set, particularly if your terminal\r
screen is not updating as you think it should. See the sec-\r
\r
-nobackups\r
This option prevents backup files.\r
-\r
-nonotice\r
This option prevent the copyright notice from being\r
displayed when the editor starts.\r
\r
-keymap name\r
Use an alternate section of the joerc file for the key\r
- sequence bindings. For example, joe, jstar, rjoe and
- jupp support -keymap cua to make ^Z, ^X, ^C and ^V do
- the same thing as in contemporary GUI editors.
+ sequence bindings. For example, joe, jstar, rjoe and\r
+ jupp support -keymap cua to make ^Z, ^X, ^C and ^V do\r
+ the same thing as in contemporary GUI editors.\r
\r
These options can also be specified in the joerc file. They\r
can be set depending on the file-name extension. Programs\r
appended to the name, which contains the original version of\r
the file.\r
\r
-\r
Word wrap and formatting\r
\r
If you type past the right edge of the screen in a C\r
If you want to center a line within the margins, use the ^K\r
A command.\r
\r
-\r
Over-type mode\r
\r
Sometimes it's tiresome to have to delete old text before or\r
If you need to insert while you're in over-type mode, hit\r
^@. This inserts a single SPACE into the text.\r
\r
-\r
Control and Meta characters\r
\r
Each character is represented by a number. For example, the\r
have to put the editor in ASIS mode (described later) to\r
have these passed untranslated to the terminal.\r
\r
-\r
Prompts\r
-\r
If you hit TAB at any file name prompt, joe will attempt to\r
complete the name you entered as much as possible. If it\r
couldn't complete the entire name, because there are more\r
Since prompts are windows, you can also switch out of them\r
with ^K P and ^K N.\r
\r
-\r
Where am I?\r
\r
Hit ^K SPACE to have JOE report the line number, column\r
setting placing the appropriate escape sequences in the\r
status line setup strings. Edit the joerc file for details.\r
\r
-\r
File operations\r
\r
You can hit ^K D to save the current file (possibly under a\r
If you want to include another file in the file you're edit-\r
ing, use ^K R to insert it.\r
\r
-\r
Temporarily suspending the editor\r
\r
If you need to temporarily stop the editor and go back to\r
(you'll be told which when you hit ^K Z) to return to the\r
editor.\r
\r
-\r
Searching for text\r
\r
Hit ^K F to have the editor search forwards or backwards for\r
\r
You can hit ^L to repeat the previous search.\r
\r
-\r
Regular Expressions\r
\r
A number of special character sequences may be entered as\r
line by itself.\r
\r
\< \>\r
- These match the beginning and end of a word. For\r
- example, if you give \<\*is\*\>, then joe will find\r
- whole words which have the sub-string is within them.\r
+ These match the beginning and end of a word. For exam-\r
+ ple, if you give \<\*is\*\>, then joe will find whole\r
+ words which have the sub-string is within them.\r
\r
\[...]\r
This matches any single character which appears within\r
\r
Address: England, London, S. Holmes, 221b Baker St.\r
\r
-\r
Blocks\r
\r
If you want to move, copy, save or delete a specific section\r
\r
After you are finished with some block operations, you can\r
just leave the highlighting on if you don't mind it (of\r
- course, if you accidently hit ^K Y without noticing...). If\r
- it really bothers you, however, just hit ^K B ^K K, to turn\r
- the highlighting off.\r
-\r
+ course, if you accidentally hit ^K Y without noticing...).\r
+ If it really bothers you, however, just hit ^K B ^K K, to\r
+ turn the highlighting off.\r
\r
Indenting program blocks\r
-\r
Auto-indent mode toggled with the ^T I command. The joerc\r
is normally set up so that files with names ending with .p,\r
.c or .h have auto-indent mode enabled. When auto-indent\r
^K , and ^K . commands. The number of columns these com-\r
mands shift by can be set through a ^T option.\r
\r
-\r
Windows\r
-\r
You can edit more than one file at the same time or edit two\r
or more different places of the same file. To do this, hit\r
^K O, to split the screen into two windows. Use ^K P or ^K\r
You can change the height of the windows with the ^K G and\r
^K T commands.\r
\r
-\r
Keyboard macros\r
\r
Macros allow you to record a series of keystrokes and replay\r
number. Also you can execute previously recorded macros\r
from within new macros.\r
\r
-\r
Repeat\r
-\r
You can use the repeat command, ^K \, to repeat a macro, or\r
any other edit command or even a normal character, a speci-\r
fied number of times. Hit ^K \, type in the number of times\r
\r
^K 20<return>^Y\r
\r
-\r
Rectangle mode\r
-\r
Type ^T X to have ^K B and ^K K select rectangular blocks\r
instead of stream-of-text blocks. This mode is useful for\r
moving, copying, deleting or saving columns of text. You\r
filter block command (^K /), since it will maintain the ori-\r
ginal width of the selected column.\r
\r
-\r
Tag search\r
-\r
If you are editing a large C program with many source files,\r
you can use the ctags program to generate a tags file. This\r
file contains a list of program symbols and the files and\r
probably want to split the window first with ^K O, to have\r
both the original file and the definition file loaded.\r
\r
-\r
Shell windows\r
-\r
Hit ^K ' to run a command shell in one of JOE's windows.\r
When the cursor is at the end of a shell window (use ^K V if\r
it's not), whatever you type is passed to the shell instead\r
The joerc file\r
^T options, the help screens and the key-sequence to editor\r
command bindings are all defined in JOE's initialization\r
- file. If you make a copy of this file (which resides in\r
- c:/windows/system32/joe/joerc) to $HOME/.joerc, you can cu-\r
- stomize these setting to your liking. The syntax of the\r
- initialization file should be fairly obvious and there are\r
+ file. If you make a copy of this file (which resides in the\r
+ same directory as the binary) to $HOME/.joerc, you can cus-\r
+ tomise these settings to your liking. The syntax of the ini-\r
+ tialization file should be fairly obvious, and there are\r
further instruction in it.\r
\r
Acknowledgments\r
- JOE was written by Joseph H. Allen. If you have bug reports\r
- or questions, e-mail them to jhallen@world.std.com. Larry\r
+ JOE was written by Joseph H. Allen. If you have bug reports\r
+ or questions, e-mail them to jhallen@world.std.com. Larry\r
Foard (entropy@world.std.com) and Gary Gray\r
(ggray@world.std.com) also helped with the creation of JOE.\r
- Thorsten Glaser (tg@mirbsd.org) created JUPP, and the 16-bit\r
- MS-DOS version of JUPP 2.8 was compiled by Andreas Totlis\r
- (atotlis@t-online.de).\r
+ Thorsten "mirabilos" Glaser (tg@mirbsd.org) created JUPP,\r
+ and the 16-bit MS-DOS version of JUPP 2.8 was compiled by\r
+ Andreas Totlis (atotlis@t-online.de).\r
+\r
+Bugs\r
+ This manual page describes only the JOE flavour; documenta-\r
+ tion for JUPP is especially missing.\r
-/* $MirOS: contrib/code/jupp/main.c,v 1.25 2016/10/07 20:09:55 tg Exp $ */
+/* $MirOS: contrib/code/jupp/main.c,v 1.26 2016/10/29 23:44:45 tg Exp $ */
#define JUPP_IS_COPYRIGHT_C_BY "2016 mirabilos"
int backopt;
int c;
+ init_JOERC();
joe_locale();
mainenv = (unsigned char **)envp;
}
}
- vsrm(s);
- s = vsncpy(NULL, 0, sc(JOERC));
- s = vsncpy(sv(s), sv(run));
- s = vsncpy(sv(s), sc("rc"));
- c = procrc(cap, s);
- if (c == 0)
- goto donerc;
- if (c == 1) {
- unsigned char buf[8];
-
- fprintf(stderr, "There were errors in '%s'. Use it anyway?", s);
- fflush(stderr);
- if (fgets((char *)buf, 8, stdin) != NULL &&
- (buf[0] == 'y' || buf[0] == 'Y'))
+ if (has_JOERC) {
+ vsrm(s);
+ s = vsncpy(NULL, 0, sz(get_JOERC));
+ s = vsncpy(sv(s), sv(run));
+ s = vsncpy(sv(s), sc("rc"));
+ c = procrc(cap, s);
+ if (c == 0)
goto donerc;
+ if (c == 1) {
+ unsigned char buf[8];
+
+ fprintf(stderr, "There were errors in '%s'. Use it anyway?", s);
+ fflush(stderr);
+ if (fgets((char *)buf, 8, stdin) != NULL &&
+ (buf[0] == 'y' || buf[0] == 'Y'))
+ goto donerc;
+ }
}
/* Try built-in joerc */
-/* $MirOS: contrib/code/jupp/path.c,v 1.11 2016/10/08 16:25:59 tg Exp $ */
+/* $MirOS: contrib/code/jupp/path.c,v 1.12 2016/10/29 23:44:45 tg Exp $ */
/*
* Directory and path functions
* Copyright
return lst;
}
/********************************************************************/
-int chpwd(unsigned char *path)
+int chJpwd(const unsigned char *path)
+{
+ unsigned char *fullpath;
+ int rv;
+
+ if (!has_JOERC)
+ return (-1);
+ fullpath = vsncpy(NULL, 0, sz(get_JOERC));
+ fullpath = vsncpy(sv(fullpath), sz(path));
+ rv = chpwd(fullpath);
+ vsrm(fullpath);
+ return (rv);
+}
+
+int chpwd(const unsigned char *path)
{
#ifdef __MSDOS__
unsigned char buf[256];
return ((void *)wd);
#endif
}
+
+#if JUPP_WIN32RELOC
+unsigned char has_JOERC = 0;
+unsigned char *get_JOERC = NULL;
+
+extern char *cygwin32_argv0(void);
+
+void init_JOERC(void)
+{
+ struct stat sb;
+ char *sep;
+
+ if ((get_JOERC = (unsigned char *)cygwin32_argv0()) == NULL)
+ return;
+ joesep(get_JOERC);
+ if ((sep = strrchr((char *)get_JOERC, '/')) == NULL)
+ return;
+ if (stat(get_JOERC, &sb))
+ return;
+ sep[1] = '\0';
+ has_JOERC = 1;
+}
+#endif
-/* $MirOS: contrib/code/jupp/path.h,v 1.10 2016/10/08 16:42:00 tg Exp $ */
+/* $MirOS: contrib/code/jupp/path.h,v 1.11 2016/10/29 23:44:45 tg Exp $ */
/*
* Directory and path functions
* Copyright
#define joesep(path) (path)
#endif
+#if JUPP_WIN32RELOC
+extern unsigned char has_JOERC, *get_JOERC;
+void init_JOERC PARAMS((void));
+#else
+#define has_JOERC 1
+#define get_JOERC JOERC
+#define init_JOERC() /* nothing */
+#endif
+
/* char *namprt(char *path);
* Return name part of a path. There is no name if the last character
* in the path is '/'.
*/
unsigned char **rexpnd PARAMS((unsigned char *word));
-int chpwd PARAMS((unsigned char *path));
+int chJpwd PARAMS((const unsigned char *path));
+int chpwd PARAMS((const unsigned char *path));
unsigned char *pwd PARAMS((void));
#endif
-/* $MirOS: contrib/code/jupp/rc.c,v 1.20 2016/10/08 19:28:54 tg Exp $ */
+/* $MirOS: contrib/code/jupp/rc.c,v 1.21 2016/10/29 23:44:45 tg Exp $ */
/*
* *rc file parser
* Copyright
unsigned char *p;
int x, y;
- if (chpwd(US (JOERC "syntax")))
+ if (chJpwd(US ("syntax")))
return -1;
t = rexpnd(US "*.jsf");
if (!t) {
--- /dev/null
+; Right-Click this and choose "_I_nstall" to install jupp!\r
+\r
+; © 2006, 2009, 2010, 2011, 2012, 2016\r
+; by mirabilos <m@mirbsd.org>\r
+; see copying.txt and jupprc for legal\r
+\r
+[Version]\r
+Signature="$CHICAGO$"\r
+DriverVer=@ts@,3.1.@jwin@\r
+\r
+[SourceDisksNames]\r
+1="joe 3.1jupp@jwin@ Win32 installation floppy"\r
+\r
+[SourceDisksFiles]\r
+@files@\r
+\r
+[DefaultInstall]\r
+CopyFiles=jupp.Copy,jrc.Copy,jcm.Copy,jsy.Copy\r
+DelFiles=damage32.Undo,damage64.Undo\r
+AddReg=jupp.AddReg,fopenas.AddReg\r
+MediaType=SOFTWARE\r
+\r
+[jupp.Copy]\r
+jupp32.exe\r
+jupp32.txt\r
+; copies of jupp32.exe so the other *rc files are usable\r
+jmacs.exe,jupp32.exe\r
+joe.exe,jupp32.exe\r
+jpico.exe,jupp32.exe\r
+jstar.exe,jupp32.exe\r
+; sources at: http://www.mirbsd.org/MirOS/dist/gnu/cygwin32/\r
+cygwin1.dll\r
+\r
+[jrc.Copy]\r
+copying.txt\r
+jmacsrc\r
+joerc\r
+jpicorc\r
+jstarrc\r
+jupp32rc\r
+\r
+[jcm.Copy]\r
+klingon\r
+\r
+[jsy.Copy]\r
+asm.jsf\r
+c.jsf\r
+conf.jsf\r
+csh.jsf\r
+diff.jsf\r
+fortran.jsf\r
+html.jsf\r
+java.jsf\r
+lisp.jsf\r
+mail.jsf\r
+mason.jsf\r
+pascal.jsf\r
+perl.jsf\r
+php.jsf\r
+python.jsf\r
+sh.jsf\r
+tcl.jsf\r
+tex.jsf\r
+verilog.jsf\r
+vhdl.jsf\r
+xml.jsf\r
+\r
+[jupp.AddReg]\r
+HKCR,"*\shell\jupp","",,"&jupp"\r
+HKCR,"*\shell\jupp","Version",,"jupp 3.1.@jwin@ (i486)"\r
+HKCR,"*\shell\jupp\command","",,"%24%\Programme\jupp32\jupp32.exe ""%L"""\r
+\r
+[fopenas.AddReg]\r
+HKCR,"*\shell\fopenas","",,"&Load with..."\r
+HKCR,"*\shell\fopenas\command","",,"rundll32 shell32,OpenAs_RunDLL %1"\r
+\r
+[damage32.Undo]\r
+cygwin1.dll,,,1\r
+jupp32.exe,,,1\r
+jmacs.exe,,,1\r
+joe.exe,,,1\r
+jpico.exe,,,1\r
+jstar.exe,,,1\r
+\r
+[damage64.Undo]\r
+cygwin1.dll,,,1\r
+jupp32.exe,,,1\r
+jmacs.exe,,,1\r
+joe.exe,,,1\r
+jpico.exe,,,1\r
+jstar.exe,,,1\r
+\r
+[DestinationDirs]\r
+; possibly 16422,jupp32 but it's not documented since when this works;\r
+; it _is_ documented that the drive is wrong on some systems though...\r
+DefaultDestDir=24,Programme\jupp32\r
+damage32.Undo=-1,C:\WINDOWS\system32\r
+damage64.Undo=-1,C:\WINDOWS\r
+jcm.Copy=24,Programme\jupp32\charmaps\r
+jsy.Copy=24,Programme\jupp32\syntax\r
+\r
+; $MirOS: contrib/code/jupp/setup.inf,v 1.5 2016/10/30 02:44:19 tg Exp $\r
-/* $MirOS: contrib/code/jupp/syntax.c,v 1.12 2016/10/07 19:43:55 tg Exp $ */
+/* $MirOS: contrib/code/jupp/syntax.c,v 1.13 2016/10/29 23:44:45 tg Exp $ */
/*
* Syntax highlighting DFA interpreter
* Copyright
#include "scrn.h"
#include "utils.h"
#include "hash.h"
+#include "path.h"
#include "charmap.h"
#include "syntax.h"
f = fopen((char *)buf,"r");
}
- if (!f) {
- joe_snprintf_2((char *)buf,sizeof(buf),"%ssyntax/%s.jsf",JOERC,name);
+ if (!f && has_JOERC) {
+ joe_snprintf_2((char *)buf,sizeof(buf),"%ssyntax/%s.jsf",get_JOERC,name);
f = fopen((char *)buf,"r");
}
if(!f)
-/* $MirOS: contrib/code/jupp/termcap.c,v 1.9 2014/03/04 23:04:12 tg Exp $ */
+/* $MirOS: contrib/code/jupp/termcap.c,v 1.11 2016/10/29 23:44:46 tg Exp $ */
/*
* TERMCAP/TERMINFO database interface
* Copyright
#endif
#include "blocks.h"
+#include "path.h"
#include "termcap.h"
#include "utils.h"
#include "va.h"
} else
namebuf = NULL;
namebuf = vsncpy(sv(namebuf), sc(".termcap "));
- namebuf = vsncpy(sv(namebuf), sc(JOERC));
- namebuf = vsncpy(sv(namebuf), sc("termcap /etc/termcap"));
+ if (has_JOERC &&
+ vsscan(sz(get_JOERC), sc("\t :")) == ~0) {
+ namebuf = vsncpy(sv(namebuf), sz(get_JOERC));
+ namebuf = vsncpy(sv(namebuf), sc("termcap "));
+ }
+ namebuf = vsncpy(sv(namebuf), sc("/etc/termcap"));
}
}
-/* $MirOS: contrib/code/jupp/tty.c,v 1.21 2016/10/07 19:38:22 tg Exp $ */
+/* $MirOS: contrib/code/jupp/tty.c,v 1.22 2016/10/30 02:38:35 tg Exp $ */
/*
* UNIX Tty and Process interface
* Copyright
static unsigned char *getpty(int *ptyfd)
{
int fdm;
- unsigned char *name;
*ptyfd = fdm = open("/dev/ptmx", O_RDWR);
grantpt(fdm);
-/* $MirOS: contrib/code/jupp/vs.c,v 1.7 2014/07/25 11:44:34 tg Exp $ */
+/* $MirOS: contrib/code/jupp/vs.c,v 1.8 2016/10/30 00:19:57 tg Exp $ */
/*
* Variable length strings
* Copyright
return vary;
}
-int vsbsearch(sELEMENT *ary, int len, sELEMENT el)
+int vsbsearch(const sELEMENT *ary, int len, sELEMENT el)
{
int x, y, z;
return vscmpn(sv(a), sv(b));
}
-int vsscan(sELEMENT *a, int alen, sELEMENT *b, int blen)
+int vsscan(const sELEMENT *a, int alen, const sELEMENT *b, int blen)
{
int x;
-/* $MirOS: contrib/code/jupp/vs.h,v 1.5 2014/07/25 11:44:35 tg Exp $ */
+/* $MirOS: contrib/code/jupp/vs.h,v 1.6 2016/10/30 00:19:58 tg Exp $ */
/*
* Dynamic string library
* Copyright
/* Searching and Sorting */
/*************************/
-/* int vsbsearch(sELEMENT *ary, int len, sELEMENT element);
+/* int vsbsearch(const sELEMENT *ary, int len, sELEMENT element);
* Do a binary search on a sorted variable length or char array. Returns position
* of matching element or the position where the element should be if it was
* not found. (You should test with scmp to find out which).
*
* Hmm... this should really indicate whether or not the element was found.
*/
-int vsbsearch PARAMS((sELEMENT *ary, int len, sELEMENT el));
+int vsbsearch PARAMS((const sELEMENT *ary, int len, sELEMENT el));
/* int vscmpn(sELEMENT *a, int alen, sELEMENT *b, int blen);
*
*/
int vscmp PARAMS((sELEMENT *a, sELEMENT *b));
-/* int vsscan(sELEMENT *a, int alen, sELEMENT *b, int blen);
+/* int vsscan(const sELEMENT *a, int alen, const sELEMENT *b, int blen);
* Find offset of first matching element in 'a' which matches any
* of the elements passed in 'b'. Array 'b' must be sorted.
*
* Hmm... this really needs to return what the found element is.
*/
-int vsscan PARAMS((sELEMENT *a, int alen, sELEMENT *b, int blen));
+int vsscan PARAMS((const sELEMENT *a, int alen, const sELEMENT *b, int blen));
/* int vsspan(sELEMENT *a, int alen, sELEMENT *b, int blen);
* Find offset of first matching element in 'a' which does not match any
--- /dev/null
+/* $MirOS: contrib/code/jupp/win32.c,v 1.2 2016/10/30 02:38:35 tg Exp $ */
+
+/*-
+ * Copyright (c) 2016
+ * mirabilos <m@mirbsd.org>
+ *
+ * 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-
+ * limited rights to use, publicly perform, distribute, sell, modify,
+ * merge, give away, or sublicence.
+ *
+ * This work is provided "AS IS" and WITHOUT WARRANTY of any kind, to
+ * the utmost extent permitted by applicable law, neither express nor
+ * implied; without malicious intent or gross negligence. In no event
+ * may a licensor, author or contributor be held liable for indirect,
+ * direct, other damage, loss, or other issues arising in any way out
+ * of dealing in the work, even if advised of the possibility of such
+ * damage or existence of a defect, except proven that it results out
+ * of said person's immediate fault when using the work as intended.
+ *-
+ * Retrieve the realpath of the program (what could be argv[0] if the
+ * Unix designers had wanted it).
+ */
+
+#include <windows.h>
+
+char *
+cygwin32_argv0(void)
+{
+ DWORD res;
+ /* plus one to detect truncation */
+ char buf[MAX_PATH + 1];
+
+ if (!(res = GetModuleFileName(NULL, buf, sizeof(buf))) ||
+ ((size_t)res > (size_t)(MAX_PATH)))
+ return (NULL);
+ buf[res] = '\0';
+ return (strdup(buf));
+}