Skip to content

Commit

Permalink
Use correct language ID for JavaScript/TypeScript
Browse files Browse the repository at this point in the history
  • Loading branch information
hovsater committed Jan 14, 2022
1 parent 97e6f2a commit 93bed62
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 14 deletions.
1 change: 1 addition & 0 deletions helix-core/src/syntax.rs
Original file line number Diff line number Diff line change
Expand Up @@ -95,6 +95,7 @@ pub struct LanguageServerConfiguration {
#[serde(default)]
#[serde(skip_serializing_if = "Vec::is_empty")]
pub args: Vec<String>,
pub language_id: Option<String>,
}

#[derive(Debug, Serialize, Deserialize)]
Expand Down
8 changes: 2 additions & 6 deletions helix-term/src/application.rs
Original file line number Diff line number Diff line change
Expand Up @@ -358,12 +358,8 @@ impl Application {

// trigger textDocument/didOpen for docs that are already open
for doc in docs {
// TODO: extract and share with editor.open
let language_id = doc
.language()
.and_then(|s| s.split('.').last()) // source.rust
.map(ToOwned::to_owned)
.unwrap_or_default();
let language_id =
doc.language_id().map(ToOwned::to_owned).unwrap_or_default();

tokio::spawn(language_server.text_document_did_open(
doc.url().unwrap(),
Expand Down
13 changes: 13 additions & 0 deletions helix-view/src/document.rs
Original file line number Diff line number Diff line change
Expand Up @@ -844,6 +844,19 @@ impl Document {
.map(|language| language.scope.as_str())
}

/// Language ID for the document. Either the `language-id` from the
// `language-server` configuration, or the document language if no
/// `language-id` has been specified.
pub fn language_id(&self) -> Option<&str> {
let fallback = self.language().and_then(|s| s.split('.').last());

self.language
.as_ref()
.and_then(|config| config.language_server.as_ref())
.and_then(|lsp_config| lsp_config.language_id.as_ref())
.map_or(fallback, |id| Some(id.as_str()))
}

/// Corresponding [`LanguageConfiguration`].
pub fn language_config(&self) -> Option<&LanguageConfiguration> {
self.language.as_deref()
Expand Down
7 changes: 2 additions & 5 deletions helix-view/src/editor.rs
Original file line number Diff line number Diff line change
Expand Up @@ -307,11 +307,8 @@ impl Editor {
if let Some(language_server) = doc.language_server() {
tokio::spawn(language_server.text_document_did_close(doc.identifier()));
}
let language_id = doc
.language()
.and_then(|s| s.split('.').last()) // source.rust
.map(ToOwned::to_owned)
.unwrap_or_default();

let language_id = doc.language_id().map(ToOwned::to_owned).unwrap_or_default();

// TODO: this now races with on_init code if the init happens too quickly
tokio::spawn(language_server.text_document_did_open(
Expand Down
6 changes: 3 additions & 3 deletions languages.toml
Original file line number Diff line number Diff line change
Expand Up @@ -128,7 +128,7 @@ roots = []
comment-token = "//"
# TODO: highlights-jsx, highlights-params

language-server = { command = "typescript-language-server", args = ["--stdio"] }
language-server = { command = "typescript-language-server", args = ["--stdio"], language-id = "javascript" }
indent = { tab-width = 2, unit = " " }

[[language]]
Expand All @@ -140,7 +140,7 @@ shebangs = []
roots = []
# TODO: highlights-jsx, highlights-params

language-server = { command = "typescript-language-server", args = ["--stdio"] }
language-server = { command = "typescript-language-server", args = ["--stdio"], language-id = "typescript"}
indent = { tab-width = 2, unit = " " }

[[language]]
Expand All @@ -151,7 +151,7 @@ file-types = ["tsx"]
roots = []
# TODO: highlights-jsx, highlights-params

language-server = { command = "typescript-language-server", args = ["--stdio"] }
language-server = { command = "typescript-language-server", args = ["--stdio"], language-id = "typescriptreact" }
indent = { tab-width = 2, unit = " " }

[[language]]
Expand Down

0 comments on commit 93bed62

Please sign in to comment.