;;; Code:
(require 'liece-inlines)
-(require 'liece-crypt)
(require 'liece-handle)
(require 'liece-filter)
(require 'liece-hilit)
(:password liece-password)
(:prescript)
(:prescript-delay)
- (:type)
+ (:type liece-tcp-connection-type)
(:relay))
"Mapping from keywords to default values.
All keywords that can be used must be listed here."))
(defvar liece-nick-mode-map (make-sparse-keymap))
(defvar liece-client-query-map (make-sparse-keymap))
(defvar liece-dcc-map (make-sparse-keymap))
-(defvar liece-crypt-map (make-sparse-keymap))
(defvar liece-friends-map (make-sparse-keymap))
(defvar liece-dialogue-mode-map
(liece-private-buffer liece-dialogue-mode)
(liece-KILLS-buffer)
(liece-IGNORED-buffer)
- (liece-WALLOPS-buffer)
- (liece-CRYPT-buffer liece-dialogue-mode)))
+ (liece-WALLOPS-buffer)))
(eval-and-compile
(dotimes (n 20)
"|" liece-command-show-last-kill
"a" liece-command-away
"b" liece-command-submit-bug-report
+ "B" liece-dialogue-beep
"c" liece-command-point-back-to-command-buffer
"f" liece-command-finger
"F" liece-dialogue-freeze
"w" liece-command-who)
(liece-define-keys (liece-client-query-map "\C-c" liece-dialogue-mode-map)
- "a" liece-command-client-action
- "v" liece-command-client-version
- "u" liece-command-client-userinfo
- "h" liece-command-client-help
- "c" liece-command-client-clientinfo
- "g" liece-command-client-generic
- "p" liece-command-client-ping
- "t" liece-command-client-time
- "x" liece-command-client-x-face
- "X" liece-command-client-x-face-from-xbm-file
- "\C-x" liece-command-client-x-face-from-commandbuffer
- "U" liece-command-client-userinfo-from-minibuffer
- "\C-u" liece-command-client-userinfo-from-commandbuffer)
-
- (liece-define-keys (liece-crypt-map "%" liece-dialogue-mode-map)
- "t" liece-command-toggle-crypt
- "k" liece-command-set-encryption-key
- "a" liece-command-add-decryption-key
- "d" liece-command-delete-decryption-key)
+ "a" liece-command-ctcp-action
+ "v" liece-command-ctcp-version
+ "u" liece-command-ctcp-userinfo
+ "h" liece-command-ctcp-help
+ "c" liece-command-ctcp-clientinfo
+ "g" liece-command-ctcp-generic
+ "p" liece-command-ctcp-ping
+ "t" liece-command-ctcp-time
+ "x" liece-command-ctcp-x-face
+ "X" liece-command-ctcp-x-face-from-xbm-file
+ "U" liece-command-ctcp-userinfo-from-minibuffer)
(liece-define-keys (liece-dcc-map "\C-d" liece-dialogue-mode-map)
"s" liece-command-dcc-send
(liece-define-keys liece-command-mode-map
"\r" liece-command-enter-message
- [(meta return)] liece-command-enter-message-opposite-crypt-mode
[tab] liece-command-complete
[(meta control c) >] liece-command-push
[(meta control c) <] liece-command-pop
"\C-f" liece-command-freeze
"\C-j" liece-command-next-channel
"\C-n" liece-command-names
+ "\C-u" liece-command-unread-channel
"l" liece-command-list
"L" liece-command-load-vars
"M" liece-command-own-freeze
(liece-define-keys liece-channel-list-mode-map
">" liece-command-next-channel
"<" liece-command-previous-channel
+ "u" liece-command-unread-channel
"o" other-window
"c" liece-command-point-back-to-command-buffer)
(defun liece-server-parse-string (string)
"Convert a STRING set as `liece-server' and return a property list."
- (when (or (string-match "^\\([^:]+\\):?\\([0-9]*\\)" string)
- (string-match "^[\\([^\\[]+\\)]:?\\([0-9]*\\)" string))
+ (when (or (string-match "^\\[\\([^]]+\\)\\]:?\\([0-9]*\\)" string)
+ (string-match "^\\([^:]+\\):?\\([0-9]*\\)" string))
(let ((host (match-string 1 string))
(service (match-string 2 string))
(password (substring string (match-end 0)))
(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'."
- (condition-case err
+ ;; canonicalize host representation
+ (unless (string-match "^[^\\[]" host)
+ (setq host (substring host 1 (1- (length host)))))
+ (condition-case error
(save-excursion
- ;; Initialize communication buffer.
- (setq liece-server-buffer (liece-get-buffer-create " *IRC*"))
- (set-buffer liece-server-buffer)
- (set-buffer-multibyte nil)
- (kill-all-local-variables)
- (buffer-disable-undo)
- (erase-buffer)
- (cond
- ((string-match "^[^\\[]" host)
- (setq liece-server-process
- (liece-open-network-stream-as-binary
- "IRC" (current-buffer) host (or service "irc") type)))
- ((not
- (or
- (string-match
- "^\\[\\([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+\\)\\]$" host)
- (string-match
- "^\\[\\([0-9A-Za-z]*:[0-9A-Za-z:]*\\)\\]$" host)
- (string-match
- "^\\[\\([0-9]+\\)\\]$" host)))
- (setq liece-status-message-string
- (_ "Use [nnn.nnn.nnn.nnn]")
- liece-server-process nil)))
- (setq liece-server-name host)
- (run-hooks 'liece-server-hook)
- ;; Return the server process.
- liece-server-process)
+ (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 err)) nil)))
+ (setq liece-status-message-string (cadr err)
+ liece-server-process nil)))))
(defun liece-initialize-timers ()
"Initialise internal timers."
(erase-buffer))
(sit-for 0))
- (liece-set-crypt-indicator)
- (liece-crypt-initialize)
-
(liece-initialize-buffers)
(liece-configure-windows)
(setq liece-current-channels nil)
(interactive)
(kill-all-local-variables)
- (liece-set-crypt-indicator)
(setq liece-nick-alist (list (list liece-nickname))
major-mode 'liece-command-mode
mode-name "Commands"
liece-privmsg-partner nil
liece-private-indicator nil
liece-away-indicator "-"
+ liece-beep-indicator "-"
liece-freeze-indicator "-"
liece-own-freeze-indicator "-"
mode-line-buffer-identification
mode-line-modified
liece-private-indicator
liece-away-indicator
- liece-crypt-indicator
- "- " liece-current-channel " " liece-real-nickname)))
+ "-- " liece-current-channel " " liece-real-nickname)))
(liece-suppress-mode-line-format)
(use-local-map liece-command-mode-map)
\\{liece-dialogue-mode-map}"
(kill-all-local-variables)
+ (make-local-variable 'liece-beep)
+ (make-local-variable 'liece-beep-indicator)
(make-local-variable 'liece-freeze)
(make-local-variable 'liece-freeze-indicator)
(make-local-variable 'liece-own-freeze)
(make-local-variable 'liece-own-freeze-indicator)
(make-local-variable 'tab-stop-list)
- (setq liece-freeze liece-default-freeze
+ (setq liece-beep liece-default-beep
+ liece-beep-indicator (if liece-beep "B" "-")
+ liece-freeze liece-default-freeze
liece-freeze-indicator (if liece-freeze "F" "-")
liece-own-freeze liece-default-own-freeze
liece-own-freeze-indicator (if liece-own-freeze "M" "-")
'("Liece: "
mode-line-modified
liece-away-indicator
- liece-crypt-indicator
+ liece-beep-indicator
liece-freeze-indicator
liece-own-freeze-indicator
" " liece-channels-indicator " "))
'("Liece: "
mode-line-modified
liece-away-indicator
- liece-crypt-indicator
+ liece-beep-indicator
liece-freeze-indicator
liece-own-freeze-indicator
" "
(use-local-map liece-nick-mode-map)
(run-hooks 'liece-nick-mode-hook))
+(fset 'liece-dialogue-beep 'liece-command-beep)
(fset 'liece-dialogue-freeze 'liece-command-freeze)
(fset 'liece-dialogue-own-freeze 'liece-command-own-freeze)
(interactive)
(dolist (buffer liece-buffer-list)
(when (and (get-buffer buffer) (buffer-live-p buffer))
- (bury-buffer buffer)))
+ (funcall liece-buffer-dispose-function buffer)))
(if (vectorp liece-obarray)
(dotimes (i liece-obarray-size)
(aset liece-obarray i nil)))