unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#64117: 28.2; "gnus-request-set-mark: Buffer is read-only" when exiting agentized, unplugged summary buffer
@ 2023-06-16 18:58 Jens Schmidt via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-06-21 13:13 ` Jens Schmidt via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 10+ messages in thread
From: Jens Schmidt via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-06-16 18:58 UTC (permalink / raw)
  To: 64117

This issue should be also present in Emacs master, judging by the
code.  However I have reproduced this issue only in my
"production Emacs" on 28.2 and, in particular, *not* in an "emacs
-Q" environment.  Gnus setup complete with IMAP and all is
finicky, so probably you accept this bug report without all that.

Here are the steps to reproduce the issue:

- Ensure you have an agentized nnimap group G with some unread
   articles.

- Ensure Gnus is unplugged.

- Enter group G from the *Group* buffer by pressing "RET" on it.

- Mark some unread articles in the summary buffer of G as "read"
   by positioning point on them and pressing "d".

- Exit group G from the summary buffer by pressing "q".

The last step results in an error

   gnus-request-set-mark: Buffer is read-only: #<buffer *Summary 
nnimap+<host>:INBOX*>

for me.

Expected result is that the agent writes the information on the
marks that have changed while unplugged to a separate file which
it later, when Gnus gets plugged again, replays.

The reason for the bug us most likely commit

 
https://git.savannah.gnu.org/cgit/emacs.git/commit/src?id=cb12a84f2c519a48dd87453c925e3bc36d9944db

and here the change

   * lisp/gnus/nnagent.el: Don't use a unibyte buffer.

The author has removed a macro call to `mm-with-unibyte-buffer'
in function `nnagent-request-set-mark' without replacing it by,
for example, a call to `with-temp-buffer'.  Accordingly, function
`nnagent-request-set-mark' tries to operate on the current
buffer, which happens to be the read-only summary buffer.

Adding a `with-temp-buffer' around the inserts and the call to
`write-region' fixes this issue (showing 28.2-based code):

(deffoo nnagent-request-set-mark (group action server)
   (with-temp-buffer
     (insert "(gnus-agent-synchronize-group-flags \""
	    group
	    "\" '")
     (gnus-pp action)
     (insert " \""
	    (gnus-method-to-server gnus-command-method)
	    "\"")
     (insert ")\n")
     (let ((coding-system-for-write nnheader-file-coding-system))
       (write-region (point-min) (point-max) (gnus-agent-lib-file "flags")
		    t 'silent)))
   ;; Also set the marks for the original back end that keeps marks in
   ;; the local system.
   (let ((gnus-agent nil))
     (when (and (memq (car gnus-command-method) '(nntp))
	       (gnus-check-backend-function 'request-set-mark
					    (car gnus-command-method)))
       (funcall (gnus-get-function gnus-command-method 'request-set-mark)
	       group action server)))
   nil)

I could provide a patch on emacs-29 but only without actually
testing it...





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#64117: 28.2; "gnus-request-set-mark: Buffer is read-only" when exiting agentized, unplugged summary buffer
  2023-06-16 18:58 bug#64117: 28.2; "gnus-request-set-mark: Buffer is read-only" when exiting agentized, unplugged summary buffer Jens Schmidt via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-06-21 13:13 ` Jens Schmidt via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-06-21 13:52   ` Andrew Cohen
  0 siblings, 1 reply; 10+ messages in thread
From: Jens Schmidt via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-06-21 13:13 UTC (permalink / raw)
  To: Andrew G Cohen; +Cc: 64117

Hi Andrew,

you already have helped me out with a Gnus problem - probably could you
have a look at this one as well?  Looks simple enough, only I wonder why
nobody has complained earlier ...

BTW, is there a more appropriate ML to report Gnus issues than the
generic Emacs one?  And how about development questions related to Gnus?
info-gnus-english looks so abandoned ... I hope Gnus isn't.

Thanks!

Jens






^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#64117: 28.2; "gnus-request-set-mark: Buffer is read-only" when exiting agentized, unplugged summary buffer
  2023-06-21 13:13 ` Jens Schmidt via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-06-21 13:52   ` Andrew Cohen
  2023-06-21 14:14     ` Eli Zaretskii
  0 siblings, 1 reply; 10+ messages in thread
From: Andrew Cohen @ 2023-06-21 13:52 UTC (permalink / raw)
  To: Jens Schmidt; +Cc: 64117, Eric Abrahamsen, Andrew G Cohen

>>>>> "JS" == Jens Schmidt <jschmidt4gnu@vodafonemail.de> writes:

    JS> Hi Andrew, you already have helped me out with a Gnus problem -
    JS> probably could you have a look at this one as well?  Looks
    JS> simple enough, only I wonder why nobody has complained earlier
    JS> ...

I don't think many people are using the features that hit this code path
(I don't use the agent, for example). But the problem and your fix seems
pretty obvious.  This is Eric's code, so I am copying him to confirm.
Since he might be busy, if he doesn't respond in a few days I think I'll
go ahead and push this fix to master.

Eli, this error was introduced almost 4 years ago but probably counts as
a regression. Should we consider also fixing on 29? (Adding the use of a
temp buffer is pretty unlikely to cause any problems).

    JS> BTW, is there a more appropriate ML to report Gnus issues than
    JS> the generic Emacs one?  And how about development questions
    JS> related to Gnus?  info-gnus-english looks so abandoned ... I
    JS> hope Gnus isn't.

Gnus certainly isn't dead, although there aren't many of us working on
new features. The lists that still see (light) traffic are
emacs.gnus.general and emacs.gnus.user (which I use through gmane), and
you can certainly post there. 

Best,
Andy

-- 
Andrew Cohen





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#64117: 28.2; "gnus-request-set-mark: Buffer is read-only" when exiting agentized, unplugged summary buffer
  2023-06-21 13:52   ` Andrew Cohen
@ 2023-06-21 14:14     ` Eli Zaretskii
  2023-06-21 14:22       ` Andrew Cohen
  0 siblings, 1 reply; 10+ messages in thread
From: Eli Zaretskii @ 2023-06-21 14:14 UTC (permalink / raw)
  To: Andrew Cohen; +Cc: 64117, eric, jschmidt4gnu, cohen

> Cc: 64117@debbugs.gnu.org, Eric Abrahamsen <eric@ericabrahamsen.net>,
>  Andrew G Cohen <cohen@andy.bu.edu>
> From: Andrew Cohen <cohen@bu.edu>
> Date: Wed, 21 Jun 2023 21:52:53 +0800
> 
> Eli, this error was introduced almost 4 years ago but probably counts as
> a regression. Should we consider also fixing on 29? (Adding the use of a
> temp buffer is pretty unlikely to cause any problems).

Please show the patch, it is hard to decide without a good idea what
is about to change.

Thanks.





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#64117: 28.2; "gnus-request-set-mark: Buffer is read-only" when exiting agentized, unplugged summary buffer
  2023-06-21 14:14     ` Eli Zaretskii
@ 2023-06-21 14:22       ` Andrew Cohen
  2023-06-21 14:34         ` Eli Zaretskii
  0 siblings, 1 reply; 10+ messages in thread
From: Andrew Cohen @ 2023-06-21 14:22 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Andrew Cohen, 64117, eric, jschmidt4gnu, cohen

>>>>> "EZ" == Eli Zaretskii <eliz@gnu.org> writes:

[...]

    EZ> Please show the patch, it is hard to decide without a good idea
    EZ> what is about to change.

Oops, sorry. Here it is (the change just wraps the bulk of a function
with (with-temp-buffer ...))


@@ -118,17 +118,18 @@ nnagent-request-post
   (gnus-request-accept-article "nndraft:queue" nil t t))
 
 (deffoo nnagent-request-set-mark (group action server)
-  (insert "(gnus-agent-synchronize-group-flags \""
-	  group
-	  "\" '")
-  (gnus-pp action)
-  (insert " \""
-	  (gnus-method-to-server gnus-command-method)
-	  "\"")
-  (insert ")\n")
-  (let ((coding-system-for-write nnheader-file-coding-system))
-    (write-region (point-min) (point-max) (gnus-agent-lib-file "flags")
-		  t 'silent))
+  (with-temp-buffer
+    (insert "(gnus-agent-synchronize-group-flags \""
+	    group
+	    "\" '")
+    (gnus-pp action)
+    (insert " \""
+	    (gnus-method-to-server gnus-command-method)
+	    "\"")
+    (insert ")\n")
+    (let ((coding-system-for-write nnheader-file-coding-system))
+      (write-region (point-min) (point-max) (gnus-agent-lib-file "flags")
+		    t 'silent)))
   ;; Also set the marks for the original back end that keeps marks in
   ;; the local system.
   (let ((gnus-agent nil))

-- 
Andrew Cohen





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#64117: 28.2; "gnus-request-set-mark: Buffer is read-only" when exiting agentized, unplugged summary buffer
  2023-06-21 14:22       ` Andrew Cohen
@ 2023-06-21 14:34         ` Eli Zaretskii
  2023-07-01 21:05           ` Jens Schmidt via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 10+ messages in thread
From: Eli Zaretskii @ 2023-06-21 14:34 UTC (permalink / raw)
  To: Andrew Cohen; +Cc: 64117, eric, jschmidt4gnu, cohen

> From: Andrew Cohen <cohen@bu.edu>
> Cc: Andrew Cohen <cohen@bu.edu>,  jschmidt4gnu@vodafonemail.de,
>   64117@debbugs.gnu.org,  eric@ericabrahamsen.net,  cohen@andy.bu.edu
> Date: Wed, 21 Jun 2023 22:22:37 +0800
> 
> >>>>> "EZ" == Eli Zaretskii <eliz@gnu.org> writes:
> 
> [...]
> 
>     EZ> Please show the patch, it is hard to decide without a good idea
>     EZ> what is about to change.
> 
> Oops, sorry. Here it is (the change just wraps the bulk of a function
> with (with-temp-buffer ...))

Thanks, this is okay for emacs-29.





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#64117: 28.2; "gnus-request-set-mark: Buffer is read-only" when exiting agentized, unplugged summary buffer
  2023-06-21 14:34         ` Eli Zaretskii
@ 2023-07-01 21:05           ` Jens Schmidt via Bug reports for GNU Emacs, the Swiss army knife of text editors
  2023-07-01 22:52             ` Andrew Cohen
  0 siblings, 1 reply; 10+ messages in thread
From: Jens Schmidt via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-07-01 21:05 UTC (permalink / raw)
  To: Eli Zaretskii, Andrew Cohen; +Cc: 64117, eric, cohen

On 2023-06-21  16:34, Eli Zaretskii wrote:

> Thanks, this is okay for emacs-29.

Andrew's fix is already in Emacs 29 and master (thanks).  Should I close 
this bug or do we still wait for Eric's feedback?






^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#64117: 28.2; "gnus-request-set-mark: Buffer is read-only" when exiting agentized, unplugged summary buffer
  2023-07-01 21:05           ` Jens Schmidt via Bug reports for GNU Emacs, the Swiss army knife of text editors
@ 2023-07-01 22:52             ` Andrew Cohen
  2023-07-01 23:54               ` Eric Abrahamsen
  0 siblings, 1 reply; 10+ messages in thread
From: Andrew Cohen @ 2023-07-01 22:52 UTC (permalink / raw)
  To: Jens Schmidt; +Cc: Andrew Cohen, 64117, Eli Zaretskii, eric

Please go ahead and close.

Jul 2, 2023 05:06:06 Jens Schmidt <jschmidt4gnu@vodafonemail.de>:

> On 2023-06-21  16:34, Eli Zaretskii wrote:
>
>> Thanks, this is okay for emacs-29.
>
> Andrew's fix is already in Emacs 29 and master (thanks).  Should I 
> close this bug or do we still wait for Eric's feedback?





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#64117: 28.2; "gnus-request-set-mark: Buffer is read-only" when exiting agentized, unplugged summary buffer
  2023-07-01 22:52             ` Andrew Cohen
@ 2023-07-01 23:54               ` Eric Abrahamsen
  2023-07-02  7:14                 ` Jens Schmidt via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 1 reply; 10+ messages in thread
From: Eric Abrahamsen @ 2023-07-01 23:54 UTC (permalink / raw)
  To: Andrew Cohen; +Cc: Andrew Cohen, 64117, Eli Zaretskii, Jens Schmidt


On 07/02/23 06:52 AM, Andrew Cohen wrote:
> Please go ahead and close.
>
> Jul 2, 2023 05:06:06 Jens Schmidt <jschmidt4gnu@vodafonemail.de>:
>
>> On 2023-06-21  16:34, Eli Zaretskii wrote:
>>
>>> Thanks, this is okay for emacs-29.
>>
>> Andrew's fix is already in Emacs 29 and master (thanks).  Should I
>> close this bug or do we still wait for Eric's feedback?

Thanks to all for taking care of this!





^ permalink raw reply	[flat|nested] 10+ messages in thread

* bug#64117: 28.2; "gnus-request-set-mark: Buffer is read-only" when exiting agentized, unplugged summary buffer
  2023-07-01 23:54               ` Eric Abrahamsen
@ 2023-07-02  7:14                 ` Jens Schmidt via Bug reports for GNU Emacs, the Swiss army knife of text editors
  0 siblings, 0 replies; 10+ messages in thread
From: Jens Schmidt via Bug reports for GNU Emacs, the Swiss army knife of text editors @ 2023-07-02  7:14 UTC (permalink / raw)
  To: Eric Abrahamsen, Andrew Cohen; +Cc: Andrew Cohen, 64117-done, Eli Zaretskii

On 2023-07-02  01:54, Eric Abrahamsen wrote:

> Thanks to all for taking care of this!

Same here.

Closed.






^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2023-07-02  7:14 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-06-16 18:58 bug#64117: 28.2; "gnus-request-set-mark: Buffer is read-only" when exiting agentized, unplugged summary buffer Jens Schmidt via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-06-21 13:13 ` Jens Schmidt via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-06-21 13:52   ` Andrew Cohen
2023-06-21 14:14     ` Eli Zaretskii
2023-06-21 14:22       ` Andrew Cohen
2023-06-21 14:34         ` Eli Zaretskii
2023-07-01 21:05           ` Jens Schmidt via Bug reports for GNU Emacs, the Swiss army knife of text editors
2023-07-01 22:52             ` Andrew Cohen
2023-07-01 23:54               ` Eric Abrahamsen
2023-07-02  7:14                 ` Jens Schmidt via Bug reports for GNU Emacs, the Swiss army knife of text editors

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).