]> crepu.dev Git - config.git/blame - djavu-asus/elpa/jabber-20230715.456/jabber.info
ActualizaciĆ³n de Readme
[config.git] / djavu-asus / elpa / jabber-20230715.456 / jabber.info
CommitLineData
53e6db90
DC
1This is jabber.info, produced by makeinfo version 6.7 from jabber.texi.
2
3This manual is for jabber.el, version 0.8.0.
4
5 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Magnus Henoch, Tom
6Berger.
7
8 Permission is granted to make and distribute verbatim copies or
9 modified versions of this manual, provided the copyright notice and
10 this permission notice are preserved on all copies.
11INFO-DIR-SECTION Emacs
12START-INFO-DIR-ENTRY
13* jabber.el: (jabber). Emacs XMPP (Jabber) client
14END-INFO-DIR-ENTRY
15
16\1f
17File: jabber.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
18
19jabber.el manual
20****************
21
22This manual is for jabber.el, version 0.8.0.
23
24 Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009 Magnus Henoch, Tom
25Berger.
26
27 Permission is granted to make and distribute verbatim copies or
28 modified versions of this manual, provided the copyright notice and
29 this permission notice are preserved on all copies.
30
31* Menu:
32
33* Introduction::
34* Basic operation::
35* Groupchat::
36* Composing messages::
37* File transfer::
38* Services::
39* Personal information::
40* Avatars::
41* Time queries::
42* Useful features::
43* Message history::
44* Typing notifications::
45* Roster import and export::
46* XMPP URIs::
47* Customization::
48* Hacking and extending::
49* Protocol support::
50* Concept index::
51* Function index::
52* Variable index::
53
54\1f
55File: jabber.info, Node: Introduction, Next: Basic operation, Prev: Top, Up: Top
56
571 Introduction
58**************
59
60jabber.el is an XMPP (Jabber) client running under Emacs. For more
61information on the open instant messaging protocol, please visit
62<http://xmpp.org>.
63
64 As a XMPP client, jabber.el is mostly just a face in the crowd,
65except that it uses buffers where GUI clients have windows. There is a
66roster buffer, and to chat with someone you open a chat buffer, and
67there are buffers for interaction with servers and services. Then
68again, jabber.el delivers excellent console performance and customizable
69hooks (if you have speech synthesizer software, hook it up to your
70presence alerts).
71
72 jabber.el does not yet support PGP encryption, sending and receiving
73roster items, and various other things.
74
75* Menu:
76
77* Contacts::
78
79\1f
80File: jabber.info, Node: Contacts, Up: Introduction
81
821.1 Contacts
83============
84
85 * There is a web page at <http://emacs-jabber.sf.net/>.
86
87 * There is a Sourceforge project page at
88 <http://sourceforge.net/projects/emacs-jabber>, with bug and patch
89 trackers.
90
91 * There is a mailing list:
92 <emacs-jabber-general@lists.sourceforge.net>,
93 <https://lists.sourceforge.net/lists/listinfo/emacs-jabber-general>,
94 <http://dir.gmane.org/gmane.emacs.jabber.general>
95
96 * There is a chat room, 'jabber.el@conference.jabber.se'. If you
97 have successfully connected, you can join it by typing 'M-x
98 jabber-muc-join' and entering the address.
99
100\1f
101File: jabber.info, Node: Basic operation, Next: Groupchat, Prev: Introduction, Up: Top
102
1032 Basic operation
104*****************
105
106This chapter is intended as an introduction to basic usage of jabber.el.
107If you have used XMPP before and are familiar with the terminology, you
108might find it a bit too basic--in that case, just skim it, making sure
109to pick up the commands mentioned.
110
111 I'll assume that you have already successfully installed jabber.el;
112if not, consult the 'README' file. Also, make sure you have '(require
113'jabber)' or '(load "jabber-autoloads")' in your '.emacs'.
114
115 There are a handful of global keybindings for common commands. They
116start with 'C-x C-j', and you can get a list of them by typing 'C-x C-j
117C-h'.
118
119* Menu:
120
121* Do you have a Jabber account?::
122* Registering an account::
123* Connecting::
124* Chatting::
125* Presence::
126* Presence subscription::
127* Roster buffer::
128
129\1f
130File: jabber.info, Node: Do you have a Jabber account?, Next: Registering an account, Up: Basic operation
131
1322.1 Do you have a Jabber account?
133=================================
134
135Jabber has become rather popular as an instant messaging technology.
136Several sites use it, but often not under the names "Jabber" or "XMPP".
137Examples:
138
139 * Google Talk uses Jabber. If you have a Gmail address, you can use
140 it as a Jabber ID. *Note Account settings::, for Google-specific
141 configuration.
142
143 * LJ Talk (of Livejournal) uses Jabber. Your Jabber ID is
144 'LJUSERNAME@livejournal.com'.
145
146\1f
147File: jabber.info, Node: Registering an account, Next: Connecting, Prev: Do you have a Jabber account?, Up: Basic operation
148
1492.2 Registering an account
150==========================
151
152If you do not yet have a Jabber account, you can register one. The
153registration processes for various servers differ, but many servers
154support so-called "in-band registration", which is described in this
155section.
156
157 To register an account, type 'C-u M-x jabber-connect' and enter your
158desired JID in the form 'USERNAME@SERVER'. You will be presented with a
159registration form to fill out and send. There the username you chose
160will be prefilled. After registration, you can connect to the server as
161usual.
162
163\1f
164File: jabber.info, Node: Connecting, Next: Chatting, Prev: Registering an account, Up: Basic operation
165
1662.3 Connecting
167==============
168
169Now, type 'C-x C-j C-c' and enter your JID and password. If you
170successfully connect, jabber.el will download your roster and display it
171in a buffer called '*-jabber-roster-*'.
172
173 By default, you will appear as "online" to your contacts. To change
174this to e.g. "away", type 'M-x jabber-send-presence' or 'C-x C-j C-p'.
175*Note Presence::, for more information.
176
177 To disconnect, type 'M-x jabber-disconnect' or 'C-x C-j C-d'. Use
178'M-x jabber-disconnect-one' to disconnect just one account (or just type
179'C-u C-x C-j C-d').
180
181 If you don't want to type your JID every time you connect, you can
182save it in the variable 'jabber-account-list'. *Note Account
183settings::. If you configure more than one account, all of them will be
184connected when you type 'C-x C-j C-c', as that key is bound to
185'jabber-connect-all'. To connect only one account, possibly one that's
186not in your list, type 'M-x jabber-connect' or 'C-u C-x C-j C-c'.
187
188\1f
189File: jabber.info, Node: Chatting, Next: Presence, Prev: Connecting, Up: Basic operation
190
1912.4 Chatting
192============
193
194There are several ways to open a chat buffer. The shortest way is to
195put point over the person you want to chat with in the roster display
196and hit RET.
197
198 You can also use the function 'jabber-chat-with'. This function is
199bound to 'C-x C-j C-j' in the global keymap. You will be asked to enter
200a JID in the minibuffer. You can also enter the roster name of one of
201your contacts. All JIDs and names in your roster can be tab-completed.
202
203 You can also use menus to access commands. In the roster display,
204you can access several menus through keystrokes or mouse clicks. You
205can bring one big menu up by pressing the second mouse button, or you
206can bring up the "chat menu" by typing 'C-c C-c'. If you do the latter
207while point is on a roster entry, that entry will be the default value
208when you are asked for whom to chat with.
209
210 Now, try opening a chat with someone. A buffer named
211'*-jabber-chat-:-PERSON-*' will be created and selected. Type your
212message at the end of the buffer, and hit 'RET' to send it. To include
213a newline in your message, use 'C-j'.
214
215 When you receive a message from someone, you will see a red indicator
216in the mode line. You can click this indicator with the mouse, or type
217'C-x C-j C-l' to switch to the relevant buffer. *Note Tracking
218activity::.
219
220\1f
221File: jabber.info, Node: Presence, Next: Presence subscription, Prev: Chatting, Up: Basic operation
222
2232.5 Presence
224============
225
226"Presence" is the Jabber term for letting other people know that you are
227online, and additionally how "available" you are. There are three
228elements to presence: availability state (called "show"), status
229message, and priority.
230
231 Your show state may either be empty (meaning simply "online"), or one
232of 'away', 'xa', 'dnd' and 'chat', meaning "away", "extended away" (i.e.
233away for an extended period), "do not disturb", and "free for chat",
234respectively. This information is available to everyone subscribing to
235your presence, but technically it does not restrict anyone's actions.
236You can chat with people even if you claim to be away.
237
238 The status message is a short text complementing your show status,
239such as "at home", "working", "phone", "playing games" or whatever you
240want. It is sent to everyone subscribing to your presence, but not all
241clients prominently display it to the user.
242
243 The priority is only interesting if you are running more than one
244Jabber client at a time accessing the same account. *Note Resources and
245priority::.
246
247 To set your presence, use the function 'jabber-send-presence' (bound
248to 'C-x C-j C-p'). It can be called both interactively and in Lisp
249code. For the latter case, use something like '(jabber-send-presence
250"away" "idle for 10 minutes" 10)'. There are a few shortcuts:
251'C-x C-j C-a'
252 Send "away" presence (with prefix argument, specify status text)
253'C-x C-j C-x'
254 Send "extended away" presence (with prefix argument, specify status
255 text)
256'C-x C-j C-o'
257 Send default presence (see below)
258
259 By default, jabber.el sets your presence when you connect. If you
260want it not to do that, remove 'jabber-send-current-presence' from
261'jabber-post-connect-hooks'. If you want to change the presence that is
262sent, change the variables 'jabber-default-show',
263'jabber-default-status' and 'jabber-default-priority'.
264
265 With jabber.el, you can set your presence remotely. *Note Ad-Hoc
266Commands::.
267
268* Menu:
269
270* Resources and priority::
271* Directed presence::
272
273\1f
274File: jabber.info, Node: Resources and priority, Next: Directed presence, Up: Presence
275
2762.5.1 Resources and priority
277----------------------------
278
279Every connection to an account has a specific name, a "resource". The
280account itself has a JID of the form 'USERNAME@SERVER' (a "bare JID"),
281but the connections have JIDs of the form 'USERNAME@SERVER/RESOURCE' (a
282"full JID"). You can choose the resource name yourself by entering a JID
283of the latter form at the connection prompt (*note Connecting::), or by
284configuring it in 'jabber-account-list' (*note Account settings::)
285
286 Each session has a "priority". The priority determines what happens
287when a message is sent to the bare JID (i.e. without specifying what
288connection should receive message). Such messages are delivered to the
289connection with the highest non-negative priority value. If there are
290no connections, or if all connections have negative priority, the
291message is either stored on the server for later delivery or bounced to
292the sender, depending on the server configuration.
293
294 If there are several connections with the same priority, the
295behaviour depends on the server. Some server implementations deliver
296the message to all such connections, while others choose one connection
297depending on certain rules.
298
299 Note that these rules do not apply when a message is sent to a full
300JID. Such messages are sent to the specified resource, if it is still
301connected, and otherwise treated as messages to the bare JID. In the
302chat buffers of jabber.el, messages are sent to whatever JID the last
303message came from (usually a full JID), or to the bare JID if no message
304has been received yet. Other clients may have different behaviour.
305
306\1f
307File: jabber.info, Node: Directed presence, Prev: Resources and priority, Up: Presence
308
3092.5.2 Directed presence
310-----------------------
311
312You can send "directed presence" with 'M-x
313jabber-send-directed-presence'. This is mostly useful to manage
314transports--sending directed presence is a way to turn them on and off.
315You can also send directed presence to an annoying contact to appear as
316away or offline to that contact. Note, however, that in both of these
317cases, all subscribed entities will get your next global presence
318update.
319
320\1f
321File: jabber.info, Node: Presence subscription, Next: Roster buffer, Prev: Presence, Up: Basic operation
322
3232.6 Presence subscription
324=========================
325
326Having permission to view the presence status of a person is called
327"subscribing to his presence". Presence subscription between two
328persons can be asymmetric. Subscription state is shown in the roster
329display by arrows (*note Customizing the roster buffer::). A
330left-pointing arrow means that the contact can see your presence
331("from"). A right-pointing arrow means that you can see the contact's
332presence ("to"). The most common case is mutual subscription, a
333double-ended arrow ("both").
334
335 When jabber.el receives a presence subscription request, it will
336present it to you in a chat buffer, and offer you to choose subscription
337mode and send a subscription request back to that person. The "Mutual"
338button accepts the request and sends a reciprocal request.(1) The
339"One-way" button accepts the request, but doesn't ask for a subscription
340in return. The "Decline" button declines the request.
341
342 To request subscription to someone, type 'M-x
343jabber-send-subscription-request'. You will be prompted for the JID to
344send it to. This command can also be accessed through the Roster menu,
345by typing 'C-c C-r' in the roster buffer. After that, you will probably
346want to give the contact a more readable name. The command for that is
347'jabber-roster-change', which is also available in the Roster menu or by
348typing 'e' on a person in the roster buffer.
349
350 ---------- Footnotes ----------
351
352 (1) If this request is superfluous, the server will drop it without
353bothering the contact.
354
355\1f
356File: jabber.info, Node: Roster buffer, Prev: Presence subscription, Up: Basic operation
357
3582.7 The roster buffer
359=====================
360
361The roster buffer is called '*-jabber-roster-*'. It simply contains a
362list of the contacts on your roster. If you have several accounts
363connected, contacts will be grouped by account.
364
365 In the roster buffer, any command which requires a JID will default
366to the JID under point when called. These commands can be called
367through either keyboard menus or mouse menus. To open a menu with the
368mouse, simply press the second mouse button over the JID in question.(1)
369This will bring up a menu with all available actions. The keyboard
370menus are split into categories: Chat, Roster, Information, MUC
371(Multi-User Chat, or groupchat) and Services, opened by 'C-c C-c', 'C-c
372C-r', 'C-c C-i', 'C-c C-m' and 'C-c C-s', respectively.
373
374 A list of keybindings is displayed at the top of the roster buffer.
375You can turn it off by setting 'jabber-roster-show-bindings' to nil.
376
377 You can call 'jabber-display-roster' (bound to 'g') to redisplay your
378roster according to changed preferences (*note Customizing the roster
379buffer::). This will not refetch your roster from the server.
380Refetching the roster is usually not needed, since updates are pushed to
381clients automatically.
382
383 You can choose not to have the roster updated automatically on
384presence changes (*note Presence alerts::). In that case, you need to
385call 'jabber-display-roster' manually.
386
387 Please note, that by default offline contacts showed in roster as any
388others. To hide them, you can use 'o' in roster buffer. To permanently
389hide them, customize 'jabber-show-offline-contacts' variable.
390
391 ---------- Footnotes ----------
392
393 (1) For some reason, mouse menus don't work in XEmacs. Patches are
394welcome.
395
396\1f
397File: jabber.info, Node: Groupchat, Next: Composing messages, Prev: Basic operation, Up: Top
398
3993 Groupchat
400***********
401
402The groupchat menu can be accessed by typing 'C-c C-m' in the roster
403buffer. You can also type the commands directly, as will be shown here.
404
405 To join a groupchat, type 'M-x jabber-muc-join'. You will be
406prompted for the groupchat to join, and your nickname in the groupchat.
407This nickname doesn't need to have any correlation to your JID; in fact,
408groupchats are usually (but not always) configured such that only
409moderators can see your JID. You can change your nickname with 'M-x
410jabber-muc-nick'. *Note Configuration::, for setting default nicknames.
411
412 When trying to join a room, jabber.el first sends a service discovery
413info request to the room, to find out whether it exists and what
414features are enabled (in particular whether the room is
415password-protected). However, this can cause problems with some buggy
416MUC services (or services that respond in a way that jabber.el doesn't
417expect). A workaround for that is to set
418'jabber-muc-disable-disco-check' to 't'; however, the bug should be
419unearthed and fixed.
420
421 Groupchat messages will be displayed in a buffer called
422'*-jabber-groupchat-:-GROUPCHAT-*'. By default, the buffer name is
423based on the JID of the chat room. If you want a shorter name, you can
424add the chat room to your roster and give it a name, using the command
425'M-x jabber-roster-change'. The groupchat buffer works much like the
426chat buffer. It has its own class of alerts (*note Customizing
427alerts::), and uses activity tracking (*note Tracking activity::).
428
429 Also, to save from repeating unnesesary typing you can press 'Tab'
430key to complete nick of a groupchat member that you are talking with.
431You can customize your form of personal talking in MUC
432('jabber-muc-completion-delimiter') and form of personal talking to you
433('jabber-muc-looks-personaling-symbols')--see "jabber-chat"
434customization group. Defaults are sane, so it is unlikely that you
435would want to change this, but... it is Emacs!
436
437 By default presence updates are logged in the groupchat buffer.
438Presence updates include announcements when a member joins or leaves a
439room, as well as moderator actions, like kicks or bans. These
440announcements can clutter up the group discussion, especially when other
441participants using mobile clients experiencing frequent network
442disconnect and reconnects. Which of these announcements and how they
443are rendered can be configured (*Note Presence announcements::).
444
445 To change the topic of a groupchat, type 'M-x jabber-muc-set-topic'.
446The current topic is shown in the header line.
447
448 To leave a groupchat, type 'M-x jabber-muc-leave'.
449
450 If you are the owner of a groupchat, you can change its configuration
451by typing 'M-x jabber-muc-get-config'. A configuration form will be
452rendered in new buffer.
453
454 To see which people are in a groupchat, type 'M-x jabber-muc-names'.
455This gives a list of nicknames, "affiliations", and possibly JIDs
456according 'jabber-muc-print-names-format', sorted by "roles". *Note MUC
457Administration::, for the meaning of roles and affiliations.
458
459* Menu:
460
461* Configuration::
462* Presence announcements::
463* Invitations::
464* Private messages::
465* MUC Administration::
466
467\1f
468File: jabber.info, Node: Configuration, Next: Invitations, Up: Groupchat
469
4703.1 Configuration
471=================
472
473You can configure jabber.el to use a certain nickname for a certain
474room, or to automatically join a certain room when you connect. You can
475do this either by storing bookmarks on the server or by setting Emacs
476variables.
477
478 Type 'M-x jabber-edit-bookmarks' to add bookmarks. You can specify
479the JID of the conference, the name of the conference (not used by
480jabber.el), whether to automatically join the room, your desired
481nickname (or leave empty), and the room password (or leave empty).
482
483 The default nickname for groupchats is the username part of your JID.
484If you don't use bookmarks, you can set different nicknames for
485different groups by customizing 'jabber-muc-default-nicknames'. There
486you specify the JID of the group, and your preferred nickname.
487
488 Automatically joining certain rooms when connecting can be
489accomplished by setting 'jabber-muc-autojoin' to a list containing the
490JIDs of the rooms you want to enter. To disable this feature, remove
491'jabber-muc-autojoin' from 'jabber-post-connect-hooks'.
492
493 Please note, that 'jabber-muc-default-nicknames' and
494'jabber-muc-autojoin' are machine-local, but apply to _all_ accounts--if
495you connect several accounts, both will try to connect to the same chat
496rooms, or use the same nickname. This will lead to confusion.
497
498\1f
499File: jabber.info, Node: Presence announcements, Next: Invitations, Prev: Configuration, Up: Groupchat
500
5013.2 Presence announcements
502==========================
503
504To limit, highlight, or deemphasize presences announcement messages,
505customize the variable 'jabber-muc-decorate-presence-patterns'.
506
507 'jabber-muc-decorate-presence-patterns' is a list of pairs consisting
508of a regular expression and a face. When a presence announcement
509matches a regular expression pattern, it will be displayed with the
510associated face. If the face is 'nil', the announcement will not be
511added to the groupchat. For example, the customization:
512
513 '(jabber-muc-decorate-presence-patterns
514 '(("\\( enters the room ([^)]+)\\| has left the chatroom\\)$")
515 ("." . jabber-muc-presence-dim)))
516
517 This suppresses display of membership changes (join and leave events)
518and deemphasizes moderator action to set them off from surrounding chat
519messages.
520
521\1f
522File: jabber.info, Node: Invitations, Next: Private messages, Prev: Configuration, Up: Groupchat
523
5243.3 Invitations
525===============
526
527You can invite someone to a groupchat with 'M-x jabber-muc-invite' (also
528available in the MUC menu). Pay attention to the order of the
529arguments--as both users and rooms are just JIDs, it is technically
530possible to invite a room to a user, but that's probably not what you
531want.
532
533 When you receive an invitation, it appears in the chat buffer along
534with two buttons, "Accept" and "Decline". Pressing "Accept" enters the
535room, as you would expect. Pressing "Decline" gives you an opportunity
536to state the reason why you're not joining.
537
538\1f
539File: jabber.info, Node: Private messages, Next: MUC Administration, Prev: Invitations, Up: Groupchat
540
5413.4 Private messages
542====================
543
544You can open a private chat with a participant in a chat room with 'M-x
545jabber-muc-private' (or by using the MUC menu). This creates a buffer
546with the name '*-jabber-muc-priv-GROUP-NICKNAME-*' (customizable by
547'jabber-muc-private-buffer-format'), which behaves mostly like an
548ordinary chat buffer. This buffer will also be created if someone sends
549a private message to you.
550
551 Private MUC messages use the same alerts as normal chat messages.
552*Note Message alerts::.
553
554\1f
555File: jabber.info, Node: MUC Administration, Prev: Private messages, Up: Groupchat
556
5573.5 Administration
558==================
559
560Administration of a MUC room mostly consists of managing roles and
561affiliations. Roles are temporary, and apply until the user leaves the
562room. Affiliations are permanent, and based on JIDs.
563
5643.5.1 Roles
565-----------
566
567If you have moderator privileges, you can change the role of a
568participant with 'M-x jabber-muc-set-role'. Kicking means setting the
569role to "none". Granting and revoking voice are "participant" and
570"visitor", respectively. "moderator" gives moderator privileges,
571obviously.
572
573 The possible roles are:
574
575'moderator'
576 Has voice, can change other people's roles.
577
578'participant'
579 Has voice.
580
581'visitor'
582 Doesn't have voice (can't send messages to everyone, but can send
583 private messages)
584
585'none'
586 Not in room.
587
5883.5.2 Affiliations
589------------------
590
591If you have admin or owner privileges, you can change the affiliation of
592a user with 'M-x jabber-muc-set-affiliation'. Affiliation is
593persistent, and based on JIDs. Depending of your affiliation and the
594MUC implementation, you might not be allowed to perform all kinds of
595changes, and maybe not in one step.
596
597 Affiliations are:
598
599'owner'
600 Can destroy room, appoint admins, make people members, ban people.
601
602'admin'
603 Can make people members or ban people.
604
605'member'
606 Can enter the room, and has voice by default.
607
608'none'
609 Rights depend on room configuration. The room might be
610 members-only, or grant voice only to members.
611
612'outcast'
613 Banned from the room.
614
615\1f
616File: jabber.info, Node: Composing messages, Next: File transfer, Prev: Groupchat, Up: Top
617
6184 Composing messages
619********************
620
621The chat buffer interface can be inconvenient for some purposes. As you
622can't use 'RET' to insert a newline (use 'C-j' for that), writing a
623longer message can be painful. Also, it is not possible to include a
624subject in the message, or send the message to multiple recipients.
625
626 These features are implemented by the message composing tool. Type
627'M-x jabber-compose' to start it. In the buffer that comes up, you can
628specify recipients, enter a subject, and type your message.
629
630\1f
631File: jabber.info, Node: File transfer, Next: Services, Prev: Composing messages, Up: Top
632
6335 File transfer
634***************
635
636jabber.el has limited support for file transfer. The most important
637limit is that files sent and received are kept in buffers, so Emacs must
638be able to allocate enough memory for the entire file, and the file size
639must be smaller than the maximum buffer size.(1)
640
641 jabber.el is able to exchange files with most Jabber clients (and
642also some MSN transports), but notably not with the official Google Talk
643client. The Google Talk client uses a different file transfer protocol
644which, at the time of this release, has not been published.
645
646* Menu:
647
648* Receiving files::
649* Sending files::
650
651 ---------- Footnotes ----------
652
653 (1) The maximum buffer size depends on in the variable
654'most-positive-fixnum'. On 32-bit systems, this is 128 or 256
655megabytes, depending on your Emacs version.
656
657\1f
658File: jabber.info, Node: Receiving files, Next: Sending files, Up: File transfer
659
6605.1 Receiving files
661===================
662
663Receiving files requires no configuration. When someone wants to send a
664file to you, you are asked (through 'yes-or-no-p') whether you want to
665accept the file. If you answer yes, you get to choose where to save the
666file.
667
668 If the sender's client is correctly configured (this is often not the
669case; see below), the file transfer will start. Currently, the only way
670to watch the progress is to inspect the buffer of the file being
671transfered; 'C-x C-b' is one way of doing that. *Note Listing Existing
672Buffers: (emacs)List Buffers. When the transfer is done, the message
673"FILE downloaded" appears in the echo area, and the buffer is killed.
674
675 If this doesn't happen, it is most likely the sender's fault. The
676sender needs to have a public IP address, either directly, through port
677forwarding (in which case the client needs to be configured with the
678real public IP address), or through an XEP-0065 proxy. If you have
679activated XML logging (*note Debug options::), you can see the IP
680address that the other client is asking you to connect to there. Often
681you will find that this is an internal IP address (often starts with
682'192.168'). See the documentation of the sender's client for setting
683this up.
684
685\1f
686File: jabber.info, Node: Sending files, Prev: Receiving files, Up: File transfer
687
6885.2 Sending files
689=================
690
691To send a file to someone, you need an XEP-0065 proxy.(1) If your
692Jabber server hosts such a proxy, it will be found automatically,
693otherwise it needs to be manually configured.
694
695 You can check whether your Jabber server has a proxy with 'M-x
696jabber-get-disco-items'; see *note Service discovery::.
697
698 To configure a proxy manually, customize the variable
699'jabber-socks5-proxies'. Putting 'proxy.jabber.se' there should work.
700Type 'M-x jabber-socks5-query-all-proxies' to see if the proxies answer.
701
702 Now, you can type 'M-x jabber-ft-send' to send a file to someone.
703You need to enter the correct full JID, including resource, to get this
704right. If the contact is logged in with only one client, and you can
705see it online, just typing the JID or roster name is enough. If you run
706the command from a chat buffer, the JID of the contact is given as the
707default value.
708
709 If the contact has several clients online, you probably want to send
710the file to a particular one. If you run this command from within a
711chat buffer, the default target will be the one that last sent a message
712to you. If you just type a bare JID or a roster name, the client with
713the highest priority will get the file.
714
715 If the contact accepts the file, and the contact's client succeeds in
716connecting to the proxy, jabber.el will send the file through the proxy.
717During this time, your Emacs will be blocked, so you might want to avoid
718sending large files over slow connections.
719
720 ---------- Footnotes ----------
721
722 (1) This requirement is not inherent in the protocol, only in the
723current file transfer implementation of jabber.el, and in Emacs versions
724earlier than 22.
725
726\1f
727File: jabber.info, Node: Services, Next: Personal information, Prev: File transfer, Up: Top
728
7296 Services
730**********
731
732Not every Jabber entity is a physical person. There are many automatic
733entities, called servers, services, components, agents, transports and
734other names. The use of these is described here.
735
736 The functions described in this chapter use "browse buffers". Browse
737buffers are named '*-jabber-browse-:-SERVICE-*', sometimes with a
738numerical suffix. The different menus have the same keybindings as in
739the roster buffer, and if you call a function operating on a JID while
740point is over a JID, that JID will be the default value, so you don't
741have to type it or copy it yourself.
742
743 You can change the buffer name template by customizing the variable
744'jabber-browse-buffer-format'.
745
746* Menu:
747
748* Commands::
749* Your home server::
750* Transports::
751* User directories::
752* MUC services::
753
754\1f
755File: jabber.info, Node: Commands, Next: Your home server, Up: Services
756
7576.1 Commands
758============
759
760A small number of commands is used for almost all interaction with
761Jabber services. Essentially, they are all the same: you request a form
762from the server, fill it in, and send it back.
763
764 Most of these commands are available under the Service menu, which is
765opened by typing 'C-c C-s'. Service discovery is under the Info menu
766instead, which is available under 'C-c C-i'.
767
768* Menu:
769
770* Registration::
771* Search::
772* Ad-Hoc Commands::
773* Service discovery::
774* Browsing::
775
776\1f
777File: jabber.info, Node: Registration, Next: Search, Up: Commands
778
7796.1.1 Registration
780------------------
781
782You can get a registration form for a service by typing 'M-x
783jabber-get-register' and entering the JID of the service. On success,
784you get a single-stage form to fill in.
785
786 There are two buttons at the bottom of the form, "Submit" and "Cancel
787registration". "Submit" does what you would expect it to, but "Cancel
788registration" cancels any existing registration with the service.
789Whichever of them you choose, you get a message in the echo area
790informing whether the operation succeeded.
791
792\1f
793File: jabber.info, Node: Search, Next: Ad-Hoc Commands, Prev: Registration, Up: Commands
794
7956.1.2 Search
796------------
797
798You can get a search form for a service by typing 'M-x
799jabber-get-search'. This gives you a single-stage form to fill in.
800After you press the "Submit" button at the bottom, the search results
801will be displayed in the same buffer.
802
803\1f
804File: jabber.info, Node: Ad-Hoc Commands, Next: Service discovery, Prev: Search, Up: Commands
805
8066.1.3 Ad-Hoc Commands
807---------------------
808
809jabber.el supports a subset of XEP-0050, the standard for Ad-Hoc
810Commands. As the name implies, this can be used for just about
811anything. In particular, it is used not only by services, but also by
812clients (e.g. Psi, and jabber.el itself).
813
814 To find which commands are available, run "Request command list"
815('jabber-ahc-get-list').(1)
816
817 To run a command from the list, put point over it and run "Execute
818command" ('jabber-ahc-execute-command'), accepting the defaults for JID
819and node. (If you already know those, you could of course enter them
820yourself.)
821
822 What happens next depends on the command and the service. In some
823cases, the service just responds that the command has been run. You may
824also get a form to fill out. This form may have multiple stages, in
825which case there are "Next" and "Previous" buttons for navigating
826between stages. You may also see "Complete", which runs the command
827skipping any remaining stages of the form, and "Cancel", which cancels
828the command.
829
830 Currently, jabber.el uses ad-hoc commands for setting presence
831remotely. If you realize that you forgot to set your client to "away"
832with a low priority, you can do it remotely from any JID from
833'jabber-account-list'. So, you can add disabled JIDs in
834'jabber-account-list' to allow them control your presence.(2)
835
836 ---------- Footnotes ----------
837
838 (1) This is the same thing as a disco items request to the node
839'http://jabber.org/protocol/commands'.
840
841 (2) Most Jabber servers also support kicking a client off the net by
842logging in with another client with exactly the same resource.
843
844\1f
845File: jabber.info, Node: Service discovery, Next: Browsing, Prev: Ad-Hoc Commands, Up: Commands
846
8476.1.4 Service discovery
848-----------------------
849
850Service discovery is used to find information about servers, services
851and clients. There are two kinds of requests: find "info" about a
852Jabber entity--i.e. its identity and supported features--and find
853"items" related to an entity, where the definition of "related" is left
854to the entity itself.
855
856 The commands to execute such requests are 'jabber-get-disco-info' and
857'jabber-get-disco-items', respectively. These commands can be accessed
858from the Info menu, which is opened by typing 'C-c C-i'. The commands
859accept a JID and optionally a "node".
860
861 The result of such a command is displayed in a browse buffer. For an
862info request, the result just lists the identities and features of the
863entity. For an item request, the related items are listed. The items
864may be JIDs, or JIDs with a node. If you put point on one of the items,
865its JID and node will be the default value for any Jabber command.
866
867 If you think that the interface to service discovery is awkward and
868should be replaced with something better, you are completely right.
869
870\1f
871File: jabber.info, Node: Browsing, Prev: Service discovery, Up: Commands
872
8736.1.5 Browsing
874--------------
875
876Before service discovery, browsing was the way to find information about
877Jabber entities. Nowadays it is all but superseded, but jabber.el still
878supports it. You can use it by typing 'M-x jabber-get-browse'. It
879works much like service discovery.
880
881\1f
882File: jabber.info, Node: Your home server, Next: Transports, Prev: Commands, Up: Services
883
8846.2 Your home server
885====================
886
887You can interact with your Jabber server to change your password or
888remove your account. Both of these can be accomplished by typing 'M-x
889jabber-get-register' and typing the JID of your server; *note
890Registration::.
891
892\1f
893File: jabber.info, Node: Transports, Next: User directories, Prev: Your home server, Up: Services
894
8956.3 Transports to other IM networks
896===================================
897
898Some Jabber services make it possible to communicate with users on other
899instant messaging networks (e.g. MSN, ICQ, AIM), in effect turning your
900Jabber client into a multi-protocol client. These are called "gateways"
901or "transports". They work by impersonating you on the legacy network;
902therefore you need to provide your username and password through
903registration.
904
9056.3.1 Finding a transport
906-------------------------
907
908To use such a transport, you first need to find one, obviously.
909Sometimes your home server provides the transports you need, but you are
910not limited to those; in principle you can use any transport on the
911Jabber network. Some transports only accept local users, though.
912
913 Transports are generally mentioned on the web page of the Jabber
914server in question. You can also find transports from within the
915client; *note Service discovery::.
916
9176.3.2 Registering with a transport
918----------------------------------
919
920To register with a transport, type 'M-x jabber-get-register' and enter
921the JID of the transport. This will open a registration form where you
922get to fill in your login information; *note Registration::. You can
923later use this same form to change the information or cancel your
924registration.
925
926 After you have registered, the transport will request presence
927subscription. It needs that to know when you are online, and
928synchronize your presence on the legacy network.
929
9306.3.3 Contact list
931------------------
932
933Once you are registered, the transport will transfer the contact list
934from the legacy service. From the Jabber side, it appears as if lots of
935people suddenly request presence subscription to you. This is somewhat
936inconvenient, but it is currently the only way that the transport can
937influence your Jabber contact list, as it is an entity external to your
938server.(1)
939
940 When you have accepted these presence subscriptions, the contacts
941from legacy networks appear as if they were Jabber contacts.
942
9436.3.4 Finding users
944-------------------
945
946Some legacy networks have a global database of users, and some
947transports support searching that database. In that case, you can
948search for other users with 'M-x jabber-get-search'; *note Search::.
949
950 ---------- Footnotes ----------
951
952 (1) Of course, jabber.el could do more to alleviate this
953inconvenience.
954
955\1f
956File: jabber.info, Node: User directories, Next: MUC services, Prev: Transports, Up: Services
957
9586.4 User directories
959====================
960
961There are some Jabber user directories, usually abbreviated JUDs. The
962most well-known one is 'users.jabber.org'. You can register with such a
963directory to let other people find you (*note Registration::), and you
964can search the directory (*note Search::).
965
966\1f
967File: jabber.info, Node: MUC services, Prev: User directories, Up: Services
968
9696.5 MUC services
970================
971
972MUC services (Multi-User Chat, chat rooms) are usually not operated by
973these commands, but by commands specific to the MUC protocol; *note
974Groupchat::. However, some MUC services offer nickname registration
975through the registration protocol (*note Registration::), and other
976commands; *note Ad-Hoc Commands::.
977
978\1f
979File: jabber.info, Node: Personal information, Next: Avatars, Prev: Services, Up: Top
980
9817 Personal information
982**********************
983
984The Jabber way of handling personal information (name, addresses, phone
985numbers, etc) is "vCards" encoded in XML.(1) You can get information
986about a user by running 'M-x jabber-vcard-get', 'M-x
987jabber-muc-vcard-get' if you in MUC (also available in the MUC menu),
988and you can edit your own information by running 'M-x
989jabber-vcard-edit'.
990
991 The form for editing your information can be slightly confusing--you
992are allowed to enter any number of addresses, phone numbers and e-mail
993addresses, each of which has a set of orthogonal properties. You can
994add and remove items with the '[INS]' and '[DEL]' buttons, respectively.
995
996 This is also where you set your avatar (*note Avatars::). The size
997of your avatar file is limited to 8 kilobytes.
998
999 ---------- Footnotes ----------
1000
1001 (1) *Note XEP-0054::.
1002
1003\1f
1004File: jabber.info, Node: Avatars, Next: Time queries, Prev: Personal information, Up: Top
1005
10068 Avatars
1007*********
1008
1009jabber.el supports viewing and publishing avatars according to XEP-0153,
1010vCard-Based Avatars. By default, if you have an avatar in your vCard
1011(*note Personal information::), it will be published for others to see,
1012and if other people publish their avatars, they will be displayed in the
1013roster buffer and in the header line of chat buffers, if your Emacs can
1014display images. Otherwise, jabber.el will not fetch avatars at all.
1015
1016 To disable retrieval of other people's avatars, set
1017'jabber-vcard-avatars-retrieve' to nil. To disable publishing of your
1018own avatar, set 'jabber-vcard-avatars-publish' to nil. To disable
1019avatars in chat buffer header lines, set
1020'jabber-chat-buffer-show-avatar' to nil.
1021
1022 There are a number of restrictions on avatar images in the
1023specification. Most of them are not enforced by jabber.el.
1024 * The image should be smaller than 8 kilobytes; this is enforced by
1025 jabber.el.
1026 * The image height and width should be between 32 and 96 pixels; the
1027 recommended size is 64 by 64 pixels.
1028 * The image should be square.
1029 * The image should be in either PNG, GIF, or JPEG format. (jabber.el
1030 will behave incorrectly if the image is not in a format supported
1031 by Emacs.)
1032
1033 Avatars are cached in the directory specified by
1034'jabber-avatar-cache-directory', by default
1035'~/.emacs.d/jabber-avatar-cache/'.(1) The cache is never cleaned, so
1036you might want to do that yourself from time to time.
1037
1038 ---------- Footnotes ----------
1039
1040 (1) The default directory used to be '~/.jabber-avatars'. If this
1041directory already exists, it will be used.
1042
1043\1f
1044File: jabber.info, Node: Time queries, Next: Useful features, Prev: Avatars, Up: Top
1045
10469 Time queries
1047**************
1048
1049With 'M-x jabber-get-time', you can ask what time an entity (client,
1050server or component) thinks it is, and what time zone it thinks it is
1051in.
1052
1053 You can query a server about when a certain user was last seen
1054online. Use 'M-x jabber-get-last-online' for that.
1055
1056 You can also ask a client about how long a user has been idle with
1057'M-x jabber-get-idle-time'. Not all clients answer such queries, e.g.
1058jabber.el doesn't. This command can also tell the uptime of a server or
1059component.
1060
1061 The first of these commands uses the old Entity Time protocol (*note
1062XEP-0090::). It has been superseded by XEP-0202, but jabber.el doesn't
1063implement the newer protocol yet. The latter two commands use the Last
1064Activity protocol (*note XEP-0012::).
1065
1066\1f
1067File: jabber.info, Node: Useful features, Next: Message history, Prev: Time queries, Up: Top
1068
106910 Useful features
1070******************
1071
1072jabber.el includes a number of features meant to improve the user
1073interface and do other useful things.
1074
1075* Menu:
1076
1077* Autoaway::
1078* Modeline status::
1079* Keepalive::
1080* Reconnecting::
1081* Tracking activity::
1082* Watch buddies::
1083* Spell checking::
1084* Gmail notifications::
1085* Saving groups roll state::
1086
1087\1f
1088File: jabber.info, Node: Autoaway, Next: Modeline status, Up: Useful features
1089
109010.1 Autoaway
1091=============
1092
1093It is possible to automatically set your status to "away" or "xa" when
1094you haven't used your computer for a while. This lets your contacts
1095know that you might not answer immediately. You can customize timeouts
1096('jabber-autoaway-timeout', 'jabber-autoaway-xa-timeout'), statuses
1097('jabber-autoaway-status', 'jabber-autoaway-xa-status') and priorityes
1098('jabber-autoaway-priority', 'jabber-autoaway-xa-priority') to set.
1099
1100 To activate this feature, add 'jabber-autoaway-start' to
1101'jabber-post-connect-hooks', e.g:
1102 (add-hook 'jabber-post-connect-hooks 'jabber-autoaway-start)
1103
1104 There are different methods to find how long you have been "idle".
1105The method(s) to use is specified by 'jabber-autoaway-methods'
1106(obsoleted 'jabber-autoaway--method' will also work). The value of this
1107variable should be a list functions that returns the number of seconds
1108you have been idle (or nil on error). Minimum of values, returned by
1109these functions, is used as "idle" time, so default should works well.
1110Three functions are provided (all used by default).
1111
1112 * 'jabber-current-idle-time' is used if your Emacs has the
1113 'current-idle-time' function (which was introduced in Emacs 22).
1114 Note that this method only measures the time since you last
1115 interacted with Emacs, and thus disregards activity in other
1116 programs.
1117
1118 * 'jabber-xprintidle-get-idle-time' uses xprintidle (1) program, if
1119 found. You can also manually set 'jabber-xprintidle-program' to
1120 the correct file path. This method uses the same method as
1121 XScreensaver (http://www.jwz.org/xscreensaver) to find your idle
1122 time.
1123
1124 * 'jabber-termatime-get-idle-time' used on GNU/Linux terminals. It
1125 uses the access time of the terminal device as a measure of idle
1126 time.
1127
1128 ---------- Footnotes ----------
1129
1130 (1) <http://www.dtek.chalmers.se/~henoch/text/xprintidle.html>
1131
1132\1f
1133File: jabber.info, Node: Modeline status, Next: Keepalive, Prev: Autoaway, Up: Useful features
1134
113510.2 Modeline status
1136====================
1137
1138By typing 'M-x jabber-mode-line-mode' you toggle display of some status
1139in mode lines. The information is your own presence status, and some
1140numbers showing the status of your roster contacts. By default, there
1141are three numbers, for "online" (chatty and online), "away" (away,
1142extended away and do not disturb) and offline contacts.
1143
1144 If you set 'jabber-mode-line-compact' to nil, you get a complete
1145breakdown of presence status. That gives you six numbers indicating the
1146number of chatty, online, away, extended away, dnd, and offline
1147contacts, respectively.
1148
1149\1f
1150File: jabber.info, Node: Keepalive, Next: Reconnecting, Prev: Modeline status, Up: Useful features
1151
115210.3 Keepalive
1153==============
1154
1155Sometimes network connections are lost without you noticing. This is
1156especially true with Jabber, as it is quite reasonable to keep the
1157connection open for a long time without either sending or receiving any
1158data.
1159
1160 On the other hand, the server may want to do the same kind of
1161detection, and may expect the client to send something at regular
1162intervals.
1163
1164 If you want to detect a lost connection earlier, or make sure that
1165the server doesn't drop your connection, you can use the keepalive
1166functions. These come in two flavours: whitespace pings and XMPP pings.
1167
116810.3.1 Whitespace pings
1169-----------------------
1170
1171A "whitespace ping" is a single space character sent to the server.
1172This is often enough to make NAT devices consider the connection
1173"alive", and likewise for certain Jabber servers, e.g. Openfire. It
1174may also make the OS detect a lost connection faster--a TCP connection
1175on which no data is sent or received is indistinguishable from a lost
1176connection.
1177
1178 Type 'M-x jabber-whitespace-ping-start' to start it, and 'M-x
1179jabber-whitespace-ping-stop' to stop it. The former is in
1180'jabber-post-connect-hooks' by default; *note Hooks::.
1181
1182 The frequency of whitespace pings is controlled by the variable
1183'jabber-whitespace-ping-interval'. The default value is once every 30
1184seconds.
1185
118610.3.2 XMPP pings
1187-----------------
1188
1189These functions work by sending a ping request to your server once in a
1190while (by default every ten minutes), and considering the connection
1191lost if the server doesn't answer within reasonable time (by default 20
1192seconds).
1193
1194 Type 'M-x jabber-keepalive-start' to start it, and 'M-x
1195jabber-keepalive-stop' to stop it. You may want to add
1196'jabber-keepalive-start' to 'jabber-post-connect-hooks'; *note Hooks::.
1197
1198 You can customize the interval and the timeout with the variables
1199'jabber-keepalive-interval' and 'jabber-keepalive-timeout',
1200respectively.
1201
1202 You can also manually ping some client/server by using 'M-x
1203jabber-ping'. Note that pong will be displayed according
1204'jabber-alerts-info-messages-hooks' (default is echo in minibuffer).
1205
1206\1f
1207File: jabber.info, Node: Reconnecting, Next: Tracking activity, Prev: Keepalive, Up: Useful features
1208
120910.4 Reconnecting
1210=================
1211
1212jabber.el supports automatic reconnection to Jabber server(s) upon lost
1213connection. By default it is off. To turn on, customize the
1214'jabber-auto-reconnect' variable.
1215
1216 This is of limited use if you have to type your password every time
1217jabber.el reconnects. There are two ways to save your password: you can
1218set it in 'jabber-account-alist' (*note Account settings::), and you can
1219use 'password-cache.el', which is available in recent versions of Gnus
1220and in Emacs 23. Note that you probably want to customize
1221'password-cache-expiry' if you use the latter.
1222
1223\1f
1224File: jabber.info, Node: Tracking activity, Next: Watch buddies, Prev: Reconnecting, Up: Useful features
1225
122610.5 Tracking activity
1227======================
1228
1229When you're working on something important you might want to delay
1230responding to incoming messages. However, when you're done working,
1231will you remember them? If you're anything like me, you'll have a lot
1232of buffers in your Emacs session, and a Jabber chat buffer can easily
1233get lost.
1234
1235 When 'jabber-activity-mode' is enabled (by default, it is), Emacs
1236keeps track of the buddies which have messaged you since last you
1237visited their buffer, and will display them in mode line. As soon as
1238you visit their buffer they disappear from the mode line, indicating
1239that you've read their message.
1240
1241 If your mode line fills over because of these notifications, you can
1242customize 'jabber-activity-make-strings' to shorten them to the shortest
1243possibly unambiguous form.
1244
1245 If you try to exit Emacs while you still have unread messages, you
1246will be notified and asked about this. If you don't like that, set
1247'jabber-activity-query-unread' to nil.
1248
1249 If you want to display the number of unread buffers in the frame
1250title, set 'jabber-activity-count-in-title' to t. The format of the
1251number can be changed through 'jabber-activity-count-in-title-format'.
1252
1253 To hide activity notifications for some contacts, use
1254'jabber-activity-banned' variable - just add boring JIDs (as regexps)
1255here.
1256
1257 For complete customizability, write a hook function for
1258'jabber-activity-update-hook'. From that function, you can take action
1259based on 'jabber-activity-jids', 'jabber-activity-mode-string', and
1260'jabber-activity-count-string'.
1261
1262\1f
1263File: jabber.info, Node: Watch buddies, Next: Spell checking, Prev: Tracking activity, Up: Useful features
1264
126510.6 Watch buddies
1266==================
1267
1268Sometimes you might be waiting for a certain person to come online, and
1269you don't want that occasion to get lost in the noise. To get an
1270obtrusive message when that happens, type 'M-x jabber-watch-add' and
1271select the person in question. You can enter a comment, to remember why
1272you added the watch.
1273
1274 You will get a message whenever that person goes from offline to
1275online. jabber.el will remember this for the rest of your Emacs session
1276(it's not saved to disk, though), but if you want to get rid of it, type
1277'M-x jabber-watch-remove'.
1278
1279\1f
1280File: jabber.info, Node: Spell checking, Next: Gmail notifications, Prev: Watch buddies, Up: Useful features
1281
128210.7 Spell checking
1283===================
1284
1285You can activate spell checking in a chat buffer with 'M-x
1286flyspell-mode'. It will check only what you are currently writing, not
1287what you receive or what you have already sent. You may want to add
1288'flyspell-mode' to 'jabber-chat-mode-hook'.
1289
1290 For more information about Emacs spell checking, *note Checking and
1291Correcting Spelling: (emacs)Spelling.
1292
1293\1f
1294File: jabber.info, Node: Gmail notifications, Next: Saving groups roll state, Prev: Spell checking, Up: Useful features
1295
129610.8 Gmail notifications
1297========================
1298
1299If you are connected to a Google Talk account, you can receive
1300notifications when a new Gmail message arrives. Gmail notifications are
1301enabled by adding the following line to your '.emacs':
1302
1303 (add-hook 'jabber-post-connect-hooks 'jabber-gmail-subscribe)
1304
1305 Default behavior is to display a message that mentions the number of
1306received gmails. You can customize this behavior by providing your own
1307'jabber-gmail-dothreads' function.
1308
1309 Example:
1310
1311 (eval-after-load "jabber-gmail"
1312 '(defun jabber-gmail-dothreads (threads)
1313 "Process <mail-thread-info/> elements.
1314 THREADS is a list of XML sexps corresponding to <mail-thread-info/>
1315 elements.
1316 See http://code.google.com/apis/talk/jep_extensions/gmail.html#response"
1317 (osd "gmail: %d" (length threads))))
1318
1319 ;;; It's usually a good idea to have a shortcut for querying GTalk server.
1320 (global-set-key (kbd "<f9> g") 'jabber-gmail-query)
1321
1322 ;;; The definition of `osd' function used by `jabber-gmail-dothreads'.
1323 ;;; `osd_cat' is shipped with the X OSD library
1324 ;;; [http://www.ignavus.net/software.html].
1325 (if (and (display-graphic-p) (file-executable-p "/usr/bin/osd_cat"))
1326 (defun osd (fmt &rest args)
1327 "Display message on X screen."
1328 (let ((opts "-p bottom -A center -l 1 \
1329 -f '-adobe-helvetica-bold-r-*-*-24-*-*-*-*-*-iso10646-1'")
1330 (msg (apply 'format (concat fmt "\n") args)))
1331 (start-process "osd" nil shell-file-name shell-command-switch
1332 (format "echo %s | osd_cat %s"
1333 (shell-quote-argument msg) opts))))
1334 (defalias 'osd 'message))
1335
1336\1f
1337File: jabber.info, Node: Saving groups roll state, Prev: Gmail notifications, Up: Useful features
1338
133910.9 Saving groups roll state
1340=============================
1341
1342You can save roster's groups rollup/rolldown state between sessions. To
1343do this you need to add 'jabber-roster-save-groups' to
1344'jabber-pre-disconnect-hook' and 'jabber-roster-restore-groups' to
1345'jabber-post-connect-hooks', respectively.
1346
1347 State saved in private storage on server-side (for each account).
1348Note that state restoring working by rolling up groups, rolled up at
1349state saving (by default, all groups rolled down). Also note that at
1350now, 'jabber-pre-disconnect-hook' run only with 'jabber-disconnect' (not
1351with 'jabber-disconnect-one').
1352
1353\1f
1354File: jabber.info, Node: Message history, Next: Typing notifications, Prev: Useful features, Up: Top
1355
135611 Message history
1357******************
1358
1359If you want a record of messages sent and received, set
1360'jabber-history-enabled' to t. If you also want record MUC groupchat
1361messages, set 'jabber-history-muc-enabled' to t. Messages will be saved
1362in one file per contact in the directory specified by the variable
1363'jabber-history-dir' (the default is '~/.emacs.d/jabber-history'). If
1364you prefer to store messages for all contacts in a single file, set
1365'jabber-use-global-history' to 't' and set
1366'jabber-global-history-filename' as required.(1)
1367
1368 When you open a new chat buffer and have entries in your history
1369file, the last few messages you recently exchanged with the contact in
1370question will be inserted. You can control how many messages with
1371'jabber-backlog-number' (by default 10), and how old messages with
1372'jabber-backlog-days' (by default 3 days).
1373
1374 If you want to see more messages, use the function
1375'jabber-chat-display-more-backlog', available in the Chat menu. This is
1376currently the only way to view the message history, apart from opening
1377the history files manually.
1378
1379 If you worry about your history file(s) size, you can enable history
1380rotation feature by setting the variable
1381'jabber-history-enable-rotation' to 't' (default is 'nil'). This
1382feature "rotates" your history files according to the following rule:
1383When 'jabber-history-size-limit' (in kilobytes) is reached, the
1384HISTORY-FILE is renamed to 'HISTORY-FILE-NUMBER', where NUMBER is 1 or
1385the smallest number after the last rotation.
1386
1387 For example, suppose you set the 'jabber-history-size-limit' variable
1388to 512 and you chat with your buddy 'foo@jabber.server' using the
1389per-contact strategy to store history files. So, when the history file
1390('foo@jabber-server') reaches 512K bytes, it will be renamed to
1391'foo@jabber-server-1' and 'foo@jabber-server' will be set empty. Next
1392time 'foo@jabber-server' grows to 512K bytes, it will be saved as
1393'foo@jabber-server-2' and so on. Although the example was presented
1394with the per-contact history file strategy, history rotation works for
1395both per-contact and global history logging strategies.
1396
1397 If you also want to keep chat and groupchat buffers from growing too
1398much, you can customize 'jabber-alert-message-hooks' and
1399'jabber-alert-muc-hooks' by adding truncation upon receiving message
1400('jabber-truncate-chat' and 'jabber-truncate-muc', respectively). The
1401truncation limit may be set by customizing the variable
1402'jabber-log-lines-to-keep'.
1403
1404 ---------- Footnotes ----------
1405
1406 (1) Using a global history file used to be the default. If the file
1407specified by 'jabber-global-history-filename' exists,
1408'jabber-use-global-history' will default to 't' to support existing
1409installations.
1410
1411\1f
1412File: jabber.info, Node: Typing notifications, Next: Roster import and export, Prev: Message history, Up: Top
1413
141412 Typing notifications
1415***********************
1416
1417There are two protocols for "contact is typing" notifications in Jabber.
1418jabber.el supports both of them, displaying various information in the
1419header line of chat buffers.
1420
142112.1 Message events
1422===================
1423
1424The older protocol is called Message Events (*note XEP-0022::). Besides
1425typing notification, it lets you know what happens to the messages you
1426send. These states are possible:
1427
1428 * 'In offline storage' (the user will receive it on next logon)
1429
1430 * 'Delivered' to user's client (but not necessarily displayed)
1431
1432 * 'Displayed' to user
1433
1434 * User is 'typing a message'
1435
1436 The first state is only reported by servers; the other three are
1437reported by clients. jabber.el can report all three of them, and can
1438display all four; not all clients support all states, though.
1439
1440 If you don't want jabber.el to send out this information about you,
1441set the variables 'jabber-events-confirm-delivered',
1442'jabber-events-confirm-displayed', and/or
1443'jabber-events-confirm-composing' to nil. You can make jabber.el not to
1444request such information by customizing 'jabber-events-request-these'.
1445
144612.2 Chat states
1447================
1448
1449The newer protocol is called Chat States (*note XEP-0085::). Rather
1450than dealing with individual messages, it describes the state of the
1451chat session between two people. The following states are possible:
1452
1453 * Active (the default state, not displayed)
1454
1455 * Inactive
1456
1457 * Composing
1458
1459 * Paused (i.e., taking a short pause in composing)
1460
1461 * Gone
1462
1463 jabber.el can display all five states, but only ever sends "active"
1464and "composing" itself.
1465
1466 To customize sending of chat states, customize the variable
1467'jabber-chatstates-confirm'.
1468
1469\1f
1470File: jabber.info, Node: Roster import and export, Next: XMPP URIs, Prev: Typing notifications, Up: Top
1471
147213 Roster import and export
1473***************************
1474
1475Your roster is saved on the Jabber server, and usually not in the
1476client. However, you might want to save the roster to a file anyway.
1477The most common reason for this is probably to copy it to another
1478account.
1479
1480 To export your roster to a file, type 'M-x jabber-export-roster'. A
1481buffer will appear in which you can edit the data to be exported.
1482Changes done in that buffer will not affect your real roster.
1483
1484 To import your roster from a file, type 'M-x jabber-import-roster'.
1485You will be able to edit the data before importing it. Items not in the
1486roster will be added; items in the roster will be modified to match
1487imported data. Subscriptions will be updated.
1488
1489 The format of the roster files is the XML used by roster pushes in
1490the XMPP protocol, in UTF-8 encoding.
1491
1492\1f
1493File: jabber.info, Node: XMPP URIs, Next: Customization, Prev: Roster import and export, Up: Top
1494
149514 XMPP URIs
1496************
1497
1498Many web page authors use links starting with 'xmpp:' for JIDs. Your
1499web browser could be made to pass such links to jabber.el, so that such
1500links are actually useful and not just decoration. How to do that
1501depends on your operating system and web browser.
1502
1503 For any of these methods, you need to make sure that you are running
1504the Emacs server. *Note Using Emacs as a Server: (emacs)Emacs Server,
1505though the simplest way to start it is to customize the variable
1506'server-mode'.
1507
150814.1 GNOME
1509==========
1510
1511The jabber.el distribution contains a GConf schema which tries to set up
1512handling of 'xmpp:' URIs. It is installed by 'make install'. This may
1513or may not work, depending on your GConf configuration and other
1514installed applications. To check, try running:
1515
1516 gconftool --get /desktop/gnome/url-handlers/xmpp/command
1517
1518 This should print something like:
1519
1520 /usr/local/libexec/emacs-jabber-uri-handler "%s"
1521
1522 This setting is picked up by most GNOME or GTK based web browsers,
1523including Firefox.
1524
152514.2 Mozilla and Unix
1526=====================
1527
1528If you use a Mozilla-based web browser on a Unix-like operating system,
1529and the GConf method above doesn't work, you can set it up manually by
1530following these steps:
1531
1532 1. Note the path of the 'emacs-jabber-uri-handler' file in the
1533 jabber.el distribution, and make sure it is executable.
1534
1535 2. Set the Mozilla preference 'network.protocol-handler.app.xmpp' to
1536 the path of 'emacs-jabber-uri-handler'. There are two ways to do
1537 this:
1538
1539 * Go to the URL 'about:config', right-click in the list, choose
1540 "New string", and enter 'network.protocol-handler.app.xmpp'
1541 and the path in the following dialogs.
1542
1543 * Open or create the file 'user.js' in your Mozilla profile
1544 directory (in the same directory as 'prefs.js'), and add the
1545 following line:
1546
1547 user_pref("network.protocol-handler.app.xmpp",
1548 "/PATH/TO/emacs-jabber-uri-handler");
1549
1550 Restart Mozilla for this change to take effect.
1551
155214.3 Other systems
1553==================
1554
1555If you know how to pass an XMPP URI from your browser to the function
1556'jabber-handle-uri', your contribution for this section would be
1557appreciated.
1558
1559\1f
1560File: jabber.info, Node: Customization, Next: Hacking and extending, Prev: XMPP URIs, Up: Top
1561
156215 Customization
1563****************
1564
1565jabber.el is intended to be customizable for many tastes. After all,
1566this is Emacs. To open a customization buffer for jabber.el, type 'M-x
1567jabber-customize'.
1568
1569* Menu:
1570
1571* Account settings::
1572* Menu::
1573* Customizing the roster buffer::
1574* Customizing the chat buffer::
1575* Customizing alerts::
1576* Hooks::
1577* Debug options::
1578
1579\1f
1580File: jabber.info, Node: Account settings, Next: Menu, Up: Customization
1581
158215.1 Account settings
1583=====================
1584
1585All account settings reside in the variable 'jabber-account-list'.
1586Usually you only need to set the JID, in the form 'username@server' (or
1587'username@server/resource' to use a specific resource name). These are
1588the other account options:
1589
1590Disabled
1591 If the account is disabled, 'jabber-connect-all' will not attempt
1592 to connect it. You can still connect it manually with
1593 'jabber-connect'.
1594
1595Password
1596 You can set the password of the account, so you don't have to enter
1597 it when you connect. Note that it will be stored unencrypted in
1598 your customization file.
1599
1600Network server
1601 If the JID of the Jabber server is not also its DNS name, you may
1602 have to enter the real DNS name or IP address of the server here.
1603
1604Connection type
1605 This option specifies whether to use an encrypted connection to the
1606 server. Usually you want "STARTTLS" ('starttls'), which means that
1607 encryption is activated if the server supports it. The other
1608 possibilities are "unencrypted" ('network'), which means just that,
1609 and "legacy SSL/TLS" ('ssl'), which means that encryption is
1610 activated on connection.
1611
1612Port
1613 If the Jabber server uses a nonstandard port, specify it here. The
1614 default is 5222 for STARTTLS and unencrypted connections, and 5223
1615 for legacy SSL connections.
1616
161715.1.1 For Google Talk
1618----------------------
1619
1620If you have a very new version of 'dns.el',(1) you can connect to Google
1621Talk just by specifying your Gmail address as JID. Otherwise, you also
1622need to set "network server" to 'talk.google.com' and "connection type"
1623to "legacy SSL".
1624
1625 See also *note Gmail notifications::.
1626
162715.1.2 Upgrade note
1628-------------------
1629
1630Previous versions of jabber.el had the variables 'jabber-username',
1631'jabber-server', 'jabber-resource' and 'jabber-password'. These are now
1632obsolete and not used.
1633
1634 ---------- Footnotes ----------
1635
1636 (1) Specifically, you need Emacs 23, or No Gnus 0.3.
1637
1638\1f
1639File: jabber.info, Node: Menu, Next: Customizing the roster buffer, Prev: Account settings, Up: Customization
1640
164115.2 Menu
1642=========
1643
1644There is a Jabber menu on the menu bar with some common commands. By
1645default, it is displayed only if you are connected, or if you have
1646configured any accounts. You can set the variable 'jabber-display-menu'
1647to 't' or 'nil', to have the menu displayed always or never,
1648respectively. The default behaviour corresponds to the setting 'maybe'.
1649
1650 Earlier, the way to have the menu appear was to call the function
1651'jabber-menu'. It still works, but is considered obsolete.
1652
1653\1f
1654File: jabber.info, Node: Customizing the roster buffer, Next: Customizing the chat buffer, Prev: Menu, Up: Customization
1655
165615.3 Customizing the roster buffer
1657==================================
1658
1659'jabber-roster-sort-functions' controls how roster items are sorted. By
1660default, contacts are sorted first by presence, and then alphabetically
1661by displayed name.
1662
1663 'jabber-sort-order' controls how roster items are sorted by presence.
1664It is a list containing strings corresponding to show status (*note
1665Presence::) or 'nil', which represents offline.
1666
1667 'jabber-show-resources' controls when your contacts' resources are
1668shown in the roster buffer. The default is to show resources when a
1669contact has more than one connected resource.
1670
1671 'jabber-roster-line-format' specifies how the entry for each contact
1672looks. It is a string where some characters are special if preceded by
1673a percent sign:
1674
1675'%a'
1676 Avatar of contact, if any
1677'%c'
1678 '*' if the contact is connected, or ' ' if not
1679'%u'
1680 Subscription state--see below
1681'%n'
1682 Nickname of contact, or JID if no nickname
1683'%j'
1684 Bare JID of contact (without resource)
1685'%r'
1686 Highest-priority resource of contact
1687'%s'
1688 Availability of contact as a string ("Online", "Away" etc)
1689'%S'
1690 Status string specified by contact
1691
1692 'jabber-roster-show-title' controls whether to show a "Jabber roster"
1693string at the top of the roster buffer. You need to run 'M-x
1694jabber-display-roster' after changing this variable to update the
1695display.
1696
1697 '%u' is replaced by one of the strings given by
1698'jabber-roster-subscription-display'.
1699
1700 'jabber-resource-line-format' is nearly identical, except that the
1701values correspond to the values of the resource in question, and that
1702the '%p' escape is available, which inserts the priority of the
1703resource.
1704
1705 'jabber-roster-buffer' specifies the name of the roster buffer. If
1706you change this, the new name will be used the next time the roster is
1707redisplayed.
1708
1709 'jabber-roster-show-bindings' controls whether to show a list of
1710keybindings at the top of the roster buffer. You need to run 'M-x
1711jabber-display-roster' after changing this variable to update the
1712display.
1713
1714\1f
1715File: jabber.info, Node: Customizing the chat buffer, Next: Customizing alerts, Prev: Customizing the roster buffer, Up: Customization
1716
171715.4 Customizing the chat buffer
1718================================
1719
1720You can customize the look of the prompts in the chat buffer. There are
1721separate settings for local text (i.e. what you write) and foreign text
1722(i.e. what other people write).
1723
1724 'jabber-chat-text-local' and 'jabber-chat-text-foreign' determine the
1725faces used for chat messages.
1726
1727 'jabber-chat-prompt-local' and 'jabber-chat-prompt-foreign' determine
1728the faces used for the prompts. You can also turn on automatic
1729colorization of local ('jabber-muc-colorize-local') and/or foreign
1730('jabber-muc-colorize-foreign') prompts. By default it is off. You can
1731correct and save for future use auto-generated colors by customizing
1732'jabber-muc-participant-colors', 'jabber-muc-nick-saturation' and
1733'jabber-muc-nick-value', if you wish.
1734
1735 'jabber-chat-local-prompt-format' and
1736'jabber-chat-foreign-prompt-format' determine what text is displayed in
1737the prompts. They are format strings, with the following special
1738sequences defined:
1739
1740'%t'
1741 The time when the message was sent or received
1742'%n'
1743 The nickname of the user. For the foreign prompt, this is the name
1744 of the contact in the roster, or the JID if no name set. For the
1745 local prompt, this is the username part of your JID.
1746'%u'
1747 The username of the user (i.e. the first part of the JID).
1748'%r'
1749 The resource.
1750'%j'
1751 The bare JID of the user
1752
1753 'jabber-chat-time-format' defines how '%t' shows time. Its format is
1754identical to that passed to 'format-time-string'. *Note Time
1755Conversion: (elisp)Time Conversion.
1756
1757 'jabber-chat-delayed-time-format' is used instead of
1758'jabber-chat-time-format' for delayed messages (messages sent while you
1759were offline, or fetched from history). This way you can have short
1760timestamps everywhere except where you need long ones. You can always
1761see the complete timestamp in a tooltip by hovering over the prompt with
1762the mouse.
1763
1764 By default, timestamps are printed in the chat buffer every hour (at
1765"rare" times). This can be toggled with 'jabber-print-rare-time'. You
1766can customize the displayed time by setting 'jabber-rare-time-format'.
1767Rare timestamps will be printed whenever time formatted by that format
1768string would change.
1769
1770 You can also customize the header line of chat buffers, by modifying
1771the variable 'jabber-chat-header-line-format'. The format of that
1772variable is the same as that of 'mode-line-format' and
1773'header-line-format'. *Note Mode-Line Format: (elisp)Mode Line Format.
1774For MUC buffers, 'jabber-muc-header-line-format' is used instead.
1775
1776 The variable 'jabber-chat-fill-long-lines' controls whether long
1777lines in the chat buffer are wrapped.
1778
1779\1f
1780File: jabber.info, Node: Customizing alerts, Next: Hooks, Prev: Customizing the chat buffer, Up: Customization
1781
178215.5 Customizing alerts
1783=======================
1784
1785When an event happens (currently including presence changes, incoming
1786messages, and completed queries) you will usually want to be notified.
1787Since tastes in this area vary wildly, these alerts are implemented as
1788hooks, so you can choose which ones you want, or write your own if none
1789fit.
1790
1791 Actually, if you don't want to write your own, stop reading this
1792section and just read *note Standard alerts::.
1793
1794 Many kinds of alerts consist in displaying a text message through a
1795certain mechanism. This text message is provided by a function which
1796you can rewrite or replace. If this function returns 'nil', no message
1797is displayed, and non-textual alerts refrain from action.
1798
1799 If you want to write alert hooks that do nothing except displaying
1800the supplied message in some way, use the macro 'define-jabber-alert'.
1801For example, if FOO is a function that takes a string as an argument,
1802write
1803 (define-jabber-alert foo
1804 "Display a message in a fooish way"
1805 'foo)
1806and all details will be taken care of for you.
1807
1808 The hooks take different arguments depending on category. However,
1809they all have in common that the last argument is the result of the
1810message function. The message function for each category takes the same
1811arguments as the corresponding hooks, except for that last argument.
1812
1813 Alert hook contributions are very welcome. You can send them to the
1814mailing list, or to the Sourceforge patch tracker. *Note Contacts::.
1815
1816 Alert hooks are meant for optional UI things, that are subject to
1817varying user tastes, and that can be toggled by simply adding or
1818removing the function to and from the hook. For other purposes, there
1819are corresponding general hooks, that are defvars instead of defcustoms,
1820and that are meant to be managed by Lisp code. They have the same name
1821as the alert hooks minus the '-alert' part, e.g. 'jabber-message-hooks'
1822vs 'jabber-alert-message-hooks', etc.
1823
1824* Menu:
1825
1826* Standard alerts::
1827* Presence alerts::
1828* Message alerts::
1829* MUC alerts::
1830* Info alerts::
1831
1832\1f
1833File: jabber.info, Node: Standard alerts, Next: Presence alerts, Up: Customizing alerts
1834
183515.5.1 Standard alerts
1836----------------------
1837
1838Thirteen alerts are already written for all four alert categories.
1839These all obey the result from the corresponding message function.
1840
1841 The 'beep' alerts simply sound the terminal bell by calling 'ding'.
1842They are disabled by default.
1843
1844 The 'echo' alerts display a message in the echo area by calling
1845'message'. They are enabled by default.
1846
1847 The 'switch' alerts switch to the buffer where the event occurred
1848(chat buffer for incoming messages, roster buffer for presence changes,
1849browse buffer for completed queries). They are disabled by default.
1850Take care when using them, as they may interrupt your editing.
1851
1852 The 'display' alerts display but do not select the buffer in
1853question, using the function 'display-buffer'. *Note Choosing a Window
1854for Display: (elisp)Choosing Window, for information about customizing
1855its behaviour. This is enabled by default for info requests.
1856
1857 The 'wave' alerts play a sound file by calling 'play-sound-file'. No
1858sound files are provided. To use this, enter the names of the sound
1859files in 'jabber-alert-message-wave', 'jabber-alert-presence-wave' and
1860'jabber-alert-info-wave', respectively. You can specify specific sound
1861files for contacts matching a regexp in the variables
1862'jabber-alert-message-wave-alist' and
1863'jabber-alert-presence-wave-alist'.
1864
1865 The 'screen' alerts send a message through the Screen terminal
1866manager(1). They do no harm if called when you don't use Screen.
1867
1868 The 'tmux' alerts send a message through the tmux terminal
1869manager(2).
1870
1871 The 'ratpoison' alerts send a message through the Ratpoison window
1872manager(3). They do no harm if used when you're not running X, but if
1873you are running X with another window manager, the ratpoison processes
1874will never exit. Emacs doesn't hold on to them, though.
1875
1876 The 'sawfish' alerts send a message through the Sawfish window
1877manager.
1878
1879 The 'wmii' alerts display a message through the wmii window manager.
1880
1881 The 'awesome' alerts display a message through the awesome window
1882manager. However, to work it needs naughty (i.e. 'require("naughty")'
1883in rc.lua).
1884
1885 The 'xmessage' alerts send a message through the standard 'xmessage'
1886tool. The variable 'jabber-xmessage-timeout' controls how long the
1887alert appears.
1888
1889 The 'osd' alerts send a message onto your screen using XOSD.(4)
1890
1891 The 'notifications' alerts send a message using Emacs built-in
1892package 'notifications.el'. Note that 'notifications.el' first appear
1893in Emacs 24.1, so they are disabled by default.
1894
1895 The 'libnotify' alerts send a message onto your screen using
1896'notification-daemon'.
1897
1898 The 'festival' alerts speak the message using the Emacs interface of
1899the Festival speech synthesis system(5).
1900
1901 The 'autoanswer' alert is kind of special: it will not show you
1902message/muc alert, but instead will automaticaly answer to sender. See
1903variable 'jabber-autoanswer-alist' description for details.
1904
1905 Additionally, for one-to-one and MUC messages, there are 'scroll'
1906alerts (enabled by default), that aim to do the right thing with chat
1907buffers that are visible but not active. Sometimes you want point to
1908scroll down, and sometimes not. These functions should do what you
1909mean; if they don't, it's a bug.
1910
1911 Also, in MUC you can use a family of so-called "personal" alerts.
1912They are like other MUC alerts, but fire only on incoming messages
1913addresed directly to you (also known as "private messages"). One
1914example of such an alert is 'jabber-muc-echo-personal', which shows a
1915note for an MUC message only if it was addressed to you.
1916
1917 Some of these functions are in the 'jabber-alert.el' file, and the
1918others are in their own files. You can use them as templates or
1919inspiration for your own alerts.
1920
1921 ---------- Footnotes ----------
1922
1923 (1) See <http://www.gnu.org/software/screen/>.
1924
1925 (2) See <http://tmux.sourceforge.net/>.
1926
1927 (3) See <http://ratpoison.sourceforge.net/>.
1928
1929 (4) XOSD can be found at <http://www.ignavus.net/software.html>. You
1930also need 'osd.el' from <http://www.brockman.se/software/osd.el>.
1931
1932 (5) See <http://www.cstr.ed.ac.uk/projects/festival/>.
1933
1934\1f
1935File: jabber.info, Node: Presence alerts, Next: Message alerts, Prev: Standard alerts, Up: Customizing alerts
1936
193715.5.2 Presence alerts
1938----------------------
1939
1940Set 'jabber-alert-presence-message-function' to your desired function.
1941This function should look like:
1942
1943 (defun FUNCTION (WHO OLDSTATUS NEWSTATUS STATUSTEXT)
1944 ...
1945 )
1946
1947 WHO is the JID symbol (*note JID symbols::), OLDSTATUS and NEWSTATUS
1948are the previous and current stati, respectively, and STATUSTEXT is the
1949status message if provided, otherwise nil.
1950
1951 OLDSTATUS and NEWSTATUS can be one of '""' (i.e. online), '"away"',
1952'"xa"', '"dnd"', '"chat"', '"error"' and 'nil' (i.e. offline).
1953
1954 NEWSTATUS can also be one of '"subscribe"', '"subscribed"',
1955'"unsubscribe"' and '"unsubscribed"'.
1956
1957 The default function, 'jabber-presence-default-message', returns
1958'nil' if OLDSTATUS and NEWSTATUS are the same, and in other cases
1959constructs a message from the given data.
1960
1961 Another function, 'jabber-presence-only-chat-open-message', behave
1962just like 'jabber-presence-default-message', but only if conversation
1963buffer for according JID is already open. Use it to show presence
1964notifications only for "interesting" contacts.
1965
1966 All presence alert hooks take the same arguments plus the additional
1967PROPOSED-ALERT, which is the result of the specified message function.
1968This last argument is usually the only one they use.
1969
1970\1f
1971File: jabber.info, Node: Message alerts, Next: MUC alerts, Prev: Presence alerts, Up: Customizing alerts
1972
197315.5.3 Message alerts
1974---------------------
1975
1976Set 'jabber-alert-message-function' to your desired function.(1) This
1977function should look like:
1978
1979 (defun FUNCTION (FROM BUFFER TEXT)
1980 ...
1981 )
1982
1983 FROM is the JID symbol (*note JID symbols::), BUFFER is the buffer
1984where the message is displayed, and TEXT is the text of the message.
1985
1986 The default function, 'jabber-message-default-message', returns
1987"Message from PERSON", where PERSON is the name of the person if
1988specified in the roster, otherwise the JID.
1989
1990 All message alert hooks take the same arguments plus the additional
1991PROPOSED-ALERT, which is the result of the specified message function.
1992
1993 If you don't want message alerts when the chat buffer in question is
1994already the current buffer, set 'jabber-message-alert-same-buffer' to
1995nil. This affects the behaviour of the default message function, so
1996you'll have to reimplement this functionality if you write your own
1997message function.
1998
1999 ---------- Footnotes ----------
2000
2001 (1) Logically it should be 'jabber-alert-message-message-function',
2002but that would be really ugly.
2003
2004\1f
2005File: jabber.info, Node: MUC alerts, Next: Info alerts, Prev: Message alerts, Up: Customizing alerts
2006
200715.5.4 MUC alerts
2008-----------------
2009
2010Set 'jabber-alert-muc-function' to your desired function. This function
2011should look like:
2012
2013 (defun FUNCTION (NICK GROUP BUFFER TEXT)
2014 ...
2015 )
2016
2017 NICK is the nickname, GROUP is the JID of the group, BUFFER is the
2018buffer where the message is displayed, and TEXT is the text of the
2019message.
2020
2021 The default function, 'jabber-muc-default-message', returns "Message
2022from NICK in GROUP" or "Message in GROUP", the latter for messages from
2023the room itself.
2024
2025 All MUC alert hooks take the same arguments plus the additional
2026PROPOSED-ALERT, which is the result of the specified message function.
2027
2028 By default, no alert is made for messages from yourself. To change
2029that, customize the variable 'jabber-muc-alert-self'.
2030
2031\1f
2032File: jabber.info, Node: Info alerts, Prev: MUC alerts, Up: Customizing alerts
2033
203415.5.5 Info alerts
2035------------------
2036
2037Info alerts are sadly underdeveloped. The message function,
2038'jabber-alert-info-message-function', takes two arguments, INFOTYPE and
2039BUFFER. BUFFER is the buffer where something happened, and INFOTYPE is
2040either ''roster' for roster updates, or ''browse' for anything that uses
2041the browse buffer (basically anything except chatting).
2042
2043 The info alert hooks take an extra argument, as could be expected.
2044
2045\1f
2046File: jabber.info, Node: Hooks, Next: Debug options, Prev: Customizing alerts, Up: Customization
2047
204815.6 Hooks
2049==========
2050
2051jabber.el provides various hooks that you can use for whatever purpose.
2052
2053'jabber-post-connect-hooks'
2054 This hook is called after successful connection and authentication.
2055 By default it contains 'jabber-send-current-presence' (*note
2056 Presence::). The hook functions get the connection object as
2057 argument.
2058
2059'jabber-lost-connection-hooks'
2060 This hook is called when you have been disconnected for unknown
2061 reasons. Usually this isn't noticed for quite a long time.
2062
2063 The hook is called with one argument: the connection object.
2064
2065'jabber-pre-disconnect-hook'
2066 This hook is called just before voluntary disconnection, i.e. in
2067 'jabber-disconnect', the command to disconnect all accounts. There
2068 is currently no hook for disconnection of a single account.
2069
2070'jabber-post-disconnect-hook'
2071 This hook is called after disconnection of any kind, possibly just
2072 after 'jabber-lost-connection-hook'.
2073
2074'jabber-chat-mode-hook'
2075 This hook is called when a new chat buffer is created.
2076
2077'jabber-browse-mode-hook'
2078 This hook is called when a new browse buffer is created.
2079
2080'jabber-roster-mode-hook'
2081 This hook is called when the roster buffer is created.
2082
2083\1f
2084File: jabber.info, Node: Debug options, Prev: Hooks, Up: Customization
2085
208615.7 Debug options
2087==================
2088
2089These settings provide a lot of information which is usually not very
2090interesting, but can be useful for debugging various things.
2091
2092 'jabber-debug-log-xml' activates XML console. All XML stanzas sent
2093and received are logged in the buffer '*-jabber-console-JID-*' (and to
2094specified file if value is string). Also this buffer can be used to
2095send XML stanzas manually.
2096
2097 Format for console buffer name. %s mean connection jid. Default
2098value is '*-jabber-console-%s-*'.
2099
2100 Maximum number of lines in console buffer. Use this option to
2101prevent over bloating size of buffer. Set value to 0 if you want to
2102keep all stanzas in buffer, but it's not recommended and may be unsafe.
2103
2104 Usually, the process buffers for Jabber connections are killed when
2105the connection is closed, as they would otherwise just fill up memory.
2106However, they might contain information about why the connection was
2107lost. To keep process buffers, set 'jabber-debug-keep-process-buffers'
2108to 't'.
2109
2110\1f
2111File: jabber.info, Node: Hacking and extending, Next: Protocol support, Prev: Customization, Up: Top
2112
211316 Hacking and extending
2114************************
2115
2116This part of the manual is an attempt to explain parts of the source
2117code. It is not meant to discourage you from reading the code yourself
2118and trying to figure it out, but as a guide on where to look. Knowledge
2119of Jabber protocols is assumed.
2120
2121* Menu:
2122
2123* Connection object::
2124* XML representation::
2125* JID symbols::
2126* Listening for new requests::
2127* Sending new requests::
2128* Extending service discovery::
2129* Chat printers::
2130* Stanza chains::
2131
2132\1f
2133File: jabber.info, Node: Connection object, Next: XML representation, Up: Hacking and extending
2134
213516.1 Connection object
2136======================
2137
2138Each Jabber connection is represented by a "connection object". This
2139object has the form of a finite state machine, and is realized by the
2140library 'fsm'.(1)
2141
2142 The various states of this object are defined in 'jabber-core.el'.
2143They describe the way of the connection through the establishing of a
2144network connection and authentication, and finally comes to the
2145':session-established' state where ordinary traffic takes place.
2146
2147 These details are normally opaque to an extension author. As will be
2148noted, many functions expect to receive a connection object, and
2149functions at extension points generally receive such an object in order
2150to pass it on. The following functions simply query the internal state
2151of the connection:
2152
2153 -- Function: jabber-connection-jid connection
2154 The 'jabber-connection-jid' function returns the full JID of
2155 CONNECTION, i.e. a string of the form
2156 '"username@server/resource"'.
2157
2158 -- Function: jabber-connection-bare-jid connection
2159 The 'jabber-connection-bare-jid' function returns the bare JID of
2160 CONNECTION, i.e. a string of the form '"username@server"'.
2161
2162 ---------- Footnotes ----------
2163
2164 (1) So far, this library is only distributed with jabber.el. The
2165author hopes that it could be useful for other projects, too.
2166
2167\1f
2168File: jabber.info, Node: XML representation, Next: JID symbols, Prev: Connection object, Up: Hacking and extending
2169
217016.2 XML representation
2171=======================
2172
2173The XML representation is the one generated by 'xml.el' in Emacs, namely
2174the following. Each tag is a list. The first element of the list is a
2175symbol, the name of which is the name of the tag. The second element is
2176an alist of attributes, where the keys are the attribute names in symbol
2177form, and the values are strings. The remaining elements are the tags
2178and data contained within the tag.
2179
2180 For example,
2181 <foo bar='baz'>
2182 <frobozz/>Fnord
2183 </foo>
2184 is represented as
2185 (foo ((bar . "baz")) (frobozz nil "") "Fnord
2186 ")
2187
2188 Note the empty string as the third element of the 'frobozz' list. It
2189is not present in newer (post-21.3) versions of 'xml.el', but it's
2190probably best to assume it might be there.
2191
2192 -- Function: jabber-sexp2xml xml-sexp
2193 This function takes a tag in list representation, and returns its
2194 XML representation as a string. You will normally not need to use
2195 this function directly, but it can be useful to see how your sexps
2196 will look when sent to the outer, non-Lisp, world.
2197
2198 -- Function: jabber-send-sexp connection sexp
2199 This function sends SEXP, an XMPP stanza in list representation,
2200 and sends it over CONNECTION.
2201
2202 You will normally use the functions 'jabber-send-presence',
2203 'jabber-send-message' and 'jabber-send-iq' instead of this
2204 function.
2205
2206\1f
2207File: jabber.info, Node: JID symbols, Next: Listening for new requests, Prev: XML representation, Up: Hacking and extending
2208
220916.3 JID symbols
2210================
2211
2212JIDs are sometimes represented as symbols. Its name is the JID, and it
2213is interned in 'jabber-jid-obarray'. A roster entry can have the
2214following properties:
2215
2216'xml'
2217 The XML tag received from the server on roster update
2218
2219'name'
2220 The name of the roster item (just like the XML attribute)
2221
2222'subscription'
2223 The subscription state; a string, one of '"none"', '"from"', '"to"'
2224 and '"both"'
2225
2226'ask'
2227 The ask state; either 'nil' or '"subscribe"'
2228
2229'groups'
2230 A list of strings (possibly empty) containing all the groups the
2231 contact is in
2232
2233'connected'
2234 Boolean, true if any resource is connected
2235
2236'show'
2237 Presence show value for highest-priority connected resource; a
2238 string, one of '""' (i.e. online), '"away"', '"xa"', '"dnd"',
2239 '"chat"', '"error"' and 'nil' (i.e. offline)
2240
2241'status'
2242 Presence status message for highest-priority connected resource
2243
2244'resources'
2245 Alist. Keys are strings (resource names), values are plists with
2246 properties 'connected', 'show', 'status' and 'priority'.
2247
2248 Incoming presence information is inserted in 'resources', and the
2249information from the resource with the highest priority is inserted in
2250'show' and 'status' by the function 'jabber-prioritize-resources'.
2251
2252\1f
2253File: jabber.info, Node: Listening for new requests, Next: Sending new requests, Prev: JID symbols, Up: Hacking and extending
2254
225516.4 Listening for new requests
2256===============================
2257
2258To listen for new IQ requests, add the appropriate entry in
2259'jabber-iq-get-xmlns-alist' or 'jabber-iq-set-xmlns-alist'. The key is
2260the namespace of the request, and the value is a function that takes two
2261arguments, the connection object, and the entire IQ stanza in list
2262format. 'jabber-process-iq' reads these alists to determine which
2263function to call on incoming packets.
2264
2265 For example, the Ad-Hoc Commands module contains the following:
2266
2267 (add-to-list 'jabber-iq-set-xmlns-alist
2268 (cons "http://jabber.org/protocol/commands"
2269 'jabber-ahc-process))
2270
2271 To send a response to an IQ request, use '(jabber-send-iq CONNECTION
2272SENDER "result" QUERY nil nil nil nil ID)', where QUERY is the query in
2273list format. 'jabber-send-iq' will encapsulate the query in an IQ
2274packet with the specified id.
2275
2276 To return an error to the Jabber entity that sent the query, use
2277'jabber-signal-error'. The signal is caught by 'jabber-process-iq',
2278which takes care of sending the error. You can also use
2279'jabber-send-iq-error'.
2280
2281\1f
2282File: jabber.info, Node: Sending new requests, Next: Extending service discovery, Prev: Listening for new requests, Up: Hacking and extending
2283
228416.5 Sending new requests
2285=========================
2286
2287To send an IQ request, use 'jabber-send-iq'. It will generate an id,
2288and create a mapping for it for use when the response comes. The syntax
2289is:
2290
2291 (jabber-send-iq CONNECTION TO TYPE QUERY
2292 SUCCESS-CALLBACK SUCCESS-CLOSURE
2293 FAILURE-CALLBACK FAILURE-CLOSURE)
2294
2295 SUCCESS-CALLBACK will be called if the response is of type 'result',
2296and FAILURE-CALLBACK will be called if the response is of type 'error'.
2297Both callbacks take three arguments, the connection object, the IQ
2298stanza of the response, and the corresponding closure item earlier
2299passed to 'jabber-send-iq'.
2300
2301 Two standard callbacks are provided. 'jabber-report-success' takes a
2302string as closure item, and reports success or failure in the echo area
2303by appending either 'succeeded' or 'failed' to the string.
2304'jabber-process-data' prepares a browse buffer. If its closure argument
2305is a function, it calls that function with point in this browse buffer.
2306If it's a string, it prints that string along with the error message in
2307the IQ response. If it's anything else (e.g. 'nil'), it just dumps the
2308XML in the browse buffer.
2309
2310 Examples follow. This is the hypothetical Jabber protocol "frob",
2311for which only success report is needed:
2312 (jabber-send-iq connection
2313 "someone@somewhere.org" "set"
2314 '(query ((xmlns . "frob")))
2315 'jabber-report-success "Frobbing"
2316 'jabber-report-success "Frobbing")
2317 This will print "Frobbing succeeded" or "Frobbing failed: REASON",
2318respectively, in the echo area.
2319
2320 The protocol "investigate" needs to parse results and show them in a
2321browse buffer:
2322 (jabber-send-iq connection
2323 "someone@somewhere.org" "get"
2324 '(query ((xmlns . "investigate")))
2325 'jabber-process-data 'jabber-process-investigate
2326 'jabber-process-data "Investigation failed")
2327 Of course, the previous example could have used
2328'jabber-report-success' for the error message. It's a matter of UI
2329taste.
2330
2331\1f
2332File: jabber.info, Node: Extending service discovery, Next: Chat printers, Prev: Sending new requests, Up: Hacking and extending
2333
233416.6 Service discovery
2335======================
2336
2337Service discovery (XEP-0030) is a Jabber protocol for communicating
2338features supported by a certain entity, and items affiliated with an
2339entity. jabber.el has APIs for both providing and requesting such
2340information.
2341
2342* Menu:
2343
2344* Providing info::
2345* Requesting info::
2346
2347\1f
2348File: jabber.info, Node: Providing info, Next: Requesting info, Up: Extending service discovery
2349
235016.6.1 Providing info
2351---------------------
2352
2353Your new IQ request handlers will likely want to advertise their
2354existence through service discovery.
2355
2356 To have an additional feature reported in response to disco info
2357requests, add a string to 'jabber-advertised-features'.
2358
2359 By default, the service discovery functions reject all requests
2360containing a node identifier with an "Item not found" error. To make
2361them respond, add the appropriate entries to 'jabber-disco-items-nodes'
2362and 'jabber-disco-info-nodes'. Both variables work in the same way.
2363They are alists, where the keys are the node names, and the values are
2364lists of two items.
2365
2366 The first item is the data to return -- either a list, or a function
2367taking the connection object and the entire IQ stanza and returning a
2368list; in either case this list contains the XML nodes to include in the
2369'<query/>' node in the response.
2370
2371 The second item is the access control function. An access control
2372function receives the connection object and a JID as arguments, and
2373returns non-nil if access is to be granted. If nil is specified instead
2374of a function, access is always granted. One such function is provided,
2375'jabber-my-jid-p', which grants access for JIDs where the username and
2376server (not necessarily resource) are equal to those of the user, or one
2377of the user's configured accounts.
2378
2379\1f
2380File: jabber.info, Node: Requesting info, Prev: Providing info, Up: Extending service discovery
2381
238216.6.2 Requesting info
2383----------------------
2384
2385jabber.el has a facility for requesting disco items and info. All
2386positive responses are cached.
2387
2388 To request disco items or info from an entity, user one of these
2389functions:
2390
2391 -- Function: jabber-disco-get-info jc jid node callback closure-data
2392 &optional force
2393 Get disco information for JID and NODE. A request is sent
2394 asynchronously on the connection JC. When the response arrives,
2395 CALLBACK is called with three arguments: JC, CLOSURE-DATA, and the
2396 result. The result may be retrieved from the cache, unless FORCE
2397 is non-nil.
2398
2399 If the request was successful, or retrieved from cache, it looks
2400 like '(IDENTITIES FEATURES)', where IDENTITIES and FEATURES are
2401 lists. Each identity is '["NAME" "CATEGORY" "TYPE"]', and each
2402 feature is a string denoting the namespace of the feature.
2403
2404 If the request failed, the result is an '<error/>' node.
2405
2406 -- Function: jabber-disco-get-items jc jid node callback closure-data
2407 &optional force
2408 Get disco information for JID and NODE. A request is sent
2409 asynchronously on the connection JC. When the response arrives,
2410 CALLBACK is called with three arguments: JC, CLOSURE-DATA, and the
2411 result. The result may be retrieved from the cache, unless FORCE
2412 is non-nil.
2413
2414 If the request was successful, or retrieved from cache, the result
2415 is a list of items, where each item is '["NAME" "JID" "NODE"]'.
2416 The values are either strings or nil.
2417
2418 If the request failed, the result is an '<error/>' node.
2419
2420 If you only want to see what is in the cache, use one of the
2421following functions. They don't use a callback, but return the result
2422directly.
2423
2424 -- Function: jabber-disco-get-info-immediately jid node
2425 Return cached disco information for JID and NODE, or nil if the
2426 cache doesn't contain this information. The result is the same as
2427 for 'jabber-disco-get-info'.
2428
2429 -- Function: jabber-disco-get-items-immediately jid node
2430 Return cached disco items for JID and NODE, or nil if the cache
2431 doesn't contain this information. The result is the same as for
2432 'jabber-disco-get-items'.
2433
2434 In the future, this facility will be expanded to provide information
2435acquired through XEP-0115, Entity capabilities, which is a protocol for
2436sending disco information in '<presence/>' stanzas.
2437
2438\1f
2439File: jabber.info, Node: Chat printers, Next: Stanza chains, Prev: Extending service discovery, Up: Hacking and extending
2440
244116.7 Chat printers
2442==================
2443
2444Chat printers are functions that print a certain aspect of an incoming
2445message in a chat buffer. Included are functions for printing subjects
2446('jabber-chat-print-subject'), bodies ('jabber-chat-print-body', and
2447'jabber:x:oob'-style URLs ('jabber-chat-print-url'). The functions in
2448'jabber-chat-printers' are called in order, with the entire '<message/>'
2449stanza as argument. As described in the docstring of
2450'jabber-chat-printers', these functions are run in one of two modes:
2451'printp', in which they are supposed to return true if they would print
2452anything, and 'insert', in which they are supposed to actually print
2453something, if appropriate, using the function 'insert'.
2454
2455 For MUC, the functions in 'jabber-muc-printers' are prepended to
2456those in 'jabber-chat-printers'.
2457
2458 Body printers are a subgroup of chat printers. They are exclusive;
2459only one of them applies to any given message. The idea is that
2460"higher-quality" parts of the message override pieces included for
2461backwards compatibility. Included are 'jabber-muc-print-invite' and
2462'jabber-chat-normal-body'; functions for XHTML-IM and PGP encrypted
2463messages may be written in the future. The functions in
2464'jabber-body-printers' are called in order until one of them returns
2465non-nil.
2466
2467\1f
2468File: jabber.info, Node: Stanza chains, Prev: Chat printers, Up: Hacking and extending
2469
247016.8 Stanza chains
2471==================
2472
2473If you really need to get under the skin of jabber.el, you can add
2474functions to the lists 'jabber-message-chain', 'jabber-iq-chain' and
2475'jabber-presence-chain'. The functions in these lists will be called in
2476order when an XML stanza of the corresponding type arrives, with the
2477connection object and the entire XML stanza passed as arguments.
2478Earlier functions can modify the stanza to change the behaviour of
2479downstream functions, but remember: with great power comes great
2480responsibility.
2481
2482\1f
2483File: jabber.info, Node: Protocol support, Next: Concept index, Prev: Hacking and extending, Up: Top
2484
2485Appendix A Protocol support
2486***************************
2487
2488These are the protocols currently supported (in full or partially) by
2489jabber.el.
2490
2491* Menu:
2492
2493* RFC 3920:: XMPP-CORE
2494* RFC 3921:: XMPP-IM
2495* XEP-0004:: Data Forms
2496* XEP-0012:: Last Activity
2497* XEP-0020:: Feature Negotiation
2498* XEP-0022:: Message Events
2499* XEP-0030:: Service Discovery
2500* XEP-0045:: Multi-User Chat
2501* XEP-0049:: Private XML Storage
2502* XEP-0050:: Ad-Hoc Commands
2503* XEP-0054:: vcard-temp
2504* XEP-0055:: Jabber Search
2505* XEP-0065:: SOCKS5 Bytestreams
2506* XEP-0066:: Out of Band Data
2507* XEP-0068:: Field Standardization for Data Forms
2508* XEP-0077:: In-Band Registration
2509* XEP-0078:: Non-SASL Authentication
2510* XEP-0082:: Jabber Date and Time Profiles
2511* XEP-0085:: Chat State Notifications
2512* XEP-0086:: Error Condition Mappings
2513* XEP-0090:: Entity Time
2514* XEP-0091:: Delayed Delivery
2515* XEP-0092:: Software Version
2516* XEP-0095:: Stream Initiation
2517* XEP-0096:: File Transfer
2518* XEP-0146:: Remote Controlling Clients
2519* XEP-0153:: vCard-Based Avatars
2520* XEP-0199:: XMPP Ping
2521* XEP-0245:: The /me Command
2522
2523\1f
2524File: jabber.info, Node: RFC 3920, Next: RFC 3921, Up: Protocol support
2525
2526A.1 RFC 3920 (XMPP-CORE)
2527========================
2528
2529Most of RFC 3920 is supported, with the following exceptions.
2530
2531 SASL is supported only when an external SASL library from FLIM or
2532Gnus is present. As SASL is an essential part to XMPP, jabber.el will
2533send pre-XMPP stream headers if it is not available.
2534
2535 None of the stringprep profiles are implemented. jabber.el changes
2536JIDs to lowercase internally; that's all.
2537
2538 jabber.el doesn't interpret namespace prefixes.
2539
2540 The 'xml:lang' attribute is neither interpreted nor generated.
2541
2542 SRV records are used if a modern version of 'dns.el' is installed.
2543
2544\1f
2545File: jabber.info, Node: RFC 3921, Next: XEP-0004, Prev: RFC 3920, Up: Protocol support
2546
2547A.2 RFC 3921 (XMPP-IM)
2548======================
2549
2550Most of RFC 3921 is supported, with the following exceptions.
2551
2552 Messages of type "headline" are not treated in any special way.
2553
2554 The '<thread/>' element is not used or generated.
2555
2556 Sending "directed presence" is supported; however, presence stanzas
2557received from contacts not in roster are ignored.
2558
2559 Privacy lists are not supported at all.
2560
2561 jabber.el doesn't support XMPP-E2E or "im:" CPIM URIs.
2562
2563\1f
2564File: jabber.info, Node: XEP-0004, Next: XEP-0012, Prev: RFC 3921, Up: Protocol support
2565
2566A.3 XEP-0004 (Data Forms)
2567=========================
2568
2569XEP-0004 support is good enough for many purposes. Limitations are the
2570following.
2571
2572 Forms in incoming messages are not interpreted. See each specific
2573protocol for whether forms are accepted in that context.
2574
2575 "Cancel" messages are probably not consistently generated when they
2576should be. This is partly a paradigm clash, as jabber.el doesn't use
2577modal dialog boxes but buffers which can easily be buried.
2578
2579 '<required/>' elements are not enforced.
2580
2581 The field types "jid-single", "jid-multi" and "list-multi" are not
2582implemented, due to programmer laziness. Let us know if you need them.
2583
2584\1f
2585File: jabber.info, Node: XEP-0012, Next: XEP-0020, Prev: XEP-0004, Up: Protocol support
2586
2587A.4 XEP-0012 (Last Activity)
2588============================
2589
2590jabber.el can generate all three query types described in the protocol.
2591However, it does not answer to such requests.
2592
2593\1f
2594File: jabber.info, Node: XEP-0020, Next: XEP-0022, Prev: XEP-0012, Up: Protocol support
2595
2596A.5 XEP-0020 (Feature Negotiation)
2597==================================
2598
2599There are no known limitations or bugs in XEP-0020 support.
2600
2601\1f
2602File: jabber.info, Node: XEP-0022, Next: XEP-0030, Prev: XEP-0020, Up: Protocol support
2603
2604A.6 XEP-0022 (Message Events)
2605=============================
2606
2607jabber.el understands all four specified kinds of message events
2608(offline, delivered, displayed, and composing) and by default requests
2609all of them. It also reports those three events that make sense for
2610clients.
2611
2612\1f
2613File: jabber.info, Node: XEP-0030, Next: XEP-0045, Prev: XEP-0022, Up: Protocol support
2614
2615A.7 XEP-0030 (Service Discovery)
2616================================
2617
2618Service discovery is supported, both as client and server. When used in
2619the code, service discovery results are cached indefinitely.
2620
2621\1f
2622File: jabber.info, Node: XEP-0045, Next: XEP-0049, Prev: XEP-0030, Up: Protocol support
2623
2624A.8 XEP-0045 (Multi-User Chat)
2625==============================
2626
2627jabber.el supports parts of XEP-0045. Entering, leaving and chatting
2628work. So do invitations and private messages. Room configuration is
2629supported. Changing roles of participants (basic moderation) is
2630implemented, as is changing affiliations, but requesting affiliation
2631lists is not yet supported.
2632
2633\1f
2634File: jabber.info, Node: XEP-0049, Next: XEP-0050, Prev: XEP-0045, Up: Protocol support
2635
2636A.9 XEP-0049 (Private XML Storage)
2637==================================
2638
2639jabber.el contains an implementation of XEP-0049; It is used for
2640bookmarks and roster's groups roll state saving.
2641
2642\1f
2643File: jabber.info, Node: XEP-0050, Next: XEP-0054, Prev: XEP-0049, Up: Protocol support
2644
2645A.10 XEP-0050 (Ad-Hoc Commands)
2646===============================
2647
2648jabber.el is probably the first implementation of XEP-0050 (see post on
2649jdev from 2004-03-10
2650(http://article.gmane.org/gmane.network.jabber.devel/21413)). Both the
2651client and server parts are supported.
2652
2653\1f
2654File: jabber.info, Node: XEP-0054, Next: XEP-0055, Prev: XEP-0050, Up: Protocol support
2655
2656A.11 XEP-0054 (vcard-temp)
2657==========================
2658
2659Both displaying other users' vCards and editing your own vCard are
2660supported. The implementation tries to follow the schema in the XEP
2661accurately.
2662
2663\1f
2664File: jabber.info, Node: XEP-0055, Next: XEP-0065, Prev: XEP-0054, Up: Protocol support
2665
2666A.12 XEP-0055 (Jabber Search)
2667=============================
2668
2669XEP-0055 is supported, both with traditional fields and with Data Forms
2670(*note XEP-0004::). As the traditional fields specified by the XEP is a
2671subset of those allowed in XEP-0077, handling of those two form types
2672are merged. *Note XEP-0077::.
2673
2674\1f
2675File: jabber.info, Node: XEP-0065, Next: XEP-0066, Prev: XEP-0055, Up: Protocol support
2676
2677A.13 XEP-0065 (SOCKS5 Bytestreams)
2678==================================
2679
2680XEP-0065 is supported. Currently jabber.el cannot act as a server, not
2681even on on Emacsen that support server sockets (GNU Emacs 22 and up).
2682Therefore it relies on proxies. Proxies have to be entered and queried
2683manually.
2684
2685 Psi's "fast mode" (<http://delta.affinix.com/specs/stream.html>),
2686which gives greater flexibility with regards to NAT, is not implemented.
2687
2688\1f
2689File: jabber.info, Node: XEP-0066, Next: XEP-0068, Prev: XEP-0065, Up: Protocol support
2690
2691A.14 XEP-0066 (Out of Band Data)
2692================================
2693
2694jabber.el will display URLs sent in message stanzas qualified by the
2695'jabber:x:oob' namespace, as described in this XEP. Sending such URLs or
2696doing anything with iq stanzas (using the 'jabber:iq:oob' namespace) is
2697not supported.
2698
2699\1f
2700File: jabber.info, Node: XEP-0068, Next: XEP-0077, Prev: XEP-0066, Up: Protocol support
2701
2702A.15 XEP-0068 (Field Standardization for Data Forms)
2703====================================================
2704
2705XEP-0068 is only used in the context of creating a new Jabber account,
2706to prefill the username field of the registration form.
2707
2708\1f
2709File: jabber.info, Node: XEP-0077, Next: XEP-0078, Prev: XEP-0068, Up: Protocol support
2710
2711A.16 XEP-0077 (In-Band Registration)
2712====================================
2713
2714In-band registration is supported for all purposes. That means
2715registering a new Jabber account, changing Jabber password, removing a
2716Jabber account, registering with a service, and cancelling registration
2717to a service. Data forms are supported as well. URL redirections are
2718not.
2719
2720 jabber.el will not prevent or alert a user trying to change a
2721password over an unencrypted connection.
2722
2723\1f
2724File: jabber.info, Node: XEP-0078, Next: XEP-0082, Prev: XEP-0077, Up: Protocol support
2725
2726A.17 XEP-0078 (Non-SASL Authentication)
2727=======================================
2728
2729Non-SASL authentication is supported, both plaintext and digest. Digest
2730is preferred, and a warning is displayed to the user if only plaintext
2731is available.
2732
2733\1f
2734File: jabber.info, Node: XEP-0082, Next: XEP-0085, Prev: XEP-0078, Up: Protocol support
2735
2736A.18 XEP-0082 (Jabber Date and Time Profiles)
2737=============================================
2738
2739The DateTime profile of XEP-0082 is supported. Currently this is only
2740used for file transfer.
2741
2742\1f
2743File: jabber.info, Node: XEP-0085, Next: XEP-0086, Prev: XEP-0082, Up: Protocol support
2744
2745A.19 XEP-0085 (Chat State Notifications)
2746========================================
2747
2748XEP-0085 is partially supported. Currently only active/composing
2749notifications are _sent_ though all five notifications are handled on
2750receipt.
2751
2752\1f
2753File: jabber.info, Node: XEP-0086, Next: XEP-0090, Prev: XEP-0085, Up: Protocol support
2754
2755A.20 XEP-0086 (Error Condition Mappings)
2756========================================
2757
2758Legacy errors are interpreted, but never generated. XMPP style error
2759messages take precedence when errors are reported to the user.
2760
2761\1f
2762File: jabber.info, Node: XEP-0090, Next: XEP-0091, Prev: XEP-0086, Up: Protocol support
2763
2764A.21 XEP-0090 (Entity Time)
2765===========================
2766
2767jabber.el can query other entities for their time, and return the
2768current time to those who ask.
2769
2770\1f
2771File: jabber.info, Node: XEP-0091, Next: XEP-0092, Prev: XEP-0090, Up: Protocol support
2772
2773A.22 XEP-0091 (Delayed Delivery)
2774================================
2775
2776The time specified on delayed incoming messages is interpreted, and
2777displayed in chat buffers instead of the current time.
2778
2779\1f
2780File: jabber.info, Node: XEP-0092, Next: XEP-0095, Prev: XEP-0091, Up: Protocol support
2781
2782A.23 XEP-0092 (Software Version)
2783================================
2784
2785The user can request the version of any entity. jabber.el answers
2786version requests to anyone, giving "jabber.el" as name, and the Emacs
2787version as OS.
2788
2789\1f
2790File: jabber.info, Node: XEP-0095, Next: XEP-0096, Prev: XEP-0092, Up: Protocol support
2791
2792A.24 XEP-0095 (Stream Initiation)
2793=================================
2794
2795XEP-0095 is supported, both incoming and outgoing, except that jabber.el
2796doesn't check service discovery results before sending a stream
2797initiation request.
2798
2799\1f
2800File: jabber.info, Node: XEP-0096, Next: XEP-0146, Prev: XEP-0095, Up: Protocol support
2801
2802A.25 XEP-0096 (File Transfer)
2803=============================
2804
2805Both sending and receiving files is supported. If a suitable program is
2806found, MD5 hashes of outgoing files are calculated and sent. However,
2807hashes of received files are not checked. Ranged transfers are not
2808supported. In-band bytestreams are not yet supported, even though
2809XEP-0096 requires them.
2810
2811\1f
2812File: jabber.info, Node: XEP-0146, Next: XEP-0153, Prev: XEP-0096, Up: Protocol support
2813
2814A.26 XEP-0146 (Remote Controlling Clients)
2815==========================================
2816
2817The "set-status" command in XEP-0146 is supported.
2818
2819\1f
2820File: jabber.info, Node: XEP-0153, Next: XEP-0199, Prev: XEP-0146, Up: Protocol support
2821
2822A.27 XEP-0153 (vCard-Based Avatars)
2823===================================
2824
2825vCard-based avatars are supported, both publishing and displaying. The
2826pixel size limits on avatars are not enforced.
2827
2828\1f
2829File: jabber.info, Node: XEP-0199, Next: XEP-0245, Prev: XEP-0153, Up: Protocol support
2830
2831A.28 XEP-0199 (XMPP Ping)
2832=========================
2833
2834XEP-0199 is fully supported.
2835
2836\1f
2837File: jabber.info, Node: XEP-0245, Prev: XEP-0199, Up: Protocol support
2838
2839A.29 XEP-0245 (/me Command)
2840===========================
2841
2842XEP-0245 is partially supported (except XHTML-IM).
2843
2844\1f
2845File: jabber.info, Node: Concept index, Next: Function index, Prev: Protocol support, Up: Top
2846
2847Concept index
2848*************
2849
2850\0\b[index\0\b]
2851* Menu:
2852
2853* account object: Connection object. (line 6)
2854* Account removal: Your home server. (line 6)
2855* Activity: Tracking activity. (line 6)
2856* Ad-Hoc Commands: Ad-Hoc Commands. (line 6)
2857* Affiliations, MUC: MUC Administration. (line 37)
2858* AIM transport: Transports. (line 6)
2859* Alert hooks: Customizing alerts. (line 6)
2860* Alerts: Standard alerts. (line 6)
2861* Autoanswerer: Standard alerts. (line 69)
2862* autoaway: Autoaway. (line 6)
2863* Autojoin chat rooms: Configuration. (line 6)
2864* Automatic reconnection: Reconnecting. (line 6)
2865* avatars: Avatars. (line 6)
2866* awesome window manager: Standard alerts. (line 49)
2867* Backlog: Message history. (line 6)
2868* Banning, MUC: MUC Administration. (line 37)
2869* Body printers: Chat printers. (line 6)
2870* Bookmarks, MUC: Configuration. (line 6)
2871* Browse buffers: Services. (line 6)
2872* browser integration: XMPP URIs. (line 6)
2873* Browsing: Browsing. (line 6)
2874* Changing nickname: Groupchat. (line 9)
2875* Changing password: Your home server. (line 6)
2876* Chat buffer: Customizing the chat buffer.
2877 (line 6)
2878* Chat printers: Chat printers. (line 6)
2879* Chatrooms: Groupchat. (line 6)
2880* Chatting: Chatting. (line 6)
2881* Composing: Typing notifications. (line 13)
2882* composing messages: Composing messages. (line 6)
2883* Connecting: Connecting. (line 6)
2884* connection object: Connection object. (line 6)
2885* Customization: Customization. (line 6)
2886* Default MUC nickname: Configuration. (line 6)
2887* Delivered: Typing notifications. (line 13)
2888* Detecting lost connections: Keepalive. (line 6)
2889* directed presence: Directed presence. (line 6)
2890* Displayed: Typing notifications. (line 13)
2891* Export roster: Roster import and export.
2892 (line 6)
2893* Faces, chat buffer: Customizing the chat buffer.
2894 (line 6)
2895* Festival speech synthesis: Standard alerts. (line 66)
2896* File transfer: File transfer. (line 6)
2897* file transfer proxy: Sending files. (line 6)
2898* Filling long lines in chat buffer: Customizing the chat buffer.
2899 (line 62)
2900* flyspell: Spell checking. (line 6)
2901* FSM: Connection object. (line 6)
2902* Gateways: Transports. (line 6)
2903* Gmail notifications: Gmail notifications. (line 6)
2904* Google Talk: Account settings. (line 41)
2905* Groupchat: Groupchat. (line 6)
2906* Groupchat completion: Groupchat. (line 33)
2907* Header line of chat buffers: Customizing the chat buffer.
2908 (line 56)
2909* Hiding offline contacts: Roster buffer. (line 32)
2910* History: Message history. (line 6)
2911* History file rotation: Message history. (line 26)
2912* ICQ transport: Transports. (line 6)
2913* idle: Autoaway. (line 6)
2914* idle time, query: Time queries. (line 13)
2915* Import roster: Roster import and export.
2916 (line 6)
2917* Invitations: Invitations. (line 6)
2918* JID: Account settings. (line 6)
2919* Joining a groupchat: Groupchat. (line 9)
2920* Keepalive: Keepalive. (line 6)
2921* Key bindings: Roster buffer. (line 6)
2922* Kicking, MUC: MUC Administration. (line 13)
2923* last online: Time queries. (line 10)
2924* libnotify: Standard alerts. (line 63)
2925* links: XMPP URIs. (line 6)
2926* Menus: Roster buffer. (line 6)
2927* Menus <1>: Menu. (line 6)
2928* message composition: Composing messages. (line 6)
2929* Modeline: Modeline status. (line 6)
2930* Moderator, MUC: MUC Administration. (line 13)
2931* Mozilla integration: XMPP URIs. (line 6)
2932* MSN transport: Transports. (line 6)
2933* MUC: Groupchat. (line 6)
2934* Network server: Account settings. (line 6)
2935* Nick coloring: Customizing the chat buffer.
2936 (line 13)
2937* Nick completion in groupchat: Groupchat. (line 33)
2938* Nickname, changing: Groupchat. (line 9)
2939* notification-daemon: Standard alerts. (line 63)
2940* notifications.el: Standard alerts. (line 59)
2941* Offline contacts, hiding: Roster buffer. (line 32)
2942* Online notifications: Watch buddies. (line 6)
2943* OSD: Standard alerts. (line 57)
2944* Password: Account settings. (line 6)
2945* Password change: Your home server. (line 6)
2946* Personal information: Personal information. (line 6)
2947* Presence: Presence. (line 6)
2948* Presence subscription: Presence subscription.
2949 (line 6)
2950* Priority: Resources and priority.
2951 (line 6)
2952* Private MUC messages: Private messages. (line 6)
2953* proxy, file transfer: Sending files. (line 6)
2954* Query groupchat: Groupchat. (line 16)
2955* Rare timestamps: Customizing the chat buffer.
2956 (line 50)
2957* Ratpoison window manager: Standard alerts. (line 39)
2958* Reconnect: Reconnecting. (line 6)
2959* Registering an account: Registering an account.
2960 (line 6)
2961* Registration: Registration. (line 6)
2962* Removing an account: Your home server. (line 6)
2963* Resource: Resources and priority.
2964 (line 6)
2965* Resource <1>: Account settings. (line 6)
2966* Roles, MUC: MUC Administration. (line 13)
2967* Roster buffer, basics: Roster buffer. (line 6)
2968* Roster buffer, customizing: Customizing the roster buffer.
2969 (line 6)
2970* Rotation of history files: Message history. (line 26)
2971* Saving groups roll state: Saving groups roll state.
2972 (line 6)
2973* Sawfish window manager: Standard alerts. (line 44)
2974* Screen terminal manager: Standard alerts. (line 33)
2975* Scroll: Standard alerts. (line 6)
2976* Scroll chat buffers: Standard alerts. (line 73)
2977* Search: Search. (line 6)
2978* send directed presence: Directed presence. (line 6)
2979* Sending files: File transfer. (line 6)
2980* Sending presence: Presence. (line 6)
2981* Service discovery: Service discovery. (line 6)
2982* Sorting the roster: Customizing the roster buffer.
2983 (line 6)
2984* Sound effects: Standard alerts. (line 25)
2985* Speech synthesis, Festival: Standard alerts. (line 66)
2986* Spell checking: Spell checking. (line 6)
2987* Subscribing to someone's presence: Presence subscription.
2988 (line 6)
2989* Supported protocols: Protocol support. (line 6)
2990* time query: Time queries. (line 6)
2991* Timestamp format: Customizing the chat buffer.
2992 (line 39)
2993* Timestamps: Customizing the chat buffer.
2994 (line 6)
2995* Tmux terminal manager: Standard alerts. (line 36)
2996* Topic, MUC: Groupchat. (line 49)
2997* Transports: Transports. (line 6)
2998* Truncate: Message history. (line 44)
2999* Truncation: Message history. (line 44)
3000* uptime, query: Time queries. (line 13)
3001* URIs: XMPP URIs. (line 6)
3002* URLs: XMPP URIs. (line 6)
3003* Username: Account settings. (line 6)
3004* vCard: Personal information. (line 6)
3005* Voice, MUC: MUC Administration. (line 13)
3006* Watch: Watch buddies. (line 6)
3007* web browser integration: XMPP URIs. (line 6)
3008* Whitespace pings: Keepalive. (line 22)
3009* Window manager, awesome: Standard alerts. (line 49)
3010* Window manager, Ratpoison: Standard alerts. (line 39)
3011* Window manager, Sawfish: Standard alerts. (line 44)
3012* Window manager, wmii: Standard alerts. (line 47)
3013* wmii window manager: Standard alerts. (line 47)
3014* XEP-0065 proxy: Sending files. (line 6)
3015* xmessage: Standard alerts. (line 53)
3016* XML console: Debug options. (line 9)
3017* XML representation: XML representation. (line 6)
3018* xmpp: links: XMPP URIs. (line 6)
3019* xprintidle: Autoaway. (line 6)
3020
3021\1f
3022File: jabber.info, Node: Function index, Next: Variable index, Prev: Concept index, Up: Top
3023
3024Function index
3025**************
3026
3027\0\b[index\0\b]
3028* Menu:
3029
3030* define-jabber-alert: Customizing alerts. (line 6)
3031* jabber-activity-mode: Tracking activity. (line 6)
3032* jabber-ahc-execute-command: Ad-Hoc Commands. (line 6)
3033* jabber-ahc-get-list: Ad-Hoc Commands. (line 6)
3034* jabber-chat-display-more-backlog: Message history. (line 21)
3035* jabber-chat-with: Chatting. (line 6)
3036* jabber-compose: Composing messages. (line 6)
3037* jabber-connect: Connecting. (line 6)
3038* jabber-connect-all: Connecting. (line 6)
3039* jabber-connection-bare-jid: Connection object. (line 26)
3040* jabber-connection-jid: Connection object. (line 21)
3041* jabber-current-idle-time: Autoaway. (line 6)
3042* jabber-customize: Customization. (line 6)
3043* jabber-disco-get-info: Requesting info. (line 12)
3044* jabber-disco-get-info-immediately: Requesting info. (line 45)
3045* jabber-disco-get-items: Requesting info. (line 27)
3046* jabber-disco-get-items-immediately: Requesting info. (line 50)
3047* jabber-disconnect: Connecting. (line 6)
3048* jabber-disconnect-one: Connecting. (line 6)
3049* jabber-display-roster: Roster buffer. (line 22)
3050* jabber-edit-bookmarks: Configuration. (line 6)
3051* jabber-export-roster: Roster import and export.
3052 (line 6)
3053* jabber-ft-send: Sending files. (line 17)
3054* jabber-get-browse: Browsing. (line 6)
3055* jabber-get-disco-info: Service discovery. (line 6)
3056* jabber-get-disco-items: Service discovery. (line 6)
3057* jabber-get-idle-time: Time queries. (line 13)
3058* jabber-get-last-online: Time queries. (line 10)
3059* jabber-get-register: Registration. (line 6)
3060* jabber-get-search: Search. (line 6)
3061* jabber-get-time: Time queries. (line 6)
3062* jabber-handle-uri: XMPP URIs. (line 6)
3063* jabber-import-roster: Roster import and export.
3064 (line 6)
3065* jabber-info-default-message: Info alerts. (line 6)
3066* jabber-keepalive-start: Keepalive. (line 45)
3067* jabber-keepalive-stop: Keepalive. (line 45)
3068* jabber-menu: Menu. (line 12)
3069* jabber-message-default-message: Message alerts. (line 6)
3070* jabber-mode-line-mode: Modeline status. (line 6)
3071* jabber-muc-autojoin: Configuration. (line 6)
3072* jabber-muc-default-message: MUC alerts. (line 6)
3073* jabber-muc-get-config: Groupchat. (line 54)
3074* jabber-muc-invite: Invitations. (line 6)
3075* jabber-muc-join: Groupchat. (line 9)
3076* jabber-muc-leave: Groupchat. (line 52)
3077* jabber-muc-names: Groupchat. (line 58)
3078* jabber-muc-private: Private messages. (line 6)
3079* jabber-muc-set-affiliation: MUC Administration. (line 37)
3080* jabber-muc-set-role: MUC Administration. (line 13)
3081* jabber-muc-set-topic: Groupchat. (line 49)
3082* jabber-my-jid-p: Providing info. (line 24)
3083* jabber-ping: Keepalive. (line 53)
3084* jabber-presence-default-message: Presence alerts. (line 6)
3085* jabber-process-data: Sending new requests. (line 20)
3086* jabber-process-iq: Listening for new requests.
3087 (line 6)
3088* jabber-process-iq <1>: Sending new requests. (line 6)
3089* jabber-report-success: Sending new requests. (line 20)
3090* jabber-send-default-presence: Presence. (line 6)
3091* jabber-send-directed-presence: Directed presence. (line 6)
3092* jabber-send-iq: Listening for new requests.
3093 (line 6)
3094* jabber-send-iq <1>: Sending new requests. (line 6)
3095* jabber-send-presence: Presence. (line 6)
3096* jabber-send-sexp: XML representation. (line 31)
3097* jabber-send-subscription-request: Presence subscription.
3098 (line 6)
3099* jabber-sexp2xml: XML representation. (line 25)
3100* jabber-signal-error: Listening for new requests.
3101 (line 6)
3102* jabber-socks5-query-all-proxies: Sending files. (line 13)
3103* jabber-termatime-get-idle-time: Autoaway. (line 6)
3104* jabber-truncate-chat: Message history. (line 6)
3105* jabber-truncate-muc: Message history. (line 6)
3106* jabber-truncate-top: Message history. (line 6)
3107* jabber-vcard-edit: Personal information. (line 6)
3108* jabber-vcard-get: Personal information. (line 6)
3109* jabber-watch-add: Watch buddies. (line 6)
3110* jabber-watch-remove: Watch buddies. (line 6)
3111* jabber-whitespace-ping-start: Keepalive. (line 29)
3112* jabber-whitespace-ping-stop: Keepalive. (line 29)
3113* jabber-xprintidle-program: Autoaway. (line 6)
3114
3115\1f
3116File: jabber.info, Node: Variable index, Prev: Function index, Up: Top
3117
3118Variable index
3119**************
3120
3121\0\b[index\0\b]
3122* Menu:
3123
3124* jabber-account-list: Account settings. (line 6)
3125* jabber-activity-count-in-title: Tracking activity. (line 6)
3126* jabber-activity-count-in-title-format: Tracking activity. (line 6)
3127* jabber-activity-make-strings: Tracking activity. (line 6)
3128* jabber-activity-query-unread: Tracking activity. (line 6)
3129* jabber-advertised-features: Providing info. (line 9)
3130* jabber-alert-info-message-function: Info alerts. (line 6)
3131* jabber-alert-message-function: Message alerts. (line 6)
3132* jabber-alert-muc-function: MUC alerts. (line 6)
3133* jabber-alert-presence-message-function: Presence alerts. (line 6)
3134* jabber-auto-reconnect: Reconnecting. (line 6)
3135* jabber-autoaway-method: Autoaway. (line 6)
3136* jabber-autoaway-methods: Autoaway. (line 6)
3137* jabber-autoaway-priority: Autoaway. (line 6)
3138* jabber-autoaway-status: Autoaway. (line 6)
3139* jabber-autoaway-timeout: Autoaway. (line 6)
3140* jabber-autoaway-xa-priority: Autoaway. (line 6)
3141* jabber-autoaway-xa-status: Autoaway. (line 6)
3142* jabber-autoaway-xa-timeout: Autoaway. (line 6)
3143* jabber-avatar-cache-directory: Avatars. (line 6)
3144* jabber-backlog-days: Message history. (line 6)
3145* jabber-backlog-number: Message history. (line 6)
3146* jabber-body-printers: Chat printers. (line 6)
3147* jabber-browse-mode-hook: Hooks. (line 32)
3148* jabber-chat-buffer-show-avatar: Avatars. (line 6)
3149* jabber-chat-delayed-time-format: Customizing the chat buffer.
3150 (line 43)
3151* jabber-chat-fill-long-lines: Customizing the chat buffer.
3152 (line 62)
3153* jabber-chat-foreign-prompt-format: Customizing the chat buffer.
3154 (line 21)
3155* jabber-chat-header-line-format: Customizing the chat buffer.
3156 (line 56)
3157* jabber-chat-local-prompt-format: Customizing the chat buffer.
3158 (line 21)
3159* jabber-chat-mode-hook: Hooks. (line 29)
3160* jabber-chat-printers: Chat printers. (line 6)
3161* jabber-chat-prompt-foreign: Customizing the chat buffer.
3162 (line 13)
3163* jabber-chat-prompt-local: Customizing the chat buffer.
3164 (line 13)
3165* jabber-chat-text-foreign: Customizing the chat buffer.
3166 (line 10)
3167* jabber-chat-text-local: Customizing the chat buffer.
3168 (line 10)
3169* jabber-chat-text-local <1>: Customizing the chat buffer.
3170 (line 50)
3171* jabber-chat-time-format: Customizing the chat buffer.
3172 (line 39)
3173* jabber-chatstates-confirm: Typing notifications. (line 38)
3174* jabber-console-name-format: Debug options. (line 14)
3175* jabber-console-truncate-lines: Debug options. (line 17)
3176* jabber-debug-keep-process-buffers: Debug options. (line 21)
3177* jabber-debug-log-xml: Debug options. (line 9)
3178* jabber-default-priority: Presence. (line 6)
3179* jabber-default-show: Presence. (line 6)
3180* jabber-default-status: Presence. (line 6)
3181* jabber-disco-info-nodes: Providing info. (line 12)
3182* jabber-disco-items-nodes: Providing info. (line 12)
3183* jabber-display-menu: Menu. (line 6)
3184* jabber-events-confirm-composing: Typing notifications. (line 13)
3185* jabber-events-confirm-delivered: Typing notifications. (line 13)
3186* jabber-events-confirm-displayed: Typing notifications. (line 13)
3187* jabber-events-request-these: Typing notifications. (line 13)
3188* jabber-global-history-filename: Message history. (line 6)
3189* jabber-history-dir: Message history. (line 6)
3190* jabber-history-enable-rotation: Message history. (line 6)
3191* jabber-history-enabled: Message history. (line 6)
3192* jabber-history-muc-enabled: Message history. (line 6)
3193* jabber-history-size-limit: Message history. (line 6)
3194* jabber-iq-chain: Stanza chains. (line 6)
3195* jabber-iq-get-xmlns-alist: Listening for new requests.
3196 (line 6)
3197* jabber-iq-set-xmlns-alist: Listening for new requests.
3198 (line 6)
3199* jabber-jid-obarray: JID symbols. (line 6)
3200* jabber-keepalive-interval: Keepalive. (line 49)
3201* jabber-keepalive-timeout: Keepalive. (line 49)
3202* jabber-log-lines-to-keep: Message history. (line 6)
3203* jabber-lost-connection-hooks: Hooks. (line 14)
3204* jabber-message-alert-same-buffer: Message alerts. (line 23)
3205* jabber-message-chain: Stanza chains. (line 6)
3206* jabber-mode-line-compact: Modeline status. (line 6)
3207* jabber-mode-line-mode: Modeline status. (line 6)
3208* jabber-muc-alert-self: MUC alerts. (line 6)
3209* jabber-muc-autojoin: Configuration. (line 6)
3210* jabber-muc-colorize-foreign: Customizing the chat buffer.
3211 (line 13)
3212* jabber-muc-colorize-local: Customizing the chat buffer.
3213 (line 13)
3214* jabber-muc-completion-delimiter: Groupchat. (line 33)
3215* jabber-muc-decorate-presence-patterns: Presence announcements.
3216 (line 6)
3217* jabber-muc-default-nicknames: Configuration. (line 6)
3218* jabber-muc-disable-disco-check: Groupchat. (line 16)
3219* jabber-muc-header-line-format: Customizing the chat buffer.
3220 (line 56)
3221* jabber-muc-looks-personaling-symbols: Groupchat. (line 33)
3222* jabber-muc-nick-saturation: Customizing the chat buffer.
3223 (line 13)
3224* jabber-muc-nick-value: Customizing the chat buffer.
3225 (line 13)
3226* jabber-muc-participant-colors: Customizing the chat buffer.
3227 (line 13)
3228* jabber-muc-print-names-format: Groupchat. (line 58)
3229* jabber-muc-printers: Chat printers. (line 6)
3230* jabber-post-connect-hooks: Hooks. (line 8)
3231* jabber-post-disconnect-hook: Hooks. (line 25)
3232* jabber-pre-disconnect-hook: Hooks. (line 20)
3233* jabber-presence-chain: Stanza chains. (line 6)
3234* jabber-print-rare-time: Customizing the chat buffer.
3235 (line 50)
3236* jabber-rare-time-format: Customizing the chat buffer.
3237 (line 50)
3238* jabber-resource-line-format: Customizing the roster buffer.
3239 (line 47)
3240* jabber-roster-buffer: Customizing the roster buffer.
3241 (line 52)
3242* jabber-roster-line-format: Customizing the roster buffer.
3243 (line 18)
3244* jabber-roster-mode-hook: Hooks. (line 35)
3245* jabber-roster-show-bindings: Roster buffer. (line 19)
3246* jabber-roster-show-bindings <1>: Customizing the roster buffer.
3247 (line 56)
3248* jabber-roster-sort-functions: Customizing the roster buffer.
3249 (line 6)
3250* jabber-show-offline-contacts: Roster buffer. (line 32)
3251* jabber-show-resources: Customizing the roster buffer.
3252 (line 14)
3253* jabber-socks5-proxies: Sending files. (line 13)
3254* jabber-sort-order: Customizing the roster buffer.
3255 (line 10)
3256* jabber-use-global-history: Message history. (line 6)
3257* jabber-vcard-avatars-publish: Avatars. (line 6)
3258* jabber-vcard-avatars-retrieve: Avatars. (line 6)
3259* jabber-whitespace-ping-interval: Keepalive. (line 33)
3260* jabber-xmessage-timeout: Standard alerts. (line 53)
3261
3262
3263\1f
3264Tag Table:
3265Node: Top\7f524
3266Node: Introduction\7f1363
3267Node: Contacts\7f2204
3268Node: Basic operation\7f2874
3269Node: Do you have a Jabber account?\7f3766
3270Node: Registering an account\7f4360
3271Node: Connecting\7f5057
3272Node: Chatting\7f6133
3273Node: Presence\7f7552
3274Node: Resources and priority\7f9707
3275Node: Directed presence\7f11418
3276Node: Presence subscription\7f11958
3277Ref: Presence subscription-Footnote-1\7f13522
3278Node: Roster buffer\7f13617
3279Ref: Roster buffer-Footnote-1\7f15352
3280Node: Groupchat\7f15433
3281Node: Configuration\7f18707
3282Node: Presence announcements\7f20114
3283Node: Invitations\7f21062
3284Node: Private messages\7f21740
3285Node: MUC Administration\7f22363
3286Node: Composing messages\7f23966
3287Node: File transfer\7f24591
3288Ref: File transfer-Footnote-1\7f25345
3289Node: Receiving files\7f25511
3290Node: Sending files\7f26853
3291Ref: Sending files-Footnote-1\7f28478
3292Node: Services\7f28638
3293Node: Commands\7f29543
3294Node: Registration\7f30118
3295Node: Search\7f30721
3296Node: Ad-Hoc Commands\7f31076
3297Ref: Ad-Hoc Commands-Footnote-1\7f32574
3298Ref: Ad-Hoc Commands-Footnote-2\7f32681
3299Node: Service discovery\7f32817
3300Node: Browsing\7f34019
3301Node: Your home server\7f34379
3302Node: Transports\7f34737
3303Ref: Transports-Footnote-1\7f37140
3304Node: User directories\7f37216
3305Node: MUC services\7f37619
3306Node: Personal information\7f38048
3307Ref: Personal information-Footnote-1\7f38969
3308Node: Avatars\7f38995
3309Ref: Avatars-Footnote-1\7f40593
3310Node: Time queries\7f40707
3311Node: Useful features\7f41574
3312Node: Autoaway\7f42004
3313Ref: Autoaway-Footnote-1\7f43925
3314Node: Modeline status\7f43992
3315Node: Keepalive\7f44704
3316Node: Reconnecting\7f46929
3317Node: Tracking activity\7f47638
3318Node: Watch buddies\7f49318
3319Node: Spell checking\7f50015
3320Node: Gmail notifications\7f50527
3321Node: Saving groups roll state\7f52344
3322Node: Message history\7f53061
3323Ref: Message history-Footnote-1\7f55679
3324Node: Typing notifications\7f55889
3325Node: Roster import and export\7f57732
3326Node: XMPP URIs\7f58682
3327Node: Customization\7f61041
3328Node: Account settings\7f61496
3329Ref: Account settings-Footnote-1\7f63512
3330Node: Menu\7f63569
3331Node: Customizing the roster buffer\7f64182
3332Node: Customizing the chat buffer\7f66363
3333Node: Customizing alerts\7f69173
3334Node: Standard alerts\7f71356
3335Ref: Standard alerts-Footnote-1\7f75240
3336Ref: Standard alerts-Footnote-2\7f75291
3337Ref: Standard alerts-Footnote-3\7f75335
3338Ref: Standard alerts-Footnote-4\7f75384
3339Ref: Standard alerts-Footnote-5\7f75524
3340Node: Presence alerts\7f75583
3341Node: Message alerts\7f76988
3342Ref: Message alerts-Footnote-1\7f78101
3343Node: MUC alerts\7f78204
3344Node: Info alerts\7f79084
3345Node: Hooks\7f79614
3346Node: Debug options\7f80942
3347Node: Hacking and extending\7f82033
3348Node: Connection object\7f82634
3349Ref: Connection object-Footnote-1\7f83932
3350Node: XML representation\7f84064
3351Node: JID symbols\7f85576
3352Node: Listening for new requests\7f86992
3353Node: Sending new requests\7f88244
3354Node: Extending service discovery\7f90524
3355Node: Providing info\7f90974
3356Node: Requesting info\7f92431
3357Node: Chat printers\7f94931
3358Node: Stanza chains\7f96354
3359Node: Protocol support\7f96978
3360Node: RFC 3920\7f98685
3361Node: RFC 3921\7f99375
3362Node: XEP-0004\7f99927
3363Node: XEP-0012\7f100676
3364Node: XEP-0020\7f100949
3365Node: XEP-0022\7f101176
3366Node: XEP-0030\7f101547
3367Node: XEP-0045\7f101844
3368Node: XEP-0049\7f102305
3369Node: XEP-0050\7f102586
3370Node: XEP-0054\7f102951
3371Node: XEP-0055\7f103250
3372Node: XEP-0065\7f103653
3373Node: XEP-0066\7f104187
3374Node: XEP-0068\7f104579
3375Node: XEP-0077\7f104909
3376Node: XEP-0078\7f105470
3377Node: XEP-0082\7f105805
3378Node: XEP-0085\7f106089
3379Node: XEP-0086\7f106413
3380Node: XEP-0090\7f106725
3381Node: XEP-0091\7f106975
3382Node: XEP-0092\7f107261
3383Node: XEP-0095\7f107576
3384Node: XEP-0096\7f107898
3385Node: XEP-0146\7f108358
3386Node: XEP-0153\7f108592
3387Node: XEP-0199\7f108880
3388Node: XEP-0245\7f109058
3389Node: Concept index\7f109245
3390Node: Function index\7f121502
3391Node: Variable index\7f127753
3392\1f
3393End Tag Table
3394
3395\1f
3396Local Variables:
3397coding: utf-8
3398End: