Mitsuhiro Nakamura avatar Mitsuhiro Nakamura committed e43475f

Remove aqua/emacs-app

Comments (0)

Files changed (10)

aqua/emacs-app/Portfile

-# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
-# $Id: Portfile 89440 2012-01-29 10:29:46Z hum@macports.org $
-
-PortSystem          1.0
-
-name                emacs-app
-version             23.4
-revision            1
-categories          aqua editors
-maintainers         css hum openmaintainer
-
-description         The GNU Emacs text editor (Cocoa version)
-
-long_description    GNU Emacs is a self-documenting, customizable, extensible  \
-                    real-time display editor. This is a port of the latest GNU \
-                    Emacs source to the OpenStep (or NeXTstep) APIs, as        \
-                    implemented by Cocoa on OS X. It differs from Carbon ports \
-                    of GNU Emacs in that it makes a more concerted attempt     \
-                    from the ground up to follow OS X desktop and UI conventions.
-
-# Note that this distribution can support GNUstep as well, but that
-# configuration is untested at this time.
-
-homepage            http://www.gnu.org/software/emacs/
-platforms           darwin
-license             GPL-3+
-
-master_sites        gnu:emacs
-distname            emacs-${version}
-dist_subdir         emacs
-checksums           rmd160  5fb7e4cd4270a524b8723ad86a145a0e47336bf7 \
-                    sha256  b9a2b8434052771f797d2032772eba862ff9aa143029efc72295170607289c18
-
-depends_lib         port:ncurses
-
-patchfiles          patch-src_emacs.c.diff
-# patch.pre_args      -p1
-
-if {${configure.compiler} == "clang"} {
-    patchfiles-append   patch-clang.diff
-}
-
-post-patch {
-    reinplace "s|__PREFIX__|${prefix}|" ${worksrcpath}/src/emacs.c
-}
-
-configure.args      --with-ns --without-x --without-dbus
-
-use_parallel_build  yes
-
-destroot {
-    system "cd ${worksrcpath} && make install"
-    xinstall -m 755 -d ${destroot}${applications_dir}
-    file copy ${worksrcpath}/nextstep/Emacs.app \
-        ${destroot}${applications_dir}
-    file copy ${filespath}/site-start.el \
-        ${destroot}${applications_dir}/Emacs.app/Contents/Resources/site-lisp
-}
-
-post-destroot {
-    reinplace "s|__PREFIX__|${prefix}|g" \
-        ${destroot}${applications_dir}/Emacs.app/Contents/Resources/site-lisp/site-start.el
-}
-
-# patch-fullscreen.diff
-#   http://gist.github.com/291150
-#   http://www.sanityinc.com/full-screen-support-for-cocoa-emacs-on-osx
-variant fullscreen description {Add fullscreen patch} {
-    patchfiles-append   patch-fullscreen.diff
-}
-
-# inline and font patches are fetched from MacEmacsJP.
-#   http://svn.sourceforge.jp/svnroot/macemacsjp/inline_patch/trunk/
-#   revision 574.
-# patch-macemacsjp-inline.diff <= emacs-inline.patch
-# patch-macemacsjp-jpfont.diff <= font.patch
-variant inline description {Add inline patch from MacEmacsJP} {
-    patchfiles-append   patch-macemacsjp-inline.diff
-}
-
-variant jpfont description {Add Japanese font patch from MacEmacsJP} {
-    patchfiles-append   patch-macemacsjp-jpfont.diff
-}
-
-variant shiftmodifier conflicts inline description {Add Shift modifier patch from http://github.com/typester/emacs/downloads} {
-    patchfiles-append   patch-shiftmodifier-with-ime.diff
-}
-
-variant patches requires fullscreen inline jpfont shiftmodifier description {Add all patches: fullscreen, inline and jpfont} {}
-
-platform darwin 11 {
-   patchfiles-append    patch-fix-title-bar.diff
-   # patch-lion-fullscreen.diff
-   #   https://github.com/downloads/typester/emacs/emacs-23-lion-fullscreen-test.patch
-   if {[variant_isset fullscreen]} {
-       patchfiles-append   patch-lion-fullscreen.diff
-   }
-   configure.cflags-append   -fno-pie -O2
-   configure.ldflags-append  -fno-pie
-}
-
-livecheck.type      regex
-livecheck.url       http://ftp.gnu.org/gnu/emacs/?C=M&O=D
-livecheck.regex     emacs-(\\d+\\.\\d+\\w*)\\.tar

aqua/emacs-app/files/patch-clang.diff

---- src/nsfont.m~	2011-10-05 22:55:46.000000000 +0900
-+++ src/nsfont.m	2011-10-05 23:03:53.000000000 +0900
-@@ -1286,7 +1286,7 @@
-       }
- 
-     CGContextRestoreGState (gcontext);
--    return;
-+    return 0;
-   }
- #endif  /* NS_IMPL_COCOA */
- 
---- src/nsimage.m~	2011-01-09 02:45:14.000000000 +0900
-+++ src/nsimage.m	2011-10-05 23:14:17.000000000 +0900
-@@ -325,7 +325,7 @@
- 
- /* Set color for a bitmap image (see initFromSkipXBM).  Note that the alpha
-    is used as a mask, so we just memset the entire array. */
--- setXBMColor: (NSColor *)color
-+- (void) setXBMColor: (NSColor *)color
- {
-   NSSize s = [self size];
-   int len = (int) s.width * s.height;
---- src/nsterm.m~	2011-10-05 22:55:46.000000000 +0900
-+++ src/nsterm.m	2011-10-05 22:59:43.000000000 +0900
-@@ -5494,7 +5494,7 @@
-   NSTRACE (performDragOperation);
- 
-   if (!emacs_event)
--    return;
-+    return NO;
- 
-   position = [self convertPoint: [sender draggingLocation] fromView: nil];
-   x = lrint (position.x);  y = lrint (position.y);

aqua/emacs-app/files/patch-fix-title-bar.diff

---- src/ChangeLog.orig	2011-07-23 12:31:39.000000000 -0400
-+++ src/ChangeLog	2011-07-23 12:31:39.000000000 -0400
---- src/nsterm.m.orig	2011-07-23 12:31:39.000000000 -0400
-+++ src/nsterm.m	2011-07-23 12:31:39.000000000 -0400
-@@ -5106,7 +5106,8 @@
- 
-   win = [[EmacsWindow alloc]
-             initWithContentRect: r
--                      styleMask: (NSResizableWindowMask |
-+                      styleMask: (NSTitledWindowMask |
-+                                  NSResizableWindowMask |
-                                   NSMiniaturizableWindowMask |
-                                   NSClosableWindowMask)
-                         backing: NSBackingStoreBuffered

aqua/emacs-app/files/patch-fullscreen.diff

---- lisp/term/ns-win.el.orig	2011-01-29 15:01:48.000000000 -0500
-+++ lisp/term/ns-win.el	2011-01-29 15:01:52.000000000 -0500
-@@ -1263,6 +1263,11 @@
- (add-to-list 'window-system-initialization-alist '(ns . ns-initialize-window-system))
- 
- 
-+(declare-function ns-toggle-fullscreen-internal "nsfns.m" ())
-+(defun ns-toggle-fullscreen ()
-+  (interactive)
-+  (ns-toggle-fullscreen-internal))
-+
- (provide 'ns-win)
- 
- ;; arch-tag: eb138a45-4e2e-4d68-b1c9-a39665731644
---- src/nsfns.m.orig	2011-01-29 15:01:48.000000000 -0500
-+++ src/nsfns.m	2011-01-29 15:01:52.000000000 -0500
-@@ -2599,6 +2599,34 @@
- 
- #endif
- 
-+DEFUN ("ns-toggle-fullscreen-internal", Fns_toggle_fullscreen_internal, Sns_toggle_fullscreen_internal,
-+       0, 0, 0,
-+       doc: /* Toggle fulscreen mode */)
-+    ()
-+{
-+    struct frame *f = SELECTED_FRAME();
-+    EmacsWindow *window = ns_get_window(f);
-+
-+    EmacsWindow *new_window = [window toggleFullscreen];
-+    FRAME_NS_WINDOW(f) = new_window;
-+
-+    NSRect r = [new_window contentRectForFrameRect:[new_window frame]];
-+    int cols = FRAME_PIXEL_WIDTH_TO_TEXT_COLS(f, r.size.width);
-+    int rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES(f, r.size.height);
-+
-+    change_frame_size (f, rows, cols, 0, 1, 0); /* pretend, delay, safe */
-+    FRAME_PIXEL_WIDTH (f) = (int)r.size.width;
-+    FRAME_PIXEL_HEIGHT (f) = (int)r.size.height;
-+
-+    f->border_width = [new_window frame].size.width - r.size.width;
-+    FRAME_NS_TITLEBAR_HEIGHT (f) =
-+        [new_window frame].size.height - r.size.height;
-+
-+    [[new_window delegate] windowDidMove:nil];
-+
-+    return Qnil;
-+}
-+
- 
- /* ==========================================================================
- 
-@@ -2684,6 +2712,8 @@
-   defsubr (&Sx_show_tip);
-   defsubr (&Sx_hide_tip);
- 
-+  defsubr (&Sns_toggle_fullscreen_internal);
-+
-   /* used only in fontset.c */
-   check_window_system_func = check_ns;
- 
---- src/nsterm.h.orig	2011-01-29 15:01:48.000000000 -0500
-+++ src/nsterm.h	2011-01-29 15:01:52.000000000 -0500
-@@ -95,8 +95,25 @@
- {
-   NSPoint grabOffset;
- }
-+
-+-(EmacsWindow *)toggleFullscreen;
-+
-+@end
-+
-+/* 10.5 or below is not supported [NSWindow setStyleMask:], so require content swap hack */
-+@interface EmacsFullWindow : EmacsWindow {
-+    EmacsWindow *normalWindow;
-+}
-+
-+-(id)initWithNormalWindow:(EmacsWindow *)window;
-+-(EmacsWindow *)getNormalWindow;
-+
- @end
- 
-+// dummy for 10.5-
-+#define NSApplicationPresentationDefault 0
-+#define NSApplicationPresentationAutoHideDock (1 <<  0)
-+#define NSApplicationPresentationAutoHideMenuBar (1 <<  2)
- 
- /* ==========================================================================
- 
---- src/nsterm.m.orig	2011-01-29 15:01:48.000000000 -0500
-+++ src/nsterm.m	2011-01-29 15:01:52.000000000 -0500
-@@ -685,6 +685,13 @@
- /*debug_lock--; */
-             }
- 
-+          if (view) {
-+              EmacsFullWindow *win = [view window];
-+              if ([win isKindOfClass:[EmacsFullWindow class]]) {
-+                  [[win getNormalWindow] orderOut:nil];
-+              }
-+          }
-+
-           if (view)
- #ifdef NS_IMPL_GNUSTEP
-             r ? [view lockFocusInRect: u] : [view lockFocus];
-@@ -1130,8 +1137,14 @@
-   f->scroll_bar_actual_width = NS_SCROLL_BAR_WIDTH (f);
-   compute_fringe_widths (f, 0);
- 
--  pixelwidth =  FRAME_TEXT_COLS_TO_PIXEL_WIDTH   (f, cols);
--  pixelheight = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, rows);
-+  if ([window isKindOfClass:[EmacsFullWindow class]]) {
-+      pixelwidth = [[window screen] frame].size.width;
-+      pixelheight = [[window screen] frame].size.height;
-+  }
-+  else {
-+      pixelwidth =  FRAME_TEXT_COLS_TO_PIXEL_WIDTH   (f, cols);
-+      pixelheight = FRAME_TEXT_LINES_TO_PIXEL_HEIGHT (f, rows);
-+  }
- 
-   /* If we have a toolbar, take its height into account. */
-   if (tb)
-@@ -1149,7 +1162,7 @@
-                   + FRAME_NS_TOOLBAR_HEIGHT (f);
- 
-   /* constrain to screen if we can */
--  if (screen)
-+  if (screen && ![window isKindOfClass:[EmacsFullWindow class]])
-     {
-       NSSize sz = [screen visibleFrame].size;
-       NSSize ez = { wr.size.width - sz.width, wr.size.height - sz.height };
-@@ -1196,7 +1209,7 @@
-   change_frame_size (f, rows, cols, 0, 1, 0); /* pretend, delay, safe */
-   FRAME_PIXEL_WIDTH (f) = pixelwidth;
-   FRAME_PIXEL_HEIGHT (f) = pixelheight;
--/*  SET_FRAME_GARBAGED (f); // this short-circuits expose call in drawRect */
-+  /*  SET_FRAME_GARBAGED (f); // this short-circuits expose call in drawRect */
- 
-   mark_window_cursors_off (XWINDOW (f->root_window));
-   cancel_mouse_face (f);
-@@ -5589,6 +5602,59 @@
- 
- @implementation EmacsWindow
- 
-+-(NSWindow *)toggleFullscreen {
-+    BOOL isFullscreen = [[self className] isEqualToString:@"EmacsFullWindow"];
-+    NSWindow *win;
-+
-+    if (isFullscreen) {
-+        EmacsFullWindow *f = (EmacsFullWindow *)self;
-+        EmacsWindow *w = [f getNormalWindow];
-+
-+        [w setContentView:[f contentView]];
-+        [w makeKeyAndOrderFront:nil];
-+
-+        [f close];
-+
-+        win = w;
-+
-+        if ([[self screen] isEqual:[[NSScreen screens] objectAtIndex:0]]) {
-+            if ([NSApp respondsToSelector:@selector(setPresentationOptions:)]) {
-+                [NSApp setPresentationOptions:NSApplicationPresentationDefault];
-+            }
-+            else {
-+                [NSMenu setMenuBarVisible:YES];
-+            }
-+        }
-+    }
-+    else {
-+        [self deminiaturize:nil];
-+
-+        if ([[self screen] isEqual:[[NSScreen screens] objectAtIndex:0]]) {
-+            if ([NSApp respondsToSelector:@selector(setPresentationOptions:)]) {
-+                [NSApp setPresentationOptions:NSApplicationPresentationAutoHideDock | NSApplicationPresentationAutoHideMenuBar];
-+            }
-+            else {
-+                [NSMenu setMenuBarVisible:NO];
-+            }
-+        }
-+
-+        [self orderOut:nil];
-+
-+        EmacsFullWindow *f = [[EmacsFullWindow alloc] initWithNormalWindow:self];
-+        EmacsView *view = (EmacsView *)[self delegate];
-+        [f setDelegate:view];
-+        [f makeFirstResponder:view];
-+        [f setContentView:[self contentView]];
-+        [f setContentSize:[[self screen] frame].size];
-+        [f setTitle:[self title]];
-+        [f makeKeyAndOrderFront:nil];
-+
-+        win = f;
-+    }
-+
-+    return win;
-+}
-+
- /* called only on resize clicks by special case in EmacsApp-sendEvent */
- - (void)mouseDown: (NSEvent *)theEvent
- {
-@@ -5647,6 +5713,32 @@
- 
- @end /* EmacsWindow */
- 
-+@implementation EmacsFullWindow
-+
-+-(BOOL)canBecomeKeyWindow {
-+    return YES;
-+}
-+
-+-(id)initWithNormalWindow:(EmacsWindow *)window {
-+    self = [super initWithContentRect:[window contentRectForFrameRect:[[window screen] frame]]
-+                            styleMask:NSBorderlessWindowMask
-+                              backing:NSBackingStoreBuffered
-+                                defer:YES];
-+    if (self) {
-+        normalWindow = window;
-+        [self setAcceptsMouseMovedEvents: YES];
-+        [self useOptimizedDrawing: YES];
-+    }
-+
-+    return self;
-+}
-+
-+-(EmacsWindow *)getNormalWindow {
-+    return normalWindow;
-+}
-+
-+@end /* EmacsFullWindow */
-+
- 
- /* ==========================================================================
- 

aqua/emacs-app/files/patch-lion-fullscreen.diff

---- src/nsterm.m.old	2011-11-25 22:36:38.000000000 +0900
-+++ src/nsterm.m	2011-11-25 22:59:56.000000000 +0900
-@@ -5182,6 +5182,7 @@
-   [win setAcceptsMouseMovedEvents: YES];
-   [win setDelegate: self];
-   [win useOptimizedDrawing: YES];
-+  [win setCollectionBehavior:NSWindowCollectionBehaviorFullScreenPrimary];
- 
-   sz.width = FRAME_COLUMN_WIDTH (f);
-   sz.height = FRAME_LINE_HEIGHT (f);
-@@ -5671,6 +5672,43 @@
-   cols = c;
- }
- 
-+- (NSApplicationPresentationOptions)window:(NSWindow *)window willUseFullScreenPresentationOptions:(NSApplicationPresentationOptions)proposedOptions {
-+    return proposedOptions | NSApplicationPresentationAutoHideToolbar;
-+}
-+
-+- (NSSize)window:(NSWindow *)window willUseFullScreenContentSize:(NSSize)proposedSize {
-+    NSRect r = NSMakeRect(0.f, 0.f, proposedSize.width, proposedSize.height);
-+    int cols = FRAME_PIXEL_WIDTH_TO_TEXT_COLS(emacsframe, r.size.width);
-+    int rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES(emacsframe, r.size.height);
-+
-+    change_frame_size (emacsframe, rows, cols, 0, 1, 0); /* pretend, delay, safe */
-+    FRAME_PIXEL_WIDTH (emacsframe) = (int)r.size.width;
-+    FRAME_PIXEL_HEIGHT (emacsframe) = (int)r.size.height;
-+
-+    emacsframe->border_width = [window frame].size.width - r.size.width;
-+    FRAME_NS_TITLEBAR_HEIGHT (emacsframe) = 0;
-+
-+    return proposedSize;
-+}
-+
-+- (void)windowDidExitFullScreen:(NSNotification *)notification {
-+    NSWindow* window = [notification object];
-+
-+    NSRect r = [window contentRectForFrameRect:[window frame]];
-+    int cols = FRAME_PIXEL_WIDTH_TO_TEXT_COLS(emacsframe, r.size.width);
-+    int rows = FRAME_PIXEL_HEIGHT_TO_TEXT_LINES(emacsframe, r.size.height);
-+
-+    change_frame_size (emacsframe, rows, cols, 0, 1, 0); /* pretend, delay, safe */
-+    FRAME_PIXEL_WIDTH (emacsframe) = (int)r.size.width;
-+    FRAME_PIXEL_HEIGHT (emacsframe) = (int)r.size.height;
-+
-+    emacsframe->border_width = [window frame].size.width - r.size.width;
-+    FRAME_NS_TITLEBAR_HEIGHT (emacsframe) =
-+        [window frame].size.height - r.size.height;
-+
-+    [[window delegate] windowDidMove:nil];
-+}
-+
- @end  /* EmacsView */
- 
- 

aqua/emacs-app/files/patch-macemacsjp-inline.diff

-diff -r -p -x '*.elc' ../emacs-23.2.94-0/lisp/term/ns-win.el lisp/term/ns-win.el
-*** ../emacs-23.2.94-0/lisp/term/ns-win.el	2011-01-27 05:35:09.000000000 +0900
---- lisp/term/ns-win.el	2011-02-28 13:08:01.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)
-*************** The properties returned may include `top
-*** 549,562 ****
-  ;; editing window.)
-  
-  (defface ns-working-text-face
-!   '((t :underline t))
-    "Face used to highlight working text during compose sequence insert."
-    :group 'ns)
-  
-  (defvar ns-working-overlay nil
-    "Overlay used to highlight working text during compose sequence insert.
-  When text is in th echo area, this just stores the length of the working text.")
-  
-  (defvar ns-working-text)		; nsterm.m
-  
-  ;; Test if in echo area, based on mac-win.el 2007/08/26 unicode-2.
---- 550,579 ----
-  ;; editing window.)
-  
-  (defface ns-working-text-face
-!   '((((background dark)) :underline "gray80")
-!     (t :underline "gray20"))
-    "Face used to highlight working text during compose sequence insert."
-    :group 'ns)
-  
-+ (defface ns-marked-text-face
-+   '((((background dark)) :underline "gray80")
-+     (t :underline "gray20"))
-+   "Face used to highlight marked text during compose sequence insert."
-+   :group 'ns)
-+ 
-+ (defface ns-unmarked-text-face
-+   '((((background dark)) :underline "gray20")
-+     (t :underline "gray80"))
-+   "Face used to highlight marked text during compose sequence insert."
-+   :group 'ns)
-+ 
-  (defvar ns-working-overlay nil
-    "Overlay used to highlight working text during compose sequence insert.
-  When text is in th echo area, this just stores the length of the working text.")
-  
-+ (defvar ns-marked-overlay nil
-+   "Overlay used to highlight marked text during compose sequence insert.")
-+ 
-  (defvar ns-working-text)		; nsterm.m
-  
-  ;; Test if in echo area, based on mac-win.el 2007/08/26 unicode-2.
-*************** is currently being used."
-*** 583,588 ****
---- 600,606 ----
-  (defun ns-put-working-text ()
-    (interactive)
-    (if (ns-in-echo-area) (ns-echo-working-text) (ns-insert-working-text)))
-+ 
-  (defun ns-unput-working-text ()
-    (interactive)
-    (ns-delete-working-text))
-*************** The overlay is assigned the face `ns-wor
-*** 604,622 ****
-  (defun ns-echo-working-text ()
-    "Echo contents of `ns-working-text' in message display area.
-  See `ns-insert-working-text'."
--   (ns-delete-working-text)
-    (let* ((msg (current-message))
-! 	 (msglen (length msg))
-! 	 message-log-max)
-      (setq ns-working-overlay (length ns-working-text))
-      (setq msg (concat msg ns-working-text))
-      (put-text-property msglen (+ msglen ns-working-overlay)
-! 		       'face 'ns-working-text-face msg)
-      (message "%s" msg)))
-  
-  (defun ns-delete-working-text()
-!   "Delete working text and clear `ns-working-overlay'."
-    (interactive)
-    (cond
-     ((and (overlayp ns-working-overlay)
-           ;; Still alive?
---- 622,700 ----
-  (defun ns-echo-working-text ()
-    "Echo contents of `ns-working-text' in message display area.
-  See `ns-insert-working-text'."
-    (let* ((msg (current-message))
-!          (msglen (length msg))
-!          message-log-max)
-!     (if (integerp ns-working-overlay)
-! 	(progn
-! 	  (setq msg (substring msg 0 (- (length msg) ns-working-overlay)))
-! 	  (setq msglen (length msg))))
-      (setq ns-working-overlay (length ns-working-text))
-      (setq msg (concat msg ns-working-text))
-      (put-text-property msglen (+ msglen ns-working-overlay)
-! 			'face 'ns-working-text-face msg)
-!      (message "%s" msg)))
-! 
-! (defun ns-put-marked-text (event)
-!   (interactive "e")
-! 
-!   (let ((pos (nth 1 event))
-! 	(len (nth 2 event)))
-!     (if (ns-in-echo-area)
-! 	(ns-echo-marked-text pos len)
-!       (ns-insert-marked-text pos len))))
-! 
-! (defun ns-insert-marked-text (pos len)
-!   "Insert contents of `ns-working-text' as UTF-8 string and mark with
-! `ns-working-overlay' and `ns-marked-overlay'.  Any previously existing
-! working text is cleared first. The overlay is assigned the faces 
-! `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))))
-!     
-! (defun ns-echo-marked-text (pos len)
-!   "Echo contents of `ns-working-text' in message display area.
-! See `ns-insert-working-text'."
-!   (let* ((msg (current-message))
-!          (msglen (length msg))
-!          message-log-max)
-!     (when (integerp ns-working-overlay)
-!       (setq msg (substring msg 0 (- (length msg) ns-working-overlay)))
-!       (setq msglen (length msg)))
-!     (setq ns-working-overlay (length ns-working-text))
-!     (setq msg (concat msg ns-working-text))
-!     (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)
-!                          'face 'ns-unmarked-text-face msg)
-!       (put-text-property (+ msglen pos) (+ msglen pos len)
-!                          'face 'ns-marked-text-face msg))
-      (message "%s" msg)))
-  
-  (defun ns-delete-working-text()
-!   "Delete working text and clear `ns-working-overlay' and `ns-marked-overlay'."
-    (interactive)
-+   (when (and (overlayp ns-marked-overlay)
-+ 	     ;; Still alive
-+ 	     (overlay-buffer ns-marked-overlay))
-+     (with-current-buffer (overlay-buffer ns-marked-overlay)
-+       (delete-overlay ns-marked-overlay)))
-+   (setq ns-marked-overlay nil)
-    (cond
-     ((and (overlayp ns-working-overlay)
-           ;; Still alive?
-*************** the operating system.")
-*** 1267,1272 ****
---- 1345,1731 ----
-  (add-to-list 'window-system-initialization-alist '(ns . ns-initialize-window-system))
-  
-  
-+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-+ ;;
-+ ;; Implementation of Input Method Extension for MacOS X
-+ ;; written by Taiichi Hashimoto <taiichi2@mac.com>
-+ ;;
-+ 
-+ (defvar mac-input-method-parameters
-+   '(
-+     ("com.apple.inputmethod.Kotoeri.Roman"
-+      (title . "A")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.apple.inputmethod.Kotoeri.Japanese"
-+      (title . "あ")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.apple.inputmethod.Kotoeri.Japanese.Katakana"
-+      (title . "ア")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.apple.inputmethod.Kotoeri.Japanese.FullWidthRoman"
-+      (title . "A")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.apple.inputmethod.Kotoeri.Japanese.HalfWidthKana"
-+      (title . "ア")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.apple.inputmethod.kotoeri.Ainu"
-+      (title . "アイヌ")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.apple.inputmethod.Korean.2SetKorean"
-+      (title . "가2")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.apple.inputmethod.Korean.3SetKorean"
-+      (title . "가3")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.apple.inputmethod.Korean.390Sebulshik"
-+      (title . "가5")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.apple.inputmethod.Korean.GongjinCheongRomaja"
-+      (title . "가G")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.apple.inputmethod.Korean.HNCRomaja"
-+      (title . "가H")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.apple.inputmethod.Tamil.AnjalIM"
-+      (title . "Anjal")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.apple.inputmethod.Tamil.Tamil99"
-+      (title . "Tamil")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.apple.inputmethod.VietnameseIM.VietnameseSimpleTelex"
-+      (title . "ST")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.apple.inputmethod.VietnameseIM.VietnameseTelex"
-+      (title . "TX")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.apple.inputmethod.VietnameseIM.VietnameseVNI"
-+      (title . "VN")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.apple.inputmethod.VietnameseIM.VietnameseVIQR"
-+      (title . "VQ")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.apple.inputmethod.SCIM.ITABC"
-+      (title . "拼")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.apple.inputmethod.SCIM.WBX"
-+      (title . "型")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.apple.inputmethod.SCIM.WBH"
-+      (title . "画")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.apple.inputmethod.TCIM.Zhuyin"
-+      (title . "注")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.apple.inputmethod.TCIM.Pinyin"
-+      (title . "拼")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.apple.inputmethod.TCIM.Cangjie"
-+      (title . "倉")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.apple.inputmethod.TCIM.Jianyi"
-+      (title . "速")
-+      (cursor-color)
-+      (Cursor-type))
-+     ("com.apple.inputmethod.TCIM.Dayi"
-+      (title . "易")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.apple.inputmethod.TCIM.Hanin"
-+      (title . "漢")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.google.inputmethod.Japanese.Roman"
-+      (title . "G")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.google.inputmethod.Japanese.base"
-+      (title . "ぐ")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.google.inputmethod.Japanese.Katakana"
-+      (title . "グ")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.google.inputmethod.Japanese.FullWidthRoman"
-+      (title . "G")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.google.inputmethod.Japanese.HalfWidthKana"
-+      (title . "グ")
-+      (cursor-color)
-+      (cursor-type))
-+     ("jp.monokakido.inputmethod.Kawasemi.Roman"
-+      (title . "K")
-+      (cursor-color)
-+      (cursor-type))
-+     ("jp.monokakido.inputmethod.Kawasemi.Japanese"
-+      (title . "か")
-+      (cursor-color)
-+      (cursor-type))
-+     ("jp.monokakido.inputmethod.Kawasemi.Japanese.Katakana"
-+      (title . "カ")
-+      (cursor-color)
-+      (cursor-type))
-+     ("jp.monokakido.inputmethod.Kawasemi.Japanese.FullWidthRoman"
-+      (title . "K")
-+      (cursor-color)
-+      (cursor-type))
-+     ("jp.monokakido.inputmethod.Kawasemi.Japanese.HalfWidthKana"
-+      (title . "カ")
-+      (cursor-color)
-+      (cursor-type))
-+     ("jp.monokakido.inputmethod.Kawasemi.Japanese.HalfWidthRoman"
-+      (title . "_K")
-+      (cursor-color)
-+      (cursor-type))
-+     ("jp.monokakido.inputmethod.Kawasemi.Japanese.Code"
-+      (title . "C")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.justsystems.inputmethod.atok22.Roman"
-+      (title . "A")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.justsystems.inputmethod.atok22.Japanese"
-+      (title . "あ")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.justsystems.inputmethod.atok22.Japanese.Katakana"
-+      (title . "ア")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.justsystems.inputmethod.atok22.Japanese.FullWidthRoman"
-+      (title . "英")
-+      (cursor-color)
-+      (cursor-type))
-+     ("com.justsystems.inputmethod.atok22.Japanese.HalfWidthEiji"
-+      (title . "半英")
-+      (cursor-color)
-+      (cursor-type))
-+     )
-+   "Alist of Mac script code vs parameters for input method on MacOSX.")
-+ 
-+ 
-+ (defun mac-get-input-method-parameter (is key)
-+   "Function to get a parameter of a input method."
-+   (interactive)
-+   (assq key (cdr (assoc is mac-input-method-parameters))))
-+ 
-+ (defun mac-get-input-method-title (&optional input-source)
-+   "Return input method title of input source.
-+    If input-source is nil, return one of current frame."
-+   (if input-source
-+       (cdr (mac-get-input-method-parameter input-source 'title))
-+     current-input-method-title))
-+ 
-+ (defun mac-get-cursor-type (&optional input-source)
-+   "Return cursor type of input source.
-+    If input-source is nil, return one of current frame."
-+   (if input-source
-+       (or (cdr (mac-get-input-method-parameter input-source 'cursor-type))
-+ 	  (cdr (assq 'cursor-type default-frame-alist))
-+ 	  cursor-type)
-+     (cdr (assq 'cursor-type (frame-parameters (selected-frame))))))
-+ 
-+ (defun mac-get-cursor-color (&optional input-source)
-+   "Return cursor color of input source.
-+    If input-source is nil, return one of current frame."
-+   (if input-source
-+       (or (cdr (mac-get-input-method-parameter input-source 'cursor-color))
-+ 	  (cdr (assq 'cursor-color default-frame-alist)))
-+     (cdr (assq 'cursor-color (frame-parameters (selected-frame))))))
-+ 
-+ 
-+ (defun mac-set-input-method-parameter (is key value)
-+   "Function to set a parameter of a input method."
-+   (let* ((is-param (assoc is mac-input-method-parameters))
-+          (param (assq key is-param)))
-+     (if is-param
-+ 	(if param
-+ 	    (setcdr param value)
-+ 	  (setcdr is-param (cons (cons key value) (cdr is-param))))
-+       (setq mac-input-method-parameters
-+ 	    (cons (list is (cons key value))
-+ 		  mac-input-method-parameters)))))
-+ 
-+ 
-+ (defun mac-input-method-update (is)
-+   "Funtion to update parameters of a input method."
-+   (interactive)
-+ 
-+   (let ((title (mac-get-input-method-title is))
-+         (type (mac-get-cursor-type is))
-+         (color (mac-get-cursor-color is)))
-+     (if (and title (not (equal title (mac-get-input-method-title))))
-+ 	(setq current-input-method-title title))
-+     (if (and type (not (equal type (mac-get-cursor-type))))
-+ 	(setq cursor-type type))
-+     (if (and color (not (equal color (mac-get-cursor-color))))
-+ 	(set-cursor-color color))
-+     (force-mode-line-update)
-+     (if isearch-mode (isearch-update))))
-+ 
-+ 
-+ (defun mac-toggle-input-method (&optional arg)
-+   "Function to toggle input method on MacOSX."
-+   (interactive)
-+   
-+   (if arg
-+       (progn
-+ 	(make-local-variable 'input-method-function)
-+ 	(setq inactivate-current-input-method-function 'mac-toggle-input-method)
-+ 	(setq input-method-function nil)
-+ 	(setq describe-current-input-method-function nil)
-+ 	(mac-toggle-input-source t))
-+     (kill-local-variable 'input-method-function)
-+     (setq describe-current-input-method-function nil)
-+     (mac-toggle-input-source nil)))
-+ 
-+ 
-+ (defun mac-change-language-to-us ()
-+   "Function to change language to us."
-+   (interactive)
-+   (mac-toggle-input-method nil))
-+ 
-+ 
-+ (defun mac-handle-input-method-change ()
-+   "Function run when a input method change."
-+   (interactive)
-+ 
-+   (if (equal default-input-method "MacOSX")
-+       (let ((input-source (mac-get-current-input-source))
-+ 	  (ascii-capable (mac-input-source-is-ascii-capable)))
-+ 	
-+ 	(cond ((and (not current-input-method) (not ascii-capable))
-+ 	       (set-input-method "MacOSX"))
-+ 	      ((and (equal current-input-method "MacOSX") ascii-capable)
-+ 	       (toggle-input-method nil)))
-+ 	(mac-input-method-update input-source))))
-+ 
-+ ;;
-+ ;; Emacs input method for input method on MacOSX.
-+ ;;
-+ (register-input-method "MacOSX" "MacOSX" 'mac-toggle-input-method
-+ 		       "Mac" "Input Method on MacOSX System")
-+ 
-+ 
-+ ;;
-+ ;; Minor mode of using input methods on MacOS X
-+ ;;
-+ (define-minor-mode mac-input-method-mode
-+   "Use input methods on MacOSX."
-+   :init-value nil
-+   :group 'ns
-+   :global t
-+ 
-+   (if mac-input-method-mode
-+       (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))
-+     (setq default-input-method nil)))
-+ 
-+ ;;
-+ ;; Valiable and functions to pass key(shortcut) to system.
-+ ;;
-+ (defvar mac-keys-passed-to-system nil
-+   "A list of keys passed to system on MacOSX.")
-+ 
-+ (defun mac-add-key-passed-to-system (key)
-+   (let ((shift   '(shift shft))
-+ 	(control '(control ctrl ctl))
-+ 	(option  '(option opt alternate alt))
-+ 	(command '(command cmd)))
-+ 
-+     (add-to-list 'mac-keys-passed-to-system
-+ 		 (cond ((symbolp key)
-+ 			(cond ((memq key shift)
-+ 			       (cons ns-shift-key-mask nil))
-+ 			      ((memq key control)
-+ 			       (cons ns-control-key-mask nil))
-+ 			      ((memq key option)
-+ 			       (cons ns-alternate-key-mask nil))
-+ 			      ((memq key command)
-+ 			       (cons ns-command-key-mask nil))
-+ 			      (t (cons nil nil))))
-+ 		       ((numberp key) (cons 0 key))
-+ 		       ((listp key)
-+ 			(let ((l key) (k nil) (m 0))
-+ 			  (while l
-+ 			    (cond ((memq (car l) shift)
-+ 				   (setq m (logior m ns-shift-key-mask)))
-+ 				  ((memq (car l) control)
-+ 				   (setq m (logior m ns-control-key-mask)))
-+ 				  ((memq (car l) option)
-+ 				   (setq m (logior m ns-alternate-key-mask)))
-+ 				  ((memq (car l) command)
-+ 				       (setq m (logior m ns-command-key-mask)))
-+ 				  ((numberp (car l))
-+ 				   (if (not k) (setq k (car l)))))
-+ 			    (setq l (cdr l)))
-+ 			  (cons m k)))
-+ 		       (t (cons nil nil))))))
-+ 
-+ 
-+ ;;
-+ ;; Entry Emacs event for inline input method on MacOSX.
-+ ;;
-+ (define-key special-event-map
-+   [mac-change-input-method] 'mac-handle-input-method-change)
-+       
-+ ;;
-+ ;; Convert yen to backslash for JIS keyboard.
-+ ;;
-+ (defun mac-translate-from-yen-to-backslash () 
-+   ;; Convert yen to backslash for JIS keyboard.
-+   (interactive)
-+ 
-+   (define-key global-map [165] nil)
-+   (define-key global-map [2213] nil)
-+   (define-key global-map [3420] nil)
-+   (define-key global-map [67109029] nil)
-+   (define-key global-map [67111077] nil)
-+   (define-key global-map [8388773] nil)
-+   (define-key global-map [134219941] nil)
-+   (define-key global-map [75497596] nil)
-+   (define-key global-map [201328805] nil)
-+   (define-key function-key-map [165] [?\\])
-+   (define-key function-key-map [2213] [?\\]) ;; for Intel
-+   (define-key function-key-map [3420] [?\\]) ;; for PowerPC
-+   (define-key function-key-map [67109029] [?\C-\\])
-+   (define-key function-key-map [67111077] [?\C-\\])
-+   (define-key function-key-map [8388773] [?\M-\\])
-+   (define-key function-key-map [134219941] [?\M-\\])
-+   (define-key function-key-map [75497596] [?\C-\M-\\])
-+   (define-key function-key-map [201328805] [?\C-\M-\\])
-+ )
-+ 
-+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-+ 
-  (provide 'ns-win)
-  
-  ;; arch-tag: eb138a45-4e2e-4d68-b1c9-a39665731644
-diff -r -p -N -x '*.o' ../emacs-23.2.94-0/src/Makefile.in src/Makefile.in
-*** ../emacs-23.2.94-0/src/Makefile.in	2011-01-09 02:45:14.000000000 +0900
---- src/Makefile.in	2011-02-15 22:24:06.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.2.94-0/src/keyboard.c src/keyboard.c
-*** ../emacs-23.2.94-0/src/keyboard.c	2011-01-29 05:22:59.000000000 +0900
---- src/keyboard.c	2011-02-15 22:24:06.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.2.94-0/src/macim.m src/macim.m
-*** ../emacs-23.2.94-0/src/macim.m	1970-01-01 09:00:00.000000000 +0900
---- src/macim.m	2011-02-28 10:27:05.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 <taiichi2@mac.com>.
-+ */
-+ 
-+ #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.2.94-0/src/nsfns.m src/nsfns.m
-*** ../emacs-23.2.94-0/src/nsfns.m	2011-01-09 02:45:14.000000000 +0900
---- src/nsfns.m	2011-02-15 22:24:06.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.2.94-0/src/nsterm.h src/nsterm.h
-*** ../emacs-23.2.94-0/src/nsterm.h	2011-01-09 02:45:14.000000000 +0900
---- src/nsterm.h	2011-02-15 22:24:06.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.2.94-0/src/nsterm.m src/nsterm.m
-*** ../emacs-23.2.94-0/src/nsterm.m	2011-02-09 08:46:22.000000000 +0900
---- src/nsterm.m	2011-02-15 22:24:06.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.2.94-0/src/s/darwin.h src/s/darwin.h
-*** ../emacs-23.2.94-0/src/s/darwin.h	2011-01-09 02:45:14.000000000 +0900
---- src/s/darwin.h	2011-02-15 22:24:06.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 */

aqua/emacs-app/files/patch-macemacsjp-jpfont.diff

-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);

aqua/emacs-app/files/patch-shiftmodifier-with-ime.diff

---- src/nsterm.m	2012-02-06 13:50:50.000000000 +0900
-+++ src/nsterm.m.orig	2012-01-11 21:35:01.000000000 +0900
-@@ -4488,7 +4488,7 @@
-              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
-+  if (fnKeysym || (emacs_event->modifiers && (emacs_event->modifiers != shift_modifier)
-                        && [[theEvent charactersIgnoringModifiers] length] > 0))
- /*[[theEvent characters] length] */
-         {

aqua/emacs-app/files/patch-src_emacs.c.diff

---- src/emacs.c.orig	2011-01-09 02:45:14.000000000 +0900
-+++ src/emacs.c	2011-09-09 23:13:44.000000000 +0900
-@@ -23,6 +23,8 @@
- #include <signal.h>
- #include <errno.h>
- #include <stdio.h>
-+#include <stdlib.h>
-+#include <string.h>
- 
- #include <sys/types.h>
- #include <sys/file.h>
-@@ -839,6 +841,25 @@
- #ifdef DARWIN_OS
-   if (!initialized)
-     unexec_init_emacs_zone ();
-+
-+  /* Imaxima won't work properly if PATH does not contain the
-+     MacPorts directory. The following code is a workaround to
-+     avoid this problem. */
-+  {
-+    char *oldpath = getenv("PATH");
-+    if (!oldpath) {oldpath = "";}
-+    size_t oldpathsize = strlen(oldpath) + 1;
-+    if (!strstr(oldpath, "__PREFIX__/bin")) {
-+      char *newpath;
-+      size_t newpathsize = oldpathsize + strlen("__PREFIX__/bin:");
-+      if ((newpath = (char *)malloc(newpathsize)) != NULL) {
-+        strlcpy(newpath, "__PREFIX__/bin:", newpathsize);
-+        strlcat(newpath, oldpath, newpathsize);
-+        setenv("PATH", newpath, 1);
-+        free(newpath);
-+      }
-+    }
-+  }
- #endif
- 
-   sort_args (argc, argv);

aqua/emacs-app/files/site-start.el

-(setq load-path (cons "__PREFIX__/share/emacs/site-lisp" load-path))
-(if (file-readable-p "__PREFIX__/share/emacs/site-lisp/subdirs.el")
-    (let ((default-directory "__PREFIX__/share/emacs/site-lisp"))
-      (load "__PREFIX__/share/emacs/site-lisp/subdirs.el")))
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.