Emacs Logo
Leaves - I am sure this page would be more dull without these flower

EmacsW32 Home Page

EmacsW32 Utilities (often called just EmacsW32) has the goal to make it easier for an MS Windows user to get used to Emacs:

To find out more please read EmacsW32 Documentation.

On THIS Page:

Download EmacsW32

Download latest EmacsW32 + binaries for Emacs

EmacsW32 comes in three different forms. They all include sources for EmacsW32 (not for Emacs!). Here are the three forms and the file names they have:

1. Only Sources for EmacsW32

EmacsW32-1.52.zip (< 1MB) - This download is no longer available
Sources for EmacsW32 only. "1.52" is the version number of EmacsW32. You can use this with Inno Setup. and build 2 below.

2. EmacsW32 Install Wizard

EmacsW32-1.52.exe (< 1MB) - This download is no longer available
EmacsW32 Install Wizard. EmacsW32 setup program built from the sources in the zip file above. This does not include Emacs itself! You can use this to add EmacsW32 Utilities if Emacs itself is already installed. (You can also use it to unpack Emacs binary distribution files for MS Windows.)

3. EmacsW32+Emacs Install Wizard

This is essentially the same thing as EmacsW32 Install Wizard above plus binaries for Emacs itself. Using the installation packages below is the quickest way to get a working Emacs.

Important: There are both patched and unpatched versions of Emacs. Choose the one you want! The packages includes the sources for Emacs elisp files, but not the C file sources. Those can be downloaded separately.

Please notice that the dates in the file names below are only examples. Click the download links to find the latest versions.

Emacs-23-CvsP090226-EmacsW32-1.58.exe (approx 24MB) - Download
Files named like this are patched snapshots of the developer (CVS) version of Emacs. In the file name you can see what date it was taken. This file also contains the elisp info files. (It is compiled with no debug information.) The date information is in the format YYMMDD which means the file above is from Feb 26 2009.

Patches to the CVS Versions: Note that the snapshots above are patched after the CVS checkout to test different changes. The file named like readme-CvsP090226.txt contains notes about this. Please look after a file with a name like patch-CvsP090226.diff for the actual patch.

Emacs-23-CvsU090503-EmacsW32-1.58.exe (approx 24MB) - Download
These are unpatched snapshots. Note that the "P" above for the patched version has been replaced with a "U". I upload the unpatched versions without testing them. In contrast I always test the patched versions before uploading them to be sure no changes have broken my patches. There may therefore be a delay before I officially upload the patched versions.

Patched or Unpatched Emacs?

The CVS Emacs binaries that comes with EmacsW32 are normally changed a little bit to make them work better on MS Windows. In my opinion those changes should preferably be incorporated in Emacs, but there have been some resistence to that.

I used to say that the main reason for the resistance was that it was to close to release of the next version of Emacs to have time to test new features that could break Emacs. However after discussions on Emacs Devel and on help-gnu-emacs I realize that there are other obstacles too. My opinion however is that the changes might be valuable for You and I therefore make them available here.

What the Patches Contains

Here is a short list of the patches:

Where to report bugs
  1. When you report a bug with the patched version (menus Help - Send Bug Report) the message will be sent to the help-emacs-windows mailing list by default and it will contain information saying it is for the patched version. (Added 2007-02-20)
Saving changes
  1. A patch that makes Emacs ask you to save changes at Windows logoff or shut down. Without this patch Emacs just throws away your unsaved changes. (Added 2006-06-30)
Emacs client/server changes
  1. Emacsclient is patched so that it can start Emacs and emacs server automatically when needed. (This behaviour was before offered by gnuclient. If you are using the unpatched version you can use version 1.08 of EmacW32 to get this functionality back.) Instead of the environmental variable ALTERNATE_EDITOR you may also use EMACS_ALTERNATE_EDITOR. (Added 2006-11-21)
  2. Emacsclient handles file names that looks like c:somefile.txt consistent with the UI on MS Windows. (Added 2006-11-30)
  3. Changed Emacs server so that an error in the code started by --eval from Emacs client will give a traceback when debug-on-error is t. (Added 2007-05-17)
  4. Changed Emacs server so that it will not break out of recursive edits (minibuffer prompts mostly) when the call from Emacs client contains the --eval argument. This change is experimental and I may remove it later. (Added 2007-05-17)
Keyboard and menus
  1. Changes that makes it possible to use the window keyboard keys as META in Emacs. Without this patch key sequences like <lwindow> E will always do what they by default does in windows, ie in this case open up Windows Explorer. (This patched is not used by default, you have to turn it on.)
  2. Changes that makes the menus work better when you first open them. If you open the menus and type the menu letters fast they may go to the current Emacs buffer instead of the menus without this patch.
  3. A patch that makes the behaviour when w32-enable-caps-lock and/or w32-enable-num-lock are nil a little bit more reliable. (Added 2006-11-29)
  4. Yes-or-no type questions are asked as message boxes if dialog boxes should be used. This patch is maybe not correct in all circumstances and I might remove it. However so far I have seen no problems with it. (Added 2006-12-11)
  5. A patch that makes the edit menu show C-c, C-x and C-v when cua-mode is enabled. (Added 2007-05-23)
  1. Maximized windows in original Emacs on MS Windows are not maximized. This is a known problem, but changing this has been postponed because more testing is needed. However I have just noticed one slight problem: The area below at the very bottom that extends the window to maximized is sometimes transparent. (This patch seems to be obsolete and I will remove it.)
Minibuffer prompt colors
  1. Minibuffer prompt properties did not get initialized correctly. This is a bug in Emacs. (Added 2007-02-25)
  2. Minibuffer prompts are sometimes hard to notice (even though they are now colored in most cases). A simple way to make the prompts more visible have been added to the menus in Options - More Noticeable Prompts. The more noticeable prompt versions are on by default. (Added 2007-02-25)
  1. On MS Windows the native ftp program sometimes behave badly, see http://www.emacswiki.org/cgi-bin/wiki/AngeFtp. The alternative ftp program mentioned there ftp://ftp.gnu.org/old-gnu/emacs/windows/contrib/ftp-for-win32.zip unfortunately also behaves a bit bad. A workaround for this is included in the patch. The problem that this patch is trying to solve does not show up on all pc:es, but I have not seen any problems with the patch.
Global minor mode
  1. A patch that makes global minor mode that you have turned on with Easy Customization actually be turned on the next time you start Emacs. (Added 2007-01-31)
    Note 1: The problem that global minor modes are not turned on correctly affects only minor modes that are not part of Emacs itself. The problem does only occur if such global minor modes are loaded after setting the customization values (ie after the call to custom-set-variables in .emacs).
    Note 2: This requires the definitions of the minor modes to be a little bit more correctly written, since the body of a minor mode will be run immediately when the definition of that minor mode is evaluated (in the case that this minor mode is turned on). If you see problem with this for some minor mode, please contact the author of that minor mode. If there are any other problem with this patch - I hope not - then contact me!
    Note 3: This patch has in a part been a test to see how the behaviour of global minor modes can be improved. I will eventually remove this patch since it indeed can cause some confusion. It might be better that the original in my opinion bad behaviour surfaces.
Changes concerning Viper
  1. A Viper tutorial is included. Can be started with M-x viper-tutorial (or just run the Emacs tutorial when in Viper mode). This is a personal choice of mine, I always use Viper.
  2. A patch to Viper that runs post-command-hook between for example a d and a G. Experimental. (Added 2007-02-27)
  3. In vi mode in Viper some keyboard keys will still be inserted. Tried to stop most of them. Experimental. (Added 2007-03-01)
  1. Isearch is very useful but a bit complicated. Therefore I have added that f1 and C-h should show isearch help in a useful way when using isearch. (Added 2006-07-01.) Note: This is a non-essential patch which I however find useful myself. So I keep it and hope it will not disturb.
  2. Patch to ido.el to make it work with cua-mode. (Added 2008-03-30)
  3. Patch to rng-valid.el that makes it possible to tell nxml-mode's parser to skip mumamo multip major mode chunks it can not parse. (Added 2008-05-29)
  4. Patch to custom-set-variables fixes sorting for the order of setting custom variables. This will probably be applied to CVS Emacs soon. (Added 2009-01-09)

There are also from time to time patches to the elisp or documentation files that are not yet incorporated in Emacs. Those changes are mostly trivial and does not affect the normal use of Emacs. To see exactly what the patches contain, please see the source directory on the web (reach it from the download page) or the EmacsW32 subdirectory in the installation. The file containing the full patch is named something like patch-CvsP070220.diff.

When to Use the Unpatched or Patched Version of Emacs

Normally I recommend that you use the patched version of Emacs. (That is of course the reason I provide it.) However there are some reasons for using the unpatched version too:

For these reasons I will provide unpatched versions of CVS Emacs here too.

How to See if Emacs is Unpatched or Patched

When you want to see if the Emacs+EmacsW32 is unpatched of patched there are two simple ways to do that. You can look at the icons:

Emacs patched icon GNU Emacs (i386-mingw-nt5.1.2600) of 2006-12-11 on COMPUTER (patched)
Emacs patched icon GNU Emacs (i386-mingw-nt5.1.2600) of 2006-12-11 on COMPUTER

You can also use the version command (M-x version RET). The patched version shows "(patched)" at the end of the version information, see above.

The EmacsW32 Install Wizard

The setup/install programs are built using Inno Setup. This nice installer makes easy-to-use installation programs with a familiar look and feel to most MS Windows users.

Setup Start Screen Setup Start Screen

Make Your Own Distribution

Maybe you want to build Emacs yourself instead and distribute it with your own additions? In the documentation there are instructions for building Emacs with MinGW on MS Windows. You can use EmacsW32 to make a distribution setup program. You only need free software (most are under the GNU license) tools to do all of this. However please notice the license restrictions when you do this!


Please ask questions on the wiki or send them to help-emacs-windows@gnu.org. Notice that this mailing list is for all questions regarding Emacs on MS Windows so please be clear that the question is about EmacsW32.

EmacsW32 - Change History

I give some hints here about what I have corrected so you know if you want to download again:

  • The final setup failed if Inno where not found. Fixed.
  • BUG: Handling of HOME when it is not set is not correct.
  • I was mistakingly deleting to much under the users Emacs key in the registry (HKCU\GNU\Emacs). This could make the installation fail - and even worse it deleted the users private data under that key.

    Fixed. Thanks very much to Fred Kunz for pointing this out! I apologize for this mistake and hoped no one else where affected.

    Look if you have got an entry on the menus "Options - Options Related to w32-feeling.el". If you have not then you should install this new version.

  • Corrections in the "Options Related to w32-feeling.el" display. Thanks again to Fred.
  • Setup Base was not allowed when emacs_dir was not set. Fixed.
  • Frames where always maximized when new files where opened. Fixed. Fred again.
  • The print and ps-print entries were removed from the File menu even when the w32-print settings said they should not be removed. Thanks for noting this Fred. Fixed.
  • Corrected errors in usethis.exe related to using HKCU in registry for emacs_dir. Also added a switch -u to force use of HKCU instead of HKLM.
  • Renamed some functions from server-* to gnuserv-* in gnuserv-*.el and gnuclient to avoid problems if server.el is loaded.
  • Moved loading of emacsw32 to default.el to be able to use better defaults for w32-print settings etc.
  • New version of GnuServ which fixes a problem with timeout when using Emacs as an editing server (from Guy G, this is not yet the release version!).
  • Please notice that you must remove earlier code added by Emacs Setup Utilities for MS Windows to default.el and site-start.el before installing this version!
  • Setup found emacs_dir in HKCU even when it was not there (when only GNU\Emacs folder was there). Corrected.
  • Changed the error handling in setup a bit. Fatal errors now always exits setup.
  • Setup always associates .el with Emacs if "Associate selected file types with Emacs" is chosen. This was not mentioned. Corrected.
  • Changed the error handling in setup a bit. Fatal errors now always exits setup.
  • Documentation change: mentioned cvs unpack -kb
  • HOME environment variable was not set and broadcasted correctly.
  • Fixes that made it possible (again) to build installation packages including Emacs.
  • Building an installation package now requires a readme file for this specific package.
  • You can now optionally start the Inno GUI before building an installation package.
  • An installation package no longer requires any setup besides installing the core Emacs.
  • Added a guide for image support (from emacswiki.org)
  • Other small documentation related changes.
  • Program group selection page is not shown any more if no shortcuts are created.
  • There is now a fix entry for "Emacs itself" when the installer version is used.
  • The installer version now says "Install and Setup - Emacs" in the title bar. The setup version says just "Setup - Emacs".
  • Building installation package without any prompts now possible.
  • Check for readme file when building installation package now includes full path.
  • Renamed Emacs Setup Utilities to EmacsW32 and EmacsW32 Setup Utilities.
  • Removed special handling in w32-feeling.el for CUA-mode when cua-mode is defined.
  • Corrected address to EmacsW32 home page.
  • The format for paper type value was incorrect.
  • File associations were missing quotes.
  • Documentation related fixes.
  • Added swbuff-x.el (an add-on to swbuff.el) to get better support for C-Tab buffer switching.
  • Switched to swbuff-y.el with better time out and frame support.
  • Bug fixes to swbuff-y.el.
  • Used common desktop and quick launch when has enough privileges.
  • Some more bug fixes to swbuff-y.el.
  • Forgot to check if for all users where selected when using common desktop etc. Fixed.
  • Added a patch to make it possible to use left and right windows keys as meta and pass Alt key to system.

The newer versions below of EmacsW32 are for Emacs 22 or later

From this point on I supply new versions targeting the current CVS version of Emacs. This is because much of what I have included earlier are unnecessary with the new Emacs version. I will therefore remove those parts. (It may also be because I am more used to Emacs now and can better see what is needed.)

0.93 (this version was never in use)
  • Renamed w32-feeling.el etc to emacs32.el.
  • Corrected some bugs in the installer/setup.
  • Added emacsw32-menu.el and w32-meta.el.
  • The CVS version from EmacsW32 now has full support for using Alt for the menus and the left and right windows keys as Emacs Meta. Note that this is a patch and this is not (yet?) included in the CVS sources. (The patch is of course available at EmacsW32 home page.)
0.94 (this version was never in use)
  • Removed code and modules that were only used for Emacs 21.3.
  • Continued with the work to remove code and modules that were only used for Emacs 21.3.
  • Made corrections to the installation and setup procedures for EmacsW32 so that they work better for Emacs CVS version.
  • New version of htmlize.el included.
  • New module htmlize-view.el for viewing the buffer view as html in your web browser. This functionality is moved here from w32-print.el.
  • Changed w32-print.el to use htmlize-view.el where appropriate.
  • Changed emacsw32-max-frames in emacsw32.el to use run-with-idle-timer. This works better at startup. (There seems to be some bug in window management in Emacs on MS Windows at startup at the moment.)
  • Some file associations did get %1 instead of "%1" which is needed for paths with spaces. Corrected.
  • Send To can only be set for current user. Corrected.
  • Quick Launch icon can only be added for current user. Corrected.
  • Corrected initial screen for file associations.
  • Added cmd-mode.el for editing MS Windows cmd and bat files.
  • Reworked the menus in w32-print.el.
  • Added menus to htmlize-view.el.
  • Corrected some errors in Customize EmacsW32.
  • Added w32shell.el.
  • Added support for finding Cygwin and MSYS automatically.
  • Corrected an error in w32-print.el that affected menu "File - Quick Print - Print with Web Browser".
  • Minor menu changes.
  • Renamed the directory "setup" to "EmacsW32".
  • Changes to installers and documentation.
  • Renamed w32-menu.el to menuacc.el.
  • Corrected smaller bugs (for example some values were not saved in Customize EmacsW32 screen).

(Please notice that the number 1.00 is more just a new number, not a "release" number.)

  • The value in HKCU for emacs_dir was never used by GnuClient. Corrected. (Thanks to Brian Elmegaard for making me aware of the problem.)
  • Added some help to the setup programs.
  • Minor changes, mostly documentation changes.
  • Changed the file emacs.cmd that is written at the installation of EmacsW32 so that it is easier to use the -e switch:
    1. Before executing the -e command Emacs changes dir to current dir. This allows the use of relative file names in the -e elisp code.
    2. \ embedded in the -e parameter is converted to /. This allows w32 style file names in the -e elisp code. This makes it a little bit more easy to use CMD.EXE completion for file names in the elisp code.
  • A new file ediff.cmd for starting ediff from the cmd prompt is now written at the installation. This takes two (relative) file names as parameters.
  • Added emacsw32-eol.el for more flexible handling of end of line.
  • Corrected error in gnuserv.el that prevented buffer deletion when using bs-show.
  • Changed emacsw32-eol.el for more better integration with Emacs and EmacsW32.
  • Binary files where not replaced unless the version number increased. Corrected.
  • Files opened through gnuclient(w) were not added to history. Corrected.
  • Changed documentation about the Alt key trouble on MS Windows.
  • Removed gnuclient/server from EmacsW32 since emacsclient/server now works for MS Windows too! But please see the section about patches for a possible problem if you use the unpatched version of Emacs.
  • Changed documentation to reflect the removal of gnuclient/server. Removed unnecessary files.
  • Smaller bug fixes and documentation changes.
  • Now includes the most commonly unix programs used by emacs: grep, find, xargs, cmp, diff, diff3, cmp, patch and locate. Those are from Gnuwin32. It also includes a working ftp program.
  • Bug fixes. Did not actually include the unix programs.
  • Added nxml-mode and nxthml-mode.
  • Fixes to tidy.el.
  • Included xhtml-multi.el for php embedded in xhtml files.
  • Minor bugfixes.
  • Included php-mode.el from SourceForge.
  • Tidy.exe was in the wrong directory.
  • Minor bugfixes.
  • More bugfixes.
  • Documentation fixes.
  • Added more support functions for inferior shells (cmd-shell, msys-shell, cygwin-shell) and for external dito (w32shell-explorer-here, w32shell-cmd-here). These were also added to the menus in Tools - W32 Shells.
  • cmd-shell starts a *Shell* style buffer that now has working Tab/Shift-Tab completion.
  • Even more bugfixes, mostly to Nxhtml mode.
  • Even more bugfixes to Nxhtml mode.
  • Made the code for popup completion into a separate elisp libary (popcmp.el)
  • Made the code for alternate completion in nxml/nxhtml into a separate elisp libary (rngalt.el)
  • Small enhancements to Nxhtml mode.
  • In version 1.14 I added some commonly used unix programs. Unfortunately I by mistake deleted patch.exe from the distribution a bit later. Patch.exe is now added again.
  • The saving of values on the Customize EmacsW32 page was broken. Fixed. (Some changes lately in Emacs 22 customize elisp libraries had broken this, but I had not observed it.)
  • The installers could not be run without Administrator privileges because of an error. Fixed.
  • File association are now done for current user if installation is not done for all users.
  • Fixed problems with file association setting.
  • Added the verb "Edit with Emacs" to percieved file type "text".
  • Added Emacs to OpenWith for percieved type "text".
  • Fixed several smaller problems in e.cmd and elc.cmd.
  • Updates to nxhtml-mode.
  • Viper tutorial was broken. Fixed.
  • Added ourcomments-util.el and mlinks.el to EmacsW32.
  • Removed old link style from nxhtml-mode. It now instead uses the minor mode mlinks-mode for the links.
  • Forgot to turn on mlinks-mode in nxhtml-mode. Fixed.
  • Corrections and additions to nXhtml.
  • Corrections and additions to nXhtml.
  • Corrections and additions to nXhtml.
  • Corrections and additions to nXhtml. Now using nXhtml version 0.95.
  • Fixed a bug in mlinks.el that prevented MLinks links on symbol with multiple definitions to work. (For example it did not work with the symbol jit-lock-mode, since this is both a variable and a function and they are defined in different places.)
  • More conventient handling of MLink links. They can now be opened in the same window, 'other window' or in a new frame.
  • Corrections and additions to nXhtml. Now using nXhtml version 0.96 which introduces MuMaMo for handling of multiple major modes in a buffer.
  • Reverted a patch to w32proc.c in the patched version that prevented a GUI program that also uses stdin/stdout to be run as an inferior program in Emacs.
  • Corrections and additions to nXhtml. Now using nXhtml version 0.97 which introduces XML validation headers which allows nXml completion in for example buffers containing PHP code without the required XHTML header.
  • Added a patch that allows describe-variable to display variables with recursove structures.
  • Corrections and additions to nXhtml. Now using nXhtml version 0.98 which fixes several bugs and have several enhancements.
  • Corrections and additions to nXhtml. Now using nXhtml version 0.99 which fixes some bugs and have some enhancements.
  • Added the possibility to use TAB to indent regions (indent-region-mode).
  • Now using nXhtml version 1.00.
  • Changed the bug reporting to avoid that the user unnecessarily has to install the unpatched version for this.
  • Now using nXhtml version 1.01.
  • Implemented get-internal-run-time which was not done on MS Windows.
  • Changed documentation layout.
  • Now using nXhtml version 1.02.
  • A patch that makes the edit menu show C-c, C-x and C-v when cua-mode is enabled.
  • Now using nXhtml version 1.03.
  • Fixed a bug in menuacc.el that prevented new menus from beeing shown.
  • Added a function for testing if it is the patched version of Emacs that is used: (emacsw32-is-patched).
  • Added more flexible rebinding of Emacs standard keys. emacsw32-mode has been removed. Instead the library rebind.el has been added.
  • Added visual-basic-mode.el.
  • Removed w32-print.el. The printing routines are now instead in hfyview.el. They are now platform independent. Also added noprint.el which can remove Emacs default printing routines from the menus.
  • Now using nXhtml version 1.26.
  • Adjusted to the new name for tumme, image-dired.
  • Added automatic search for spell program to Customize EmacsW32.
  • Fixed a bug that prevented rebind.el from loading unless nXhtml were used.
  • Now using nXhtml version 1.27.
  • Readded visual-basic-mode.el which I lost somewhere.
  • Some bug fixes to emacsclient.
  • Now using nXhtml version 1.28.
  • Decided to stop increment version number for EmacsW32 when there are only changes to nXhtml. The new rule is that the latest version of nXhtml that was available when making EmacsW32 is the one included. Note that it is quite easy to upgrade only nXhtml if you want to.
  • Reordered initialization and fixed a bug in Customize EmacsW32. (2008-06-02)