v07i025: CRISP release 1.9 part 04/32
Brandon S. Allbery - comp.sources.misc
allbery at uunet.UU.NET
Sun Jun 11 07:21:37 AEST 1989
Posting-number: Volume 7, Issue 25
Submitted-by: fox at marlow.UUCP (Paul Fox)
Archive-name: crisp1.9/part05
#!/bin/sh
# this is part 4 of a multipart archive
# do not concatenate these parts, unpack them in order with /bin/sh
# file help/crisp/prim/C.cmd continued
#
CurArch=4
if test ! -r s2_seq_.tmp
then echo "Please unpack part 1 first!"
exit 1; fi
( read Scheck
if test "$Scheck" != $CurArch
then echo "Please unpack part $Scheck next!"
exit 1;
else exit 0; fi
) < s2_seq_.tmp || exit 1
echo "x - Continuing file help/crisp/prim/C.cmd"
sed 's/^X//' << 'SHAR_EOF' >> help/crisp/prim/C.cmd
X expression list_expr.
X
X Since lists may contain any data type, it is probably wise
X to assign the result of a car operation to a polymorphic
X variable, so that its type can be ascertained.
X
XEXAMPLES:
X
X The following example prints a message saying what type
X the variable at the head of a list is:
X
X (list llist)
X (message "Type is %s." (typeof (car llist)))
X.HU cd
XSYNOPSIS: (cd [path])
X
XRETURN VALUE:
X
X 0 if unsuccessful; non-zero if path changed.
X
XDESCRIPTION:
X
X This macro changes the current working directory. If path
X is omitted, then the current path is displayed on the
X status line.
X
XEXAMPLES:
X
X Display current path on screen:
X
X (cd)
X
X Change to users home directory:
X
X (cd (inq_environment "HOME"))
X.HU cdr
XSYNOPSIS: (cdr list_expr)
X
XRETURN VALUE:
X
X Returns the list formed by deleting the first element of
X the list, list_expr.
X
XDESCRIPTION:
X
X The (cdr) macro is used to create a new list out of an
X existing list by removing the first atom in the list.
X
X Using (car) and (cdr), macros can be written which
X manipulate all elements on a list. However, it is more
X efficient to use (nth) to extract individual elements,
X since internally it avoids having to copy sub-lists.
X.HU change_window
XSYNOPSIS: (change_window [direction])
X
XRETURN VALUE:
X
X Returns 0 if unsuccessful; 1 if successful.
X
XDESCRIPTION:
X
X This macro is used to move to another window. direction
X specifies in which direction to select the window. If it
X is omitted, then the user is prompted to select the
X window, by using the cursor keys.
X
X If direction is specified, it should have one of the
X following values:
X
X 0 Up
X 1 Right
X 2 Down
X 3 Left.
X.HU color
XSYNOPSIS: (color [background] [normal] [region] [messages]
X [errors] [hilite])
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X This macro is used to control the colors that CRISP uses
X on a color display. (The values are ignored for monochrome
X displays).
X
X If any parameter is omitted, then the value is prompted for.
X
X background is the color for the background of normal text.
X normal is the color associated with text in the editing
X windows. region is the color of text when it is marked in
X a region. messages is the color for normal messages on the
X status line. errors is the colors for error messages on
X the status line. hilite is used to indicate the relationship
X between highlited text and its background.
X
X The colors are integers which are defined below.
X
X 0 Black
X 1 Blue
X 2 Green
X 3 Cyan
X 4 Red
X 5 Magenta
X 6 Brown (or dark yellow)
X 7 White
X 8 Dark Grey
X 9 Light Blue
X 10 Light Green
X 11 Light Cyan
X 12 Light Red
X 13 Light Magenta
X 14 Light Yellow
X 15 Light White.
X.HU command_list
XSYNOPSIS: (command_list)
X
XRETURN VALUE:
X
X Returns a list consisting of a sequence of strings which
X are the names of all the CRISP macro primitives and all
X currently defined macro names.
X
XDESCRIPTION:
X
X This macro is used to get a list of all the keywords in
X CRISP. Its primary purpose is to support the help macro
X package, and avoids hardcoding the macro primitives into a
X macro or text file.
X
X See all (macro_list).
X.HU compress
XSYNOPSIS: (compress string)
X
XRETURN VALUE:
X
X Returns a copy of string with all spaces, tabs and newlines
X mapped to single spaces.
X
XDESCRIPTION:
X
X This macro takes a string and removes all multiple white
X space characters (spaces, tabs and newlines).
X.HU connect
XSYNOPSIS: (connect [mode] [shell])
X
XRETURN VALUE:
X
X Returns 0 if buffer already connected; returns 1 if buffer
X has been successfully connected.
X
XDESCRIPTION:
X
X This macro is used to create a sub-process and associate
X it with the current buffer.
X
X mode specifies some flags which are defined below. By
X default, the process created is a shell process, and the
X shell is got from the SHELL environment variable. If shell
X is specified, then it is taken as the pathname of a shell
X to execute.
X
X Output from a sub-process is automatically inserted into
X the buffer, at a position known as the process position
X (see (inq_process_position), (set_process_position)). This
X position is analagous to the usual input cursor.
X
X Any text which would normally be inserted into the buffer
X via (self_insert), (insert) or (paste) is also forwarded
X to the sub-process.
X
X CRISP implements sub-processes out of pipes or pty's
X depending on the availability of the underlying Unix
X implementation. When using pipes, CRISP samples the output
X from the pipe on a 1 second interval. Ptys have better
X interaction since the select() system call is used.
X
X mode is a set of flags which have the following meaning:
X
X 0x01 If this bit is set, then the buffer operates in
X echo mode, ie the characters which are typed are
X inserted into the buffer. If this bit is not
X set, then the buffer operates in no-echo mode,
X and the characters the user types are not
X directly inserted into the buffer, but instead
X only the output from the sub-process.
X
X 0x8000 This is the wait mode of operation. Normally
X when a buffer is created, the output from the
X subprocess is inserted directly into the buffer.
X Setting this bit causes the output from the
X process to be held onto, until the calling macro
X issues a (wait) or (waitfor) macro call.
X
X (connect) may be called after a buffer has been connected
X to change the mode flag.
X.HU continue
XSYNOPSIS: (continue)
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X This macro is used to finish the current iteration of a
X (while) loop, and go back to the top of the loop, causing
X the while condition to be re-evaluated.
X
X This works similar to the C continue statement.
X.HU copy
XSYNOPSIS: (copy [append])
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X (copy) copies the currently marked region to the scrap
X buffer, and un-highlites the currently marked region.
X
X If append is specified and is non-zero, then the text is
X appended to the current scrap without deleting it first.
X It is not currently implemented.
X.HU create_buffer
XSYNOPSIS: (create_buffer buffer-name [file-name] [system])
X
XRETURN VALUE:
X
X Returns the buffer identifier associated with the newly
X created buffer.
X
XDESCRIPTION:
X
X This macro is used to create a new buffer. The buffer is
X given the name "buffer-name" which may be any sequence of
X ASCII characters. This buffer name is used to label the
X top of any windows the buffer is attached to (see
X attach_buffer). Care should be chosen in selecting buffer
X names, since the top title on any displayed window may be
X truncated if the window is not wide enough to handle the
X title.
X
X "file-name" is the full or relative path name of a file
X which should be read into the buffer. If this parameter is
X omitted, then an initially empty buffer will be created.
X The "file-name" read into the buffer is saved for later
X use, if the buffer is saved (via write_buffer).
X
X [system] is an optional integer which indicates whether
X the buffer is to be a system buffer or user buffer. If it
X is 0 or omitted, then the buffer is a user buffer; a
X non-zero value indicates a system buffer. System buffers
X are like normal buffers, except for two side-effects - no
X (undo) information is saved for operations on system
X buffers, and most high-level macros tend to ignore system
X buffers, eg the (buffer_list) macro does not usually
X display system buffers.
X
X System buffers are for use by user macros or CRISP
X supplied macros and provide a way of storing information
X without getting in the way of the user. (undo) information
X is not saved for these buffers, and thus means that
X operations on system buffers are slightly faster than
X normal buffers. It is not important that (undo)
X information is not stored with these buffers, because
X these buffers tend to only be manipulated by the various
X macros - not directly by the user.
X
XEXAMPLES:
X
X The following example shows how to create a buffer and
X display it in the current window. (edit_file) may be more
X appropriate for this particular task, but the example is
X illustrative.
X
X (int newbuf)
X
X (= newbuf (create_buffer "My Buffer" "myfile.txt"))
X (attach_buffer newbuf)
X // Refresh screen with buffer contents.
X (refresh)
X.HU create_edge
XSYNOPSIS: (create_edge [direction])
X
XRETURN VALUE:
X
X Returns 0 if unsuccessful; 1 if successful.
X
XDESCRIPTION:
X
X This macro is used to split the current window. The window
X is split in the direction specified. If direction is not
X specified then the user is prompted, and can use the arrow
X keys to indicate the direction of the split.
X
X If direction is specified, it should have one of the
X following values:
X
X 0 Up
X 1 Right
X 2 Down
X 3 Left.
X.HU create_window
XSYNOPSIS: (create_window left_x bottom_y right_x top_y [message])
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X This macro is used to create a new window. left_x,
X bottom_y, right_x and top_y specifies the co-ordinates of
X the window.
X
X message is an optional string expression, which if
X specified is a message to appear centered on the bottom
X line of the window.
X
X Be careful not to create windows which do not fit within
X the physical screen, otherwise CRISP may crash.
X
X The new window created becomes the current window - its id
X can be inquired via (inq_window).
X.HU cut
XSYNOPSIS: (cut [append])
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X The currently highlited region is copied to the scrap
X buffer and the region deleted from the current buffer.
X
X If append is specified and is non-zero, then the highlited
X region is appended to the end of the scrap buffer, without
X first clearing it. This is not currently implemented.
SHAR_EOF
echo "File help/crisp/prim/C.cmd is complete"
chmod 0644 help/crisp/prim/C.cmd || echo "restore of help/crisp/prim/C.cmd fails"
mkdir help help/crisp help/crisp/prim >/dev/null 2>&1
echo "x - extracting help/crisp/prim/D.cmd (Text)"
sed 's/^X//' << 'SHAR_EOF' > help/crisp/prim/D.cmd &&
X.HU date
XSYNOPSIS: (date [year] [mon] [day] [month-name] [day-name])
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X This macro retrieves the current date. year, mon and day
X are optional integer variable names which receive the
X current year, month number, and day of month number. Year
X is of the form 1988; mon is in the range 1-12; day is in
X the range 1-31.
X
X month-name is an optional string variable, and contains
X the name of the month, in the format: January; day-name is
X an optional string variable containing the day of the
X week, in the form: Saturday.
X
XEXAMPLES:
X
X The following example can be used to print an american
X date string:
X
X (int day mon year)
X (date year mon day)
X (message "%02/%02/%02" mon day (- 1900 year))
X.HU debug
XSYNOPSIS: (debug [n])
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X debug turns on or off the macro trace mode. When debug is
X on, CRISP traces the execution of every macro statement,
X and in addition traces assignments to the accumulators
X (integer, string and list).
X
X This is the primary means of debugging macros.
X
X If n is omitted, then debugging is toggled and a message
X is printed on the status line saying whether debug is on
X or off.
X
X By default, debug toggles between 0 and 1. By specifying a
X value for the debug macro, other events in CRISP can be
X traced. The other bits are mostly for debugging CRISP
X itself, and include the ability to trace the following:
X
X 0x01 Trace macro execution.
X 0x02 Trace regular expression parsing.
X 0x04 Trace buffer (undo) information.
X 0x08 Turns on tracing for the prompt history code.
X
X When debug is turned on, all debug output is put in the
X file 'crisp.log'. There is no way to change the name of
X this file at present. When the debug is turned on, any
X existing crisp.log file is truncated.
X
X If the user is trying to debug a macro which causes CRISP
X to core dump, then CRISP should be run with the -f flag.
X This causes all debug info to be flushed to the log file
X as it is produced, rather than using the stdio buffering.
X By default this is off, since it significantly slows CRISP
X down due to the high volume of output.
X
XEXAMPLES:
X
X The following is a small trace of debug output caused by
X reformatting this paragraph with the ^F key.
X
X KEY_EXEC: objects format_block
X (objects "format_block" )
X Execute macro: objects
X 02:.......(string ext function macro_name )
X (int arg1 )
X (get_parm 0 function )
X function := 'format_block'
X (get_parm 1 arg1 )
X ACC = 0
X (inq_names NULL ext NULL )
X (assign_to_key "^N" "objects next_error" )
X (assign_to_key "^P" "objects previous_error" )
X (= macro_name (..) )
X (+ ext (..) )
X lookup ext -> "cmd"
X (+ "-" function )
X lookup function -> "format_block"
X SACC = '-format_block'
X SACC = 'cmd-format_block'
X macro_name := 'cmd-format_block'
X SACC = 'cmd-format_block'
X (if (..) (..) )
X (! (..) )
X (inq_macro macro_name )
X lookup macro_name -> "cmd-format_block"
X ACC = 0
X ACC = 1
X (= macro_name (..) )
X (+ "default-" function )
X lookup function -> "format_block"
X SACC = 'default-format_block'
X macro_name := 'default-format_block'
X SACC = 'default-format_block'
X SACC = 'default-format_block'
X (execute_macro macro_name arg1 )
X lookup macro_name -> "default-format_block"
X.HU declare
XSYNOPSIS: (declare var1 var2 ..)
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X This macro is used to define one or more polymorphic
X variables. Polymorphic variables are variables that may
X take on any of the available CRISP data types (integer,
X string or list), depending on context.
X
X Polymorphic variables are most useful when dealing with
X lists which contain unknown data types.
X
X The variables declared are made into local variables,
X unless a (global) declaration follows.
X
X By default, polymorphic variables are typed as integers,
X and are given the value zero.
X.HU del
XSYNOPSIS: (del filename)
X
XRETURN VALUE:
X
X Zero or less if unsuccessful; greater than zero means the
X file was successfully deleted.
X
XDESCRIPTION:
X
X This macro is used to delete a file, as specified by the
X string expression 'filename'.
X
X Wild-cards, etc, are not valid in 'filename'.
X.HU delete_block
XSYNOPSIS: (delete_block)
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X The currently highlited block is deleted.
X.HU delete_buffer
XSYNOPSIS: (delete_buffer bufnum)
X
XRETURN VALUE:
X
X No value is returned.
X
XDESCRIPTION:
X
X This command deletes the buffer specified by bufnum. The
X entire buffer contents are freed, and any other resources
X attached to that buffer are destroyed as well. In the case
X of a process buffer, the subprocess is killed.
X
X Any attempt to (set_buffer) to a buffer which has been
X deleted will fail.
X
X Care should be taken with (delete_buffer) since no tests
X are made to see if the buffer being deleted is currently
X displayed. If a currently displayed buffer is deleted,
X then CRISP may core-dump. Macros using (delete_buffer)
X should be carefully tested to ensure this does not happen,
X eg by calling (inq_views).
X
XEXAMPLES:
X
X The following example creates a temporary buffer and then
X deletes it after restoring the current buffer at the time
X of the macro is invoked.
X
X (int newbuf)
X (int curbuf)
X
X (= curbuf (inq_buffer))
X (= newbuf (create_buffer "Example" NULL 1))
X (set_buffer newbuf)
X .
X .
X
X (set_buffer curbuf)
X (delete_buffer newbuf)
X.HU delete_char
XSYNOPSIS: (delete_char [num])
X
XRETURNS:
X Nothing.
X
XDESCRIPTION:
X
X This macro deletes one or more characters from the current
X buffer. If num is not specified, then 1 character is
X deleted; if num is specified then that number of
X characters are deleted. The deleted characters are on and
X to the right of the current buffer position.
X
X This macro is the default assignment for the <Delete> key
X on the keyboard.
X.HU delete_edge
XSYNOPSIS: (delete_edge [direction])
X
XRETURN VALUE:
X
X Returns <= 0 if unsuccessful; >0 otherwise.
X
XDESCRIPTION:
X
X This macro can be used to delete a window on-screen. It is
X used by specifying an edge, and if there is another window
X which adjoins the edge, then the edge is deleted and the
X two windows combined into one.
X
X direction specifies the edge to delete and if not
X specified, is prompted for, and the user can use the arrow
X keys to specify the edge.
X
X When using this macro, the edge to be deleted must not be
X obscured by other edges, ie only tiled window support is
X allowed for this macro.
X
X If direction is specified, it should have one of the
X following values:
X
X 0 Up
X 1 Right
X 2 Down
X 3 Left.
X.HU delete_line
XSYNOPSIS: (delete_line)
X
XRETURNS:
X
X Nothing.
X
XDESCRIPTION:
X
X This macro deletes the line the cursor is currently on.
X The cursor is placed at the same column position in the
X line below the one deleted.
X
XEXAMPLES:
X
X The following example assigns the (delete_line) macro to
X the <ALT-D> key (the usual case).
X
X (assign_to_key "<Alt-D>" "delete_line")
X.HU delete_macro
XSYNOPSIS: (delete_macro [file])
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X This macro is used to delete all macros which were loaded
X from a particular macro file. file is a string expression
X and if omitted is prompted for, containing the name of the
X file.
X
X This is currently a no-op in CRISP - macros are not
X deleteable entities. The storage allocated for a macro is
X lost when a macro by the same name is loaded from
X another file.
X.HU delete_to_eol
XSYNOPSIS: (delete_to_eol)
X
XRETURNS:
X
X Nothing.
X
XDESCRIPTION:
X
X This macro deletes all characters up to the end of the
X line in the current buffer.
X.HU delete_window
XSYNOPSIS: (delete_window)
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X This macro can be used to delete the current window. It
X can be used on overlapping or tiled windows (unlike BRIEF
X which limits (delete_window) to overlapped windows only).
X
X Another window should be selected (via (set_window))
X before trying to refresh the screen, otherwise CRISP may
X crash.
X.HU disconnect
XSYNOPSIS: (disconnect)
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X This macro is used to kill a sub-process attached to a
X buffer. The subprocess is sent a SIGTERM followed by a
X SIGKILL signal.
X.HU display_mode
XSYNOPSIS: (display_mode [mode])
X
XRETURN VALUE:
X
X Returns previous value of display mode.
X
XDESCRIPTION:
X
X The display mode is a special mode for use on terminals
X which cannot display characters with the top bit set. The
X mode defines whether these characters should be displayed
X in octal or hexadecimal. Octal characters appear as a
X backslash followed by three octal digits. Hex characters
X appear as a backslash followed by an 'x' followed by two
X hex digits.
X
X The default is hexadecimal.
X
X If mode is 1, then the mode is set to hexadecimal. If 2,
X then octal.
X.HU distance_to_tab
XSYNOPSIS: (distance_to_tab)
X
XRETURNS:
X
X Number of characters between current cursor location and
X next tab stop.
X
XDESCRIPTION:
X
X This macro returns the number of characters between the
X current cursor location and the next tab stop, even if
X there are no more characters after the cursor. This number
X will always be > than zero.
X
X If the cursor is on a tab stop, then the number of
X characters to the next tab stop are returned.
X.HU dos
XSYNOPSIS: (dos [command] [use_shell] [completion])
X
XRETURN VALUE:
X
X Returns the shell exit status (under Unix, 0 means command
X exited successfully, non-zero means command failed for
X some reason).
X
XDESCRIPTION:
X
X This macro exists for compatability with BRIEF; please see
X the (shell) command for further information.
X.HU down
XSYNOPSIS: (down [lines])
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X Moves the cursor to the same column on the line below. If
X lines is specified then cursor is moved to the lines'th
X line after the current. lines may be negative in which
X case the cursor moves backwards.
X.HU drop_anchor
XSYNOPSIS: (drop_anchor [type])
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X This macro is used to define a region within the current
X buffer. type specifies the type of region, and the values
X are given below. If omitted a normal marked region is
X selected.
X
X Regions are areas of a buffer upon which some macros have
X special effects, eg (cut) and (copy) are used to extract
X fragments of buffers and save them for later re-insertion.
X The (search_fwd) and (search_back) macros can be told to
X limit their searches to the highlited regions, etc.
X
X Regions are displayed on screen either in a different
X color, or in reverse video so that they stand out.
X
X The following are the different region types:
X
X 1 Normal
X 2 Column
X 3 Line
X 4 Non-inclusive.
X
X A normal mark is a region which encompasses from the place
X where the anchor was dropped upto and including the
X current cursor position. A non-inclusive mark is the same
X but does not include the current cursor position.
X
X A line mark selects entire lines, and allows for easy
X movement of text from one part of a buffer to another.
X
X A column mark is similar to a normal mark, except it
X displays differently on screen, and allows rectangular
X sections of the current buffer to be marked.
X
X The currently selected marked area can be found, via
X (inq_marked). Column operations are not directly supported
X by CRISP internally, but instead are supported by the
X macros supplied with CRISP.
X
X Regions are nestable, ie multiple (drop_anchor)'s can be
X issued without any intervening (raise_anchor).
X
X The marked region can be cleared by calling (raise_anchor)
X or performing a (copy) or (cut) operation on the buffer.
X.HU drop_bookmark
XSYNOPSIS: (drop_bookmark [book_num] [yes] [buf] [line] [col])
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X This macro is used to set a bookmark. A bookmark is like a
X normal bookmark - it is a place holder in a buffer.
X book_num specifies the bookmark number 1-10; yes is a
X string which is ignored.
X
X If buf, line & col are non-NULL, then bookmark book_num is
X set to the specified buffer at the designated line and
X column position. If buf, line or col are NULL then the
X bookmark is set from the current buffer, line and column
X position.
SHAR_EOF
chmod 0644 help/crisp/prim/D.cmd || echo "restore of help/crisp/prim/D.cmd fails"
mkdir help help/crisp help/crisp/prim >/dev/null 2>&1
echo "x - extracting help/crisp/prim/E.cmd (Text)"
sed 's/^X//' << 'SHAR_EOF' > help/crisp/prim/E.cmd &&
X.HU echo_line
XSYNOPSIS: (echo_line [flags])
X
XRETURN VALUE:
X
X Previous value of flags.
X
XDESCRIPTION:
X
X The (echo_line) macro is used to control which fields are
X visible in the status line. If flags is omitted then the
X current setting is returned.
X
X flags is an integer expression, whose bit pattern is
X interpreted as follows:
X
X 0x01 Line: field enabled.
X 0x02 Col: field enabled.
X 0x04 Percentage through file enabled.
X 0x08 Current time enabled.
X 0x10 REmember/PAuse reminders enabled.
X 0x20 Cursor type displayed.
X
X The cursor type is only used if the screen cannot change
X the cursor type to indicate insert/overtype and
X normal/virtual space.
X
X.HU edit_file
XSYNOPSIS: (edit_file [file1] [file2] ..)
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X This macro is the usual way of editing a file; if a buffer
X is already allocated for the file, then that is set as the
X current buffer. Otherwise a new buffer is created, the
X contents of the named file are read into that, and the
X filename is associated with that buffer (so that later on
X a (write_buffer) can be used to save any changes made to
X the buffer).
X
X This macro supports wild-cards and the ability to edit
X multiple files at once. If more than one argument is
X specified, then a separate (edit_file) is performed on
X each file, and the current buffer is set to the last file
X read in.
X
X The normal c-shell wildcards are supported:
X
X * wild-card -- matches any number of characters.
X ? wild-character -- matches any single character.
X [l-m] any character in range at this character.
X ~/ as first part of filename matches home directory
X ~user/ matches 'user's home directory.
X
X If no filenames are specified, the user is prompted for a
X filename.
X
XEXAMPLES:
X
X The following example can be used to read in all .c files
X in the current directory:
X
X (edit_file "*.c")
X.HU ega
XSYNOPSIS: (ega [mode])
X
XRETURN VALUE:
X
X Previous value of EGA mode.
X
XDESCRIPTION:
X
X This macro can be used to toggle between EGA 25 line mode
X and EGA 43 line mode -- only if CRISP is running under
X Unix V.3.2 or above on an EGA console.
X
X If mode is not specified, then only the current EGA state
X is returned.
X.HU enable_display
XSYNOPSIS: (enable_display [enable])
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X This macro is used to enable the display. By default when
X CRISP starts up, the code for updating the screen is
X disabled. The startup macros initialise CRISPs internal
X character translation tables and then call this macro to
X allow CRISP to proceed.
X
X If enable is not specified, then the current value is
X toggled. If it is non-zero, then the display is enabled.
X
X If the display is not enabled, then CRISP can be used as a
X normal programming language, in the style of awk and sed,
X using the command line arguments to load and execute a file.
X.HU end_of_buffer
XSYNOPSIS: (end_of_buffer)
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X Moves the cursor to the end of the last line in the
X current buffer.
X.HU end_of_line
XSYNOPSIS: (end_of_line)
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X Moves the cursor to the end of the current line.
X.HU end_of_window
XSYNOPSIS: (end_of_window)
X
XRETURN VALUE:
X
X Returns 1 if cursor moved; 0 if cursor stayed in the same
X position.
X
XDESCRIPTION:
X
X Moves the cursor to the last line of the window. The
X cursor stays in the same column position.
X.HU error
XSYNOPSIS: (error fmt [arg1] [arg2] ..)
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X This macro is used to print a message on the status
X (prompt) line. fmt is a string with possible embedded
X printf-like % options. arg1, arg2, .. are optional
X arguments (upto 4 parameters) which either evaluate to
X strings or integer values.
X
X The % options are the same as for the underlying printf()
X which the system supports. (Internally the string coding
X is handled by sprintf). Please see the description of the
X (message) macro for a list of the minimum supported set of
X % options.
X
X This macro is similar to (message) except that the message
X string is classified as an error. Error messages are
X printed in the error color (see (color)).
X
X In addition, if the pause_on_error flag has been set (see
X (pause_on_error)) then the error message is displayed
X suffixed with a '..' and CRISP waits for the user to type
X any key to continue. This is useful in debugging.
X
X Error messages are truncated if they are too long.
X
XEXAMPLES:
X
X (string mac)
X (= mac "fred")
X (error "Macro %s not loaded." mac)
X ; displays the message 'Macro fred not loaded.')
X
X (error "%02d/%02d/%02d" 2 25 88)
X ; displays '02/25/88'
X.HU execute_macro
XSYNOPSIS: (execute_macro [macro] [args])
X
XRETURN VALUE:
X
X Returns the value of (macro args).
X
XDESCRIPTION:
X
X This macro is used to execute another macro. It is needed
X because it is the only way to execute a macro which is
X defined by a string expression, rather than by virtue of
X the CRISP language syntax.
X
X macro should be a string expression and if omitted is
X prompted for; args are optional and are the arguments
X passed to the macro.
X.HU exist
XSYNOPSIS: (exist filename)
X
XRETURN VALUE:
X
X Non-zero if filename exists; zero if file does not exist.
X
XDESCRIPTION:
X
X Checks for existence of file. The existence of the file is
X performed by doing a stat() call on the named file.
X Therefore this can be used for all file types (including
X character/block devices, etc).
X.HU exit
XSYNOPSIS: (exit)
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X This macro is used to exit from CRISP, or from a recursive
X (process) macro invocation.
X
X If called at the bottom level of CRISP, CRISP goes through
X its exit procedure and prompts the user if he/she is sure,
X if there are any buffers which have been modified.
X
X If called from within a nested invocation of (process), on
X the next attempt to read keyboard input the calling
X (process) macro will return.
X
X Note that CRISP currently does not support the
X [are_you_sure] option which BRIEF supports.
X.HU extern
XSYNOPSIS: (extern var1 var2 ..)
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X The extern macro is provided for compatability with BRIEF.
X In CRISP it does not do anything.
X
X In BRIEF it is used so that global variables defined in
X other macro source files can be referenced without
X resulting in undefined symbol reference errors.
X
X CRISP does not check for the availability of a symbol
X until it is actually referenced at run-time.
SHAR_EOF
chmod 0644 help/crisp/prim/E.cmd || echo "restore of help/crisp/prim/E.cmd fails"
mkdir help help/crisp help/crisp/prim >/dev/null 2>&1
echo "x - extracting help/crisp/prim/G.cmd (Text)"
sed 's/^X//' << 'SHAR_EOF' > help/crisp/prim/G.cmd &&
X.HU get_parm
XSYNOPSIS: (get_parm [arg] var [prompt] [length] [default])
X
XRETURN VALUE:
X
X Zero if user aborted prompt, or argument number does not
X exist. Greater than zero if successful.
X
XDESCRIPTION:
X
X (get_parm) is the mechanism for accessing parameters
X passed to macros. (get_parm) can also be used to prompt
X the user for input, and possibly specify a default value.
X
X Arguments passed to macros are numbered, zero upwards. If
X arg is specified, then it is evaluated to the value of the
X argument number to be retrieved. If it is NULL, then the
X user is prompted for the value, in which case prompt is
X the message to prompt the user, and default (if specified)
X is the default value which the user can then edit, using
X the command line editing. If length is specified, it is
X the maximum number of characters in the user's input
X (usually used only for string variables). The users input
X is terminated by hitting <Enter> or reaching the length.
X
X var is the name of an integer, string or list variable. If
X the user is being prompted, then only integer and string
X expressions may be input. List expressions are not
X supported.
X
X Arguments passed to macros are passed as call by name, ie
X every time a (get_parm) is issued on a particular
X parameter, that parameter is re-evaluated. This can be
X very useful sometimes, and at other times it can cause
X anomalous side-effects.
X
X.HU get_term_characters
XSYNOPSIS: (get_term_characters [top_left] [top_right]
X [bot_left] [bot_right]
X [vertical] [horizontal]
X [top_join] [bot_join] [cross]
X [left_join] [right_join])
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X This macro can be used to find out the current settings
X for the various characters which make up the special
X characters needed to display the window borders on the
X screen.
X
X Each parameter is the name of a string variable to receive
X the string expression. Any of the parameters may be omitted.
X
X This macro is designed to allow macros to be written which
X make it easier for the user to tailor the display.
X
X Refer to (set_term_characters) for further detail on the
X meaning of each of these characters.
X.HU get_term_features
XSYNOPSIS: (get_term_features [space] [char] [icursor]
X [ocursor] [vicursor] [vocursor]
X [escape] [repeat] [zerom]
X [color])
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X This macro is used to retrieve the terminal options which
X the current display supports. All the parameters are the
X names of string variables, except for zerom and color
X which are the names of integer variables.
X
X Refer to (set_term_features) for a description of the
X meaning of each feature.
X
X This macro is designed to be used to allow macros to be
X written which allow the user to easily tailor his/her
X display environment.
X.HU get_term_keyboard
XSYNOPSIS: (get_term_keyboard ..)
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X This macro is designed to allow the calling macro retrieve
X the assignments for each key, so that a user interface can
X be written to examine and display the key bindings.
X
X See (set_term_keyboard) for more details of how this macro
X is supposed to work.
X
X This macro has not been currently implemented.
X.HU getpid
XSYNOPSIS: (getpid)
X
XRETURN VALUE:
X
X Returns the current process ID (as returned via getpid()).
X
XDESCRIPTION:
X
X This function exists to allow macros to be written which
X need to generate unique filenames. The process ID can be
X embedded in temporary filenames to avoid clashes with any
X other users running CRISP.
X
XEXAMPLES:
X
X The following example generates a filename for a temp file
X in the /tmp directory.
X
X (string filename)
X (sprintf filename "/tmp/gr.xx%05d" (getpid))
X.HU global
XSYNOPSIS: (global var1 var2 ..)
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X The global macro is used to make local variables into
X global variables. Local variables are destroyed when the
X macro executing them terminates. Global variables maintain
X their value across macro invocation and occupy permanent
X static storage.
X
X A variable must have been specified in a previous (int),
X (string), (list) or (declare) statement before it can be
X made into a global.
X.HU goto_bookmark
XSYNOPSIS: (goto_bookmark [book_no] [bufnum] [line] [col])
X
XRETURNS:
X
X 1 if macro was successful; 0 if bookmark invalid or prompt
X was aborted.
X
XDESCRIPTION:
X
X book_no is an integer; bufnum, line & col are (optional)
X names of integer variables.
X
X This macro is used to move the cursor to a previously
X saved bookmark. If bufnum, line & col are all NULL or
X omitted, then the buffer and cursor information associated
X with book_no are selected.
X
X If any of bufnum, line or col are specified, then these
X variables are modified to have that information associated
X with the designated bookmark.
X
X If book_no is omitted, then the user will be prompted for
X the bookmark number to go to.
X
XEXAMPLES:
X
X The following example gets the buffer, line & col
X associated with bookmark 5.
X
X (int buf line col)
X (goto_bookmark 5 buf line col)
X
X The following example jumps to bookmark 5:
X
X (goto_bookmark 5)
X.HU getwd
XSYNOPSIS: (getwd ignored dir)
X
XRETURN VALUE:
X
X Returns 1.
X
XDESCRIPTION:
X
X This function returns the current directory in the string
X variable dir. The ignored parameter exists for
X compatability with BRIEF which allows the calling macro to
X specify the drive for the directory. Unix does not support
X the concept of multiple current directories, and so is
X ignored.
X.HU goto_line
XSYNOPSIS: (goto_line [line])
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X Moves the cursor to the beginning of the specified line.
X If line is omitted it is prompted for.
X.HU goto_old_line
XSYNOPSIS: (goto_old_line [line])
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X When a file is read into a buffer, each line is internally
X numbered. These internal line numbers are maintained even
X if lines are inserted and deleted from the buffer.
X (goto_old_line) moves the cursor to the line whose
X original line number was line, or as near as possible if
X the original lines have been deleted.
X
X This macro gets over the problem of editing a source file
X to correct compilation errors, and the lines with errors
X moving as text is inserted or deleted.
X
X If line is omitted, it is prompted for.
X
SHAR_EOF
chmod 0644 help/crisp/prim/G.cmd || echo "restore of help/crisp/prim/G.cmd fails"
mkdir help help/crisp help/crisp/prim >/dev/null 2>&1
echo "x - extracting help/crisp/prim/I.cmd (Text)"
sed 's/^X//' << 'SHAR_EOF' > help/crisp/prim/I.cmd &&
X.HU if
XSYNOPSIS: (if expr [true-list] [false-list])
X
XRETURN VALUE:
X
X Returns value of true-list if expr is true, otherwise
X value of false-list.
X
XDESCRIPTION:
X
X The expression 'expr' is evaluated, and if it is non-zero
X (true), the list expression 'true-list' is evaluated; if
X expr is false, then 'false-list' is evaluated. true-list
X and false-list are optional, in which case the result of
X the (if) expression is undefined if they are omitted.
X.HU index
XSYNOPSIS: (index search-string pattern)
X
XRETURN VALUE:
X
X Returns 0 if pattern cannot be found in search-string;
X otherwise returns the position pattern starts at in
X search-string.
X
XDESCRIPTION:
X
X This function is used to see whether search-string
X contains the substring pattern. A literal substring match
X is performed. This function returns the place in
X search-string where pattern has been located or 0 if it
X does not occur in the search-string.
X
X If the user needs to search for regular expressions, then
X the function search_string should be used instead.
X
XEXAMPLES:
X
X The following example checks to see if a string is a lower
X case alphabetic character:
X
X (string letter)
X .
X .
X (if (== (index "abcdefghijklmnopqrstuvwxyz" letter) 0)
X (message "%c is upper case." letter)
X ;else
X (message "%c is lower case." letter)
X.HU inq_assignment
XSYNOPSIS: (inq_assignment key [convert])
X
XRETURN VALUE:
X
X Returns the name of a macro assigned to a keystroke or the
X name of a keystroke assigned to a macro.
X
XDESCRIPTION:
X
X This macro can be used to find out what macro a particular
X keyboard character is assigned to, or to which key or keys
X a particular macro is assigned to.
X
X key maybe a string denoting the key sequence to be decoded
X or an integer representing the internal key code. If key
X is a string then it should be of the form described under
X (assign_to_key).
X
X convert is an integer expression; if omitted or zero, then
X key is treated as a keyboard character (as defined for
X (assign_to_key)), and the name of the macro assigned to
X that keystroke is returned. If the character is not
X assigned to a macro, and the character is inserted into
X the buffer when the user hits it, then the string
X "self_insert" is returned. If there is no key assignment
X for that key, then "nothing" is returned.
X
X If convert is specified and is non-zero, then 'key' is
X taken as the name of a macro and the keys assigned to
X invoke this macro are returned. The key assignment
X returned is returned using the portable key definitions
X defined for "assign_to_key".
X
X If more than one key stroke is assigned the same macro
X invocation, then the returned string will contain the
X string "<-also>" separating the key sequences.
X
XEXAMPLES:
X
X (message "%s" (inq_assignment "help"))
X generates the message "<Alt-H>".
X.HU inq_borders
XSYNOPSIS: (inq_borders)
X
XRETURN VALUE:
X
X Returns zero if borders are off; non-zero if borders are on.
X
XDESCRIPTION:
X
X Not currently implemented.
X.HU inq_brief_level
XSYNOPSIS: (inq_brief_level)
X
XRETURN VALUE:
X
X Nothing.
X
XDESCRIPTION:
X
X This function exists for compatability with BRIEF. This
X macro is supposed to return the level of nesting of
X sub-shells running BRIEF/CRISP. It is not implemented in
X CRISP, since the functionality can be gained by examining
X the BLEVEL environment variable.
X.HU inq_buffer
XSYNOPSIS: (inq_buffer)
X
XRETURN VALUE:
X
X Returns the identifier associated with the current buffer.
X
XDESCRIPTION:
X
X Every buffer has an identifier (an integer value)
X associated with it. These identifiers are allocated when
X the buffer is created. (inq_buffer) can be used to get the
X identifier for the current buffer, e.g. when saving the
X current buffer in a macro, so that after the macro has
X finished the buffer selected on entry to the macro can be
X re-instated.
X
XEXAMPLES:
X
X The following example is typical of the code sequence used
X in the CRISP macros on entry and exit to each macro.
X
X (int curbuf)
X (= curbuf (inq_buffer))
X .
X .
X (set_buffer curbuf)
X.HU inq_buffer_flags
XSYNOPSIS: (inq_buffer_flags [bufnum])
X
XRETURN VALUE:
X
X Flags associated with designated buffer, or -1 if the
X designated buffer does not exist.
X
XDESCRIPTION:
X
X This macro returns the flags associated with the status of
X the current buffer (if bufnum is omitted) or the buffer
X whose identifier is bufnum.
X
X The flags returned are a set of bits with the following
X bits being defined:
X
X 0x01 Buffer has been modified.
X 0x02 Buffer will be backed up when written.
X 0x04 Buffer is read-only.
X 0x08 Reserved.
X 0x10 File permissions in underlying file has
X the 'x' (execute bit) set.
X 0x20 Buffer has a process associated with it.
X 0x40 Buffer contains a binary file.
X 0x80 Buffer in ANSI mode.
X
X.HU inq_called
XSYNOPSIS: (inq_called)
X
XRETURN VALUE:
X
X A string containing the name of the macro which called the
X current macro, or "" if the macro was called from the
X keyboard.
X
XDESCRIPTION:
X
X This macro exists so that macros can be written which need
X to differentiate between being called directly from the
X keyboard, or being called from another macro.
X
X This is especially useful when writing a (replacement)
X macro.
X.HU inq_cmd_line
XSYNOPSIS: (inq_cmd_line)
X
XRETURN VALUE:
X
X Returns the field currently being typed in by user on the
X prompt line.
X
XDESCRIPTION:
X
X This macro returns the partially typed in text which the
X user is typing on the prompt line. It is used by various
X macros to perform command completion.
X.HU inq_command
XSYNOPSIS: (inq_command)
X
XRETURN VALUE:
X
X A string containing the name of the last macro called by
X the user.
X
XDESCRIPTION:
X
X This macro can be used to find the name of the last macro
X which was invoked by virtue of it being bound to a
X keyboard key.
X.HU inq_environment
XSYNOPSIS: (inq_environment name)
X
XRETURN VALUE:
X
X Returns a string which is the contents of the named
X environment variable, or the null string if the variable
X does not exist.
X
XDESCRIPTION:
X
X This function looks up 'name' in the environment and
X returns the value of name. It is similar to the C function
X getenv().
X.HU inq_file_buffer
XSYNOPSIS: (inq_file_buffer filename)
X
XRETURN VALUE:
X
X Returns the buffer identifier of the buffer which
X currently has filename loaded; it returns 0 if the file
X filename is not loaded into buffer.
X
XDESCRIPTION:
X
X Given the filename, this macro examines all buffers to see
X if any buffer has the designated filename loaded into it,
X and if so returns the buffer identifier.
X
X This is much faster than doing an (inq_names) on each
X buffer to see which buffer contains filename.
X
X This macro is used by the (buffer_list) macro when the
X user writes or deletes a selected entry.
X
XEXAMPLES:
X
X The following example checks to see if "fox.m" is
X currently being edited and if not edit's it:
X
X (if (== (inq_file_buffer "fox.m") 0)
X (edit_file "fox.m"))
X.HU inq_idle_default
XSYNOPSIS: (inq_idle_default)
X
XRETURN VALUE:
X
X Returns the value of the idle keyboard interval timer (in
X seconds).
X
XDESCRIPTION:
X
X This function returns the interval for the idle keyboard
X interval timer. The idle keyboard interval timer is a
X timer which is started after the last keystroke. If no
X keys are hit for (inq_idle_default) seconds then the type
X 4 registered macros are called.
X
X The default idle timer is set by the '-i' command line
X switch. If it is not set on the command line explicitly,
X then CRISP uses a default value of 60 seconds.
X.HU inq_idle_time
XSYNOPSIS: (inq_idle_time)
X
XRETURN VALUE:
X
X Returns the number of seconds since the last key was pressed.
X
XDESCRIPTION:
X
X This function returns the number of seconds since the last
X key was pressed. This macro is used by the autosave macros
X to see if it is time to save the editing buffers.
X.HU inq_kbd_char
XSYNOPSIS: (inq_kbd_char)
X
XRETURN VALUE:
X
X Returns non-zero if there is a character to be read from
X the keyboard; 0 if no character is available.
X
XDESCRIPTION:
X
X This macro provides a simple way of determining whether a
X character is available to be read from the keyboard
X without actually reading it. (See (read_char)).
X.HU inq_keyboard
XSYNOPSIS: (inq_keyboard)
X
XRETURN VALUE:
X
X Returns the identifier associated with the current keyboard.
X
XDESCRIPTION:
X
X This macro may be used to find out what the current
X keyboard identifier is so that it may be restored later.
X
X See keyboard_push, keyboard_pop for further details on
X keyboard identifiers.
X.HU inq_line_length
XSYNOPSIS: (inq_line_length [bufnum])
X
XRETURN VALUE:
X
X (inq_line_length) returns the length of the longest line,
X or -1 if the specified buffer does not exist.
X
XDESCRIPTION:
X
X This command is used returns the length of the longest
X line in the specified buffer (or the current buffer if
X bufnum is omitted). The length corresponds to the column
X position the cursor would be in if the cursor were to be
X placed at the end of the longest line, ie it takes into
X account any embedded tabs and control characters, etc.
X
X If the designated buffer has a marked region, then only
X those lines within the marked region are looked at to find
X the longest line.
X
X
XEXAMPLES:
X
X The following example returns the length of the longest
X line in the current buffer in between the current line and
X the end of the buffer.
X
X # include "crisp.h"
X .
X .
X (int length)
X
X (drop_anchor MK_LINE)
X (save_position)
X (= length (inq_line_length))
X (restore_position)
X (raise_anchor)
X (message "Longest line = %d cols" length)
X.HU inq_lines
XSYNOPSIS: (inq_lines)
X
XRETURN VALUE:
X
X Number of lines in current buffer.
X
XDESCRIPTION:
X
X This macro returns the number of lines in the current
X buffer. It is faster than going to the end of the buffer
X and doing an (inq_position).
X
XEXAMPLES:
X
X Following example prints number of lines in buffer:
X
X (message "Lines = %d" (inq_lines))
X.HU inq_local_keyboard
XSYNOPSIS: (inq_local_keyboard)
X
XRETURN VALUE:
X
X The keyboard identifier associated with the current local
X keyboard, or 0 if there is no local keyboard.
X
XDESCRIPTION:
X
X This function returns the identifier of the current local
SHAR_EOF
echo "End of part 4"
echo "File help/crisp/prim/I.cmd is continued in part 5"
echo "5" > s2_seq_.tmp
exit 0
--
===================== Reuters Ltd PLC,
Tel: +44 628 891313 x. 212 Westthorpe House,
UUCP: fox%marlow.uucp at idec.stc.co.uk Little Marlow,
Bucks, England SL7 3RQ
More information about the Comp.sources.misc
mailing list