-
Notifications
You must be signed in to change notification settings - Fork 107
Add ktfmt support for Kotlin #183
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
Conversation
Unfortunately, ktfmt doesn't yet support a --lines option to format a range. See facebook/ktfmt#218 for the feature request.
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.
Awesome, thanks for chasing down logistics and doing this!
To clarify, this means it'll tend to dedent to col 1 and you'll have to select and manually indent after formatting a block, right? Might note that caveat in the help somewhere. |
autoload/codefmt/ktfmt.vim
Outdated
endif | ||
if executable(l:exec[0]) | ||
return 1 | ||
elseif !empty(l:exec[0]) && l:exec[0] isnot# 'ktfmt' |
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.
This branch is intended to allow non-default formatters to work, but in this case exec[0]
would never be ktfmt
, since that's not the default.
This particular pattern is only present for google-java-format, and I think there only because we aren't doing the splitting that you have here on L31, so we just give up trying to check for an executable.
I think we probably want one or the other: either split to find an executable ("java", here), and check whether it's runnable, or alternatively skip that check if the flag value's been overridden. Since there's no single ktfmt
binary to run, I think probably the former?
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.
Did something fancy, see my response to @dbarnett above.
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.
LGTM
Fixes #176.
The
ktfmt
tool doesn't currently support the--lines
flag fromgoogle-java-format
, so we useAttemptFakeRangeFormatting
. Based on cursory testing this mostly works if applied to a logical code block, but it will align it will indent relative to the first column, as if this were the only text in the file, rather than keeping the existing indent.