]> crepu.dev Git - config.git/blame_incremental - djavu-asus/emacs/elpa/jabber-20230715.456/jabber.el
Reorganización de directorios
[config.git] / djavu-asus / emacs / elpa / jabber-20230715.456 / jabber.el
... / ...
CommitLineData
1;;; jabber.el --- a minimal jabber client -*- lexical-binding: t; -*-
2
3;; Author: Magnus Henoch <mange@freemail.hu>
4;; Maintainer: wgreenhouse <wgreenhouse@tilde.club>
5;; Keywords: comm
6;; Homepage: https://codeberg.org/emacs-jabber/emacs-jabber
7;; Package-Requires: ((emacs "27.1") (fsm "0.1.0") (srv "0.1.0"))
8;; Version: 0.8.92
9
10;; Copyright (C) 2003, 2004, 2007, 2008 - Magnus Henoch - mange@freemail.hu
11;; Copyright (C) 2002, 2003, 2004 - Tom Berger - object@intelectronica.net
12
13;; SSL - Support, mostly inspired by Gnus
14;; Copyright (C) 2005 - Georg Lehner - jorge@magma.com.ni
15
16;; This program is free software; you can redistribute it and/or modify
17;; it under the terms of the GNU General Public License as published by
18;; the Free Software Foundation; either version 2 of the License, or
19;; (at your option) any later version.
20
21;; This program is distributed in the hope that it will be useful,
22;; but WITHOUT ANY WARRANTY; without even the implied warranty of
23;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
24;; GNU General Public License for more details.
25
26;; You should have received a copy of the GNU General Public License
27;; along with this program; if not, write to the Free Software
28;; Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
29
30;;; Commentary:
31;; jabber.el is an XMPP client for Emacs. XMPP (also known as
32;; 'Jabber') is the IETF-standard federated instant messaging protocol
33;; - see http://xmpp.org for more information.
34
35;;; History:
36;;
37
38;;; Code:
39
40(require 'cl-lib)
41(require 'goto-addr)
42
43;; These are variables shared with more than one section. For
44;; instance, `jabber-process-buffer' is used in jabber-core.el but also in
45;; jabber-conn.el.
46
47;; Placing these variable definitions before using them avoid
48;; byte-compile warnings. Moreover, it is common practice to define
49;; variables before its usage.
50
51(defvar jabber-enable-legacy-features-p nil)
52
53;; This was originally defined in jabber-core.el
54(defvar jabber-process-buffer " *-jabber-process-*"
55 "The name of the process buffer.")
56
57(defcustom jabber-debug-keep-process-buffers nil
58 "If nil, kill process buffers when the process dies.
59Contents of process buffers might be useful for debugging."
60 :type 'boolean
61 :group 'jabber-debug)
62
63(defcustom jabber-silent-mode nil
64 "If non-nil, do not ask for confirmation for some operations. DANGEROUS!"
65 :type 'boolean
66 :group 'jabber)
67
68;;; these customize fields should come first
69(defgroup jabber nil "Jabber instant messaging"
70 :group 'applications)
71
72;;;###autoload
73(defcustom jabber-account-list nil
74 "List of Jabber accounts.
75Each element of the list is a cons cell describing a Jabber account,
76where the car is a JID and the CDR is an alist.
77
78JID is a full Jabber ID string (e.g. foo@bar.tld). You can also
79specify the resource (e.g. foo@bar.tld/emacs).
80The following keys can be present in the alist:
81
82 :password is a string to authenticate ourself against the server.
83 It can be empty. If you don't want to store your password in your
84 Emacs configuration, try auth-source (info node `(auth)Top').
85
86 :network-server is a string identifying the address to connect to,
87 if it's different from the server part of the JID.
88
89 :port is the port to use (default depends on connection type).
90
91 :connection-type is a symbol. Valid symbols are `starttls',
92 `network' and `ssl'.
93
94Only JID is mandatory. The rest can be guessed at run-time.
95
96Examples:
97
98Two accounts without any special configuration:
99\((\"foo@example.com\") (\"bar@example.net\"))
100
101One disabled account with a non-standard port:
102\((\"romeo@montague.net\" (:port . 5242) (:disabled . t)))
103
104If you don't have SRV and STARTTLS capabilities in your Emacs,
105configure a Google Talk account like this:
106\((\"username@gmail.com\"
107 (:network-server . \"talk.google.com\")
108 (:connection-type . ssl)))"
109 :type '(repeat
110 (cons :tag "Account information"
111 (string :tag "JID")
112 (set :format "%v"
113 (cons :format "%v"
114 (const :format "" :disabled)
115 (const :tag "Disabled" t))
116 (cons :format "%v"
117 (const :format "" :password)
118 (string :tag "Password"))
119 (cons :format "%v"
120 (const :format "" :network-server)
121 (string :tag "Network server"))
122 (cons :format "%v"
123 (const :format "" :port)
124 (integer :tag "Port" 5222))
125 (cons :format "%v"
126 (const :format "" :connection-type)
127 (choice :tag "Connection type"
128 ;; XXX: detect whether we have STARTTLS? option
129 ;; for enforcing encryption?
130 (const :tag "STARTTLS" starttls)
131 (const :tag "Unencrypted" network)
132 (const :tag "Legacy SSL/TLS" ssl))))))
133 :group 'jabber)
134
135(defcustom jabber-default-show ""
136 "Default show state."
137 :type '(choice (const :tag "Online" "")
138 (const :tag "Chatty" "chat")
139 (const :tag "Away" "away")
140 (const :tag "Extended away" "xa")
141 (const :tag "Do not disturb" "dnd"))
142 :group 'jabber)
143
144(defcustom jabber-default-status ""
145 "Default status string."
146 :type 'string
147 :group 'jabber)
148
149(defcustom jabber-default-priority 10
150 "Default priority."
151 :type 'integer
152 :group 'jabber)
153
154;;; guess internal dependencies!
155(require 'jabber-util)
156(require 'jabber-menu)
157(require 'jabber-xml)
158(require 'jabber-conn)
159(require 'jabber-core)
160(require 'jabber-logon)
161(require 'jabber-roster)
162(require 'jabber-presence)
163(require 'jabber-alert)
164(require 'jabber-chat)
165(require 'jabber-disco)
166(require 'jabber-iq)
167(require 'jabber-widget)
168(require 'jabber-register)
169(require 'jabber-search)
170(require 'jabber-browse)
171(require 'jabber-muc)
172(require 'jabber-muc-nick-completion)
173(require 'jabber-version)
174(require 'jabber-ahc-presence)
175(require 'jabber-modeline)
176(require 'jabber-watch)
177(require 'jabber-activity)
178(require 'jabber-vcard)
179(require 'jabber-events)
180(require 'jabber-chatstates)
181(require 'jabber-vcard-avatars)
182(require 'jabber-autoaway)
183(require 'jabber-time)
184(require 'jabber-truncate)
185
186;;;###autoload
187(defvar *jabber-current-status* nil
188 "The user's current presence status.")
189
190;;;###autoload
191(defvar *jabber-current-show* nil
192 "The user's current presence show.")
193
194;;;###autoload
195(defvar *jabber-current-priority* nil
196 "The user's current priority.")
197
198(defvar *jabber-status-history* nil
199 "History of status messages.")
200
201(defgroup jabber-faces nil "Faces for displaying Jabber instant messaging."
202 :group 'jabber)
203
204(defface jabber-title-small
205 '((t (:weight bold :width semi-expanded :height 1.0 :inherit variable-pitch)))
206 "Face for small titles."
207 :group 'jabber-faces)
208
209(defface jabber-title-medium
210 '((t (:weight bold :width expanded :height 2.0 :inherit variable-pitch)))
211 "Face for medium titles."
212 :group 'jabber-faces)
213
214(defface jabber-title-large
215 '((t (:weight bold :width ultra-expanded :height 3.0 :inherit variable-pitch)))
216 "Face for large titles."
217 :group 'jabber-faces)
218
219(defgroup jabber-debug nil "debugging options"
220 :group 'jabber)
221
222;;;###autoload
223(defconst jabber-presence-faces
224 '(("" . jabber-roster-user-online)
225 ("away" . jabber-roster-user-away)
226 ("xa" . jabber-roster-user-xa)
227 ("dnd" . jabber-roster-user-dnd)
228 ("chat" . jabber-roster-user-chatty)
229 ("error" . jabber-roster-user-error)
230 (nil . jabber-roster-user-offline))
231 "Mapping from presence types to faces.")
232
233(defconst jabber-presence-strings
234 `(("" . ,(jabber-propertize "Online" 'face 'jabber-roster-user-online))
235 ("away" . ,(jabber-propertize "Away" 'face 'jabber-roster-user-away))
236 ("xa" . ,(jabber-propertize "Extended Away" 'face 'jabber-roster-user-xa))
237 ("dnd" . ,(jabber-propertize "Do not Disturb" 'face 'jabber-roster-user-dnd))
238 ("chat" . ,(jabber-propertize "Chatty" 'face 'jabber-roster-user-chatty))
239 ("error" . ,(jabber-propertize "Error" 'face 'jabber-roster-user-error))
240 (nil . ,(jabber-propertize "Offline" 'face 'jabber-roster-user-offline)))
241 "Mapping from presence types to readable, colorized strings.")
242
243;;;###autoload
244(defun jabber-customize ()
245 "Customize Jabber options."
246 (interactive)
247 (customize-group 'jabber))
248
249;;;###autoload
250(defun jabber-info ()
251 "Open jabber.el manual."
252 (interactive)
253 (info "jabber"))
254
255(provide 'jabber)
256
257;;; arch-tag: 5145153e-4d19-4dc2-800c-b1282feb155d
258;;; jabber.el ends here