rcirc: Add flexible response formatting; Add nick abbrevs
2006-02-12 Miles Bader <miles@gnu.org>
* lisp/net/rcirc.el (rcirc-nick-abbrevs, rcirc-response-formats):
New variables.
(rcirc-abbrev-nick): New function.
(rcirc-format-response-string): Rewrite to use the formats in
`rcirc-response-formats' and expand escape sequences therein.
A text-property `rcirc-text' is added over the actual response
text to make easy to find inside the returned string.
(rcirc-print): When filling, just look for the `rcirc-text'
text-property to find the appropriate fill prefix, instead of
using hardwired patterns.
(rcirc-ignore-all-activity-flag): Remove variable.
(rcirc-authinfo): New variable.
(rcirc-authinfo-filename): Remove variable.
(rcirc-always-use-server-buffer-flag): New flag.
(rcirc): M-x rcirc will automatically connect without prompting.
C-u M-x rcirc will prompt. Use rcirc-connect to create a
connection in lisp.
(rcirc-process-server-response-1): Remove everything but the nick
portion of the sender so it doesn't need to be done everywhere
else. Update related code.
(global-map): Remove global keybindings.
(rcirc-get-buffer-create): Make sure rcirc-topic is set.
(rcirc-send-input): Split into several functions.
(rcirc-process-input-line, rcirc-process-message, rcirc-process-command):
New functions.
(rcirc-target-buffer): Add function to determine where to route messages.
(rcirc-user-nick): Save match data.
(rcirc-toggle-ignore-buffer-activity)
(rcirc-update-activity-string): Remove global ignore
functionality, which can be done now by toggling rcirc-track-minor-mode.
(rcirc-track-minor-mode-map): New keymap.
(rcirc-track-minor-mode): New minor-mode.
(ignore): Make the ignore output nicer. Always print it when adding or
removing nicks.
(rcirc-url-regexp): Improve.
(rcirc-mangle-text): Remove properties before using text in the modeline.
(rcirc-authenticate): Authentication data comes from rcirc-authinfo, not
the file pointed to by rcirc-authinfo-file.
(rcirc-server-prefix): Inherit from rcirc-server.
(rcirc-ignore-list-automatic): New variable.
(rcirc-print): Take rcirc-ignore-list into account.
(rcirc-cmd-ignore): New command.
(rcirc-ignore-update-automatic): New function.
(rcirc-handler-PART, rcirc-handler-QUIT): Use it to maintain the
list if ignored nicks.
(rcirc-handler-NICK): Ditto, and also ignore the new nick.
properties.
(rcirc-my-nick, rcirc-other-nick, rcirc-server)
(rcirc-nick-in-message, rcirc-prompt): Use min-colors and remove tty specs.
(rcirc-server-prefix, rcirc-server): New faces.
(rcirc-url-regexp): Generate with rx macro.
(rcirc-last-server-message-time): New variable.
(rcirc-filter): Record time of last message.
(rcirc-keepalive): Kill processes that did not send a message
since the last ping.
(rcirc-mode): Give rcirc-topic a local binding here.
(rcirc-print): Force redisplay before running hooks. Do long
buffer truncation after making new text read-only. Deal with nil
text when decoding strings. If TARGET is nil, use either the
currently selected buffer, if it is an rcirc buffer and of the
same process or the process buffer.
(rcirc-mode): Remove header-line. Recompute short buffer names.
Initialize rcirc-buffer-alist here instead of rcirc-get-buffer-create.
(rcirc-short-buffer-name): Add variable.
(rcirc-kill-buffer-hook): Recompute short buffer names. Remove
nick from private channel.
(rcirc-send-input): Send command text to current-buffer. Don't
clear overlay arrow here.
(rcirc-short-buffer-name): Return a short buffer name.
(rcirc-update-short-buffer-names, rcirc-abbreviate)
(rcirc-rebuild-tree, rcirc-make-trees): Add functions to generate
buffer-name abbreviations.
(rcirc-kill-buffer-hook-1): Split to make debugging easier. Do
not touch nick-table when killing a parted channel.
(rcirc-window-configuration-change): Rename from
rcirc-update-activity. Clear arrow from current buffer if it is now hidden.
(rcirc-current-buffer): Add variable.
(rcirc-my-nick, rcirc-other-nick, rcirc-server)
(rcirc-nick-in-message, rcirc-prompt, rcirc-mode-line-nick):
Remove -face from names.
(rcirc-update-activity-string): Print "DND" when globally ignoring activity.
(rcirc-ignore-buffer-activity-flag): Rename from rcirc-ignore-channel-activity.
(rcirc-ignore-all-activity-flag): Doc fix.
(rcirc-channels): Remove variable.
(rcirc-kill-buffer-hook):
(rcirc-get-buffer-create): Add nick to private channel.
(rcirc-multiline-edit-submit): Remove tabs.
(rcirc-put-nick-channel, rcirc-channel-nicks): Look up nicks case folded.
(rcirc-remove-nick-channel): Bug fix.
(rcirc-toggle-ignore-buffer-activity): Rename from
rcirc-toggle-ignore-channel-activity.
(rcirc-record-activity): Add buffers to the front of the list.
(rcirc-update-activity): Remove killed buffers from list.
(rcirc-process-server-response-1): Remove last argument if it is
null before calling handler.
(rcirc): Add "rcirc" defcustom prefix.
(rcirc-prompt): Simplify default prompt. Use custom-initialize-default.
(rcirc-private-chats): Remove variable.
(rcirc-prompt): Change initialization.
(rcirc-version): Remove function.
(rcirc-id-string): Add constant.
(rcirc-last-buffer): Remove variable.
(rcirc-buffer-alist): Add variable.
(rcirc-connect): Update variable setup.
(rcirc-sentinel, rcirc-update-prompt): Use `rcirc-buffer-alist'.
(rcirc-trap-errors-flag): Rename from `rcirc-trap-errors' change default.
(rcirc-handler-generic): Trigger activity.
(rcirc-send-message): Create the buffor of the target.
(rcirc-generate-new-buffer-name): Rename from
`rcirc-get-buffer-name'.
(rcirc-get-buffer): Just return nil if there is no matching buffer.
(rcirc-multiline-edit-cancel): Remove function.
(rcirc-set-last-buffer): Remove function.
(rcirc-get-any-buffer): Add function.
(rcirc-join-channels): Don't print /join text.
(rcirc-toggle-ignore-channel-activity): Add and update echo area messages.
(rcirc-cmd-ctcp): Use rcirc-send-string to send request.
(rcirc-handler-NOTICE): Recognize CTCP responses.
(rcirc-handler-332, rcirc-handler-332): Use a temp buffer for
constructing TOPIC string for buffers we are not JOINed.
(rcirc-handler-CTCP-response): Add handler.
(rcirc-multiline-edit-submit): Restore the window-configuration
before adjusting point.
(rcirc): Add customization group.
(rcirc-server, rcirc-port, rcirc-nick, rcirc-user-name)
(rcirc-user-full-name, rcirc-startup-channels-alist)
(rcirc-fill-flag, rcirc-fill-column, rcirc-fill-prefix)
(rcirc-ignore-all-activity-flag, rcirc-time-format)
(rcirc-input-ring-size, rcirc-read-only-flag)
(rcirc-buffer-maximum-lines, rcirc-authinfo-file-name)
(rcirc-auto-authenticate-flag, rcirc-prompt, rcirc-print-hooks):
Change defvar to defcustom.
(rcirc-update-prompt): Add optional ALL arg, which will update
prompts in all rcirc buffers. Regexp quote replacement text.
(rcirc-fill-column): Accept 'frame-width as a value.
(rcirc-set-changed): Add function.
(rcirc-next-active-buffer): Write more meaningful messages.
(rcirc-faces): Add customization group.
(rcirc-my-nick-face, rcirc-other-nick-face, rcirc-server-face)
(rcirc-nick-in-message-face, rcirc-prompt-face)
(rcirc-mode-line-nick-face): Move into rcirc-faces group.
(with-rcirc-process-buffer): Move before first usage.
(rcirc-debug-buffer): Rename from `rcirc-log-buffer'.
(rcirc-debug-flag): Rename from `rcirc-log-p'.
(rcirc-debug): Rename from `rcirc-log'.
(rcirc-format-response-string): Do not print '-' chars for a
NOTICE with no sender. Simplify output of server responses.
(rcirc-browse-url-map, rcirc-browse-url-at-point)
(rcirc-browse-url-at-mouse, rcirc-mangle-text): Make urls
mouse and RET clickable.