[macemacsjp-cvs 563] [582] new patch for emacs24

Back to archive index

svnno****@sourc***** svnno****@sourc*****
2012年 5月 20日 (日) 17:11:21 JST


Revision: 582
          http://sourceforge.jp/projects/macemacsjp/scm/svn/commits/582
Author:   taiichi
Date:     2012-05-20 17:11:21 +0900 (Sun, 20 May 2012)
Log Message:
-----------
new patch for emacs24

Modified Paths:
--------------
    inline_patch/trunk/ChangeLog
    inline_patch/trunk/README
    inline_patch/trunk/emacs-inline.patch

Removed Paths:
-------------
    inline_patch/trunk/font.patch
    inline_patch/trunk/lion.patch
    inline_patch/trunk/xcode4.patch

-------------- next part --------------
Modified: inline_patch/trunk/ChangeLog
===================================================================
--- inline_patch/trunk/ChangeLog	2012-04-28 05:05:50 UTC (rev 581)
+++ inline_patch/trunk/ChangeLog	2012-05-20 08:11:21 UTC (rev 582)
@@ -1,3 +1,12 @@
+2012-05-03  HASHIMOTO Taiichi  <taiic****@mac*****>
+
+	* lisp/term/
+
+2012-05-01  HASHIMOTO Taiichi  <taiic****@mac*****>
+
+	* ver.24 へ
+	* xcode4.patch, font.patch, lion.patch 削除
+
 2011-12-04  HASHIMOTO Taiichi  <taiic****@mac*****>
 
 	* src/macim.m: 三代川さんのパッチを取り込み.localeの取得方法の変更.

Modified: inline_patch/trunk/README
===================================================================
--- inline_patch/trunk/README	2012-04-28 05:05:50 UTC (rev 581)
+++ inline_patch/trunk/README	2012-05-20 08:11:21 UTC (rev 582)
@@ -1,15 +1,33 @@
 * Files
 
-** emacs-inline.patch: patch for input method
-** font.patch: patch to fix trembling font when user inputs japanese by input method
-** xcode4.patch: patch to compile by xcode4 (gcc-4.2 64bit)
-** lion.patch: patch to compile on MacOSX 10.7. It contains xcode4.patch.
+** emacs-inline.patch: patch for input method on MacOSXn
 
-* Usage
 
-[MaxOSX 10.7 (Lion)]
-% cd emacs-23.3
-% patch -p0 < lion.patch
+* Build
+
+% cd emacs-24.0.97
 % patch -p0 < emacs-inline.patch
-% patch -p0 < font.patch
 
+
+* Usage
+** setup in .emacs.d/init.el
+(mac-input-method-mode t)
+
+** change each cursor face and title of input method or input method mode
+*** set each cursor face and title of input method or input method mode
+(mac-set-input-method-parameter input-source-name type value)
+
+;; change cursor color
+(mac-set-input-method-parameter "com.google.inputmethod.Japanese.base" 'cursor-color 'red)
+
+;; change cursor type
+(mac-set-input-method-parameter "com.google.inputmethod.Japanese.base" 'cursor-type 'box)
+
+;; change title
+(mac-set-input-method-parameter "com.google.inputmethod.Japanese.base" 'title "J")
+
+*** know current input source name
+(mac-get-current-input-source)
+
+*** know current face setting of input source 
+(mac-get-input-method-parameter input-source-name key)

Modified: inline_patch/trunk/emacs-inline.patch
===================================================================
--- inline_patch/trunk/emacs-inline.patch	2012-04-28 05:05:50 UTC (rev 581)
+++ inline_patch/trunk/emacs-inline.patch	2012-05-20 08:11:21 UTC (rev 582)
@@ -1,18 +1,562 @@
-diff -r -p -x '*.elc' ../emacs-23.3-0-lion/lisp/term/ns-win.el lisp/term/ns-win.el
-*** ../emacs-23.3-0-lion/lisp/term/ns-win.el	2011-12-05 16:49:13.000000000 +0900
---- lisp/term/ns-win.el	2012-01-13 08:55:10.000000000 +0900
+diff -N -p ../emacs-24.0.97/configure.in ./configure.in
+*** ../emacs-24.0.97/configure.in	2012-05-17 11:19:50.000000000 +0900
+--- ./configure.in	2012-05-20 17:01:19.000000000 +0900
+*************** if test "${HAVE_NS}" = yes; then
+*** 1582,1588 ****
+    fi
+    ns_frag=$srcdir/src/ns.mk
+    NS_OBJ="fontset.o fringe.o image.o"
+!   NS_OBJC_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o"
+  fi
+  CFLAGS="$tmp_CFLAGS"
+  CPPFLAGS="$tmp_CPPFLAGS"
+--- 1582,1588 ----
+    fi
+    ns_frag=$srcdir/src/ns.mk
+    NS_OBJ="fontset.o fringe.o image.o"
+!   NS_OBJC_OBJ="nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o macim.o"
+  fi
+  CFLAGS="$tmp_CFLAGS"
+  CPPFLAGS="$tmp_CPPFLAGS"
+*************** case "$opsys" in
+*** 3416,3422 ****
+     ## 0x690 is the total size of 30 segment load commands (at 56
+     ## each); under Cocoa 31 commands are required.
+     if test "$HAVE_NS" = "yes"; then
+!      libs_nsgui="-framework AppKit"
+       headerpad_extra=6C8
+     else
+       libs_nsgui=
+--- 3416,3422 ----
+     ## 0x690 is the total size of 30 segment load commands (at 56
+     ## each); under Cocoa 31 commands are required.
+     if test "$HAVE_NS" = "yes"; then
+!      libs_nsgui="-framework AppKit -framework Carbon"
+       headerpad_extra=6C8
+     else
+       libs_nsgui=
+diff -r -N -p ../emacs-24.0.96/src/Makefile.in src/Makefile.in
+*** ../emacs-24.0.96/src/Makefile.in	2012-04-08 12:03:02.000000000 +0900
+--- src/Makefile.in	2012-05-03 22:23:59.000000000 +0900
+*************** obj = $(base_obj) $(NS_OBJC_OBJ)
+*** 350,356 ****
+  SOME_MACHINE_OBJECTS = dosfns.o msdos.o \
+    xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o \
+    fontset.o dbusbind.o \
+!   nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o \
+    w32.o w32console.o w32fns.o w32heap.o w32inevt.o \
+    w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o \
+    w16select.o widget.o xfont.o ftfont.o xftfont.o ftxfont.o gtkutil.o \
+--- 350,356 ----
+  SOME_MACHINE_OBJECTS = dosfns.o msdos.o \
+    xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o \
+    fontset.o dbusbind.o \
+!   nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o macim.o\
+    w32.o w32console.o w32fns.o w32heap.o w32inevt.o \
+    w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o \
+    w16select.o widget.o xfont.o ftfont.o xftfont.o ftxfont.o gtkutil.o \
+diff -r -N -p ../emacs-24.0.96/src/keyboard.c src/keyboard.c
+*** ../emacs-24.0.96/src/keyboard.c	2012-04-08 12:03:02.000000000 +0900
+--- src/keyboard.c	2012-05-03 22:23:59.000000000 +0900
+*************** kbd_buffer_get_event (KBOARD **kbp,
+*** 3915,3922 ****
+          {
+            if (event->code == KEY_NS_PUT_WORKING_TEXT)
+              obj = Fcons (intern ("ns-put-working-text"), Qnil);
+!           else
+              obj = Fcons (intern ("ns-unput-working-text"), Qnil);
+  	  kbd_fetch_ptr = event + 1;
+            if (used_mouse_menu)
+              *used_mouse_menu = 1;
+--- 3915,3924 ----
+          {
+            if (event->code == KEY_NS_PUT_WORKING_TEXT)
+              obj = Fcons (intern ("ns-put-working-text"), Qnil);
+!           else if (event->code == KEY_NS_UNPUT_WORKING_TEXT)
+              obj = Fcons (intern ("ns-unput-working-text"), Qnil);
++ 	  else if (event->code == KEY_NS_PUT_MARKED_TEXT)
++ 	    obj = Fcons (intern ("ns-put-marked-text"), event->arg);
+  	  kbd_fetch_ptr = event + 1;
+            if (used_mouse_menu)
+              *used_mouse_menu = 1;
+*************** keys_of_keyboard (void)
+*** 12332,12337 ****
+--- 12334,12341 ----
+  			    "ns-put-working-text");
+    initial_define_lispy_key (Vspecial_event_map, "ns-unput-working-text",
+  			    "ns-unput-working-text");
++   initial_define_lispy_key (Vspecial_event_map, "ns-put-marked-text",
++ 			    "ns-put-marked-text");
+    /* Here we used to use `ignore-event' which would simple set prefix-arg to
+       current-prefix-arg, as is done in `handle-switch-frame'.
+       But `handle-switch-frame is not run from the special-map.
+diff -r -N -p ../emacs-24.0.96/src/macim.m src/macim.m
+*** ../emacs-24.0.96/src/macim.m	1970-01-01 09:00:00.000000000 +0900
+--- src/macim.m	2012-05-03 22:23:59.000000000 +0900
+***************
+*** 0 ****
+--- 1,177 ----
++ /* Implementation of Input Method Extension for MacOS X.
++    Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
++    Taiichi Hashimoto <taiic****@mac*****>.
++ */
++ 
++ #include "config.h"
++ 
++ #ifdef NS_IMPL_COCOA
++ 
++ #include <math.h>
++ #include <sys/types.h>
++ #include <time.h>
++ #include <signal.h>
++ #include <unistd.h>
++ 
++ #include <Carbon/Carbon.h>
++ 
++ #include "lisp.h"
++ #include "blockinput.h"
++ 
++ enum output_method
++ {
++   output_initial,
++   output_termcap,
++   output_x_window,
++   output_msdos_raw,
++   output_w32,
++   output_mac,
++   output_ns
++ } output_method;
++ 
++ #include "termhooks.h"
++ #include "keyboard.h"
++ #include "buffer.h"
++ 
++ //extern Lisp_Object Qcurrent_input_method;
++ //extern int cursor_in_echo_area;
++ static Lisp_Object Qmac_keys_passed_to_system;
++ 
++ void mac_init_input_method ();
++ int mac_pass_key_to_system (int code, int modifiers);
++ int mac_pass_key_directly_to_emacs ();
++ int mac_store_change_input_method_event ();
++ 
++ DEFUN ("mac-input-source-is-ascii-capable", Fmac_input_source_is_ascii_capable, Smac_input_source_is_ascii_capable,
++        0, 0, 0,
++        doc: /* Is current input source ascii capable? */)
++      (void)
++ {
++   TISInputSourceRef is = TISCopyCurrentKeyboardInputSource();
++   CFBooleanRef ret = TISGetInputSourceProperty(is, kTISPropertyInputSourceIsASCIICapable);
++   
++   return CFBooleanGetValue(ret)? Qt : Qnil;
++ }
++ 
++ DEFUN ("mac-get-input-source-list", Fmac_get_input_source_list, Smac_get_input_source_list,
++        0, 0, 0,
++        doc: /* get input source list on MacOSX */)
++      (void)
++ {
++   NSArray *is_list = (NSArray *)TISCreateInputSourceList(NULL, false);
++   int list_size = [is_list count];
++   Lisp_Object list[list_size];
++   int i;
++ 
++   for (i = 0; i < list_size; i++) {
++     TISInputSourceRef is = (TISInputSourceRef)[is_list objectAtIndex:i];
++     NSString *id = (NSString *)TISGetInputSourceProperty(is, kTISPropertyInputSourceID);
++     list[i] = make_string([id UTF8String],
++ 			  [id lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
++   }
++ 
++   return Flist(list_size, list);
++ }
++ 
++ DEFUN ("mac-get-current-input-source", Fmac_get_current_input_source, Smac_get_current_input_source,
++        0, 0, 0,
++        doc: /* get current input source on MacOSX */)
++      (void)
++ {
++   TISInputSourceRef is = TISCopyCurrentKeyboardInputSource();
++   NSString *id = (NSString *)TISGetInputSourceProperty(is, kTISPropertyInputSourceID);
++ 
++   return make_string([id UTF8String],
++ 		     [id lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
++ }
++ 
++ DEFUN ("mac-toggle-input-source", Fmac_toggle_input_source, Smac_toggle_input_source,
++        1, 1, 0,
++        doc: /* toggle input source on MacOSX */)
++      (arg)
++      Lisp_Object arg;
++ {
++   TISInputSourceRef is = NULL;
++ 
++   if (NILP (arg))
++     {
++       is = TISCopyCurrentASCIICapableKeyboardInputSource();
++     }
++   else
++     {
++       NSString *locale = [[NSLocale currentLocale] localeIdentifier];
++       is = TISCopyInputSourceForLanguage((CFStringRef)locale);
++     }
++   if (is) TISSelectInputSource(is);
++ 
++   return arg;
++ }
++ 
++ int
++ mac_store_change_input_method_event ()
++ {
++   Lisp_Object dim;
++   int ret = FALSE;
++   
++   dim = Fsymbol_value (intern ("default-input-method"));
++   if (STRINGP (dim) && strcmp(SDATA (dim), "MacOSX") == 0)
++     {
++       ret = TRUE;
++     }
++ 
++   return ret;
++ }
++ 
++ int
++ mac_pass_key_to_system (int code, int modifiers)
++ {
++   Lisp_Object keys = Fsymbol_value (Qmac_keys_passed_to_system);
++   Lisp_Object m, k; 
++ 
++   while (!NILP (keys))
++     {
++       m = XCAR (XCAR (keys));
++       k = XCDR (XCAR (keys));
++       keys = XCDR (keys);
++ 
++       if (NUMBERP (m) && modifiers == XINT (m))
++ 	if (NILP (k)
++ 	    || (NUMBERP (k) && code == XINT (k)))
++ 	  return TRUE;
++     }
++   
++   return FALSE;
++ }
++ 
++ int
++ mac_pass_key_directly_to_emacs (void)
++ {
++ 
++   if (NILP (Fmac_input_source_is_ascii_capable()))
++     {
++       if (NILP (Vmac_use_input_method_on_system)
++ 	  || this_command_key_count 
++ 	  || cursor_in_echo_area 
++ 	  || !NILP (BVAR (current_buffer, read_only)))
++ 	return TRUE;
++     }
++ 
++   return FALSE;
++ }
++ 
++ 
++ void mac_init_input_method (void)
++ {
++   Qmac_keys_passed_to_system = intern ("mac-keys-passed-to-system");
++   staticpro (&Qmac_keys_passed_to_system);
++ 
++   DEFVAR_LISP ("mac-use-input-method-on-system", Vmac_use_input_method_on_system,
++                doc: /* If it is non-nil, use input method on system. */);
++   Vmac_use_input_method_on_system = Qt;
++ 
++   defsubr (&Smac_input_source_is_ascii_capable);
++   defsubr (&Smac_get_input_source_list);
++   defsubr (&Smac_get_current_input_source);
++   defsubr (&Smac_toggle_input_source);
++ }
++ #endif
+diff -r -N -p ../emacs-24.0.96/src/nsfns.m src/nsfns.m
+*** ../emacs-24.0.96/src/nsfns.m	2012-04-08 12:03:02.000000000 +0900
+--- src/nsfns.m	2012-05-04 00:05:24.000000000 +0900
+*************** static ptrdiff_t image_cache_refcount;
+*** 111,117 ****
+  
+     ========================================================================== */
+  
+- 
+  void
+  check_ns (void)
+  {
+--- 111,116 ----
+*************** be used as the image of the icon represe
+*** 2722,2727 ****
+--- 2721,2744 ----
+                 doc: /* Toolkit version for NS Windowing.  */);
+    Vns_version_string = ns_appkit_version_str ();
+  
++ 
++   DEFVAR_LISP ("ns-shift-key-mask", Vns_shift_key_mask,
++                doc: /* Shift key mask defined in system. */);
++   Vns_shift_key_mask = make_number (NSShiftKeyMask);
++ 
++   DEFVAR_LISP ("ns-control-key-mask", Vns_control_key_mask,
++                doc: /* Control key mask defined in system. */);
++   Vns_control_key_mask = make_number (NSControlKeyMask);
++ 
++   DEFVAR_LISP ("ns-alternate-key-mask", Vns_alternate_key_mask,
++                doc: /* Alternate key mask defined in system. */);
++   Vns_alternate_key_mask = make_number (NSAlternateKeyMask);
++ 
++   DEFVAR_LISP ("ns-command-key-mask", Vns_command_key_mask,
++                doc: /* Command key mask defined in system. */);
++   Vns_command_key_mask = make_number (NSCommandKeyMask);
++ 
++ 
+    defsubr (&Sns_read_file_name);
+    defsubr (&Sns_get_resource);
+    defsubr (&Sns_set_resource);
+*************** be used as the image of the icon represe
+*** 2766,2771 ****
+--- 2783,2792 ----
+    defsubr (&Sx_show_tip);
+    defsubr (&Sx_hide_tip);
+  
++ #ifdef NS_IMPL_COCOA
++   mac_init_input_method ();
++ #endif
++ 
+    /* used only in fontset.c */
+    check_window_system_func = check_ns;
+  
+diff -r -N -p ../emacs-24.0.96/src/nsterm.h src/nsterm.h
+*** ../emacs-24.0.96/src/nsterm.h	2012-04-08 12:03:02.000000000 +0900
+--- src/nsterm.h	2012-05-03 22:23:59.000000000 +0900
+*************** typedef unsigned int NSUInteger;
+*** 398,403 ****
+--- 398,405 ----
+  #define KEY_NS_NEW_FRAME               ((1<<28)|(0<<16)|12)
+  #define KEY_NS_TOGGLE_TOOLBAR          ((1<<28)|(0<<16)|13)
+  #define KEY_NS_SHOW_PREFS              ((1<<28)|(0<<16)|14)
++ #define KEY_MAC_CHANGE_INPUT_METHOD    ((1<<28)|(0<<16)|15)
++ #define KEY_NS_PUT_MARKED_TEXT         ((1<<28)|(0<<16)|16)
+  
+  /* could use list to store these, but rest of emacs has a big infrastructure
+     for managing a table of bitmap "records" */
+diff -r -N -p ../emacs-24.0.96/src/nsterm.m src/nsterm.m
+*** ../emacs-24.0.96/src/nsterm.m	2012-04-09 22:08:55.000000000 +0900
+--- src/nsterm.m	2012-05-04 00:12:13.000000000 +0900
+*************** ns_term_init (Lisp_Object display_name)
+*** 4040,4045 ****
+--- 4040,4048 ----
+    /*   [[NSNotificationCenter defaultCenter] addObserver: NSApp
+                                           selector: @selector (logNotification:)
+                                               name: nil object: nil]; */
++   [[NSDistributedNotificationCenter defaultCenter] addObserver: NSApp
++ 					selector: @selector (changeInputMethod:)
++ 						   name: @"AppleSelectedInputSourcesChangedNotification" object: nil];
+  
+    dpyinfo = (struct ns_display_info *)xmalloc (sizeof (struct ns_display_info));
+    memset (dpyinfo, 0, sizeof (struct ns_display_info));
+*************** ns_term_shutdown (int sig)
+*** 4255,4260 ****
+--- 4258,4276 ----
+      NSLog (@"notification: '%@'", [notification name]);
+  }
+  
++ - (void)changeInputMethod: (NSNotification *)notification
++ {
++ 
++   struct frame *emacsframe = SELECTED_FRAME ();
++ 
++   if (mac_store_change_input_method_event())
++     {
++       emacs_event->kind = NS_NONKEY_EVENT;
++       emacs_event->code = KEY_MAC_CHANGE_INPUT_METHOD;
++       emacs_event->modifiers = 0;
++       EV_TRAILER ((id)nil);
++     }
++ }
+  
+  - (void)sendEvent: (NSEvent *)theEvent
+  /* --------------------------------------------------------------------------
+*************** ns_term_shutdown (int sig)
+*** 4857,4863 ****
+               code, fnKeysym, flags, emacs_event->modifiers);
+  
+        /* if it was a function key or had modifiers, pass it directly to emacs */
+!       if (fnKeysym || (emacs_event->modifiers
+                         && (emacs_event->modifiers != shift_modifier)
+                         && [[theEvent charactersIgnoringModifiers] length] > 0))
+  /*[[theEvent characters] length] */
+--- 4872,4879 ----
+               code, fnKeysym, flags, emacs_event->modifiers);
+  
+        /* if it was a function key or had modifiers, pass it directly to emacs */
+!       if (mac_pass_key_directly_to_emacs ()
+! 	  ||fnKeysym || (emacs_event->modifiers
+                         && (emacs_event->modifiers != shift_modifier)
+                         && [[theEvent charactersIgnoringModifiers] length] > 0))
+  /*[[theEvent characters] length] */
+*************** ns_term_shutdown (int sig)
+*** 4872,4879 ****
+                ? MULTIBYTE_CHAR_KEYSTROKE_EVENT : ASCII_KEYSTROKE_EVENT;
+  
+            emacs_event->code = code;
+!           EV_TRAILER (theEvent);
+!           return;
+          }
+      }
+  
+--- 4888,4905 ----
+                ? MULTIBYTE_CHAR_KEYSTROKE_EVENT : ASCII_KEYSTROKE_EVENT;
+  
+            emacs_event->code = code;
+! 	  /* The function mac_pass_key_to_system decides 
+! 	     whether it is passed directly to emacs or not. */
+! 	  if (emacs_event->kind == NON_ASCII_KEYSTROKE_EVENT
+! 	      || !mac_pass_key_to_system (code, flags
+! 					  & (NSShiftKeyMask
+! 					     | NSControlKeyMask
+! 					     | NSAlternateKeyMask
+! 					     | NSCommandKeyMask)))
+! 	    {
+! 	      EV_TRAILER (theEvent);
+! 	      return;
+! 	    }
+          }
+      }
+  
+*************** ns_term_shutdown (int sig)
+*** 4966,4975 ****
+      NSLog (@"setMarkedText '%@' len =%d range %d from %d", str, [str length],
+             selRange.length, selRange.location);
+  
+-   if (workingText != nil)
+-     [self deleteWorkingText];
+    if ([str length] == 0)
+!     return;
+  
+    if (!emacs_event)
+      return;
+--- 4992,5010 ----
+      NSLog (@"setMarkedText '%@' len =%d range %d from %d", str, [str length],
+             selRange.length, selRange.location);
+  
+    if ([str length] == 0)
+!     {
+!       [self deleteWorkingText];
+!       return;
+!     }
+!   else
+!     {
+!       if (workingText != nil) {
+! 	[workingText release];
+! 	workingText = nil;
+! 	processingCompose = NO;
+!       }
+!     }
+  
+    if (!emacs_event)
+      return;
+*************** ns_term_shutdown (int sig)
+*** 4979,4985 ****
+    ns_working_text = build_string ([workingText UTF8String]);
+  
+    emacs_event->kind = NS_TEXT_EVENT;
+!   emacs_event->code = KEY_NS_PUT_WORKING_TEXT;
+    EV_TRAILER ((id)nil);
+  }
+  
+--- 5014,5022 ----
+    ns_working_text = build_string ([workingText UTF8String]);
+  
+    emacs_event->kind = NS_TEXT_EVENT;
+!   emacs_event->code = KEY_NS_PUT_MARKED_TEXT;
+!   emacs_event->arg = Fcons (make_number (selRange.location),
+! 			    Fcons (make_number (selRange.length), Qnil));
+    EV_TRAILER ((id)nil);
+  }
+  
+*************** ns_term_shutdown (int sig)
+*** 5034,5048 ****
+  {
+    NSRect rect;
+    NSPoint pt;
+!   struct window *win = XWINDOW (FRAME_SELECTED_WINDOW (emacsframe));
+    if (NS_KEYLOG)
+      NSLog (@"firstRectForCharRange request");
+  
+    rect.size.width = theRange.length * FRAME_COLUMN_WIDTH (emacsframe);
+    rect.size.height = FRAME_LINE_HEIGHT (emacsframe);
+    pt.x = WINDOW_TEXT_TO_FRAME_PIXEL_X (win, win->phys_cursor.x);
+    pt.y = WINDOW_TO_FRAME_PIXEL_Y (win, win->phys_cursor.y
+!                                        +FRAME_LINE_HEIGHT (emacsframe));
+  
+    pt = [self convertPoint: pt toView: nil];
+    pt = [[self window] convertBaseToScreen: pt];
+--- 5071,5093 ----
+  {
+    NSRect rect;
+    NSPoint pt;
+!   //  struct window *win = XWINDOW (FRAME_SELECTED_WINDOW (emacsframe));
+!   struct window *win;
+    if (NS_KEYLOG)
+      NSLog (@"firstRectForCharRange request");
++     
++   if (NILP (Vmac_in_echo_area))
++     win = XWINDOW (FRAME_SELECTED_WINDOW (emacsframe));
++     else if (WINDOWP (echo_area_window))
++     win = XWINDOW (echo_area_window);
++   else
++     win = XWINDOW (FRAME_SELECTED_WINDOW (emacsframe));
+  
+    rect.size.width = theRange.length * FRAME_COLUMN_WIDTH (emacsframe);
+    rect.size.height = FRAME_LINE_HEIGHT (emacsframe);
+    pt.x = WINDOW_TEXT_TO_FRAME_PIXEL_X (win, win->phys_cursor.x);
+    pt.y = WINDOW_TO_FRAME_PIXEL_Y (win, win->phys_cursor.y
+!                                        +FRAME_LINE_HEIGHT (emacsframe)+2);
+  
+    pt = [self convertPoint: pt toView: nil];
+    pt = [[self window] convertBaseToScreen: pt];
+*************** variable `x-use-underline-position-prope
+*** 6764,6769 ****
+--- 6809,6818 ----
+  baseline level.  The default value is nil.  */);
+    x_underline_at_descent_line = 0;
+  
++   DEFVAR_LISP ("mac-in-echo-area", Vmac_in_echo_area,
++                doc: /* state of cursor in echo area. */);
++   Vmac_in_echo_area = Qnil;
++ 
+    /* Tell emacs about this window system. */
+    Fprovide (intern ("ns"), Qnil);
+  }
+diff -r -N -p ../emacs-24.0.96/lisp/term/common-win.el lisp/term/common-win.el
+*** ../emacs-24.0.96/lisp/term/common-win.el	2012-04-08 12:03:02.000000000 +0900
+--- lisp/term/common-win.el	2012-05-03 22:23:59.000000000 +0900
+*************** is not used)."
+*** 127,132 ****
+--- 127,133 ----
+  	       (cons (logior (lsh 0 16)  12) 'ns-new-frame)
+  	       (cons (logior (lsh 0 16)  13) 'ns-toggle-toolbar)
+  	       (cons (logior (lsh 0 16)  14) 'ns-show-prefs)
++ 	       (cons (logior (lsh 0 16)  15) 'mac-change-input-method)
+  	       ))))
+      (set-terminal-parameter frame 'x-setup-function-keys t)))
+  
+diff -r -N -p ../emacs-24.0.96/lisp/term/ns-win.el lisp/term/ns-win.el
+*** ../emacs-24.0.96/lisp/term/ns-win.el	2012-04-08 12:03:02.000000000 +0900
+--- lisp/term/ns-win.el	2012-05-03 23:57:14.000000000 +0900
 *************** The properties returned may include `top
-*** 317,322 ****
---- 317,323 ----
-  	     (cons (logior (lsh 0 16)  12) 'ns-new-frame)
-  	     (cons (logior (lsh 0 16)  13) 'ns-toggle-toolbar)
-  	     (cons (logior (lsh 0 16)  14) 'ns-show-prefs)
-+ 	     (cons (logior (lsh 0 16)  15) 'mac-change-input-method)
-  	     (cons (logior (lsh 1 16)  32) 'f1)
-               (cons (logior (lsh 1 16)  33) 'f2)
-               (cons (logior (lsh 1 16)  34) 'f3)
+*** 173,178 ****
+--- 173,179 ----
+  (define-key global-map [ns-new-frame] 'make-frame)
+  (define-key global-map [ns-toggle-toolbar] 'ns-toggle-toolbar)
+  (define-key global-map [ns-show-prefs] 'customize)
++ (define-key global-map [mac-change-input-method] 'mac-change-input-method)
+  
+  
+  ;; Set up a number of aliases and other layers to pretend we're using
 *************** The properties returned may include `top
-*** 549,562 ****
+*** 259,272 ****
   ;; editing window.)
   
   (defface ns-working-text-face
@@ -27,7 +571,7 @@
   (defvar ns-working-text)		; nsterm.m
   
   ;; Test if in echo area, based on mac-win.el 2007/08/26 unicode-2.
---- 550,579 ----
+--- 260,289 ----
   ;; editing window.)
   
   (defface ns-working-text-face
@@ -58,9 +602,48 @@
   (defvar ns-working-text)		; nsterm.m
   
   ;; Test if in echo area, based on mac-win.el 2007/08/26 unicode-2.
+*************** When text is in th echo area, this just 
+*** 274,290 ****
+  (defun ns-in-echo-area ()
+    "Whether, for purposes of inserting working composition text, the minibuffer
+  is currently being used."
+!   (or isearch-mode
+!       (and cursor-in-echo-area (current-message))
+!       ;; Overlay strings are not shown in some cases.
+!       (get-char-property (point) 'invisible)
+!       (and (not (bobp))
+! 	   (or (and (get-char-property (point) 'display)
+! 		    (eq (get-char-property (1- (point)) 'display)
+! 			(get-char-property (point) 'display)))
+! 	       (and (get-char-property (point) 'composition)
+! 		    (eq (get-char-property (1- (point)) 'composition)
+! 			(get-char-property (point) 'composition)))))))
+  
+  ;; The 'interactive' here stays for subinvocations, so the ns-in-echo-area
+  ;; always returns nil for some reason.  If this WASN'T the case, we could
+--- 291,309 ----
+  (defun ns-in-echo-area ()
+    "Whether, for purposes of inserting working composition text, the minibuffer
+  is currently being used."
+!   (setq mac-in-echo-area 
+! 	(or isearch-mode
+! 	    (and cursor-in-echo-area (current-message))
+! 	    ;; Overlay strings are not shown in some cases.
+! 	    (get-char-property (point) 'invisible)
+! 	    (and (not (bobp))
+! 		 (or (and (get-char-property (point) 'display)
+! 			  (eq (get-char-property (1- (point)) 'display)
+! 			      (get-char-property (point) 'display)))
+! 		     (and (get-char-property (point) 'composition)
+! 			  (eq (get-char-property (1- (point)) 'composition)
+! 			      (get-char-property (point) 'composition)))))))
+!   mac-in-echo-area)
+  
+  ;; The 'interactive' here stays for subinvocations, so the ns-in-echo-area
+  ;; always returns nil for some reason.  If this WASN'T the case, we could
 *************** is currently being used."
-*** 583,588 ****
---- 600,606 ----
+*** 293,298 ****
+--- 312,318 ----
   (defun ns-put-working-text ()
     (interactive)
     (if (ns-in-echo-area) (ns-echo-working-text) (ns-insert-working-text)))
@@ -69,7 +652,7 @@
     (interactive)
     (ns-delete-working-text))
 *************** The overlay is assigned the face `ns-wor
-*** 604,622 ****
+*** 314,332 ****
   (defun ns-echo-working-text ()
     "Echo contents of `ns-working-text' in message display area.
   See `ns-insert-working-text'."
@@ -89,7 +672,7 @@
     (cond
      ((and (overlayp ns-working-overlay)
            ;; Still alive?
---- 622,700 ----
+--- 334,414 ----
   (defun ns-echo-working-text ()
     "Echo contents of `ns-working-text' in message display area.
   See `ns-insert-working-text'."
@@ -122,20 +705,22 @@
 ! `ns-working-text-face' and `ns-marked-text-face'."
 !   (ns-delete-working-text)
 !   (let ((start (point)))
-!     (put-text-property pos len 'face 'ns-working-text-face ns-working-text)
-!     (insert ns-working-text)
-!     (if (= len 0)
-!         (overlay-put (setq ns-working-overlay
-!                            (make-overlay start (point) (current-buffer) nil t))
-!                      'face 'ns-working-text-face)
-!       (overlay-put (setq ns-working-overlay
-!                          (make-overlay start (point) (current-buffer) nil t))
-!                    'face 'ns-unmarked-text-face)
-!       (overlay-put (setq ns-marked-overlay 
-!                          (make-overlay (+ start pos) (+ start pos len)
-!                                        (current-buffer) nil t))
-!                    'face 'ns-marked-text-face))
-!     (goto-char (+ start pos))))
+!     (if (<= pos (length ns-working-text))
+!       (progn
+! 	(put-text-property pos len 'face 'ns-working-text-face ns-working-text)
+! 	(insert ns-working-text)
+! 	(if (= len 0)
+! 	    (overlay-put (setq ns-working-overlay
+! 			       (make-overlay start (point) (current-buffer) nil t))
+! 			 'face 'ns-working-text-face)
+! 	  (overlay-put (setq ns-working-overlay
+! 			     (make-overlay start (point) (current-buffer) nil t))
+! 		       'face 'ns-unmarked-text-face)
+! 	  (overlay-put (setq ns-marked-overlay 
+! 			     (make-overlay (+ start pos) (+ start pos len)
+! 					   (current-buffer) nil t))
+! 		       'face 'ns-marked-text-face))
+! 	(goto-char (+ start pos))))))
 !     
 ! (defun ns-echo-marked-text (pos len)
 !   "Echo contents of `ns-working-text' in message display area.
@@ -148,7 +733,7 @@
 !       (setq msglen (length msg)))
 !     (setq ns-working-overlay (length ns-working-text))
 !     (setq msg (concat msg ns-working-text))
-!     (if (> len 0)
+!     (if (= len 0)
 !         (put-text-property msglen (+ msglen ns-working-overlay)
 !                            'face 'ns-working-text-face msg)
 !       (put-text-property msglen (+ msglen ns-working-overlay)
@@ -169,9 +754,9 @@
     (cond
      ((and (overlayp ns-working-overlay)
            ;; Still alive?
-*************** the operating system.")
-*** 1267,1272 ****
---- 1345,1771 ----
+*************** See the documentation of `create-fontset
+*** 931,936 ****
+--- 1013,1438 ----
   (add-to-list 'window-system-initialization-alist '(ns . ns-initialize-window-system))
   
   
@@ -278,7 +863,7 @@
 +     ("com.apple.inputmethod.TCIM.Jianyi"
 +      (title . "速")
 +      (cursor-color)
-+      (Cursor-type))
++      (cursor-type))
 +     ("com.apple.inputmethod.TCIM.Dayi"
 +      (title . "易")
 +      (cursor-color)
@@ -515,8 +1100,7 @@
 +       (progn
 + 	(setq default-input-method "MacOSX")
 + 	(add-hook 'minibuffer-setup-hook 'mac-change-language-to-us)
-+ 	(mac-translate-from-yen-to-backslash)
-+ 	(mac-add-key-passed-to-system 'shift))
++ 	(mac-translate-from-yen-to-backslash))
 +     (setq default-input-method nil)))
 + 
 + ;;
@@ -598,553 +1182,5 @@
 + 
   (provide 'ns-win)
   
-  ;; arch-tag: eb138a45-4e2e-4d68-b1c9-a39665731644
-diff -r -p -N -x '*.o' ../emacs-23.3-0-lion/src/Makefile.in src/Makefile.in
-*** ../emacs-23.3-0-lion/src/Makefile.in	2011-12-05 16:49:13.000000000 +0900
---- src/Makefile.in	2012-01-13 08:53:57.000000000 +0900
-*************** ns_appresdir=@ns_appresdir@/
-*** 545,551 ****
-  ns_appsrc=@ns_appsrc@
-  /* Object files for NeXTstep */
-  NS_OBJ= nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o \
-! 	fontset.o fringe.o image.o
-  #endif  /* HAVE_NS */
-  
-  #ifdef HAVE_WINDOW_SYSTEM
---- 545,551 ----
-  ns_appsrc=@ns_appsrc@
-  /* Object files for NeXTstep */
-  NS_OBJ= nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o \
-! 	fontset.o fringe.o image.o macim.o
-  #endif  /* HAVE_NS */
-  
-  #ifdef HAVE_WINDOW_SYSTEM
-*************** obj=    dispnew.o frame.o scroll.o xdisp
-*** 583,589 ****
-  SOME_MACHINE_OBJECTS = dosfns.o msdos.o \
-    xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o \
-    fontset.o dbusbind.o \
-!   nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o \
-    w32.o w32console.o w32fns.o w32heap.o w32inevt.o \
-    w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o $(FONT_DRIVERS)
-  
---- 583,589 ----
-  SOME_MACHINE_OBJECTS = dosfns.o msdos.o \
-    xterm.o xfns.o xmenu.o xselect.o xrdb.o xsmfns.o fringe.o image.o \
-    fontset.o dbusbind.o \
-!   nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o macim.o\
-    w32.o w32console.o w32fns.o w32heap.o w32inevt.o \
-    w32menu.o w32proc.o w32reg.o w32select.o w32term.o w32xfns.o $(FONT_DRIVERS)
-  
-*************** nsterm.o: nsterm.m blockinput.h atimer.h
-*** 1168,1173 ****
---- 1168,1174 ----
-    termopts.h termchar.h disptab.h buffer.h window.h keyboard.h \
-    $(INTERVALS_H) process.h coding.h lisp.h $(config_h)
-  nsselect.o: nsselect.m blockinput.h nsterm.h nsgui.h frame.h lisp.h $(config_h)
-+ macim.o: macim.m lisp.h blockinput.h termhooks.h keyboard.h buffer.h $(config_h)
-  process.o: process.c process.h buffer.h window.h termhooks.h termopts.h \
-     commands.h syssignal.h systime.h systty.h syswait.h frame.h dispextern.h \
-     blockinput.h atimer.h charset.h coding.h ccl.h msdos.h composite.h \
-diff -r -p -N -x '*.o' ../emacs-23.3-0-lion/src/keyboard.c src/keyboard.c
-*** ../emacs-23.3-0-lion/src/keyboard.c	2011-12-05 16:49:13.000000000 +0900
---- src/keyboard.c	2012-01-13 08:53:57.000000000 +0900
-*************** kbd_buffer_get_event (kbp, used_mouse_me
-*** 4243,4250 ****
-          {
-            if (event->code == KEY_NS_PUT_WORKING_TEXT)
-              obj = Fcons (intern ("ns-put-working-text"), Qnil);
-!           else
-              obj = Fcons (intern ("ns-unput-working-text"), Qnil);
-  	  kbd_fetch_ptr = event + 1;
-            if (used_mouse_menu)
-              *used_mouse_menu = 1;
---- 4243,4252 ----
-          {
-            if (event->code == KEY_NS_PUT_WORKING_TEXT)
-              obj = Fcons (intern ("ns-put-working-text"), Qnil);
-!           else if (event->code == KEY_NS_UNPUT_WORKING_TEXT)
-              obj = Fcons (intern ("ns-unput-working-text"), Qnil);
-+ 	  else if (event->code == KEY_NS_PUT_MARKED_TEXT)
-+ 	    obj = Fcons (intern ("ns-put-marked-text"), event->arg);
-  	  kbd_fetch_ptr = event + 1;
-            if (used_mouse_menu)
-              *used_mouse_menu = 1;
-*************** keys_of_keyboard ()
-*** 12611,12616 ****
---- 12613,12620 ----
-  			    "ns-put-working-text");
-    initial_define_lispy_key (Vspecial_event_map, "ns-unput-working-text",
-  			    "ns-unput-working-text");
-+   initial_define_lispy_key (Vspecial_event_map, "ns-put-marked-text",
-+ 			    "ns-put-marked-text");
-    /* Here we used to use `ignore-event' which would simple set prefix-arg to
-       current-prefix-arg, as is done in `handle-switch-frame'.
-       But `handle-switch-frame is not run from the special-map.
-diff -r -p -N -x '*.o' ../emacs-23.3-0-lion/src/macim.m src/macim.m
-*** ../emacs-23.3-0-lion/src/macim.m	1970-01-01 09:00:00.000000000 +0900
---- src/macim.m	2012-01-13 08:53:57.000000000 +0900
-***************
-*** 0 ****
---- 1,178 ----
-+ /* Implementation of Input Method Extension for MacOS X.
-+    Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
-+    Taiichi Hashimoto <taiic****@mac*****>.
-+ */
-+ 
-+ #include "config.h"
-+ 
-+ #ifdef NS_IMPL_COCOA
-+ 
-+ #include <math.h>
-+ #include <sys/types.h>
-+ #include <time.h>
-+ #include <signal.h>
-+ #include <unistd.h>
-+ 
-+ #include <Carbon/Carbon.h>
-+ 
-+ #include "lisp.h"
-+ #include "blockinput.h"
-+ 
-+ enum output_method
-+ {
-+   output_initial,
-+   output_termcap,
-+   output_x_window,
-+   output_msdos_raw,
-+   output_w32,
-+   output_mac,
-+   output_ns
-+ } output_method;
-+ 
-+ #include "termhooks.h"
-+ #include "keyboard.h"
-+ #include "buffer.h"
-+ 
-+ extern Lisp_Object Qcurrent_input_method;
-+ extern int cursor_in_echo_area;
-+ static Lisp_Object Qmac_keys_passed_to_system;
-+ static Lisp_Object Vmac_use_input_method_on_system;
-+ 
-+ void mac_init_input_method ();
-+ int mac_pass_key_to_system (int code, int modifiers);
-+ int mac_pass_key_directly_to_emacs ();
-+ int mac_store_change_input_method_event ();
-+ 
-+ DEFUN ("mac-input-source-is-ascii-capable", Fmac_input_source_is_ascii_capable,
-+        Smac_input_source_is_ascii_capable, 0, 0, 0,
-+        doc: /* Is current input source ascii capable? */)
-+      ()
-+ {
-+   TISInputSourceRef is = TISCopyCurrentKeyboardInputSource();
-+   CFBooleanRef ret = TISGetInputSourceProperty(is, kTISPropertyInputSourceIsASCIICapable);
-+   
-+   return CFBooleanGetValue(ret)? Qt : Qnil;
-+ }
-+ 
-+ DEFUN ("mac-get-input-source-list", Fmac_get_input_source_list,
-+        Smac_get_input_source_list, 0, 0, 0,
-+        doc: /* get input source list on MacOSX */)
-+      ()
-+ {
-+   NSArray *is_list = (NSArray *)TISCreateInputSourceList(NULL, false);
-+   int list_size = [is_list count];
-+   Lisp_Object list[list_size];
-+   int i;
-+ 
-+   for (i = 0; i < list_size; i++) {
-+     TISInputSourceRef is = [is_list objectAtIndex:i];
-+     NSString *id = (NSString *)TISGetInputSourceProperty(is, kTISPropertyInputSourceID);
-+     list[i] = make_string([id UTF8String],
-+ 			  [id lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
-+   }
-+ 
-+   return Flist(list_size, list);
-+ }
-+ 
-+ DEFUN ("mac-get-current-input-source", Fmac_get_current_input_source,
-+        Smac_get_current_input_source, 0, 0, 0,
-+        doc: /* get current input source on MacOSX */)
-+      ()
-+ {
-+   TISInputSourceRef is = TISCopyCurrentKeyboardInputSource();
-+   NSString *id = (NSString *)TISGetInputSourceProperty(is, kTISPropertyInputSourceID);
-+ 
-+   return make_string([id UTF8String],
-+ 		     [id lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
-+ }
-+ 
-+ DEFUN ("mac-toggle-input-source", Fmac_toggle_input_source,
-+        Smac_toggle_input_source, 1, 1, 0,
-+        doc: /* toggle input source on MacOSX */)
-+      (arg)
-+      Lisp_Object arg;
-+ {
-+   TISInputSourceRef is = NULL;
-+ 
-+   if (NILP (arg))
-+     {
-+       is = TISCopyCurrentASCIICapableKeyboardInputSource();
-+     }
-+   else
-+     {
-+       NSString *locale = [[NSLocale currentLocale] localeIdentifier];
-+       is = TISCopyInputSourceForLanguage(locale);
-+     }
-+   if (is) TISSelectInputSource(is);
-+ 
-+   return arg;
-+ }
-+ 
-+ int
-+ mac_store_change_input_method_event ()
-+ {
-+   Lisp_Object dim;
-+   int ret = FALSE;
-+   
-+   dim = Fsymbol_value (intern ("default-input-method"));
-+   if (STRINGP (dim) && strcmp(SDATA (dim), "MacOSX") == 0)
-+     {
-+       ret = TRUE;
-+     }
-+ 
-+   return ret;
-+ }
-+ 
-+ int
-+ mac_pass_key_to_system (int code, int modifiers)
-+ {
-+   Lisp_Object keys = Fsymbol_value (Qmac_keys_passed_to_system);
-+   Lisp_Object m, k; 
-+ 
-+   while (!NILP (keys))
-+     {
-+       m = XCAR (XCAR (keys));
-+       k = XCDR (XCAR (keys));
-+       keys = XCDR (keys);
-+ 
-+       if (NUMBERP (m) && modifiers == XINT (m))
-+ 	if (NILP (k)
-+ 	    || (NUMBERP (k) && code == XINT (k)))
-+ 	  return TRUE;
-+     }
-+   
-+   return FALSE;
-+ }
-+ 
-+ int
-+ mac_pass_key_directly_to_emacs ()
-+ {
-+ 
-+   if (NILP (Fmac_input_source_is_ascii_capable()))
-+     {
-+       if (NILP (Vmac_use_input_method_on_system)
-+ 	  || this_command_key_count 
-+ 	  || cursor_in_echo_area 
-+ 	  || !NILP (current_buffer->read_only))
-+ 	return TRUE;
-+     }
-+ 
-+   return FALSE;
-+ }
-+ 
-+ 
-+ void mac_init_input_method ()
-+ {
-+   Qmac_keys_passed_to_system = intern ("mac-keys-passed-to-system");
-+   staticpro (&Qmac_keys_passed_to_system);
-+ 
-+   DEFVAR_LISP ("mac-use-input-method-on-system", &Vmac_use_input_method_on_system,
-+                doc: /* If it is non-nil, use input method on system. */);
-+   Vmac_use_input_method_on_system = Qt;
-+ 
-+   defsubr (&Smac_input_source_is_ascii_capable);
-+   defsubr (&Smac_get_input_source_list);
-+   defsubr (&Smac_get_current_input_source);
-+   defsubr (&Smac_toggle_input_source);
-+ }
-+ #endif
-diff -r -p -N -x '*.o' ../emacs-23.3-0-lion/src/nsfns.m src/nsfns.m
-*** ../emacs-23.3-0-lion/src/nsfns.m	2011-12-05 16:49:13.000000000 +0900
---- src/nsfns.m	2012-01-13 08:53:57.000000000 +0900
-*************** Lisp_Object Fx_open_connection (Lisp_Obj
-*** 103,108 ****
---- 103,113 ----
-  
-  extern BOOL ns_in_resize;
-  
-+ /* key masks */
-+ static Lisp_Object Vns_shift_key_mask;
-+ static Lisp_Object Vns_control_key_mask;
-+ static Lisp_Object Vns_alternate_key_mask;
-+ static Lisp_Object Vns_command_key_mask;
-  
-  /* ==========================================================================
-  
-*************** be used as the image of the icon represe
-*** 2632,2637 ****
---- 2637,2660 ----
-                 doc: /* Toolkit version for NS Windowing.  */);
-    Vns_version_string = ns_appkit_version_str ();
-  
-+ 
-+   DEFVAR_LISP ("ns-shift-key-mask", &Vns_shift_key_mask,
-+                doc: /* Shift key mask defined in system. */);
-+   Vns_shift_key_mask = make_number (NSShiftKeyMask);
-+ 
-+   DEFVAR_LISP ("ns-control-key-mask", &Vns_control_key_mask,
-+                doc: /* Control key mask defined in system. */);
-+   Vns_control_key_mask = make_number (NSControlKeyMask);
-+ 
-+   DEFVAR_LISP ("ns-alternate-key-mask", &Vns_alternate_key_mask,
-+                doc: /* Alternate key mask defined in system. */);
-+   Vns_alternate_key_mask = make_number (NSAlternateKeyMask);
-+ 
-+   DEFVAR_LISP ("ns-command-key-mask", &Vns_command_key_mask,
-+                doc: /* Command key mask defined in system. */);
-+   Vns_command_key_mask = make_number (NSCommandKeyMask);
-+ 
-+ 
-    defsubr (&Sns_read_file_name);
-    defsubr (&Sns_get_resource);
-    defsubr (&Sns_set_resource);
-*************** be used as the image of the icon represe
-*** 2676,2681 ****
---- 2699,2708 ----
-    defsubr (&Sx_show_tip);
-    defsubr (&Sx_hide_tip);
-  
-+ #ifdef NS_IMPL_COCOA
-+   mac_init_input_method ();
-+ #endif
-+ 
-    /* used only in fontset.c */
-    check_window_system_func = check_ns;
-  
-diff -r -p -N -x '*.o' ../emacs-23.3-0-lion/src/nsterm.h src/nsterm.h
-*** ../emacs-23.3-0-lion/src/nsterm.h	2011-12-05 16:49:13.000000000 +0900
---- src/nsterm.h	2012-01-13 08:53:57.000000000 +0900
-*************** typedef unsigned int NSUInteger;
-*** 365,370 ****
---- 365,372 ----
-  #define KEY_NS_NEW_FRAME               ((1<<28)|(0<<16)|12)
-  #define KEY_NS_TOGGLE_TOOLBAR          ((1<<28)|(0<<16)|13)
-  #define KEY_NS_SHOW_PREFS              ((1<<28)|(0<<16)|14)
-+ #define KEY_MAC_CHANGE_INPUT_METHOD    ((1<<28)|(0<<16)|15)
-+ #define KEY_NS_PUT_MARKED_TEXT         ((1<<28)|(0<<16)|16)
-  
-  /* could use list to store these, but rest of emacs has a big infrastructure
-     for managing a table of bitmap "records" */
-diff -r -p -N -x '*.o' ../emacs-23.3-0-lion/src/nsterm.m src/nsterm.m
-*** ../emacs-23.3-0-lion/src/nsterm.m	2011-12-05 16:50:06.000000000 +0900
---- src/nsterm.m	2012-01-13 08:53:57.000000000 +0900
-*************** ns_term_init (Lisp_Object display_name)
-*** 3730,3735 ****
---- 3730,3738 ----
-    /*   [[NSNotificationCenter defaultCenter] addObserver: NSApp
-                                           selector: @selector (logNotification:)
-                                               name: nil object: nil]; */
-+   [[NSDistributedNotificationCenter defaultCenter] addObserver: NSApp
-+ 					selector: @selector (changeInputMethod:)
-+ 						   name: @"AppleSelectedInputSourcesChangedNotification" object: nil];
-  
-    dpyinfo = (struct ns_display_info *)xmalloc (sizeof (struct ns_display_info));
-    bzero (dpyinfo, sizeof (struct ns_display_info));
-*************** ns_term_shutdown (int sig)
-*** 3935,3940 ****
---- 3938,3955 ----
-      NSLog (@"notification: '%@'", [notification name]);
-  }
-  
-+ - (void)changeInputMethod: (NSNotification *)notification
-+ {
-+ 
-+   struct frame *emacsframe = SELECTED_FRAME ();
-+ 
-+   if (mac_store_change_input_method_event())
-+     {
-+       emacs_event->kind = NS_NONKEY_EVENT;
-+       emacs_event->code = KEY_MAC_CHANGE_INPUT_METHOD;
-+       EV_TRAILER ((id)nil);
-+     }
-+ }
-  
-  - (void)sendEvent: (NSEvent *)theEvent
-  /* --------------------------------------------------------------------------
-*************** ns_term_shutdown (int sig)
-*** 4488,4510 ****
-               code, fnKeysym, flags, emacs_event->modifiers);
-  
-        /* if it was a function key or had modifiers, pass it directly to emacs */
-!       if (fnKeysym || (emacs_event->modifiers
-!                        && [[theEvent charactersIgnoringModifiers] length] > 0))
-! /*[[theEvent characters] length] */
-!         {
-!           emacs_event->kind = NON_ASCII_KEYSTROKE_EVENT;
-!           if (code < 0x20)
-!             code |= (1<<28)|(3<<16);
-!           else if (code == 0x7f)
-!             code |= (1<<28)|(3<<16);
-!           else if (!fnKeysym)
-!             emacs_event->kind = code > 0xFF
-!               ? MULTIBYTE_CHAR_KEYSTROKE_EVENT : ASCII_KEYSTROKE_EVENT;
-  
-!           emacs_event->code = code;
-!           EV_TRAILER (theEvent);
-!           return;
-!         }
-      }
-  
-    /* if we get here we should send the key for input manager processing */
---- 4503,4540 ----
-               code, fnKeysym, flags, emacs_event->modifiers);
-  
-        /* if it was a function key or had modifiers, pass it directly to emacs */
-!       /* The function mac_pass_key_directly_to_emacs check special case 
-!          to pass it directly to emacs, such as passwd, read-only buffer, etc. */
-  
-!         if (mac_pass_key_directly_to_emacs ()
-! 	    || fnKeysym
-! 	    || (emacs_event->modifiers
-! 		&& [[theEvent charactersIgnoringModifiers] length] > 0))
-! 	  {
-! 	    emacs_event->kind = NON_ASCII_KEYSTROKE_EVENT;
-! 	    if (code < 0x20)
-! 	      code |= (1<<28)|(3<<16);
-! 	    else if (code == 0x7f)
-! 	      code |= (1<<28)|(3<<16);
-! 	    else if (!fnKeysym)
-! 	      emacs_event->kind = code > 0xFF
-! 		? MULTIBYTE_CHAR_KEYSTROKE_EVENT : ASCII_KEYSTROKE_EVENT;
-! 	    
-! 	    emacs_event->code = code;
-! 
-! 	    /* The function mac_pass_key_to_system decides whether it is 
-! 	       passed directly to emacs or not. */
-! 	    if (emacs_event->kind == NON_ASCII_KEYSTROKE_EVENT
-! 		|| !mac_pass_key_to_system (code, flags
-! 					    & (NSShiftKeyMask
-! 					       | NSControlKeyMask
-! 					       | NSAlternateKeyMask
-! 					       | NSCommandKeyMask)))
-! 	      {
-! 		EV_TRAILER (theEvent);
-! 		return;
-! 	      }
-! 	  }
-      }
-  
-    /* if we get here we should send the key for input manager processing */
-*************** ns_term_shutdown (int sig)
-*** 4594,4603 ****
-      NSLog (@"setMarkedText '%@' len =%d range %d from %d", str, [str length],
-             selRange.length, selRange.location);
-  
--   if (workingText != nil)
--     [self deleteWorkingText];
-    if ([str length] == 0)
-!     return;
-  
-    if (!emacs_event)
-      return;
---- 4624,4642 ----
-      NSLog (@"setMarkedText '%@' len =%d range %d from %d", str, [str length],
-             selRange.length, selRange.location);
-  
-    if ([str length] == 0)
-!     {
-!       [self deleteWorkingText];
-!       return;
-!     }
-!   else
-!     {
-!       if (workingText != nil) {
-! 	[workingText release];
-! 	workingText = nil;
-! 	processingCompose = NO;
-!       }
-!     }
-  
-    if (!emacs_event)
-      return;
-*************** ns_term_shutdown (int sig)
-*** 4607,4613 ****
-    ns_working_text = build_string ([workingText UTF8String]);
-  
-    emacs_event->kind = NS_TEXT_EVENT;
-!   emacs_event->code = KEY_NS_PUT_WORKING_TEXT;
-    EV_TRAILER ((id)nil);
-  }
-  
---- 4646,4654 ----
-    ns_working_text = build_string ([workingText UTF8String]);
-  
-    emacs_event->kind = NS_TEXT_EVENT;
-!   emacs_event->code = KEY_NS_PUT_MARKED_TEXT;
-!   emacs_event->arg = Fcons (make_number (selRange.location),
-! 			    Fcons (make_number (selRange.length), Qnil));
-    EV_TRAILER ((id)nil);
-  }
-  
-*************** ns_term_shutdown (int sig)
-*** 4662,4676 ****
-  {
-    NSRect rect;
-    NSPoint pt;
-!   struct window *win = XWINDOW (FRAME_SELECTED_WINDOW (emacsframe));
-    if (NS_KEYLOG)
-      NSLog (@"firstRectForCharRange request");
-  
-    rect.size.width = theRange.length * FRAME_COLUMN_WIDTH (emacsframe);
-    rect.size.height = FRAME_LINE_HEIGHT (emacsframe);
-    pt.x = WINDOW_TEXT_TO_FRAME_PIXEL_X (win, win->phys_cursor.x);
-    pt.y = WINDOW_TO_FRAME_PIXEL_Y (win, win->phys_cursor.y
-!                                        +FRAME_LINE_HEIGHT (emacsframe));
-  
-    pt = [self convertPoint: pt toView: nil];
-    pt = [[self window] convertBaseToScreen: pt];
---- 4703,4725 ----
-  {
-    NSRect rect;
-    NSPoint pt;
-!   //  struct window *win = XWINDOW (FRAME_SELECTED_WINDOW (emacsframe));
-!   struct window *win;
-    if (NS_KEYLOG)
-      NSLog (@"firstRectForCharRange request");
-+     
-+   if (NILP (Feval (Fcons (intern ("ns-in-echo-area"), Qnil))))
-+     win = XWINDOW (FRAME_SELECTED_WINDOW (emacsframe));
-+   else if (WINDOWP (echo_area_window))
-+     win = XWINDOW (echo_area_window);
-+   else
-+     win = XWINDOW (FRAME_SELECTED_WINDOW (emacsframe));
-  
-    rect.size.width = theRange.length * FRAME_COLUMN_WIDTH (emacsframe);
-    rect.size.height = FRAME_LINE_HEIGHT (emacsframe);
-    pt.x = WINDOW_TEXT_TO_FRAME_PIXEL_X (win, win->phys_cursor.x);
-    pt.y = WINDOW_TO_FRAME_PIXEL_Y (win, win->phys_cursor.y
-!                                        +FRAME_LINE_HEIGHT (emacsframe)+2);
-  
-    pt = [self convertPoint: pt toView: nil];
-    pt = [[self window] convertBaseToScreen: pt];
-diff -r -p -N -x '*.o' ../emacs-23.3-0-lion/src/s/darwin.h src/s/darwin.h
-*** ../emacs-23.3-0-lion/src/s/darwin.h	2011-12-05 16:49:29.000000000 +0900
---- src/s/darwin.h	2012-01-13 08:53:57.000000000 +0900
-*************** along with GNU Emacs.  If not, see <http
-*** 163,169 ****
-  /* Definitions for how to compile & link.  */
-  
-  #ifdef HAVE_NS
-! #define LIBS_NSGUI -framework AppKit
-  #define SYSTEM_PURESIZE_EXTRA 200000
-  #define HEADERPAD_EXTRA 6C8
-  #else /* !HAVE_NS */
---- 163,169 ----
-  /* Definitions for how to compile & link.  */
-  
-  #ifdef HAVE_NS
-! #define LIBS_NSGUI -framework AppKit -framework Carbon
-  #define SYSTEM_PURESIZE_EXTRA 200000
-  #define HEADERPAD_EXTRA 6C8
-  #else /* !HAVE_NS */
+  ;;; ns-win.el ends here
+

Deleted: inline_patch/trunk/font.patch
===================================================================
--- inline_patch/trunk/font.patch	2012-04-28 05:05:50 UTC (rev 581)
+++ inline_patch/trunk/font.patch	2012-05-20 08:11:21 UTC (rev 582)
@@ -1,30 +0,0 @@
-diff -pr ../emacs-23.3/src/nsfont.m src/nsfont.m
-*** ../emacs-23.3/src/nsfont.m	2011-01-09 02:45:14.000000000 +0900
---- src/nsfont.m	2011-03-21 17:11:01.000000000 +0900
-*************** nsfont_open (FRAME_PTR f, Lisp_Object fo
-*** 846,853 ****
-        lrint (hshrink * [sfont ascender] + expand * hd/2);
-      /* [sfont descender] is usually negative.  Use floor to avoid
-         clipping descenders. */
-!     font_info->max_bounds.descent =
-!       -lrint (floor(hshrink* [sfont descender] - expand*hd/2));
-      font_info->height =
-        font_info->max_bounds.ascent + font_info->max_bounds.descent;
-      font_info->max_bounds.width = lrint (font_info->width);
---- 846,861 ----
-        lrint (hshrink * [sfont ascender] + expand * hd/2);
-      /* [sfont descender] is usually negative.  Use floor to avoid
-         clipping descenders. */
-!     if ([sfont mostCompatibleStringEncoding] == 0x80000001) {
-!       /* If the font is Japanese (Mac OS) encoding, change descender to 2 times.
-!          Because most of Japanese font's decender, such as Hiragino, is 
-!          too short. */
-!       font_info->max_bounds.descent = 
-!         -lrint (floor(hshrink* [sfont descender] * 2 - expand*hd/2));
-!     } else {
-!       font_info->max_bounds.descent = 
-!         -lrint (floor(hshrink* [sfont descender] - expand*hd/2));
-!     }
-      font_info->height =
-        font_info->max_bounds.ascent + font_info->max_bounds.descent;
-      font_info->max_bounds.width = lrint (font_info->width);

Deleted: inline_patch/trunk/lion.patch
===================================================================
--- inline_patch/trunk/lion.patch	2012-04-28 05:05:50 UTC (rev 581)
+++ inline_patch/trunk/lion.patch	2012-05-20 08:11:21 UTC (rev 582)
@@ -1,54 +0,0 @@
-diff -r -p -N -x '*.o' ../emacs-23.3-0/src/nsterm.m src/nsterm.m
-*** ../emacs-23.3-0/src/nsterm.m	2011-02-09 08:46:22.000000000 +0900
---- src/nsterm.m	2011-12-05 16:50:06.000000000 +0900
-*************** ns_term_shutdown (int sig)
-*** 5106,5112 ****
-  
-    win = [[EmacsWindow alloc]
-              initWithContentRect: r
-!                       styleMask: (NSResizableWindowMask |
-                                    NSMiniaturizableWindowMask |
-                                    NSClosableWindowMask)
-                          backing: NSBackingStoreBuffered
---- 5106,5113 ----
-  
-    win = [[EmacsWindow alloc]
-              initWithContentRect: r
-!                       styleMask: (NSTitledWindowMask |
-!                                   NSResizableWindowMask |
-                                    NSMiniaturizableWindowMask |
-                                    NSClosableWindowMask)
-                          backing: NSBackingStoreBuffered
-diff -r -p -N -x '*.o' ../emacs-23.3-0/src/s/darwin.h src/s/darwin.h
-*** ../emacs-23.3-0/src/s/darwin.h	2011-01-09 02:45:14.000000000 +0900
---- src/s/darwin.h	2011-12-05 16:49:29.000000000 +0900
-*************** along with GNU Emacs.  If not, see <http
-*** 181,187 ****
-     end of the header for adding load commands.  Needed for dumping.
-     0x690 is the total size of 30 segment load commands (at 56
-     each); under Cocoa 31 commands are required.  */
-! #define LD_SWITCH_SYSTEM_TEMACS -prebind LIBS_NSGUI -Xlinker -headerpad -Xlinker HEADERPAD_EXTRA
-  
-  #define C_SWITCH_SYSTEM_TEMACS -Dtemacs
-  
---- 181,187 ----
-     end of the header for adding load commands.  Needed for dumping.
-     0x690 is the total size of 30 segment load commands (at 56
-     each); under Cocoa 31 commands are required.  */
-! #define LD_SWITCH_SYSTEM_TEMACS -fno-pie -prebind LIBS_NSGUI -Xlinker -headerpad -Xlinker HEADERPAD_EXTRA
-  
-  #define C_SWITCH_SYSTEM_TEMACS -Dtemacs
-  
-diff -r -p -N -x '*.o' ../emacs-23.3-0/src/unexmacosx.c src/unexmacosx.c
-*** ../emacs-23.3-0/src/unexmacosx.c	2011-01-09 02:45:14.000000000 +0900
---- src/unexmacosx.c	2011-12-05 16:49:51.000000000 +0900
-*************** copy_data_segment (struct load_command *
-*** 822,827 ****
---- 822,828 ----
-  	}
-        else if (strncmp (sectp->sectname, "__la_symbol_ptr", 16) == 0
-  	       || strncmp (sectp->sectname, "__nl_symbol_ptr", 16) == 0
-+                || strncmp (sectp->sectname, "__got", 16) == 0
-  	       || strncmp (sectp->sectname, "__la_sym_ptr2", 16) == 0
-  	       || strncmp (sectp->sectname, "__dyld", 16) == 0
-  	       || strncmp (sectp->sectname, "__const", 16) == 0

Deleted: inline_patch/trunk/xcode4.patch
===================================================================
--- inline_patch/trunk/xcode4.patch	2012-04-28 05:05:50 UTC (rev 581)
+++ inline_patch/trunk/xcode4.patch	2012-05-20 08:11:21 UTC (rev 582)
@@ -1,13 +0,0 @@
-diff -rp ../emacs-23.3-0/src/unexmacosx.c src/unexmacosx.c
-*** ../emacs-23.3-0/src/unexmacosx.c	2011-01-09 02:45:14.000000000 +0900
---- src/unexmacosx.c	2011-03-15 09:30:50.000000000 +0900
-*************** copy_data_segment (struct load_command *
-*** 822,827 ****
---- 822,828 ----
-  	}
-        else if (strncmp (sectp->sectname, "__la_symbol_ptr", 16) == 0
-  	       || strncmp (sectp->sectname, "__nl_symbol_ptr", 16) == 0
-+                || strncmp (sectp->sectname, "__got", 16) == 0
-  	       || strncmp (sectp->sectname, "__la_sym_ptr2", 16) == 0
-  	       || strncmp (sectp->sectname, "__dyld", 16) == 0
-  	       || strncmp (sectp->sectname, "__const", 16) == 0



macemacsjp-cvs メーリングリストの案内
Back to archive index