From 36e4dcef16f060f4d4fd063d982909bbe4160f19 Mon Sep 17 00:00:00 2001 From: Antonio Scandurra Date: Fri, 20 Jan 2023 10:41:40 +0100 Subject: [PATCH] Avoid allocating a string to compare language names --- Cargo.lock | 1 + crates/language/Cargo.toml | 1 + crates/language/src/language.rs | 4 +++- 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/Cargo.lock b/Cargo.lock index 06222d02a6..174965952f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3157,6 +3157,7 @@ dependencies = [ "tree-sitter-ruby", "tree-sitter-rust", "tree-sitter-typescript", + "unicase", "unindent", "util", ] diff --git a/crates/language/Cargo.toml b/crates/language/Cargo.toml index 6c074a2d75..62de0c4e44 100644 --- a/crates/language/Cargo.toml +++ b/crates/language/Cargo.toml @@ -53,6 +53,7 @@ smol = "1.2" tree-sitter = "0.20" tree-sitter-rust = { version = "*", optional = true } tree-sitter-typescript = { version = "*", optional = true } +unicase = "2.6" [dev-dependencies] client = { path = "../client", features = ["test-support"] } diff --git a/crates/language/src/language.rs b/crates/language/src/language.rs index 06891d780d..046076a48e 100644 --- a/crates/language/src/language.rs +++ b/crates/language/src/language.rs @@ -41,6 +41,7 @@ use std::{ use syntax_map::SyntaxSnapshot; use theme::{SyntaxTheme, Theme}; use tree_sitter::{self, Query}; +use unicase::UniCase; use util::ResultExt; #[cfg(any(test, feature = "test-support"))] @@ -467,10 +468,11 @@ impl LanguageRegistry { } pub fn language_for_name(&self, name: &str) -> Option> { + let name = UniCase::new(name); self.languages .read() .iter() - .find(|language| language.name().to_lowercase() == name.to_lowercase()) + .find(|language| UniCase::new(language.name()) == name) .cloned() }