/
plans
27 lines (14 loc) · 2.32 KB
/
plans
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
==quIRC:future plans==
Scripting language. Under development in branch 'script'.
Debug mode. /Every/ message send to or from a server to be displayed in that server's buffer; socket operations would be tracked in (status).
Quiet mode. Don't emit diagnostics for eg. unrecognised IRC traffic (such as numerics).
curses. The current hardwired ANSI-escapes code for painting the screen is clumsy. However, it's tailored to my needs, and now that it's neatly packaged away, it should be easier to cope with. So, I may just stick with it.
Simplify RX parsing. A command consists of [:<prefix>] +<command>[ +[<arguments>]]; we should pass those three items to each rx_*().
Automate config handling. Generated code?
Interface separation. It should be possible to write decoupled interface modules which may access the buffers at a variety of depths (eg. pre-formatting) and through a variety of methods (such as mmap(2), a serialised textual IPC format, etc.).
Input editing. Should use something based on Emacs line editing keys (C-a will mean 'go to start of line', unlike now when it means 'backspace to start of line'!). May be provided by curses - investigate.
wordline() spaces. Currently, wordline() replaces /[ \t]+/ with a single space. This messes up ASCII art (like TFnet's MOTD)
append_char(). This should be used for all string appension (eg. fgetl())
quoting/escaping tables. Instead of duplicative hard-baked logic, we should have a data-driven system with a single point of truth.
http links. Command /http <n>, opens the nth previous link in web browser. Links considered to be any word starting "http://"; words are delimited by whitespace. The actual command run is set with $BROWSER,--browser=,/set browser; %s is replaced with the URL. If no browser is registered, return an error. The count <n> is local to each buffer; the most recent link is number 0. If <n> not specified, defaults to 0. Also /http <url> opens <url> in web browser, and /http <n><TAB> replaces <n> with the corresponding <url> (so you can check it's the right link, and ^A it if not).
Pidfiles and attaching. When you run quirc, if there is an existing quirc process running, your new instance should simply signal that process to open the requested server/channel in a new tab, and the new instance should then close (after emitting a suitable diagnostic).