/videoteco

Best Editor Ever

Primary LanguageC

Video TECO is licensed under the GNU license. If you find bugs or want to 
send changes back to me, you can email me: paul@copters.com.

To build TECO on a Posix system, run ./configure and then "make". I've built 
it recently on Linux and Mac OS X and it compiles fine on both of those 
operating systems. On the Mac you need to run it from a terminal or X11 window
i.e. there is no graphical front end.

If you want a sample .teco_ini file, I'm putting mine at the end of this file.
It goes in your home directory.

Paul Cantrell
December 11, 2007.


! This file is used to initialize macros for the TECO editor!

! Q-Register 0

	This is used to set initial stuff up. As soon as the teco.ini file
	is read in, this q-register is executed.

	In this case, we use it to set the alternate rubout character to ^H
	and to set nominal paragraph format width for the MF macro to 75

	I also set backquote to work as ESCape, since the alpha keyboard
	has those two keys mapped on top of each other.
!
0/6,4EJ4,8EJ1,96EJ75UF/

! Q-Register B

	This macro moves back one buffer. It assumes there are no holes
	in the buffer space, which is a very bad assumption. However,
	performing a full 0EB on every invokation would be a bit excessive.
	A :EB loop really would be good
!

B/q*u1q*"lq*-1eb|q*u2<q2-1u2:q2ebu3q3-1"eoend�'>!end!'/

! Q-Register D

	This macro takes the current indenture, and decreases it by 4.
	It assumes that the current indenture is correctly done with
	tabs and possibly one group of 4 spaces.
!

D/1<0L<0UD0A-32"E%D�'0A-9"E%D�'QDC-QD;>-A-32"E-4DOEND�'-A-9"E-DI    �'>!END!�!dedent by four spaces!/

! Q-Register E

	This macro uses the current error line to position to the position
	in the source file that the error occurred on.
!

E/[_[1[2[3s:�d:�;.u1lrq1,.x3q1j-s�0x1c\u2eq1�jieb�eq3�1ij1im1q2mgm3�]3]2]1]_/

! Q-Register F

	This macro reformats the paragraph between Q1 and . such that
	lines don't exceed the nominal width. Spaces are only inserted
	between words, never within.
!

F/.u2<q1,q2-1fs
� �;>q1j!loop!(q2-.)-QF"gQFc-wd10ioloop�'q2j��!Reformat the paragraph bounded by Q1 and Q2 into QF column wide!/

! Q-Register G

	This macro positions us to the line number specified as an argument
	to the macro.
!

G/UGJQG-1L�!Macro to go to the specified line number!/

! Q-Register H

	This macro loads the symbol following the cursor into the search
	q-register.
!

H/.UHS�m�c�QH,.X_!Macro to load next symbol into search register!/

! Q-Register I

	This macro indents the current line by 4. It assumes that the
	current indenture is correctly done with tabs and possibly one
	group of 4 spaces.
!

I/0L.-Z"EI    �OEND�'<0UI0A-32"E%I�'0A-9"E%I�'QIC-QI;>-A-32"E-4D9IOEND�'-A-9"EI    �OEND�'I    �!END!�!Indent by four!/

! Q-Register K

	This macro deletes from the current position to the end of the line
!

K/.UKLRQK,.K�!Delete to end of line!/

! Q-Register L

	This macro converts the following word to lower case
!

L/.UU<0A-32"E0;'0A-9"E0;'0A-10"E0;'C>.UL�QUJQL-QU<0A-64"G0A-91"L0A+32IDR''C>�!Convert word to lower case!/

! Q-Register N

	This macro moves to the next sequential buffer, and assumes that
	there are no holes.
!

M/-1ebhkecmake�j/

N/Q*+1EB�!Go to next edit buffer!/

! Q-Register O

	This macro inserts a blank line before the one which the cursor
	is on, leaving the cursor positioned in the same place on the
	current line.
!

O/.UO0L10IQO+1J�!Insert a blank line before this one!/

! Q-Register P

	This macro inserts a line in front of the current line, and
	repositions the cursor to the begining of the new line.
!

P/0L10IR�!Insert a blank line before this one and move to it!/

! Q-Register R

	This macro tries to find the begining and end of a C-function,
	and load Q9 to point to the begining, Q0 to point to the end,
	and print a message in the message window with the definition
	in it (such as routine(arg1, arg2, arg3))
!

R/[_[1.U1-S
{�-S)�C0X10L.U9S
}�.U0Q1JQ*U1EQ1�1IJ1IQ1EBM1]1]_�!Find the bounds of a C function and set them in Q9,Q0 and print the first line in the message line!/

! Q-Register S

	This macro copies the search q-register into a temporary
	q-register where it can be edited. A second invokation moves
	us back to the original source buffer.
!

S/q*"lq_eb[9]_]9|[9q*u_[_]9eq9�j'!Toggle in and out of the search buffer!/

! Q-Register T

	This macro prints a short table of contents in the message window.
	It's mostly useful when only a few buffers have been loaded.
!

T#[_q*u10ebhx5eq5�jsbuffer�s-�0l.,zk-k<-sbuffer�s�d�;w0ks�d�i:�.u2s>�s�q2,.kw-wfk
�.u20l:q2,.s/�"sc.u20ls:�q2,.k'0l>j<fs
� �;>zj1ij1iq1ebm5�]_!Print a short list of buffers in the message line!#

! Q-Register U

	This macro converts the word following the cursor to upper case
!

U/.UU<0A-32"E0;'0A-9"E0;'0A-10"E0;'C>.UL�QUJQL-QU<0A-96"G0A-123"L0A-32IDR''C>�!Convert next word to upper case!/

! Q-Register V

	This macro sets the current indenture to that of the previous line.
!

V/[_[1.U1-S
�S�W0X1Q1JG1]1]_/

! Q-Register W

	This macro writes out all the modified buffers, stopping if there
	is a problem with one.
!

W/[_[0Q*UW0EB<S(modified)�;0LSBUFFER�S�0A-45"E0;'2W.U0S�S�-S�Q0,.X00Lsbuffer�s�\U0EBTECO-0�ZJI ...��0LI�Writing �Q0EBM0EW�0EB>QWEB]0]_���!Write out modfied edit buffers!/

! Q-Register Y

	This macro reads the following string as a filename, and then
	loads that file into the editor.
!

! Q-Register X

!

X/u1q1ebq1-1<ef>��/

Y#.U1[_s�m�[�c,/,.,_]�]_Q1,.X1EQ1�JIEB�M1#

! Q-Register Z

	This macro reads in MAKE.LOG and tries to position the cursor
	to the first occurance of a compiler error message.
!

Z/[_-1EBHKERMAKE.LOG�J:S
"�]_�!Read MAKE.LOG into buffer -1!/

! Q-Register 4
	This macro loads all the files  at the current position into the
	editor.
!
4/[4[5[_q*u4<s
�;bx5eq5�y27ijieb�m5q4eblet>]_]5]4��/

7#[_s
��begin �d�0l.u1s
�M�rq1,.:x1.u1]_#

8#[_<s
m�l0a-77"e0;|-1;'>-s
�M�2l.u1s
�M�rq1,.:x1.u1�]_#

9/.u9erfiles.uu�q9jmmq9,.kmwecdecode��/