Index: applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/Buildings.java
===================================================================
--- applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/Buildings.java	(revision 20483)
+++ applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/Buildings.java	(revision 20484)
@@ -79,5 +79,5 @@
     BuildingsImageModifier bim = new BuildingsImageModifier();
 
-    private double snapDistance = Main.pref.getDouble("cadastrewms.snap-distance", 60); // in centimeters
+    private double snapDistance = Main.pref.getDouble("cadastrewms.snap-distance", 50); // in centimeters
     private double snapDistanceSq = snapDistance*snapDistance;
     private double dx, dy;
@@ -173,4 +173,6 @@
                             cmds.add(new MoveCommand(nearestNode, dx, dy));
                         }
+                        if (i>0)
+                            joinExistingNodesInNewSegment(way2.getNode(i-1), way2.getNode(i));
                     }
                     wayToAdd.addNode(wayToAdd.getNode(0));
@@ -411,4 +413,22 @@
     }
     
+    private void joinExistingNodesInNewSegment(Node n1, Node n2) {
+        // TODO
+        double minx = Math.min(n1.getEastNorth().getX(), n2.getEastNorth().getX());
+        double miny = Math.min(n1.getEastNorth().getY(), n2.getEastNorth().getY());
+        double maxx = Math.max(n1.getEastNorth().getX(), n2.getEastNorth().getX());
+        double maxy = Math.max(n1.getEastNorth().getY(), n2.getEastNorth().getY());
+        BBox bbox = new BBox(minx-snapDistance, miny-snapDistance, maxx+snapDistance, maxy+snapDistance);
+        DataSet ds = getCurrentDataSet();
+        if (ds == null)
+            return;
+        List<Node> ln = ds.searchNodes(bbox);
+        int i=0;
+        for (Node n:ln)
+            if (n.isUsable())
+                i++;
+        System.out.println("usable nodes in boxe="+i);
+    }
+    
     private void joinNodeToExistingWays(List<WaySegment> wss, Node newNode, Collection<Command> cmds) {
         HashMap<Way, List<Integer>> insertPoints = new HashMap<Way, List<Integer>>();
Index: applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/CadastrePlugin.java
===================================================================
--- applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/CadastrePlugin.java	(revision 20483)
+++ applications/editors/josm/plugins/cadastre-fr/src/cadastre_fr/CadastrePlugin.java	(revision 20484)
@@ -150,9 +150,9 @@
         System.out.println("Pluging cadastre-fr v"+VERSION+" started...");
         if (Main.pref.get("cadastrewms.cacheDir").equals(""))
-            cacheDir = Main.pref.getPreferencesDir()+"plugins"+File.pathSeparatorChar+"cadastrewms"+File.pathSeparatorChar;
+            cacheDir = Main.pref.getPreferencesDir()+"plugins"+File.separatorChar+"cadastrewms"+File.separatorChar;
         else {
             cacheDir = Main.pref.get("cadastrewms.cacheDir");
-            if (cacheDir.charAt(cacheDir.length()-1) != File.pathSeparatorChar )
-                cacheDir += File.pathSeparatorChar;
+            if (cacheDir.charAt(cacheDir.length()-1) != File.separatorChar )
+                cacheDir += File.separatorChar;
         }
         System.out.println("current cache directory: "+cacheDir);
@@ -328,8 +328,7 @@
             if (oldFrame == null && newFrame != null) {
                 setEnabledAll(true);
-                Main.map.addMapMode(new IconToggleButton
-                        (new WMSAdjustAction(Main.map)));
-                Main.map.addMapMode(new IconToggleButton
-                        (new Buildings(Main.map)));
+                Main.map.addMapMode(new IconToggleButton(new WMSAdjustAction(Main.map)));
+                if (Main.pref.getBoolean("cadastrewms.buildingsMenu", false))
+                    Main.map.addMapMode(new IconToggleButton(new Buildings(Main.map)));
             } else if (oldFrame != null && newFrame == null) {
                 setEnabledAll(false);
