bringing ee up to date



I think that these three files bring ee up to date from 1.4.2 to 1.4.6.
--
Eitan Adler
"Security is increased by designing for the way humans actually behave."
-Jakob Nielsen
--- ee/nls/en_US.US-ASCII/ee.msg 2009-01-09 15:52:22.000000000 -0500
+++ easyedit/nls/en_US.US-ASCII/ee.msg 1996-11-29 22:24:20.000000000 -0500
@@ -3,7 +3,7 @@
$
$ For ee patchlevel 3
$
-$ $FreeBSD$
+$ $Header: /home/hugh/sources/old_ae/RCS/ee.msg,v 1.8 1996/11/30 03:23:40 hugh Exp $
$
$
$set 1
@@ -51,7 +51,7 @@
41 "^f undelete char ^n next page ^x search "
42 "^g begin of line ^o end of line ^y delete line "
43 "^h backspace ^p prev page ^z undelete line "
-44 "^[ (escape) menu ESC-Enter: exit ee "
+44 "^[ (escape) menu "
45 " "
46 "Commands: "
47 "help : get this info file : print file name "
@@ -68,7 +68,7 @@
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 "
60 "^t top of text ^o end of line ^v undelete word ^r right "
-61 "^c command ^k delete char ^f undelete char ESC-Enter: exit ee "
+61 "^c command ^k delete char ^f undelete char "
62 "help : get help info |file : print file name |line : print line # "
63 "read : read a file |char : ascii code of char |0-9 : go to line \"#\""
64 "write: write a file |case : case sensitive search |exit : leave and save "
@@ -110,7 +110,7 @@
100 " ...searching"
101 "string \"%s\" not found"
102 "search for: "
-103 "could not exec %s"
+103 "could not exec %s\n"
104 "press return to continue "
105 "press Esc to cancel"
106 "menu too large for window"
@@ -154,8 +154,8 @@
144 "NOEIGHTBIT"
145 "emacs key bindings "
146 "^a beginning of line ^i tab ^r restore word "
-147 "^b back 1 char ^j undel char ^t begin of file "
-148 "^c command ^k delete line ^u end of file "
+147 "^b back 1 char ^j undel char ^t top of text "
+148 "^c command ^k delete line ^u bottom of text "
149 "^d delete char ^l undelete line ^v next page "
150 "^e end of line ^m newline ^w delete word "
151 "^f forward 1 char ^n next line ^x search "
@@ -164,7 +164,7 @@
154 "^[ (escape) menu ^y search prompt ^k delete line ^p prev li ^g prev page"
155 "^o ascii code ^x search ^l undelete line ^n next li ^v next page"
156 "^u end of file ^a begin of line ^w delete word ^b back 1 char "
-157 "^t begin of file ^e end of line ^r restore word ^f forward 1 char "
+157 "^t top of text ^e end of line ^r restore word ^f forward 1 char "
158 "^c command ^d delete char ^j undelete char ^z next word "
159 "EMACS"
160 "NOEMACS"
Only in easyedit/: Changes
diff -u ee/ee.1 easyedit/ee.1
--- ee/ee.1 2009-01-09 15:52:22.000000000 -0500
+++ easyedit/ee.1 2001-12-15 23:49:37.000000000 -0500
@@ -1,623 +1,543 @@
.\"
-.\" $FreeBSD$
.\"
-.Dd August 30, 1995
-.Dt EE 1
-.Os
-.Sh NAME
-.Nm ee
-.Nd easy editor
-.Sh SYNOPSIS
-.Nm
-.Op Fl eih
-.Op +#
-.Op Ar
-.Nm ree
-.Op Fl eih
-.Op +#
-.Op Ar
-.Sh DESCRIPTION
-The
-.Nm
-utility
-is a simple screen oriented text editor.
-It is always in text insertion
-mode unless there is a prompt at the bottom of the terminal, or a
-menu present (in a box in the middle of the terminal).
-The
-.Nm ree
-utility is the same as
-.Nm ,
-but restricted to editing the named
+.\" To format this reference page, use the command:
+.\"
+.\" nroff -man ee.1
+.\"
+.\" $Header: /home/hugh/sources/old_ae/RCS/ee.1,v 1.22 2001/12/16 04:49:27 hugh Exp $
+.\"
+.\"
+.TH ee 1 "" "" "" ""
+.SH NAME
+ee \- easy editor
+.SH SYNOPSIS
+.nf
+ee [-e] [-i] [-h] [+#] [\fIfile\fR ...]
+ree [-e] [-i] [-h] [+#] [\fIfile\fR ...]
+.ta
+.fi
+.ad b
+.SH DESCRIPTION
+The command
+.I ee
+is a simple screen oriented text editor. It is always in text insertion
+mode unless there is a prompt at the bottom of the terminal, or a
+menu present (in a box in the middle of the terminal). The command
+.I ree
+is the same as
+.I ee,
+but restricted to editing the named
file (no file operations, or shell escapes are allowed).
-.Pp
-For
-.Nm
-to work properly, the environment variable
-.Ev TERM
-must be set to indicate the type of terminal being used.
-For
-example, for an
-.Tn HP 700/92
-terminal, the
-.Ev TERM
-variable should be set to "70092".
-See your System Administrator if
+.PP
+An editor with similar user-friendly qualities but more features is available
+and is called
+.I aee.
+.PP
+For
+.I ee
+to work properly, the environment variable
+.SM TERM
+must be set to indicate the type of terminal being used. For
+example, for an
+.SM HP 700/92
+terminal, the
+.SM TERM
+variable should be set to "70092". See your System Administrator if
you need more information.
-.Pp
-The following options are available:
-.Bl -tag -width indent
-.It Fl e
-Turn off expansion of tab character to spaces.
-.It Fl i
-Turn off display of information window at top of terminal.
-.It Fl h
-Turn off highlighting of borders of windows and menus (improves
+.\"
+.\" options
+.\"
+.SS Options
+The following options are available from the command line:
+.PP
+.TP 4
+.B -e
+Turns off expansion of tab character to spaces.
+.TP
+.B -i
+Turns off display of information window at top of terminal.
+.TP
+.B -h
+Turns off highlighting of borders of windows and menus (improves
performance on some terminals).
-.It Sy +#
-Move the cursor to line '#' at startup.
-.El
-.Ss "Control keys"
-To do anything other than insert text, the user must use the control
-keys (the
-.Li Control
-key, represented by a "^", pressed in conjunction with an
-alphabetic key, e.g., ^a) and function keys available on the keyboard
-(such as
-.Em "Next Page" ,
-.Em "Prev Page" ,
+.TP
+.B +#
+Moves the cursor to line '#' at startup.
+.br
+.\"
+.\" control keys
+.\"
+.SS "Control keys"
+To do anything other than insert text, the user must use the control
+keys (the
+.B Control
+key, represented by a "^", pressed in conjunction with an
+alphabetic key, e.g., ^a) and function keys available on the keyboard
+(such as
+.BR "Next Page" ", " "Prev Page" ,
arrow keys, etc.).
-.Pp
-Since not all terminals have function keys,
-.Nm
-has the basic cursor movement functions assigned to control keys as
-well as more intuitive keys on the keyboard when available.
-For
-instance, to move the cursor up, the user can use the up arrow key,
-or
-.Em ^u .
-.Bl -tag -width indent
-.It ^a
-Prompt for the decimal value of a character to insert.
-.It ^b
-Move to the bottom of the text.
-.It ^c
-Get the prompt for a command.
-.It ^d
-Move the cursor down.
-.It ^e
-Prompt for the string to search for.
-.It ^f
-Undelete the last deleted character.
-.It ^g
-Move to the beginning of the line.
-.It ^h
-Backspace.
-.It ^i
-Tab.
-.It ^j
-Insert a newline.
-.It ^k
-Delete the character the cursor is sitting on.
-.It ^l
-Move the cursor left.
-.It ^m
-Insert a newline.
-.It ^n
-Move to the next page.
-.It ^o
-Move to the end of the line.
-.It ^p
-Move to the previous page.
-.It ^r
-Move the cursor to the right.
-.It ^t
-Move to the top of the text.
-.It ^u
-Move the cursor up.
-.It ^v
-Undelete the last deleted word.
-.It ^w
-Delete the word beginning at the cursor position.
-.It ^x
-Search.
-.It ^y
-Delete from the cursor position to the end of line.
-.It ^z
-Undelete the last deleted line.
-.It ^[ (ESC)
-Pop up menu.
-.El
-.Ss "EMACS keys mode"
-Since many shells provide an Emacs mode (for cursor movement and other editing
-operations), some bindings that may be more useful for people familiar with
-those bindings have been provided.
-These are accessible via the
-.Em settings
-menu, or via the initialization file (see below).
-The mappings are as follows:
-.Bl -tag -width indent
-.It ^a
-Move to the beginning of the line.
-.It ^b
-Back 1 character.
-.It ^c
-Command prompt.
-.It ^d
-Delete character the cursor is sitting on.
-.It ^e
-End of line.
-.It ^f
-Forward 1 character.
-.It ^g
-Go back 1 page.
-.It ^h
-Backspace.
-.It ^i
-Tab.
-.It ^j
-Undelete last deleted character.
-.It ^k
-Delete line.
-.It ^l
-Undelete last deleted line.
-.It ^m
-Insert a newline.
-.It ^n
-Move to the next line.
-.It ^o
-Prompt for the decimal value of a character to insert.
-.It ^p
-Previous line.
-.It ^r
-Restore last deleted word.
-.It ^t
-Move to the top of the text.
-.It ^u
-Move to the bottom of the text.
-.It ^v
-Move to the next page.
-.It ^w
-Delete the word beginning at the cursor position.
-.It ^y
-Prompt for the string to search for.
-.It ^z
-Next word.
-.It ^[ (ESC)
-Pop up menu.
-.El
-.Ss "Function Keys"
-.Bl -tag -width indent
-.It Next Page
+.PP
+Since not all terminals have function keys,
+.I ee
+has the basic cursor movement functions assigned to control keys as
+well as more intuitive keys on the keyboard when available. For
+instance, to move the cursor up, the user can use the up arrow key,
+or
+.BR ^u .
+.RS 4
+.nf
+.ta 1.4i
+.sp
+^a Prompt for the decimal value of a character to insert.
+^b Move to the bottom of the text.
+^c Get the prompt for a command.
+^d Move the cursor down.
+^e Prompt for the string to search for.
+^f Undelete the last deleted character.
+^g Move to the beginning of the line.
+^h Backspace.
+^i Tab.
+^j Insert a newline.
+^k Delete the character the cursor is sitting on.
+^l Move the cursor left.
+^m Insert a newline.
+^n Move to the next page.
+^o Move to the end of the line.
+^p Move to the previous page.
+^r Move the cursor to the right.
+^t Move to the top of the text.
+^u Move the cursor up.
+^v Undelete the last deleted word.
+^w Delete the word beginning at the cursor position.
+^x Search.
+^y Delete from the cursor position to the end of line.
+^z Undelete the last deleted line.
+^[ (ESC) Pop up menu.
+.ta
+.fi
+.RE
+.sp
+.SS "EMACS keys mode"
+.PP
+Since many shells provide an Emacs mode (for cursor movement and other editing
+operations), some bindings that may be more useful for people familiar with
+those bindings have been provided. These are accessible via the
+.B settings
+menu, or via the initialization file (see below). The mappings are as follows:
+.RS
+.nf
+.ta 1.4i
+^a Move to the beginning of the line.
+^b Back 1 character.
+^c Command prompt.
+^d Delete character the cursor is sitting on.
+^e End of line.
+^f Forward 1 character.
+^g Go back 1 page.
+^h Backspace.
+^i Tab.
+^j Undelete last deleted character.
+^k Delete line.
+^l Undelete last deleted line.
+^m Insert a newline.
+^n Move to the next line.
+^o Prompt for the decimal value of a character to insert.
+^p Previous line.
+^r Restore last deleted word.
+^t Move to the top of the text.
+^u Move to the bottom of the text.
+^v Move to the next page.
+^w Delete the word beginning at the cursor position.
+^y Prompt for the string to search for.
+^z Next word.
+^[ (ESC) Pop up menu.
+.ta
+.fi
+.RE
+.sp
+.\"
+.\" function keys
+.\"
+.SS "Function Keys"
+.RS 4
+.IP "\fBNext Page\fR"
Move to the next page.
-.It Prev Page
+.IP "\fBPrev Page\fR"
Move to the previous page.
-.It Delete Char
+.IP "\fBDelete Char\fR"
Delete the character the cursor is on.
-.It Delete Line
+.IP "\fBDelete Line\fR"
Delete from the cursor to the end of line.
-.It Insert line
+.IP "\fBInsert line\fR"
Insert a newline at the cursor position.
-.It Arrow keys
+.IP "\fBArrow keys\fR"
Move the cursor in the direction indicated.
-.El
-.Ss Commands
-Some operations require more information than a single keystroke can
-provide.
-For the most basic operations, there is a menu that can be
-obtained by pressing the
-.Tn ESC
-key.
-The same operations, and more can be performed by obtaining the
+.RE
+.\"
+.\" commands
+.\"
+.SS Commands
+.PP
+Some operations require more information than a single keystroke can
+provide. For the most basic operations, there is a menu that can be
+obtained by pressing the
+.SM \fBESC\fR
+key. The same operations, and more can be performed by obtaining the
command prompt (^c) and typing in one of the commands below.
-.Bl -tag -width indent
-.It ! Ns Ar cmd
-Execute
-.Ar cmd
-in a shell.
-.It 0-9
+.RS 4
+.IP "!\fBcmd\fR"
+Execute \fBcmd\fR in a shell.
+.IP "\fB0-9\fR"
Move to the line indicated.
-.It case
+.IP "\fBcase\fR"
Make searches case sensitive.
-.It character
-Display the ASCII value of the character at the cursor.
-.It exit
+.IP "\fBcharacter\fR"
+Display the ascii value of the character at the cursor.
+.IP "\fBexit\fR"
Save the edited text, and leave the editor.
-.It expand
+.IP "\fBexpand\fR"
Expand tabs to spaces.
-.It file
+.IP "\fBfile\fR"
Print the name of the file.
-.It help
+.IP "\fBhelp\fR"
Display help screen.
-.It line
+.IP "\fBline\fR"
Display the current line number.
-.It nocase
+.IP "\fBnocase\fR
Make searches insensitive to case (the default).
-.It noexpand
-Do not expand tab to spaces when the TAB key is pressed.
-.It quit
+.IP "\fBnoexpand\fR"
+Don't expand tab to spaces when the TAB key is pressed.
+.IP "\fBquit\fR"
Leave the editor without saving changes.
-.It read Ar file
-Read the named
-.Ar file .
-.It write Ar file
-Write the text to the named
-.Ar file .
-.El
-.Ss "Menu Operations"
-Pop-up menus can be obtained by pressing the
-.Em escape
-key (or
-.Em ^[
-if no
-.Em escape
-key is present).
-When in the menu, the escape key can be
-used to leave the menu without performing any operations.
-Use the up and
-down arrow keys, or
-.Em ^u
-for moving up and
-.Em ^d
-for moving down to move to the desired items in the menu, then press
-.Em return
+.IP "\fBread\fR \fIfile\fR"
+Read the named \fIfile\fR.
+.IP "\fBwrite\fR \fIfile\fR"
+Write the text to the named \fIfile\fR.
+.RE
+.\"
+.\" menu operations
+.\"
+.SS "Menu Operations"
+.PP
+Pop-up menus can be obtained by pressing the
+.B escape
+key (or
+.B ^[
+if no
+.B escape
+key is present). When in the menu, the escape key can be
+used to leave the menu without performing any operations. Use the up and
+down arrow keys, or
+.B ^u
+for moving up and
+.B ^d
+for moving down to move to the desired items in the menu, then press
+.B return
to perform the indicated task.
-.Pp
-To the left of each menu item is a letter, which if the corresponding
+.PP
+To the left of each menu item is a letter, which if the corresponding
letter is pressed on the keyboard selects that menu entry.
-.Pp
-The main menu in
-.Nm
-is as follows:
-.Bl -tag -width indent
-.It leave editor
-If changes have been made, the user will get a menu prompting whether or
+.PP
+The main menu in \fIee\fR is as follows:
+.RS 4
+.IP "\fBleave editor\fR"
+If changes have been made, the user will get a menu prompting whether or
not the changes should be saved.
-.It help
-Display a help screen, with all of the keyboard operations and commands.
-.It file operations
-Pop up a menu for selecting whether to read a file, write to a file, or
-save the current contents of the editor, as well as send the contents of
-the editor to a print command (see the section
-.Sx "Initializing ee from a file" ) .
-.It redraw screen
-Provide a means to repaint the screen if the screen has been corrupted.
-.It settings
-Show the current values of the operating modes, and right margin.
-By
-pressing return when the cursor is on a particular item, the value can be
-changed.
-To leave this menu, press the
-.Em escape
-key.
-(See
-.Sx Modes
+.IP "\fBhelp\fR"
+Displays a help screen, with all of the keyboard operations and commands.
+.IP "\fBfile operations\fR"
+Pops up a menu for selecting whether to read a file, write to a file, or
+save the current contents of the editor, as well as send the contents of
+the editor to a print command (see the section \fBInitializing ee from a
+file\fR).
+.IP "\fBredraw screen\fR"
+Provides a means to repaint the screen if the screen has been corrupted.
+.IP "\fBsettings\fR"
+Shows the current values of the operating modes, and right margin. By
+pressing return when the cursor is on a particular item, the value can be
+changed. To leave this menu, press the \fBescape\fR key. (See \fBModes\fR
below.)
-.It search
-Pop up a menu in which the user may choose to enter a string to search
+.IP "\fBsearch\fR"
+.br
+Pops up a menu in which the user may choose to enter a string to search
for, or search for a string already entered.
-.It miscellaneous
-Pop up a menu that allows the user to format the current paragraph,
+.IP "\fBmiscellaneous\fR"
+Pops up a menu that allows the user to format the current paragraph,
execute a shell command, or check the spelling of the text in the editor.
-.El
-.Ss "Paragraph Formatting"
-Paragraphs are defined for
-.Nm
-by a block of text bounded by:
-.Bl -bullet -width indent
-.It
+.RE
+.\"
+.\" paragraph formatting
+.\"
+.SS "Paragraph Formatting"
+.PP
+Paragraphs are defined for \fIee\fR by a block of text bounded by:
+.sp
+.RS 8
+.IP \(bu
Begin or end of file.
-.It
+.IP \(bu
Line with no characters, or only spaces and/or tabs.
-.It
+.IP \(bu
Line starting with a period ('.') or right angle bracket ('>').
-.El
-.Pp
-A paragraph may be formatted two ways: explicitly by choosing the
-.Em format paragraph
-menu item, or by setting
-.Nm
-to automatically
-format paragraphs.
-The automatic mode may be set via a menu, or via the
+.RE
+.PP
+A paragraph may be formatted two ways: explicitly by choosing the
+\fBformat paragraph\fR menu item, or by setting \fIee\fR to automatically
+format paragraphs. The automatic mode may be set via a menu, or via the
initialization file.
-.Pp
-There are three states for text operation in
-.Nm :
-free-form, margins,
+.PP
+There are three states for text operation in \fIee\fR: free-form, margins,
and automatic formatting.
-.Pp
-"Free-form" is best used for things like programming.
-There are no
+.PP
+"Free-form" is best used for things like programming. There are no
restrictions on the length of lines, and no formatting takes place.
-.Pp
-"Margins" allows the user to type in text without having to worry about going
-beyond the right margin (the right margin may be set in the
-.Em settings
-menu, the default is for the margin to be the right edge of the
-terminal).
-This is the mode that allows the
-.Em format paragraph
-menu item to work.
-.Pp
-"Automatic formatting" provides word-processor-like behavior.
-The user
-may type in text, while
-.Nm
-will make sure the entire paragraph fits
-within the width of the terminal every time the user inserts a space after
-typing or deleting text.
-Margin observation must also be enabled in order for
+.PP
+"Margins" allows the user to type in text without having to worry about going
+beyond the right margin (the right margin may be set in the \fBsettings\fR
+menu, the default is for the margin to be the right edge of the
+terminal). This is the mode that allows the \fBformat paragraph\fR menu
+item to work.
+.PP
+"Automatic formatting" provides word-processor-like behavior. The user
+may type in text, while \fIee\fR will make sure the entire paragraph fits
+within the width of the terminal every time the user inserts a space after
+typing or deleting text. Margin observation must also be enabled in order for
automatic formatting to occur.
-.Ss Modes
-Although
-.Nm
-is a 'modeless' editor (it is in text insertion mode all the
-time), there are modes in some of the things it does.
-These include:
-.Bl -tag -width indent
-.It tab expansion
+.\"
+.\" modes
+.\"
+.SS Modes
+.PP
+Although ee is a 'modeless' editor (it is in text insertion mode all the
+time), there are modes in some of the things it does. These include:
+.RS 4
+.IP "\fBtab expansion\fR"
Tabs may be inserted as a single tab character, or replaced with spaces.
-.It case sensitivity
-The search operation can be sensitive to whether characters are upper- or
+.IP "\fBcase sensitivity\fR"
+The search operation can be sensitive to whether characters are upper- or
lower-case, or ignore case completely.
-.It margins observed
+.IP "\fBmargins observed\fR"
Lines can either be truncated at the right margin, or extend on forever.
-.It auto paragraph formatting
-While typing in text, the editor can try to keep it looking reasonably well
+.IP "\fBauto paragraph formatting\fR"
+While typing in text, the editor can try to keep it looking reasonably well
within the width of the screen.
-.It eightbit characters
-Toggle whether eight bit characters are displayed as their value in angle
-brackets (e.g.\& "<220>") or as a character.
-.It info window
-A window showing the keyboard operations that can be performed can be
+.IP "\fBeightbit characters\fR"
+Toggles whether eight bit characters are displayed as their value in angle
+brackets (e.g. "<220>") or as a character.
+.IP "\fBinfo window\fR"
+A window showing the keyboard operations that can be performed can be
displayed or not.
-.It emacs keys
+.IP "\fBemacs keys\fR"
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
+.IP "\f16 bit characters\fR"
+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.
+.RE
+.PP
+You may set these modes via the initialization file (see below), or with a
menu (see above).
-.Ss "Spell Checking"
-There are two ways to have the spelling in the text checked from
-.Nm .
-One is by the traditional
-.Xr spell 1
-command, the other is with the
-optional
-.Nm ispell
-command.
-.Pp
-Using
-.Nm spell ,
-the words that are not recognized will be placed at the top
-of the file.
-For the
-.Nm ispell
-option, the file is written to disk,
-then
-.Nm ispell
-run on the file, and the file read back in once
-.Nm ispell
-has completed making changes to the file.
-.Ss "Printing the contents of the editor"
-The user may select a menu item which prints the contents of the editor.
-The
-.Nm
-utility pipes the text in the editor to the command specified by the
-initialization command
-.Em printcommand
-(see the section
-.Sx Initializing ee from a file
-below).
-The default is to send the contents to
-.Xr lp 1 .
-.Pp
-Whatever the user assigns to
-.Em printcommand
-must take input from
-standard input.
-See your system administrator for more details.
-.Ss "Shell operations"
-Shell commands can be executed from within
-.Nm
-by selecting the
-.Em shell command
-item in the
-.Em miscellaneous
-menu, or by placing an exclamation mark ("!") before the command to
-execute at the
-.Em command:
-prompt.
-Additionally, the user may direct the contents of the edit buffer
-out to a shell operation (via a pipe) by using the left angle bracket
-(">"), followed by a "!" and the shell command to execute.
-The output of
-a shell operation can also be directed into the edit buffer by using a
-right angle bracket ("<") before the exclamation mark.
-These can even be
-used together to send output to a shell operation and read back the
-results into the editor.
-So, if the editor contained a list of words
-to be sorted, they could be sorted by typing the following at the command
+.\"
+.\" spell checking
+.\"
+.SS "Spell Checking"
+.PP
+There are two ways to have the spelling in the text checked from \fIee\fR.
+One is by the traditional \fIspell\fR(1) command, the other is with the
+optional \fIispell\fR(1) command.
+.PP
+Using \fIspell\fR, the words that are not recognized will be placed at the top
+of the file. For the \fIispell\fR option, the file is written to disk,
+then \fIispell\fR run on the file, and the file read back in once
+\fIispell\fR has completed making changes to the file.
+.\"
+.\" printing
+.\"
+.SS "Printing the contents of the editor"
+.PP
+The user may select a menu item which prints the contents of the editor.
+.I ee
+pipes the text in the editor to the command specified by the
+initialization command
+.B printcommand
+(see the section
+.B Initializing ee from a file
+below). The default is to send the contents to "lp".
+.PP
+Whatever the user assigns to
+.B printcommand
+must take input from
+standard input. See your system administrator for more details.
+.\"
+.\" shell operations
+.\"
+.SS "Shell operations"
+.PP
+Shell commands can be executed from within
+.I ee
+by selecting the
+.B shell command
+item in the
+.B miscellaneous
+menu, or by placing an exclamation mark ("!") before the command to
+execute at the
+.B command:
+prompt. Additionally, the user may direct the contents of the edit buffer
+out to a shell operation (via a pipe) by using the left angle bracket
+(">"), followed by a "!" and the shell command to execute. The output of
+a shell operation can also be directed into the edit buffer by using a
+right angle bracket ("<") before the exclamation mark. These can even be
+used together to send output to a shell operation and read back the
+results into the editor. So, if the editor contained a list of words
+to be sorted, they could be sorted by typing the following at the command
prompt:
-.Dl ><!sort
-This would send the contents of the editor to be piped into the
-.Xr sort 1
-utility and the result would be placed into the edit buffer at the current
-cursor location.
-The old information would have to be deleted by the user.
-.Ss "Initializing ee from a file"
-Since different users have different preferences,
-.Nm
-allows some
-slight configurability.
-There are three possible locations for an
-initialization file for
-.Nm :
-the file
-.Pa /usr/share/misc/init.ee ,
-the file
-.Pa .init.ee
-in the user's home directory, or the file
-.Pa .init.ee
-in the current directory (if different from the home
-directory).
-This allows system administrators to set some preferences for
-the users on a system-wide basis (for example, the
-.Em print
-command),
-and the user to customize settings for particular directories (like one
+.RS 4
+.sp
+><!sort
+.sp
+.RE
+This would send the contents of the editor to be piped into the
+.I sort
+utility and the result would be placed into the edit buffer at the current
+cursor location. The old information would have to be deleted by the user.
+.\"
+.\" initializing ee from a file
+.\"
+.SS "Initializing ee from a file"
+.PP
+Since different users have different preferences, \fIee\fR allows some
+slight configurability. There are three possible locations for an
+initialization file for ee: the file \fI/usr/local/lib/init.ee\fR, the
+file \fI.init.ee\fR in the user's home directory, or the file \fI.init.ee\fR
+in the current directory (if different from the home
+directory). This allows system administrators to set some preferences for
+the users on a system-wide basis (for example, the \fBprint\fR command),
+and the user to customize settings for particular directories (like one
for correspondence, and a different directory for programming).
-.Pp
-The file
-.Pa /usr/share/misc/init.ee
-is read first, then
-.Pa $HOME/.init.ee ,
-then
-.Pa .init.ee ,
-with the settings specified by the
+.PP
+The file \fI\/usr/local/lib/init.ee\fR is read first, then
+\fI$HOME/.init.ee\fR, then \fI.init.ee\fR, with the settings specified by the
most recent file read taking precedence.
-.Pp
+.PP
The following items may be entered in the initialization file:
-.Bl -tag -width indent
-.It case
-Set searches to be case sensitive.
-.It nocase
-Set searches to be insensitive to case (default).
-.It expand
-Cause
-.Nm
-to expand tabs to spaces (default).
-.It noexpand
-Cause
-.Nm
-to insert tabs as a single character.
-.It info
-A small information window is displayed at the top of the terminal
+.RS 4
+.IP \fBcase\fR
+Sets searches to be case sensitive.
+.IP \fBnocase\fR
+Sets searches to be insensitive to case (default).
+.IP \fBexpand\fR
+Causes \fIee\fR to expand tabs to spaces (default).
+.IP \fBnoexpand\fR
+Causes \fIee\fR to insert tabs as a single character.
+.IP \fBinfo\fR
+A small information window is displayed at the top of the terminal
(default).
-.It noinfo
-Turn off the display of the information window.
-.It margins
-Cause
-.Nm
-to truncate lines at the right margin when the
-cursor passes beyond the right margin as set by the user
-while text is being inserted
+.IP \fBnoinfo\fR
+Turns off the display of the information window.
+.IP \fBmargins\fR
+Causes \fIee\fR to truncate lines at the right margin when the
+cursor passes beyond the right margin as set by the user
+while text is being inserted
(default).
-.It nomargins
-Allow lines to extend beyond the right margin.
-.It autoformat
-Cause
-.Nm
-to automatically try to format the current paragraph while
+.IP \fBnomargins\fR
+Allows lines to extend beyond the right margin.
+.IP \fBautoformat\fR
+Causes \fIee\fR to automatically try to format the current paragraph while
text insertion is occurring.
-.It noautoformat
-Turn off automatic paragraph formatting (default).
-.It printcommand
-Allow the setting of the print command (default: "lp").
-.It rightmargin
-The user can select a value for the right margin (the first column on the
+.IP \fBnoautoformat\fR
+Turns off automatic paragraph formatting (default).
+.IP \fBprintcommand\fR
+Allows the setting of the print command (default: "lp").
+.IP \fBrightmargin\fR
+The user can select a value for the right margin (the first column on the
screen is zero).
-.It highlight
-Turn on highlighting of border of information window and menus (default).
-.It nohighlight
-Turn off highlighting of border of information window and menus.
-.It eightbit
-Turn on display of eight bit characters.
-.It noeightbit
-Turn off display of eight bit characters (they are displayed as their decimal
+.IP \fBhighlight\fR
+Turns on highlighting border of information window and menus (default).
+.IP \fBnohighlight\fR
+Turns off highlighting of border of information window and menus.
+.IP \fBeightbit\fR
+Turns on display of eight bit characters.
+.IP \fBnoeightbit\fR
+Turns off display of eight bit characters (they are displayed as their decimal
value inside angle brackets, e.g., "<220>").
-.It 16bit
+.IP \fB16bit\fR
Turns on handling of 16-bit characters.
-.It no16bit
+.IP \fbno16bit\fR
Turns off handling of 16-bit characters.
-.It emacs
+.IP \fBemacs\fR
Turns on emacs key bindings.
-.It noemacs
+.IP \fBnoemacs\fR
Turns off emacs key bindings.
-.El
-.Ss "Save Editor Configuration"
-When using this entry from the
-.Em settings
-menu, the user may choose to save the current configuration of
-the editor (see
-.Sx Initializing ee from a file
-above) to a file named
-.Pa .init.ee
-in the current directory or the user's home directory.
-If a file named
-.Pa .init.ee
-already exists, it will be renamed
-.Pa .init.ee.old .
-.Sh CAVEATS
-THIS MATERIAL IS PROVIDED "AS IS".
-THERE ARE
-NO WARRANTIES OF ANY KIND WITH REGARD TO THIS
-MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE.
-Neither
-Hewlett-Packard nor Hugh Mahon shall be liable
-for errors contained herein, nor for
-incidental or consequential damages in
-connection with the furnishing, performance or
-use of this material.
-Neither Hewlett-Packard
-nor Hugh Mahon assumes any responsibility for
-the use or reliability of this software or
-documentation.
-This software and
-documentation is totally UNSUPPORTED.
-There
-is no support contract available.
-Hewlett-Packard
-has done NO Quality Assurance on ANY
-of the program or documentation.
-You may find
-the quality of the materials inferior to
-supported materials.
-.Pp
-Always make a copy of files that cannot be easily reproduced before
-editing.
-Save files early, and save often.
-.Ss "International Code Set Support"
-The
-.Nm
-utility 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
+.RE
+.\"
+.\" save editor configuration
+.\"
+.SS "Save Editor Configuration"
+.PP
+When using this entry from the
+.B settings
+menu, the user may choose to save the current configuration of
+the editor (see \fBInitializing ee from a
+file\fR above) to a file named
+.I .init.ee
+in the current directory or the user's home directory. If a file named
+.I .init.ee
+already exists, it will be renamed
+.IR .init.ee.old .
+.\"
+.\" Caveats
+.\"
+.SH CAVEATS
+.PP
+THIS MATERIAL IS PROVIDED "AS IS". THERE ARE
+NO WARRANTIES OF ANY KIND WITH REGARD TO THIS
+MATERIAL, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND
+FITNESS FOR A PARTICULAR PURPOSE. Neither
+Hewlett-Packard nor Hugh Mahon shall be liable
+for errors contained herein, nor for
+incidental or consequential damages in
+connection with the furnishing, performance or
+use of this material. Neither Hewlett-Packard
+nor Hugh Mahon assumes any responsibility for
+the use or reliability of this software or
+documentation. This software and
+documentation is totally UNSUPPORTED. There
+is no support contract available. Hewlett-Packard
+has done NO Quality Assurance on ANY
+of the program or documentation. You may find
+the quality of the materials inferior to
+supported materials.
+.PP
+Always make a copy of files that cannot be easily reproduced before
+editing. Save files early, and save often.
+.SS "International Code Set Support"
+.I ee
+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
+.SH WARNINGS
+The automatic paragraph formatting operation
may be too slow for slower systems.
-.Sh FILES
-.Bl -tag -width /usr/share/misc/init.ee -compact
-.It Pa /usr/share/misc/init.ee
-.It Pa $HOME/.init.ee
-.It Pa .init.ee
-.El
-.Sh AUTHORS
-The software
-.Nm
-was developed by
-.An Hugh Mahon .
-.Pp
-This software and documentation contains
-proprietary information which is protected by
-copyright.
-All rights are reserved.
-.Pp
-Copyright (c) 1990, 1991, 1992, 1993, 1995, 1996 Hugh Mahon.
-.Sh "SEE ALSO"
-.Xr ispell 1 Pq Pa ports/textproc/ispell ,
-.Xr lpr 1 ,
-.Xr spell 1 ,
-.Xr termcap 5 ,
-.Xr terminfo 5 ,
-.Xr environ 7
+.SH FILES
+.PP
+.I /usr/local/lib/init.ee
+.br
+.I $HOME/.init.ee
+.br
+.I .init.ee
+.SH AUTHOR
+.PP
+The software
+.I ee
+was developed by Hugh Mahon.
+.PP
+This software and documentation contains
+proprietary information which is protected by
+copyright. All rights are reserved.
+.PP
+Copyright (c) 1990, 1991, 1992, 1993, 1995, 1996, 2001 Hugh Mahon.
+.SH "SEE ALSO"
+.PP
+termcap(4), terminfo(4), environ(5), spell(1), ispell(1), lp(1), aee(1)
+
diff -u ee/ee.c easyedit/ee.c
--- ee/ee.c 2009-01-09 15:52:22.000000000 -0500
+++ easyedit/ee.c 2002-09-20 20:46:16.000000000 -0400
@@ -48,11 +48,11 @@
| This software and documentation contains
| proprietary information which is protected by
| copyright. All rights are reserved.
+ |
+ | $Header: /home/hugh/sources/old_ae/RCS/ee.c,v 1.99 2001/12/24 05:43:32 hugh Exp $
+ |
*/

-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
char *ee_copyright_message =
"Copyright (c) 1986, 1990, 1991, 1992, 1993, 1994, 1995, 1996 Hugh Mahon ";

@@ -62,41 +62,45 @@
"copyright. All rights are reserved."
};

-char *version = "@(#) ee, version 1.4.1";
+#include "ee_version.h"
+
+char *version = "@(#) ee, version " EE_VERSION " $Revision: 1.99 $";

#ifdef NCURSE
#include "new_curse.h"
-#elif HAS_NCURSES
-#include <ncurses.h>
#else
#include <curses.h>
#endif

-#ifdef HAS_CTYPE
-#include <ctype.h>
-#endif
-#include <err.h>
-#include <errno.h>
-#include <fcntl.h>
-#include <paths.h>
-#include <pwd.h>
#include <signal.h>
+#include <fcntl.h>
#include <sys/types.h>
#include <sys/stat.h>
+#include <errno.h>
+#include <string.h>
+#include <pwd.h>
+
#ifdef HAS_SYS_WAIT
#include <sys/wait.h>
#endif
-#ifdef HAS_STDARG
-#include <stdarg.h>
-#endif
+
#ifdef HAS_STDLIB
#include <stdlib.h>
#endif
-#include <string.h>
+
+#ifdef HAS_STDARG
+#include <stdarg.h>
+#endif
+
#ifdef HAS_UNISTD
#include <unistd.h>
#endif

+#ifdef HAS_CTYPE
+#include <ctype.h>
+#endif
+
+
#ifndef NO_CATGETS
#include <locale.h>
#include <nl_types.h>
@@ -200,11 +204,8 @@
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 *print_command = "lp"; /* string to use for the print command */
unsigned char *start_at_line = NULL; /* move to this line at start of session*/
-const char count_text_default[] = "===============================================================================";
-int count_text_len = sizeof(count_text_default); /* length of the line above */
-char count_text[sizeof(count_text_default)]; /* buffer for current position display */
int in; /* input character */

FILE *temp_fp; /* temporary file pointer */
@@ -220,7 +221,6 @@
WINDOW *text_win;
WINDOW *help_win;
WINDOW *info_win;
-WINDOW *count_win;

#if defined(__STDC__) || defined(__cplusplus)
#define P_(s) s
@@ -300,7 +300,7 @@
int quit P_((int noverify));
void edit_abort P_((int arg));
void delete_text P_((void));
-int write_file P_((char *file_name, int warn_if_exists));
+int write_file P_((char *file_name));
int search P_((int display_message));
void search_prompt P_((void));
void del_char P_((void));
@@ -341,7 +341,6 @@
char *resolve_name P_((char *name));
int restrict_mode P_((void));
int unique_test P_((char *string, char *list[]));
-void renumber_lines P_((struct text *firstline, int startnumber));
void strings_init P_((void));

#undef P_
@@ -538,23 +537,29 @@

char *chinese_cmd, *nochinese_cmd;

+#ifndef __STDC__
+#ifndef HAS_STDLIB
+extern char *malloc();
+extern char *realloc();
+extern char *getenv();
+FILE *fopen(); /* declaration for open function */
+#endif /* HAS_STDLIB */
+#endif /* __STDC__ */

int
main(argc, argv) /* beginning of main program */
int argc;
char *argv[];
{
- /* Always read from (and write to) a terminal. */
- if (!isatty(STDIN_FILENO) || !isatty(STDOUT_FILENO)) {
- fprintf(stderr, "ee's standard input and output must be a terminal\n");
- exit(1);
- }
+ int counter;
+ pid_t parent_pid;
+
+ for (counter = 1; counter < 24; counter++)
+ signal(counter, SIG_IGN);

signal(SIGCHLD, SIG_DFL);
signal(SIGSEGV, SIG_DFL);
signal(SIGINT, edit_abort);
- signal(SIGHUP, edit_abort);
-
d_char = malloc(3); /* provide a buffer for multi-byte chars */
d_word = malloc(150);
*d_word = (char) NULL;
@@ -575,7 +580,7 @@
scr_pos =0;
scr_vert = 0;
scr_horz = 0;
- bit_bucket = fopen(_PATH_DEVNULL, "w");
+ bit_bucket = fopen("/dev/null", "w");
edit = TRUE;
gold = case_sen = FALSE;
shell_fork = TRUE;
@@ -604,26 +609,30 @@

clear_com_win = TRUE;

+ counter = 0;
+
while(edit)
{
- if (info_window)
- {
- snprintf(count_text, count_text_len, "L: %d C: %d %s", \
- curr_line->line_number, scr_horz + 1, count_text_default);
- wmove(count_win, 0, 0);
- if (!nohighlight)
- wstandout(count_win);
- wprintw(count_win, count_text);
- wstandend(count_win);
- wnoutrefresh(count_win);
- }
-
- wnoutrefresh(text_win);
- doupdate();
+ wrefresh(text_win);
in = wgetch(text_win);
if (in == -1)
- continue;
-
+ exit(0);
+ /*
+ | The above check used to work to detect if the parent
+ | process died, but now it seems we need a more
+ | sophisticated check.
+ */
+ if (counter > 50)
+ {
+ parent_pid = getppid();
+ if (parent_pid == 1)
+ edit_abort(1);
+ else
+ counter = 0;
+ }
+ else
+ counter++;
+
resize_check();

if (clear_com_win)
@@ -821,7 +830,6 @@
if (temp_buff->next_line != NULL)
temp_buff->next_line->prev_line = curr_line;
curr_line->next_line = temp_buff->next_line;
- renumber_lines(curr_line->next_line, curr_line->line_number + 1);
temp2 = temp_buff->line;
if (in == 8)
{
@@ -955,13 +963,13 @@
}
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++)
@@ -1066,8 +1074,8 @@
temp_nod->line = extra= malloc(10);
temp_nod->line_length = 1;
temp_nod->max_length = 10;
+ temp_nod->line_number = curr_line->line_number + 1;
temp_nod->next_line = curr_line->next_line;
- renumber_lines(temp_nod, curr_line->line_number + 1);
if (temp_nod->next_line != NULL)
temp_nod->next_line->prev_line = temp_nod;
temp_nod->prev_line = curr_line;
@@ -1519,10 +1527,8 @@
left(TRUE);
else if (in == KEY_RIGHT)
right(TRUE);
- else if (in == KEY_HOME)
- bol();
- else if (in == KEY_END)
- eol();
+ else if ( in == KEY_HOME)
+ top();
else if ( in == KEY_UP)
up();
else if (in == KEY_DOWN)
@@ -1688,7 +1694,7 @@
cmd_str = cmd_str2 = get_string(file_write_prompt_str, TRUE);
}
tmp_file = resolve_name(cmd_str);
- write_file(tmp_file, 1);
+ write_file(tmp_file);
if (tmp_file != cmd_str)
free(tmp_file);
}
@@ -1869,7 +1875,7 @@
esc_flag = FALSE;
in = wgetch(com_win);
if (in == -1)
- continue;
+ exit(0);
if (((in == 8) || (in == 127) || (in == KEY_BACKSPACE)) && (g_pos > 0))
{
tmp_int = g_horz;
@@ -1894,7 +1900,7 @@
esc_flag = TRUE;
in = wgetch(com_win);
if (in == -1)
- continue;
+ exit(0);
}
*nam_str = in;
g_pos++;
@@ -1968,7 +1974,7 @@
int number;
int i;
char *ptr;
- char *direction = NULL;
+ char *direction;
struct text *t_line;

ptr = cmd_str;
@@ -2039,7 +2045,7 @@
{
char *buff;
int count;
- struct files *temp_names = NULL;
+ struct files *temp_names;
char *name;
char *ptr;
int no_more_opts = FALSE;
@@ -2059,7 +2065,7 @@
input_file = FALSE;
recv_file = FALSE;
count = 1;
- while ((count < numargs) && (!no_more_opts))
+ while ((count < numargs)&& (!no_more_opts))
{
buff = arguments[count];
if (!strcmp("-i", buff))
@@ -2083,7 +2089,7 @@
fprintf(stderr, usage4);
exit(1);
}
- else if (*buff == '+')
+ else if ((*buff == '+') && (start_at_line == NULL))
{
buff++;
start_at_line = buff;
@@ -2315,8 +2321,8 @@
if (!(*append)) /* if not append to current line, insert new one */
{
tline = txtalloc(); /* allocate data structure for next line */
+ tline->line_number = curr_line->line_number + 1;
tline->next_line = curr_line->next_line;
- renumber_lines(tline, curr_line->line_number + 1);
tline->prev_line = curr_line;
curr_line->next_line = tline;
if (tline->next_line != NULL)
@@ -2395,7 +2401,7 @@
file_name = tmp_file;
}

- if (write_file(file_name, 1))
+ if (write_file(file_name))
{
text_changes = FALSE;
quit(0);
@@ -2435,7 +2441,6 @@
recv_file = TRUE;
input_file = TRUE;
check_fp();
- text_changes = FALSE;
}
return(0);
}
@@ -2472,9 +2477,8 @@
}

int
-write_file(file_name, warn_if_exists)
+write_file(file_name)
char *file_name;
-int warn_if_exists;
{
char cr;
char *tmp_point;
@@ -2484,8 +2488,7 @@
int write_flag = TRUE;

charac = lines = 0;
- if (warn_if_exists &&
- ((in_file_name == NULL) || strcmp(in_file_name, file_name)))
+ if ((in_file_name == NULL) || strcmp(in_file_name, file_name))
{
if ((temp_fp = fopen(file_name, "r")))
{
@@ -3151,8 +3154,9 @@
}
for (value = 1; value < 24; value++)
signal(value, SIG_DFL);
- execl(path, last_slash, "-c", string, (char *)NULL);
- errx(1, exec_err_msg, path);
+ execl(path, last_slash, "-c", string, NULL);
+ printf(exec_err_msg, path);
+ exit(-1);
}
else /* if the parent */
{
@@ -3195,7 +3199,7 @@
}
if (shell_fork)
{
- printf("%s", continue_msg);
+ printf(continue_msg);
fflush(stdout);
while ((in = getchar()) != '\n')
;
@@ -3255,12 +3259,9 @@
if (info_window)
{
info_type = CONTROL_KEYS;
- info_win = newwin(5, COLS, 0, 0);
+ info_win = newwin(6, COLS, 0, 0);
werase(info_win);
paint_info_win();
- count_win = newwin(1, COLS, 5, 0);
- leaveok(count_win, TRUE);
- wrefresh(count_win);
}

last_col = COLS - 1;
@@ -3285,7 +3286,6 @@
delwin(text_win);
delwin(com_win);
delwin(help_win);
- delwin(count_win);
set_up_term();
redraw();
wrefresh(text_win);
@@ -3303,7 +3303,7 @@
int counter;
int length;
int input;
- int temp = 0;
+ int temp;
int list_size;
int top_offset; /* offset from top where menu items start */
int vert_pos; /* vertical position */
@@ -3385,7 +3385,10 @@
wmove(temp_win, (counter + top_offset - off_start), 3);

wrefresh(temp_win);
- input = wgetch(temp_win);
+ in = wgetch(temp_win);
+ input = in;
+ if (input == -1)
+ exit(0);

if (((tolower(input) >= 'a') && (tolower(input) <= 'z')) ||
((input >= '0') && (input <= '9')))
@@ -3628,6 +3631,8 @@
wprintw(com_win, press_any_key_msg);
wrefresh(com_win);
counter = wgetch(com_win);
+ if (counter == -1)
+ exit(0);
werase(com_win);
wmove(com_win, 0, 0);
werase(help_win);
@@ -3655,6 +3660,11 @@
else if (info_type == COMMANDS)
waddstr(info_win, command_strings[counter]);
}
+ wmove(info_win, 5, 0);
+ if (!nohighlight)
+ wstandout(info_win);
+ waddstr(info_win, "===============================================================================");
+ wstandend(info_win);
wrefresh(info_win);
}

@@ -3688,15 +3698,12 @@
idlok(text_win, TRUE);
werase(text_win);
info_window = TRUE;
- info_win = newwin(5, COLS, 0, 0);
+ info_win = newwin(6, COLS, 0, 0);
werase(info_win);
info_type = CONTROL_KEYS;
midscreen(min(scr_vert, last_line), point);
clearok(info_win, TRUE);
paint_info_win();
- count_win = newwin(1, COLS, 5, 0);
- leaveok(count_win, TRUE);
- wrefresh(count_win);
wrefresh(text_win);
clear_com_win = TRUE;
}
@@ -3727,7 +3734,7 @@
{
string = get_string(file_write_prompt_str, TRUE);
tmp_file = resolve_name(string);
- write_file(tmp_file, 1);
+ write_file(tmp_file);
if (tmp_file != string)
free(tmp_file);
free(string);
@@ -3764,7 +3771,7 @@
string = tmp_file;
}
}
- if (write_file(string, 1))
+ if (write_file(string))
{
in_file_name = string;
text_changes = FALSE;
@@ -4073,7 +4080,7 @@
}

unsigned char *init_name[3] = {
- "/usr/share/misc/init.ee",
+ "/usr/local/lib/init.ee",
NULL,
".init.ee"
};
@@ -4090,8 +4097,6 @@
int temp_int;

string = getenv("HOME");
- if (!string)
- string = "/root"; /* Set to reasonable default so we don't crash */
str1 = home = malloc(strlen(string)+10);
strcpy(home, string);
strcat(home, "/.init.ee");
@@ -4377,25 +4382,17 @@
void
ispell_op()
{
- char template[128], *name;
+ char name[128];
char string[256];
- int fd;
+ int pid;

if (restrict_mode())
{
return;
}
- (void)sprintf(template, "/tmp/ee.XXXXXXXX");
- name = mktemp(&template[0]);
- fd = open(name, O_CREAT | O_EXCL | O_RDWR, 0600);
- if (fd < 0) {
- wmove(com_win, 0, 0);
- wprintw(com_win, create_file_fail_msg, name);
- wrefresh(com_win);
- return;
- }
- close(fd);
- if (write_file(name, 0))
+ pid = getpid();
+ sprintf(name, "/tmp/ee.%d", pid);
+ if (write_file(name))
{
sprintf(string, "ispell %s", name);
sh_command(string);
@@ -4993,19 +4990,6 @@
return(num_match);
}

-void
-renumber_lines(firstline, startnumber)
-struct text *firstline;
-int startnumber;
-{
- struct text *lineptr;
- int i;
-
- i = startnumber;
- for (lineptr = firstline; lineptr != NULL; lineptr = lineptr->next_line)
- lineptr->line_number = i++;
-}
-
#ifndef NO_CATGETS
/*
| Get the catalog entry, and if it got it from the catalog,
@@ -5046,7 +5030,7 @@

#ifndef NO_CATGETS
setlocale(LC_ALL, "");
- catalog = catopen("ee", NL_CAT_LOCALE);
+ catalog = catopen("ee", 0);
#endif /* NO_CATGETS */

modes_menu[0].item_string = catgetlocal( 1, "modes menu");
@@ -5092,7 +5076,7 @@
help_text[6] = catgetlocal( 41, "^f undelete char ^n next page ^x search ");
help_text[7] = catgetlocal( 42, "^g begin of line ^o end of line ^y delete line ");
help_text[8] = catgetlocal( 43, "^h backspace ^p prev page ^z undelete line ");
- help_text[9] = catgetlocal( 44, "^[ (escape) menu ESC-Enter: exit ee ");
+ help_text[9] = catgetlocal( 44, "^[ (escape) menu ");
help_text[10] = catgetlocal( 45, " ");
help_text[11] = catgetlocal( 46, "Commands: ");
help_text[12] = catgetlocal( 47, "help : get this info file : print file name ");
@@ -5109,7 +5093,7 @@
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 ");
control_keys[3] = catgetlocal( 60, "^t top of text ^o end of line ^v undelete word ^r right ");
- control_keys[4] = catgetlocal( 61, "^c command ^k delete char ^f undelete char ESC-Enter: exit ee ");
+ control_keys[4] = catgetlocal( 61, "^c command ^k delete char ^f undelete char ");
command_strings[0] = catgetlocal( 62, "help : get help info |file : print file name |line : print line # ");
command_strings[1] = catgetlocal( 63, "read : read a file |char : ascii code of char |0-9 : go to line \"#\"");
command_strings[2] = catgetlocal( 64, "write: write a file |case : case sensitive search |exit : leave and save ");
@@ -5151,7 +5135,7 @@
searching_msg = catgetlocal( 100, " ...searching");
str_not_found_msg = catgetlocal( 101, "string \"%s\" not found");
search_prompt_str = catgetlocal( 102, "search for: ");
- exec_err_msg = catgetlocal( 103, "could not exec %s");
+ exec_err_msg = catgetlocal( 103, "could not exec %s\n");
continue_msg = catgetlocal( 104, "press return to continue ");
menu_cancel_msg = catgetlocal( 105, "press Esc to cancel");
menu_size_err_msg = catgetlocal( 106, "menu too large for window");
@@ -5199,8 +5183,8 @@
mode_strings[7] = catgetlocal( 145, "emacs key bindings ");
emacs_help_text[0] = help_text[0];
emacs_help_text[1] = catgetlocal( 146, "^a beginning of line ^i tab ^r restore word ");
- emacs_help_text[2] = catgetlocal( 147, "^b back 1 char ^j undel char ^t begin of file ");
- emacs_help_text[3] = catgetlocal( 148, "^c command ^k delete line ^u end of file ");
+ emacs_help_text[2] = catgetlocal( 147, "^b back 1 char ^j undel char ^t top of text ");
+ emacs_help_text[3] = catgetlocal( 148, "^c command ^k delete line ^u bottom of text ");
emacs_help_text[4] = catgetlocal( 149, "^d delete char ^l undelete line ^v next page ");
emacs_help_text[5] = catgetlocal( 150, "^e end of line ^m newline ^w delete word ");
emacs_help_text[6] = catgetlocal( 151, "^f forward 1 char ^n next line ^x search ");
@@ -5219,11 +5203,11 @@
emacs_help_text[19] = help_text[19];
emacs_help_text[20] = help_text[20];
emacs_help_text[21] = help_text[21];
- emacs_control_keys[0] = catgetlocal( 154, "^[ (escape) menu ^y search prompt ^k delete line ^p prev line ^g prev page");
- emacs_control_keys[1] = catgetlocal( 155, "^o ascii code ^x search ^l undelete line ^n next line ^v next page");
- emacs_control_keys[2] = catgetlocal( 156, "^u end of file ^a begin of line ^w delete word ^b back char ^z next word");
- emacs_control_keys[3] = catgetlocal( 157, "^t begin of file ^e end of line ^r restore word ^f forward char ");
- emacs_control_keys[4] = catgetlocal( 158, "^c command ^d delete char ^j undelete char ESC-Enter: exit");
+ emacs_control_keys[0] = catgetlocal( 154, "^[ (escape) menu ^y search prompt ^k delete line ^p prev li ^g prev page");
+ emacs_control_keys[1] = catgetlocal( 155, "^o ascii code ^x search ^l undelete line ^n next li ^v next page");
+ emacs_control_keys[2] = catgetlocal( 156, "^u end of file ^a begin of line ^w delete word ^b back 1 char ");
+ emacs_control_keys[3] = catgetlocal( 157, "^t top of text ^e end of line ^r restore word ^f forward 1 char ");
+ emacs_control_keys[4] = catgetlocal( 158, "^c command ^d delete char ^j undelete char ^z next word ");
EMACS_string = catgetlocal( 159, "EMACS");
NOEMACS_string = catgetlocal( 160, "NOEMACS");
usage4 = catgetlocal( 161, " +# put cursor at line #\n");
Only in easyedit/: ee_version.h
diff -u ee/new_curse.c easyedit/new_curse.c
--- ee/new_curse.c 2009-01-09 15:52:22.000000000 -0500
+++ easyedit/new_curse.c 2002-09-20 20:48:03.000000000 -0400
@@ -37,15 +37,14 @@
| Copyright (c) 1986, 1987, 1988, 1991, 1992, 1993, 1994, 1995 Hugh Mahon
| All are rights reserved.
|
- | $Header: /home/hugh/sources/old_ae/RCS/new_curse.c,v 1.49 1998/12/21 02:25:59 hugh Exp hugh $
+ | $Header: /home/hugh/sources/old_ae/RCS/new_curse.c,v 1.54 2002/09/21 00:47:14 hugh Exp $
|
*/

char *copyright_message[] = { "Copyright (c) 1986, 1987, 1988, 1991, 1992, 1993, 1994, 1995 Hugh Mahon",
"All rights are reserved."};

-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
+char * new_curse_name= "@(#) new_curse.c $Revision: 1.54 $";

#include "new_curse.h"
#include <signal.h>
@@ -71,7 +70,11 @@
#include <stdlib.h>
#endif

+#if defined(__STDC__)
#include <stdarg.h>
+#else
+#include <varargs.h>
+#endif

#ifdef HAS_UNISTD
#include <unistd.h>
@@ -498,6 +501,10 @@
char *Strings;
#endif

+#if !defined(TERMCAP)
+#define TERMCAP "/etc/termcap"
+#endif
+
struct KEYS {
int length; /* length of string sent by key */
char *string; /* string sent by key */
@@ -655,15 +662,39 @@

static char nc_scrolling_ability = FALSE;

+char *terminfo_path[] = {
+ "/usr/lib/terminfo",
+ "/usr/share/lib/terminfo",
+ "/usr/share/terminfo",
+ NULL
+ };
+
#ifdef CAP

-int tc_Get_int(int);
-void CAP_PARSE(void);
-void Find_term(void);
+#if defined(__STDC__) || defined(__cplusplus)
+#define P_(s) s
+#else
+#define P_(s) ()
+#endif /* __STDC__ */
+
+int tc_Get_int P_((int));
+void CAP_PARSE P_((void));
+void Find_term P_((void));
+
+#undef P_

#endif /* CAP */


+#ifndef __STDC__
+#ifndef HAS_STDLIB
+extern char *fgets();
+extern char *malloc();
+extern char *getenv();
+FILE *fopen(); /* declaration for open function */
+#endif /* HAS_STDLIB */
+#endif /* __STDC__ */
+
#ifdef SIGWINCH

/*
@@ -747,6 +778,7 @@
initscr() /* initialize terminal for operations */
{
int value;
+ int counter;
char *lines_string;
char *columns_string;
#ifdef CAP
@@ -879,30 +911,26 @@
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)
+ {
+ sprintf(Term_File_name, "%s/%x/%s", TERM_PATH, *TERMINAL_TYPE, TERMINAL_TYPE);
+ Fildes = open(Term_File_name, O_RDONLY);
+ }
}
- if (Fildes == -1)
- {
- TERM_PATH = "/usr/lib/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)
- {
- TERM_PATH = "/usr/share/lib/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)
+ counter = 0;
+ while ((Fildes == -1) && (terminfo_path[counter] != NULL))
{
- TERM_PATH = "/usr/share/terminfo";
+ TERM_PATH = terminfo_path[counter];
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)
+ {
+ sprintf(Term_File_name, "%s/%x/%s", TERM_PATH, *TERMINAL_TYPE, TERMINAL_TYPE);
+ Fildes = open(Term_File_name, O_RDONLY);
+ }
+ counter++;
}
if (Fildes == -1)
{
@@ -919,15 +947,15 @@
if ((pointer = Term_File_name = getenv("TERMCAP")) != NULL)
{
if (*Term_File_name != '/')
- Term_File_name = "/etc/termcap";
+ Term_File_name = TERMCAP;
}
else
{
- Term_File_name = "/etc/termcap";
+ Term_File_name = TERMCAP;
}
if ((TFP = fopen(Term_File_name, "r")) == NULL)
{
- printf("unable to open /etc/termcap file \n");
+ printf("unable to open %s file \n", TERMCAP);
exit(0);
}
for (value = 0; value < 1024; value++)
@@ -1340,7 +1368,7 @@
char *Name;
char *Ftemp;

- Ftemp = Name = malloc(strlen(TERMINAL_TYPE + 1) + 1);
+ Ftemp = Name = malloc(strlen(TERMINAL_TYPE) + 2);
strcpy(Name, TERMINAL_TYPE);
while (*Ftemp != (char)NULL)
Ftemp++;
@@ -1425,7 +1453,6 @@
TERMINAL_TYPE = tc_;
rewind(TFP);
Find_term();
- free(tc_);
tc_ = NULL;
CAP_PARSE();
}
@@ -1480,12 +1507,17 @@
Ntemp->Attrib = FALSE;
Ntemp->first_line = temp_screen = Screenalloc(cols);
Ntemp->first_line->number = 0;
+ Ntemp->line_array = (struct _line **) malloc(LINES * sizeof(struct _line *));
+
+ Ntemp->line_array[0] = Ntemp->first_line;
+
for (i = 1; i < lines; i++)
{
temp_screen->next_screen = Screenalloc(cols);
temp_screen->next_screen->number = i;
temp_screen->next_screen->prev_screen = temp_screen;
temp_screen = temp_screen->next_screen;
+ Ntemp->line_array[i] = temp_screen;
}
Ntemp->first_line->prev_screen = NULL;
temp_screen->next_screen = NULL;
@@ -2010,16 +2042,17 @@
int j;

if (column > line->last_char)
- line->row[line->last_char] = ' ';
+ {
+ for (j = line->last_char; j < column; j++)
+ {
+ line->row[j] = ' ';
+ line->attributes[j] = (char) NULL;
+ }
+ }
line->last_char = column;
line->row[column] = (char) NULL;
line->attributes[column] = (char) NULL;
line->changed = TRUE;
- for (j = column + 1; j < cols; j++)
- {
- line->row[j] = ' ';
- line->attributes[j] = (char) NULL;
- }
}

void
@@ -2137,12 +2170,21 @@
{
for (user_col = 0, virt_col = window->SC;
(virt_col < virtual_scr->Num_cols)
- && (user_col < window->Num_cols);
+ && (user_col < user_line->last_char);
virt_col++, user_col++)
{
virtual_line->row[virt_col] = user_line->row[user_col];
virtual_line->attributes[virt_col] = user_line->attributes[user_col];
}
+ for (user_col = user_line->last_char,
+ virt_col = window->SC + user_line->last_char;
+ (virt_col < virtual_scr->Num_cols)
+ && (user_col < window->Num_cols);
+ virt_col++, user_col++)
+ {
+ virtual_line->row[virt_col] = ' ';
+ virtual_line->attributes[virt_col] = (char) NULL;
+ }
}
if (virtual_scr->Num_cols != window->Num_cols)
{
@@ -2154,11 +2196,6 @@
min(virtual_scr->Num_cols,
(user_line->last_char + window->SC));
}
- else if (virtual_line->last_char > (user_line->last_char + window->SC))
- {
- virtual_line->row[min(virtual_scr->Num_cols,
- (user_line->last_char + window->SC))] = ' ';
- }
}
else
virtual_line->last_char = user_line->last_char;
@@ -2214,7 +2251,7 @@
return(-1);
}

- return(read(STDIN_FILENO, &temp, 1)? temp : -1);
+ return(read(0, &temp, 1)? temp : -1);
}
#endif

@@ -2232,11 +2269,11 @@
if (Noblock)
in_value = ((bufp > 0) ? in_buff[--bufp] : timed_getchar());
else
- in_value = ((bufp > 0) ? in_buff[--bufp] : read(STDIN_FILENO, &temp, 1)? temp : -1);
+ in_value = ((bufp > 0) ? in_buff[--bufp] : read(0, &temp, 1)? temp : -1);
#else /* BSD_SELECT */
#ifdef SYS5
in_value = ((bufp > 0) ? in_buff[--bufp] :
- (read(STDIN_FILENO, &temp, 1)> 0) ? temp : -1);
+ (read(0, &temp, 1)> 0) ? temp : -1);
#else /* SYS5 */
if (Noblock)
{
@@ -2244,7 +2281,7 @@
old_arg = fcntl(0, F_GETFL, 0);
in_value = fcntl(0, F_SETFL, old_arg | FNDELAY);
}
- in_value = ((bufp > 0) ? in_buff[--bufp] : read(STDIN_FILENO, &temp, 1)? temp : -1);
+ in_value = ((bufp > 0) ? in_buff[--bufp] : read(0, &temp, 1)? temp : -1);
if (Noblock)
{
fcntl(0, F_SETFL, old_arg);
@@ -2379,14 +2416,13 @@
WINDOW *window;
int c;
{
- int row, column;
+ int column, j;
int shift; /* number of spaces to shift if a tab */
struct _line *tmpline;

#ifdef DIAG
/*printf("starting waddch \n");fflush(stdout);*/
#endif
- row = window->LY;
column = window->LX;
if (c == '\t')
{
@@ -2401,27 +2437,25 @@
waddch(window, ' ');
}
}
- else if ((column < window->Num_cols) && (row < window->Num_lines))
+ else if ((column < window->Num_cols) && (window->LY < window->Num_lines))
{
if ((c == '~') && (Booleans[hz__]))
c = '@';

if (( c != '\b') && (c != '\n') && (c != '\r'))
{
- row = 0;
- tmpline = window->first_line;
- while (row < window->LY)
- {
- row++;
- tmpline = tmpline->next_screen;
- }
+ tmpline = window->line_array[window->LY];
tmpline->row[column] = c;
tmpline->attributes[column] = window->Attrib;
tmpline->changed = TRUE;
if (column >= tmpline->last_char)
{
if (column > tmpline->last_char)
- tmpline->row[tmpline->last_char] = ' ';
+ for (j = tmpline->last_char; j < column; j++)
+ {
+ tmpline->row[j] = ' ';
+ tmpline->attributes[j] = (char) NULL;
+ }
tmpline->row[column + 1] = (char) NULL;
tmpline->attributes[column + 1] = (char) NULL;
tmpline->last_char = column + 1;
@@ -2495,6 +2529,13 @@
}
if (window->LY == 0)
window->first_line = tmp1;
+
+ for (row = 0, tmp1 = window->first_line;
+ row < window->Num_lines; row++)
+ {
+ window->line_array[row] = tmp1;
+ tmp1 = tmp1->next_screen;
+ }
}

void
@@ -2538,6 +2579,12 @@
else
tmp = tmpline;
tmp->next_screen = NULL;
+
+ for (row = 0, tmp = window->first_line; row < window->Num_lines; row++)
+ {
+ window->line_array[row] = tmp;
+ tmp = tmp->next_screen;
+ }
}
else
{
@@ -2648,7 +2695,7 @@
Terminal.c_lflag &= ~IEXTEN;
#endif
Terminal.c_cc[VMIN] = 1; /* minimum of one character */
- Terminal.c_cc[VTIME] = 255; /* timeout value */
+ Terminal.c_cc[VTIME] = 0; /* timeout value */
Terminal.c_cc[VINTR] = 0; /* eliminate interrupt */
value = ioctl(0, TCSETA, &Terminal); /* set characteristics */
#else
@@ -2805,15 +2852,33 @@
}
}

+#ifndef __STDC__
+void
+wprintw(va_alist)
+va_dcl
+#else /* __STDC__ */
void
wprintw(WINDOW *window, const char *format, ...)
+#endif /* __STDC__ */
{
+#ifndef __STDC__
+ WINDOW *window;
+ char *format;
+ va_list ap;
+#else
va_list ap;
+#endif
int value;
char *fpoint;
char *wtemp;

+#ifndef __STDC__
+ va_start(ap);
+ window = va_arg(ap, WINDOW *);
+ format = va_arg(ap, char *);
+#else /* __STDC__ */
va_start(ap, format);
+#endif /* __STDC__ */

fpoint = (char *) format;
while (*fpoint != (char) NULL)
@@ -2858,7 +2923,9 @@
else
waddch(window, *fpoint++);
}
+#ifdef __STDC__
va_end(ap);
+#endif /* __STDC__ */
}

void
@@ -2878,35 +2945,28 @@
struct _line *line1;
struct _line *line2;
{
- int count1, count2;
+ int count1;
int i;
char *att1, *att2;
char *c1, *c2;

+ if (line1->last_char != line2->last_char)
+ return(2);
+
c1 = line1->row;
c2 = line2->row;
att1 = line1->attributes;
att2 = line2->attributes;
- count2 = strlen(c1) + 1;
- count1 = strlen(c2) + 1;
- if (count1 > count2)
- {
- i = count2;
- count2 = count1;
- count1 = i;
- }
- if (count2 > (count1 + count1))
- return(2);
i = 0;
while ((c1[i] != (char) NULL) && (c2[i] != (char) NULL) && (c1[i] == c2[i]) && (att1[i] == att2[i]))
i++;
count1 = i + 1;
- if ((count1 == 1) && (count2 == 1))
+ if ((count1 == 1) && (c1[i] == (char) NULL) && (c2[i] == (char) NULL))
count1 = 0; /* both lines blank */
- else if (count2 == count1)
+ else if ((c1[i] == (char) NULL) && (c2[i] == (char) NULL))
count1 = -1; /* equal */
else
- count1 = count2 / count1; /* lines unequal */
+ count1 = 1; /* lines unequal */
return(count1);
}

@@ -3212,6 +3272,7 @@
int first_same;
int last_same;
int list[10];
+ int bottom;

struct _line *curr;
struct _line *virt;
@@ -3219,6 +3280,8 @@

struct _line *new;

+ struct _line *old1, *new1;
+
char *cur_lin;
char *vrt_lin;
char *cur_att;
@@ -3302,7 +3365,6 @@
(first_same > from_top) && (virtual_lines[first_same - 1]);
first_same--)
;
- count1 = first_same - 1;
for (last_same = 0;
(last_same < window->Num_lines) && (virtual_lines[last_same]== FALSE);
last_same++)
@@ -3311,7 +3373,6 @@
/* check entire lines for diffs */
{

-
if (from_top >= last_same)
{
for (last_same = from_top;
@@ -3334,39 +3395,55 @@
{
if ((Comp_line(old, virt) == -1) && (!virtual_lines[from_top]))
{
- if (String_table[cs__]) /* scrolling region */
+ /*
+ | Find the bottom of the
+ | area that should be
+ | scrolled.
+ */
+ for (bottom = tmp_ft, old1 = old,
+ new1 = virt, count1 = 0;
+ (bottom < window->Num_lines) &&
+ (Comp_line(old1, new1) <= 0);
+ bottom++, old1 = old1->next_screen,
+ new1 = new1->next_screen,
+ count1++)
+ ;
+ if (count1 > 3)
{
- list[1] = from_top;
- list[0] = min((last_same - 1), (window->Num_lines - 1));
- String_Out(String_table[cs__], list, 2);
- Curr_y = Curr_x = -1;
- }
+ if (String_table[cs__]) /* scrolling region */
+ {
+ list[1] = from_top;
+ list[0] = min((bottom - 1), (window->Num_lines - 1));
+ String_Out(String_table[cs__], list, 2);
+ Curr_y = Curr_x = -1;
+ }

- for (offset = (tmp_ft - from_top); (offset > 0); offset--)
- {
- old = Delete_line(from_top, min((last_same - 1), (window->Num_lines - 1)), window);
- diff = FALSE;
- }
+ for (offset = (tmp_ft - from_top); (offset > 0); offset--)
+ {
+ old = Delete_line(from_top, min((bottom - 1), (window->Num_lines - 1)), window);
+ diff = FALSE;
+ }

- if (String_table[cs__]) /* scrolling region */
- {
- list[1] = 0;
- list[0] = LINES - 1;
- String_Out(String_table[cs__], list, 2);
- Curr_y = Curr_x = -1;
+ if (String_table[cs__]) /* scrolling region */
+ {
+ list[1] = 0;
+ 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;
- for (offset = 0; offset < from_top; offset++)
- curr = curr->next_screen;
- for (offset = from_top, old=curr, new=virt;
- offset < window->Num_lines;
- old=old->next_screen, new=new->next_screen,
- offset++)
- {
- similar = Comp_line(old, new);
- virtual_lines[offset] = (similar > 0 ? FALSE : TRUE);
+ top_of_win = curscr->first_line;
+ curr = top_of_win;
+ for (offset = 0; offset < from_top; offset++)
+ curr = curr->next_screen;
+ for (offset = from_top, old=curr, new=virt;
+ offset < window->Num_lines;
+ old=old->next_screen, new=new->next_screen,
+ offset++)
+ {
+ similar = Comp_line(old, new);
+ virtual_lines[offset] = (similar > 0 ? FALSE : TRUE);
+ }
}
}
else
@@ -3383,39 +3460,55 @@
{
if (Comp_line(old, virt) == -1)
{
- if (String_table[cs__]) /* scrolling region */
+ /*
+ | Find the bottom of the
+ | area that should be
+ | scrolled.
+ */
+ for (bottom = from_top, old1 = old,
+ new1 = virt, count1 = 0;
+ (bottom < window->Num_lines) &&
+ (Comp_line(old1, new1) <= 0);
+ bottom++, old1 = old1->next_screen,
+ new1 = new1->next_screen,
+ count1++)
+ ;
+ if (count1 > 3)
{
- list[1] = tmp_ft;
- list[0] = min((last_same - 1), (window->Num_lines - 1));
- String_Out(String_table[cs__], list, 2);
- Curr_y = Curr_x = -1;
- }
+ if (String_table[cs__]) /* scrolling region */
+ {
+ list[1] = tmp_ft;
+ list[0] = min((bottom - 1), (window->Num_lines - 1));
+ String_Out(String_table[cs__], list, 2);
+ Curr_y = Curr_x = -1;
+ }

- for (offset = (from_top - tmp_ft); (offset > 0); offset--)
- {
- old = Insert_line(tmp_ft, min((last_same - 1), (window->Num_lines -1)), window);
- diff = FALSE;
- }
+ for (offset = (from_top - tmp_ft); (offset > 0); offset--)
+ {
+ old = Insert_line(tmp_ft, min((bottom - 1), (window->Num_lines -1)), window);
+ diff = FALSE;
+ }

- if (String_table[cs__]) /* scrolling region */
- {
- list[1] = 0;
- list[0] = LINES - 1;
- String_Out(String_table[cs__], list, 2);
- Curr_y = Curr_x = -1;
- }
+ if (String_table[cs__]) /* scrolling region */
+ {
+ list[1] = 0;
+ 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;
- for (offset = 0; offset < from_top; offset++)
- curr = curr->next_screen;
- for (offset = from_top, old=curr, new=virt;
- offset < window->Num_lines;
- old=old->next_screen, new=new->next_screen,
- offset++)
- {
- similar = Comp_line(old, new);
- virtual_lines[offset] = (similar > 0 ? FALSE : TRUE);
+ top_of_win = curscr->first_line;
+ curr = top_of_win;
+ for (offset = 0; offset < from_top; offset++)
+ curr = curr->next_screen;
+ for (offset = from_top, old=curr, new=virt;
+ offset < window->Num_lines;
+ old=old->next_screen, new=new->next_screen,
+ offset++)
+ {
+ similar = Comp_line(old, new);
+ virtual_lines[offset] = (similar > 0 ? FALSE : TRUE);
+ }
}
}
else
diff -u ee/new_curse.h easyedit/new_curse.h
--- ee/new_curse.h 2009-01-09 15:52:22.000000000 -0500
+++ easyedit/new_curse.h 1997-05-02 23:57:42.000000000 -0400
@@ -37,8 +37,6 @@
| Copyright (c) 1986, 1987, 1988, 1991, 1995 Hugh Mahon
| All are rights reserved.
|
- | $FreeBSD$
- |
*/

#include <stdio.h>
@@ -178,6 +176,7 @@
int scroll_down;
int SCROLL_CLEAR; /* indicates that window has been scrolled or cleared */
struct _line *first_line;
+ struct _line **line_array;
} WINDOW;

extern WINDOW *curscr;
@@ -185,7 +184,7 @@

extern int LINES, COLS;

-#if __STDC__ || defined(__cplusplus)
+#if defined(__STDC__) || defined(__cplusplus)
#define P_(s) s
#else
#define P_(s) ()
Common subdirectories: ee/nls and easyedit/nls
/*
| provide a version number for ee
*/

#define EE_VERSION "1.4.6"
#define DATE_STRING "$Date: 2002/09/21 00:50:54 $"
_______________________________________________
freebsd-hackers@xxxxxxxxxxx mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-hackers
To unsubscribe, send any mail to "freebsd-hackers-unsubscribe@xxxxxxxxxxx"

Relevant Pages

  • Re: Great SWT Program
    ... the keys standard with those keyboards are; ... text files in which it stores information with a text editor. ... Yours I assume includes a command name at least as long as ...
    (comp.lang.java.programmer)
  • Re: Problem setting up NFS on Ubuntu
    ... - you MUST see exactly what is there, and not what some other editor "helpfully" chooses to show or interpret. ... These usually resulted from not being sure whether it was currently waiting for a command, ... again this is just as looking at a folder window. ...
    (comp.os.linux.setup)
  • Re: Correct group for WDM development??
    ... The main edit window is in that mode, but the rest of the screen ... It will respond to command sequences and mouse ... When you return from the utility, the VS editor is still in edit ...
    (microsoft.public.development.device.drivers)
  • Re: Cant print from Editor on Mac OSX 10.4.4 using R14
    ... If you want to wait longer hit it once, wait unspecified amount of time, hit it again, wait again, and then the third time you hit it Matlab will crash. ... The strange thing is that if you type "figure" at the command prompt in the main window of Matlab and then try to print it it brings up the print window right away, which thing never happens in the Editor window. ...
    (comp.soft-sys.matlab)
  • Re: MPro/Iconclipboard conflict?
    ... PC-style Delete (ie. Delete deletes forward, Backspace ... The editor itself probably doesn't by default: ... click menu over the window, ... tick 'PC style delete keys'. ...
    (comp.sys.acorn.apps)