Hm, if yall don't mind, I'll do an idea dump of some smaller stuff.
erle:
Code:
rlwrap replacement/enhancement, takes ideas from the fish shell
interactive mode
-normal readline like behaviour (but using something simpler, like
linenoise/dietline)
-history file is loaded during startup
-<text>[UP] shows the last command containing <text>, again [UP]
the one before that, and so on
-<word1> <word2>[TAB] expands <word2> into the last word (string separated
from the others with a newline/space) beginning with <word2>
-no input for more than half a second/a second shows a suggestion
of the last command beginning with the current line.
-ideas for speeding it up:
-use char** for storing each history and words
-benchmark and optimise, of course
Maybe use linenoise and tweak it a bit for what is needed.
fle:
Code:
suckless pager, with command [f]orwards, [b]ackwards, [u]p, [d]own, [j], [k], [g],
[G] and [/] for searching, with [n]ext and [p]revious match
support for arbitrary length files, loading lazily, unicode is displayed properly,
big lines are dealt with properly.
nager:
Code:
sxhkd for the mouse. syntax:
[MOUSEEVENT] [, MOUSEEVENT]* COMMAND
pau:
Code:
plan9 alt unicode. implement plan9 style unicode typing
with the alt key. have a simple configuration file for it.
similar to the plan9 description file.
bnf:
Code:
program that accepts one backus-naur form grammar and checks if it's
input or other files match that grammar. read into parsers and stuff
like first, evaluate if myrddin might be a sensible choice for that.
cap:
Code:
simple language for assembling different files into one. syntax very
sed/ed like, mostly like this:
[line,]line@file[<|^|>][line,]line[|comm]
where line is a regex enclosed in '/' with an optional number suffix
or a line number, file is a filename and comm is a shell command in
single quotes. the text from each file is inserted into a buffer and
printed at the end of the cap script.
sif:
Code:
simple text processing filter that takes only one instruction
(single instruction filter). the instruction should have the form
[^]/str/[,[^]/str/]((a|i|c)/str/)|d|p
str is a literal string here (no regex), sif does not do
input/output buffering and does treat whitespace as any
other character.
a=>append, i=>insert, c=>change, d=>delete, p=>print. '^' means
that the following str is excluded from the matched text.
normally, everything is printed, unless the option '-n' is used.
Now I know that this is quite a lot of stuff, but these are probably my best ideas for programming projects. They are quite text-processing heavy, though, so if you're not into that...