From unknown Mon Jun 16 23:35:33 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#16079 <16079@debbugs.gnu.org> To: bug#16079 <16079@debbugs.gnu.org> Subject: Status: `ruby-forward-string' chokes on caret delimiters (PATCH) Reply-To: bug#16079 <16079@debbugs.gnu.org> Date: Tue, 17 Jun 2025 06:35:33 +0000 retitle 16079 `ruby-forward-string' chokes on caret delimiters (PATCH) reassign 16079 emacs submitter 16079 Cameron Desautels severity 16079 normal tag 16079 patch thanks From debbugs-submit-bounces@debbugs.gnu.org Fri Dec 06 12:33:31 2013 Received: (at submit) by debbugs.gnu.org; 6 Dec 2013 17:33:31 +0000 Received: from localhost ([127.0.0.1]:34444 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1VozHO-0000ek-CM for submit@debbugs.gnu.org; Fri, 06 Dec 2013 12:33:30 -0500 Received: from eggs.gnu.org ([208.118.235.92]:45948) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1VozHL-0000eb-Lw for submit@debbugs.gnu.org; Fri, 06 Dec 2013 12:33:28 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VozHJ-00057R-Tn for submit@debbugs.gnu.org; Fri, 06 Dec 2013 12:33:27 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:48937) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VozHJ-00057L-Re for submit@debbugs.gnu.org; Fri, 06 Dec 2013 12:33:25 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:47646) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VozHI-0007Zd-Bu for bug-gnu-emacs@gnu.org; Fri, 06 Dec 2013 12:33:25 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VozHH-00056d-6M for bug-gnu-emacs@gnu.org; Fri, 06 Dec 2013 12:33:24 -0500 Received: from mail-bk0-x22d.google.com ([2a00:1450:4008:c01::22d]:63497) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VozHG-00055W-Kr for bug-gnu-emacs@gnu.org; Fri, 06 Dec 2013 12:33:22 -0500 Received: by mail-bk0-f45.google.com with SMTP id mx13so409288bkb.4 for ; Fri, 06 Dec 2013 09:33:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=lYKwcr3Oe5foHbYG+dMMHtkWic+bNLTu7zQZln7JkRY=; b=P5e44Wkpo5X1BWjGn+9Hg/ZuYpPeC2obYbyi4Emd/zWw87xZZanlwoHMheUjkEwaWV QyKhzfmpaZCA0ExLa4wYAI4h6r7nHM9Y7GJCs/3xM4NtX4KcAGED7b8cumCkE4cGrWDH a1fQrX/YJiex11p1KHCvU3WFv77Vd8qRYg1UCjph929o6ek6yKItoh/xGkstAxuw47XA nVagdPNl73jwxFgh7iHFxjoaS1gY9UpCcc/wMDKUYMe0fw9RsHwqegcmpWmRmQjiu1lq O7CH9py6pkB0R8KR2+1KLrtzo20IwE7QC0jxyeKkDS3gh+8qQBQer/IYr6XtHyWIVomv hb0A== MIME-Version: 1.0 X-Received: by 10.204.166.196 with SMTP id n4mr1537586bky.85.1386351201621; Fri, 06 Dec 2013 09:33:21 -0800 (PST) Received: by 10.205.26.197 with HTTP; Fri, 6 Dec 2013 09:33:21 -0800 (PST) Date: Fri, 6 Dec 2013 11:33:21 -0600 Message-ID: Subject: `ruby-forward-string' chokes on caret delimiters (PATCH) From: Cameron Desautels To: bug-gnu-emacs@gnu.org Content-Type: multipart/mixed; boundary=bcaec52e6449e84bf104ece10a9f X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 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: -4.0 (----) --bcaec52e6449e84bf104ece10a9f Content-Type: text/plain; charset=ISO-8859-1 `ruby-forward-string' is a function used to skip past strings in Ruby mode. Ruby supports using any non-alpha character following a "%" to delimit a string. All of the following are valid Ruby syntax: - %[foo bar] - %/foo bar/ - %%foo bar% - %^foo bar^ Currently ruby-mode can handle all of these except the last one, which yields the following: # Debugger entered--Lisp error: (invalid-regexp "Unmatched [ or [^") The root of the problem is the construction of the following invalid regexp: "[^]" (which is an incomplete negated character class). This bug manifests itself by breaking `ruby-parse-region' in any buffer containing a caret-delimited string. This breaks indentation, movement commands, and even keeps Emacs from building an Imenu. I've attached a patch which resolves the issue. Note that this patch builds on the test suite for `ruby-forward-string' that I included in issue #16078. -- Cameron Desautels --bcaec52e6449e84bf104ece10a9f Content-Type: text/plain; charset=US-ASCII; name="fix-ruby-forward-string.diff" Content-Disposition: attachment; filename="fix-ruby-forward-string.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hovpp89k0 KioqIGxpc3AvcHJvZ21vZGVzL3J1YnktbW9kZS5lbC5vcmlnCTIwMTMtMTItMDYgMTE6MTc6MDQu MDAwMDAwMDAwIC0wNjAwCi0tLSBsaXNwL3Byb2dtb2Rlcy9ydWJ5LW1vZGUuZWwgICAgIAkyMDEz LTEyLTA2IDExOjE2OjIxLjAwMDAwMDAwMCAtMDYwMAoqKioqKioqKioqKioqKioKKioqIDgwNyw4 MTUgKioqKgogIFRoaXMgY29tbWFuZCBhc3N1bWVzIHRoZSBjaGFyYWN0ZXIgYWZ0ZXIgcG9pbnQg aXMgYW4gb3BlbmluZwogIGRlbGltaXRlci4iCiAgICAobGV0ICgobiAxKSAoYyAoc3RyaW5nLXRv LWNoYXIgdGVybSkpCiEgICAgICAgICAocmUgKGlmIGV4cGFuZAohICAgICAgICAgICAgICAgICAo Y29uY2F0ICJbXlxcXVxcKFxcXFxcXFxcXFwpKlxcKFsiIHRlcm0gIl1cXHxcXCgje1xcKVxcKSIp CiEgICAgICAgICAgICAgICAoY29uY2F0ICJbXlxcXVxcKFxcXFxcXFxcXFwpKlsiIHRlcm0gIl0i KSkpKQogICAgICAod2hpbGUgKGFuZCAocmUtc2VhcmNoLWZvcndhcmQgcmUgZW5kIG5vLWVycm9y KQogICAgICAgICAgICAgICAgICAoaWYgKG1hdGNoLWJlZ2lubmluZyAzKQogICAgICAgICAgICAg ICAgICAgICAgKHJ1YnktZm9yd2FyZC1zdHJpbmcgIn17IiBlbmQgbm8tZXJyb3IgbmlsKQotLS0g ODA3LDgxOCAtLS0tCiAgVGhpcyBjb21tYW5kIGFzc3VtZXMgdGhlIGNoYXJhY3RlciBhZnRlciBw b2ludCBpcyBhbiBvcGVuaW5nCiAgZGVsaW1pdGVyLiIKICAgIChsZXQgKChuIDEpIChjIChzdHJp bmctdG8tY2hhciB0ZXJtKSkKISAgICAgICAgIChyZSAoY29uY2F0ICJbXlxcXVxcKFxcXFxcXFxc XFwpKlxcKCIKISAgICAgICAgICAgICAgICAgICAgIChpZiAoc3RyaW5nPSB0ZXJtICJeIikgO1te XSBpcyBub3QgYSB2YWxpZCByZWdleHAKISAgICAgICAgICAgICAgICAgICAgICAgICAiXFxeIgoh ICAgICAgICAgICAgICAgICAgICAgICAoY29uY2F0ICJbIiB0ZXJtICJdIikpCiEgICAgICAgICAg ICAgICAgICAgICAod2hlbiBleHBhbmQgIlxcfFxcKCN7XFwpIikKISAgICAgICAgICAgICAgICAg ICAgICJcXCkiKSkpCiAgICAgICh3aGlsZSAoYW5kIChyZS1zZWFyY2gtZm9yd2FyZCByZSBlbmQg bm8tZXJyb3IpCiAgICAgICAgICAgICAgICAgIChpZiAobWF0Y2gtYmVnaW5uaW5nIDMpCiAgICAg ICAgICAgICAgICAgICAgICAocnVieS1mb3J3YXJkLXN0cmluZyAifXsiIGVuZCBuby1lcnJvciBu aWwpCioqKiB0ZXN0L2F1dG9tYXRlZC9ydWJ5LW1vZGUtdGVzdHMuZWwub3JpZwkyMDEzLTEyLTA2 IDExOjE3OjA0LjAwMDAwMDAwMCAtMDYwMAotLS0gdGVzdC9hdXRvbWF0ZWQvcnVieS1tb2RlLXRl c3RzLmVsICAgICAJMjAxMy0xMi0wNiAxMToxNjoyMS4wMDAwMDAwMDAgLTA2MDAKKioqKioqKioq KioqKioqCioqKiA2NTgsNjY3ICoqKioKICAoZXJ0LWRlZnRlc3QgcnVieS1mb3J3YXJkLXN0cmlu Zy1hY2NlcHRzLXNpbmdsZS1kZWxpbWl0ZXJzICgpCiAgICAocnVieS1mb3J3YXJkLXN0cmluZy1z aG91bGQtbW92ZS10byAiL2Zvby9iYXIiICIvIiA2KQogICAgKHJ1YnktZm9yd2FyZC1zdHJpbmct c2hvdWxkLW1vdmUtdG8gInxmb298YmFyIiAifCIgNikKISAgIChydWJ5LWZvcndhcmQtc3RyaW5n LXNob3VsZC1tb3ZlLXRvICItZm9vLWJhciIgIi0iIDYpKQohCiEgKGVydC1kZWZ0ZXN0IHJ1Ynkt Zm9yd2FyZC1zdHJpbmctYWNjZXB0cy1jYXJldHMgKCkKISAgIDpleHBlY3RlZC1yZXN1bHQgOmZh aWxlZAogICAgKHJ1YnktZm9yd2FyZC1zdHJpbmctc2hvdWxkLW1vdmUtdG8gIl5mb29eYmFyIiAi XiIgNikpCgogIChlcnQtZGVmdGVzdCBydWJ5LWZvcndhcmQtc3RyaW5nLXNjYW5zLXRoZS1zaG9y dGVzdC1tYXRjaCAoKQotLS0gNjU4LDY2NCAtLS0tCiAgKGVydC1kZWZ0ZXN0IHJ1YnktZm9yd2Fy ZC1zdHJpbmctYWNjZXB0cy1zaW5nbGUtZGVsaW1pdGVycyAoKQogICAgKHJ1YnktZm9yd2FyZC1z dHJpbmctc2hvdWxkLW1vdmUtdG8gIi9mb28vYmFyIiAiLyIgNikKICAgIChydWJ5LWZvcndhcmQt c3RyaW5nLXNob3VsZC1tb3ZlLXRvICJ8Zm9vfGJhciIgInwiIDYpCiEgICAocnVieS1mb3J3YXJk LXN0cmluZy1zaG91bGQtbW92ZS10byAiLWZvby1iYXIiICItIiA2KQogICAgKHJ1YnktZm9yd2Fy ZC1zdHJpbmctc2hvdWxkLW1vdmUtdG8gIl5mb29eYmFyIiAiXiIgNikpCgogIChlcnQtZGVmdGVz dCBydWJ5LWZvcndhcmQtc3RyaW5nLXNjYW5zLXRoZS1zaG9ydGVzdC1tYXRjaCAoKQo= --bcaec52e6449e84bf104ece10a9f-- From debbugs-submit-bounces@debbugs.gnu.org Sun Dec 08 22:46:32 2013 Received: (at 16079-done) by debbugs.gnu.org; 9 Dec 2013 03:46:32 +0000 Received: from localhost ([127.0.0.1]:39152 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Vprnk-0002gN-4h for submit@debbugs.gnu.org; Sun, 08 Dec 2013 22:46:32 -0500 Received: from mail-ee0-f45.google.com ([74.125.83.45]:38557) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Vprni-0002gF-G1 for 16079-done@debbugs.gnu.org; Sun, 08 Dec 2013 22:46:30 -0500 Received: by mail-ee0-f45.google.com with SMTP id d49so1259733eek.18 for <16079-done@debbugs.gnu.org>; Sun, 08 Dec 2013 19:46:29 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=sender:from:to:cc:subject:references:date:in-reply-to:message-id :user-agent:mime-version:content-type; bh=KnhIfutWo/ojpUwOBQ99/mC8qsBZd/JJQW7B9X2R6eo=; b=vbQACBnhAyTwCgWe+5o9YXbwOLkrsJW5F9ZORg1GqxU/nqvCIdT/Y6kzTHFkm8jUfm 0rXwvGYA4O8koH0jmqtmLQzUhqsWYKh8j1BXr63W7rugCfcjZVXjmYkhJ+OJf5LJx2wE uhSILNuFRuVov47/0IJHHT2C4/+2qlQhw2wgIMJbdrEZ5ht4zFXtvttpxLG06JRwYFBa xiXJT2F//pPEEDoBLNuH1g0n/q3RHW1Gf02KdsuSTVO7UAGdD0c+C3QSedYSlEdsBrqs fWeIlkTH6DWk3t7LTHLpge3sFrVw6n0h708NjgL6DYwEhjpNXWve62PaQY5YD0ztWaoV vGTg== X-Received: by 10.14.199.197 with SMTP id x45mr11071432een.8.1386560789272; Sun, 08 Dec 2013 19:46:29 -0800 (PST) Received: from axl ([62.228.136.233]) by mx.google.com with ESMTPSA id b41sm23748803eef.16.2013.12.08.19.46.26 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Sun, 08 Dec 2013 19:46:28 -0800 (PST) From: Dmitry Gutov To: Cameron Desautels Subject: Re: bug#16079: `ruby-forward-string' chokes on caret delimiters (PATCH) References: Date: Mon, 09 Dec 2013 05:46:17 +0200 In-Reply-To: (Cameron Desautels's message of "Fri, 6 Dec 2013 11:33:21 -0600") Message-ID: <871u1mhek6.fsf@yandex.ru> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.3.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 16079-done Cc: 16079-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 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: -0.7 (/) Cameron Desautels writes: > This bug manifests itself by breaking `ruby-parse-region' in any > buffer containing a caret-delimited string. This breaks indentation, > movement commands, and even keeps Emacs from building an Imenu. Thanks, I've applied the fix. > I've attached a patch which resolves the issue. Note that this patch > builds on the test suite for `ruby-forward-string' that I included in > issue #16078. The tests are not included so far, let's continue discussing them in #16078. Closing this one. From unknown Mon Jun 16 23:35:33 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, 06 Jan 2014 12:24:04 +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