From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Lars Ingebrigtsen Newsgroups: gmane.emacs.devel Subject: Re: "Raw" string literals for elisp Date: Wed, 08 Sep 2021 09:12:15 +0200 Message-ID: <875yvb7d80.fsf@gnus.org> References: <4209edd83cfee7c84b2d75ebfcd38784fa21b23c.camel@crossproduct.net> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="29067"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) Cc: emacs-devel@gnu.org To: Anna Glasgall Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Sep 08 09:13:30 2021 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mNrly-0007Mk-Kx for ged-emacs-devel@m.gmane-mx.org; Wed, 08 Sep 2021 09:13:30 +0200 Original-Received: from localhost ([::1]:54090 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mNrlx-0006vp-A6 for ged-emacs-devel@m.gmane-mx.org; Wed, 08 Sep 2021 03:13:29 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:60946) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mNrkw-0005su-Qg for emacs-devel@gnu.org; Wed, 08 Sep 2021 03:12:27 -0400 Original-Received: from quimby.gnus.org ([2a01:4f9:2b:f0f::2]:45912) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mNrks-00026R-JY for emacs-devel@gnu.org; Wed, 08 Sep 2021 03:12:24 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date: References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding: Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender: Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=bB9iclSkzltA7AArEmh+gJCce78NztDxKfS2YQnVwKw=; b=sSNerqEHgrX1VDToCvqysYN9MJ P54e2R5ravfRYQ/dPGurBEBFL8EUtj0iUbLVYE239zJRwEdS4oaiu9yztgQ+iuqe/hH0YxHixGwZu JrRhRhRdd0jH7tpkD/sPQnLLvbrr8VB+nGHuJmOZbidMDaP55XNwJIgBx3N26XBo7jc8=; Original-Received: from [84.212.220.105] (helo=elva) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mNrkl-0008MK-O0; Wed, 08 Sep 2021 09:12:19 +0200 In-Reply-To: <4209edd83cfee7c84b2d75ebfcd38784fa21b23c.camel@crossproduct.net> (Anna Glasgall's message of "Tue, 07 Sep 2021 21:49:33 -0400") Received-SPF: pass client-ip=2a01:4f9:2b:f0f::2; envelope-from=larsi@gnus.org; helo=quimby.gnus.org X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, RCVD_IN_DNSWL_LOW=-0.7, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.23 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-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:274318 Archived-At: Anna Glasgall writes: > I've long been annoyed by the number of backslashes needed when using > string literals in elisp for certain things (regexes, UNC paths, etc), > so I started work on a patch (WIP attached) to implement support for > "raw" string literals, a la Python r-strings. Great! This would be very welcome, and has been proposed a number of times before, but nobody has actually implemented it. As you've found out, making the reader support the syntax is pretty easy, but the problem is with getting the rest of the Emacs tooling to understand the new syntax. (Which is, in general, the stumbling block when introducing any new syntax in Emacs Lisp.) > The reader correctly reads r"a\\"" as a string containing the sequence > of characters 'a', '\', '"', and M-: works. I think we'd prefer #r"..." -- # is used in Lisps to introduce most special syntaxes (and it's more backwards-compatible, since "r" by itself is a valid read syntax, but #r isn't today). > Unfortunately, if I try sexp-based navigation or e.g. C-x C-e, it > falls apart. The parser in syntax.c, which afaict is what lisp-mode is > using to try and find sexps in buffer text, doesn't seem to know what > to do with this expression. I've spent some time staring at syntax.c, > but I must confess that I'm entirely defeated in terms of what changes > need to be made here to teach this other parser about prefixed strings > in where the prefix has meaning that affects the interpretation of the > characters between string fences. Hopefully somebody else can give some insights here, because I'm not overly familiar with syntax.c, either. -- (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no