Skip to content

Conversation

RuijieYu
Copy link
Contributor

@RuijieYu RuijieYu commented Apr 8, 2023

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:

(defun foo ()
  '
  (bar baz)
  ) ;; point here, press i to format

Gets this incorrect result:

(defun foo ()
  '() (bar baz))
  • lispy.el

(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 internal
representation with TAG.

(lispy--read): update handling of "#'", ",@", "'", "`", "," to make use of
lispy--read-reader-syntax.

(lispy--insert): fixed float and quasiquote handling (currently it calls
(insert (caddr sxp)), which is incorrect because insert considers it a
character; float was not problematic because this code path was never triggered:
things like 1.2 have not been converted into ly-raw float constructs anyway.

  • lispy-test.el

(lispy-read-quote-newline): added 5 simple tests for each of the
addressed reader syntaxes.

RuijieYu added 2 commits April 7, 2023 16:39
Fixes bug#653.

* lispy-test.el
(lispy-simulate-key) (lispy-simulate-keys) (lispy-simulate-expect):
Added facilities to assert results after a given set of keypresses.
(lispy-read-unsafe-chars): added regression tests for bug#648.
Fixes bug#647.

Lispy would assume an implicit nil after the reader syntax, like this:

```emacs-lisp
(defun foo ()
  '
  (bar baz)
  ) ;; point here, press i to format
```

Gets this incorrect result:

```emacs-lisp
(defun foo ()
  '() (bar baz))
```

* lispy.el (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; replaces
a reader syntax RS, e.g., "`", plus its immediately-next sexp into an internal
representation with TAG.
(lispy--read): update handling of "#'", ",@", "'", "`", "," to make use of
`lispy--read-reader-syntax'.
(lispy--insert): fixed float and quasiquote handling (currently it calls
`(insert (caddr sxp))', which is incorrect because `insert' considers it a
character; float was not problematic because this code path was never triggered:
things like 1.2 have not been converted into `ly-raw float' constructs anyway.

* lispy-test.el (lispy-read-quote-newline): added 5 simple tests for each of the
addressed reader syntaxes.
@RuijieYu RuijieYu force-pushed the bug-647-quote-newline branch from 0acedfe to 8e6d0a1 Compare April 8, 2023 10:31
@RuijieYu RuijieYu changed the title Bug 647 quote newline Fix reader syntaxes disrupted by newlines Apr 8, 2023
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

make test fails [BUG] " ` " at EOL reformats incorrectly
1 participant