@@ -926,22 +926,32 @@ impl Document {
926926 }
927927
928928 /// Corresponding language scope name. Usually `source.<lang>`.
929− pub fn language(&self) -> Option<&str> {
929+ pub fn language_scope(&self) -> Option<&str> {
930930 self.language
931931 .as_ref()
932932 .map(|language| language.scope.as_str())
933933 }
934934
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+
935943 /// Language ID for the document. Either the `language-id` from the
936944 /// `language-server` configuration, or the document language if no
937945 /// `language-id` has been specified.
938946 pub fn language_id(&self) -> Option<&str> {
939− self.language_config()?
947+ let language_config = self.language.as_deref()?;
948+
949+ language_config
940950 .language_server
941951 .as_ref()?
942952 .language_id
943953 .as_deref()
944− .or_else(|| Some(self.language()?.rsplit_once('.')?.1))
954+ .or(Some(language_config.language_id.as_str()))
945955 }
946956
947957 /// Corresponding [`LanguageConfiguration`].