Subject: 27.0.50; Test Gnus group names when reading from the browse mode
From: Eric Abrahamsen <[email-masked]>
To: [email-masked]
Date: Thu, 15 Nov 2018 14:07:51 -0800
List-Id: <debbugs-submit.debbugs.gnu.org>

When browsing server groups through the *Gnus Browse Mode* interface,
entering a group either reads the solid group, if it's already active,
or creates an ephemeral copy of the server and reads it there, if it
isn't.

That might work for nntp servers, but for servers like nnmaildir that
keep their own group accounting, if you create an ephemeral copy of the
server it will have no groups, and you can't browse the group from the
Browse interface.

This patch checks if the group in question belongs to the native server,
and shortens the group name if so, so that we can accurately know if the
group is subscribed or not.

Eric

From 8171708c120e1c65550f39e0075fd4054582b82b Mon Sep 17 00:00:00 2001
From: Eric Abrahamsen <[email-masked]>
Date: Thu, 15 Nov 2018 13:59:27 -0800
Subject: [PATCH] Check Gnus group names when reading from a browse server

* lisp/gnus/gnus-srvr.el (gnus-browse-read-group): If the group in
  question belongs to the native server, the name has to be shortened
  before we check it wil `gnus-get-info'. It might work otherwise with
  nntp, but for backends like nnmaildir that have their own accounting
  system, creating an ephemeral group won't work.
---
 lisp/gnus/gnus-srvr.el | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/lisp/gnus/gnus-srvr.el b/lisp/gnus/gnus-srvr.el
index dfca5e9d2c..34ebd00ef2 100644
--- a/lisp/gnus/gnus-srvr.el
+++ b/lisp/gnus/gnus-srvr.el
@@ -925,7 +925,11 @@ gnus-browse-read-group
   "Enter the group at the current line.
 If NUMBER, fetch this number of articles."
   (interactive "P")
-  (let ((group (gnus-browse-group-name)))
+  (let* ((full-name (gnus-browse-group-name))
+	 (group (if (gnus-native-method-p
+		     (gnus-find-method-for-group full-name))
+		    (gnus-group-short-name full-name)
+		  full-name)))
     (if (or (not (gnus-get-info group))
 	    (gnus-ephemeral-group-p group))
 	(unless (gnus-group-read-ephemeral-group
-- 
2.19.1