erc-commit
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Erc-commit] [commit][emacs22] erc-log: Save buffers to logs before exit


From: mwolson
Subject: [Erc-commit] [commit][emacs22] erc-log: Save buffers to logs before exiting Emacs
Date: Sun, 14 Oct 2007 00:48:32 -0400

commit c9e946d857d70da25bbfa35bc38945ede3b80931
Author: Michael Olson <address@hidden>
Date:   Sun Nov 12 05:34:58 2006 +0000

    erc-log: Save buffers to logs before exiting Emacs
    
    2006-11-12  Michael Olson  <address@hidden>
    
        * erc-log.el: Save all log buffers when Emacs exits, in case
        someone ignores the warning about open processes.  Remove the
        advice code in the commentary.
        (erc-save-query-buffers): Docfix.
        (erc-log-save-all-buffers): New function that saves all ERC
        buffers to logs.
        (erc-current-logfile): Fix bug in filename selection, where the
        current buffer was erroneously being preferred over the given
        buffer.
    git-archimport-id: address@hidden/erc--main--0--patch-59

diff --git a/ChangeLog b/ChangeLog
index b79043d..e665922 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,15 @@
+2006-11-12  Michael Olson  <address@hidden>
+
+       * erc-log.el: Save all log buffers when Emacs exits, in case
+       someone ignores the warning about open processes.  Remove the
+       advice code in the commentary.
+       (erc-save-query-buffers): Docfix.
+       (erc-log-save-all-buffers): New function that saves all ERC
+       buffers to logs.
+       (erc-current-logfile): Fix bug in filename selection, where the
+       current buffer was erroneously being preferred over the given
+       buffer.
+
 2006-11-08  Michael Olson  <address@hidden>
 
        * erc.el (erc-string-to-port): Avoid error when a numerical port
diff --git a/erc-log.el b/erc-log.el
index 0124219..e548645 100644
--- a/erc-log.el
+++ b/erc-log.el
@@ -43,14 +43,6 @@
 ;;
 ;; (require 'erc-log)
 ;;
-;; You may optionally want the following code, to save all ERC buffers
-;; without confirmation when exiting emacs:
-;;
-;; (defadvice save-buffers-kill-emacs (before save-logs (&rest args) activate)
-;;  (save-some-buffers t (lambda ()
-;;                         (when (and (eq major-mode 'erc-mode)
-;;                                    (not (null buffer-file-name))) t))))
-;;
 ;; If you only want to save logs for some buffers, customise the
 ;; variable `erc-enable-logging'.
 
@@ -213,6 +205,7 @@ also be a predicate function. To only log when you are not 
set away, use:
      (add-hook 'erc-send-post-hook 'erc-save-buffer-in-logs))
    (add-hook 'erc-kill-buffer-hook 'erc-save-buffer-in-logs)
    (add-hook 'erc-kill-channel-hook 'erc-save-buffer-in-logs)
+   (add-hook 'kill-emacs-hook 'erc-log-save-all-buffers)
    (add-hook 'erc-quit-hook 'erc-conditional-save-queries)
    (add-hook 'erc-part-hook 'erc-conditional-save-buffer)
    ;; append, so that 'erc-initialize-log-marker runs first
@@ -224,6 +217,7 @@ also be a predicate function. To only log when you are not 
set away, use:
    (remove-hook 'erc-send-post-hook 'erc-save-buffer-in-logs)
    (remove-hook 'erc-kill-buffer-hook 'erc-save-buffer-in-logs)
    (remove-hook 'erc-kill-channel-hook 'erc-save-buffer-in-logs)
+   (remove-hook 'kill-emacs-hook 'erc-log-save-all-buffers)
    (remove-hook 'erc-quit-hook 'erc-conditional-save-queries)
    (remove-hook 'erc-part-hook 'erc-conditional-save-buffer)
    (remove-hook 'erc-connect-pre-hook 'erc-log-setup-logging)
@@ -270,7 +264,7 @@ Returns nil iff `erc-server-buffer-p' returns t."
       (not (erc-server-buffer-p)))))
 
 (defun erc-save-query-buffers (process)
-  "Save all buffers process."
+  "Save all buffers of the given PROCESS."
   (erc-with-all-buffers-of-server process
                                  nil
                                  (erc-save-buffer-in-logs)))
@@ -285,6 +279,13 @@ Returns nil iff `erc-server-buffer-p' returns t."
   (when erc-save-queries-on-quit
     (erc-save-query-buffers process)))
 
+;; Make sure that logs get saved, even if someone overrides the active
+;; process prompt for a quick exit from Emacs
+(defun erc-log-save-all-buffers ()
+  (dolist (buffer (erc-buffer-filter #'(lambda ()
+                                        (not (erc-server-buffer-p)))))
+    (erc-save-buffer-in-logs buffer)))
+
 ;;;###autoload
 (defun erc-logging-enabled (&optional buffer)
   "Return non-nil if logging is enabled for BUFFER.
@@ -316,7 +317,7 @@ The result is converted to lowercase, as IRC is 
case-insensitive"
    (erc-log-standardize-name
     (funcall erc-generate-log-file-name-function
             (or buffer (current-buffer))
-            (or (erc-default-target) (buffer-name buffer))
+            (or (buffer-name buffer) (erc-default-target))
             (erc-current-nick)
             erc-session-server erc-session-port))
    erc-log-channels-directory))




reply via email to

[Prev in Thread] Current Thread [Next in Thread]