diff -urN ./cvsroot/emacs/leim/makefile.w32-in ./emacs/leim/makefile.w32-in --- ./cvsroot/emacs/leim/makefile.w32-in 2007-10-04 06:12:05.290745700 +0900 +++ ./emacs/leim/makefile.w32-in 2007-11-14 20:46:01.496355500 +0900 @@ -34,7 +34,7 @@ # byte-compile Emacs Lisp files, and generate the file leim-list.el. BUILT_EMACS = $(THISDIR)/$(dot)$(dot)/src/$(BLD)/emacs.exe -buildlisppath=$(CURDIR)/$(dot)$(dot)/lisp +buildlisppath=$(dot)$(dot)/lisp # How to run Emacs. RUN_EMACS = "$(BUILT_EMACS)" -batch --no-init-file --no-site-file --multibyte diff -urN ./cvsroot/emacs/lisp/makefile.w32-in ./emacs/lisp/makefile.w32-in --- ./cvsroot/emacs/lisp/makefile.w32-in 2007-10-04 06:12:28.690745700 +0900 +++ ./emacs/lisp/makefile.w32-in 2007-11-15 21:38:04.183200000 +0900 @@ -27,7 +27,6 @@ SQUOTE=' # ' -lisp = $(CURDIR) srcdir = $(CURDIR)/.. # You can specify a different executable on the make command line, @@ -41,10 +40,12 @@ EMACSOPT = -batch --no-init-file --no-site-file --multibyte # Set EMACSLOADPATH correctly (already defined in environment). -EMACSLOADPATH=$(lisp) +# EMACSLOADPATH=$(lisp) lisptagsfiles1 = $(lisp)/*.el lisptagsfiles2 = $(lisp)/*/*.el +lisptagsfiles1w32 = $(lispw32)/*.el +lisptagsfiles2w32 = $(lispw32)/*/*.el ETAGS = "../lib-src/$(BLD)/etags" # Files to compile before others during a bootstrap. This is done to @@ -54,11 +55,11 @@ # bootstrapping. COMPILE_FIRST = \ - $(lisp)/emacs-lisp/byte-opt.el \ - $(lisp)/emacs-lisp/bytecomp.el \ - $(lisp)/subr.el \ - $(lisp)/progmodes/cc-mode.el \ - $(lisp)/progmodes/cc-vars.el + $(lispw32)/emacs-lisp/byte-opt.el \ + $(lispw32)/emacs-lisp/bytecomp.el \ + $(lispw32)/subr.el \ + $(lispw32)/progmodes/cc-mode.el \ + $(lispw32)/progmodes/cc-vars.el # The actual Emacs command run in the targets below. # The quotes around $(EMACS) are here because the user could type @@ -98,11 +99,11 @@ # this can break with GNU Make 3.81 and later if sh.exe is used. custom-deps: $(lisp)/cus-load.el $(lisp)/loaddefs.el doit @echo Directories: $(WINS) - -$(emacs) -l cus-dep --eval $(ARGQUOTE)(setq find-file-hook nil)$(ARGQUOTE) -f custom-make-dependencies $(lisp) $(WINS) + -$(emacs) -l cus-dep --eval $(ARGQUOTE)(setq find-file-hook nil)$(ARGQUOTE) -f custom-make-dependencies $(lispw32) $(WINS) finder-data: $(lisp)/loaddefs.el doit @echo Directories: $(WINS) - $(emacs) -l finder -f finder-compile-keywords-make-dist $(lisp) $(WINS) + $(emacs) -l finder -f finder-compile-keywords-make-dist $(lispw32) $(WINS) $(lisp)/loaddefs.el: $(MAKE) $(MFLAGS) loaddefs.el-$(SHELLTYPE) @@ -156,7 +157,7 @@ @echo Directories: . $(WINS_ALMOST) $(emacs) -l autoload \ --eval $(ARGQUOTE)(setq find-file-hook nil find-file-suppress-same-file-warnings t)$(ARGQUOTE) \ - -f w32-batch-update-autoloads "$(lisp)/loaddefs.el" . $(WINS_ALMOST) + -f w32-batch-update-autoloads "$(lispw32)/loaddefs.el" . $(WINS_ALMOST) $(lisp)/subdirs.el: $(MAKE) $(MFLAGS) update-subdirs @@ -173,7 +174,7 @@ echo ))>> $(lisp)/subdirs.el update-subdirs-SH: doit - $(srcdir)/update-subdirs $(lisp); \ + $(srcdir)/update-subdirs $(lispw32); \ for file in $(WINS); do \ $(srcdir)/update-subdirs $$file; \ done; @@ -189,10 +190,10 @@ $(emacs) -l authors -f batch-update-authors $(srcdir)/etc/AUTHORS $(srcdir) TAGS: $(lisptagsfiles1) $(lisptagsfiles2) - $(ETAGS) $(lisptagsfiles1) $(lisptagsfiles2) + $(ETAGS) $(lisptagsfiles1w32) $(lisptagsfiles2w32) TAGS-LISP: $(lisptagsfiles1) $(lisptagsfiles2) - $(ETAGS) -o TAGS-LISP $(lisptagsfiles1) $(lisptagsfiles2) + $(ETAGS) -o TAGS-LISP $(lisptagsfiles1w32) $(lisptagsfiles2w32) .SUFFIXES: .elc .el @@ -227,7 +228,7 @@ echo Compiling $$el; \ $(emacs) -l loaddefs -f batch-byte-compile-if-not-done $$el; \ done - for dir in $(lisp) $(WINS); do \ + for dir in $(lispw32) $(WINS); do \ for el in $$dir/*.el; do \ if test -f $$el; \ then \ @@ -254,7 +255,7 @@ echo Compiling $$el; \ $(emacs) -f batch-byte-compile $$el || exit 1; \ done - for dir in $(lisp) $(WINS); do \ + for dir in $(lispw32) $(WINS); do \ for el in $$dir/*.el; do \ echo Compiling $$el; \ $(emacs) -f batch-byte-compile $$el || exit 1; \ @@ -267,7 +268,7 @@ for %%f in ($(lisp)/calc/*.el) do $(emacs) -f batch-byte-compile %%f compile-calc-SH: - for el in $(lisp)/calc/*.el; do \ + for el in $(lispw32)/calc/*.el; do \ echo Compiling $$el; \ $(emacs) -f batch-byte-compile $$el || exit 1; \ done @@ -289,7 +290,7 @@ # WARNING: Do NOT split the part inside $(ARGQUOTE)s into multiple lines as # this can break with GNU Make 3.81 and later if sh.exe is used. recompile: mh-autoloads doit $(lisp)/progmodes/cc-mode.elc - $(emacs) --eval $(ARGQUOTE)(batch-byte-recompile-directory 0)$(ARGQUOTE) $(lisp) + $(emacs) --eval $(ARGQUOTE)(batch-byte-recompile-directory 0)$(ARGQUOTE) $(lispw32) # Update MH-E internal autoloads. These are not to be confused with # the autoloads for the MH-E entry points, which are already in @@ -321,7 +322,7 @@ --eval "(setq find-file-suppress-same-file-warnings t)" \ --eval "(setq make-backup-files nil)" \ -f w32-batch-update-autoloads \ - "$(lisp)/mh-e/mh-loaddefs.el" ./mh-e + "$(lispw32)/mh-e/mh-loaddefs.el" ./mh-e pre-mh-loaddefs.el-SH: echo ";;; mh-loaddefs.el --- automatically extracted autoloads" > $@ diff -urN ./cvsroot/emacs/nt/configure.bat ./emacs/nt/configure.bat --- ./cvsroot/emacs/nt/configure.bat 2007-10-21 10:13:29.107369700 +0900 +++ ./emacs/nt/configure.bat 2007-11-18 13:31:38.418462200 +0900 @@ -42,7 +42,7 @@ rem cygwin compiled gmake 3.78.1: fails[5] fails[2,5] rem cygwin compiled gmake 3.79.1: fails[3,5] fails[2?,5] rem cygwin compiled make 3.80: okay[6] fails?[7] -rem cygwin compiled make 3.81: fails fails?[7] +rem cygwin compiled make 3.81: okay[9] fails?[7] rem mingw32 compiled make 3.79.1: okay okay rem mingw32 compiled make 3.80: okay okay?[7] rem mingw32 compiled make 3.81: okay okay[8] @@ -59,6 +59,12 @@ rem look for "cygpath" near line 85 of gmake.defs. rem [7] not recommended; please report if you try this combination. rem [8] tested only on Windows XP. +rem [9] if failed try on command prompt +rem $>set path=%path%;\bin +rem $>cd \nt +rem $>configure --with-gcc --no-cygwin [options] +rem $>make install +rem tested only Windows Vista. rem if exist config.log del config.log @@ -89,6 +95,9 @@ set doldflags= set sep1= set sep2= +rem set usew32ime= +rem set withoutreconvert= +rem set winver= rem ---------------------------------------------------------------------- rem Handle arguments. @@ -108,6 +117,8 @@ if "%1" == "--without-gif" goto withoutgif if "%1" == "--without-tiff" goto withouttiff if "%1" == "--without-xpm" goto withoutxpm +rem if "%1" == "--enable-w32-ime" goto withime +rem if "%1" == "--without-reconversion" goto withoutreconv if "%1" == "" goto checkutils :usage echo Usage: configure [options] @@ -125,6 +136,8 @@ echo. --without-gif do not use giflib or libungif echo. --without-tiff do not use libtiff echo. --without-xpm do not use libXpm +rem echo. --enable-w32-ime build with w32 input method editor +rem echo. --without-reconversion build without reconvertstring goto end rem ---------------------------------------------------------------------- :setprefix @@ -212,6 +225,19 @@ goto again rem ---------------------------------------------------------------------- + +rem :withime +rem set usew32ime=Y +rem shift +rem goto again + +rem ---------------------------------------------------------------------- +rem :withoutreconv +rem set withoutreconvert=Y +rem shift +rem goto again + +rem ---------------------------------------------------------------------- rem Check that necessary utilities (cp and rm) are present. :checkutils echo Checking for 'cp'... @@ -220,7 +246,7 @@ echo Checking for 'rm'... rm junk.bat if exist junk.bat goto needrm -goto checkcompiler +goto checkversion :needcp echo You need 'cp' (the Unix file copy program) to build Emacs. goto end @@ -230,6 +256,40 @@ goto end rem ---------------------------------------------------------------------- +rem Check for Windows Version. +rem _WIN32_WINDOWS and _WIN32_WINNT are automatically defined by WINVER. + +:checkversion +echo Checking for Windows Version ... + +ver > junk.txt + +findstr "6000" junk.txt > NUL +if errorlevel 0 goto WVISTA + +findstr "XP" junk.txt > NUL +if errorlevel 0 goto WXP + +findstr "2000" junk.txt > NUL +if errorlevel 0 goto W2K + +:WNT +set usercflags=%usercflags%%sep1%-DWINVER=0x0400 +goto ver_end + +:WVISTA +set usercflags=%usercflags%%sep1%-DWINVER=0x0606 +goto ver_end +:WXP +set usercflags=%usercflags%%sep1%-DWINVER=0x0501 +goto ver_end +:W2k +set usercflags=%usercflags%%sep1%-DWINVER=0x0500 +:ver_end +set sep1= %nothing% +del junk.txt + +rem ---------------------------------------------------------------------- rem Auto-detect compiler if not specified, and validate GCC if chosen. :checkcompiler if (%COMPILER%)==(cl) goto compilercheckdone @@ -250,7 +310,7 @@ Rem 8 characters of a label. So do NOT be tempted to change Rem chkapi* into something fancier like checkw32api Rem You HAVE been warned! -if (%nocygwin%) == (Y) goto chkapi +if (%nocygwin%) == (Y) goto chkapi3 echo Checking whether gcc requires '-mno-cygwin'... echo #include "cygwin/version.h" >junk.c echo main(){} >>junk.c @@ -261,7 +321,7 @@ gcc -mno-cygwin -c junk.c >>config.log 2>&1 if exist junk.o set nocygwin=Y rm -f junk.c junk.o - +goto chkapi3 :chkapi echo The failed program was: >>config.log type junk.c >>config.log @@ -273,6 +333,7 @@ rem problem). The gcc/mingw32 2.95.2 headers are okay, as are distros rem of w32api-xxx.zip from Anders Norlander since 1999-11-18 at least. rem +:chkapi3 echo Checking whether W32 API headers are too old... echo #include "windows.h" >junk.c echo test(PIMAGE_NT_HEADERS pHeader) >>junk.c @@ -291,7 +352,7 @@ set cf= if exist junk.o goto gccOk echo The failed program was: >>config.log -type junk.c >>config.log +if exist junk.c type junk.c >>config.log :nocompiler echo. @@ -356,7 +417,7 @@ echo The failed program was: >>config.log type junk.c >>config.log set HAVE_PNG= -goto :pngDone +goto pngDone :havePng echo ...PNG header available, building with PNG support. @@ -379,7 +440,7 @@ echo The failed program was: >>config.log type junk.c >>config.log set HAVE_JPEG= -goto :jpegDone +goto jpegDone :haveJpeg echo ...JPEG header available, building with JPEG support. @@ -402,7 +463,7 @@ echo The failed program was: >>config.log type junk.c >>config.log set HAVE_GIF= -goto :gifDone +goto gifDone :haveGif echo ...GIF header available, building with GIF support. @@ -425,7 +486,7 @@ echo The failed program was: >>config.log type junk.c >>config.log set HAVE_TIFF= -goto :tiffDone +goto tiffDone :haveTiff echo ...TIFF header available, building with TIFF support. @@ -449,7 +510,7 @@ echo The failed program was: >>config.log type junk.c >>config.log set HAVE_XPM= -goto :xpmDone +goto xpmDone :haveXpm echo ...XPM header available, building with XPM support. @@ -459,6 +520,35 @@ rm -f junk.c junk.obj junk.err junk.out rem ---------------------------------------------------------------------- +rem check for RECONVERTSTRING +rem + +rem if not %usew32ime% == Y goto noreconvertstring +rem if "(%withoutreconvert%)" == "(Y)" goto noreconvertstring +rem echo checking for RECONVERTSTRING... + +rem echo #include "windows.h" >junk.c +rem echo #include "imm.h" >>junk.c +rem echo main(){RECONVERTSTRING x;} >>junk.c + +rem %COMPILER% %usercflags% %mingwflag% -c junk.c -o junk.obj >>config.log 2>&1 +rem if exist junk.obj goto haveReconvertstring + +rem echo ...RECONVERTSTRING isn't defined. +rem echo The failed program was: >>config.log +rem type junk.c >>config.log +rem :noreconvertstring +rem set HAVE_RECONVERTSTRING= +rem goto recoverstringDone + +rem :haveReconvertstring +rem echo ...RECONVERTSTRING is defined. +rem set HAVE_RECONVERTSTRING=1 + +rem :recoverstringDone +rem rm -f junk.c junk.obj + +rem ---------------------------------------------------------------------- :genmakefiles echo Generating makefiles if %COMPILER% == gcc set MAKECMD=gmake @@ -481,6 +571,7 @@ if (%docflags%)==(Y) echo USER_CFLAGS=%usercflags%>>config.settings for %%v in (%userldflags%) do if not (%%v)==() set doldflags=Y if (%doldflags%)==(Y) echo USER_LDFLAGS=%userldflags%>>config.settings +rem if (%usew32ime%) == (Y) echo USE_W32IME=1 >>config.settings echo # End of settings from configure.bat>>config.settings echo. >>config.settings @@ -494,6 +585,8 @@ if not "(%HAVE_GIF%)" == "()" echo #define HAVE_GIF 1 >>config.tmp if not "(%HAVE_TIFF%)" == "()" echo #define HAVE_TIFF 1 >>config.tmp if not "(%HAVE_XPM%)" == "()" echo #define HAVE_XPM 1 >>config.tmp +rem if not "(%usew32ime%)" == "()" echo #define USE_W32_IME 1 >>config.tmp +rem if not "(%HAVE_RECONVERTSTRING%)" == "()" echo #define HAVE_RECONVERTSTRING 1 >>config.tmp echo /* End of settings from configure.bat. */ >>config.tmp Rem See if fc.exe returns a meaningful exit status. If it does, we @@ -512,15 +605,41 @@ :dontCopy if exist config.tmp del config.tmp +if not %MAKECMD% == gmake goto nogmake381cygwin +if not %nocygwin% == Y goto nogmake381cygwin +pushd ..\lisp +pwd > junk.txt +set /p lispdircyw= < junk.txt +cygpath -m %lispdircyw% > junk.txt +set /p lispdirw32= < junk.txt +del junk.txt +set loadpathsrc=%lispdirw32% +popd +goto genlispdir +:nogmake381cygwin +set lispdircyw=$(CURDIR) +set lispdirw32=$(lisp) +set loadpathsrc=$(CURDIR)/../lisp +:genlispdir +echo lisp=%lispdircyw%>lispdir.txt +echo lispw32=%lispdirw32%>>lispdir.txt +echo EMACSLOADPATH=%lispdirw32%>>lispdir.txt +echo EMACSLOADPATH=%loadpathsrc%>srcloadpath.txt + copy /b config.settings+%MAKECMD%.defs+..\nt\makefile.w32-in ..\nt\makefile copy /b config.settings+%MAKECMD%.defs+..\lib-src\makefile.w32-in ..\lib-src\makefile -copy /b config.settings+%MAKECMD%.defs+..\src\makefile.w32-in ..\src\makefile +copy /b config.settings+%MAKECMD%.defs+srcloadpath.txt+..\src\makefile.w32-in ..\src\makefile copy /b config.settings+%MAKECMD%.defs+..\doc\emacs\makefile.w32-in ..\doc\emacs\makefile copy /b config.settings+%MAKECMD%.defs+..\doc\misc\makefile.w32-in ..\doc\misc\makefile copy /b config.settings+%MAKECMD%.defs+..\doc\lispref\makefile.w32-in ..\doc\lispref\makefile copy /b config.settings+%MAKECMD%.defs+..\doc\lispintro\makefile.w32-in ..\doc\lispintro\makefile if exist ..\lisp\makefile rm -f ../lisp/[Mm]akefile -copy /b config.settings+%MAKECMD%.defs+..\lisp\makefile.w32-in ..\lisp\makefile +copy /b config.settings+%MAKECMD%.defs+lispdir.txt+..\lisp\makefile.w32-in ..\lisp\makefile +del lispdir.txt +del srcloadpath.txt +set curdircyw= +set curdirw32= +set loadpathsrc= rem Use the default (no-op) Makefile.in if the nt version is not present. if exist ..\leim\makefile.w32-in copy /b config.settings+%MAKECMD%.defs+..\leim\makefile.w32-in ..\leim\makefile if not exist ..\leim\makefile.w32-in copy /b config.settings+%MAKECMD%.defs+..\leim\Makefile.in ..\leim\makefile @@ -607,6 +726,7 @@ set doldflags= set mingwflag= set mf= +set usew32ime= goto skipArchTag arch-tag: 300d20a4-1675-4e75-b615-7ce1a8c5376c diff -urN ./cvsroot/emacs/nt/gmake.defs ./emacs/nt/gmake.defs --- ./cvsroot/emacs/nt/gmake.defs 2007-10-15 18:59:09.213565400 +0900 +++ ./emacs/nt/gmake.defs 2007-11-18 12:07:03.925662200 +0900 @@ -186,14 +186,14 @@ else DEBUG_CFLAGS = endif -CFLAGS = -I. -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0400 $(ARCH_CFLAGS) -D$(ARCH) \ +CFLAGS = -I. -DWIN32_LEAN_AND_MEAN $(ARCH_CFLAGS) -D$(ARCH) \ -D_CRTAPI1=_cdecl \ $(DEBUG_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS) EMACS_EXTRA_C_FLAGS = -DUSE_CRT_DLL=1 # see comments in allocate_heap in w32heap.c before changing any of the # -stack, -heap, or -image-base settings. -TEMACS_EXTRA_LINK = -Wl,-stack,0x00800000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01000000 $(SUBSYSTEM_CONSOLE) -Wl,-entry,__start -Wl,-Map,$(BLD)/temacs.map +TEMACS_EXTRA_LINK = -Wl,-stack,0x00100000 -Wl,-heap,0x00100000 -Wl,-image-base,0x01300000 $(SUBSYSTEM_CONSOLE) -Wl,-entry,__start -Wl,-Map,$(BLD)/temacs.map ifdef NOOPT OBJDIR = oo diff -urN ./cvsroot/emacs/nt/nmake.defs ./emacs/nt/nmake.defs --- ./cvsroot/emacs/nt/nmake.defs 2007-10-15 18:59:09.229165400 +0900 +++ ./emacs/nt/nmake.defs 2007-11-17 17:49:01.356769900 +0900 @@ -133,7 +133,7 @@ !else DEBUG_CFLAGS = !endif -CFLAGS = -I. -DWIN32_LEAN_AND_MEAN -D_WIN32_WINNT=0x0400 $(ARCH_CFLAGS) -D$(ARCH) \ +CFLAGS = -I. -DWIN32_LEAN_AND_MEAN $(ARCH_CFLAGS) -D$(ARCH) \ -D_CRTAPI1=_cdecl $(DEBUG_CFLAGS) $(USER_CFLAGS) $(LOCAL_FLAGS) EMACS_EXTRA_C_FLAGS = @@ -141,7 +141,7 @@ # see comments in allocate_heap in w32heap.c before changing any of the # -stack, -heap, or -base settings. -TEMACS_EXTRA_LINK = -stack:0x00800000 -heap:0x00100000 -base:0x01000000 -pdb:$(BLD)\temacs.pdb -machine:$(ARCH) $(SUBSYSTEM_CONSOLE) -entry:_start -map:$(BLD)\temacs.map $(EXTRA_LINK) +TEMACS_EXTRA_LINK = -stack:0x00100000 -heap:0x00100000 -base:0x01300000 -pdb:$(BLD)\temacs.pdb -machine:$(ARCH) $(SUBSYSTEM_CONSOLE) -entry:_start -map:$(BLD)\temacs.map $(EXTRA_LINK) !ifdef NOOPT OBJDIR = obj diff -urN ./cvsroot/emacs/src/makefile.w32-in ./emacs/src/makefile.w32-in --- ./cvsroot/emacs/src/makefile.w32-in 2007-11-03 06:30:44.870200000 +0900 +++ ./emacs/src/makefile.w32-in 2007-11-17 17:58:05.235169900 +0900 @@ -25,7 +25,7 @@ .PHONY: $(ALL) # Set EMACSLOADPATH correctly (in case already defined in environment). -EMACSLOADPATH=$(CURDIR)/../lisp +#EMACSLOADPATH=$(CURDIR)/../lisp # # HAVE_CONFIG_H is required by some generic gnu sources stuck into @@ -187,7 +187,7 @@ # WARNING: Do NOT split the part inside $(ARGQUOTE)s into multiple lines as # this can break with GNU Make 3.81 and later if sh.exe is used. bootstrap-temacs: - $(MAKE) $(MFLAGS) $(XMFLAGS) temacs CFLAGS=$(ARGQUOTE)$(CFLAGS) -DPURESIZE=5000000$(ARGQUOTE) + $(MAKE) $(MFLAGS) $(XMFLAGS) temacs CFLAGS=$(ARGQUOTE)$(CFLAGS)$(ARGQUOTE) # # Dump an Emacs executable named bootstrap-emacs containing the @@ -195,7 +195,7 @@ # bootstrap-emacs: bootstrap-temacs "$(THISDIR)/$(BLD)/temacs.exe" -batch -l loadup bootstrap - - mkdir "../bin" + -mkdir "../bin" $(CP) $(EMACS) ../bin # @@ -242,7 +242,7 @@ # Assuming INSTALL_DIR is defined, build and install emacs in it. # install: $(ALL) - - mkdir "$(INSTALL_DIR)/bin" + -mkdir "$(INSTALL_DIR)/bin" $(CP) $(EMACS) $(INSTALL_DIR)/bin # diff -urN ./cvsroot/emacs/src/s/ms-w32.h ./emacs/src/s/ms-w32.h --- ./cvsroot/emacs/src/s/ms-w32.h 2007-11-18 10:33:03.542862200 +0900 +++ ./emacs/src/s/ms-w32.h 2007-11-18 11:36:13.672062200 +0900 @@ -478,7 +478,7 @@ #include /* We need a little extra space, see ../../lisp/loadup.el. */ -#define SYSTEM_PURESIZE_EXTRA 50000 +#define SYSTEM_PURESIZE_EXTRA 80000 /* For unexec to work on Alpha systems, we need to put Emacs' initialized data into a separate section from the CRT initialized diff -urN ./cvsroot/emacs/src/w32bdf.c ./emacs/src/w32bdf.c --- ./cvsroot/emacs/src/w32bdf.c 2007-10-04 06:13:20.139545700 +0900 +++ ./emacs/src/w32bdf.c 2007-11-10 08:55:19.489159700 +0900 @@ -44,8 +44,8 @@ /* about 96 characters */ #define BDF_BITMAP_HEAP_INITIAL_SIZE (64 * 96) -HANDLE hbdf_cp_heap = INVALID_HANDLE_VALUE; -HANDLE hbdf_bmp_heap = INVALID_HANDLE_VALUE; +HANDLE hbdf_cp_heap = NULL /* why INVALID_HANDLE_VALUE? */; +HANDLE hbdf_bmp_heap = NULL /* why INVALID_HANDLE_VALUE? */; void w32_free_bdf_font(bdffont *fontp); bdffont *w32_init_bdf_font(char *filename); @@ -242,9 +242,9 @@ BY_HANDLE_FILE_INFORMATION fileinfo; int i; - if (hbdf_cp_heap == INVALID_HANDLE_VALUE) + if (hbdf_cp_heap == NULL /* INVALID_HANDLE_VALUE */) hbdf_cp_heap = HeapCreate(0, BDF_CODEPOINT_HEAP_INITIAL_SIZE, 0); - if (hbdf_bmp_heap == INVALID_HANDLE_VALUE) + if (hbdf_bmp_heap == NULL /* INVALID_HANDLE_VALUE */) hbdf_bmp_heap = HeapCreate(0, BDF_BITMAP_HEAP_INITIAL_SIZE, 0); if (!hbdf_cp_heap || !hbdf_bmp_heap) @@ -261,7 +261,8 @@ error("Fail to open BDF file"); } hfilemap = CreateFileMapping(hfile, NULL, PAGE_READONLY, 0, 0, NULL); - if (hfilemap == INVALID_HANDLE_VALUE) + if (hfilemap == NULL /* CreateFileMapping () error return NULL, not + INVALID_HANDLE_VALUE */) { CloseHandle(hfile); error("Can't map font"); @@ -828,7 +829,8 @@ size = fileinfo.nFileSizeLow; hfilemap = CreateFileMapping (hfile, NULL, PAGE_READONLY, 0, 0, NULL); - if (hfilemap == INVALID_HANDLE_VALUE) + if (hfilemap == NULL /* CreateFileMapping () error return NULL, not + INVALID_HANDLE_VALUE */) { CloseHandle (hfile); return 0; diff -urN ./cvsroot/emacs/src/w32term.h ./emacs/src/w32term.h --- ./cvsroot/emacs/src/w32term.h 2007-11-10 14:37:18.607159700 +0900 +++ ./emacs/src/w32term.h 2007-11-11 15:41:00.829559500 +0900 @@ -399,6 +399,11 @@ /* The background for which the above relief GCs were set up. They are changed only when a different background is involved. */ unsigned long relief_background; +/* +#ifdef USE_W32_IME + */ /* logfont for IME */ /* + LOGFONT ime_logfont; +#endif */ }; extern struct w32_output w32term_display; @@ -617,6 +622,8 @@ #endif /* WM_MOUSEHWHEEL */ #ifndef WM_APPCOMMAND #define WM_APPCOMMAND 0x319 +#endif +#ifndef GET_APPCOMMAND_LPARAM #define GET_APPCOMMAND_LPARAM(lParam) (HIWORD(lParam) & 0x7fff) #endif @@ -643,6 +650,102 @@ #define WM_EMACS_SETCURSOR (WM_EMACS_START + 19) #define WM_EMACS_END (WM_EMACS_START + 20) +/* #ifdef USE_W32_IME +#ifndef VK_KANJI +#define VK_KANJI 0x19 +#endif +#ifndef VK_KANA +#define VK_KANA 0x15 +#endif +#define VK_COMPEND 0x1A + +#ifdef RECONVERSION +#ifndef WM_IME_REQUEST +#define WM_IME_REQUEST 0x288 +#endif +#ifndef IMR_COMPOSITIONWINDOW +#define IMR_COMPOSITIONWINDOW 0x0001 +#endif +#ifndef IMR_CANDIDATEWINDOW +#define IMR_CANDIDATEWINDOW 0x0002 +#endif +#ifdef IMR_COMPOSITIONFONT +#define IMR_COMPOSITIONFONT 0x0003 +#endif +#ifndef IMR_RECONVERTSTRING +#define IMR_RECONVERTSTRING 0x0004 +#endif +#ifndef IMR_CONFIRMRECONVERTSTRING +#define IMR_CONFIRMRECONVERTSTRING 0x0005 +#endif +#endif + */ +/* For internal communications + from window procedure to event loop. */ /* +#define WM_MULE_IME_REPORT (WM_USER+2200) +#define WM_MULE_IME_STATUS (WM_USER+2201) + */ +/* For internal communications + from main thread to window procedure. */ /* +#define WM_MULE_IMM_MESSAGE_START (WM_USER+2300) +#define WM_MULE_IMM_SET_STATUS (WM_USER+2300) +#define WM_MULE_IMM_GET_STATUS (WM_USER+2301) +#if 0 +#define WM_MULE_IMM_DEAL_WITH_CONTEXT (WM_USER+2302) +#define WM_MULE_IMM_SET_COMPOSITION_STRING (WM_USER+2303) +#endif +#define WM_MULE_IMM_GET_COMPOSITION_STRING (WM_USER+2304) +#define WM_MULE_IMM_SET_MODE (WM_USER+2305) +#if 0 +#define WM_MULE_IMM_NOTIFY (WM_USER+2310) +#define WM_MULE_IMM_GET_UNDETERMINED_STRING_LENGTH (WM_USER+2320) +#endif +#define WM_MULE_IMM_MESSAGE_END (WM_USER+2399) +#define MESSAGE_IMM_COM_P(message) \ + (((message) >= WM_MULE_IMM_MESSAGE_START) && \ + ((message) <= WM_MULE_IMM_MESSAGE_END)) + +#if 0 */ +/* For synchronization + to create conversion agent + between main thread and event loop. */ /* +#define WM_MULE_IME_CREATE_AGENT (WM_USER+2400) +#define WM_MULE_IME_CREATE_AGENT_REPLY (WM_USER+2401) +#define WM_MULE_IME_DESTROY_AGENT (WM_USER+2402) +#define WM_MULE_IME_DESTROY_AGENT_REPLY (WM_USER+2403) +#endif +#define CONVAGENT_CLASS "ConvAgent" + +#define WM_MULE_IMM_SET_COMPOSITION_FONT (WM_USER+2404) +#define WM_MULE_IMM_SET_COMPOSITION_FONT_REPLY (WM_USER+2405) + +#define WM_MULE_IMM_SET_CONVERSION_WINDOW (WM_USER+2406) +#if 0 +#define WM_MULE_IMM_SET_CONVERSION_WINDOW_REPLY (WM_USER+2407) +#endif + +#ifdef RECONVERSION +#ifndef HAVE_RECONVERTSTRING +typedef struct tagRECONVERTSTRING { + DWORD dwSize; + DWORD dwVersion; + DWORD dwStrLen; + DWORD dwStrOffset; + DWORD dwCompStrLen; + DWORD dwCompStrOffset; + DWORD dwTargetStrLen; + DWORD dwTargetStrOffset; +} RECONVERTSTRING, *PRECONVERTSTRING; +#endif +#ifndef SCS_SETRECONVERTSTRING +#define SCS_SETRECONVERTSTRING 0x00010000 +#endif +#ifndef SCS_QUERYRECONVERTSTRING +#define SCS_QUERYRECONVERTSTRING 0x00020000 +#endif +#endif */ /* RECONVERSION */ /* +#endif */ /* USE_W32_IME */ + #define WND_FONTWIDTH_INDEX (0) #define WND_LINEHEIGHT_INDEX (4) #define WND_BORDER_INDEX (8) @@ -757,6 +860,32 @@ EXFUN (Fx_display_color_p, 1); EXFUN (Fx_display_grayscale_p, 1); +/* #ifdef USE_W32_IME */ +/* + You should avoid using this method to send message to the + message thread if possible. Although this method guarantee + message reachablity even when message thread has no window, + you must deal with any messages sent by this method + both in the thread message loop(W32read_socket) and + in the window procedure(normally w32_WndProc). +*/ +/* #define SEND_MSGTHREAD_INFORM_MESSAGE(message, wparam, lparam) \ + do { \ + if (FRAME_W32_WINDOW(SELECTED_FRAME()) != NULL) \ + SendMessage(FRAME_W32_WINDOW(SELECTED_FRAME()), (message), \ + (wparam), (lparam)); \ + else \ + while (!PostThreadMessage (dwWindowsThreadId, (message), \ + (wparam), (lparam))) \ + sleep(1); \ + }while(0) + +#define WAIT_REPLY_MESSAGE(ret, msgno) \ + do { \ + GetMessage ((ret), NULL, 0, 0); \ + } while((ret)->message != (msgno)) +#endif */ /* USE_W32_IME */ + #define FONT_TYPE_FOR_UNIBYTE(font, ch) \ ((font)->bdf ? BDF_1D_FONT : ANSI_FONT)