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
feat(c_sharp): add indent query #5344
base: master
Are you sure you want to change the base?
Conversation
(if_statement (block "{" @indent.branch)) | ||
(if_statement alternative: (if_statement) @indent.dedent) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The if_statement should be similar enough to C that I suggest you can use the C's indent queries version, with nodes modification (i.e. (compound_statement) -> (block)
)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I remember I was looking onto C's version, but I understood only like half of it, so i did this, which I undestand. I think there is subtle difference in tree for C and C#. I generally had hard time to debug the thing so I ended up with kind of first working solution.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Edit: Consider this obsolete.
Can you point, how to run the tests? I could probably add some of them to make it easier to debug. I was looking into |
For this PR, you'll need to add example c_sharp files to For running those file, you also need to create a |
That's the part which I understood, but I have no clue how to run the thing |
oh, just be inside the git repo, and do a |
No, you also need to have plenary installed and in your standard runtimepath. (I've said it before; I'll say it again: the test infrastructure is a pain point and needs to be streamlined.) |
Thanks @clason, that's the missing part - I expected that test machinery would grab it itself, if it needs it |
(nullable_directive) | ||
(pragma_directive) | ||
(undef_directive) | ||
] @indent.zero |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Can you add some tests? At least there should be some test files on how this is expected to work.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah, I started writing something. But I probably don't get how it is supposed to work. I managed to start the test. I wrote some example files. But no matter what I put in those files, whole_file
always passes. I'd expect it to fail when the file isn't indented in harmony with the query. newline
fails sometimes, but obviously puts different indetation compared to ==
on such line. So, is it for testing opening new line and indentation triggers? Or just one of them?
I've been using this and my Pipes added to make tabs visible. Orig:
Format using
Same story with my
Becomes:
Any ideas? |
Hm, that's wierd. It works for me. Don't you have so syntax error before this snippet? I have to figure out how to create some reasonable tests. I will take me some time though. |
In most cases, just a normal C# file will suffice. Don't bloat it up. I think for this around 100-200 lines may be enough. Double that if you want to test for multiple cases (braces on newline/eol, |
Yeah, I want to do mostly some tricky cases. I was struggling to make the testing machine work - i'd expect the |
That is what it does, and what it expects to be
Which should mean you've done a great job 🎉 |
I wish you are right :-D Well, first thing I did was to test the test - put something really off to see what i get back... And got success. So I went ahead and tried to break tests for other languages - always passed, so either it is broken, or my setup is wonky. |
You can publish the tests and let the CI/me test it as well. |
No syntax errors here :) |
I have been using it for some months now and seems to mostly work ok.