Skip to content

Add supported commands in server capabilities - #11850

Merged
dhruvmanila merged 1 commit into
mainfrom
dhruv/server-command
Jun 13, 2024
Merged

dhruvmanila merged 1 commit into
mainfrom
dhruv/server-command

Conversation

@dhruvmanila

@dhruvmanila dhruvmanila commented Jun 13, 2024 •

Copy link
Copy Markdown
Member

Summary

This PR updates the server capabilities to include the commands that Ruff supports. This is similar to how there's a list of possible code actions supported by the server.

I noticed this when I was trying to find whether Helix supported workspace commands or not based on Jane's comment (#11831 (comment)) and I found the :lsp-workspace-command in the editor but it didn't show up anything in the picker.

So, I looked at the implementation in Helix (https://github.com/helix-editor/helix/blob/9c479e6d2de3bca9dec304f9182cee2b1c0ad766/helix-term/src/commands/typed.rs#L1372-L1384) which made me realize that Ruff doesn't provide this in its capabilities. Currently, this does require ruff to be first in the list of language servers in the user config but that should be resolved by helix-editor/helix#10176. So, the following config should work:

[[language]]
name = "python"
# Ruff should come first until https://github.com/helix-editor/helix/pull/10176 is released
language-servers = ["ruff", "pyright"]

Test Plan

  1. Neovim's server capabilities output should include the supported commands:
  executeCommandProvider = {                                                                                                                          
    commands = { "ruff.applyFormat", "ruff.applyAutofix", "ruff.applyOrganizeImports", "ruff.printDebugInformation" },                                
    workDoneProgress = false                                                                                                                          
  },
  1. Helix should now display the commands to pick from when :lsp-workspace-command is invoked:
Screenshot 2024-06-13 at 08 47 14

@dhruvmanila dhruvmanila added the server Related to the Ruff or ty LSP server label Jun 13, 2024
@dhruvmanila
dhruvmanila requested a review from snowsignal June 13, 2024 03:13
@dhruvmanila

dhruvmanila commented Jun 13, 2024 •

Copy link
Copy Markdown
Member Author

I think I'll re-order them to display the "printDebugInformation" at the end.

Edit: Done

@dhruvmanila
dhruvmanila force-pushed the dhruv/server-command branch from 12c9536 to da841fc Compare June 13, 2024 03:17
@github-actions

Copy link
Copy Markdown
Contributor

ruff-ecosystem results

Linter (stable)

✅ ecosystem check detected no linter changes.

Linter (preview)

✅ ecosystem check detected no linter changes.

Comment on lines +367 to +373
#[derive(Clone, Copy, Debug, PartialEq)]
pub(crate) enum SupportedCommand {
Debug,
Format,
FixAll,
OrganizeImports,
}

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I renamed this from Command to SupportedCommand to match SupportedCodeAction and also moved it from the execute_command.rs module. Feel free to disagree on anything.

@snowsignal snowsignal left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

It's unfortunate that Helix isn't able to forward the URI for these commands - maybe that's something we should try contributing upstream eventually.

@dhruvmanila

Copy link
Copy Markdown
Member Author

It's unfortunate that Helix isn't able to forward the URI for these commands - maybe that's something we should try contributing upstream eventually.

Yeah, we can start by opening an issue / discussion to let them know about this limitation. I also think this can be solved by a custom plugin but I don't think Helix supports them yet.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

server Related to the Ruff or ty LSP server

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants