Index: trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 1374)
+++ trunk/src/org/openstreetmap/josm/actions/search/SearchAction.java	(revision 1375)
@@ -90,4 +90,5 @@
                 + "<li>"+tr("<b>selected</b> - all selected objects")+"</li>"
                 + "<li>"+tr("<b>incomplete</b> - all incomplete objects")+"</li>"
+                + "<li>"+tr("<b>untagged</b> - all untagged objects")+"</li>"
                 + "<li>"+tr("Use <b>|</b> or <b>OR</b> to combine with logical or")+"</li>"
                 + "<li>"+tr("Use <b>\"</b> to quote operators (e.g. if key contains :)")+"</li>"
Index: trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java	(revision 1374)
+++ trunk/src/org/openstreetmap/josm/actions/search/SearchCompiler.java	(revision 1375)
@@ -293,4 +293,11 @@
     }
 
+    private static class Untagged extends Match {
+        @Override public boolean match(OsmPrimitive osm) {
+            return !osm.tagged;
+        }
+        @Override public String toString() {return "untagged";}
+    }
+
     public static class ParseError extends Exception {
         public ParseError(String msg) {
@@ -376,4 +383,6 @@
         } else if (tok.equals("incomplete")) {
             return new Incomplete();
+        } else if (tok.equals("untagged")) {
+            return new Untagged();
         } else if (tok.equals("selected")) {
             return new Selected();
