From: Markus Rost <rost@math.uni-bielefeld.de>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: lekktu@gmail.com, 4655@emacsbugs.donarmstrong.com
Subject: bug#4655: 23.1.50; buffer-swap-text oddity
Date: Thu, 8 Oct 2009 18:48:39 +0200 (CEST) [thread overview]
Message-ID: <20091008164839.BAC66EFE6B@sonic02.math.uni-bielefeld.de> (raw)
In-Reply-To: <jwv63arwazq.fsf-monnier+emacsbugreports@gnu.org> (message from Stefan Monnier on Wed, 07 Oct 2009 10:29:11 -0400)
A follow up to my previous message:
If you look at the end of rmail-cease-edit:
(save-excursion
(rmail-show-message)
(rmail-toggle-header (if pruned 1 0))))
(run-hooks 'rmail-mode-hook))
the question arises in which buffer rmail-mode-hook should be run?
One may check with
(add-hook 'rmail-mode-hook
(lambda () (message "foo: %s" (current-buffer))))
that currently it runs in rmail-view-buffer, which is perhaps not what
one expects. Changing to
(rmail-show-message)
(save-excursion
(rmail-toggle-header (if pruned 1 0))))
(run-hooks 'rmail-mode-hook))
is probably OK. That would be in line with Stefan's point:
> 5- most uses of save-excursion are wrong,
=======
Here are more issues related to the usage of buffer-swap-text:
I tried to fix
<URL:http://lists.gnu.org/archive/html/bug-gnu-emacs/2009-10/msg00052.html>
<URL:http://lists.gnu.org/archive/html/bug-gnu-emacs/2009-10/msg00054.html>
(I think this bug should be fixed before the next release: The mbox
files should not be corrupted.)
with the patch below. See also the thread of
<URL:http://lists.gnu.org/archive/html/emacs-devel/2008-10/msg00468.html>
It seems to work, except that after a save ('s' in Rmail) the
rmail-buffer gets a wrong value of buffer-file-coding-system (to be
seen in the mode line). Only temporarily, switching back and forth to
another message in Rmail restores the correct value of
buffer-file-coding-system.
After further debugging, it turned out that the problem sits in
;; Used in `write-region-annotate-functions' to write rmail files.
(defun rmail-write-region-annotate (start end)
(when (and (null start) (rmail-buffers-swapped-p))
(set-buffer rmail-view-buffer)
(widen)
nil))
Namely, when rmail-expunge-and-save calls save-buffer, then, with
rmail-write-region-annotate in write-region-annotate-functions,
save-buffer and basic-save-buffer* write the rmail-view-buffer to the
file (which is correct) but then set the buffer-file-coding-system to
last-coding-system-used in the rmail-buffer (which is not correct).
It seems that generally write-region-annotate-functions should not
change the buffer to be written. (What if arg START of write-region
is a buffer position?)
===File ~/.emacs.d/rmail/rmail23/bug/rmail-swap.diff========
*** rmail.el 06 Oct 2009 13:20:10 +0200 1.554
--- rmail.el 08 Oct 2009 14:07:01 +0200
***************
*** 1306,1320 ****
(defun rmail-swap-buffers ()
"Swap text between current buffer and `rmail-view-buffer'.
! This function preserves the current buffer's modified flag, and also
! sets the current buffer's `buffer-file-coding-system' to that of
! `rmail-view-buffer'."
(let ((modp (buffer-modified-p))
(coding
(with-current-buffer rmail-view-buffer
buffer-file-coding-system)))
(buffer-swap-text rmail-view-buffer)
(setq buffer-file-coding-system coding)
(restore-buffer-modified-p modp)))
(defun rmail-buffers-swapped-p ()
--- 1306,1322 ----
(defun rmail-swap-buffers ()
"Swap text between current buffer and `rmail-view-buffer'.
! This function preserves the current buffer's modified flag and
! also swaps the value of `buffer-file-coding-system'."
(let ((modp (buffer-modified-p))
+ (coding0 buffer-file-coding-system)
(coding
(with-current-buffer rmail-view-buffer
buffer-file-coding-system)))
(buffer-swap-text rmail-view-buffer)
(setq buffer-file-coding-system coding)
+ (with-current-buffer rmail-view-buffer
+ (setq buffer-file-coding-system coding0))
(restore-buffer-modified-p modp)))
(defun rmail-buffers-swapped-p ()
============================================================
next prev parent reply other threads:[~2009-10-08 16:48 UTC|newest]
Thread overview: 32+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <jwv3a2eiia3.fsf-monnier+emacs@gnu.org>
2009-10-06 18:46 ` bug#4655: 23.1.50; buffer-swap-text oddity Markus Rost
2009-10-07 4:01 ` Juanma Barranquero
2009-10-07 5:41 ` Stefan Monnier
2009-10-07 8:53 ` Markus Rost
2009-10-07 10:07 ` Juanma Barranquero
2009-10-07 14:29 ` Stefan Monnier
2009-10-08 16:48 ` Markus Rost [this message]
2011-07-13 14:08 ` Lars Magne Ingebrigtsen
2016-07-11 1:58 ` npostavs
2016-07-11 14:37 ` Eli Zaretskii
2016-07-11 18:50 ` Markus Rost
2016-07-11 19:07 ` Dmitry Gutov
2016-07-12 1:58 ` npostavs
2016-07-12 5:16 ` Eli Zaretskii
2016-07-13 23:50 ` npostavs
2016-07-14 15:03 ` Eli Zaretskii
2016-07-15 0:05 ` npostavs
2010-01-10 7:36 ` bug#5273: marked as done (23.1; format-alist encode vs write-region-post-annotation-function) Emacs bug Tracking System
2010-01-13 0:45 ` bug#5256: marked as done (conjunct formation should follow input sequence when inserting text) Emacs bug Tracking System
2010-01-13 0:49 ` bug#5265: marked as done (23.1.90; vc - can't reread redirected stdin for log message) Emacs bug Tracking System
2010-01-14 1:22 ` bug#5276: marked as done (23.1; Doc string of bookmark-bmenu-execute-deletions) Emacs bug Tracking System
2010-01-16 20:05 ` bug#5267: 23.1; doc string of defstruct Chong Yidong
2010-01-16 21:39 ` bug#5279: 23.1; VC: should set LC_MESSAGES to C (with patch) Chong Yidong
2010-05-13 19:20 ` bug#5284: 23.1; gnus-summary-expire-thread does not work Glenn Morris
2010-05-24 19:53 ` bug#5270: [PATCH] * lisp/image-dired.el (image-dired-dired-insert-marked-thumbs) Insert thumbnails before file names of marked files in the dired buffer Thierry Volpiatto
2010-05-25 15:49 ` Juri Linkov
2010-05-25 16:59 ` Thierry Volpiatto
2010-05-25 17:46 ` Juri Linkov
2010-06-30 20:35 ` bug#5281: 23.1; xml-parse-region causes infinite loops if the region is not well-formed XML Chong Yidong
2009-12-29 18:19 bug#5284: 23.1; gnus-summary-expire-thread does not work Tom Tromey
2010-05-11 6:04 ` Andreas Seltenreich
[not found] ` <mailman.7.1273778942.8369.bug-gnu-emacs@gnu.org>
2010-06-30 21:35 ` Ted Zlatanov
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
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20091008164839.BAC66EFE6B@sonic02.math.uni-bielefeld.de \
--to=rost@math.uni-bielefeld.de \
--cc=4655@emacsbugs.donarmstrong.com \
--cc=lekktu@gmail.com \
--cc=monnier@iro.umontreal.ca \
/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 public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).