GNU bug report logs - #6601
help-make-xref doesn't buttonize `help-variable-def' and per `help-xref-symbol-regexp'

Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.

Package: emacs; Reported by: MON KEY <monkey@HIDDEN>; dated Sat, 10 Jul 2010 01:10:02 UTC; Maintainer for emacs is bug-gnu-emacs@HIDDEN.

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


Received: (at 6601) by debbugs.gnu.org; 13 Jul 2010 02:10:46 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Mon Jul 12 22:10:46 2010
Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.69)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1OYUxJ-0005aM-LK
	for submit <at> 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 <stan@HIDDEN>) id 1OYUxH-0005aG-72
	for 6601 <at> debbugs.gnu.org; Mon, 12 Jul 2010 22:10:43 -0400
Received: by gxk3 with SMTP id 3so2975278gxk.3
	for <6601 <at> 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: <AANLkTikAF4mwFnOm_j-zWOYQbKQMNpTvav3beS2cCJBL@HIDDEN>
Subject: help-make-xref doesn't buttonize `help-variable-def' and per 
	`help-xref-symbol-regexp'
From: MON KEY <monkey@HIDDEN>
To: 6601 <at> debbugs.gnu.org
Content-Type: multipart/mixed; boundary=000e0cd6adee9e0a46048b3b6038
X-Spam-Score: -1.6 (-)
X-Debbugs-Envelope-To: 6601
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <http://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
	<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <http://debbugs.gnu.org/pipermail/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: <http://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
	<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Sender: debbugs-submit-bounces <at> debbugs.gnu.org
Errors-To: debbugs-submit-bounces <at> 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>'" "`<lesser-var<'"
    "`>meow-var<'" "`<entity-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 <LENGTH-OF-LIST-TESTED>
  :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--




Information forwarded to owner <at> debbugs.gnu.org, bug-gnu-emacs@HIDDEN:
bug#6601; Package emacs. Full text available.

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


Received: (at submit) by debbugs.gnu.org; 10 Jul 2010 01:09:36 +0000
From debbugs-submit-bounces <at> debbugs.gnu.org Fri Jul 09 21:09:36 2010
Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.69)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1OXOZT-0000jC-NJ
	for submit <at> 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 <stan@HIDDEN>) id 1OXOZR-0000j7-FQ
	for submit <at> 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 <stan@HIDDEN>) id 1OXOZN-0003lx-Tp
	for submit <at> 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@HIDDEN; 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 <stan@HIDDEN>) id 1OXOZK-0003wX-BS
	for bug-gnu-emacs@HIDDEN; 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 <stan@HIDDEN>) id 1OXOZK-0003wQ-2a
	for bug-gnu-emacs@HIDDEN; Fri, 09 Jul 2010 21:09:26 -0400
Received: by gyf1 with SMTP id 1so2105417gyf.0
	for <bug-gnu-emacs@HIDDEN>; 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: <AANLkTinM81mQYohgftEQ0UER_KkmBsPTDEG1Mbjr34f6@HIDDEN>
Subject: help-make-xref doesn't buttonize `help-variable-def' and per 
	`help-xref-symbol-regexp'
From: MON KEY <monkey@HIDDEN>
To: bug-gnu-emacs@HIDDEN
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 <at> debbugs.gnu.org
X-Mailman-Version: 2.1.11
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <http://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>,
	<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <http://debbugs.gnu.org/pipermail/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: <http://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>,
	<mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Sender: debbugs-submit-bounces <at> debbugs.gnu.org
Errors-To: debbugs-submit-bounces <at> 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
 <SOME-VAR-NAME>\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 `<SOME-VAR-NAME>'
 option `<SOME-VAR-NAME>'\n
This is as contrasted with star prefixed variables which have the form:\n
 *<SOME-VAR-NAME>*\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
 *<SOME-VAR-NAME>*\n
these do not appear with xrefs in docstrings.\n
This is as contrasted with non-star prefixed variables which have the form:\n
  <SOME-VAR-NAME>\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 `<SOME-VAR-NAME>'
 option `<SOME-VAR-NAME>'\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 \"`<CNT-VAR-NAME>'\".
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--




Acknowledgement sent to MON KEY <monkey@HIDDEN>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs@HIDDEN. Full text available.
Report forwarded to owner <at> debbugs.gnu.org, bug-gnu-emacs@HIDDEN:
bug#6601; Package emacs. Full text available.
Please note: This is a static page, with minimal formatting, updated once a day.
Click here to see this page with the latest information and nicer formatting.
Last modified: Fri, 31 Oct 2014 17:00:04 UTC

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