/
plans
45 lines (23 loc) · 2.93 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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
==quIRC:future plans==
Scripting language. Under development in branch 'script'.
Need to fix the problem of the conn_rest not getting called for eg worldofspectrum (why is this happening?)
Leave UTF8 alone when escaping unprintables in input buffer.
Tab search, with ^T. Typing eg ^Tqu<return> should switch to the tab named quirc (assuming no other tabs have names containing "qu"). While entering the search string, all matching tabs should be highlighted on the strip.
Const-correctness. There are a lot of functions taking a char * that should take a const char *.
Check the return value of malloc (and realloc) everywhere. At the moment we're lax, which is fine on overcommitting Linux but not elsewhere.
Remember channel keys for /rejoin. An argument to /rejoin overrides (but doesn't overwrite unless the /rejoin succeeds).
Proper handling of Unicode in character-based things like cursor-movement, backspace.
Use unicode-charmap (somewhere in system i18n) to find out character widths, for wordline().
/connrest. Force the conn_rest to be called (to deal with eg. worldofspectrum - see above).
/quote alias to /cmd.
/dump command. Pipes a screendump (or better still, unprocessed text) into program of choice.
/clear command.
Short commands (sufficient-prefix matching, like /cle).
#inclusion and Makefile audit. Lots of stuff is #included from .h files when it should only be #included from the .c files, some #inclusions may not be reflected in the Makefile, and type definition #include loops should be resolved with types.h instead of relying on placing #includes after typedefs.
Logging configuration in rc file.
Persistent backscroll.
Runtime buffer resizing.
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.).
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 ^C it if not). May be unnecessary since you can use /dump command instead
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).