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,