GNU logs - #60587, boring messages


Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#60587: 30.0.50; Info pages are lacking links from symbol names to the symbol's help documentation
Resent-From: "H. Dieter Wilhelm" <dieter@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Thu, 05 Jan 2023 23:48:01 +0000
Resent-Message-ID: <handler.60587.B.167296246929863 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: report 60587
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: 60587 <at> debbugs.gnu.org
Cc: Ihor Radchenko <yantar92@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>, Stefan Monnier <monnier@HIDDEN>
X-Debbugs-Original-To: bug-gnu-emacs@HIDDEN
Received: via spool by submit <at> debbugs.gnu.org id=B.167296246929863
          (code B ref -1); Thu, 05 Jan 2023 23:48:01 +0000
Received: (at submit) by debbugs.gnu.org; 5 Jan 2023 23:47:49 +0000
Received: from localhost ([127.0.0.1]:53288 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pDZxd-0007lb-E2
	for submit <at> debbugs.gnu.org; Thu, 05 Jan 2023 18:47:49 -0500
Received: from lists.gnu.org ([209.51.188.17]:51202)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <dieter@HIDDEN>) id 1pDZxc-0007lR-Ku
 for submit <at> debbugs.gnu.org; Thu, 05 Jan 2023 18:47:48 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10])
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <dieter@HIDDEN>)
 id 1pDZxb-0002Do-IX
 for bug-gnu-emacs@HIDDEN; Thu, 05 Jan 2023 18:47:48 -0500
Received: from mout.kundenserver.de ([212.227.126.130])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <dieter@HIDDEN>)
 id 1pDZxZ-0007jo-MJ; Thu, 05 Jan 2023 18:47:47 -0500
Received: from ping ([109.250.146.1]) by mrelayeu.kundenserver.de (mreue012
 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MelWf-1od98s2qFZ-00anBV; Fri, 06
 Jan 2023 00:47:35 +0100
From: "H. Dieter Wilhelm" <dieter@HIDDEN>
Date: Fri, 06 Jan 2023 00:47:32 +0100
Message-ID: <86y1qgr1bf.fsf@HIDDEN>
MIME-Version: 1.0
Content-Type: text/plain
X-Provags-ID: V03:K1:KE6nSXjVrN33rnsd8E7gXnNjjt25F+UKqgMPA8hbQf6ZxtUrkyN
 N4491bzcQUIun0OroBzNFVwICFeNWB4AmVMCTF7l/DCLX16bezFqWI8Z4vBzCdhThpydnFR
 GJF/wnz57Hv1VWV5b6xZhrwVaKHGO1vAcVaxNZ7iWtjCHQJcRj2a+2hcXnRtLQ6dJGIWY+c
 WQLdl6DWRBgaq9rRFIilg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:JqAxJqTuuPw=;Xh2ElzpluC2VxfommlhUIrOFmiJ
 1SpoHFjhqB1mutuUOg8dvyMP/m9pKn4MSSNhQv1RicV1sGdW4CWoof5AsY9PT4smc35sFGH/c
 3eXU2ba62YptgVtL3xANvhe+nSiZq7GkVYxUwnXbGfrxqt+lTrU2GF4qunDQUKSXx/q5gIy20
 VHdvoJrvU10avt1UMVwjlIb74yqJmuN0142LfLXUeb/JyeNQcMgo36rRCxm12t9hahmaDbCVC
 TitrPlYsyvnwbybVl2ek2d5l3Y18acmNLJIwJlailVO4dMa93sXnHM1UAoGXMfJ9kjngGMhja
 cv5nDc9x9WTMalnoGlIj0onrtvwoNVjRfYxPZvHG4640ZYnJn4Kv9auj6ddw2s+QEIT67/Bd4
 6OPe+4s4YkkGbYqSsnNLNKUk9ID2/Hak6ulqLgIww27WYW0M4ALK321WojPhA8pxn5lGclRph
 pFHYBwWK18kNJx/tJy5170YRTto+pCPTsfPHMyfUXxAlpg6YSiUmooFp+y+OmU3JSiUx6YFj5
 iRIK4C+MK8FRSCr98z2xEsPrH3OngQ6SNfBv44Ydu9l4Z/d4SYsuBC3v+hNpcWqYZpQyKxZqc
 7/80a3cojMp+GE8dC1aJQMc93JobMFCt1+PWcdPI6C90C0vmdyu4g/2/cHwQJehX23kTQZgw8
 pu9X114Cfd1ObjtFXI7cXd31ewWVGqBBmSdvz/R10A==
Received-SPF: none client-ip=212.227.126.130;
 envelope-from=dieter@HIDDEN; helo=mout.kundenserver.de
X-Spam_score_int: -18
X-Spam_score: -1.9
X-Spam_bar: -
X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001,
 RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001,
 SPF_NONE=0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Hello 

Here's the bug-report which was proposed in the thread

"Re: [ELPA] New package: inform"

on the mailing list emacs-devel.

When I tried to attach a patch to illustrate the point of this
bug-report I've got an error message that it is not possible to send bug
reports with an attachment!?  I'll attach the patch when I've received
the acknowledgement.

     Dieter
-- 
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany




Message sent:


Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Mailer: MIME-tools 5.505 (Entity 5.505)
Content-Type: text/plain; charset=utf-8
X-Loop: help-debbugs@HIDDEN
From: help-debbugs@HIDDEN (GNU bug Tracking System)
To: "H. Dieter Wilhelm" <dieter@HIDDEN>
Subject: bug#60587: Acknowledgement (30.0.50; Info pages are lacking links
 from symbol names to the symbol's help documentation)
Message-ID: <handler.60587.B.167296246929863.ack <at> debbugs.gnu.org>
References: <86y1qgr1bf.fsf@HIDDEN>
X-Gnu-PR-Message: ack 60587
X-Gnu-PR-Package: emacs
Reply-To: 60587 <at> debbugs.gnu.org
Date: Thu, 05 Jan 2023 23:48:02 +0000

Thank you for filing a new bug report with debbugs.gnu.org.

This is an automatically generated reply to let you know your message
has been received.

Your message is being forwarded to the package maintainers and other
interested parties for their attention; they will reply in due course.

Your message has been sent to the package maintainer(s):
 bug-gnu-emacs@HIDDEN

If you wish to submit further information on this problem, please
send it to 60587 <at> debbugs.gnu.org.

Please do not send mail to help-debbugs@HIDDEN unless you wish
to report a problem with the Bug-tracking system.

--=20
60587: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D60587
GNU Bug Tracking System
Contact help-debbugs@HIDDEN with problems


Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#60587: Patch for adding links to symbols' help documentation
References: <86y1qgr1bf.fsf@HIDDEN>
In-Reply-To: <86y1qgr1bf.fsf@HIDDEN>
Resent-From: "H. Dieter Wilhelm" <dieter@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 06 Jan 2023 19:04:01 +0000
Resent-Message-ID: <handler.60587.B60587.1673031815503 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 60587
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: 60587 <at> debbugs.gnu.org
Received: via spool by 60587-submit <at> debbugs.gnu.org id=B60587.1673031815503
          (code B ref 60587); Fri, 06 Jan 2023 19:04:01 +0000
Received: (at 60587) by debbugs.gnu.org; 6 Jan 2023 19:03:35 +0000
Received: from localhost ([127.0.0.1]:55879 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pDs06-000081-H8
	for submit <at> debbugs.gnu.org; Fri, 06 Jan 2023 14:03:35 -0500
Received: from mout.kundenserver.de ([217.72.192.74]:57929)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <dieter@HIDDEN>) id 1pDs04-00007d-3t
 for 60587 <at> debbugs.gnu.org; Fri, 06 Jan 2023 14:03:33 -0500
Received: from ping ([109.250.227.141]) by mrelayeu.kundenserver.de (mreue108
 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MybCV-1or70i2ok1-00yzjQ
 for <60587 <at> debbugs.gnu.org>; Fri, 06 Jan 2023 20:03:25 +0100
From: "H. Dieter Wilhelm" <dieter@HIDDEN>
Date: Fri, 06 Jan 2023 20:03:23 +0100
Message-ID: <86tu13qydg.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Provags-ID: V03:K1:4VyOO3MPqNGAD3Fcwu+elbt4LWv6UaBNH3gKrUwo9/mPw2NRivI
 CN6+vRIH2zeeCnfQcNS+eorQqGwpLMYSEhjujQBG1lHHgP6anZDnh6vgbXeWrQeI3w/Jtc/
 IfzOlRnA+8YC27aSa4xciWzl6lWduOEEFW1GXcq2AbnQNcC0CcOE0M6OMAjhmV/W/k4I1gC
 ie0x+1fqs2saqusVdCetw==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:2wllreTeDr4=;WpGUbJQtPhAlgxr4r+LpF0gY70d
 rY00toE1vxRAZVgJuXfLJE1MD/XZ/viXpYZ0rd2HPyV9/igHc2YxT1NDEb5oRii8Rp18uBVwh
 8wpJaZ+KPCad5dRtyV19vKszU70MFEyGYwPU6suRJ7MgnUIjpfsgPAk+y9VIh5jKvaRzLrZe2
 s4O/ScHf2lc54L/XZhH2LcO7eGtx+4xX828ARg1pGIJbyy/nslMqLLTLb/4rm0rzwP9H6PT2T
 BZuflmiiyIusMjKb5PJTiR/g1ltdU/lx3OimL83lSIchnTOoeDYlwqNe/WIyUynhv9u4jMkul
 X6CqTAGKU4ph4iP3A6JDCldLGIYIWh+EGQ3sRiX3qWMovxb11zUwX2CoeluOQoDvtDtnnH6MV
 vfY2UcJYJ0ymcl8/qe2+i/qFyxs9ehq+zPhcsSnsIOCPgK3dWAMcqJeiLUr3h1M+HsqK2MGIl
 9XFaf4T5KgzQwNKVrk7fR8SgPMR4gOVSAvi2L2vyDFpXq2JuOLUeGc5Oo0mdySyJgj4jku974
 2KIn654i1HnKffjIGl4edZPc0gXwK9PPvQnQ0cRn2OQs0Y1AfIrFmgi+Y4fAN7mYgaJdOPci9
 c+ibbvOyBU4eLFWVeMKyvJeeuB1I/+TUfGvpzvayyy83965Vt+i/Foydt4+j346Xb8REMmKqG
 hRD1Ma9AiFSi5Bf4Xd4AhgdRIBtrcUrQneDvamQ1Ng==
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain

Hello Emacs,

I attached a patch for the current master branch build from git
format-patch.  And spliced the code to implement the linking of symbols
in info manuals to the help documentation into lisp/info-xref.el.

Thank you for your review


--=-=-=
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
 filename=0001-Provide-in-Info-manuals-links-of-symbols-to-their-he.patch
Content-Transfer-Encoding: quoted-printable

From a7a90284bbe5a55dd0a4cdd0759698787db0a4be Mon Sep 17 00:00:00 2001
From: Dieter Wilhelm <dieter@HIDDEN>
Date: Wed, 4 Jan 2023 20:50:15 +0100
Subject: [PATCH] Provide in Info manuals links of symbols to their help
 documentation

* lisp/info-xref.el contains all the necessary code.  It is separated
from the original code - for the moment - with lines of semi-colons.
---
 lisp/info-xref.el | 494 ++++++++++++++++++++++++++++++++++++++++++----
 1 file changed, 451 insertions(+), 43 deletions(-)

diff --git a/lisp/info-xref.el b/lisp/info-xref.el
index a910f38af84..6677ade1328 100644
--- a/lisp/info-xref.el
+++ b/lisp/info-xref.el
@@ -1,4 +1,4 @@
-;;; info-xref.el --- check external references in an Info document -*- lex=
ical-binding: t -*-
+;;; info-xref.el --- Cross references in an Info document -*- lexical-bind=
ing:  t -*-
=20
 ;; Copyright (C) 2003-2023 Free Software Foundation, Inc.
=20
@@ -38,6 +38,119 @@
 ;; `M-x info-xref-docstrings' checks docstring "Info node ..." hyperlinks =
in
 ;; source files (and other files).
=20
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;; This library provides links of symbols (functions, variables,
+;; faces) within Emacs' Info viewer to their builtin help
+;; documentation.  This linking is done, when the symbol names in
+;; texinfo documentations (like the Emacs- and Elisp manual) are
+
+;; 1. Quoted symbol names like `quoted-symbol' or:
+
+;; 2. Function names are prefixed by M-x, for example M-x
+;; function-name or are quoted and prefixed like `M-x function-name'.
+
+;; 3. Function names appearing behind the following forms, which
+;; occur, for example, in the Elisp manual:
+
+;;   -- Special Form: function-name
+;;   -- Command:
+;;   -- Function:
+;;   -- Macro:
+
+;; 4. And variables names behind the following text:
+
+;;   -- User Option: variable-name
+;;   -- Variable:
+
+;; In any case all symbol names must be known to Emacs, i.e. their
+;; names are found in the variable `obarray'.
+
+;; You can follow the additional links with the usual Info
+;; keybindings.  The customisation variable
+;; `mouse-1-click-follows-link' is influencing the clicking behavior
+;; (and the tooltips) of the links, the variable's default is 450
+;; (milli seconds) setting it to nil means only clicking with mouse-2
+;; is following the link (hint: Drew Adams).
+
+;; The link color of symbols - referencing their builtin documentation
+;; - is distinct from links which are referencing further Info
+;; documentation.
+
+;; Inform is checking if the Info documents are relevant Elisp and
+;; Emacs related files to avoid false positives.  Please see the
+;; customization variable `inform-none-emacs-or-elisp-documents'.
+
+;; The code uses mostly mechanisms from Emacs' lisp/help-mode.el file.
+
+;;; Change Log:
+
+;; 1.3:
+
+;; Inform is checking if the Info documents are relevant Elisp and
+;; Emacs related files to avoid false positives.
+
+;; 1.2:
+
+;; Link Elisp descriptions of symbols to their help documentation,
+;; like the following function example: -- Function: eval form
+
+;; Distinguish color of texinfo links (`link' type) and Help links
+;; (`font-lock-function-name-face')
+
+;;; TODO:
+
+;; Currently inconsistent link colors to help buffers: In *info*
+;; different as in *Help* buffers!
+
+;; Check the application `inform-xref-symbol-regexp' for additional
+;; symbol prefixes without quoting of symbol-names
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Does the following belong to customize.el?
+
+;; Generalise linking to "customization buffers" for the "easy
+;; customization" info documentation see also the customization
+;; section in the elisp manual
+
+;; - distinguish the Customization-links from Help- and Info-links
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;; Ideas:
+
+;; Link the help buffers back to higher level info manual subjects,
+;; similar to help-fns+.el from Drew Adams.
+
+;; Twice clicking or RETurning removes *Help* buffer (idea: Drew
+;; Adams)
+
+;; Different colors for different symbol types (idea: Drew Adams) see
+;; package helpful and info+ / info-colors on Melpa and see
+;; font-lock.el for common faces.
+
+;; - Do we need to indicate an already visited Help link with a
+;;   different color?
+
+;; - Would it be be good to overtake all colors of package
+;;   "info-colors"?
+
+;; - Do we need to distinguish the link FONTS? No, difficult to read!
+
+;; Back / Forward button in help buffer - back to info buffer or
+;; remain in help mode?
+
+;; Linking of standard symbol properties?
+
+;; - (info "(elisp) Standard Properties")
+
+;;  Elisp manual examples:
+;;       (symbol-name 'car) ... ?
+
+;; Shortening the verbose texinfo URLs?  But how to handle the changed
+;; indentation?
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
 ;;; History:
=20
 ;; Version 3 - new M-x info-xref-docstrings, use compilation-mode
@@ -297,16 +410,16 @@ info-xref-check
   (interactive
    (list
     (let* ((default-filename
-             (cond ((eq major-mode 'Info-mode)
-                    Info-current-file)
-                   ((eq major-mode 'texinfo-mode)
-                    ;; look for @setfilename like makeinfo.el does
-                    (save-excursion
-                      (goto-char (point-min))
-                      (if (re-search-forward
-                           "^@setfilename[ \t]+\\([^ \t\n]+\\)[ \t]*"
-                           (line-beginning-position 100) t)
-                          (expand-file-name (match-string 1)))))))
+            (cond ((eq major-mode 'Info-mode)
+                   Info-current-file)
+                  ((eq major-mode 'texinfo-mode)
+                   ;; look for @setfilename like makeinfo.el does
+                   (save-excursion
+                     (goto-char (point-min))
+                     (if (re-search-forward
+                          "^@setfilename[ \t]+\\([^ \t\n]+\\)[ \t]*"
+                          (line-beginning-position 100) t)
+                         (expand-file-name (match-string 1)))))))
            (prompt (if default-filename
                        (format "Info file (%s): " default-filename)
                      "Info file: ")))
@@ -367,24 +480,24 @@ info-xref-all-info-files
 (defun info-xref-check-list (filename-list)
   "Check external references in info documents in FILENAME-LIST."
   (info-xref-with-output
-    (dolist (info-xref-filename filename-list)
-      (setq info-xref-xfile-alist nil)
-      (let ((info-xref-output-heading
-             (format "Info file %s\n" info-xref-filename)))
-        (with-temp-message (format "Looking at %s" info-xref-filename)
-          (with-temp-buffer
-            (info-insert-file-contents info-xref-filename)
-            (goto-char (point-min))
-            (if (search-forward "\^_\nIndirect:\n" nil t)
-                (let ((dir (file-name-directory info-xref-filename)))
-                  (while (looking-at "\\(.*\\): [0-9]+\n")
-                    (let ((info-xref-filename
-                           (expand-file-name (match-string 1) dir)))
-                      (with-temp-buffer
-                        (info-insert-file-contents info-xref-filename)
-                        (info-xref-check-buffer)))
-                    (forward-line)))
-              (info-xref-check-buffer))))))))
+   (dolist (info-xref-filename filename-list)
+     (setq info-xref-xfile-alist nil)
+     (let ((info-xref-output-heading
+            (format "Info file %s\n" info-xref-filename)))
+       (with-temp-message (format "Looking at %s" info-xref-filename)
+         (with-temp-buffer
+           (info-insert-file-contents info-xref-filename)
+           (goto-char (point-min))
+           (if (search-forward "\^_\nIndirect:\n" nil t)
+               (let ((dir (file-name-directory info-xref-filename)))
+                 (while (looking-at "\\(.*\\): [0-9]+\n")
+                   (let ((info-xref-filename
+                          (expand-file-name (match-string 1) dir)))
+                     (with-temp-buffer
+                       (info-insert-file-contents info-xref-filename)
+                       (info-xref-check-buffer)))
+                   (forward-line)))
+             (info-xref-check-buffer))))))))
=20
 (defconst info-xref-node-re "\\(?1:\\(([^)]*)\\)[^.,]+\\)"
   "Regexp with subexp 1 matching (manual)node.")
@@ -513,7 +626,7 @@ info-xref-docstrings
 the sources handy."
   (interactive
    (let* ((default (and buffer-file-name
-                              (file-relative-name buffer-file-name)))
+                        (file-relative-name buffer-file-name)))
           (prompt (if default
                       (format "Filename with wildcards (%s): "
                               default)
@@ -539,23 +652,318 @@ info-xref-docstrings
      (setq info-xref-xfile-alist nil)  ;; "not found"s once per file
=20
      (info-xref-with-file info-xref-filename
-       (goto-char (point-min))
-       (while (re-search-forward help-xref-info-regexp nil t)
-         (let ((node (match-string 2)))
-           (save-excursion
-             (goto-char (match-beginning 2)) ;; start of node as error pos=
ition
+                          (goto-char (point-min))
+                          (while (re-search-forward help-xref-info-regexp =
nil t)
+                            (let ((node (match-string 2)))
+                              (save-excursion
+                                (goto-char (match-beginning 2)) ;; start o=
f node as error position
+
+                                ;; skip nodes with "%" as probably `format=
' strings such as in
+                                ;; info-look.el
+                                (unless (string-search "%" node)
+
+                                  ;; "(emacs)" is the default manual for d=
ocstring hyperlinks,
+                                  ;; per `help-make-xrefs'
+                                  (unless (string-match "\\`(" node)
+                                    (setq node (concat "(emacs)" node)))
+
+                                  (info-xref-check-node node)))))))))
=20
-             ;; skip nodes with "%" as probably `format' strings such as in
-             ;; info-look.el
-             (unless (string-search "%" node)
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
=20
-               ;; "(emacs)" is the default manual for docstring hyperlinks,
-               ;; per `help-make-xrefs'
-               (unless (string-match "\\`(" node)
-                 (setq node (concat "(emacs)" node)))
+(require 'button)
+(require 'cl-lib)
+(require 'help-mode)                   ;redundant?
=20
-               (info-xref-check-node node)))))))))
+;; activate inform without manually loading it. Is there a better way?
+;; ;;;###autoload (require 'info-xref)
=20
+;; this is spawning lisp/info-xref.el's definition to 'info! This
+;; group is sorted now in 'docs and 'info! -FIXME-
+(defgroup info-xref nil
+  "Customisation 'info-xref' subgroup of info.
+Check external cross-references in Info documents and provide
+hyperlinks from symbols to their help documentation."
+  :group 'info)
+
+;;;###autoload
+(defcustom info-xref-make-xref-flag t
+  "Non-nil means create symbol links in info buffers."
+  :type '(choice (const :tag "Create links" t)
+                 (const :tag "Do not link" nil))
+  :group 'info-xref)
+
+(require 'cl-seq)
+;; Info-director-list must be initialised
+(info-initialize)
+(defvar Info-xref-emacs-info-dir-content
+  (mapcar 'file-name-nondirectory ;'file-name-sans-extension
+          (directory-files
+           (car
+            ;; search for the main Emacs' info/ directory
+            (cl-member "[^.]emacs" Info-directory-list :test 'string-match=
-p))
+           ;; don't list "." and ".."
+           t  "[^.]$"))
+  "List of file names in Emacs' own info/ directory.")
+
+;; Turn into regexp list necessary? Stefan
+;; Switch to alist with explanation of file name?
+(defcustom info-xref-none-emacs-or-elisp-documents
+  '("aarm2012" ; Stefan: Ada manual, Elpa archive
+    "arm2012"  ; Stefan: Ada manual
+    "sicp"   ; T.V: Structure and Interpretation of Computer Programs,
+                                        ; Melpa archive
+    )
+  "List of all none GNU-Emacs or Elisp documentation.
+Or other documents not to be checked for linking to their help
+documentation.  The list must contains only the base name of the
+files (without their file name extension \".info\")."
+  :type '(repeat string)
+  :group 'info-xref)
+
+(defun Info-xref-check-docu-p ()
+  "Check if the current info file is relevant to Emacs.
+That means `Info-current-file' is either found in Emacs' info/
+directory or in `package-user-dir' and is not included in the
+`info-xref-none-emacs-or-elisp-documents' list."
+  (let* ((ifile Info-current-file)
+         (ifi (when ifile
+                (file-name-sans-extension
+                 (file-name-nondirectory ifile))))
+         (pdir (when (boundp 'package-user-dir)
+                 (expand-file-name
+                  package-user-dir)))
+         (ifiles Info-xref-emacs-info-dir-content)
+         (ndocu info-xref-none-emacs-or-elisp-documents))
+    (and ifile
+         (or (assoc-string (concat ifi ".info") ifiles)
+             ;; info files might be archived!
+             (assoc-string (concat ifi ".info.gz") ifiles)
+             (when pdir (string-match pdir ifile)))
+         (not (assoc-string ifi ndocu)))))
+
+(defvar describe-symbol-backends)      ;from help-mode.el
+(defvar help-xref-following)           ;dito
+
+;; this toggles the complete linking process
+;;;###autoload
+(when info-xref-make-xref-flag
+  (add-hook 'Info-selection-hook 'Info-xref-make-xrefs))
+
+(defface Info-xref-color
+  '((t (:inherit font-lock-doc-face
+                 ;; font-lock-preprocessor-face ; similar to link face (de=
fault)
+                 ;; font-lock-builtin-face ; similar (default Emacs)
+                 ;; font-lock-function-name-face ; similar (default)
+                 ;; Info-xref-face
+                 )))
+  "Face for the `symbol' reference items in `info' nodes."
+  :group 'info-colors)
+
+;; Button types
+
+(define-button-type 'Info-xref
+  'link t                         ;for Info-next-reference-or-link
+  'follow-link t
+  'face 'Info-xref-color
+  'action #'Info-xref-button-action)
+
+(define-button-type 'Info-xref-function
+  :supertype 'Info-xref
+  'Info-xref-function 'describe-function
+  'Info-xref-echo (purecopy "mouse-2, RET: describe this function"))
+
+(define-button-type 'Info-xref-variable
+  :supertype 'Info-xref
+  'Info-xref-function 'describe-variable
+  'Info-xref-echo (purecopy "mouse-2, RET: describe this variable"))
+
+(define-button-type 'Info-xref-face
+  :supertype 'Info-xref
+  'Info-xref-function 'describe-face
+  'Info-xref-echo (purecopy "mouse-2, RET: describe this face"))
+
+(define-button-type 'Info-xref-symbol
+  :supertype 'Info-xref
+  'Info-xref-function #'describe-symbol
+  'Info-xref-echo (purecopy "mouse-2, RET: describe this symbol"))
+
+(define-button-type 'Info-xref-function-def
+  :supertype 'Info-xref
+  'Info-xref-function (lambda (fun &optional file type)
+                        (or file
+                            (setq file (find-lisp-object-file-name fun typ=
e)))
+                        (if (not file)
+                            (message "Unable to find defining file")
+                          (require 'find-func)
+                          (when (eq file 'C-source)
+                            (setq file
+                                  (help-C-file-name (indirect-function fun=
) 'fun)))
+                          ;; Don't use find-function-noselect because it f=
ollows
+                          ;; aliases (which fails for built-in functions).
+                          (let ((location
+                                 (find-function-search-for-symbol fun type=
 file)))
+                            (pop-to-buffer (car location))
+                            (run-hooks 'find-function-after-hook)
+                            (if (cdr location)
+                                (goto-char (cdr location))
+                              (message "Unable to find location in file"))=
)))
+  'Info-xref-echo (purecopy "mouse-2, RET: find function's definition"))
+
+;; Functions
+
+(defun Info-xref-button-action (button)
+  "Call BUTTON's help function."
+  (Info-xref-do-xref nil
+                     (button-get button 'Info-xref-function)
+                     (button-get button 'Info-xref-args)))
+
+(defun Info-xref-do-xref (_pos function args)
+  "Call the help cross-reference function FUNCTION with args ARGS.
+Things are set up properly so that the resulting `help-buffer' has
+a proper [back] button."
+  ;; There is a reference at point.  Follow it.
+  (let ((help-xref-following nil))
+    (apply
+     function (if (eq function 'info)
+                  (append args (list (generate-new-buffer-name "*info*")))=
args))))
+
+(defun Info-xref-button (match-number type &rest args)
+  "Make a hyperlink for cross-reference text previously matched.
+MATCH-NUMBER is the subexpression of interest in the last matched
+regexp.  TYPE is the type of button to use.  Any remaining arguments are
+passed to the button's Info-xref-function when it is invoked.
+See `Info-xref-make-xrefs' Don't forget ARGS." ; -TODO-
+  ;; Don't mung properties we've added specially in some instances.
+  (unless (button-at (match-beginning match-number))
+    ;; (message "Creating button: %s." args)
+    (make-text-button (match-beginning match-number)
+                      (match-end match-number)
+                      'type type 'Info-xref-args args)))
+
+(defconst Info-xref-symbol-regexp
+  (purecopy (concat "\\(\\<\\(\\(variable\\|option\\)\\|"  ; Link to var
+                    "\\(function\\|command\\|call\\)\\|"   ; Link to funct=
ion
+                    "\\(face\\)\\|"                       ; Link to face
+                    "\\(symbol\\|program\\|property\\)\\|" ; Don't link
+                    "\\(source \\(?:code \\)?\\(?:of\\|for\\)\\)\\)"
+                    "[ \t\n]+\\)?"
+                    ;; Note starting with word-syntax character:
+                    "['`=E2=80=98]\\(\\sw\\(\\sw\\|\\s_\\)+\\|`\\)['=E2=80=
=99]"))
+  "Regexp matching doc string references to symbols.
+
+The words preceding the quoted symbol can be used in doc strings to
+distinguish references to variables, functions and symbols.")
+
+;;;###autoload
+(defun Info-xref-make-xrefs (&optional buffer)
+  "Parse and hyperlink documentation cross-references in the given BUFFER.
+
+Find cross-reference information in a buffer and activate such cross
+references for selection with `help-follow'.  Cross-references have
+the canonical form `...'  and the type of reference may be
+disambiguated by the preceding word(s) used in
+`Info-xref-symbol-regexp'.
+
+Function names are also prefixed by \"M-x\", for example \"M-x
+function-name\" or are quoted and prefixed like `M-x
+function-name'.
+
+Also Function names appearing behind the following forms, which
+occur, for example, in the Elisp manual:
+
+ -- Special Form: function-name
+ -- Command:
+ -- Function:
+ -- Macro:
+
+And variables names behind the following text:
+
+ -- User Option: variable-name
+ -- Variable:
+
+Faces only get cross-referenced if preceded or followed by the
+word `face'.  Variables without variable documentation do not get
+cross-referenced, unless preceded by the word `variable' or
+`option'."
+  (interactive "b")
+  (when (Info-xref-check-docu-p)
+    (with-current-buffer (or buffer (current-buffer))
+      (save-excursion
+        (goto-char (point-min))
+        ;; Skip the header-type info, though it might be useful to parse
+        ;; it at some stage (e.g. "function in `library'").
+        ;;      (forward-paragraph)
+        (with-silent-modifications      ;from Stefan
+          (let (;(stab (syntax-table))
+                (case-fold-search t)
+                (inhibit-read-only t))
+            (with-syntax-table emacs-lisp-mode-syntax-table
+              ;; Quoted symbols
+              (save-excursion
+                (while (re-search-forward Info-xref-symbol-regexp nil t)
+                  (let* ((data (match-string 8))
+                         (sym (intern-soft data)))
+                    (if sym
+                        (cond
+                         ((match-string 3) ; `variable' &c
+                          (and (or (boundp sym) ; `variable' doesn't ensure
+                                        ; it's actually bound
+                                   (get sym 'variable-documentation))
+                               (Info-xref-button 8 'Info-xref-variable sym=
)))
+                         ((match-string 4) ; `function' &c
+                          (and (fboundp sym) ; similarly
+                               (Info-xref-button 8 'Info-xref-function sym=
)))
+                         ((match-string 5) ; `face'
+                          (and (facep sym)
+                               (Info-xref-button 8 'Info-xref-face sym)))
+                         ((match-string 6)) ; nothing for `symbol'
+                         ((match-string 7)
+                          (Info-xref-button 8 'Info-xref-function-def sym))
+                         ((cl-some (lambda (x) (funcall (nth 1 x) sym))
+                                   describe-symbol-backends)
+                          (Info-xref-button 8 'Info-xref-symbol sym)))))))
+
+              ;; (info "(elisp) Eval")
+              ;; Elisp manual      -- Special Form:
+              ;;                   -- Command:
+              ;;                   -- Function: function-name function
+              ;;                   -- Macro:
+              (save-excursion
+                (while (re-search-forward
+                        "-- \\(Special Form:\\|Command:\\|Function:\\|Macr=
o:\\) "
+                        nil t)
+                  (looking-at "\\(\\sw\\|\\s_\\)+")
+                  (let ((sym (intern-soft (match-string 0))))
+                    (if (fboundp sym)
+                        (Info-xref-button 0 'Info-xref-function sym)))))
+
+              ;;              -- User Option:
+              ;;              -- Variable: variable-name
+              (save-excursion
+                (while (re-search-forward
+                        "-- \\(User Option:\\|Variable:\\) "
+                        nil t)
+                  (looking-at "\\(\\sw\\|\\s_\\)+")
+                  (let ((sym (intern-soft (match-string 0))))
+                    (if (boundp sym)
+                        (Info-xref-button 0 'Info-xref-variable sym)))))
+
+              ;; M-x prefixed functions
+              (save-excursion
+                (while (re-search-forward
+                        ;; Assume command name is only word and symbol
+                        ;; characters to get things like `use M-x foo->bar=
'.
+                        ;; Command required to end with word constituent
+                        ;; to avoid `.' at end of a sentence.
+                        ;; "\\<M-x\\s-+\\(\\sw\\(\\sw\\|\\s_\\)*\\sw\\)" n=
il t)
+                        ;; include M-x and quotes
+                        "['`=E2=80=98]?M-x\\s-*\n?\\(\\sw\\(\\sw\\|\\s_\\)=
*\\sw\\)['=E2=80=99]?" nil t)
+                  (let ((sym (intern-soft (match-string 1))))
+                    ;; (message "found %s" sym)
+                    (if (fboundp sym)
+                        (Info-xref-button 1 'Info-xref-function sym)))))))=
)))))
+;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
=20
 (provide 'info-xref)
=20
--=20
2.34.1


--=-=-=
Content-Type: text/plain


-- 
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany

--=-=-=--




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#60587: Patch for adding links to symbols' help documentation
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sat, 07 Jan 2023 07:39:01 +0000
Resent-Message-ID: <handler.60587.B60587.167307709925420 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 60587
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: "H. Dieter Wilhelm" <dieter@HIDDEN>, Stefan Monnier <monnier@HIDDEN>
Cc: 60587 <at> debbugs.gnu.org
Received: via spool by 60587-submit <at> debbugs.gnu.org id=B60587.167307709925420
          (code B ref 60587); Sat, 07 Jan 2023 07:39:01 +0000
Received: (at 60587) by debbugs.gnu.org; 7 Jan 2023 07:38:19 +0000
Received: from localhost ([127.0.0.1]:56381 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pE3mU-0006bv-Sg
	for submit <at> debbugs.gnu.org; Sat, 07 Jan 2023 02:38:19 -0500
Received: from eggs.gnu.org ([209.51.188.92]:42710)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1pE3mS-0006bi-QH
 for 60587 <at> debbugs.gnu.org; Sat, 07 Jan 2023 02:38:17 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pE3mM-00046M-Jg; Sat, 07 Jan 2023 02:38:10 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=r6IKAMTILweRcSY3x0ec315NbzPXwK9hvsO0hiFT5YU=; b=VyCMZubEdiOV
 H9BL0pFCmoZIlIcOBDXQ0jW2TeB2/9YX4VvT+MssTdHXN3LEZI3T4qzl6wlmcXBsY+H3nZJdWDgqE
 IL1IrT88dmkgwe3+skJ27O2EvlrR4i1OWs9is6JyzYJCfRHBNNSRH/KY7LB3CaXSG83B8YEGdfF/0
 qmHqkhHm6DUTo2NE39n5bPtVppQ3AcJAxEpGoWfgfSeEP+Zeyvqk0aEHFX9oikER8jtmAVC8akc5C
 zyNNeJyJGrhdckjHPHGAp5X6rDEUI9eagc8R0Fhxwdncz2YiSlCK08uLuIKpuZnZhXiLq6jjbnKA1
 2y+dLW78XFMdKPHOsbAO8w==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pE3mL-0000WE-Rn; Sat, 07 Jan 2023 02:38:10 -0500
Date: Sat, 07 Jan 2023 09:38:28 +0200
Message-Id: <83h6x2u74b.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <86tu13qydg.fsf@HIDDEN>
 (dieter@HIDDEN)
References: <86y1qgr1bf.fsf@HIDDEN>
 <86tu13qydg.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: "H. Dieter Wilhelm" <dieter@HIDDEN>
> Date: Fri, 06 Jan 2023 20:03:23 +0100
> 
> I attached a patch for the current master branch build from git
> format-patch.  And spliced the code to implement the linking of symbols
> in info manuals to the help documentation into lisp/info-xref.el.

Thanks.

I think this should be in info.el, or maybe in a separate
info-SOMETHING.el file.  info-xref.el is for a certain job, of
interest primarily to Emacs maintainers, that is different from this
one, and I'm not sure conflating them is TRT.

More specific comments below.

> +;; This library provides links of symbols (functions, variables,

The "This library" part is a remnant of the previous life of this
code, and should be reworded to refer to specific command(s).

> +;; In any case all symbol names must be known to Emacs, i.e. their
> +;; names are found in the variable `obarray'.

I think a more useful way of saying this is

  In any case, the symbol must be known to Emacs, which means it is
  either a built-in, or its Lisp package is loaded in the current
  Emacs session, or the symbol is auto-loaded.

> +;; Inform is checking if the Info documents are relevant Elisp and
      ^^^^^^
This should be adapted to the "new life" of Inform as part of Emacs.

> +;; Emacs related files to avoid false positives.  Please see the
> +;; customization variable `inform-none-emacs-or-elisp-documents'.
                              ^^^^^^
And this.

> +;;; Change Log:
> +
> +;; 1.3:
> +
> +;; Inform is checking if the Info documents are relevant Elisp and
> +;; Emacs related files to avoid false positives.
> +
> +;; 1.2:
> +
> +;; Link Elisp descriptions of symbols to their help documentation,
> +;; like the following function example: -- Function: eval form
> +
> +;; Distinguish color of texinfo links (`link' type) and Help links
> +;; (`font-lock-function-name-face')

Not sure if it makes sense to keep this change log.

> +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> +;; Does the following belong to customize.el?
> +
> +;; Generalise linking to "customization buffers" for the "easy
> +;; customization" info documentation see also the customization
> +;; section in the elisp manual
> +
> +;; - distinguish the Customization-links from Help- and Info-links
> +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
> +
> +;;; Ideas:
> +
> +;; Link the help buffers back to higher level info manual subjects,
> +;; similar to help-fns+.el from Drew Adams.
> +
> +;; Twice clicking or RETurning removes *Help* buffer (idea: Drew
> +;; Adams)
> +
> +;; Different colors for different symbol types (idea: Drew Adams) see
> +;; package helpful and info+ / info-colors on Melpa and see
> +;; font-lock.el for common faces.
> +
> +;; - Do we need to indicate an already visited Help link with a
> +;;   different color?
> +
> +;; - Would it be be good to overtake all colors of package
> +;;   "info-colors"?
> +
> +;; - Do we need to distinguish the link FONTS? No, difficult to read!
> +
> +;; Back / Forward button in help buffer - back to info buffer or
> +;; remain in help mode?
> +
> +;; Linking of standard symbol properties?
> +
> +;; - (info "(elisp) Standard Properties")
> +
> +;;  Elisp manual examples:
> +;;       (symbol-name 'car) ... ?
> +
> +;; Shortening the verbose texinfo URLs?  But how to handle the changed
> +;; indentation?
> +
> +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Please review this part and decide which portions should be kept,
perhaps after a suitable rewording, and which should be removed.

> +(require 'button)
> +(require 'cl-lib)
> +(require 'help-mode)                   ;redundant?

If this is added to an existing file, there should be a ^L and some
heading-style command before it.

> +;; activate inform without manually loading it. Is there a better way?
> +;; ;;;###autoload (require 'info-xref)
>  
> +;; this is spawning lisp/info-xref.el's definition to 'info! This
> +;; group is sorted now in 'docs and 'info! -FIXME-

Comments should start with a capital letter.

> +;;;###autoload
> +(defcustom info-xref-make-xref-flag t
> +  "Non-nil means create symbol links in info buffers."
> +  :type '(choice (const :tag "Create links" t)
> +                 (const :tag "Do not link" nil))
> +  :group 'info-xref)

I think we frown on autoloading defcustoms.

Also, every new defcustom should have a :version tag.

> +;; Info-director-list must be initialised
           ^^^^^^^^  
Typo.  Also, comments should be complete sentences, and end with a
period (here and elsewhere in the patch).

> +(info-initialize)

Why do you need to call this? and why on top level?

> +;; Turn into regexp list necessary? Stefan
> +;; Switch to alist with explanation of file name?
> +(defcustom info-xref-none-emacs-or-elisp-documents
> +  '("aarm2012" ; Stefan: Ada manual, Elpa archive
> +    "arm2012"  ; Stefan: Ada manual
> +    "sicp"   ; T.V: Structure and Interpretation of Computer Programs,
> +                                        ; Melpa archive
> +    )
> +  "List of all none GNU-Emacs or Elisp documentation.
> +Or other documents not to be checked for linking to their help
> +documentation.  The list must contains only the base name of the
> +files (without their file name extension \".info\")."
> +  :type '(repeat string)
> +  :group 'info-xref)

Not sure what is this about, and what do the names above signify.
There are also typos: "none GNU-Emacs", "must contains".

> +(defun Info-xref-make-xrefs (&optional buffer)
> +  "Parse and hyperlink documentation cross-references in the given BUFFER.

The doc string should tell what happens if BUFFER is omitted or nil.

> +                (while (re-search-forward Info-xref-symbol-regexp nil t)
> +                  (let* ((data (match-string 8))
> +                         (sym (intern-soft data)))
> +                    (if sym
> +                        (cond
> +                         ((match-string 3) ; `variable' &c
> +                          (and (or (boundp sym) ; `variable' doesn't ensure
> +                                        ; it's actually bound
> +                                   (get sym 'variable-documentation))
> +                               (Info-xref-button 8 'Info-xref-variable sym)))
> +                         ((match-string 4) ; `function' &c
> +                          (and (fboundp sym) ; similarly
> +                               (Info-xref-button 8 'Info-xref-function sym)))
> +                         ((match-string 5) ; `face'
> +                          (and (facep sym)
> +                               (Info-xref-button 8 'Info-xref-face sym)))
> +                         ((match-string 6)) ; nothing for `symbol'
> +                         ((match-string 7)
> +                          (Info-xref-button 8 'Info-xref-function-def sym))
> +                         ((cl-some (lambda (x) (funcall (nth 1 x) sym))
> +                                   describe-symbol-backends)
> +                          (Info-xref-button 8 'Info-xref-symbol sym)))))))

Can this be rewritten so as to avoid the need for error-prone updates
of the sub-expression numbers every time Info-xref-symbol-regexp is
modified?

Finally, this needs additions to the user manual and NEWS.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#60587: Patch for adding links to symbols' help documentation
Resent-From: "H. Dieter Wilhelm" <dieter@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sun, 08 Jan 2023 20:07:01 +0000
Resent-Message-ID: <handler.60587.B60587.167320837828029 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 60587
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: 60587 <at> debbugs.gnu.org, Stefan Monnier <monnier@HIDDEN>
Received: via spool by 60587-submit <at> debbugs.gnu.org id=B60587.167320837828029
          (code B ref 60587); Sun, 08 Jan 2023 20:07:01 +0000
Received: (at 60587) by debbugs.gnu.org; 8 Jan 2023 20:06:18 +0000
Received: from localhost ([127.0.0.1]:34767 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pEbvt-0007Hz-Gx
	for submit <at> debbugs.gnu.org; Sun, 08 Jan 2023 15:06:18 -0500
Received: from mout.kundenserver.de ([212.227.17.13]:36373)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <dieter@HIDDEN>) id 1pEbvq-0007Hl-Vg
 for 60587 <at> debbugs.gnu.org; Sun, 08 Jan 2023 15:06:16 -0500
Received: from ping ([109.250.146.158]) by mrelayeu.kundenserver.de (mreue106
 [212.227.15.183]) with ESMTPSA (Nemesis) id 1M894P-1p9P0J3ESh-005LCC; Sun, 08
 Jan 2023 21:06:05 +0100
From: "H. Dieter Wilhelm" <dieter@HIDDEN>
In-Reply-To: <83h6x2u74b.fsf@HIDDEN> (Eli Zaretskii's message of "Sat, 07 Jan
 2023 09:38:28 +0200")
References: <86y1qgr1bf.fsf@HIDDEN>
 <86tu13qydg.fsf@HIDDEN> <83h6x2u74b.fsf@HIDDEN>
Date: Sun, 08 Jan 2023 21:06:01 +0100
Message-ID: <86pmbovljq.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Provags-ID: V03:K1:b1BUZ8md6lT//6XwrT5ywjLokYTdv+aakDdmEjw+GPwUgRmCjj3
 hZu/WZT0AZXyx6og+729GnpRsTjelrVFfKDuAdKab1qUaK+djujA5ygh5Te/22+3XY6OQhi
 ALl/FNcqN4IseIr59mAH4mPCmqRcs7AmyItqVlqeaB5JxoO1LSL6DLQeRAJ5qlKlOaz38iF
 22kSFwcDKSTzWQJO87Thg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:+A0iS+cW4eI=;tEu6Y7h+/GCTgqSjFiB8kwTob9A
 MYt9VrBU5oG+PvFeAamTPGxDX/6tA7cUUr4PK3f98qg0zukNH3RddVqa7X70IFxjJGzeeC9nd
 25tvbGH/4k9J6NItTezLuAsIMMB1qfe8vNZyI93Jcg1EU3OPU6ZagZxxgmEacHqEiEdnBNyuq
 YS06g6VgmVkwlxkcj7Yg4jSwjfC9+r43jm/wNl8yzv4oTNH/88PgEkCa3xbv+aqqCKJQcs1jo
 Ewcz2ePaKIVirjp68WddC5CegpiC7Eo0TnBEL0zZ9XcgaCKY3Gee/nUS7gbp001PykG+xWUAg
 aMpwX6RtK/gi3Ntx/sqsMwHpmDJqBW1WUMn/sYjGcjNe3HbCdGzb9wsL3fHsS3njmik4Ndkv4
 Cp9NwXggayMHfAbjWYJut2CT+QBStHL0U4x2omKtmyOZZWiJ6OIHXfo0CsSF+fMwe9VfrHJmS
 eL7o249xHK72ls+KZgzx0VuOBwMTG+i5f4A28ecW+fa6jfZvcLxWPMn//SOZm21oPwQxvtj9U
 Cu/nOeJSd0rP/x6ewajz1N7Yxu0ETlLlk3m0CiKpDfFiiZELN4kU5JNXtTadSJlPms+uUMPcJ
 hcOZFDPb5f3sHn48dKOM6qhZAPHoQBx80cJprHMVdRO/oasVzsuEpRiOb69CmBZ4nhp2MNFYq
 eOz6/DLHmBB0CqK5MZjSV/I4RvEu4xAmqPvx9d4KVzNE6HaCsVcRar10aOU1+/E=
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain

Eli Zaretskii <eliz@HIDDEN> writes:

>> From: "H. Dieter Wilhelm" <dieter@HIDDEN>
>> Date: Fri, 06 Jan 2023 20:03:23 +0100
>> 
>> I attached a patch for the current master branch build from git
>> format-patch.  And spliced the code to implement the linking of symbols
>> in info manuals to the help documentation into lisp/info-xref.el.
>
> Thanks.

No, thank you.  It's a pleasure to read your comments.

> I think this should be in info.el, or maybe in a separate
> info-SOMETHING.el file.  info-xref.el is for a certain job, of
> interest primarily to Emacs maintainers, that is different from this
> one, and I'm not sure conflating them is TRT.

Understood, it's now located in info.el.

>> +;; This library provides links of symbols (functions, variables,
>
> The "This library" part is a remnant of the previous life of this
> code, and should be reworded to refer to specific command(s).

Done.  (I'm sorry, I should have reviewed first this code from 2020.)

>> +;; In any case all symbol names must be known to Emacs, i.e. their
>> +;; names are found in the variable `obarray'.
>
> I think a more useful way of saying this is
>
>   In any case, the symbol must be known to Emacs, which means it is
>   either a built-in, or its Lisp package is loaded in the current
>   Emacs session, or the symbol is auto-loaded.

Absolutely, done

>> +;; Inform is checking if the Info documents are relevant Elisp and
>       ^^^^^^
> This should be adapted to the "new life" of Inform as part of Emacs.

Done

>> +;; Emacs related files to avoid false positives.  Please see the
>> +;; customization variable `inform-none-emacs-or-elisp-documents'.
>                               ^^^^^^
> And this.

Done

>> +;;; Change Log:
>> +
>> ...
>> +;; (`font-lock-function-name-face')
>
> Not sure if it makes sense to keep this change log.

Agreed and removed

>> +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
>> +;; Does the following belong to customize.el?
>> ....
>> +;;; Ideas:
>> +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
>
> Please review this part and decide which portions should be kept,
> perhaps after a suitable rewording, and which should be removed.

I removed above blather and kept it as private notes.

>> +(require 'button)
>> +(require 'cl-lib)
>> +(require 'help-mode)                   ;redundant?
>
> If this is added to an existing file, there should be a ^L and some
> heading-style command before it.

Sure, please let me learn about the application of "page markers" first.

>> +;; activate inform without manually loading it. Is there a better way?
>> +;; ;;;###autoload (require 'info-xref)
>>  
>> +;; this is spawning lisp/info-xref.el's definition to 'info! This
>> +;; group is sorted now in 'docs and 'info! -FIXME-
>
> Comments should start with a capital letter.

Done

>> +;;;###autoload
>> +(defcustom info-xref-make-xref-flag t
>> +  "Non-nil means create symbol links in info buffers."
>> +  :type '(choice (const :tag "Create links" t)
>> +                 (const :tag "Do not link" nil))
>> +  :group 'info-xref)
>
> I think we frown on autoloading defcustoms.

Removed it, I think above is redundant when the code resides in info.el,
anyway.

> Also, every new defcustom should have a :version tag.

Done

>> +;; Info-director-list must be initialised
>            ^^^^^^^^  
> Typo.  Also, comments should be complete sentences, and end with a
> period (here and elsewhere in the patch).

Done (I should have run checkdoc first, uuups there are lots of warnings
from the other code in info.el.)

>> +(info-initialize)
>
> Why do you need to call this? and why on top level?

Because I have no better idea to build info-emacs-info-dir-content
(maybe dynamically?).  With the code below I force the initialisation of
Info-directory-list. It is used for checking if the current info
document is relevant to Emacs.

;; We need to initalise Info-directory-list first.
(info-initialize)
;; Before declaring the following variable:
(defvar info-emacs-info-dir-content
  (mapcar 'file-name-nondirectory ;'file-name-sans-extension
          (directory-files
           (car
            ;; search for the main Emacs' info/ directory
            (cl-member "[^.]emacs" Info-directory-list :test 'string-match-p))
           ;; don't list "." and ".."
           t  "[^.]$"))
  "List of file names in Emacs' own info/ directory.")

>> +;; Turn into regexp list necessary? Stefan
>> +;; Switch to alist with explanation of file name?
>> +(defcustom info-xref-none-emacs-or-elisp-documents
>> +  '("aarm2012" ; Stefan: Ada manual, Elpa archive
>> +    "arm2012"  ; Stefan: Ada manual
>> +    "sicp"   ; T.V: Structure and Interpretation of Computer Programs,
>> +                                        ; Melpa archive
>> +    )
>> +  "List of all none GNU-Emacs or Elisp documentation.
>> +Or other documents not to be checked for linking to their help
>> +documentation.  The list must contains only the base name of the
>> +files (without their file name extension \".info\")."
>> +  :type '(repeat string)
>> +  :group 'info-xref)
>
> Not sure what is this about, and what do the names above signify.

This was a discussion on gmane.emacs.devel (please see
jwvtv0qv5av.fsf-monnier+emacs@HIDDEN) on how to avoid trying to link
info documents which don't belong to Emacs. (Core-Utils, Ada
documentation from Melpa, etc.)

> There are also typos: "none GNU-Emacs", "must contains".

Done. 

>> +(defun Info-xref-make-xrefs (&optional buffer)
>> +  "Parse and hyperlink documentation cross-references in the given BUFFER.
>
> The doc string should tell what happens if BUFFER is omitted or nil.

Thank you, I'll take care about it.

>> +                (while (re-search-forward Info-xref-symbol-regexp nil t)
>> +                  (let* ((data (match-string 8))
>> +                         (sym (intern-soft data)))
>> +                    (if sym
>> +                        (cond
>> +                         ((match-string 3) ; `variable' &c
>> +                          (and (or (boundp sym) ; `variable' doesn't ensure
>> +                                        ; it's actually bound
>> +                                   (get sym 'variable-documentation))
>> +                               (Info-xref-button 8 'Info-xref-variable sym)))
>> +                         ((match-string 4) ; `function' &c
>> +                          (and (fboundp sym) ; similarly
>> +                               (Info-xref-button 8 'Info-xref-function sym)))
>> +                         ((match-string 5) ; `face'
>> +                          (and (facep sym)
>> +                               (Info-xref-button 8 'Info-xref-face sym)))
>> +                         ((match-string 6)) ; nothing for `symbol'
>> +                         ((match-string 7)
>> +                          (Info-xref-button 8 'Info-xref-function-def sym))
>> +                         ((cl-some (lambda (x) (funcall (nth 1 x) sym))
>> +                                   describe-symbol-backends)
>> +                          (Info-xref-button 8 'Info-xref-symbol sym)))))))
>
> Can this be rewritten so as to avoid the need for error-prone updates
> of the sub-expression numbers every time Info-xref-symbol-regexp is
> modified?

I'll try later, took note.

> Finally, this needs additions to the user manual and NEWS.

Alright, I took a note for working on this.

Thank you :-)


--=-=-=
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: inline; filename=info.patch
Content-Transfer-Encoding: quoted-printable

diff --git a/lisp/info.el b/lisp/info.el
index 035dff66e75..f7153af5b26 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -5510,6 +5510,339 @@ info--manual-names
 					     Info-directory-list
 					     (mapcar #'car Info-suffix-list))))))))
=20
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; This code below provides links of symbols (functions, variables,
+;; faces) within Emacs' Info viewer to their builtin help
+;; documentation.  This linking is done, when the symbol names in
+;; texinfo documentations (like the Emacs- and Elisp manual) are
+
+;; 1. Quoted symbol names like `quoted-symbol' or:
+
+;; 2. Function names are prefixed by M-x, for example M-x
+;; function-name or are quoted and prefixed like `M-x function-name'.
+
+;; 3. Function names appearing behind the following forms, which
+;; occur, for example, in the Elisp manual:
+
+;;   -- Special Form: function-name
+;;   -- Command: ...
+;;   -- Function: ...
+;;   -- Macro: ...
+
+;; 4. And variables names behind the following text:
+
+;;   -- User Option: variable-name
+;;   -- Variable: ...
+
+;; In any case all symbol names must be known to Emacs, which means it
+;; is either a built-in, or its Lisp package is loaded in the current
+;; Emacs session, or the symbol is auto-loaded.
+
+;; You can follow the additional links with the usual Info
+;; keybindings.  The customisation variable
+;; `mouse-1-click-follows-link' is influencing the clicking behavior
+;; (and the tooltips) of the links, the variable's default is 450
+;; (milli seconds) setting it to nil means only clicking with mouse-2
+;; is following the link (hint: Drew Adams).
+
+;; The link color of symbols - referencing their builtin documentation
+;; - is distinct from links which are referencing further Info
+;; documentation.
+
+;; Below code is checking if Info documents are relevant Elisp and
+;; Emacs related files to avoid false positives.  Please see the
+;; customization variable `info-none-emacs-or-elisp-documents'.
+
+;; The code uses mostly mechanisms from Emacs' lisp/help-mode.el file.
+
+
+
+(require 'button)
+(require 'cl-lib)
+(require 'help-mode)                   ;redundant?
+(require 'cl-seq)
+
+(defcustom info-make-xref-flag t
+  "Non-nil means create symbol links in info buffers.
+Please see the function `info-make-xrefs' for further
+information."
+  :type '(choice (const :tag "Create links" t)
+                 (const :tag "Do not link" nil))
+  :version "30.1"
+  :group 'info)
+
+;; We need to initalise Info-directory-list first.
+(info-initialize)
+;; Before declaring the following:
+(defvar info-emacs-info-dir-content
+  (mapcar 'file-name-nondirectory ;'file-name-sans-extension
+          (directory-files
+           (car
+            ;; search for the main Emacs' info/ directory
+            (cl-member "[^.]emacs" Info-directory-list :test 'string-match=
-p))
+           ;; don't list "." and ".."
+           t  "[^.]$"))
+  "List of file names in Emacs' own info/ directory.")
+
+;; FIXME: Turn into regexp list? Hint Stefan Monier or switch to alist
+;; with explanation of file name?
+(defcustom info-none-emacs-or-elisp-documents
+  '("aarm2012" ; Stefan: Ada manual, Elpa archive
+    "arm2012"  ; Stefan: Ada manual
+    "sicp"   ; T.V: Structure and Interpretation of Computer Programs,
+                                        ; Melpa archive
+    )
+  "List of all none GNU Emacs or Elisp documentation.
+Or other documents not to be checked for linking to their help
+documentation.  The list must contain only the base name of the
+files (without their file name extension \".info\")."
+  :type '(repeat string)
+  :version "30.1"
+  :group 'info)
+
+(defun info-check-docu-p ()
+  "Check if the current info file is relevant to Emacs.
+That means `Info-current-file' is either found in Emacs' info/
+directory or in `package-user-dir' and is not included in the
+`info-none-emacs-or-elisp-documents' list."
+  (let* ((ifile Info-current-file)
+         (ifi (when ifile
+                (file-name-sans-extension
+                 (file-name-nondirectory ifile))))
+         (pdir (when (boundp 'package-user-dir)
+                 (expand-file-name
+                  package-user-dir)))
+         (ifiles info-emacs-info-dir-content)
+         (ndocu info-none-emacs-or-elisp-documents))
+    (and ifile
+         (or (assoc-string (concat ifi ".info") ifiles)
+             ;; info files might be archived!
+             (assoc-string (concat ifi ".info.gz") ifiles)
+             (when pdir (string-match pdir ifile)))
+         (not (assoc-string ifi ndocu)))))
+
+;; FIXME: what are these variables for, suppress compiler warnings?
+(defvar describe-symbol-backends)      ;from help-mode.el
+(defvar help-xref-following)           ;dito
+
+;; This toggles the complete linking process
+(when info-make-xref-flag
+  (add-hook 'Info-selection-hook 'info-make-xrefs))
+
+(defface info-color
+  '((t (:inherit font-lock-doc-face
+                 ;; font-lock-preprocessor-face ; similar to link face (de=
fault)
+                 ;; font-lock-builtin-face ; similar (default Emacs)
+                 ;; font-lock-function-name-face ; similar (default)
+                 ;; info-face
+                 )))
+  "Face for the `symbol' reference items in `info' nodes."
+  :group 'info-colors)
+
+;; Button types
+
+(define-button-type 'info
+  'link t                         ;for Info-next-reference-or-link
+  'follow-link t
+  'face 'info-color
+  'action #'info-button-action)
+
+(define-button-type 'info-function
+  :supertype 'info
+  'info-function 'describe-function
+  'info-echo (purecopy "mouse-2, RET: describe this function"))
+
+(define-button-type 'info-variable
+  :supertype 'info
+  'info-function 'describe-variable
+  'info-echo (purecopy "mouse-2, RET: describe this variable"))
+
+(define-button-type 'info-face
+  :supertype 'info
+  'info-function 'describe-face
+  'info-echo (purecopy "mouse-2, RET: describe this face"))
+
+(define-button-type 'info-symbol
+  :supertype 'info
+  'info-function #'describe-symbol
+  'info-echo (purecopy "mouse-2, RET: describe this symbol"))
+
+(define-button-type 'info-function-def
+  :supertype 'info
+  'info-function (lambda (fun &optional file type)
+                        (or file
+                            (setq file (find-lisp-object-file-name fun typ=
e)))
+                        (if (not file)
+                            (message "Unable to find defining file")
+                          (require 'find-func)
+                          (when (eq file 'C-source)
+                            (setq file
+                                  (help-C-file-name (indirect-function fun=
) 'fun)))
+                          ;; Don't use find-function-noselect because it f=
ollows
+                          ;; aliases (which fails for built-in functions).
+                          (let ((location
+                                 (find-function-search-for-symbol fun type=
 file)))
+                            (pop-to-buffer (car location))
+                            (run-hooks 'find-function-after-hook)
+                            (if (cdr location)
+                                (goto-char (cdr location))
+                              (message "Unable to find location in file"))=
)))
+  'info-echo (purecopy "mouse-2, RET: find function's definition"))
+
+;; Functions
+
+(defun info-button-action (button)
+  "Call BUTTON's help function."
+  (info-do-xref nil
+                     (button-get button 'info-function)
+                     (button-get button 'info-args)))
+
+(defun info-do-xref (_pos function args)
+  "Call the help cross-reference function FUNCTION with args ARGS.
+Things are set up properly so that the resulting `help-buffer' has
+a proper [back] button."
+  ;; There is a reference at point.  Follow it.
+  (let ((help-xref-following nil))
+    (apply
+     function (if (eq function 'info)
+                  (append args (list (generate-new-buffer-name "*info*")))=
args))))
+
+(defun info-button (match-number type &rest args)
+  "Make a hyperlink for cross-reference text previously matched.
+MATCH-NUMBER is the subexpression of interest in the last matched
+regexp.  TYPE is the type of button to use.  Any remaining arguments are
+passed to the button's info-function when it is invoked.
+See `info-make-xrefs' Don't forget ARGS." ; -TODO-
+  ;; Don't mung properties we've added specially in some instances.
+  (unless (button-at (match-beginning match-number))
+    ;; (message "Creating button: %s." args)
+    (make-text-button (match-beginning match-number)
+                      (match-end match-number)
+                      'type type 'info-args args)))
+
+(defconst info-symbol-regexp
+  (purecopy (concat "\\(\\<\\(\\(variable\\|option\\)\\|"  ; Link to var
+                    "\\(function\\|command\\|call\\)\\|"   ; Link to funct=
ion
+                    "\\(face\\)\\|"                       ; Link to face
+                    "\\(symbol\\|program\\|property\\)\\|" ; Don't link
+                    "\\(source \\(?:code \\)?\\(?:of\\|for\\)\\)\\)"
+                    "[ \t\n]+\\)?"
+                    ;; Note starting with word-syntax character:
+                    "['`=E2=80=98]\\(\\sw\\(\\sw\\|\\s_\\)+\\|`\\)['=E2=80=
=99]"))
+  "Regexp matching info document references to their help references.
+The words preceding the quoted symbol can be used in doc strings to
+distinguish references to variables, functions and symbols.")
+
+;;;###autoload
+(defun info-make-xrefs (&optional buffer)
+  "Parse and hyperlink documentation cross-references in the given BUFFER.
+Find cross-reference information in a buffer and activate such cross
+references for selection with `help-follow'.  Cross-references have
+the canonical form `...'  and the type of reference may be
+disambiguated by the preceding word(s) used in
+`info-symbol-regexp'.
+
+Function names are also prefixed by \"M-x\", for example \"M-x
+function-name\" or are quoted and prefixed like `M-x
+function-name'.
+
+Also Function names appearing behind the following forms, which
+occur, for example, in the Elisp manual:
+
+ -- Special Form: function-name
+ -- Command: ...
+ -- Function: ...
+ -- Macro: ...
+
+And variables names behind the following text:
+
+ -- User Option: variable-name
+ -- Variable: ...
+
+Faces only get cross-referenced if preceded or followed by the
+word `face'.  Variables without variable documentation do not get
+cross-referenced, unless preceded by the word `variable' or
+`option'."
+  (interactive "b")
+  (when (info-check-docu-p)
+    (with-current-buffer (or buffer (current-buffer))
+      (save-excursion
+        (goto-char (point-min))
+        ;; Skip the header-type info, though it might be useful to parse
+        ;; it at some stage (e.g. "function in `library'").
+        ;;      (forward-paragraph)
+        (with-silent-modifications      ;from Stefan
+          (let (;(stab (syntax-table))
+                (case-fold-search t)
+                (inhibit-read-only t))
+            (with-syntax-table emacs-lisp-mode-syntax-table
+              ;; Quoted symbols
+              (save-excursion
+                (while (re-search-forward info-symbol-regexp nil t)
+                  (let* ((data (match-string 8))
+                         (sym (intern-soft data)))
+                    (if sym
+                        (cond
+                         ((match-string 3) ; `variable' &c
+                          (and (or (boundp sym) ; `variable' doesn't ensure
+                                        ; it's actually bound
+                                   (get sym 'variable-documentation))
+                               (info-button 8 'info-variable sym)))
+                         ((match-string 4) ; `function' &c
+                          (and (fboundp sym) ; similarly
+                               (info-button 8 'info-function sym)))
+                         ((match-string 5) ; `face'
+                          (and (facep sym)
+                               (info-button 8 'info-face sym)))
+                         ((match-string 6)) ; nothing for `symbol'
+                         ((match-string 7)
+                          (info-button 8 'info-function-def sym))
+                         ((cl-some (lambda (x) (funcall (nth 1 x) sym))
+                                   describe-symbol-backends)
+                          (info-button 8 'info-symbol sym)))))))
+
+              ;; (info "(elisp) Eval")
+              ;; Elisp manual      -- Special Form:
+              ;;                   -- Command:
+              ;;                   -- Function: function-name function
+              ;;                   -- Macro:
+              (save-excursion
+                (while (re-search-forward
+                        "-- \\(Special Form:\\|Command:\\|Function:\\|Macr=
o:\\) "
+                        nil t)
+                  (looking-at "\\(\\sw\\|\\s_\\)+")
+                  (let ((sym (intern-soft (match-string 0))))
+                    (if (fboundp sym)
+                        (info-button 0 'info-function sym)))))
+
+              ;;              -- User Option:
+              ;;              -- Variable: variable-name
+              (save-excursion
+                (while (re-search-forward
+                        "-- \\(User Option:\\|Variable:\\) "
+                        nil t)
+                  (looking-at "\\(\\sw\\|\\s_\\)+")
+                  (let ((sym (intern-soft (match-string 0))))
+                    (if (boundp sym)
+                        (info-button 0 'info-variable sym)))))
+
+              ;; M-x prefixed functions
+              (save-excursion
+                (while (re-search-forward
+                        ;; Assume command name is only word and symbol
+                        ;; characters to get things like `use M-x foo->bar=
'.
+                        ;; Command required to end with word constituent
+                        ;; to avoid `.' at end of a sentence.
+                        ;; "\\<M-x\\s-+\\(\\sw\\(\\sw\\|\\s_\\)*\\sw\\)" n=
il t)
+                        ;; include M-x and quotes
+                        "['`=E2=80=98]?M-x\\s-*\n?\\(\\sw\\(\\sw\\|\\s_\\)=
*\\sw\\)['=E2=80=99]?" nil t)
+                  (let ((sym (intern-soft (match-string 1))))
+                    ;; (message "found %s" sym)
+                    (if (fboundp sym)
+                        (info-button 1 'info-function sym))))))))))))
+;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+
 (provide 'info)
=20
 ;;; info.el ends here

--=-=-=
Content-Type: text/plain



-- 
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany

--=-=-=--




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#60587: Patch for adding links to symbols' help documentation
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 09 Jan 2023 12:47:02 +0000
Resent-Message-ID: <handler.60587.B60587.1673268380341 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 60587
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: "H. Dieter Wilhelm" <dieter@HIDDEN>
Cc: 60587 <at> debbugs.gnu.org, monnier@HIDDEN
Received: via spool by 60587-submit <at> debbugs.gnu.org id=B60587.1673268380341
          (code B ref 60587); Mon, 09 Jan 2023 12:47:02 +0000
Received: (at 60587) by debbugs.gnu.org; 9 Jan 2023 12:46:20 +0000
Received: from localhost ([127.0.0.1]:35993 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pErXg-00005R-2R
	for submit <at> debbugs.gnu.org; Mon, 09 Jan 2023 07:46:20 -0500
Received: from eggs.gnu.org ([209.51.188.92]:33660)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1pErXe-000058-12
 for 60587 <at> debbugs.gnu.org; Mon, 09 Jan 2023 07:46:18 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pErXY-0005O4-C2; Mon, 09 Jan 2023 07:46:12 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=o80Wj/54ecas1gX9nrN6RGSRyDY22c5PRmaPytXk2kM=; b=lhSdUGU05FQ7
 zSng0/SHUBbXrgs8muG6wcUzFsGFsKqwUn47d35WtUh9IWdnsMZjrE66q5gkaNXynVje3LsXcz3kJ
 MVqc62x1vIN4fz8a9T2kFhBJ3fLA+iyEuDg3IZFVXR57tJtuzhhRigmfhJDiuuIdkeMenNwDQ7dwO
 MOvtmtemMjmy30beR/MMEsfwAkS2opkVoaGkQ2DrfHbjcFb3JlMkGQCR6DCnkTQdTSfNcs0yZ7/OW
 4qzm41d0oY78MZDmCxxoeMDbRUp4MT6RnNZYRH5crQ2vIn4hHHouwWcQU74QugF2SifEN9xpGn6UI
 L4RSlPUizpGMxXtzKO7QeA==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pErXX-0000dZ-NJ; Mon, 09 Jan 2023 07:46:12 -0500
Date: Mon, 09 Jan 2023 14:46:37 +0200
Message-Id: <835ydfq3iq.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <86pmbovljq.fsf@HIDDEN>
 (dieter@HIDDEN)
References: <86y1qgr1bf.fsf@HIDDEN>
 <86tu13qydg.fsf@HIDDEN> <83h6x2u74b.fsf@HIDDEN>
 <86pmbovljq.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: "H. Dieter Wilhelm" <dieter@HIDDEN>
> Cc: Stefan Monnier <monnier@HIDDEN>,  60587 <at> debbugs.gnu.org
> Date: Sun, 08 Jan 2023 21:06:01 +0100
> 
> >> +(info-initialize)
> >
> > Why do you need to call this? and why on top level?
> 
> Because I have no better idea to build info-emacs-info-dir-content
> (maybe dynamically?).  With the code below I force the initialisation of
> Info-directory-list. It is used for checking if the current info
> document is relevant to Emacs.

Info-directory-list starts as nil, so you can test its value.

More generally, this feature displays links in an Info buffer, right?
If an Info buffer is displayed in Emacs, info-initialize was already
called, and you don't need to call it again.

> >> +;; Turn into regexp list necessary? Stefan
> >> +;; Switch to alist with explanation of file name?
> >> +(defcustom info-xref-none-emacs-or-elisp-documents
> >> +  '("aarm2012" ; Stefan: Ada manual, Elpa archive
> >> +    "arm2012"  ; Stefan: Ada manual
> >> +    "sicp"   ; T.V: Structure and Interpretation of Computer Programs,
> >> +                                        ; Melpa archive
> >> +    )
> >> +  "List of all none GNU-Emacs or Elisp documentation.
> >> +Or other documents not to be checked for linking to their help
> >> +documentation.  The list must contains only the base name of the
> >> +files (without their file name extension \".info\")."
> >> +  :type '(repeat string)
> >> +  :group 'info-xref)
> >
> > Not sure what is this about, and what do the names above signify.
> 
> This was a discussion on gmane.emacs.devel (please see
> jwvtv0qv5av.fsf-monnier+emacs@HIDDEN) on how to avoid trying to link
> info documents which don't belong to Emacs. (Core-Utils, Ada
> documentation from Melpa, etc.)

I cannot access that discussion with this URL (can you tell on which
date that happened? then I will look in the emacs-devel list
archives), and I don't think I understand how such names will creep
into this feature.  Does the code somehow search every Info manual on
the system to do its job?




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#60587: Patch for adding links to symbols' help documentation
Resent-From: Stefan Monnier <monnier@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 09 Jan 2023 14:26:02 +0000
Resent-Message-ID: <handler.60587.B60587.167327433819563 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 60587
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: "H. Dieter Wilhelm" <dieter@HIDDEN>, 60587 <at> debbugs.gnu.org
Received: via spool by 60587-submit <at> debbugs.gnu.org id=B60587.167327433819563
          (code B ref 60587); Mon, 09 Jan 2023 14:26:02 +0000
Received: (at 60587) by debbugs.gnu.org; 9 Jan 2023 14:25:38 +0000
Received: from localhost ([127.0.0.1]:36068 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pEt5l-00055S-Ly
	for submit <at> debbugs.gnu.org; Mon, 09 Jan 2023 09:25:38 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:42884)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <monnier@HIDDEN>) id 1pEt5k-00055G-9r
 for 60587 <at> debbugs.gnu.org; Mon, 09 Jan 2023 09:25:36 -0500
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
 by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 85442440C36;
 Mon,  9 Jan 2023 09:25:30 -0500 (EST)
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id CC8A8440FA5;
 Mon,  9 Jan 2023 09:25:24 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1673274324;
 bh=c59rRJdYzxcpan0WuzMxm9t5f2Q1/Yyo+dNfQEAwl/4=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=nJUH+5EfFPEd5hhyW335yanvfHw87Oz9SqefzgU6rDn/k/RKEfTe8G829K8DHV3PV
 on7hQxnTRCSRytJljjbBPT1RV9tnLoHYGNJzgymG1mllFsCyyJEmDqwYdvKf7g6Cep
 WiUgXD3QeK5AJ7bUACa0LUdpILNTPdCpX0gSLb4IR+NFd2BCKhbsh69nC76A5XAqtf
 7Qt5ombkeYLvIaCvorN85jtXiT64mkIjFABecAfzu/zH/s9etgKZRy78HIyyiUWK0i
 f2OAC8XprYii8EJXBJu71gaG8fYn9KKw4DNoWlSZzY3fiUs/QAlhyfCQalf1WahuFS
 l4EaLKXtza6tQ==
Received: from pastel (unknown [45.72.200.228])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 7451A1201A6;
 Mon,  9 Jan 2023 09:25:24 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
In-Reply-To: <835ydfq3iq.fsf@HIDDEN> (Eli Zaretskii's message of "Mon, 09 Jan
 2023 14:46:37 +0200")
Message-ID: <jwvh6wz23ea.fsf-monnier+emacs@HIDDEN>
References: <86y1qgr1bf.fsf@HIDDEN>
 <86tu13qydg.fsf@HIDDEN> <83h6x2u74b.fsf@HIDDEN>
 <86pmbovljq.fsf@HIDDEN> <835ydfq3iq.fsf@HIDDEN>
Date: Mon, 09 Jan 2023 09:25:23 -0500
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL -0.251 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> I cannot access that discussion with this URL (can you tell on which
> date that happened? then I will look in the emacs-devel list
> archives), and I don't think I understand how such names will creep
> into this feature.  Does the code somehow search every Info manual on
> the system to do its job?

More or less, yes.  IIRC it tries to limit itself to ELisp-related
manuals by avoiding all the manual except those that are in Emacs's own
`info` directory and those that are inside ELPA-installed packages.
Hence the list of exceptions being sicp and ada manuals since these can
be installed as ELPA packages.


        Stefan





Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#60587: Patch for adding links to symbols' help documentation
Resent-From: "H. Dieter Wilhelm" <dieter@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 09 Jan 2023 20:02:01 +0000
Resent-Message-ID: <handler.60587.B60587.167329448231751 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 60587
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: 60587 <at> debbugs.gnu.org, monnier@HIDDEN
Received: via spool by 60587-submit <at> debbugs.gnu.org id=B60587.167329448231751
          (code B ref 60587); Mon, 09 Jan 2023 20:02:01 +0000
Received: (at 60587) by debbugs.gnu.org; 9 Jan 2023 20:01:22 +0000
Received: from localhost ([127.0.0.1]:38259 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pEyKf-0008G3-Fz
	for submit <at> debbugs.gnu.org; Mon, 09 Jan 2023 15:01:21 -0500
Received: from mout.kundenserver.de ([217.72.192.73]:40519)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <dieter@HIDDEN>) id 1pEyKd-0008Fo-EY
 for 60587 <at> debbugs.gnu.org; Mon, 09 Jan 2023 15:01:20 -0500
Received: from ping ([109.250.146.158]) by mrelayeu.kundenserver.de (mreue108
 [212.227.15.183]) with ESMTPSA (Nemesis) id 1Mq2rM-1oTCzf3zSE-00n9Ot; Mon, 09
 Jan 2023 21:01:10 +0100
From: "H. Dieter Wilhelm" <dieter@HIDDEN>
References: <86y1qgr1bf.fsf@HIDDEN>
 <86tu13qydg.fsf@HIDDEN> <83h6x2u74b.fsf@HIDDEN>
 <86pmbovljq.fsf@HIDDEN> <835ydfq3iq.fsf@HIDDEN>
Date: Mon, 09 Jan 2023 21:01:08 +0100
In-Reply-To: <835ydfq3iq.fsf@HIDDEN> (Eli Zaretskii's message of "Mon, 09 Jan
 2023 14:46:37 +0200")
Message-ID: <86ilhfv5ob.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-Provags-ID: V03:K1:AWwFRml1sW/60VxOTsTYIReEJ3k4yH073ReWxYze+PzmWh+aM+L
 CT8TXVyonTE/egq6Y0lqfZpZrevLT+ZNEGsAUIMdj8EwWT0VRlyWtpjhQtJmMiOazhfIZh2
 VUXbDXFBMi2RS8rdVcy1039O2yXb2Qahv2bqSJLOJyLIu+E7jlItnYVwsMiPKzV5KWaiLPq
 WaLaOpVgO3Yl+jENNWatg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:E0X4NWCk1oI=;9i4xGDzTXs13RsBIoef236OiKCC
 55BiTBtTePnSBib36ISWdLwE5nQo8UPEvBYkJnuW3oBNKn6VrdN/rPy6hPbKhrXpSE6FZSkn5
 oECU9gGmPtD2cIBK64z7JjIM2l0i0lEYfMiB5yKC045FRoYkdS2m9WPgBLtWH3tk7duxz614f
 3kPGv0BkA6vOf1dKDwa/ZJZDpRhsQpRKk5ufaGXv3jmxrBW+Jp8zzlZw6ZeCr5Q56EQuyT+/e
 6nmIPA5yvD1MkE5xzxS52bEiZNfMJQdYA79A9IkYQmrQ7XqoQ+PHtnvy9SiOGZ/a9ZYU/nkkG
 /S25/aVi8G7azKgu09vRlHNsDxPAENfXY/meL0siX2Gs2zXpOjQdC/tu2MgyBd5yak7JVyXeY
 fR6vpmRIUJlUG3+p6YnOvQ3mu+OVhMkbXMrfHj2DxYzdwmTw7cEKGYq8x+/BeLe0Nsu/r+VmI
 30rDNk4GArxr/hAyddwvUzEi7pktk7bvJ77lRJM2xtTv4o+kUvGi4hRiBP0rgo/t6hpgSn502
 /FMN9lbs0IVqmPvn5hfYRB/CwO/4APQnDFrzvoBVzXyqdy2/RYG+OVeZsP9I+v0S1CNUXSGfJ
 JgIsuB3YxIwkMNtHt2WCjXCqrDlkz2cubKZsfnLlZQH+7eNqzgL9WKbcC8cECfL0znKaH/5zV
 qOI1in2VQc/AvXA5l5ClSFH+E+mJOy6DNc75u4M+7g==
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:
>> >> +(info-initialize)
>> >
>> > Why do you need to call this? and why on top level?
>> 
>> Because I have no better idea to build info-emacs-info-dir-content
>> (maybe dynamically?).  With the code below I force the initialisation of
>> Info-directory-list. It is used for checking if the current info
>> document is relevant to Emacs.
>
> Info-directory-list starts as nil, so you can test its value.
> More generally, this feature displays links in an Info buffer, right?
> If an Info buffer is displayed in Emacs, info-initialize was already
> called, and you don't need to call it again.

That is true. It was not much work to avoid it. :-)

>> >> +;; Turn into regexp list necessary? Stefan
>> >> +;; Switch to alist with explanation of file name?
>> >> +(defcustom info-xref-none-emacs-or-elisp-documents
>> >> +  '("aarm2012" ; Stefan: Ada manual, Elpa archive
>> >> +    "arm2012"  ; Stefan: Ada manual
>> >> +    "sicp"   ; T.V: Structure and Interpretation of Computer Programs,
>> >> +                                        ; Melpa archive
>> >> +    )
>> >> +  "List of all none GNU-Emacs or Elisp documentation.
>> >> +Or other documents not to be checked for linking to their help
>> >> +documentation.  The list must contains only the base name of the
>> >> +files (without their file name extension \".info\")."
>> >> +  :type '(repeat string)
>> >> +  :group 'info-xref)
>> >
>> > Not sure what is this about, and what do the names above signify.
>> 
>> This was a discussion on gmane.emacs.devel (please see
>> jwvtv0qv5av.fsf-monnier+emacs@HIDDEN) on how to avoid trying to link
>> info documents which don't belong to Emacs. (Core-Utils, Ada
>> documentation from Melpa, etc.)
>
> I cannot access that discussion with this URL (can you tell on which
> date that happened? then I will look in the emacs-devel list
> archives)

Please have a look here:
https://lists.gnu.org/archive/html/emacs-devel/2020-05/msg00994.html
(Above is the message-id from 2020-05-08)

> , and I don't think I understand how such names will creep
> into this feature.  Does the code somehow search every Info manual on
> the system to do its job?

It's not searching, just checking whether Info-current-file has an
extension of .info(.gz) (this is redundant on my system but I forgot to
document in what circumstances this check might be necessary) and is
included in any of the Info-directory-list directories.

Since Info-directory-list may contain info files which are not related
to Emacs, it checks against the "blacklist"
info-none-emacs-or-elisp-documents.  E.g. from Elpa there are packages,
like sicp (Structure and Interpretation of Computer Programs) in info
format.

(defun info-check-docu-p ()
  "Check if the current info file is relevant to Emacs.
That means `Info-current-file' is either found in Emacs' info/
directory or in `package-user-dir' and is not included in the
`info-none-emacs-or-elisp-documents' list."
  (unless info-emacs-info-dir-content
    (info-compile-emacs-info-dir-content))
  (let* ((ifile Info-current-file)
         (ifi (when ifile
                (file-name-sans-extension
                 (file-name-nondirectory ifile))))
         (pdir (when (boundp 'package-user-dir)
                 (expand-file-name
                  package-user-dir)))
         ;; FIXME: Check if pdir is redundant because Package adds
         ;; info package folders to Info-directory-list anyway
         (ifiles info-emacs-info-dir-content)
         (ndocu info-none-emacs-or-elisp-documents))
    (and ifile
         (or (assoc-string (concat ifi ".info") ifiles)
             ;; info files might be archived!
             (assoc-string (concat ifi ".info.gz") ifiles)
             (when pdir (string-match pdir ifile)))
         (not (assoc-string ifi ndocu)))))


-- 
Best wishes)
H. Dieter Wilhelm
Zwingenberg, Germany




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#60587: Patch for adding links to symbols' help documentation
Resent-From: "H. Dieter Wilhelm" <dieter@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 13 Jan 2023 23:34:02 +0000
Resent-Message-ID: <handler.60587.B60587.167365281432738 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 60587
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: 60587 <at> debbugs.gnu.org, Stefan Monnier <monnier@HIDDEN>
Received: via spool by 60587-submit <at> debbugs.gnu.org id=B60587.167365281432738
          (code B ref 60587); Fri, 13 Jan 2023 23:34:02 +0000
Received: (at 60587) by debbugs.gnu.org; 13 Jan 2023 23:33:34 +0000
Received: from localhost ([127.0.0.1]:52689 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pGTYD-0008Vx-Lr
	for submit <at> debbugs.gnu.org; Fri, 13 Jan 2023 18:33:34 -0500
Received: from mout.kundenserver.de ([212.227.17.24]:32943)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <dieter@HIDDEN>) id 1pGTYB-0008Vj-FS
 for 60587 <at> debbugs.gnu.org; Fri, 13 Jan 2023 18:33:32 -0500
Received: from ping ([109.250.147.186]) by mrelayeu.kundenserver.de (mreue109
 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MKsax-1p1pTo1ttd-00LGWI; Sat, 14
 Jan 2023 00:33:21 +0100
From: "H. Dieter Wilhelm" <dieter@HIDDEN>
References: <86y1qgr1bf.fsf@HIDDEN>
 <86tu13qydg.fsf@HIDDEN> <83h6x2u74b.fsf@HIDDEN>
Date: Sat, 14 Jan 2023 00:33:19 +0100
In-Reply-To: <83h6x2u74b.fsf@HIDDEN> (Eli Zaretskii's message of "Sat, 07 Jan
 2023 09:38:28 +0200")
Message-ID: <867cxqui0w.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.2 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Provags-ID: V03:K1:Lkr8Q5u5QNBHy/B6/eeUHwUnQ/ryhAEcbjJjBFLm0A8b3/GL91V
 0tRi/+LdIo2wXpULCg2D34Z3/YZn31Y/CDbmHOU1aQPqUboqC+gs2L66HrI5GHRJ/xes15u
 3lgtUJF01lIzS1ZzncR6BnJ6YS311/sTdv0wE/yoL0Z76bLBJZfTbiog4xffskCn+ZgGdOO
 PXJzsutWZ61+JEQLiqiKA==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:GPR0p3Y5iNY=;f5VVTHTNhPNXcU8lPgkfaXH6LJL
 CiR+KF9/zxBl3PENl8e4xXNq86v0gCFfvcSfzwfqXjgLsGLfRv/BuUyXRbBXymku0FBw5dQap
 fDHoXg32S7EjZpQy0QYlj50NslyMOUXyXxGOrqQBBsiR/HDAvCELi+WhsLUcxN8nVjkEeqHAL
 xGM9qornYV/XAsPtYQZIfmndBuTbyedWLwpuuqiWsgRj0JAP97JpoVZtCt4Wn2+5KsmV2lg2e
 PlSTZ6PZyXlXOQJn+rRQRmyvDw2cClPhHcvVoYY9B+r0n1UXQH2rIDvsoM61cP7AYO8/bh/Ny
 /dk14ru5UM/DrqEpnX2SrP90evN9pjs1x795rEzNwtpT+PdyeVYPdqkcdr8QcJvKjp7KrcWPx
 A4tYB+1EowEHLaeQ4oLQCSA4GntgGqcpgMTcZr1d5nj6dbksGd+3BhBa843JGtJrME3tDmEdu
 0P9Ck55vHWf6ru0Cgir8CD7ivKsQAVYyeWMDyUB/mgX/3640Aqc83VO0g+8lUsuRzhRjMgzVQ
 uPqW7NnQLFIi8luH5OccJ57I4O0LFis+KyFNWtuoZNj2VWRfqEKkSJJD1EIsJrzvRDK65kIry
 d6xXl8a4uxImrD+SE0HX3mkoPqBJ9fFklmDUZO5M2Jo1/NDckAofIu74FhcU8xmLfaJiBPHek
 oS+8au6aJZksWgjaVwz/aTMOOvJAnJFsFBYqIOMj4w==
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

>> +(require 'button)
>> +(require 'cl-lib)
>> +(require 'help-mode)                   ;redundant?
>
> If this is added to an existing file, there should be a ^L and some
> heading-style command before it.

I had a look at the usage of ^L in info.el but I can't discern any rule
or consistency.  The number of lines between its page delimiters are
over 900 and below 20.  I assume you want me to use ^L to separate a
different topic within info.el?

>> +                (while (re-search-forward Info-xref-symbol-regexp nil t)
>> +                  (let* ((data (match-string 8))
>> +                         (sym (intern-soft data)))
>> +                    (if sym
>> +                        (cond
>> +                         ((match-string 3) ; `variable' &c
>> +                          (and (or (boundp sym) ; `variable' doesn't en=
sure
>> +                                        ; it's actually bound
>> +                                   (get sym 'variable-documentation))
>> +                               (Info-xref-button 8 'Info-xref-variable =
sym)))
>> +                         ((match-string 4) ; `function' &c
>> +                          (and (fboundp sym) ; similarly
>> +                               (Info-xref-button 8 'Info-xref-function =
sym)))
>> +                         ((match-string 5) ; `face'
>> +                          (and (facep sym)
>> +                               (Info-xref-button 8 'Info-xref-face sym)=
))
>> +                         ((match-string 6)) ; nothing for `symbol'
>> +                         ((match-string 7)
>> +                          (Info-xref-button 8 'Info-xref-function-def s=
ym))
>> +                         ((cl-some (lambda (x) (funcall (nth 1 x) sym))
>> +                                   describe-symbol-backends)
>> +                          (Info-xref-button 8 'Info-xref-symbol sym))))=
)))
>
> Can this be rewritten so as to avoid the need for error-prone updates
> of the sub-expression numbers every time Info-xref-symbol-regexp is
> modified?

What do you think about the following approach?

(defcustom info-symbol-context
  '(( variable . "variable\\|option")
    ;; defining symbol as variable
    ( function . "function\\|command\\|call")
    ;; defining symbol as function
    ( face . "face")
    ;; defining symbol as face
    ( ignore . "symbol\\|program\\|property")
    ;; ignore symbols following this context type
    ( definition . "source \\(?:code \\)?\\(?:of\\|for\\)"))
    ;; function definitions in files
  "Help."
  :type 'list
  :version "30.1"
  :group 'info)


;; Assembling the complete regexp
(defvar info-symbol-regexp
  (concat
   ;; context
   "\\(" ; ---- context start
   "\\<\\(" ; contex definition
   (string-remove-suffix
    "\\|"
    (mapconcat
     (lambda (x) (concat "\\(" (cdr x) "\\)\\|"))
     info-symbol-context ""))
   "\\)"  ; --- definition end
   "[ \t\n]+" ; --- separators to quoted symbols
   "\\)?"  ;; ---- end of context
   ;; quoted symbol
   "['`=E2=80=98]"	  ; start quotes
   ;; Note: symbol starting with word-syntax character:
   "\\(\\sw\\(\\sw\\|\\s_\\)+\\|`\\)" ; symbol
   "['=E2=80=99]"				  ; end quotes
   )
  "Help.")


;; helper function
(defun info-check-type( type)
  "Check if TYPE corresponds to the current search result.
`match-string'."
  (let ((ictr info-symbol-regexp)
	(n 3)                           ;embedded within 2 groups
	)
    (while (not (eq type (caar ictr)))
       (setq n (1+ n))
       (setq ictr (cdr ictr)))
    (match-string n)
    ))

;;Here comes the function creating links
;;....
                (while (re-search-forward info-symbol-regexp nil t)
                  (let* ((data (match-string 8))
                         (sym (intern-soft data)))
                    (if sym
                        (cond
                         ((info-check-type 'variable)
                          (and (or (boundp sym)
                                   (get sym 'variable-documentation))
                               (info-button 8 'info-variable sym)))
                         ((info-check-type 'function)
                          (and (fboundp sym)
                               (info-button 8 'info-function sym)))
                         ((info-check-type 'face)
                          (and (facep sym)
                               (info-button 8 'info-face sym)))
                         ((info-check-type 'ignore))
                         ((info-check-type 'definition)
                          (info-button 8 'info-function-def sym))
                         ;;=20
                         ((cl-some (lambda (x) (funcall (nth 1 x) sym))
                                   describe-symbol-backends)
                          (info-button 8 'info-symbol sym)))))))




--=20
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#60587: Patch for adding links to symbols' help documentation
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sat, 14 Jan 2023 07:13:02 +0000
Resent-Message-ID: <handler.60587.B60587.167368037229316 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 60587
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: "H. Dieter Wilhelm" <dieter@HIDDEN>
Cc: 60587 <at> debbugs.gnu.org, monnier@HIDDEN
Received: via spool by 60587-submit <at> debbugs.gnu.org id=B60587.167368037229316
          (code B ref 60587); Sat, 14 Jan 2023 07:13:02 +0000
Received: (at 60587) by debbugs.gnu.org; 14 Jan 2023 07:12:52 +0000
Received: from localhost ([127.0.0.1]:53088 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pGaii-0007cl-5x
	for submit <at> debbugs.gnu.org; Sat, 14 Jan 2023 02:12:52 -0500
Received: from eggs.gnu.org ([209.51.188.92]:33308)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1pGaig-0007cY-EN
 for 60587 <at> debbugs.gnu.org; Sat, 14 Jan 2023 02:12:50 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pGaia-00049j-3d; Sat, 14 Jan 2023 02:12:45 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=/FpdTe1cFmZsKEEjFdt+gz898IFKnU6TfN0p+sROG5s=; b=aUVbE1NiMwEh
 CJub4+kPnHXwwliokTU0HLnmUD2aIVIBlSrzGN/zeIwX+Oj7mn+4/0OY03t3KMoIzlSCpbZEFkKnB
 f4XZMfijhq1sfvfXAiO3hVefm9nWwy33xETZUBAwnTlP30BKElJ2+UJrmgrtTBCIAOE7mAadqzRNO
 RHs2MleviFbqpVSfjqzXuusbnTS+69HSQihVhOPDY8CDAbLgGZkf//FErnuMMf5aLUlZB88MUeTof
 YNMAOLk3PL1frGFKRwNaxcYl0B06Zc62lX8WupAmv0PB8rZrSYgPpHLn3+eEVAvrlME6pFYseEoVt
 8HpKn5EKVlcHzAYKX/mYmw==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pGaiX-00083q-Lh; Sat, 14 Jan 2023 02:12:43 -0500
Date: Sat, 14 Jan 2023 09:12:42 +0200
Message-Id: <83sfgd8u8l.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <867cxqui0w.fsf@HIDDEN>
 (dieter@HIDDEN)
References: <86y1qgr1bf.fsf@HIDDEN>
 <86tu13qydg.fsf@HIDDEN> <83h6x2u74b.fsf@HIDDEN>
 <867cxqui0w.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: "H. Dieter Wilhelm" <dieter@HIDDEN>
> Cc: Stefan Monnier <monnier@HIDDEN>,  60587 <at> debbugs.gnu.org
> Date: Sat, 14 Jan 2023 00:33:19 +0100
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> >> +(require 'button)
> >> +(require 'cl-lib)
> >> +(require 'help-mode)                   ;redundant?
> >
> > If this is added to an existing file, there should be a ^L and some
> > heading-style command before it.
> 
> I had a look at the usage of ^L in info.el but I can't discern any rule
> or consistency.  The number of lines between its page delimiters are
> over 900 and below 20.  I assume you want me to use ^L to separate a
> different topic within info.el?

Yes.  This has nothing to do with the size of each topic's code.

> > Can this be rewritten so as to avoid the need for error-prone updates
> > of the sub-expression numbers every time Info-xref-symbol-regexp is
> > modified?
> 
> What do you think about the following approach?

Something like that, yes.  However, ...

> (defcustom info-symbol-context
>   '(( variable . "variable\\|option")
>     ;; defining symbol as variable
>     ( function . "function\\|command\\|call")
>     ;; defining symbol as function
>     ( face . "face")
>     ;; defining symbol as face
>     ( ignore . "symbol\\|program\\|property")
>     ;; ignore symbols following this context type
>     ( definition . "source \\(?:code \\)?\\(?:of\\|for\\)"))
>     ;; function definitions in files
>   "Help."
>   :type 'list
>   :version "30.1"
>   :group 'info)

I'm not sure this should be a defcustom.  Do we really expect users to
want to customize this? for what reason(s)?




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#60587: Patch for adding links to symbols' help documentation
Resent-From: "H. Dieter Wilhelm" <dieter@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sun, 15 Jan 2023 12:50:02 +0000
Resent-Message-ID: <handler.60587.B60587.167378695629329 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 60587
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: 60587 <at> debbugs.gnu.org, monnier@HIDDEN
Received: via spool by 60587-submit <at> debbugs.gnu.org id=B60587.167378695629329
          (code B ref 60587); Sun, 15 Jan 2023 12:50:02 +0000
Received: (at 60587) by debbugs.gnu.org; 15 Jan 2023 12:49:16 +0000
Received: from localhost ([127.0.0.1]:56370 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pH2Rn-0007cy-D3
	for submit <at> debbugs.gnu.org; Sun, 15 Jan 2023 07:49:16 -0500
Received: from mout.kundenserver.de ([212.227.17.13]:48499)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <dieter@HIDDEN>) id 1pH2Ri-0007cg-4V
 for 60587 <at> debbugs.gnu.org; Sun, 15 Jan 2023 07:49:13 -0500
Received: from ping ([109.250.147.186]) by mrelayeu.kundenserver.de (mreue107
 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MrxfX-1ovfmI0X4v-00nzdx; Sun, 15
 Jan 2023 13:48:59 +0100
From: "H. Dieter Wilhelm" <dieter@HIDDEN>
In-Reply-To: <83sfgd8u8l.fsf@HIDDEN> (Eli Zaretskii's message of "Sat, 14 Jan
 2023 09:12:42 +0200")
References: <86y1qgr1bf.fsf@HIDDEN>
 <86tu13qydg.fsf@HIDDEN> <83h6x2u74b.fsf@HIDDEN>
 <867cxqui0w.fsf@HIDDEN> <83sfgd8u8l.fsf@HIDDEN>
Date: Sun, 15 Jan 2023 13:48:57 +0100
Message-ID: <86a62k55fq.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Provags-ID: V03:K1:45Zz/YuWugNOj4LZCo31tffOlfDQk3+P1JvmUozIdPT+dIdwimq
 0/W4lPEbtFC5Wjd5TKEi7OMoeAuqZp2LyD8yLLZLCSXO24lWgdA646AmTUFkr8DypnnqsFP
 h+ZWt39ecvAhiNAqYE6mWcKRuXVbmEXbEVYMyhU/ZrzW8qZ+fm9HUCHIz80kRrPPQ86DKWm
 X5ACmZeRZJ/aP2mjjIl2A==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:BqWUiPlOdvY=;h37+UyTd1uZJhU9SD5l7mku0928
 56Kyc/XsBBVq7vbnDXaHCcRniJ6JSnrI3k4iT9QcmwVZFehGqu55zdvGuXTUK/akckxFgZOYp
 HtJ+MfRETdOmnqbShtnF8YD1DJPjQlbo6UDOJanLfd/oUf4EzZh+zyxslfLvMz375qKrN25uC
 jKYQfHYudGMqi7abfxSY/3R9Lfcgjwl9CzzMPVn+oExWhmUfX71Fb72O5UTs5J9g8pd7TI7Bj
 +rp0Ihlf1CKu+rpRnB+Yddj3k2pxGPBViUDbGeqP8UumpQhCtRDUfIgfmXbaPs2TOKxVmpKCw
 ZWZ6VhfF4Y+nWQQCGSP59J5ILFU+63kOXkdjrgGZcW5ngTg6tca6Pte3rCqcDmcwlFbW1i4rx
 WUsmOC2LqqklGqE7LyM2uHbMpwF09a5Ybht9dFhKWIWT24cXO+Y64EBoUe5u76u5NijVtOKx4
 uhI9b6CViaTjkJ96nYwCtYzMqKpAq6Z015iR2jWcbXc2UhlPiNZNCaSsEjentSW9LTPmMosXe
 IDRDBTd1NMfR43/OLaMuY2kJXTSKmstOV2UUWql2gfeso1ajPyCrzm/4VFawtcFC8FJXwzC6G
 qbaEgn2GSKtRQe3oPqXHCA+sX8k7ELa6w5SwEP2MMEP3p1J7FU6lLMYXTTI/VcRzZ/apjvCVR
 ebyJG2hUpkuj+R3dEcaOJkUlyTJZORR11MIng568vbbhEh2wqK1SerYQ716IMzY=
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain

Could you please check the attached patch of info.el?

I'm a bit concerned about the "symbol link" face: I think it's helpful
that they're distinct from the info link face.  On the other hand the
colour is then inconsistent to links as they appear in the help buffers.

The other concern is that the info documentation from freshly installed
packages (in the current Emacs session) are still excluded from the
linking process..

I'm looking forward to your assessments


--=-=-=
Content-Type: text/x-diff; charset=utf-8
Content-Disposition: attachment;
 filename=0001-Provide-links-in-Info-from-symbols-to-their-help-doc.patch
Content-Transfer-Encoding: quoted-printable

From 57725936981c50cd1234d8c01c86733cc29d791f Mon Sep 17 00:00:00 2001
From: Dieter Wilhelm <dieter@HIDDEN>
Date: Sun, 15 Jan 2023 13:30:45 +0100
Subject: [PATCH] Provide links in Info from symbols to their help
 documentation

---
 lisp/info.el | 383 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 383 insertions(+)

diff --git a/lisp/info.el b/lisp/info.el
index 035dff66e7..876addd7e1 100644
--- a/lisp/info.el
+++ b/lisp/info.el
@@ -5510,6 +5510,389 @@ info--manual-names
 					     Info-directory-list
 					     (mapcar #'car Info-suffix-list))))))))
=20
+
+;;; Commentary:
+
+;; The code below provides links of symbols (functions, variables, and
+;; faces) within Emacs' Info viewer to their builtin help
+;; documentation.  This linking is done when symbol names in texinfo
+;; documentation (like the Emacs- and Elisp manual) are:
+
+;; 1. Quoted symbol names like `quoted-symbol' or:
+
+;; 2. Function names which are prefixed by M-x, for example M-x
+;; function-name or are quoted and prefixed, like `M-x function-name'.
+
+;; 3. Function names appearing behind the following forms, which
+;; occur, for example, in the Elisp manual:
+
+;;   -- Special Form: function-name
+;;   -- Command: ...
+;;   -- Function: ...
+;;   -- Macro: ...
+
+;; 4. And variables names behind the following text:
+
+;;   -- User Option: variable-name
+;;   -- Variable: ...
+
+;; In any case all symbol names must be known to Emacs, which means it
+;; is either a built-in, or its Lisp package is loaded for the current
+;; Emacs session, or the symbol is auto-loaded.
+
+;; You can follow the additional links with the usual Info
+;; keybindings.  The customisation variable
+;; `mouse-1-click-follows-link' is influencing the clicking behavior
+;; (and tooltips) of the links, the variable's default is 450 (milli
+;; seconds) setting it to nil means only clicking with mouse-2 is
+;; following the link (hint: Drew Adams).
+
+;; The link color of symbols - referencing their builtin documentation
+;; - is distinct from links which are referencing further Info
+;; documentation.
+
+;; Below code is checking if Info documents are relevant Elisp and
+;; Emacs related files to avoid false positives.  Please see the
+;; customization variable `info-none-emacs-or-elisp-documents'.
+
+;; The code uses mostly mechanisms from Emacs' lisp/help-mode.el file.
+
+
+;;; Code:
+
+(require 'button)
+(require 'cl-lib)
+(require 'help-mode)
+(require 'cl-seq)
+(require 'subr-x)
+
+(defcustom info-make-xref-flag t
+  "Non-nil means Emacs creates symbol links in info buffers.
+Please see the function `info-make-xrefs' for further
+information."
+  :type '(choice (const :tag "Create links" t)
+                 (const :tag "Do not link" nil))
+  :version "30.1"
+  :group 'info)
+
+;; Toggle on or off the linking to help documents
+(when info-make-xref-flag
+  (add-hook 'Info-selection-hook 'info-make-xrefs))
+
+(defvar info-emacs-info-dir-content nil
+  "List of file names in Emacs' info directories.
+It is used to check if the current info file `Info-current-file'
+belongs to the Emacs and Elisp context.  This variable will be
+initialised when opening the first info file.")
+
+;; Turn better into a regexp list? Hint: Stefan Monier or switch to
+;; alists with an explanation of file name?
+(defcustom info-none-emacs-or-elisp-documents
+  '("aarm2012" ; Stefan: Ada manual, Elpa archive
+    "arm2012"  ; Stefan: Ada manual
+    "sicp"   ; T.V: Structure and Interpretation of Computer Programs,
+                                        ; Melpa archive
+    )
+  "List of (known) documentation which is not related to GNU Emacs or Elis=
p.
+As well as documents which should not be searched for linking to
+help documentation, for more details please see
+`info-check-docu-p'.  The list must contain only the base name of
+files, without the file extension \".info\"."
+  :type '(repeat string)
+  :version "30.1"
+  :group 'info)
+
+(defun info-check-docu-p ()
+  "Check if the current info file is relevant to Emacs or Elisp.
+That means `Info-current-file' is either found in Emacs' info/
+directory or in `package-user-dir' and is not included in the
+`info-none-emacs-or-elisp-documents' list."
+  (unless info-emacs-info-dir-content
+    (info-compile-emacs-info-dir-content))
+  (let* ((ifile Info-current-file)
+         (ifi (when ifile
+                (file-name-sans-extension
+                 (file-name-nondirectory ifile))))
+         (pdir (when (boundp 'package-user-dir)
+                 (expand-file-name
+                  package-user-dir)))
+         ;; Check if checking pdir is redundant because Package adds
+         ;; info package folders to Info-directory-list anyway?
+         (ifiles info-emacs-info-dir-content)
+         (ndocu info-none-emacs-or-elisp-documents)
+         (is-info (and ifile
+                       (or (assoc-string (concat ifi ".info") ifiles)
+                           ;; the top info "dir" file
+                           (assoc-string (concat ifi ".info.gz") ifiles)
+                           ;; info files might be archived!
+                           (when pdir (string-match pdir ifile)))
+                       (not (assoc-string ifi ndocu)))))
+    (unless is-info
+      (message "No Emacs related info file: %s." ifile))
+    is-info))
+
+(defvar describe-symbol-backends)      ;from help-mode.el
+(defvar help-xref-following)           ;dito
+
+(defface info-color
+  '((t (:inherit font-lock-doc-face
+                 ;; font-lock-preprocessor-face ; similar to link face (de=
fault)
+                 ;; font-lock-builtin-face ; similar (default Emacs)
+                 ;; font-lock-function-name-face ; similar (default)
+                 ;; info-face
+                 )))
+  "Face for the `symbol' reference items in `info' nodes."
+  :group 'info-colors)
+
+;; Button types
+(define-button-type 'info
+  'link t                         ;for Info-next-reference-or-link
+  'follow-link t
+  'face 'info-color
+  'action #'info-button-action)
+
+(define-button-type 'info-function
+  :supertype 'info
+  'info-function 'describe-function
+  'info-echo (purecopy "mouse-2, RET: describe this function"))
+
+(define-button-type 'info-variable
+  :supertype 'info
+  'info-function 'describe-variable
+  'info-echo (purecopy "mouse-2, RET: describe this variable"))
+
+(define-button-type 'info-face
+  :supertype 'info
+  'info-function 'describe-face
+  'info-echo (purecopy "mouse-2, RET: describe this face"))
+
+(define-button-type 'info-symbol
+  :supertype 'info
+  'info-function #'describe-symbol
+  'info-echo (purecopy "mouse-2, RET: describe this symbol"))
+
+(define-button-type 'info-function-def
+  :supertype 'info
+  'info-function (lambda (fun &optional file type)
+                   (or file
+                       (setq file (find-lisp-object-file-name fun type)))
+                   (if (not file)
+                       (message "Unable to find defining file")
+                     (require 'find-func)
+                     (when (eq file 'C-source)
+                       (setq file
+                             (help-C-file-name (indirect-function fun) 'fu=
n)))
+                     ;; Don't use find-function-noselect because it follows
+                     ;; aliases (which fails for built-in functions).
+                     (let ((location
+                            (find-function-search-for-symbol fun type file=
)))
+                       (pop-to-buffer (car location))
+                       (run-hooks 'find-function-after-hook)
+                       (if (cdr location)
+                           (goto-char (cdr location))
+                         (message "Unable to find location in file")))))
+  'info-echo (purecopy "mouse-2, RET: find function's definition"))
+
+;; Functions
+
+(defun info-compile-emacs-info-dir-content ()
+  "Build a list of file names from Emacs' info directories.
+This function fills `info-emacs-info-dir-content' with files from
+`Info-directory-list'."
+  (setq info-emacs-info-dir-content
+        (mapcar 'file-name-nondirectory ;'file-name-sans-extension
+                (directory-files
+                 (car
+                  ;; search for the main Emacs' info/ directory, when this
+                  ;; function is called Info-directory-list is already
+                  ;; initialised
+                  (cl-member "[^.]emacs" Info-directory-list :test
+                             'string-match-p))
+                 ;; don't list "." and ".."
+                 t  "[^.]$"))))
+
+(defun info-button-action (button)
+  "Call BUTTON's help function."
+  (info-do-xref nil
+                (button-get button 'info-function)
+                (button-get button 'info-args)))
+
+(defun info-do-xref (_pos function args)
+  "Call the help cross-reference function FUNCTION with args ARGS.
+Things are set up properly so that the resulting `help-buffer' has
+a proper [back] button."
+  ;; There is a reference at point.  Follow it.
+  (let ((help-xref-following nil))
+    (apply
+     function (if (eq function 'info)
+                  (append args (list (generate-new-buffer-name "*info*")))=
args))))
+
+(defun info-button (match-number type &rest args)
+  "Make a hyperlink for cross-reference text previously matched.
+MATCH-NUMBER is the subexpression of interest in the last matched
+regexp.  TYPE is the type of button to use.  Any remaining arguments are
+passed to the button's info-function when it is invoked.
+See `info-make-xrefs' Don't forget ARGS."
+  ;; Don't munge properties we've added, especially in some instances.
+  (unless (button-at (match-beginning match-number))
+    ;; (message "Creating button: %s." args)
+    (make-text-button (match-beginning match-number)
+                      (match-end match-number)
+                      'type type 'info-args args)))
+
+(defvar info-symbol-context
+  '(( variable . "variable\\|option")
+    ( function . "function\\|command\\|call")
+    ( face . "face")
+    ( ignore . "symbol\\|program\\|property")
+    ;; ignore symbols following this context type
+    ( definition . "source \\(?:code \\)?\\(?:of\\|for\\)"))
+  ;; function definitions in files
+  "This list helps to distinguish symbol types.
+Words in info documentation preceding a (quoted) symbol are used
+to distinguish variables, functions, faces and symbols.  The
+context information can also be used to ignore symbols because
+there is no help documentation for them.  The strings of the the
+list are becoming part of `info-symbol-regexp'.")
+
+(defvar info-symbol-regexp
+  ;; use purecopy?
+  (concat
+   "\\("                                ; Context start
+   "\\<\\("                             ; Contex type definition
+   (string-remove-suffix
+    "\\|"
+    (mapconcat
+     (lambda (x) (concat "\\(" (cdr x) "\\)\\|"))
+     info-symbol-context ""))
+   "\\)"          ; Context type definition end
+   "[ \t\n]+"     ; Separators to quoted symbols
+   "\\)?"         ; End of context
+   ;; quoted symbol
+   "['`=E2=80=98]"	  ; opening quotes
+   ;; Note: Symbol starting with word-syntax character:
+   "\\(\\sw\\(\\sw\\|\\s_\\)+\\|`\\)" ; The symbol itself
+   "['=E2=80=99]"                             ; End quotes
+   )
+  "The regular expression for matching symbols to their help documentation.
+It is comprised of the symbol's context and the (quoted) symbol
+name.  The various groups of context regular expressions are
+matched in `info-make-xrefs' to distinct info buttons.")
+
+(defun info-check-type( type)
+  "Check if TYPE corresponds to the current search result.
+The function is used in `info-make-xrefs'."
+  (let* ((isc info-symbol-context)
+	 (n 3)                           ;embedded within 2 groups
+         (l (+ 3 (length isc))))
+    (while (and (not (eq type (caar isc) ) ) (< n l) )
+      (setq n (1+ n))
+      (setq isc (cdr isc)))
+    (match-string n)))
+
+
+;;;###autoload
+(defun info-make-xrefs (&optional buffer)
+  "Parse and hyperlink documentation cross-references in the given BUFFER.
+Find cross-reference information in a buffer and activate such
+cross references for selection with `help-follow'.  The current
+buffer is processed if the BUFFER argument is omitted.
+
+ Cross-references have the canonical (quoted) form `symbol-name'
+and the type of reference may be disambiguated by the preceding
+word(s) as compiled in `info-symbol-regexp'.  For example: Symbol
+names are receiving distinct variable buttons when preceeded by
+the words \"variable\" or \"option\".
+
+Variables are also detected when their names follow below form:
+
+ -- User Option: variable-name
+ -- Variable: ...
+
+Function names are also detected when prefixed by `M-x`, for
+example `M-x function-name` or are quoted and prefixed like `M-x
+function-name`.
+
+Function names are detected, as well, when appearing behind the
+following forms, which occur - for example - in the Elisp manual:
+
+ -- Special Form: function-name
+ -- Command: ...
+ -- Function: ...
+ -- Macro: ...
+
+The linking is similar to mechanisms from lisp/help.el."
+  (interactive "b")
+  (when (info-check-docu-p)
+    (with-current-buffer (or buffer (current-buffer))
+      (save-excursion
+        (goto-char (point-min))
+        (with-silent-modifications      ;hint from Stefan
+          (let ((case-fold-search t)
+                (inhibit-read-only t))
+            (with-syntax-table emacs-lisp-mode-syntax-table
+              ;; Quoted symbols
+              (save-excursion
+                (while (re-search-forward info-symbol-regexp nil t)
+                  (let* ((data (match-string (+ 3 (length info-symbol-cont=
ext))))
+                         (sym (intern-soft data)))
+                    (if sym
+                        (cond
+                         ((info-check-type 'variable)
+                          (and (or (boundp sym)
+                                   (get sym 'variable-documentation))
+                               (info-button 8 'info-variable sym)))
+                         ((info-check-type 'function)
+                          (and (fboundp sym)
+                               (info-button 8 'info-function sym)))
+                         ((info-check-type 'face)
+                          (and (facep sym)
+                               (info-button 8 'info-face sym)))
+                         ((info-check-type 'ignore))
+                         ((info-check-type 'definition)
+                          (info-button 8 'info-function-def sym))
+                         ;; symbols
+                         ((cl-some (lambda (x) (funcall (nth 1 x) sym))
+                                   describe-symbol-backends)
+                          (info-button 8 'info-symbol sym)))))))
+              ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+              ;; (info "(elisp) Eval")
+              ;; Elisp manual      -- Special Form:
+              ;;                   -- Command:
+              ;;                   -- Function: function-name function
+              ;;                   -- Macro:
+              (save-excursion
+                (while (re-search-forward
+                        "-- \\(Special Form:\\|Command:\\|Function:\\|Macr=
o:\\) "
+                        nil t)
+                  (looking-at "\\(\\sw\\|\\s_\\)+")
+                  (let ((sym (intern-soft (match-string 0))))
+                    (if (fboundp sym)
+                        (info-button 0 'info-function sym)))))
+              ;;              -- User Option:
+              ;;              -- Variable: variable-name
+              (save-excursion
+                (while (re-search-forward
+                        "-- \\(User Option:\\|Variable:\\) "
+                        nil t)
+                  (looking-at "\\(\\sw\\|\\s_\\)+")
+                  (let ((sym (intern-soft (match-string 0))))
+                    (if (boundp sym)
+                        (info-button 0 'info-variable sym)))))
+              ;; M-x prefixed functions
+              (save-excursion
+                (while (re-search-forward
+                        ;; Assume command name is only word and symbol
+                        ;; characters to get things like `use M-x foo->bar=
'.
+                        ;; Command required to end with word constituent
+                        ;; to avoid `.' at end of a sentence.
+                        ;; "\\<M-x\\s-+\\(\\sw\\(\\sw\\|\\s_\\)*\\sw\\)" n=
il t)
+                        ;; include M-x and quotes
+                        "['`=E2=80=98]?M-x\\s-*\n?\\(\\sw\\(\\sw\\|\\s_\\)=
*\\sw\\)['=E2=80=99]?" nil t)
+                  (let ((sym (intern-soft (match-string 1))))
+                    (if (fboundp sym)
+                        (info-button 1 'info-function sym))))))))))))
+
 (provide 'info)
=20
 ;;; info.el ends here
--=20
2.34.1


--=-=-=
Content-Type: text/plain


-- 
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany

--=-=-=--




Message received at control <at> debbugs.gnu.org:


Received: (at control) by debbugs.gnu.org; 17 Jan 2023 20:03:33 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Tue Jan 17 15:03:33 2023
Received: from localhost ([127.0.0.1]:38356 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pHsBB-0004rj-B6
	for submit <at> debbugs.gnu.org; Tue, 17 Jan 2023 15:03:33 -0500
Received: from mout.kundenserver.de ([217.72.192.75]:54831)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <dieter@HIDDEN>) id 1pHsB9-0004rV-1A
 for control <at> debbugs.gnu.org; Tue, 17 Jan 2023 15:03:32 -0500
Received: from ping ([109.250.147.186]) by mrelayeu.kundenserver.de (mreue106
 [212.227.15.183]) with ESMTPSA (Nemesis) id 1M6VRf-1pOijl3UmP-006zzg
 for <control <at> debbugs.gnu.org>; Tue, 17 Jan 2023 21:03:24 +0100
From: "H. Dieter Wilhelm" <dieter@HIDDEN>
To: control <at> debbugs.gnu.org
Subject: Re: bug#60587: 30.0.50; Info pages are lacking links from symbol
 names to the symbol's help documentation
Date: Tue, 17 Jan 2023 21:03:22 +0100
Message-ID: <867cxlq67p.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Provags-ID: V03:K1:D/xR2iFY+nPaTwmgchCTrADwOCx9sXzD20GcHqF7OSAfp3tx6Qa
 QJYxlKm3wxo2hnfsH4w/W/45JOiAqukHPrwcmceTsBVliFD9PDWyoDSP+KXhtmb/TquKObz
 z0Yyw6IBk+YzUVMflX3y+M297F4tTXP84lyykM0X3DQeHpeNPRahLsGfld3kRSiY+N1Njgn
 FYF9TCFAZPARY0Sm8OILw==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:HebQYVzejpM=;v0dSyMAAOjMv6FGlUfo2YTwWkv8
 rbyCJVu23lVA9yDqgKFE+NUWY9e4B0qnPWZmDVc1o1cd2TWoXRDpa2m2VLnLzMB1xhMyQAR93
 hM48zsWHLyzdYcIZavBRSMLlwA3oQbr0I3B8/o+iiO8i862TA9rJw9xXQoxGmyew3KEcxSoH9
 sYWsSLQ0ZLixu/zvVrEcfBP9f4oz+e6lNuWc+xnVgXMykQVUxQ3lrfBb2Qm+qdzinyIJX1/UJ
 /8XRIE4VkVYYTcae8uPLGzzwXxFhmtHA5O+dN0joUhoXSPSHPfNxcKWrtCkme8wk+fh3LDCXL
 fi2YgX4ahQZOYZ5vcS7mHdzQyBYFRRWUTr6GP2v66ANiuuQDQ5Q5h+XUELN6BdnnI6YcaRITf
 lYZ2Uf4gQ1ZLTHbK3BLM66P8kxtgPoMw8sJhRm2OZGKj70rOF/RivPGTIRofVsTQFEw6ovS8G
 cO/9/84Vf8ktHnd2IliDb0GKAkhMIdfhl10ShFAPrbFgai46S6QJeIeYkPSANDOBkaJUb0LTF
 dXhsKWwKBos8j5YSf7fRM6JS7yR+wLdygj0ZLIHJHevWuvKlu9k3bnZAd1BhtCopJ2RRdnSQj
 AoW7sLa7qC78cCKBOBsIbHpbY8j3nOH39jkUYoOhGUaDpN2bhl/GrA/EnDF4geR+zgvOWwDKn
 KvjuVeepOA5Pb/1d5F5MDa4THDzRkPp5CxTBbx6aSg==
X-Spam-Score: 0.0 (/)
X-Debbugs-Envelope-To: control
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

tags 60587 + patch
-- 
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#60587: Patch for adding links to symbols' help documentation
Resent-From: "H. Dieter Wilhelm" <dieter@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 17 Jan 2023 21:54:02 +0000
Resent-Message-ID: <handler.60587.B60587.16739924186302 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 60587
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Eli Zaretskii <eliz@HIDDEN>
Cc: 60587 <at> debbugs.gnu.org, Stefan Monnier <monnier@HIDDEN>
Received: via spool by 60587-submit <at> debbugs.gnu.org id=B60587.16739924186302
          (code B ref 60587); Tue, 17 Jan 2023 21:54:02 +0000
Received: (at 60587) by debbugs.gnu.org; 17 Jan 2023 21:53:38 +0000
Received: from localhost ([127.0.0.1]:38438 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pHtti-0001da-8l
	for submit <at> debbugs.gnu.org; Tue, 17 Jan 2023 16:53:38 -0500
Received: from mout.kundenserver.de ([212.227.17.10]:51089)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <dieter@HIDDEN>) id 1pHtte-0001dK-Rg
 for 60587 <at> debbugs.gnu.org; Tue, 17 Jan 2023 16:53:36 -0500
Received: from ping ([109.250.147.186]) by mrelayeu.kundenserver.de (mreue108
 [212.227.15.183]) with ESMTPSA (Nemesis) id 1MS3vJ-1pAZd00Fbv-00TY9x; Tue, 17
 Jan 2023 22:53:25 +0100
From: "H. Dieter Wilhelm" <dieter@HIDDEN>
In-Reply-To: <83h6x2u74b.fsf@HIDDEN> (Eli Zaretskii's message of "Sat, 07 Jan
 2023 09:38:28 +0200")
References: <86y1qgr1bf.fsf@HIDDEN>
 <86tu13qydg.fsf@HIDDEN> <83h6x2u74b.fsf@HIDDEN>
Date: Tue, 17 Jan 2023 22:53:23 +0100
Message-ID: <863588rfos.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Provags-ID: V03:K1:84Xa+GIhorSOekAvbzKfEDu+eGJHA0oU2FV3c5S2DwYWmZ2E1sf
 IunlSHXkbzBBxee+WktGp7zERqvzWl3ANNZ30ysCeKlI7z4FLpVvj+E8RvP0snzWfulS6vq
 Bz+T1qyKmYnpYrpJmoTpV4zSdjAL30M7bgNq2r4zpVqe3se4zA+9FfotDQOkmOcz1BLmm7P
 kCAVWqc+8MLrOZn3UwOXg==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:DME1vpIhY8c=;Sg1g7wShRLqW1HU++kmOlxFjotG
 18EwcbRKLZj26AdqRjq04tAIhNULtuC4XikkRSACbkcELipB7YbrTGO/ykh6D6aVMUR6iFb6m
 GOe2s/wPulEiuzOJoqbDQGJtQV/SvQkzHsROlR/lBFNOCe3q1ZReRwuUzgSYWIXSiKbO+G94/
 eCQon5hZPwPvPbOOWZwTqz7tVzRpZf80RmTanuGQCgKH0GtW1FQcDf/iMMfvPGJTLEtsxfYr3
 ectUnykcPi8IYfcUM3VEJ8oInJtMF/xUOhAVwbJ1DDF++RKtpPNA3NMh0MPm4BXzIf0ZbfFhr
 dZFABA1zi0sWYZwr656VLFgmtFfkVM31n3mwgIza/+g0Sj97Xn76AJjlioez7EyucbMYlzCCa
 xGjuCXCOJCx0HNeZWrDw/74UFUOsJ25TSy3YbocJYKBNnVoaifjS0Htn3gw4GlTOkxsM2tp6G
 +1nQFJcnAvUEtmmfB54ZhOAcctdknrNeui73Gc5i9bvWOFnNBGR7ui3IhaQyjOLSoc/1h4CbT
 cDBT4y1GvSY2AQfHeAQHLGFWp45uUqFRVGEIKi/wpPp2rPaYPUktsSyTFjwEb/RxU/b8uRIKu
 GlazpOQ+ReDO6XZf9KhFHD2Ro0zPA9pK3N8H3a6CQmLhcIgidvqQgkyDnxaDLhhGm3TbydaXT
 qPQD9CGlvx1ujFVDWGdBzdM8VZl0P6DNy1uioJjvOA==
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain

Eli Zaretskii <eliz@HIDDEN> writes:
> Finally, this needs additions to the user manual and NEWS.

Do you think about Emacs' Info manual?  My feeling is that it could be
fitting to explain the additional linking capability here:

(info "(info) Help-Xref").


--=-=-=
Content-Type: text/x-diff
Content-Disposition: inline;
 filename=0001-Entry-for-Info-viewer-providing-links-from-symbols-b.patch

From 31229f536627fbb0e7dadd3f60be4d94119b9f80 Mon Sep 17 00:00:00 2001
From: Dieter Wilhelm <dieter@HIDDEN>
Date: Tue, 17 Jan 2023 22:25:54 +0100
Subject: [PATCH] Entry for Info viewer providing links from symbols
 (bug#60587)

*etc/NEWS: Mention implementation
---
 etc/NEWS | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/etc/NEWS b/etc/NEWS
index 068f7a27db8..c193b59647a 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -165,6 +165,14 @@ the new argument non-nil, it will use a new buffer instead.
 Interactively, invoke 'eww-open-file' with a prefix argument to
 activate this behavior.
 
+** Info
+
+*** Info viewer provides now links from symbols to their help documentation.
+Links from quoted `symbol' names, like names of variables, functions
+and faces, are pointing to their *Help* documentation. If you want to
+disable such links - in addition to the regular Info cross references
+- you can set the variable `info-make-xref-flag' to nil.
+
 
 * New Modes and Packages in Emacs 30.1
 
-- 
2.34.1


--=-=-=
Content-Type: text/plain


-- 
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany

--=-=-=--




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#60587: Patch for adding links to symbols' help documentation
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Wed, 18 Jan 2023 13:21:02 +0000
Resent-Message-ID: <handler.60587.B60587.167404801510105 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 60587
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: "H. Dieter Wilhelm" <dieter@HIDDEN>
Cc: 60587 <at> debbugs.gnu.org, monnier@HIDDEN
Received: via spool by 60587-submit <at> debbugs.gnu.org id=B60587.167404801510105
          (code B ref 60587); Wed, 18 Jan 2023 13:21:02 +0000
Received: (at 60587) by debbugs.gnu.org; 18 Jan 2023 13:20:15 +0000
Received: from localhost ([127.0.0.1]:39830 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pI8MR-0002cu-E8
	for submit <at> debbugs.gnu.org; Wed, 18 Jan 2023 08:20:15 -0500
Received: from eggs.gnu.org ([209.51.188.92]:35138)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1pI8MP-0002cc-Rj
 for 60587 <at> debbugs.gnu.org; Wed, 18 Jan 2023 08:20:14 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pI8MI-0007AK-1h; Wed, 18 Jan 2023 08:20:07 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=06Eihm7W4m5UDm5tQJoR1Azhi+aEgpRVTqTFWtBNu+I=; b=hy8vCD1JLMRE
 ejKqXyaYkgLmIPjYSYX00h6tICdNsI3WIhidJ/x4FF8rpW1nsaSXT+azBNz5sRt/DO9kMGc5R1Mj6
 zUTbldn+ADXvnv3Fg2rqeKfc/ezJjHd3ZwoyEyvmZy8BYoR99md5+rM7WXnLX90zAawB/r1Holn0Z
 980V4exn4zOBhDGfld62LgII1Tg/e0o4Q+eFPZw10Fhhmosn5xtbL08C9VeFxKM2HW68x82EIA0di
 UvASw0aef8c7uVa96OBRgIM2J0iDmQVWMa2jZHG25z/v4xB3Dug8TG1ae6elvE9/DSr7ru1LSnWqV
 OOfjKZ/tcz1Eh8gdg0GRcA==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pI8MG-0007SS-PR; Wed, 18 Jan 2023 08:20:05 -0500
Date: Wed, 18 Jan 2023 15:20:18 +0200
Message-Id: <83o7qw0yjy.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <863588rfos.fsf@HIDDEN>
 (dieter@HIDDEN)
References: <86y1qgr1bf.fsf@HIDDEN>
 <86tu13qydg.fsf@HIDDEN> <83h6x2u74b.fsf@HIDDEN>
 <863588rfos.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: "H. Dieter Wilhelm" <dieter@HIDDEN>
> Cc: Stefan Monnier <monnier@HIDDEN>,  60587 <at> debbugs.gnu.org
> Date: Tue, 17 Jan 2023 22:53:23 +0100
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> > Finally, this needs additions to the user manual and NEWS.
> 
> Do you think about Emacs' Info manual?  My feeling is that it could be
> fitting to explain the additional linking capability here:
> 
> (info "(info) Help-Xref").

No, the info.info manual is not what I had in mind.  I meant the Emacs
manual.

I think a good place is to mention this feature in the "Misc Help"
section.

> +*** Info viewer provides now links from symbols to their help documentation.
> +Links from quoted `symbol' names, like names of variables, functions
> +and faces, are pointing to their *Help* documentation. If you want to
> +disable such links - in addition to the regular Info cross references
> +- you can set the variable `info-make-xref-flag' to nil.

First, please leave 2 spaces between sentences, and use "--" for a
dash.

More importantly, "pointing to help documentation" is confusing: what
exactly is "help documentation" here, and how does an Info manual
"point" there.

I think you should instead say that these symbols are made into
buttons that can be used to display the documentation strings of the
functions/variables.  Or something to that effect.

Thanks.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#60587: Patch for adding links to symbols' help documentation
Resent-From: "H. Dieter Wilhelm" <dieter@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 20 Jan 2023 21:10:02 +0000
Resent-Message-ID: <handler.60587.B60587.167424895810338 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 60587
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Eli Zaretskii <eliz@HIDDEN>
Cc: 60587 <at> debbugs.gnu.org, monnier@HIDDEN
Received: via spool by 60587-submit <at> debbugs.gnu.org id=B60587.167424895810338
          (code B ref 60587); Fri, 20 Jan 2023 21:10:02 +0000
Received: (at 60587) by debbugs.gnu.org; 20 Jan 2023 21:09:18 +0000
Received: from localhost ([127.0.0.1]:47294 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pIydR-0002gf-Td
	for submit <at> debbugs.gnu.org; Fri, 20 Jan 2023 16:09:18 -0500
Received: from mout.kundenserver.de ([212.227.126.133]:55467)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <dieter@HIDDEN>) id 1pIydO-0002gQ-Vt
 for 60587 <at> debbugs.gnu.org; Fri, 20 Jan 2023 16:09:16 -0500
Received: from ping ([109.250.146.179]) by mrelayeu.kundenserver.de (mreue010
 [212.227.15.167]) with ESMTPSA (Nemesis) id 1MeTkC-1ol1KG3LcK-00aXrm; Fri, 20
 Jan 2023 22:09:04 +0100
From: "H. Dieter Wilhelm" <dieter@HIDDEN>
In-Reply-To: <83o7qw0yjy.fsf@HIDDEN> (Eli Zaretskii's message of "Wed, 18 Jan
 2023 15:20:18 +0200")
References: <86y1qgr1bf.fsf@HIDDEN>
 <86tu13qydg.fsf@HIDDEN> <83h6x2u74b.fsf@HIDDEN>
 <863588rfos.fsf@HIDDEN> <83o7qw0yjy.fsf@HIDDEN>
Date: Fri, 20 Jan 2023 22:09:03 +0100
Message-ID: <864jskx6a8.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: multipart/mixed; boundary="=-=-="
X-Provags-ID: V03:K1:Hckrq7/DXr30w9wB2akPxeZg/f4/7Tmu9AfXIw6AT19JmaaUN+Z
 hhWBHtOWYooNuOAyhw7K6LnPt/zPihMJPckLNKl0WAf9rTslB2IsjvaXxg0hLb/Ya2j/asx
 a7uC0vYKgjap2Wk5CQHfqhxJsvxihdI2dSXBQFc81Ut4b6b7Er+POnWuel7FnqaN0bv2Kdu
 quY9nKnqorX8rsHvBPcDw==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:JLb+bNz85vM=;7vMzxxMC8d2KPgfre7lRYhy4lSr
 6fYRbdf0e9ZFq67OpdEF+h2pg35qu1ay8Wa0fDfJitH6XTuPIruz/YIVggbewK43EpPQQo4Ws
 GzT1KANgo8KuJvhTfnSMMB2t/FluDcGBaQbUmuZjPA6itSLTV2BKM8JuynQ+knsFYeP24NfhE
 hPot0hAZJ+KWMyU8NFvPefcoG1xlQ1a8kJVNBhtMz3KLzS5LGduXjll6lE6QPUvhg8dnUv5bl
 V6paERol/U3Ogwl8nVwA4/F9haoqg4IdAbim+P35hKRQLNfMZo2nLL4RuWeIXaRQabzoIrlUb
 ElI++DieiPVAj30P41g6ZdPRLE2HXuA13dBI8ywFRS9O5NTcZFxOv/snt3FQC7NVe/PWRUu+7
 SBFZIXK8j8NRH/y+k6H4YzVYHRDqnUzOv4QaVfR/yGFZMkDPXDuOO1K6zqF0D58ErPQe7hKDj
 a3eO6ALfTK8Xho/GJNHA9k+tGuYtRIqnH32D2/alfcYj1JrUoGzLxeSODVbeCX3a7ash86Xwy
 994YdfXcHCgAg3FBoAbfLB20DP6HZrvqgo+E2eRuIT4ftpXdOpcccMNpgTD1kMGeBgWKblfyF
 +evbGf+NZWUiX5Ns/cx8zOlAMVQXVM26Z9SnwtQ8rSsa2un8O3uG0Vfq7SdVpJw3vUYty3gDi
 Z+KRyyLadTee7nPzbWQpCldT5iz77eJG8pHORVvbq4/r/3Jy5k6H5MbMo4kHtQo=
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--=-=-=
Content-Type: text/plain

Eli Zaretskii <eliz@HIDDEN> writes:

> I think a good place is to mention this feature in the "Misc Help"
> section.

Could you please check if below formulation is better fitting?

Unfortunately I also need to investigate the code anew.  Yesterday I
realised a regression starting with Emacs-29!  `Tab' and `S-Tab' aren't
working any longer for Info references.  (E.g. the `Tab' keybinding is
switched from `Info-next-reference' to `forward-button'..)


--=-=-=
Content-Type: text/x-diff
Content-Disposition: inline;
 filename=0001-Documentation-of-Info-providing-buttons-on-quoted-sy.patch

From fa7c61466157a580b17d15f989e1b825ba4c860a Mon Sep 17 00:00:00 2001
From: Dieter Wilhelm <dieter@HIDDEN>
Date: Tue, 17 Jan 2023 22:25:54 +0100
Subject: [PATCH] Documentation of Info providing buttons on quoted symbols
 (bug#60587)

*etc/NEWS: Mention implementation
*doc/emacs/help.texi: Describe implementation
---
 doc/emacs/help.texi |  9 +++++++++
 etc/NEWS            | 11 +++++++++++
 2 files changed, 20 insertions(+)

diff --git a/doc/emacs/help.texi b/doc/emacs/help.texi
index 2513e6be271..781b2bf1ab4 100644
--- a/doc/emacs/help.texi
+++ b/doc/emacs/help.texi
@@ -653,6 +653,15 @@ Misc Help
 K @var{key}}, described above, enter Info and go straight to the
 documentation of @var{function} or @var{key}.
 
+  The commands @kbd{C-h f} and @kbd{C-h v}, also described above
+(@xref{Name Help}), in an Info buffer can be replaced by @kbd{Ret} or
+@kbd{mouse-1} on quoted symbol names.  For example, the quoted name
+@code{info-other-window} is made into a button which shows the
+function's documentation string in another window in the @file{*Help*}
+buffer.  Such quoted symbols (variables, functions and face names) are
+highlighted by a distinct face and can be reached, as the Info
+references, with @kbd{Tab} and @kbd{S-Tab}.
+
 @kindex C-h S
 @findex info-lookup-symbol
   When editing a program, if you have an Info version of the manual
diff --git a/etc/NEWS b/etc/NEWS
index fc8a3ac66a0..f9ea0084cb5 100644
--- a/etc/NEWS
+++ b/etc/NEWS
@@ -174,6 +174,17 @@ the new argument non-nil, it will use a new buffer instead.
 Interactively, invoke 'eww-open-file' with a prefix argument to
 activate this behavior.
 
+** Info
+
++++
+*** Info-mode provides buttons on symbols showing their documentation string.
+Quoted `symbols', like names of variables, functions or face names,
+are made into buttons which can display the respective documentation
+strings.  These strings are presented in *Help* buffers in another
+window.  Such buttons are working independently of the regular Info
+cross references and can be disabled with setting
+`info-make-xref-flag' to nil.
+
 
 * New Modes and Packages in Emacs 30.1
 
-- 
2.34.1


--=-=-=
Content-Type: text/plain


-- 
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany

--=-=-=--




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#60587: Patch for adding links to symbols' help documentation
Resent-From: Drew Adams <drew.adams@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 20 Jan 2023 22:00:02 +0000
Resent-Message-ID: <handler.60587.B60587.1674251979970 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 60587
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: "H. Dieter Wilhelm" <dieter@HIDDEN>, Eli Zaretskii <eliz@HIDDEN>
Cc: "60587 <at> debbugs.gnu.org" <60587 <at> debbugs.gnu.org>, "monnier@HIDDEN" <monnier@HIDDEN>
Received: via spool by 60587-submit <at> debbugs.gnu.org id=B60587.1674251979970
          (code B ref 60587); Fri, 20 Jan 2023 22:00:02 +0000
Received: (at 60587) by debbugs.gnu.org; 20 Jan 2023 21:59:39 +0000
Received: from localhost ([127.0.0.1]:47371 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pIzQB-0000FZ-AE
	for submit <at> debbugs.gnu.org; Fri, 20 Jan 2023 16:59:39 -0500
Received: from mx0a-00069f02.pphosted.com ([205.220.165.32]:57870)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <drew.adams@HIDDEN>) id 1pIzQ8-0000FP-KD
 for 60587 <at> debbugs.gnu.org; Fri, 20 Jan 2023 16:59:37 -0500
Received: from pps.filterd (m0246617.ppops.net [127.0.0.1])
 by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id
 30KJxeBH025641; Fri, 20 Jan 2023 21:59:35 GMT
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com;
 h=from : to : cc :
 subject : date : message-id : references : in-reply-to : content-type :
 content-transfer-encoding : mime-version; s=corp-2022-7-12;
 bh=GidDNdZYH6pHWWVZiMEQ83tmMEfBFliAngBvOVSWcoQ=;
 b=KVkPGZDA8qdpMOXbrrKJ+OR1I55IBhOjp0vD9rqDYo12EHxksWNhTMC2sDOwrloks1e+
 zpwOCo0jvNWNeB4BOXgheARJi3LqcYtkwmDW+fKCtVuWRoVRYbc0cG70XPmbLUAqvDnv
 Vyo64vYWXzj3De0cY8cJHbCSg6UjNXgv0MLULP+s2ozK5FkaZ4UkijI/MR1mmR/TFN5L
 D8+hDUreLAAtk53JOUIDWMMXbb3RWI0NUZOIbht0w6y7YKx2c8Zo1qL3alhA+/tXSxhY
 w3+a7FaK8mmUJE8DdPaEbee1ScEsq10n+kqMdfWIopidudGnkjKCm101wJ9Sls9NF5JC 2g== 
Received: from phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com
 (phxpaimrmta02.appoci.oracle.com [147.154.114.232])
 by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3n3mxtds4y-1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);
 Fri, 20 Jan 2023 21:59:35 +0000
Received: from pps.filterd
 (phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com [127.0.0.1])
 by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (8.17.1.5/8.17.1.5)
 with ESMTP id 30KKe5If000984; Fri, 20 Jan 2023 21:59:34 GMT
Received: from nam02-sn1-obe.outbound.protection.outlook.com
 (mail-sn1nam02lp2040.outbound.protection.outlook.com [104.47.57.40])
 by phxpaimrmta02.imrmtpd1.prodappphxaev1.oraclevcn.com (PPS) with ESMTPS id
 3n74d35ymn-1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);
 Fri, 20 Jan 2023 21:59:34 +0000
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=LX2c5njiLCJaQ/jRoO5cVpyxitW1d0ol9BZyYXJ2c0PUJqyD9uekjHu0Jeyh6kiCtG77WxGuMjTKPqIXTk5jGF/eT+NL8vdDDK3tsAiz451pKTq4MGCwO2lY/sZ4kp48+XwOlCaSu3U7+AGHoCbaiD9eJ6DCmGb3mfKk0CoZAJ325kvEz0okQpTEKdvEb4/5Ne2QEnH1f/En29HRFMSM7A1gDpPi8ygfumQmwPc8H+PWw4hYgNYos7Ob4AqKsoTfXzg3LSIG+t8KPA9rHcW8j+382Lpdes2ZjLWmyqhqPUkkijo2uiLh64ZhaTCqnPopCL0Ky8rOtN6ix3D1xPYTcA==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=GidDNdZYH6pHWWVZiMEQ83tmMEfBFliAngBvOVSWcoQ=;
 b=PR5XVXe+M2zXfQeD0zYLvPYdaqt6ewl1CpOCwErZdZaau9Ts1UPY6upPdNpXSZT9hETTYoTa9qdydOjg/KwFU7Yb54xUlQmVDnDEWvZCUhHiNavAbFSRHdT3eTnnXUE1nP2sbtSqNJZvWvw98ktih2PuKfizTswXjTjqQO1+K/tz2QW4Yj39f5yaG3CrAix4cWfBdcjxB/sQo9Anm3Uhza4RTAW+e/7k0t4Rh27NAqqUq6DWsoMTTIaVsuKU2dQMZeajFD9pnVtHRjHL1Q4cdD/rcxM96UQXQEiqJrEqMWku3+w5fjGWaecboPxGLcjkWkjldOr+TQWA9vWp7zUjTQ==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com;
 dkim=pass header.d=oracle.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=GidDNdZYH6pHWWVZiMEQ83tmMEfBFliAngBvOVSWcoQ=;
 b=nsIBKiY0GpSiX/NORi39PYrupq/z+cMxv0cue/8GQZsXc1ylkMDfekuIQqFEsPiyoC+4SCXKMoSsMpZwxUEUCA+kYtrn1rkCgXX1JEFXxL+fGqTjEnxEAJEa1/5Dfw7WKWysZyNfLx5yMeHOPZsOu7KHceWPyyeoFDj6DP/XiPw=
Received: from SJ0PR10MB5488.namprd10.prod.outlook.com (2603:10b6:a03:37e::19)
 by CH0PR10MB4937.namprd10.prod.outlook.com (2603:10b6:610:c5::24)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.7; Fri, 20 Jan
 2023 21:59:27 +0000
Received: from SJ0PR10MB5488.namprd10.prod.outlook.com
 ([fe80::7c3c:e53d:5276:ef29]) by SJ0PR10MB5488.namprd10.prod.outlook.com
 ([fe80::7c3c:e53d:5276:ef29%7]) with mapi id 15.20.6043.007; Fri, 20 Jan 2023
 21:59:27 +0000
From: Drew Adams <drew.adams@HIDDEN>
Thread-Topic: [External] : bug#60587: Patch for adding links to symbols' help
 documentation
Thread-Index: AQHZLROoSswej+9Mc0yojxbTs2n74a6n2AxQ
Date: Fri, 20 Jan 2023 21:59:27 +0000
Message-ID: <SJ0PR10MB548880854B8286BB31F3082AF3C59@HIDDEN>
References: <86y1qgr1bf.fsf@HIDDEN>
 <86tu13qydg.fsf@HIDDEN> <83h6x2u74b.fsf@HIDDEN>
 <863588rfos.fsf@HIDDEN> <83o7qw0yjy.fsf@HIDDEN>
 <864jskx6a8.fsf@HIDDEN>
In-Reply-To: <864jskx6a8.fsf@HIDDEN>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SJ0PR10MB5488:EE_|CH0PR10MB4937:EE_
x-ms-office365-filtering-correlation-id: babc9084-cade-4818-3939-08dafb319998
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: U9HckSPUqotrhuJjOPp/XAvzCeIOma0OAxQlLt2J0xqBu68hxlxOK1TZs5QIzWMnN88wH1MVdIzYYwPvV8QxLKuCgXD4gEOkW9WtXP/LhjEHZI/ab4yCPoCgGrOnIHFCNhIbPtnlHm+L+gWmheObK6wlS47dks5kqJ7rJsB6wNZMF+LLWYI/rUtbCvG7vgzCjwWyG3seWlxNJkj2HL6xZCJ56UAqzktMIHlm2UsSa8kNv+jfKswsUwqgUlpUxEJzn+K6peqmQ82zjegMKxetHd+axbbnE8lHNqhTo8sTLGUoiLHJiImfbOgtGRWYkjS0l3lv/RqfVbaApTo0H+EVghMmmcpSAjtjH0GZTm2pC0Jry/lC5IzXgbWrppJFk4m7Gsx0ilbLHgc6r6ptsjWkb6jJaOkIHg/q7cOFGy26rYk5sNBGK+Pr4HVonfwmxBwjVWT7fbZ8eG+e0B5V7UM8HxX0uC3x9nR8DPk6Msa7mPXG7l0o+kBO3CABF/CFtLmIlili8M424FaVAFSoq35dp+Kf6gpLxF/gLZ5JJcVZ5K454NFMFhZ+9FjsLHth6v8pSRDYIOmhF8267pRzvuPp6Yo/KqDkpFE+YhL0RdOERwsJngaEK+0IDi/BObd2H7sZ9PRBGeYNpLURIPBru8i1tMkbTB736BdyZbxXsUt0QuVexobsvZIucDi40hDCVsHen06Bj2Dio+j+BpoVMno7Jg==
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;
 IPV:NLI; SFV:NSPM; H:SJ0PR10MB5488.namprd10.prod.outlook.com; PTR:; CAT:NONE;
 SFS:(13230022)(39860400002)(396003)(136003)(366004)(376002)(346002)(451199015)(5660300002)(8676002)(4326008)(7696005)(66476007)(64756008)(316002)(66446008)(66556008)(8936002)(52536014)(33656002)(6506007)(122000001)(41300700001)(38070700005)(71200400001)(54906003)(55016003)(110136005)(9686003)(2906002)(44832011)(86362001)(478600001)(26005)(186003)(38100700002)(76116006)(66946007);
 DIR:OUT; SFP:1101; 
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: BjuoahOVuL0A5RrF6jtfgEP+46ZQMUbY9haXP1bQUmRq9ZgHLfO/gBCebtjQLVI5JjZfWr3cT8vR6wfVkVZNgfyY+gO9XGEnnMZBKpH/+Dw399sp07T+rh4Z9enSrZVKbZhEvjK+exmN/ZwNgPPdmKF6lCsFRkUI8TMJi6nU8CpDK1A+2WCwm+C1g5HiofOG3MDDrEYsIeuV+sUIlQjhvyAuXvtQGSfzIjHjjApftlrQGRMHbFQM8ykTGBOJ6+E0C57hzflyRuD9iQ76ARKpG+KaCfpbOjKO0mmvXrfA4HnKGwG7BEe9qjgy11q9QwRSjorQOnghQZpd4OADizObOTlIYCHHVUNAFo0VV5K7fnexoX+Yz1ZNdHao3sczxMiFTQ5IO9xXLjI9ZvzCI7N/703PWC0/wU+TQFaA8Qa6TakA339gE7lYqkZfFYBjwPUsOIWNvd97CRfn8fJt5YPGl0qtCVzPyFR9kyFBD3zYu3+5YeoeW6XwhgCUlB+hBsAT6Cmjz18JOK0DoMsSu0AZcZdvMmhL0VlQ/dlc/PyFpsoRzPjlPNemlUovtGStB9Qy+28hk8Bx6TBCF6G6FDaBRY4hqX1Kf6OB2mykHS0KN+a6tcrcwcpWJDPq2Z0kbnG0DW/twczgpzAJ5SgU5cRjERpOqEeKSsbSoeIdvJY0WRo0TGqx2zR8M7fuXvF3nfsyXLnMwrJi98gxKqx+dOHl96pXCiZAij2ro00Exvyoy3a9OOegXORtdjVEO7wyWJrwP2J3HsHAcgVxEIJp1tDy1yx0r/13JA5rb3Fg5xH8WyJOvMDjQXOfR4yXczBbob98DhBBrM49Hc38gFFs8RqJ9gMvRz8ZL8mKuCHiaXs2sHY/QUyeY0PUYND2bNIElBi1u58yCWoOu6yeP6HRKODf3M05Wz2ORFZq7DcfbZRyOoW5v+rfQgiV/9Mv8zizggvCohXy694Pc+lVdj4VEskgfwoWc+mKd6eykQyzV8Sv08aZdlgf9vPzxb2t6Sx1UnVF1UHfPw7IWuhEjiR6e+0ppSTskzDhotnUxN5rKgqIfIenrh0UVS4wWTv5CPWy6D6b3E93Sekd+VzakDZ/yZtAul1lo3lUzPkNiNgfaRclKCZLqNXOYHgDnZPB41HfxU4NSjVTaB8bbUeZUxadGi5bGH9K1fz0hthqwdmh296Y8B0rysFH5JqaoCjBMhn6CpNNpk8HzS32ByhE4KmiBNhRSTYjj7DTcBoo+BmdCM9sCMhNI4uuJfPCGunQtvOrO2IsZiHPb/6kdv6MAMN34IsxOrWUtnZk0Cg/zpx2q5dPi3iurdMUdZ69CbZo+t26qgJE01O1mpxwHdI6Vam8zdrKPq4eZvoOVNjLpiXBdK95p34YdH2KLMa9IZ7Kj5z1/2Wc+ZaOpERVqQddw1uGHD3tzbQ0S9pXNWHuMTLF3KwtXht3uD6SOyF78hsRUepGlpY8TXZ4lsQ8p3dzMLudlDsFp8AiTwCOMiSYMKX+apSBvLIZwcGHPx1wjZgMMaAP+tc4D5LDoLGCrzqmtTiXQq7lUHkzJADYai+bdmau3g0xR+rSJylRWOqeyEmQvHqVeG6K
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: T6i/QUbSzUpK1PF47QckmV0X2Jn++UhDFf88V5rhE4e6eczkg/qYqbx8jl9uLo6EwQzMmax1Hw4tSU3GzucNy/Nqw5TDAKKVs0kcLP76ot+N5Y3Qw8B8ZBVJgDcdc0Ym/v+6jfBa3yEpM36sXAfDnmk2og3Dd1D/8Yo08nRalMIRc0/jOR32g7psOj2XLHUgWhaqLOyIxSv0+NocMb/s/sf6OZEpjeBCQ2u9aE7PimR9DPgi0cOHHTw8rjXYumTMAu5IA/e08c7Dkd+HBTsNL/jLFMTpEL5onfVfLppbjS9WzqkaJOn3aHJUpUKMznJj9oIrtt8ryv87DoOkSCc6ddKDAYjWd3Wm7b7KnRZilLnukjgfiy1FXFOehL+L3KoaNfsxp/YBlKe6IBKqK/Pr0/2oBCqy/3qzWI/TZpxuhwMz3blX/fLGIWnkmWgl5561PXj1fGrXQpjh4M4FfnhKfBt4vNP07EipC0vCmlEvYbs6/Ftys+FQxjGHeug/mryV/rib263oTzQcbHQ6O/e+Weaz5y4/bi1BPuMCDZzScyemNQeH+whRRBjUUbap4RSobtLGCWawF/TT8dsERMoSiceqzogH75lYyQd1hslkJMb7disga77p83okV5p1tU59pMVcgd69HkKaI1mwLJnP1tj4/RlCVDN+iGMRmK91BSEeWyqeRaxjApM3j+4Sog7u5+BdqkYDTOozR3xA25EcX/3WOleAB8pYyttz+bWN7r1VX4qurb094haOUdDV4p1lM3kwTVsuafGCUoUJKOByqeg8ffQ7CxZM+UsgBYF7qJpemqX2YngM77+lsd2qxPtSP0fwQIZgX6jJxj+hKzBcyaW/C6pOuWPP5h4b5EQzVQsQQP1gzwSc/qDwqTPPR8Jk
X-OriginatorOrg: oracle.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SJ0PR10MB5488.namprd10.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: babc9084-cade-4818-3939-08dafb319998
X-MS-Exchange-CrossTenant-originalarrivaltime: 20 Jan 2023 21:59:27.4737 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: CMRb4ft6S8wB/Ym4RtDAYj/2PFP67amEnWYEZbOWlsnsMpOb4Ps6cEAe15FmnOLLu/iBagf56QZQJkFEaCWn5A==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: CH0PR10MB4937
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1
 definitions=2023-01-20_11,2023-01-20_01,2022-06-22_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 mlxscore=0
 phishscore=0 spamscore=0
 mlxlogscore=975 bulkscore=0 malwarescore=0 adultscore=0 suspectscore=0
 classifier=spam adjust=0 reason=mlx scancount=1 engine=8.12.0-2212070000
 definitions=main-2301200210
X-Proofpoint-GUID: 9uRJApjDnXccdA4EKa0ymbtvNrwiZRJ1
X-Proofpoint-ORIG-GUID: 9uRJApjDnXccdA4EKa0ymbtvNrwiZRJ1
X-Spam-Score: -0.7 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

Caveat: I'm not following this thread; sorry.

A quick look at your patch shows this:

  The commands @kbd{C-h f} and @kbd{C-h v}, also described above
  +(@xref{Name Help}), in an Info buffer can be replaced by @kbd{Ret} or
  +@kbd{mouse-1} on quoted symbol names.

I think it's wrong to say that `mouse-1' does that.
At least I hope it's wrong, and that you correctly
used the behavior that `mouse-1' only does that if
option `mouse-1-click-follows-link' is non-nil.

I also disagree with calling these "buttons".  I
think that Info calls them "links".  E.g., in
(info)Help-Xref you see this:

  Such a cross reference looks like this:
  *Note Overview of Texinfo: (texinfo)Top.
  (After following this link, type 'l' to
                        ^^^^
  get back to this node.)

And just the name of the above-mentioned option
should make clear that these things are presented
to users as "links", not "buttons".  Its doc says:

  Non-nil means that clicking Mouse-1 on a link
                                           ^^^^
  follows the link.
              ^^^^

The active bit of text is referred to as a "link",
and so is the relation between this source location
and the destination reached.  You click a link to
follow that link to its destination.

Elisp may refer to creating a "button" for this,
but for users we should call them "links", not
"buttons".




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#60587: Patch for adding links to symbols' help documentation
Resent-From: Stefan Monnier <monnier@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 20 Jan 2023 23:33:02 +0000
Resent-Message-ID: <handler.60587.B60587.167425756419888 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 60587
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: "H. Dieter Wilhelm" <dieter@HIDDEN>
Cc: Eli Zaretskii <eliz@HIDDEN>, 60587 <at> debbugs.gnu.org
Received: via spool by 60587-submit <at> debbugs.gnu.org id=B60587.167425756419888
          (code B ref 60587); Fri, 20 Jan 2023 23:33:02 +0000
Received: (at 60587) by debbugs.gnu.org; 20 Jan 2023 23:32:44 +0000
Received: from localhost ([127.0.0.1]:47471 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pJ0sG-0005Ah-7f
	for submit <at> debbugs.gnu.org; Fri, 20 Jan 2023 18:32:44 -0500
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:44022)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <monnier@HIDDEN>) id 1pJ0sE-0005AV-Mu
 for 60587 <at> debbugs.gnu.org; Fri, 20 Jan 2023 18:32:43 -0500
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 754601000D2;
 Fri, 20 Jan 2023 18:32:36 -0500 (EST)
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id C4946100098;
 Fri, 20 Jan 2023 18:32:34 -0500 (EST)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1674257554;
 bh=osKkGqHFcMW+NpYn+gFNpGdHuVNDyvGYcZjWeDVJLZQ=;
 h=From:To:Cc:Subject:In-Reply-To:References:Date:From;
 b=BppODY0F2EtjLgY+ospfPUHx2OGtWNBLm9sj2FS7npcZV5PPxn9kZSxgw5tHFKS+6
 RxRsDSdk1wTCfLORDl9Xl4MPhfWU0CPz+nFQQ5kYZVma2e44eK1O/AFjPeVHVU72m7
 Zl4vxRW1xj0wAC8GqRpXWD62uQk7oR2hrdJehwkDAfxO0KI9RsB5oI6bjYentossE/
 iduGcHy5V040bK89soZoS5K9Vj3mwsWQJQGCJfPYW003pugD2/nf2Mp8Hxeavi+Kzv
 BMOUGKXOTPL9iBWDcBZhnPN1gSULdAlJsX3ATcNAXvGZbv86FM0fEtayuWgySAf9XD
 o49n1ZrVp6BJQ==
Received: from alfajor (unknown [64.238.140.245])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 9542F1211ED;
 Fri, 20 Jan 2023 18:32:34 -0500 (EST)
From: Stefan Monnier <monnier@HIDDEN>
In-Reply-To: <864jskx6a8.fsf@HIDDEN> (H. Dieter Wilhelm's
 message of "Fri, 20 Jan 2023 22:09:03 +0100")
Message-ID: <jwv3584dbrc.fsf-monnier+emacs@HIDDEN>
References: <86y1qgr1bf.fsf@HIDDEN>
 <86tu13qydg.fsf@HIDDEN> <83h6x2u74b.fsf@HIDDEN>
 <863588rfos.fsf@HIDDEN> <83o7qw0yjy.fsf@HIDDEN>
 <864jskx6a8.fsf@HIDDEN>
Date: Fri, 20 Jan 2023 18:32:32 -0500
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain
X-SPAM-LEVEL: 
X-Spam-Score: 1.3 (+)
X-Spam-Report: Spam detection software, running on the system "debbugs.gnu.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 the administrator of that system for details.
 Content preview:  > Unfortunately I also need to investigate the code anew.
 Yesterday I > realised a regression starting with Emacs-29! `Tab' and `S-Tab'
 aren't > working any longer for Info references. (E.g. the `Tab' [...] 
 Content analysis details:   (1.3 points, 10.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 3.6 RCVD_IN_SBL_CSS        RBL: Received via a relay in Spamhaus SBL-CSS
 [64.238.140.245 listed in zen.spamhaus.org]
 -2.3 RCVD_IN_DNSWL_MED      RBL: Sender listed at https://www.dnswl.org/,
 medium trust [132.204.25.50 listed in list.dnswl.org]
 0.0 SPF_HELO_NONE          SPF: HELO does not publish an SPF Record
 -0.0 SPF_PASS               SPF: sender matches SPF record
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: 0.3 (/)

> Unfortunately I also need to investigate the code anew.  Yesterday I
> realised a regression starting with Emacs-29!  `Tab' and `S-Tab' aren't
> working any longer for Info references.  (E.g. the `Tab' keybinding is
> switched from `Info-next-reference' to `forward-button'..)

My crystal ball suggests that some code somewhere binds
`forward-button` to the "tab" event rather than to the "TAB" event.
"tab" should usually stay unbound (it is then remapped to "TAB" by
`function-key-map`).


        Stefan





Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#60587: Patch for adding links to symbols' help documentation
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sat, 21 Jan 2023 08:22:02 +0000
Resent-Message-ID: <handler.60587.B60587.167428930610046 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 60587
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: "H. Dieter Wilhelm" <dieter@HIDDEN>
Cc: 60587 <at> debbugs.gnu.org, monnier@HIDDEN
Received: via spool by 60587-submit <at> debbugs.gnu.org id=B60587.167428930610046
          (code B ref 60587); Sat, 21 Jan 2023 08:22:02 +0000
Received: (at 60587) by debbugs.gnu.org; 21 Jan 2023 08:21:46 +0000
Received: from localhost ([127.0.0.1]:47990 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pJ98D-0002by-OU
	for submit <at> debbugs.gnu.org; Sat, 21 Jan 2023 03:21:46 -0500
Received: from eggs.gnu.org ([209.51.188.92]:49390)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1pJ98C-0002bm-BT
 for 60587 <at> debbugs.gnu.org; Sat, 21 Jan 2023 03:21:44 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pJ97q-0008ER-4n; Sat, 21 Jan 2023 03:21:38 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=uRJ6TUVy6wj8PiOmp/CC6RDU5Y4DohJr7CCKBMEzNmU=; b=KGa8ItsDTkag
 Ni5XYGmfrGPJzIS61H62BOAMnK087zo3jG3bTW1DczusKtAGdfCpIRa1QB1MKHd/7O1/EnOVbkLXD
 ue5CZd5orOEJTe9UawoQxhZZaItMzZm+1ZcYt2HmNSOFb3GezUlT+ZF9lqhD+Ar4KxTGStYPXGLTG
 D6ZGvgkNXtaRjY5qDpUcW0xpGna2gAd9xMNYhvVOVN780aweJxA+g602wg2zDu4l175jrBfkG5ZBR
 s0NpmkoRMWuBvshKvYv4oKtwVsDpmG9EngzV7uweDaeqFCbxCibBKrFm+MJWAuwV3SiQNKTb56Muz
 txEY+QMIS3lNI3WY37B8uA==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pJ97o-00061g-Up; Sat, 21 Jan 2023 03:21:21 -0500
Date: Sat, 21 Jan 2023 10:21:22 +0200
Message-Id: <831qnomh6l.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <864jskx6a8.fsf@HIDDEN>
 (dieter@HIDDEN)
References: <86y1qgr1bf.fsf@HIDDEN>
 <86tu13qydg.fsf@HIDDEN> <83h6x2u74b.fsf@HIDDEN>
 <863588rfos.fsf@HIDDEN> <83o7qw0yjy.fsf@HIDDEN>
 <864jskx6a8.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: "H. Dieter Wilhelm" <dieter@HIDDEN>
> Cc: monnier@HIDDEN,  60587 <at> debbugs.gnu.org
> Date: Fri, 20 Jan 2023 22:09:03 +0100
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> > I think a good place is to mention this feature in the "Misc Help"
> > section.
> 
> Could you please check if below formulation is better fitting?

Yes, but it "needs some work", see below.

> Unfortunately I also need to investigate the code anew.  Yesterday I
> realised a regression starting with Emacs-29!  `Tab' and `S-Tab' aren't
> working any longer for Info references.  (E.g. the `Tab' keybinding is
> switched from `Info-next-reference' to `forward-button'..)

So I guess you will be submitting a new patch soon?

> --- a/doc/emacs/help.texi
> +++ b/doc/emacs/help.texi
> @@ -653,6 +653,15 @@ Misc Help
>  K @var{key}}, described above, enter Info and go straight to the
>  documentation of @var{function} or @var{key}.
>  
> +  The commands @kbd{C-h f} and @kbd{C-h v}, also described above
> +(@xref{Name Help}), in an Info buffer can be replaced by @kbd{Ret} or
> +@kbd{mouse-1} on quoted symbol names.  For example, the quoted name
> +@code{info-other-window} is made into a button which shows the
> +function's documentation string in another window in the @file{*Help*}
> +buffer.  Such quoted symbols (variables, functions and face names) are
> +highlighted by a distinct face and can be reached, as the Info
> +references, with @kbd{Tab} and @kbd{S-Tab}.

I think the first sentence should be rewritten as describing a
separate feature, not "the same as" something else.  Just say that
symbols are converted into buttons that lead to their doc strings.

Also, the option which controls this should be mentioned and indexed.

> +** Info
> +
> ++++
> +*** Info-mode provides buttons on symbols showing their documentation string.
> +Quoted `symbols', like names of variables, functions or face names,
> +are made into buttons which can display the respective documentation
> +strings.  These strings are presented in *Help* buffers in another
> +window.  Such buttons are working independently of the regular Info
> +cross references and can be disabled with setting
> +`info-make-xref-flag' to nil.

This is OK.

Thanks.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#60587: Patch for adding links to symbols' help documentation
Resent-From: "H. Dieter Wilhelm" <dieter@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sat, 21 Jan 2023 20:28:02 +0000
Resent-Message-ID: <handler.60587.B60587.167433287924728 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 60587
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Eli Zaretskii <eliz@HIDDEN>
Cc: 60587 <at> debbugs.gnu.org, monnier@HIDDEN
Received: via spool by 60587-submit <at> debbugs.gnu.org id=B60587.167433287924728
          (code B ref 60587); Sat, 21 Jan 2023 20:28:02 +0000
Received: (at 60587) by debbugs.gnu.org; 21 Jan 2023 20:27:59 +0000
Received: from localhost ([127.0.0.1]:49863 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pJKT1-0006Ql-5Y
	for submit <at> debbugs.gnu.org; Sat, 21 Jan 2023 15:27:59 -0500
Received: from mout.kundenserver.de ([217.72.192.74]:50957)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <dieter@HIDDEN>) id 1pJKSz-0006QZ-DG
 for 60587 <at> debbugs.gnu.org; Sat, 21 Jan 2023 15:27:58 -0500
Received: from ping ([109.250.147.186]) by mrelayeu.kundenserver.de (mreue107
 [212.227.15.183]) with ESMTPSA (Nemesis) id 1N1xZX-1oZVBS3vTN-012EIO; Sat, 21
 Jan 2023 21:27:48 +0100
From: "H. Dieter Wilhelm" <dieter@HIDDEN>
In-Reply-To: <831qnomh6l.fsf@HIDDEN> (Eli Zaretskii's message of "Sat, 21 Jan
 2023 10:21:22 +0200")
References: <86y1qgr1bf.fsf@HIDDEN>
 <86tu13qydg.fsf@HIDDEN> <83h6x2u74b.fsf@HIDDEN>
 <863588rfos.fsf@HIDDEN> <83o7qw0yjy.fsf@HIDDEN>
 <864jskx6a8.fsf@HIDDEN> <831qnomh6l.fsf@HIDDEN>
Date: Sat, 21 Jan 2023 21:27:46 +0100
Message-ID: <86lelvvdj1.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Provags-ID: V03:K1:3zs1pA3xxWJV/PjwKseMDuNchMPWkcdY5eB/MQjPY//hCp4zYRZ
 S8xgIZyqptDxaxo4VgW4IE3kakkhyylTh30JoLZNvMzsq/spULmZXREAoK/DnlALWe+LwpC
 kOAEkzqLO0uDd8h1oC6h7bcxiZ/zWnDWcH5uq1WyPFTh6YE+954F7/cJ6jCBwd3WN+2eYR9
 AZHlNSDarn2xWaHaGyjNA==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:51IddVEd0MQ=;opBm2fEhEZ1iUqzRisEt/NL9wCf
 Sw/1K5/W+pfJBkiUfRx/MEjdkcGj7Cg9Jtrj0dTjPfJ5L+VUF7eKfpWNjyXAXqSQIttyjP3cL
 dDUXI7MNqKNQs1ISBR9YWlTMuRbycPlxqhTFPTFLn3XogRRnMyGGwVtj7Me77ISegYn0eFtue
 K/rN986bwwrPANgV20cFaNlLM77iGIoiL5KwGOpnnsK2GK6ne4gFKUXiX9KA8AcUmNTbT6aWI
 Hx9NCtpiD+s6P6nLNNNm8w47/8dkxJ8UoVE3P+gndRFcU7As9gXWCe6qMHU5dzbo5AUYMq8kz
 MRM9S/SurGsB7iOPw52dBBYb5gq60oj06HE3Ww09GyvLOfvLYIkCLjtXMkE3nxLX6e2mpxvXE
 /Nz9FwFI54b5DWEDKHtPc/WZnGCnujAeV1AH6cI0pJm3CEXffZkVRxOIIoxnUqJIylM/yQ+w+
 1UEzLyu6Pdsbv82pEXQFx5aefrCoSSAf4t7MZLDqORTu/tbV7+oMkIPYWjRwf2C4iqQcBp/cs
 cEGTrhlfuSqrcM7TXK2dB8u0pnAirJxBfV//26cdKY4w0oU+2FWI52cgBWb6SeF+vvHZuMruX
 mWjwj1KyJZOD/QSxOLWln7Pp6UD0iugpaywRCO7NGdsmKj7BAWmYBADBnx9yg+iksElizYn38
 PIo9M/K3XqcrBl48YajU8I/wuKUzkOBzv5tIOHfXYw==
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Eli Zaretskii <eliz@HIDDEN> writes:

>> Unfortunately I also need to investigate the code anew.  Yesterday I
>> realised a regression starting with Emacs-29!  `Tab' and `S-Tab' aren't
>> working any longer for Info references.  (E.g. the `Tab' keybinding is
>> switched from `Info-next-reference' to `forward-button'..)
>
> So I guess you will be submitting a new patch soon?

Yes, I hope with the help of Stefan's crystal .., ahem promising hint,
soon.

>> --- a/doc/emacs/help.texi
>> +++ b/doc/emacs/help.texi
>> ...
> I think the first sentence should be rewritten as describing a
> separate feature, not "the same as" something else.  Just say that
> symbols are converted into buttons that lead to their doc strings.

That's clearer, I'll do that.

Shouldn't I address the concern of Drew, as well?  That a "button" is a
certain technical implementation of linking which might not be known by
the reader.  Maybe a term like "link button" or "link-button" conveys -
at the same time - the well known concept and correct technique,
different from an Info link (or "cross reference")?

> Also, the option which controls this should be mentioned and indexed.

Ah, of course!

Thanks for your suggestions

-- 
Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#60587: Patch for adding links to symbols' help documentation
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sun, 22 Jan 2023 06:01:01 +0000
Resent-Message-ID: <handler.60587.B60587.167436724832128 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 60587
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: "H. Dieter Wilhelm" <dieter@HIDDEN>
Cc: 60587 <at> debbugs.gnu.org, monnier@HIDDEN
Received: via spool by 60587-submit <at> debbugs.gnu.org id=B60587.167436724832128
          (code B ref 60587); Sun, 22 Jan 2023 06:01:01 +0000
Received: (at 60587) by debbugs.gnu.org; 22 Jan 2023 06:00:48 +0000
Received: from localhost ([127.0.0.1]:50444 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pJTPM-0008M8-Ho
	for submit <at> debbugs.gnu.org; Sun, 22 Jan 2023 01:00:48 -0500
Received: from eggs.gnu.org ([209.51.188.92]:54332)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1pJTPL-0008Lv-PY
 for 60587 <at> debbugs.gnu.org; Sun, 22 Jan 2023 01:00:48 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pJTPF-0004O7-7H; Sun, 22 Jan 2023 01:00:41 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=01aqTeiDDa0pCB6Z9aKYR/FEIfh5pSJLK1oWX+St0NQ=; b=FXOPUZHjkCWw
 h4HrPeBJ3nH6D+EXR6YvMldrwAqW+KQ/k8w4rY0W5GcTm5RM/hjX0C4Yiz3ZIK3cFx7wILh9So95n
 u3iC3776LxuGpQ8HGJX8xifboU64BOeUWokA5s2xupxZplpGmpDIiB2EzDOyF/cIXeoIznIO961Ow
 eTVqKYzoom6Tok4C6A5JKnDe9YCLVIHOKh28n8o8iz4fi/aWo1DnTpImQDyu8v/xa1+fMTXiih/qH
 nO/yxleIz5mVScGiy5nDSbnQ2BnARctE2eURctjaAIf82AM+sOUiGCiOWC8cI6jK0jn3KUazC77LQ
 sRw0UAji9Foo5OMIBEyfTA==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pJTP5-0003tX-O4; Sun, 22 Jan 2023 01:00:35 -0500
Date: Sun, 22 Jan 2023 08:00:37 +0200
Message-Id: <834jsjkt16.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <86lelvvdj1.fsf@HIDDEN>
 (dieter@HIDDEN)
References: <86y1qgr1bf.fsf@HIDDEN>
 <86tu13qydg.fsf@HIDDEN> <83h6x2u74b.fsf@HIDDEN>
 <863588rfos.fsf@HIDDEN> <83o7qw0yjy.fsf@HIDDEN>
 <864jskx6a8.fsf@HIDDEN> <831qnomh6l.fsf@HIDDEN> 
 <86lelvvdj1.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: "H. Dieter Wilhelm" <dieter@HIDDEN>
> Cc: monnier@HIDDEN,  60587 <at> debbugs.gnu.org
> Date: Sat, 21 Jan 2023 21:27:46 +0100
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> >> Unfortunately I also need to investigate the code anew.  Yesterday I
> >> realised a regression starting with Emacs-29!  `Tab' and `S-Tab' aren't
> >> working any longer for Info references.  (E.g. the `Tab' keybinding is
> >> switched from `Info-next-reference' to `forward-button'..)
> >
> > So I guess you will be submitting a new patch soon?
> 
> Yes, I hope with the help of Stefan's crystal .., ahem promising hint,
> soon.

TIA

> Shouldn't I address the concern of Drew, as well?  That a "button" is a
> certain technical implementation of linking which might not be known by
> the reader.  Maybe a term like "link button" or "link-button" conveys -
> at the same time - the well known concept and correct technique,
> different from an Info link (or "cross reference")?

I think "button" is problematic, and have no idea why Drew thinks we
should use another term here.  The code does insert buttons, right?
If the user types "M-x describe-text-properties RET", will he/she see
that there's a button at point?




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#60587: Patch for adding links to symbols' help documentation
Resent-From: "H. Dieter Wilhelm" <dieter@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sun, 22 Jan 2023 13:01:02 +0000
Resent-Message-ID: <handler.60587.B60587.167439241828267 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 60587
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Stefan Monnier <monnier@HIDDEN>
Cc: Eli Zaretskii <eliz@HIDDEN>, 60587 <at> debbugs.gnu.org
Received: via spool by 60587-submit <at> debbugs.gnu.org id=B60587.167439241828267
          (code B ref 60587); Sun, 22 Jan 2023 13:01:02 +0000
Received: (at 60587) by debbugs.gnu.org; 22 Jan 2023 13:00:18 +0000
Received: from localhost ([127.0.0.1]:50863 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pJZxJ-0007Lr-KJ
	for submit <at> debbugs.gnu.org; Sun, 22 Jan 2023 08:00:17 -0500
Received: from mout.kundenserver.de ([217.72.192.75]:44187)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <dieter@HIDDEN>) id 1pJZxH-0007LW-La
 for 60587 <at> debbugs.gnu.org; Sun, 22 Jan 2023 08:00:16 -0500
Received: from ping ([109.250.147.186]) by mrelayeu.kundenserver.de (mreue106
 [212.227.15.183]) with ESMTPSA (Nemesis) id 1Mofx1-1ovCQq3q49-00p2yg; Sun, 22
 Jan 2023 14:00:02 +0100
From: "H. Dieter Wilhelm" <dieter@HIDDEN>
In-Reply-To: <jwv3584dbrc.fsf-monnier+emacs@HIDDEN> (Stefan Monnier's message
 of "Fri, 20 Jan 2023 18:32:32 -0500")
References: <86y1qgr1bf.fsf@HIDDEN>
 <86tu13qydg.fsf@HIDDEN> <83h6x2u74b.fsf@HIDDEN>
 <863588rfos.fsf@HIDDEN> <83o7qw0yjy.fsf@HIDDEN>
 <864jskx6a8.fsf@HIDDEN>
 <jwv3584dbrc.fsf-monnier+emacs@HIDDEN>
Date: Sun, 22 Jan 2023 14:00:00 +0100
Message-ID: <861qnmvi5r.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13)
MIME-Version: 1.0
Content-Type: text/plain
X-Provags-ID: V03:K1:taBxOSZCZPE717FBK5RYcYVjS5j3mr5qx/bG+4NiqIs5alIsOXt
 7GsPYMiZCYp7Y2GYsd1aBSAGrLYlCo3lQLFw0DGEyBC4N9pf4NZHR9nBuHLpLqvdEK+lRcO
 zTp4lbIhK8EC5cpMsCv6gfko77Wb87+LDVqBcmU9mTQMI10fc9IBozgRfz1h3257XbnJlYH
 QGVskSlM1raF44TZkhYgA==
X-Spam-Flag: NO
UI-OutboundReport: notjunk:1;M01:P0:4FGfnt85yAk=;UxEW956pZgIW2Ja/h4x9i5uHtot
 Ye/CsLpBPV7uXwEfxOQ5WTu4TBIB7M+wp7CpVvb/mnZErLvMkx1232RwaZsOwUcRr50JgYPxK
 QspUZPGh+uTIK8gzHnggP4F9LhPDeidu+y1ZoB6tAFkMeE+37uca2YbkM5QQl+HEHgxRMrl/y
 +L22jcKd9LKBFqTSatuPvpVc8dYP0kNKH93b4JCihJGf6+EBIo2XyfJwPFhnJt1Szq216Wtg+
 bRFc7NzXOx97TG53qxVcXkfRxBeDrJyoR+Ny0kWdmYNVWdiEJ+HgYNW4lOrz3JGb8aUZNh58M
 zwd9BrVFvEkREVyGR2vveWqh/sluOMhyVlmDXAo/KqWd+TuUNb5siEKgbQ7RLfOJRbAdz08Zk
 47Cak1160V+DiE+iqafFMIj6Tt8T7d7oVpnzRy1tcNs7/YBRD/LYedZy0kB9f9feQyyeijdbA
 dpQPZKbqXNPQz9LAxD27K+VMFaBznV3F+mYT763UQ+KAbKap+3IZB3wdBUCrf0k3FiFdQQmJt
 w8yVGkMggS3egM1lhxIgXowF56BBsYTcpa0BAszN5iBw7GeHC8XyhqekQ+O8M63xtfVYUEosb
 t/Gq7ZfmVNc+2aV484ahEW15I7GlNUm5S7XfiOUjJr+2OhJ5cLKs4EcWyZedP/VezqHenYQ2Q
 HjjzPPTLrr9/OqNIifzKjVHKaDsI4gc+K/dYqSdy3g==
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Stefan Monnier <monnier@HIDDEN> writes:

>> Unfortunately I also need to investigate the code anew.  Yesterday I
>> realised a regression starting with Emacs-29!  `Tab' and `S-Tab' aren't
>> working any longer for Info references.  (E.g. the `Tab' keybinding is
>> switched from `Info-next-reference' to `forward-button'..)

Above information is, in fact, true but too narrow, since the
"switching" of keybindings is not occurring in general but only
happening when point sits directly on a button.  In regular Info text
either links, buttons and Info references, can still be reached by Tab
(or S-Tab).

> My crystal ball suggests that some code somewhere binds
> `forward-button` to the "tab" event rather than to the "TAB" event.
> "tab" should usually stay unbound (it is then remapped to "TAB" by
> `function-key-map`).

Poked around in button.el, info.el and help.el but couldn't find any
"tab" event binding (only "TAB").

But I think, I found the reason why it appears since Emacs-29, when
commenting out the following line in lisp/button.el the keybindings are
working as before Emacs-29:


    (defvar-keymap button-buffer-map
      :doc "Keymap useful for buffers containing buttons.
    Mode-specific keymaps may want to use this as their parent keymap."
      "TAB" #'forward-button
      "ESC TAB" #'backward-button
      "<backtab>" #'backward-button)

    (defvar-keymap button-map
      :doc "Keymap used by buttons."
-->;; :parent button-buffer-map
    "RET" #'push-button
      "<mouse-2>" #'push-button
      "<follow-link>" 'mouse-face
      ;; FIXME: You'd think that for keymaps coming from text-properties on the
      ;; mode-line or header-line, the `mode-line' or `header-line' prefix
      ;; shouldn't be necessary!
      "<mode-line> <mouse-2>" #'push-button
      "<header-line> <mouse-2>" #'push-button)

It seems to me that this is not a regression but some additional
functionality of Emacs.  I've yet to figure out how to deal with the
enhanced keymap of buttons..

-- 
Thank you for your interest

      Dieter

Best wishes
H. Dieter Wilhelm
Zwingenberg, Germany




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#60587: Patch for adding links to symbols' help documentation
Resent-From: Drew Adams <drew.adams@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sun, 22 Jan 2023 22:10:02 +0000
Resent-Message-ID: <handler.60587.B60587.16744253749804 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 60587
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Eli Zaretskii <eliz@HIDDEN>, "H. Dieter Wilhelm" <dieter@HIDDEN>
Cc: "60587 <at> debbugs.gnu.org" <60587 <at> debbugs.gnu.org>, "monnier@HIDDEN" <monnier@HIDDEN>
Received: via spool by 60587-submit <at> debbugs.gnu.org id=B60587.16744253749804
          (code B ref 60587); Sun, 22 Jan 2023 22:10:02 +0000
Received: (at 60587) by debbugs.gnu.org; 22 Jan 2023 22:09:34 +0000
Received: from localhost ([127.0.0.1]:52755 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pJiWr-0002Y4-GC
	for submit <at> debbugs.gnu.org; Sun, 22 Jan 2023 17:09:33 -0500
Received: from mx0b-00069f02.pphosted.com ([205.220.177.32]:30024)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <drew.adams@HIDDEN>) id 1pJiWp-0002Xu-NE
 for 60587 <at> debbugs.gnu.org; Sun, 22 Jan 2023 17:09:32 -0500
Received: from pps.filterd (m0333520.ppops.net [127.0.0.1])
 by mx0b-00069f02.pphosted.com (8.17.1.19/8.17.1.19) with ESMTP id
 30MLE8s7007842; Sun, 22 Jan 2023 22:09:31 GMT
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=oracle.com;
 h=from : to : cc :
 subject : date : message-id : references : in-reply-to : content-type :
 content-transfer-encoding : mime-version; s=corp-2022-7-12;
 bh=vORBVSeuVov43q+I2dD4xEq4MrcvEw92EKMFobWZMJU=;
 b=qYb7l4XQ8QM7OUzVfdb2k2oMOPADKJricAxz0b90IqVZRCASHFKjJD6csh8m+utVMyH1
 r6qQO6IPWVEvlOd8K3jOWCiixJceu6zCs0vPU5PdUAuTjef0C+jXplLNQOgmBTF5H+Xx
 7ty4MbKlF4KcrELslugcLeMbKjzMij27VI1kJwJJYd27kWFypV1Orz2LLJNgl69PKkel
 e1zIxF9kUYY9QiqkIYUICQ8sMHYUB7c+dcaqZNHORkqQeeHH9rBLvk83P+fIN5KCdsyI
 6+OiIy2QFJbuh1o+W7jQG+pxn8cCwrSy27OsXUx5sIfrxWbtcMyjEWrIoG3cmFdVbAU+ DQ== 
Received: from iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com
 (iadpaimrmta01.appoci.oracle.com [130.35.100.223])
 by mx0b-00069f02.pphosted.com (PPS) with ESMTPS id 3n883c1ns9-1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);
 Sun, 22 Jan 2023 22:09:31 +0000
Received: from pps.filterd
 (iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com [127.0.0.1])
 by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (8.17.1.5/8.17.1.5)
 with ESMTP id 30MLomoF013835; Sun, 22 Jan 2023 22:09:30 GMT
Received: from nam12-dm6-obe.outbound.protection.outlook.com
 (mail-dm6nam12lp2175.outbound.protection.outlook.com [104.47.59.175])
 by iadpaimrmta01.imrmtpd1.prodappiadaev1.oraclevcn.com (PPS) with ESMTPS id
 3n86g93bxm-1
 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK);
 Sun, 22 Jan 2023 22:09:30 +0000
ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;
 b=RTGIL90nxKG6zoa64Yad9BkjM6CxBfBxz7Wo1NpaVIddIBh3lE8FLdK8Om0ddvSBEWip0cmEhDk8Gd0mTJGpqKpMCDjTdU9GHmtP78NuDzgszntbTA2BdeMTb1Gx4HX8LNLhi1vNtnVw5EsSQtF8HVxU1B6aMkJfnaFCI15n9DSHxNs0LdVDrbGKn5D/YYvIYhrcgfRf8Fro2Rxd6bEGb2n9Cn4nk7WAQZ/cfxPorU937x7wLrSYJAM+O8D0DH0kHT4Tn0VUmV2pTG1qz3+zEC7Vz33jAg135koi1ylBSF9pCjhcAxoXjnyuZF5TBwiNNe+JP0JHYBR4xFzRPwndng==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; 
 s=arcselector9901;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;
 bh=vORBVSeuVov43q+I2dD4xEq4MrcvEw92EKMFobWZMJU=;
 b=fETwSCoOZc8K0cLiTyzlso989OZRUxgLlZBS2f1fTfihI0ynDAOJ2XQGYuqog/QnbiL01rDqh9wKao1nZZgNPVIXXNpC2J5kzOxrt8ta0yu7kVHs6ngiTaN7XWn7CCZZYtVBjDHnoGtp/4j5IyH3bYlzMWMPQ2+doFRkCo0++OAnzfzboclODxTOf3jCIUKikSOTxZouMPYih8GTJiIGedevQkjdg42eIJEK1FnMvTdcSQSfORJOYL547nbo4RLfss/noAr7RK/OKU6Uwc5KGM7BBdMF2V/KuQh7bl1tYVmoPONqvS98rAagVtZbQT0PP4GUyyHEe30cIwuJ3rkURg==
ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass
 smtp.mailfrom=oracle.com; dmarc=pass action=none header.from=oracle.com;
 dkim=pass header.d=oracle.com; arc=none
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=oracle.onmicrosoft.com; s=selector2-oracle-onmicrosoft-com;
 h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;
 bh=vORBVSeuVov43q+I2dD4xEq4MrcvEw92EKMFobWZMJU=;
 b=lBg0Xrl9jkR/nVTWjDyLbWA6f2wNHIp31XmNg0AIZnsF6TNsGW8fAbzkR9xB3yWn2sXQRrW9/lc+XYwdvYiZ5uJHGfR66e7xwC2N9SX5ULClVD66D5Mw/3B+aRuBh9k7EkilAHTfKy6vWUM36nP2vPkfU63tC5UQ7JeBS1kGRlw=
Received: from SJ0PR10MB5488.namprd10.prod.outlook.com (2603:10b6:a03:37e::19)
 by PH0PR10MB4470.namprd10.prod.outlook.com (2603:10b6:510:41::24)
 with Microsoft SMTP Server (version=TLS1_2,
 cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.6043.16; Sun, 22 Jan
 2023 22:09:28 +0000
Received: from SJ0PR10MB5488.namprd10.prod.outlook.com
 ([fe80::7c3c:e53d:5276:ef29]) by SJ0PR10MB5488.namprd10.prod.outlook.com
 ([fe80::7c3c:e53d:5276:ef29%7]) with mapi id 15.20.6043.014; Sun, 22 Jan 2023
 22:09:28 +0000
From: Drew Adams <drew.adams@HIDDEN>
Thread-Topic: [External] : bug#60587: Patch for adding links to symbols' help
 documentation
Thread-Index: AQHZLicEoXNYvVke2U2LVe2hSCnHWa6q/QbQ
Date: Sun, 22 Jan 2023 22:09:28 +0000
Message-ID: <SJ0PR10MB548816D2857B4BB56E16DDC0F3CB9@HIDDEN>
References: <86y1qgr1bf.fsf@HIDDEN>
 <86tu13qydg.fsf@HIDDEN> <83h6x2u74b.fsf@HIDDEN>
 <863588rfos.fsf@HIDDEN> <83o7qw0yjy.fsf@HIDDEN>
 <864jskx6a8.fsf@HIDDEN> <831qnomh6l.fsf@HIDDEN>
 <86lelvvdj1.fsf@HIDDEN> <834jsjkt16.fsf@HIDDEN>
In-Reply-To: <834jsjkt16.fsf@HIDDEN>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: 
X-MS-TNEF-Correlator: 
x-ms-publictraffictype: Email
x-ms-traffictypediagnostic: SJ0PR10MB5488:EE_|PH0PR10MB4470:EE_
x-ms-office365-filtering-correlation-id: cede5881-7d28-43d8-bf5c-08dafcc5546d
x-ms-exchange-senderadcheck: 1
x-ms-exchange-antispam-relay: 0
x-microsoft-antispam: BCL:0;
x-microsoft-antispam-message-info: wWi29wD2AWEy0HJenxrm6RUF1rXo9Ufi9YfrMJ2ZkZh79CZPJsceVXrqVOSKsc2Xc8urg6ZR7f7jMOKCfSyqPBP9ZaFYYaYAVJNb8e8eg7SwbG4S+AoIVH36h7kDCy3CykAQFu1y60cOAFXNBGyHXxQGWFad3KBeT15gRXBJTIVyZ8EacEdlLqYFrPLClj3PpMwx1lxUgWeVfW6De42cDUOG3RYgr9f4tjBGHVCN0HVmGBi2IDGPfT19etAJkz3F6TXsaLNgsa2BowuH/Anpj2+UprD7KmrGOd6H4K522tD+akLRCwIMgZY7Bc/qHt08/Um//UumlVlI2gVjYlUtxM7orwJHrp1Qp4d8emaixMHHoWhdayZx3vFveTvfVsx8q6tYeG+pz4OcmIHevX2ojzYRNhj87wcMTAVSae/8YkPsEsVEG/cYuptWZokdzkE16Urnqn77Zi134lARZsRd8Qk4PNiR4ttqvBTpzRWSnZ6LHhpqKQDrg+o9BM0fX0EniYDoK0hXSn5413+yzhIiz4GSiCT4cDsJsfxhx843jPLNCCs4mDe5YyT12r04zbkud1VQaGMCXNDfju+UnUXL2MfTSMXRgBlK47TzysGuvmSvXVgMVD7x1Zq+xt+ixWWJWCphlIVul+6yxm64WehUbwwk7M8yHslIAU2fHGEcOZ/kYCfAfRX1TppaQs+iwntY1PjYhl9rp0N8VB3bMvKlWQ==
x-forefront-antispam-report: CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;
 IPV:NLI; SFV:NSPM; H:SJ0PR10MB5488.namprd10.prod.outlook.com; PTR:; CAT:NONE;
 SFS:(13230022)(396003)(39860400002)(136003)(346002)(366004)(376002)(451199015)(38070700005)(55016003)(33656002)(86362001)(316002)(110136005)(54906003)(76116006)(66556008)(66476007)(66446008)(64756008)(26005)(186003)(9686003)(478600001)(6506007)(71200400001)(7696005)(66946007)(122000001)(38100700002)(83380400001)(8936002)(52536014)(41300700001)(2906002)(8676002)(4326008)(5660300002)(44832011);
 DIR:OUT; SFP:1101; 
x-ms-exchange-antispam-messagedata-chunkcount: 1
x-ms-exchange-antispam-messagedata-0: /BlXfpHToL9f0NTwzsNjU4L3oPn1OjmvzD+kDct3aCi/QAbXQhhIGe8gsxWemInh9ipso4JtNGTngf19WLq8m9xc3Yij7paKNOAfHkOAKgPR1QQcGzbYUgMuPiv7t/PHcW6qf7bZZmcMs4S29tWCcq9xslf9Jt2/N121ij6sdNcfLwGv04K2eE2iXv9jphlOUnprsp5xX/n5h3FMbuhbAdNXapwuns56Yxvy/utolR04l9S0SgPOAph2rchJHfUQJ3VoZ86A94uTLejo7j/jiPiQH+Dp1KbKEE4MRqHmqObYmQ8oAIfjb3Y9CLIK0wGoulaXrDdjvtAmHX4jsC0nSOTjp8ePLiAEXh60KGOu5fC4EjMndnOsBLg13ZAPQwAgmIehbDCG2KuEkCJtkjLkyXar+ULk0Xs7+BTvc9u/QXYVFUPyJUvrEJ4mTSiYHeiv+zuWSevjz1r13twnYgEEZQVu41cAw8t6FxRtY7R5fXlG53+GfXthNIJzp9ZblYv1lWV+8QEGss46WAEGihsT3kR2bfCKzHkgcKMjBRHZj9XMcwRnE5JDkhxzTAUsgqmJrh2UY5s5D38syj0QH0ZpE3F5YVh6vjC5oJAQyoczmSQW8fVRNwt3JVIU3J2LqInpaZFzfxsU3Cr4mPDyUD69fUc2JovUZPCyUS6n+9j6cbmW6KD+E+54WuHOQVxbUCK4ypeXWknDJ7XxK8KfL1Btk4zanBzPlzOXRqSyIoA4L98EH0p735a7xHZt7y1cCLSC97C4Rp1vxOhnsMo5hzojPPj3KwvrL2rve+Jq71xn214uPXP/uczIklrPXHAm2qVTcerLprM9HiABCxFkM1I34zNVMrPvT0kruNHKGlisbKM23UOCslgCOhXd97aOmKLdUMSKVRDEhMbQ/6x4WWgRjj2A2XZHoJWOgodVrKSQAStxWoYCPpoYxZr3+qES7PyhRU7MYghSDw7OcfG00MMpm4qXqM9cS7myeDCyl1XeVxyb7VcKSs3VLAuI5tSrXERiYwCNX1ZuxafpUAmrK9Oti/aiS3oQhG04Yqp94GW6S+a7gplTJNz8Ryf6BlzC16YZDqfz+8bI/knlfVuEd3MA3VqOHNoXB19H/VhByMR4J7j4xy6tAPJkIWgTOm+sq3kEsfEzX4HmRPx5a439vLa1Y1iPBs7/h4R/WjEGwCIOAWKpmiKGZ2q2Fc+ZcVMLJ6N7R++PIBMFnMPA8xtts+BVy2J8L/bMOWx8B71LfIF2b2vGmLBO4ElbRaSmipgkk/4zrCgeYKObSkds4N0GznNQIUuovUixNzOOqZKAP2qcAoxaPc0pmUX8IiE5vrBvuYcpJnxZq/ByJ6ZpY5pr9naKluw2z+UTxDWhcLukA2e63JP0SUAh91bU8Vn4WMBwpYmVoiZ+bZVEUp0/Mq4AxH/BjKHg73Nq0noo7u6NtSCewJw43T4OPOpFJDHjQQGyM9vjSlHat3AsZQmdW9LRkOBzhbMwDIJ1mxp491oyng3bhTNmclwuI0s6uUQzkU66ftcyjKLiYMWYdCZElTIJp5N6A4OCtHGqcF8V83h6AK2hp0ey+J769G/S5AW/L2U9zpNM
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-ChunkCount: 1
X-MS-Exchange-AntiSpam-ExternalHop-MessageData-0: Ofk26nqnInggHqr+mpiDJ6fCkP75oqsfGyyHjwAkXQ4FpFVwx7OrSx9SCD3p+QLQU+Fh1TG4pSMhHpeR8YeaHC+0R/Ng4CjDazzPeS0wfuevq4RxT0kkPhA3tAjIva2mEYQepuWFraxBZgCGHtGVc43L+EOcb4xyrdKnreJhvaBzGM0bjwIXdR2p2r1CReIs5OhkQjSXl3WWWyhTguOmqFTnKM7h5QmROi9Ea+FKGhxQCJkQKIIzL8IxNFyIpVXK3U4wunLsVg5rRiCbeLwAwsjftHYhBIiGjMUrqht3mLtOHxkekXXiMObmpcYJ0YukULbrvV0Rua25BPFAxNn7fXwSe4W+K5rTkbs8M6BWNyEvL3yPXp64p3C4K33unmA+HpHGbWxrJef3QU9spLcliohSZVSCpP+bfSzbiAXPS7P2HRFM8G0OaEBvyjOD4+I1TkQYs+xxTUoc9cJ1if2CQyDAYUT86gNbZDfBrUFQ+s+A9fF6i/2VfldTic3kfZrye8DK8FOibLt3hnBEcv4FvSNcgy5NRtUZDx7CVPuQfuU+fh0RFuh9KmovNp8e84FGgSc0cVVKzZe/NibzooKQyLEUONOiJfHWX7bh2aHeWQi+ScSxd7dleCDwSWAXNxuoIT3FxuG9E2BG6cnjmeAVaHv58iuqskvzA1bgXQIvufwGNzy05vC0WxTIMw5vr3V+8Tk0YQdfuWqoBNYJQdWxaRbYrFOxQG7tqAXbRnNX+OKtyP80FB3F9Xgs6YTAqkmUQhcI46ENSETjGIjFDbEmv4ROEuVhueTMCd+kgu/5+BxNnnLvv3ZAf9P8XrGeemqkB51GqNX1TV5QdOQNjCRbfSOwaNICePInpqvaGkbrhmIsESUS3hVPzjZSiEmqRltj
X-OriginatorOrg: oracle.com
X-MS-Exchange-CrossTenant-AuthAs: Internal
X-MS-Exchange-CrossTenant-AuthSource: SJ0PR10MB5488.namprd10.prod.outlook.com
X-MS-Exchange-CrossTenant-Network-Message-Id: cede5881-7d28-43d8-bf5c-08dafcc5546d
X-MS-Exchange-CrossTenant-originalarrivaltime: 22 Jan 2023 22:09:28.0957 (UTC)
X-MS-Exchange-CrossTenant-fromentityheader: Hosted
X-MS-Exchange-CrossTenant-id: 4e2c6054-71cb-48f1-bd6c-3a9705aca71b
X-MS-Exchange-CrossTenant-mailboxtype: HOSTED
X-MS-Exchange-CrossTenant-userprincipalname: EWzd8b+uGVVzl/5uhTsLOPuBe2eo6JJ5lm0lYD2cf7+pgRKwB2VcyEyRgLdlSF+j6sRdSyG8quXE+90dWg7B3g==
X-MS-Exchange-Transport-CrossTenantHeadersStamped: PH0PR10MB4470
X-Proofpoint-Virus-Version: vendor=baseguard
 engine=ICAP:2.0.219,Aquarius:18.0.930,Hydra:6.0.562,FMLib:17.11.122.1
 definitions=2023-01-22_18,2023-01-20_01,2022-06-22_01
X-Proofpoint-Spam-Details: rule=notspam policy=default score=0 bulkscore=0
 phishscore=0
 mlxlogscore=963 adultscore=0 mlxscore=0 suspectscore=0 spamscore=0
 malwarescore=0 classifier=spam adjust=0 reason=mlx scancount=1
 engine=8.12.0-2212070000 definitions=main-2301220217
X-Proofpoint-ORIG-GUID: _NTbHI8PuzGVhEP0mQ2mz-INlwC-eyeX
X-Proofpoint-GUID: _NTbHI8PuzGVhEP0mQ2mz-INlwC-eyeX
X-Spam-Score: -0.7 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.7 (-)

> > Shouldn't I address the concern of Drew, as well?  That a "button" is a
> > certain technical implementation of linking which might not be known by
                      ^^^^^^^^^^^^^^^^^^^^^^
> > the reader.  Maybe a term like "link button" or "link-button" conveys -
> > at the same time - the well known concept and correct technique,
> > different from an Info link (or "cross reference")?
>=20
> I think "button" is problematic,=20

Did you perhaps mean _not_ problematic?  I said it's
problematic, and you don't seem to agree with me.
Or maybe you meant only "button" in "link button".
In that case, I agree with you.  We should just say
"link".

> and have no idea why Drew thinks we
> should use another term here.

Another term than "button"?  Or "link-button"?

Drew thinks we should use the same standard term we
use everywhere - including in Info: for users it's a
link, not a button.

It may be implemented in Elisp by something Elisp
calls a "button" (not a great name, but not important
here) - but that's now what Emacs calls it in
communicating with users.  In particular, it's not
how the Info docs refer to it.  For users it's a link.

> The code does insert buttons, right?

The code implements links by inserting what Elisp
calls "buttons", yes.  Is how the code implements
links what's important here?

> If the user types "M-x describe-text-properties RET",
> will he/she see that there's a button at point?

Dunno what Dieter's code shows for that.  But this is
what doing that on an xref link in Info shows:

There are text properties here:
  font-lock-face       info-xref
  fontified            t
  help-echo            [Show]
  mouse-face           highlight

I wouldn't say that a user is told there's a button
there.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#60587: Patch for adding links to symbols' help documentation
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 23 Jan 2023 12:15:02 +0000
Resent-Message-ID: <handler.60587.B60587.16744760779639 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 60587
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: patch
To: Drew Adams <drew.adams@HIDDEN>
Cc: dieter@HIDDEN, 60587 <at> debbugs.gnu.org, monnier@HIDDEN
Received: via spool by 60587-submit <at> debbugs.gnu.org id=B60587.16744760779639
          (code B ref 60587); Mon, 23 Jan 2023 12:15:02 +0000
Received: (at 60587) by debbugs.gnu.org; 23 Jan 2023 12:14:37 +0000
Received: from localhost ([127.0.0.1]:53511 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1pJvie-0002VP-V2
	for submit <at> debbugs.gnu.org; Mon, 23 Jan 2023 07:14:37 -0500
Received: from eggs.gnu.org ([209.51.188.92]:33414)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1pJvic-0002V8-I7
 for 60587 <at> debbugs.gnu.org; Mon, 23 Jan 2023 07:14:35 -0500
Received: from fencepost.gnu.org ([2001:470:142:3::e])
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pJviW-0003we-Jc; Mon, 23 Jan 2023 07:14:28 -0500
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=0OPGhGKYISgEE86WwMVzCVSniwYAkOzoFynq6RWFLq8=; b=WMcn3Bya4vKS
 BCOuom15iWjqjX8DWJE5lLkLPOfwxHJpkQPxom4i6xENwei6RN8PGAJeCQbUSk9wCvcjaRpdBGrvA
 QYE1lcojEa3qDLej0cGR4pq56gEzgP51LE9//fhVMovu3J0fyC0d/Ypmw1VlduoHYF6EqM3i0/nnA
 N9hQGcaqheW+iCKQh3c8SkQTZAeRlG1J62gThGuP7v/7rO86cBs+Jv+1peFcXwr60Vofgw8bZ/S7u
 39tu0SUMl5ASobHilwlyJedGMoro2OQKJXUkNC5gd5E99Hg5NIDZ0kD8ApqqZSHuyUHRQXtlLtLlG
 raYiqjBFhnp5d5PQGUqm3g==;
Received: from [87.69.77.57] (helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1pJviW-0001nr-00; Mon, 23 Jan 2023 07:14:28 -0500
Date: Mon, 23 Jan 2023 14:14:35 +0200
Message-Id: <835ycxjvmc.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <SJ0PR10MB548816D2857B4BB56E16DDC0F3CB9@HIDDEN>
 (message from Drew Adams on Sun, 22 Jan 2023 22:09:28 +0000)
References: <86y1qgr1bf.fsf@HIDDEN>
 <86tu13qydg.fsf@HIDDEN> <83h6x2u74b.fsf@HIDDEN>
 <863588rfos.fsf@HIDDEN> <83o7qw0yjy.fsf@HIDDEN>
 <864jskx6a8.fsf@HIDDEN> <831qnomh6l.fsf@HIDDEN>
 <86lelvvdj1.fsf@HIDDEN> <834jsjkt16.fsf@HIDDEN> 
 <SJ0PR10MB548816D2857B4BB56E16DDC0F3CB9@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Drew Adams <drew.adams@HIDDEN>
> CC: "60587 <at> debbugs.gnu.org" <60587 <at> debbugs.gnu.org>,
>         "monnier@HIDDEN" <monnier@HIDDEN>
> Date: Sun, 22 Jan 2023 22:09:28 +0000
> 
> > > Shouldn't I address the concern of Drew, as well?  That a "button" is a
> > > certain technical implementation of linking which might not be known by
>                       ^^^^^^^^^^^^^^^^^^^^^^
> > > the reader.  Maybe a term like "link button" or "link-button" conveys -
> > > at the same time - the well known concept and correct technique,
> > > different from an Info link (or "cross reference")?
> > 
> > I think "button" is problematic, 
> 
> Did you perhaps mean _not_ problematic?

Yes, I don't think "button" is problematic.

> Drew thinks we should use the same standard term we
> use everywhere - including in Info: for users it's a
> link, not a button.

We use "buttons" as well as "hyperlinks".  See, e.g., the node "Mouse
References" in the user manual, which basically describes the facility
Dieter intends to use.

> > If the user types "M-x describe-text-properties RET",
> > will he/she see that there's a button at point?
> 
> Dunno what Dieter's code shows for that.  But this is
> what doing that on an xref link in Info shows:
> 
> There are text properties here:
>   font-lock-face       info-xref
>   fontified            t
>   help-echo            [Show]
>   mouse-face           highlight
> 
> I wouldn't say that a user is told there's a button
> there.

I meant the hyperlinks in the *Help* buffer.





Last modified: Mon, 23 Jan 2023 12:30:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.