From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: =?UTF-8?Q?Aur=C3=A9lien_Aptel?= Newsgroups: gmane.emacs.devel Subject: Raw strings (experimental patches inside) Date: Fri, 3 Aug 2012 04:02:58 +0200 Message-ID: NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=e89a8f6429046134c404c652ed20 X-Trace: dough.gmane.org 1343959385 16562 80.91.229.3 (3 Aug 2012 02:03:05 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Fri, 3 Aug 2012 02:03:05 +0000 (UTC) To: Emacs development discussions Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Fri Aug 03 04:03:06 2012 Return-path: Envelope-to: ged-emacs-devel@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 1Sx7EG-0003S1-Uh for ged-emacs-devel@m.gmane.org; Fri, 03 Aug 2012 04:03:05 +0200 Original-Received: from localhost ([::1]:40096 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sx7EG-00086g-7n for ged-emacs-devel@m.gmane.org; Thu, 02 Aug 2012 22:03:04 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:36041) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sx7ED-00086U-10 for emacs-devel@gnu.org; Thu, 02 Aug 2012 22:03:01 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Sx7EB-0006DL-Qh for emacs-devel@gnu.org; Thu, 02 Aug 2012 22:03:00 -0400 Original-Received: from mail-ob0-f169.google.com ([209.85.214.169]:33247) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Sx7EB-0006DH-Jt for emacs-devel@gnu.org; Thu, 02 Aug 2012 22:02:59 -0400 Original-Received: by obhx4 with SMTP id x4so344495obh.0 for ; Thu, 02 Aug 2012 19:02:59 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:date:x-google-sender-auth:message-id:subject :from:to:content-type; bh=rJQSoqA/qa1iEXptrdRfLiSqLp/RISa6AxsQBg52x0k=; b=ou2B4BQLBKBxaPn1iuL9c6jtzyQYymiQQ6+BgJEgAE3/pD/g/ccjTDEQdBbD/k97le OSeslJ0VQ0MJgpKxe1F/ff+ClKwFgU5QSaOHhQUxAwSKITiEWwMaJpuvURvKd3GHX6K7 QjV9xFDHQI7/mpDA089Tnh8ij7824AI2zr4LxhduDEY1ZKBzB2XgmHGs5bilA8IqR8M1 3pHE4Q9HerRBNF6Rb3Pjmi82bVnpPrIziUEp673lnVz2KRQHfEvv0/pyZydfdbKBRKE+ VRHPWEWdNbdyBTD9RkWEnMhRuNLDzXu1Xdw/Tlx+IzOY7+lBpvTN6ClHewPAP93VeW4U rOkQ== Original-Received: by 10.182.212.98 with SMTP id nj2mr264851obc.18.1343959379030; Thu, 02 Aug 2012 19:02:59 -0700 (PDT) Original-Received: by 10.182.42.1 with HTTP; Thu, 2 Aug 2012 19:02:58 -0700 (PDT) X-Google-Sender-Auth: YC9rQS-SX7nPPNphhyh4bCvoSCw X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 209.85.214.169 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:152132 Archived-At: --e89a8f6429046134c404c652ed20 Content-Type: text/plain; charset=UTF-8 Hi all, When I type a regex I'm always annoyed by the amount of escaping I have to do. I've always wished Emacs Lisp had raw strings ie. a syntax to type litteral text without interpretation. I've made 2 patch for the reader (src/lread.c). There are proofs of concepts, they should work on correct input but don't expect much. raw-string-python.diff use a syntax similar to python: $ ./emacs -Q -batch --eval '(message #r"""ha"\nha""")' ha"\nha raw-string-sed.diff use a syntax similar to sed or perl quotes. You can chose any delimiter. $ ./emacs -Q -batch --eval '(message #r,ha"\nha,)' ha"\nha $ ./emacs -Q -batch --eval '(message #r~ha"\nha~)' ha"\nha You get the idea. Although the reader works, this breaks several things. C-x C-e doesn't work well, sexp navigation is broken, etc. There is work to do to make the rest of emacs aware of raw strings. --e89a8f6429046134c404c652ed20 Content-Type: application/octet-stream; name="raw-string-python.diff" Content-Disposition: attachment; filename="raw-string-python.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h5emp1es0 PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9scmVhZC5jJwotLS0gc3JjL2xyZWFkLmMJMjAxMi0wOC0w MSAyMDo1MTo0NCArMDAwMAorKysgc3JjL2xyZWFkLmMJMjAxMi0wOC0wMyAwMTo0NTowMSArMDAw MApAQCAtMjM4NCw2ICsyMzg0LDg0IEBACiAKICAgICBjYXNlICcjJzoKICAgICAgIGMgPSBSRUFE Q0hBUjsKKworICAgICAgLyogcmF3IHN0cmluZyB3aXRoICIiIiBkZWxpbWl0ZXJzCisgICAgICAg ICAjciIiImZvbyBiYXIiIiIgKi8KKyAgICAgIGlmIChjID09ICdyJykKKyAgICAgICAgeworICAg ICAgICAgIGludCBvbGQ7CisgICAgICAgICAgaW50IG5kZWxpbSA9IDA7CisgICAgICAgICAgY2hh ciAqcCA9IHJlYWRfYnVmZmVyOworICAgICAgICAgIGNoYXIgKmVuZCA9IHJlYWRfYnVmZmVyICsg cmVhZF9idWZmZXJfc2l6ZTsKKyAgICAgICAgICByZWdpc3RlciBpbnQgY2g7CisgICAgICAgICAg LyogTm9uemVybyBpZiB3ZSBzYXcgYW4gZXNjYXBlIHNlcXVlbmNlIHNwZWNpZnlpbmcKKyAgICAg ICAgICAgICBhIG11bHRpYnl0ZSBjaGFyYWN0ZXIuICAqLworICAgICAgICAgIGludCBmb3JjZV9t dWx0aWJ5dGUgPSAwOworICAgICAgICAgIC8qIE5vbnplcm8gaWYgd2Ugc2F3IGFuIGVzY2FwZSBz ZXF1ZW5jZSBzcGVjaWZ5aW5nCisgICAgICAgICAgICAgYSBzaW5nbGUtYnl0ZSBjaGFyYWN0ZXIu ICAqLworICAgICAgICAgIGludCBmb3JjZV9zaW5nbGVieXRlID0gMDsKKyAgICAgICAgICBpbnQg Y2FuY2VsID0gMDsKKyAgICAgICAgICBwdHJkaWZmX3QgbmNoYXJzID0gMDsKKworICAgICAgICAg IC8qIHJlYWQgMyBmaXJzdCBkZWxpbSAqLworICAgICAgICAgIGlmIChSRUFEQ0hBUiAhPSAnIicg fHwgUkVBRENIQVIgIT0gJyInIHx8IFJFQURDSEFSICE9ICciJykKKyAgICAgICAgICAgIGludmFs aWRfc3ludGF4ICgiI3JcIlwiXCIuLi5cIlwiXCIiKTsKKworICAgICAgICAgIHdoaWxlICgxKQor ICAgICAgICAgICAgeworICAgICAgICAgICAgICBjaCA9IFJFQURDSEFSOworICAgICAgICAgICAg ICBpZiAoY2ggPCAwKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgIGlm IChjaCA9PSAnIicpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgbmRlbGlt Kys7CisgICAgICAgICAgICAgICAgICBpZiAobmRlbGltID09IDMpCisgICAgICAgICAgICAgICAg ICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgZWxzZQorICAgICAg ICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgIG5kZWxpbSA9IDA7CisgICAgICAgICAgICAg ICAgfQorCisgICAgICAgICAgICAgIGlmIChlbmQgLSBwIDwgTUFYX01VTFRJQllURV9MRU5HVEgp CisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgcHRyZGlmZl90IG9mZnNldCA9 IHAgLSByZWFkX2J1ZmZlcjsKKyAgICAgICAgICAgICAgICAgIGlmIChtaW4gKFBUUkRJRkZfTUFY LCBTSVpFX01BWCkgLyAyIDwgcmVhZF9idWZmZXJfc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAg bWVtb3J5X2Z1bGwgKFNJWkVfTUFYKTsKKyAgICAgICAgICAgICAgICAgIHJlYWRfYnVmZmVyID0g eHJlYWxsb2MgKHJlYWRfYnVmZmVyLCByZWFkX2J1ZmZlcl9zaXplICogMik7CisgICAgICAgICAg ICAgICAgICByZWFkX2J1ZmZlcl9zaXplICo9IDI7CisgICAgICAgICAgICAgICAgICBwID0gcmVh ZF9idWZmZXIgKyBvZmZzZXQ7CisgICAgICAgICAgICAgICAgICBlbmQgPSByZWFkX2J1ZmZlciAr IHJlYWRfYnVmZmVyX3NpemU7CisgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgIHAg Kz0gQ0hBUl9TVFJJTkcgKGNoLCAodW5zaWduZWQgY2hhciAqKSBwKTsKKyAgICAgICAgICAgICAg aWYgKENIQVJfQllURThfUCAoY2gpKQorICAgICAgICAgICAgICAgIGZvcmNlX3NpbmdsZWJ5dGUg PSAxOworICAgICAgICAgICAgICBlbHNlIGlmICghIEFTQ0lJX0NIQVJfUCAoY2gpKQorICAgICAg ICAgICAgICAgIGZvcmNlX211bHRpYnl0ZSA9IDE7CisKKyAgICAgICAgICAgICAgbmNoYXJzKys7 CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAvKiBsYXN0ICIgd2FzIG5vdCBhZGRlZCwgb25s eSByZW1vdmUgMiAqLworICAgICAgICAgIHAgLT0gMjsKKyAgICAgICAgICBuY2hhcnMgLT0gMjsK KworICAgICAgICAgIGlmICghIGZvcmNlX211bHRpYnl0ZSAmJiBmb3JjZV9zaW5nbGVieXRlKQor ICAgICAgICAgICAgeworICAgICAgICAgICAgICAvKiBSRUFEX0JVRkZFUiBjb250YWlucyByYXcg OC1iaXQgYnl0ZXMgYW5kIG5vIG11bHRpYnl0ZQorICAgICAgICAgICAgICAgICBmb3Jtcy4gIENv bnZlcnQgaXQgdG8gdW5pYnl0ZS4gICovCisgICAgICAgICAgICAgIG5jaGFycyA9IHN0cl9hc191 bmlieXRlICgodW5zaWduZWQgY2hhciAqKSByZWFkX2J1ZmZlciwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHAgLSByZWFkX2J1ZmZlcik7CisgICAgICAgICAgICAgIHAg PSByZWFkX2J1ZmZlciArIG5jaGFyczsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgIHJldHVy biBtYWtlX3NwZWNpZmllZF9zdHJpbmcgKHJlYWRfYnVmZmVyLCBuY2hhcnMsIHAgLSByZWFkX2J1 ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9yY2VfbXVs dGlieXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChwIC0g cmVhZF9idWZmZXIgIT0gbmNoYXJzKSkpOworICAgICAgICB9CisKICAgICAgIGlmIChjID09ICdz JykKIAl7CiAJICBjID0gUkVBRENIQVI7Cgo= --e89a8f6429046134c404c652ed20 Content-Type: application/octet-stream; name="raw-string-sed.diff" Content-Disposition: attachment; filename="raw-string-sed.diff" Content-Transfer-Encoding: base64 X-Attachment-Id: f_h5emp5ri1 PT09IG1vZGlmaWVkIGZpbGUgJ3NyYy9scmVhZC5jJwotLS0gc3JjL2xyZWFkLmMJMjAxMi0wOC0w MSAyMDo1MTo0NCArMDAwMAorKysgc3JjL2xyZWFkLmMJMjAxMi0wOC0wMyAwMDoyNzowMSArMDAw MApAQCAtMjM4NCw2ICsyMzg0LDYwIEBACiAKICAgICBjYXNlICcjJzoKICAgICAgIGMgPSBSRUFE Q0hBUjsKKworICAgICAgLyogcmF3IHN0cmluZyB3aXRoIGN1c3RvbSBkZWxpbWl0ZXIgCisgICAg ICAgICAjcihmb28pICNyLGZvbywgZXRjICovCisgICAgICBpZiAoYyA9PSAncicpCisgICAgICAg IHsKKyAgICAgICAgICBpbnQgZGVsaW1pdGVyID0gUkVBRENIQVI7CisgICAgICAgICAgY2hhciAq cCA9IHJlYWRfYnVmZmVyOworICAgICAgICAgIGNoYXIgKmVuZCA9IHJlYWRfYnVmZmVyICsgcmVh ZF9idWZmZXJfc2l6ZTsKKyAgICAgICAgICByZWdpc3RlciBpbnQgY2g7CisgICAgICAgICAgLyog Tm9uemVybyBpZiB3ZSBzYXcgYW4gZXNjYXBlIHNlcXVlbmNlIHNwZWNpZnlpbmcKKyAgICAgICAg ICAgICBhIG11bHRpYnl0ZSBjaGFyYWN0ZXIuICAqLworICAgICAgICAgIGludCBmb3JjZV9tdWx0 aWJ5dGUgPSAwOworICAgICAgICAgIC8qIE5vbnplcm8gaWYgd2Ugc2F3IGFuIGVzY2FwZSBzZXF1 ZW5jZSBzcGVjaWZ5aW5nCisgICAgICAgICAgICAgYSBzaW5nbGUtYnl0ZSBjaGFyYWN0ZXIuICAq LworICAgICAgICAgIGludCBmb3JjZV9zaW5nbGVieXRlID0gMDsKKyAgICAgICAgICBpbnQgY2Fu Y2VsID0gMDsKKyAgICAgICAgICBwdHJkaWZmX3QgbmNoYXJzID0gMDsKKworICAgICAgICAgIHdo aWxlICgoY2ggPSBSRUFEQ0hBUikgPj0gMAorICAgICAgICAgICAgICAgICAmJiBjaCAhPSBkZWxp bWl0ZXIpCisgICAgICAgICAgICB7CisgICAgICAgICAgICAgIGlmIChlbmQgLSBwIDwgTUFYX01V TFRJQllURV9MRU5HVEgpCisgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgcHRy ZGlmZl90IG9mZnNldCA9IHAgLSByZWFkX2J1ZmZlcjsKKyAgICAgICAgICAgICAgICAgIGlmICht aW4gKFBUUkRJRkZfTUFYLCBTSVpFX01BWCkgLyAyIDwgcmVhZF9idWZmZXJfc2l6ZSkKKyAgICAg ICAgICAgICAgICAgICAgbWVtb3J5X2Z1bGwgKFNJWkVfTUFYKTsKKyAgICAgICAgICAgICAgICAg IHJlYWRfYnVmZmVyID0geHJlYWxsb2MgKHJlYWRfYnVmZmVyLCByZWFkX2J1ZmZlcl9zaXplICog Mik7CisgICAgICAgICAgICAgICAgICByZWFkX2J1ZmZlcl9zaXplICo9IDI7CisgICAgICAgICAg ICAgICAgICBwID0gcmVhZF9idWZmZXIgKyBvZmZzZXQ7CisgICAgICAgICAgICAgICAgICBlbmQg PSByZWFkX2J1ZmZlciArIHJlYWRfYnVmZmVyX3NpemU7CisgICAgICAgICAgICAgICAgfQorICAg ICAgICAgICAgICAKKyAgICAgICAgICAgICAgcCArPSBDSEFSX1NUUklORyAoY2gsICh1bnNpZ25l ZCBjaGFyICopIHApOworICAgICAgICAgICAgICBpZiAoQ0hBUl9CWVRFOF9QIChjaCkpCisgICAg ICAgICAgICAgICAgZm9yY2Vfc2luZ2xlYnl0ZSA9IDE7CisgICAgICAgICAgICAgIGVsc2UgaWYg KCEgQVNDSUlfQ0hBUl9QIChjaCkpCisgICAgICAgICAgICAgICAgZm9yY2VfbXVsdGlieXRlID0g MTsKKyAgICAgICAgICAgICAgCisgICAgICAgICAgICAgIG5jaGFycysrOworICAgICAgICAgICAg fQorICAgICAgICAgIGlmICghIGZvcmNlX211bHRpYnl0ZSAmJiBmb3JjZV9zaW5nbGVieXRlKQor ICAgICAgICAgICAgeworICAgICAgICAgICAgICAvKiBSRUFEX0JVRkZFUiBjb250YWlucyByYXcg OC1iaXQgYnl0ZXMgYW5kIG5vIG11bHRpYnl0ZQorICAgICAgICAgICAgICAgICBmb3Jtcy4gIENv bnZlcnQgaXQgdG8gdW5pYnl0ZS4gICovCisgICAgICAgICAgICAgIG5jaGFycyA9IHN0cl9hc191 bmlieXRlICgodW5zaWduZWQgY2hhciAqKSByZWFkX2J1ZmZlciwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHAgLSByZWFkX2J1ZmZlcik7CisgICAgICAgICAgICAgIHAg PSByZWFkX2J1ZmZlciArIG5jaGFyczsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgIHJldHVy biBtYWtlX3NwZWNpZmllZF9zdHJpbmcgKHJlYWRfYnVmZmVyLCBuY2hhcnMsIHAgLSByZWFkX2J1 ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZm9yY2VfbXVs dGlieXRlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHx8IChwIC0g cmVhZF9idWZmZXIgIT0gbmNoYXJzKSkpOworICAgICAgICB9CisKICAgICAgIGlmIChjID09ICdz JykKIAl7CiAJICBjID0gUkVBRENIQVI7Cgo= --e89a8f6429046134c404c652ed20--