5 Indispensable Tips for Emacs on Windows
Emacs is generally not very popular on Windows based operating systems. The default installation of Emacs leaves you with a very spartan UI and a very basic editor. However, due to Emacs’ extendibility, you can create a very powerful editor by customizing your .emacs file and making some OS specific tweaks. We will be concentrating on the latter as there are plenty of .emacs files floating around for your reference.
I have 5 simple yet useful tips below, which I have tested with a GNU Emacs 23.0.0.1 (i386-mingw-nt5.1.2600) running on Windows XP.
Tip 1: Starting off With a Prettier Emacs
Most of us customize the fonts, colours and window position of Emacs. In fact, I have found that dark backgrounds are much suited to Emacs than the default light background. However, when Emacs starts up, it annoyingly shows the default fonts and colours first. As your .emacs files load, it jumps around and changes colours quite noticeably.
You can avoid this annoyance by making a simple registry modification. Create a new .reg file say set-frame-and-fonts.reg and copy paste the following lines. Open the file to add the changes to the registry. Restart Emacs and enjoy the difference!
REGEDIT4
[HKEY_CURRENT_USER\SOFTWARE\GNU\Emacs]
"Emacs.Foreground"="black"
"Emacs.Background"="#f5f5f5"
"Emacs.Font"="-outline-Consolas-normal-r-normal-normal-12-90-96-96-c-*-iso8859-1"
"Emacs.Geometry"="100x35+0+0"
Caveat: The lines above are my preferred colours, fonts and window positions. Your’s could be different. Please customize to your taste.
Tip #2: Add “Open In Emacs” option to all Files
This will be indispensable once you are more used to Emacs. You will feel like opening anything and everything with it. And being the one true swiss-army-chainsaw it is, you will be delighted at the enormous no: of filetypes that Emacs supports out of the box.
This .reg file add an “Open in Emacs” option in Windows Explorer when you right click on any file. Copy the following lines to a .reg file say Add-Emacs-To-Open-Any-File.reg and open it to add the changes to the registry. Make sure that you have modified the path below to point to your emacs installation path (mine is in D: drive). The emacsclientw.exe resides in the same place where your runemacs.exe resides (right-clicking on the emacs icon, generally shows you this).
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\*\Shell\Open In Emacs\Command]
@="\"D:\\Program Files\\Emacs23\\bin\\emacsclientw.exe\" -a \"D:\\Program Files\\Emacs23\\bin\\runemacs.exe\" \"%1\""
Tip #3: Goodbye Capslock
If you use Emacs a lot, you will find that you have to use the Ctrl key a lot. You might find your left thumb getting strained after prolonged use. The easiest solution for this is to reassign a less used key as the Ctrl key. Most people choose the Caps Lock key for this purpose. It is surprisingly not that much useful and soon you will forget that such a key ever existed.

Whenever I searched, I found that most people swap the Ctrl and Caps Lock keys. However, this is irritating as I might still want to use the old Ctrl key if I press it accidentally. Here is how to replace Caps Lock with the Ctrl Key.
Copy the following lines to a .reg file say replace_caps.reg and open it to add the changes to the registry. Now just reboot and you are done!
REGEDIT4
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00
Yes, it takes some time to “unlearn” and “learn” the new key position, but trust me it’s worth the effort.
Tip #4: Use a Spell Checker
A spell checker is something I feel should be a part of any editor. Here is how to enable on the fly spell checking in Emacs.
- Install aspell
- Add the following lines to your .emacs file (adjust the path to aspell accordingly)
Elisp:
;; aspell is the spell checker that works for me
(setq-default ispell-program-name "D:\\Arun\\Home\\bin\\aspell.exe")
(setq text-mode-hook '(lambda()
(flyspell-mode t) ; spellchek (sic) on the fly
))
Tip #5: Setup a Postscript Printer
By default, you can pretty-print all your documents directly from emacs. But this requires configuring a postscript printer. There is a nice package called Ghostscript which takes care of doing this.
Download and install Ghostscript from here say at D:\gs
Then add the following lines to your .emacs file:
Elisp:
(if (string= system-name "CORPLAPTP65") ; Works in office only
(progn
;; Windows printer
(setq-default ps-lpr-command (expand-file-name "/gs/gsview/gsprint.exe"))
(setq-default ps-printer-name t)
(setq-default ps-printer-name-option nil)
(setq ps-lpr-switches '("-query")) ; show printer dialog
(setq ps-right-header '("/pagenumberstring load" ps-time-stamp-mon-dd-yyyy))))
Caveat: Be sure to switch to a light background color scheme before you print, else your fonts will be so light that they won’t be readable!
Distantly Related posts:
Trackbacks and Pingbacks
Leave a Reply
Additional comments powered by BackType
wow thanks for the tips!
Good stuff. I’m definitely going to go for the postscript printer for when I’m in Windows.
I’m a bit confused about the ctrl-key reassignment, though. Getting rid of capslock sounds like a good idea in itself, but how on earth does the normal control key make your thumb ache? I always press it with the little finger of my left hand. I’ve just tried using my thumb and it seems like it would take a contortionist to do anything that way.
James
Great stuff! One problem with the registry files — it seems that backslashes have become un-escaped; paths should look like “c:\temp”, not “c:\temp”, which is interpreted as (”c” “:” “” “e” “m” “p”)
I got tip #2 to work using this code;
Windows Registry Editor Version 5.00
[HKEYCLASSESROOT*ShellOpen In EmacsCommand]
@=”\”C:\Program Files (x86)\Emacs\bin\emacsclientw.exe\” -a \”C:\Program Files (x86)\Emacs\bin\runemacs.exe\” \”%1\”"
And of course, it happened in my comment, too!
What I’m trying to say (and excuse the horrible notation, but I needed to avoid all possibility that the comments would gulp what I was trying to say;
Windows Registry Editor Version 5.00
[HKEYCLASSESROOT (slash) * (slash) Shell (slash) Open In Emacs (slash) Command]
@=” (slash) “C: (slash) (slash) Program Files (x86) (slash) (slash) Emacs (slash) (slash) bin (slash) (slash) emacsclientw.exe (slash) ” -a (slash) “C: (slash) (slash) Program Files (x86) (slash) (slash) Emacs (slash) (slash) bin (slash) (slash) runemacs.exe (slash) ” (slash) “%1 (slash) “”
Do you know why the toolbar is grayed out with the new version of Emacs on Windows? It works, but it is ugly.
Just a minor mistake in Tip #1
You omitted the “\” in:
[HKEYCURRENTUSER\SOFTWARE\GNU\Emacs]
thanks.
Edi has good tips about emacs on W32 and other useful things: http://weitz.de/win/#emacs
Tip number two was very useful for me. Thanks also to Steve Cooper for his detailed explanation with (slash) which helped me a lot.
By the way, you can do tip number one all in .emacs:
(add-to-list ‘default-frame-alist ‘(background-color . “dark blue”)) (add-to-list ‘default-frame-alist ‘(foreground-color . “sky blue”)) (add-to-list ‘default-frame-alist ‘(cursor-color . “orchid”))
@steve cooper:
Thanks for your feedback, most of the code was mangled because of the way Wordpress formatted the text. I have used a code highlighter plugin now. Hopefully there are no bugs in this because they are copied from my working emacs installation :)
Thanks for the “Open everything with emacs” tip! Makes my life so much easier!
Seriously, KILL REGISTRY – why would ANY sane developer hook their app into the registry?
I don’t care if windows uses a registry, feck off!
Also, I want to pass the .emacs file to load into runemacs.exe, but fecked if I can find sheeet about it online.
@kill registry
http://www.gnu.org/software/emacs/windows/Installing-Emacs.html#Installing-Emacs
Now that wasn’t hard was it…
Thanks for explaining how to configure aspell. That’s hard information to find.
One note: I had to turn the backslashes into forward slashes before it would work.
I’m getting an error with this line
(setq text-mode-hook ‘(lambda()(flyspell-mode t); spellchek (sic) on the fly)’)
Any ideas ?
@Sunit: What is the error exactly? Are you sure that you have written it across multiple lines rather than in a single line?