summaryrefslogtreecommitdiffstats
path: root/usr.bin/ee
diff options
context:
space:
mode:
authorsobomax <sobomax@FreeBSD.org>2001-03-27 13:51:18 +0000
committersobomax <sobomax@FreeBSD.org>2001-03-27 13:51:18 +0000
commitea073d6e59d921c61b6208e0c93897e5782aa622 (patch)
tree8e1321f929fb3ee593632b61092b14ba7b64438c /usr.bin/ee
parenta27d1d954d337d973c8c98834c505c64472f2aeb (diff)
downloadFreeBSD-src-ea073d6e59d921c61b6208e0c93897e5782aa622.zip
FreeBSD-src-ea073d6e59d921c61b6208e0c93897e5782aa622.tar.gz
Resolve conflicts.
Diffstat (limited to 'usr.bin/ee')
-rw-r--r--usr.bin/ee/ee.120
-rw-r--r--usr.bin/ee/ee.c396
-rw-r--r--usr.bin/ee/new_curse.c206
-rw-r--r--usr.bin/ee/new_curse.h8
-rw-r--r--usr.bin/ee/nls/en_US.ISO_8859-1/ee.msg23
-rw-r--r--usr.bin/ee/nls/en_US.US-ASCII/ee.msg23
6 files changed, 518 insertions, 158 deletions
diff --git a/usr.bin/ee/ee.1 b/usr.bin/ee/ee.1
index 956e879..708b7f5 100644
--- a/usr.bin/ee/ee.1
+++ b/usr.bin/ee/ee.1
@@ -353,6 +353,9 @@ A window showing the keyboard operations that can be performed can be
displayed or not.
.It emacs keys
Control keys may be given bindings similar to emacs, or not.
+.It 16 bit characters
+Toggles whether sixteen bit characters are handled as one 16-bit quantities or
+two 8-bit quantities. This works primarily with the Chinese Big 5 code set.
.El
.Pp
You may set these modes via the initialization file (see below), or with a
@@ -496,10 +499,14 @@ Turn on display of eight bit characters.
.It noeightbit
Turn off display of eight bit characters (they are displayed as their decimal
value inside angle brackets, e.g., "<220>").
+.It 16bit
+Turns on handling of 16-bit characters.
+.It no16bit
+Turns off handling of 16-bit characters.
.It emacs
-Turn on emacs key bindings.
+Turns on emacs key bindings.
.It noemacs
-Turn off emacs key bindings.
+Turns off emacs key bindings.
.El
.Ss "Save Editor Configuration"
When using this entry from the
@@ -538,7 +545,10 @@ Always make a copy of files that cannot be easily reproduced before
editing. Save files early, and save often.
.Ss "International Code Set Support"
.Nm Ee
-supports single-byte character code sets (eight-bit clean).
+supports single-byte character code sets (eight-bit clean), or the
+Chinese Big-5 code set. (Other multi-byte code sets may function, but the
+reason Big-5 works is that a two-byte character also takes up two columns on
+the screen.)
.Sh WARNINGS
The automatic paragraph formatting operation
may be too slow for slower systems.
@@ -558,10 +568,10 @@ This software and documentation contains
proprietary information which is protected by
copyright. All rights are reserved.
.Pp
-Copyright (c) 1990, 1991, 1992, 1993, 1995 Hugh Mahon.
+Copyright (c) 1990, 1991, 1992, 1993, 1995, 1996 Hugh Mahon.
.Sh "SEE ALSO"
.Xr ispell 1 ,
-.Xr lp 1 ,
+.Xr lpr 1 ,
.Xr spell 1 ,
.Xr termcap 5 ,
.Xr terminfo 5 ,
diff --git a/usr.bin/ee/ee.c b/usr.bin/ee/ee.c
index 7284f07..7db133b 100644
--- a/usr.bin/ee/ee.c
+++ b/usr.bin/ee/ee.c
@@ -64,7 +64,7 @@ char *ee_long_notice[] = {
"copyright. All rights are reserved."
};
-char *version = "@(#) ee, version 1.3";
+char *version = "@(#) ee, version 1.4.1";
#ifdef NCURSE
#include "new_curse.h"
@@ -124,7 +124,7 @@ nl_catd catalog;
#define COMMANDS 2
struct text {
- char *line; /* line of characters */
+ unsigned char *line; /* line of characters */
int line_number; /* line number */
int line_length; /* actual number of characters in the line */
int max_length; /* maximum number of characters the line handles */
@@ -139,7 +139,7 @@ struct text *tmp_line; /* temporary line pointer */
struct text *srch_line; /* temporary pointer for search routine */
struct files { /* structure to store names of files to be edited*/
- char *name; /* name of file */
+ unsigned char *name; /* name of file */
struct files *next_name;
};
@@ -185,21 +185,25 @@ int local_LINES = 0; /* copy of LINES, to detect when win resizes */
int local_COLS = 0; /* copy of COLS, to detect when win resizes */
int curses_initialized = FALSE; /* flag indicating if curses has been started*/
int emacs_keys_mode = FALSE; /* mode for if emacs key binings are used */
-
-char *point; /* points to current position in line */
-char *srch_str; /* pointer for search string */
-char *u_srch_str; /* pointer to non-case sensitive search */
-char *srch_1; /* pointer to start of suspect string */
-char *srch_2; /* pointer to next character of string */
-char *srch_3;
-char *in_file_name = NULL; /* name of input file */
-char *tmp_file; /* temporary file name */
-char d_char; /* deleted character */
-char *d_word; /* deleted word */
-char *d_line; /* deleted line */
-char in_string[513]; /* buffer for reading a file */
-char *print_command = "lpr"; /* string to use for the print command */
-char *start_at_line = NULL; /* move to this line at start of session*/
+int ee_chinese = FALSE; /* allows handling of multi-byte characters */
+ /* by checking for high bit in a byte the */
+ /* code recognizes a two-byte character */
+ /* sequence */
+
+unsigned char *point; /* points to current position in line */
+unsigned char *srch_str; /* pointer for search string */
+unsigned char *u_srch_str; /* pointer to non-case sensitive search */
+unsigned char *srch_1; /* pointer to start of suspect string */
+unsigned char *srch_2; /* pointer to next character of string */
+unsigned char *srch_3;
+unsigned char *in_file_name = NULL; /* name of input file */
+char *tmp_file; /* temporary file name */
+unsigned char *d_char; /* deleted character */
+unsigned char *d_word; /* deleted word */
+unsigned char *d_line; /* deleted line */
+char in_string[513]; /* buffer for reading a file */
+unsigned char *print_command = "lpr"; /* string to use for the print command */
+unsigned char *start_at_line = NULL; /* move to this line at start of session*/
char *count_text; /* buffer for current position display */
const char *count_text_default = "===============================================================================";
int count_text_len; /* length of the line above */
@@ -252,22 +256,22 @@ struct menu_entries {
struct menu_entries *ptr_argument;
int (*iprocedure)P_((int));
void (*nprocedure)P_((void));
- unsigned int argument;
+ int argument;
};
int main P_((int argc, char *argv[]));
-char *resiz_line P_((int factor, struct text *rline, int rpos));
+unsigned char *resiz_line P_((int factor, struct text *rline, int rpos));
void insert P_((int character));
void delete P_((int disp));
-void scanline P_((char *pos));
+void scanline P_((unsigned char *pos));
int tabshift P_((int temp_int));
int out_char P_((WINDOW *window, int character, int column));
int len_char P_((int character, int column));
-void draw_line P_((int vertical, int horiz, char *ptr, int t_pos, int length));
+void draw_line P_((int vertical, int horiz, unsigned char *ptr, int t_pos, int length));
void insert_line P_((int disp));
struct text *txtalloc P_((void));
struct files *name_alloc P_((void));
-char *next_word P_((char *string));
+unsigned char *next_word P_((unsigned char *string));
void prev_word P_((void));
void control P_((void));
void emacs_control P_((void));
@@ -288,11 +292,11 @@ int scan P_((char *line, int offset, int column));
char *get_string P_((char *prompt, int advance));
int compare P_((char *string1, char *string2, int sensitive));
void goto_line P_((char *cmd_str));
-void midscreen P_((int line, char *pnt));
+void midscreen P_((int line, unsigned char *pnt));
void get_options P_((int numargs, char *arguments[]));
void check_fp P_((void));
void get_file P_((char *file_name));
-void get_line P_((int length, char *in_string, int *append));
+void get_line P_((int length, unsigned char *in_string, int *append));
void draw_screen P_((void));
void finish P_((void));
int quit P_((int noverify));
@@ -348,22 +352,23 @@ void strings_init P_((void));
*/
struct menu_entries modes_menu[] = {
- {"", NULL, NULL, NULL, NULL, 0},
- {"", NULL, NULL, NULL, NULL, -1},
- {"", NULL, NULL, NULL, NULL, -1},
- {"", NULL, NULL, NULL, NULL, -1},
- {"", NULL, NULL, NULL, NULL, -1},
- {"", NULL, NULL, NULL, NULL, -1},
- {"", NULL, NULL, NULL, NULL, -1},
- {"", NULL, NULL, NULL, NULL, -1},
- {"", NULL, NULL, NULL, NULL, -1},
- {"", NULL, NULL, NULL, dump_ee_conf, -1},
- {NULL, NULL, NULL, NULL, NULL, -1}
+ {"", NULL, NULL, NULL, NULL, 0}, /* title */
+ {"", NULL, NULL, NULL, NULL, -1}, /* 1. tabs to spaces */
+ {"", NULL, NULL, NULL, NULL, -1}, /* 2. case sensitive search*/
+ {"", NULL, NULL, NULL, NULL, -1}, /* 3. margins observed */
+ {"", NULL, NULL, NULL, NULL, -1}, /* 4. auto-paragraph */
+ {"", NULL, NULL, NULL, NULL, -1}, /* 5. eightbit characters*/
+ {"", NULL, NULL, NULL, NULL, -1}, /* 6. info window */
+ {"", NULL, NULL, NULL, NULL, -1}, /* 7. emacs key bindings*/
+ {"", NULL, NULL, NULL, NULL, -1}, /* 8. right margin */
+ {"", NULL, NULL, NULL, NULL, -1}, /* 9. chinese text */
+ {"", NULL, NULL, NULL, dump_ee_conf, -1}, /* 10. save editor config */
+ {NULL, NULL, NULL, NULL, NULL, -1} /* terminator */
};
-char *mode_strings[10];
+char *mode_strings[11];
-#define NUM_MODES_ITEMS 9
+#define NUM_MODES_ITEMS 10
struct menu_entries config_dump_menu[] = {
{"", NULL, NULL, NULL, NULL, 0},
@@ -426,15 +431,15 @@ struct menu_entries main_menu[] = {
{NULL, NULL, NULL, NULL, NULL, -1}
};
-char *help_text[22];
+char *help_text[23];
char *control_keys[5];
char *emacs_help_text[22];
char *emacs_control_keys[5];
char *command_strings[5];
-char *commands[30];
-char *init_strings[20];
+char *commands[32];
+char *init_strings[22];
#define MENU_WARN 1
@@ -533,6 +538,8 @@ char *cancel_string;
char *menu_too_lrg_msg;
char *more_above_str, *more_below_str;
+char *chinese_cmd, *nochinese_cmd;
+
#ifndef __STDC__
#ifndef HAS_STDLIB
extern char *malloc();
@@ -558,13 +565,13 @@ char *argv[];
count_text_len = strlen(count_text_default) + 1;
count_text = malloc(count_text_len);
- d_char = 0;
+ d_char = malloc(3); /* provide a buffer for multi-byte chars */
d_word = malloc(150);
*d_word = (char) NULL;
d_line = NULL;
dlt_line = txtalloc();
dlt_line->line = d_line;
- dlt_line->line_length = 1;
+ dlt_line->line_length = 0;
curr_line = first_line = txtalloc();
curr_line->line = point = malloc(10);
curr_line->line_length = 1;
@@ -644,7 +651,10 @@ char *argv[];
if (in > 255)
function_key();
else if ((in == '\10') || (in == 127))
+ {
+ in = 8; /* make sure key is set to backspace */
delete(TRUE);
+ }
else if ((in > 31) || (in == 9))
insert(in);
else if ((in >= 0) && (in <= 31))
@@ -658,13 +668,13 @@ char *argv[];
return(0);
}
-char *
+unsigned char *
resiz_line(factor, rline, rpos) /* resize the line to length + factor*/
int factor; /* resize factor */
struct text *rline; /* position in line */
int rpos;
{
- char *rpoint;
+ unsigned char *rpoint;
int resiz_var;
rline->max_length += factor;
@@ -680,8 +690,8 @@ int character; /* new character */
{
int counter;
int value;
- char *temp; /* temporary pointer */
- char *temp2; /* temporary pointer */
+ unsigned char *temp; /* temporary pointer */
+ unsigned char *temp2; /* temporary pointer */
if ((character == '\011') && (expand_tabs))
{
@@ -763,31 +773,46 @@ void
delete(disp) /* delete character */
int disp;
{
- char *tp;
- char *temp2;
+ unsigned char *tp;
+ unsigned char *temp2;
struct text *temp_buff;
int temp_vert;
int temp_pos;
+ int del_width = 1;
if (point != curr_line->line) /* if not at beginning of line */
{
text_changes = TRUE;
temp2 = tp = point;
- tp--;
- point--;
- if ((*tp >= '\000') && (*tp < ' ')) /* check for TAB */
+ if ((ee_chinese) && (position >= 2) && (*(point - 2) > 127))
+ {
+ del_width = 2;
+ }
+ tp -= del_width;
+ point -= del_width;
+ position -= del_width;
+ temp_pos = position;
+ curr_line->line_length -= del_width;
+ if ((*tp < ' ') || (*tp >= 127)) /* check for TAB */
scanline(tp);
else
- --scr_horz;
+ scr_horz -= del_width;
scr_pos = scr_horz;
if (in == 8)
- d_char = *point; /* save deleted character */
- temp_pos = --position;
- curr_line->line_length--;
+ {
+ if (del_width == 1)
+ *d_char = *point; /* save deleted character */
+ else
+ {
+ d_char[0] = *point;
+ d_char[1] = *(point + 1);
+ }
+ d_char[del_width] = (unsigned char) NULL;
+ }
while (temp_pos <= curr_line->line_length)
{
temp_pos++;
- *tp= *temp2;
+ *tp = *temp2;
tp++;
temp2++;
}
@@ -809,7 +834,10 @@ int disp;
renumber_lines(curr_line->next_line, curr_line->line_number + 1);
temp2 = temp_buff->line;
if (in == 8)
- d_char = '\n';
+ {
+ d_char[0] = '\n';
+ d_char[1] = (unsigned char) NULL;
+ }
tp = point;
temp_pos = 1;
while (temp_pos < temp_buff->line_length)
@@ -851,16 +879,16 @@ int disp;
void
scanline(pos) /* find the proper horizontal position for the pointer */
-char *pos;
+unsigned char *pos;
{
int temp;
- char *ptr;
+ unsigned char *ptr;
ptr = curr_line->line;
temp = 0;
while (ptr < pos)
{
- if ((*ptr >= 0) && (*ptr <= 8))
+ if (*ptr <= 8)
temp += 2;
else if (*ptr == 9)
temp += tabshift(temp);
@@ -909,7 +937,7 @@ char character;
int column;
{
int i1, i2;
- char *string;
+ unsigned char *string;
char string2[8];
if (character == TAB)
@@ -937,13 +965,13 @@ int column;
}
else
{
- waddch(window, (unsigned char)character );
+ waddch(window, (char)character );
return(1);
}
}
else
{
- waddch(window, (unsigned char)character);
+ waddch(window, (char)character);
return(1);
}
for (i2 = 0; (string[i2] != (char) NULL) && (((column+i2+1)-horiz_offset) < last_col); i2++)
@@ -978,12 +1006,12 @@ void
draw_line(vertical, horiz, ptr, t_pos, length) /* redraw line from current position */
int vertical; /* current vertical position on screen */
int horiz; /* current horizontal position on screen */
-char *ptr; /* pointer to line */
+unsigned char *ptr; /* pointer to line */
int t_pos; /* current position (offset in bytes) from bol */
int length; /* length (in bytes) of line */
{
int d; /* partial length of special or tab char to display */
- char *temp; /* temporary pointer to position in line */
+ unsigned char *temp; /* temporary pointer to position in line */
int abs_column; /* offset in screen units from begin of line */
int column; /* horizontal position on screen */
int row; /* vertical position on screen */
@@ -1012,7 +1040,7 @@ int length; /* length (in bytes) of line */
wclrtoeol(text_win);
while ((posit < length) && (column <= last_col))
{
- if ((*temp < 32) || (*temp == 127))
+ if ((*temp < 32) || (*temp >= 127))
{
column += len_char(*temp, abs_column);
abs_column += out_char(text_win, *temp, abs_column);
@@ -1037,8 +1065,8 @@ int disp;
{
int temp_pos;
int temp_pos2;
- char *temp;
- char *extra;
+ unsigned char *temp;
+ unsigned char *extra;
struct text *temp_nod;
text_changes = TRUE;
@@ -1117,8 +1145,8 @@ struct files *name_alloc() /* allocate space for file name list node */
return((struct files *) malloc(sizeof( struct files)));
}
-char *next_word(string) /* move to next word in string */
-char *string;
+unsigned char *next_word(string) /* move to next word in string */
+unsigned char *string;
{
while ((*string != (char) NULL) && ((*string != 32) && (*string != 9)))
string++;
@@ -1370,6 +1398,11 @@ int disp;
{
if (point != curr_line->line) /* if not at begin of line */
{
+ if ((ee_chinese) && (position >= 2) && (*(point - 2) > 127))
+ {
+ point--;
+ position--;
+ }
point--;
position--;
scanline(point);
@@ -1399,6 +1432,12 @@ int disp;
{
if (position < curr_line->line_length)
{
+ if ((ee_chinese) && (*point > 127) &&
+ ((curr_line->line_length - position) >= 2))
+ {
+ point++;
+ position++;
+ }
point++;
position++;
scanline(point);
@@ -1435,8 +1474,15 @@ find_pos() /* move to the same column as on other line */
{
if (*point == 9)
scr_horz += tabshift(scr_horz);
- else if ((*point >= '\0') && (*point < ' '))
+ else if (*point < ' ')
+ scr_horz += 2;
+ else if ((ee_chinese) && (*point > 127) &&
+ ((curr_line->line_length - position) >= 2))
+ {
scr_horz += 2;
+ point++;
+ position++;
+ }
else
scr_horz++;
position++;
@@ -1696,10 +1742,7 @@ char *cmd_str1;
{
wmove(com_win, 0, 0);
wclrtoeol(com_win);
- if (*point >= '\0')
- wprintw(com_win, char_str, *point);
- else
- wprintw(com_win, char_str, (*point + 256));
+ wprintw(com_win, char_str, *point);
}
else if (compare(cmd_str, REDRAW, FALSE))
redraw();
@@ -1734,6 +1777,20 @@ char *cmd_str1;
expand_tabs = FALSE;
else if (compare(cmd_str, Exit_string, FALSE))
finish();
+ else if (compare(cmd_str, chinese_cmd, FALSE))
+ {
+ ee_chinese = TRUE;
+#ifdef NCURSE
+ nc_setattrib(A_NC_BIG5);
+#endif /* NCURSE */
+ }
+ else if (compare(cmd_str, nochinese_cmd, FALSE))
+ {
+ ee_chinese = FALSE;
+#ifdef NCURSE
+ nc_clearattrib(A_NC_BIG5);
+#endif /* NCURSE */
+ }
else if (compare(cmd_str, QUIT_string, FALSE))
quit(0);
else if (*cmd_str == '!')
@@ -1967,7 +2024,7 @@ char *cmd_str;
void
midscreen(line, pnt) /* put current line in middle of screen */
int line;
-char *pnt;
+unsigned char *pnt;
{
struct text *mid_line;
int i;
@@ -2221,11 +2278,11 @@ char *file_name;
void
get_line(length, in_string, append) /* read string and split into lines */
int length; /* length of string read by read */
-char *in_string; /* string read by read */
+unsigned char *in_string; /* string read by read */
int *append; /* TRUE if must append more text to end of current line */
{
- char *str1;
- char *str2;
+ unsigned char *str1;
+ unsigned char *str2;
int num; /* offset from start of string */
int char_count; /* length of new line (or added portion */
int temp_counter; /* temporary counter value */
@@ -2266,7 +2323,7 @@ int *append; /* TRUE if must append more text to end of current line */
if (tline->next_line != NULL)
tline->next_line->prev_line = tline;
curr_line = tline;
- curr_line->line = point = (char *) malloc(char_count);
+ curr_line->line = point = (unsigned char *) malloc(char_count);
curr_line->line_length = char_count;
curr_line->max_length = char_count;
}
@@ -2292,7 +2349,7 @@ void
draw_screen() /* redraw the screen from current postion */
{
struct text *temp_line;
- char *line_out;
+ unsigned char *line_out;
int temp_vert;
temp_line = curr_line;
@@ -2628,6 +2685,12 @@ del_char() /* delete current character */
in = 8; /* backspace */
if (position < curr_line->line_length) /* if not end of line */
{
+ if ((ee_chinese) && (*point > 127) &&
+ ((curr_line->line_length - position) >= 2))
+ {
+ point++;
+ position++;
+ }
position++;
point++;
scanline(point);
@@ -2643,12 +2706,17 @@ del_char() /* delete current character */
void
undel_char() /* undelete last deleted character */
{
- if (d_char == '\n') /* insert line if last del_char deleted eol */
+ if (d_char[0] == '\n') /* insert line if last del_char deleted eol */
insert_line(TRUE);
else
{
- in = d_char;
+ in = d_char[0];
insert(in);
+ if (d_char[1] != (unsigned char) NULL)
+ {
+ in = d_char[1];
+ insert(in);
+ }
}
}
@@ -2657,14 +2725,16 @@ del_word() /* delete word in front of cursor */
{
int tposit;
int difference;
- char *d_word2;
- char *d_word3;
- char tmp_char;
+ unsigned char *d_word2;
+ unsigned char *d_word3;
+ unsigned char tmp_char[3];
if (d_word != NULL)
free(d_word);
d_word = malloc(curr_line->line_length);
- tmp_char = d_char;
+ tmp_char[0] = d_char[0];
+ tmp_char[1] = d_char[1];
+ tmp_char[2] = d_char[2];
d_word3 = point;
d_word2 = d_word;
tposit = position;
@@ -2697,7 +2767,9 @@ del_word() /* delete word in front of cursor */
curr_line->line_length -= difference;
*d_word2 = (char) NULL;
draw_line(scr_vert, scr_horz,point,position,curr_line->line_length);
- d_char = tmp_char;
+ d_char[0] = tmp_char[0];
+ d_char[1] = tmp_char[1];
+ d_char[2] = tmp_char[2];
text_changes = TRUE;
formatted = FALSE;
}
@@ -2707,10 +2779,10 @@ undel_word() /* undelete last deleted word */
{
int temp;
int tposit;
- char *tmp_old_ptr;
- char *tmp_space;
- char *tmp_ptr;
- char *d_word_ptr;
+ unsigned char *tmp_old_ptr;
+ unsigned char *tmp_space;
+ unsigned char *tmp_ptr;
+ unsigned char *d_word_ptr;
/*
| resize line to handle undeleted word
@@ -2767,8 +2839,8 @@ undel_word() /* undelete last deleted word */
void
del_line() /* delete from cursor to end of line */
{
- char *dl1;
- char *dl2;
+ unsigned char *dl1;
+ unsigned char *dl2;
int tposit;
if (d_line != NULL)
@@ -2800,10 +2872,13 @@ del_line() /* delete from cursor to end of line */
void
undel_line() /* undelete last deleted line */
{
- char *ud1;
- char *ud2;
+ unsigned char *ud1;
+ unsigned char *ud2;
int tposit;
+ if (dlt_line->line_length == 0)
+ return;
+
insert_line(TRUE);
left(TRUE);
point = resiz_line(dlt_line->line_length, curr_line, position);
@@ -3190,6 +3265,12 @@ set_up_term() /* set up the terminal for operating with ae */
last_col = COLS - 1;
local_LINES = LINES;
local_COLS = COLS;
+
+#ifdef NCURSE
+ if (ee_chinese)
+ nc_setattrib(A_NC_BIG5);
+#endif /* NCURSE */
+
}
void
@@ -3243,7 +3324,7 @@ struct menu_entries menu_list[];
max_width = length;
}
max_width += 3;
- max_width = max(max_width, strlen(cancel_string));
+ max_width = max(max_width, strlen(menu_cancel_msg));
max_width = max(max_width, max(strlen(more_above_str), strlen(more_below_str)));
max_width += 6;
@@ -3464,7 +3545,7 @@ int off_start, vert_size;
waddstr(menu_win, menu_list[0].item_string);
wmove(menu_win, (max_height - 3), 3);
if (menu_list[0].argument != MENU_WARN)
- waddstr(menu_win, cancel_string);
+ waddstr(menu_win, menu_cancel_msg);
}
if (!nohighlight)
wstandout(menu_win);
@@ -3741,7 +3822,7 @@ int
Blank_Line(test_line) /* test if line has any non-space characters */
struct text *test_line;
{
- char *line;
+ unsigned char *line;
int length;
if (test_line == NULL)
@@ -3779,11 +3860,15 @@ Format() /* format the paragraph according to set margins */
int status;
int tmp_af;
int counter;
- char *line;
- char *tmp_srchstr;
- char *temp1, *temp2;
- char *temp_dword;
- char temp_d_char = d_char;
+ unsigned char *line;
+ unsigned char *tmp_srchstr;
+ unsigned char *temp1, *temp2;
+ unsigned char *temp_dword;
+ unsigned char temp_d_char[3];
+
+ temp_d_char[0] = d_char[0];
+ temp_d_char[1] = d_char[1];
+ temp_d_char[2] = d_char[2];
/*
| if observ_margins is not set, or the current line is blank,
@@ -3817,7 +3902,7 @@ Format() /* format the paragraph according to set margins */
temp_case = case_sen;
case_sen = TRUE;
tmp_srchstr = srch_str;
- temp2 = srch_str = (char *) malloc(1 + curr_line->line_length - position);
+ temp2 = srch_str = (unsigned char *) malloc(1 + curr_line->line_length - position);
if ((*point == ' ') || (*point == '\t'))
adv_word();
offset -= position;
@@ -3978,7 +4063,9 @@ Format() /* format the paragraph according to set margins */
case_sen = temp_case;
free(srch_str);
srch_str = tmp_srchstr;
- d_char = temp_d_char;
+ d_char[0] = temp_d_char[0];
+ d_char[1] = temp_d_char[1];
+ d_char[2] = temp_d_char[2];
auto_format = tmp_af;
midscreen(scr_vert, point);
@@ -3986,7 +4073,7 @@ Format() /* format the paragraph according to set margins */
wrefresh(com_win);
}
-char *init_name[3] = {
+unsigned char *init_name[3] = {
"/usr/share/misc/init.ee",
NULL,
".init.ee"
@@ -3996,9 +4083,9 @@ void
ee_init() /* check for init file and read it if it exists */
{
FILE *init_file;
- char *string;
- char *str1;
- char *str2;
+ unsigned char *string;
+ unsigned char *str1;
+ unsigned char *str2;
char *home;
int counter;
int temp_int;
@@ -4079,17 +4166,37 @@ ee_init() /* check for init file and read it if it exists */
else if (compare(str1, EIGHTBIT, FALSE))
eightbit = TRUE;
else if (compare(str1, NOEIGHTBIT, FALSE))
+ {
eightbit = FALSE;
+ ee_chinese = FALSE;
+ }
else if (compare(str1, EMACS_string, FALSE))
emacs_keys_mode = TRUE;
else if (compare(str1, NOEMACS_string, FALSE))
emacs_keys_mode = FALSE;
+ else if (compare(str1, chinese_cmd, FALSE))
+ {
+ ee_chinese = TRUE;
+ eightbit = TRUE;
+ }
+ else if (compare(str1, nochinese_cmd, FALSE))
+ ee_chinese = FALSE;
}
fclose(init_file);
}
}
free(string);
free(home);
+
+ string = getenv("LANG");
+ if (string != NULL)
+ {
+ if (strcmp(string, "zh_TW.big5") == 0)
+ {
+ ee_chinese = TRUE;
+ eightbit = TRUE;
+ }
+ }
}
/*
@@ -4183,6 +4290,7 @@ dump_ee_conf()
fprintf(init_file, "%s\n", nohighlight ? NOHIGHLIGHT : HIGHLIGHT );
fprintf(init_file, "%s\n", eightbit ? EIGHTBIT : NOEIGHTBIT );
fprintf(init_file, "%s\n", emacs_keys_mode ? EMACS_string : NOEMACS_string );
+ fprintf(init_file, "%s\n", ee_chinese ? chinese_cmd : nochinese_cmd );
fclose(init_file);
@@ -4297,7 +4405,7 @@ first_word_len(test_line)
struct text *test_line;
{
int counter;
- char *pnt;
+ unsigned char *pnt;
if (test_line == NULL)
return(0);
@@ -4342,12 +4450,17 @@ Auto_Format() /* format the paragraph according to set margins */
int status;
int counter;
char not_blank;
- char *line;
- char *tmp_srchstr;
- char *temp1, *temp2;
- char *temp_dword;
- char temp_d_char = d_char;
- char *tmp_d_line;
+ unsigned char *line;
+ unsigned char *tmp_srchstr;
+ unsigned char *temp1, *temp2;
+ unsigned char *temp_dword;
+ unsigned char temp_d_char[3];
+ unsigned char *tmp_d_line;
+
+
+ temp_d_char[0] = d_char[0];
+ temp_d_char[1] = d_char[1];
+ temp_d_char[2] = d_char[2];
/*
| if observ_margins is not set, or the current line is blank,
@@ -4376,7 +4489,7 @@ Auto_Format() /* format the paragraph according to set margins */
temp_case = case_sen;
case_sen = TRUE;
tmp_srchstr = srch_str;
- temp2 = srch_str = (char *) malloc(1 + curr_line->line_length - position);
+ temp2 = srch_str = (unsigned char *) malloc(1 + curr_line->line_length - position);
if ((*point == ' ') || (*point == '\t'))
adv_word();
offset -= position;
@@ -4573,7 +4686,9 @@ Auto_Format() /* format the paragraph according to set margins */
case_sen = temp_case;
free(srch_str);
srch_str = tmp_srchstr;
- d_char = temp_d_char;
+ d_char[0] = temp_d_char[0];
+ d_char[1] = temp_d_char[1];
+ d_char[2] = temp_d_char[2];
auto_format = TRUE;
dlt_line->line_length = tmp_d_line_length;
d_line = tmp_d_line;
@@ -4607,6 +4722,8 @@ modes_op()
(emacs_keys_mode ? ON : OFF));
sprintf(modes_menu[8].item_string, "%s %d", mode_strings[8],
right_margin);
+ sprintf(modes_menu[9].item_string, "%s %s", mode_strings[9],
+ (ee_chinese ? ON : OFF));
ret_value = menu_op(modes_menu);
@@ -4628,6 +4745,15 @@ modes_op()
break;
case 5:
eightbit = !eightbit;
+ if (!eightbit)
+ ee_chinese = FALSE;
+#ifdef NCURSE
+ if (ee_chinese)
+ nc_setattrib(A_NC_BIG5);
+ else
+ nc_clearattrib(A_NC_BIG5);
+#endif /* NCURSE */
+
redraw();
wnoutrefresh(text_win);
break;
@@ -4652,6 +4778,18 @@ modes_op()
free(string);
}
break;
+ case 9:
+ ee_chinese = !ee_chinese;
+ if (ee_chinese != FALSE)
+ eightbit = TRUE;
+#ifdef NCURSE
+ if (ee_chinese)
+ nc_setattrib(A_NC_BIG5);
+ else
+ nc_clearattrib(A_NC_BIG5);
+#endif /* NCURSE */
+ redraw();
+ break;
default:
break;
}
@@ -4958,8 +5096,8 @@ strings_init()
help_text[17] = catgetlocal( 52, "line : display line # 0-9 : go to line \"#\" ");
help_text[18] = catgetlocal( 53, "expand : expand tabs noexpand: do not expand tabs ");
help_text[19] = catgetlocal( 54, " ");
- help_text[20] = catgetlocal( 55, " ee [-i] [-e] [-h] [file(s)] ");
- help_text[21] = catgetlocal( 56, " -i : no information window -e : do not expand tabs -h : no highlight ");
+ help_text[20] = catgetlocal( 55, " ee [+#] [-i] [-e] [-h] [file(s)] ");
+ help_text[21] = catgetlocal( 56, "+# :go to line # -i :no info window -e : don't expand tabs -h :no highlight");
control_keys[0] = catgetlocal( 57, "^[ (escape) menu ^e search prompt ^y delete line ^u up ^p prev page ");
control_keys[1] = catgetlocal( 58, "^a ascii code ^x search ^z undelete line ^d down ^n next page ");
control_keys[2] = catgetlocal( 59, "^b bottom of text ^g begin of line ^w delete word ^l left ");
@@ -5084,16 +5222,18 @@ strings_init()
usage4 = catgetlocal( 161, " +# put cursor at line #\n");
conf_dump_err_msg = catgetlocal( 162, "unable to open .init.ee for writing, no configuration saved!");
conf_dump_success_msg = catgetlocal( 163, "ee configuration saved in file %s");
- modes_menu[9].item_string = catgetlocal( 164, "save editor configuration");
+ modes_menu[10].item_string = catgetlocal( 164, "save editor configuration");
config_dump_menu[0].item_string = catgetlocal( 165, "save ee configuration");
config_dump_menu[1].item_string = catgetlocal( 166, "save in current directory");
config_dump_menu[2].item_string = catgetlocal( 167, "save in home directory");
conf_not_saved_msg = catgetlocal( 168, "ee configuration not saved");
ree_no_file_msg = catgetlocal( 169, "must specify a file when invoking ree");
- cancel_string = catgetlocal( 170, "press Esc to cancel");
menu_too_lrg_msg = catgetlocal( 180, "menu too large for window");
more_above_str = catgetlocal( 181, "^^more^^");
more_below_str = catgetlocal( 182, "VVmoreVV");
+ mode_strings[9] = catgetlocal( 183, "16 bit characters ");
+ chinese_cmd = catgetlocal( 184, "16BIT");
+ nochinese_cmd = catgetlocal( 185, "NO16BIT");
commands[0] = HELP;
commands[1] = WRITE;
@@ -5124,7 +5264,9 @@ strings_init()
commands[26] = "8";
commands[27] = "9";
commands[28] = CHARACTER;
- commands[29] = NULL;
+ commands[29] = chinese_cmd;
+ commands[30] = nochinese_cmd;
+ commands[31] = NULL;
init_strings[0] = CASE;
init_strings[1] = NOCASE;
init_strings[2] = EXPAND;
@@ -5144,7 +5286,9 @@ strings_init()
init_strings[16] = NOEIGHTBIT;
init_strings[17] = EMACS_string;
init_strings[18] = NOEMACS_string;
- init_strings[19] = NULL;
+ init_strings[19] = chinese_cmd;
+ init_strings[20] = nochinese_cmd;
+ init_strings[21] = NULL;
/*
| allocate space for strings here for settings menu
diff --git a/usr.bin/ee/new_curse.c b/usr.bin/ee/new_curse.c
index 0131e5e..dd033be 100644
--- a/usr.bin/ee/new_curse.c
+++ b/usr.bin/ee/new_curse.c
@@ -95,6 +95,7 @@ WINDOW *last_window_refreshed;
#endif
#define min(a, b) (a < b ? a : b)
+#define highbitset(a) ((a) & 0x80)
#ifndef CAP
#define String_Out(table, stack, place) Info_Out(table, stack, place)
@@ -514,6 +515,106 @@ struct KEY_STACK {
struct KEY_STACK *KEY_TOS = NULL;
struct KEY_STACK *KEY_POINT;
+/*
+ |
+ | Not all systems have good terminal information, so we will define
+ | keyboard information here for the most widely used terminal type,
+ | the VT100.
+ |
+ */
+
+struct KEYS vt100[] =
+ {
+ { 3, "\033[A", 0403 }, /* key up */
+ { 3, "\033[C", 0405 }, /* key right */
+ { 3, "\033[D", 0404 }, /* key left */
+
+ { 4, "\033[6~", 0522 }, /* key next page */
+ { 4, "\033[5~", 0523 }, /* key prev page */
+ { 3, "\033[[", 0550 }, /* key end */
+ { 3, "\033[@", 0406 }, /* key home */
+ { 4, "\033[2~", 0513 }, /* key insert char */
+
+ { 3, "\033[y", 0410 }, /* key F0 */
+ { 3, "\033[P", 0411 }, /* key F1 */
+ { 3, "\033[Q", 0412 }, /* key F2 */
+ { 3, "\033[R", 0413 }, /* key F3 */
+ { 3, "\033[S", 0414 }, /* key F4 */
+ { 3, "\033[t", 0415 }, /* key F5 */
+ { 3, "\033[u", 0416 }, /* key F6 */
+ { 3, "\033[v", 0417 }, /* key F7 */
+ { 3, "\033[l", 0420 }, /* key F8 */
+ { 3, "\033[w", 0421 }, /* key F9 */
+ { 3, "\033[x", 0422 }, /* key F10 */
+
+ { 5, "\033[10~", 0410 }, /* key F0 */
+ { 5, "\033[11~", 0411 }, /* key F1 */
+ { 5, "\033[12~", 0412 }, /* key F2 */
+ { 5, "\033[13~", 0413 }, /* key F3 */
+ { 5, "\033[14~", 0414 }, /* key F4 */
+ { 5, "\033[15~", 0415 }, /* key F5 */
+ { 5, "\033[17~", 0416 }, /* key F6 */
+ { 5, "\033[18~", 0417 }, /* key F7 */
+ { 5, "\033[19~", 0420 }, /* key F8 */
+ { 5, "\033[20~", 0421 }, /* key F9 */
+ { 5, "\033[21~", 0422 }, /* key F10 */
+ { 5, "\033[23~", 0423 }, /* key F11 */
+ { 5, "\033[24~", 0424 }, /* key F12 */
+ { 3, "\033[q", 0534 }, /* ka1 upper-left of keypad */
+ { 3, "\033[s", 0535 }, /* ka3 upper-right of keypad */
+ { 3, "\033[r", 0536 }, /* kb2 center of keypad */
+ { 3, "\033[p", 0537 }, /* kc1 lower-left of keypad */
+ { 3, "\033[n", 0540 }, /* kc3 lower-right of keypad */
+
+ /*
+ | The following are the same keys as above, but with
+ | a different character following the escape char.
+ */
+
+ { 3, "\033OA", 0403 }, /* key up */
+ { 3, "\033OC", 0405 }, /* key right */
+ { 3, "\033OD", 0404 }, /* key left */
+ { 3, "\033OB", 0402 }, /* key down */
+ { 4, "\033O6~", 0522 }, /* key next page */
+ { 4, "\033O5~", 0523 }, /* key prev page */
+ { 3, "\033O[", 0550 }, /* key end */
+ { 3, "\033O@", 0406 }, /* key home */
+ { 4, "\033O2~", 0513 }, /* key insert char */
+
+ { 3, "\033Oy", 0410 }, /* key F0 */
+ { 3, "\033OP", 0411 }, /* key F1 */
+ { 3, "\033OQ", 0412 }, /* key F2 */
+ { 3, "\033OR", 0413 }, /* key F3 */
+ { 3, "\033OS", 0414 }, /* key F4 */
+ { 3, "\033Ot", 0415 }, /* key F5 */
+ { 3, "\033Ou", 0416 }, /* key F6 */
+ { 3, "\033Ov", 0417 }, /* key F7 */
+ { 3, "\033Ol", 0420 }, /* key F8 */
+ { 3, "\033Ow", 0421 }, /* key F9 */
+ { 3, "\033Ox", 0422 }, /* key F10 */
+
+ { 5, "\033O10~", 0410 }, /* key F0 */
+ { 5, "\033O11~", 0411 }, /* key F1 */
+ { 5, "\033O12~", 0412 }, /* key F2 */
+ { 5, "\033O13~", 0413 }, /* key F3 */
+ { 5, "\033O14~", 0414 }, /* key F4 */
+ { 5, "\033O15~", 0415 }, /* key F5 */
+ { 5, "\033O17~", 0416 }, /* key F6 */
+ { 5, "\033O18~", 0417 }, /* key F7 */
+ { 5, "\033O19~", 0420 }, /* key F8 */
+ { 5, "\033O20~", 0421 }, /* key F9 */
+ { 5, "\033O21~", 0422 }, /* key F10 */
+ { 5, "\033O23~", 0423 }, /* key F11 */
+ { 5, "\033O24~", 0424 }, /* key F12 */
+ { 3, "\033Oq", 0534 }, /* ka1 upper-left of keypad */
+ { 3, "\033Os", 0535 }, /* ka3 upper-right of keypad */
+ { 3, "\033Or", 0536 }, /* kb2 center of keypad */
+ { 3, "\033Op", 0537 }, /* kc1 lower-left of keypad */
+ { 3, "\033On", 0540 }, /* kc3 lower-right of keypad */
+
+ { 0, "", 0 } /* end */
+ };
+
struct Parameters {
int value;
struct Parameters *next;
@@ -537,6 +638,8 @@ int Key_vals[] = {
int attributes_set[9];
+static int nc_attributes = 0; /* global attributes for new_curse to observe */
+
#ifdef SYS5
struct termio Terminal;
struct termio Saved_tty;
@@ -815,6 +918,14 @@ printf("starting initscr \n");fflush(stdout);
}
if (Fildes == -1)
{
+ TERM_PATH = "/usr/share/terminfo";
+ Data_Line_len = 23 + strlen(TERM_PATH) + strlen(TERMINAL_TYPE);
+ Term_File_name = malloc(Data_Line_len);
+ sprintf(Term_File_name, "%s/%c/%s", TERM_PATH, *TERMINAL_TYPE, TERMINAL_TYPE);
+ Fildes = open(Term_File_name, O_RDONLY);
+ }
+ if (Fildes == -1)
+ {
free(Term_File_name);
Term_File_name = NULL;
}
@@ -865,6 +976,7 @@ printf("starting initscr \n");fflush(stdout);
exit(0);
}
Key_Get();
+ keys_vt100();
LINES = Numbers[li__];
COLS = Numbers[co__];
if ((lines_string = getenv("LINES")) != NULL)
@@ -1112,6 +1224,32 @@ Key_Get() /* create linked list with all key sequences obtained from terminal d
}
}
+/*
+ | insert information about keys for a vt100 terminal
+ */
+
+void
+keys_vt100()
+{
+ int counter;
+ int Klen;
+ struct KEY_STACK *Spoint;
+
+ Spoint = KEY_TOS;
+ while (Spoint->next != NULL)
+ Spoint = Spoint->next;
+ for (counter = 0; vt100[counter].length != 0; counter++)
+ {
+ Spoint->next = (struct KEY_STACK *) malloc(sizeof(struct KEY_STACK));
+ Spoint = Spoint->next;
+ Spoint->next = NULL;
+ Spoint->element = &vt100[counter];
+ Klen = strlen(Spoint->element->string);
+ if (Klen > Max_Key_len)
+ Max_Key_len = Klen;
+ }
+}
+
#ifdef CAP
char *
String_Get(param) /* read the string */
@@ -2482,6 +2620,7 @@ int flag;
Repaint_screen = TRUE;
}
+
void
echo() /* turn on echoing */
{
@@ -2649,7 +2788,6 @@ void
endwin() /* end windows */
{
keypad(stdscr, FALSE);
- free(stdscr);
initialized = FALSE;
delwin(curscr);
delwin(virtual_scr);
@@ -3028,6 +3166,11 @@ struct _line *pointer_new, *pointer_old;
return(changed);
}
+/*
+ | Check if characters were inserted in the middle of a line, and if
+ | so, insert them.
+ */
+
int
check_insert(window, line, offset, pointer_new, pointer_old)
WINDOW *window;
@@ -3123,8 +3266,13 @@ doupdate()
char *att1, *att2;
char *c1, *c2;
+ char NC_chinese = FALSE; /* flag to indicate handling Chinese */
+
window = virtual_scr;
+ if ((nc_attributes & A_NC_BIG5) != 0)
+ NC_chinese = TRUE;
+
if (Repaint_screen)
{
if (String_table[cl__])
@@ -3184,7 +3332,7 @@ doupdate()
curr = top_of_win;
similar = 0;
/*
- | if the window has lines that are different
+ | if the window has lines that are different, check for scrolling
*/
if (diff)
{
@@ -3243,10 +3391,10 @@ doupdate()
if (String_table[cs__]) /* scrolling region */
{
list[1] = 0;
- list[0] = LINES;
+ list[0] = LINES - 1;
String_Out(String_table[cs__], list, 2);
Curr_y = Curr_x = -1;
- }
+ }
top_of_win = curscr->first_line;
curr = top_of_win;
@@ -3292,7 +3440,7 @@ doupdate()
if (String_table[cs__]) /* scrolling region */
{
list[1] = 0;
- list[0] = LINES;
+ list[0] = LINES - 1;
String_Out(String_table[cs__], list, 2);
Curr_y = Curr_x = -1;
}
@@ -3320,12 +3468,28 @@ doupdate()
}
}
+
+ /*
+ | Scrolling done, now need to insert, delete, or modify text
+ | within lines.
+ */
+
for (from_top = 0, curr = curscr->first_line; from_top < window->SR; from_top++)
curr = curr->next_screen;
top_of_win = curr;
for (from_top = 0, curr = top_of_win, virt = window->first_line; from_top < window->Num_lines; from_top++, curr = curr->next_screen, virt = virt->next_screen)
{
- if (((String_table[ic__]) || (String_table[im__])) && (String_table[dc__]) && (curr->row[0] != (char) NULL))
+
+ /*
+ | If either 'insert mode' or 'insert char' are
+ | available, enter the following 'if' statement,
+ | else, need to simply rewrite the contents of the line
+ | at the point where the contents of the line change.
+ */
+
+ if (((String_table[ic__]) || (String_table[im__])) &&
+ (String_table[dc__]) && (curr->row[0] != (char) NULL) &&
+ (!NC_chinese))
{
j = 0;
first_time = TRUE;
@@ -3412,6 +3576,14 @@ doupdate()
{
while ((c1[j] == c2[j]) && (att1[j] == att2[j]) && (j < window->Num_cols) && (c2[j] != (char) NULL))
j++;
+
+ /*
+ | if previous character is an eight bit
+ | char, start redraw from that character
+ */
+
+ if ((NC_chinese) && (highbitset(c1[j - 1])))
+ j--;
begin_old = j;
begin_new = j;
if ((j < window->Num_cols) && (c2[j] != (char) NULL))
@@ -3572,3 +3744,25 @@ int offset;
Curr_x++;
}
+/*
+ |
+ | The two routines that follow, nc_setattrib(), nc_clearattrib(), are
+ | hacks that notify new_curse to handle characters that have the high
+ | bit set as the first of two bytes of a multi-byte string.
+ |
+ */
+
+void
+nc_setattrib(flag)
+int flag;
+{
+ nc_attributes |= flag;
+}
+
+void
+nc_clearattrib(flag)
+int flag;
+{
+ nc_attributes &= ~flag;
+}
+
diff --git a/usr.bin/ee/new_curse.h b/usr.bin/ee/new_curse.h
index 86a8574..bbef585 100644
--- a/usr.bin/ee/new_curse.h
+++ b/usr.bin/ee/new_curse.h
@@ -37,6 +37,8 @@
| Copyright (c) 1986, 1987, 1988, 1991, 1995 Hugh Mahon
| All are rights reserved.
|
+ | $FreeBSD$
+ |
*/
#include <stdio.h>
@@ -142,7 +144,8 @@
#define TRUE 1
#define FALSE 0
-#define A_STANDOUT 0001 /* standout mode */
+#define A_STANDOUT 0001 /* standout mode */
+#define A_NC_BIG5 0x0100 /* Handle Chinese Big5 characters */
#define SCROLL 1 /* text has been scrolled */
#define CLEAR 2 /* window has been cleared */
#define CHANGE 3 /* window has been changed */
@@ -195,6 +198,7 @@ extern int Get_int P_((void));
extern int INFO_PARSE P_((void));
extern int AtoI P_((void));
extern void Key_Get P_((void));
+extern void keys_vt100 P_((void));
extern struct _line *Screenalloc P_((int columns));
extern WINDOW *newwin P_((int lines, int cols, int start_l, int start_c));
extern int Operation P_((int Temp_Stack[], int place));
@@ -251,5 +255,7 @@ extern void attribute_on P_((void));
extern void attribute_off P_((void));
extern void Char_out P_((int newc, int newatt, char *line, char *attrib, int offset));
+extern void nc_setattrib P_((int));
+extern void nc_clearattrib P_((int));
#undef P_
diff --git a/usr.bin/ee/nls/en_US.ISO_8859-1/ee.msg b/usr.bin/ee/nls/en_US.ISO_8859-1/ee.msg
index 1e71ddd..ccefcc4 100644
--- a/usr.bin/ee/nls/en_US.ISO_8859-1/ee.msg
+++ b/usr.bin/ee/nls/en_US.ISO_8859-1/ee.msg
@@ -5,15 +5,16 @@ $ For ee patchlevel 3
$
$ $FreeBSD$
$
+$
$set 1
$quote "
1 "modes menu"
-2 "tabs to spaces "
-3 "case sensitive search"
-4 "margins observed "
-5 "auto-paragraph format"
-6 "eightbit characters "
-7 "info window "
+2 "tabs to spaces "
+3 "case sensitive search"
+4 "margins observed "
+5 "auto-paragraph format"
+6 "eightbit characters "
+7 "info window "
8 "right margin "
9 "leave menu"
10 "save changes"
@@ -41,7 +42,7 @@ $quote "
32 "settings"
33 "search"
34 "miscellaneous"
-35 "Control keys: "
+35 "Control keys: "
36 "^a ascii code ^i tab ^r right "
37 "^b bottom of text ^j newline ^t top of text "
38 "^c command ^k delete char ^u up "
@@ -61,8 +62,8 @@ $quote "
52 "line : display line # 0-9 : go to line \"#\" "
53 "expand : expand tabs noexpand: do not expand tabs "
54 " "
-55 " ee [-i] [-e] [-h] [file(s)] "
-56 " -i : no information window -e : do not expand tabs -h : no highlight "
+55 " ee [+#] [-i] [-e] [-h] [file(s)] "
+56 "+# :go to line # -i :no info window -e : don't expand tabs -h :no highlight"
57 "^[ (escape) menu ^e search prompt ^y delete line ^u up ^p prev page "
58 "^a ascii code ^x search ^z undelete line ^d down ^n next page "
59 "^b bottom of text ^g begin of line ^w delete word ^l left "
@@ -176,7 +177,9 @@ $quote "
167 "save in home directory"
168 "ee configuration not saved"
169 "must specify a file when invoking ree"
-170 "press Esc to cancel"
180 "menu too large for window"
181 "^^more^^"
182 "VVmoreVV"
+183 "16 bit characters "
+184 "16BIT"
+185 "NO16BIT"
diff --git a/usr.bin/ee/nls/en_US.US-ASCII/ee.msg b/usr.bin/ee/nls/en_US.US-ASCII/ee.msg
index 1e71ddd..ccefcc4 100644
--- a/usr.bin/ee/nls/en_US.US-ASCII/ee.msg
+++ b/usr.bin/ee/nls/en_US.US-ASCII/ee.msg
@@ -5,15 +5,16 @@ $ For ee patchlevel 3
$
$ $FreeBSD$
$
+$
$set 1
$quote "
1 "modes menu"
-2 "tabs to spaces "
-3 "case sensitive search"
-4 "margins observed "
-5 "auto-paragraph format"
-6 "eightbit characters "
-7 "info window "
+2 "tabs to spaces "
+3 "case sensitive search"
+4 "margins observed "
+5 "auto-paragraph format"
+6 "eightbit characters "
+7 "info window "
8 "right margin "
9 "leave menu"
10 "save changes"
@@ -41,7 +42,7 @@ $quote "
32 "settings"
33 "search"
34 "miscellaneous"
-35 "Control keys: "
+35 "Control keys: "
36 "^a ascii code ^i tab ^r right "
37 "^b bottom of text ^j newline ^t top of text "
38 "^c command ^k delete char ^u up "
@@ -61,8 +62,8 @@ $quote "
52 "line : display line # 0-9 : go to line \"#\" "
53 "expand : expand tabs noexpand: do not expand tabs "
54 " "
-55 " ee [-i] [-e] [-h] [file(s)] "
-56 " -i : no information window -e : do not expand tabs -h : no highlight "
+55 " ee [+#] [-i] [-e] [-h] [file(s)] "
+56 "+# :go to line # -i :no info window -e : don't expand tabs -h :no highlight"
57 "^[ (escape) menu ^e search prompt ^y delete line ^u up ^p prev page "
58 "^a ascii code ^x search ^z undelete line ^d down ^n next page "
59 "^b bottom of text ^g begin of line ^w delete word ^l left "
@@ -176,7 +177,9 @@ $quote "
167 "save in home directory"
168 "ee configuration not saved"
169 "must specify a file when invoking ree"
-170 "press Esc to cancel"
180 "menu too large for window"
181 "^^more^^"
182 "VVmoreVV"
+183 "16 bit characters "
+184 "16BIT"
+185 "NO16BIT"
OpenPOWER on IntegriCloud