(liece-open-server-internal): Simplify; Don't use
[elisp/liece.git] / lisp / liece.el
index 85c3215..7604c75 100644 (file)
@@ -30,7 +30,6 @@
 ;;; Code:
 
 (require 'liece-inlines)
-(require 'liece-crypt)
 (require 'liece-handle)
 (require 'liece-filter)
 (require 'liece-hilit)
@@ -61,7 +60,7 @@
       (: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."))
@@ -94,7 +93,6 @@ For efficiency this should be prime.  See documentation of intern and
 (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
@@ -121,8 +119,7 @@ For efficiency this should be prime.  See documentation of intern and
     (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)
@@ -209,6 +206,7 @@ If optional argument SAFE is nil, overwrite previous definitions."
     "|" 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
@@ -238,25 +236,17 @@ If optional argument SAFE is nil, overwrite previous definitions."
     "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
@@ -274,7 +264,6 @@ If optional argument SAFE is nil, overwrite previous definitions."
 
   (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
@@ -297,6 +286,7 @@ If optional argument SAFE is nil, overwrite previous definitions."
     "\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
@@ -330,6 +320,7 @@ If optional argument SAFE is nil, overwrite previous definitions."
   (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)
 
@@ -425,8 +416,8 @@ the `liece-server-keyword-map' variable."
 
 (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)))
@@ -519,37 +510,29 @@ If optional argument SERVICE is non-nil, open by the service name."
 (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."
@@ -625,9 +608,6 @@ If already connected, just pop up the windows."
            (erase-buffer))
          (sit-for 0))
 
-       (liece-set-crypt-indicator)
-       (liece-crypt-initialize)
-
        (liece-initialize-buffers)
        (liece-configure-windows)
        (setq liece-current-channels nil)
@@ -662,13 +642,13 @@ For a list of the generic commands type \\[liece-command-generic] ? RET.
   (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
@@ -677,8 +657,7 @@ For a list of the generic commands type \\[liece-command-generic] ? RET.
           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)
 
@@ -708,13 +687,17 @@ Instead, these commands are available:
 \\{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" "-")
@@ -726,7 +709,7 @@ Instead, these commands are available:
         '("Liece: "
           mode-line-modified
           liece-away-indicator
-          liece-crypt-indicator
+          liece-beep-indicator
           liece-freeze-indicator
           liece-own-freeze-indicator
           " " liece-channels-indicator " "))
@@ -761,7 +744,7 @@ Instead, these commands are available:
         '("Liece: "
           mode-line-modified
           liece-away-indicator
-          liece-crypt-indicator
+          liece-beep-indicator
           liece-freeze-indicator
           liece-own-freeze-indicator
           " "
@@ -802,6 +785,7 @@ Instead, these commands are available:
   (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)
 
@@ -824,7 +808,7 @@ Instead, these commands are available:
   (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)))