aboutsummaryrefslogtreecommitdiffstats
path: root/lisp/erc/erc-log.el
diff options
context:
space:
mode:
authorKaroly Lorentey2006-10-14 16:56:21 +0000
committerKaroly Lorentey2006-10-14 16:56:21 +0000
commit3f87f67ee215ffeecbd2f53bd7f342cdf03f47df (patch)
tree16f2af9111af08a94d608d96a957f5c3ec5effcc /lisp/erc/erc-log.el
parent350e4fb815d7413ef6d339dd664014706f742927 (diff)
parent7a210b69c7f92650c524766d1b9d3f3eefdd67c7 (diff)
downloademacs-3f87f67ee215ffeecbd2f53bd7f342cdf03f47df.tar.gz
emacs-3f87f67ee215ffeecbd2f53bd7f342cdf03f47df.zip
Merged from emacs@sv.gnu.org
Patches applied: * emacs@sv.gnu.org/emacs--devo--0--patch-371 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-372 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-373 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-374 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-375 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-376 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-377 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-378 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-379 Merge from erc--emacs--21 * emacs@sv.gnu.org/emacs--devo--0--patch-380 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-381 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-382 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-383 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-384 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-385 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-386 Update from erc--emacs--22 * emacs@sv.gnu.org/emacs--devo--0--patch-387 Fix ERC bug introduced in last patch * emacs@sv.gnu.org/emacs--devo--0--patch-388 Update from erc--emacs--22 * emacs@sv.gnu.org/emacs--devo--0--patch-389 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-390 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-391 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-392 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-393 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-394 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-395 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-396 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-397 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-398 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-399 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-400 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-401 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-402 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-403 Rcirc update from Ryan Yeske * emacs@sv.gnu.org/emacs--devo--0--patch-404 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-405 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-406 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-407 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-408 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-409 Update from CVS * emacs@sv.gnu.org/emacs--devo--0--patch-410 Merge from gnus--rel--5.10 * emacs@sv.gnu.org/emacs--devo--0--patch-411 Miscellaneous tq-related fixes. * emacs@sv.gnu.org/emacs--devo--0--patch-412 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-121 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-122 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-123 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-124 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-125 Update from CVS * emacs@sv.gnu.org/gnus--rel--5.10--patch-126 Merge from emacs--devo--0 * emacs@sv.gnu.org/gnus--rel--5.10--patch-127 Update from CVS git-archimport-id: lorentey@elte.hu--2004/emacs--multi-tty--0--patch-581
Diffstat (limited to 'lisp/erc/erc-log.el')
-rw-r--r--lisp/erc/erc-log.el41
1 files changed, 30 insertions, 11 deletions
diff --git a/lisp/erc/erc-log.el b/lisp/erc/erc-log.el
index b316a8588bd..2fe29e82fe5 100644
--- a/lisp/erc/erc-log.el
+++ b/lisp/erc/erc-log.el
@@ -71,8 +71,6 @@
71;; markers. 71;; markers.
72 72
73;;; TODO: 73;;; TODO:
74;; * Erc needs a generalised make-safe-file-name function, so that
75;; generated file names don't contain any invalid file characters.
76;; 74;;
77;; * Really, we need to lock the logfiles somehow, so that if a user 75;; * Really, we need to lock the logfiles somehow, so that if a user
78;; is running multiple emacsen and/or on the same channel as more 76;; is running multiple emacsen and/or on the same channel as more
@@ -218,7 +216,10 @@ also be a predicate function. To only log when you are not set away, use:
218 (add-hook 'erc-quit-hook 'erc-conditional-save-queries) 216 (add-hook 'erc-quit-hook 'erc-conditional-save-queries)
219 (add-hook 'erc-part-hook 'erc-conditional-save-buffer) 217 (add-hook 'erc-part-hook 'erc-conditional-save-buffer)
220 ;; append, so that 'erc-initialize-log-marker runs first 218 ;; append, so that 'erc-initialize-log-marker runs first
221 (add-hook 'erc-connect-pre-hook 'erc-log-setup-logging 'append)) 219 (add-hook 'erc-connect-pre-hook 'erc-log-setup-logging 'append)
220 (dolist (buffer (erc-buffer-list))
221 (when (buffer-live-p buffer)
222 (with-current-buffer buffer (erc-log-setup-logging)))))
222 ;; disable 223 ;; disable
223 ((remove-hook 'erc-insert-post-hook 'erc-save-buffer-in-logs) 224 ((remove-hook 'erc-insert-post-hook 'erc-save-buffer-in-logs)
224 (remove-hook 'erc-send-post-hook 'erc-save-buffer-in-logs) 225 (remove-hook 'erc-send-post-hook 'erc-save-buffer-in-logs)
@@ -226,7 +227,10 @@ also be a predicate function. To only log when you are not set away, use:
226 (remove-hook 'erc-kill-channel-hook 'erc-save-buffer-in-logs) 227 (remove-hook 'erc-kill-channel-hook 'erc-save-buffer-in-logs)
227 (remove-hook 'erc-quit-hook 'erc-conditional-save-queries) 228 (remove-hook 'erc-quit-hook 'erc-conditional-save-queries)
228 (remove-hook 'erc-part-hook 'erc-conditional-save-buffer) 229 (remove-hook 'erc-part-hook 'erc-conditional-save-buffer)
229 (remove-hook 'erc-connect-pre-hook 'erc-log-setup-logging))) 230 (remove-hook 'erc-connect-pre-hook 'erc-log-setup-logging)
231 (dolist (buffer (erc-buffer-list))
232 (when (buffer-live-p buffer)
233 (with-current-buffer buffer (erc-log-disable-logging))))))
230 234
231(define-key erc-mode-map "\C-c\C-l" 'erc-save-buffer-in-logs) 235(define-key erc-mode-map "\C-c\C-l" 'erc-save-buffer-in-logs)
232 236
@@ -236,8 +240,7 @@ also be a predicate function. To only log when you are not set away, use:
236This function is destined to be run from `erc-connect-pre-hook'." 240This function is destined to be run from `erc-connect-pre-hook'."
237 (when (erc-logging-enabled) 241 (when (erc-logging-enabled)
238 (auto-save-mode -1) 242 (auto-save-mode -1)
239 (setq buffer-offer-save t 243 (setq buffer-file-name nil)
240 buffer-file-name "")
241 (set (make-local-variable 'write-file-functions) 244 (set (make-local-variable 'write-file-functions)
242 '(erc-save-buffer-in-logs)) 245 '(erc-save-buffer-in-logs))
243 (when erc-log-insert-log-on-open 246 (when erc-log-insert-log-on-open
@@ -245,6 +248,12 @@ This function is destined to be run from `erc-connect-pre-hook'."
245 (move-marker erc-last-saved-position 248 (move-marker erc-last-saved-position
246 (1- (point-max))))))) 249 (1- (point-max)))))))
247 250
251(defun erc-log-disable-logging ()
252 "Disable logging in the current buffer."
253 (when (erc-logging-enabled)
254 (setq buffer-offer-save nil
255 erc-enable-logging nil)))
256
248(defun erc-log-all-but-server-buffers (buffer) 257(defun erc-log-all-but-server-buffers (buffer)
249 "Returns t if logging should be enabled in BUFFER. 258 "Returns t if logging should be enabled in BUFFER.
250Returns nil iff `erc-server-buffer-p' returns t." 259Returns nil iff `erc-server-buffer-p' returns t."
@@ -282,17 +291,27 @@ is writeable (it will be created as necessary) and
282 (funcall erc-enable-logging (or buffer (current-buffer))) 291 (funcall erc-enable-logging (or buffer (current-buffer)))
283 erc-enable-logging))) 292 erc-enable-logging)))
284 293
294(defun erc-log-standardize-name (filename)
295 "Make FILENAME safe to use as the name of an ERC log.
296This will not work with full paths, only names.
297
298Any unsafe characters in the name are replaced with \"!\". The
299filename is downcased."
300 (downcase (erc-replace-regexp-in-string
301 "[/\\]" "!" (convert-standard-filename filename))))
302
285(defun erc-current-logfile (&optional buffer) 303(defun erc-current-logfile (&optional buffer)
286 "Return the logfile to use for BUFFER. 304 "Return the logfile to use for BUFFER.
287If BUFFER is nil, the value of `current-buffer' is used. 305If BUFFER is nil, the value of `current-buffer' is used.
288This is determined by `erc-generate-log-file-name-function'. 306This is determined by `erc-generate-log-file-name-function'.
289The result is converted to lowercase, as IRC is case-insensitive" 307The result is converted to lowercase, as IRC is case-insensitive"
290 (expand-file-name 308 (expand-file-name
291 (downcase (funcall erc-generate-log-file-name-function 309 (erc-log-standardize-name
292 (or buffer (current-buffer)) 310 (funcall erc-generate-log-file-name-function
293 (or (erc-default-target) (buffer-name buffer)) 311 (or buffer (current-buffer))
294 (erc-current-nick) 312 (or (erc-default-target) (buffer-name buffer))
295 erc-session-server erc-session-port)) 313 (erc-current-nick)
314 erc-session-server erc-session-port))
296 erc-log-channels-directory)) 315 erc-log-channels-directory))
297 316
298(defun erc-generate-log-file-name-with-date (buffer &rest ignore) 317(defun erc-generate-log-file-name-with-date (buffer &rest ignore)