bringing ee up to date
Eitan Adler
eitanadlerlist at gmail.com
Fri Jan 9 13:36:34 PST 2009
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
-------------- next part --------------
--- 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"
-------------- next part --------------
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
-------------- next part --------------
/*
| provide a version number for ee
*/
#define EE_VERSION "1.4.6"
#define DATE_STRING "$Date: 2002/09/21 00:50:54 $"
More information about the freebsd-hackers
mailing list