\input texinfo@c %**start of header@setfilename ../../info/rcirc@settitle rcirc Manual@c %**end of header@copyingCopyright @copyright{} 2006, 2007, 2008 Free Software Foundation, Inc.@quotationPermission is granted to copy, distribute and/or modify this documentunder the terms of the GNU Free Documentation License, Version 1.2 orany later version published by the Free Software Foundation; with noInvariant Sections, with the Front-Cover texts being ``A GNU Manual'',and with the Back-Cover Texts as in (a) below. A copy of the license isincluded in the section entitled ``GNU Free Documentation License''.(a) The FSF's Back-Cover Text is: ``You have the freedom to copy andmodify this GNU manual. Buying copies from the FSF supports it indeveloping GNU and promoting software freedom.''@end quotation@end copying@dircategory Emacs@direntry* Rcirc: (rcirc). Internet Relay Chat (IRC) client.@end direntry@titlepage@title rcirc Manual@page@vskip 0pt plus 1filll@insertcopying@end titlepage@ifnottex@node Top, Basics, (dir), (dir)@top rcirc Manual@end ifnottex@code{rcirc} is an Emacs IRC client.IRC (Internet Relay Chat) is a multi-user chat protocol. Userscommunicate with each other in real-time. Communication occurs both intopic channels which are collections of many users, or privately, withjust one other user.@menu* Basics::* Reference::* Fighting Information Overload::* Hacking and Tweaking::* GNU Free Documentation License::* Key Index::* Variable Index::* Index::@detailmenu --- The Detailed Node Listing ---Basics* Internet Relay Chat::* Getting started with rcirc::Reference* rcirc commands::* Useful IRC commands::* Configuration::Fighting Information Overload* Channels::* People::* Keywords::* Notices::Hacking and Tweaking* Skipping /away messages using handlers::* Using fly spell mode::* Scrolling conservatively::* Changing the time stamp format::* Defining a new command::* Reconnecting after you have lost the connection::@end detailmenu@end menu@node Basics, Reference, Top, Top@chapter BasicsThis chapter contains a brief introduction to IRC (Internet Relay Chat),and a quick tutorial on @code{rcirc}.@menu* Internet Relay Chat::* Getting started with rcirc::@end menu@node Internet Relay Chat, Getting started with rcirc, Basics, Basics@section Internet Relay Chat@cindex internet relay chat@cindex irc@cindex channel@dfn{Internet Relay Chat} (IRC) is a form of instant communication over theInternet. It is mainly designed for group (many-to-many) communicationin discussion forums called channels, but also allows one-to-onecommunication.@cindex instant messaging, comparison@cindex server@cindex networkContrary to most Instant Messenger (IM) systems, users usually don'tconnect to a central server. Instead, users connect to a randomserver in a network, and servers relay messages from one to the next.Here's a typical example:@cindex redirection to random serversWhen you connect to the Freenode network(@code{http://freenode.net/}), you point your IRC client at theserver @code{irc.freenode.net}. That server will redirect your clientto a random server on the network, such as @code{zelazny.freenode.net}.@cindex channel name@cindex # starts a channel nameOnce you're connected, you can send messages to all other usersconnected to the same network, and you can join all channels on the samenetwork. You might join the @code{#emacs} and the @code{#rcirc}channels, for example. (Typically, channel names begin with a hashcharacter.)Once you have joined a channel, anything you type will be broadcast toall the other users on the same channel.@cindex addressing other people@cindex other people, addressing them@cindex talk to other peopleIf you want to address someone specifically, for example as an answer toa question, it is customary to prefix the message with the nick followedby a colon, like this:@exampledeego: fsbot rules!@end example@cindex nick completion@cindex completion of nicks@kindex TABSince this is so common, you can use @key{TAB} to do nick completion.@node Getting started with rcirc, , Internet Relay Chat, Basics@section Getting started with rcirc@cindex getting started@cindex connecting to a server@cindex irc commandUse the command @kbd{M-x irc} to connect using the defaults.@xref{Configuration}, if you want to change the defaults.Use @kbd{C-u M-x irc} if you don't want to use the defaults, eg. if youwant to connect to a different network, or connect to the same networkusing a different nick. This will prompt you for four things:@table @asis@cindex server, connecting@cindex Freenode network@item IRC ServerWhat server do you want to connect to? All the servers in a particularnetwork are equivalent. Some networks use a round-robin system where asingle server redirects new connections to a random server in thenetwork. @code{irc.freenode.net} is such a server for the Freenodenetwork. Freenode provides the network ``for the Free and Open SourceSoftware communities, for not-for-profit organizations and for relatedcommunities and organizations.''@cindex port, connecting@cindex 6667, default IRC port@item IRC PortAll network connections require a port. Just as web servers and clientsuse port 80 per default, IRC uses port 6667 per default. You rarelyhave to use a different port.@cindex nick, connecting@cindex changing nick@cindex name changes@item IRC Nick@vindex user-login-nameEvery users needs a handle on-line. You will automatically be assigneda slightly different nick if your chosen nick is already in use. Ifyour @code{user-login-name} is @code{alex}, and this nick is alreadyin use, you might for example get assigned the nick @code{alex`}.@cindex channels, connecting@cindex initial channels@cindex startup channels@item IRC ChannelsA space separated list of channels you want to join when connecting.You don't need to join any channels, if you just want to have one-to-oneconversations with friends on the same network. If you're new to theFreenode network, join @code{#emacs}, the channel about all thingsEmacs, or join @code{#rcirc}, the channel about @code{rcirc}.@end table@cindex server bufferWhen you have answered these questions, @code{rcirc} will create a serverbuffer, which will be named something like @code{*irc.freenode.net*},and a channel buffer for each of the channels you wanted to join.@kindex RET@cindex talking@cindex communicatingTo talk in a channel, just type what you want to say in a channelbuffer, and press @key{RET}.@kindex C-c C-c@cindex multiline messages@cindex messages, multiple lines@cindex pasting multiple lines@cindex edit message before sendingIf you want to paste multiple lines, such as source code, you can use@kbd{C-c C-c} to edit your message in a separate buffer. Use @kbd{C-cC-c} to finish editing. You still need to press @key{RET} to send it,though. Generally, IRC users don't like people pasting more than aroundfour lines of code, so use with care.@comment This section copied from the Channels section.@comment All index markers should point to the original!Once you are connected to multiple channels, or once you've turned youattention to other buffers in Emacs, you probably want to be notifiedof any activity in channels not currently visible. All you need to dois switch channel tracking on using @kbd{M-x rcirc-track-minor-mode}.To make this permanent, add the following to your init file:@example(rcirc-track-minor-mode 1)@end exampleUse @kbd{C-c C-@key{SPC}} to switch to these buffers.@node Reference, Fighting Information Overload, Basics, Top@chapter Reference@cindex referenceThis is the reference section of the manual. It is not complete. Forcomplete listings of @code{rcirc} features, use Emacs built-indocumentation.@menu* rcirc commands::* Useful IRC commands::* Configuration::@end menu@node rcirc commands, Useful IRC commands, Reference, Reference@section rcirc commands@cindex rcirc commands@cindex commands@kindex C-h mThis is a list of commands that you may use in @code{rcirc}. It is notcomplete. For a complete listing, press @kbd{C-h m} in an @code{rcirc}buffer.In addition to using regular Emacs key bindings, you can call them bytyping them into an @code{rcirc} buffer.@cindex call commands@cindex typing commands@cindex commandsFor instance, instead of using the command @kbd{C-c C-j} to join a newchannel, you may type this in an @code{rcirc} buffer, and press @key{RET}:@example/join #emacs@end example@cindex / starts a command@cindex messages starting with a slash disappear@cindex disappearing messages if starting with a slash@cindex slash hides messageThis is why you cannot start a message with a slash. You will have toprecede the command with a space, or rewrite your message in order tosend it to a channel.@cindex multiple words as parameters@cindex string delimiters@cindex quotes@cindex double-quotesMany commands take parameters. IRC commands usually ignore stringdelimiters. Neither quote nor double-quote have special meanings inIRC.@example/nick "alex schroeder"@end exampleThis will try to change your nick to @code{"alex}. Usually this willfail because the double quote character is not a valid character fornicks.@cindex case insensitive commandsThese commands are case insensitive.@cindex new command@cindex unknown command@cindex command unknownIf a command isn't known by @code{rcirc}, it will simply be sent along to theserver. There is a list of some useful commands like that in the nextsection.@table @kbd@item C-c C-j@kindex C-c C-j@cindex /join@cindex join channels@cindex other channels@cindex rooms, joining@cindex discussion, joiningThis joins a channel such as @code{#rcirc} or @code{#emacs}. On mostnetworks, anybody can create new channels. If you want to talk withsome friends, for example, all you have to do is agree on a validchannel name and join that channel. (Also @code{/join #emacs}.)@item C-c C-p@kindex C-c C-p@cindex /part@cindex part a channel@cindex leave a channel@cindex disconnect from a channel@cindex stop talking on a channel@cindex kill channel bufferThis leaves the current channel. You can optionally provide a reasonfor parting. When you kill a channel buffer, you automatically part thecorresponding channel. (Also @code{/part you are too weird!}.)@item C-c C-r@kindex C-c C-r@cindex /nick@cindex change name@cindex nick changing@cindex rename yourself@cindex other nameThis changes your nick to some other name. Your nick must be uniqueacross the network. Most networks don't allow too many nick changes inquick succession, and have restrictions on the valid characters in nicknames. (Also @code{/nick alex-test})@item C-c C-w@kindex C-c C-w@cindex /whois@cindex who are these people@cindex identifying people@cindex channels other people are on@cindex what channels people are onGives you some basic information about a nick. This often includes whatother channels people are on. (Also @code{/whois fsbot}.)@item C-c C-q@kindex C-c C-q@cindex /query@cindex starting a private conversation@cindex one-to-one conversation@cindex talk privately@cindex private conversation@cindex contact one person only@cindex query a personStarts a one-to-one conversation with another person on the samenetwork. A new buffer will be created for this conversation. It workslike a channel with only two members. (Also @code{/query fsbot}.)@item C-c @key{RET}@kindex C-c RET@cindex /msg@cindex single message@cindex message sendingThis sends a single message to a nick. Like with @kbd{C-c C-q}, a newbuffer is created, where the response from the other party will showup. (Also @code{/msg nickserv identify secret}.)@item C-c C-x@kindex C-c C-x@cindex /quit@cindex quit@cindex disconnect@cindex kill connection@cindex connection end@cindex part all channels@cindex end connection@cindex server buffer killing@cindex reason for quittingThis disconnects from the server and parts all channels. You canoptionally provide a reason for quitting. When you kill the serverbuffer, you automatically quit the server and part all channels. (Also@code{/quit ZZZzzz...}.)@end table@node Useful IRC commands, Configuration, rcirc commands, Reference@section Useful IRC commands@cindex irc commands@cindex commandsAs mentioned, if a command isn't known by @code{rcirc}, it will simply be sentalong to the server. Some such commands are available on nearly all IRCservers, such as:@table @code@item /away@cindex /away@cindex away status@cindex pause status@cindex unavailable status@cindex set away statusThis sets your status as ``being away'' if you provide a reason, or setsyour status as ``being back'' if you do not. People can use the@kbd{C-c C-w} command to check your status. Example: @code{/away food}.@end table@cindex irc resources@cindex help about ircTypical IRC servers implement many more commands. You can read moreabout the fantastic world of IRC online at@uref{http://www.irchelp.org/, the Internet Relay Chat (IRC) helparchive}.@node Configuration, , Useful IRC commands, Reference@section Configuration@cindex configuring rcircThese are some variables you can change to configure @code{rcirc} to yourliking.@table @code@item rcirc-server-alist@vindex rcirc-server-alist@cindex channels, configuration@cindex initial channels, configuration@cindex startup channels, configuration@cindex servers, configuration@cindex initial servers, configuration@cindex startup servers, configurationThis variable contains an alist of servers to connect to by defaultand the keywords parameters to use. The keyword parameters areoptional. If you don't provide any, the defaults as documented belowwill be used.The most important parameter is the @code{:channels} parameter. Itcontrols which channels you will join by default as soon as you areconnected to the server.Here's an example of how to set it:@example(add-to-list 'rcirc-server-alist '("otherworlders.org" :channels ("#FUDGE" "#game-design")))@end exampleBy default you will be connected to the @code{rcirc} support channel:@code{#rcirc} on @code{irc.freenode.net}.@table @code@item :nickThis overrides @code{rcirc-default-nick}.@item :portThis overrides @code{rcirc-default-port}.@item :user-nameThis overrides @code{rcirc-default-user-name}.@item :full-nameThis overrides @code{rcirc-default-full-name}.@item :channelsThis describes which channels to join when connecting to the server.If absent, no channels will be connected to automatically.@end table@item rcirc-default-nick@vindex rcirc-default-nickThis variable is used for the default nick. It defaults to the loginname returned by @code{user-login-name}.@example(setq rcirc-default-nick "kensanata")@end example@item rcirc-default-port@vindex rcirc-default-port@cindex portThis variable contains the default port to connect to. It is 6667 bydefault and rarely needs changing.@item rcirc-default-user-name@vindex rcirc-default-user-name@cindex user nameThis variable contains the default user name to report to the server.It defaults to the login name returned by @code{user-login-name}, justlike @code{rcirc-default-nick}.@item rcirc-default-user-full-name@vindex rcirc-default-user-full-name@cindex full name@cindex real name@cindex surnameThis variable is used to set your ``real name'' on IRC. It defaultsto the name returned by @code{user-full-name}. If you want to hideyour full name, you might want to set it to some pseudonym.@example(setq rcirc-default-user-full-name "Curious Minds Want To Know")@end example@item rcirc-authinfo@vindex rcirc-authinfo@cindex authentification@cindex identification@cindex nickserv@cindex loginThis variable is an alist used to automatically identify yourself onnetworks. Each sublist starts with a regular expression that iscompared to the server address you're connecting to. The secondelement in the list is a symbol representing the method to use,followed by the arguments this method requires.Here is an example to illustrate how you would set it:@example(setq rcirc-authinfo '(("freenode" nickserv "bob" "p455w0rd") ("freenode" chanserv "bob" "#bobland" "passwd99") ("bitlbee" bitlbee "robert" "sekrit")))@end exampleAnd here are the valid method symbols and the arguments they require:@table @code@item nickserv@cindex nickserv authentificationUse this symbol if you need to identify yourself as follows whenconnecting to a network: @code{/msg nickserv identify secret}. Thenecessary arguments are the nickname you want to use this for, and thepassword to use.Before you can use this method, you will have to register your nick andpick a password for it. Contact @code{nickserv} and check out thedetails. (Using @code{/msg nickserv help}, for example.)@item chanserv@cindex chanserv authentificationUse this symbol if you need to identify yourself as follows if you wantto join a particular channel: @code{/msg chanserv identify #undergroundsecret}. The necessary arguments are the nickname and channel you wantto use this for, and the password to use.Before you can use this method, a channel contact must tell you aboutthe password to use. Contact @code{chanserv} and check out the details.(Using @code{/msg chanserv help}, for example.)@item bitlbee@cindex bitlbee authentificationUse this symbol if you need to identify yourself in the Bitlbee channelas follows: @code{identify secret}. The necessary arguments are thenickname you want to use this for, and the password to use.@cindex gateway to other IM services@cindex instant messaging, other services@cindex Jabber@cindex AIM@cindex ICQ@cindex MSN@cindex Yahoo!Bitlbee acts like an IRC server, but in fact it is a gateway to a lot ofother instant messaging services. You can either install Bitlbeelocally or use a public Bitlbee server. There, you need to create anaccount with a password. This is the nick and password you need toprovide for the bitlbee authentification method.Later, you will tell Bitlbee about your accounts and passwords on allthe other instant messaging services, and Bitlbee will log you in. All@code{rcirc} needs to know, is the login to your Bitlbee account. Don'tconfuse the Bitlbee account with all the other accounts.@end table@end table@node Fighting Information Overload, Hacking and Tweaking, Reference, Top@chapter Fighting Information Overload@cindex information overloadThis is the section of the manual that caters to the busy persononline. There are support channels with several hundred people inthem. Trying to follow a conversation in these channels can be adaunting task. This chapters tells you how @code{rcirc} can help.@menu* Channels::* People::* Keywords::* Notices::@end menu@node Channels, People, Fighting Information Overload, Fighting Information Overload@section Channels@cindex channels@cindex modeline@comment This section copied to the Getting started with rcirc section@kindex C-c C-SPC@vindex rcirc-track-minor-mode@cindex switching channels@cindex tracking activity@cindex active channel@cindex abbreviated channel names@cindex modeline tracks activityMost people want a notification when something is said on a channel theyhave joined, particularly if they have been addressed directly. Thereis a global minor mode that will do this kind of tracking for you. Allyou need to do is switch it on using @kbd{M-x rcirc-track-minor-mode}.To make this permanent, add the following to your init file:@example(rcirc-track-minor-mode 1)@end exampleWhen other people say things in buffers that are currently buried (nowindow is showing them), the mode line will now show you the abbreviatedchannel or nick name. Use @kbd{C-c C-@key{SPC}} to switch to thesebuffers.@vindex rcirc-mode-hookIf you prefer not to load @code{rcirc} immediately, you can delay theactivation of this mode:@example(add-hook 'rcirc-mode-hook (lambda () (rcirc-track-minor-mode 1)))@end example@cindex busy channelsIf you've joined a very active support channel, tracking activity isno longer useful. The channel will be always active. Switching toactive channels using @kbd{C-c C-@key{SPC}} no longer works asexpected.@kindex C-c C-l@cindex low priority channelsThe solution is to mark this channel as as a low priority channel.Use @kbd{C-c C-l} to make the current channel a low-priority channel.Low priority channels have the modeline indicator ``LowPri''.@kbd{C-c C-@key{SPC}} will not switch to low priority channels unlessyou use the @kbd{C-u} prefix.@kindex C-c TAB@cindex ignored channelsIf you prefer a channel to never show up in the modeline, then youhave to ignore it. Use @kbd{C-c @key{TAB}} to ignore the currentchannel.@node People, Keywords, Channels, Fighting Information Overload@section People@cindex people, how to ignore@cindex nicks, how to ignore@cindex friends@cindex buddies@cindex trollsThe most important command available to the discerning IRC user is@code{/ignore}. It's the big equalizer online: If people aggravateyou, just ignore them.This is of course a crude all-or-nothing solution. Fear not,@code{rcirc} offers alternatives: You can ``brighten'' your buddiesand ``dim'' certain other nicks that you don't want to ignorealtogether.@table @code@item /ignore@cindex /ignore@cindex ignoring other people@cindex trolls, ignoring@cindex hide some posts@cindex idiots onlineThis command toggles the ignore status of a nick, if you provide one.If you don't provide a nick, the command lists all the nicks you areignoring. All messages by ignored nicks are---you guessed it---ignored.Since only ``operators'' can kick people from channels, theignore command is often the only way to deal with some of the moreobnoxious fellows online. Example: @code{/ignore rudybot}.@item /bright@cindex /bright@cindex highlight other people@cindex friends, highlight@cindex buddies, highlight@cindex nicks, highlight@cindex brighten nicksThis command toggles the bright status of a nick, if you provide one.If you don't provide a nick, the command lists all the ``brightened''nicks. All messages by brightened nicks are---you guessedit---brightened. Use this for your friends. Example: @code{/brightrcy}.@item /dim@cindex /dim@cindex soft-ignore other people@cindex obnoxious people online@cindex rabble onlineThis command toggles the dim status of a nick, if you provide one. Ifyou don't provide a nick, the command lists all the ``dimmed'' nicks.All messages by dimmed nicks are---you guessed it---dimmed. Use thisfor boring people and bots. If you are tracking channel activity,messages by dimmed nicks will not register as activity. Example:@code{/dim fsbot}.@end table@node Keywords, Notices, People, Fighting Information Overload@section Keywords@cindex keywordsOn a busy channel, you might want to ignore all activity (using@kbd{C-c @key{TAB}}) and just watch for certain keywords. Thefollowing command allows you to highlight certain keywords:@table @code@item /keyword@cindex /keywordThis command toggles the highlighting of a keyword, if you provideone. If you don't provide a keyword, the current keywords arelisted. Example: @code{/keyword manual}.@end table@node Notices, , Keywords, Fighting Information Overload@section Notices@cindex part notices, how to omit @cindex join notices, how to omit@cindex quit notices, how to omit@cindex nick notices, how to omit@kindex C-c C-o@cindex low priority channelsIn busy channels you might not be interested in all the joining,parting, quitting, and renaming that goes on. You can omit thosenotices using @kbd{C-c C-o}.@vindex rcirc-omit-responses@cindex away notices, how to omitYou can control which notices get omitted via the@code{rcirc-omit-responses} variable. Here's an example of how toomit away messages:@example(setq rcirc-omit-responses '("JOIN" "PART" "QUIT" "NICK" "AWAY))@end example@vindex rcirc-omit-thresholdNotice that these messages will not be omitted if the nick in questionhas recently been active. After all, you don't want to continue aconversation with somebody who just left. That's why @code{rcirc}checks recent lines in the buffer to figure out if a nick has beenactive and only omits a message if the nick has not been active. Thewindow @code{rcirc} considers is controlled by the@code{rcirc-omit-threshold} variable.@node Hacking and Tweaking, GNU Free Documentation License, Fighting Information Overload, Top@chapter Hacking and Tweaking@cindex hacking and tweakingHere are some examples of stuff you can do to configure @code{rcirc}.@menu* Skipping /away messages using handlers::* Using fly spell mode::* Scrolling conservatively::* Changing the time stamp format::* Defining a new command::* Reconnecting after you have lost the connection::@end menu@node Skipping /away messages using handlers, Using fly spell mode, Hacking and Tweaking, Hacking and Tweaking@section Skipping @code{/away} messages using handlers@cindex /away messages@cindex handlers@cindex status codesThe IRC protocol specifies how certain events are signaled from serverto client. These events have numbers and are dealt with using so-calledhandlers. You can override existing handlers by exploiting the namingconvention adopted for @code{rcirc}.Here's how to stop @code{rcirc} from printing @code{/away} messages.Since @code{rcirc} doesn't define a 301 handler, you don't need torequire @code{rcirc} before defining the handler:@example(defun rcirc-handler-301 (process cmd sender args) "/away message handler.")@end example@node Using fly spell mode, Scrolling conservatively, Skipping /away messages using handlers, Hacking and Tweaking@section Using fly spell mode@cindex fly spell@cindex spelling@cindex spell-checking as you type@cindex automatic spelling@vindex rcirc-mode-hookThe following code activates Fly Spell Modefor @code{rcirc} buffers:@example(add-hook 'rcirc-mode-hook (lambda () (flyspell-mode 1)))@end example@xref{Spelling, , Flyspell mode, emacs, The GNU Emacs Manual},for details.@node Scrolling conservatively, Changing the time stamp format, Using fly spell mode, Hacking and Tweaking@section Scrolling conservatively@cindex input line@cindex scrolling@vindex scroll-conservatively@vindex rcirc-mode-hookIRC buffers are constantly growing. If you want to see as much aspossible at all times, you would want the prompt at the bottom of thewindow when possible. The following snippet uses a local value for@code{scroll-conservatively} to achieve this:@example(add-hook 'rcirc-mode-hook (lambda () (set (make-local-variable 'scroll-conservatively) 8192)))@end example@xref{Scrolling, , Scrolling conservatively, emacs, The GNU EmacsManual}, for details.@node Changing the time stamp format, Defining a new command, Scrolling conservatively, Hacking and Tweaking@section Changing the time stamp format@cindex time stamp@cindex date time@cindex format time stamp@vindex rcirc-time-format@code{rcirc-time-format} is the format used for the time stamp. Here'show to include the date in the time stamp:@example(setq rcirc-time-format "%Y-%m-%d %H:%M ")@end example@node Defining a new command, Reconnecting after you have lost the connection, Changing the time stamp format, Hacking and Tweaking@section Defining a new command@cindex defining commands@cindex commands, defining@cindex new commands, definingHere's a simple new command, @code{/sv}. With it, you can boast aboutyour IRC client. It shows how you can use @code{defun-rcirc-command} todefine new commands.We're waiting for the definition of this command until @code{rcirc} is loadedbecause @code{defun-rcirc-command} is not yet available, and without@code{rcirc} loaded, the command wouldn't do us much good anyway.@smallexample(eval-after-load 'rcirc '(defun-rcirc-command sv (arg) "Boast about rcirc." (interactive "i") (rcirc-send-message process target (concat "I use " rcirc-id-string))))@end smallexample@node Reconnecting after you have lost the connection, , Defining a new command, Hacking and Tweaking@section Reconnecting after you have lost the connection@cindex reconnecting@cindex disconnecting servers, reconnectingIf you're chatting from a laptop, then you might be familiar with thisproblem: When your laptop falls asleep and wakes up later, your IRCclient doesn't realize that it has been disconnected. It takes severalminutes until the client decides that the connection has in fact beenlost. The simple solution is to use @kbd{M-x rcirc}. The problem isthat this opens an @emph{additional} connection, so you'll have twocopies of every channel buffer --- one dead and one live.The real answer, therefore, is a @code{/reconnect} command:@smallexample(eval-after-load 'rcirc '(defun-rcirc-command reconnect (arg) "Reconnect the server process." (interactive "i") (unless process (error "There's no process for this target")) (let* ((server (car (process-contact process))) (port (process-contact process :service)) (nick (rcirc-nick process)) channels query-buffers) (dolist (buf (buffer-list)) (with-current-buffer buf (when (eq process (rcirc-buffer-process)) (remove-hook 'change-major-mode-hook 'rcirc-change-major-mode-hook) (if (rcirc-channel-p rcirc-target) (setq channels (cons rcirc-target channels)) (setq query-buffers (cons buf query-buffers)))))) (delete-process process) (rcirc-connect server port nick rcirc-default-user-name rcirc-default-user-full-name channels))))@end smallexample@node GNU Free Documentation License, Key Index, Hacking and Tweaking, Top@appendix GNU Free Documentation License@include doclicense.texi@node Key Index, Variable Index, GNU Free Documentation License, Top@unnumbered Key Index@printindex ky@node Variable Index, Index, Key Index, Top@unnumbered Variable Index@printindex vr@node Index, , Variable Index, Top@unnumbered Index@printindex cp@bye@ignore arch-tag: 2589e562-3843-4ffc-8c2f-477cbad57c01@end ignore