Index: src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionManager.java
===================================================================
--- src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionManager.java	(revision 4279)
+++ src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionManager.java	(working copy)
@@ -2,6 +2,7 @@
 package org.openstreetmap.josm.gui.tagging.ac;
 
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
@@ -242,8 +243,6 @@
      * tag keys
      *
      * @param list the list to populate
-     * @param append true to add the keys to the list; false, to replace the keys
-     * in the list by the keys in the cache
      */
     public void populateWithKeys(AutoCompletionList list) {
         list.add(getPresetKeys(), AutoCompletionItemPritority.IS_IN_STANDARD);
@@ -256,24 +255,53 @@
      *
      * @param list the list to populate
      * @param key the tag key
-     * @param append true to add the values to the list; false, to replace the values
-     * in the list by the tag values
      */
     public void populateWithTagValues(AutoCompletionList list, String key) {
-        list.add(getPresetValues(key), AutoCompletionItemPritority.IS_IN_STANDARD);
-        list.add(getDataValues(key), AutoCompletionItemPritority.IS_IN_DATASET);
+        populateWithTagValues(list, Arrays.asList(key));
     }
 
+    /**
+     * Populates the an {@see AutoCompletionList} with the currently cached
+     * values for some given tags
+     *
+     * @param list the list to populate
+     * @param key the tag keys
+     */
+    public void populateWithTagValues(AutoCompletionList list, List<String> keys) {
+        for (String key : keys) {
+            list.add(getPresetValues(key), AutoCompletionItemPritority.IS_IN_STANDARD);
+            list.add(getDataValues(key), AutoCompletionItemPritority.IS_IN_DATASET);
+        }
+    }
+
+    /**
+     * Returns the currently cached tag keys.
+     * @return a list of tag keys
+     */
     public List<AutoCompletionListItem> getKeys() {
         AutoCompletionList list = new AutoCompletionList();
         populateWithKeys(list);
-        return new ArrayList<AutoCompletionListItem>(list.getList());
+        return list.getList();
     }
 
+    /**
+     * Returns the currently cached tag values for a given tag key.
+     * @param key the tag key
+     * @return a list of tag values
+     */
     public List<AutoCompletionListItem> getValues(String key) {
+        return getValues(Arrays.asList(key));
+    }
+
+    /**
+     * Returns the currently cached tag values for a given list of tag keys.
+     * @param keys the tag keys
+     * @return a list of tag values
+     */
+    public List<AutoCompletionListItem> getValues(List<String> keys) {
         AutoCompletionList list = new AutoCompletionList();
-        populateWithTagValues(list, key);
-        return new ArrayList<AutoCompletionListItem>(list.getList());
+        populateWithTagValues(list, keys);
+        return list.getList();
     }
 
     /*********************************************************
Index: src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionList.java
===================================================================
--- src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionList.java	(revision 4279)
+++ src/org/openstreetmap/josm/gui/tagging/ac/AutoCompletionList.java	(working copy)
@@ -257,7 +257,11 @@
         return filtered.get(idx);
     }
 
-    List<AutoCompletionListItem> getList() {
+    ArrayList<AutoCompletionListItem> getList() {
+        return list;
+    }
+
+    List<AutoCompletionListItem> getUnmodifiableList() {
         return Collections.unmodifiableList(list);
     }
 
Index: src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java
===================================================================
--- src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(revision 4279)
+++ src/org/openstreetmap/josm/gui/dialogs/properties/PropertiesDialog.java	(working copy)
@@ -22,6 +22,7 @@
 import java.net.URI;
 import java.net.URLEncoder;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Collections;
 import java.util.Comparator;
@@ -248,7 +249,7 @@
         });
         values.setEditable(true);
 
-        List<AutoCompletionListItem> valueList = autocomplete.getValues(key);
+        List<AutoCompletionListItem> valueList = autocomplete.getValues(getAutocompletionKeys(key));
         Collections.sort(valueList, defaultACItemComparator);
 
         values.setPossibleACItems(valueList);
@@ -368,6 +369,20 @@
     }
 
     /**
+     * For a given key k, return a list of keys which are used as keys for 
+     * auto-completing values to increase the search space.
+     * @param key the key k
+     * @return a list of keys
+     */
+    static List<String> getAutocompletionKeys(String key) {
+        if ("name".equals(key) || "addr:street".equals(key)) {
+            return Arrays.asList("addr:street", "name");
+        } else {
+            return Arrays.asList(key);
+        }
+    }
+
+    /**
      * This simply fires up an relation editor for the relation shown; everything else
      * is the editor's business.
      *
@@ -477,7 +492,7 @@
             @Override public void focusGained(FocusEvent e) {
                 String key = keys.getEditor().getItem().toString();
 
-                List<AutoCompletionListItem> valueList = autocomplete.getValues(key);
+                List<AutoCompletionListItem> valueList = autocomplete.getValues(getAutocompletionKeys(key));
                 Collections.sort(valueList, defaultACItemComparator);
 
                 values.setPossibleACItems(valueList);
