X-Git-Url: http://cgit.sxemacs.org/?p=riece;a=blobdiff_plain;f=lisp%2Friece-misc.el;h=60a02c002a6568b33053e81eb72018a59cb6ee09;hp=809033264091f81fd4295b324579ed8bb15e4d6f;hb=b2a4a502157459f7e060cd04322152c83adf32f8;hpb=fe7ce5e9a344721b1ecdd4d9ec1adce5dc908a49 diff --git a/lisp/riece-misc.el b/lisp/riece-misc.el index 8090332..60a02c0 100644 --- a/lisp/riece-misc.el +++ b/lisp/riece-misc.el @@ -24,19 +24,18 @@ ;;; Code: -(eval-when-compile (require 'riece-inlines)) - (require 'riece-options) (require 'riece-coding) (require 'riece-identity) (require 'riece-version) (require 'riece-channel) +(require 'riece-server) (require 'riece-user) (defun riece-get-buffer-create (name) (let ((buffer (get-buffer-create name))) - (or (memq buffer riece-buffer-list) - (push buffer riece-buffer-list)) + (unless (memq buffer riece-buffer-list) + (setq riece-buffer-list (cons buffer riece-buffer-list))) buffer)) (defun riece-insert (buffers string) @@ -72,31 +71,24 @@ (defun riece-insert-info (buffer message) (riece-insert buffer (concat riece-info-prefix message))) -(defun riece-freeze (buffer &optional arg) - (with-current-buffer buffer - (setq riece-freeze (if arg (< 0 arg) (not riece-freeze)) - riece-freeze-indicator (if riece-freeze "F" "-")) - (force-mode-line-update))) - (defun riece-frozen (buffer) - (with-current-buffer buffer riece-freeze)) + (with-current-buffer buffer + riece-freeze)) -(defun riece-own-freeze (buffer &optional arg) +(defun riece-own-frozen (buffer) (with-current-buffer buffer - (setq riece-own-freeze (if arg (< 0 arg) (not riece-own-freeze)) - riece-own-freeze-indicator (if riece-own-freeze "M" "-")) - (force-mode-line-update))) + (eq riece-freeze 'own))) -(defun riece-process-send-string (process string) - (with-current-buffer (process-buffer process) - (process-send-string process (riece-encode-coding-string string)))) +(defun riece-channel-p (string) + "Return t if STRING is a channel. +\(i.e. it matches `riece-channel-regexp')" + (string-match (concat "^" riece-channel-regexp) string)) -(defun riece-send-string (string) - (let ((process (riece-find-server-process))) - (unless process - (error "%s" (substitute-command-keys - "Type \\[riece-command-open-server] to open server."))) - (riece-process-send-string process string))) +(defun riece-current-nickname () + "Return the current nickname." + (riece-with-server-buffer (riece-identity-server riece-current-channel) + (if riece-real-nickname + (riece-make-identity riece-real-nickname riece-server-name)))) (defun riece-split-parameters (string) (if (eq ?: (aref string 0)) @@ -113,19 +105,20 @@ (setq parameters (nconc parameters (list string)))) parameters))) -(defun riece-concat-modes (target string) - (let ((modes - (if (riece-channel-p target) - (riece-channel-get-modes target) - (riece-user-get-modes target)))) - (if modes - (concat string " [" (apply #'string modes) "]") - string))) - -(defsubst riece-concat-current-channel-modes (string) - (if riece-current-channel - (riece-concat-modes riece-current-channel string) - string)) +(defun riece-concat-channel-topic (target string) + (riece-with-server-buffer (riece-identity-server target) + (let ((topic (riece-channel-get-topic (riece-identity-prefix target)))) + (if (or (null topic) + (equal topic "")) + string + (concat string ": " topic))))) + +(defun riece-concat-channel-modes (target string) + (riece-with-server-buffer (riece-identity-server target) + (let ((modes (riece-channel-get-modes (riece-identity-prefix target)))) + (if modes + (concat string " [" (apply #'string modes) "]") + string)))) (defun riece-concat-message (string message) (if (or (null message) @@ -134,10 +127,9 @@ (concat string " (" message ")"))) (defun riece-concat-server-name (string) - (riece-with-server-buffer - (if riece-server-name - (concat string " (from " riece-server-name ")") - string))) + (if (equal riece-server-name "") + string + (concat string " (from " riece-server-name ")"))) (defun riece-prefix-user-at-host (prefix) (if (string-match "!" prefix) @@ -167,6 +159,18 @@ (substring user-at-host 1) user-at-host)) +(defun riece-get-users-on-server () + (riece-with-server-buffer (riece-identity-server riece-current-channel) + (let (users) + (mapatoms + (lambda (atom) + (unless (riece-channel-p (symbol-name atom)) + (setq users (cons (symbol-name atom) users)))) + riece-obarray) + (if (member riece-real-nickname users) + users + (cons riece-real-nickname users))))) + (provide 'riece-misc) ;;; riece-misc.el ends here