diff --git a/1991/ant/Makefile b/1991/ant/Makefile index b3b94b198..76da1a8d3 100644 --- a/1991/ant/Makefile +++ b/1991/ant/Makefile @@ -116,8 +116,8 @@ OBJ= ${PROG}.o DATA= README.md TARGET= ${PROG} hill mole # -ALT_OBJ= -ALT_TARGET= +ALT_OBJ= ${PROG}.alt.o +ALT_TARGET= ${PROG}.alt ################# diff --git a/1991/ant/README.md b/1991/ant/README.md index 3b2314068..de5ec2add 100644 --- a/1991/ant/README.md +++ b/1991/ant/README.md @@ -4,6 +4,9 @@ make all ``` +There is an [alternate version](#alternate-code) that might feel a bit more +familiar to vi(m) users. + ## To use: @@ -28,6 +31,33 @@ make mole ``` +## Alternate code: + +This version changes the commands slightly so that to go to the first column you +should enter `0`, to go to the last column you should enter `$`, to quit you +should enter `q`, to go back a word you should enter `b` and to go forwards a +word you should enter `w`. Also, and perhaps most useful, rather than having to +hit ctrl-L (form-feed, `\f`) to get back to command mode you can use the usual +ESC (`\x1b`). + +These will make it slightly less unwieldy for those familiar with vi(m); the +rest was unchanged. + + +### Alternate build: + + +```sh +make alt +``` + + +### Alternate use: + +Use `ant.alt` as you would `ant` above with the changes in the input keys. See +the author's remarks for the remaining keys. + + ## Judges' remarks: The author was kind enough to supply a list of references below, @@ -38,7 +68,7 @@ of characters you can put a user unfamiliar with vi(m) in a vi(m) session (in insert mode) and ask them to exit. Well in this case you're likely to have this problem if you ARE a vi(m) user! :-) ... especially if you don't read the information below. This means if you're reading this in vi(m) you'll have to -exit this like in normal vi(m) and then exit `./ant` differently. +exit this like in normal vi(m) and then try the same with `./ant` only to fail. :-) NOTE: to enter form feed you should be able to hit `ctrl-L`. This will allow you to exit insert mode rather than ESC like in normal vi(m). See the author's @@ -55,6 +85,7 @@ Carriage return is mapped to newline on input and ignored on output. Tab stops are every eight columns. Non-printable characters may have unpredictable results depending on the implementation of `curses`. + ### Commands - h j k l left, down, up, right cursor movement @@ -67,6 +98,7 @@ results depending on the implementation of `curses`. - R refresh the screen - Q quit + ### Exit status - 0 success @@ -75,26 +107,26 @@ results depending on the implementation of `curses`. ### About this entry -The BUF size should be set at compile time to 32767. This value was used +The `BUF` size should be set at compile time to 32767. This value was used because the Sozobon C compiler for the Atari ST has 16 bit ints and a limit on the size of arrays & structures of 32k. Also the WatCom C compiler for the PC also has 16 bits ints. On machines that have 32 bit ints (most unix boxes), a -larger value for BUF could be used. +larger value for `BUF` could be used. It is recommend that compact memory model be used on PC class machines. Small -memory model may work too provided BUF is not too large. +memory model may work too provided `BUF` is not too large. The character constants `'\b'`, `'\f'`, `'\n'`, `'\r'`, `'\t'` are used in order to provide more portable code, since the compiler should handle the translation of them into the native character set. Note that `'\f'` (form-feed) was used to exit insert mode because K&R C had no escape constant for the escape-key. -My goals for this project were to learn and experiment with the -Buffer Gap Scheme [Fin80][net90], write a useful and *portable* -program, and meet the requirements of the IOCCC. I initially -planned to have a mini `curses` built-in like the IOCCC Tetris entry -from a previous year, however this was not as portable as using a -`curses` library with `TERMINFO`/`TERMCAP` support. +My goals for this project were to learn and experiment with the Buffer Gap +Scheme [Fin80][net90], write a useful and *portable* program, and meet the +requirements of the IOCCC. I initially planned to have a mini `curses` built-in +like the [IOCCC Tetris entry from a previous year](/1989/tromp/README.md), +however this was not as portable as using a `curses` library with +`TERMINFO`/`TERMCAP` support. I plan to post follow-ups such as unobfuscated versions and bugs fixes to comp.editors. Reposts of the editor.101, gap.doc, and editor.102 can be found @@ -103,6 +135,7 @@ in the same group every so often. This entry will display a file with long lines, but has trouble scrolling the screen with long lines. Paging up and down should work correctly, however. + ### References: [Fin80] Craig A. Finseth, "Theory and Practice of Text Editors or\ diff --git a/thanks-for-fixes.md b/thanks-for-fixes.md index 44be2c6eb..fab948f02 100644 --- a/thanks-for-fixes.md +++ b/thanks-for-fixes.md @@ -1084,6 +1084,21 @@ The alt code did NOT have arg checks added as it is actually a copy of the original code. +## [1991/ant](1991/ant/ant.c) ([README.md](1991/ant/README.md])) + +Cody added [alt code](1991/ant/ant.alt.c) that will be a bit easier to use for +those familiar with vim in the following ways: + +- Use `0` to go to first column. +- Use `$` to go to last column. +- Hit ESC to go back to command mode (instead of form-feed, ctrl-L). +- Use `w` to go forwards one word. +- Use `b` to go backwards one word. +- Use `q` to exit. + +The other keys were left unchanged. + + ## [1991/brnstnd](1991/brnstnd/brnstnd.c) ([README.md](1991/brnstnd/README.md])) Cody fixed this for modern systems. There were two invalid operands to binary