Congratulations to: * 2024/anders - Prize in sound coding - layered music generator * 2024/burton - Prize in pentagrammatology - wordle hard mode solver * 2024/cable1 - Prize in bot talk - LLM inference engine * 2024/cable2 - Prize in murky waters - salmon recipe * 2024/carlini - Prize in perfect timing - Intel 4004 emulation * 2024/codemeow - Prize in tray planting - bonsai generator * 2024/endoh1 - Prize in patient pointillism - slow ray tracer in CPP * 2024/endoh2 - Prize in solid body physics - rotating rigid body simulation * 2024/ferguson1 - Prize in diabolical logistics - Oregon trail pact with the devil * 2024/ferguson2 - Prize in yil-tas - Navajo code talker translator * 2024/howe - Nice accent eh-ward - mini vi * 2024/kramer - Prize in linguistic arithmetic - natural language numerical calculator * 2024/kurdyukov1 - Prize in phased periodicity - phase of the Moon * 2024/kurdyukov2 - Prize in art restoration - JPEG artifact removal * 2024/kurdyukov3 - Prize in virtual quietus - gaming VM and doom * 2024/kurdyukov4 - Prize in embiggening - encode without literals * 2024/maffiodo - Prize in creative interpretation - Jav\*script interpreter * 2024/mills - Prize in ℤ₃ - Infocom v3 story interpreter * 2024/stedolan - Best one liner - icon from MD5 * 2024/straadt - Prize in imitative rebooting - OpenRISC CPU and Linux * 2024/tmarrec - Prize in cyclonic coding - 3D tornado simulation * 2024/tompng - Prize in quasi bijection - vortex encryptor decryptor * 2024/weaver - Sur prize - rickroll Ran `make update` to perform the above. new file: 2024/burton/.entry.json
To build:
make all
Bugs and (Mis)features:
The current status of this entry is:
STATUS: known bug - please help us fix
For more detailed information see 2024/howe in bugs.html.
Try:
./try.sh
Judges' remarks:
This is not your grandmother's 👵 emacs(1) 🤓, nor is it as limited as ed(1), eh (🇨🇦)?
The source (and of this program) has fun with an UTF-8 conforming accent, in a manor of speaking 😉.
TL;DR - to exit type Q or press CTRL+C.
As mentioned in in the COMMANDS section of prog.html, try these commands:
| Key cmd | Action |
|----------|------------------------------------------------------------|
| h j k l | Left, down, up, right cursor movement |
| H J K L | Page top, page down, page up, page bottom |
| b w | Word left, word right |
| | | Goto column (count) of physical line |
| /ERE | Find first occurrence of ERE pattern after the cursor |
| n | Find next occurrence of ERE |
| G | Goto line (count) number; 1G top of file, G bottom |
| \ | Toggle text selection |
| d motion | Delete text selection or region given by motion |
| y motion | Yank (copy) text selection or region given by motion |
| P | Paste last deleted or yanked text region before the cursor |
| i | Insert text mode before cursor, ESC or CTRL+C ends insert |
| u | Toggle undo of last edit |
| x | Delete character after the cursor, i.e., dl |
| W | Write buffer to file |
| Q | Quit |
| CTRL+C | Quit |
NOTE: Any other key will redraw the screen.
Author's remarks:
Building
Simply type make to build. There are two macros that can be customised:
-
BUFto set the buffer size; default 128KB. -
MODEto set the file creation mode; default 0600.
What's Interesting
-
This is an update with bug fixes of a previous IOCCC winner, with permission of the author.
-
This entry requires Curses. Some Linux might require NCurses built with wide character support,
-lncursesw. -
The source is UTF-8. When are
éëêènot same ase? -
The documentation is found in prog.html.
-
progcan view its own source. -
A regression test suite is available on demand. The test suite requires
tic(1)to build the specialised test terminal entry. -
Original unobfuscated more fully featured source available (search/replace, pipe-filter selection, markers, insert file, edit buffer grows, literal character input, multi undo/redo).
-
The
iocccsize(1)tool only counts bytes, not characters, i.e,. UTF-8 multibyte characters such that some characters cost 2, 3, or 4 bytes, thus penalising UTF-8 entries.UTF-8 demands equal rights and respect as real characters! The dominance of slim ASCII must end! We are the UTF-8 People's Front for Freedom, Equality, and Brotherhood (oh that's been used already) - We are the UTF-8 Countless Tourist Defence Farce for One Voice, One World, One Character Set.
Furthermore:
-
Refactor page framing to address original issue of scrolling and paging up/down when the file contains long lines.
-
CTRL+C will exit insert mode as with
vi(1); CTRL+C will also quit, unlikevi(1), for those who cannot findQ. -
Add extended regular expression forward search with buffer wrap-around.
-
Add text selection with delete (cut), yank (copy), and put (paste).
-
Add delete (cut), yank (copy) with motion.
-
Replace start/end of line with goto-column command.
-
Add counts for motion commands, delete, and put.
-
Replace top/end of file with goto-line command.
-
Fix word left to behave like
vi(1). -
Add basic UTF-8 support.