Skip to content

Commit

Permalink
Respect lsp definition order for code actions (#9590)
Browse files Browse the repository at this point in the history
  • Loading branch information
estin authored Apr 9, 2024
1 parent cf99615 commit 07cb24a
Show file tree
Hide file tree
Showing 3 changed files with 6 additions and 9 deletions.
2 changes: 2 additions & 0 deletions book/src/languages.md
Original file line number Diff line number Diff line change
Expand Up @@ -150,6 +150,8 @@ They have to be defined in the `[language-server]` table as described in the pre

Different languages can use the same language server instance, e.g. `typescript-language-server` is used for javascript, jsx, tsx and typescript by default.

The definition order of language servers affects the order in the results list of code action menu.

In case multiple language servers are specified in the `language-servers` attribute of a `language`,
it's often useful to only enable/disable certain language-server features for these language servers.

Expand Down
8 changes: 4 additions & 4 deletions helix-term/src/commands/lsp.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use futures_util::{stream::FuturesUnordered, FutureExt};
use futures_util::{stream::FuturesOrdered, FutureExt};
use helix_lsp::{
block_on,
lsp::{
Expand Down Expand Up @@ -341,7 +341,7 @@ pub fn symbol_picker(cx: &mut Context) {

let mut seen_language_servers = HashSet::new();

let mut futures: FuturesUnordered<_> = doc
let mut futures: FuturesOrdered<_> = doc
.language_servers_with_feature(LanguageServerFeature::DocumentSymbols)
.filter(|ls| seen_language_servers.insert(ls.id()))
.map(|language_server| {
Expand Down Expand Up @@ -416,7 +416,7 @@ pub fn workspace_symbol_picker(cx: &mut Context) {
let get_symbols = move |pattern: String, editor: &mut Editor| {
let doc = doc!(editor);
let mut seen_language_servers = HashSet::new();
let mut futures: FuturesUnordered<_> = doc
let mut futures: FuturesOrdered<_> = doc
.language_servers_with_feature(LanguageServerFeature::WorkspaceSymbols)
.filter(|ls| seen_language_servers.insert(ls.id()))
.map(|language_server| {
Expand Down Expand Up @@ -574,7 +574,7 @@ pub fn code_action(cx: &mut Context) {

let mut seen_language_servers = HashSet::new();

let mut futures: FuturesUnordered<_> = doc
let mut futures: FuturesOrdered<_> = doc
.language_servers_with_feature(LanguageServerFeature::CodeAction)
.filter(|ls| seen_language_servers.insert(ls.id()))
// TODO this should probably already been filtered in something like "language_servers_with_feature"
Expand Down
5 changes: 0 additions & 5 deletions helix-term/src/ui/completion.rs
Original file line number Diff line number Diff line change
Expand Up @@ -285,11 +285,6 @@ impl Completion {
let language_server = language_server!(item);
let offset_encoding = language_server.offset_encoding();

let language_server = editor
.language_servers
.get_by_id(item.language_server_id)
.unwrap();

// resolve item if not yet resolved
if !item.resolved {
if let Some(resolved) =
Expand Down

0 comments on commit 07cb24a

Please sign in to comment.