@@ -926,22 +926,32 @@ impl Document {
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())
935+ /// Language name for the document. Corresponds to the `name` key in
936+ /// `languages.toml` configuration.
937+ pub fn language_name(&self) -> Option<&str> {
940+ .map(|language| language.language_id.as_str())
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()?;
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()))
947 /// Corresponding [`LanguageConfiguration`].
957 /// Corresponding [`LanguageConfiguration`].