"Mapping from keywords to default values.
All keywords that can be used must be listed here."))
-(defadvice save-buffers-kill-emacs
- (before liece-save-buffers-kill-emacs activate)
- "Prompt user to quit IRC explicitly."
- (run-hooks 'liece-before-kill-emacs-hook) )
-
-(add-hook 'liece-before-kill-emacs-hook 'liece-command-quit)
+(add-hook 'kill-emacs-hook 'liece-command-quit)
(defvar liece-tmp-server-name nil "Temporaly server name.")
(defvar liece-buffer-last-check-time nil)
"/" liece-command-generic
">" end-of-buffer
"<" beginning-of-buffer
- "!" liece-command-exec
"|" liece-command-show-last-kill
"a" liece-command-away
"b" liece-command-submit-bug-report
"t" liece-command-topic
"T" liece-command-timestamp
"\C-t" liece-command-find-timestamp
- "u" liece-command-lusers
- "U" liece-command-userhost
"v" liece-command-browse-url
"w" liece-command-who)
"\r" liece-command-enter-message
[tab] liece-command-complete
[(meta control c) >] liece-command-push
- [(meta control c) <] liece-command-pop
- [(meta control c) o] liece-command-mode+o
- [(meta control c) O] liece-command-mode-o
- [(meta control c) v] liece-command-mode+v
- [(meta control c) V] liece-command-mode-v)
+ [(meta control c) <] liece-command-pop)
(liece-define-keys (liece-command-map "\C-c" liece-command-mode-map)
"\177" liece-command-scroll-down
">" liece-command-next-channel
"<" liece-command-previous-channel
"a" liece-command-away
- "c" liece-command-inline
- "\C-a" liece-command-previous-channel
"\C-f" liece-command-freeze
"\C-j" liece-command-next-channel
"\C-n" liece-command-names
"L" liece-command-load-vars
"M" liece-command-own-freeze
"\C-m" liece-command-modec
- "o" liece-command-mode+o
+ "o" liece-command-set-operators
"O" liece-command-toggle-nick-buffer-mode
"\C-o" liece-command-toggle-channel-buffer-mode
"\C-p" liece-command-part
"\C-r" mule-caesar-region
"s" liece-command-set-window-style
"S" liece-command-save-vars
- "v" liece-command-mode+v
+ "v" liece-command-set-voices
"\C-v" liece-command-browse-url
"\C-y" liece-command-yank-send)
(set-keymap-parent liece-command-map liece-dialogue-mode-map)
(liece-define-keys liece-nick-mode-map
- "o" liece-command-mode+o
- "O" liece-command-mode-o
- "v" liece-command-mode+v
- "V" liece-command-mode-v
+ "o" liece-command-set-operators
+ "v" liece-command-set-voices
"f" liece-command-finger
" " liece-command-nick-scroll-up
"\177" liece-command-nick-scroll-down
(unless (listp liece-server)
(let ((entry (assoc liece-server liece-server-alist)))
(if entry
- (setq liece-server (cdr entry)))
- (setq liece-server
- (let ((plist (liece-server-parse-string liece-server)))
- (unless entry
- (set-alist 'liece-server-alist liece-server plist)
- (setq liece-save-variables-are-dirty t))
- plist))))
+ (if (listp (cdr entry))
+ (setq liece-server (cdr entry))
+ (setq liece-server (liece-server-parse-string (cdr entry))))
+ (let ((plist (liece-server-parse-string liece-server)))
+ (set-alist 'liece-server-alist liece-server plist)
+ (setq liece-save-variables-are-dirty t)
+ (setq liece-server plist)))))
(when (or (and confirm liece-ask-for-nickname)
(null liece-nickname))
(setq liece-nickname (read-string (_ "Enter your nickname: ") liece-nickname)))
liece-server nil))
;;;###liece-autoload
-(defun liece-close-server (&optional quit-string)
+(defun liece-close-server ()
"Close chat server."
(unwind-protect
(progn
(eq 'liece-sentinel
(process-sentinel liece-server-process)))
(set-process-sentinel liece-server-process nil))
- ;; We cannot send QUIT command unless the process is running.
- (when (liece-server-opened)
- (if quit-string
- (liece-send "QUIT :%s" quit-string)
- (liece-send "QUIT"))))
- (liece-close-server-internal)))
+ (if (liece-server-opened)
+ (liece-command-quit)))
+ (liece-close-server-internal)
+ ;; Save settings to the `~/.liece/init.el' file.
+ (if liece-save-variables-are-dirty
+ (liece-command-save-vars))
+ ;; Reset everything.
+ (liece-clear-system)
+ (liece-window-configuration-pop)
+ ;; Allow the user to do things after cleaning up.
+ (run-hooks 'liece-exit-hook)))
(defmacro liece-server-keyword-bind (plist &rest body)
"Return a `let' form that binds all variables in PLIST.
(if (and (memq type '(rlogin telnet)) relay)
(setq liece-tcp-relay-host relay))
(setq liece-tmp-server-name host)
- (liece-open-server-internal host service type)
+ (setq liece-server-process (liece-open-server-internal host service type))
(setq liece-after-registration nil)
(liece-maybe-poll)
(if (null (liece-wait-for-response "^:[^ ]+ [4P][5O][1N][ G]"))
(defun liece-open-server-internal (host &optional service type)
"Open connection to chat server on HOST by SERVICE (default is irc).
Optional argument TYPE specifies connection types such as `program'."
- ;; canonicalize host representation
- (unless (string-match "^[^\\[]" host)
- (setq host (substring host 1 (1- (length host)))))
- (condition-case error
- (save-excursion
- (let ((liece-tcp-connection-type type))
- (as-binary-process
- (setq liece-server-process
- (liece-open-network-stream
- "IRC" " *IRC*" host (or service "irc"))))
- (setq liece-server-buffer (process-buffer liece-server-process))
- (set-buffer liece-server-buffer)
- (set-buffer-multibyte nil)
- (kill-all-local-variables)
- (buffer-disable-undo)
- (erase-buffer)
- (setq liece-server-name host)
- (run-hooks 'liece-server-hook)
- ;; return the server process
- liece-server-process))
- (error
- (setq liece-status-message-string (cadr error)
- liece-server-process nil))))
+ (let ((liece-tcp-connection-type type)
+ process)
+ (as-binary-process
+ (setq process
+ (liece-open-network-stream
+ "IRC" " *IRC*" host (or service "irc"))))
+ (setq liece-server-buffer (process-buffer process))
+ (save-excursion
+ (set-buffer liece-server-buffer)
+ (set-buffer-multibyte nil)
+ (kill-all-local-variables)
+ (buffer-disable-undo)
+ (erase-buffer))
+ process))
(defun liece-initialize-timers ()
"Initialise internal timers."