diff --git a/Fltk/Callbacks.cpp b/Fltk/Callbacks.cpp
index aa626f229140de60c43205beca5193b9c259c8ba..e70cab024953f8bb79b5838c07a36b5db1a085b9 100644
--- a/Fltk/Callbacks.cpp
+++ b/Fltk/Callbacks.cpp
@@ -1,4 +1,4 @@
-// $Id: Callbacks.cpp,v 1.70 2001-07-31 14:06:16 geuzaine Exp $
+// $Id: Callbacks.cpp,v 1.71 2001-07-31 19:25:04 geuzaine Exp $
 
 #include <sys/types.h>
 #include <signal.h>
@@ -1643,7 +1643,6 @@ void view_options_plugin_cb(CALLBACK_ARGS){
 
   Fl_Window *pwindow = p->dialogBox->main_window;
 
-
   if(pwindow->shown())
     pwindow->redraw();
   else
diff --git a/Fltk/GUI.cpp b/Fltk/GUI.cpp
index 8ff60dacf2d6bb2fa9bb034c2918be079691282c..af1c7359a75c0525d3ed6d27f9bafb3297b6e816 100644
--- a/Fltk/GUI.cpp
+++ b/Fltk/GUI.cpp
@@ -1,4 +1,4 @@
-// $Id: GUI.cpp,v 1.99 2001-07-31 18:07:57 geuzaine Exp $
+// $Id: GUI.cpp,v 1.100 2001-07-31 19:25:04 geuzaine Exp $
 
 // To make the interface as visually consistent as possible, please:
 // - use the BH, BW, WB, IW values for button heights/widths, window borders, etc.
@@ -542,31 +542,20 @@ void GUI::wait(){
 //********************************* Create the menu window *****************************
 
 
-void GUI::add_post_plugins ( Fl_Menu_Button *button , int iView)
-{
+void GUI::add_post_plugins ( Fl_Menu_Button *button , int iView){
   char name[256],menuname[256];
   for(GMSH_PluginManager::iter it = GMSH_PluginManager::Instance()->begin();
       it != GMSH_PluginManager::Instance()->end();
-      ++it)
-    {
-      GMSH_Plugin *p = (*it).second;
-      if(p->getType() == GMSH_Plugin::GMSH_POST_PLUGIN)
-	{
-	  p->getName(name);
-	  std::pair<int,GMSH_Plugin*> *pair = 
-	    new  std::pair<int,GMSH_Plugin*>(iView,p);
-	  sprintf(menuname,"Plugins/%s/Run",name);
-	  button->add(menuname, 0,(Fl_Callback *)view_plugin_cb, 
-		      (void*)(pair), 0);
-	  if(p->getNbOptions())
-	    {
-	      sprintf(menuname,"Plugins/%s/Options...",name);
-	      button->add(menuname, 0,(Fl_Callback *)view_options_plugin_cb, 
-			  (void*)(pair), 0);
-	      p->dialogBox = 0;
-	    }
-	}
+      ++it){
+    GMSH_Plugin *p = (*it).second;
+    if(p->getType() == GMSH_Plugin::GMSH_POST_PLUGIN){
+      p->getName(name);
+      std::pair<int,GMSH_Plugin*> *pair = new std::pair<int,GMSH_Plugin*>(iView,p);
+      sprintf(menuname,"Plugins/%s...",name);
+      button->add(menuname, 0,(Fl_Callback *)view_options_plugin_cb, (void*)(pair), 0);
+      p->dialogBox = 0;
     }
+  }
 }
 
 void GUI::create_menu_window(int argc, char **argv){
@@ -2623,7 +2612,7 @@ void GUI::create_getdp_window(){
 	o->add("@c@.A General environment for the treatment");
 	o->add("@c@.of Discrete Problems");
 	o->add("");
-	o->add("@c@.Exerimental solver plug-in for Gmsh");
+	o->add("@c@.Experimental solver plugin for Gmsh");
 	o->add("");
 	o->add("@c@.Visit http://www.geuz.org/getdp/ for more info");
 	o->textsize(CTX.fontsize);
diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp
index a467797e6d5d37ce314983d430c1fcecae765869..d96543d75ca35d8be68554594a3118aab1b85a97 100644
--- a/Parser/Gmsh.tab.cpp
+++ b/Parser/Gmsh.tab.cpp
@@ -172,7 +172,7 @@
 #line 1 "Gmsh.y"
  
 
-// $Id: Gmsh.tab.cpp,v 1.97 2001-07-30 14:24:41 geuzaine Exp $
+// $Id: Gmsh.tab.cpp,v 1.98 2001-07-31 19:25:04 geuzaine Exp $
 
   //
   // Generaliser sprintf avec des chaines de caracteres
@@ -3944,7 +3944,7 @@ case 155:
       }
     catch (...)
       {
-	Msg(WARNING,"Unknown Option %s or plugin %s\n",yyvsp[-3].c,yyvsp[-6].c);
+	Msg(WARNING,"Unknown option '%s' or plugin '%s'",yyvsp[-3].c,yyvsp[-6].c);
       }
 #endif
   ;
@@ -3959,7 +3959,7 @@ case 156:
       }
     catch (...)
       {
-	Msg(WARNING,"Unknown Option %s or plugin %s\n",yyvsp[-3].c,yyvsp[-6].c);
+	Msg(WARNING,"Unknown option '%s' or plugin '%s'",yyvsp[-3].c,yyvsp[-6].c);
       }
 #endif
   ;
diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y
index 77fdeaed71a46353ac09103fd5d56aa3fc416080..9b88f8cacdd0b38077b9736e85a924722abd6560 100644
--- a/Parser/Gmsh.y
+++ b/Parser/Gmsh.y
@@ -1,6 +1,6 @@
 %{ 
 
-// $Id: Gmsh.y,v 1.84 2001-07-30 14:24:26 geuzaine Exp $
+// $Id: Gmsh.y,v 1.85 2001-07-31 19:25:04 geuzaine Exp $
 
   //
   // Generaliser sprintf avec des chaines de caracteres
@@ -1074,7 +1074,7 @@ Affectation :
       }
     catch (...)
       {
-	Msg(WARNING,"Unknown Option %s or plugin %s\n",$6,$3);
+	Msg(WARNING,"Unknown option '%s' or plugin '%s'",$6,$3);
       }
 #endif
   }
@@ -1087,7 +1087,7 @@ Affectation :
       }
     catch (...)
       {
-	Msg(WARNING,"Unknown Option %s or plugin %s\n",$6,$3);
+	Msg(WARNING,"Unknown option '%s' or plugin '%s'",$6,$3);
       }
 #endif
   }
diff --git a/Parser/Gmsh.yy.cpp b/Parser/Gmsh.yy.cpp
index bcbda4827a517b4f4a3326a2f71ebd20b5efe083..d054c2bb9c74846d551221a5e257e7ad0a42f787 100644
--- a/Parser/Gmsh.yy.cpp
+++ b/Parser/Gmsh.yy.cpp
@@ -2,7 +2,7 @@
 /* A lexical scanner generated by flex */
 
 /* Scanner skeleton version:
- * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.97 2001-07-30 14:24:41 geuzaine Exp $
+ * $Header: /cvsroot/gmsh/Parser/Gmsh.yy.cpp,v 1.98 2001-07-31 19:25:04 geuzaine Exp $
  */
 
 #define FLEX_SCANNER
@@ -990,7 +990,7 @@ char *yytext;
 #define INITIAL 0
 #line 2 "Gmsh.l"
 
-// $Id: Gmsh.yy.cpp,v 1.97 2001-07-30 14:24:41 geuzaine Exp $
+// $Id: Gmsh.yy.cpp,v 1.98 2001-07-31 19:25:04 geuzaine Exp $
 
 #include <stdio.h>
 #include <stdlib.h>
diff --git a/Plugin/CutMap.cpp b/Plugin/CutMap.cpp
index 5db2eb0860335fe86778377076ad9755166c1030..ef28d732b0105b3d1251d92f83dfe4e4a392f301 100644
--- a/Plugin/CutMap.cpp
+++ b/Plugin/CutMap.cpp
@@ -1,11 +1,11 @@
-// $Id: CutMap.cpp,v 1.12 2001-07-31 18:07:57 geuzaine Exp $
+// $Id: CutMap.cpp,v 1.13 2001-07-31 19:25:04 geuzaine Exp $
 
 #include "CutMap.h"
 #include "List.h"
 
 StringXNumber CutMapOptions_Number[] = {
-  { GMSH_FULLRC, "Value" , NULL , 1. },
-  { GMSH_FULLRC, "ViewNumber" , NULL , 1. }
+  { GMSH_FULLRC, "A" , NULL , 1. },
+  { GMSH_FULLRC, "iView" , NULL , 1. }
 };
 
 extern "C"
@@ -33,7 +33,7 @@ void GMSH_CutMapPlugin::getInfos(char *author, char *copyright, char *help_text)
   strcpy(author, "J.-F. Remacle (remacle@scorec.rpi.edu)");
   strcpy(copyright, "DGR (www.multiphysics.com)");
   strcpy(help_text, 
-	 "Extracts the isovalue surface of value 'Value' from a\n"
+	 "Extracts the isovalue surface of value A from a\n"
 	 "3D scalar map. Script name: Plugin(CutMap).");
 }
 
diff --git a/Plugin/CutPlane.cpp b/Plugin/CutPlane.cpp
index 22c942fa8b34d6aadced1439526be57c136bf910..81963b68bc191d3ca40211150291b4fae30a3d71 100644
--- a/Plugin/CutPlane.cpp
+++ b/Plugin/CutPlane.cpp
@@ -1,4 +1,4 @@
-// $Id: CutPlane.cpp,v 1.10 2001-07-31 18:07:57 geuzaine Exp $
+// $Id: CutPlane.cpp,v 1.11 2001-07-31 19:25:04 geuzaine Exp $
 
 #include "CutPlane.h"
 #include "List.h"
@@ -8,7 +8,7 @@ StringXNumber CutPlaneOptions_Number[] = {
   { GMSH_FULLRC, "B" , NULL , 0. },
   { GMSH_FULLRC, "C" , NULL , 0. },
   { GMSH_FULLRC, "D" , NULL , 0.01 },
-  { GMSH_FULLRC, "ViewNumber" , NULL , 1. }
+  { GMSH_FULLRC, "iView" , NULL , 1. }
 };
 
 extern "C"
@@ -38,7 +38,7 @@ void GMSH_CutPlanePlugin::getInfos(char *author, char *copyright, char *help_tex
   strcpy(author,"J.-F. Remacle (remacle@scorec.rpi.edu)");
   strcpy(copyright,"DGR (www.multiphysics.com)");
   strcpy(help_text,
-	 "Cuts a 3D scalar view view with the plane\n"
+	 "Cuts a 3D scalar view with the plane\n"
 	 "A*X + B*Y + C*Z + D = 0.\n"
 	 "Script name: Plugin(CutPlane).");
 }
diff --git a/Plugin/CutSphere.cpp b/Plugin/CutSphere.cpp
index 152832c89b0f95cf39736175c4c8cea135e5b433..6715b4e6ed6664f4cac9414212efcd002608f416 100644
--- a/Plugin/CutSphere.cpp
+++ b/Plugin/CutSphere.cpp
@@ -1,4 +1,4 @@
-// $Id: CutSphere.cpp,v 1.9 2001-07-31 18:07:57 geuzaine Exp $
+// $Id: CutSphere.cpp,v 1.10 2001-07-31 19:25:04 geuzaine Exp $
 
 #include <string.h>
 #include "CutSphere.h"
@@ -8,8 +8,8 @@ StringXNumber CutSphereOptions_Number[] = {
   { GMSH_FULLRC, "Xc" , NULL , 0. },
   { GMSH_FULLRC, "Yc" , NULL , 0. },
   { GMSH_FULLRC, "Zc" , NULL , 0. },
-  { GMSH_FULLRC, "R" , NULL , 0.25 },
-  { GMSH_FULLRC, "ViewNumber" , NULL , 1. }
+  { GMSH_FULLRC, "R"  , NULL , 0.25 },
+  { GMSH_FULLRC, "iView" , NULL , 1. }
 };
 
 extern "C"
diff --git a/Plugin/LevelsetPlugin.cpp b/Plugin/LevelsetPlugin.cpp
index 7dd67e7fd4221571ed48e9ff3c73a1379eddc4ed..39a2c48441e9dca2b6e5904fc2ee336eb4d9da25 100644
--- a/Plugin/LevelsetPlugin.cpp
+++ b/Plugin/LevelsetPlugin.cpp
@@ -1,4 +1,4 @@
-// $Id: LevelsetPlugin.cpp,v 1.7 2001-07-31 09:51:36 geuzaine Exp $
+// $Id: LevelsetPlugin.cpp,v 1.8 2001-07-31 19:25:04 geuzaine Exp $
 
 #include "LevelsetPlugin.h"
 #include "List.h"
@@ -101,7 +101,7 @@ Post_View *GMSH_LevelsetPlugin::execute (Post_View *v)
       EndView(1, filename, name);
       
       Msg(INFO, "Levelset plugin OK: created view '%s' (%d triangles)",
-	  name, List_Nbr(ActualView->ST));
+	  name, ActualView->NbST);
       processed = ActualView;
       return ActualView;
     }
diff --git a/Plugin/Plugin.cpp b/Plugin/Plugin.cpp
index 712802a8f570c0ddf481508c1377a4c6bb0e3317..6b0964d6738c80685ce2d5f543034c979b2309f6 100644
--- a/Plugin/Plugin.cpp
+++ b/Plugin/Plugin.cpp
@@ -1,4 +1,4 @@
-// $Id: Plugin.cpp,v 1.15 2001-07-31 10:04:57 geuzaine Exp $
+// $Id: Plugin.cpp,v 1.16 2001-07-31 19:25:05 geuzaine Exp $
 
 #ifndef _NODLL
 #include <dlfcn.h>
@@ -27,129 +27,105 @@ const char *GMSH_PluginEntry = "GMSH_RegisterPlugin";
 
 GMSH_PluginManager *GMSH_PluginManager::instance = 0;
 
-GMSH_PluginManager::GMSH_PluginManager()
-{
+GMSH_PluginManager::GMSH_PluginManager(){
 }
 
-GMSH_PluginManager::~GMSH_PluginManager()
-{
+GMSH_PluginManager::~GMSH_PluginManager(){
   for(iter it = allPlugins.begin();
       it != allPlugins.end();
-      ++it)delete (*it).second;
+      ++it) delete (*it).second;
 }
 
-GMSH_Plugin* GMSH_PluginManager::find (char *pluginName) 
-{
+GMSH_Plugin* GMSH_PluginManager::find (char *pluginName){
   iter it = allPlugins.find(pluginName);
-  if ( it == allPlugins.end()) return 0;
-
+  if (it == allPlugins.end()) return 0;
   return (*it).second;
 }
 
-void GMSH_PluginManager::Action( char *pluginName, char *action, void *data) 
-{
+void GMSH_PluginManager::Action( char *pluginName, char *action, void *data){
   GMSH_Plugin * plugin = find(pluginName);
-  if(!plugin)
-    {
-      throw 1;
-    }
-  if(!strcmp(action,"Run"))
-    {      
-      plugin->Run();
-    }
-  else if(!strcmp(action,"Save"))
-    {
-      plugin->Save();
-    }
-  else
-    {
-      throw 1;
-    }
+  if(!plugin){
+    throw 1;
+  }
+  if(!strcmp(action,"Run")){      
+    plugin->Run();
+  }
+  else if(!strcmp(action,"Save")){
+    plugin->Save();
+  }
+  else{
+    throw 1;
+  }
 }
 
-void GMSH_PluginManager::SetPluginOption (char *pluginName, char *option, char *value)
-{
+void GMSH_PluginManager::SetPluginOption (char *pluginName, char *option, char *value){
   GMSH_Plugin *plugin = find(pluginName);
-  if(!plugin)throw "Unknown Plugin Name";
-  
+
+  if(!plugin) throw "Unknown plugin name" ;
+
   if(!strcmp(option,"OutputFileName"))
-    {
-      strcpy(plugin->OutputFileName,value);
-    }
+    strcpy(plugin->OutputFileName,value);
   else if(!strcmp(option,"InputFileName"))
-    {
-      strcpy(plugin->InputFileName,value);
-    }
+    strcpy(plugin->InputFileName,value);
   else
-    {
-      throw "Unknown Plugin Option Name";
-    }
+    throw "Unknown plugin option name";
 }
 
-void GMSH_PluginManager::SetPluginOption (char *pluginName, char *option, double value)
-{
+void GMSH_PluginManager::SetPluginOption (char *pluginName, char *option, double value){
   GMSH_Plugin *plugin = find(pluginName);
-  if(!plugin)
-    {
-      Msg(WARNING,"Unknown plugin %s\n",pluginName);
-      throw "Unknown Plugin Name";
-    }
 
-  for(int i=0 ; i<plugin->getNbOptions();i++)
-    {
-      StringXNumber *sxn;
-      // get the ith option of the plugin
-      sxn = plugin->GetOption(i);
-      // look if it's the good option name
-      if(!strcmp (sxn->str,option))
-	{
-	  sxn->def = value;
-	  return;
-	}
+  if(!plugin) throw "Unknown plugin name";
+
+  for(int i=0 ; i<plugin->getNbOptions();i++){
+    StringXNumber *sxn;
+    // get the ith option of the plugin
+    sxn = plugin->GetOption(i);
+    // look if it's the good option name
+    if(!strcmp (sxn->str,option)){
+      sxn->def = value;
+      return;
     }
-  throw "Unknown Plugin Option Name";
+  }
+  throw "Unknown plugin option name";
 }
 
-GMSH_PluginManager* GMSH_PluginManager::Instance()
-{
-  if(!instance)
-    {
-      instance = new GMSH_PluginManager;
-    }
+GMSH_PluginManager* GMSH_PluginManager::Instance(){
+  if(!instance){
+    instance = new GMSH_PluginManager;
+  }
   return instance;
 }
 
-void GMSH_PluginManager::RegisterDefaultPlugins()
-{
+void GMSH_PluginManager::RegisterDefaultPlugins(){
   struct dirent **list;
   char ext[6];
 
-  allPlugins.insert(std::pair<char*,GMSH_Plugin*>("CutPlane" ,GMSH_RegisterCutPlanePlugin()));
-  allPlugins.insert(std::pair<char*,GMSH_Plugin*>("CutSphere" ,GMSH_RegisterCutSpherePlugin()));
-  allPlugins.insert(std::pair<char*,GMSH_Plugin*>("CutMap" ,GMSH_RegisterCutMapPlugin()));
+  allPlugins.insert(std::pair<char*,GMSH_Plugin*>("CutPlane",
+						  GMSH_RegisterCutPlanePlugin()));
+  allPlugins.insert(std::pair<char*,GMSH_Plugin*>("CutSphere",
+						  GMSH_RegisterCutSpherePlugin()));
+  allPlugins.insert(std::pair<char*,GMSH_Plugin*>("CutMap",
+						  GMSH_RegisterCutMapPlugin()));
 
   char *homeplugins = getenv ("GMSHPLUGINSHOME");
   if(!homeplugins)return;
   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") || !strcmp(ext,"dll"))
-	  {
-	    AddPlugin(homeplugins,name);
-	  }
-	}
+  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") || !strcmp(ext,"dll")){
+	AddPlugin(homeplugins,name);
+      }
     }
+  }
   for(int i=0;i<nbFiles;i++)free(list[i]);
   free (list);
 }
 
-void GMSH_PluginManager::AddPlugin( char *dirName, char *pluginName)
-{
+void GMSH_PluginManager::AddPlugin( char *dirName, char *pluginName){
+
 #if ( defined(WIN32) && !defined(__CYGWIN__) ) || defined(_NODLL)
   Msg(WARNING,"Plugins not yet implemented on this platform");
   return;
@@ -164,33 +140,31 @@ void GMSH_PluginManager::AddPlugin( char *dirName, char *pluginName)
   Msg(INFO,"Opening Plugin %s",dynamic_lib);
   void *hlib = dlopen (dynamic_lib,RTLD_NOW);
   char *err = dlerror();
-  if(hlib == NULL)
-    {
-      Msg(WARNING,"Error in opening %s (dlerror = %s)",dynamic_lib,err);
-      return;
-    }
+  if(hlib == NULL){
+    Msg(WARNING,"Error in opening %s (dlerror = %s)",dynamic_lib,err);
+    return;
+  }
   RegisterPlugin = (class GMSH_Plugin* (*)(void)) dlsym(hlib,GMSH_PluginEntry);
   err = dlerror();
-  if(err != NULL)
-    {
-      Msg(WARNING,"Symbol %s missing in Plugin %s (dlerror = %s)",GMSH_PluginEntry,pluginName,err);
-      return;
-    }
+  if(err != NULL){
+    Msg(WARNING,"Symbol '%s' missing in plugin '%s' (dlerror = %s)",
+	GMSH_PluginEntry,pluginName,err);
+    return;
+  }
 
   GMSH_Plugin *p = RegisterPlugin();
   p->hlib = hlib;
   p->getName(plugin_name);
   p->getInfos(plugin_author,plugin_copyright,plugin_help);
-  if(allPlugins.find(plugin_name) != allPlugins.end())
-    {
-      Msg(WARNING,"Plugin %s Multiply defined",pluginName);
-      return;
-    }
+  if(allPlugins.find(plugin_name) != allPlugins.end()){
+    Msg(WARNING,"Plugin '%s' multiply defined",pluginName);
+    return;
+  }
   allPlugins.insert(std::pair<char*,GMSH_Plugin*>(plugin_name,p));
-  Msg(INFO,"Plugin name : %s",plugin_name);
-  Msg(INFO,"Plugin author : %s",plugin_author);
+  Msg(INFO,"Plugin name      : %s",plugin_name);
+  Msg(INFO,"Plugin author    : %s",plugin_author);
   Msg(INFO,"Plugin copyright : %s",plugin_copyright);
-  Msg(INFO,"Plugin help : %s",plugin_help);
+  Msg(INFO,"Plugin help      : %s",plugin_help);
 #endif
 }
 
diff --git a/Plugin/PluginManager.h b/Plugin/PluginManager.h
index a934e2a51ca2b877670b79efe5df4f06cc3e7218..1565d683e3710f38a50a783b7b327b8c9ca7bf02 100644
--- a/Plugin/PluginManager.h
+++ b/Plugin/PluginManager.h
@@ -32,7 +32,11 @@ public :
 /**
   Registering all default plugins that are in $(GMSHPLUGINSHOME)
   In fact, we will load all .so files in dir $(GMSHPLUGINSHOME)
-*/
+
+  In fact, loading a .so (or a .o) is not what is usually called a
+  'plugin'. This is a 'module'. A plugin is an _executable_, but
+  can only be executed from inside another program... CG
+  */
   void RegisterDefaultPlugins();
   static GMSH_PluginManager *Instance();
   /** Dynamically add a plugin pluginName.so in dirName*/