@@ -26,7 +26,11 @@ from flask import url_for, Response, make_response, redirect
2626from flask import send_from_directory
2727
2828from 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
3034from searx.utils import UnicodeWriter
3135from searx.utils import highlight_content, html_to_text
3236from searx.languages import language_codes
@@ -98,17 +102,18 @@ def parse_query(query):
98102 query_engines = []
99103 query_parts = query.split()
100104
101− if query_parts[0].startswith('-'):
102− engine_name = query_parts[0][1:].replace('_', ' ')
103− if engine_name in engines:
105+ if query_parts[0].startswith('!'):
106+ prefix = query_parts[0][1:].replace('_', ' ')
107+ if prefix in engine_shortcuts:
104108 query_engines.append({'category': 'none',
105− 'name': query_parts[0][1:]})
106− elif query_parts[0].startswith('!'):
107− category_name = query_parts[0][1:].replace('_', ' ')
108− if category_name in categories:
109− query_engines.extend({'category': category_name,
109+ 'name': engine_shortcuts[prefix]})
110+ elif prefix in engines:
111+ query_engines.append({'category': 'none',
112+ 'name': prefix})
113+ elif prefix in categories:
114+ query_engines.extend({'category': prefix,
110115 'name': engine.name}
111− for engine in categories[category_name])
116+ for engine in categories[prefix])
112117
113118 if len(query_engines):
114119 query = query.replace(query_parts[0], '', 1).strip()