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

Support one-based column indices for Edits #103

Merged
merged 1 commit into from
May 10, 2023

Conversation

MichaReiser
Copy link
Member

@MichaReiser MichaReiser commented May 10, 2023

Ruff is switching to use one-based column indices for edits to align them with the fix-column indices.

This PR converts the column indices to zero-based indices depending on the connected ruff version. The heuristic used to detect whether ruff uses one-based indices is to test if the Fix has an applicability field which was newly introduced in astral-sh/ruff#4341.

Test Plan

New ruff version
https://github.com/charliermarsh/ruff-lsp/assets/1203881/25f8ef9c-5215-4126-8dfb-4aa48fee9dbe

old ruff version using zero-based column indices
https://github.com/charliermarsh/ruff-lsp/assets/1203881/172cd901-7c70-47e8-81fa-f9c1402c69b1

@MichaReiser
Copy link
Member Author

Current dependencies on/for this PR:

This comment was auto-generated by Graphite.

@MichaReiser MichaReiser merged commit 376e009 into main May 10, 2023
@MichaReiser MichaReiser deleted the support-one-based-column-indices branch May 10, 2023 14:29
@MichaReiser MichaReiser changed the title Support one-based column indices for Edit's Support one-based column indices for Edits May 10, 2023
MichaReiser added a commit to astral-sh/ruff that referenced this pull request May 10, 2023
 I noticed in the byte-offsets refactor that the `JsonEmitter` uses one indexed column numbers for the diagnostic start and end locations but not for `edits`.

This PR changes the `JsonEmitter` to emit one-indexed column numbers for edits, as we already do for `Message::location` and `Message::end_location`.

## Open questions

~We'll need to change the LSP to subtract 1 from the columns in `_parse_fix`~

https://github.com/charliermarsh/ruff-lsp/blob/6e44fadf8a5954adaf3c21af196fa195708ff912/ruff_lsp/server.py#L129-L150

~@charliermarsh is there a way to get the ruff version in that method? If not, then I recommend adding a `version` that we increment whenever we make incompatible changes to the serialized message. We can then use it in the LSP to correctly compute the column offset.~

I'll use the presence of the `Fix::applicability` field to detect if the Ruff version uses one or zero-based column indices.

See astral-sh/ruff-lsp#103
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.

3 participants