REF VEDCOMMS Dan Perri 1989 Updated John Gibson Dec 1996 COPYRIGHT University of Sussex 1996. All Rights Reserved. >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> <<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>> <<<<<<<<<<<<<<<<<<<<< VED COMMAND >>>>>>>>>>>>>>>>>>>>>> <<<<<<<<<<<<<<<<<<<<< PROCEDURES >>>>>>>>>>>>>>>>>>>>>> <<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>>> <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< This REF file describes those Ved commands which are available from the status (command), line, normally referred to as Ved <ENTER> commands. CONTENTS - (Use <ENTER> g to access required sections) 1 Introduction 2 File Management Commands 2.1 Accessing Files 2.2 Leaving Files 2.3 Listing and Deleting Files and Directories 2.4 Miscellaneous 3 Moving Around a File 4 Search and Substitution Commands 4.1 Search and Substitute Commands 5 Formatting Commands 5.1 Justification Commands 5.2 Moving Lines of Text 5.3 Moving Blocks of Text 5.4 Moving the Cursor 6 Indexing Facilities 7 Controlling the Marked Range Markers 8 Text Editor Commands 8.1 Deletion and Retrieval Commands 8.2 Copying (Transcribing) and Moving Text 8.3 Changing Case 8.4 Changing Character Attributes 8.5 Current Character 8.6 Setting a Text Action 8.7 Miscellaneous 9 Printing Commands 10 Program File Commands 10.1 Aids to Programming 10.2 Compilation Commands 10.3 Program Editing Commands 10.4 Moving Around and Searching Program Files 10.5 Miscellaneous 11 Immediate Mode Commands 12 Operating System Interaction Commands 12.1 UNIX Interaction Commands 12.2 Commands to Spawn Sub-Processes 13 Altering Your Ved Environment 13.1 Finding Out About Your Environment 13.2 Setting Text Boundaries 13.3 Setting Variable Values 13.4 Miscellaneous 14 Mail in Ved 15 Time Commands 16 Multiple Commands on One Line 17 Miscellaneous Commands 18 Information on Tailoring Ved 18.1 Command Line and Argument Processing 18.2 Analysing the Argument String --------------- 1 Introduction --------------- Most Ved <ENTER> commands are implemented as Pop-11 procedures with the word "ved_" prefixed to the command name, and it is these Pop-11 procedure names which are documented here. Thus the command <ENTER> ved is described below under ved_ved and so on. There are a few <ENTER> commands which aren't implemented in this way, because they use different rules for separating the command name from any following arguments. These are mainly commands with symbolic (rather than alphabetic) names, such as the various search commands. For consistency, such commands are still documented here as if the corresponding procedures did exist, but are identified by the special label [ pseudo procedure ] For example, the search command <ENTER> / is described by the entry for ved_/. For a full description of the way Ved processes the command line, see HELP * VEDCOMMANDS Many command procedures are defined in autoloadable libraries, mostly from the directory $popvedlib, and can be inspected with SHOWLIB. You can add your own commands by defining suitable "ved_" procedures, either in your "vedinit.p" file or in a private autoloadable directory: see HELP * AUTOLOAD. The file REF * VEDPROCS describes Ved procedures useful for building new commands. Some <ENTER> commands are additionally mapped onto key bindings: see HELP * VEDKEYS See also: HELP * VED For an overview of Ved facilities HELP * UNDO For how to undo deletions REF * DOCUMENTATION (Online documentation) REF * VEDPROCS (Procedures used to implement Ved) REF * VEDTERMINALS (Screen control and key mappings) REF * VEDVARS (Global variables used by Ved) REF * VEDSEARCH (Search and substitution in Ved) --------------------------- 2 File Management Commands --------------------------- These commands give access to files on disc, and enable you to write current files to disc. 2.1 Accessing Files 2.2 Leaving Files 2.3 Listing and Deleting Files and Directories 2.4 Miscellaneous 2.1 Accessing Files -------------------- ved_name [ -w ] [ name ] [procedure] With no argument, shows the vedpathname of the current file on the status line. If given name only, changes the name of the current file to be name. This causes * vedveddefaults to be run, as well as vedsetfiletypes(vedfiletypes), so that the global variables are reinitialised correctly for the new name. The -w flag changes the current file into a (pseudo-file) work buffer with vedfileprops "workbuff" (see Real-File and Pseudo-File Buffers in REF * VEDPROCS). The name of the buffer will be 'workbuff wname' where wname is name if supplied, or the current vedpathname otherwise. See also * ved_work below. ved_pved filename [ filename ... ] [procedure] Call ved_ved in "protected" mode, i.e. with vedwriteable set false to prevent accidental erasure. ved_qved filename [ filename ... ] [procedure] Quit current file and start editing new one. Also see ved_qand. ved_r [ N ] filename [procedure] Read the contents of filename into the current buffer, using the same strategy for locating the file as ved_ved. The optional argument N specifies the line number below which the file contents should be inserted, with 0 meaning the top of the buffer. The default value for N is the current line number. ved_rb [procedure] Rotate Buffers in Ved. Same as <ESC> X if there are only two files being looked at. Uses current window only. ved_rved machine filename [procedure] Reads the file filename from the remote machine into a temporary Ved buffer. (UNIX only.) See also HELP * PIPEUTILS ved_ved [ filename ... ] [procedure] Start or resume editing the file filename. If filename is not an absolute pathname, it is sought first in the current directory, and then in each of the directories specified by vedsearchlist. See TEACH * VED, HELP * VED, REF * VED If more than one filename is supplied, each subsequent file is edited immediately after bringing up the previous one. If no filename is supplied, it defaults to the current value of * vedvedname. ved_work [ name ] [procedure] Start or resume editing a (pseudo-file) work buffer (see Real-File and Pseudo-File Buffers in REF * VEDPROCS). Such buffers have vedfileprops set to "workbuff". The name of the buffer will be 'workbuff name', where name defaults to the current value of vedworkname if omitted. ved_ftp ftp-spec [procedure] (Unix Only) Enables editing of a file on a remote host via Internet FTP (File Transfer Protocol). The format of ftp-spec is the same as for an ftp URL (Uniform Resource Locator, as used by the World Wide Web), except that the leading ftp:// part is omitted. That is, user:password@host:port/cwd1/cwd2/.../cwdN/name;type=type :password may be omitted if no password is required for access, or the whole user:password@ part may be omitted for anonymous ftp. Following host, :port may be absent if the standard ftp port should be used. If present, each cwd component is the argument for a 'change working directory' command to the ftp server, starting from the default login directory of the user on the remote machine. (Thus the format of a cwd component depends on the remote server's operating system.) The ;type=type part may be omitted; if specified, type is an (upper or lowercase) letter, as follows: type meaning ---- ------- A ASCII file I Image (i.e. binary) file D Give directory listing (just filenames) L Give long directory listing If ;type=type is omitted, the default is `A` when name is present, and `D` if name is omitted. (That is, a spec ending in `/` will list the current directory.) Examples It is important to note that the sequence following the host spec is not a Unix pathname. Thus <ENTER> ftp fred@machine/pop/foo.p would access the file 'foo.p' in the sub-directory 'pop' of the login directory of user 'fred', not in the top-level Unix directory '/pop'. To access /pop/foo.p requires <ENTER> ftp fred@machine/%2Fpop/foo.p where the syntax %XX means 'the character with ASCII code hexadecimal XX', i.e. %2F = `/`. (This syntax can be used anywhere in ftp-spec to escape any characters with special meaning.) If 'machine' were a VMS machine, the following would both be equivalent to the first example above: <ENTER> ftp fred@machine/[.pop]foo.p <ENTER> ftp fred@machine/[.pop]/foo.p whereas <ENTER> ftp fred@machine/[pop]foo.p <ENTER> ftp fred@machine/[pop]/foo.p are equivalent to the second. 2.2 Leaving Files ------------------ ved_bye [procedure] Exit Poplog, after writing any files which have been changed. ved_q [procedure] Quit current file. Compare ved_rrq and ved_qand. ved_qand command [procedure] Quits the current file and then executes the specified Ved command command. For example, doing: <ENTER> qand ref lists Is the same as doing: <ENTER> qref lists ved_qq [procedure] Quit from Ved and Poplog, returning to the operating system shell, etc. Complains if any files have changed. ved_qpop [procedure] Quit the current file and exit from Ved to Pop-11 or the language sub-system from which Ved was invoked. ved_rqq [procedure] Really Quit from Ved and Quit from Pop-11 without asking questions. ved_rrq [procedure] Really Really Quit current file without asking questions. ved_wq [procedure] Write current file and quit. ved_xx [procedure] Write all altered files, exit from Ved, exit from Pop-11. ved_w [ filename ] [procedure] If filename is specified, copy the current buffer to a disk file called filename. Otherwise, write ALL changed files to disk. ved_w1 [procedure] Write only current file. ved_wapp filename [procedure] Write and APPend the current file to filename. ved_wappdr filename [procedure] Write and APPend the marked range to filename then Delete the marked Range. See also ved_mo. ved_wappr filename [procedure] Write and APPend the marked Range to filename. See also ved_to. ved_wqved filename [procedure] Write current file, quit it, then call Ved with new filename. ved_wr filename [procedure] Write marked range to filename. ved_wved filename [procedure] Write current file, then call Ved with the new filename. NOTE: There is also a set of quit commands such as "ved_qdoc word" which quits the current file (like ved_q) and invokes Ved to examine the online documentation file named word. These are detailed in REF * DOCUMENTATION 2.3 Listing and Deleting Files and Directories ----------------------------------------------- ved_dired [procedure] Loosely based on EMACS dired, this command provides facilities for browsing through directories, examining files, deleting, copying re-naming, etc. with a minimum of typing. The -flag, if present indicates action to be performed. The extra argument can be a file name or search string. If necessary file name is extracted from current line in Ved buffer. Autoloadable user- defined extensions are supported. See HELP * DIRED, * DIRED.SHORT ved_qdired [procedure] After extracting file name, or pattern, from current line, it quits the current file and then runs ved_dired. See HELP * DIRED ved_dir [ options ] [ filenames ] [procedure] Ved interface to the VMS "DIR" command. Uses the same syntax, and provides the same options as "DIR" (because the arguments options and filenames are passed directly to VMS). See HELP * DIR for examples. veddirdefaults() [procedure variable] VMS only. Called when ved_dir creates a temporary Ved buffer in which to display a directory listing. Calls vedveddefaults, makes the file unwriteable, and sets vedindentstep to 20. See LIB * ved_dir. ved_ls [ flags ] [ filenames ] [procedure] Ved interface to the Unix "ls" command. Uses the same syntax, and recognises the same flags as "ls" (because the arguments flags and filenames are passed directly to Unix). See HELP * LS for examples. vedlsdefaults() [procedure variable] UNIX only. Called when ved_ls creates a temporary Ved buffer in which to display a directory listing. Calls vedveddefaults, makes the file unwriteable, and sets vedindentstep to 8. See LIB * ved_ls. ved_purge [ filenames ] [procedure] ved_del [procedure] The command ved_purge uses ved_ls (on Unix platforms), or ved_dir (on VMS platforms), to create a directory listing, and then suggests that the user should mark unwanted files with a `*`, and then delete them, by calling ved_del followed by either ved_shell (Unix) or ved_dodcl (VMS). See HELP * PURGE 2.4 Miscellaneous ------------------ ved_cd directory [procedure] Makes the named directory the current working directory. With no argument, makes the current directory the same as your login directory. See also HELP * CD ved_cdiff [procedure] Compare two Ved files ignoring characters in the string ved_cdiff_ignore, the default being: '\s\t\n\r' -> ved_cdiff_ignore; Compare ved_diff. HELP * CDIFF ved_diff [procedure] Compare current file and next file from top of stack, starting at current line in each. Stops as soon as lines that differ are found in the two files, and sets the command to be "nextsame". Compare ved_cdiff. HELP * DIFF ved_files [procedure] Print out information about current files in the editor. Indicates whether they need compiling or writing etc. See also TEACH * FILES ved_nextdiff [procedure] Like ved_diff, but first moves down a line in each file. See HELP * DIFF ved_nextsame [ integer ] [procedure] Compares lines in the current file with lines in the next file in vedbufferlist until two are found to be the same, within limits set by ved_nextsame_limit (default 60). If an integer argument is given the limit is changed, and then the command obeyed. If two identical lines are found, the current command is changed to be "nextdiff". See HELP * VED_NEXTSAME ved_pwd [procedure] Print current working directory on status line. ----------------------- 3 Moving Around a File ----------------------- These commands enable a user to move directly to a place in the current file, specified by line number, feature, or relative to the current position. ved_number [pseudo procedure] Move to line number, e.g. <ENTER> 99 to go to line 99. ved_@arg [pseudo procedure] Ved move commands. The arg argument specifies which line to go to, thus: arg go to --- ----- a first line of file z last line of file m first line of marked range e end of marked range integer go to line number integer +integer go forward by integer lines -integer go back by integer lines (Note that <ENTER> @ actually invokes the user-definable procedure ved_moveto, which by default provides the above options.) ved_cps [procedure] Clear position stack. Previously stacked positions will be discarded. ved_moveto where [procedure] Moves to the place in the file specified by the where argument, which can take the following values: where Meaning ----- ------- a Start of file z End of file m Start of marked range e End of marked range +N Forward N lines -N Backward N lines N Line N ved_cols [procedure] Causes the current column number to be displayed on the status line, instead of the current line number (affects the current file only). If called again, the line number display is restored, i.e. calling it toggles the current mode. Uses * vedstatusshowcols. ved_xdn [procedure] Scroll other window down. Also done by <ESC> <LF> buttons. ved_xup [procedure] Scroll other window up. Also done by <ESC> <BS> buttons. ----------------------------------- 4 Search and Substitution Commands ----------------------------------- See REF * VEDSEARCH for full details of the following search commands: * ved_/ * ved_" * ved_\ * ved_` * ved_search * ved_backsearch * ved_re_search * ved_re_backsearch * ved_ss * ved_ww 4.1 Search and Substitute Commands ----------------------------------- See REF * VEDSEARCH for full details of the following substitution commands: * ved_gs * ved_gsr * ved_gsp * ved_gsl * ved_s * ved_sgs * ved_sgsr ---------------------- 5 Formatting Commands ---------------------- These are commands available from Ved to justify, indent, or re-align lines of text or code within a file. 5.1 Justification Commands 5.2 Moving Lines of Text 5.3 Moving Blocks of Text 5.4 Moving the Cursor 5.1 Justification Commands --------------------------- ved_fill [procedure] Justify marked range as if in text file (whether it is or not) See ved_j, ved_jcp, ved_jp, ved_fp. ved_fp [procedure] Fill current paragraph (even if in a program file). See ved_fill. ved_gobble [procedure] Remove excess spaces from the marked range, leaves a single space between words. Can be used to undo ved_jj. ved_j [procedure] "Justify" marked range. If it's a program file runs ved_tidy to indent program text. Otherwise runs ved_fill, which right-justifies text without right-alignment. See ved_fill, ved_tidy. For text files, uses vedleftmargin, and vedlinemax. for program files uses vedindentstep. ved_jcp [procedure] Justify current procedure, using ved_tidy. ved_jj [procedure] Fully "Justify" marked range. Aligns left and right margins, uses vedleftmargin, and vedlinemax. ved_jjp [procedure] Fully justify current paragraph. ved_jp [procedure] Justify current paragraph if text file, procedure otherwise. ved_jrefmr [column] [procedure] This command is used for justifying REF file identifier entries. It right-justifies the text in the marked range (like * ved_jj) ignoring any lines with format-spaces and graphic-characters. The left column of the justified text is specified by column. If column is not specified a default of eight is used. See REF * REFFORM for more information on formatting REF files. 5.2 Moving Lines of Text ------------------------- ved_ac [procedure] Centres each line in marked range between left and right margins. ved_al [procedure] Aligns first character of each line in marked range with the left margin. ved_ar [procedure] Aligns last character of each line in marked range with the right margin. ved_centre [ string ] [procedure] Puts string at centre of current line. If string is empty or is '.', moves existing line of text to centre. Uses vedleftmargin and vedlinemax. ved_right [ string ] [procedure] Puts string at right of current line, as defined by vedlinemax. If there's no argument, it moves all the text on the current line to the right. 5.3 Moving Blocks of Text -------------------------- ved_bc [procedure] Moves the marked range left or right so that the longest line of the range is centred between the two margins. See HELP * FORMAT ved_bl N [procedure] Moves the marked range N characters to the left. N defaults to 1. ved_br N [procedure] Moves the marked range N characters to the right. N defaults to 1. ved_ljmr [ integer ] [procedure] Left Justify Marked range, by shifting text in marked range integer spaces to the left. If no argument is given, it defaults to the current value of vedleftmargin. If 0, then all leading spaces are removed. Otherwise at most integer leading spaces are deleted. This preserves relative indentation. If the argument is a negative integer, then the marked range is shifted that number of spaces to the right. Compare ved_bl and ved_br. ved_bl complains if some lines cannot be shifted left whereas ved_ljmr ignores them. 5.4 Moving the Cursor ---------------------- ved_mc N [procedure] Move N characters to right, or to left if N negative. ved_mw N [procedure] Move N words right. Like ved_mc but uses vedwordright. E.g. stops on ' and ";;;" . ---------------------- 6 Indexing Facilities ---------------------- The <ENTER> newindex command enables the user to build an index to a file, with section headers that provide direct access to specified sections. ved_g [procedure] Used to find information in HELP and TEACH files provided with an index (either by the new ved_newindex or the old ved_indexify). ved_newindex [ sp | nosp ] [procedure] Builds or updates a new-style index from header lines in a documentation file. The new-style index lines are recognised by <ENTER> g. Header lines in the file are recognised as one of the three types listed below, in each case 'underlined' by a following line starting with (at least 3) G- graphics characters (they may also be 'overlined' with G- characters as well, but this is optional): Level Format ----- ------ 1 DD text where DD is one or two digits starting at column 1, e.g. 5 Major Heading 2 DD.DD text where DD.DD is a sequence of digits containing a `.`, starting at column 1 and not extending past column 5, e.g. 5.3 Minor Heading 3 ... text e.g. ... Minor Sub-heading The index lines constructed for each of these types, and recognised by ved_g, appear as follows: Col 12345678901234567890 DD text DD.DD text ... text where the spacing between the numeric part and the text part is adjusted to produce the above alignment. E.g, the index for the examples given would appear as: 5 Major Heading 5.3 Minor Heading ... Minor Sub-heading The header lines themselves are also adjusted to have a standard spacing between the two parts (enabling ved_g to search for a fixed translation of any index line). The "underlining" of the headers with G- characters is assumed to be of two types: (a) full-width (extending to at least 70 columns), and (b) extending to less than or equal the width of the header line itself. Where the underline is shorter in lines of type (b), only the the initial width(underline) characters of the header line are used as the index line (this enables such lines to have additional annotation on the right which will not appear in the index). Lines of type (b) then have their underlining adjusted to conform with any adjustments tp the header (as well as a preceding "overlining" line if present). Character attributes on the header lines are preserved in the index lines. The index is constructed either with or without blank lines separating each level 1 index line from the preceding line. This is controlled as follows: If the optional sp argument is present, extra spacing is added; if nosp is present, spacing is not added. Otherwise, the default is to add spacing, unless an existing index is being replaced, in which case the style of the old index is maintained. From Version 15+, ved_newindex also makes each index line be a text action (see Embedded Text Actions in REF * VEDPROCS). All index line characters have the active attribute added, and the command string '(SN)g' is attached to the first non-space character on each line. The same is done for the initial (numeric plus spaces) part of each header line, with the command '(S)g;;;back to index' attached. ved_newheading [ help|ref ] [ r ] [procedure] Make the current line a section header. See * ved_newindex for a description of header line formats. Giving the help argument will cause the lines around major headings to extend the length of the screen (see HELP * VEDSET for an example.) Giving the ref argument will produce major headings like those seen in this file. If neither argument is specified ved_newheading attempts to guess the appropriate setting. If the optional r (for renumber) is specified every heading in the current file is updated so the major and minor section numbers are contiguous. The number and type of the heading used depends on the preceding heading. Major and minor section numbers are incremented appropriately. If the previous header line started with '...' (it was a sub-heading), this is inserted at the beginning of the current header line. Old style REF & HELP headers (produced by ved_heading) are automatically converted into the new style by ved_newheading. ved_heading [procedure] Insert leading and trailing hyphens to make section header for old-style HELP or TEACH file. ved_indexify [procedure] Adds an old-style index in form required for ved_g in a TEACH or HELP file. --------------------------------------- 7 Controlling the Marked Range Markers --------------------------------------- These commands are available to manipulate the range markers. ved_crm [procedure] Clear range mark. Don't alter buffer, just remove mark. ved_mbe [procedure] "Mark" current file from Beginning to End. ved_mbf [procedure] "Mark" from beginning of file. ved_mbp [procedure] "Mark" from beginning of procedure. ved_mcp [procedure] "Mark" whole of current procedure. ved_mef [procedure] "Mark" to end of file. ved_mep [procedure] "Mark" to end of current procedure. ved_mark range_name [procedure] Calls * ved_mark_named_range with consword(range_name) as argument, to mark the range named by range_name. ----------------------- 8 Text Editor Commands ----------------------- These are all of the text editor facilities, not related to search or justification of text. (See separate sections for information on those facilities.) All these commands can also be used on program files. 8.1 Deletion and Retrieval Commands 8.2 Copying (Transcribing) and Moving Text 8.3 Changing Case 8.4 Changing Character Attributes 8.5 Current Character 8.6 Setting a Text Action 8.7 Miscellaneous 8.1 Deletion and Retrieval Commands ------------------------------------ ved_clear [procedure] Delete everything from the current file. Can be retrieved by ved_y. ved_cut [procedure] Removes the text between the two most recently saved ("pushed") positions on vedpositionstack, to a temporary buffer (vvedcut_dump), from where it can be recovered (using ved_splice), repeatedly if necessary. ved_d [procedure] Delete marked range, and copy into vveddump. Compare ved_cut. Data can be retrieved from vveddump and inserted after the cursor, using ved_y, repeatedly if necessary. ved_da [procedure] Like ved_d, but append to vveddump. ved_dc [ N ] [procedure] With no argument, deletes the character under the cursor. Given an integer N, deletes the N characters to the right of the cursor. If N is negative, the abs(N) characters to the left of the cursor are deleted. ved_de [procedure] Delete from current cursor position to End of line (same as vedcleartail). ved_deof [procedure] Delete to end of file, from current line, inclusive. ved_dl [ - ] N [procedure] Delete N lines, counting up if negative. ved_ds string [procedure] Delete from current position up to but not including next occurrence of string. Uses ved_cut. ved_dsb string [procedure] Delete between current position and beginning of last occurrence of string. ved_dw [ - ] N [procedure] Delete N words, counting left if negative. ved_splice [procedure] For use with ved_cut. Copy text from vvedcut_dump into current file immediately after current cursor location. (Unlike ved_y, which inserts it after the current line.) See ved_cut, ved_y, ved_yankl, ved_yankw. ved_yankc [procedure] Copy marked range into the command file. See HELP * VEDCOMMANDS ved_y [ linenum ] [procedure] Copy contents of vveddump into current file after current line, or after linenum if supplied. (See ved_copy, ved_d, ved_da, ved_tr, ved_splice, ved_cut.) For example <ENTER> y 0 will insert vveddump at beginning of file. ved_yankl [procedure] Copy contents of vvedlinedump after current line. Can be used after deleting a line, to get it back. ved_yankw [procedure] Copy contents of vvedworddump into current line after cursor. vvedworddump contains last text deleted by word left delete, word right delete, delete line to left, or delete line to right. 8.2 Copying (Transcribing) and Moving Text ------------------------------------------- ved_ca [procedure] Copy and Append marked range. Text in marked range is appended to vveddump. See ved_copy. ved_copy [procedure] Copy the marked range into vveddump. See ved_ca, ved_y, ved_splice, ved_copy. Unlike ved_ca this over-writes previous value of vveddump. ved_m [procedure] Move marked range to after current line. ved_mi [ filename ] [procedure] Move the marked range In from the file filename into the current file, or from the last file edited if filename omitted. See HELP * INOROUT and ved_mo, ved_ti, ved_to. ved_ml [ - ] N [procedure] Move N lines down (up if negative). N defaults to 1. ved_mo [ filename ] [procedure] Move the marked range Out from the current file into the file filename, or the last file edited if filename omitted. See HELP * INOROUT, ved_mi, ved_ti, ved_to. ved_over [procedure] Overlays a block of text from the marked range, to the block at the cursor position. ved_t [procedure] Transcribe marked range to after current line. ved_tr [procedure] A synonym for ved_t, which copies the marked range to the cursor. ved_ti [ filename ] [procedure] Transcribe In the marked range from the file filename, or the last file edited if filename is omitted. See HELP * INOROUT ved_to [ filename ] [procedure] Transcribe Out the marked range of the current file into the file filename (at the cursor position in the latter), or last file edited if filename is omitted. See HELP * TO 8.3 Changing Case ------------------ ved_capword [ N ] [procedure] Calls vedcapword N times. N defaults to 1. Each call makes sure first character of current word is upper case and remainder lower case. Then moves to next word. Can be assigned to a key. ved_ccw [ N ] [procedure] Change Case of Words. Changes the case of the characters in the next N words, where N defaults to 1 if not given. See also ved_lcw and ved_ucw. ved_lcw [ N ] [procedure] Lower case words. Transforms next N words to lower case. N defaults to 1. See ved_ucw. ved_lcl [ N ] [procedure] Lower case lines. Like lcw, but for lines. Moves to next line. ved_lcr [procedure] Lower case range. Transform marked range to lower case. ved_ucw [ N ] [procedure] Upper Case Words. Transforms next N words to upper case. N defaults to 1. See ved_lcw. ved_ucl [ N ] [procedure] Upper Case Lines. Like ved_ucw but transforms lines. Moves to next line. ved_ucr [procedure] Upper Case Range. Transform marked range to upper case. 8.4 Changing Character Attributes ---------------------------------- Ved is able to represent attributes such as "bold", "underline", and a colour number (0 to 7) for each character in the buffer. There is currently a single Ved command for setting or changing these attributes, ved_chat, described below. (For program use, there is also a syntax for specifying attributes in Pop-11 strings and character constants, described in REF * ITEMISE.) Where any character in a line has non-zero attributes, that line in the Ved buffer is represented by a dstring rather than an ordinary one. (A dstring is an alternate form of string which maintains an extra byte for each character to hold the attribute bits -- see Display Strings in REF * STRINGS.) On the other hand, when a file is written, character attributes are translated to special sequences containing control characters, which are then translated back to attribute bits when the file is read in again. See Ved File Representation in REF * VEDPROCS for more details. Note that the way in which a particular attribute will display (or whether it displays at all), is terminal-dependent. (This is controlled by the procedure * vedscreencharmode, whose definition will change for different screens.) For example, on VT100-compatible screens, the attributes "bold", "underline" and "blink" will display, but "alt font" (generally used for italic) will display as underlining. The same is true for xterm Ved (except for "blink", which displays as bold). Aside from colour on monochrome screens, XVed is capable of displaying all attributes. Note that by default, "alt font" will display as underlining; to make it display as italic, you need to set the altFont resource for the window to a suitable italic-style font -- see General Window Settings in REF * XVED As regards the use of the colour numbers 1 to 7, Ved uses the convention that the even-numbered colours 2, 4 and 6 are foreground-only (i.e. characters drawn in these colours have the normal colour 0 background), while the odd-numbered colours 1, 3, 5 and 7 change the background as well. This allows a sensible interpretation for colour on monochrome screens/terminals, namely that even colours show up as normal, whereas odd colours display as inverse video. For XVed, you can change the actual colours used for any particular colour number; again, see General Window Settings in REF * XVED From Poplog Version 15+, a new attribute 'active' has been introduced: this is used to delineate the extent of text containing embedded commands (see Embedded Text Actions in REF * VEDPROCS). It also modifies the colour number, giving 8 additional colours 0A - 7A (the even/odd convention applies to these also). Note that if in doubt as to the set of attributes on any particular character, you can use the command <ENTER> cc to display them symbolically (see ved_cc in this file). WARNING DON'T attempt to use attributes on program code, except inside comments. While this will not cause problems for code compiled directly from a Ved buffer (e.g. with <ENTER> l, or loading a marked range, etc), it WILL when written to a file and compiled outside of Ved. This is because the extra characters used to represent attributes in files will appear to compilers as spurious code, and will cause compilation errors. Using attributes inside comments is quite safe, however, since in this context the extra characters will be ignored. ved_chat scope attr [procedure] CHanges ATtributes on characters. The scope argument is a letter or -letter specifying the scope of the change, as follows: c Current character w Current word l Current line -c Last character -w Last word -l Last line r All characters in the current marked range s All characters in the current XVed selection f All characters in the current file (Note that there should be no space between the "minus" and the letter). For r, s and f the cursor position remains unchanged afterwards; for the others, the cursor is moved to after the scope in which the change is made, i.e. to the next character, word or line (if `-` is present, this means the cursor will finish up where it was). Note that -w will only apply to the preceding word if the current position is in between two words. attr specifies the attribute(s) to be set, added or removed on each character within scope, and is a sequence of attribute letters, optionally preceded by `+`, `-` or `~`. An initial + means ADD the given attributes to any currently on each character; an initial - means REMOVE them from each character (but leaving any other attributes unchanged); an initial ~ means INVERT the given attributes. None of these present means SET each character to have just those attributes. The allowable attribute letters/numerals are identical to those used to specify attributes in Pop-11 strings and characters constants (see Backslash in Strings & Character Constants in REF * ITEMISE), as follows: Letter/num Meaning ---------- ------- b bold u underline a or i alt font/italic f blink (flash) A active (selects colours 0A - 7A) 0 to 7 colour number 0 to 7 Note that when a non-zero colour number is specified, the effect with + is to just set that colour, with - to remove any colour, and with ~ to toggle between that colour and no colour. For example, <ENTER> chat w bi2 would change the current word to bold italic in colour 2 (removing any other attributes), whereas <ENTER> chat w +bi2 would replace the colour number with 2, and add bold and italic to any existing attributes. ved_ul [ mark [ toggle ] ] [procedure] This command scans the marked range taking special action when the following characters are encountered: # replace with a space and mark the next word for underlining $ replace with space and change mode: underline all words unless preceded by # (until another $ is encountered - then change back) ved_ul may optionally be given a single character mark as an argument, which then is used instead of #. A second character toggle, if supplied, is used instead of $. 8.5 Current Character ---------------------- ved_cc [ d ] [procedure] Displays information about the Current Character at the cursor position. With no argument, displays the character: special characters such as control characters and Ved graphics and special space characters are shown by name. Any attributes the character has are listed (along with 'HAS DATA' if the character has an embedded data item attached to it). With the d argument, any embedded data item on the character is displayed, or 'NO DATA' if it has none. (Strings are displayed surrounded by string quotes to distinguish them from words.) (See * ved_ic for inserting special characters.) ved_ic [ char | dd | d= chars | d: expression ] [procedure] Insert Character. This is used with the char argument to insert special characters such as control characters and Ved graphics and special space characters at the current cursor position. With the dd, d= or d: arguments, it deletes or inserts embedded data on the current character. Without any argument, it calls ved_cc to display the current character instead. To insert a character, the char argument may be ¤ anything for which strnumber will return an integer (e.g. an integer or Pop-11 character constant); ¤ anything for which strnumber will return an integer when prefixed with backslash and surrounded by character quotes (i.e. any valid backslash sequence in a character constant, but without the initial backslash or character quotes). For a full description of the allowable backslash sequences, see REF * ITEMISE, Backslash in Strings & Character Constants. For example, <ENTER> ic 26 <ENTER> ic e = <ENTER> ic `\e` <ENTER> ic G+ = <ENTER> ic `\G+` You can also insert a character with attributes, although note in this case that if the actual character requires a (second) backslash, this must be present. E.g. <ENTER> ic [b3]G = <ENTER> ic `\[b3]G` inserts a bold "G" in colour 3, but to insert a graphics "cross" with attributes requires a backslash before the G: <ENTER> ic [b3]\G+ = <ENTER> ic `\[b3]\G+` char may also be one of 'DEL', 'ESC', 'FF', 'FORM FEED' or 'CTRL X' (in either upper or lower case) to insert the corresponding control characters, i.e. <ENTER> ic ESC = <ENTER> ic esc = <ENTER> ic e <ENTER> ic FF = <ENTER> ic ff = <ENTER> ic ^L <ENTER> ic DEL = <ENTER> ic del = <ENTER> ic ^? <ENTER> ic CTRL X = <ENTER> ic ctrl x = <ENTER> ic ^X etc. (Note that when a control character is inserted, it will be display as the character in vedscreencontrolmark, which is normally the graphics "degree" sign `\Go`.) Embedded Data Supplying the dd, d= or d: arguments leaves the actual character value unchanged, but changes the embedded data on the character. dd means delete any embedded data. d= chars means embed the string chars on the character, e.g. <ENTER> ic d= shooting star would embed the string 'shooting star' (note that any spaces immediately following d= are ignored). If nothing follows d=, nullstring is inserted. d: expression means embed the item produced by evaluating the Pop-11 expression (which must produce a string or a word). E.g. <ENTER> ic d: "foo" would embed the word "foo". ved_inc char_or_word [procedure] Inserts the given char at the cursor position. If given a word, then the value (a character code) of the Pop-11 variable named word is inserted. 8.6 Setting a Text Action -------------------------- ved_tact [ = [ chars ] | : expression ] [procedure] Sets the command on a Text ACTion. See Embedded Text Actions in REF * VEDPROCS for a description of active segments. The current cursor position must be somewhere within one of the active segment(s) delineating the textual extent of the action to be updated (either the first segment, or a continuation). In all cases, ved_tact first calls * ved_text_action_data to find the appropriate place to embed the command (i.e. the first non-space character of the first segment), and then sets the cursor to that position. With no argument, ved_tact just displays any current command, by calling <ENTER> cc d. The interpretation of the = argument depends on whether there are any following chars: if chars are present, this means set the command to the string chars, e.g. <ENTER> tact = ved myfile would set the command to the string 'ved myfile' (note that any spaces immediately following = are ignored). With no chars, = means edit an existing command string. If there is an existing command string with characters chars, the command tact = chars is put on the status line: this can then be edited and re-inserted by typing <RETURN>. If there is no existing command, or the command is not a string, the = argument is ignored and any existing command is just displayed with <ENTER> cc d. The argument : expression means set the action command to the item produced by evaluating the Pop-11 expression (which must produce a non-empty string, or a word). E.g. <ENTER> tact : "setpop" would set the command to the word "setpop". (Note that because an empty string is an active segment continuation marker, ved_tact does not allow you to set an empty string as the command on an action. If for any reason you need to insert a continuation marker manually, this can be done with <ENTER> ic d=. You can remove a continuation marker (or any other data) from a character with <ENTER> ic dd.) ved_mksref [ o ] [ scope ] [procedure] MaKe Section REFerence. This command makes a hotlink (text action) that when executed will find a given ved_newindex section heading in a documentation file. The target file containing the section heading may be either (a) the current file (o argument absent) or (b) some other file (o argument present). In the latter case, the other file must be the second in vedbufferlist (i.e. the one that vedswapfiles would make the current file). In both cases, the required section heading in the target file must be indicated by marking the corresponding ved_newindex index line for it (i.e. the marked range in the target file must consist of a single index line). The text action for the hotlink will then be either (a) a Ved search command for the section heading, or (b) a documentation edit command with an attached search command. (For (b), line 1 of the target file must begin with HELP, REF, DOC etc, followed by the name of the file; this is used to construct the edit command for the file.) The displayed text (to which the text action is attached) is either constructed and inserted automatically at the current cursor position (when scope is absent), or is specified via a * ved_chat scope. In the latter case, ved_chat is called with scope to add the attribute colour 2A to the displayed text. (Note that scope cannot be r to specify the marked range.) If scope is absent, the text inserted automatically is section-description [ in doc-ref ] where section-description is the active segment (attributes bold italic colour 2A) with the text action attached. For case (b) the 'in doc-ref' part is also added, where doc-ref is a separate active segment in the usual "*" doc ref format. ved_mkdref [procedure] MaKe Documentation REFerence. With the cursor positioned anywhere inside a "*" doc reference of the form doctype * name (e.g. HELP * FOO), this command adds the standard character attributes to the reference. doctype is made italic, the spaces surrounding the "*" are changed to Ved no-break spaces (`\Ss`), and the whole reference has colour 2A added. 8.7 Miscellaneous ------------------ ved_ifsp [ scope ] [ ss_char ] [procedure] Insert Format SPaces (for use when preparing REF files). This command inserts format-control (`\Sf`) or prompt-marker (`\Sp`) spaces at the beginning of each line in the given scope. The special space character overwrites column 1 of each line (which must contain an ordinary space, Sf or Sp already). scope may be one of: l Current line -l Last line r All lines in the current marked range If omitted, scope defaults to r, i.e. the marked range. ss_char specifies the kind of space to be inserted: f Format-control (Sf) p Prompt-marker (Sp) - Remove any special space, write an ordinary space. The default for ss_char if omitted is f. (<ENTER> ifsp is normally used in conjunction with <ENTER> dssp, which allows all the special spaces in a file to be displayed as visible characters -- see * ved_dssp below.) ved_smr [ -f ] [ n ] [procedure] Sort the marked range in alphabetical order, treating each line as a string of characters. If given the argument -f, fold uppercase letters onto lower, thus ignoring case differences when sorting. The optional integer argument n can be used to specify a (space-separated) field number to sort on. ved_sw [procedure] Transpose two characters to the left of cursor. (Best assigned to a key). ved_swl [procedure] Swap current word with word on left. Uses space as delimiter. ved_swr [procedure] Swap current word with word on right. Uses space as delimiter. ved_slrhs [procedure] When this command is given on a line containing an assignment arrow (* ->) it produces a copy of the line with the text on the left and right of the arrow swapped around (without any identprops which were on the original line.) This can be used to quickly create the synopsis line for the updater of a procedure in a REF entry, see REF * REFFORM ved_strip [procedure] Strips all special Ved encodings from the current buffer (i.e. removes all character attributes, Ved special characters and embedded data), resulting in a plain ASCII equivalent of the file. This command simulates the effect of writing out the file with a value of 1 for * vedwriteoutplain, and then reading it back in again. That is, * vedfile_line_consumer is used (with plain argument 1) to 'write' the buffer lines to an internal area, which are then 'read back' with * vedfile_line_repeater (and substituted for the original buffer lines). (Note that the 'reading back' of the lines is affected by the value of * vedreadinplain, as when reading in any file.) -------------------- 9 Printing Commands -------------------- These commands can be used to print files from inside Ved. ved_lp [procedure] ved_lpmr [procedure] These commands provide a Ved interface to the Unix "lp" facility. See HELP * LP, HELP * LPMR ved_lpr [procedure] ved_lprmr [procedure] These commands provide a Ved interface to the Unix "lpr" facility. See HELP * LPR, HELP * LPRMR ved_print [ flags ] [ files ] [procedure] Operating system independent command to print the current file or a set of named files. For full details see HELP * VED_PRINT ved_hprint [ flags ] [ files ] [procedure] Like ved_print but with the "-h" (header) flag set; any arguments are passed verbatim to ved_print. ved_printmr [ flags ] [procedure] ved_rngprint [ flags ] [procedure] Operating system independent command to print the marked range from the current file. For full details see HELP * VED_PRINT ------------------------- 10 Program File Commands ------------------------- These are the commands available for dealing with program files. The previous commands may all also be used with program files. Also included here are commands that enable the user to make simple additions to Ved. Some additional relevant commands are included in other sections in this file, e.g. ved_gsp, ved_mbp, ved_mep, ved_mcp. See REF * VEDPROCS for fuller details on tailoring Ved. 10.1 Aids to Programming 10.2 Compilation Commands 10.3 Program Editing Commands 10.4 Moving Around and Searching Program Files 10.5 Miscellaneous 10.1 Aids to Programming ------------------------- ved_define [procedure] Insert format for procedure definition. ved_if [procedure] Insert format for conditional statement ved_repeat [procedure] Insert format for REPEAT statement ved_unless [procedure] Insert format for unless statement. ved_until [procedure] Insert format for until statement. ved_while [procedure] Inserts a skeleton "while ... endwhile" statement. See HELP * WHILE ved_mm [procedure] Move to Matching end. Uses vedopeners and vedclosers to recognise opening and closing brackets. E.g. If cursor is just before "if", <ENTER> mm moves it to after matching endif. ved_mp [procedure] Match parenthesis. Moves to the bracket matching the one under the cursor. Works in either direction. ved_wiggle [ opening-bracket closing-bracket ] [procedure] Makes the cursor automatically wiggle over the matching opening-bracket when the closing-bracket is typed. See HELP * VED_WIGGLE for full details. For setting up wiggling in your "vedinit.p" file, use * vedsetwiggle. ved_wmp [procedure] "wiggle" matching parenthesis or other bracket. 10.2 Compilation Commands -------------------------- ved_c [procedure] Compile all program files (ie. files with extension .p, .lsp etc.) and exit from Ved, to Pop-11, Prolog, or Lisp, etc, unless * ved_pop_back_file is non-false. ved_c1 [procedure] Just compile (load) one file, the current file and exit from Ved to Pop-11, Prolog, etc. Compiles the file even if its unchanged. See HELP * ved_pop_back_file ved_ccomp arguments [procedure] Run C compiler and read output into Ved. See HELP * CCOMP ved_fcomp arguments [procedure] Available only on Unix, this runs the f77 fortran compiler. See HELP * FCOMP, * PIPEUTILS ved_l [procedure] Like ved_c, but doesn't exit from Ved. ved_l1 [procedure] Like ved_l, but compiles only current file (even if unchanged) ved_lcp [procedure] Load current procedure. Uses ved_lmr. ved_lmr [procedure] Load (compile) marked range from edit buffer. See HELP * LMR Any output produced goes into the current file unless vedlmr_print_in_file is false, or an alternative file name. readline is re-defined to work in the editor. Compare ved_lcp, ved_l, ved_l1. Note that if ved_lmr is used to compile interactive commands, i.e. programs that read input with readline, charin, etc, then this will invoke "immediate mode" on the output file (see HELP * IM). ved_load filename [procedure] Loads the file filename. ved_pcmr [procedure] Prolog_compile marked range. Can be used for Prolog programs. Compiles in re_consult mode. ved_plx [procedure] Writes all files that need writing, compiles any program files that need compiling, and call Prolog on the current file (exiting Ved). ved_uses libname [procedure] Loads the library libname if not already loaded. ved_x [procedure] Write all changed files, compile them, then return to the outer language compiler. Equivalent to ved_w(); ved_c(); See ved_c, ved_x1. ved_x1 [procedure] write then compile the current file, then consult the value of * ved_pop_back_file (qv). 10.3 Program Editing Commands ------------------------------ ved_dcp [procedure] Delete current procedure, and copy into vveddump. ved_delout [procedure] Removes all lines which start '**\s' from the current file (assuming that these are output lines produced by the Pop-11 print arrow => ). ved_tidy [procedure] Do indentation on marked range. (For Pop-11 programs.) See also ved_jp, ved_jcp, ved_fill, ved_j. Controlled by global variables: vedopeners, vedclosers, vedbackers, vedforwarders, vedvarskeywords. See HELP * MARK ved_mbl [procedure] Mark beginning of current list. Uses ved_gbl. Will break line if needed to ensure beginning of list is on separate line. ved_mcl [procedure] Mark current list. Uses ved_mbl and ved_mel. Will break lines if needed. ved_mel [procedure] Mark end of current list. Uses ved_gel. Will break line if needed to ensure end of list is on separate line. 10.4 Moving Around and Searching Program Files ----------------------------------------------- ved_f name [procedure] Uses * vedfindpdheader to search the current file for the definition of a procedure called name. ved_gbl [procedure] Go to beginning of current list. Skips embedded lists. Searches for `[` in Pop-11 source files and `(` in Lisp source files. ved_gel [procedure] Go to end of current list. Skips embedded lists. Searches for `[` in Pop-11 source files and `(` in Lisp source files. ved_gol [procedure] Go out of the current list. Skips embedded lists. Searches for `[` in Pop-11 source files and `(` in Lisp source files. ved_grep [ flags ] string filename [ filename ] [procedure] ved_grep [ flags ] filename ved_grep [ flags ] Search the files for those containing the string. On Unix, runs grep and on VMS runs search with the given arguments and reads the output into a temporary non-writeable Ved file. The optional flags argument is supported only in the Unix version; this also admits more options, described in HELP * VED_GREP 10.5 Miscellaneous ------------------- ved_errs [procedure] Switch whether LMR errors go in file. See HELP * LMR ved_output [procedure] Used to alter vedlmr_print_in_file. See HELP * LMR ved_wtype [procedure] Display information about syntactic properties of the object to the right of cursor in Ved buffer. --------------------------- 11 Immediate Mode Commands --------------------------- In "immediate" (or "interactive") mode, every time the <RETURN> key is pressed, the current line is handed to the current compiler (that is, the compiler procedure for the current subsystem), and copied to the end of the file if not already there. Any output produced is spliced into the file. If the variable vedcrinteractive is made false, then this behaviour of <RETURN> is disabled and ved_lmr must be used to input marked ranges instead. For more details, see HELP * IM, and Ved-Buffer Devices in REF * VEDPROCS ved_end_im [procedure] This command terminates "immediate mode" in a file. (More specifically, it causes "end of file" to be passed to the first suspended process waiting for Ved-buffer device input in the list vedprocwait.) In the default key mapping (see HELP * VEDKEYS), ved_end_im is mapped onto the sequence <ESC> Ctrl-Z. ved_im [ filename ] [procedure] Starts "immediate mode" compilation in the file filename, which defaults to "output.p" if omitted. See HELP * IM ved_imdcl [ filename ] [procedure] (VMS Only.) Starts "immediate mode" DCL command interpretation in the file filename, which defaults to "dclfile" if omitted. See HELP * DCL_COMPILE ved_imcsh [ filename ] [procedure] (Unix only.) Starts "immediate mode" cshell command interpretation in the file filename, which defaults to "cshfile" if omitted. See HELP * IMCSH ved_imsh [ filename ] [procedure] (Unix only.) Starts "immediate mode" Bourne shell command interpretation in the file filename, which defaults to "shfile" if omitted. See HELP * IMSH ved_noprompts [procedure] Remove "prompt characters" from the current file, replacing them by spaces. See HELP * VED_NOPROMPTS ved_switchmode_im [procedure] Switches between two modes by toggling the true/false value of the variable vedcrinteractive. If this is true then in an "immediate mode" file, pressing <RETURN> will input the current line to the compiler, etc. If false, then <RETURN> behaves as normal (i.e. calls inserts a newline); in this case, ved_lmr must be used to input a marked range. ----------------------------------------- 12 Operating System Interaction Commands ----------------------------------------- 12.1 UNIX Interaction Commands 12.2 Commands to Spawn Sub-Processes 12.1 UNIX Interaction Commands ------------------------------- ved_csh command [procedure] Runs the command command and reads the output into a temporary Ved buffer. See HELP * PIPEUTILS ved_cshfile [procedure] This command enables execution of CSH scripts from within Ved. See HELP * VED_CSHFILE for details. ved_killcsh [procedure] This command kills any CSH child processes spawned from Ved. See HELP * KILLCSH for details. ved_killsh [procedure] This command kills any SH processes from Ved. See HELP * KILLCSH ved_shfile [procedure] This command enables execution of SH scripts from within Ved. See HELP * VED_CSHFILE for details. ved_rsh machine command [procedure] ved_remsh machine command [procedure] Runs the command command on the remote machine machine and reads the output into a temporary Ved buffer. See HELP * PIPEUTILS ved_sh command [procedure] Runs the shell command command and reads the output into a temporary Ved buffer. (UNIX only.) See HELP * PIPEUTILS ved_stop [procedure] Suspend current Poplog process, taking you back to the shell. If the process is re-run, then the Ved screen is restored properly. See HELP * STOP 12.2 Commands to Spawn Sub-Processes ------------------------------------- Like some of the search commands, these do not actually correspond to procedures whose names start with "ved_". However they are represented here as if they did for the sake of uniformity. ved_! [ command ] [pseudo procedure] UNIX only. Run command in a sub-process. This is like ved_% or ved_$ depending on value of the SHELL environment variable. See ved_obey (UNIX only). ved_$ [ command ] [pseudo procedure] Obey an operating system command command via a sub-process. On UNIX run command as a "sh" command. On VMS obey it as a DCL command. If no command is given spawn an interactive shell (in Unix) or DCL (in VMS) command. On VMS terminate with "q" or "logout". Compare ved_obey. ved_% [ command ] [pseudo procedure] UNIX only. Obey the command as a "cshell" command in a sub-process. If no command is given, then spawn a C-shell process. (Compare ved_stop, ved_obey.) ved_: popcode [pseudo procedure] Runs procedure vedcompilevedargument, which obeys popcode as Pop-11 code. Any results left on stack will be printed on command line, or at bottom of screen if there is not enough space. ved_shell [procedure] UNIX only. Treats the current file as a sequence of shell commands, and obeys them (using the procedure sysobey). ved_dodcl [procedure] VMS only. Treats the current file as a sequence of DCL commands, and obeys them (using the procedure sysobey). --------------------------------- 13 Altering Your Ved Environment --------------------------------- These commands allow a degree of control over the local environment, by allowing definition of macros, and setting of control variables. See also REF * VEDVARS, and REF * VEDPROCS for details of extended tailoring. 13.1 Finding Out About Your Environment 13.2 Setting Text Boundaries 13.3 Setting Variable Values 13.4 Miscellaneous 13.1 Finding Out About Your Environment ---------------------------------------- ved_hk [procedure] Prompts user to press key(s), then prints the name of the associated procedure, if any. See also ved_hkey. ved_hkey [procedure] Prompts user to press key(s), then prints a description of the associated procedure. See also HELP * ved_hkey, and * ved_hk ved_hkeys [procedure] Using vedkeymapname, this procedure displays a HELP file which shows how Ved uses the keyboard of the terminal currently being used. ved_hkeys is the default value of vedhelpkey, which is usually bound to the key marked "Help", if the terminal has one. 13.2 Setting Text Boundaries ----------------------------- ved_lcol arg [procedure] Sets the left margin to be column number arg (if arg is an integer) or to the current cursor column (if arg is not an integer, say the empty string ''). If arg is '?', displays the current left margin setting. ved_margin [ N ] [procedure] Assign N to vedleftmargin. If no number given, then use cursor position. ved_rcol [ N ] [procedure] Assign N to vedlinemax. If no number given, then use cursor position. ved_ruler [procedure] Inserts a "ruler" detailing margins and tab settings in a marked range above the current line. ved_indent [ N ] [procedure] Alter the value of * vedindentstep to N. Default is 4. Affects tab conversion. ved_linemax [ N ] [procedure] Sets vedlinemax to be N. This represents the position in the line where an automatic line break will occur. With no argument, gives the current setting. ved_ll [procedure] For VT100 terminals with long line modes. Sets terminal in long line mode and adjusts Ved accordingly. LIB * ved_ll for details of dealing with terminals without the "Advanced Video Option" fitted. ved_screenwidth N [procedure] Set the width of the screen (according to the variable vedscreenwidth) to N. ved_tabify [procedure] Changes a file or Ved buffer so that leading spaces (or all spaces) are converted to tabs. See HELP * TABIFY ved_tabs [procedure] Switch conversion of tabs on output. I.e. not(vednotabs) -> vednotabs. 13.3 Setting Variable Values ----------------------------- ved_autosave [mins | reset | off] [procedure] These commands turn on or off or control a facility that enables all changed files to be saved to disk every mins minutes. For full details see HELP * ved_autosave (Compare * vedautowrite, * ved_autowrite.) ved_autowrite [ N ] [procedure] With no argument, simply interrogates the current setting of vedautowrite (ie the number of changes a file can suffer before a backup is written to disc). With an argument, sets the value of vedautowrite. Setting it to zero will disable autowriting. Compare * ved_autosave. ved_break [procedure] Toggles the value of vedbreak between true and false. ved_set variable [ item ] [procedure] With only one argument, toggles the named variable. With two arguments, sets the value of variable to be item. ved_static [procedure] Toggle the value of vedstatic, which controls static mode. ved_window [ Nlines ] [procedure] Alters the size of the current Ved window to be Nlines lines. With no arguments, defaults to the value of vedstartwindow. If Nlines is replaced by the "?" character the current size of the window is reported on the status line. (Note: Second window is still size vedstartwindow instead of 24 - Nlines. This causes seriously weird side effects!) The ved_window command is extended in XVed to alter several different window attributes. See HELP * VED_WINDOW once XVed has been loaded. ved_ws [ Nlines ] [procedure] If no argument is supplied, reports the current value of vedstartwindow. Otherwise assigns Nlines to vedstartwindow, and redisplays the current Ved window accordingly. 13.4 Miscellaneous ------------------- ved_dk [procedure] Define new function for Key sequence. See HELP * DK ved_dm name [procedure] Define a new edit macro ved_name. See HELP * VEDMACROS --------------- 14 Mail in Ved --------------- These commands enable the user to send mail, and manipulate incoming messages. See HELP * VED_MAIL for full details or the relevant appendix in the new Ved User Guide. ved_ccm [procedure] Delete current message. Uses ved_mcm to mark the message (searches for From Username lines) and ved_d to delete it, so the message may be retrieved using ved_y. ved_gm [procedure] Go to message. Used in file produced by * ved_mdir. See * ved_mail. ved_mail [procedure] Spawns a subprocess to interact with the host machine's mail system See TEACH * MAIL, HELP * MAIL mail [syntax] Invoke ved_mail from Pop-11. ved_mcm [procedure] Mark Current Message in UNIX mail file. (Or mbox) ved_mdir [procedure] Make Directory for Unix mail file in current Ved buffer. ved_reply [ arg ] [procedure] Reply to current message in UNIX mail file only. See also HELP * VED_REPLY ved_Reply [ arg ] [procedure] Like ved_reply, but send to all original recipients. ved_send name1,name2,... etc [procedure] Send the current file as mail to named users. See HELP * SEND ved_sendmr [procedure] Like ved_send, but sends only marked range. See HELP * SEND ----------------- 15 Time Commands ----------------- ved_alarm [hh:mm[ss]] [procedure] The Ved screen clock also supports an alarm facility. Without an argument, this command displays the time for which the alarm is set. If given an argument, the alarm is set to that time. (The seconds are optional. Without them, the alarm goes off in the latter part of the minute specified.) ved_clock [ int ] [procedure] ved_clock secs [ int ] (UNIX Only). This invokes LIB * ved_clock to display time on the status line, updated at regular intervals, as described in HELP * VED_CLOCK. The first form toggles the display on and off. The second form specifies that seconds should be shown and updated every INT seconds. The third form does the same, but with no argument toggles display of seconds on and off. ved_date [ linenum ] [procedure] Displays the current date and time (as returned by sysdaytime) on the command line, or if any argument is given, the date is inserted into the current file at the cursor position. See also HELP * DATE ved_secs [procedure] When on, the Ved screen clock defaults to hh:mm (hours and minutes). This command adds/removes seconds from the display. ved_time [procedure] Prints the current date and time (and timezone....) on the command line, in the format returned by sysdaytime. See HELP * TIME --------------------------------- 16 Multiple Commands on One Line --------------------------------- ved_do D command1 D command2 ... [procedure] Allows multiple Ved commands to be executed in a single command. <ENTER> do must be followed immediately by a single delimiter character D which will then separate subsequent commands on the line. D must therefore not occur in the commands, and must not be a space character. E.g. with D = semicolon <ENTER> do;/fred/;mc -5; dc 3;@+6 does: search for 'fred', move back 5 characters, delete 3 characters, then move on 6 lines. -------------------------- 17 Miscellaneous Commands -------------------------- ved_closeall [procedure] In XVed, closes (makes iconic) all windows. ved_draw [procedure] Toggles Ved interactive drawing mode. Drawing mode allows you to draw boxes and tables using the standard Ved graphics characters like: +---------------------------+ | ABC |----------+----------| +-----+----------+----------+ <ENTER> draw toggles the state of interactive Ved drawing. The first time you do this, drawing is turned on for the current Ved buffer, and a message saying: DRAWING ON (DEL to DELETE, RETURN to STOP) is shown on the status line. Note that the drawing mode is local to each Ved buffer -- doing <ENTER> draw in one Ved buffer does not effect other Ved buffers. When drawing is on, you can use your character up/down/left/right keys, or the keys h (left) j (down) k (up) and l (right) to move the drawing cursor around. As you move the cursor, line graphics characters are left behind. If you move the cursor left or right you get horizontal lines. Likewise up or down movement produces vertical lines. You can use the spacebar to delete line characters. Ved will automatically join horizontal and vertical line segments for you using corner, 'T' and '+' junctions to produce clean looking boxes and tables. Pressing DELETE will change the message to: DELETING ON (DEL to DRAW, RETURN to STOP) Thereafter moving the cursor will cause the character under the cursor to be deleted. Pressing DELETE again restores the old behaviour. While you are drawing, you cannot insert standard characters into your Ved buffer (this is to help you remember that you are in drawing mode). To go back to typing mode, hit <RETURN> to stop drawing. Alternatively, you can use <REDO> to redo the ved_draw command, making it easy to toggle between drawing mode and normal mode. ved_dssp [ on | off ] [procedure] Display Special SPaces. Enables Ved special space characters in the current file to be displayed as visible characters -- see Special Spaces Etc in REF * VEDPROCS. (The command has no affect on the display of special spaces in other files.) on means make the spaces visible; off means set them back to normal display (i.e. as ordinary spaces). With neither on nor off, the current mode is toggled. When on, the spaces are displayed as the following characters: Char Name Displayed As ---- ---- ------------ Ss Ved no-break space ° (centred dot `\G.`) Sn ISO Latin no-break space ° (centred dot `\G.`) Sp format-control space f (bold `f` colour 5) Sp prompt-marker space p (bold `p` colour 7) St trailing space S (bold `S` colour 3) (Note that in monochrome, colours 3, 5, and 7 display as inverse video.) ved_mafw [procedure] For system use only. ved_obey [procedure] For system use. Gives its argument minus first character to * sysobey. ved_pop [ ss_name ] [procedure] With no argument, simply exits Ved and returns to whatever language system was in use when Ved was invoked. If a subsystem name ss_name is supplied, then exits Ved and replaces the top-level language compiler outside of Ved with the named subsystem compiler (which must be already be loaded, of course). In either case, the current Ved buffer and list of files vedbufferlist remain intact. ved_popwc [procedure] ved_popwcmr [procedure] Count words in a file or marked range using a slightly modified pop itemiser; see HELP * WORDCOUNT ved_strips [procedure] Interface for the * SOLVER library package. See TEACH * STRIPS ved_vcalc [procedure] Interface for library * VCALC. See HELP * VCALC ved_idprops [identprops] [procedure] Inserts an the specified identprops string in bold-italic text at the far right of the current line enclosed in square brackets. If identprops is not present then any existent identprops on the current line are used. If there is no current identprops on the line, then the last identprops entry inserted by ved_idprops is used (this defaults to "procedure".) ved_wc [procedure] ved_wcmr [procedure] Count words in file, or in marked range. See HELP * WC -------------------------------- 18 Information on Tailoring Ved -------------------------------- The rest of this file is concerned with information for experienced users who are interested in tailoring Ved, by defining new commands. It can be safely ignored by new users. Some examples of Ved extensions appear in HELP * INITIAL.EX with many more examples available in the directory: $usepop/pop/lib/ved UNIX $USEPOP:[POP.LIB.VED] VMS (See DOC * SYSSPEC for more information on Poplog directory structure) 18.1 Command Line and Argument Processing 18.2 Analysing the Argument String 18.1 Command Line and Argument Processing ------------------------------------------ The procedure veddocommand is invoked when the <RETURN> key is pressed while the cursor is on the status line. It causes the command line to be analysed, and the required command to be obeyed. The command line is separated into two strings, these are the command portion C and the argument portion A. In most cases the separation between C and A depends on the Pop-11 itemiser rules, which means that in some cases no intervening space is required. However, special treatment is given to commands that begin with one of the following characters: \ / " ` : $ % ! @ In these cases special commands are invoked as described in the note on special commands in the overview. In all other cases, the string ved_ is prefixed to the command string C and the result given to consword to create the name of a Ved command procedure, which may be a user-defined procedure, or an autoloaded procedure, and the procedure is then run, or an 'UNKNOWN COMMAND' error reported. (See HELP * AUTOLOAD The characters in the string C are all converted to lower case. Thus all the Ved <ENTER> commands can be given in upper or lower case. The argument string is not converted, except in the case of HELP, TEACH, REF, DOC and SHOWLIB commands, unless the command has a mixture of upper and lower case. Further information about the command line is provided in HELP * VEDCOMMANDS 18.2 Analysing the Argument String ----------------------------------- The command procedure has access to the whole command string as it is held in the global variable vedcommand. The argument string A is held held (without leading tabs or spaces) in the global variable vedargument. It may be recognised as empty, by the test: vedargument = nullstring If the argument is meant to be a number, the procedure strnumber can be used to convert it, e.g. strnumber(vedargument) -> number; See REF * strnumber If the argument string is to be broken into a list of separate items, it is possible to use the code: sysparse_string(vedargument) -> list; See REF * sysparse_string +-+ C.all/ref/vedcomms +-+ Copyright University of Sussex 1996. All rights reserved.