Skip to content
Fetching contributors…
Cannot retrieve contributors at this time
60 lines (30 sloc) 3.66 KB
==quIRC:future plans==
Scripting language. Under development in branch 'script'.
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.
Need to fix the problem of the conn_rest not getting called for eg worldofspectrum (why is this happening?)
Handle CTCP correctly, on both receive (rx_privmsg()) and send (talk()).
Fix possible issue with CTCP. Funny stuff (including random characters) happened when eg spike1 sent a CTCP PONG to the channel.
Fix issue with an infinite loop in irc_rx of bytes==0 from recv(). Don't fully understand what causes it.
Make hidden lines (quiet mode, conference mode, etc.) be stored in scrollback. Filter on render; that way changes are retroactive.
Optionally fold runs of the same type of message. Eg.: =foo=bar=baz= have joined #whatever.
Make getaddrinfo() calls use getaddrinfo_a(). They currently block everything on connect, which means that /server can cause existing connections to ping off. (However, getaddrinfo_a() is not portable and some 64-bit libc have bugs, so we need a switch to disable its use.)
Handle \ in tab-completion. It should be expanded to \\.
Make /close on server tabs close the associated channel tabs. /disconnect the same, presumably.
/realsname cmd to display the real server name (which we already store, anyway).
Store nicks uncrushed in unproc. Makes '/set mnln', '/set prefix' etc. retroactive.
Display something in buffer when a MODE affects us.
Option for no hanging indent (wordline() tabx=0).
Const-correctness. There are a lot of functions taking a char * that should take a const char *.
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().
Improve the parsing of mirc-colour-codes (to fix things like \003124 which currently gets eaten entirely). The relevant code is in bits.c.
/dump command. Pipes a screendump (or better still, unprocessed text) into program of choice.
/clear command.
Short commands (sufficient-prefix matching, like /cle).
Logging & 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).
Jump to Line
Something went wrong with that request. Please try again.