From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Adam Porter Newsgroups: gmane.emacs.devel Subject: Re: "Raw" string literals for elisp Date: Wed, 08 Sep 2021 06:34:44 -0500 Message-ID: <875yvb5mi3.fsf@alphapapa.net> 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="7434"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/26.3 (gnu/linux) To: emacs-devel@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Wed Sep 08 13:35:31 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 1mNvrX-0001em-8N for ged-emacs-devel@m.gmane-mx.org; Wed, 08 Sep 2021 13:35:31 +0200 Original-Received: from localhost ([::1]:52810 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mNvrW-0002ih-9I for ged-emacs-devel@m.gmane-mx.org; Wed, 08 Sep 2021 07:35:30 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:58118) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mNvqv-0001yO-B6 for emacs-devel@gnu.org; Wed, 08 Sep 2021 07:34:53 -0400 Original-Received: from ciao.gmane.io ([116.202.254.214]:38126) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mNvqt-0007fe-Sp for emacs-devel@gnu.org; Wed, 08 Sep 2021 07:34:53 -0400 Original-Received: from list by ciao.gmane.io with local (Exim 4.92) (envelope-from ) id 1mNvqs-0000a4-3B for emacs-devel@gnu.org; Wed, 08 Sep 2021 13:34:50 +0200 X-Injected-Via-Gmane: http://gmane.org/ Received-SPF: pass client-ip=116.202.254.214; envelope-from=ged-emacs-devel@m.gmane-mx.org; helo=ciao.gmane.io X-Spam_score_int: -15 X-Spam_score: -1.6 X-Spam_bar: - X-Spam_report: (-1.6 / 5.0 requ) BAYES_00=-1.9, HEADER_FROM_DIFFERENT_DOMAINS=0.25, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=no 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:274329 Archived-At: This would be an exciting feature to have in Elisp. Thanks for working on it. If I may make a somewhat bold, and hopefully not too bikesheddy suggestion (and one that's probably been made before, when this topic has come up): Rather than having double-quote characters requiring escaping in raw strings, would it be possible to do something slightly Perlescent (I know) and allow the delimiters to be specified? That would make them much more useful. For example, maybe something like: #r"foo bar baz" ;; => "foo bar baz" #r|foo "bar" baz| ;; => "foo \"bar\" baz" For extra bonus points, it would be nice if leading indentation at the beginning of a line in a raw string were omitted, similar to Python's triple-quoted strings. That would allow docstrings to look something like: (defun foo (arg &optional bar) #r|Frobnicate ARG. If BAR, require ARG to be "baz".| (if (and bar (equal arg "baz")) (frobnicate arg) (frobnicate arg))) The delimiter could even be repeated, like: #r""" foo "bar" baz """ ;; => "foo\n\"bar\"\nbaz" Though perhaps I'm getting too far ahead. :)