3 @setfilename ../../info/rcirc
8 Copyright @copyright{} 2006-2012
9 Free Software Foundation, Inc.
12 Permission is granted to copy, distribute and/or modify this document
13 under the terms of the GNU Free Documentation License, Version 1.3 or
14 any later version published by the Free Software Foundation; with no
15 Invariant Sections, with the Front-Cover texts being ``A GNU Manual'',
16 and with the Back-Cover Texts as in (a) below. A copy of the license is
17 included in the section entitled ``GNU Free Documentation License''.
19 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
20 modify this GNU manual. Buying copies from the FSF supports it in
21 developing GNU and promoting software freedom.''
25 @dircategory Emacs network features
27 * Rcirc: (rcirc). Internet Relay Chat (IRC) client.
33 @vskip 0pt plus 1filll
40 @node Top, Basics, (dir), (dir)
43 @code{rcirc} is an Emacs IRC client.
45 IRC (Internet Relay Chat) is a multi-user chat protocol. Users
46 communicate with each other in real-time. Communication occurs both in
47 topic channels which are collections of many users, or privately, with
57 * Fighting Information Overload::
58 * Hacking and Tweaking::
59 * GNU Free Documentation License::
65 --- The Detailed Node Listing ---
69 * Internet Relay Chat::
70 * Getting started with rcirc::
75 * Useful IRC commands::
78 Fighting Information Overload
87 * Skipping /away messages using handlers::
88 * Using fly spell mode::
89 * Scrolling conservatively::
90 * Changing the time stamp format::
91 * Defining a new command::
92 * Reconnecting after you have lost the connection::
97 @node Basics, Reference, Top, Top
100 This chapter contains a brief introduction to IRC (Internet Relay Chat),
101 and a quick tutorial on @code{rcirc}.
104 * Internet Relay Chat::
105 * Getting started with rcirc::
108 @node Internet Relay Chat, Getting started with rcirc, Basics, Basics
109 @section Internet Relay Chat
110 @cindex internet relay chat
114 @dfn{Internet Relay Chat} (IRC) is a form of instant communication over the
115 Internet. It is mainly designed for group (many-to-many) communication
116 in discussion forums called channels, but also allows one-to-one
119 @cindex instant messaging, comparison
122 Contrary to most Instant Messenger (IM) systems, users usually don't
123 connect to a central server. Instead, users connect to a random
124 server in a network, and servers relay messages from one to the next.
126 Here's a typical example:
128 @cindex redirection to random servers
129 When you connect to the Freenode network
130 (@code{http://freenode.net/}), you point your IRC client at the
131 server @code{irc.freenode.net}. That server will redirect your client
132 to a random server on the network, such as @code{zelazny.freenode.net}.
135 @cindex # starts a channel name
136 Once you're connected, you can send messages to all other users
137 connected to the same network, and you can join all channels on the same
138 network. You might join the @code{#emacs} and the @code{#rcirc}
139 channels, for example. (Typically, channel names begin with a hash
142 Once you have joined a channel, anything you type will be broadcast to
143 all the other users on the same channel.
145 @cindex addressing other people
146 @cindex other people, addressing them
147 @cindex talk to other people
148 If you want to address someone specifically, for example as an answer to
149 a question, it is customary to prefix the message with the nick followed
150 by a colon, like this:
156 @cindex nick completion
157 @cindex completion of nicks
159 Since this is so common, you can use @key{TAB} to do nick completion.
161 @node Getting started with rcirc, , Internet Relay Chat, Basics
162 @section Getting started with rcirc
163 @cindex getting started
164 @cindex connecting to a server
167 Use the command @kbd{M-x irc} to connect using the defaults.
168 @xref{Configuration}, if you want to change the defaults.
170 Use @kbd{C-u M-x irc} if you don't want to use the defaults, eg. if you
171 want to connect to a different network, or connect to the same network
172 using a different nick. This will prompt you for four things:
175 @cindex server, connecting
176 @cindex Freenode network
178 What server do you want to connect to? All the servers in a particular
179 network are equivalent. Some networks use a round-robin system where a
180 single server redirects new connections to a random server in the
181 network. @code{irc.freenode.net} is such a server for the Freenode
182 network. Freenode provides the network ``for the Free and Open Source
183 Software communities, for not-for-profit organizations and for related
184 communities and organizations.''
186 @cindex port, connecting
187 @cindex 6667, default IRC port
189 All network connections require a port. Just as web servers and clients
190 use port 80 per default, IRC uses port 6667 per default. You rarely
191 have to use a different port.
193 @cindex nick, connecting
194 @cindex changing nick
197 @vindex user-login-name
198 Every users needs a handle on-line. You will automatically be assigned
199 a slightly different nick if your chosen nick is already in use. If
200 your @code{user-login-name} is @code{alex}, and this nick is already
201 in use, you might for example get assigned the nick @code{alex`}.
203 @cindex channels, connecting
204 @cindex initial channels
205 @cindex startup channels
207 A space separated list of channels you want to join when connecting.
208 You don't need to join any channels, if you just want to have one-to-one
209 conversations with friends on the same network. If you're new to the
210 Freenode network, join @code{#emacs}, the channel about all things
211 Emacs, or join @code{#rcirc}, the channel about @code{rcirc}.
214 @cindex server buffer
215 When you have answered these questions, @code{rcirc} will create a server
216 buffer, which will be named something like @code{*irc.freenode.net*},
217 and a channel buffer for each of the channels you wanted to join.
221 @cindex communicating
222 To talk in a channel, just type what you want to say in a channel
223 buffer, and press @key{RET}.
226 @cindex multiline messages
227 @cindex messages, multiple lines
228 @cindex pasting multiple lines
229 @cindex edit message before sending
230 If you want to paste multiple lines, such as source code, you can use
231 @kbd{C-c C-c} to edit your message in a separate buffer. Use @kbd{C-c
232 C-c} to finish editing. You still need to press @key{RET} to send it,
233 though. Generally, IRC users don't like people pasting more than around
234 four lines of code, so use with care.
236 @comment This section copied from the Channels section.
237 @comment All index markers should point to the original!
238 Once you are connected to multiple channels, or once you've turned you
239 attention to other buffers in Emacs, you probably want to be notified
240 of any activity in channels not currently visible. All you need to do
241 is switch channel tracking on using @kbd{M-x rcirc-track-minor-mode}.
242 To make this permanent, add the following to your init file:
245 (rcirc-track-minor-mode 1)
248 Use @kbd{C-c C-@key{SPC}} to switch to these buffers.
250 @node Reference, Fighting Information Overload, Basics, Top
254 This is the reference section of the manual. It is not complete. For
255 complete listings of @code{rcirc} features, use Emacs built-in
260 * Useful IRC commands::
264 @node rcirc commands, Useful IRC commands, Reference, Reference
265 @section rcirc commands
266 @cindex rcirc commands
270 This is a list of commands that you may use in @code{rcirc}. It is not
271 complete. For a complete listing, press @kbd{C-h m} in an @code{rcirc}
274 In addition to using regular Emacs key bindings, you can call them by
275 typing them into an @code{rcirc} buffer.
277 @cindex call commands
278 @cindex typing commands
280 For instance, instead of using the command @kbd{C-c C-j} to join a new
281 channel, you may type this in an @code{rcirc} buffer, and press @key{RET}:
287 @cindex / starts a command
288 @cindex messages starting with a slash disappear
289 @cindex disappearing messages if starting with a slash
290 @cindex slash hides message
291 This is why you cannot start a message with a slash. You will have to
292 precede the command with a space, or rewrite your message in order to
293 send it to a channel.
295 @cindex multiple words as parameters
296 @cindex string delimiters
298 @cindex double-quotes
299 Many commands take parameters. IRC commands usually ignore string
300 delimiters. Neither quote nor double-quote have special meanings in
304 /nick "alex schroeder"
307 This will try to change your nick to @code{"alex}. Usually this will
308 fail because the double quote character is not a valid character for
311 @cindex case insensitive commands
312 These commands are case insensitive.
315 @cindex unknown command
316 @cindex command unknown
317 If a command isn't known by @code{rcirc}, it will simply be sent along to the
318 server. There is a list of some useful commands like that in the next
325 @cindex join channels
326 @cindex other channels
327 @cindex rooms, joining
328 @cindex discussion, joining
329 This joins a channel such as @code{#rcirc} or @code{#emacs}. On most
330 networks, anybody can create new channels. If you want to talk with
331 some friends, for example, all you have to do is agree on a valid
332 channel name and join that channel. (Also @code{/join #emacs}.)
337 @cindex part a channel
338 @cindex leave a channel
339 @cindex disconnect from a channel
340 @cindex stop talking on a channel
341 @cindex kill channel buffer
342 This leaves the current channel. You can optionally provide a reason
343 for parting. When you kill a channel buffer, you automatically part the
344 corresponding channel. (Also @code{/part you are too weird!}.)
350 @cindex nick changing
351 @cindex rename yourself
353 This changes your nick to some other name. Your nick must be unique
354 across the network. Most networks don't allow too many nick changes in
355 quick succession, and have restrictions on the valid characters in nick
356 names. (Also @code{/nick alex-test})
361 @cindex who are these people
362 @cindex identifying people
363 @cindex channels other people are on
364 @cindex what channels people are on
365 Gives you some basic information about a nick. This often includes what
366 other channels people are on. (Also @code{/whois fsbot}.)
371 @cindex starting a private conversation
372 @cindex one-to-one conversation
373 @cindex talk privately
374 @cindex private conversation
375 @cindex contact one person only
376 @cindex query a person
377 Starts a one-to-one conversation with another person on the same
378 network. A new buffer will be created for this conversation. It works
379 like a channel with only two members. (Also @code{/query fsbot}.)
384 @cindex single message
385 @cindex message sending
386 This sends a single message to a nick. Like with @kbd{C-c C-q}, a new
387 buffer is created, where the response from the other party will show
388 up. (Also @code{/msg nickserv identify secret}.)
395 @cindex kill connection
396 @cindex connection end
397 @cindex part all channels
398 @cindex end connection
399 @cindex server buffer killing
400 @cindex reason for quitting
401 This disconnects from the server and parts all channels. You can
402 optionally provide a reason for quitting. When you kill the server
403 buffer, you automatically quit the server and part all channels. (Also
404 @code{/quit ZZZzzz...}.)
407 @node Useful IRC commands, Configuration, rcirc commands, Reference
408 @section Useful IRC commands
412 As mentioned, if a command isn't known by @code{rcirc}, it will simply be sent
413 along to the server. Some such commands are available on nearly all IRC
421 @cindex unavailable status
422 @cindex set away status
423 This sets your status as ``being away'' if you provide a reason, or sets
424 your status as ``being back'' if you do not. People can use the
425 @kbd{C-c C-w} command to check your status. Example: @code{/away food}.
428 @cindex irc resources
429 @cindex help about irc
430 Typical IRC servers implement many more commands. You can read more
431 about the fantastic world of IRC online at
432 @uref{http://www.irchelp.org/, the Internet Relay Chat (IRC) help
435 @node Configuration, , Useful IRC commands, Reference
436 @section Configuration
437 @cindex configuring rcirc
439 These are some variables you can change to configure @code{rcirc} to your
443 @item rcirc-server-alist
444 @vindex rcirc-server-alist
445 @cindex channels, configuration
446 @cindex initial channels, configuration
447 @cindex startup channels, configuration
448 @cindex servers, configuration
449 @cindex initial servers, configuration
450 @cindex startup servers, configuration
451 This variable contains an alist of servers to connect to by default
452 and the keywords parameters to use. The keyword parameters are
453 optional. If you don't provide any, the defaults as documented below
456 The most important parameter is the @code{:channels} parameter. It
457 controls which channels you will join by default as soon as you are
458 connected to the server.
460 Here's an example of how to set it:
463 (add-to-list 'rcirc-server-alist
464 '("otherworlders.org"
465 :channels ("#FUDGE" "#game-design")))
468 By default you will be connected to the @code{rcirc} support channel:
469 @code{#rcirc} on @code{irc.freenode.net}.
473 This overrides @code{rcirc-default-nick}.
476 This overrides @code{rcirc-default-port}.
479 This overrides @code{rcirc-default-user-name}.
482 This overrides @code{rcirc-default-full-name}.
485 This describes which channels to join when connecting to the server.
486 If absent, no channels will be connected to automatically.
490 @item rcirc-default-nick
491 @vindex rcirc-default-nick
492 This variable is used for the default nick. It defaults to the login
493 name returned by @code{user-login-name}.
496 (setq rcirc-default-nick "kensanata")
499 @item rcirc-default-port
500 @vindex rcirc-default-port
502 This variable contains the default port to connect to. It is 6667 by
503 default and rarely needs changing.
505 @item rcirc-default-user-name
506 @vindex rcirc-default-user-name
508 This variable contains the default user name to report to the server.
509 It defaults to the login name returned by @code{user-login-name}, just
510 like @code{rcirc-default-nick}.
512 @item rcirc-default-full-name
513 @vindex rcirc-default-full-name
517 This variable is used to set your ``real name'' on IRC. It defaults
518 to the name returned by @code{user-full-name}. If you want to hide
519 your full name, you might want to set it to some pseudonym.
522 (setq rcirc-default-full-name "Curious Minds Want To Know")
526 @vindex rcirc-authinfo
527 @cindex authentication
528 @cindex identification
531 This variable is an alist used to automatically identify yourself on
532 networks. Each sublist starts with a regular expression that is
533 compared to the server address you're connecting to. The second
534 element in the list is a symbol representing the method to use,
535 followed by the arguments this method requires.
537 Here is an example to illustrate how you would set it:
541 '(("freenode" nickserv "bob" "p455w0rd")
542 ("freenode" chanserv "bob" "#bobland" "passwd99")
543 ("bitlbee" bitlbee "robert" "sekrit")))
546 And here are the valid method symbols and the arguments they require:
550 @cindex nickserv authentication
551 Use this symbol if you need to identify yourself as follows when
552 connecting to a network: @code{/msg nickserv identify secret}. The
553 necessary arguments are the nickname you want to use this for, and the
556 Before you can use this method, you will have to register your nick and
557 pick a password for it. Contact @code{nickserv} and check out the
558 details. (Using @code{/msg nickserv help}, for example.)
561 @cindex chanserv authentication
562 Use this symbol if you need to identify yourself as follows if you want
563 to join a particular channel: @code{/msg chanserv identify #underground
564 secret}. The necessary arguments are the nickname and channel you want
565 to use this for, and the password to use.
567 Before you can use this method, a channel contact must tell you about
568 the password to use. Contact @code{chanserv} and check out the details.
569 (Using @code{/msg chanserv help}, for example.)
572 @cindex bitlbee authentication
573 Use this symbol if you need to identify yourself in the Bitlbee channel
574 as follows: @code{identify secret}. The necessary arguments are the
575 nickname you want to use this for, and the password to use.
577 @cindex gateway to other IM services
578 @cindex instant messaging, other services
584 Bitlbee acts like an IRC server, but in fact it is a gateway to a lot of
585 other instant messaging services. You can either install Bitlbee
586 locally or use a public Bitlbee server. There, you need to create an
587 account with a password. This is the nick and password you need to
588 provide for the bitlbee authentication method.
590 Later, you will tell Bitlbee about your accounts and passwords on all
591 the other instant messaging services, and Bitlbee will log you in. All
592 @code{rcirc} needs to know, is the login to your Bitlbee account. Don't
593 confuse the Bitlbee account with all the other accounts.
599 @node Fighting Information Overload, Hacking and Tweaking, Reference, Top
600 @chapter Fighting Information Overload
601 @cindex information overload
603 This is the section of the manual that caters to the busy person
604 online. There are support channels with several hundred people in
605 them. Trying to follow a conversation in these channels can be a
606 daunting task. This chapters tells you how @code{rcirc} can help.
615 @node Channels, People, Fighting Information Overload, Fighting Information Overload
620 @comment This section copied to the Getting started with rcirc section
622 @vindex rcirc-track-minor-mode
623 @cindex switching channels
624 @cindex tracking activity
625 @cindex active channel
626 @cindex abbreviated channel names
627 @cindex modeline tracks activity
628 Most people want a notification when something is said on a channel they
629 have joined, particularly if they have been addressed directly. There
630 is a global minor mode that will do this kind of tracking for you. All
631 you need to do is switch it on using @kbd{M-x rcirc-track-minor-mode}.
632 To make this permanent, add the following to your init file:
635 (rcirc-track-minor-mode 1)
638 When other people say things in buffers that are currently buried (no
639 window is showing them), the mode line will now show you the abbreviated
640 channel or nick name. Use @kbd{C-c C-@key{SPC}} to switch to these
643 @vindex rcirc-mode-hook
644 If you prefer not to load @code{rcirc} immediately, you can delay the
645 activation of this mode:
648 (add-hook 'rcirc-mode-hook
650 (rcirc-track-minor-mode 1)))
653 @cindex busy channels
654 If you've joined a very active support channel, tracking activity is
655 no longer useful. The channel will be always active. Switching to
656 active channels using @kbd{C-c C-@key{SPC}} no longer works as
660 @cindex low priority channels
661 The solution is to mark this channel as a low priority channel.
662 Use @kbd{C-c C-l} to make the current channel a low-priority channel.
663 Low priority channels have the modeline indicator ``LowPri''.
664 @kbd{C-c C-@key{SPC}} will not switch to low priority channels unless
665 you use the @kbd{C-u} prefix.
668 @cindex ignored channels
669 If you prefer a channel to never show up in the modeline, then you
670 have to ignore it. Use @kbd{C-c @key{TAB}} to ignore the current
673 @node People, Keywords, Channels, Fighting Information Overload
675 @cindex people, how to ignore
676 @cindex nicks, how to ignore
681 The most important command available to the discerning IRC user is
682 @code{/ignore}. It's the big equalizer online: If people aggravate
683 you, just ignore them.
685 This is of course a crude all-or-nothing solution. Fear not,
686 @code{rcirc} offers alternatives: You can ``brighten'' your buddies
687 and ``dim'' certain other nicks that you don't want to ignore
693 @cindex ignoring other people
694 @cindex trolls, ignoring
695 @cindex hide some posts
696 @cindex idiots online
697 This command toggles the ignore status of a nick, if you provide one.
698 If you don't provide a nick, the command lists all the nicks you are
699 ignoring. All messages by ignored nicks are---you guessed it---ignored.
700 Since only ``operators'' can kick people from channels, the
701 ignore command is often the only way to deal with some of the more
702 obnoxious fellows online. Example: @code{/ignore rudybot}.
706 @cindex highlight other people
707 @cindex friends, highlight
708 @cindex buddies, highlight
709 @cindex nicks, highlight
710 @cindex brighten nicks
711 This command toggles the bright status of a nick, if you provide one.
712 If you don't provide a nick, the command lists all the ``brightened''
713 nicks. All messages by brightened nicks are---you guessed
714 it---brightened. Use this for your friends. Example: @code{/bright
719 @cindex soft-ignore other people
720 @cindex obnoxious people online
721 @cindex rabble online
722 This command toggles the dim status of a nick, if you provide one. If
723 you don't provide a nick, the command lists all the ``dimmed'' nicks.
724 All messages by dimmed nicks are---you guessed it---dimmed. Use this
725 for boring people and bots. If you are tracking channel activity,
726 messages by dimmed nicks will not register as activity. Example:
731 @node Keywords, Notices, People, Fighting Information Overload
735 On a busy channel, you might want to ignore all activity (using
736 @kbd{C-c @key{TAB}}) and just watch for certain keywords. The
737 following command allows you to highlight certain keywords:
742 This command toggles the highlighting of a keyword, if you provide
743 one. If you don't provide a keyword, the current keywords are
744 listed. Example: @code{/keyword manual}.
747 @node Notices, , Keywords, Fighting Information Overload
749 @cindex part notices, how to omit
750 @cindex join notices, how to omit
751 @cindex quit notices, how to omit
752 @cindex nick notices, how to omit
755 @cindex low priority channels
756 In busy channels you might not be interested in all the joining,
757 parting, quitting, and renaming that goes on. You can omit those
758 notices using @kbd{C-c C-o}.
760 @vindex rcirc-omit-responses
761 @cindex away notices, how to omit
762 You can control which notices get omitted via the
763 @code{rcirc-omit-responses} variable. Here's an example of how to
767 (setq rcirc-omit-responses '("JOIN" "PART" "QUIT" "NICK" "AWAY"))
770 @vindex rcirc-omit-threshold
771 Notice that these messages will not be omitted if the nick in question
772 has recently been active. After all, you don't want to continue a
773 conversation with somebody who just left. That's why @code{rcirc}
774 checks recent lines in the buffer to figure out if a nick has been
775 active and only omits a message if the nick has not been active. The
776 window @code{rcirc} considers is controlled by the
777 @code{rcirc-omit-threshold} variable.
779 @node Hacking and Tweaking, GNU Free Documentation License, Fighting Information Overload, Top
780 @chapter Hacking and Tweaking
781 @cindex hacking and tweaking
783 Here are some examples of stuff you can do to configure @code{rcirc}.
786 * Skipping /away messages using handlers::
787 * Using fly spell mode::
788 * Scrolling conservatively::
789 * Changing the time stamp format::
790 * Defining a new command::
791 * Reconnecting after you have lost the connection::
794 @node Skipping /away messages using handlers, Using fly spell mode, Hacking and Tweaking, Hacking and Tweaking
795 @section Skipping @code{/away} messages using handlers
796 @cindex /away messages
800 The IRC protocol specifies how certain events are signaled from server
801 to client. These events have numbers and are dealt with using so-called
802 handlers. You can override existing handlers by exploiting the naming
803 convention adopted for @code{rcirc}.
805 Here's how to stop @code{rcirc} from printing @code{/away} messages.
806 Since @code{rcirc} doesn't define a 301 handler, you don't need to
807 require @code{rcirc} before defining the handler:
810 (defun rcirc-handler-301 (process cmd sender args)
811 "/away message handler.")
814 @node Using fly spell mode, Scrolling conservatively, Skipping /away messages using handlers, Hacking and Tweaking
815 @section Using fly spell mode
818 @cindex spell-checking as you type
819 @cindex automatic spelling
820 @vindex rcirc-mode-hook
822 The following code activates Fly Spell Mode
823 for @code{rcirc} buffers:
826 (add-hook 'rcirc-mode-hook (lambda ()
830 @xref{Spelling, , Flyspell mode, emacs, The GNU Emacs Manual},
833 @node Scrolling conservatively, Changing the time stamp format, Using fly spell mode, Hacking and Tweaking
834 @section Scrolling conservatively
837 @vindex scroll-conservatively
838 @vindex rcirc-mode-hook
840 IRC buffers are constantly growing. If you want to see as much as
841 possible at all times, you would want the prompt at the bottom of the
842 window when possible. The following snippet uses a local value for
843 @code{scroll-conservatively} to achieve this:
846 (add-hook 'rcirc-mode-hook
848 (set (make-local-variable 'scroll-conservatively)
852 @xref{Scrolling, , Scrolling conservatively, emacs, The GNU Emacs
853 Manual}, for details.
855 @node Changing the time stamp format, Defining a new command, Scrolling conservatively, Hacking and Tweaking
856 @section Changing the time stamp format
859 @cindex format time stamp
860 @vindex rcirc-time-format
862 @code{rcirc-time-format} is the format used for the time stamp. Here's
863 how to include the date in the time stamp:
866 (setq rcirc-time-format "%Y-%m-%d %H:%M ")
869 @node Defining a new command, Reconnecting after you have lost the connection, Changing the time stamp format, Hacking and Tweaking
870 @section Defining a new command
871 @cindex defining commands
872 @cindex commands, defining
873 @cindex new commands, defining
875 Here's a simple new command, @code{/sv}. With it, you can boast about
876 your IRC client. It shows how you can use @code{defun-rcirc-command} to
879 We're waiting for the definition of this command until @code{rcirc} is loaded
880 because @code{defun-rcirc-command} is not yet available, and without
881 @code{rcirc} loaded, the command wouldn't do us much good anyway.
884 (eval-after-load 'rcirc
885 '(defun-rcirc-command sv (arg)
888 (rcirc-send-message process target
889 (concat "I use " rcirc-id-string))))
892 @node Reconnecting after you have lost the connection, , Defining a new command, Hacking and Tweaking
893 @section Reconnecting after you have lost the connection
895 @cindex disconnecting servers, reconnecting
897 If you're chatting from a laptop, then you might be familiar with this
898 problem: When your laptop falls asleep and wakes up later, your IRC
899 client doesn't realize that it has been disconnected. It takes several
900 minutes until the client decides that the connection has in fact been
901 lost. The simple solution is to use @kbd{M-x rcirc}. The problem is
902 that this opens an @emph{additional} connection, so you'll have two
903 copies of every channel buffer --- one dead and one live.
905 The real answer, therefore, is a @code{/reconnect} command:
908 (eval-after-load 'rcirc
909 '(defun-rcirc-command reconnect (arg)
910 "Reconnect the server process."
913 (error "There's no process for this target"))
914 (let* ((server (car (process-contact process)))
915 (port (process-contact process :service))
916 (nick (rcirc-nick process))
917 channels query-buffers)
918 (dolist (buf (buffer-list))
919 (with-current-buffer buf
920 (when (eq process (rcirc-buffer-process))
921 (remove-hook 'change-major-mode-hook
922 'rcirc-change-major-mode-hook)
923 (if (rcirc-channel-p rcirc-target)
924 (setq channels (cons rcirc-target channels))
925 (setq query-buffers (cons buf query-buffers))))))
926 (delete-process process)
927 (rcirc-connect server port nick
928 rcirc-default-user-name
929 rcirc-default-full-name
933 @node GNU Free Documentation License, Key Index, Hacking and Tweaking, Top
934 @appendix GNU Free Documentation License
935 @include doclicense.texi
938 @node Key Index, Variable Index, GNU Free Documentation License, Top
939 @unnumbered Key Index
942 @node Variable Index, Index, Key Index, Top
943 @unnumbered Variable Index
946 @node Index, , Variable Index, Top