unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Lars Ingebrigtsen <larsi@gnus.org>
To: Drew Adams <drew.adams@oracle.com>
Cc: 24982@debbugs.gnu.org, Stefan Kangas <stefan@marxist.se>
Subject: bug#24982: 24.5; way to let Elisp reader ignore unreadable #(...) constructs
Date: Sat, 22 Aug 2020 21:53:50 +0200	[thread overview]
Message-ID: <87pn7ih2y9.fsf@gnus.org> (raw)
In-Reply-To: <947a8471-8f34-40a9-852c-dc3a0997f9dc@default> (Drew Adams's message of "Sat, 22 Aug 2020 12:28:32 -0700 (PDT)")

Drew Adams <drew.adams@oracle.com> writes:

>> In Common Lisp, this is the #| ...  |# operator, and it's handy
>> occasionally.  It's really like a nesting comment thing...
>
> Good point.  I was thinking of #(...), but yes,
> the situation is more general.  It's about #
> syntax that's found to be invalid, but for cases
> where # nevertheless can tell where the sexp
> parsing should end (and so can advance point there).

Yup.

I couldn't quite remember whether the Common Lisp #| |# was balanced,
but it is, which is nice.  That is, you can write

#| foo #| bar |# zot |#

and the first |# doesn't end the first #|.

Digression: While Googling, I was reminded that Common Lisp also has

#+condition
(foo:bar)

which (possibly) ignores the next sexp...  which is handy in Common
Lisp, but Emacs doesn't need it.  Common Lisp needs it because reference
to an unloaded package is a read error, instead of an undefined error.
Which is a really bad design choice.  That is, you can't say
(if (fboundp 'foo:bar) ...) if foo is a package that isn't loaded --
it's a read error.

Digression over!

I'm not an expert on the Emacs Lisp reader, but poking at it at bit, it
seems like adding support for #| |# should be trivial: It's just a new
comment syntax, really, so we just have to count #|'s and discard the
input.

A bigger issue would be in emacs-lisp-mode -- having forward-sexp etc do
the right thing.  However, surely that's handled already in the Common
Lisp modes, so we could just crib code from those, I'd have thought...

So I think it's doable, which only leaves us with the question: What's
the use case?

Well, I think it's handy when developing.  If I'm in the middle of a
function

...
(foo)
(bar)
(and-here-i'm-adding-some-new-stuff-that's-not-finished
  ...
  )
(zot)
...

and I'm testing stuff, and I decide to take out the stuff I'm
writing...  Emacs doesn't really handle that well.  I usually end up
deleting the sexp, and hoping that the kill ring is big enough to hold
it until I need it again, or slapping a (when nil ...) around it, which
is unsatisfactory, because that changes the indentation.

Just being able to do:

...
(foo)
(bar)
#|
(and-here-i'm-adding-some-new-stuff-that's-not-finished
  ...
  )
|#
(zot)
...

would be nice.  And then the stuff I'm working on doesn't even have to
be syntactically correct.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no





  reply	other threads:[~2020-08-22 19:53 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-21 21:47 bug#24982: 24.5; way to let Elisp reader ignore unreadable #(...) constructs Drew Adams
2018-04-02 19:32 ` Juri Linkov
2018-04-02 20:31   ` Drew Adams
2018-04-02 20:54     ` Juri Linkov
2018-04-02 21:32       ` Drew Adams
2018-04-03 20:06         ` Juri Linkov
2020-08-22 19:13 ` Stefan Kangas
2020-08-22 19:17   ` Lars Ingebrigtsen
2020-08-22 19:28     ` Drew Adams
2020-08-22 19:53       ` Lars Ingebrigtsen [this message]
2020-08-22 22:44         ` Drew Adams
2020-08-22 19:25   ` Drew Adams
2022-02-13  8:46 ` Lars Ingebrigtsen
2022-02-13 17:33   ` bug#24982: [External] : " Drew Adams
2022-02-13 17:53     ` Lars Ingebrigtsen
2022-02-13 18:03       ` Drew Adams
2022-02-14  4:15   ` Richard Stallman
2022-04-30 17:01     ` Lars Ingebrigtsen
2022-04-30 17:26       ` Drew Adams

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87pn7ih2y9.fsf@gnus.org \
    --to=larsi@gnus.org \
    --cc=24982@debbugs.gnu.org \
    --cc=drew.adams@oracle.com \
    --cc=stefan@marxist.se \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).