From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Cameron Desautels Newsgroups: gmane.emacs.bugs Subject: bug#16079: `ruby-forward-string' chokes on caret delimiters (PATCH) Date: Fri, 6 Dec 2013 11:33:21 -0600 Message-ID: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=bcaec52e6449e84bf104ece10a9f X-Trace: ger.gmane.org 1386351246 8170 80.91.229.3 (6 Dec 2013 17:34:06 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 6 Dec 2013 17:34:06 +0000 (UTC) To: 16079@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Fri Dec 06 18:34:11 2013 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1VozI2-0004XZ-Ih for geb-bug-gnu-emacs@m.gmane.org; Fri, 06 Dec 2013 18:34:10 +0100 Original-Received: from localhost ([::1]:60695 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VozI2-0008C2-5o for geb-bug-gnu-emacs@m.gmane.org; Fri, 06 Dec 2013 12:34:10 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:47808) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VozHx-00088L-1V for bug-gnu-emacs@gnu.org; Fri, 06 Dec 2013 12:34:06 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1VozHv-0005BU-OV for bug-gnu-emacs@gnu.org; Fri, 06 Dec 2013 12:34:04 -0500 Original-Received: from debbugs.gnu.org ([140.186.70.43]:48658) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1VozHv-0005BQ-LF for bug-gnu-emacs@gnu.org; Fri, 06 Dec 2013 12:34:03 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.80) (envelope-from ) id 1VozHv-0000ff-01 for bug-gnu-emacs@gnu.org; Fri, 06 Dec 2013 12:34:03 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Cameron Desautels Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 06 Dec 2013 17:34:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 16079 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.13863512112531 (code B ref -1); Fri, 06 Dec 2013 17:34:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 6 Dec 2013 17:33:31 +0000 Original-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 Original-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 Original-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 Original-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 Original-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 Original-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 Original-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 Original-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== X-Received: by 10.204.166.196 with SMTP id n4mr1537586bky.85.1386351201621; Fri, 06 Dec 2013 09:33:21 -0800 (PST) Original-Received: by 10.205.26.197 with HTTP; Fri, 6 Dec 2013 09:33:21 -0800 (PST) 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-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:81548 Archived-At: --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--