(riece-save-variables-files): Generate
[riece] / lisp / riece-options.el
1 ;;; riece-options.el --- customization
2 ;; Copyright (C) 1998-2003 Daiki Ueno
3
4 ;; Author: Daiki Ueno <ueno@unixuser.org>
5 ;; Created: 1998-09-28
6 ;; Keywords: IRC, riece
7
8 ;; This file is part of Riece.
9
10 ;; This program is free software; you can redistribute it and/or modify
11 ;; it under the terms of the GNU General Public License as published by
12 ;; the Free Software Foundation; either version 2, or (at your option)
13 ;; any later version.
14
15 ;; This program is distributed in the hope that it will be useful,
16 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
17 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18 ;; GNU General Public License for more details.
19
20 ;; You should have received a copy of the GNU General Public License
21 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
22 ;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
23 ;; Boston, MA 02110-1301, USA.
24
25 ;;; Code:
26
27 (require 'riece-version)
28 (require 'riece-globals)
29
30 ;; User modifiable variables.
31 (defgroup riece nil
32   "Riece specific customize group."
33   :prefix "riece-"
34   :group 'applications)
35
36 (defgroup riece-options nil
37   "Riece user customizable variables."
38   :prefix "riece-"
39   :group 'riece)
40
41 (defcustom riece-saved-forms
42   '(riece-server-alist
43     riece-channel-buffer-mode
44     riece-others-buffer-mode
45     riece-user-list-buffer-mode
46     riece-channel-list-buffer-mode
47     riece-layout
48     riece-addons)
49   "Variables saved after each session is completed."
50   :type 'string
51   :group 'riece-options)
52
53 (defcustom riece-debug nil
54   "If non-nil, random debug spews."
55   :type 'boolean
56   :group 'riece-options)
57
58 (defcustom riece-command-prefix "\C-c"
59   "Key sequence to be used as prefix for command mode key bindings."
60   :type 'string
61   :group 'riece-options)
62
63 (defgroup riece-looks nil
64   "Look and feel."
65   :prefix "riece-"
66   :group 'riece)
67
68 (defcustom riece-use-full-window t
69   "If non-nil, whole Emacs window is used to display dialogue."
70   :type 'boolean
71   :group 'riece-looks)
72
73 (defcustom riece-window-center-line -2
74   "Line number of center point in window when scrolling.
75 If nil, erases the entire frame and then redraws with point in the
76 center of the window.  Negative means relative to bottom of window.
77 See the document of the function `recenter'."
78   :type 'integer
79   :group 'riece-looks)
80
81 (defcustom riece-directory (expand-file-name "~/.riece")
82   "Where to look for startup files."
83   :type 'directory
84   :group 'riece-options)
85
86 (defcustom riece-addon-directory
87   (expand-file-name "addons" riece-directory)
88   "Where to look for add-on files."
89   :type 'directory
90   :group 'riece-options)
91
92 (defcustom riece-data-directory
93   (if (fboundp 'locate-data-directory)
94       (locate-data-directory "riece")
95     (file-name-directory load-file-name))
96   "Where to look for data files."
97   :type 'directory
98   :group 'riece-options)
99
100 (defcustom riece-variables-file
101   (expand-file-name "init" riece-directory)
102   "Where to look for variables."
103   :type 'file
104   :group 'riece-options)
105
106 (defcustom riece-saved-variables-file
107   (expand-file-name "save" riece-directory)
108   "Where to look for variables.
109 This file was saved the last session."
110   :type 'file
111   :group 'riece-options)
112
113 (defcustom riece-variables-files
114   (list riece-saved-variables-file riece-variables-file)
115   "Where to look for variables.  Helps to remove clutter from your .emacs.
116 This feature is most likely to dissappear in near future.  The preferred
117 way is to put Riece variables on .emacs or file loaded from there."
118   :type '(repeat (file :tag "Initialization File"))
119   :group 'riece-options)
120
121 (defcustom riece-addons '(riece-highlight
122                           riece-ctcp
123                           riece-guess
124                           riece-unread
125                           riece-history
126                           riece-url
127                           riece-button
128                           riece-menu
129                           riece-icon
130                           riece-ignore
131                           riece-log
132                           riece-toolbar
133                           riece-alias
134                           riece-ctlseq
135                           riece-keyword
136                           riece-shrink-buffer
137                           riece-mcat)
138   "Add-ons insinuated into Riece."
139   :type '(repeat symbol)
140   :group 'riece-options)
141
142 (defgroup riece-server nil
143   "Server settings."
144   :prefix "riece-"
145   :group 'riece)
146
147 (defgroup riece-channel nil
148   "Channel settings."
149   :prefix "riece-"
150   :group 'riece)
151
152 (defgroup riece-coding nil
153   "Coding system."
154   :tag "Coding"
155   :prefix "riece-"
156   :group 'riece)
157
158 (defcustom riece-default-coding-system
159   (if (featurep 'mule)
160       (cons 'ctext 'iso-2022-jp-2))
161   "Coding system for process I/O.
162 The value is a coding system, or a cons cell (DECODING . ENCODING)
163 specifying the coding systems for decoding and encoding respectively."
164   :type '(choice (symbol :tag "Coding system")
165                  (cons (symbol :tag "Input coding system")
166                        (symbol :tag "Output coding system"))
167                  (const nil :tag "No conversion"))
168   :group 'riece-coding)
169
170 (defcustom riece-server-alist nil
171   "An alist mapping server names to plist."
172   :type '(repeat
173           (group
174            (string :tag "Server")
175            (list :inline t :tag "Host"
176                  :format "%{%t%}: %v"
177                  (const :tag "" :value :host)
178                  string)
179            (repeat :inline t :tag "Options"
180                    (choice :inline t :value nil
181                            (list :inline t :tag "Port"
182                                  :format "%{%t%}: %v"
183                                  (const :tag "" :value :service)
184                                  (choice (const :tag "Default" 6667)
185                                          string))
186                            (list :inline t :tag "Nickname"
187                                  :format "%{%t%}: %v"
188                                  (const :tag "" :value :nickname)
189                                  (choice (const :tag "Default" riece-nickname)
190                                          string))
191                            (list :inline t :tag "Realname"
192                                  :format "%{%t%}: %v"
193                                  (const :tag "" :value :realname)
194                                  (choice (const :tag "Default" riece-realname)
195                                          string))
196                            (list :inline t :tag "Username"
197                                  :format "%{%t%}: %v"
198                                  (const :tag "" :value :host)
199                                  (choice (const :tag "Default" riece-username)
200                                          string))
201                            (list :inline t :tag "Password"
202                                  :format "%{%t%}: %v"
203                                  (const :tag "" :value :host)
204                                  string)
205                            (list :inline t :tag "Function"
206                                  :format "%{%t%}: %v"
207                                  (const :tag "" :value :host)
208                                  (choice
209                                   (const :tag "Default"
210                                          riece-default-open-connection-function)
211                                   function))
212                            (list :inline t :tag "Coding system"
213                                  :format "%{%t%}: %v"
214                                  (const :tag "" :value :host)
215                                  (choice
216                                   (const :tag "Default"
217                                          riece-default-coding-system)
218                                   (choice
219                                    (symbol :tag "Coding system")
220                                    (cons (symbol :tag "Input coding system")
221                                          (symbol :tag "Output coding system"))
222                                    (const nil :tag "No conversion"))))))))
223   :group 'riece-server)
224
225 (defcustom riece-server (getenv "IRCSERVER")
226   "IRC server host we are connecting to."
227   :type 'string
228   :group 'riece-server)
229
230 (defcustom riece-protocol 'irc
231   "Protocol support."
232   :type 'symbol
233   :group 'riece-server)
234
235 (defcustom riece-max-send-size 512
236   "Maximum size of messages to be sent at a time."
237   :type 'integer
238   :group 'riece-server)
239
240 (defcustom riece-send-delay 2
241   "Duration of multiple send."
242   :type 'integer
243   :group 'riece-server)
244   
245 (defcustom riece-default-password (getenv "IRCPASSWORD")
246   "Your password."
247   :type '(radio (string :tag "Password")
248                 (const :tag "No" nil))
249   :group 'riece-server)
250
251 (defcustom riece-username nil
252   "Your login name."
253   :type 'string
254   :group 'riece-server)
255
256 (defcustom riece-realname nil
257   "Your user name."
258   :type 'string
259   :group 'riece-server)
260
261 (defcustom riece-nickname (or (getenv "IRCNICK")
262                               (user-real-login-name))
263   "Your nickname."
264   :type 'string
265   :group 'riece-server)
266
267 (defcustom riece-startup-channel-list nil
268   "A list of channels to join automatically at startup."
269   :type '(repeat (choice (string :tag "Channel")
270                          (list (string :tag "Channel") (string :tag "Key"))))
271   :group 'riece-channel)
272
273 (defcustom riece-startup-server-list nil
274   "A list of servers to connect automatically at startup."
275   :type '(repeat (string :tag "Server"))
276   :group 'riece-server)
277
278 (defcustom riece-retry-with-new-nickname nil
279   "When nickname has already been in use, grow-tail automatically."
280   :type 'boolean
281   :group 'riece-server)
282
283 (defcustom riece-quit-timeout 1
284   "Quit timeout when there is no response from server."
285   :type '(radio (integer :tag "Seconds")
286                 (const nil))
287   :group 'riece-server)
288
289 (defcustom riece-default-open-connection-function #'open-network-stream
290   "Default function used for connecting to an IRC server."
291   :type 'function
292   :group 'riece-server)
293
294 (defcustom riece-user-cache-max-size 512
295   "Maximum size of cache of user names."
296   :type 'integer
297   :group 'riece-server)
298
299 (defcustom riece-channel-cache-max-size 512
300   "Maximum size of cache of channel names."
301   :type 'integer
302   :group 'riece-server)
303
304 (defcustom riece-channel-buffer-mode t
305   "When non-nil, Riece will display a channel buffer."
306   :type 'boolean
307   :group 'riece-looks)
308
309 (defcustom riece-others-buffer-mode t
310   "When non-nil, Riece will display an \"*Others*\" buffer."
311   :type 'boolean
312   :group 'riece-looks)
313
314 (defcustom riece-user-list-buffer-mode t
315   "When non-nil, Riece will display a nick list buffer."
316   :type 'boolean
317   :group 'riece-looks)
318
319 (defcustom riece-channel-list-buffer-mode t
320   "When non-nil, Riece will display a channel list buffer."
321   :type 'boolean
322   :group 'riece-looks)
323
324 (defcustom riece-default-freeze nil
325   "Channel buffer local freeze flag is on at starting."
326   :type 'boolean
327   :group 'riece-looks)
328
329 (defcustom riece-default-channel-binding nil
330   "The channel list to bind the channel number when joining."
331   :type '(repeat (radio (string :tag "Bound Channel")
332                         (const nil)))
333   :group 'riece-channel)
334
335 (defcustom riece-blink-parens nil
336   "Should we blink matching parenthesis in the command buffer?"
337   :type 'boolean
338   :group 'riece-options)
339
340 (defcustom riece-quit-message (riece-extended-version)
341   "Default quit message."
342   :type '(string :tag "Quit message")
343   :group 'riece-options)
344
345 (defcustom riece-part-message nil
346   "Default part message."
347   :type '(choice (const :tag "No message" nil)
348                  (string :tag "Part message"))
349   :group 'riece-options)
350
351 (defcustom riece-away-message "Gone"
352   "Default away message."
353   :type '(string :tag "Away message")
354   :group 'riece-options)
355
356 (defcustom riece-gather-channel-modes nil
357   "If non-nil, gather channel modes when we join a channel."
358   :type 'boolean
359   :group 'riece-options)
360
361 (defcustom riece-buffer-dispose-function #'kill-buffer
362   "Function called after the buffer was disposed."
363   :type 'function
364   :group 'riece-options)
365
366 (defcustom riece-format-time-function #'current-time-string
367   "Function to convert the specified time to the human readable form."
368   :type 'function
369   :group 'riece-options)
370
371 (provide 'riece-options)
372
373 ;;; riece-options.el ends here