MFV r366990: less v563.

MFC after:	2 weeks
Relnotes:	yes
This commit is contained in:
Xin LI 2020-10-24 15:58:42 +00:00
commit 6f26c71d76
56 changed files with 551 additions and 409 deletions

View File

@ -9,6 +9,31 @@
To report bugs, suggestions or comments, send email to bug-less@gnu.org 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 Major changes between "less" versions 530 and 551

View File

@ -7,9 +7,9 @@
************************************************************************** **************************************************************************
************************************************************************** **************************************************************************
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 part of the GNU project (http://www.gnu.org).
This program is free software. You may redistribute it and/or This program is free software. You may redistribute it and/or
@ -33,6 +33,14 @@ The formatted manual page is in less.man.
The manual page nroff source is in less.nro. The manual page nroff source is in less.nro.
Major changes made since the last posted version are in NEWS. 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): INSTALLATION (Unix systems only):

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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * License or the Less License, as specified in the README file.
@ -408,6 +408,7 @@ end_logfile(VOID_PARAM)
} }
close(logfile); close(logfile);
logfile = -1; logfile = -1;
free(namelogfile);
namelogfile = NULL; namelogfile = NULL;
} }
@ -842,7 +843,8 @@ seekable(f)
public void public void
ch_set_eof(VOID_PARAM) 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * License or the Less License, as specified in the README file.
@ -509,7 +509,7 @@ prutfchar(ch)
*/ */
public int public int
utf_len(ch) utf_len(ch)
unsigned char ch; int ch;
{ {
if ((ch & 0x80) == 0) if ((ch & 0x80) == 0)
return 1; 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * 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 */ static int updown_match = -1; /* Prefix length in up/down movement */
#if TAB_COMPLETE_FILENAME #if TAB_COMPLETE_FILENAME
static int cmd_complete(); static int cmd_complete LESSPARAMS((int action));
/* /*
* These variables are statics used by cmd_complete. * These variables are statics used by cmd_complete.
*/ */
@ -960,10 +960,7 @@ cmd_istr(str)
step_char(&s, +1, endline); step_char(&s, +1, endline);
action = cmd_ichar(os, s - os); action = cmd_ichar(os, s - os);
if (action != CC_OK) if (action != CC_OK)
{
bell();
return (action); return (action);
}
} }
return (CC_OK); return (CC_OK);
} }

View File

@ -1,6 +1,6 @@
/* $FreeBSD$ */ /* $FreeBSD$ */
/* /*
* Copyright (C) 1984-2019 Mark Nudelman * Copyright (C) 1984-2020 Mark Nudelman
* *
* You may distribute under the terms of either the GNU General Public * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * License or the Less License, as specified in the README file.
@ -90,7 +90,7 @@ struct ungot {
}; };
static struct ungot* ungot = NULL; 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. * Move the cursor to start of prompt line before executing a command.
@ -1806,6 +1806,12 @@ commands(VOID_PARAM)
optgetname = FALSE; optgetname = FALSE;
mca_opt_toggle(); mca_opt_toggle();
c = getcc(); c = getcc();
cbuf = opt_toggle_disallowed(c);
if (cbuf != NULL)
{
error(cbuf, NULL_PARG);
break;
}
goto again; goto again;
case A_DISP_OPTION: 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 */ { 0x0300, 0x036f }, /* Mn */
{ 0x0483, 0x0487 }, /* Mn */ { 0x0483, 0x0487 }, /* Mn */
{ 0x0488, 0x0489 }, /* Me */ { 0x0488, 0x0489 }, /* Me */
@ -58,7 +58,7 @@
{ 0x0b3f, 0x0b3f }, /* Mn */ { 0x0b3f, 0x0b3f }, /* Mn */
{ 0x0b41, 0x0b44 }, /* Mn */ { 0x0b41, 0x0b44 }, /* Mn */
{ 0x0b4d, 0x0b4d }, /* Mn */ { 0x0b4d, 0x0b4d }, /* Mn */
{ 0x0b56, 0x0b56 }, /* Mn */ { 0x0b55, 0x0b56 }, /* Mn */
{ 0x0b62, 0x0b63 }, /* Mn */ { 0x0b62, 0x0b63 }, /* Mn */
{ 0x0b82, 0x0b82 }, /* Mn */ { 0x0b82, 0x0b82 }, /* Mn */
{ 0x0bc0, 0x0bc0 }, /* Mn */ { 0x0bc0, 0x0bc0 }, /* Mn */
@ -81,6 +81,7 @@
{ 0x0d41, 0x0d44 }, /* Mn */ { 0x0d41, 0x0d44 }, /* Mn */
{ 0x0d4d, 0x0d4d }, /* Mn */ { 0x0d4d, 0x0d4d }, /* Mn */
{ 0x0d62, 0x0d63 }, /* Mn */ { 0x0d62, 0x0d63 }, /* Mn */
{ 0x0d81, 0x0d81 }, /* Mn */
{ 0x0dca, 0x0dca }, /* Mn */ { 0x0dca, 0x0dca }, /* Mn */
{ 0x0dd2, 0x0dd4 }, /* Mn */ { 0x0dd2, 0x0dd4 }, /* Mn */
{ 0x0dd6, 0x0dd6 }, /* Mn */ { 0x0dd6, 0x0dd6 }, /* Mn */
@ -88,8 +89,7 @@
{ 0x0e34, 0x0e3a }, /* Mn */ { 0x0e34, 0x0e3a }, /* Mn */
{ 0x0e47, 0x0e4e }, /* Mn */ { 0x0e47, 0x0e4e }, /* Mn */
{ 0x0eb1, 0x0eb1 }, /* Mn */ { 0x0eb1, 0x0eb1 }, /* Mn */
{ 0x0eb4, 0x0eb9 }, /* Mn */ { 0x0eb4, 0x0ebc }, /* Mn */
{ 0x0ebb, 0x0ebc }, /* Mn */
{ 0x0ec8, 0x0ecd }, /* Mn */ { 0x0ec8, 0x0ecd }, /* Mn */
{ 0x0f18, 0x0f19 }, /* Mn */ { 0x0f18, 0x0f19 }, /* Mn */
{ 0x0f35, 0x0f35 }, /* Mn */ { 0x0f35, 0x0f35 }, /* Mn */
@ -112,6 +112,7 @@
{ 0x1085, 0x1086 }, /* Mn */ { 0x1085, 0x1086 }, /* Mn */
{ 0x108d, 0x108d }, /* Mn */ { 0x108d, 0x108d }, /* Mn */
{ 0x109d, 0x109d }, /* Mn */ { 0x109d, 0x109d }, /* Mn */
{ 0x1160, 0x11ff }, /* Mn */
{ 0x135d, 0x135f }, /* Mn */ { 0x135d, 0x135f }, /* Mn */
{ 0x1712, 0x1714 }, /* Mn */ { 0x1712, 0x1714 }, /* Mn */
{ 0x1732, 0x1734 }, /* Mn */ { 0x1732, 0x1734 }, /* Mn */
@ -140,6 +141,7 @@
{ 0x1a7f, 0x1a7f }, /* Mn */ { 0x1a7f, 0x1a7f }, /* Mn */
{ 0x1ab0, 0x1abd }, /* Mn */ { 0x1ab0, 0x1abd }, /* Mn */
{ 0x1abe, 0x1abe }, /* Me */ { 0x1abe, 0x1abe }, /* Me */
{ 0x1abf, 0x1ac0 }, /* Mn */
{ 0x1b00, 0x1b03 }, /* Mn */ { 0x1b00, 0x1b03 }, /* Mn */
{ 0x1b34, 0x1b34 }, /* Mn */ { 0x1b34, 0x1b34 }, /* Mn */
{ 0x1b36, 0x1b3a }, /* Mn */ { 0x1b36, 0x1b3a }, /* Mn */
@ -183,6 +185,7 @@
{ 0xa806, 0xa806 }, /* Mn */ { 0xa806, 0xa806 }, /* Mn */
{ 0xa80b, 0xa80b }, /* Mn */ { 0xa80b, 0xa80b }, /* Mn */
{ 0xa825, 0xa826 }, /* Mn */ { 0xa825, 0xa826 }, /* Mn */
{ 0xa82c, 0xa82c }, /* Mn */
{ 0xa8c4, 0xa8c5 }, /* Mn */ { 0xa8c4, 0xa8c5 }, /* Mn */
{ 0xa8e0, 0xa8f1 }, /* Mn */ { 0xa8e0, 0xa8f1 }, /* Mn */
{ 0xa8ff, 0xa8ff }, /* Mn */ { 0xa8ff, 0xa8ff }, /* Mn */
@ -191,7 +194,7 @@
{ 0xa980, 0xa982 }, /* Mn */ { 0xa980, 0xa982 }, /* Mn */
{ 0xa9b3, 0xa9b3 }, /* Mn */ { 0xa9b3, 0xa9b3 }, /* Mn */
{ 0xa9b6, 0xa9b9 }, /* Mn */ { 0xa9b6, 0xa9b9 }, /* Mn */
{ 0xa9bc, 0xa9bc }, /* Mn */ { 0xa9bc, 0xa9bd }, /* Mn */
{ 0xa9e5, 0xa9e5 }, /* Mn */ { 0xa9e5, 0xa9e5 }, /* Mn */
{ 0xaa29, 0xaa2e }, /* Mn */ { 0xaa29, 0xaa2e }, /* Mn */
{ 0xaa31, 0xaa32 }, /* Mn */ { 0xaa31, 0xaa32 }, /* Mn */
@ -209,6 +212,8 @@
{ 0xabe5, 0xabe5 }, /* Mn */ { 0xabe5, 0xabe5 }, /* Mn */
{ 0xabe8, 0xabe8 }, /* Mn */ { 0xabe8, 0xabe8 }, /* Mn */
{ 0xabed, 0xabed }, /* Mn */ { 0xabed, 0xabed }, /* Mn */
{ 0xd7b0, 0xd7c6 }, /* Mn */
{ 0xd7cb, 0xd7fb }, /* Mn */
{ 0xfb1e, 0xfb1e }, /* Mn */ { 0xfb1e, 0xfb1e }, /* Mn */
{ 0xfe00, 0xfe0f }, /* Mn */ { 0xfe00, 0xfe0f }, /* Mn */
{ 0xfe20, 0xfe2f }, /* Mn */ { 0xfe20, 0xfe2f }, /* Mn */
@ -222,6 +227,7 @@
{ 0x10a3f, 0x10a3f }, /* Mn */ { 0x10a3f, 0x10a3f }, /* Mn */
{ 0x10ae5, 0x10ae6 }, /* Mn */ { 0x10ae5, 0x10ae6 }, /* Mn */
{ 0x10d24, 0x10d27 }, /* Mn */ { 0x10d24, 0x10d27 }, /* Mn */
{ 0x10eab, 0x10eac }, /* Mn */
{ 0x10f46, 0x10f50 }, /* Mn */ { 0x10f46, 0x10f50 }, /* Mn */
{ 0x11001, 0x11001 }, /* Mn */ { 0x11001, 0x11001 }, /* Mn */
{ 0x11038, 0x11046 }, /* Mn */ { 0x11038, 0x11046 }, /* Mn */
@ -235,6 +241,7 @@
{ 0x11180, 0x11181 }, /* Mn */ { 0x11180, 0x11181 }, /* Mn */
{ 0x111b6, 0x111be }, /* Mn */ { 0x111b6, 0x111be }, /* Mn */
{ 0x111c9, 0x111cc }, /* Mn */ { 0x111c9, 0x111cc }, /* Mn */
{ 0x111cf, 0x111cf }, /* Mn */
{ 0x1122f, 0x11231 }, /* Mn */ { 0x1122f, 0x11231 }, /* Mn */
{ 0x11234, 0x11234 }, /* Mn */ { 0x11234, 0x11234 }, /* Mn */
{ 0x11236, 0x11237 }, /* Mn */ { 0x11236, 0x11237 }, /* Mn */
@ -270,6 +277,12 @@
{ 0x11727, 0x1172b }, /* Mn */ { 0x11727, 0x1172b }, /* Mn */
{ 0x1182f, 0x11837 }, /* Mn */ { 0x1182f, 0x11837 }, /* Mn */
{ 0x11839, 0x1183a }, /* 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 */ { 0x11a01, 0x11a0a }, /* Mn */
{ 0x11a33, 0x11a38 }, /* Mn */ { 0x11a33, 0x11a38 }, /* Mn */
{ 0x11a3b, 0x11a3e }, /* Mn */ { 0x11a3b, 0x11a3e }, /* Mn */
@ -296,7 +309,9 @@
{ 0x11ef3, 0x11ef4 }, /* Mn */ { 0x11ef3, 0x11ef4 }, /* Mn */
{ 0x16af0, 0x16af4 }, /* Mn */ { 0x16af0, 0x16af4 }, /* Mn */
{ 0x16b30, 0x16b36 }, /* Mn */ { 0x16b30, 0x16b36 }, /* Mn */
{ 0x16f4f, 0x16f4f }, /* Mn */
{ 0x16f8f, 0x16f92 }, /* Mn */ { 0x16f8f, 0x16f92 }, /* Mn */
{ 0x16fe4, 0x16fe4 }, /* Mn */
{ 0x1bc9d, 0x1bc9e }, /* Mn */ { 0x1bc9d, 0x1bc9e }, /* Mn */
{ 0x1d167, 0x1d169 }, /* Mn */ { 0x1d167, 0x1d169 }, /* Mn */
{ 0x1d17b, 0x1d182 }, /* Mn */ { 0x1d17b, 0x1d182 }, /* Mn */
@ -314,6 +329,9 @@
{ 0x1e01b, 0x1e021 }, /* Mn */ { 0x1e01b, 0x1e021 }, /* Mn */
{ 0x1e023, 0x1e024 }, /* Mn */ { 0x1e023, 0x1e024 }, /* Mn */
{ 0x1e026, 0x1e02a }, /* Mn */ { 0x1e026, 0x1e02a }, /* Mn */
{ 0x1e130, 0x1e136 }, /* Mn */
{ 0x1e2ae, 0x1e2ae }, /* Mn */
{ 0x1e2ec, 0x1e2ef }, /* Mn */
{ 0x1e8d0, 0x1e8d6 }, /* Mn */ { 0x1e8d0, 0x1e8d6 }, /* Mn */
{ 0x1e944, 0x1e94a }, /* Mn */ { 0x1e944, 0x1e94a }, /* Mn */
{ 0xe0100, 0xe01ef }, /* Mn */ { 0xe0100, 0xe01ef }, /* Mn */

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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * License or the Less License, as specified in the README file.
@ -854,7 +854,6 @@ use_logfile(filename)
/* /*
* Don't do anything. * Don't do anything.
*/ */
free(filename);
return; return;
case 'q': case 'q':
quit(QUIT_OK); 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * License or the Less License, as specified in the README file.
@ -795,7 +795,7 @@ lglob(filename)
} }
/* /*
* @@@ * Return canonical pathname.
*/ */
public char * public char *
lrealpath(path) 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 */ { 0x00ad, 0x00ad }, /* Cf */
{ 0x0600, 0x0605 }, /* Cf */ { 0x0600, 0x0605 }, /* Cf */
{ 0x061c, 0x061c }, /* Cf */ { 0x061c, 0x061c }, /* Cf */
@ -14,6 +14,7 @@
{ 0xfff9, 0xfffb }, /* Cf */ { 0xfff9, 0xfffb }, /* Cf */
{ 0x110bd, 0x110bd }, /* Cf */ { 0x110bd, 0x110bd }, /* Cf */
{ 0x110cd, 0x110cd }, /* Cf */ { 0x110cd, 0x110cd }, /* Cf */
{ 0x13430, 0x13438 }, /* Cf */
{ 0x1bca0, 0x1bca3 }, /* Cf */ { 0x1bca0, 0x1bca3 }, /* Cf */
{ 0x1d173, 0x1d17a }, /* Cf */ { 0x1d173, 0x1d17a }, /* Cf */
{ 0xe0001, 0xe0001 }, /* Cf */ { 0xe0001, 0xe0001 }, /* Cf */

View File

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

View File

@ -61,7 +61,7 @@ public int binary_char LESSPARAMS ((LWCHAR c));
public int control_char LESSPARAMS ((LWCHAR c)); public int control_char LESSPARAMS ((LWCHAR c));
public char * prchar LESSPARAMS ((LWCHAR c)); public char * prchar LESSPARAMS ((LWCHAR c));
public char * prutfchar LESSPARAMS ((LWCHAR ch)); 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 int is_utf8_well_formed LESSPARAMS ((char *ss, int slen));
public void utf_skip_to_lead LESSPARAMS ((char **pp, char *limit)); public void utf_skip_to_lead LESSPARAMS ((char **pp, char *limit));
public LWCHAR get_wchar LESSPARAMS ((constant char *p)); 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_end LESSPARAMS ((LWCHAR ch));
public int is_ansi_middle LESSPARAMS ((LWCHAR ch)); public int is_ansi_middle LESSPARAMS ((LWCHAR ch));
public void skip_ansi LESSPARAMS ((char **pp, constant char *limit)); 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 int pflushmbc LESSPARAMS ((VOID_PARAM));
public void pdone LESSPARAMS ((int endline, int chopped, int forw)); 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 int gline LESSPARAMS ((int i, int *ap));
public void null_line LESSPARAMS ((VOID_PARAM)); public void null_line LESSPARAMS ((VOID_PARAM));
public POSITION forw_raw_line LESSPARAMS ((POSITION curr_pos, char **linep, int *line_lenp)); 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 void toggle_option LESSPARAMS ((struct loption *o, int lower, char *s, int how_toggle));
public int opt_has_param LESSPARAMS ((struct loption *o)); public int opt_has_param LESSPARAMS ((struct loption *o));
public char * opt_prompt 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 int isoptpending LESSPARAMS ((VOID_PARAM));
public void nopendopt LESSPARAMS ((VOID_PARAM)); public void nopendopt LESSPARAMS ((VOID_PARAM));
public int getnum LESSPARAMS ((char **sp, char *printopt, int *errp)); public int getnum LESSPARAMS ((char **sp, char *printopt, int *errp));

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" #include "less.h"
constant char helpdata[] = { constant char helpdata[] = {
'\n', '\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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * License or the Less License, as specified in the README file.
@ -219,7 +219,7 @@ jump_loc(pos, sline)
nline -= sindex; nline -= sindex;
if (nline > 0) if (nline > 0)
forw(nline, position(BOTTOM_PLUS_ONE), 1, 0, 0); forw(nline, position(BOTTOM_PLUS_ONE), 1, 0, 0);
else if (nline < 0) else
back(-nline, position(TOP), 1, 0); back(-nline, position(TOP), 1, 0);
#if HILITE_SEARCH #if HILITE_SEARCH
if (show_attn) if (show_attn)

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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * License or the Less License, as specified in the README file.

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

View File

@ -1,4 +1,4 @@
.TH LESSECHO 1 "Version 551: 11 Jun 2019" .TH LESSECHO 1 "Version 563: 13 Jun 2020"
.SH NAME .SH NAME
lessecho \- expand metacharacters lessecho \- expand metacharacters
.SH SYNOPSIS .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. Specifies that all arguments are to be quoted.
The default is that only arguments containing metacharacters are quoted The default is that only arguments containing metacharacters are quoted
.SH "SEE ALSO" .SH "SEE ALSO"
less(1) .BR less (1)
.SH AUTHOR .SH AUTHOR
This manual page was written by Thomas Schoepf <schoepf@debian.org>, This manual page was written by Thomas Schoepf <schoepf@debian.org>,
for the Debian GNU/Linux system (but may be used by others). 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * License or the Less License, as specified in the README file.

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

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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * License or the Less License, as specified in the README file.
@ -794,7 +794,7 @@ flush_mbc_buf(pos)
*/ */
public int public int
pappend(c, pos) pappend(c, pos)
unsigned char c; int c;
POSITION pos; POSITION pos;
{ {
int r; int r;
@ -1164,7 +1164,7 @@ pdone(endline, chopped, forw)
*/ */
public void public void
set_status_col(c) set_status_col(c)
char c; int c;
{ {
set_linebuf(0, c, AT_NORMAL|AT_HILITE); 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * License or the Less License, as specified in the README file.

View File

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

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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * 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) -f = zero-based type field (default 2)
__EOF__ __EOF__
use vars qw( $opt_f $opt_n );
use Getopt::Std; use Getopt::Std;
use vars qw( $opt_f $opt_n );
my $type_field = 2; my $type_field = 2;
# Override Unicode tables for certain control chars # Override Unicode tables for certain control chars
@ -21,16 +22,20 @@ my %force_space = (
0x0d => 1, # carriage return 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); exit (main() ? 0 : 1);
sub main { sub main {
my $date = `date`;
chomp $date;
my $args = join ' ', @ARGV; my $args = join ' ', @ARGV;
my $header = "/* Generated by \"$0 $args\" on $date */\n";
die $USAGE if not getopts('f:n'); die $USAGE if not getopts('f:n');
$type_field = $opt_f if $opt_f; $type_field = $opt_f if $opt_f;
my %types; my %types;
my $arg; my $arg;
while ($arg = shift @ARGV) { while ($arg = shift @ARGV) {
@ -39,7 +44,18 @@ sub main {
} }
my %out = ( 'types' => \%types ); 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; my $last_code = 0;
while (<>) { while (<>) {
chomp; chomp;
@ -52,13 +68,13 @@ sub main {
$lo_code = hex $1; $lo_code = hex $1;
$hi_code = hex $2; $hi_code = hex $2;
} else { } else {
$lo_code = $hi_code = hex $fields[0]; $lo_code = $hi_code = hex $codes;
} }
my $type = $fields[$type_field]; my $type = $fields[$type_field];
$type =~ s/\s//g; $type =~ s/\s//g;
for ($last_code = $lo_code; $last_code <= $hi_code; ++$last_code) { for ($last_code = $lo_code; $last_code <= $hi_code; ++$last_code) {
$type = 'Zs' if $force_space{$last_code}; output(\%out, $last_code,
output(\%out, $last_code, $type); $force_space{$last_code} ? 'Zs' : $force_compose{$last_code} ? 'Mn' : $type);
} }
} }
output(\%out, $last_code); 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * License or the Less License, as specified in the README file.
@ -513,7 +513,7 @@ opt__V(type, s)
putstr(" ("); putstr(" (");
putstr(pattern_lib_name()); putstr(pattern_lib_name());
putstr(" regular expressions)\n"); 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("less comes with NO WARRANTY, to the extent permitted by law.\n");
putstr("For information about the terms of redistribution,\n"); putstr("For information about the terms of redistribution,\n");
putstr("see the file named README in the less distribution.\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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * License or the Less License, as specified in the README file.
@ -23,8 +23,9 @@
static struct loption *pendopt; static struct loption *pendopt;
public int plusoption = FALSE; public int plusoption = FALSE;
static char *optstring(); static char *optstring LESSPARAMS((char *s, char **p_str, char *printopt,
static int flip_triple(); char *validchars));
static int flip_triple LESSPARAMS((int val, int lc));
extern int screen_trashed; extern int screen_trashed;
extern int less_is_more; extern int less_is_more;
@ -525,6 +526,24 @@ opt_prompt(o)
return (o->odesc[0]); 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; * Return whether or not there is a string option pending;
* that is, if the previous option was a string-valued option letter * 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * License or the Less License, as specified in the README file.
@ -500,8 +500,8 @@ type funcname(buf, ebuf) \
return val; \ return val; \
} }
STR_TO_TYPE_FUNC(lstrtopos, POSITION); STR_TO_TYPE_FUNC(lstrtopos, POSITION)
STR_TO_TYPE_FUNC(lstrtoi, int); STR_TO_TYPE_FUNC(lstrtoi, int)
/* /*
* Output an integer in a given radix. * 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * License or the Less License, as specified in the README file.
@ -219,8 +219,9 @@ extern int binattr;
extern int one_screen; extern int one_screen;
#if !MSDOS_COMPILER #if !MSDOS_COMPILER
static char *cheaper(); static char *cheaper LESSPARAMS((char *t1, char *t2, char *def));
static void tmodes(); static void tmodes LESSPARAMS((char *incap, char *outcap, char **instr,
char **outstr, char *def_instr, char *def_outstr, char **spp));
#endif #endif
/* /*
@ -253,6 +254,11 @@ extern int hilite_search;
#endif #endif
#if MSDOS_COMPILER==WIN32C #if MSDOS_COMPILER==WIN32C
extern HANDLE tty; extern HANDLE tty;
extern DWORD console_mode;
#ifndef ENABLE_EXTENDED_FLAGS
#define ENABLE_EXTENDED_FLAGS 0x80
#define ENABLE_QUICK_EDIT_MODE 0x40
#endif
#else #else
extern int tty; extern int tty;
#endif #endif
@ -642,7 +648,6 @@ ltget_env(capname)
char *capname; char *capname;
{ {
char name[64]; char name[64];
char *s;
if (termcap_debug) if (termcap_debug)
{ {
@ -1080,7 +1085,6 @@ get_term(VOID_PARAM)
#else #else
#if MSDOS_COMPILER==WIN32C #if MSDOS_COMPILER==WIN32C
{ {
DWORD nread;
CONSOLE_SCREEN_BUFFER_INFO scr; CONSOLE_SCREEN_BUFFER_INFO scr;
con_out_save = con_out = GetStdHandle(STD_OUTPUT_HANDLE); con_out_save = con_out = GetStdHandle(STD_OUTPUT_HANDLE);
@ -1090,8 +1094,7 @@ get_term(VOID_PARAM)
*/ */
SET_BINARY(0); SET_BINARY(0);
GetConsoleScreenBufferInfo(con_out, &scr); GetConsoleScreenBufferInfo(con_out, &scr);
ReadConsoleOutputAttribute(con_out, &curr_attr, curr_attr = scr.wAttributes;
1, scr.dwCursorPosition, &nread);
sy_bg_color = (curr_attr & BG_COLORS) >> 4; /* normalize */ sy_bg_color = (curr_attr & BG_COLORS) >> 4; /* normalize */
sy_fg_color = curr_attr & FG_COLORS; sy_fg_color = curr_attr & FG_COLORS;
} }
@ -1122,8 +1125,11 @@ get_term(VOID_PARAM)
char *sp; char *sp;
char *t1, *t2; char *t1, *t2;
char *term; 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]; static char sbuf[TERMSBUF_SIZE];
#if OS2 #if OS2
@ -1146,12 +1152,13 @@ get_term(VOID_PARAM)
/* /*
* Find out what kind of terminal this is. * Find out what kind of terminal this is.
*/ */
if ((term = lgetenv("TERM")) == NULL) if ((term = lgetenv("TERM")) == NULL)
term = DEFAULT_TERM; term = DEFAULT_TERM;
hardcopy = 0; hardcopy = 0;
if (tgetent(termbuf, term) != TGETENT_OK) /* {{ Should probably just pass NULL instead of termbuf. }} */
hardcopy = 1; if (tgetent(termbuf, term) != TGETENT_OK)
if (ltgetflag("hc")) hardcopy = 1;
if (ltgetflag("hc"))
hardcopy = 1; hardcopy = 1;
/* /*
@ -1562,7 +1569,9 @@ init_mouse(VOID_PARAM)
tputs(sc_s_mousecap, sc_height, putchr); tputs(sc_s_mousecap, sc_height, putchr);
#else #else
#if MSDOS_COMPILER==WIN32C #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
#endif #endif
} }
@ -1580,7 +1589,8 @@ deinit_mouse(VOID_PARAM)
tputs(sc_e_mousecap, sc_height, putchr); tputs(sc_e_mousecap, sc_height, putchr);
#else #else
#if MSDOS_COMPILER==WIN32C #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
#endif #endif
} }
@ -1616,8 +1626,13 @@ init(VOID_PARAM)
line_left(); line_left();
#else #else
#if MSDOS_COMPILER==WIN32C #if MSDOS_COMPILER==WIN32C
if (!no_init) if (!(quit_if_one_screen && one_screen))
win32_init_term(); {
if (!no_init)
win32_init_term();
init_mouse();
}
#endif #endif
initcolor(); initcolor();
flush(); flush();
@ -1646,8 +1661,12 @@ deinit(VOID_PARAM)
/* Restore system colors. */ /* Restore system colors. */
SETCOLORS(sy_fg_color, sy_bg_color); SETCOLORS(sy_fg_color, sy_bg_color);
#if MSDOS_COMPILER==WIN32C #if MSDOS_COMPILER==WIN32C
if (!no_init) if (!(quit_if_one_screen && one_screen))
win32_deinit_term(); {
deinit_mouse();
if (!no_init)
win32_deinit_term();
}
#else #else
/* Need clreol to make SETCOLORS take effect. */ /* Need clreol to make SETCOLORS take effect. */
clreol(); 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * License or the Less License, as specified in the README file.
@ -44,13 +44,14 @@ enum {
T_GPATH /* 'GPATH': path name (global) */ T_GPATH /* 'GPATH': path name (global) */
}; };
static enum tag_result findctag(); static enum tag_result findctag LESSPARAMS((char *tag));
static enum tag_result findgtag(); static enum tag_result findgtag LESSPARAMS((char *tag, int type));
static char *nextgtag(); static char *nextgtag(VOID_PARAM);
static char *prevgtag(); static char *prevgtag(VOID_PARAM);
static POSITION ctagsearch(); static POSITION ctagsearch(VOID_PARAM);
static POSITION gtagsearch(); static POSITION gtagsearch(VOID_PARAM);
static int getentry(); static int getentry LESSPARAMS((char *buf, char **tag, char **file,
char **line));
/* /*
* The list of tags generated by the last findgtag() call. * 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * License or the Less License, as specified in the README file.
@ -23,7 +23,7 @@
#define _WIN32_WINNT 0x400 #define _WIN32_WINNT 0x400
#endif #endif
#include <windows.h> #include <windows.h>
static DWORD console_mode; public DWORD console_mode;
public HANDLE tty; public HANDLE tty;
#else #else
public int tty; 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 */ { 0x0000, 0x0007 }, /* Cc */
{ 0x000b, 0x000b }, /* Cc */ { 0x000b, 0x000b }, /* Cc */
{ 0x000e, 0x001f }, /* 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 * You may distribute under the terms of either the GNU General Public
* License or the Less License, as specified in the README file. * 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). Win32 fixes (thanks to Jason Hood).
v550 2/16/19 Fix Win32 build; don't enable mouse unless --mouse is set. v550 2/16/19 Fix Win32 build; don't enable mouse unless --mouse is set.
v551 6/10/19 Doc changes. 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 */ { 0x1100, 0x115f }, /* W */
{ 0x231a, 0x231b }, /* W */ { 0x231a, 0x231b }, /* W */
{ 0x2329, 0x232a }, /* W */ { 0x2329, 0x232a }, /* W */
@ -44,12 +44,10 @@
{ 0x3099, 0x30ff }, /* W */ { 0x3099, 0x30ff }, /* W */
{ 0x3105, 0x312f }, /* W */ { 0x3105, 0x312f }, /* W */
{ 0x3131, 0x318e }, /* W */ { 0x3131, 0x318e }, /* W */
{ 0x3190, 0x31ba }, /* W */ { 0x3190, 0x31e3 }, /* W */
{ 0x31c0, 0x31e3 }, /* W */
{ 0x31f0, 0x321e }, /* W */ { 0x31f0, 0x321e }, /* W */
{ 0x3220, 0x3247 }, /* W */ { 0x3220, 0x3247 }, /* W */
{ 0x3250, 0x32fe }, /* W */ { 0x3250, 0x4dbf }, /* W */
{ 0x3300, 0x4dbf }, /* W */
{ 0x4e00, 0xa48c }, /* W */ { 0x4e00, 0xa48c }, /* W */
{ 0xa490, 0xa4c6 }, /* W */ { 0xa490, 0xa4c6 }, /* W */
{ 0xa960, 0xa97c }, /* W */ { 0xa960, 0xa97c }, /* W */
@ -61,10 +59,14 @@
{ 0xfe68, 0xfe6b }, /* W */ { 0xfe68, 0xfe6b }, /* W */
{ 0xff01, 0xff60 }, /* F */ { 0xff01, 0xff60 }, /* F */
{ 0xffe0, 0xffe6 }, /* F */ { 0xffe0, 0xffe6 }, /* F */
{ 0x16fe0, 0x16fe1 }, /* W */ { 0x16fe0, 0x16fe4 }, /* W */
{ 0x17000, 0x187f1 }, /* W */ { 0x16ff0, 0x16ff1 }, /* W */
{ 0x18800, 0x18af2 }, /* W */ { 0x17000, 0x187f7 }, /* W */
{ 0x18800, 0x18cd5 }, /* W */
{ 0x18d00, 0x18d08 }, /* W */
{ 0x1b000, 0x1b11e }, /* W */ { 0x1b000, 0x1b11e }, /* W */
{ 0x1b150, 0x1b152 }, /* W */
{ 0x1b164, 0x1b167 }, /* W */
{ 0x1b170, 0x1b2fb }, /* W */ { 0x1b170, 0x1b2fb }, /* W */
{ 0x1f004, 0x1f004 }, /* W */ { 0x1f004, 0x1f004 }, /* W */
{ 0x1f0cf, 0x1f0cf }, /* W */ { 0x1f0cf, 0x1f0cf }, /* W */
@ -96,15 +98,21 @@
{ 0x1f680, 0x1f6c5 }, /* W */ { 0x1f680, 0x1f6c5 }, /* W */
{ 0x1f6cc, 0x1f6cc }, /* W */ { 0x1f6cc, 0x1f6cc }, /* W */
{ 0x1f6d0, 0x1f6d2 }, /* W */ { 0x1f6d0, 0x1f6d2 }, /* W */
{ 0x1f6d5, 0x1f6d7 }, /* W */
{ 0x1f6eb, 0x1f6ec }, /* W */ { 0x1f6eb, 0x1f6ec }, /* W */
{ 0x1f6f4, 0x1f6f9 }, /* W */ { 0x1f6f4, 0x1f6fc }, /* W */
{ 0x1f910, 0x1f93e }, /* W */ { 0x1f7e0, 0x1f7eb }, /* W */
{ 0x1f940, 0x1f970 }, /* W */ { 0x1f90c, 0x1f93a }, /* W */
{ 0x1f973, 0x1f976 }, /* W */ { 0x1f93c, 0x1f945 }, /* W */
{ 0x1f97a, 0x1f97a }, /* W */ { 0x1f947, 0x1f978 }, /* W */
{ 0x1f97c, 0x1f9a2 }, /* W */ { 0x1f97a, 0x1f9cb }, /* W */
{ 0x1f9b0, 0x1f9b9 }, /* W */ { 0x1f9cd, 0x1f9ff }, /* W */
{ 0x1f9c0, 0x1f9c2 }, /* W */ { 0x1fa70, 0x1fa74 }, /* W */
{ 0x1f9d0, 0x1f9ff }, /* W */ { 0x1fa78, 0x1fa7a }, /* W */
{ 0x1fa80, 0x1fa86 }, /* W */
{ 0x1fa90, 0x1faa8 }, /* W */
{ 0x1fab0, 0x1fab6 }, /* W */
{ 0x1fac0, 0x1fac2 }, /* W */
{ 0x1fad0, 0x1fad6 }, /* W */
{ 0x20000, 0x2fffd }, /* W */ { 0x20000, 0x2fffd }, /* W */
{ 0x30000, 0x3fffd }, /* W */ { 0x30000, 0x3fffd }, /* W */