on master help sign in
Derive Document language name from languages.toml name key (#3338)
5f043ddMichael Davis
helix-term/src/commands/lsp.rs+1−4
@@ -863,10 +863,7 @@ pub fn signature_help_impl(cx: &mut Context, invoked: SignatureHelpInvoked) {
863 }
863 }
864 };
864 };
865 let doc = doc!(editor);
865 let doc = doc!(editor);
866− let language = doc
866+ let language = doc.language_name().unwrap_or("");
867− .language()
868− .and_then(|scope| scope.strip_prefix("source."))
869− .unwrap_or("");
870
867
871 let signature = match response
868 let signature = match response
872 .signatures
869 .signatures
helix-term/src/ui/completion.rs+1−4
@@ -324,10 +324,7 @@ impl Component for Completion {
324 // option.documentation
324 // option.documentation
325
325
326 let (view, doc) = current!(cx.editor);
326 let (view, doc) = current!(cx.editor);
327− let language = doc
327+ let language = doc.language_name().unwrap_or("");
328− .language()
329− .and_then(|scope| scope.strip_prefix("source."))
330− .unwrap_or("");
331 let text = doc.text().slice(..);
328 let text = doc.text().slice(..);
332 let cursor_pos = doc.selection(view.id).primary().cursor(text);
329 let cursor_pos = doc.selection(view.id).primary().cursor(text);
333 let coords = helix_core::visual_coords_at_pos(text, cursor_pos, doc.tab_width());
330 let coords = helix_core::visual_coords_at_pos(text, cursor_pos, doc.tab_width());
helix-term/src/ui/statusline.rs+1−1
@@ -329,7 +329,7 @@ fn render_file_type<F>(context: &mut RenderContext, write: F)
329where
329where
330 F: Fn(&mut RenderContext, String, Option<Style>) + Copy,
330 F: Fn(&mut RenderContext, String, Option<Style>) + Copy,
331{
331{
332− let file_type = context.doc.language_id().unwrap_or("text");
332+ let file_type = context.doc.language_name().unwrap_or("text");
333
333
334 write(context, format!(" {} ", file_type), None);
334 write(context, format!(" {} ", file_type), None);
335}
335}
helix-view/src/document.rs+13−3
@@ -926,22 +926,32 @@ impl Document {
926 }
926 }
927
927
928 /// Corresponding language scope name. Usually `source.<lang>`.
928 /// Corresponding language scope name. Usually `source.<lang>`.
929− pub fn language(&self) -> Option<&str> {
929+ pub fn language_scope(&self) -> Option<&str> {
930 self.language
930 self.language
931 .as_ref()
931 .as_ref()
932 .map(|language| language.scope.as_str())
932 .map(|language| language.scope.as_str())
933 }
933 }
934
934
935+ /// Language name for the document. Corresponds to the `name` key in
936+ /// `languages.toml` configuration.
937+ pub fn language_name(&self) -> Option<&str> {
938+ self.language
939+ .as_ref()
940+ .map(|language| language.language_id.as_str())
941+ }
942+
935 /// Language ID for the document. Either the `language-id` from the
943 /// Language ID for the document. Either the `language-id` from the
936 /// `language-server` configuration, or the document language if no
944 /// `language-server` configuration, or the document language if no
937 /// `language-id` has been specified.
945 /// `language-id` has been specified.
938 pub fn language_id(&self) -> Option<&str> {
946 pub fn language_id(&self) -> Option<&str> {
939− self.language_config()?
947+ let language_config = self.language.as_deref()?;
948+
949+ language_config
940 .language_server
950 .language_server
941 .as_ref()?
951 .as_ref()?
942 .language_id
952 .language_id
943 .as_deref()
953 .as_deref()
944− .or_else(|| Some(self.language()?.rsplit_once('.')?.1))
954+ .or(Some(language_config.language_id.as_str()))
945 }
955 }
946
956
947 /// Corresponding [`LanguageConfiguration`].
957 /// Corresponding [`LanguageConfiguration`].