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 06222d02a6bd44b824e9e33124d0d800e8fb9561..174965952fde76c8d260bbf9f363922609f38b9c 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 6c074a2d75e0ef59523bd52dbfaf53bb563025d2..62de0c4e44f5836489e75c83fbbdde1f7efe1fec 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 06891d780d285ab9a13a65f91c7396d3f6cdbfc6..046076a48ec51244a5fc310f5cf0a7e9ea8e98cc 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() }