Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix indent on immediately applied function definition/evaluation results. #102

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

jams2
Copy link

@jams2 jams2 commented Feb 7, 2021

I hope you don't mind the unsolicited PR but I made the changes for my own use anyway so thought it makes sense to share.

Current behaviour (installed from master):

((fn [x y] (+ x y))
  1
 7)

((fn [x y]
   (+ x y))
  1
 7)

(((fn [x] (fn [y] (+ x y)))
   3)
  4)

The indentation of the rest of the forms in the outermost expression (1, 7, 3, 4) is currently "one past the opening paren of the previous sexp". This differs from Hy's style guide (see the third law) and indentation in other lisp modes (e.g. elisp mode), and to my eye is confusing. This PR changes the behaviour so the previous example will be indented as such:

((fn [x y] (+ x y))
 1
 7)

((fn [x y]
   (+ x y))
 1
 7)

(((fn [x] (fn [y] (+ x y)))
  3)
 4)

I also added assoc to hy-indent--exactly, to bring behaviour in line with the style guide (see special arguments).

@jams2
Copy link
Author

jams2 commented Feb 7, 2021

Apologies - after reviewing the tests I can see that this is intended behavior of hy-mode:

    (it "form opens a form - only sexp on line"
      (expect "
((a b)
  c)
" :indented))

I know indentation can be a contentious topic, so let me know if this is something worth further discussion, otherwise I'll just use my own fork :)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant