From d7dffdeb1dfb812e579d6d3b518545b23e1b50cb Mon Sep 17 00:00:00 2001 From: Blake McBride Date: Sat, 6 Jun 2015 10:29:56 -0500 Subject: [PATCH] Documentation and macro enhancements --- doc/BUILD.txt | 10 +- doc/Summary.lyx | 2033 +++++++++++++++++++++++++++++++++++++++++++++++ doc/Summary.pdf | Bin 43618 -> 51414 bytes lib2/bl.tec | 2 +- lib2/bw.tec | 3 +- lib2/commands | 15 +- lib2/dlr.tec | 3 + lib2/dw.tec | 3 +- lib2/ew.tec | 3 +- lib2/jmp.tec | 3 +- lib2/nla.tec | 3 + lib2/nlb.tec | 3 + lib2/teco.ini | 3 + 13 files changed, 2074 insertions(+), 10 deletions(-) create mode 100644 doc/Summary.lyx create mode 100644 lib2/dlr.tec create mode 100644 lib2/nla.tec create mode 100644 lib2/nlb.tec create mode 100644 lib2/teco.ini diff --git a/doc/BUILD.txt b/doc/BUILD.txt index 35b796b..b799570 100644 --- a/doc/BUILD.txt +++ b/doc/BUILD.txt @@ -60,9 +60,17 @@ You should set that environment variable to the directory (full path) where the macros are to exist. Note that TEC_LIBRARY must contain a trailing slash. +When teco starts up, it is capable of running a start-up file to set +initial preferences. The file must be specified by the TEC_INIT +environment variable. The value of that variable must start with a +dollar sign ($) followed by the complete path to the start-up file. +For example, on a Unix like system you could use: + + export TEC_INIT=\$/home/me/teco/teco.ini + Lastly, the "tec" file extension means "teco macro". There is also a file type "tes". That stands for "teco macro source". Generally, if you have a small macro, you'd just put it in a .tec file. Larger macros would be written in a .tes file allowing comments and space. Later -the squeeze function can be used to convery a .tes file into a .tec +the squeeze function can be used to convert a .tes file into a .tec file. diff --git a/doc/Summary.lyx b/doc/Summary.lyx new file mode 100644 index 0000000..5f6481a --- /dev/null +++ b/doc/Summary.lyx @@ -0,0 +1,2033 @@ +#LyX 2.0 created this file. For more info see http://www.lyx.org/ +\lyxformat 413 +\begin_document +\begin_header +\textclass article +\use_default_options false +\maintain_unincluded_children false +\language english +\language_package default +\inputencoding auto +\fontencoding global +\font_roman default +\font_sans default +\font_typewriter default +\font_default_family default +\use_non_tex_fonts false +\font_sc false +\font_osf false +\font_sf_scale 100 +\font_tt_scale 100 + +\graphics default +\default_output_format default +\output_sync 0 +\bibtex_command default +\index_command default +\paperfontsize 11 +\spacing single +\use_hyperref false +\papersize letterpaper +\use_geometry true +\use_amsmath 1 +\use_esint 1 +\use_mhchem 0 +\use_mathdots 1 +\cite_engine basic +\use_bibtopic false +\use_indices false +\paperorientation portrait +\suppress_date false +\use_refstyle 0 +\index Index +\shortcut idx +\color #008000 +\end_index +\leftmargin 1in +\topmargin 1in +\rightmargin 1in +\bottommargin 1in +\secnumdepth 3 +\tocdepth 3 +\paragraph_separation skip +\defskip medskip +\quotes_language english +\papercolumns 1 +\papersides 1 +\paperpagestyle default +\tracking_changes false +\output_changes false +\html_math_output 0 +\html_css_as_file 0 +\html_be_strict false +\end_header + +\begin_body + +\begin_layout Standard +\align center + +\size largest +TECO Summary +\begin_inset Foot +status open + +\begin_layout Plain Layout +Blake McBride (blake@mcbride.name), rev 6/6/2015 +\end_layout + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset VSpace bigskip +\end_inset + + +\end_layout + +\begin_layout Standard +Teco is a character oriented editor. + This differs from +\emph on +ed +\emph default + which is line oriented, and +\emph on +vi +\emph default + which is screen oriented. + Teco deals with one character at a time and makes only little distinction + between one line and another. + Therefore, at any given time, the current location teco sees is a character + position and not a line. +\end_layout + +\begin_layout Standard +Interestingly, the original emacs editor was written as a series of teco + macros. +\end_layout + +\begin_layout Standard +In what follows the $ character is the Escape key. + $ is used to separate one command from another. + $$ is used to cause teco to execute the entire command. + Therefore, teco doesn't actually do anything until $$ is hit. +\end_layout + +\begin_layout Standard +Even though the command are shown in capitol letters, one would normally + use lower case letters. + They are shown in upper case to avoid confusion (l vs. + L, etc.). +\end_layout + +\begin_layout Standard +\begin_inset VSpace bigskip +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +$ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Escape key - command delimiter +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +$$ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Two escape keys - execute string +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +n +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Some number (implied default is usually 1) +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +file +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +The name of a file +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +text / find / replace +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Arbitrary text +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +q +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +A named storage area called a q-register. + Use any +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +character a-z and 0-9 to name the register. +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset VSpace bigskip +\end_inset + +Exiting +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +EX$$ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +save & exit +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +-1EX$$ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Forced exit without saving +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset VSpace bigskip +\end_inset + + +\end_layout + +\begin_layout Standard +File commands +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +EC +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Save, close, and clear current buffer +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +EKHK +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Abort edit +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +EBfile$ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Open file +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Y +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Read file +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset VSpace bigskip +\end_inset + + +\end_layout + +\begin_layout Standard +Displaying text (not for Video Teco) +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +T +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Type current character to EOL +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +HT +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Type entire file +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +nT +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Type n lines starting at current character +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +V +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +View entire line +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +nV +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +View n lines around current line +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset VSpace vfill +\end_inset + + +\begin_inset Newpage pagebreak +\end_inset + + +\end_layout + +\begin_layout Standard +Cursor movement commands +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Macro +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Command +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Description +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +nC +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Move n characters forward +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +nR +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Move n characters reverse +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +nL +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Move n lines forward (to the beginning of that line) +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +nBW +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Go to beginning of n'th next (previous if negative) word +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +nEW +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Go to end of n'th next (previous if negative) word +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +BL +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +0L +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Move to beginning of line +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +EL +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +L-2C +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Move to end of line +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +nJMP +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Go to line n +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +J +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Beginning of buffer +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +ZJ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +End of buffer +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +nStext$ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Search forward for the n'th occurrence of text (leaves point at end of text) +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +S$ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Search again +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +-nStext$ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Search backwords for text +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +nES +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Scroll screen n lines +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset VSpace bigskip +\end_inset + + +\end_layout + +\begin_layout Standard +Entering text +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +Itext$ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Insert text +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +nFSfind$replace$ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Find and replace n'th occurrence of text +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset VSpace bigskip +\end_inset + +Deleting text +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Macro +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Command +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\series bold +Description +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +nD +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Delete n characters +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +nDW +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Delete n following (previous if negative) words +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +DLR +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Delete line remainder +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +K +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Delete from current position to beginning of next line +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +0K +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Delete from current position to beginning of the line +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +0KK +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Delete entire line +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +0KnK +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Delete n lines from current line +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +HK +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Delete entire buffer +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +FDtext$ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Find & delete text +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +FKtext$ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Delete from point to beginning of text +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout + +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +FRtext$ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Replace last found text with text +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset VSpace bigskip +\end_inset + + +\end_layout + +\begin_layout Standard +Variables +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +B +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Zero +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Z +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Number of characters in file +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +H +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +B,Z +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +. +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Current position +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +x= +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Display value of variable x +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset VSpace bigskip +\end_inset + + +\begin_inset Newpage newpage +\end_inset + + +\end_layout + +\begin_layout Standard +Cut & Paste +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +nXq +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Copy text from current position and the next n lines into q-register +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +n.mXq +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Copy text from character positions n to m into q-register q +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +.,.+5Xq +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Copy following 5 characters into q-register q +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Gq +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Insert contents of q-register into current position (paste) +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +E%qFILE$ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Save q-register to file FILE +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +EQqFILE$ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Read file contents into q-register (good for insert file) +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset VSpace bigskip +\end_inset + +Iteration +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +n +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Execute CMD n times +\end_layout + +\end_inset + + + + +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset VSpace bigskip +\end_inset + + +\end_layout + +\begin_layout Standard + +\series bold +\size largest +Macros +\series default +\size default + +\begin_inset VSpace bigskip +\end_inset + + +\end_layout + +\begin_layout Standard +One can put a series of teco commands in a file and execute that command + file while editing a file. + This is one way teco macros are created. + Within one of these command files the $ character acts like an escape key. + Once command files are created they can be executed as follows: +\begin_inset VSpace bigskip +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +EIfile$ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Execute command file when the command line is complete +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +EIfile$$ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Execute command file immediately +\end_layout + +\end_inset + + + + +\end_inset + + +\begin_inset VSpace bigskip +\end_inset + + +\end_layout + +\begin_layout Standard + +\series bold +\size largest +Q-Registers +\series default +\size default + +\begin_inset VSpace bigskip +\end_inset + + +\end_layout + +\begin_layout Standard +Commands, text, and contents of files can also be put into and executed + from q-registers. + These are in-memory registers named with a single character a-z or 0-9. + The following operations are supported: +\end_layout + +\begin_layout Standard +\begin_inset VSpace bigskip +\end_inset + + +\end_layout + +\begin_layout Standard +\begin_inset Tabular + + + + + + +\begin_inset Text + +\begin_layout Plain Layout +^UqCMD$ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Put CMD into q-register q (note ^U are two characters, not ctl-U) +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +EQqFILE$ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Put contents of file FILE into q-register q +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +Mq +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Execute q-register q +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +E%qFILE$ +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Save contents of q-register q to file FILE +\end_layout + +\end_inset + + + + +\begin_inset Text + +\begin_layout Plain Layout +:Gq +\end_layout + +\end_inset + + +\begin_inset Text + +\begin_layout Plain Layout +Display contents of q-register q +\end_layout + +\end_inset + + + + +\end_inset + + +\begin_inset VSpace bigskip +\end_inset + + +\end_layout + +\end_body +\end_document diff --git a/doc/Summary.pdf b/doc/Summary.pdf index 1b7e0420228401f83418a1f46373c6f38a90e915..b6a2bef7c3b44ded17f774ab74a71be69820789f 100644 GIT binary patch delta 16042 zcmajGWmFtbus+P<8f@|4?(XjH?ry=|Ss=Is8C*gLfuKPa5?liW2u^T!cS0b*{>ks& z^PY1*y&q;ycTI11S9QuYE-U!a zcEpovJCh4SjuhpT)nfhA&sMvKX-aQ7+~o^N0uuHd4+A{15L&fdGy|)l%dlVW`~{~| zZrif!0N`0*;5?T*!k?w@{+pE|E@iQW5IS7YNK@^{rWXix`@FEztxc__-)<40-|Ax$ zi7Z|lNGDy%^g)9hs>8ODTsZ+wu$}uIvb3im%*Y10(@6~Vhz;(FW1#Q%?IxLtKvS-8 zVhsPO7$cj*B*FPQ7OqB&8aJyq9|Y*McljBRXxXuU5}HE0$naWuYpF!yu4Xd({pQ=beGuFe})+?Gxp)um8@y#+=|C@^Q<= zo%3e?7{}O~yB^_OmvEV|nWc5To)UhJgRFB$qz^jbt4ajUvQX( zh=r&7n^Dh4J~Gu3%zo*uN)B6V?bgL{)3s=atm{Y5`(;ZQ#fHA+9d&GiY?;kXWYgwB z!vB;EGTAb+tky4yMSK`!wQ`%N(vk^W@#yFyc5(G_gwX!%k_}RMz1!QIgVNhK@-~|- zMqu4;vtQv(D|WAX_>}>X>&lkg^Pte+=}MNzwaC^RW8W=IvFX(l9Hc_}f?(LU!DhJn zxF)HI)A#+Mm41=?4j2slUwhvAq_3EQAzz4ECpvFkuN`LLzKFu`;bT2U`^6P#aGT3X z$)^S>4oBE=>yB%AGdqtRbI$7`!@0KmR>8=a->Pac=p_22p;)}TB^SKsqi^=JQ?S{w z{XG+oy{RkTFrHJiwnmZMz4@%9e$Ms?b(3us=dW^p|GKL#n{h3} zV$b;j-Q#@qU4&(lK?fH}sX~Uw+hqAGiMAM>)0J7>nhXIcE@Mdx}K9f-N_+Q<1fYqp%A1>+-&MaZ_lBt<~OFW-JauP6ddfmO`Ud$mu>|b^9vjRS9J_3Y%0+g-vjcZ{v4*Km~~Ff+oT6^a$n2wY%l zDM}cEhOn@BV<4h#DwALq+a%ZLa1eI%5O)sA{cw6JBRc({BiRyMTO;-m=q?udsK$=m z;x%HC8UmL7)u?v)(^duSg3VcHmT>J3|4eTefOr!Fxng|%_t2)=*6J$_0_Oe8Zg>Tb zLziRk2b~O$lwLsA(GGHO7NysLdk?_}#tL)@#%L$!oDe&kqB+rQF?Va_18vG#-k(J5 zVja&n+gi@j&GH^ya|nfb!TjoM2??JC19XYuh3 zssG#886`S85=xFzfA#W`HhqVuc{as=l~T;gWu?enymQ8AWGrJhq+)r1${N1if4A{0 z)Z#upLJ0YO2KV7!)x!UM*J2V$&%`gX4i)DG(X~L&03Id8y(}Boy$biOzA7MKBBfYPMC!>gKRFQf-M!KhPOA`4S+FG+lm3q9ElTqcl`4n1 z%2+!hYv|JHn=iTP{Iw6EaNy=b`Mp)@5VUvLMuNdjt@{Unhym`pd{@`dF`#tN2$_P5h(kAOvX37Wv?c;T6l z`AVMDz~24?p0?;(qm(fG!8|(d@UsDa<&5W?0Hq%=5Iyo8Ef8sg4_Kq&Bl7U@3IWod z%#Z?epXC;U*z+e=--a0#-dpA_kj0Hc!m68uh+CnvV`Do}vKnK)ik`~w@kuwQ5E%&?k`E{(;77^i0sg5A^Q(Zn}BcBaT=JKxJo>ykwo05iV6dzCZXq${}QUECYL zF=5j)Y*vTt?l}m--;ZY8onpU=CwKSi*CG46PhPj9LxP5aly%P`@BIsjhSd#vDki=&Ap`B0_dNx^ziJfnPNy;x;Y^4 z3f}xZZ4%GSInrs2m9BpvVIy-EC~hW{x)r;9W#&nCJnA)>K7&j=@Af!ih}uL~_1?tt zwv*C7*tn^`)^%vRyz802?rN;E;@xR;ob0Wh<#=@nqL*AInbOKT1_{bWnx5SFx35=_ zk&V%;7<|$ssnURo;2&YXsD9{AY4rVqG)Pe?$}LLMsEx<5fw^k8sZhQ}N@xGpD4rV$ zK;5CMqVTr#!@F`fC8R}YxgVL3%a|#7y0~d}g8b=d`$Bf#$Uf?JU)Jd#cwsqWZt|s| z`J3){I^4|Hc2Vo^3Zi*8*pe`sCr-^4$;``H=V1ywA@xV`$~re4yvp6j5b>r9h}bo0 zGs%Z?@}sNN&vj>?xBeb3a;~3XHi(OfsJc-WE+%r`J1;NQHOTwiRz5#Plqbap3jg4v zF*SO#GRa3_jTwyzdYty@OL532rt`l(a76-xNBK)P4If7_AoY%r zTt`T~Julhjb9{Ujf|~mG{B%^DLda)sRBo!16!pyca~#MgoKqcL%Pgx(=7g#MJeBryIK6I^2wPwQe}9)!p`030byL z=4Z`2TpQ`jw=&0m5o+}lcbU6wr-6)54*e!u&nFt{|5_vIwSJow2_-_F3kNoYUFn~5`bVEwfFZ7G{)n?k~tP$jq^b^Fu$J|{G3_aq)i1RmmFm8+S?#O3t} zZ`yOP=%Ubi67+OMmoBx4f5KXf|5zy4{WL^mzoHd>Vd^GWe_&Mj68g+1l7@L$|Pn^F}e!**yqPb-)++Pi_qM#A@ohpnj`H?C0nMit}PYWzt%pg~;IN6<#DK}qYbMWw zCeXS9E$SG4|8{!}uW_GGPYz^JjM|_lD5Qg~;&|2VY`R%NbopnfLcO-xd2|_ZZ|VMi z49mp+Wqr@YSjdVZwhGUNs%DyF(DICqB0lL|Laxecd!Wc&S&-`Kv;dGueQpnKaQ z8(hL}HCJy5?s_A`727q}n&Lm#aQhVsH1H-=kqdMN=)l=|=V2 z${2Y%$NYyWQ=+vwN{f%*8R6Ap`4aWgvx1)I*6gQvZmGtsa z=nQ9;t0;z?lqY74&9!(BofGM|hgTj5*Kng!E;*zgl1&9tE!Y`9LMU%`C7YI!-R-j| zHM<_JAP0(%l_CAXOAilE7#+0mXMxJ3nb||CH+;NSP1SeLF7|(T>b~CZn{z)ySe+F> z>f(C%qD1Phmy>Onv@@=kTKy4Pf;#g#Ma>iPZlQpZ4o!reYsGyf@iMkm6#oR}mk?a$ zl)A}FCDvtInrS%`5~}d52WOFKX1aEzJAT+Rq@`}CyTGh^v+2QX;Wx~3tm`cM`4b*d zJA5Q~Wfw~2!}Vv0IF1etCvUG_C<~s+r(jP~Lso@)QToW`3+x6B&A0x9ON$19mUfT) zOGF0WP<sfxew23hNYK;+Gb`eVo$}?*8)0Y_EOD#>mQr^BYO?(~hVNQ%k!eZh6|~ zw_<$KATtdiE?dH{nzM$LdFR(KxW^nSf`8r(NC+tLB>)Nk$L-{JO)PF0&G_2Mmk;?Cun;u`t+ z{r&I+XXTBP)D~6w+I`vQ+|NQE!^@kh#A%G-60+$*3>naFb7vbeCQ z*sNHKGlFuUBoiXXb7gQp{FyT{0CZZ{8F3+Wq=LL%nTfz5dSduWu2CQ}_N z?p#6RH9O*bG2w=+n$-OJiY&u)!0wGFBU zP8#Y79`mCtog;82{7q454V&D{=qMXKM<;=2DmYcIBMot_&5SSTisjB_+=se2|KOh7 z-uda!vyPRO)}?hRm~pTjw{5#KK=n?=NY0A!)`Kf>pAat>M<}_rtvtfTd`NHxqsjJk za0mySg0CQ%k6;a*0P5D#HKI<=GEG1NXdXWN}6?t-u_(#&=xr40_y)ZO45;z zN#+}ggrAwD6(ev6Fn>MV)$q*kT#76@gk4ne(TII?=i*j~P9vOYN8xV8S+zbI4KHR8 zKxylTbFBXUHft-PTCsogBI0P91`K*v9Ofd|MlEhU&*RV}OO5r8KYp%B z+{F7zT)VgluMmsFGz|q)#MkR%pQ2eusp}}%5~UX=8S=X;BDu5le5{DeS|a@WDiq#5 zZoaPKl8ITPtFGcplF*a9$S%YKiH`d|mQI>LcsJ|t)C6y@=T;szsHY$+aR}*o)ku7K z3n*^tZ7ios7D@-4f z#h@N6O*pEB4x6YkCe#0`ONxJ(H+QODJBU&UH*4B-C-N)5+&yl=Leq8st!b3Sa8>1y z?}{Ddc-$YK(f_)<8I%+h_Z0i&PK0|WjYUm-5~aViCsupeUg0RtY9b|S(IgeX+Sxo- z`@~eN`H^EOhe|XAk0TS%&g>UL-n?bViUv-8 z=g-Il>7Cbd+t#QGxqm-tU#?zts&`S~Cuw-)%xU&ABSlu`FDUY<(s3Uycc)5Md$pt= z-LtO#`a>J2B;c2@-klfCIY5NzebJf2BjdwZwcoliM(F^&^3x@K$At6*7m{U`R)`igm>lKVMF$j9}sNH-kSp%s%e1W1XE5WiQJl1nC@ z_GF~}+7r6(^fTWtJvO^ykc>IpUv`-$^GWTQT1C7|IB>dQdletQnn^^A8ntrLaA&~y z(e!snqv-Fa>ZAI^+3wl=rM?C~b2?$mVh~!mm?C|zeM{vIl!+>1iL|F6;mrs967t@z z*-jj{M6{(tLy@xX5jCCl1IT_QO>GQMNCE=%DvdlYndFN{CixUt8s z4xn9>4j4c4Yd*y#d)@!ndfdPnP8M+}PWb{V7wbO4$z~_VZHg2mpzj?()4aVv^p~dk zTY=o$_Rj7`#q-27UbD>;er!y38Ge-6_;Im_LdmEk6xyaS^uYE#7!n-FiE;$sBxV3& z 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 delta 9899 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 Vfci{9AcznZ62)U>Rn%0%`(LhXi=_Yn diff --git a/lib2/bl.tec b/lib2/bl.tec index 6a65cce..5b1765f 100644 --- a/lib2/bl.tec +++ b/lib2/bl.tec @@ -1 +1 @@ --ll ! goto the beginning of a line ! +0l ! goto the beginning of a line ! diff --git a/lib2/bw.tec b/lib2/bw.tec index 7418d59..929b0c1 100644 --- a/lib2/bw.tec +++ b/lib2/bw.tec @@ -1 +1,2 @@ -[0+0U0Q0"E1U0'Q0">Q0<<0A"R|0;'C><0A"R0;'C>>|-Q0<<-A"R0;'-C><-A"R|0;'-C>>']0 \ No newline at end of file +[0+0U0Q0"E1U0'Q0">Q0<<0A"R|0;'C><0A"R0;'C>>|-Q0<<-A"R0;'-C><-A"R|0;'-C>>']0 +! goto beginning of next word - can take an argument ! diff --git a/lib2/commands b/lib2/commands index 5f0e122..40913c2 100644 --- a/lib2/commands +++ b/lib2/commands @@ -7,6 +7,7 @@ File Commands ------------------------------------ EX save file - exit +-1EX exit without saving EBfile open file for input/output with backup ERfile open input file for reading EWfile open output file for writing @@ -22,20 +23,24 @@ Positioning Commands ------------------------------------ J jump to beginning of buffer nJ jump to character position n +ZJ jump to end of file L beginning of next line -nL move n relative lines (0 means beginning of line) +nL move n relative lines +0L go to beginning of line +L-2C go to end-of-line C move forward one character nC move n characters R move reverse one character -nR move n relative characters +nR move n reverse characters Stext$ search buffer for text (position after search string) (if no text use previous search text) +-Stext$ search reverse Ntext$ search entire file from current position nS search for the nth occurance (negative n means reverse) nN search for the nth occurance (all pages) -Type Commands +Type Commands (non-video mode only) ------------------------------------- T type current position to EOL nT type n relative lines (0 means from BOL) @@ -48,8 +53,10 @@ Text modification commands ----------------------------------------- Itext$ insert text @I/txt/ insert txt (may contain escapes) +0LK delete entire line +0LnK delete n lines K kill to EOL -nK kill n relative lines (0 meands BOL to current position) +nK kill n relative lines (0 means BOL to current position) HK kill whole buffer D delete one character nD delete n relative characters diff --git a/lib2/dlr.tec b/lib2/dlr.tec new file mode 100644 index 0000000..d511e39 --- /dev/null +++ b/lib2/dlr.tec @@ -0,0 +1,3 @@ +! delete line remainder ! +ki +2r \ No newline at end of file diff --git a/lib2/dw.tec b/lib2/dw.tec index 854d3e0..ac83b1b 100644 --- a/lib2/dw.tec +++ b/lib2/dw.tec @@ -1 +1,2 @@ -[0+0U0Q0"E1U0'Q0">Q0<<0A"R0;'D><0A"R|0;'D>>|-Q0<<-A"R0;'-D><-A"R|0;'-D>>']0 \ No newline at end of file +[0+0U0Q0"E1U0'Q0">Q0<<0A"R0;'D><0A"R|0;'D>>|-Q0<<-A"R0;'-D><-A"R|0;'-D>>']0 +! delete n words forward ! \ No newline at end of file diff --git a/lib2/ew.tec b/lib2/ew.tec index d4d9d5c..090e5c0 100644 --- a/lib2/ew.tec +++ b/lib2/ew.tec @@ -1 +1,2 @@ -[0+0U0Q0"E1U0'Q0">Q0<<0A"R0;'C><0A"R|0;'C>>|-Q0<<-A"R|0;'-C><-A"R0;'-C>>']0 \ No newline at end of file +[0+0U0Q0"E1U0'Q0">Q0<<0A"R0;'C><0A"R|0;'C>>|-Q0<<-A"R|0;'-C><-A"R0;'-C>>']0 +! goto end of word - takes argument ! \ No newline at end of file diff --git a/lib2/jmp.tec b/lib2/jmp.tec index 66b7c03..f706810 100644 --- a/lib2/jmp.tec +++ b/lib2/jmp.tec @@ -1 +1,2 @@ -[0-1U0JQ0J]0 \ No newline at end of file +[0-1U0JQ0J]0 +! jump to line n (starting at line 1) ! \ No newline at end of file diff --git a/lib2/nla.tec b/lib2/nla.tec new file mode 100644 index 0000000..2b769d9 --- /dev/null +++ b/lib2/nla.tec @@ -0,0 +1,3 @@ +! add new line after current line ! +li +-l \ No newline at end of file diff --git a/lib2/nlb.tec b/lib2/nlb.tec new file mode 100644 index 0000000..08d9d33 --- /dev/null +++ b/lib2/nlb.tec @@ -0,0 +1,3 @@ +! add new line before current line ! +0li +-l \ No newline at end of file diff --git a/lib2/teco.ini b/lib2/teco.ini new file mode 100644 index 0000000..2e77a3b --- /dev/null +++ b/lib2/teco.ini @@ -0,0 +1,3 @@ +-1^x ! enable case sensitive searches ! +0,16ed ! retain dot after failed searches ! +$$