From: <sm...@wa...> - 2001-10-31 15:41:11
|
Ok here is my enormous list of bugs and ideas. These are all easy to fix, and I volunteer to fix or implement these myself. I'm mainly posting this to get some discussion going, and to get feedback on which features seem useful, and what I should and should not do to make erc even more useful and amusing than it already is. erc-switchb: - An alternative to iswitchb-buffer for erc buffers only. The following snippet shows the basic action, but the buffer names are too long, and I see no easy way to make iswitchb use shorter alternatives (iswitchb-read-buffer would return the abbreviated buffername, which has to be mapped back again; this is A possibility, but perhaps there are better alternatives?). See also the next point about buffer names. (defun erc-switch () (interactive) (let* ((choices (progn (set-buffer (process-buffer erc-process)) erc-buffer-list))) (let ((iswitchb-make-buflist-hook (function (lambda () (setq iswitchb-temp-buflist choices))))) (switch-to-buffer (iswitchb-read-buffer "Buffer: "))))) Buffer names: - Buffer names could perhaps be abbreviated to "#emacs, #emacs<2>, #lisp, MisterX" to denote #emacs on 2 different servers, and a query to MisterX. This would be useful both for switching and display in the mode-line. I have not found a convincing method on how to exactly name the buffers, though. Buffer list: - There is now a list of buffers _per server_. It seems better to have one global list for all buffers. It would be nice to make this a property or alist, so that more data could be put in there. Think about flags like "modified", "someone sent you a personal message there", .. Inconsistency in feedback of input text: - A message makes the entry prompt disappear, but for a /ME command it doesn't. Should be easy to fix, but perhaps there's a reason for this behaviour? Timestamps: - The code for adding of timestamps seems a bit messy. I found this snippet repeated many times throughout the code: (if erc-timestamp-format (format-time-string erc-timestamp-format (current-time)) "") This should obviously be taken into a function. Perhaps it would be better to have a hook to reformat a line of text though? Also, a timestamp is not prepended to messages sent by yourself, nor for server messages (topics &c.) I think other irc clients have a timestamp-level value to select which messages should get a timestamp, and which shouldn't. [Note: I have done a bit of work on this already, but it doesn't support timestamp levels yet. A generalization would be nice.] Scrolling: - "M-x term" manages to keep the entire window in use, having the input line near the bottom of the window. This seems to be implemented by having a _lot_ of (recenter (1- term-height)) calls all over term.el. Not the most elegant method, but it is effective. Could a somewhat cleaner method be used for erc, or should I just add recenter calls everywhere where needed? Pop-up buffers: - On incoming messages, with auto-query enabled, the query pops up, and interrupts my typing. It'd be nice to have these buffers buried by default (the mode-line change is enough). Nice customization option -- seems I could hack this in somewhere. [Note: Fixed, by adding a "bury" option to erc-join-buffer. It might be nice to rename erc-join-buffer to erc-new-buffer.] Persistent buffers: - It would be nice to be able to save (C-x C-s) a buffer log, and continue with it later. A message like ">> disconnected" could mark where one picked up again. Something analogous like (desktop-read) Nick change tracking in queries: - Subject says it all :-) It seems that MIRC and some other irc clients are capable of doing this, but I don't know the relevant commands to send to a server in order to be notified of nick changes. "Someone should research this" Tracking channels [,#bug]: - The extra comma is an obvious bug. It seems better (at least to me) to have a _list_ of buffers that are changed, instead of using a _string_ to store the changed buffers. When updating the modeline, the list can be processed to produce the string, but the other way around seems to be cumbersome, the current method is prone to errors. Misc.: - When quoting using "\C-RET", leading spaces should not be stripped (try quoting a lisp function for instance) - Transform "/join elisp" into "/join #elisp". - Mimick the /quote feature of TinyFugue. - Give some feedback when signing off. - DCC (zenirc seems to support dcc get, and dcc chat for incoming chats) How would one interface with a subprocess in a compatible way? - Unset a topic - A way to toggle "/" into some other character. Sometimes one wants to type text starting with a "/" character. Of course there are many more ideas, but this seems to be enough for now :-) Have a very nice day, -- Tijs van Bakel, aka smoke, <sm...@wa...> |