X-Git-Url: https://cgit.sxemacs.org/?p=riece;a=blobdiff_plain;f=lisp%2Friece-log.el;h=a2573feb8b37f09ddf45aad18d7d1c0d4e99eaff;hp=4398f8b6c15c3f66cc4ff1520d2ef074b74c2c9e;hb=65e3a4cdc43af6c024f47c5924e0edd89dc7a982;hpb=7fa85e2e538e7f43de4c27608bbb88f5b41baa18 diff --git a/lisp/riece-log.el b/lisp/riece-log.el index 4398f8b..a2573fe 100644 --- a/lisp/riece-log.el +++ b/lisp/riece-log.el @@ -61,21 +61,22 @@ If integer, flash back only this line numbers. t means all lines." :type 'symbol :group 'riece-log) +(defcustom riece-log-open-directory-function 'find-file + "*Function for opening a directory." + :type 'function + :group 'riece-log) + +(defvar riece-log-enabled nil) + (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 @@ -83,12 +84,13 @@ If integer, flash back only this line numbers. t means all lines." (riece-log-get-directory identity))) (defun riece-log-get-directory (identity) - (let ((channel (riece-identity-prefix identity)) + (let ((channel (riece-identity-canonicalize-prefix + (riece-identity-prefix identity))) (server (riece-identity-server identity)) (map (assoc (riece-format-identity identity) riece-log-directory-map)) name) (cond (map (setq name (cdr map))) - ((string-match riece-channel-regexp channel) + ((string-match riece-strict-channel-regexp channel) (let ((suffix (match-string 2 channel))) (setq name (substring channel (match-end 1) (match-beginning 2))) (when (and (stringp suffix) @@ -100,7 +102,7 @@ If integer, flash back only this line numbers. t means all lines." (expand-file-name name riece-log-directory)))) (defun riece-log-flashback (identity) - (when riece-log-flashback + (when (and riece-log-enabled riece-log-flashback) (let ((file (riece-log-get-file identity))) (when (file-exists-p file) (let (string) @@ -130,9 +132,11 @@ If integer, flash back only this line numbers. t means all lines." (defun riece-log-open-directory (&optional channel) (interactive) - (if channel - (find-file (riece-log-get-directory channel)) - (find-file riece-log-directory))) + (let ((directory (riece-log-get-directory + (or channel riece-current-channel)))) + (if (file-directory-p directory) + (funcall riece-log-open-directory-function directory) + (error "No log directory")))) (defun riece-log-requires () (if (memq 'riece-button riece-addons) @@ -146,6 +150,15 @@ If integer, flash back only this line numbers. t means all lines." (add-hook 'riece-channel-buffer-create-functions '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) ;;; riece-log.el ends here