@@ -26,7 +26,11 @@ from flask import url_for, Response, make_response, redirect
26from flask import send_from_directory
26from flask import send_from_directory
28from searx import settings, searx_dir
28from searx import settings, searx_dir
29−from searx.engines import search, categories, engines, get_engines_stats
29+from searx.engines import search
30+from searx.engines import categories
31+from searx.engines import engines
32+from searx.engines import get_engines_stats
33+from searx.engines import engine_shortcuts
30from searx.utils import UnicodeWriter
34from searx.utils import UnicodeWriter
31from searx.utils import highlight_content, html_to_text
35from searx.utils import highlight_content, html_to_text
32from searx.languages import language_codes
36from searx.languages import language_codes
@@ -98,17 +102,18 @@ def parse_query(query):
98 query_engines = []
102 query_engines = []
99 query_parts = query.split()
103 query_parts = query.split()
101− if query_parts[0].startswith('-'):
105+ if query_parts[0].startswith('!'):
102− engine_name = query_parts[0][1:].replace('_', ' ')
106+ prefix = query_parts[0][1:].replace('_', ' ')
103− if engine_name in engines:
107+ if prefix in engine_shortcuts:
104 query_engines.append({'category': 'none',
108 query_engines.append({'category': 'none',
105− 'name': query_parts[0][1:]})
109+ 'name': engine_shortcuts[prefix]})
106− elif query_parts[0].startswith('!'):
110+ elif prefix in engines:
107− category_name = query_parts[0][1:].replace('_', ' ')
111+ query_engines.append({'category': 'none',
108− if category_name in categories:
113+ elif prefix in categories:
109− query_engines.extend({'category': category_name,
114+ query_engines.extend({'category': prefix,
110 'name': engine.name}
115 'name': engine.name}
111− for engine in categories[category_name])
116+ for engine in categories[prefix])
113 if len(query_engines):
118 if len(query_engines):
114 query = query.replace(query_parts[0], '', 1).strip()
119 query = query.replace(query_parts[0], '', 1).strip()