unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#42993: 26.3; [PATCH] Let Info bookmarks go to current, not recorded, version of manual
@ 2020-08-23  6:07 Drew Adams
  2020-08-23  6:26 ` Eli Zaretskii
  0 siblings, 1 reply; 5+ messages in thread
From: Drew Adams @ 2020-08-23  6:07 UTC (permalink / raw)
  To: 42993

[-- Attachment #1: Type: text/plain, Size: 2878 bytes --]

An Info bookmark, like most bookmarks, records the target file as an
absolute file name.  When you jump to an Info bookmark it jumps to the
recorded node in that Info file.

But what if you have Info bookmarks that were recorded for older Emacs
versions?  They typically have different absolute file names.  When you
jump to such a bookmark it will go to the manual for that older Emacs
version, if you still have it installed (and the Info files are at the
same locations as recorded by the bookmark).

This is a feature: you can have Info bookmarks to manuals for different
Emacs versions.  As long as those manuals are still available, bookmarks
to them continue to work.

But this behavior might not be what you want, in general.  In
particular, if an older, recorded Info file is no longer present, then
jumping to the bookmark just takes you to the top of Info (`dir') in the
manual that corresponds to the current Emacs session, and you're shown
an error message saying that the file in question doesn't exist.

The attached patch (from today's master) does two related things:

1. It adds a user option, `Info-bookmark-use-current-manual', which if
   non-nil makes Info bookmarks use the current manual, that is, the
   manual of the current Emacs session.

   The default value is nil, only for backward compatibility.  It gives
   you the behavior before the patch.

   I personally think the default value should be t, as I think the old
   behavior is essentially broken.  You decide.

2. If the option value is nil, and if the targeted Info file can't be
   found, then instead of raising an error you're taken to the target
   node in the current manual.

Another possibility would be to consider that users may often want to
toggle between the two behaviors, e.g., usually use the latest manuals
but sometimes use a recorded manual.  In that case, a non-option
variable might be better, along with a toggle command.

Still another possibility would be to give users a way to specify (when
creating an Info bookmark or later, by editing it), whether they want it
to go to the latest (current) manual or be tied to the recorded manual.
IOW, put the behavior specified by the variable in the bookmark instead.
IF a bookmark has some particular field value THEN respect its absolute
file name.  OTHERWISE, use the current Info manual.

That last possibility could be combined with the use of the variable, by
changing the OTHERWISE clause to follow the behavior specified by the
variable.

In GNU Emacs 26.3 (build 1, x86_64-w64-mingw32)
 of 2019-08-29
Repository revision: 96dd0196c28bc36779584e47fffcca433c9309cd
Windowing system distributor `Microsoft Corp.', version 10.0.18362
Configured using:
 `configure --without-dbus --host=x86_64-w64-mingw32
 --without-compress-install 'CFLAGS=-O2 -static -g3''

[-- Attachment #2: info-2020-08-22a.patch --]
[-- Type: application/octet-stream, Size: 1856 bytes --]

diff -u info.el info-2020-08-22a-PATCHED.el
--- info.el	2020-08-22 22:07:06.722986400 -0700
+++ info-2020-08-22a-PATCHED.el	2020-08-22 22:40:01.371990300 -0700
@@ -382,6 +382,12 @@
   :type 'hook
   :group 'info)
 
+(defcustom Info-bookmark-use-current-manual nil
+  "Non-nil means Info bookmarks use the manuals for this Emacs version.
+Otherwise they use the manuals whose absolute file names are recorded
+in the bookmarks."
+  :type 'boolean :group 'info)
+
 (defvar-local Info-current-file nil
   "Info file that Info is now looking at, or nil.
 This is the name that was specified in Info, not the actual file name.
@@ -5347,10 +5353,18 @@
 ;;;###autoload
 (defun Info-bookmark-jump (bmk)
   "This implements the `handler' function interface for the record
-type returned by `Info-bookmark-make-record', which see."
-  (let* ((file                   (bookmark-prop-get bmk 'filename))
+type returned by `Info-bookmark-make-record', which see.
+
+If `Info-bookmark-use-current-manual' is nil, and the recorded Info
+file exists, then use it.  If not, then go to the recorded Info node
+in the manual for the current Emacs version."
+  (let* ((absfile                (bookmark-prop-get bmk 'filename))
+         (file                   (if (or Info-bookmark-use-current-manual
+                                         (not (file-exists-p absfile)))
+                                     (file-name-nondirectory absfile)
+                                   absfile))
          (info-node              (bookmark-prop-get bmk 'info-node))
-         (buf (save-window-excursion    ;FIXME: doesn't work with frames!
+         (buf (save-window-excursion ; FIXME: doesn't work with frames!
                 (Info-find-node file info-node) (current-buffer))))
     ;; Use bookmark-default-handler to move to the appropriate location
     ;; within the node.

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

* bug#42993: 26.3; [PATCH] Let Info bookmarks go to current, not recorded, version of manual
  2020-08-23  6:07 Drew Adams
@ 2020-08-23  6:26 ` Eli Zaretskii
  0 siblings, 0 replies; 5+ messages in thread
From: Eli Zaretskii @ 2020-08-23  6:26 UTC (permalink / raw)
  To: Drew Adams; +Cc: 42993

> Date: Sat, 22 Aug 2020 23:07:09 -0700 (PDT)
> From: Drew Adams <drew.adams@oracle.com>
> 
> An Info bookmark, like most bookmarks, records the target file as an
> absolute file name.  When you jump to an Info bookmark it jumps to the
> recorded node in that Info file.
> 
> But what if you have Info bookmarks that were recorded for older Emacs
> versions?  They typically have different absolute file names.  When you
> jump to such a bookmark it will go to the manual for that older Emacs
> version, if you still have it installed (and the Info files are at the
> same locations as recorded by the bookmark).

The "official" way of installing Emacs will put the Info files into a
single directory, so installing a newer version will overwrite the
Info files with those of the newer version, leaving the absolute file
name of the manual unchanged.

So it sounds like you are suggesting a solution for a problem that
happens only for users who for some reason install each Emacs version
in a different place.  How many such users are there?





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

* bug#42993: 26.3; [PATCH] Let Info bookmarks go to current, not recorded, version of manual
       [not found] ` <<83mu2l98tg.fsf@gnu.org>
@ 2020-08-23 16:32   ` Drew Adams
  2020-08-30 21:03     ` Drew Adams
  0 siblings, 1 reply; 5+ messages in thread
From: Drew Adams @ 2020-08-23 16:32 UTC (permalink / raw)
  To: Eli Zaretskii, Drew Adams; +Cc: 42993

> > An Info bookmark, like most bookmarks, records the target file as an
> > absolute file name.  When you jump to an Info bookmark it jumps to the
> > recorded node in that Info file.
> >
> > But what if you have Info bookmarks that were recorded for older Emacs
> > versions?  They typically have different absolute file names.  When you
> > jump to such a bookmark it will go to the manual for that older Emacs
> > version, if you still have it installed (and the Info files are at the
> > same locations as recorded by the bookmark).
> 
> The "official" way of installing Emacs will put the Info files into a
> single directory, so installing a newer version will overwrite the
> Info files with those of the newer version, leaving the absolute file
> name of the manual unchanged.
> 
> So it sounds like you are suggesting a solution for a problem that
> happens only for users who for some reason install each Emacs version
> in a different place.  How many such users are there?

You make a good point.

I don't know how many such users there are.
I do think Emacs should support such use cases.

I see no reason that it shouldn't.  As I said, I
consider it a feature to be able to have Info
bookmarks to manuals for different Emacs versions.

Another consideration is using the same bookmarks
across different systems (e.g. MS Windows and
GNU/Linux), where the absolute locations, even
for "official installations" are likely to differ.

Requiring an Info bookmark to work only with its
absolute file name is, I think, unnecessarily
restrictive, even if it can also be useful (see
above: it's a feature).

But the point you make is certainly another
argument supporting user control of the behavior
(e.g. an option).





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

* bug#42993: 26.3; [PATCH] Let Info bookmarks go to current, not recorded, version of manual
  2020-08-23 16:32   ` bug#42993: 26.3; [PATCH] Let Info bookmarks go to current, not recorded, version of manual Drew Adams
@ 2020-08-30 21:03     ` Drew Adams
  2021-05-13  9:55       ` Lars Ingebrigtsen
  0 siblings, 1 reply; 5+ messages in thread
From: Drew Adams @ 2020-08-30 21:03 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 42993

> Another consideration is using the same bookmarks
> across different systems (e.g. MS Windows and
> GNU/Linux), where the absolute locations, even
> for "official installations" are likely to differ.
> 
> Requiring an Info bookmark to work only with its
> absolute file name is, I think, unnecessarily
> restrictive, even if it can also be useful (see
> above: it's a feature).
> 
> But the point you make is certainly another
> argument supporting user control of the behavior
> (e.g. an option).

Figuring that this suggestion, like others, won't
be added to Emacs, I've added it to my `info+.el'.

(If you do ever decide to add this to Emacs then
let me know, as the code I use now is slightly
better than the patch in this thread.)





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

* bug#42993: 26.3; [PATCH] Let Info bookmarks go to current, not recorded, version of manual
  2020-08-30 21:03     ` Drew Adams
@ 2021-05-13  9:55       ` Lars Ingebrigtsen
  0 siblings, 0 replies; 5+ messages in thread
From: Lars Ingebrigtsen @ 2021-05-13  9:55 UTC (permalink / raw)
  To: Drew Adams; +Cc: 42993

Drew Adams <drew.adams@oracle.com> writes:

> Figuring that this suggestion, like others, won't
> be added to Emacs, I've added it to my `info+.el'.

OK; closing this bug report, then.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





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

end of thread, other threads:[~2021-05-13  9:55 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
     [not found] <<1e8dbcb9-e47f-48fd-a34a-f1cf304ba4cc@default>
     [not found] ` <<83mu2l98tg.fsf@gnu.org>
2020-08-23 16:32   ` bug#42993: 26.3; [PATCH] Let Info bookmarks go to current, not recorded, version of manual Drew Adams
2020-08-30 21:03     ` Drew Adams
2021-05-13  9:55       ` Lars Ingebrigtsen
2020-08-23  6:07 Drew Adams
2020-08-23  6:26 ` Eli Zaretskii

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