diff --git a/Plugin/Makefile b/Plugin/Makefile
index c6c6a64f55cd74b75a1a559ceff3ace5d3b4df13..2fcfa9b771547744f983388f2a9f60245897c097 100644
--- a/Plugin/Makefile
+++ b/Plugin/Makefile
@@ -1,4 +1,4 @@
-# $Id: Makefile,v 1.2 2001-03-04 20:57:03 remacle Exp $
+# $Id: Makefile,v 1.3 2001-03-05 02:02:41 remacle Exp $
 #
 # Makefile for "libAdapt.a"
 #
@@ -18,7 +18,7 @@ OS_FLAGS      =
 VERSION_FLAGS = 
 
 RMFLAGS   = -f
-CFLAGS    = $(C_FLAGS) $(OS_FLAGS) $(VERSION_FLAGS) $(INCLUDE) 
+CFLAGS    = $(C_FLAGS) $(OS_FLAGS) $(VERSION_FLAGS) $(INCLUDE) $(GUI_INCLUDE) 
 
 SRC = Plugin.cpp
 
diff --git a/Plugin/Plugin.cpp b/Plugin/Plugin.cpp
index 1dc7774ebeaae3bc50af7bcbab0c30c3e7d8090c..c1f7a651a5fae0f17f878e626a644d96ccaa311d 100644
--- a/Plugin/Plugin.cpp
+++ b/Plugin/Plugin.cpp
@@ -3,6 +3,7 @@
 #include <map>
 #include "Plugin.h"
 #include "Message.h"
+#include <FL/filename.H>
 using namespace std;
 
 const char *GMSH_PluginEntry = "GMSH_RegisterPlugin";
@@ -57,13 +58,28 @@ GMSH_PluginManager* GMSH_PluginManager::Instance()
 
 void GMSH_PluginManager::RegisterDefaultPlugins()
 {
-  // For testing
+  struct dirent **list;
+  char ext[6];
 
-  AddPlugin ("/cygdrive/c/develop/gmsh/Plugin/lib","libCutPlane");
-  return;
   char *homeplugins = getenv ("GMSHPLUGINSHOME");
-  if(!homeplugins)return;
-  
+  if(!homeplugins)
+    homeplugins = "./Plugin/lib";
+  int nbFiles = filename_list(homeplugins,&list);
+  if(nbFiles <= 0)  return;
+  for(int i=0;i<nbFiles;i++)
+    {
+      char *name = list[i]->d_name;
+      if(strlen(name) > 3)
+	{
+	  strcpy(ext,name+(strlen(name)-3));
+	  if(!strcmp(ext,".so"))
+	  {
+	    AddPlugin(homeplugins,name);
+	  }
+	}
+    }
+  for(int i=0;i<nbFiles;i++)free(list[i]);
+  free (list);
 }
 
 void GMSH_PluginManager::AddPlugin( char *dirName, char *pluginName)
@@ -78,9 +94,9 @@ void GMSH_PluginManager::AddPlugin( char *dirName, char *pluginName)
   char plugin_copyright[256];
   char plugin_help[256];
   class GMSH_Plugin* (*RegisterPlugin)(void);
-  sprintf(dynamic_lib,"%s%s%s.so",dirName,SLASH,pluginName);
+  sprintf(dynamic_lib,"%s%s%s",dirName,SLASH,pluginName);
   Msg(INFO,"Opening Plugin %s",dynamic_lib);
-  void *hlib = dlopen (dynamic_lib,RTLD_LAZY);
+  void *hlib = dlopen (dynamic_lib,RTLD_NOW);
   char *err = dlerror();
   if(hlib == NULL)
     {
diff --git a/Plugin/Plugin.h b/Plugin/Plugin.h
index 3b9225d019ca7290921495deb4efc76991d67b9c..fff007b00d38a3c3b7c75f429718b5f9cf22d109 100644
--- a/Plugin/Plugin.h
+++ b/Plugin/Plugin.h
@@ -51,7 +51,7 @@ public:
 class GMSH_PluginManager
 {
   GMSH_PluginManager();
-  ~GMSH_PluginManager();
+  virtual ~GMSH_PluginManager();
   static GMSH_PluginManager *instance;
   PluginContainer* allPlugins;
 public :