Fix reader syntaxes disrupted by newlines #655
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Note that I am writing this PR on a recent Emacs 30 build, whereas the min version supported for lispy is
24.3
. I hope someone can test on some earlier versions.Fixes #647. Also fixes #653 by its first commit.
Lispy would assume an implicit nil after the reader syntax, like this:
Gets this incorrect result:
(lispy--delete-insignificant-sexps): allow removing sexps that are
implicitly-created by lispy, and serve no purpose in the real input and output
sexp other than formatting. At the moment, just remove newline nodes.
(lispy--read-reader-syntax): helper function to avoid code duplication; converts
a reader syntax RS, e.g.,
"`"
, plus its immediately-next sexp, into an internalrepresentation with TAG.
(lispy--read): update handling of
"#'"
,",@"
,"'"
,"`"
,","
to make use oflispy--read-reader-syntax
.(lispy--insert): fixed float and quasiquote handling (currently it calls
(insert (caddr sxp))
, which is incorrect becauseinsert
considers it acharacter; float was not problematic because this code path was never triggered:
things like
1.2
have not been converted intoly-raw float
constructs anyway.(lispy-read-quote-newline): added 5 simple tests for each of the
addressed reader syntaxes.