This page is about different ways to integrate Emacs into MS Windows:
Put the Emacs
‘bin’ folder in the Windows
PATH environment variable (right-click Computer, Properties, Advanced, Environment Variables). This also simplifies other methods mentioned on this page (no explicit paths needed then).
Use this code for a desktop/task-bar shortcut:
emacsclientw.exe -na runemacs.exe -c ""
This shortcut starts Emacs from scratch if it’s not running, and opens a new frame if it is.
-c is key: without it, you have to pass a file to open (even if it’s
"", which does work but is uglier) or else emacsclient will exit with an error. (Right-click on desktop, New Shortcut, etc., then drag the shortcut into the Quick-Launch bar if you want.)
-n means no wait - don't wait for the server to return -a EDITOR specifies to the emacsclientw.exe which editor to run if emacs.exe is not already running -c tells emacs to create a new frame instead of trying to use the existing frame
Milouse, 2013/03/08: on Windows XP and Gnu/Emacs 24.2, I have to use the following shortcut to have things working as expected with a non integrated Emacs (just unziped version somewhere in my computer) [If you don’t want to or can’t add the emacs path to %PATH% as described above – garyo] :
C:\Path\To\emacsclientw.exe --alternate-editor="C:\Path\To\runemacs.exe" -c
And, more important thing: you have to put the
(server-start) declaration in your init.el file, otherwise the shortcut will keep creating new and disconnected instance of emacs.
Use Windows command-line commands
ftype txtfile=emacsclientw -na runemacs "%1" ftype EmacsLisp=emacsclientw -na runemacs "%1" ftype CodeFile=emacsclientw -na runemacs "%1" assoc .txt=txtfile assoc .text=txtfile assoc .log=txtfile assoc .el=EmacsLisp assoc .c=CodeFile assoc .h=CodeFile
This almost works:
git config --global core.editor "emacsclient -a runemacs '%*'"
If Emacs is not already running then it starts Emacs OK, but it returns right away – doesn’t wait. So the
git commit fails (because the default message is unchanged).
Anyone know how to make emacsclient wait in the case where it has to start the alternate editor? (Do not use
emacsclientw here; it doesn’t wait.)
A quick and dirty way to replace all
notepad.exe calls from any application (and your file manager) would be to use the Registry:
2. Go to
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion?\Image File Execution Options
3. Add a new key named
4. Add (in there) a new string named
Debugger and use this value:
emacsclientw.exe -na runemacs.exe -F (requires
emacsclientw to be in your
Note that this will pretty much break the usual
-F behavior but it is needed as
emacsclientw has no -z parameter (yet).