This website is using cookies. We use cookies to ensure that we give you the best experience on our website. More info. That's Fine
HPC:Factor Logo 

GNU Emacs for Windows CE 20.7

Open Source
Port of Emacs 20.7 for Windows CE
You must be registered and logged into HPC:Factor in order to contribute to the SCL.

Screenshots & Images

Screenshot of
Screenshot of
Screenshot of
Screenshot of
Screenshot of
Screenshot of
Screenshot of


I have ported GNU Emacs 20.7 to WindowsCE. The port is based on NTEmacs. There is no port of Emacs 21 yet.
Sat Aug 18 2001: Reported to run on iPAQ by Paul-Kenji Cahier. Thanks
for the screenshots.

Sat Aug 18 2001: I got the pipes working. You can run a simple
shell-command, but not shell-command-on-region. This has to be
emulated. Ange-FTP works with my ftp port. My grep port works.

Mon Aug 20 2001: Reported to run on HP548 by Ray Grout. Thanks for the

Mon Aug 27 2001: New builds with celib.dll support inferior
subprocesses. Available for download.

Sat Sep 01 2001: Fixed pipe problems in celib.dll. Please download the
lastest celib.dll build (3.02).

Sat Sep 01 2001: Ispell works.

Mon Sep 03 2001: Old builds have been removed.

Mon Sep 24 2001: CreateProcess() problem with spaces in path fixed in
celib.dll 3.04. Download new celib.dll.

Tue Oct 02 2001: A fixed version of ange-ftp is available for

Mon Oct 15 2001: Build 2.01 automatically resizes on PPCs when SIP
is activated/deactivated. Also has some dialogs built-in. Problems
with keys on iPAQ can be fixed with a key.txt file. Download
the emacs-wince-xxx-build-2.01 package and maybe cedialogs-1.01
(needed for my custom file choose dialog).

Sun Dec 23 2001: Build for ARM/HPC/WCE211. Reported to run on J820.
Use (setq w32-enable-palette nil).

Tue Jan 08 2002: Experimental build with menus. Set EMACSMENU in
Environment to "1" for PPC and "2" for HPC. On PPC, the standard
menubar is used. Setting EMACSMENU to "1" for HPC uses the commandbar
as a child window, which hides the edit buffer. Fixing Emacs to use
the commandbar as a child window is very difficult, so I decided to
use a top level window for the menu. This is not beautiful but better
than nothing. The main drawback is that you have to activate the menu
via the taskbar.

Wed Mar 20 2002: Fixed mouse selection bug in xbuild-2.03.

Features and Limitations
• Almost all packages work that don't use inferiour subprocesses or external commands (dired, gnus, calendar, info, calc, ...)
• Some built-in commands/functions for wince.
• Network pseudo-processes supported, so gnus works.
• The ARM/HPC/WCE300 build with clib.dll is reported to run on iPAQ PPC.
• The SH3/HPC/WCE300 build with clib.dll is reported to run on HP548 PPC.
• Reported to work with Japanese fonts/texts. See links at the bottom of this page.
• Limited inferior sub-processes support added.
• No menus.


Limited support for subprocesses has been added. Emacs builds where (wce-get-version) reports 2.0 or greater support it. Only programs linked with my new celib.dll can run as subprocesses. There are currently grep, ftp, find and some other command-line tools available. gcl and scm are also supported.

For shell-command and grep, you need my xsh program, which is a simple shell dummy. It does not support any shell stuff except executing a simple commandline (no variables, pipes, redirection etc). Copy xsh.exe to your bin directory, which must be in PATH.

You should add the following lines to .emacs:

(setq default-process-coding-system nil)
(setq shell-file-name "xsh")
(setq shell-command-switch "-c")
; when not set, find is called, which might give an error
(setq grep-command "grep -n ")

Note that default-process-coding-system seems to be reset when you call comint-run for the first time. I have not yet checked why this is so.

For using ange-ftp, download ange-ftp.tar.gz. The "help foo" command has been commented out.

Be sure that you don't overwrite celib.dll with older versions. You need at least version 3.01. You can check this in Explorer on your PC. You should use version 3.04 which fixes some problems with 3.01.

Interactive subprocesses sometimes produce error messages that say that output cannot be written to the process. Please report this if it still happens.

Output from grep is currently a bit slow, compared with output from ls. Maybe the output from grep is unbuffered. I have not checked this yet.

shell-command-on-region is not supported. The original implementation passes a real filehandle to the subprocess, which is not supported on WinCE. I might try to rewrite this using a thread that writes to a pipe. For frequently used shell-command-on-region stuff you may write a lisp function that makes the program read from a file instead of stdin.


• The old MIPS/SH3 builds need toolhelp.dll. This dll can be downloaded here. The new exe files dont need it.
• Palette problem on Compaq/MIPS/HPC. You might need to (setq w32-enable-palette nil).
• Networking might not work with the previous celib.dll builds. This is fixed in the new release.
• The new Emacs will crash when you don't copy the new celib.dll to your \windows directory. Please check this before reporting problems.
• There is currently a problem with shell-command. When xsh is in a directory with spaces, it does not work. To work-around this, copy xsh to bin in your root path and make /bin the first dir in your PATH setting. Other commands that are called by xsh *can* be stored in a directory with spaces (like /Storage Card/bin). Download celib.dll 3.04 or later to fix problems with spaces.
• Marking text with the stylus does not work on iPAQ.
• There seems to be some heap corruption when you run Maxima inside Emacs on a MIPS/WCE211. Maybe Emacs even crashs. Try a reset.
• Pressing the shutdown key on J720 (and probably other devices) produces a WM_KEYDOWN with virtkey 0xff. Pressing the key again to resume generates a WM_KEYDOWN with 0x83 (VK_F20). Unfortunatly, in Emacs this is bound to clipboad-kill-region by default. You could bind f20 to yow (global-setkey [f20] 'yow) or to a command to check your appointments...
Maybe Emacs 21 will be ported. I don't know yet if the new features are worth the trouble.
Thanks to RMS and all others involved in Emacs development.
Thanks to the NTEmacs porters.

Installation Instructions

Get the tar file for your device and the common files and unzip on your PC. Turn off smart crlf conversion in WinZip. Copy the files to your device. It would be best to use a CF card.
• For MIPS you also need the compaq-tools archive. For SH3 you need the jornada-tools archive (FIX THIS). These contain DOC and some lisp files. They also contain /etc/service. You don't need these files for the new celib.dll builds.
• Create registry values in HKLM\Environment using the registry editor from Microsoft's PowerToys for WinCE or my cereg.exe and a batch file. cereg.exe must be run on your PC. You must have an ActiveSync connection established. cereg.exe can be found here. See below for the keys.
• Copy other lisp files from an NTEmacs 20.6/20.7 installation to your device if needed. Do not overwrite the lisp files provided with Emacs for WinCE.
• Create a HOME directory and fix the path in the registry.
• Create a link to emacs.exe on your desktop.
• Start Emacs and create your .emacs file in the HOME directory.

Notes for iPAQ/HP548

• You can change the font-size by adding a line like this to your .emacs file:
(set-frame-font "-*-Courier New-normal-r-*-*-10-*-*-*-c-*-iso8859-1")

• You can change the window size by using a command line arg like -geometry 32x15+0+25.
• The mode line is not fully visible when using an acceptable font size. I cannot do anything about it. It's best using landscape mode on iPAQ.
• It seems you have to bind execute-extended-command to another key sequence, because the iPAQ soft-keyboard does not have an ESC key!
The following call binds the functionality of M-x to CTRL-TAB:
(global-set-key [C-tab] 'execute-extended-command)

• Maybe you should get an external keyboard for your PPC.
• The link files on a PPC seem to be plain text and look like this:
#/emacs/bin/emacs.exe -geometry 38x22

They don't have a terminating new-line!

This is a sample batchfile. All values must be strings. The key HKLM\Environment does not exist by default. When you have whitespace in pathnames, enclose them in double quotes when you use a batch file. cereg.exe must be in the PATH on your PC to run the batch file. Path entries in PATH must be seperated with semicolon.
cereg -k HKLM\Environment -n COMPUTERNAME -v jornada720
cereg -k HKLM\Environment -n EMACSDATA -v \emacs\etc
cereg -k HKLM\Environment -n EMACSDIR -v \emacs
cereg -k HKLM\Environment -n EMACSDOC -v \emacs\etc
cereg -k HKLM\Environment -n EMACSLOADPATH -v \emacs\lisp
cereg -k HKLM\Environment -n EMACSPATH -v \emacs\bin
cereg -k HKLM\Environment -n HOME -v \keuchel
cereg -k HKLM\Environment -n PATH -v \bin
cereg -k HKLM\Environment -n SHELL -v none
cereg -k HKLM\Environment -n TEMP -v \tmp
cereg -k HKLM\Environment -n TMP -v \tmp
cereg -k HKLM\Environment -n TMPDIR -v \tmp
cereg -k HKLM\Environment -n USERNAME -v keuchel
cereg -k HKLM\Environment -n UNIXROOTDIR -v \


Text EditorOpen SourceEmacs

License Open Source
The program is open source, free and the source code is available on-line.
Popularity 1613
Total Downloads  15
Submitted By C:Amie
Submitted On 13 October 2022


No comments have been submitted against this application. Be the first!

You must be signed-in to post comments in the SCL. Not registered? Join our community.

Software Compatibility List: The SCL is provided for free to the Handheld PC Communty and we do not carry advertising to support our services. If you have found the SCL useful, please consider donating.