]> code.delx.au - gnu-emacs/commitdiff
(add_registry): Set path for runemacs.exe to use.
authorJason Rumney <jasonr@wanchan>
Thu, 12 Aug 2010 14:28:43 +0000 (22:28 +0800)
committerJason Rumney <jasonr@wanchan>
Thu, 12 Aug 2010 14:28:43 +0000 (22:28 +0800)
nt/ChangeLog
nt/addpm.c

index 72920c2b58f8dc45056c3bf1a639803020079b5c..07550e1b2d2dc5d15e4feb6439368750e79ef794 100644 (file)
@@ -1,3 +1,7 @@
+2010-08-12  Jason Rumney  <jasonr@gnu.org>
+
+       * addpm.c (add_registry): Set path for runemacs.exe to use.
+
 2010-08-08  Óscar Fuentes  <ofv@wanadoo.es>
 
        * cmdproxy.c (main): Use _snprintf instead of wsprintf,
index 20b289f6761da64169a99d42ea753b42ce533ac1..4fcebe2ca14cabc77af22f8faa01b733ac7bb17c 100644 (file)
@@ -62,6 +62,8 @@ DdeCallback (UINT uType, UINT uFmt, HCONV hconv,
 #define REG_GTK "SOFTWARE\\GTK\\2.0"
 #define REG_APP_PATH \
   "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\emacs.exe"
+#define REG_RUNEMACS_PATH \
+  "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\App Paths\\runemacs.exe"
 
 static struct entry
 {
@@ -129,10 +131,25 @@ add_registry (char *path)
                   /* Make sure the emacs bin directory continues to be searched
                      first by including it as well.  */
                   char *dll_paths;
+                 HKEY runemacs_key = NULL;
                   len = strlen (path) + 5 + size;
                   dll_paths = (char *) alloca (size + strlen (path) + 1);
                   sprintf (dll_paths, "%s\\bin;%s", path, gtk_path);
                   RegSetValueEx (hrootkey, "Path", 0, REG_SZ, dll_paths, len);
+
+                 /* Set the same path for runemacs.exe, as the Explorer shell
+                    looks this up, so the above does not take effect when
+                    emacs.exe is spawned from runemacs.exe.  */
+                 if (RegCreateKeyEx (HKEY_LOCAL_MACHINE, REG_RUNEMACS_PATH,
+                                     0, "", REG_OPTION_NON_VOLATILE,
+                                     KEY_WRITE, NULL, &runemacs_key, NULL)
+                     == ERROR_SUCCESS)
+                   {
+                     RegSetValueEx (runemacs_key, "Path", 0, REG_SZ,
+                                    dll_paths, len);
+
+                     RegCloseKey (runemacs_key);
+                   }
                 }
             }
           RegCloseKey (gtk_key);