X-Git-Url: https://cgit.sxemacs.org/?p=riece;a=blobdiff_plain;f=lisp%2Friece-log.el;h=352fa03c086d6a1fbe16d4c282c3fcd050a91971;hp=dd997e6386ffdc67220cf822e31e04c935ab3706;hb=041ee997ed636dfcebe3efc2ba6dff2690e46799;hpb=4fce7363d6da9b827c5bce98540c4f4756f93f91 diff --git a/lisp/riece-log.el b/lisp/riece-log.el index dd997e6..352fa03 100644 --- a/lisp/riece-log.el +++ b/lisp/riece-log.el @@ -30,8 +30,8 @@ ;;; Code: -(eval-when-compile (require 'riece-message) - (require 'riece-button)) +(require 'riece-message) +(require 'riece-button) (defgroup riece-log nil "Save irc log" @@ -66,21 +66,20 @@ If integer, flash back only this line numbers. t means all lines." :type 'function :group 'riece-log) +(defvar riece-log-enabled nil) + +(defconst riece-log-description + "Saving IRC logs") + (defun riece-log-display-message-function (message) - (let ((open-bracket - (funcall riece-message-make-open-bracket-function message)) - (close-bracket - (funcall riece-message-make-close-bracket-function message)) - (name - (funcall riece-message-make-name-function message)) - (file (riece-log-get-file (riece-message-target message))) - (coding-system-for-write riece-log-coding-system)) - (unless (file-directory-p (file-name-directory file)) - (make-directory (file-name-directory file) t)) - (write-region (concat (format-time-string "%H:%M") " " - open-bracket name close-bracket - " " (riece-message-text message) "\n") - nil file t 0))) + (if riece-log-enabled + (let ((file (riece-log-get-file (riece-message-target message))) + (coding-system-for-write riece-log-coding-system)) + (unless (file-directory-p (file-name-directory file)) + (make-directory (file-name-directory file) t)) + (write-region (concat (format-time-string "%H:%M") " " + (riece-format-message message)) + nil file t 0)))) (defun riece-log-get-file (identity) (expand-file-name @@ -128,8 +127,9 @@ If integer, flash back only this line numbers. t means all lines." (riece-make-identity (riece-match-string-no-properties 1) (riece-identity-server identity)))) - (if (memq 'riece-button riece-addons) - (riece-button-update-buffer)) + (when (and (memq 'riece-button riece-addons) + riece-button-enabled) + (riece-button-update-buffer)) (goto-char (point-max)) (set-window-point (get-buffer-window (current-buffer)) (point)))))))) @@ -146,16 +146,22 @@ If integer, flash back only this line numbers. t means all lines." (if (memq 'riece-button riece-addons) '(riece-button))) -(defvar riece-command-mode-map) (defun riece-log-insinuate () ;; FIXME: Use `riece-after-insert-functions' for trapping change, ;; notice, wallops and so on. But must add argument. (add-hook 'riece-after-display-message-functions 'riece-log-display-message-function) (add-hook 'riece-channel-buffer-create-functions - 'riece-log-flashback) - (define-key riece-command-mode-map - "\C-cd" 'riece-log-open-directory)) + 'riece-log-flashback)) + +(defvar riece-command-mode-map) +(defun riece-log-enable () + (define-key riece-command-mode-map "\C-cd" 'riece-log-open-directory) + (setq riece-log-enabled t)) + +(defun riece-log-disable () + (define-key riece-command-mode-map "\C-cd" nil) + (setq riece-log-enabled nil)) (provide 'riece-log)