fix: web search not working in :web filter mode

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 <noreply@anthropic.com>
This commit is contained in:
2025-12-28 18:33:34 +01:00
parent e680032d0e
commit e73793dd6e
2 changed files with 19 additions and 3 deletions

View File

@@ -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() {

View File

@@ -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<LaunchItem> {
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,