From: Joe Corneli <jcorneli@math.utexas.edu>
Subject: Re: How to automatically write *Messages" buffer to a file?
Date: Wed, 24 Nov 2004 13:01:05 -0600 [thread overview]
Message-ID: <E1CX2O1-0004ZU-00@linux183.ma.utexas.edu> (raw)
In-Reply-To: <01c4d23d$Blat.v2.2.2$c2b81b20@zahav.net.il> (eliz@gnu.org)
> From: Pascal Bourguignon <spam@mouse-potato.com>
> Date: 24 Nov 2004 15:06:38 +0100
>
> Brad Collins <brad@chenla.org> writes:
>
> > Is there is a simple way of getting Emacs to automatically append
> > messages in the message buffer to a file so messages work as a log file?
> >
> > I've been looking around and it seems this should be dead easy but I
> > can't figure it out?
>
> The best I can figure is that the simple way to do it would be to
> modify the C source of emacs. message is a buit-in function.
How about an after-change function that'd do this only for the
*Messages* buffer?
If you want a faithful account of what is actually in the *Messages*
buffer, that would definitely be better than defadvising `message' --
because a significant amount of stuff that is written to the
*Messages* buffer is not put there by `message'.
> I know of no way from emacs lisp to append a line to a file.
??? What's wrong with append-to-file?
Something fairly minor... namely that it adds text to the *Messages*
buffer (not through the `message' mechanism), so one has to delicately
advise it to shut up (for use in this application).
Here is a little code that *does not work as desired* but I think it
is pretty close. I'd be happy if someone could point out the bug(s).
(defvar messaging-on t
"Control whether or not messages will be printed.
By default, they are.")
(defadvice write-region (around no-wrote-file activate)
"Turn off the printout associated with writing files.
This is necessary to add as a supplement to `nomessage' because
the \"Wrote file\" or \"Added to file\" message is not printed
through the `message' mechanism. The observed effect of this
piece of advice is that neither `save-buffer' nor `write-file'
will print anything out when they run."
(if messaging-on
ad-do-it
(set-buffer-modified-p nil)
(ad-set-arg 4 t)
(ad-set-arg 6 nil)
ad-do-it))
(defun turn-on-logging-advice ()
(ad-enable-advice 'write-region 'around 'no-wrote-file)
(ad-activate 'write-region))
(defun turn-off-logging-advice ()
(ad-disable-advice 'write-region 'around 'no-wrote-file)
(ad-activate 'write-region))
(turn-off-logging-advice)
;;
(defun setup-logging ()
(interactive)
(message "begin logging")
(set-buffer "*Messages*")
(make-variable-buffer-local 'after-change-functions)
;; be less destructive if you care
(setq after-change-functions
'(log-message))
(turn-on-logging-advice))
(defun stop-logging ()
(interactive)
(message "stop logging")
;; see prev comment
(setq after-change-functions nil)
(turn-off-logging-advice))
(defun log-message (beg end range)
(let ((messaging-on nil))
(append-to-file beg end "~/LOG")))
(defun test-message ()
(interactive)
(message "hi"))
next prev parent reply other threads:[~2004-11-24 19:01 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <mailman.1150.1101268518.27204.help-gnu-emacs@gnu.org>
2004-11-24 14:06 ` How to automatically write *Messages" buffer to a file? Pascal Bourguignon
2004-11-24 15:52 ` Eli Zaretskii
2004-11-24 19:01 ` Joe Corneli [this message]
[not found] ` <mailman.1295.1101323448.27204.help-gnu-emacs@gnu.org>
2004-11-24 20:16 ` Stefan Monnier
2004-11-24 20:28 ` Joe Corneli
[not found] ` <mailman.1305.1101328729.27204.help-gnu-emacs@gnu.org>
2004-11-24 20:55 ` Stefan Monnier
2004-11-24 21:52 ` Joe Corneli
2004-11-24 22:19 ` Drew Adams
2004-11-25 4:56 ` Joe Corneli
[not found] ` <mailman.1370.1101359173.27204.help-gnu-emacs@gnu.org>
2004-11-25 20:20 ` Stefan Monnier
2004-11-24 22:00 ` Thien-Thi Nguyen
2004-11-25 4:52 ` Joe Corneli
2004-12-01 19:08 ` Kevin Rodgers
2004-11-24 3:43 Brad Collins
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E1CX2O1-0004ZU-00@linux183.ma.utexas.edu \
--to=jcorneli@math.utexas.edu \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.