From unknown Tue Jun 24 05:09:07 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#6601 <6601@debbugs.gnu.org> To: bug#6601 <6601@debbugs.gnu.org> Subject: Status: help-make-xref doesn't buttonize `help-variable-def' and per `help-xref-symbol-regexp' Reply-To: bug#6601 <6601@debbugs.gnu.org> Date: Tue, 24 Jun 2025 12:09:07 +0000 retitle 6601 help-make-xref doesn't buttonize `help-variable-def' and per = `help-xref-symbol-regexp' reassign 6601 emacs submitter 6601 MON KEY severity 6601 minor tag 6601 patch fixed thanks From debbugs-submit-bounces@debbugs.gnu.org Fri Jul 09 21:09:36 2010 Received: (at submit) by debbugs.gnu.org; 10 Jul 2010 01:09:36 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OXOZT-0000jC-NJ for submit@debbugs.gnu.org; Fri, 09 Jul 2010 21:09:36 -0400 Received: from mx10.gnu.org ([199.232.76.166]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OXOZR-0000j7-FQ for submit@debbugs.gnu.org; Fri, 09 Jul 2010 21:09:34 -0400 Received: from lists.gnu.org ([199.232.76.165]:49417) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1OXOZN-0003lx-Tp for submit@debbugs.gnu.org; Fri, 09 Jul 2010 21:09:29 -0400 Received: from [140.186.70.92] (port=44068 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OXOZL-0000cW-Vc for bug-gnu-emacs@gnu.org; Fri, 09 Jul 2010 21:09:29 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OXOZK-0003wX-BS for bug-gnu-emacs@gnu.org; Fri, 09 Jul 2010 21:09:27 -0400 Received: from mail-gy0-f169.google.com ([209.85.160.169]:32790) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OXOZK-0003wQ-2a for bug-gnu-emacs@gnu.org; Fri, 09 Jul 2010 21:09:26 -0400 Received: by gyf1 with SMTP id 1so2105417gyf.0 for ; Fri, 09 Jul 2010 18:09:24 -0700 (PDT) MIME-Version: 1.0 Received: by 10.150.164.17 with SMTP id m17mr2603940ybe.272.1278724162841; Fri, 09 Jul 2010 18:09:22 -0700 (PDT) Received: by 10.151.98.19 with HTTP; Fri, 9 Jul 2010 18:09:22 -0700 (PDT) Date: Fri, 9 Jul 2010 21:09:22 -0400 X-Google-Sender-Auth: ZREyn_neig8U-rpCCthjgCYKrNE Message-ID: Subject: help-make-xref doesn't buttonize `help-variable-def' and per `help-xref-symbol-regexp' From: MON KEY To: bug-gnu-emacs@gnu.org Content-Type: multipart/mixed; boundary=000e0cd56fa67deea5048afe2b05 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 2) X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) X-Spam-Score: -3.6 (---) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -4.9 (----) --000e0cd56fa67deea5048afe2b05 Content-Type: text/plain; charset=UTF-8 The button `help-variable-def' and constant `help-xref-symbol-regexp' do not find variables with symbol-names containing asterisks, e.g. `*some-var*'. Presumably this applies equally as well to any variable which contains a non-letter as the first character in the variables symbol name. It looks like `help-make-xrefs' inherits the `emacs-lisp-mode-syntax-table' and odd stuff is happening around the regexp and the syntax table though this seems odd as `*' is a symbol constituent. Following bit of code provides an example illustrating the problem: (defvar check-xref-var-no-star 'xrefd-in-docstrings "A test for xref'ing non-star prefixed variables in docstrings.\n Non-star prefixed variables have the form:\n \n These appear with xrefs in docstrings when preceded by either of the following two tokens:\n { variable | option }\n where the variables symbol-name is enclosed with a preceding grave char ` \(ASCII 96\), and followed by an apostrophe char ' (ASCII 39) e.g.:\n variable `' option `'\n This is as contrasted with star prefixed variables which have the form:\n **\n and do not appear with xrefs in docstrings.\n For example, this variable `*check-xref-var-w-star*' is not xref'd. Neither is it xref'd as an option `*check-xref-var-w-star*'. However, the current variable `check-xref-var-no-star' is xref'd. Likewise, it is also xref'd as the option `check-xref-var-no-star'.") (defvar *check-xref-var-w-star* 'not-xrefd-in-docstrings "A test for xref'ing star prefixed variables in docstrings.\n Star prefixed variables have the form:\n **\n these do not appear with xrefs in docstrings.\n This is as contrasted with non-star prefixed variables which have the form:\n \n and which do appear in xref'd in docstrings when preceded by either of the follwing two tokens:\n { variable | option }\n where the symbole-name of the variable is enclosed with a preceding grave char ` \(ASCII 96\) and followed by an apostrophe char ' (ASCII 39) e.g.:\n variable `' option `'\n For example, this variable `check-xref-var-no-star' is xref'd. Likewise, the option `check-xref-var-no-star' is also xref'd. Whereas, the variable `*check-xref-var-w-star*' is not xref'd. Neither is it xref'd as option `*check-xref-var-w-star*'.") (defun check-xref-test-function () "This is a docstring which tests xref'ing of two differently named variables.\n The current functions docstring illustrates the problem.\n This symbol-name will be xref'd as variable `check-xref-var-no-star'.\n It will also be xref'd as option `check-xref-var-no-star'.\n Whereas following symbol-name is not xref'd as variable `*check-xref-var-w-star*', nor is it xref'd as option `*check-xref-var-w-star*'.\n This behaviour constitutes a bug. For additional detailed illustration of the problem see return value of `check-xrefs-w-help-variable-def'." (describe-function 'check-xref-test-function)) (defun check-xrefs-w-help-variable-def (&optional w-test-fncn cnt-var-name) "Find help-variable-button text-property values in *Help* buffer.\n Return a list of text-properties and buffer locations when buffer has a `category` text-property with a prop value `help-variable-button`.\n List contains a count of the number of times the property `help-variable-button` appears along with the count of the number of times a variable name appears in the documentation.\n When W-TEST-FNCN is non-nil it is a symol naming a documented function. Default is `check-xref-test-function'.\n When CNT-VAR-NAME is non-nil count the number of times symbol-name matches the regexp \"`'\". Default is to count matches for the symbol `*check-xref-var-w-star*'.\n Before returning pops-to-buffer named \"*Help*\" and then to buffer named \"*CHECK-XREFS-W-HELP-VARIABLE-DEF*\".\n :EXAMPLE\n\n\(check-xrefs-w-help-variable-def\)\n \(check-xrefs-w-help-variable-def 'help-make-xrefs 'help-forward-label\)\n \(check-xrefs-w-help-variable-def 'help-make-xrefs 'help-xref-symbol-regexp\)\n" (let ((gthr-props) (gthrng t)) (if w-test-fncn (describe-function w-test-fncn) (check-xref-test-function)) (with-current-buffer (get-buffer "*Help*") (goto-char (buffer-end 0)) (while gthrng (when (eq (point) (buffer-end 0)) (goto-char (next-single-property-change (point) 'button))) (unless (null (text-properties-at (point))) (let* ((props-here (text-properties-at (point))) (chk-hvb (plist-get props-here 'category))) (when (equal (symbol-name chk-hvb) "help-variable-button") (push `(:button-found-at ,(point) :w-props ,props-here) gthr-props)) (if (eq (next-char-property-change (point)) (point)) (setq gthrng) (progn (goto-char (next-char-property-change (point))) (if (eq (next-char-property-change (point)) (point)) (setq gthrng) (let ((chk-nxt (next-single-property-change (point) 'button))) (if chk-nxt (goto-char (next-single-property-change (point) 'button)) (setq gthrng))))))))) (when gthr-props (setq gthr-props (nreverse gthr-props))) (let ((cnt-fnd 0)) (dolist (bfa gthr-props (when (> cnt-fnd 0) (setq gthr-props (nconc `(:help-var-btn-fnd-n-tms ,cnt-fnd) gthr-props)))) (when (equal (symbol-name (plist-get (plist-get bfa :w-props) 'category)) "help-variable-button") (incf cnt-fnd))) (goto-char (buffer-end 0)) (setq cnt-fnd 0) (let* ((chk-star-sym (or cnt-var-name '*check-xref-var-w-star*)) (chk-star-str (format "`\%s\'" chk-star-sym))) (while (search-forward-regexp chk-star-str nil t) (incf cnt-fnd)) (if (> cnt-fnd 0) (progn (setq gthrng 0) (dolist (bfa (if (eq (car gthr-props) :help-var-btn-fnd-n-tms) (cddr gthr-props) gthr-props) gthrng) (when (equal (symbol-name (car (plist-get (plist-get bfa :w-props) 'help-args))) (symbol-name chk-star-sym)) (incf gthrng))) (setq gthr-props (nconc `(:help-var-star-seen-n-tms ,cnt-fnd :help-var-star-seen-n-tms ,gthrng) gthr-props))) (setq gthr-props (nconc '(:help-var-star-seen-n-tms 0 :help-var-star-seen-n-tms 0) gthr-props)))))) (let ((pp-rtn-bfr "*CHECK-XREFS-W-HELP-VARIABLE-DEF*")) (with-current-buffer (get-buffer-create pp-rtn-bfr) (erase-buffer)) (pp-display-expression (identity gthr-props) pp-rtn-bfr) (pop-to-buffer "*Help*" t) (pop-to-buffer pp-rtn-bfr t)) gthr-props)) ;; :CLEANUP ;; (dolist (unint '(check-xref-var-no-star ;; *check-xref-var-w-star* ;; check-xref-test-function ;; check-xrefs-w-help-variable-def)) ;; (message "The check-xref fncns and vars were uninterned")) ;;; ============================== --000e0cd56fa67deea5048afe2b05 Content-Type: application/octet-stream; name="buttonize-help-make-xref.el" Content-Disposition: attachment; filename="buttonize-help-make-xref.el" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gbfrbl7p0 Ozs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKOzsgVGhlIGJ1dHRvbiBgaGVscC12 YXJpYWJsZS1kZWYnIGFuZCBjb25zdGFudCBgaGVscC14cmVmLXN5bWJvbC1yZWdleHAnCjs7IGRv IG5vdCBmaW5kIHZhcmlhYmxlcyB3aXRoIHN5bWJvbC1uYW1lcyBjb250YWluaW5nIGFzdGVyaXNr cywKOzsgZS5nLiBgKnNvbWUtdmFyKicuIFByZXN1bWFibHkgdGhpcyBhcHBsaWVzIGVxdWFsbHkg YXMgd2VsbCB0byBhbnkKOzsgdmFyaWFibGUgd2hpY2ggY29udGFpbnMgYSBub24tbGV0dGVyIGFz IHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhlCjs7IHZhcmlhYmxlcyBzeW1ib2wgbmFtZS4KCjs7 IEl0IGxvb2tzIGxpa2UgYGhlbHAtbWFrZS14cmVmcycgaW5oZXJpdHMgdGhlCjs7IGBlbWFjcy1s aXNwLW1vZGUtc3ludGF4LXRhYmxlJyBhbmQgb2RkIHN0dWZmIGlzIGhhcHBlbmluZyBhcm91bmQg dGhlCjs7IHJlZ2V4cCBhbmQgdGhlIHN5bnRheCB0YWJsZSB0aG91Z2ggdGhpcyBzZWVtcyBvZGQg YXMgYConIGlzIGEgc3ltYm9sCjs7IGNvbnN0aXR1ZW50LgoKOzsgRm9sbG93aW5nIGJpdCBvZiBj b2RlIHByb3ZpZGVzIGFuIGV4YW1wbGUgaWxsdXN0cmF0aW5nIHRoZSBwcm9ibGVtOgoKOzs7ID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKKGRlZnZhciBjaGVjay14cmVmLXZhci1uby1z dGFyICd4cmVmZC1pbi1kb2NzdHJpbmdzCiAgIkEgdGVzdCBmb3IgeHJlZidpbmcgbm9uLXN0YXIg cHJlZml4ZWQgdmFyaWFibGVzIGluIGRvY3N0cmluZ3MuXG4KTm9uLXN0YXIgcHJlZml4ZWQgdmFy aWFibGVzIGhhdmUgdGhlIGZvcm06XG4KIDxTT01FLVZBUi1OQU1FPlxuClRoZXNlIGFwcGVhciB3 aXRoIHhyZWZzIGluIGRvY3N0cmluZ3Mgd2hlbiBwcmVjZWRlZCBieSBlaXRoZXIgb2YgdGhlIGZv bGxvd2luZwp0d28gdG9rZW5zOlxuCiB7IHZhcmlhYmxlIHwgb3B0aW9uIH1cbgp3aGVyZSB0aGUg dmFyaWFibGVzIHN5bWJvbC1uYW1lIGlzIGVuY2xvc2VkIHdpdGggYSBwcmVjZWRpbmcgZ3JhdmUg Y2hhciBgClwoQVNDSUkgOTZcKSwgYW5kIGZvbGxvd2VkIGJ5IGFuIGFwb3N0cm9waGUgY2hhciAn IChBU0NJSSAzOSkgZS5nLjpcbgogdmFyaWFibGUgYDxTT01FLVZBUi1OQU1FPicKIG9wdGlvbiBg PFNPTUUtVkFSLU5BTUU+J1xuClRoaXMgaXMgYXMgY29udHJhc3RlZCB3aXRoIHN0YXIgcHJlZml4 ZWQgdmFyaWFibGVzIHdoaWNoIGhhdmUgdGhlIGZvcm06XG4KICo8U09NRS1WQVItTkFNRT4qXG4K YW5kIGRvIG5vdCBhcHBlYXIgd2l0aCB4cmVmcyBpbiBkb2NzdHJpbmdzLlxuCkZvciBleGFtcGxl LCB0aGlzIHZhcmlhYmxlIGAqY2hlY2steHJlZi12YXItdy1zdGFyKicgaXMgbm90IHhyZWYnZC4K TmVpdGhlciBpcyBpdCB4cmVmJ2QgYXMgYW4gb3B0aW9uIGAqY2hlY2steHJlZi12YXItdy1zdGFy KicuCkhvd2V2ZXIsIHRoZSBjdXJyZW50IHZhcmlhYmxlIGBjaGVjay14cmVmLXZhci1uby1zdGFy JyBpcyB4cmVmJ2QuCkxpa2V3aXNlLCBpdCBpcyBhbHNvIHhyZWYnZCBhcyB0aGUgb3B0aW9uIGBj aGVjay14cmVmLXZhci1uby1zdGFyJy4iKQoKKGRlZnZhciAqY2hlY2steHJlZi12YXItdy1zdGFy KiAnbm90LXhyZWZkLWluLWRvY3N0cmluZ3MKICAiQSB0ZXN0IGZvciB4cmVmJ2luZyBzdGFyIHBy ZWZpeGVkIHZhcmlhYmxlcyBpbiBkb2NzdHJpbmdzLlxuClN0YXIgcHJlZml4ZWQgdmFyaWFibGVz IGhhdmUgdGhlIGZvcm06XG4KICo8U09NRS1WQVItTkFNRT4qXG4KdGhlc2UgZG8gbm90IGFwcGVh ciB3aXRoIHhyZWZzIGluIGRvY3N0cmluZ3MuXG4KVGhpcyBpcyBhcyBjb250cmFzdGVkIHdpdGgg bm9uLXN0YXIgcHJlZml4ZWQgdmFyaWFibGVzIHdoaWNoIGhhdmUgdGhlIGZvcm06XG4KICA8U09N RS1WQVItTkFNRT5cbgphbmQgd2hpY2ggZG8gYXBwZWFyIGluIHhyZWYnZCBpbiBkb2NzdHJpbmdz IHdoZW4gcHJlY2VkZWQgYnkgZWl0aGVyIG9mIHRoZQpmb2xsd2luZyB0d28gdG9rZW5zOlxuCiB7 IHZhcmlhYmxlIHwgb3B0aW9uIH1cbgp3aGVyZSB0aGUgc3ltYm9sZS1uYW1lIG9mIHRoZSB2YXJp YWJsZSBpcyBlbmNsb3NlZCB3aXRoIGEgcHJlY2VkaW5nIGdyYXZlIGNoYXIgYApcKEFTQ0lJIDk2 XCkgYW5kIGZvbGxvd2VkIGJ5IGFuIGFwb3N0cm9waGUgY2hhciAnIChBU0NJSSAzOSkgZS5nLjpc bgogdmFyaWFibGUgYDxTT01FLVZBUi1OQU1FPicKIG9wdGlvbiBgPFNPTUUtVkFSLU5BTUU+J1xu CkZvciBleGFtcGxlLCB0aGlzIHZhcmlhYmxlIGBjaGVjay14cmVmLXZhci1uby1zdGFyJyBpcyB4 cmVmJ2QuCkxpa2V3aXNlLCB0aGUgb3B0aW9uIGBjaGVjay14cmVmLXZhci1uby1zdGFyJyBpcyBh bHNvIHhyZWYnZC4KV2hlcmVhcywgdGhlIHZhcmlhYmxlIGAqY2hlY2steHJlZi12YXItdy1zdGFy KicgaXMgbm90IHhyZWYnZC4KTmVpdGhlciBpcyBpdCB4cmVmJ2QgYXMgb3B0aW9uIGAqY2hlY2st eHJlZi12YXItdy1zdGFyKicuIikKCihkZWZ1biBjaGVjay14cmVmLXRlc3QtZnVuY3Rpb24gKCkK ICAiVGhpcyBpcyBhIGRvY3N0cmluZyB3aGljaCB0ZXN0cyB4cmVmJ2luZyBvZiB0d28gZGlmZmVy ZW50bHkgbmFtZWQgdmFyaWFibGVzLlxuClRoZSBjdXJyZW50IGZ1bmN0aW9ucyBkb2NzdHJpbmcg aWxsdXN0cmF0ZXMgdGhlIHByb2JsZW0uXG4KVGhpcyBzeW1ib2wtbmFtZSB3aWxsIGJlIHhyZWYn ZCBhcyB2YXJpYWJsZSBgY2hlY2steHJlZi12YXItbm8tc3RhcicuXG4KSXQgd2lsbCBhbHNvIGJl IHhyZWYnZCBhcyBvcHRpb24gYGNoZWNrLXhyZWYtdmFyLW5vLXN0YXInLlxuCldoZXJlYXMgZm9s bG93aW5nIHN5bWJvbC1uYW1lIGlzIG5vdCB4cmVmJ2QgYXMgdmFyaWFibGUgYCpjaGVjay14cmVm LXZhci13LXN0YXIqJywKbm9yIGlzIGl0IHhyZWYnZCBhcyBvcHRpb24gYCpjaGVjay14cmVmLXZh ci13LXN0YXIqJy5cbgpUaGlzIGJlaGF2aW91ciBjb25zdGl0dXRlcyBhIGJ1Zy4gRm9yIGFkZGl0 aW9uYWwgZGV0YWlsZWQgaWxsdXN0cmF0aW9uIG9mIHRoZQpwcm9ibGVtIHNlZSByZXR1cm4gdmFs dWUgb2YgYGNoZWNrLXhyZWZzLXctaGVscC12YXJpYWJsZS1kZWYnLiIKICAoZGVzY3JpYmUtZnVu Y3Rpb24gJ2NoZWNrLXhyZWYtdGVzdC1mdW5jdGlvbikpCgooZGVmdW4gY2hlY2steHJlZnMtdy1o ZWxwLXZhcmlhYmxlLWRlZiAoJm9wdGlvbmFsIHctdGVzdC1mbmNuIGNudC12YXItbmFtZSkKICAi RmluZCBoZWxwLXZhcmlhYmxlLWJ1dHRvbiB0ZXh0LXByb3BlcnR5IHZhbHVlcyBpbiAqSGVscCog YnVmZmVyLlxuClJldHVybiBhIGxpc3Qgb2YgdGV4dC1wcm9wZXJ0aWVzIGFuZCBidWZmZXIgbG9j YXRpb25zIHdoZW4gYnVmZmVyIGhhcwphIGBjYXRlZ29yeWAgdGV4dC1wcm9wZXJ0eSB3aXRoIGEg cHJvcCB2YWx1ZSBgaGVscC12YXJpYWJsZS1idXR0b25gLlxuCkxpc3QgY29udGFpbnMgYSBjb3Vu dCBvZiB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoZSBwcm9wZXJ0eSBgaGVscC12YXJpYWJsZS1idXR0 b25gCmFwcGVhcnMgYWxvbmcgd2l0aCB0aGUgY291bnQgb2YgdGhlIG51bWJlciBvZiB0aW1lcyBh IHZhcmlhYmxlIG5hbWUgYXBwZWFycyBpbgp0aGUgZG9jdW1lbnRhdGlvbi5cbgpXaGVuIFctVEVT VC1GTkNOIGlzIG5vbi1uaWwgaXQgaXMgYSBzeW1vbCBuYW1pbmcgYSBkb2N1bWVudGVkIGZ1bmN0 aW9uLgpEZWZhdWx0IGlzIGBjaGVjay14cmVmLXRlc3QtZnVuY3Rpb24nLlxuCldoZW4gQ05ULVZB Ui1OQU1FIGlzIG5vbi1uaWwgY291bnQgdGhlIG51bWJlciBvZiB0aW1lcyBzeW1ib2wtbmFtZSBt YXRjaGVzIHRoZQpyZWdleHAgXCJgPENOVC1WQVItTkFNRT4nXCIuIApEZWZhdWx0IGlzIHRvIGNv dW50IG1hdGNoZXMgZm9yIHRoZSBzeW1ib2wgYCpjaGVjay14cmVmLXZhci13LXN0YXIqJy5cbgpC ZWZvcmUgcmV0dXJuaW5nIHBvcHMtdG8tYnVmZmVyIG5hbWVkIFwiKkhlbHAqXCIgYW5kIHRoZW4g dG8gYnVmZmVyIG5hbWVkClwiKkNIRUNLLVhSRUZTLVctSEVMUC1WQVJJQUJMRS1ERUYqXCIuXG4K OkVYQU1QTEVcblxuXChjaGVjay14cmVmcy13LWhlbHAtdmFyaWFibGUtZGVmXClcbgpcKGNoZWNr LXhyZWZzLXctaGVscC12YXJpYWJsZS1kZWYgJ2hlbHAtbWFrZS14cmVmcyAnaGVscC1mb3J3YXJk LWxhYmVsXClcbgpcKGNoZWNrLXhyZWZzLXctaGVscC12YXJpYWJsZS1kZWYgJ2hlbHAtbWFrZS14 cmVmcyAnaGVscC14cmVmLXN5bWJvbC1yZWdleHBcKVxuIgogIChsZXQgKChndGhyLXByb3BzKQog ICAgICAgIChndGhybmcgdCkpCiAgICAoaWYgdy10ZXN0LWZuY24gCiAgICAgICAgKGRlc2NyaWJl LWZ1bmN0aW9uIHctdGVzdC1mbmNuKQogICAgICAoY2hlY2steHJlZi10ZXN0LWZ1bmN0aW9uKSkK ICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyCiAgICAgICAgKGdldC1idWZmZXIgIipIZWxwKiIpCiAg ICAgIChnb3RvLWNoYXIgKGJ1ZmZlci1lbmQgMCkpCiAgICAgICh3aGlsZSBndGhybmcKICAgICAg ICAod2hlbiAoZXEgKHBvaW50KSAoYnVmZmVyLWVuZCAwKSkKICAgICAgICAgIChnb3RvLWNoYXIg KG5leHQtc2luZ2xlLXByb3BlcnR5LWNoYW5nZSAocG9pbnQpICdidXR0b24pKSkKICAgICAgICAo dW5sZXNzIChudWxsICh0ZXh0LXByb3BlcnRpZXMtYXQgKHBvaW50KSkpCiAgICAgICAgICAobGV0 KiAoKHByb3BzLWhlcmUgKHRleHQtcHJvcGVydGllcy1hdCAocG9pbnQpKSkKICAgICAgICAgICAg ICAgICAoY2hrLWh2YiAocGxpc3QtZ2V0IHByb3BzLWhlcmUgJ2NhdGVnb3J5KSkpCiAgICAgICAg ICAgICh3aGVuIChlcXVhbCAoc3ltYm9sLW5hbWUgY2hrLWh2YikgImhlbHAtdmFyaWFibGUtYnV0 dG9uIikKICAgICAgICAgICAgICAocHVzaCBgKDpidXR0b24tZm91bmQtYXQgLChwb2ludCkgOnct cHJvcHMgLHByb3BzLWhlcmUpIGd0aHItcHJvcHMpKQogICAgICAgICAgICAoaWYgKGVxIChuZXh0 LWNoYXItcHJvcGVydHktY2hhbmdlIChwb2ludCkpIChwb2ludCkpCiAgICAgICAgICAgICAgICAo c2V0cSBndGhybmcpCiAgICAgICAgICAgICAgKHByb2duIChnb3RvLWNoYXIgKG5leHQtY2hhci1w cm9wZXJ0eS1jaGFuZ2UgKHBvaW50KSkpCiAgICAgICAgICAgICAgICAgICAgIChpZiAoZXEgKG5l eHQtY2hhci1wcm9wZXJ0eS1jaGFuZ2UgKHBvaW50KSkgKHBvaW50KSkKICAgICAgICAgICAgICAg ICAgICAgICAgIChzZXRxIGd0aHJuZykKICAgICAgICAgICAgICAgICAgICAgICAobGV0ICgoY2hr LW54dCAobmV4dC1zaW5nbGUtcHJvcGVydHktY2hhbmdlIChwb2ludCkgJ2J1dHRvbikpKQogICAg ICAgICAgICAgICAgICAgICAgICAgKGlmIGNoay1ueHQKICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoZ290by1jaGFyIChuZXh0LXNpbmdsZS1wcm9wZXJ0eS1jaGFuZ2UgKHBvaW50KSAnYnV0 dG9uKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgZ3Rocm5nKSkpKSkpKSkpCiAg ICAgICh3aGVuIGd0aHItcHJvcHMgKHNldHEgZ3Roci1wcm9wcyAobnJldmVyc2UgZ3Roci1wcm9w cykpKQogICAgICAobGV0ICgoY250LWZuZCAwKSkKICAgICAgICAoZG9saXN0IChiZmEgZ3Roci1w cm9wcwogICAgICAgICAgICAgICAgICAgICAod2hlbiAoPiBjbnQtZm5kIDApCiAgICAgICAgICAg ICAgICAgICAgICAgKHNldHEgZ3Roci1wcm9wcwogICAgICAgICAgICAgICAgICAgICAgICAgICAg IChuY29uYyBgKDpoZWxwLXZhci1idG4tZm5kLW4tdG1zICxjbnQtZm5kKSBndGhyLXByb3BzKSkp KQogICAgICAgICAgKHdoZW4gKGVxdWFsIChzeW1ib2wtbmFtZSAocGxpc3QtZ2V0IChwbGlzdC1n ZXQgYmZhIDp3LXByb3BzKSAnY2F0ZWdvcnkpKSAKICAgICAgICAgICAgICAgICAgICAgICAiaGVs cC12YXJpYWJsZS1idXR0b24iKQogICAgICAgICAgICAoaW5jZiBjbnQtZm5kKSkpCiAgICAgICAg KGdvdG8tY2hhciAoYnVmZmVyLWVuZCAwKSkKICAgICAgICAoc2V0cSBjbnQtZm5kIDApCiAgICAg ICAgKGxldCogKChjaGstc3Rhci1zeW0gKG9yIGNudC12YXItbmFtZSAnKmNoZWNrLXhyZWYtdmFy LXctc3RhciopKQogICAgICAgICAgICAgICAoY2hrLXN0YXItc3RyIChmb3JtYXQgImBcJXNcJyIg Y2hrLXN0YXItc3ltKSkpCiAgICAgICAgICAod2hpbGUgKHNlYXJjaC1mb3J3YXJkLXJlZ2V4cCBj aGstc3Rhci1zdHIgbmlsIHQpCiAgICAgICAgICAgIChpbmNmIGNudC1mbmQpKQogICAgICAgICAg KGlmICg+IGNudC1mbmQgMCkKICAgICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgICAgIChz ZXRxIGd0aHJuZyAwKQogICAgICAgICAgICAgICAgKGRvbGlzdCAoYmZhIChpZiAoZXEgKGNhciBn dGhyLXByb3BzKSA6aGVscC12YXItYnRuLWZuZC1uLXRtcykgCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChjZGRyIGd0aHItcHJvcHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBndGhyLXByb3BzKQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0aHJuZykKICAg ICAgICAgICAgICAgICAgKHdoZW4gKGVxdWFsIChzeW1ib2wtbmFtZSAoY2FyIChwbGlzdC1nZXQg KHBsaXN0LWdldCBiZmEgOnctcHJvcHMpICdoZWxwLWFyZ3MpKSkKICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChzeW1ib2wtbmFtZSBjaGstc3Rhci1zeW0pKQogICAgICAgICAgICAgICAg ICAgIChpbmNmIGd0aHJuZykpKQogICAgICAgICAgICAgICAgKHNldHEgZ3Roci1wcm9wcyAobmNv bmMgYCg6aGVscC12YXItc3Rhci1zZWVuLW4tdG1zICxjbnQtZm5kIAogICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA6aGVscC12YXItc3Rhci1zZWVuLW4tdG1zICxndGhy bmcpIGd0aHItcHJvcHMpKSkKICAgICAgICAgICAgKHNldHEgZ3Roci1wcm9wcyAobmNvbmMgJyg6 aGVscC12YXItc3Rhci1zZWVuLW4tdG1zIDAgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgOmhlbHAtdmFyLXN0YXItc2Vlbi1uLXRtcyAwKSBndGhyLXByb3BzKSkpKSkpCiAg ICAobGV0ICgocHAtcnRuLWJmciAiKkNIRUNLLVhSRUZTLVctSEVMUC1WQVJJQUJMRS1ERUYqIikp CiAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIChnZXQtYnVmZmVyLWNyZWF0ZSBwcC1ydG4tYmZy KQogICAgICAgIChlcmFzZS1idWZmZXIpKQogICAgICAocHAtZGlzcGxheS1leHByZXNzaW9uIChp ZGVudGl0eSBndGhyLXByb3BzKSBwcC1ydG4tYmZyKQogICAgICAocG9wLXRvLWJ1ZmZlciAiKkhl bHAqIiB0KQogICAgICAocG9wLXRvLWJ1ZmZlciBwcC1ydG4tYmZyIHQpKQogICAgZ3Roci1wcm9w cykpCgo7OyA6Q0xFQU5VUAo7OyAoZG9saXN0ICh1bmludCAnKGNoZWNrLXhyZWYtdmFyLW5vLXN0 YXIKOzsgICAgICAgICAgICAgICAgICAqY2hlY2steHJlZi12YXItdy1zdGFyKgo7OyAgICAgICAg ICAgICAgICAgIGNoZWNrLXhyZWYtdGVzdC1mdW5jdGlvbgo7OyAgICAgICAgICAgICAgICAgIGNo ZWNrLXhyZWZzLXctaGVscC12YXJpYWJsZS1kZWYpKQo7OyAgIChtZXNzYWdlICJUaGUgY2hlY2st eHJlZiBmbmNucyBhbmQgdmFycyB3ZXJlIHVuaW50ZXJuZWQiKSkKOzs7ID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQo= --000e0cd56fa67deea5048afe2b05-- From debbugs-submit-bounces@debbugs.gnu.org Mon Jul 12 22:10:46 2010 Received: (at 6601) by debbugs.gnu.org; 13 Jul 2010 02:10:46 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OYUxJ-0005aM-LK for submit@debbugs.gnu.org; Mon, 12 Jul 2010 22:10:45 -0400 Received: from mail-gx0-f172.google.com ([209.85.161.172]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OYUxH-0005aG-72 for 6601@debbugs.gnu.org; Mon, 12 Jul 2010 22:10:43 -0400 Received: by gxk3 with SMTP id 3so2975278gxk.3 for <6601@debbugs.gnu.org>; Mon, 12 Jul 2010 19:10:47 -0700 (PDT) MIME-Version: 1.0 Received: by 10.150.187.17 with SMTP id k17mr5659763ybf.273.1278987047143; Mon, 12 Jul 2010 19:10:47 -0700 (PDT) Received: by 10.151.98.19 with HTTP; Mon, 12 Jul 2010 19:10:47 -0700 (PDT) Date: Mon, 12 Jul 2010 22:10:47 -0400 X-Google-Sender-Auth: 4wVHJfgpZfz1ZGXtWIEz3UrpZqs Message-ID: Subject: help-make-xref doesn't buttonize `help-variable-def' and per `help-xref-symbol-regexp' From: MON KEY To: 6601@debbugs.gnu.org Content-Type: multipart/mixed; boundary=000e0cd6adee9e0a46048b3b6038 X-Spam-Score: -1.6 (-) X-Debbugs-Envelope-To: 6601 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.6 (-) --000e0cd6adee9e0a46048b3b6038 Content-Type: text/plain; charset=UTF-8 ;;; ============================== ;;; ;;; Following illustrates a proof of concept for how to correct the problem. ;;; ;;; ============================== (defvar *help-xref-ascii-symbol-vars-test* '("`!some-var-bang!'" "`@colonel-at-var@'" "`$some-rich-var$'" "`%percenta-var%'" "`+var-plus-plus+'" "`-dash-var-'" "`--morse-.-var--'" "`.dot-var.'" "`/slash-var/'" "`\\bkslsh-var\\'" "`/pyra-var\'" "`\\funnel-var/'" "`=equi-var='" "`>greata-var>'" "`meow-var<'" "`'" "`?var-quest?'" "`^up-var^'" "`_under-var_'" "`{open-var{'" "`}close-var}'" "`|bar-var|'" "`{pair-brc-var}'" "`}invrted-brc-var{'") "List of strings to test for with `help-xref-modify-symbols-syntax-table-TEST' Each string is preceded and followed a char in `*help-xref-ascii-symbol-vars*'.") (defvar *help-xref-ascii-symbol-vars* '(33 ;; ! 36 ;; $ 37 ;; % 42 ;; * 43 ;; + 45 ;; - 46 ;; . 47 ;; / 64 ;; @ 60 ;; > 61 ;; = 62 ;; > 63 ;; ? 92 ;; / 94 ;; ^ 95 ;; _ 123 ;; { 124 ;; | 125 ;; } ) "A list of characters that `help-make-xrefs' does not recognize when buttonizing if they appear as the first char of a symbol name.") (defvar *help-xref-ascii-symbol-vars-regexp* ;; "\\(\\s(\\(\\(\\sw\\|\\s_\\)+\\)\\s)\\)" ;; ^^1^^^^^^^^^2^^^^^^^^^^^^^^^^^^^^^^^^ (concat "\\(" ;; grp1 "\\s(" ;; open-paren -> ` "\\(" ;; grp2 "\\(\\sw\\|\\s_\\)+" "\\)" "\\s)" ;; close-paren -> ' "\\)") "Regexp for finding symbols preceded and followed a char in the variable `*help-xref-ascii-symbol-vars*'. Evaluated with a modified syntax table by `help-xref-modify-symbols-syntax-table-TEST'.") (defun help-xref-modify-symbols-syntax-table-TEST () "Function is as a proof of conciept for how to fix `help-make-xrefs'.\n When *Help* is buttonized it inherits `emacs-lisp-mode-syntax-table' in shuch a way that the `help-make-xrefs' loop fails to match symbols preceded by certain ASCII chars. Following table an example of the unmodified *Help* buffer syntax:\n `*some-var*' 132222222231\n Where the above table maps the syntax values:\n 1 <- punct 3 <- symbol 2 <- word\n This function temporarily modifies the syntax table and use the regexp in `*help-xref-ascii-symbol-vars-regexp*' to identify the test symbols in `*help-xref-ascii-symbol-vars-test*' by setting each elt of `*help-xref-ascii-symbol-vars*' to have the \"_\" syntax.\n We modify chars 40 and 41 \"(\" \")\" to have \".\" syntax.\n We modify char 96 ASCII grave to have to have \"('\" syntax and delimit it with the matching char 39 (apostrophe) by giving it the syntax \")`\".\n Return and display results in buffers named: \"*TEST-SYNTAX*\" and \"*TEST-SYNTAX-RESULTS*\"\n Return a list of results with the form:\n \(:length-test-list :matched-all-p { t | nil } :found-these \(\"LIST\" \"OF\" \"STRINGS\" \"FOUND\"\) :with-these \(\"`LIST'\" \"`OF'\" \"`STRINGS'\" \"`FOUND-PRE-SYNTAX-FROB'\"\)\)\n Assuming value of property :matched-all-p is t the list of the :found-these property could be buttonized by `help-make-xrefs'.\n :EXAMPLE\n\n\(help-xref-modify-symbols-syntax-table-TEST\)\n" (with-current-buffer (get-buffer-create "*TEST-SYNTAX*") (erase-buffer) (display-buffer (current-buffer) t) (let ((xref-syms ;;(copy-syntax-table emacs-lisp-mode-syntax-table)) (make-syntax-table emacs-lisp-mode-syntax-table)) (syn-syms *help-xref-ascii-symbol-vars*) gthr-syn) (dolist (syn syn-syms) (modify-syntax-entry syn "_" xref-syms)) ;; turn-off parens (modify-syntax-entry 40 "." xref-syms) (modify-syntax-entry 41 "." xref-syms) ;; make ` <- ( (modify-syntax-entry 96 "('" xref-syms) ;; make ' <- ) (modify-syntax-entry 39 ")`" xref-syms) ;; push (match-string-no-properties 2) gthr-syn)) (save-excursion (insert (mapconcat #'identity *help-xref-ascii-symbol-vars-test* "\n"))) (with-syntax-table xref-syms (while (search-forward-regexp *help-xref-ascii-symbol-vars-regexp* nil t) (push (match-string-no-properties 2) gthr-syn))) (setq gthr-syn `(:length-test-list ,(length *help-xref-ascii-symbol-vars-test*) :matched-all-p ,(eq (length gthr-syn) (length *help-xref-ascii-symbol-vars-test*)) :found-these ,(nreverse gthr-syn) :with-these ,*help-xref-ascii-symbol-vars-test*)) (kill-buffer (get-buffer-create "*TEST-SYNTAX-RESULTS*")) (pp-display-expression gthr-syn "*TEST-SYNTAX-RESULTS*") (pop-to-buffer "*TEST-SYNTAX*" t) (pop-to-buffer "*TEST-SYNTAX-RESULTS*" t) gthr-syn))) ;; ;; (help-xref-modify-symbols-syntax-table-TEST) ;;; ============================== Function `help-make-xrefs' performs its xref'ing inside an unwind-protect searching matches for the following regexps: `help-xref-info-regexp', `help-xref-url-regexp', `help-xref-mule-regexp', `help-xref-symbol-regexp', with matches buttonized accordingly. It seems the sole purpose of the `unwind-protect' for is to rebind the buffer's syntax to the value stashed away in the local variable `stab'. Is there some reason why `help-make-xrefs' shouldn't be doing this inside of the `with-syntax-table' macro? e.g. (with-syntax-table emacs-lisp-mode-syntax-table {... frob xrefs here ... } ) Also, can this: (let ((old-modified (buffer-modified-p))) be replaced by a wrap with the macro: `with-silent-modifications' ;;; ============================== Revised version of previous file attatched. --000e0cd6adee9e0a46048b3b6038 Content-Type: application/octet-stream; name="bug-6601-buttonize-rev2.el" Content-Disposition: attachment; filename="bug-6601-buttonize-rev2.el" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gbk3v0cq0 Ozs7IDxUaW1lc3RhbXA6ICN7MjAxMC0wNy0xMlQyMjowODoxMy0wNDowMFp9I3sxMDI4MX0gLSBi eSBNT04+Cjs7OyBidWcjNjYwMTpoZWxwLW1ha2UteHJlZiBkb2Vzbid0IGJ1dHRvbml6ZSBgaGVs cC12YXJpYWJsZS1kZWYnIGFuZCBwZXIgYGhlbHAteHJlZi1zeW1ib2wtcmVnZXhwJwoKOzs7ID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PQo7OzsKOzs7IEZvbGxvd2luZyBpbGx1c3RyYXRl cyBhIHByb29mIG9mIGNvbmNlcHQgZm9yIGhvdyB0byBjb3JyZWN0IHRoZSBwcm9ibGVtLgo7OzsK Ozs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQoKKGRlZnZhciAqaGVscC14cmVmLWFz Y2lpLXN5bWJvbC12YXJzLXRlc3QqCiAgJygiYCFzb21lLXZhci1iYW5nISciICAiYEBjb2xvbmVs LWF0LXZhckAnIiAiYCRzb21lLXJpY2gtdmFyJCciCiAgICAiYCVwZXJjZW50YS12YXIlJyIgImAr dmFyLXBsdXMtcGx1cysnIiAiYC1kYXNoLXZhci0nIiAiYC0tbW9yc2UtLi12YXItLSciCiAgICAi YC5kb3QtdmFyLiciICAiYC9zbGFzaC12YXIvJyIgImBcXGJrc2xzaC12YXJcXCciICJgL3B5cmEt dmFyXCciCiAgICAiYFxcZnVubmVsLXZhci8nIiAiYD1lcXVpLXZhcj0nIiAiYD5ncmVhdGEtdmFy PiciICJgPGxlc3Nlci12YXI8JyIKICAgICJgPm1lb3ctdmFyPCciICJgPGVudGl0eS12YXI+JyIg ImA/dmFyLXF1ZXN0PyciICAiYF51cC12YXJeJyIgImBfdW5kZXItdmFyXyciCiAgICAiYHtvcGVu LXZhcnsnIiAiYH1jbG9zZS12YXJ9JyIgImB8YmFyLXZhcnwnIiAiYHtwYWlyLWJyYy12YXJ9JyIK ICAgICJgfWludnJ0ZWQtYnJjLXZhcnsnIikKICAiTGlzdCBvZiBzdHJpbmdzIHRvIHRlc3QgZm9y IHdpdGggYGhlbHAteHJlZi1tb2RpZnktc3ltYm9scy1zeW50YXgtdGFibGUtVEVTVCcKRWFjaCBz dHJpbmcgaXMgcHJlY2VkZWQgYW5kIGZvbGxvd2VkIGEgY2hhciBpbiBgKmhlbHAteHJlZi1hc2Np aS1zeW1ib2wtdmFycyonLiIpCiAgCihkZWZ2YXIgKmhlbHAteHJlZi1hc2NpaS1zeW1ib2wtdmFy cyoKICAnKDMzICA7OyAhCiAgICAzNiAgOzsgJAogICAgMzcgIDs7ICUKICAgIDQyICA7OyAqCiAg ICA0MyAgOzsgKwogICAgNDUgIDs7IC0KICAgIDQ2ICA7OyAuCiAgICA0NyAgOzsgLyAKICAgIDY0 ICA7OyBACiAgICA2MCAgOzsgPgogICAgNjEgIDs7ID0KICAgIDYyICA7OyA+CiAgICA2MyAgOzsg PwogICAgOTIgIDs7IC8KICAgIDk0ICA7OyBeCiAgICA5NSAgOzsgXwogICAgMTIzIDs7IHsKICAg IDEyNCA7OyB8CiAgICAxMjUgOzsgfQogICAgKQogICJBIGxpc3Qgb2YgY2hhcmFjdGVycyB0aGF0 IGBoZWxwLW1ha2UteHJlZnMnIGRvZXMgbm90IHJlY29nbml6ZSB3aGVuCmJ1dHRvbml6aW5nIGlm IHRoZXkgYXBwZWFyIGFzIHRoZSBmaXJzdCBjaGFyIG9mIGEgc3ltYm9sIG5hbWUuIikKCihkZWZ2 YXIgKmhlbHAteHJlZi1hc2NpaS1zeW1ib2wtdmFycy1yZWdleHAqCiAgOzsgIlxcKFxccyhcXChc XChcXHN3XFx8XFxzX1xcKStcXClcXHMpXFwpIgogIDs7ICBeXjFeXl5eXl5eXl4yXl5eXl5eXl5e Xl5eXl5eXl5eXl5eXl5eCiAgKGNvbmNhdCAiXFwoIiAgOzsgZ3JwMQogICAgICAgICAgIlxccygi IDs7IG9wZW4tcGFyZW4gLT4gYAogICAgICAgICAgIlxcKCIgIDs7IGdycDIKICAgICAgICAgICJc XChcXHN3XFx8XFxzX1xcKSsiCiAgICAgICAgICAiXFwpIiAgIAogICAgICAgICAgIlxccykiIDs7 IGNsb3NlLXBhcmVuIC0+ICcgCiAgICAgICAgICAiXFwpIikKICAiUmVnZXhwIGZvciBmaW5kaW5n IHN5bWJvbHMgcHJlY2VkZWQgYW5kIGZvbGxvd2VkIGEgY2hhciBpbiB0aGUgdmFyaWFibGUKYCpo ZWxwLXhyZWYtYXNjaWktc3ltYm9sLXZhcnMqJy4gRXZhbHVhdGVkIHdpdGggYSBtb2RpZmllZCBz eW50YXggdGFibGUKYnkgYGhlbHAteHJlZi1tb2RpZnktc3ltYm9scy1zeW50YXgtdGFibGUtVEVT VCcuIikKCihkZWZ1biBoZWxwLXhyZWYtbW9kaWZ5LXN5bWJvbHMtc3ludGF4LXRhYmxlLVRFU1Qg ICgpICAKICAiRnVuY3Rpb24gaXMgYXMgYSBwcm9vZiBvZiBjb25jaWVwdCBmb3IgaG93IHRvIGZp eCBgaGVscC1tYWtlLXhyZWZzJy5cbgpXaGVuICpIZWxwKiBpcyBidXR0b25pemVkIGl0IGluaGVy aXRzIGBlbWFjcy1saXNwLW1vZGUtc3ludGF4LXRhYmxlJyBpbiBzaHVjaAphIHdheSB0aGF0IHRo ZSBgaGVscC1tYWtlLXhyZWZzJyBsb29wIGZhaWxzIHRvIG1hdGNoIHN5bWJvbHMgcHJlY2VkZWQg YnkgY2VydGFpbgpBU0NJSSBjaGFycy4gRm9sbG93aW5nIHRhYmxlIGFuIGV4YW1wbGUgb2YgdGhl IHVubW9kaWZpZWQgKkhlbHAqIGJ1ZmZlciBzeW50YXg6XG4KIGAqc29tZS12YXIqJyAKIDEzMjIy MjIyMjIzMVxuCldoZXJlIHRoZSBhYm92ZSB0YWJsZSBtYXBzIHRoZSBzeW50YXggdmFsdWVzOlxu CiAxIDwtIHB1bmN0CiAzIDwtIHN5bWJvbAogMiA8LSB3b3JkXG4KVGhpcyBmdW5jdGlvbiB0ZW1w b3JhcmlseSBtb2RpZmllcyB0aGUgc3ludGF4IHRhYmxlIGFuZCB1c2UgdGhlIHJlZ2V4cCBpbgpg KmhlbHAteHJlZi1hc2NpaS1zeW1ib2wtdmFycy1yZWdleHAqJyB0byBpZGVudGlmeSB0aGUgdGVz dCBzeW1ib2xzIGluCmAqaGVscC14cmVmLWFzY2lpLXN5bWJvbC12YXJzLXRlc3QqJyBieSBzZXR0 aW5nIGVhY2ggZWx0IG9mCmAqaGVscC14cmVmLWFzY2lpLXN5bWJvbC12YXJzKicgdG8gaGF2ZSB0 aGUgXCJfXCIgc3ludGF4LlxuCldlIG1vZGlmeSBjaGFycyA0MCBhbmQgNDEgXCIoXCIgXCIpXCIg dG8gaGF2ZSBcIi5cIiBzeW50YXguXG4KV2UgbW9kaWZ5IGNoYXIgOTYgQVNDSUkgZ3JhdmUgdG8g aGF2ZSB0byBoYXZlIFwiKCdcIiBzeW50YXggYW5kIGRlbGltaXQgaXQgd2l0aAp0aGUgbWF0Y2hp bmcgY2hhciAzOSAoYXBvc3Ryb3BoZSkgYnkgZ2l2aW5nIGl0IHRoZSBzeW50YXggXCIpYFwiLlxu ClJldHVybiBhbmQgZGlzcGxheSByZXN1bHRzIGluIGJ1ZmZlcnMgbmFtZWQ6CiBcIipURVNULVNZ TlRBWCpcIiBhbmQgIFwiKlRFU1QtU1lOVEFYLVJFU1VMVFMqXCJcbgpSZXR1cm4gYSBsaXN0IG9m IHJlc3VsdHMgd2l0aCB0aGUgZm9ybTpcbgogXCg6bGVuZ3RoLXRlc3QtbGlzdCA8TEVOR1RILU9G LUxJU1QtVEVTVEVEPiAKICA6bWF0Y2hlZC1hbGwtcCB7IHQgfCBuaWwgfQogIDpmb3VuZC10aGVz ZSAgIFwoXCJMSVNUXCIgXCJPRlwiIFwiU1RSSU5HU1wiIFwiRk9VTkRcIlwpCiAgOndpdGgtdGhl c2UgICAgXChcImBMSVNUJ1wiIFwiYE9GJ1wiIFwiYFNUUklOR1MnXCIgXCJgRk9VTkQtUFJFLVNZ TlRBWC1GUk9CJ1wiXClcKVxuCkFzc3VtaW5nIHZhbHVlIG9mIHByb3BlcnR5IDptYXRjaGVkLWFs bC1wIGlzIHQgdGhlIGxpc3Qgb2YgdGhlIDpmb3VuZC10aGVzZQpwcm9wZXJ0eSBjb3VsZCBiZSBi dXR0b25pemVkIGJ5IGBoZWxwLW1ha2UteHJlZnMnLlxuCjpFWEFNUExFXG5cblwoaGVscC14cmVm LW1vZGlmeS1zeW1ib2xzLXN5bnRheC10YWJsZS1URVNUXClcbiIKICAod2l0aC1jdXJyZW50LWJ1 ZmZlciAoZ2V0LWJ1ZmZlci1jcmVhdGUgIipURVNULVNZTlRBWCoiKQogICAgKGVyYXNlLWJ1ZmZl cikKICAgIChkaXNwbGF5LWJ1ZmZlciAoY3VycmVudC1idWZmZXIpIHQpCiAgICAobGV0ICgoeHJl Zi1zeW1zIDs7KGNvcHktc3ludGF4LXRhYmxlIGVtYWNzLWxpc3AtbW9kZS1zeW50YXgtdGFibGUp KQogICAgICAgICAgIChtYWtlLXN5bnRheC10YWJsZSBlbWFjcy1saXNwLW1vZGUtc3ludGF4LXRh YmxlKSkKICAgICAgICAgIChzeW4tc3ltcyAqaGVscC14cmVmLWFzY2lpLXN5bWJvbC12YXJzKikK ICAgICAgICAgIGd0aHItc3luKQogICAgICAoZG9saXN0IChzeW4gc3luLXN5bXMpCiAgICAgICAg KG1vZGlmeS1zeW50YXgtZW50cnkgc3luICJfIiB4cmVmLXN5bXMpKQogICAgICA7OyB0dXJuLW9m ZiBwYXJlbnMKICAgICAgKG1vZGlmeS1zeW50YXgtZW50cnkgNDAgICIuIiB4cmVmLXN5bXMpIAog ICAgICAobW9kaWZ5LXN5bnRheC1lbnRyeSA0MSAgIi4iIHhyZWYtc3ltcykKICAgICAgOzsgbWFr ZSBgIDwtICggCiAgICAgIChtb2RpZnktc3ludGF4LWVudHJ5IDk2ICAiKCciIHhyZWYtc3ltcykK ICAgICAgOzsgbWFrZSAnIDwtICkgIAogICAgICAobW9kaWZ5LXN5bnRheC1lbnRyeSAzOSAgIilg IiB4cmVmLXN5bXMpIAogICAgICA7OyBwdXNoIChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyAy KSBndGhyLXN5bikpCiAgICAgIChzYXZlLWV4Y3Vyc2lvbiAKICAgICAgICAoaW5zZXJ0IChtYXBj b25jYXQgIydpZGVudGl0eSAqaGVscC14cmVmLWFzY2lpLXN5bWJvbC12YXJzLXRlc3QqICJcbiIp KSkKICAgICAgKHdpdGgtc3ludGF4LXRhYmxlIHhyZWYtc3ltcwogICAgICAgICh3aGlsZSAoc2Vh cmNoLWZvcndhcmQtcmVnZXhwICpoZWxwLXhyZWYtYXNjaWktc3ltYm9sLXZhcnMtcmVnZXhwKiBu aWwgdCkKICAgICAgICAgIChwdXNoIChtYXRjaC1zdHJpbmctbm8tcHJvcGVydGllcyAyKSBndGhy LXN5bikpKQogICAgICAoc2V0cSBndGhyLXN5bgogICAgICAgICAgICBgKDpsZW5ndGgtdGVzdC1s aXN0ICwobGVuZ3RoICpoZWxwLXhyZWYtYXNjaWktc3ltYm9sLXZhcnMtdGVzdCopCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgOm1hdGNoZWQtYWxsLXAgICwoZXEgKGxlbmd0aCBndGhy LXN5bikgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKGxlbmd0aCAqaGVscC14cmVmLWFzY2lpLXN5bWJvbC12YXJzLXRlc3QqKSkKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICA6Zm91bmQtdGhlc2UgLChucmV2ZXJzZSBndGhyLXN5bikK ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6d2l0aC10aGVzZSAgLCpoZWxwLXhyZWYt YXNjaWktc3ltYm9sLXZhcnMtdGVzdCopKQogICAgICAoa2lsbC1idWZmZXIgKGdldC1idWZmZXIt Y3JlYXRlICIqVEVTVC1TWU5UQVgtUkVTVUxUUyoiKSkKICAgICAgKHBwLWRpc3BsYXktZXhwcmVz c2lvbiBndGhyLXN5biAiKlRFU1QtU1lOVEFYLVJFU1VMVFMqIikKICAgICAgKHBvcC10by1idWZm ZXIgIipURVNULVNZTlRBWCoiIHQpCiAgICAgIChwb3AtdG8tYnVmZmVyICIqVEVTVC1TWU5UQVgt UkVTVUxUUyoiIHQpCiAgICAgIGd0aHItc3luKSkpCjs7Cjs7IChoZWxwLXhyZWYtbW9kaWZ5LXN5 bWJvbHMtc3ludGF4LXRhYmxlLVRFU1QpIAoKCjs7OyA9PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KCjs7IEZ1bmN0aW9uIGBoZWxwLW1ha2UteHJlZnMnIHBlcmZvcm1zIGl0cyB4cmVmJ2lu ZyBpbnNpZGUgYW4gdW53aW5kLXByb3RlY3QgCjs7IHNlYXJjaGluZyBtYXRjaGVzIGZvciB0aGUg Zm9sbG93aW5nIHJlZ2V4cHM6Cjs7IGBoZWxwLXhyZWYtaW5mby1yZWdleHAnLCBgaGVscC14cmVm LXVybC1yZWdleHAnLAo7OyBgaGVscC14cmVmLW11bGUtcmVnZXhwJywgYGhlbHAteHJlZi1zeW1i b2wtcmVnZXhwJywKOzsgd2l0aCBtYXRjaGVzIGJ1dHRvbml6ZWQgYWNjb3JkaW5nbHkuCjs7Cjs7 IEl0IHNlZW1zIHRoZSBzb2xlIHB1cnBvc2Ugb2YgdGhlIGB1bndpbmQtcHJvdGVjdCcgZm9yIGlz IHRvIHJlYmluZCB0aGUgYnVmZmVyJ3MKOzsgc3ludGF4IHRvIHRoZSB2YWx1ZSBzdGFzaGVkIGF3 YXkgaW4gdGhlIGxvY2FsIHZhcmlhYmxlIGBzdGFiJy4KOzsKOzsgSXRzIHRoZXJlIHNvbWUgcmVh c29uIHdoeSBgaGVscC1tYWtlLXhyZWZzJyBzaG91bGRuJ3QgYmUgZG9pbmcgdGhpcyBpbnNpZGUg b2YKOzsgdGhlIGB3aXRoLXN5bnRheC10YWJsZScgbWFjcm8/IGUuZy4KOzsKOzsgKHdpdGgtc3lu dGF4LXRhYmxlIGVtYWNzLWxpc3AtbW9kZS1zeW50YXgtdGFibGUKOzsgICB7Li4uIGZyb2IgeHJl ZnMgaGVyZSAuLi4gfSApCjs7Cjs7Cjs7IEFsc28sIGNhbiB0aGlzOgo7Owo7OyAgIChsZXQgKChv bGQtbW9kaWZpZWQgKGJ1ZmZlci1tb2RpZmllZC1wKSkpIAo7Owo7OyBiZSByZXBsYWNlZCBieSBh IHdyYXAgd2l0aCB0aGUgbWFjcm86IGB3aXRoLXNpbGVudC1tb2RpZmljYXRpb25zJyAKCjs7OyA9 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KCjs7OyA9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KOzsgVGhlIGJ1dHRvbiBgaGVscC12YXJpYWJsZS1kZWYnIGFuZCBjb25zdGFudCBg aGVscC14cmVmLXN5bWJvbC1yZWdleHAnCjs7IGRvIG5vdCBmaW5kIHZhcmlhYmxlcyB3aXRoIHN5 bWJvbC1uYW1lcyBjb250YWluaW5nIGFzdGVyaXNrcywKOzsgZS5nLiBgKnNvbWUtdmFyKicuIFBy ZXN1bWFibHkgdGhpcyBhcHBsaWVzIGVxdWFsbHkgYXMgd2VsbCB0byBhbnkKOzsgdmFyaWFibGUg d2hpY2ggY29udGFpbnMgYSBub24tbGV0dGVyIGFzIHRoZSBmaXJzdCBjaGFyYWN0ZXIgaW4gdGhl Cjs7IHZhcmlhYmxlcyBzeW1ib2wgbmFtZS4KCjs7IEl0IGxvb2tzIGxpa2UgYGhlbHAtbWFrZS14 cmVmcycgaW5oZXJpdHMgdGhlCjs7IGBlbWFjcy1saXNwLW1vZGUtc3ludGF4LXRhYmxlJyBhbmQg b2RkIHN0dWZmIGlzIGhhcHBlbmluZyBhcm91bmQgdGhlCjs7IHJlZ2V4cCBhbmQgdGhlIHN5bnRh eCB0YWJsZSB0aG91Z2ggdGhpcyBzZWVtcyBvZGQgYXMgYConIGlzIGEgc3ltYm9sCjs7IGNvbnN0 aXR1ZW50LgoKOzsgRm9sbG93aW5nIGJpdCBvZiBjb2RlIHByb3ZpZGVzIGFuIGV4YW1wbGUgaWxs dXN0cmF0aW5nIHRoZSBwcm9ibGVtOgoKOzs7ID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQooZGVmdmFyIGNoZWNrLXhyZWYtdmFyLW5vLXN0YXIgJ3hyZWZkLWluLWRvY3N0cmluZ3MKICAi QSB0ZXN0IGZvciB4cmVmJ2luZyBub24tc3RhciBwcmVmaXhlZCB2YXJpYWJsZXMgaW4gZG9jc3Ry aW5ncy5cbgpOb24tc3RhciBwcmVmaXhlZCB2YXJpYWJsZXMgaGF2ZSB0aGUgZm9ybTpcbgogPFNP TUUtVkFSLU5BTUU+XG4KVGhlc2UgYXBwZWFyIHdpdGggeHJlZnMgaW4gZG9jc3RyaW5ncyB3aGVu IHByZWNlZGVkIGJ5IGVpdGhlciBvZiB0aGUgZm9sbG93aW5nCnR3byB0b2tlbnM6XG4KIHsgdmFy aWFibGUgfCBvcHRpb24gfVxuCndoZXJlIHRoZSB2YXJpYWJsZXMgc3ltYm9sLW5hbWUgaXMgZW5j bG9zZWQgd2l0aCBhIHByZWNlZGluZyBncmF2ZSBjaGFyIGAKXChBU0NJSSA5NlwpLCBhbmQgZm9s bG93ZWQgYnkgYW4gYXBvc3Ryb3BoZSBjaGFyICcgKEFTQ0lJIDM5KSBlLmcuOlxuCiB2YXJpYWJs ZSBgPFNPTUUtVkFSLU5BTUU+Jwogb3B0aW9uIGA8U09NRS1WQVItTkFNRT4nXG4KVGhpcyBpcyBh cyBjb250cmFzdGVkIHdpdGggc3RhciBwcmVmaXhlZCB2YXJpYWJsZXMgd2hpY2ggaGF2ZSB0aGUg Zm9ybTpcbgogKjxTT01FLVZBUi1OQU1FPipcbgphbmQgZG8gbm90IGFwcGVhciB3aXRoIHhyZWZz IGluIGRvY3N0cmluZ3MuXG4KRm9yIGV4YW1wbGUsIHRoaXMgdmFyaWFibGUgYCpjaGVjay14cmVm LXZhci13LXN0YXIqJyBpcyBub3QgeHJlZidkLgpOZWl0aGVyIGlzIGl0IHhyZWYnZCBhcyBhbiBv cHRpb24gYCpjaGVjay14cmVmLXZhci13LXN0YXIqJy4KSG93ZXZlciwgdGhlIGN1cnJlbnQgdmFy aWFibGUgYGNoZWNrLXhyZWYtdmFyLW5vLXN0YXInIGlzIHhyZWYnZC4KTGlrZXdpc2UsIGl0IGlz IGFsc28geHJlZidkIGFzIHRoZSBvcHRpb24gYGNoZWNrLXhyZWYtdmFyLW5vLXN0YXInLiIpCgoo ZGVmdmFyICpjaGVjay14cmVmLXZhci13LXN0YXIqICdub3QteHJlZmQtaW4tZG9jc3RyaW5ncwog ICJBIHRlc3QgZm9yIHhyZWYnaW5nIHN0YXIgcHJlZml4ZWQgdmFyaWFibGVzIGluIGRvY3N0cmlu Z3MuXG4KU3RhciBwcmVmaXhlZCB2YXJpYWJsZXMgaGF2ZSB0aGUgZm9ybTpcbgogKjxTT01FLVZB Ui1OQU1FPipcbgp0aGVzZSBkbyBub3QgYXBwZWFyIHdpdGggeHJlZnMgaW4gZG9jc3RyaW5ncy5c bgpUaGlzIGlzIGFzIGNvbnRyYXN0ZWQgd2l0aCBub24tc3RhciBwcmVmaXhlZCB2YXJpYWJsZXMg d2hpY2ggaGF2ZSB0aGUgZm9ybTpcbgogIDxTT01FLVZBUi1OQU1FPlxuCmFuZCB3aGljaCBkbyBh cHBlYXIgaW4geHJlZidkIGluIGRvY3N0cmluZ3Mgd2hlbiBwcmVjZWRlZCBieSBlaXRoZXIgb2Yg dGhlCmZvbGx3aW5nIHR3byB0b2tlbnM6XG4KIHsgdmFyaWFibGUgfCBvcHRpb24gfVxuCndoZXJl IHRoZSBzeW1ib2xlLW5hbWUgb2YgdGhlIHZhcmlhYmxlIGlzIGVuY2xvc2VkIHdpdGggYSBwcmVj ZWRpbmcgZ3JhdmUgY2hhciBgClwoQVNDSUkgOTZcKSBhbmQgZm9sbG93ZWQgYnkgYW4gYXBvc3Ry b3BoZSBjaGFyICcgKEFTQ0lJIDM5KSBlLmcuOlxuCiB2YXJpYWJsZSBgPFNPTUUtVkFSLU5BTUU+ Jwogb3B0aW9uIGA8U09NRS1WQVItTkFNRT4nXG4KRm9yIGV4YW1wbGUsIHRoaXMgdmFyaWFibGUg YGNoZWNrLXhyZWYtdmFyLW5vLXN0YXInIGlzIHhyZWYnZC4KTGlrZXdpc2UsIHRoZSBvcHRpb24g YGNoZWNrLXhyZWYtdmFyLW5vLXN0YXInIGlzIGFsc28geHJlZidkLgpXaGVyZWFzLCB0aGUgdmFy aWFibGUgYCpjaGVjay14cmVmLXZhci13LXN0YXIqJyBpcyBub3QgeHJlZidkLgpOZWl0aGVyIGlz IGl0IHhyZWYnZCBhcyBvcHRpb24gYCpjaGVjay14cmVmLXZhci13LXN0YXIqJy4iKQoKKGRlZnVu IGNoZWNrLXhyZWYtdGVzdC1mdW5jdGlvbiAoKQogICJUaGlzIGlzIGEgZG9jc3RyaW5nIHdoaWNo IHRlc3RzIHhyZWYnaW5nIG9mIHR3byBkaWZmZXJlbnRseSBuYW1lZCB2YXJpYWJsZXMuXG4KVGhl IGN1cnJlbnQgZnVuY3Rpb25zIGRvY3N0cmluZyBpbGx1c3RyYXRlcyB0aGUgcHJvYmxlbS5cbgpU aGlzIHN5bWJvbC1uYW1lIHdpbGwgYmUgeHJlZidkIGFzIHZhcmlhYmxlIGBjaGVjay14cmVmLXZh ci1uby1zdGFyJy5cbgpJdCB3aWxsIGFsc28gYmUgeHJlZidkIGFzIG9wdGlvbiBgY2hlY2steHJl Zi12YXItbm8tc3RhcicuXG4KV2hlcmVhcyBmb2xsb3dpbmcgc3ltYm9sLW5hbWUgaXMgbm90IHhy ZWYnZCBhcyB2YXJpYWJsZSBgKmNoZWNrLXhyZWYtdmFyLXctc3RhcionLApub3IgaXMgaXQgeHJl ZidkIGFzIG9wdGlvbiBgKmNoZWNrLXhyZWYtdmFyLXctc3RhcionLlxuClRoaXMgYmVoYXZpb3Vy IGNvbnN0aXR1dGVzIGEgYnVnLiBGb3IgYWRkaXRpb25hbCBkZXRhaWxlZCBpbGx1c3RyYXRpb24g b2YgdGhlCnByb2JsZW0gc2VlIHJldHVybiB2YWx1ZSBvZiBgY2hlY2steHJlZnMtdy1oZWxwLXZh cmlhYmxlLWRlZicuIgogIChkZXNjcmliZS1mdW5jdGlvbiAnY2hlY2steHJlZi10ZXN0LWZ1bmN0 aW9uKSkKCihkZWZ1biBjaGVjay14cmVmcy13LWhlbHAtdmFyaWFibGUtZGVmICgmb3B0aW9uYWwg dy10ZXN0LWZuY24gY250LXZhci1uYW1lKQogICJGaW5kIGhlbHAtdmFyaWFibGUtYnV0dG9uIHRl eHQtcHJvcGVydHkgdmFsdWVzIGluICpIZWxwKiBidWZmZXIuXG4KUmV0dXJuIGEgbGlzdCBvZiB0 ZXh0LXByb3BlcnRpZXMgYW5kIGJ1ZmZlciBsb2NhdGlvbnMgd2hlbiBidWZmZXIgaGFzCmEgYGNh dGVnb3J5YCB0ZXh0LXByb3BlcnR5IHdpdGggYSBwcm9wIHZhbHVlIGBoZWxwLXZhcmlhYmxlLWJ1 dHRvbmAuXG4KTGlzdCBjb250YWlucyBhIGNvdW50IG9mIHRoZSBudW1iZXIgb2YgdGltZXMgdGhl IHByb3BlcnR5IGBoZWxwLXZhcmlhYmxlLWJ1dHRvbmAKYXBwZWFycyBhbG9uZyB3aXRoIHRoZSBj b3VudCBvZiB0aGUgbnVtYmVyIG9mIHRpbWVzIGEgdmFyaWFibGUgbmFtZSBhcHBlYXJzIGluCnRo ZSBkb2N1bWVudGF0aW9uLlxuCldoZW4gVy1URVNULUZOQ04gaXMgbm9uLW5pbCBpdCBpcyBhIHN5 bW9sIG5hbWluZyBhIGRvY3VtZW50ZWQgZnVuY3Rpb24uCkRlZmF1bHQgaXMgYGNoZWNrLXhyZWYt dGVzdC1mdW5jdGlvbicuXG4KV2hlbiBDTlQtVkFSLU5BTUUgaXMgbm9uLW5pbCBjb3VudCB0aGUg bnVtYmVyIG9mIHRpbWVzIHN5bWJvbC1uYW1lIG1hdGNoZXMgdGhlCnJlZ2V4cCBcImA8Q05ULVZB Ui1OQU1FPidcIi4gCkRlZmF1bHQgaXMgdG8gY291bnQgbWF0Y2hlcyBmb3IgdGhlIHN5bWJvbCBg KmNoZWNrLXhyZWYtdmFyLXctc3RhcionLlxuCkJlZm9yZSByZXR1cm5pbmcgcG9wcy10by1idWZm ZXIgbmFtZWQgXCIqSGVscCpcIiBhbmQgdGhlbiB0byBidWZmZXIgbmFtZWQKXCIqQ0hFQ0stWFJF RlMtVy1IRUxQLVZBUklBQkxFLURFRipcIi5cbgo6RVhBTVBMRVxuXG5cKGNoZWNrLXhyZWZzLXct aGVscC12YXJpYWJsZS1kZWZcKVxuClwoY2hlY2steHJlZnMtdy1oZWxwLXZhcmlhYmxlLWRlZiAn aGVscC1tYWtlLXhyZWZzICdoZWxwLXhyZWYtc3ltYm9sLXJlZ2V4cFwpXG4KXChjaGVjay14cmVm cy13LWhlbHAtdmFyaWFibGUtZGVmICdoZWxwLW1ha2UteHJlZnMgJ2hlbHAtZm9yd2FyZC1sYWJl bFwpXG4iCiAgKGV2YWwtd2hlbi1jb21waWxlIChyZXF1aXJlICdjbCkgKHJlcXVpcmUgJ3BwKSkK ICAobGV0ICgoZ3Roci1wcm9wcykKICAgICAgICAoZ3Rocm5nIHQpKQogICAgKGlmIHctdGVzdC1m bmNuIAogICAgICAgIChkZXNjcmliZS1mdW5jdGlvbiB3LXRlc3QtZm5jbikKICAgICAgKGNoZWNr LXhyZWYtdGVzdC1mdW5jdGlvbikpCiAgICAod2l0aC1jdXJyZW50LWJ1ZmZlcgogICAgICAgIChn ZXQtYnVmZmVyICIqSGVscCoiKQogICAgICAoZ290by1jaGFyIChidWZmZXItZW5kIDApKQogICAg ICAod2hpbGUgZ3Rocm5nCiAgICAgICAgKHdoZW4gKGVxIChwb2ludCkgKGJ1ZmZlci1lbmQgMCkp CiAgICAgICAgICAoZ290by1jaGFyIChuZXh0LXNpbmdsZS1wcm9wZXJ0eS1jaGFuZ2UgKHBvaW50 KSAnYnV0dG9uKSkpCiAgICAgICAgKHVubGVzcyAobnVsbCAodGV4dC1wcm9wZXJ0aWVzLWF0IChw b2ludCkpKQogICAgICAgICAgKGxldCogKChwcm9wcy1oZXJlICh0ZXh0LXByb3BlcnRpZXMtYXQg KHBvaW50KSkpCiAgICAgICAgICAgICAgICAgKGNoay1odmIgKHBsaXN0LWdldCBwcm9wcy1oZXJl ICdjYXRlZ29yeSkpKQogICAgICAgICAgICAod2hlbiAoZXF1YWwgKHN5bWJvbC1uYW1lIGNoay1o dmIpICJoZWxwLXZhcmlhYmxlLWJ1dHRvbiIpCiAgICAgICAgICAgICAgKHB1c2ggYCg6YnV0dG9u LWZvdW5kLWF0ICwocG9pbnQpIDp3LXByb3BzICxwcm9wcy1oZXJlKSBndGhyLXByb3BzKSkKICAg ICAgICAgICAgKGlmIChlcSAobmV4dC1jaGFyLXByb3BlcnR5LWNoYW5nZSAocG9pbnQpKSAocG9p bnQpKQogICAgICAgICAgICAgICAgKHNldHEgZ3Rocm5nKQogICAgICAgICAgICAgIChwcm9nbiAo Z290by1jaGFyIChuZXh0LWNoYXItcHJvcGVydHktY2hhbmdlIChwb2ludCkpKQogICAgICAgICAg ICAgICAgICAgICAoaWYgKGVxIChuZXh0LWNoYXItcHJvcGVydHktY2hhbmdlIChwb2ludCkpIChw b2ludCkpCiAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBndGhybmcpCiAgICAgICAgICAg ICAgICAgICAgICAgKGxldCAoKGNoay1ueHQgKG5leHQtc2luZ2xlLXByb3BlcnR5LWNoYW5nZSAo cG9pbnQpICdidXR0b24pKSkKICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBjaGstbnh0CiAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdvdG8tY2hhciAobmV4dC1zaW5nbGUtcHJvcGVy dHktY2hhbmdlIChwb2ludCkgJ2J1dHRvbikpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIChz ZXRxIGd0aHJuZykpKSkpKSkpKQogICAgICAod2hlbiBndGhyLXByb3BzIChzZXRxIGd0aHItcHJv cHMgKG5yZXZlcnNlIGd0aHItcHJvcHMpKSkKICAgICAgKGxldCAoKGNudC1mbmQgMCkpCiAgICAg ICAgKGRvbGlzdCAoYmZhIGd0aHItcHJvcHMKICAgICAgICAgICAgICAgICAgICAgKHdoZW4gKD4g Y250LWZuZCAwKQogICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGd0aHItcHJvcHMKICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobmNvbmMgYCg6aGVscC12YXItYnRuLWZuZC1uLXRtcyAs Y250LWZuZCkgZ3Roci1wcm9wcykpKSkKICAgICAgICAgICh3aGVuIChlcXVhbCAoc3ltYm9sLW5h bWUgKHBsaXN0LWdldCAocGxpc3QtZ2V0IGJmYSA6dy1wcm9wcykgJ2NhdGVnb3J5KSkgCiAgICAg ICAgICAgICAgICAgICAgICAgImhlbHAtdmFyaWFibGUtYnV0dG9uIikKICAgICAgICAgICAgKGlu Y2YgY250LWZuZCkpKQogICAgICAgIChnb3RvLWNoYXIgKGJ1ZmZlci1lbmQgMCkpCiAgICAgICAg KHNldHEgY250LWZuZCAwKQogICAgICAgIChsZXQqICgoY2hrLXN0YXItc3ltIChvciBjbnQtdmFy LW5hbWUgJypjaGVjay14cmVmLXZhci13LXN0YXIqKSkKICAgICAgICAgICAgICAgKGNoay1zdGFy LXN0ciAoZm9ybWF0ICJgXCVzXCciIGNoay1zdGFyLXN5bSkpCiAgICAgICAgICAgICAgIChjaGst c3Rhci1mbmQgIChtYWtlLXN5bWJvbCAoZm9ybWF0ICI6aGVscC12YXItJXMtZm5kLW4tdG1zIiBj aGstc3Rhci1zeW0pKSkKICAgICAgICAgICAgICAgKGNoay1zdGFyLXNlZW4gKG1ha2Utc3ltYm9s IChmb3JtYXQgIjpoZWxwLXZhci0lcy1zZWVuLW4tdG1zIiBjaGstc3Rhci1zeW0pKSkpCiAgICAg ICAgICAod2hpbGUgKHNlYXJjaC1mb3J3YXJkLXJlZ2V4cCBjaGstc3Rhci1zdHIgbmlsIHQpCiAg ICAgICAgICAgIChpbmNmIGNudC1mbmQpKQogICAgICAgICAgKGlmICg+IGNudC1mbmQgMCkKICAg ICAgICAgICAgICAocHJvZ24KICAgICAgICAgICAgICAgIChzZXRxIGd0aHJuZyAwKQogICAgICAg ICAgICAgICAgKGRvbGlzdCAoYmZhIChpZiAoZXEgKGNhciBndGhyLXByb3BzKSA6aGVscC12YXIt YnRuLWZuZC1uLXRtcykgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjZGRyIGd0 aHItcHJvcHMpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndGhyLXByb3BzKQogICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGd0aHJuZykKICAgICAgICAgICAgICAgICAgKHdoZW4g KGVxdWFsIChzeW1ib2wtbmFtZSAoY2FyIChwbGlzdC1nZXQgKHBsaXN0LWdldCBiZmEgOnctcHJv cHMpICdoZWxwLWFyZ3MpKSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzeW1ib2wt bmFtZSBjaGstc3Rhci1zeW0pKQogICAgICAgICAgICAgICAgICAgIChpbmNmIGd0aHJuZykpKQog ICAgICAgICAgICAgICAgKHNldHEgZ3Roci1wcm9wcyAKICAgICAgICAgICAgICAgICAgICAgIChu Y29uYyBgKCxjaGstc3Rhci1mbmQgLGNudC1mbmQgLGNoay1zdGFyLXNlZW4gLChvciBndGhybmcg MCkpIGd0aHItcHJvcHMpKSkKICAgICAgICAgICAgKHNldHEgZ3Roci1wcm9wcyAKICAgICAgICAg ICAgICAgICAgKG5jb25jIGAoLGNoay1zdGFyLWZuZCAwICxjaGstc3Rhci1zZWVuICwob3IgZ3Ro cm5nIDApKSBndGhyLXByb3BzKSkpKSkpCiAgICAobGV0ICgocHAtcnRuLWJmciAiKkNIRUNLLVhS RUZTLVctSEVMUC1WQVJJQUJMRS1ERUYqIikpCiAgICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIChn ZXQtYnVmZmVyLWNyZWF0ZSBwcC1ydG4tYmZyKQogICAgICAgIChlcmFzZS1idWZmZXIpKQogICAg ICAocHAtZGlzcGxheS1leHByZXNzaW9uIChpZGVudGl0eSBndGhyLXByb3BzKSBwcC1ydG4tYmZy KQogICAgICAocG9wLXRvLWJ1ZmZlciAiKkhlbHAqIiB0KQogICAgICAocG9wLXRvLWJ1ZmZlciBw cC1ydG4tYmZyIHQpKQogICAgZ3Roci1wcm9wcykpCgo7OyA6Q0xFQU5VUAo7OyAoZG9saXN0ICh1 bmludCAnKGNoZWNrLXhyZWYtdmFyLW5vLXN0YXIKOzsgICAgICAgICAgICAgICAgICAqY2hlY2st eHJlZi12YXItdy1zdGFyKgo7OyAgICAgICAgICAgICAgICAgIGNoZWNrLXhyZWYtdGVzdC1mdW5j dGlvbgo7OyAgICAgICAgICAgICAgICAgIGNoZWNrLXhyZWZzLXctaGVscC12YXJpYWJsZS1kZWYK OzsgICAgICAgICAgICAgICAgICBoZWxwLXhyZWYtbW9kaWZ5LXN5bWJvbHMtc3ludGF4LXRhYmxl LVRFU1QKOzsgICAgICAgICAgICAgICAgICAqaGVscC14cmVmLWFzY2lpLXN5bWJvbC12YXJzLXJl Z2V4cCoKOzsgICAgICAgICAgICAgICAgICAqaGVscC14cmVmLWFzY2lpLXN5bWJvbC12YXJzKgo7 OyAgICAgICAgICAgICAgICAgICpoZWxwLXhyZWYtYXNjaWktc3ltYm9sLXZhcnMtdGVzdCopKQo7 OyAgIChtZXNzYWdlICJUaGUgY2hlY2steHJlZiBmbmNucyBhbmQgdmFycyB3ZXJlIHVuaW50ZXJu ZWQiKSkKCjs7OyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KOzs7IEVPRgo= --000e0cd6adee9e0a46048b3b6038-- From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 27 14:51:18 2020 Received: (at control) by debbugs.gnu.org; 27 Dec 2020 19:51:18 +0000 Received: from localhost ([127.0.0.1]:33582 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ktc4T-0001zt-LN for submit@debbugs.gnu.org; Sun, 27 Dec 2020 14:51:18 -0500 Received: from mail-wr1-f46.google.com ([209.85.221.46]:43872) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ktc4S-0001za-CM for control@debbugs.gnu.org; Sun, 27 Dec 2020 14:51:17 -0500 Received: by mail-wr1-f46.google.com with SMTP id y17so8769474wrr.10 for ; Sun, 27 Dec 2020 11:51:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tcd-ie.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:references:date:message-id:user-agent :mime-version; bh=v4B2kSgf0eQf4bEvi5kmTOdzFsjQ+q0lt0/Temd5qOQ=; b=xWJCSN2bBoVDPCHNP3i16R6q63I0hfx+yO3nwj0rYFQIL2bL3KpaH9jvxRNMbnCoUE wzz3ZeVNjQBWKRuaYzykfPpmP6CfSHLkSu5BTbPmLB6CKw7NpiZEKwnjliDSU9LRVFnq 6MoJLMhtZhK94wiK2VXKFVRs1Wg0GKQ6VzCKaOd6iCUGvAb9f1ZJAjBv1Mssg7aYcwve saUHXJ0ZTQ5KbbL/pjpoSSOh5pWIUbY9dfsZb9c1M+QVVKSSXGBsLmaJXjNR91/8OqjE yr5Nll/TEmmHVZVukxYVH1MOUnAdavu44J6W46xP7WXRvb9ryvC9C0ytUp8rgOjdP11r Ou2Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:message-id :user-agent:mime-version; bh=v4B2kSgf0eQf4bEvi5kmTOdzFsjQ+q0lt0/Temd5qOQ=; b=MDIhoJIi49QDx5RHsJE0maDoqEam+HJ+DkISr6cqP1L8e95Q45TOWd7ducxmqkpqTu GkTb2lI6QkooVpwKzmVG8ToADZ2PJOPzgAysPjF0JqCxL7SLdM8X4wey63vtjJyVxOje sOw1l1A0WvdaNxalMndnUFnZWEpPHvxu6ss+Ncny7erQ/+AClL0Q42Wzitm9HrUt+BCh PtTN95XFeW+XwnlufBByD/I2iBhSxLxkWnHTcmvIehDN5eplNMftp1ctKYJKQiWel0VK kOT5A8+CMfWZe5nX6hh2akN8x1WuOTH+qHFj/BkUpJZ2kclXXygw5MFFWeLHevBR7eO1 0qNA== X-Gm-Message-State: AOAM533NVGKX+9ds40azRuM+Y33n8Pq28NKHo83B7PTQLe5MzbU/vlCw Oq+Q8XS/rfQYKe3+hwfNTkbVFA== X-Google-Smtp-Source: ABdhPJx+tvPCF7DN9xAkUi5/H9cosTFwdZoGSZ2BwL3N/1PGBSS/mIXNpE1lccDFdErCGWxcXHNdjg== X-Received: by 2002:adf:aad3:: with SMTP id i19mr47368142wrc.119.1609098670451; Sun, 27 Dec 2020 11:51:10 -0800 (PST) Received: from localhost ([51.37.13.75]) by smtp.gmail.com with ESMTPSA id o83sm16354402wme.21.2020.12.27.11.51.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Dec 2020 11:51:09 -0800 (PST) From: "Basil L. Contovounesios" To: Stefan Kangas Subject: Re: bug#24309: 25.1; Problem in variable reference in docstrings. References: <87poowfnxh.fsf@reisefreund.localdomain> <83vayndi3p.fsf@gnu.org> <877e4bvxj0.fsf@marxist.se> Date: Sun, 27 Dec 2020 19:51:08 +0000 Message-ID: <877dp3rpsj.fsf@tcd.ie> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: control Cc: Nathanael Schweers , Eli Zaretskii , 24309@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) --=-=-= Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable forcemerge 24309 6601 tags 24309 - wontfix tags 24309 + patch quit Stefan Kangas writes: > Eli Zaretskii writes: > >>> From: Nathanael Schweers >>> Date: Fri, 26 Aug 2016 01:07:06 +0200 >>>=20 >>>=20 >>> This bug applies to both the version given in the description >>> (i.e. 25.1-RC2) and version 24.5 distributed on fedora. >> >> Actually, Emacs has behaved like that since creation of hyper-links to >> quoted symbols in doc strings was introduced in Emacs 20.3. >> >>> - Start Emacs with =E2=80=9Cemacs -Q=E2=80=9D. >>> - evaluate these forms: >>> (defvar var "var" "docstring of var") >>> (defvar var* "var*" "docstring of var*") >>> (defvar *var "*var" "docstring of *var") >>> (defvar *var* "*var*" "docstring of *var*") >>>=20 >>> (defun fun0 () "see variable =E2=80=98var=E2=80=99." var) >>> (defun fun1 () "see var*iable =E2=80=98var*=E2=80=99." var*) >>> (defun fun2 () "see *variable =E2=80=98*var=E2=80=99." *var) >>> (defun fun3 () "see *var*iable =E2=80=98*var*=E2=80=99." *var*) >>> - See the docstrings of the defined functions. For fun0 and fun1 the >>> reference to the variable is correct, for fun2 and fun3 they are not. >> >> See help-xref-symbol-regexp, it requires that the first character >> after the opening quote has the word syntax, not the symbol syntax. I >> don't know why is that, perhaps to avoid too many false positives or >> something. The comment there says this was done deliberately. > > That was three years ago, and this discussion has seen no further > replies. I take the above to mean that we don't want to change the > current behaviour, and I'm therefore closing this bug. > > If anyone feels that this is indeed something we would like to > reconsider, please reopen the bug report. I would like valid symbol names to be recognised more reliably, and I don't see why allowing xrefs to start with symbol syntax would lead to too many false positives, so long as help-make-xrefs filters matches appropriately. My personal motivation is that I would like functions from the Dash package (that start with hyphens), as well as built-in arithmetic operators, hyperlinked in Help buffers. The attached patch matches quoted symbol names with one or more characters starting with either word or symbol syntax in Lisp docstrings and Help buffers. WDYT? Thanks, --=20 Basil --=-=-= Content-Type: text/x-diff; charset=utf-8 Content-Disposition: inline; filename=0001-Hyperlink-symbol-names-without-word-syntax-in-Help.patch Content-Transfer-Encoding: quoted-printable >From 90213663582a9be9853209a49b2a9f977ead48c8 Mon Sep 17 00:00:00 2001 From: "Basil L. Contovounesios" Date: Sun, 27 Dec 2020 14:21:50 +0000 Subject: [PATCH] Hyperlink symbol names without word syntax in Help * lisp/emacs-lisp/lisp-mode.el (lisp-el-font-lock-keywords-2) (lisp-cl-font-lock-keywords-2): Allow single-character symbol names. * lisp/help-mode.el (help-xref-symbol-regexp): Also match symbol names starting with symbol syntax (bug#6601, bug#24309). * test/lisp/help-mode-tests.el (help-mode-tests-xref-button): Test hyperlink creation for function names without symbol syntax. --- lisp/emacs-lisp/lisp-mode.el | 6 ++---- lisp/help-mode.el | 3 +-- test/lisp/help-mode-tests.el | 22 ++++++++++++++-------- 3 files changed, 17 insertions(+), 14 deletions(-) diff --git a/lisp/emacs-lisp/lisp-mode.el b/lisp/emacs-lisp/lisp-mode.el index e477ef1700..85309b3501 100644 --- a/lisp/emacs-lisp/lisp-mode.el +++ b/lisp/emacs-lisp/lisp-mode.el @@ -456,8 +456,7 @@ lisp--match-confusable-symbol-character ("\\(\\\\\\)\\([^\"\\]\\)" (1 (elisp--font-lock-backslash) prepend)) ;; Words inside =E2=80=98=E2=80=99 and `' tend to be symbol names. - (,(concat "[`=E2=80=98]\\(\\(?:\\sw\\|\\s_\\|\\\\.\\)" - lisp-mode-symbol-regexp "\\)['=E2=80=99]") + (,(concat "[`=E2=80=98]\\(" lisp-mode-symbol-regexp "\\)['=E2=80= =99]") (1 font-lock-constant-face prepend)) ;; Constant values. (,(concat "\\_<:" lisp-mode-symbol-regexp "\\_>") @@ -507,8 +506,7 @@ lisp--match-confusable-symbol-character (,(concat "(" cl-errs-re "\\_>") (1 font-lock-warning-face)) ;; Words inside =E2=80=98=E2=80=99 and `' tend to be symbol names. - (,(concat "[`=E2=80=98]\\(\\(?:\\sw\\|\\s_\\|\\\\.\\)" - lisp-mode-symbol-regexp "\\)['=E2=80=99]") + (,(concat "[`=E2=80=98]\\(" lisp-mode-symbol-regexp "\\)['=E2=80= =99]") (1 font-lock-constant-face prepend)) ;; Uninterned symbols, e.g., (defpackage #:my-package ...) ;; must come before keywords below to have effect diff --git a/lisp/help-mode.el b/lisp/help-mode.el index 025a67016b..e99df4a971 100644 --- a/lisp/help-mode.el +++ b/lisp/help-mode.el @@ -357,8 +357,7 @@ help-xref-symbol-regexp "\\(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]")) + "['`=E2=80=98]\\(\\(?:\\sw\\|\\s_\\)+\\|`\\)['=E2=80= =99]")) "Regexp matching doc string references to symbols. =20 The words preceding the quoted symbol can be used in doc strings to diff --git a/test/lisp/help-mode-tests.el b/test/lisp/help-mode-tests.el index 2b9552a8d8..016f4d4965 100644 --- a/test/lisp/help-mode-tests.el +++ b/test/lisp/help-mode-tests.el @@ -72,14 +72,20 @@ help-mode-tests-make-xrefs #'info))))) =20 (ert-deftest help-mode-tests-xref-button () - (with-temp-buffer - (insert "See also the function =E2=80=98interactive=E2=80=99.") - (string-match help-xref-symbol-regexp (buffer-string)) - (help-xref-button 8 'help-function) - (should-not (button-at 22)) - (should-not (button-at 35)) - (let ((button (button-at 30))) - (should (eq (button-type button) 'help-function))))) + (let* ((fmt "See also the function =E2=80=98%s=E2=80=99.") + ;; 1+ translates string index to buffer position. + (beg (1+ (string-search "%" fmt)))) + (with-temp-buffer + ;; (display-buffer (current-buffer)) + (dolist (fn '(interactive \` =3D + - * / %)) + (erase-buffer) + (insert (format fmt fn)) + (goto-char (point-min)) + (re-search-forward help-xref-symbol-regexp) + (help-xref-button 8 'help-function) + (should-not (button-at (1- beg))) + (should-not (button-at (+ beg (length (symbol-name fn))))) + (should (eq (button-type (button-at beg)) 'help-function)))))) =20 (ert-deftest help-mode-tests-insert-xref-button () (with-temp-buffer --=20 2.29.2 --=-=-=-- From unknown Tue Jun 24 05:09:07 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: Did not alter fixed versions and reopened. Date: Sun, 27 Dec 2020 19:56:02 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # Did not alter fixed versions and reopened. thanks # This fakemail brought to you by your local debbugs # administrator From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 27 14:55:49 2020 Received: (at control) by debbugs.gnu.org; 27 Dec 2020 19:55:49 +0000 Received: from localhost ([127.0.0.1]:33590 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ktc8r-00026r-1U for submit@debbugs.gnu.org; Sun, 27 Dec 2020 14:55:49 -0500 Received: from mail-wm1-f42.google.com ([209.85.128.42]:38575) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ktc8q-00026e-37 for control@debbugs.gnu.org; Sun, 27 Dec 2020 14:55:48 -0500 Received: by mail-wm1-f42.google.com with SMTP id g185so7538748wmf.3 for ; Sun, 27 Dec 2020 11:55:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tcd-ie.20150623.gappssmtp.com; s=20150623; h=message-id:date:to:from:subject; bh=ytXJ9wBeKiF7t5eETG8dsaRKjOxBDzh2v/Y2SKIrnRo=; b=JuIn7Ex2s6w8H98+xxdrQjfSdlukyMy19MyI+eLJXfZ7MTlqrLQKq0h5/JZc2176sM RdrcEllC0AAuuHbgnvORfNjvwdOLB2nqvOLG1RD5iI6KwYgIZYp4pv98fjEDjyeo+cqT SlckYzsmBt0MYoTpJ2zRzMmTI5TVKuVSHuNbNRhaNOVYd2LePiDIQ9eUHWHGVXPkCRwK H2FFy1RzUqy1gzEnQ+5bLi8BPWvye+qigpaOYPyCwKsWTDD+xraq96E3xEnpLYmpZpm0 VTnvNPeR8cYZ79Ds1HARKXG9eymO6+sSnF+biqhZrmyeuEAbZY2XqgJvJsUcuTqArazx JA/A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:message-id:date:to:from:subject; bh=ytXJ9wBeKiF7t5eETG8dsaRKjOxBDzh2v/Y2SKIrnRo=; b=oFvJ8AyiE7Skl60ldSXmHb6PFQYMjVecZEUh1txF/VIamuqVmDGbAiywYGxibDRB8C xMyoExlpSHe31RcqyV3Dj3sobCWO8/OuFud07qujjGvsXT2OOb3B7KEA13Flo2nE3ncQ gLu5kkVbGVz6qYoIVGGQ9p1C9nTe13UQYYV2lj/aZZZmatmm4KukOIzNdSwWS/UaJ0+/ rX83WK0mlZvPOjY8YNNSNdtMSN+Ug0mGrDQ7kttcA+J854ilNMsuy6zKjKu49phmxKdW zERPw769FYAdJrCc8LFPdApN008fjbn72cYjrTKrxZeBKupxDuQ7Fitv4S28NbwExa20 duIw== X-Gm-Message-State: AOAM533pDCuu3N6BLWCawGgjVjwgXVdVQ8mrGIVPoe3Gh4qvVJVDFHMU ul/r0XCw1r04GJy3r/F8UL+pci8QCfjdxg== X-Google-Smtp-Source: ABdhPJzBzNCNmKSYRr4GcWa4j8R+7Go71B+OoXNTgzK+/Rtt1/S2CoCsbfVLSiDcyXJTcvnVO/pWFA== X-Received: by 2002:a1c:630b:: with SMTP id x11mr17374666wmb.138.1609098941832; Sun, 27 Dec 2020 11:55:41 -0800 (PST) Received: from localhost ([51.37.13.75]) by smtp.gmail.com with ESMTPSA id i7sm54163415wrv.12.2020.12.27.11.55.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Dec 2020 11:55:41 -0800 (PST) Message-ID: <5fe8e6bd.1c69fb81.50781.b69a@mx.google.com> Date: Sun, 27 Dec 2020 19:55:40 +0000 To: control@debbugs.gnu.org From: "Basil L. Contovounesios" Subject: control message for bug #24309 X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) reopen 24309 tags 24309 - fixed patch quit From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 27 14:56:49 2020 Received: (at control) by debbugs.gnu.org; 27 Dec 2020 19:56:49 +0000 Received: from localhost ([127.0.0.1]:33595 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ktc9p-00028l-BJ for submit@debbugs.gnu.org; Sun, 27 Dec 2020 14:56:49 -0500 Received: from mail-wr1-f52.google.com ([209.85.221.52]:44255) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1ktc9n-00028W-R1 for control@debbugs.gnu.org; Sun, 27 Dec 2020 14:56:48 -0500 Received: by mail-wr1-f52.google.com with SMTP id w5so8775762wrm.11 for ; Sun, 27 Dec 2020 11:56:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tcd-ie.20150623.gappssmtp.com; s=20150623; h=from:to:subject:date:message-id:mime-version; bh=7PL38z3qY+mdQP3T0Nc8vuo526E0gOs7yWFmHGQ54Ts=; b=w46/c/8RnD5Tov8DLO4oxwK9fBvpqiGUjo5SBPotFKTCEclGpV8hBKr3x8dIkXRD+Q ybe1/KcfbzhKSlWhxSB012pJj/eg8q3akIBAxrVNncd65ZCRn3HpEbZN8zQiFPA93hAA 5aKHrmi81IzkkCsYTYq2nBHXHL9DaqgUq69mz4UGccJn6n/RiuBDiRPBkxqCtFOYmvke 2LntFXQ0FunZe2UDP48eX7F+6gQF4ik/b8Y4lcvNJV86v21LgM7Md5j/s+BOW8NThsNT OieXEMn31pDApxrL1DNTXlSrJP73y1B8KVz9r+0zZtPabIaiYpB3i1pdftL213zCWPu1 IThw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id:mime-version; bh=7PL38z3qY+mdQP3T0Nc8vuo526E0gOs7yWFmHGQ54Ts=; b=fSz2Gu/9M4+nh/CtGkmCFwjErrf7/Nu0CDG8/9JW3Dp9NN1RyNF4UzMp5enIqYq55t 0Tr3+bKCApkuugWtQ1pXIWR1WpPEbrf4RPX3L1MT4kE3mwlGZxCkvVRVkIxcPZ54yBAg qISt5GfrMKROj6yQVwCRpAXhR3egsDSuiX+Y5aySmo+ycgLbV8irHjG21qGMVuLgR5gK ENrobb8vhakS0CH3bQ8JSZNL0FW3gWc8USVywYWw6OFKTlllkM0uWhMB3zh++2inpf9J /QX64HHELxh+i0wIuGUWiWwv7/LYmB2NBx9z6BVkXE1y+AOxKrgck8vDf0R77aIQRwYk G37g== X-Gm-Message-State: AOAM5302SSiY4VVeUIX9+idoEf47b9IJESgCtYqJJp7nm7TzOC69klJG WeQNKs4YyRCPp5ujt6+s3rWAPn4vKZnYjQ== X-Google-Smtp-Source: ABdhPJwnNvwsFutpLSwU4cCgOUMj4ZF9sj4aVVdAYKUbJZcLQdpaZsgA4zkTT5AEamEkg2k4pizJ7A== X-Received: by 2002:a5d:4307:: with SMTP id h7mr48432548wrq.353.1609099001731; Sun, 27 Dec 2020 11:56:41 -0800 (PST) Received: from localhost ([51.37.13.75]) by smtp.gmail.com with ESMTPSA id o7sm53380094wrw.62.2020.12.27.11.56.40 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 27 Dec 2020 11:56:41 -0800 (PST) From: "Basil L. Contovounesios" To: control@debbugs.gnu.org Subject: control message for bug #24309 Date: Sun, 27 Dec 2020 19:56:40 +0000 Message-ID: <87v9cnqayv.fsf@tcd.ie> MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) tags 24309 + patch quit From debbugs-submit-bounces@debbugs.gnu.org Sun Jan 10 08:50:19 2021 Received: (at control) by debbugs.gnu.org; 10 Jan 2021 13:50:19 +0000 Received: from localhost ([127.0.0.1]:53478 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kyb6p-0003kf-1C for submit@debbugs.gnu.org; Sun, 10 Jan 2021 08:50:19 -0500 Received: from mail-wr1-f44.google.com ([209.85.221.44]:45377) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kyb6m-0003k9-LD for control@debbugs.gnu.org; Sun, 10 Jan 2021 08:50:17 -0500 Received: by mail-wr1-f44.google.com with SMTP id d26so13613055wrb.12 for ; Sun, 10 Jan 2021 05:50:16 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tcd-ie.20150623.gappssmtp.com; s=20150623; h=from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version; bh=RuHHUqUzFm8WAsxm1UIofn/8Ovo2XFxHIeuAgQZFR+w=; b=OGEpKmLlvu96a7LKOG3vQUJgioOiPqFjNqSGM2oV8AWZuzex1ABMmvABRjjsWSvj9Z FLh+TD+Fydb49fJCPC924kRwR2kO0AVPjLhTilMRycFj1Dtvkbm3LwLf0H6ctaRn6EHz Ewst0jRJSVsyCw7PiX2W3Jo8iEbU80YYw6jxNvyKMO1JsUVsap2b2KJhcrdKIUv0rJhK MNmnbBTYLlcaxI8Eqd3Sk1UOOxxmN0AJZlSy9uXcQE5X7mtkLXfl72ChScRG5hS7PcW8 XMBxuEStf8o67fhCWUOW7/7t4y9mzqAmhdgnhudnc1c28zTp7H+ZdDPA/zA4jHlktHDm tBxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:references:date:in-reply-to :message-id:user-agent:mime-version; bh=RuHHUqUzFm8WAsxm1UIofn/8Ovo2XFxHIeuAgQZFR+w=; b=VMJ9GOgQGYKlu7Chd6h7fT9hVGhC7fqHJYdPSFjadI57R3exOzncgMiLSFok50mead ov5E3FjYmu0iZY1RqzOdCKx7kogxZJn9Pq+Q9Nuu8MM0B8aA8PVmVySCLA4nhvSZd1b9 7N0RnityPZu75NQhX2DkGPo+z0pSwhTo+jaLQy7UNYY/ttyZMTRIvMQOAuGQ9hVHtCz+ ibcxw9YaDw2qzSL20iSjSadKWCTBaIdX6qvbsiDQHim6pYuRPQwWSSWQYw/5y882ocpp NTZkcNFT5x99Ki+qd+lYz7yCMp4hdteQH5cOvDK30MJ54t23XY17mNP0Ai7/J0yKAGgW PfUQ== X-Gm-Message-State: AOAM532rhKMs/t7y7eiIluYOXBTX6k36qs6OhnYcOfPY1lc4QsJNMTbc OMJ+Wz8citC3ZecB/UuO7EGZHw== X-Google-Smtp-Source: ABdhPJyeofLEnPxPPefxYv/YDwpz/vjQEBSj3NntL5JIV+f6lX4LkSTfZeLqZdum3WLloxNEUdelgg== X-Received: by 2002:a5d:67c3:: with SMTP id n3mr12160487wrw.297.1610286610819; Sun, 10 Jan 2021 05:50:10 -0800 (PST) Received: from localhost ([2a02:8084:20e2:c380:f410:82e8:3a21:eedf]) by smtp.gmail.com with ESMTPSA id c10sm21255267wrb.92.2021.01.10.05.50.09 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sun, 10 Jan 2021 05:50:10 -0800 (PST) From: "Basil L. Contovounesios" To: Lars Ingebrigtsen Subject: Re: bug#24309: 25.1; Problem in variable reference in docstrings. References: <87poowfnxh.fsf@reisefreund.localdomain> <83vayndi3p.fsf@gnu.org> <877e4bvxj0.fsf@marxist.se> <877dp3rpsj.fsf@tcd.ie> <8735zq99pi.fsf@gnus.org> Date: Sun, 10 Jan 2021 13:50:08 +0000 In-Reply-To: <8735zq99pi.fsf@gnus.org> (Lars Ingebrigtsen's message of "Sun, 27 Dec 2020 23:15:53 +0100") Message-ID: <87im84x5nz.fsf@tcd.ie> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: control Cc: Nathanael Schweers , Stefan Kangas , 24309-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) tags 24309 fixed close 24309 28.1 quit Lars Ingebrigtsen writes: > "Basil L. Contovounesios" writes: > >> My personal motivation is that I would like functions from the Dash >> package (that start with hyphens), as well as built-in arithmetic >> operators, hyperlinked in Help buffers. >> >> The attached patch matches quoted symbol names with one or more >> characters starting with either word or symbol syntax in Lisp docstrings >> and Help buffers. WDYT? > > Makes sense to me. Thanks, pushed to master. Hyperlink symbol names without word syntax in Help 25dadca0d1 2021-01-10 13:37:38 +0000 https://git.savannah.gnu.org/cgit/emacs.git/commit/?id=25dadca0d175aa7f9f1654314f90af64cdcb68fd -- Basil From unknown Tue Jun 24 05:09:07 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Mon, 08 Feb 2021 12:24:03 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator