* liece-handle.el (liece-handle-privmsg-message): Don't compare when
`item' and `liece-current-chat-partner' are nil.
+2001-02-12 Daiki Ueno <ueno@unixuser.org>
+
+ * liece-compat.el (liece-read-passwd): Revive.
+
+ * liece-clfns.el (liece-clfns-subr-fboundp): Check existence of
+ the function `symbol-file'.
+
+ * liece-q-ccl.el: Require `poem' for char-int.
+ (liece-quote-ccl-256-table): Simplified.
+
+2001-01-02 Daiki Ueno <ueno@unixuser.org>
+
+ * liece-modules.el: Simplified.
+
+2000-12-09 Tanaka Akira <akr@m17n.org>
+
+ * liece.el (liece-refresh-buffer-window): Simplified.
+
+2000-11-30 Tanaka Akira <akr@m17n.org>
+
+ * liece.el (liece-refresh-buffer-window): Force to display a last
+ non-empty line in last line in a window on Emacs 21.
+
+2000-10-19 Daiki Ueno <ueno@unixuser.org>
+
+ * liece-ctcp.el: Remove autoload cookies of
+ `liece-command-ctcp-generic',
+ `liece-command-ctcp-userinfo-from-minibuffer',
+ `liece-command-ctcp-x-face-from-xbm-file' and
+ `liece-command-send-file'.
+
+ * liece-commands.el: Add autoload setting for
+ `liece-command-ctcp-action',
+ `liece-command-ctcp-userinfo-from-minibuffer' and
+ `liece-command-ctcp-x-face-from-xbm-file'.
+
+2000-10-16 Daiki Ueno <ueno@unixuser.org>
+
+ * liece-commands.el (liece-command-quit): Use `liece-close-server'.
+
+ * liece.el (liece): Simplify.
+ (liece-close-server): Accept optional argument `quit-string'.
+
2000-10-12 Akira Ohashi <bg66@luck.gr.jp>
* liece-menu.el (liece-menu-ctcp-menu): Follow the CTCP command
changed from `liece-command-client-*' to `liece-command-ctcp-*'.
+2000-10-07 Daiki Ueno <ueno@unixuser.org>
+
+ * liece-commands.el (liece-command-qualify-nicks): Refer 1st argument.
+
2000-10-05 Daiki Ueno <ueno@unixuser.org>
* liece-minibuf.el (liece-minibuffer-complete-channel-modes):
"Return t if SYMBOL's function definition is a basic function."
(and (fboundp symbol)
(or (subrp (symbol-function symbol))
- (string-equal (symbol-file symbol) "subr"))))
+ (and (fboundp 'symbol-file)
+ (string-equal (symbol-file symbol) "subr")))))
(if (featurep 'xemacs)
nil
(autoload 'liece-dcc-chat-send "liece-dcc")
+(autoload 'liece-command-ctcp-action "liece-ctcp" nil t)
(autoload 'liece-command-ctcp-version "liece-ctcp" nil t)
(autoload 'liece-command-ctcp-userinfo "liece-ctcp" nil t)
+(autoload 'liece-command-ctcp-userinfo-from-minibuffer "liece-ctcp" nil t)
+(autoload 'liece-command-ctcp-help "liece-ctcp" nil t)
(autoload 'liece-command-ctcp-clientinfo "liece-ctcp" nil t)
(autoload 'liece-command-ctcp-ping "liece-ctcp" nil t)
(autoload 'liece-command-ctcp-time "liece-ctcp" nil t)
(autoload 'liece-command-ctcp-x-face "liece-ctcp" nil t)
+(autoload 'liece-command-ctcp-x-face-from-xbm-file "liece-ctcp" nil t)
(autoload 'liece-command-ctcp-comment "liece-ctcp" nil t)
-(autoload 'liece-command-ctcp-help "liece-ctcp" nil t)
(defun liece-command-poll-names ()
"Handler for polling NAMES."
(if (eq current-prefix-arg '-)
(read-string
(format (_ "Key for channel %s: ") join-channel-var))
- (let ((passwd-echo ?*))
- (read-passwd
- (format (_ "Key for channel %s: ") join-channel-var))))))
+ (liece-read-passwd
+ (format (_ "Key for channel %s: ") join-channel-var)))))
(list join-channel-var key)))
(let ((real-chnl (liece-channel-real join-channel-var)))
(if (numberp join-channel-var)
(liece-send
"MODE %s %c%s %s"
(liece-channel-real liece-current-channel)
- (if val ?+ ?-) (make-string (length nicks) ?o)
+ (if val ?+ ?-) (make-string (length nicks) mode)
(string-join nicks " ")))
(defun liece-command-set-operators (nicks &optional arg)
(if arg (read-string (_ "Signoff message: "))
(or liece-signoff-message
(product-name (product-find 'liece-version))))))
- (if quit-string
- (liece-send "QUIT :%s" quit-string)
- (liece-send "QUIT")))))
+ (liece-close-server quit-string))))
(defun liece-command-generic (message)
"Enter a generic IRC MESSAGE, which is sent to the server.
(sit-for 2)
(delete-region savemax (point-max)))))
+(defvar liece-read-passwd nil)
+(defun liece-read-passwd (prompt)
+ (if (not liece-read-passwd)
+ (if (functionp 'read-passwd)
+ (setq liece-read-passwd 'read-passwd)
+ (if (load "passwd" t)
+ (setq liece-read-passwd 'read-passwd)
+ (autoload 'ange-ftp-read-passwd "ange-ftp")
+ (setq liece-read-passwd 'ange-ftp-read-passwd))))
+ (funcall liece-read-passwd prompt))
+
;; from XEmacs's subr.el
(defun-maybe replace-in-string (str regexp newtext &optional literal)
"Replace all matches in STR for REGEXP with NEWTEXT string,
(define-obsolete-function-alias 'liece-command-send-action
'liece-command-ctcp-action)
-;;;###liece-autoload
(defun liece-command-ctcp-generic (nick command)
"Ask about someones client clientinfo."
(interactive (list (liece-complete-client) (liece-complete-query)))
(setq liece-ctcp-ping-time (current-time)))
(liece-send "PRIVMSG %s :\001%s\001" nick command))
-;;;###liece-autoload
(defun liece-command-ctcp-userinfo-from-minibuffer (info)
"Ask about someones client clientinfo."
(interactive
(list (read-from-minibuffer "New userinfo: " liece-ctcp-userinfo)))
(setq liece-ctcp-userinfo info))
-;;;###liece-autoload
(defun liece-command-ctcp-x-face-from-xbm-file (file)
(interactive "fXBM File: ")
(let (data)
(setq liece-ctcp-x-face
(replace-in-string (cadr (nth 3 data)) "[ \t\n]" "")))))
-;;;###liece-autoload
(defun liece-command-send-file (file to)
"Send a file to given user."
(interactive "fFile name: \nsTo whom: ")
;; Author: Daiki Ueno <ueno@unixuser.org>
;; Created: 1999-04-12
-;; Revised: 1999-03-02
;; Keywords: IRC, liece, APEL
;; This file is part of Liece.
;;; Code:
(defvar liece-modules-to-compile
- '(queue-m
- gettext
+ '(gettext
liece-clfns
liece-handler
liece-compat
liece-window
liece))
-(require 'emu)
(if (featurep 'xemacs)
- (add-to-list 'liece-modules-to-compile 'liece-xemacs)
- (add-to-list 'liece-modules-to-compile 'liece-emacs)
- (if (fboundp 'set-face-stipple)
- (add-to-list 'liece-modules-to-compile 'bitmap-stipple)))
+ (push 'liece-xemacs liece-modules-to-compile)
+ (push 'liece-emacs liece-modules-to-compile))
-(when (featurep 'mule)
- (add-to-list 'liece-modules-to-compile 'liece-coding))
+(if (fboundp 'set-face-stipple)
+ (push 'bitmap-stipple liece-modules-to-compile))
-(condition-case ()
- (progn
- (require 'pccl)
- (require 'ccl))
- (error nil))
+(if (featurep 'mule)
+ (push 'liece-coding liece-modules-to-compile))
-(require 'broken)
+(require 'pccl)
(unless-broken ccl-usable
- (add-to-list 'liece-modules-to-compile 'liece-q-ccl))
+ (push 'liece-q-ccl liece-modules-to-compile))
-(condition-case ()
- (require 'cus-face)
- (file-error nil))
+(setq liece-modules (cons 'liece-setup liece-modules-to-compile))
-(setq liece-modules (cons 'liece-setup
- (delq 'queue-m liece-modules-to-compile)))
+(push 'queue-m liece-modules-to-compile)
(provide 'liece-modules)
(require 'broken)
(require 'pccl)
+(require 'poem) ;char-int
(eval-and-compile
(defconst liece-quote-ccl-256-table
- '( 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
- 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
- 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
- 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
- 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
- 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95
- 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111
- 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
- 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143
- 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159
- 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175
- 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191
- 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207
- 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223
- 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239
- 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255)))
+ (let ((i 0)
+ table)
+ (while (< i 256)
+ (setq table (nconc table (list i))
+ i (1+ i)))
+ table)))
(broken-facility ccl-cascading-write
"Emacs CCL write command does not accept more than 2 arguments."
liece-server nil))
;;;###liece-autoload
-(defun liece-close-server ()
+(defun liece-close-server (&optional quit-string)
"Close chat server."
(unwind-protect
(progn
(process-sentinel liece-server-process)))
(set-process-sentinel liece-server-process nil))
(if (liece-server-opened)
- (liece-command-quit)))
+ (if quit-string
+ (liece-send "QUIT :%s" quit-string)
+ (liece-send "QUIT"))))
(liece-close-server-internal)
;; Save settings to the `~/.liece/init.el' file.
(if liece-save-variables-are-dirty
(set-process-sentinel liece-server-process 'liece-sentinel)
(set-process-filter liece-server-process 'liece-filter)
(if (or liece-ask-for-password liece-reconnect-with-password)
- (let ((passwd-echo ?*) password)
- (setq password (read-passwd (_ "Server Password: ")))
+ (let ((password
+ (liece-read-passwd (_ "Server Password: "))))
(or (string= password "")
(setq liece-password password))))
(if liece-password
(liece-intl-load-catalogue))
(if (liece-server-opened)
(liece-configure-windows)
- (unwind-protect
- (progn
- (switch-to-buffer
- (liece-get-buffer-create liece-command-buffer))
- (unless (eq major-mode 'liece-command-mode)
- (liece-command-mode))
- (unless (liece-server-opened)
- (liece-start-server confirm)))
- (if (not (liece-server-opened))
- (liece-command-quit)
- ;; IRC server is successfully open.
- (with-current-buffer liece-command-buffer
- (setq mode-line-process (concat " " (liece-server-host))))
- (let (buffer-read-only)
- (unless liece-keep-buffers
- (erase-buffer))
- (sit-for 0))
-
- (liece-initialize-buffers)
- (liece-configure-windows)
- (setq liece-current-channels nil)
- (cond
- (liece-current-channel
- (liece-command-join liece-current-channel))
- (liece-startup-channel
- (liece-command-join liece-startup-channel))
- (liece-startup-channel-list
- (dolist (chnl liece-startup-channel-list)
- (if (listp chnl)
- (liece-command-join (car chnl) (cadr chnl))
- (liece-command-join chnl)))))
- (when liece-away-message
- (liece-command-toggle-away liece-away-message))
- (run-hooks 'liece-startup-hook)
- (setq liece-obarray
- (or liece-obarray (make-vector liece-obarray-size nil)))
- (unless liece-timers-list-initialized-p
- (liece-initialize-timers))
- (liece-command-timestamp)
- (message (substitute-command-keys
- "Type \\[describe-mode] for help"))))))
+ (switch-to-buffer (liece-get-buffer-create liece-command-buffer))
+ (unless (eq major-mode 'liece-command-mode)
+ (liece-command-mode))
+ (liece-start-server confirm)
+ (let (buffer-read-only)
+ (unless liece-keep-buffers
+ (erase-buffer))
+ (sit-for 0))
+ (liece-initialize-buffers)
+ (liece-configure-windows)
+ (setq liece-current-channels nil)
+ (let ((startup-channels
+ (if liece-startup-channel
+ (list liece-startup-channel)
+ liece-startup-channel-list)))
+ (dolist (chnl startup-channels)
+ (if (listp chnl)
+ (liece-command-join (car chnl) (cadr chnl))
+ (liece-command-join chnl))))
+ (unless (string-equal liece-away-message "")
+ (liece-command-toggle-away liece-away-message))
+ (run-hooks 'liece-startup-hook)
+ (setq liece-obarray
+ (or liece-obarray (make-vector liece-obarray-size nil)))
+ (unless liece-timers-list-initialized-p
+ (liece-initialize-timers))
+ (liece-command-timestamp)
+ (message (substitute-command-keys "Type \\[describe-mode] for help"))))
;;;###liece-autoload
(defun liece-command-mode ()
(copy-syntax-table (syntax-table)))
(set-syntax-table liece-command-mode-syntax-table)
(mapcar
- (function (lambda (c) (modify-syntax-entry c "w")))
+ (lambda (c) (modify-syntax-entry c "w"))
"^[]{}'`"))
(run-hooks 'liece-command-mode-hook))
(defun liece-refresh-buffer-window (buffer)
"Center point in window of BUFFER and redisplay frame."
- (let ((window (liece-get-buffer-window buffer)))
- (when (and window (not (pos-visible-in-window-p (point-max) window)))
+ (let ((window (liece-get-buffer-window buffer))
+ (last-point (point-max)))
+ ;; skip last white spaces
+ (while (memq (char-before last-point) '(?\n ?\t ?\ ))
+ (setq last-point (1- last-point)))
+ (when (and window (not (pos-visible-in-window-p last-point window)))
(save-selected-window
(select-window window)
- (goto-char (point-max))
- (if (null liece-scroll-step)
- (recenter (- (liece-window-height window) 1))
- (vertical-motion
- (- (or liece-scroll-step
- (1+ (/ (liece-window-height window) 2)))
- (liece-window-height window)))
- (set-window-start window (point))
- (goto-char (point-max)))))))
+ (goto-char last-point)
+ (recenter (- (or liece-scroll-step 1)))))))
(defmacro liece-save-point (&rest body)
"Execute BODY, then goto the point that was around before BODY."