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