home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Frozen Fish 1: Amiga
/
FrozenFish-Apr94.iso
/
bbs
/
alib
/
d7xx
/
d768
/
uedit.lha
/
Uedit
/
Errata
< prev
next >
Wrap
Text File
|
1992-11-22
|
64KB
|
1,605 lines
++++++++++++++++++++Uedit V3.0 Manual ERRATA++++++++++++++++++++
(((NOTE: See Miscellaneous below: Scratch buffers are buf50-59, and the
scratch numbers are n0-n19. Dedicated numbers were moved to n20-n30.)))
+++++Commands+++++
MANUAL UPDATE: The normal-Esc command (set PM terminator) was modified as
follows: If atCursor==locB, it lets you set the PM terminator character as
always. If atCursor!=locB, it moves the cursor to locB. locB is the
location marking the last scratch delete(s); this is handy because you can
move the cursor somewhere and long as you don't do a scratch delete there you
can return quickly to your former position.
MANUAL UPDATE: A new shftAlt-f Set Font command was created and added to the
Display menu.
MANUAL UPDATE: The bookmark commmands were modified so that they
accept function keys F1-F8 as well as mouse-clicks.
MANUAL UPDATE: A new apropos R-5 command was provided (written originally by
Tony Sumrall). It allows you to do an instant search that lists and
describes all commands that pertain to "scroll", for instance, or "cursor",
"undo", or "copy". The apropos command uses a Help-Key file which is created
from the Key-Help file by the MakeHelpKey program that is provided. The
source MakeHelpKey.c is also provided.
MANUAL UPDATE: A new match-braces R-4 command was provided (originally by
Tom Zartler). It matches parens or curly braces.
MANUAL UPDATE: An in-use command R-1 was provided (originally by Kurt
Wessels). It makes a table showing which keys are in use (a cmd is assigned
to them) and which are available. This is useful in deciding to which keys
you would like to assign new commands in your config.
MANUAL UPDATE: A new R-6 command swaps current file with next file.
MANUAL UPDATE: A fake scroll gadget mouse command was created which uses the
middle mouse button. It draws and uses a scroll gadget in the msg line.
MANUAL UPDATE: SC-f1 Restore Current File cmd was improved. It restores the
page, cursor, hilite, and invert locations.
MANUAL UPDATE: The f7 and shft-f7 cmds can do an incremental search.
Searching begins the instant you type an input and acts upon each new input.
It auto-switches to case-sensitivity when you type a capital letter. The up/
down arrow keys cause it to switch to searching backward or forward.
MANUAL UPDATE: An R-7 compare-buffers command put into the Buffers menu. It
compares curFile with buffer 41 from the cursor forward. Use ctl-w to swap one
of the buffers into the buf41 slot. When disagreement is found, it puts the
start-of-page of both buffers at the start of the cursor line and flash-
displays the buffers alternately 2 times. Note that when a disagreement is
found and you wish to continue comparing the buffers, put each buffer's cursor
at the beginning of text that is in agreement and resume the comparison.
MANUAL UPDATE: Fold commands were added: Set Fold (L-\), Fold (R-\), Goto
Source (A-\). Fold (R-\) includes line numbers optionally. Goto Source
takes you back to the source of any line in the fold-file. (See Folds.)
MANUAL UPDATE: Added a new Last Search (C-f9) key & menu item. It lets you
select from up to 10 previously used search strings. If search strings
aren't being stacked, it lets you turn on stacking for it.
1MANUAL UPDATE: MOUSE-BUTTON COMMANDS:
These have been modified as follows:
1) scroll-hiliting, if you double-click the mouse button & move mouse.
(This cmd was originally written by Ken Perano.)
2) auto-padding of lines with spaces if you click the mouse button
beyond end-of-line when the COLUMNAR FLAG is ON.
normal-buttonDown: This still deposits the cursor at the mouse as
always, and it scrolls the display up/down if you move the mouse
while holding down the button. But if instead you double-click the
mouse-button while holding the mouse stationary and THEN move the
mouse while holding down the button, it marks a hilite region. It
scrolls the display up/down, if you move the mouse to the bottom or
top of the window.
shftAltCtl-buttonDown: This command deposits the cursor at the mouse
arrow, but if you clicked beyond end-of-line it extends the line by
padding with spaces up to the mouse arrow. This is useful when you
want to type text some distance to the right beyond the current end
of line.
The following commands still set start/end of hilite or invert region as
before. But in addition if the COLUMNAR flag is ON, they now pad with
spaces beyond end of line:
shft-buttonDown: Set start of hilite region at the mouse. If COLUMNAR
flag is ON, pad beyond end of line with spaces, if mouse was clicked
to right of end of line.
alt-buttonDown: Set end of hilite region at the mouse. If COLUMNAR flag
is ON, pad beyond end of line with spaces, if mouse was clicked to
right of end of line.
shftCtl-buttonDown: Set start of invert region at the mouse. If
COLUMNAR flag is ON, pad beyond end of line with spaces, if mouse was
clicked to right of end of line.
altCtl-buttonDown: Set end of invert region at the mouse. If COLUMNAR
flag is ON, pad beyond end of line with spaces, if mouse was clicked
to right of end of line.
MANUAL UPDATE: userGlobalD is used as a flag to select incremental searching
using a new SA-f7 cmd. The SA-f7 cmd is also in the Settings menu.
MANUAL UPDATE: New R-8 Save Key and R-9 Restore Key commands were created
and added to the Keys menu. When you want to create a command on a key (such
as ESC) which already has a command on it, you can save the key temporarily
and restore it when you are through using the temporary command.
MANUAL UPDATE: A new friendly ctl-g Global Modes command was created and put
into the menu. It lets you set all of the global flag variables as well as
the local ones which are inherited by new buffers. Local flags already
attached to buffers are not affected. (Local buffer flags can be changed by
clicking the appropriate letter in the title bar. The new shft-f5 command
presents help, if you need it.)
2MANUAL UPDATE: A new R-0 Date-Time-Stamp command inserts a date-time stamp
at the cursor.
MANUAL UPDATE: A new ctl-gadget2 List Files cmd (submitted by Bob Jenkins)
lists all files in Uedit and lets you click the file you want to see.
MANUAL UPDATE: Two stack oriented commands were created, which allow you to
keep and use up to 10 Search strings, Replace strings, Undo buffers, copied
Columnar regions, or copied Hilite and Invert regions. R-2 shows you how
many buffers are on the stacks, how many bytes of memory are used, and lets
you turn on/off stacking for each kind of buffer. History (R-3) let you see
the contents of buffers on the stacks, make them the current buffer (such as
current search or replace string), delete individual buffers, or delete the
whole stack.
MANUAL UPDATE: A new alt-ESC Tune RGB command was written which uses the
arrow keys to tune the colors. The new alt-esc cmd is friendlier than the
old one was. You can restore the original colors before quitting, if you
wish. Also new L-esc, R-esc, and virtual-esc cmds were created, and an RGB
Colors submenu was created. The new cmds let you select from 3 sets of RGB
colors. Note that these keys can only be activated from the menu.
MANUAL UPDATE: The alt-help command to toggle curFile's colors has been
rewritten. A new version allows you to set the color usage in a more
friendly and thorough manner.
MANUAL UPDATE: The hyper text commands and their keys and menu entry were
changed considerably:
1. The Open HT (R-gadget3) and Close HT (R-gadget4) commands were
dropped. The manual's discussion of these is now obsolete. The Hyper
Text submenu was dropped. Only the entry for Hyper Text (R-gadget1) is
now in the menu.
2. Hyper Text is now opened by R-clicking a word or by R-clicking
gadget1 (which solicits a word input).
3. Config!H's hyper text commands were modified extensively to make
hyper text friendlier and nicer. Virtual keys are no longer used.
("Unused" macronum slots are used instead.)
4. The hyper text commands now expect you to have the following
directory structure:
S:Hyper/Files/HyperSample
S:Hyper/Tables/HyperSample.tbl
You can easily edit the DEFINE() near the top of Config!H to use U:
instead of S:. Also you can have any number of hyper text files and
tables in the S:Hyper subdirectory.
MANUAL UPDATE: A new Screen Size lAmiga-f2 was added to the Display menu.
It asks for the new width & height dimensions and reopens the screen using
the new dimensions. NOTE: The CL sWidth and sHeight variables don't change
when you go to/from interlace; in interlace, the actual screen height is
2*sHeight.
3 +++++Primitive Mode+++++
MANUAL UPDATE: The discussion of Primitive Mode in the manual should be
corrected as follows:
When in primitive mode, the title bar now says "ENTER" or "ESC" or "CTL-?"
where '?' is any ctrl-character (a-z) used for pmEsc. The present manual,
now incorrectly, states that the title bar is one of the following:
"Primitive Mode string input (pmESC = done)"
"Primitive Mode number input (pmESC = done)"
The manual should be corrected to say that the title bar is one of the
following:
"Primitive Mode string input (ENTER = done)"
"Primitive Mode string input (ESC = done)"
"Primitive Mode string input (CTL-w = done)" ('w' is any letter a-z)
This applies for both "string" and "number" primitive mode inputs.
MANUAL UPDATE: A new lAmiga-q command and Files menu entry switches to the
next file marked "Favorite".
MANUAL UPDATE: A new shftAltCtl-z command loads files based on a filename-
wildcard (*?) mask. SAC-z is called in the startup cmd when Uedit first
starts.
So if you run in CLI by typing "Run UE util*.?", the SAC-z command causes all
files matching the mask "util*.?" to be auto-loaded. During an edit session,
you can press SAC-z to auto-load files using a wildcard mask also.
MANUAL UPDATE: A new alt-f9 command does all-file (global) searches for the
current search string. It searches starting at the cursor in curFile and if
not found in curFile it continues to the next file, and so on. If it gets
back to curFile without succeeding in the search, a False is returned.
A new ctl-f10 cmd does a replace of the current inverted "found" region and
continues the all-file search forward as described above. A new shftAlt-f10
command does a total search-replace in ALL file buffers, starting at the
cursor in curFile, continuing the all-file search & replace until curFile is
returned to once again.
The all-file search and replace cmds were added to the Search & Replace menus.
4 +++++Miscellaneous+++++
MANUAL UPDATE: The following buffer and number assignments supercede the
ones elsewhere and in the manual:
(NOTE: The max files setting can be as high as 36 without touching any
buffers that are in use.)
buf65-99 = available for user commands
(the buf99 buffer stack is used for scratch stacking, but the variable
buf99 is not in use anywhere)
buf50-59 = used for temporary purposes in commands
buf36 = holds REXXCOMM File for Rexx interface
buf37 = copied columnar data
buf38 = directory names
buf39 = used for result of AmigaDOS commands (if result selected)
buf40 = used for AmigaDOS commands
buf41 = used in buffer swapping command, ctl-w
buf42 = holds Help, if loaded
buf43 = document names
buf44 = make-command buffer
buf45 = holds scratch deletes for Undo, keypad-0
buf46 = copied invert
buf47 = copied hilite
buf48 = replace string
buf49 = search or grep string
buf60 = names of bookmarks (see Config!H) (n94 stores bookmark #)
buf61 = Rexx msg/reply input buffer
buf62 = Rexx msg/reply output buffer
buf63 = hyper text filename
buf64 = hyper text tablename
Number variable usage in the config files is as follows:
n31-n99 = available for use commands
(the n99 number stack is used for scratch stacking, but the variable n99
is not in use anywhere)
n0-n19 = scratch variables, used everywhere for temporary purposes
n20 = delay time
n21 = arithmetic total
n22 = #cycles in cycle counter
n23 = macroNum to be run in cycle counter
n24 = split window size for hyper text
n25 = hyper word index value
n26 = used by rexx
n27 = action/result
n28 = rexx flag
n29 = rexx return code
n30 = bookmark number
MANUAL UPDATE: Clicking to go to tiny window can now be included in learned
sequences. Also you can go to tiny window during startup compiles.
5MANUAL UPDATE: When the screen is reopened after being in tiny window its
vertical coordinate is the same as before. I.e., you can slide the screen
down, go to tiny window or switch to another screen type and the reopened
screen keeps the original coordinates. To reset the screen's coords to
(0,0), move the tiny window before clicking in it.
MANUAL UPDATE: There are only 3 Uedit programs now, UE, UES, and UEP. UE
contains the spell checking functions as well as the getAddress(), peek(),
and poke() functions which used to be in UEK. UES is identical to UE now,
except it has a 4-file limit. UEP is identical to UE except it has pixel-
oriented word-wrapping.
MANUAL UPDATE: Used to be Uedit wouldn't let you quit if a window rested on
top of its screen. Somebody presented an argument in favor of letting it
quit regardless, so now it will.
MANUAL UPDATE: The title bar now has a row of status flags = "tiokrwjmcabf".
These correspond to all of the local buffer flag settings. If the letter is
capitalized, the flag is ON. The flags can be toggled ON/OFF by clicking the
appropriate letters in the title bar. The flags are as follows:
t/T = trueTabs
i/I = autoIndent
o/O = Overstrike
k/K = autobacKup
r/R = Readonly
w/W = wordWrap
j/J = rightJustify
m/M = Mapchars (map illegal characters)
c/C = Changed
a/A = userglobalA (in the std config this denotes Save On Idle)
b/B = userglobalB
f/F = Favorite
MANUAL UPDATE: A new shft-f5 Local Modes command (in the menu) displays the
description of the title bar local flags.
MANUAL UPDATE: The LOCAL & GLOBAL flags were taken out of Show Vals. All
local and global flags commands and were eliminated and removed from the
menus.
MANUAL UPDATE: If you click the "X" in the title bar while in primitive
mode, it switches the pmEsc character from "ESC" to "ENTER" or vice versa.
MANUAL UPDATE: The CB (buffer header) structure has been changed, and the
new CB structure is as follows; the new fields are marked:
6struct CB {
struct DB *Block;
struct DB *SHBlock;
struct DB *EHBlock;
struct DB *SIBlock;
struct DB *EIBlock;
struct DB *PBlock;
struct DB *EBlock;
struct DB *LABlock;
struct DB *LBBlock;
struct DB *LCBlock;
struct DB *LDBlock;
struct DB *LEBlock;
struct DB *LFBlock;
struct DB *LGBlock;
struct DB *LHBlock;
struct DB *LIBlock;
struct DB *LJBlock;
struct DB *LSPBlock;
struct DB *LSCBlock;
struct DB *MBlock;
UCHAR *Ptr;
UCHAR *SHPtr;
UCHAR *EHPtr;
UCHAR *SIPtr;
UCHAR *EIPtr;
UCHAR *PPtr;
UCHAR *EPtr;
UCHAR *LAPtr;
UCHAR *LBPtr;
UCHAR *LCPtr;
UCHAR *LDPtr;
UCHAR *LEPtr;
UCHAR *LFPtr;
UCHAR *LGPtr;
UCHAR *LHPtr;
UCHAR *LIPtr;
UCHAR *LJPtr;
UCHAR *LSPPtr;
UCHAR *LSCPtr;
UCHAR *MPtr;
struct DB *NextBlock;
short PageCol;
short BufNum;
ULONG Flags; /* used to be USHORT */
USHORT LineLength;
USHORT PageLines;
short tabTable;
short LeftMargin;
short TopMargin;
short BottomMargin;
ULONG colors; /* used to be USHORT */
long reserved1; /* new fields */
long reserved2;
UCHAR FileName[NAMELEN+3]; /* bumped upward */
};
8 +++++Config! defaults+++++
MANUAL UPDATE: The following table appears in the Config! defaults in place
of the old (<3> <1> <0> <2>) color defaults:
Colors: (values must be 0-3, corresponding to RGB color #s)
fg bg
0 normal text <1> <0>
1 cursor <1> <2>
2 hilite <1> <3>
3 cursor+hilite <3> <1>
4 inverse <0> <1>
5 cursor+inverse <2> <3>
6 hilite+inverse <3> <1>
7 cursor+hilite+inverse <0> <3>
((screen colors))
8 title bar <1> <3>
9 msg line <2> <0>
10 menus <1> <3>
11 tab ruler <1> <2>
12 requester <1> <2>
13 formfeed <1> <2>
14 spare1 <0> <1>
15 spare2 <0> <1>
MANUAL UPDATE: A new SHIFT+ALT keys array was added to the Config! defaults
just beneath the ALT keys array. Like the ALT keys array, it too can be used
for foreign letters or other special characters.
+++++Command Language+++++
MANUAL UPDATE: Startup Key and Menus (2.16) in the manual is now incorrect
and should be updated as follows:
The first time the startup cmd is run (when Uedit first starts up), EVERY
fct in startup is run.
After that if startup is run (such as to rebuild the menus after changing
fonts), any runKey() fcts in the startup cmd are NOT run. All other fcts
in startup are run, however.
Thus if there's anything in the startup cmd that you want to run ONLY
when Uedit is starting up, put it into a separate routine and call it
with runKey() in the startup cmd.
MANUAL UPDATE: The swapChar() discussion in manual Part3 should state that
swapChar() does NOT advance cursor.
MANUAL UPDATE: The discussion in manual Part 3 should be changed to reflect
the fact that Compile() and CompileDefaults() now have a buffer argument.
You can now compile a command in ANY buffer now, not just in curFile. You
can also compile the config defaults in any buffer. Modify your Config! and
Config!M files to make the following change:
old: compile & compileDefaults
new: compile(curFile) & compileDefaults(curFile)
9MANUAL UPDATE: A new getFont(name=list2,X=list10,Y=list10) CL function was
created.
MANUAL UPDATE: A new capsLock variable was added to list 10 and list 14 of
the CL. It is TRUE when CAPSLOCK is in effect on the keyboard. The capsLock
flag was added to the Show Vals list.
MANUAL UPDATE: A fullRefresh CL function was created. When a command writes
all over the window with the text() function, it needs to cause a full
refresh when it is finished. refreshDisplay merely refreshes the currently
active split window. fullRefresh refreshes all split windows.
MANUAL UPDATE: A new internal flag prevents the right mouse button from
clearing the msg line after the text() and draw() functions have been used.
MANUAL UPDATE: setFileName() now sets the CHANGED flag of the buffer.
MANUAL UPDATE: gosub label(nn) was added to the CL. It acts like a goto
label(nn), except that when you do a goto it does not do a return. With
gosub, control resumes at the next statement after the gosub, when the
subroutine returns. Subroutines are normally put at the end of the command
they are in. Up to 100 subroutines are allowed (as many as there can be
labels). You can use a subroutine anytime the routine does not need to be
callable from other commands. Thus you need not use up virtual keys for such
routines.
Example: <normal-esc:
gosub label(50)
.. more stuff here
if (gosub label(50)) putMsg("TRUE")
else putMsg("false")
return .. NEED A RETURN HERE unless you want control to fall into
.. the code below.
label(50) .. subroutine, just a demo
alertUser("SUBROUTINE")
return .. don't need this, return happens anyway at end of command
>
MANUAL UPDATE: New compareBuf(buf1=list2,buf2=list2) CL function that
compares two buffers starting from the cursor forward. It stops and leaves
the cursor at the first spot where the buffers disagree. It sets sPage at
the start of the cursor line in each buffer. It returns FALSE when
disagreement is found. It returns TRUE when EOFILE is reached in both
buffers simultaneously.
MANUAL UPDATE: A new clickTime variable was added to list 10. It contains
the time (in hundredths of a second) since the last mouse-click. The
following tests for a mouse double-click by testing to see if the mouse was
in the same spot for both clicks and the time between clicks was 0.40 sec or
less: if (eqLoc(curFile,atCursor,mouseLoc) & geNum(40,clickTime) ) ...etc
MANUAL UPDATE: New userGlobalC and userGlobalD variables were added to the
CL in lists 10 & 14. These can be used for any purpose just like userGlobalA
& userGlobalB.
10MANUAL UPDATE: The CL functions menu(), subMenu(), checkedMenu(), and
checkedSubMenu() now have an added argument (which follows the first arg).
It is ALTERNATE TEXT for the menu item when it is hilited. If there is to be
no alternate text, use "" for the argument. The other menu function args are
as before, except that the 2nd became the 3rd arg, the 3rd became the 4th,
and so on.
CONVERSION NOTE: To convert your STARTUP command for the alternate menu
text, in the startup command
search for: ",
replace with: ","",
MANUAL UPDATE: The maximum compiled command size was increased to 20480
bytes, in order to accommodate the new alternate text argument in the menu()
functions in the startup cmd.
MANUAL UPDATE: A new clearBuf(buffer=list 2) CL function was created. Its
purpose is to improve performance. FreeBuf() requires freeing the buffer and
then it is reallocated later on when needed. ClearRgn(buffer,all) is slow
when the whole buffer is cleared. Use clearBuf() when the buffer must be
cleared and is to be used again. Replace occurrences of clearRgn(buf,all) or
freeBuf(buf) with clearBuf(buf) when performance matters. (Internally,
clearRgn(buf,all) calls clearBuf(buf) because it is faster.) NOTE, however,
that there's a sound reason for freeing rather than merely clearing buffers,
at least now and then: Freeing and reallocating reduces memory fragmentation.
MANUAL UPDATE: A new define() CL function enables you to use either local or
global "defines" in commands. For local defines, which apply only to the
current command, the define() functions MUST BE AT THE START OF THE COMMAND.
You can define "scratch_buffer" to mean "buf54", by using
define(scratch_buffer,buf54), then you can use "scratch_buffer" instead of
"buf54".
To create global defines, use define() functions in a <defines: ...>
command. The defines command is allowed to contain only define() functions.
Global defines are stored in memory until you quit Uedit or compile a new
defines command. Global defines can be used in any command. For instance,
<defines: define(scratch_buffer,buf54)
define(search_buffer, buf49) >
makes "scratch_buffer" a global substitute for "buf54" and "search_buffer" a
global substitute for "buf49".
Compiling a blank <defines: > command wipes the stored global defines from
memory. For example, you can put a defines command at the start of a config
module and a blank <defines: > command at the end of the module. Then when
UE compiles the config module during a startup compile, the global defines
created at the beginning are used only in compiling that module and are wiped
from memory after the module has been compiled.
Arguments in define(arg1,arg2):
arg1 must be a contiguous "word" which may contain upper or lower case
alpha characters or the "_" underscore.
arg2 has no restrictions. arg2 continues until the closing ")" right
paren is encountered. Matching and nested parens are allowed inside
arg2, however, as are quotes, spaces, linefeeds, comments, and so on.
11NOTES:
1. The global defines are not stored in data files. The the <defines: ...>
command once compiled simply stores the definitions in memory and it stays
there until you quit Uedit or compile an empty <defines:> command.
2. Local defines are kept only while the command that contains them is being
compiled, then they are wiped from memory.
3. Defines, whether used or not, have no effect on the size or content of
compiled commands.
4. You can redefine a CL word like "char" and the compiler won't complain.
But it will not use the illegal redefinition.
Below are a <defines:...> command and a command with some define()
functions in it. Compile these, block out or add define()s to them,
and use them to figure out how to use defines in the CL:
<defines: .. these are obviously global define()s.
define(junk,inputNum)
define(stuff,setMaxfiles) .. testing
define(stuffa, putMsg)
define(junkkey, altCtl-f1)
>
<junkkey: .. uncomment the define()s below to use them as locals
.. define(junk,inputNum)
.. define(stuff, setMaxfiles) .. testing
.. define(stuffa,putMsg)
stuffa("Input max # documents allowed (1-100)")
if (junk(n54)) stuff(n54) >
<junkkey: .. check this out! It really works! (if junkkey is defined)
define(everything, putmsg("testing")>)
everything
MANUAL UPDATE: An empty literal "" is now permitted in the CL. To clear the
message line putMsg(" ") used to be used. This can still be used, but
putMsg("") is better.
MANUAL UPDATE: loadState() now compares the date of the state file (being
loaded in) with the dates of the (disk copies of the) files in the state
file. If a file on disk is NEWER than its counterpart in Uedit (which came
from the state file), it is marked READONLY in Uedit and a warning is given.
READONLY status prevents the file from being modified or saved inadvertently.
To overwrite the NEWER file on disk, you must first turn OFF the READONLY
flag by clicking the "R" status flag in the title bar. But in most cases you
will want to select Files/Open/Restore to load in the NEWER version of the
file, replacing the out-of-date copy in memory. For convenience, the Load
State command was modified to load in the newer files from disk for you, if
you wish it to.
12MANUAL UPDATE: loadState() and saveState() now can be aborted. In both
cases, when Amiga-ESC is pressed the function quits after completing the read
or write of the current buffer. Thus the validity of the state file is
preserved.
MANUAL UPDATE: fileRequest(outbuf,intext,flags) now requires a THIRD
argument, which is the Flags value that the Arp (or substitute) requester is
to use.
MANUAL UPDATE: A new stackBuf(bufnum=list 10,flag=list 10) CL fct was
created. It optionally saves work buffers on a stack, rather than freeing
them. stackBuf() applies only to WORK buffers.
If flag=N where N>0 & N<=32768, it causes the bufnum buffer to be stored on
the bufnum buffer stack, saving rather than freeing it, when you attempt to
free the buffer in some command. Up to N buffers can be stored on the stack.
Once the stack is holding N buffers, the oldest (first in) is removed before
another buffer is saved on the stack.
If flag=0, the bufnum buffer is no longer saved on the stack automatically
when it is freed.
If flag=-1, the bufnum buffer stack is cleared (all buffers on it are freed).
If flag=-2, the flag status is returned; if flag=0 is returned, it means that
buffers aren't being saved on the bufnum stack; if flag=N where N>0, it means
buffers are being saved and up to N may be saved on the stack. NOTE: use
getStackSize() in order to get the number of buffers actually present on the
bufnum stack.
NOTE: For any work buffer, buffer-saving may or may not be in effect. You
can find out its status by using flag=-2. Suppose you wish to free buf45
(FOR REAL). You don't know whether buf45 is being saved on the stack or not.
Use this procedure:
equateNum(n54,-2) .. use flag=-2 to find out the status
if (stackBuf(buf45,n54)) .. if buffer-saving is in effect
stackBuf(buf45,0) .. turn off buffer-saving temporarily
freeBuf(buf45) .. now you can free it FOR REAL, not saving it on stack
stackBuf(buf45,n54) .. restore buffer-saving status
MANUAL UPDATE: The do-loop do(...) now accepts the following arguments for
the loop variables: do (list 13, list 10, list 10)
EXAMPLE 1:
define(do_loop, do(n54,20,n88))
do_loop { putMsg("this is a test") }
EXAMPLE 2:
do (cmdMultiplier, "A", 128) putMsg("testing")
13MANUAL UPDATE: A new list 13 was created which has the following elements:
n# n[n#] pmEsc userGlobalA userGlobalB userGlobalC userGlobalD spooks
busies icons searchCaps wildCard eitherOr multiWild allBut singleWhite
multiWhite menuOffset cmdMultiplier speakAlerts speakMsgs printTabs
smartTabs customScreen useKeys prefPrint idleTime hideDisplay scrollType
trapMenus sWidth sHeight tinyPriority capsLock clickTime trueTabs
autoIndent overStrike rightJustify wordWrap mapChars userLocalA
userLocalB tabTable lineLength splitSize leftMargin topMargin
bottomMargin pageLines autoBackup inputChar macroNum
MANUAL UPDATE: tabsToSpaces(list 2) and spacesToTabs(list 2) now require a
buffer argument.
MANUAL UPDATE: An onAbort cmd can now be defined. Its macronum is 1149. It
acts as follows:
When an abort occurs, either after you press Amiga-ESC or due to another
cause such as running out of memory or loading a data file, the normal abort
cleanup-work is done and then, if an onAbort command exists, it is executed.
An onAbort cmd may free scratch buffers, reset buffer flags, and so on.
Example:
<onAbort: freeBuf(buf54) .. free this scratch buffer
downFlag(curFile,overStrike) .. turn off overstrike mode
>
MANUAL UPDATE: An onTitle cmd can now be defined. Its macronum is 1150.
When an onTitle cmd exists, clicking the title bar executes onTitle instead
of switching you to tiny window. Example:
<onTitle: toggle(toTiny) .. can still goto tiny window as always
freeBuf(buf54) .. free scratch buffer
.. do lots of other stuff, like save file changes etc
>
Rather than compiling onTitle each time you want to use it, it is convenient
simply to swap it to some unused key slot such as macroNum 1199. Example:
<normal-esc: swapKey(onTitle,1199) >
If the macroNum 1199 cmd does not exist, pressing ESC would restore the
normal click-for-tiny-window action. Pressing ESC again would reinstate the
onTitle cmd.
MANUAL UPDATE: The range of valid macroNums was extended to 1199. The
macroNums which aren't attached to key combinations (i.e., which lie above
1144) which are currently in use are:
rexxMacro 1145
idleMacro 1146
preKeyMacro 1147
startupMacro 1148
onAbort 1149
onTitle 1150
Currently macroNums 1151-1199 are available.
14MANUAL UPDATE: There is a new getRGB(reg0, reg1, reg2, reg3) CL function
which gets the current RGB color register values. All arguments are in list
10. The RGB color values are stored in each color register argument in the
rightmost 12 bits, 4 bits to each color. Example: reg0 = 0xf48, where
Red=15 (0xf), Green=4, and Blue=8.
MANUAL UPDATE: The laceColor CL function has been eliminated. Its
discussion in the manual is obsolete.
MANUAL UPDATE: getLocal() & setLocal() now handle the color argument
differently:
When the color argument is used: The buffer's local colors are now in 8
sets of 4 bits. Each 4 bits is 2 pairs of 2 bits, each with values 0-3
corresponding to the Fg and Bg colors, respectively. The sets of 4 bits
correspond (from left to right) to normal, cursor, hilite, cursor+hilite,
invert, invert+cursor, hilite+invert, and cursor+hilite+invert.
NOTE: There is an internal local-color variable that is used to set the
colors of newly created buffers. setLocal() and getLocal() do not touch
this variable. To access this color variable, you must use getColors()
or setColors() using a literal " " as the first argument.
MANUAL UPDATE: getWBColors() has been eliminated.
MANUAL UPDATE: Two new color CL functions were created:
getColors(buffer,color#,fg,bg)
setColors(buffer,color#,fg,bg)
buffer: list 2
color#, fg, bg: list 10
If a buffer argument is used and the buffer exists, the local colors
accessed will be those of the buffer. If a literal argument is used or
the buffer referenced does not exist, the internal global color variable
(which is applied to newly created buffers) is used.
fg & bg must be in the range 0-3.
color# must be in the range 0-15 or equal -1.
If color# is in the range 0-7, the local fg & bg colors corresponding
to color# are accessed.
If color# is in the range 8-15, the global fg/bg colors corresponding
to color# are accessed and the first argument (buffer or literal) is
ignored. (Only colors 0 to 7 apply to buffers.)
The fg/bg color pairs are as shown in the color table in the Config!
defaults.
If color# is -1, fg and bg are long word (32-bit) bitmasks containing
all of the local (buffer) and global (screen) colors, respectively:
The bit masks for the 3rd argument (fg), which applies to local
colors, are as follows: Each 4 bits is 2 pairs of 2 bits, each
with values 0-3 corresponding to the Fg and Bg colors,
15 respectively. The sets of 4 bits correspond (from left to right)
to normal, cursor, hilite, cursor+hilite, invert, invert+cursor,
hilite+invert, and cursor+hilite+invert.
The bit masks for the 4th argument (bg), which applies to the
global (screen) colors, are as follows: Again, each 4 bits is 2
pairs of 2 bits, each with values 0-3 corresponding to Fg and Bg
colors, respectively. The sets of 4 bits correspond (from left
to right) to title bar, msg line, menus, tab ruler, requester,
formfeed, spare1, and spare2.
(WARNING: If color# is -1 with setColors(), no check is made of
the bitmasks in either the 3rd or 4th arguments. It is possible
to send invalid colors which render text invisible.
MANUAL UPDATE: TEXT() and DRAW():
The color values used with your existing text() and draw() function calls can
now have values ranging from 0 to 15. Also you may wish to take advantage of
the increased flexibility available with the new color handling. Note that
there are 2 spare colors in the color table in the config defaults; colors 14
& 15 can also be used with text() and draw().
MANUAL UPDATE: There is a new xor(result=list10, A=list10, B=list10) CL
function which computes result = A xor B. xor() returns FALSE, if the result
is 0; otherwise it returns TRUE.
MANUAL UPDATE: MENUWIDTH: The max menuwidth value is 17 as before, however
the menus are drawn without the space for the check-box at the left. This
makes them narrower and better looking. But if a menu item is CHECKABLE, in
the checkedMenu() or checkedSUBMenu() function you should start its text TWO
SPACES to the right, leaving room for its checkmark.
MANUAL UPDATE: FOLDS: A folding feature has been added. To fold a file
means to "hide" detail, creating a sort of outline consisting only of the
desired text lines, such as headings (in documents) or function names (in
program modules).
Three new CL functions were created for folding. setFold() sets up the
testing steps that control folding. getFold() examines the current steps.
fold() carries out the folding: It reads an input buffer and puts the text
lines that pass folding tests into an output buffer.
The testing steps are numbered 1 to 16. Each step that exists specifies a
test number in the range 1 to 15. The test number indicates which test
fold() is to use. (See setFold().) Each testing step also specifies an X
value (string or indent or line length) and an SKA value. The test number
determines whether X must be an integer or string. SKA means SKIP/KEEP/AND -
SKA is used only if the current test succeeds. SKIP means to skip the line.
KEEP means to keep the line. AND means to AND the current testing step with
the next one.
OR: The testing steps are performed starting with step 1. The serial order
is like ORing the sequence of tests. If SKA=0 or 1 and the current test
succeeds, the line is skipped or kept according to the SKA value. No other
tests are tried on that particular line of text. If the current test fails,
the next testing step is tried. This is OR behavior.
16AND: If SKA=2, the current step is ANDed with the next testing step. If the
current test fails, the next step and all subsequent ones that were ANDed
with the current step are bypassed. If the current test succeeds, the next
test is performed; and if it also succeeds, then its own SKA value dictates
that action to be taken (skip or keep the line, or AND with the next step).
Order of tests: The order in which the tests are performed is critical.
When the folded file does not look as you had hoped, press rAmiga-\ and look
at the current testing steps. Try these questions:
1) Should test X come AFTER test Y instead of before it?
2) Is a test KEEPing lines before a later test has a chance to SKIP them?
3) Should a test be redefined to KEEP instead of SKIP or vice versa?
4) Does at least one test use KEEP? (If not, no lines are kept.)
5) Is the last test a SKIP or AND? (If so, it achieves nothing.)
Folding currently cannot look for multi-line regions enclosed in 2-character
brackets, such as the comment brackets of the C ("/*" and "*/") or Pascal
programming languages. However, using parens "//" will work in C program
modules, if "/" is not used anywhere except in comment brackets. (See tests
14 and 15 in setFold().)
fold(toBuf,fromBuf,R)
toBuf: list 0 (buffer or literal)
fromBuf: list 2 (buffer)
R: list 12 (region)
fold() folds region R of buffer fromBuf into buffer toBuf using the (up to
16) line folding tests defined earlier with setFold(). If toBuf already
exists, it is erased before being used. If tobuf is a literal (such as ""),
a new file buffer is created. fromBuf's tab table is used in interpreting
TABs in it, and toBuf is assigned the same tab table. The lines of text in
fromBuf's region R which pass the tests set up with setFold() are copied into
toBuf; if a line's length exceeds 130 columns, only the first 130 columns are
copied. fold() returns FALSE, if no folding tests have been defined with
setFold() or if fromBuf or region R doesn't exist. (See setFold().)
getFold(T,F,X,B,SKA)
T,F,SKA: list 10 (integer)
X: list 10 (integer variable or buffer)
B: list 2 (buffer)
Successive calls to getFold(), using T values from 1 to 16, fetch the testing
steps that were set up with setFold() for the use of the fold() function. If
T=0, the maximum step number in use is returned in T, and the other arguments
are ignored. If T is between 1 and 16 (or the maximum step number in use),
the values used in step T are put into F, X, B, and SKA. The test number is
put into F. F is set to 0 and getFold() returns FALSE, if step T is not in
use. (See setFold() and the list of tests F.) If F<=7, the integer value
associated with test F (an indentation or line length) is put into X, and B
17is ignored (it can be a literal ""). If F>=8, the 1 to 4 character string
associated with test F is put into buffer B; if F>=8, FALSE is returned if B
is not a buffer.
setFold(T,F,X,SKA)
T,F,X,SKA: list 10 (integer or text)
Successive calls to setFold() define the testing steps that will be used in
folding a buffer or region using fold(). T is a step number in the range 1
to 16. The testing steps T are applied by fold() beginning with T=1. Gaps
are allowed in the T values; empty T slots are ignored by fold(). Any
existing step T can be overwritten by calling setFold() again, using the same
T.
If setFold() is called with T=0, all testing steps are deleted; and then two
default steps (for T=1 and T=2) are defined, just as if you had called
setFold() as follows:
setFold(1,1,0,1) (keep blank lines - it keeps only 1 per series)
setFold(2,2,0,1) (keep lines with no indentation)
F specifies the test to apply in step T. (See the list of F tests below.)
If F=0, step T is deleted. (To eliminate the above two default steps, call
setFold(1,0,0,0) and setFold(2,0,0,0).)
X and SKA (Skip/Keep/AND) are used with test F. If F<=7, X is must be an
integer (indentation or line length) with a value between 1 and 130. If F>=8
X must be a text string (of 1, 2, or 4 characters) in a buffer or literal
argument. If X is to be used as a range of characters (such as "AZ" or "09")
or a set of brackets or quotes (such as "[]" or "\"\"") it must contain at
least 2 characters (only the first 2 are used). If X is to be used as a text
string (not as a character range or set of brackets), it may contain 1 to 4
characters. setFold() returns FALSE, if X is invalid.
fold() scans its input buffer line-by-line, applying to each line the tests
that were set up with setFold(), starting with test T=1. fold() does not
keep a line (put it into the output buffer), unless a test succeeds on that
line of text.
When a test succeeds, SKA specifies the action to be taken:
If SKA = 0, the line is skipped.
If SKA = 1, the line is kept (put into the output buffer).
If SKA = 2, the current test is ANDed with the next one; the SKA of the
next test dictates what to do after that - assuming that the next test
also succeeds; if any ANDed test fails, all tests ANDed with it are
ignored.
NOTE: Test F=15 may involve multi-lines of text. If you want to AND a test
15 with other test(s), make sure that test 15 is the last in ANDed the series.
Blank lines: If F=1 and SKA=1, this specifies that blank lines be kept. If
several blank lines are in series, fold() only keeps the first.
18Folding tests (F):
0 erase test F, if it exists (X and SKA ignored)
1 blank line (X ignored)
2 indentation = X
3 indentation < X
4 indentation > X
5 line-length = X
6 line-length < X
7 line-length > X
8 1-4 character string X (eg, "x" or "abcd") is in the line
9 1-4 character string X is at start-of-line
10 1-4 character string X is at end-of-line
11 character in range X (eg, "AZ" or "09") is in the line
12 character in range X is at start-of-line
13 character in range X is at end-of-line
14 rgn bounded by quotes or brackets in X (eg, "\"\"" or "[]") is in line
15 rgn bounded by quotes or brackets in X may be in multi-lines
Example commands using setFold() and fold():
Set up folding tests
<lAmiga-\:
setFold(0,0,0,0)
setFold(1,1,0,1) .. include blank lines (it keeps only 1 per series)
setFold(2,15,"{}",0) .. skip function code inside {}
..setFold(3,15,"//",1) .. keep comments bracketed by //
..setFold(4,9,"#",1) .. keep lines beginning with #
setFold(5,2,0,1) .. keep lines with no indentation
>
Fold current file
<rAmiga-\:
getFileName(buf54,curFile)
insertRgn(buf54,eFile,".fold",all)
if (fold("",curFile,all)) {
setFileName(curFile,buf54)
downFlag(curFile,changed)
}
>
++++++++++++++++++++Uedit V2.6 Manual ERRATA++++++++++++++++++++
+++++Commands+++++
Certain keys could not be input and had to be moved because the Amiga uses
them. The LEFT Amiga mouse & gadget keys for Hyper Text were moved to RIGHT
Amiga. Set Left Margin was moved from lAmiga-m to lAmiga-k. The keys
changed were:
lAmiga-gadget1 --> rAmiga-gadget1
lAmiga-gadget3 --> rAmiga-gadget3
lAmiga-gadget4 --> rAmiga-gadget4
lAmiga-buttonDown --> rAmiga-buttonDown
lAmiga-m --> lAmiga-k
19Bookmarks: The bookmark commands were improved. Bookmarks are now named.
The alt-gadget3 Clear Marks command was moved to shft-gadget4 and put into
the Bookmarks submenu, and the 4th gadget name was changed to "Up/Init Marks".
Now the shift-gadgets let you click on a mark-name, goto next mark, set a
mark and name it, or reset the marks. When you reset the marks they are set
by default to sFile, eFile, sHilite, eHilite, sInvert, eInvert, locA, and
locB, and they are named "S file", "E file", and so on accordingly.
buf60 is now used for storing bookmark names.
+++++Miscellaneous+++++
MANUAL UPDATE: The manual says that the font is determined by Workbench.
This is no longer true. The font is set initially by the Config! file
defaults. It can be changed anytime by selecting Set Font.
MANUAL UPDATE: In the manual page 8 where it says to slide the screen by
putting the mouse at the far right, this is no longer true. Instead you
should put the mouse at the very top of the screen to slide the screen.
MANUAL UPDATE: Uedit now processes work in tiny window. Just start a
process, click the title bar and switch immediately to tiny window. If a
requester requires an input, Uedit returns to its big screen. If a primitive
mode input is required, Uedit waits until you return to big screen and give
the input. Recall that you can set the priority of Uedit separately in big
screen and tiny window now also; thus you can start a big process and go to
tiny window and let Uedit finish the process using a lower (tiny window) task
priority, if you wish.
+++++Config! defaults+++++
MANUAL UPDATE: Added: New font name & height defaults in Config!
<topaz> Font name
<8> Font pixel height (8-32)
+++++Command Language+++++
MANUAL UPDATE: Added: Key names for middle mouse button:
middleDown macnum = 73
middleUp macnum = 75
Example: <normal-middleDown:
runKey(normal-buttonDown) .. deposit cursor
runKey(ctl-r) .. execute learned sequence
>
MANUAL UPDATE: Added: New setFont(fontName,fontHeight) CL fct for selecting
font.
setFont(fontname,fontheight)
fontname: list 0
fontheight: list 10
returns eRUE if fontname exists with font size equal to fontheight. The
font may be in memory or on disk; if font isn't in memory it is loaded
from disk. When a new font is selected or when Uedit quits, the current
font is released.
20
setFont() does not change the font immediately or visibly. It merely
changes the stored font name and height. Next time Uedit's screen is
reopened - as when changing screens or returning from tiny window - the
new font is used. If the font cannot be found, topaz 8 is used by
default.
EXAMPLE command that switches Uedit's font. Notice that it goes to/from
tiny window in order to close/reopen the screen; and it runs startup cmd
so that menu item spacings will be recomputed for the new font:
<normal-esc:
setfont("topaz",11) toggle(toTiny) toggle(toTiny) runkey(startup) >
NOTE: Now you can use a proportional font in your Workbench 2.0 and a
non-proportional font in Uedit.
MANUAL UPDATE: tinyPriority CL argument and Config! default. This sets the
task priority of Uedit while in tiny window. Uedit does housekeeping in tiny
window and on large buffers this may consume resource, so you may wish to set
Uedit to a low priority in tiny window to keep it from hogging machine
resource during housekeeping or whatever work is being done in tiny window.
MANUAL UPDATE: Added: setTaskPri() CL function to set Uedit's task priority.
setTaskPri(pri)
pri: list 10
This sets Uedit's task priority when it is not in tiny window. The
tinyPriority CL variable and Config! default sets its priority when it is
in tiny window.
MANUAL UPDATE: Dynamic use of Dictionary Supplement during spell checking.
You now can have an optional UDSupplement in buf41 for the spell checking
cmds. (See the rAmgia-c cmd in Config!S.) When the word isn't found in the
main dictionary, spell() looks in the supplement. The supplement must be in
alpha order; you can use SA-s to sort a stacked list of words to make a
dictionary supplement.
spell(B1,B2,B3)
B1,B3: list 0 (buffer or " ")
B2: list 2 (buffer)
The normal return for spell() is False; this indicates a bad word was found.
It also returns False if B2, the buffer being spell checked, does not exist
or if the speller is not up. If spell() returns True, it has reached eof.
It checks from the cursor forward in B2, stopping when a bad word is found.
If B1 is a buffer, optional spellings are put into B1. If B1 is " ", spell()
simply returns False when it finds a bad word. (See the commands in
Config!S.) When B1 is " " (no optional spellings), spell() may be aborted
with Amiga-ESC. When B1 is a buffer (to collect optional spellings), the
lookup of spelling options may be stopped early on by giving an input; the
options accumulate in the message line as they are found, and thus when you
see the option you want you can click it with the mouse and no further
options are sought. If B3 is a buffer, it is used as a supplemental
dictionary; the words in it should be on separate lines and in alphabetical
21order. If B3 is " ", no supplement is used. (See spellerUp, startSpell()
and stopSpell.)
Cursor Action: Advances cursor until it finds a bad word or eof.
Display Action: If B=curFile, refreshes cursor; if offscreen, centers cursor.
Example:
if (not spellerUp) return
while (not spell(buf54,curFile," ")) runKey(virtual-z) .. replace bad words
MANUAL UPDATE: A draw() CL function.
draw(x,y,color,mode,flag)
x,y,color,mode,flag: list 10
draws a line from the current position to x-y using the color, drawing mode,
and flag values specified. Color = 0-7 specifies a color; color = -1 means
use the current (last) color. mode values are: 0 = JAM1, 1 = JAM2, 2 = XOR,
4 = INVERSE. flag = 0 means do only a move(x,y) to set the current drawing
position to x-y; other arguments are ignored except the color is stored.
flag = 1 means draw a line to x-y using color, mode, and flag. Example: You
can draw (using XOR) a grating on top of the text in the window & erase it by
redrawing it again with XOR. You can draw boxes and other figures with the
mouse. draw() always returns True.
Compile BOTH of the cmds below to try this example. Press shft & the mouse
button and move the mouse:
Note how xor erases old box on second execution.
<virtual-esc:
draw(n0,n1, 0,2,0)
add(n54,n0,20)
draw(n54,n1, -1,2,1)
add(n53,n1,20)
draw(n54,n53,-1,2,1)
draw(n0,n53, -1,2,1)
draw(n0,n1, -1,2,1)
>
22Place cursor or scroll if button held
<shft-buttonDown:
.. moveCursor(curFile,mouseLoc)
.. updateDisplay
mouseXY(n0,n1)
runkey(virtual-esc)
if (not mousedown) return
equateNum(n54,0)
while (not inputwaiting) {
trackmouse
mouseXY(n2,n3)
if (!eqNum(n2,n0) & !eqNum(n3,n1)) {
runKey(virtual-esc)
equateNum(n0,n2)
equateNum(n1,n3)
runKey(virtual-esc)
}
} >
Another example: XOR a grating onto text. Erase it on second execution.
<shft-esc:
..putmsg(" ") putmsg(" ")
..updateDisplay
equateNum(n0,-8)
while (add(n0,n0,8) & genum(sWidth,n0)) {
draw(n0,16,0,2,0)
draw(n0,sHeight,0,2,1)
} >
..equateNum(n0,50)
..equateNum(n2,550)
..equateNum(n1,25)
..equateNum(n3,150)
..runkey(virtual-b)
Draw a box of with corners (x-y) given by n0-n1 and n2-n3
..<virtual-b:
draw(n0,n1,2,2,0)
draw(n2,n1,-1,2,1)
draw(n2,n3,-1,2,1)
draw(n0,n3,-1,2,1)
draw(n0,n1,-1,2,1)
>
MANUAL UPDATE: 100 buffer & 100 number stacks.
getStackSize(B,N,S)
B,N,S: list 10 (integer)
Reports the current buffer stack size in B, number stack size in N, and save-
file stack size in S.
Example: .. get size of buffer stack 22 in n11 & number stack 99 in n12
equateNum(n11,22) equateNum(n12,99) getStackSize(n11,n12,n13)
23pop(S,BN)
S,BN: list 10 (buffer or number)
pops the next item from stack S into buffer or number variable BN. Returns
False if stack S is empty. If S is a buffer variable such as buf10, buffer
stack 10 is used; if S is a number variable such as N22, number stack 22 is
used. The stack is popped variable BN. If a buffer is popped off a buffer
stack the current buffer BN is deleted and the stack is popped into buffer
variable BN. Note that the stack is LIFO, last-in-first-out. (See
getStackSize(), push(), and rollStack().)
Display Action: Displays "home" buffer, if pop into curFile.
Example: pop(n22, pageLines) .. pop number stack 22 into pageLines variable.
pop(buf99, buf3) .. pop buffer stack 99 into buf3 slot, killing old buf3.
push(S,BN)
S,BN: list 10 (buffer or number)
pushes item BN, a buffer or number, onto the stack indicated by S. If S is a
buffer variable such as b10, it means use buffer stack 10; if it is a number
variable such as n22, it means use number stack 22. There are 100 buffer and
100 number stacks. False is returned if 8 bytes is not available for the
stack entry. If BN is curFile, the "home" buffer becomes the new curFile; If
BN is the last file buffer, a new NoName buffer is opened. (See rollStack(),
getStackSize(), and pop().)
Display Action: If curFile pushed, displays new curFile.
Example: push(buf10, curFile) .. push curFile onto buffer stack 10.
push(n0,lineLength) .. push lineLength onto number stack 10.
rollStack(X,N)
X: list 10 (buffer or integer)
N: list 10 (integer)
Rolls the buffer stack by amount N, if X is a buffer argument; rolls the
number stack by amount N, if X is an integer argument. X indicates which
buffer or number stack to roll. rollStack() returns False, if the (buffer or
number) stack size is less than 2 or if N is 0. N may be positive or
negative, and the stack is rolled forward or backward based on the sign and
amount of N. The stacks are LIFO, last-in-first-out. If N is 1, the first-
out stack entry is rolled to the last-out position, so that the second-out
becomes the first-out. If N is -1, the last-out entry is rolled to the
first-out slot. (See push(), pop(), and getStackSize().)
Example: rollStack(buf10,1) .. rolls buffer stack 10 forward by 1.
rollStack(n0,n54) .. rolls number stack 0 by the amount in n54.
NEW: Created new rexxKey command name. Like startup, idle, and preKey,
rexxKey does not use shiftkeys. rexxKey runs automatically in idle periods
ONLY if there is a rexx msg/reply waiting to be processed. The special key
macroNums now are:
rexxKey 1145
idle 1146
preKey 1147
startup 1148
24NOTE: The purpose of rexxKey is to reduce overhead. When the idle cmd was
used to process rexx traffic with idleTime=0, there was high overhead because
idle constantly. rexxKey runs (during idle periods) ONLY if there is an
incoming msg/reply to process. And if you process the msg/reply in your
rexxKey cmd, rexxKey won't run again until there is another msg/reply to
process. (In the std config, rexxKey runs ONLY if autoTraffic mode On. See
Config!R.)
NOTE: In order to keep rexxKey from running repeatedly in idle periods, you
MUST process the incoming msg/reply by calling rexxIn() in your rexxKey cmd.
In the std config turn on autoTraffic and this is taken care of
automatically. (See Config!R.)
NOTE: Config!R was modified to swap virtual-t with the rexxKey cmd instead
of with the idle cmd; the idle cmd is no longer used in Config!R. Don't
forget to modify your custom Config!R, if you aren't going to use the one in
the std config on the Uedit disk.
NEW: Created new sortLines(buffer=list 2,caseSensitive=list 10) CL fct. It
sorts the lines in the buffer. If caseSense is non-zero, case sensitivity is
used in the sort. If caseSense is 0, case sensitivity is not used in the
sort.
NEW: Created inTiny CL fct, returns TRUE if currently in tiny window.
NEW: created new CL functions screenToBack and screenToFront.
NEW: When smartTabs is TRUE, spacesToTabs/tabsToSpaces warns when an eol is
encountered and a quote is not closed.
++++++++++++++++++++Uedit V2.5 Manual ERRATA++++++++++++++++++++
+++++Commands+++++
MANUAL UPDATE: AREXX INTERFACE: Uedit's old cryptic standard Rexx interface
(in the old Config!R) was replaced with Kerry Zimmerman's readable, verbose
interface, which users say is much easier to use. The manual talks about the
old Config!R, not the new one which uses command words; so ignore the
irrelevant parts of the discussion in the manual, particularly the Examples.
See ReadMe.Demo for instructions on using the new interface. The manual will
be updated on the next major upgrade.
Buffer usage: (Buf 36 no longer used by Rexx interface)
buf36 = holds REXXCOMM File for Rexx interface
buf62 = Rexx msg/reply output buffer
buf61 = Rexx msg/reply input buffer
MANUAL UPDATE: The following cmds are for the Editing Tricks in the manual:
Rather than setting MaxFiles to a high number, which requires customizing the
config files to change buffer numbers in its commands, you can store files on
the buffer stack and access them just as though they were in file buffers.
Load each file and use the cmd below to push the file onto the buffer stack.
You can load as many as memory will hold, and it doesn't use up file buffer
slots.
25Swap current buffer with stack & roll stack
<shft-gadget4:
getStackSize(n51,n52,n53)
if (eqNum(n51,0)) {
putmsg("buffer stack is empty")
returnFalse
}
equateNum(n54,curfile)
..if (getFlag(curfile,changed)
.. & askYesNo("Save this changed buffer?")) saveFile(curfile)
push(buf99,curfile)
rollstack(curfile,1)
pop(buf99,buf[n54])
>
To save changes, use the cmd below repeatedly. It examines the stack and
lets you save any buffers that have been changed. Note that this cmd can be
customized to save changes on the stack automatically by deleting the
askYesNo() call.
Save changed files on buffer stack
<alt-gadget4:
getStackSize(n51,n52,n53)
if (eqNum(n51,0)) {
putmsg("buffer stack is empty")
returnFalse
}
equateNum(n54,curfile)
do (n52,0,n51) {
push(buf99,curfile)
rollstack(curfile,1)
pop(buf99,buf[n54])
if (!eqNum(n52,n51)
& getFlag(curfile,changed)
& askYesNo("Save this changed file?")) saveFile(curfile)
}
>
MANUAL UPDATE: NEW: State (R-f5) and Load State (R-f6) menu commands. These
save Uedit's state in the default state file "uestate".
MANUAL UPDATE: NEW: saveState(filename) & loadState(filename) CL functions.
(The filename arguments are list 10.) saveState() saves Uedit's state to
disk. loadState() loads in a previously stored state.
A "state" is a snapshot. Storing Uedit's state consists of storing file and
work buffers along with their local flags; also stored are many global
variables including colors and split window information. When you load in a
state, everything is just as it was when the "snapshot" was taken; the split
windows are in the same order, the cursors are in the same spot, the colors
are the same, the currently active buffer is the same, colored regions are
the same, the search & grep strings are the same, even the Changed (or not)
status of files is the same.
26NOTE: The state does not include keys or learned sequences. As part of your
state command you can include saving or loading a data file and existing
learned sequence, if you wish. The state also does not include buffers and
numbers on the stacks.
+++++Miscellaneous+++++
MANUAL UPDATE: Section 1.30.3 in the manual which discusses leftMargin and
autoIndent needs correction. A table needs to be provided to cover the
cases. Note that when autoIndent is off and leftMargin>0, normal typing does
not use leftMargin. But if you reformat the paragraph, it is indented to the
column specified by leftMargin. So leftMargin is used in paragraph
reformatting if it is >0 even though during normal typing it is not used when
autoIndent is off. Note also that the Left Margin (L-m).
MANUAL UPDATE: Printed manual does not show the grep carat (^) symbol in the
symbol table at the top of page 68. The carat symbol forces a match to start
of line.
MANUAL UPDATE: The manual does not document the fact that spell() does not
present optional spellings for bad words if the big dictionary is not in
memory. It does not bother looking up options on disk because it would be
too slow. For the optional spellings to be presented in the message line,
you must have loaded the spelling dictionary into Uedit's memory. Note that
using the Load Speller command in Config!s (unless you customize it) if Uedit
cannot find enough contiguous memory for the big dictionary, it will open the
speller using the dictionary on disk - in this case, optional spellings will
not be looked up and presented.
MANUAL UPDATE: Hyper text was modified to allow partial words to be looked
up. This is not documented in the manual. When the word buffer argument has
something in it and the flag = 0 or 1, first the word buffer content is
treated as a whole word/phrase in the lookup; if not found, it is treated as
a partial word/phrase. Thus you can type or click the first few letters of a
hyper word or phrase and the lookup should find the whole word/phrase if it
exists in the table.
MANUAL UPDATE: Added: -s CLI command line flag. Examples:
run UE -s .. runs UE & loads in the default state file "uestate".
run UE -sMyState .. runs UE & loads in state file MyState.
NOTE: When a state is loaded, it uses the buffers that were in use when the
state was saved. WARNING: Files in Uedit may be erased so that the state
can use their buffers; you should save any changes before loading in a state.
Note also that if you type "Run UE -s file1 file2", file1 and file2 may be
erased from Uedit's memory so their buffers can be used by the state being
loaded in.
The -s flag is processed BEFORE the -k & -l CLI command line flags and AFTER
the named files (if any) are loaded in. You can specify a key or learned
sequence (-k or -l) to act on the loaded state's files. -s is processed
after the -c and -d flags, of course. To summarize, the sequence is this:
process -c and -d, if used
load files, if any
process -s, if used
process -l and -k, if used
27 +++++Config! Defaults+++++
MANUAL UPDATE: Added: Alt-keys array in config defaults. Below the 2
printable keys arrays in the config defaults is another array of the same
length (64 characters). These keys can be typed in using the ALT shift-
modifier. The purpose of the alt keys array is to enable foreign users to
type in foreign characters either in normal or especially in primitive mode.
(In normal mode they could use a command to input foreign letters, but they
couldn't type foreign letters in that way when in primitive mode.)
MANUAL UPDATE: Added: 2 new Config! defaults for setting the screen's pixel
width & height. The 2 reserved slots after "Trap menus" are replaced:
old:
<0> Trap menus to use menu mouse button as a key
<0> Reserved.
<0> Reserved.
new:
<0> Trap menus to use menu mouse button as a key
<664> Screen width in pixels (640-1064)
<224> Screen height in pixels (gets auto-doubled for LACE) (200-1064)
MANUAL UPDATE: Added: customScreen global CL variable and config default.
In the Config! defaults it is the default just after smartTabs (which used
to be a RESERVED slot). If customScreen is FALSE or 0, when the screen opens
it is a type WBENCHSCREEN; with a WBENCHSCREEN when you type Ctrl-y and "Run
NewCLI" in Uedit, the CLI window is on top of Uedit's window, but a side
effect is that rAmiga-n/m work strangely or incorrectly. If customScreen is
TRUE or 1, when the screen opens it is a CUSTOMSCREEN; with a CUSTOMSCREEN
you cannot open a CLI or Performance Monitor window on top of Uedit's screen,
but the rAmiga-n/m keys work correctly.
+++++Command Language+++++
MANUAL UPDATE: CL argument list 14 in Part3 of the manual should be the
following:
LIST 14: autoBackup autoIndent busies changed columnar cram favorite
hideDisplay icons lace learnMode mapChars markGadgets overStrike
printTabs readOnly rightJustify rowCol scrollType searchCaps
smartTabs speakAlerts speakMsgs spooks teachKeys trapMenus trueTabs
useKeys userGlobalA userGlobalB userLocalA userLocalB wordWrap
The CL functions marked as using list 13 should be changed to use list 14.
No CL function uses list 13 which no longer exists.
MANUAL UPDATE: Added: CL variables sWidth and sHeight to set the pixel
width & height of Uedit's screen. These belong in list 10 of the manual's
argument lists.
28