From e73793dd6e47c1703bc31db8f50b16a9a84302ee Mon Sep 17 00:00:00 2001 From: vikingowl Date: Sun, 28 Dec 2025 18:33:34 +0100 Subject: [PATCH] fix: web search not working in :web filter mode MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Added evaluate_raw() method to WebSearchProvider and handler in search_with_frecency() to support raw queries when using :web prefix. Same pattern as calculator fix - trigger prefixes (?, web) call evaluate() while filter mode (:web) calls evaluate_raw(). 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- src/providers/mod.rs | 6 ++++++ src/providers/websearch.rs | 16 +++++++++++++--- 2 files changed, 19 insertions(+), 3 deletions(-) diff --git a/src/providers/mod.rs b/src/providers/mod.rs index 4ac6743..ded847f 100644 --- a/src/providers/mod.rs +++ b/src/providers/mod.rs @@ -264,6 +264,12 @@ impl ProviderManager { results.push((web_result, 9000)); } } + // Also check for raw query when in :web filter mode + else if filter.active_prefix() == Some(ProviderType::WebSearch) && !query.is_empty() { + if let Some(web_result) = self.websearch.evaluate_raw(query) { + results.push((web_result, 9000)); + } + } // Empty query (after checking special providers) - return frecency-sorted items if query.is_empty() { diff --git a/src/providers/websearch.rs b/src/providers/websearch.rs index 9050f6c..813195b 100644 --- a/src/providers/websearch.rs +++ b/src/providers/websearch.rs @@ -113,14 +113,24 @@ impl WebSearchProvider { return None; } - let url = self.build_search_url(search_term); + self.evaluate_raw(search_term) + } + + /// Evaluate a raw search term (for :web filter mode) + pub fn evaluate_raw(&self, search_term: &str) -> Option { + let trimmed = search_term.trim(); + if trimmed.is_empty() { + return None; + } + + let url = self.build_search_url(trimmed); // Use xdg-open to open the browser let command = format!("xdg-open '{}'", url); Some(LaunchItem { - id: format!("websearch:{}", search_term), - name: format!("Search: {}", search_term), + id: format!("websearch:{}", trimmed), + name: format!("Search: {}", trimmed), description: Some("Open in browser".to_string()), icon: Some("web-browser".to_string()), provider: ProviderType::WebSearch,