Vendor import of less v563.

This commit is contained in:
Xin LI 2020-10-24 05:25:54 +00:00
parent 6aa86b4531
commit e3e1c0a5de
67 changed files with 1421 additions and 1209 deletions

View File

@ -4,7 +4,7 @@ EMAIL = bug-less@gnu.org
HOMEPAGE = http://www.greenwoodsoftware.com/less
SHELL = /bin/sh
GIT = git
NROFF = nroff -man
NROFF = nroff -t -man
srcdir = .
@ -52,8 +52,7 @@ help.c: less.hlp
${srcdir}/mkhelp.pl < less.hlp > help.c
if cmp -s help.c help.c.old; then mv -f help.c.old help.c; fi
${srcdir}/configure: ${srcdir}/configure.ac \
${srcdir}/Makefile.in
${srcdir}/configure ${srcdir}/defines.h.in: ${srcdir}/configure.ac ${srcdir}/Makefile.in
cd ${srcdir}; autoheader; autoconf
funcs.h: ${SRC:%=${srcdir}/%}
@ -66,6 +65,7 @@ lint:
clean:
rm -f Makefile config.status config.log config.cache defines.h stamp-h \
configure defines.h.in funcs.h help.c \
README NEWS \
less.nro less.man lesskey.nro lesskey.man lessecho.nro lessecho.man
@ -93,8 +93,6 @@ ${srcdir}/lesskey.nro: ${srcdir}/lesskey.nro.VER ${srcdir}/version.c
${REPLACE_VERSION} ${srcdir}/lesskey.nro.VER
${srcdir}/lessecho.nro: ${srcdir}/lessecho.nro.VER ${srcdir}/version.c
${REPLACE_VERSION} ${srcdir}/lessecho.nro.VER
${srcdir}/less.hlp: ${srcdir}/less.hlp.VER ${srcdir}/version.c
${REPLACE_VERSION} ${srcdir}/less.hlp.VER
${srcdir}/less.man: ${srcdir}/less.nro
${NROFF} ${srcdir}/less.nro >${srcdir}/less.man
@ -114,10 +112,10 @@ wide.uni: unicode/EastAsianWidth.txt
unicode/UnicodeData.txt:
mkdir -p unicode
curl -s -o $@ ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt
curl -s -u 'anonymous:${EMAIL}' -o $@ ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt
unicode/EastAsianWidth.txt:
mkdir -p unicode
curl -s -o $@ ftp://ftp.unicode.org/Public/UNIDATA/EastAsianWidth.txt
curl -s -u 'anonymous:${EMAIL}' -o $@ ftp://ftp.unicode.org/Public/UNIDATA/EastAsianWidth.txt
distfiles: ${DISTFILES}

View File

@ -7,11 +7,11 @@ CC = cl
# Normal flags
CFLAGS = /nologo /MD /W3 /EHsc /O2 /I "." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /c
LDFLAGS = /nologo /subsystem:console /incremental:no /machine:I386
LDFLAGS = /nologo /subsystem:console /incremental:no
# Debugging flags
#CFLAGS = /nologo /MDd /W3 /GX /Od /Gm /Zi /I "." /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /c
#LDFLAGS = /nologo /subsystem:console /incremental:yes /debug /machine:I386
#LDFLAGS = /nologo /subsystem:console /incremental:yes /debug
LD = link
LIBS = user32.lib

25
NEWS
View File

@ -9,6 +9,31 @@
To report bugs, suggestions or comments, send email to bug-less@gnu.org
======================================================================
Major changes between "less" versions 551 and 563
* Update Unicode tables.
* Treat Hangul Jamo medial vowels and final consonants as zero width.
* Display error message immediately when -o is toggled and
input is not a pipe.
* Fix regression: make screen repaint when "squished" and
a no-movement command is given.
* Fix erroneous EOF calculation when F command is interrupted.
* Make WIN32C version include this fix from 551:
Don't count lines in initial screen if using -X with -F.
* Fix display bug in WIN32C version.
* Fix memory corruption when built with libtermcap.
* Support libtinfow.
======================================================================
Major changes between "less" versions 530 and 551

12
README
View File

@ -1,7 +1,7 @@
Less, version 551
Less, version 563
This is the distribution of less, version 551, released 11 Jun 2019.
This is the distribution of less, version 563, released 13 Jun 2020.
This program is part of the GNU project (http://www.gnu.org).
This program is free software. You may redistribute it and/or
@ -25,6 +25,14 @@ The formatted manual page is in less.man.
The manual page nroff source is in less.nro.
Major changes made since the last posted version are in NEWS.
=======================================================================
PRE-INSTALLATION (when using git)
If you are building from a clone of a git repository,
type "make -f Makefile.aut".
If you are building from a numbered release package (a tar or zip file
with a name like less-999.tar.gz or less-999.zip), you should skip this step.
=======================================================================
INSTALLATION (Unix systems only):

2
brac.c
View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

6
ch.c
View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.
@ -408,6 +408,7 @@ end_logfile(VOID_PARAM)
}
close(logfile);
logfile = -1;
free(namelogfile);
namelogfile = NULL;
}
@ -842,7 +843,8 @@ seekable(f)
public void
ch_set_eof(VOID_PARAM)
{
ch_fsize = ch_fpos;
if (ch_fsize != NULL_POSITION && ch_fsize < ch_fpos)
ch_fsize = ch_fpos;
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.
@ -509,7 +509,7 @@ prutfchar(ch)
*/
public int
utf_len(ch)
unsigned char ch;
int ch;
{
if ((ch & 0x80) == 0)
return 1;

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

2
cmd.h
View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.
@ -34,7 +34,7 @@ static int literal; /* Next input char should not be interpreted */
static int updown_match = -1; /* Prefix length in up/down movement */
#if TAB_COMPLETE_FILENAME
static int cmd_complete();
static int cmd_complete LESSPARAMS((int action));
/*
* These variables are statics used by cmd_complete.
*/
@ -960,10 +960,7 @@ cmd_istr(str)
step_char(&s, +1, endline);
action = cmd_ichar(os, s - os);
if (action != CC_OK)
{
bell();
return (action);
}
}
return (CC_OK);
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.
@ -88,7 +88,7 @@ struct ungot {
};
static struct ungot* ungot = NULL;
static void multi_search();
static void multi_search LESSPARAMS((char *pattern, int n, int silent));
/*
* Move the cursor to start of prompt line before executing a command.
@ -1800,6 +1800,12 @@ commands(VOID_PARAM)
optgetname = FALSE;
mca_opt_toggle();
c = getcc();
cbuf = opt_toggle_disallowed(c);
if (cbuf != NULL)
{
error(cbuf, NULL_PARG);
break;
}
goto again;
case A_DISP_OPTION:

View File

@ -1,4 +1,4 @@
/* Generated by "./mkutable -f2 Mn Me -- unicode/UnicodeData.txt" on Wed Feb 13 17:57:05 PST 2019 */
/* Generated by "./mkutable -f2 Mn Me -- unicode/UnicodeData.txt" on Tue May 19 14:47:34 PDT 2020 */
{ 0x0300, 0x036f }, /* Mn */
{ 0x0483, 0x0487 }, /* Mn */
{ 0x0488, 0x0489 }, /* Me */
@ -58,7 +58,7 @@
{ 0x0b3f, 0x0b3f }, /* Mn */
{ 0x0b41, 0x0b44 }, /* Mn */
{ 0x0b4d, 0x0b4d }, /* Mn */
{ 0x0b56, 0x0b56 }, /* Mn */
{ 0x0b55, 0x0b56 }, /* Mn */
{ 0x0b62, 0x0b63 }, /* Mn */
{ 0x0b82, 0x0b82 }, /* Mn */
{ 0x0bc0, 0x0bc0 }, /* Mn */
@ -81,6 +81,7 @@
{ 0x0d41, 0x0d44 }, /* Mn */
{ 0x0d4d, 0x0d4d }, /* Mn */
{ 0x0d62, 0x0d63 }, /* Mn */
{ 0x0d81, 0x0d81 }, /* Mn */
{ 0x0dca, 0x0dca }, /* Mn */
{ 0x0dd2, 0x0dd4 }, /* Mn */
{ 0x0dd6, 0x0dd6 }, /* Mn */
@ -88,8 +89,7 @@
{ 0x0e34, 0x0e3a }, /* Mn */
{ 0x0e47, 0x0e4e }, /* Mn */
{ 0x0eb1, 0x0eb1 }, /* Mn */
{ 0x0eb4, 0x0eb9 }, /* Mn */
{ 0x0ebb, 0x0ebc }, /* Mn */
{ 0x0eb4, 0x0ebc }, /* Mn */
{ 0x0ec8, 0x0ecd }, /* Mn */
{ 0x0f18, 0x0f19 }, /* Mn */
{ 0x0f35, 0x0f35 }, /* Mn */
@ -112,6 +112,7 @@
{ 0x1085, 0x1086 }, /* Mn */
{ 0x108d, 0x108d }, /* Mn */
{ 0x109d, 0x109d }, /* Mn */
{ 0x1160, 0x11ff }, /* Mn */
{ 0x135d, 0x135f }, /* Mn */
{ 0x1712, 0x1714 }, /* Mn */
{ 0x1732, 0x1734 }, /* Mn */
@ -140,6 +141,7 @@
{ 0x1a7f, 0x1a7f }, /* Mn */
{ 0x1ab0, 0x1abd }, /* Mn */
{ 0x1abe, 0x1abe }, /* Me */
{ 0x1abf, 0x1ac0 }, /* Mn */
{ 0x1b00, 0x1b03 }, /* Mn */
{ 0x1b34, 0x1b34 }, /* Mn */
{ 0x1b36, 0x1b3a }, /* Mn */
@ -183,6 +185,7 @@
{ 0xa806, 0xa806 }, /* Mn */
{ 0xa80b, 0xa80b }, /* Mn */
{ 0xa825, 0xa826 }, /* Mn */
{ 0xa82c, 0xa82c }, /* Mn */
{ 0xa8c4, 0xa8c5 }, /* Mn */
{ 0xa8e0, 0xa8f1 }, /* Mn */
{ 0xa8ff, 0xa8ff }, /* Mn */
@ -191,7 +194,7 @@
{ 0xa980, 0xa982 }, /* Mn */
{ 0xa9b3, 0xa9b3 }, /* Mn */
{ 0xa9b6, 0xa9b9 }, /* Mn */
{ 0xa9bc, 0xa9bc }, /* Mn */
{ 0xa9bc, 0xa9bd }, /* Mn */
{ 0xa9e5, 0xa9e5 }, /* Mn */
{ 0xaa29, 0xaa2e }, /* Mn */
{ 0xaa31, 0xaa32 }, /* Mn */
@ -209,6 +212,8 @@
{ 0xabe5, 0xabe5 }, /* Mn */
{ 0xabe8, 0xabe8 }, /* Mn */
{ 0xabed, 0xabed }, /* Mn */
{ 0xd7b0, 0xd7c6 }, /* Mn */
{ 0xd7cb, 0xd7fb }, /* Mn */
{ 0xfb1e, 0xfb1e }, /* Mn */
{ 0xfe00, 0xfe0f }, /* Mn */
{ 0xfe20, 0xfe2f }, /* Mn */
@ -222,6 +227,7 @@
{ 0x10a3f, 0x10a3f }, /* Mn */
{ 0x10ae5, 0x10ae6 }, /* Mn */
{ 0x10d24, 0x10d27 }, /* Mn */
{ 0x10eab, 0x10eac }, /* Mn */
{ 0x10f46, 0x10f50 }, /* Mn */
{ 0x11001, 0x11001 }, /* Mn */
{ 0x11038, 0x11046 }, /* Mn */
@ -235,6 +241,7 @@
{ 0x11180, 0x11181 }, /* Mn */
{ 0x111b6, 0x111be }, /* Mn */
{ 0x111c9, 0x111cc }, /* Mn */
{ 0x111cf, 0x111cf }, /* Mn */
{ 0x1122f, 0x11231 }, /* Mn */
{ 0x11234, 0x11234 }, /* Mn */
{ 0x11236, 0x11237 }, /* Mn */
@ -270,6 +277,12 @@
{ 0x11727, 0x1172b }, /* Mn */
{ 0x1182f, 0x11837 }, /* Mn */
{ 0x11839, 0x1183a }, /* Mn */
{ 0x1193b, 0x1193c }, /* Mn */
{ 0x1193e, 0x1193e }, /* Mn */
{ 0x11943, 0x11943 }, /* Mn */
{ 0x119d4, 0x119d7 }, /* Mn */
{ 0x119da, 0x119db }, /* Mn */
{ 0x119e0, 0x119e0 }, /* Mn */
{ 0x11a01, 0x11a0a }, /* Mn */
{ 0x11a33, 0x11a38 }, /* Mn */
{ 0x11a3b, 0x11a3e }, /* Mn */
@ -296,7 +309,9 @@
{ 0x11ef3, 0x11ef4 }, /* Mn */
{ 0x16af0, 0x16af4 }, /* Mn */
{ 0x16b30, 0x16b36 }, /* Mn */
{ 0x16f4f, 0x16f4f }, /* Mn */
{ 0x16f8f, 0x16f92 }, /* Mn */
{ 0x16fe4, 0x16fe4 }, /* Mn */
{ 0x1bc9d, 0x1bc9e }, /* Mn */
{ 0x1d167, 0x1d169 }, /* Mn */
{ 0x1d17b, 0x1d182 }, /* Mn */
@ -314,6 +329,9 @@
{ 0x1e01b, 0x1e021 }, /* Mn */
{ 0x1e023, 0x1e024 }, /* Mn */
{ 0x1e026, 0x1e02a }, /* Mn */
{ 0x1e130, 0x1e136 }, /* Mn */
{ 0x1e2ae, 0x1e2ae }, /* Mn */
{ 0x1e2ec, 0x1e2ef }, /* Mn */
{ 0x1e8d0, 0x1e8d6 }, /* Mn */
{ 0x1e944, 0x1e94a }, /* Mn */
{ 0xe0100, 0xe01ef }, /* Mn */

85
configure vendored
View File

@ -654,6 +654,7 @@ infodir
docdir
oldincludedir
includedir
runstatedir
localstatedir
sharedstatedir
sysconfdir
@ -729,6 +730,7 @@ datadir='${datarootdir}'
sysconfdir='${prefix}/etc'
sharedstatedir='${prefix}/com'
localstatedir='${prefix}/var'
runstatedir='${localstatedir}/run'
includedir='${prefix}/include'
oldincludedir='/usr/include'
docdir='${datarootdir}/doc/${PACKAGE_TARNAME}'
@ -981,6 +983,15 @@ do
| -silent | --silent | --silen | --sile | --sil)
silent=yes ;;
-runstatedir | --runstatedir | --runstatedi | --runstated \
| --runstate | --runstat | --runsta | --runst | --runs \
| --run | --ru | --r)
ac_prev=runstatedir ;;
-runstatedir=* | --runstatedir=* | --runstatedi=* | --runstated=* \
| --runstate=* | --runstat=* | --runsta=* | --runst=* | --runs=* \
| --run=* | --ru=* | --r=*)
runstatedir=$ac_optarg ;;
-sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb)
ac_prev=sbindir ;;
-sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \
@ -1118,7 +1129,7 @@ fi
for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \
datadir sysconfdir sharedstatedir localstatedir includedir \
oldincludedir docdir infodir htmldir dvidir pdfdir psdir \
libdir localedir mandir
libdir localedir mandir runstatedir
do
eval ac_val=\$$ac_var
# Remove trailing slashes.
@ -1271,6 +1282,7 @@ Fine tuning of the installation directories:
--sysconfdir=DIR read-only single-machine data [PREFIX/etc]
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com]
--localstatedir=DIR modifiable single-machine data [PREFIX/var]
--runstatedir=DIR modifiable per-process data [LOCALSTATEDIR/run]
--libdir=DIR object code libraries [EPREFIX/lib]
--includedir=DIR C header files [PREFIX/include]
--oldincludedir=DIR C header files for non-gcc [/usr/include]
@ -3682,6 +3694,48 @@ else
have_tinfo=no
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for tgoto in -ltinfow" >&5
$as_echo_n "checking for tgoto in -ltinfow... " >&6; }
if ${ac_cv_lib_tinfow_tgoto+:} false; then :
$as_echo_n "(cached) " >&6
else
ac_check_lib_save_LIBS=$LIBS
LIBS="-ltinfow $LIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
/* Override any GCC internal prototype to avoid an error.
Use char because int might match the return type of a GCC
builtin and then its argument prototype would still apply. */
#ifdef __cplusplus
extern "C"
#endif
char tgoto ();
int
main ()
{
return tgoto ();
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
ac_cv_lib_tinfow_tgoto=yes
else
ac_cv_lib_tinfow_tgoto=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$ac_check_lib_save_LIBS
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_tinfow_tgoto" >&5
$as_echo "$ac_cv_lib_tinfow_tgoto" >&6; }
if test "x$ac_cv_lib_tinfow_tgoto" = xyes; then :
have_tinfow=yes
else
have_tinfow=no
fi
{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for initscr in -lxcurses" >&5
$as_echo_n "checking for initscr in -lxcurses... " >&6; }
if ${ac_cv_lib_xcurses_initscr+:} false; then :
@ -4040,6 +4094,35 @@ rm -f core conftest.err conftest.$ac_objext \
fi
fi
# -- Try tinfow.
if test "x$TERMLIBS" = x; then
if test $have_tinfow = yes; then
TERMLIBS="-ltinfow"
SAVE_LIBS=$LIBS
LIBS="$LIBS $TERMLIBS"
cat confdefs.h - <<_ACEOF >conftest.$ac_ext
/* end confdefs.h. */
int
main ()
{
tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);
;
return 0;
}
_ACEOF
if ac_fn_c_try_link "$LINENO"; then :
termok=yes
else
termok=no
fi
rm -f core conftest.err conftest.$ac_objext \
conftest$ac_exeext conftest.$ac_ext
LIBS=$SAVE_LIBS
if test $termok = no; then TERMLIBS=""; fi
fi
fi
# -- Try xcurses.
if test "x$TERMLIBS" = x; then
if test $have_xcurses = yes; then

View File

@ -24,6 +24,7 @@ AC_SYS_LARGEFILE
# Checks for general libraries.
AC_CHECK_LIB(tinfo, tgoto, [have_tinfo=yes], [have_tinfo=no])
AC_CHECK_LIB(tinfow, tgoto, [have_tinfow=yes], [have_tinfow=no])
AC_CHECK_LIB(xcurses, initscr, [have_xcurses=yes], [have_xcurses=no])
AC_CHECK_LIB(ncursesw, initscr, [have_ncursesw=yes], [have_ncursesw=no])
AC_CHECK_LIB(ncurses, initscr, [have_ncurses=yes], [have_ncurses=no])
@ -64,6 +65,19 @@ if test "x$TERMLIBS" = x; then
fi
fi
# -- Try tinfow.
if test "x$TERMLIBS" = x; then
if test $have_tinfow = yes; then
TERMLIBS="-ltinfow"
SAVE_LIBS=$LIBS
LIBS="$LIBS $TERMLIBS"
AC_TRY_LINK(, [tgetent(0,0); tgetflag(0); tgetnum(0); tgetstr(0,0);],
[termok=yes], [termok=no])
LIBS=$SAVE_LIBS
if test $termok = no; then TERMLIBS=""; fi
fi
fi
# -- Try xcurses.
if test "x$TERMLIBS" = x; then
if test $have_xcurses = yes; then

2
cvt.c
View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

3
edit.c
View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.
@ -854,7 +854,6 @@ use_logfile(filename)
/*
* Don't do anything.
*/
free(filename);
return;
case 'q':
quit(QUIT_OK);

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.
@ -795,7 +795,7 @@ lglob(filename)
}
/*
* @@@
* Return canonical pathname.
*/
public char *
lrealpath(path)

View File

@ -1,4 +1,4 @@
/* Generated by "./mkutable -f2 Cf -- unicode/UnicodeData.txt" on Wed Feb 13 17:57:05 PST 2019 */
/* Generated by "./mkutable -f2 Cf -- unicode/UnicodeData.txt" on Tue May 19 14:47:34 PDT 2020 */
{ 0x00ad, 0x00ad }, /* Cf */
{ 0x0600, 0x0605 }, /* Cf */
{ 0x061c, 0x061c }, /* Cf */
@ -14,6 +14,7 @@
{ 0xfff9, 0xfffb }, /* Cf */
{ 0x110bd, 0x110bd }, /* Cf */
{ 0x110cd, 0x110cd }, /* Cf */
{ 0x13430, 0x13438 }, /* Cf */
{ 0x1bca0, 0x1bca3 }, /* Cf */
{ 0x1d173, 0x1d17a }, /* Cf */
{ 0xe0001, 0xe0001 }, /* Cf */

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.
@ -20,7 +20,6 @@ public int screen_trashed;
public int squished;
public int no_back_scroll = 0;
public int forw_prompt;
public int same_pos_bell = 1;
extern int sigs;
extern int top_scroll;
@ -285,7 +284,7 @@ forw(n, pos, force, only_last, nblank)
forw_prompt = 1;
}
if (nlines == 0 && !ignore_eoi && same_pos_bell)
if (nlines == 0 && !ignore_eoi)
eof_bell();
else if (do_repaint)
repaint();
@ -345,7 +344,7 @@ back(n, pos, force, only_last)
}
}
if (nlines == 0 && same_pos_bell)
if (nlines == 0)
eof_bell();
else if (do_repaint)
repaint();

View File

@ -61,7 +61,7 @@ public int binary_char LESSPARAMS ((LWCHAR c));
public int control_char LESSPARAMS ((LWCHAR c));
public char * prchar LESSPARAMS ((LWCHAR c));
public char * prutfchar LESSPARAMS ((LWCHAR ch));
public int utf_len LESSPARAMS ((unsigned char ch));
public int utf_len LESSPARAMS ((int ch));
public int is_utf8_well_formed LESSPARAMS ((char *ss, int slen));
public void utf_skip_to_lead LESSPARAMS ((char **pp, char *limit));
public LWCHAR get_wchar LESSPARAMS ((constant char *p));
@ -187,10 +187,10 @@ public void pshift_all LESSPARAMS ((VOID_PARAM));
public int is_ansi_end LESSPARAMS ((LWCHAR ch));
public int is_ansi_middle LESSPARAMS ((LWCHAR ch));
public void skip_ansi LESSPARAMS ((char **pp, constant char *limit));
public int pappend LESSPARAMS ((unsigned char c, POSITION pos));
public int pappend LESSPARAMS ((int c, POSITION pos));
public int pflushmbc LESSPARAMS ((VOID_PARAM));
public void pdone LESSPARAMS ((int endline, int chopped, int forw));
public void set_status_col LESSPARAMS ((char c));
public void set_status_col LESSPARAMS ((int c));
public int gline LESSPARAMS ((int i, int *ap));
public void null_line LESSPARAMS ((VOID_PARAM));
public POSITION forw_raw_line LESSPARAMS ((POSITION curr_pos, char **linep, int *line_lenp));
@ -243,6 +243,7 @@ public void scan_option LESSPARAMS ((char *s));
public void toggle_option LESSPARAMS ((struct loption *o, int lower, char *s, int how_toggle));
public int opt_has_param LESSPARAMS ((struct loption *o));
public char * opt_prompt LESSPARAMS ((struct loption *o));
public char * opt_toggle_disallowed LESSPARAMS ((int c));
public int isoptpending LESSPARAMS ((VOID_PARAM));
public void nopendopt LESSPARAMS ((VOID_PARAM));
public int getnum LESSPARAMS ((char **sp, char *printopt, int *errp));

2
help.c
View File

@ -1,4 +1,4 @@
/* This file was generated by mkhelp.pl from less.hlp at 18:12 on 2019/6/11 */
/* This file was generated by mkhelp.pl from less.hlp at 3:34 on 2020/6/14 */
#include "less.h"
constant char helpdata[] = {
'\n',

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

4
jump.c
View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.
@ -219,7 +219,7 @@ jump_loc(pos, sline)
nline -= sindex;
if (nline > 0)
forw(nline, position(BOTTOM_PLUS_ONE), 1, 0, 0);
else if (nline < 0)
else
back(-nline, position(TOP), 1, 0);
#if HILITE_SEARCH
if (show_attn)

2
less.h
View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

1211
less.man

File diff suppressed because it is too large Load Diff

167
less.nro
View File

@ -1,4 +1,5 @@
.TH LESS 1 "Version 551: 11 Jun 2019"
'\" t
.TH LESS 1 "Version 563: 13 Jun 2020"
.SH NAME
less \- opposite of more
.SH SYNOPSIS
@ -21,19 +22,18 @@ less \- opposite of more
.B " [\-# \fIshift\/\fP] [+[+]\fIcmd\/\fP] [\-\-] [\fIfilename\/\fP]..."
.br
(See the OPTIONS section for alternate option syntax with long option names.)
.
.SH DESCRIPTION
.I Less
is a program similar to
.I more
(1), but which allows backward movement
.IR more (1),
but which allows backward movement
in the file as well as forward movement.
Also,
.I less
does not have to read the entire input file before starting,
so with large input files it starts up faster than text editors like
.I vi
(1).
.IR vi (1).
.I Less
uses termcap (or terminfo on some systems),
so it can run on a variety of terminals.
@ -48,7 +48,7 @@ and
Commands may be preceded by a decimal number,
called N in the descriptions below.
The number is used by some commands, as indicated.
.
.SH COMMANDS
In the following descriptions, ^X means control-X.
ESC stands for the ESCAPE key; for example ESC-v means the
@ -229,7 +229,7 @@ that is, do a simple textual comparison.
.RE
.IP ?pattern
Search backward in the file for the N-th line containing the pattern.
The search starts at the last line displayed
The search starts at the last line displayed
(but see the \-a and \-j options, which change this).
.sp
Certain characters are special as in the / command:
@ -376,7 +376,7 @@ this will reset the option to the "opposite" of its default setting
and print a message describing the new setting.
This does not work for numeric or string-valued options.
.IP \-\-!
Like the \-! command, but takes a long option name
Like the \-!\& command, but takes a long option name
rather than a single option letter.
.IP _
(Underscore.)
@ -405,7 +405,7 @@ Exits
The following
four
commands may or may not be valid, depending on your particular installation.
.PP
.
.IP v
Invokes an editor to edit the current file being viewed.
The editor is taken from the environment variable VISUAL if defined,
@ -425,7 +425,7 @@ On MS-DOS and OS/2 systems, the shell is the normal command processor.
.IP "| <m> shell-command"
<m> represents any mark letter.
Pipes a section of the input file to the given shell command.
The section of the file to be piped is between the position marked by
The section of the file to be piped is between the position marked by
the letter and the current screen.
The entire current screen is included, regardless of whether the
marked position is before or after the current screen.
@ -434,7 +434,7 @@ If <m> is \&.\& or newline, the current screen is piped.
.IP "s filename"
Save the input to a file.
This only works if the input is a pipe, not an ordinary file.
.PP
.
.SH OPTIONS
Command line options are described below.
Most options may be changed while
@ -518,7 +518,7 @@ This was the default behavior in less versions prior to 441.
Specifies the amount of buffer space
.I less
will use for each file, in units of kilobytes (1024 bytes).
By default 64\ K of buffer space is used for each file
By default 64\ KB of buffer space is used for each file
(unless the file is a pipe; see the \-B option).
The \-b option specifies instead that \fIn\fP kilobytes of
buffer space should be used for each file.
@ -530,7 +530,7 @@ buffers are allocated automatically as needed.
If a large amount of data is read from the pipe, this can cause
a large amount of memory to be allocated.
The \-B option disables this automatic allocation of buffers for pipes,
so that only 64\ K
so that only 64\ KB
(or the amount of space specified by the \-b option)
is used for the pipe.
Warning: use of \-B can result in erroneous display, since only the
@ -563,8 +563,9 @@ A single number \fIN\fP is the same as \fIN.M\fP,
where \fIM\fP is the normal background color.
The color may start or end with \fBu\fP to use underline (with the normal
color, if by itself), if the system supports it (Windows only).
\fBx\fP may also be \fBa\fP to toggle strict ANSI sequence rendering (SGR mode).
\fBx\fP may also be \fBa\fP to toggle strict ANSI sequence rendering
(SGR mode).
.
.IP "\-e or \-\-quit-at-eof"
Causes
.I less
@ -654,8 +655,8 @@ The status column is also used if the \-w or \-W option is in effect.
Causes
.I less
to open and interpret the named file as a
.I lesskey
(1) file.
.IR lesskey (1)
file.
Multiple \-k options may be specified.
If the LESSKEY or LESSKEY_SYSTEM environment variable is set, or
if a lesskey file is found in a standard place (see KEY BINDINGS),
@ -746,7 +747,7 @@ to that string.
\-Ph changes the prompt for the help screen.
\-P= changes the message printed by the = command.
\-Pw changes the message printed while waiting for data (in the F command).
.sp 1
All prompt strings consist of a sequence of
letters and special escape sequences.
See the section on PROMPTS for more details.
@ -762,7 +763,7 @@ The default is to ring the terminal bell in all such cases.
.IP "\-Q or \-\-QUIET or \-\-SILENT"
Causes totally "quiet" operation:
the terminal bell is never rung.
If the terminal has a "visual bell", it is used in all cases
If the terminal has a "visual bell", it is used in all cases
where the terminal bell would have been rung.
.IP "\-r or \-\-raw-control-chars"
Causes "raw" control characters to be displayed.
@ -804,7 +805,7 @@ output.
Causes lines longer than the screen width to be
chopped (truncated) rather than wrapped.
That is, the portion of a long line that does not fit in
the screen width is not shown.
the screen width is not displayed until you press RIGHT-ARROW.
The default is to wrap long lines; that is, display the remainder
on the next line.
.IP "\-t\fItag\fP or \-\-tag=\fItag\fP"
@ -813,12 +814,12 @@ will edit the file containing that tag.
For this to work, tag information must be available;
for example, there may be a file in the current directory called "tags",
which was previously built by
.I ctags
(1) or an equivalent command.
.IR ctags (1)
or an equivalent command.
If the environment variable LESSGLOBALTAGS is set, it is taken to be
the name of a command compatible with
.I global
(1), and that command is executed to find the tag.
.IR global (1),
and that command is executed to find the tag.
(See http://www.gnu.org/software/global/global.html).
The \-t option may also be specified from within
.I less
@ -870,7 +871,7 @@ If only one \fIn\fP is specified, tab stops are set at multiples of \fIn\fP.
If multiple values separated by commas are specified, tab stops
are set at those positions, and then continue with the same spacing as the
last two.
For example, \fI-x9,17\fP will set tabs at positions 9, 17, 25, 33, etc.
For example, \fI\-x9,17\fP will set tabs at positions 9, 17, 25, 33, etc.
The default for \fIn\fP is 8.
.IP "\-X or \-\-no-init"
Disables sending the termcap initialization and deinitialization strings
@ -944,15 +945,15 @@ will display the contents of that new file.
Enables mouse input:
scrolling the mouse wheel down moves forward in the file,
scrolling the mouse wheel up moves backwards in the file,
and clicking the mouse sets the "#" mark to the line
and clicking the mouse sets the "#" mark to the line
where the mouse is clicked.
The number of lines to scroll when the wheel is moved
The number of lines to scroll when the wheel is moved
can be set by the \-\-wheel-lines option.
Mouse input works only on terminals which support X11 mouse reporting,
and on the Windows version of
and on the Windows version of
.IR less .
.IP "\-\-MOUSE"
Like \-\-mouse, except the direction scrolled
Like \-\-mouse, except the direction scrolled
on mouse wheel movement is reversed.
.IP "\-\-no-keypad"
Disables sending the keypad initialization and deinitialization strings
@ -961,7 +962,7 @@ This is sometimes useful if the keypad strings make the numeric
keypad behave in an undesirable manner.
.IP "\-\-no-histdups"
This option changes the behavior so that if a search string or
file name is typed in, and the same string is already in the history list,
file name is typed in, and the same string is already in the history list,
the existing copy is removed from the history list before the new one is added.
Thus, a given string will appear only once in the history list.
Normally, a string may appear multiple times.
@ -969,7 +970,7 @@ Normally, a string may appear multiple times.
This option changes the character used to mark truncated lines.
It may begin with a two-character attribute indicator like LESSBINFMT does.
If there is no attribute indicator, standout is used.
If set to "-", truncated lines are not marked.
If set to "\-", truncated lines are not marked.
.IP "\-\-save-marks"
Save marks in the history file, so marks are retained
across different invocations of \fIless\fP.
@ -1001,7 +1002,7 @@ If the option starts with ++, the initial command applies to
every file being viewed, not just the first one.
The + command described previously
may also be used to set (or change) an initial command for every file.
.
.SH "LINE EDITING"
When entering command line at the bottom of the screen
(for example, a filename for the :e command,
@ -1069,13 +1070,12 @@ If you have changed your line-kill character in Unix to something
other than ^U, that character is used instead of ^U.
.IP "^G"
Delete the entire command line and return to the main prompt.
.
.SH "KEY BINDINGS"
You may define your own
.I less
commands by using the program
.I lesskey
(1)
.IR lesskey (1)
to create a lesskey file.
This file specifies a set of command keys and an action
associated with each key.
@ -1125,7 +1125,7 @@ was built with a different sysconf directory than /usr/local/etc,
that directory is where the sysless file is found.)
On MS-DOS and Windows systems, the system-wide lesskey file is c:\e_sysless.
On OS/2 systems, the system-wide lesskey file is c:\esysless.ini.
.
.SH "INPUT PREPROCESSOR"
You may define an "input preprocessor" for
.IR less .
@ -1294,7 +1294,7 @@ Similarly, if the first two characters of LESSOPEN are vertical bar and dash
the input pipe is used on standard input as well as other files.
Again, in this case the dash is not considered to be part of
the input pipe command.
.
.SH "NATIONAL CHARACTER SETS"
There are three types of characters in the input file:
.IP "normal characters"
@ -1349,7 +1349,7 @@ In this case, the environment variable LESSCHARDEF can be used
to define a character set.
It should be set to a string where each character in the string represents
one character in the character set.
The character "." is used for a normal character, "c" for control,
The character ".\&" is used for a normal character, "c" for control,
and "b" for binary.
A decimal number may be used for repetition.
For example, "bccc4b.\&" would mean character 0 is binary,
@ -1361,26 +1361,22 @@ represent any real character set.)
.PP
This table shows the value of LESSCHARDEF which is equivalent
to each of the possible values for LESSCHARSET:
.sp
ascii\ 8bcccbcc18b95.b
.br
dos\ \ \ 8bcccbcc12bc5b95.b.
.br
ebcdic 5bc6bcc7bcc41b.9b7.9b5.b..8b6.10b6.b9.7b
.br
\ \ \ \ \ \ 9.8b8.17b3.3b9.7b9.8b8.6b10.b.b.b.
.br
IBM-1047 4cbcbc3b9cbccbccbb4c6bcc5b3cbbc4bc4bccbc
.br
\ \ \ \ \ \ 191.b
.br
iso8859 8bcccbcc18b95.33b.
.br
koi8-r 8bcccbcc18b95.b128.
.br
latin1 8bcccbcc18b95.33b.
.br
next\ \ 8bcccbcc18b95.bb125.bb
.
.RS 5m
.TS
l l.
ascii 8bcccbcc18b95.b
dos 8bcccbcc12bc5b95.b.
ebcdic 5bc6bcc7bcc41b.9b7.9b5.b..8b6.10b6.b9.7b
9.8b8.17b3.3b9.7b9.8b8.6b10.b.b.b.
IBM-1047 4cbcbc3b9cbccbccbb4c6bcc5b3cbbc4bc4bccbc
191.b
iso8859 8bcccbcc18b95.33b.
koi8-r 8bcccbcc18b95.b128.
latin1 8bcccbcc18b95.33b.
next 8bcccbcc18b95.bb125.bb
.TE
.RE
.PP
If neither LESSCHARSET nor LESSCHARDEF is set,
but any of the strings "UTF-8", "UTF8", "utf-8" or "utf8"
@ -1429,11 +1425,11 @@ setting ("*x") so specifying one will affect both;
LESSUTFBINFMT is read after LESSBINFMT so its setting, if any,
will have priority.
Problematic octets in a UTF-8 file (octets of a truncated sequence,
octets of a complete but non-shortest form sequence, illegal octets,
octets of a complete but non-shortest form sequence, invalid octets,
and stray trailing octets)
are displayed individually using LESSBINFMT so as to facilitate diagnostic
of how the UTF-8 file is ill-formed.
.
.SH "PROMPTS"
The \-P option allows you to tailor the prompt to your preference.
The string given to the \-P option replaces the specified prompt string.
@ -1500,7 +1496,8 @@ Causes any trailing spaces to be removed.
Usually used at the end of the string, but may appear anywhere.
.IP "%T"
Normally expands to the word "file".
However if viewing files via a tags list using the \-t option, it expands to the word "tag".
However if viewing files via a tags list using the \-t option,
it expands to the word "tag".
.IP "%x"
Replaced by the name of the next input file in the list.
.PP
@ -1620,7 +1617,7 @@ line number, followed by the shell-escaped file name.
If your editor does not accept the "+linenumber" syntax, or has other
differences in invocation syntax, the LESSEDIT variable can be
changed to modify this default.
.
.SH SECURITY
When the environment variable LESSSECURE is set to 1,
.I less
@ -1641,14 +1638,14 @@ log files
use of lesskey files
.IP "\-t"
use of tags files
.IP " "
.IP
metacharacters in filenames, such as *
.IP " "
.IP
filename completion (TAB, ^L)
.RE
.PP
Less can also be compiled to be permanently in "secure" mode.
.
.SH "COMPATIBILITY WITH MORE"
If the environment variable LESS_IS_MORE is set to 1,
or if the program is invoked via a file link named "more",
@ -1666,7 +1663,7 @@ behaves as if the \-E option were set.
.PP
The \-m option works differently.
If the \-m option is not set, the medium prompt is used,
and it is prefixed with the string "--More--".
and it is prefixed with the string "\-\-More\-\-".
If the \-m option is set, the short prompt is used.
.PP
The \-n option acts like the \-z option.
@ -1678,12 +1675,12 @@ command rather than a search pattern.
.PP
The LESS environment variable is ignored,
and the MORE environment variable is used in its place.
.
.SH "ENVIRONMENT VARIABLES"
Environment variables may be specified either in the system environment
as usual, or in a
.I lesskey
(1) file.
.IR lesskey (1)
file.
If environment variables are defined in more than one place,
variables defined in a local lesskey file take precedence over
variables defined in the system environment, which take precedence
@ -1738,8 +1735,8 @@ See discussion under PROMPTS.
.IP LESSGLOBALTAGS
Name of the command used by the \-t option to find global tags.
Normally should be set to "global" if your system has the
.I global
(1) command. If not set, global tags are not used.
.IR global (1)
command. If not set, global tags are not used.
.IP LESSHISTFILE
Name of the history file used to remember search commands and
shell commands between invocations of
@ -1752,9 +1749,13 @@ on OS/2 systems.
The maximum number of commands to save in the history file.
The default is 100.
.IP LESSKEY
Name of the default lesskey(1) file.
Name of the default
.IR lesskey (1)
file.
.IP LESSKEY_SYSTEM
Name of the default system-wide lesskey(1) file.
Name of the default system-wide
.IR lesskey (1)
file.
.IP LESSMETACHARS
List of characters which are considered "metacharacters" by the shell.
.IP LESSMETAESCAPE
@ -1773,8 +1774,8 @@ String to be appended to a directory name in filename completion.
Format for displaying non-printable Unicode code points.
.IP LESS_IS_MORE
Emulate the
.I more
(1) command.
.IR more (1)
command.
.IP LINES
Sets the number of lines on the screen.
Takes precedence over the number of lines specified by the TERM variable.
@ -1791,19 +1792,19 @@ compatible mode.
User's search path (used to find a lesskey file
on MS-DOS and OS/2 systems).
.IP SHELL
The shell used to execute the ! command, as well as to expand filenames.
The shell used to execute the !\& command, as well as to expand filenames.
.IP TERM
The type of terminal on which
.I less
is being run.
.IP VISUAL
The name of the editor (used for the v command).
.
.SH "SEE ALSO"
lesskey(1)
.BR lesskey (1)
.
.SH COPYRIGHT
Copyright (C) 1984-2019 Mark Nudelman
Copyright (C) 1984-2020 Mark Nudelman
.PP
less is part of the GNU project and is free software.
You can redistribute it and/or modify it
@ -1823,9 +1824,9 @@ less is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
.
.SH AUTHOR
.PP
.
Mark Nudelman
.br
Report bugs at https://github.com/gwsw/less/issues.

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

View File

@ -41,7 +41,7 @@ LESSECHO(1) General Commands Manual LESSECHO(1)
that only arguments containing metacharacters are quoted
SEE ALSO
less(1)
less(1)
AUTHOR
This manual page was written by Thomas Schoepf <schoepf@debian.org>,
@ -51,4 +51,4 @@ LESSECHO(1) General Commands Manual LESSECHO(1)
Version 551: 11 Jun 2019 LESSECHO(1)
Version 563: 13 Jun 2020 LESSECHO(1)

View File

@ -1,4 +1,4 @@
.TH LESSECHO 1 "Version 551: 11 Jun 2019"
.TH LESSECHO 1 "Version 563: 13 Jun 2020"
.SH NAME
lessecho \- expand metacharacters
.SH SYNOPSIS
@ -44,7 +44,7 @@ Specifies "n" to be the escape char for metachars, as an integer.
Specifies that all arguments are to be quoted.
The default is that only arguments containing metacharacters are quoted
.SH "SEE ALSO"
less(1)
.BR less (1)
.SH AUTHOR
This manual page was written by Thomas Schoepf <schoepf@debian.org>,
for the Debian GNU/Linux system (but may be used by others).

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

View File

@ -12,14 +12,14 @@ LESSKEY(1) General Commands Manual LESSKEY(1)
lesskey --version
DESCRIPTION
Lesskey is used to specify a set of key bindings to be used by less.
Lesskey is used to specify a set of key bindings to be used by less.
The input file is a text file which describes the key bindings. If the
input file is "-", standard input is read. If no input file is speci-
fied, a standard filename is used as the name of the input file, which
depends on the system being used: On Unix systems, $HOME/.lesskey is
used; on MS-DOS systems, $HOME/_lesskey is used; and on OS/2 systems
$HOME/lesskey.ini is used, or $INIT/lesskey.ini if $HOME is undefined.
The output file is a binary file which is used by less. If no output
The output file is a binary file which is used by less. If no output
file is specified, and the environment variable LESSKEY is set, the
value of LESSKEY is used as the name of the output file. Otherwise, a
standard filename is used as the name of the output file, which depends
@ -47,7 +47,6 @@ LESSKEY(1) General Commands Manual LESSKEY(1)
Blank lines and lines which start with a pound sign (#) are ignored,
except for the special section header lines.
COMMAND SECTION
The command section begins with the line
@ -100,144 +99,146 @@ LESSKEY(1) General Commands Manual LESSKEY(1)
include caret, space, tab and the backslash itself.
An action may be followed by an "extra" string. When such a command is
entered while running less, the action is performed, and then the extra
string is parsed, just as if it were typed in to less. This feature
entered while running less, the action is performed, and then the extra
string is parsed, just as if it were typed in to less. This feature
can be used in certain cases to extend the functionality of a command.
For example, see the "{" and ":t" commands in the example below. The
extra string has a special meaning for the "quit" action: when less
quits, first character of the extra string is used as its exit status.
EXAMPLE
The following input file describes the set of default command keys used
by less:
#command
\r forw-line
\n forw-line
e forw-line
j forw-line
\kd forw-line
^E forw-line
^N forw-line
k back-line
y back-line
^Y back-line
^K back-line
^P back-line
J forw-line-force
K back-line-force
Y back-line-force
d forw-scroll
^D forw-scroll
u back-scroll
^U back-scroll
\40 forw-screen
f forw-screen
^F forw-screen
^V forw-screen
\kD forw-screen
b back-screen
^B back-screen
\ev back-screen
\kU back-screen
z forw-window
w back-window
\e\40 forw-screen-force
F forw-forever
\eF forw-until-hilite
R repaint-flush
r repaint
^R repaint
^L repaint
\eu undo-hilite
g goto-line
\kh goto-line
< goto-line
\e< goto-line
p percent
% percent
\e[ left-scroll
\e] right-scroll
\e( left-scroll
\e) right-scroll
\kl left-scroll
\kr right-scroll
\e{ no-scroll
\e} end-scroll
{ forw-bracket {}
} back-bracket {}
( forw-bracket ()
) back-bracket ()
[ forw-bracket []
] back-bracket []
\e^F forw-bracket
\e^B back-bracket
G goto-end
\e> goto-end
> goto-end
\ke goto-end
\eG goto-end-buffered
= status
^G status
:f status
/ forw-search
? back-search
\e/ forw-search *
\e? back-search *
n repeat-search
\en repeat-search-all
N reverse-search
\eN reverse-search-all
& filter
m set-mark
M set-mark-bottom
\em clear-mark
' goto-mark
^X^X goto-mark
E examine
:e examine
^X^V examine
:n next-file
:p prev-file
t next-tag
T prev-tag
:x index-file
:d remove-file
- toggle-option
:t toggle-option t
s toggle-option o
_ display-option
| pipe
v visual
! shell
+ firstcmd
H help
h help
V version
0 digit
1 digit
2 digit
3 digit
4 digit
5 digit
6 digit
7 digit
8 digit
9 digit
q quit
Q quit
:q quit
:Q quit
ZZ quit
\r forw-line
\n forw-line
e forw-line
j forw-line
\kd forw-line
^E forw-line
^N forw-line
k back-line
y back-line
^Y back-line
^K back-line
^P back-line
J forw-line-force
K back-line-force
Y back-line-force
d forw-scroll
^D forw-scroll
u back-scroll
^U back-scroll
\40 forw-screen
f forw-screen
^F forw-screen
^V forw-screen
\kD forw-screen
b back-screen
^B back-screen
\ev back-screen
\kU back-screen
z forw-window
w back-window
\e\40 forw-screen-force
F forw-forever
\eF forw-until-hilite
R repaint-flush
r repaint
^R repaint
^L repaint
\eu undo-hilite
g goto-line
\kh goto-line
< goto-line
\e< goto-line
p percent
% percent
\e[ left-scroll
\e] right-scroll
\e( left-scroll
\e) right-scroll
\kl left-scroll
\kr right-scroll
\e{ no-scroll
\e} end-scroll
{ forw-bracket {}
} back-bracket {}
( forw-bracket ()
) back-bracket ()
[ forw-bracket []
] back-bracket []
\e^F forw-bracket
\e^B back-bracket
G goto-end
\e> goto-end
> goto-end
\ke goto-end
\eG goto-end-buffered
= status
^G status
:f status
/ forw-search
? back-search
\e/ forw-search *
\e? back-search *
n repeat-search
\en repeat-search-all
N reverse-search
\eN reverse-search-all
& filter
m set-mark
M set-mark-bottom
\em clear-mark
' goto-mark
^X^X goto-mark
E examine
:e examine
^X^V examine
:n next-file
:p prev-file
t next-tag
T prev-tag
:x index-file
:d remove-file
- toggle-option
:t toggle-option t
s toggle-option o
_ display-option
| pipe
v visual
! shell
+ firstcmd
H help
h help
V version
0 digit
1 digit
2 digit
3 digit
4 digit
5 digit
6 digit
7 digit
8 digit
9 digit
q quit
Q quit
:q quit
:Q quit
ZZ quit
PRECEDENCE
Commands specified by lesskey take precedence over the default com-
mands. A default command key may be disabled by including it in the
input file with the action "invalid". Alternatively, a key may be
defined to do nothing by using the action "noaction". "noaction" is
similar to "invalid", but less will give an error beep for an "invalid"
input file with the action "invalid". Alternatively, a key may be de-
fined to do nothing by using the action "noaction". "noaction" is sim-
ilar to "invalid", but less will give an error beep for an "invalid"
command, but not for a "noaction" command. In addition, ALL default
commands may be disabled by adding this control line to the input file:
@ -251,7 +252,6 @@ LESSKEY(1) General Commands Manual LESSKEY(1)
enable all necessary actions. For example, failure to provide a "quit"
command can lead to frustration.
LINE EDITING SECTION
The line-editing section begins with the line:
@ -262,41 +262,40 @@ LESSKEY(1) General Commands Manual LESSKEY(1)
specified in the #command section. The line-editing section consists
of a list of keys and actions, one per line as in the example below.
EXAMPLE
The following input file describes the set of default line-editing keys
used by less:
#line-edit
\t forw-complete
\17 back-complete
\e\t back-complete
^L expand
^V literal
^A literal
\el right
\kr right
\eh left
\kl left
\eb word-left
\e\kl word-left
\ew word-right
\e\kr word-right
\ei insert
\ex delete
\kx delete
\eX word-delete
\ekx word-delete
\e\b word-backspace
\e0 home
\kh home
\e$ end
\ke end
\ek up
\ku up
\ej down
^G abort
#line-edit
\t forw-complete
\17 back-complete
\e\t back-complete
^L expand
^V literal
^A literal
\el right
\kr right
\eh left
\kl left
\eb word-left
\e\kl word-left
\ew word-right
\e\kr word-right
\ei insert
\ex delete
\kx delete
\eX word-delete
\ekx word-delete
\e\b word-backspace
\e0 home
\kh home
\e$ end
\ke end
\ek up
\ku up
\ej down
^G abort
LESS ENVIRONMENT VARIABLES
@ -308,36 +307,32 @@ LESSKEY(1) General Commands Manual LESSKEY(1)
Each line consists of an environment variable name, an equals sign (=)
and the value to be assigned to the environment variable. White space
before and after the equals sign is ignored. Variables assigned in
this way are visible only to less. If a variable is specified in the
this way are visible only to less. If a variable is specified in the
system environment and also in a lesskey file, the value in the lesskey
file takes precedence. Although the lesskey file can be used to over-
ride variables set in the environment, the main purpose of assigning
variables in the lesskey file is simply to have all less configuration
information stored in one file.
EXAMPLE
The following input file sets the -i option whenever less is run, and
specifies the character set to be "latin1":
#env
LESS = -i
LESSCHARSET = latin1
#env
LESS = -i
LESSCHARSET = latin1
SEE ALSO
less(1)
less(1)
WARNINGS
On MS-DOS and OS/2 systems, certain keys send a sequence of characters
which start with a NUL character (0). This NUL character should be
represented as \340 in a lesskey file.
COPYRIGHT
Copyright (C) 1984-2019 Mark Nudelman
Copyright (C) 1984-2020 Mark Nudelman
less is part of the GNU project and is free software. You can redis-
tribute it and/or modify it under the terms of either (1) the GNU Gen-
@ -354,11 +349,10 @@ LESSKEY(1) General Commands Manual LESSKEY(1)
NESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for
more details.
AUTHOR
Mark Nudelman
Send bug reports or comments to <bug-less@gnu.org>.
Version 551: 11 Jun 2019 LESSKEY(1)
Version 563: 13 Jun 2020 LESSKEY(1)

View File

@ -1,29 +1,30 @@
.TH LESSKEY 1 "Version 551: 11 Jun 2019"
'\" t
.TH LESSKEY 1 "Version 563: 13 Jun 2020"
.SH NAME
lesskey \- specify key bindings for less
.SH SYNOPSIS
.B "lesskey [-o output] [--] [input]"
.B "lesskey [\-o output] [\-\-] [input]"
.br
.B "lesskey [--output=output] [--] [input]"
.B "lesskey [\-\-output=output] [\-\-] [input]"
.br
.B "lesskey -V"
.B "lesskey \-V"
.br
.B "lesskey --version"
.B "lesskey \-\-version"
.SH DESCRIPTION
.I Lesskey
is used to specify a set of key bindings to be used by
.I less.
is used to specify a set of key bindings to be used by
.IR less .
The input file is a text file which describes the key bindings.
If the input file is "-", standard input is read.
If the input file is "\-", standard input is read.
If no input file is specified, a standard filename is used
as the name of the input file, which depends on the system being used:
On Unix systems, $HOME/.lesskey is used;
on MS-DOS systems, $HOME/_lesskey is used;
and on OS/2 systems $HOME/lesskey.ini is used,
or $INIT/lesskey.ini if $HOME is undefined.
The output file is a binary file which is used by
.I less.
If no output file is specified,
The output file is a binary file which is used by
.IR less .
If no output file is specified,
and the environment variable LESSKEY is set,
the value of LESSKEY is used as the name of the output file.
Otherwise, a standard filename is used as the name of the output file,
@ -36,10 +37,10 @@ If the output file already exists,
.I lesskey
will overwrite it.
.PP
The -V or --version option causes
The \-V or \-\-version option causes
.I lesskey
to print its version number and immediately exit.
If -V or --version is present, other options and arguments are ignored.
to print its version number and immediately exit.
If \-V or \-\-version is present, other options and arguments are ignored.
.PP
The input file consists of one or more
.I sections.
@ -54,7 +55,7 @@ Defines environment variables.
.PP
Blank lines and lines which start with a pound sign (#) are ignored,
except for the special section header lines.
.
.SH "COMMAND SECTION"
The command section begins with the line
.sp
@ -112,10 +113,10 @@ caret, space, tab and the backslash itself.
.PP
An action may be followed by an "extra" string.
When such a command is entered while running
.I less,
.IR less ,
the action is performed, and then the extra
string is parsed, just as if it were typed in to
.I less.
.IR less .
This feature can be used in certain cases to extend
the functionality of a command.
For example, see the "{" and ":t" commands in the example below.
@ -123,131 +124,134 @@ The extra string has a special meaning for the "quit" action:
when
.I less
quits, first character of the extra string is used as its exit status.
.
.SH EXAMPLE
The following input file describes the set of
default command keys used by less:
.sp
.nf
#command
\er forw-line
\en forw-line
e forw-line
j forw-line
\ekd forw-line
^E forw-line
^N forw-line
k back-line
y back-line
^Y back-line
^K back-line
^P back-line
J forw-line-force
K back-line-force
Y back-line-force
d forw-scroll
^D forw-scroll
u back-scroll
^U back-scroll
\e40 forw-screen
f forw-screen
^F forw-screen
^V forw-screen
\ekD forw-screen
b back-screen
^B back-screen
\eev back-screen
\ekU back-screen
z forw-window
w back-window
\ee\e40 forw-screen-force
F forw-forever
\eeF forw-until-hilite
R repaint-flush
r repaint
^R repaint
^L repaint
\eeu undo-hilite
g goto-line
\ekh goto-line
< goto-line
\ee< goto-line
p percent
% percent
\ee[ left-scroll
\ee] right-scroll
\ee( left-scroll
\ee) right-scroll
\ekl left-scroll
\ekr right-scroll
\ee{ no-scroll
\ee} end-scroll
{ forw-bracket {}
} back-bracket {}
( forw-bracket ()
) back-bracket ()
[ forw-bracket []
] back-bracket []
\ee^F forw-bracket
\ee^B back-bracket
G goto-end
\ee> goto-end
> goto-end
\eke goto-end
\eeG goto-end-buffered
= status
^G status
:f status
/ forw-search
? back-search
\ee/ forw-search *
\ee? back-search *
n repeat-search
\een repeat-search-all
N reverse-search
\eeN reverse-search-all
& filter
m set-mark
M set-mark-bottom
\eem clear-mark
' goto-mark
^X^X goto-mark
E examine
:e examine
^X^V examine
:n next-file
:p prev-file
t next-tag
T prev-tag
:x index-file
:d remove-file
- toggle-option
:t toggle-option t
s toggle-option o
_ display-option
| pipe
v visual
! shell
+ firstcmd
H help
h help
V version
0 digit
1 digit
2 digit
3 digit
4 digit
5 digit
6 digit
7 digit
8 digit
9 digit
q quit
Q quit
:q quit
:Q quit
ZZ quit
.fi
.RS 5m
.TS
l l.
#command
\er forw-line
\en forw-line
e forw-line
j forw-line
\ekd forw-line
^E forw-line
^N forw-line
k back-line
y back-line
^Y back-line
^K back-line
^P back-line
J forw-line-force
K back-line-force
Y back-line-force
d forw-scroll
^D forw-scroll
u back-scroll
^U back-scroll
\e40 forw-screen
f forw-screen
^F forw-screen
^V forw-screen
\ekD forw-screen
b back-screen
^B back-screen
\eev back-screen
\ekU back-screen
z forw-window
w back-window
\ee\e40 forw-screen-force
F forw-forever
\eeF forw-until-hilite
R repaint-flush
r repaint
^R repaint
^L repaint
\eeu undo-hilite
g goto-line
\ekh goto-line
< goto-line
\ee< goto-line
p percent
% percent
\ee[ left-scroll
\ee] right-scroll
\ee( left-scroll
\ee) right-scroll
\ekl left-scroll
\ekr right-scroll
\ee{ no-scroll
\ee} end-scroll
{ forw-bracket {}
} back-bracket {}
( forw-bracket ()
) back-bracket ()
[ forw-bracket []
] back-bracket []
\ee^F forw-bracket
\ee^B back-bracket
G goto-end
\ee> goto-end
> goto-end
\eke goto-end
\eeG goto-end-buffered
\&= status
^G status
:f status
/ forw-search
? back-search
\ee/ forw-search *
\ee? back-search *
n repeat-search
\een repeat-search-all
N reverse-search
\eeN reverse-search-all
& filter
m set-mark
M set-mark-bottom
\eem clear-mark
' goto-mark
^X^X goto-mark
E examine
:e examine
^X^V examine
:n next-file
:p prev-file
t next-tag
T prev-tag
:x index-file
:d remove-file
- toggle-option
:t toggle-option t
s toggle-option o
\&_ display-option
| pipe
v visual
! shell
+ firstcmd
H help
h help
V version
0 digit
1 digit
2 digit
3 digit
4 digit
5 digit
6 digit
7 digit
8 digit
9 digit
q quit
Q quit
:q quit
:Q quit
ZZ quit
.TE
.RE
.sp
.SH PRECEDENCE
Commands specified by
@ -255,13 +259,13 @@ Commands specified by
take precedence over the default commands.
A default command key may be disabled by including it in the
input file with the action "invalid".
Alternatively, a key may be defined
Alternatively, a key may be defined
to do nothing by using the action "noaction".
"noaction" is similar to "invalid", but
"noaction" is similar to "invalid", but
.I less
will give an error beep for an "invalid" command,
will give an error beep for an "invalid" command,
but not for a "noaction" command.
In addition, ALL default commands may be disabled by
In addition, ALL default commands may be disabled by
adding this control line to the input file:
.sp
#stop
@ -269,60 +273,63 @@ adding this control line to the input file:
This will cause all default commands to be ignored.
The #stop line should be the last line in that section of the file.
.PP
Be aware that #stop can be dangerous.
Since all default commands are disabled,
Be aware that #stop can be dangerous.
Since all default commands are disabled,
you must provide sufficient commands before the #stop line
to enable all necessary actions.
For example, failure to provide a "quit" command can lead to frustration.
.
.SH "LINE EDITING SECTION"
The line-editing section begins with the line:
.sp
#line-edit
.sp
This section specifies new key bindings for the line editing commands,
in a manner similar to the way key bindings for
in a manner similar to the way key bindings for
ordinary commands are specified in the #command section.
The line-editing section consists of a list of keys and actions,
one per line as in the example below.
.
.SH EXAMPLE
The following input file describes the set of
default line-editing keys used by less:
.sp
.nf
#line-edit
\et forw-complete
\e17 back-complete
\ee\et back-complete
^L expand
^V literal
^A literal
\eel right
\ekr right
\eeh left
\ekl left
\eeb word-left
\ee\ekl word-left
\eew word-right
\ee\ekr word-right
\eei insert
\eex delete
\ekx delete
\eeX word-delete
\eekx word-delete
\ee\eb word-backspace
\ee0 home
\ekh home
\ee$ end
\eke end
\eek up
\eku up
\eej down
^G abort
.fi
.RS 5m
.TS
l l.
#line-edit
\et forw-complete
\e17 back-complete
\ee\et back-complete
^L expand
^V literal
^A literal
\eel right
\ekr right
\eeh left
\ekl left
\eeb word-left
\ee\ekl word-left
\eew word-right
\ee\ekr word-right
\eei insert
\eex delete
\ekx delete
\eeX word-delete
\eekx word-delete
\ee\eb word-backspace
\ee0 home
\ekh home
\ee$ end
\eke end
\eek up
\eku up
\eej down
^G abort
.TE
.RE
.sp
.
.SH "LESS ENVIRONMENT VARIABLES"
The environment variable section begins with the line
.sp
@ -333,37 +340,37 @@ Each line consists of an environment variable name, an equals sign (=)
and the value to be assigned to the environment variable.
White space before and after the equals sign is ignored.
Variables assigned in this way are visible only to
.I less.
.IR less .
If a variable is specified in the system environment and also in a
lesskey file, the value in the lesskey file takes precedence.
Although the lesskey file can be used to override variables set in the
environment, the main purpose of assigning variables in the lesskey file
is simply to have all
is simply to have all
.I less
configuration information stored in one file.
.
.SH EXAMPLE
The following input file sets the -i option whenever
The following input file sets the \-i option whenever
.I less
is run, and specifies the character set to be "latin1":
.sp
.nf
#env
LESS = -i
LESS = \-i
LESSCHARSET = latin1
.fi
.sp
.
.SH "SEE ALSO"
less(1)
.BR less (1)
.
.SH WARNINGS
On MS-DOS and OS/2 systems, certain keys send a sequence of characters
which start with a NUL character (0).
This NUL character should be represented as \e340 in a lesskey file.
.
.SH COPYRIGHT
Copyright (C) 1984-2019 Mark Nudelman
Copyright (C) 1984-2020 Mark Nudelman
.PP
less is part of the GNU project and is free software.
You can redistribute it and/or modify it
@ -383,9 +390,9 @@ less is distributed in the hope that it will be useful, but
WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
or FITNESS FOR A PARTICULAR PURPOSE.
See the GNU General Public License for more details.
.
.SH AUTHOR
.PP
.
Mark Nudelman
.br
Send bug reports or comments to <bug-less@gnu.org>.

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.
@ -69,7 +69,7 @@
char dir[_MAX_DIR]; \
char fname[_MAX_FNAME]; \
char ext[_MAX_EXT]; \
long handle;
intptr_t handle;
#else
#if MSDOS_COMPILER==WIN32C && !defined(_MSC_VER) /* Borland C for Windows */

6
line.c
View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.
@ -794,7 +794,7 @@ flush_mbc_buf(pos)
*/
public int
pappend(c, pos)
unsigned char c;
int c;
POSITION pos;
{
int r;
@ -1164,7 +1164,7 @@ pdone(endline, chopped, forw)
*/
public void
set_status_col(c)
char c;
int c;
{
set_linebuf(0, c, AT_NORMAL|AT_HILITE);
}

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

5
main.c
View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.
@ -117,7 +117,6 @@ main(argc, argv)
init_mark();
init_cmds();
get_term();
expand_cmd_tables();
init_charset();
init_line();
init_cmdhist();
@ -159,6 +158,8 @@ main(argc, argv)
quit(QUIT_OK);
}
expand_cmd_tables();
#if EDITOR
editor = lgetenv("VISUAL");
if (editor == NULL || *editor == '\0')

2
mark.c
View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

View File

@ -7,8 +7,9 @@ my $USAGE = <<__EOF__;
-f = zero-based type field (default 2)
__EOF__
use vars qw( $opt_f $opt_n );
use Getopt::Std;
use vars qw( $opt_f $opt_n );
my $type_field = 2;
# Override Unicode tables for certain control chars
@ -21,16 +22,20 @@ my %force_space = (
0x0d => 1, # carriage return
);
# Hangul Jamo medial vowels and final consonants should be zero width.
my @force_compose = (
[0x1160, 0x11ff],
[0xd7b0, 0xd7c6],
[0xd7cb, 0xd7fb]
);
exit (main() ? 0 : 1);
sub main {
my $date = `date`;
chomp $date;
my $args = join ' ', @ARGV;
my $header = "/* Generated by \"$0 $args\" on $date */\n";
die $USAGE if not getopts('f:n');
$type_field = $opt_f if $opt_f;
my %types;
my $arg;
while ($arg = shift @ARGV) {
@ -39,7 +44,18 @@ sub main {
}
my %out = ( 'types' => \%types );
print $header;
my %force_compose;
foreach my $comp (@force_compose) {
my ($lo,$hi) = @$comp;
for (my $ch = $lo; $ch <= $hi; ++$ch) {
$force_compose{$ch} = 1;
}
}
my $date = `date`;
chomp $date;
print "/* Generated by \"$0 $args\" on $date */\n";
my $last_code = 0;
while (<>) {
chomp;
@ -52,13 +68,13 @@ sub main {
$lo_code = hex $1;
$hi_code = hex $2;
} else {
$lo_code = $hi_code = hex $fields[0];
$lo_code = $hi_code = hex $codes;
}
my $type = $fields[$type_field];
$type =~ s/\s//g;
for ($last_code = $lo_code; $last_code <= $hi_code; ++$last_code) {
$type = 'Zs' if $force_space{$last_code};
output(\%out, $last_code, $type);
output(\%out, $last_code,
$force_space{$last_code} ? 'Zs' : $force_compose{$last_code} ? 'Mn' : $type);
}
}
output(\%out, $last_code);

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.
@ -513,7 +513,7 @@ opt__V(type, s)
putstr(" (");
putstr(pattern_lib_name());
putstr(" regular expressions)\n");
putstr("Copyright (C) 1984-2019 Mark Nudelman\n\n");
putstr("Copyright (C) 1984-2020 Mark Nudelman\n\n");
putstr("less comes with NO WARRANTY, to the extent permitted by law.\n");
putstr("For information about the terms of redistribution,\n");
putstr("see the file named README in the less distribution.\n");

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.
@ -23,8 +23,9 @@
static struct loption *pendopt;
public int plusoption = FALSE;
static char *optstring();
static int flip_triple();
static char *optstring LESSPARAMS((char *s, char **p_str, char *printopt,
char *validchars));
static int flip_triple LESSPARAMS((int val, int lc));
extern int screen_trashed;
extern int less_is_more;
@ -525,6 +526,24 @@ opt_prompt(o)
return (o->odesc[0]);
}
/*
* If the specified option can be toggled, return NULL.
* Otherwise return an appropriate error message.
*/
public char *
opt_toggle_disallowed(c)
int c;
{
switch (c)
{
case 'o':
if (ch_getflags() & CH_CANSEEK)
return "Input is not a pipe";
break;
}
return NULL;
}
/*
* Return whether or not there is a string option pending;
* that is, if the previous option was a string-valued option letter

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

2
os.c
View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.
@ -500,8 +500,8 @@ type funcname(buf, ebuf) \
return val; \
}
STR_TO_TYPE_FUNC(lstrtopos, POSITION);
STR_TO_TYPE_FUNC(lstrtoi, int);
STR_TO_TYPE_FUNC(lstrtopos, POSITION)
STR_TO_TYPE_FUNC(lstrtoi, int)
/*
* Output an integer in a given radix.

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.
@ -219,8 +219,9 @@ extern int binattr;
extern int one_screen;
#if !MSDOS_COMPILER
static char *cheaper();
static void tmodes();
static char *cheaper LESSPARAMS((char *t1, char *t2, char *def));
static void tmodes LESSPARAMS((char *incap, char *outcap, char **instr,
char **outstr, char *def_instr, char *def_outstr, char **spp));
#endif
/*
@ -253,6 +254,11 @@ extern int hilite_search;
#endif
#if MSDOS_COMPILER==WIN32C
extern HANDLE tty;
extern DWORD console_mode;
#ifndef ENABLE_EXTENDED_FLAGS
#define ENABLE_EXTENDED_FLAGS 0x80
#define ENABLE_QUICK_EDIT_MODE 0x40
#endif
#else
extern int tty;
#endif
@ -642,7 +648,6 @@ ltget_env(capname)
char *capname;
{
char name[64];
char *s;
if (termcap_debug)
{
@ -1080,7 +1085,6 @@ get_term(VOID_PARAM)
#else
#if MSDOS_COMPILER==WIN32C
{
DWORD nread;
CONSOLE_SCREEN_BUFFER_INFO scr;
con_out_save = con_out = GetStdHandle(STD_OUTPUT_HANDLE);
@ -1090,8 +1094,7 @@ get_term(VOID_PARAM)
*/
SET_BINARY(0);
GetConsoleScreenBufferInfo(con_out, &scr);
ReadConsoleOutputAttribute(con_out, &curr_attr,
1, scr.dwCursorPosition, &nread);
curr_attr = scr.wAttributes;
sy_bg_color = (curr_attr & BG_COLORS) >> 4; /* normalize */
sy_fg_color = curr_attr & FG_COLORS;
}
@ -1122,8 +1125,11 @@ get_term(VOID_PARAM)
char *sp;
char *t1, *t2;
char *term;
char termbuf[TERMBUF_SIZE];
/*
* Some termcap libraries assume termbuf is static
* (accessible after tgetent returns).
*/
static char termbuf[TERMBUF_SIZE];
static char sbuf[TERMSBUF_SIZE];
#if OS2
@ -1146,12 +1152,13 @@ get_term(VOID_PARAM)
/*
* Find out what kind of terminal this is.
*/
if ((term = lgetenv("TERM")) == NULL)
term = DEFAULT_TERM;
if ((term = lgetenv("TERM")) == NULL)
term = DEFAULT_TERM;
hardcopy = 0;
if (tgetent(termbuf, term) != TGETENT_OK)
hardcopy = 1;
if (ltgetflag("hc"))
/* {{ Should probably just pass NULL instead of termbuf. }} */
if (tgetent(termbuf, term) != TGETENT_OK)
hardcopy = 1;
if (ltgetflag("hc"))
hardcopy = 1;
/*
@ -1562,7 +1569,9 @@ init_mouse(VOID_PARAM)
tputs(sc_s_mousecap, sc_height, putchr);
#else
#if MSDOS_COMPILER==WIN32C
SetConsoleMode(tty, ENABLE_PROCESSED_INPUT | ENABLE_MOUSE_INPUT);
SetConsoleMode(tty, ENABLE_PROCESSED_INPUT | ENABLE_MOUSE_INPUT
| ENABLE_EXTENDED_FLAGS /* disable quick edit */);
#endif
#endif
}
@ -1580,7 +1589,8 @@ deinit_mouse(VOID_PARAM)
tputs(sc_e_mousecap, sc_height, putchr);
#else
#if MSDOS_COMPILER==WIN32C
SetConsoleMode(tty, ENABLE_PROCESSED_INPUT);
SetConsoleMode(tty, ENABLE_PROCESSED_INPUT | ENABLE_EXTENDED_FLAGS
| (console_mode & ENABLE_QUICK_EDIT_MODE));
#endif
#endif
}
@ -1616,8 +1626,13 @@ init(VOID_PARAM)
line_left();
#else
#if MSDOS_COMPILER==WIN32C
if (!no_init)
win32_init_term();
if (!(quit_if_one_screen && one_screen))
{
if (!no_init)
win32_init_term();
init_mouse();
}
#endif
initcolor();
flush();
@ -1646,8 +1661,12 @@ deinit(VOID_PARAM)
/* Restore system colors. */
SETCOLORS(sy_fg_color, sy_bg_color);
#if MSDOS_COMPILER==WIN32C
if (!no_init)
win32_deinit_term();
if (!(quit_if_one_screen && one_screen))
{
deinit_mouse();
if (!no_init)
win32_deinit_term();
}
#else
/* Need clreol to make SETCOLORS take effect. */
clreol();

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.

17
tags.c
View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.
@ -44,13 +44,14 @@ enum {
T_GPATH /* 'GPATH': path name (global) */
};
static enum tag_result findctag();
static enum tag_result findgtag();
static char *nextgtag();
static char *prevgtag();
static POSITION ctagsearch();
static POSITION gtagsearch();
static int getentry();
static enum tag_result findctag LESSPARAMS((char *tag));
static enum tag_result findgtag LESSPARAMS((char *tag, int type));
static char *nextgtag(VOID_PARAM);
static char *prevgtag(VOID_PARAM);
static POSITION ctagsearch(VOID_PARAM);
static POSITION gtagsearch(VOID_PARAM);
static int getentry LESSPARAMS((char *buf, char **tag, char **file,
char **line));
/*
* The list of tags generated by the last findgtag() call.

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.
@ -23,7 +23,7 @@
#define _WIN32_WINNT 0x400
#endif
#include <windows.h>
static DWORD console_mode;
public DWORD console_mode;
public HANDLE tty;
#else
public int tty;

View File

@ -1,4 +1,4 @@
/* Generated by "./mkutable -f2 Cc Cs Co Zl Zp -- unicode/UnicodeData.txt" on Wed Feb 13 17:57:06 PST 2019 */
/* Generated by "./mkutable -f2 Cc Cs Co Zl Zp -- unicode/UnicodeData.txt" on Tue May 19 14:47:34 PDT 2020 */
{ 0x0000, 0x0007 }, /* Cc */
{ 0x000b, 0x000b }, /* Cc */
{ 0x000e, 0x001f }, /* Cc */

View File

@ -1,5 +1,5 @@
/*
* Copyright (C) 1984-2019 Mark Nudelman
* Copyright (C) 1984-2020 Mark Nudelman
*
* You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file.
@ -880,6 +880,20 @@ v549 2/10/19 Support X11 mouse extension 1006;
Win32 fixes (thanks to Jason Hood).
v550 2/16/19 Fix Win32 build; don't enable mouse unless --mouse is set.
v551 6/10/19 Doc changes.
-----------------------------------------------------------------
v552 7/8/19 Update Unicode tables.
v553 10/17/19 Support tinfow; handle zero-width Hangul chars.
v554 1/19/20 Remove erroneous free().
v555 3/15/20 Display error msg immediately when toggle -o without stdin.
v556 3/15/20 Update copyright.
v557 3/21/20 Fix memory corruption with libtermcap.
v558 4/17/20 Don't init terminal if -F and file fits on one screen (WIN32).
v559 4/19/20 Handle deinit correctly on WIN32.
v560 5/3/20 Fix regression when command results in no movement;
fix some less.nro issues (thanks to Bjarni I. Gislason).
v561 5/11/20 Fix erroneous EOF calculation when F command is interrupted.
v562 5/19/20 Update Unicode tables; minor doc formatting.
v563 6/13/20 Fix crash due to realpath() incompatibility.
*/
char version[] = "551";
char version[] = "563";

View File

@ -1,4 +1,4 @@
/* Generated by "./mkutable -f1 W F -- unicode/EastAsianWidth.txt" on Thu Feb 14 08:30:47 PST 2019 */
/* Generated by "./mkutable -f1 W F -- unicode/EastAsianWidth.txt" on Tue May 19 14:47:35 PDT 2020 */
{ 0x1100, 0x115f }, /* W */
{ 0x231a, 0x231b }, /* W */
{ 0x2329, 0x232a }, /* W */
@ -44,12 +44,10 @@
{ 0x3099, 0x30ff }, /* W */
{ 0x3105, 0x312f }, /* W */
{ 0x3131, 0x318e }, /* W */
{ 0x3190, 0x31ba }, /* W */
{ 0x31c0, 0x31e3 }, /* W */
{ 0x3190, 0x31e3 }, /* W */
{ 0x31f0, 0x321e }, /* W */
{ 0x3220, 0x3247 }, /* W */
{ 0x3250, 0x32fe }, /* W */
{ 0x3300, 0x4dbf }, /* W */
{ 0x3250, 0x4dbf }, /* W */
{ 0x4e00, 0xa48c }, /* W */
{ 0xa490, 0xa4c6 }, /* W */
{ 0xa960, 0xa97c }, /* W */
@ -61,10 +59,14 @@
{ 0xfe68, 0xfe6b }, /* W */
{ 0xff01, 0xff60 }, /* F */
{ 0xffe0, 0xffe6 }, /* F */
{ 0x16fe0, 0x16fe1 }, /* W */
{ 0x17000, 0x187f1 }, /* W */
{ 0x18800, 0x18af2 }, /* W */
{ 0x16fe0, 0x16fe4 }, /* W */
{ 0x16ff0, 0x16ff1 }, /* W */
{ 0x17000, 0x187f7 }, /* W */
{ 0x18800, 0x18cd5 }, /* W */
{ 0x18d00, 0x18d08 }, /* W */
{ 0x1b000, 0x1b11e }, /* W */
{ 0x1b150, 0x1b152 }, /* W */
{ 0x1b164, 0x1b167 }, /* W */
{ 0x1b170, 0x1b2fb }, /* W */
{ 0x1f004, 0x1f004 }, /* W */
{ 0x1f0cf, 0x1f0cf }, /* W */
@ -96,15 +98,21 @@
{ 0x1f680, 0x1f6c5 }, /* W */
{ 0x1f6cc, 0x1f6cc }, /* W */
{ 0x1f6d0, 0x1f6d2 }, /* W */
{ 0x1f6d5, 0x1f6d7 }, /* W */
{ 0x1f6eb, 0x1f6ec }, /* W */
{ 0x1f6f4, 0x1f6f9 }, /* W */
{ 0x1f910, 0x1f93e }, /* W */
{ 0x1f940, 0x1f970 }, /* W */
{ 0x1f973, 0x1f976 }, /* W */
{ 0x1f97a, 0x1f97a }, /* W */
{ 0x1f97c, 0x1f9a2 }, /* W */
{ 0x1f9b0, 0x1f9b9 }, /* W */
{ 0x1f9c0, 0x1f9c2 }, /* W */
{ 0x1f9d0, 0x1f9ff }, /* W */
{ 0x1f6f4, 0x1f6fc }, /* W */
{ 0x1f7e0, 0x1f7eb }, /* W */
{ 0x1f90c, 0x1f93a }, /* W */
{ 0x1f93c, 0x1f945 }, /* W */
{ 0x1f947, 0x1f978 }, /* W */
{ 0x1f97a, 0x1f9cb }, /* W */
{ 0x1f9cd, 0x1f9ff }, /* W */
{ 0x1fa70, 0x1fa74 }, /* W */
{ 0x1fa78, 0x1fa7a }, /* W */
{ 0x1fa80, 0x1fa86 }, /* W */
{ 0x1fa90, 0x1faa8 }, /* W */
{ 0x1fab0, 0x1fab6 }, /* W */
{ 0x1fac0, 0x1fac2 }, /* W */
{ 0x1fad0, 0x1fad6 }, /* W */
{ 0x20000, 0x2fffd }, /* W */
{ 0x30000, 0x3fffd }, /* W */