Index: /home/dnaber/workspace/JOSM/src/org/openstreetmap/josm/actions/search/SearchAction.java
===================================================================
--- /home/dnaber/workspace/JOSM/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 631)
+++ /home/dnaber/workspace/JOSM/src/org/openstreetmap/josm/actions/search/SearchAction.java	(working copy)
@@ -87,18 +87,38 @@
 		try {
 			Collection<OsmPrimitive> sel = Main.ds.getSelected();
 			SearchCompiler.Match matcher = SearchCompiler.compile(search, caseSensitive);
+			int foundMatches = 0;
 			for (OsmPrimitive osm : Main.ds.allNonDeletedPrimitives()) {
 				if (mode == SearchMode.replace) {
-					if (matcher.match(osm))
+					if (matcher.match(osm)) {
 						sel.add(osm);
-					else
+						foundMatches++;
+					} else {
 						sel.remove(osm);
-				} else if (mode == SearchMode.add && !osm.selected && matcher.match(osm))
+					}
+				} else if (mode == SearchMode.add && !osm.selected && matcher.match(osm)) {
 					sel.add(osm);
-				else if (mode == SearchMode.remove && osm.selected && matcher.match(osm))
+					foundMatches++;
+				} else if (mode == SearchMode.remove && osm.selected && matcher.match(osm)) {
 					sel.remove(osm);
+					foundMatches++;
+				}
 			}
 			Main.ds.setSelected(sel);
+			if (foundMatches == 0) {
+				String msg = null;
+				if (mode == SearchMode.replace) {
+					msg = tr("No match found for ''{0}''", search);
+				} else if (mode == SearchMode.add) {
+					msg = tr("Nothing added to selection by searching for ''{0}''", search);
+				} else if (mode == SearchMode.remove) {
+					msg = tr("Nothing removed from selection by searching for ''{0}''", search);
+				}
+				Main.map.statusLine.setHelpText(msg);
+				JOptionPane.showMessageDialog(Main.parent, msg);
+			} else {
+				Main.map.statusLine.setHelpText(tr("Found {0} matches", foundMatches));
+			}
 		} catch (SearchCompiler.ParseError e) {
 			JOptionPane.showMessageDialog(Main.parent, e.getMessage());
 		}
