This uses libc functions read() and write() rather than <stdio.h>.
I had always used dietlibc to compile it, and Debian did not work for me.
But now I find it compiles under Slackware variant Salix.
This editor tries for modelessness by usurping the uppercase letters for the commands.
After a rash of early names it was released as "ced" until I finally noticed that name was taken.
Then it was "cim" for caps-is-meta; but that is also a name collision.
I now call it "bitwrot" as in "what hath bits wrought?".
Bitwrot has dual-key commands for CapitolCase, FlatCase, and TitleCase to adjust the case of text already written.
Those 3 commands need a 2nd character of input to be the operation delimiter.
With a newline delimiter, you can yell the whole line.
The command <B> also requires a 2nd character as the two form a Bonus command.
<I> and <O> currently need a pair of additional characters as a target.
The other <A> to <Z> are single key commands.
<Escape> gains access to help, settings, hidden state info or just quit.
-- Bitwrot is an ascii-centric editor.
++ The "encode the non-keyboard character" command works from nicknames like _nul so a non-ascii version would feel the same.
++ Bitwrot has a repeat-me robot function that helps with repetitive editting.
A typical use would be word replacement, with at each find <N>ext the user chooses to replace or not.
++ Directories can be edit stations.
Bitwrot has 2 keystroke command to access local file bitwrotdirc.
bitwrotdirc is intended as a place to save file names for easy access.
-- Bitwrot leaves helper files laying around the directory where it is invoked.
++ Bitwrot can invoke scripts by name.
The scripts can do more than a lot of pre-canned typing for you.
Bitwrot has many commands to empower scripts.
This includes non-nestable macro blocks that only run if the macroflag is set.
The macroflag can be set or cleared upon successful searches
or upon the text at the cursor matching or missing the search pattern
or upon other tests.
-- Local file bitwrotscripts.txt must be created and populated with the named scripts.
++ Bitwrot users can do smart editting without the separate learning curve of sed.
-- Scripts for bitwrot tend to be more verbose than sed.
++ Bitwrot runs bitwrot-script on start-up so a shell script can prep that and invoke bitwrot as a smart editor.
++ All the memory bitwrot will use is allocated up front, only a window into larger files is kept in the buffer memory
-- Bitwrot has no import and export between the yank and any inter-app clipboard.
ONLY MY MOTHER LOVES ME:
Text cannot be rage-written in uppercase but must be gone back over; a chance to edit down the tone.
-- a command to UPPERCASE all letters up to and including the delimiter.
-- a command to lowercase all letters up to and including the delimiter.
-- a command to camelCase at the cursor then Title-ize all space-led letters up to and including the delimiter.
Bitwrot runs in a terminal. Bitwrot moved to an X display for a while, but
too often I was editting files before starting X.
The history is now separate as it is so huge.
As far as modes go,
-- In and Out need 2 chars for semi-specific targeting.
-- The Bonus and Case commands need 1 more added keystroke.
-- Bitwrot has a verbatim keystroke input mode for the recording keystrokes for the robot.
In that mode all commands are the same except <verbatim> which now turns off the mode.
-- Escape takes you out of editting and into a menu of help screens.
-- Q takes you out of editting to let you inspect and adjust bitwrot's settings.
The hidden state info includes
-- search template (but now access is by Qs)
-- robot keystroke list (but now access is by Qr)
-- paste buffer contents (but now viewing is by Qp)
-- margin adjust values (controls in Qm)
-- auto-incrementing enumerator for lists (controls in Qo)
Bitwrot is released under GPLv3 to get it on SourceForge.
I should start a company that sells binaries for linux
but develop them on linux with bizarre file systems and character encodings.
I can distribute the source in my native format, but no one else can read it.