<pre style='margin:0'>
Dan Ports (drkp) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/36b60fd44e67f7655e00994280c8915f715f2d5b">https://github.com/macports/macports-ports/commit/36b60fd44e67f7655e00994280c8915f715f2d5b</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 36b60fd  emacs: patch maintainence
</span>36b60fd is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 36b60fd44e67f7655e00994280c8915f715f2d5b
</span>Author: Jimmy Yuen Ho Wong <wyuenho@gmail.com>
AuthorDate: Mon Jun 4 16:14:09 2018 +0100

<span style='display:block; white-space:pre;color:#404040;'>    emacs: patch maintainence
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    * update inline patch to 25.2
</span><span style='display:block; white-space:pre;color:#404040;'>    * add emoji to default font
</span><span style='display:block; white-space:pre;color:#404040;'>    * remove emacs.c PATH patch
</span><span style='display:block; white-space:pre;color:#404040;'>    * require autoconf, automake and libtool
</span><span style='display:block; white-space:pre;color:#404040;'>    
</span><span style='display:block; white-space:pre;color:#404040;'>    Closes: https://trac.macports.org/ticket/56586
</span><span style='display:block; white-space:pre;color:#404040;'>    Closes: https://trac.macports.org/ticket/56524
</span>---
 editors/emacs/Portfile                             |  31 +-
 editors/emacs/files/patch-devel-src_emacs.c.diff   |  35 --
 ...151017.diff => patch-inline-25.2-20170426.diff} | 676 ++++++++++-----------
 editors/emacs/files/patch-src-macim.m.diff         |  12 -
 editors/emacs/files/patch-src_emacs.c.diff         |  35 --
 editors/emacs/files/site-start.el                  |   6 +
 6 files changed, 346 insertions(+), 449 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/editors/emacs/Portfile b/editors/emacs/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 608f704..2099ab7 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/editors/emacs/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/editors/emacs/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -34,6 +34,8 @@ subport emacs-app-devel {
</span>     conflicts   emacs-app
 }
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_build-append port:autoconf port:automake port:libtool
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> if {$subport eq $name || $subport eq "emacs-app"} {
     version         26.1
     revision        0
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -60,8 +62,6 @@ if {$subport eq "emacs-devel" || $subport eq "emacs-app-devel"} {
</span>     git.url         http://git.savannah.gnu.org/r/emacs.git
     git.branch      0bddbbc5aae621d5875880ac3e63f68d481df7c3
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    depends_build-append port:autoconf port:automake port:libtool
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span>     # our dbus is autolaunched by launchd, so disable the check that it's running
     # this patchfile is slightly different for emacs-devel
     patchfiles      patch-devel-src_dbusbind.c.diff
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -141,7 +141,7 @@ platform darwin {
</span>     }
 }
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-if {${subport} eq "emacs" || ${subport} eq "emacs-devel"} {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+if {${subport} eq ${name} || ${subport} eq "emacs-devel"} {
</span>     PortGroup  muniversal 1.0
 
     variant motif requires x11 description {Builds emacs as an X11 program with Motif widgets} {
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -161,8 +161,6 @@ if {${subport} eq "emacs" || ${subport} eq "emacs-devel"} {
</span>                                 path:lib/pkgconfig/glib-2.0.pc:glib2 \
                                 port:gconf \
                                 port:librsvg
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        depends_build-append port:autoconf port:automake 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span>         # see #21917
         require_active_variants gtk2 x11
     }
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -191,18 +189,8 @@ variant dbus description {Builds emacs with D-Bus support} {
</span> if {$subport eq "emacs-app" || $subport eq "emacs-app-devel"} {
     categories-append   aqua
 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    if {$subport eq "emacs-app"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        patchfiles-append   patch-src_emacs.c.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    } elseif {$subport eq "emacs-app-devel"} {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        patchfiles-append   patch-devel-src_emacs.c.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    post-patch {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        reinplace "s|__PREFIX__|${prefix}|" ${worksrcpath}/src/emacs.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-
</span>     configure.args-append --with-ns
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    configure.args-delete --without-x
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    configure.args-delete --without-ns --without-x
</span> 
     universal_variant   no
 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -220,14 +208,9 @@ if {$subport eq "emacs-app" || $subport eq "emacs-app-devel"} {
</span>     }
 
     variant inline description {Apply inline patch} {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-        # patch-inline-24.4-20141103.diff: inline patch for 24.4 from
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # http://plamo.linet.gr.jp/~matsuki/mac/emacs-25.1-inline.patch.bz2
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # patch-src-macim.m.diff: fix for 10.6 or earlier, see #45666
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        patchfiles-append   patch-inline-25.1-20151017.diff \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-                            patch-src-macim.m.diff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        # http://sakito.jp/emacs/emacs24.html
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        depends_build-append port:autoconf port:automake port:libtool
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-        build.target        bootstrap
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        # https://gist.github.com/takaxp/5294b6c52782d0be0b25342be62e4a77
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        patchfiles-append    patch-inline-25.2-20170426.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        build.target         bootstrap
</span>     }
 
     variant multicolor_font description {Apply multicolor font patch} {
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/editors/emacs/files/patch-devel-src_emacs.c.diff b/editors/emacs/files/patch-devel-src_emacs.c.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index cef35c2..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/editors/emacs/files/patch-devel-src_emacs.c.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,35 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/emacs.c.orig       2016-11-11 17:20:48.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/emacs.c    2016-11-12 19:13:05.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -25,6 +25,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <fcntl.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <stdio.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <string.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <sys/types.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <sys/file.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -743,6 +744,24 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifdef DARWIN_OS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (!initialized)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     unexec_init_emacs_zone ();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  /* Imaxima won't work properly if PATH does not contain the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     MacPorts directory. The following code is a workaround to
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     avoid this problem. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    char *oldpath = getenv("PATH");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (!oldpath) {oldpath = "";}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    size_t oldpathsize = strlen(oldpath) + 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (!strstr(oldpath, "__PREFIX__/bin")) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      char *newpath;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      size_t newpathsize = oldpathsize + strlen("__PREFIX__/bin:");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      if ((newpath = (char *)malloc(newpathsize)) != NULL) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        strlcpy(newpath, "__PREFIX__/bin:", newpathsize);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        strlcat(newpath, oldpath, newpathsize);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        setenv("PATH", newpath, 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   init_standard_fds ();
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/editors/emacs/files/patch-inline-25.1-20151017.diff b/editors/emacs/files/patch-inline-25.2-20170426.diff
</span>similarity index 70%
rename from editors/emacs/files/patch-inline-25.1-20151017.diff
rename to editors/emacs/files/patch-inline-25.2-20170426.diff
<span style='display:block; white-space:pre;color:#808080;'>index 2469bb8..d66592f 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/editors/emacs/files/patch-inline-25.1-20151017.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/editors/emacs/files/patch-inline-25.2-20170426.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,8 +1,8 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Nrc configure.ac configure.ac
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-*** configure.ac   2016-07-25 16:08:36.000000000 +0900
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- configure.ac   2016-09-20 02:27:22.000000000 +0900
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff -crN emacs-25.2_orig/configure.ac emacs-25.2/configure.ac
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+*** emacs-25.2_orig/configure.ac   2017-02-03 23:34:30.000000000 +0900
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- emacs-25.2/configure.ac        2017-04-26 14:45:40.000000000 +0900
</span> ***************
<span style='display:block; white-space:pre;background:#ffe0e0;'>-*** 1916,1922 ****
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+*** 1915,1921 ****
</span>        INSTALL_ARCH_INDEP_EXTRA=
     fi
   
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -10,7 +10,7 @@ diff -Nrc configure.ac configure.ac
</span>   fi
   CFLAGS="$tmp_CFLAGS"
   CPPFLAGS="$tmp_CPPFLAGS"
<span style='display:block; white-space:pre;background:#ffe0e0;'>---- 1916,1922 ----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- 1915,1921 ----
</span>        INSTALL_ARCH_INDEP_EXTRA=
     fi
   
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -19,7 +19,7 @@ diff -Nrc configure.ac configure.ac
</span>   CFLAGS="$tmp_CFLAGS"
   CPPFLAGS="$tmp_CPPFLAGS"
 ***************
<span style='display:block; white-space:pre;background:#ffe0e0;'>-*** 5123,5129 ****
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+*** 5117,5123 ****
</span>      ## only costs about 1.5K of wasted binary space.
      headerpad_extra=1000
      if test "$HAVE_NS" = "yes"; then
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -27,7 +27,7 @@ diff -Nrc configure.ac configure.ac
</span>        if test "$NS_IMPL_COCOA" = "yes"; then
           libs_nsgui="$libs_nsgui -framework IOKit"
        fi
<span style='display:block; white-space:pre;background:#ffe0e0;'>---- 5123,5129 ----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- 5117,5123 ----
</span>      ## only costs about 1.5K of wasted binary space.
      headerpad_extra=1000
      if test "$HAVE_NS" = "yes"; then
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -35,32 +35,39 @@ diff -Nrc configure.ac configure.ac
</span>        if test "$NS_IMPL_COCOA" = "yes"; then
           libs_nsgui="$libs_nsgui -framework IOKit"
        fi
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Nrc lisp/term/common-win.el lisp/term/common-win.el
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-*** lisp/term/common-win.el        2016-06-29 18:49:20.000000000 +0900
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- lisp/term/common-win.el        2016-09-20 02:27:22.000000000 +0900
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff -crN emacs-25.2_orig/lisp/term/common-win.el emacs-25.2/lisp/term/common-win.el
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+*** emacs-25.2_orig/lisp/term/common-win.el        2017-02-03 19:25:44.000000000 +0900
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- emacs-25.2/lisp/term/common-win.el     2017-04-26 14:45:40.000000000 +0900
</span> ***************
 *** 73,78 ****
 --- 73,79 ----
               (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)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+              (cons (logior (lsh 0 16)  15) 'mac-change-input-method)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                (cons (logior (lsh 0 16)  15) 'mac-change-input-method)
</span>                  ))))
       (set-terminal-parameter frame 'x-setup-function-keys t)))
   
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Nrc lisp/term/ns-win.el lisp/term/ns-win.el
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-*** lisp/term/ns-win.el    2016-06-29 18:49:20.000000000 +0900
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- lisp/term/ns-win.el    2016-09-20 02:27:22.000000000 +0900
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff -crN emacs-25.2_orig/lisp/term/ns-win.el emacs-25.2/lisp/term/ns-win.el
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+*** emacs-25.2_orig/lisp/term/ns-win.el    2017-02-03 19:25:44.000000000 +0900
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- emacs-25.2/lisp/term/ns-win.el 2017-04-26 14:45:40.000000000 +0900
</span> ***************
<span style='display:block; white-space:pre;background:#ffe0e0;'>-*** 169,174 ****
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- 169,175 ----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+*** 169,175 ****
</span>   (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)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ (define-key global-map [mac-change-input-method] 'mac-change-input-method)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+! 
</span>   
<span style='display:block; white-space:pre;background:#e0ffe0;'>+  ;; Set up a number of aliases and other layers to pretend we're using
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  ;; the Choi/Mitsuharu Carbon port.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- 169,175 ----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  (define-key global-map [ns-new-frame] 'make-frame)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  (define-key global-map [ns-toggle-toolbar] 'ns-toggle-toolbar)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  (define-key global-map [ns-show-prefs] 'customize)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+! (define-key global-map [mac-change-input-method] 'mac-change-input-method)
</span>   
   ;; Set up a number of aliases and other layers to pretend we're using
<span style='display:block; white-space:pre;background:#e0ffe0;'>+  ;; the Choi/Mitsuharu Carbon port.
</span> ***************
 *** 254,267 ****
   ;; editing window.)
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -77,7 +84,7 @@ diff -Nrc lisp/term/ns-win.el lisp/term/ns-win.el
</span>   (defvar ns-working-text)                ; nsterm.m
   
   ;; Test if in echo area, based on mac-win.el 2007/08/26 unicode-2.
<span style='display:block; white-space:pre;background:#ffe0e0;'>---- 255,284 ----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- 254,283 ----
</span>   ;; editing window.)
   
   (defface ns-working-text-face
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -127,36 +134,52 @@ diff -Nrc lisp/term/ns-win.el lisp/term/ns-win.el
</span>   
   ;; 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
<span style='display:block; white-space:pre;background:#ffe0e0;'>---- 286,304 ----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- 285,304 ----
</span>   (defun ns-in-echo-area ()
     "Whether, for purposes of inserting working composition text, the minibuffer
   is currently being used."
<span style='display:block; white-space:pre;background:#ffe0e0;'>-!   (setq mac-in-echo-area 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!  (or isearch-mode
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!      (and cursor-in-echo-area (current-message))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!      ;; Overlay strings are not shown in some cases.
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!      (get-char-property (point) 'invisible)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!      (and (not (bobp))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!           (or (and (get-char-property (point) 'display)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!                    (eq (get-char-property (1- (point)) 'display)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!                        (get-char-property (point) 'display)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!               (and (get-char-property (point) 'composition)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!                    (eq (get-char-property (1- (point)) 'composition)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!                        (get-char-property (point) 'composition)))))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!   (setq mac-in-echo-area
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!         (or isearch-mode
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!             (and cursor-in-echo-area (current-message))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!             ;; Overlay strings are not shown in some cases.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!             (get-char-property (point) 'invisible)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!             (and (not (bobp))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!                  (or (and (get-char-property (point) 'display)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!                           (eq (get-char-property (1- (point)) 'display)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!                               (get-char-property (point) 'display)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!                      (and (get-char-property (point) 'composition)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!                           (eq (get-char-property (1- (point)) 'composition)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!                               (get-char-property (point) 'composition)))))))
</span> !   mac-in-echo-area)
<span style='display:block; white-space:pre;background:#e0ffe0;'>+! 
</span>   
   ;; 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
 ***************
<span style='display:block; white-space:pre;background:#ffe0e0;'>-*** 288,293 ****
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- 307,313 ----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+*** 288,296 ****
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  (defun ns-put-working-text ()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    (interactive)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    (if (ns-in-echo-area) (ns-echo-working-text) (ns-insert-working-text)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  (defun ns-unput-working-text ()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    (interactive)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!   (ns-delete-working-text))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  (defun ns-insert-working-text ()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    "Insert contents of `ns-working-text' as UTF-8 string and mark with
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- 307,319 ----
</span>   (defun ns-put-working-text ()
     (interactive)
     (if (ns-in-echo-area) (ns-echo-working-text) (ns-insert-working-text)))
 + 
<span style='display:block; white-space:pre;background:#e0ffe0;'>++ (defvar mac-ime-cursor-type nil)
</span>   (defun ns-unput-working-text ()
     (interactive)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    (ns-delete-working-text))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!   (ns-delete-working-text)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!   (when mac-ime-cursor-type
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!     (setq cursor-type mac-ime-cursor-type)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  (defun ns-insert-working-text ()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    "Insert contents of `ns-working-text' as UTF-8 string and mark with
</span> ***************
 *** 309,327 ****
   (defun ns-echo-working-text ()
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -178,7 +201,7 @@ diff -Nrc lisp/term/ns-win.el lisp/term/ns-win.el
</span>     (cond
      ((and (overlayp ns-working-overlay)
            ;; Still alive?
<span style='display:block; white-space:pre;background:#ffe0e0;'>---- 329,409 ----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- 332,413 ----
</span>   (defun ns-echo-working-text ()
     "Echo contents of `ns-working-text' in message display area.
   See `ns-insert-working-text'."
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -186,51 +209,52 @@ diff -Nrc lisp/term/ns-win.el lisp/term/ns-win.el
</span> !          (msglen (length msg))
 !          message-log-max)
 !     (if (integerp ns-working-overlay)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-!       (progn
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!    (setq msg (substring msg 0 (- (length msg) ns-working-overlay)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!    (setq msglen (length msg))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!         (progn
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!           (setq msg (substring msg 0 (- (length msg) ns-working-overlay)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!           (setq msglen (length msg))))
</span>       (setq ns-working-overlay (length ns-working-text))
       (setq msg (concat msg ns-working-text))
       (put-text-property msglen (+ msglen ns-working-overlay)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-!                       'face 'ns-working-text-face msg)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!      (message "%s" msg)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!                        'face 'ns-working-text-face msg)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!     (message "%s" msg)))
</span> ! 
 ! (defun ns-put-marked-text (event)
 !   (interactive "e")
<span style='display:block; white-space:pre;background:#ffe0e0;'>-! 
</span> !   (let ((pos (nth 1 event))
<span style='display:block; white-space:pre;background:#ffe0e0;'>-!       (len (nth 2 event)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!         (len (nth 2 event)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!     (when (and mac-ime-cursor-type (> len 0))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!       (setq cursor-type nil))
</span> !     (if (ns-in-echo-area)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-!       (ns-echo-marked-text pos len)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!         (ns-echo-marked-text pos len)
</span> !       (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
<span style='display:block; white-space:pre;background:#ffe0e0;'>-! `ns-working-overlay' and `ns-marked-overlay'.  Any previously existing
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-! working text is cleared first. The overlay is assigned the faces 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-! `ns-working-text-face' and `ns-marked-text-face'."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!  `ns-working-overlay' and `ns-marked-overlay'.  Any previously existing
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!  working text is cleared first. The overlay is assigned the faces
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!  `ns-working-text-face' and `ns-marked-text-face'."
</span> !   (ns-delete-working-text)
 !   (let ((start (point)))
 !     (if (<= pos (length ns-working-text))
<span style='display:block; white-space:pre;background:#ffe0e0;'>-!       (progn
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!  (put-text-property pos len 'face 'ns-working-text-face ns-working-text)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!  (insert ns-working-text)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!  (if (= len 0)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!      (overlay-put (setq ns-working-overlay
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!                         (make-overlay start (point) (current-buffer) nil t))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!                   'face 'ns-working-text-face)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!    (overlay-put (setq ns-working-overlay
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!                       (make-overlay start (point) (current-buffer) nil t))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!                 'face 'ns-unmarked-text-face)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!    (overlay-put (setq ns-marked-overlay 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!                       (make-overlay (+ start pos) (+ start pos len)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!                                     (current-buffer) nil t))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!                 'face 'ns-marked-text-face))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!  (goto-char (+ start pos))))))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!     
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!         (progn
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!           (put-text-property pos len 'face 'ns-working-text-face ns-working-text)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!           (insert ns-working-text)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!           (if (= len 0)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!               (overlay-put (setq ns-working-overlay
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!                                  (make-overlay start (point) (current-buffer) nil t))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!                            'face 'ns-working-text-face)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!             (overlay-put (setq ns-working-overlay
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!                                (make-overlay start (point) (current-buffer) nil t))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!                          'face 'ns-unmarked-text-face)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!             (overlay-put (setq ns-marked-overlay
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!                                (make-overlay (+ start pos) (+ start pos len)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!                                              (current-buffer) nil t))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!                          'face 'ns-marked-text-face))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!           (goto-char (+ start pos))))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+! 
</span> ! (defun ns-echo-marked-text (pos len)
 !   "Echo contents of `ns-working-text' in message display area.
<span style='display:block; white-space:pre;background:#ffe0e0;'>-! See `ns-insert-working-text'."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!  See `ns-insert-working-text'."
</span> !   (let* ((msg (current-message))
 !          (msglen (length msg))
 !          message-log-max)
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -252,8 +276,8 @@ diff -Nrc lisp/term/ns-win.el lisp/term/ns-win.el
</span> !   "Delete working text and clear `ns-working-overlay' and `ns-marked-overlay'."
     (interactive)
 +   (when (and (overlayp ns-marked-overlay)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+            ;; Still alive
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+       (overlay-buffer ns-marked-overlay))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++              ;; Still alive
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++              (overlay-buffer ns-marked-overlay))
</span> +     (with-current-buffer (overlay-buffer ns-marked-overlay)
 +       (delete-overlay ns-marked-overlay)))
 +   (setq ns-marked-overlay nil)
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -262,11 +286,11 @@ diff -Nrc lisp/term/ns-win.el lisp/term/ns-win.el
</span>            ;; Still alive?
 ***************
 *** 935,940 ****
<span style='display:block; white-space:pre;background:#ffe0e0;'>---- 1017,1562 ----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- 1021,1485 ----
</span>                                            &context (window-system ns))
     (ns-get-selection selection-symbol target-type))
   
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
</span> + ;;
 + ;; Implementation of Input Method Extension for MacOS X
 + ;; written by Taiichi Hashimoto <taiichi2@mac.com>
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -526,86 +550,6 @@ diff -Nrc lisp/term/ns-win.el lisp/term/ns-win.el
</span> +      (title . "半英")
 +      (cursor-color)
 +      (cursor-type))
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+     ("com.justsystems.inputmethod.atok26.Roman"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (title . "A")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-color)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-type))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     ("com.justsystems.inputmethod.atok26.Japanese"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (title . "あ")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-color)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-type))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     ("com.justsystems.inputmethod.atok26.Japanese.Katakana"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (title . "ア")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-color)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-type))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     ("com.justsystems.inputmethod.atok26.Japanese.FullWidthRoman"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (title . "英")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-color)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-type))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     ("com.justsystems.inputmethod.atok26.Japanese.HalfWidthEiji"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (title . "半英")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-color)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-type))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     ("com.justsystems.inputmethod.atok27.Roman"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (title . "A")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-color)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-type))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     ("com.justsystems.inputmethod.atok27.Japanese"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (title . "あ")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-color)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-type))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     ("com.justsystems.inputmethod.atok27.Japanese.Katakana"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (title . "ア")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-color)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-type))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     ("com.justsystems.inputmethod.atok27.Japanese.FullWidthRoman"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (title . "英")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-color)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-type))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     ("com.justsystems.inputmethod.atok27.Japanese.HalfWidthEiji"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (title . "半英")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-color)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-type))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     ("com.justsystems.inputmethod.atok28.Roman"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (title . "A")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-color)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-type))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     ("com.justsystems.inputmethod.atok28.Japanese"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (title . "あ")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-color)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-type))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     ("com.justsystems.inputmethod.atok28.Japanese.Katakana"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (title . "ア")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-color)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-type))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     ("com.justsystems.inputmethod.atok28.Japanese.FullWidthRoman"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (title . "英")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-color)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-type))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     ("com.justsystems.inputmethod.atok28.Japanese.HalfWidthEiji"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (title . "半英")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-color)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-type))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     ("com.justsystems.inputmethod.atok29.Roman"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (title . "A")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-color)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-type))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     ("com.justsystems.inputmethod.atok29.Japanese"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (title . "あ")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-color)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-type))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     ("com.justsystems.inputmethod.atok29.Japanese.Katakana"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (title . "ア")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-color)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-type))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     ("com.justsystems.inputmethod.atok29.Japanese.FullWidthRoman"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (title . "英")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-color)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-type))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     ("com.justsystems.inputmethod.atok29.Japanese.HalfWidthEiji"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (title . "半英")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-color)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (cursor-type))
</span> +     )
 +   "Alist of Mac script code vs parameters for input method on MacOSX.")
 + 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -617,26 +561,26 @@ diff -Nrc lisp/term/ns-win.el lisp/term/ns-win.el
</span> + 
 + (defun mac-get-input-method-title (&optional input-source)
 +   "Return input method title of input source.
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+    If input-source is nil, return one of current frame."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     If input-source is nil, return one of current frame."
</span> +   (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.
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+    If input-source is nil, return one of current frame."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     If input-source is nil, return one of current frame."
</span> +   (if input-source
 +       (or (cdr (mac-get-input-method-parameter input-source 'cursor-type))
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+         (cdr (assq 'cursor-type default-frame-alist))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    cursor-type)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++           (cdr (assq 'cursor-type default-frame-alist))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++           cursor-type)
</span> +     (cdr (assq 'cursor-type (frame-parameters (selected-frame))))))
 + 
 + (defun mac-get-cursor-color (&optional input-source)
 +   "Return cursor color of input source.
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+    If input-source is nil, return one of current frame."
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     If input-source is nil, return one of current frame."
</span> +   (if input-source
 +       (or (cdr (mac-get-input-method-parameter input-source 'cursor-color))
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+         (cdr (assq 'cursor-color default-frame-alist)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++           (cdr (assq 'cursor-color default-frame-alist)))
</span> +     (cdr (assq 'cursor-color (frame-parameters (selected-frame))))))
 + 
 + 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -645,12 +589,12 @@ diff -Nrc lisp/term/ns-win.el lisp/term/ns-win.el
</span> +   (let* ((is-param (assoc is mac-input-method-parameters))
 +          (param (assq key is-param)))
 +     (if is-param
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+       (if param
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (setcdr param value)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    (setcdr is-param (cons (cons key value) (cdr is-param))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         (if param
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++             (setcdr param value)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++           (setcdr is-param (cons (cons key value) (cdr is-param))))
</span> +       (setq mac-input-method-parameters
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+           (cons (list is (cons key value))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+            mac-input-method-parameters)))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++             (cons (list is (cons key value))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   mac-input-method-parameters)))))
</span> + 
 + 
 + (defun mac-input-method-update (is)
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -661,11 +605,11 @@ diff -Nrc lisp/term/ns-win.el lisp/term/ns-win.el
</span> +         (type (mac-get-cursor-type is))
 +         (color (mac-get-cursor-color is)))
 +     (if (and title (not (equal title (mac-get-input-method-title))))
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+       (setq current-input-method-title title))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         (setq current-input-method-title title))
</span> +     (if (and type (not (equal type (mac-get-cursor-type))))
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+       (setq cursor-type type))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         (setq cursor-type type))
</span> +     (if (and color (not (equal color (mac-get-cursor-color))))
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+       (set-cursor-color color))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         (set-cursor-color color))
</span> +     (force-mode-line-update)
 +     (if isearch-mode (isearch-update))))
 + 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -673,14 +617,14 @@ diff -Nrc lisp/term/ns-win.el lisp/term/ns-win.el
</span> + (defun mac-toggle-input-method (&optional arg)
 +   "Function to toggle input method on MacOSX."
 +   (interactive)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+   
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 
</span> +   (if arg
 +       (progn
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+       (make-local-variable 'input-method-function)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  (setq inactivate-current-input-method-function 'mac-toggle-input-method)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  (setq input-method-function nil)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  (setq describe-current-input-method-function nil)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  (mac-toggle-input-source t))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         (make-local-variable 'input-method-function)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         (setq inactivate-current-input-method-function 'mac-toggle-input-method)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         (setq input-method-function nil)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         (setq describe-current-input-method-function nil)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         (mac-toggle-input-source t))
</span> +     (kill-local-variable 'input-method-function)
 +     (setq describe-current-input-method-function nil)
 +     (mac-toggle-input-source nil)))
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -698,19 +642,18 @@ diff -Nrc lisp/term/ns-win.el lisp/term/ns-win.el
</span> + 
 +   (if (equal default-input-method "MacOSX")
 +       (let ((input-source (mac-get-current-input-source))
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+         (ascii-capable (mac-input-source-is-ascii-capable)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  (cond ((and (not current-input-method) (not ascii-capable))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+         (set-input-method "MacOSX"))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        ((and (equal current-input-method "MacOSX") ascii-capable)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+         (toggle-input-method nil)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  (mac-input-method-update input-source))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++             (ascii-capable (mac-input-source-is-ascii-capable)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         (cond ((and (not current-input-method) (not ascii-capable))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                (set-input-method "MacOSX"))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++               ((and (equal current-input-method "MacOSX") ascii-capable)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                (toggle-input-method nil)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         (mac-input-method-update input-source))))
</span> + 
 + ;;
 + ;; Emacs input method for input method on MacOSX.
 + ;;
 + (register-input-method "MacOSX" "MacOSX" 'mac-toggle-input-method
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+                      "Mac" "Input Method on MacOSX System")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                        "Mac" "Input Method on MacOSX System")
</span> + 
 + 
 + ;;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -724,9 +667,9 @@ diff -Nrc lisp/term/ns-win.el lisp/term/ns-win.el
</span> + 
 +   (if mac-input-method-mode
 +       (progn
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+       (setq default-input-method "MacOSX")
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  (add-hook 'minibuffer-setup-hook 'mac-change-language-to-us)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  (mac-translate-from-yen-to-backslash))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         (setq default-input-method "MacOSX")
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         (add-hook 'minibuffer-setup-hook 'mac-change-language-to-us)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         (mac-translate-from-yen-to-backslash))
</span> +     (setq default-input-method nil)))
 + 
 + ;;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -737,38 +680,38 @@ diff -Nrc lisp/term/ns-win.el lisp/term/ns-win.el
</span> + 
 + (defun mac-add-key-passed-to-system (key)
 +   (let ((shift   '(shift shft))
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+       (control '(control ctrl ctl))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  (option  '(option opt alternate alt))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  (command '(command cmd)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         (control '(control ctrl ctl))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         (option  '(option opt alternate alt))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         (command '(command cmd)))
</span> + 
 +     (add-to-list 'mac-keys-passed-to-system
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+                (cond ((symbolp key)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  (cond ((memq key shift)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                         (cons ns-shift-key-mask nil))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                        ((memq key control)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                         (cons ns-control-key-mask nil))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                        ((memq key option)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                         (cons ns-alternate-key-mask nil))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                        ((memq key command)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                         (cons ns-command-key-mask nil))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                        (t (cons nil nil))))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                 ((numberp key) (cons 0 key))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                 ((listp key)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  (let ((l key) (k nil) (m 0))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                    (while l
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                      (cond ((memq (car l) shift)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                             (setq m (logior m ns-shift-key-mask)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                            ((memq (car l) control)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                             (setq m (logior m ns-control-key-mask)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                            ((memq (car l) option)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                             (setq m (logior m ns-alternate-key-mask)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                            ((memq (car l) command)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                 (setq m (logior m ns-command-key-mask)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                            ((numberp (car l))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                             (if (not k) (setq k (car l)))))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                      (setq l (cdr l)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                    (cons m k)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                 (t (cons nil nil))))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                  (cond ((symbolp key)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                         (cond ((memq key shift)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                (cons ns-shift-key-mask nil))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                               ((memq key control)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                (cons ns-control-key-mask nil))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                               ((memq key option)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                (cons ns-alternate-key-mask nil))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                               ((memq key command)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                (cons ns-command-key-mask nil))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                               (t (cons nil nil))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                        ((numberp key) (cons 0 key))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                        ((listp key)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                         (let ((l key) (k nil) (m 0))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                           (while l
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                             (cond ((memq (car l) shift)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                    (setq m (logior m ns-shift-key-mask)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                   ((memq (car l) control)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                    (setq m (logior m ns-control-key-mask)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                   ((memq (car l) option)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                    (setq m (logior m ns-alternate-key-mask)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                   ((memq (car l) command)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                    (setq m (logior m ns-command-key-mask)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                   ((numberp (car l))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                                    (if (not k) (setq k (car l)))))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                             (setq l (cdr l)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                           (cons m k)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                        (t (cons nil nil))))))
</span> + 
 + 
 + ;;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -776,11 +719,11 @@ diff -Nrc lisp/term/ns-win.el lisp/term/ns-win.el
</span> + ;;
 + (define-key special-event-map
 +   [mac-change-input-method] 'mac-handle-input-method-change)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+       
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 
</span> + ;;
 + ;; Convert yen to backslash for JIS keyboard.
 + ;;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ (defun mac-translate-from-yen-to-backslash () 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ (defun mac-translate-from-yen-to-backslash ()
</span> +   ;; Convert yen to backslash for JIS keyboard.
 +   (interactive)
 + 
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -802,40 +745,59 @@ diff -Nrc lisp/term/ns-win.el lisp/term/ns-win.el
</span> +   (define-key function-key-map [134219941] [?\M-\\])
 +   (define-key function-key-map [75497596] [?\C-\M-\\])
 +   (define-key function-key-map [201328805] [?\C-\M-\\])
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   )
</span> + 
 + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 + 
   (provide 'ns-win)
   
   ;;; ns-win.el ends here
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Nrc src/Makefile.in src/Makefile.in
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-*** src/Makefile.in        2016-06-29 18:49:20.000000000 +0900
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/Makefile.in        2016-09-20 02:27:22.000000000 +0900
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff -crN emacs-25.2_orig/src/Makefile.in emacs-25.2/src/Makefile.in
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+*** emacs-25.2_orig/src/Makefile.in        2017-02-03 19:25:44.000000000 +0900
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- emacs-25.2/src/Makefile.in     2017-04-26 14:45:40.000000000 +0900
</span> ***************
<span style='display:block; white-space:pre;background:#ffe0e0;'>-*** 409,416 ****
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+*** 409,415 ****
</span>   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 cygw32.o \
 !   nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o macfont.o \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-!   w32.o w32console.o w32fns.o w32heap.o w32inevt.o w32notify.o \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    w32.o w32console.o w32fns.o w32heap.o w32inevt.o w32notify.o \
</span>     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 \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    xsettings.o xgselect.o termcap.o
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- 409,416 ----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- 409,415 ----
</span>   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 cygw32.o \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-!   nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o macfont.o macim.o \
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!   w32.o w32console.o w32fns.o w32heap.o w32inevt.o \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!   nsterm.o nsfns.o nsmenu.o nsselect.o nsimage.o nsfont.o macfont.o macim.o\
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    w32.o w32console.o w32fns.o w32heap.o w32inevt.o w32notify.o \
</span>     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 \
<span style='display:block; white-space:pre;background:#ffe0e0;'>-    xsettings.o xgselect.o termcap.o
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Nrc src/keyboard.c src/keyboard.c
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-*** src/keyboard.c 2016-08-02 17:06:01.000000000 +0900
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/keyboard.c 2016-09-20 02:27:22.000000000 +0900
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff -crN emacs-25.2_orig/src/keyboard.c emacs-25.2/src/keyboard.c
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+*** emacs-25.2_orig/src/keyboard.c 2017-04-20 23:50:42.000000000 +0900
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- emacs-25.2/src/keyboard.c      2017-04-26 14:45:40.000000000 +0900
</span> ***************
<span style='display:block; white-space:pre;background:#ffe0e0;'>-*** 3875,3882 ****
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+*** 2472,2481 ****
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   swallow_events (false);         /* May clear input_pending.  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        /* Redisplay if no pending input.  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!       while (!(input_pending
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!         && (input_was_pending || !redisplay_dont_pause)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    input_was_pending = input_pending;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (help_echo_showing_p && !EQ (selected_window, minibuf_window))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       redisplay_preserve_echo_area (5);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- 2472,2479 ----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   swallow_events (false);         /* May clear input_pending.  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        /* Redisplay if no pending input.  */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!       while (!input_pending)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (help_echo_showing_p && !EQ (selected_window, minibuf_window))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       redisplay_preserve_echo_area (5);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+***************
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+*** 3880,3887 ****
</span>           {
             if (event->ie.code == KEY_NS_PUT_WORKING_TEXT)
               obj = list1 (intern ("ns-put-working-text"));
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -844,110 +806,111 @@ diff -Nrc src/keyboard.c src/keyboard.c
</span>             kbd_fetch_ptr = event + 1;
             if (used_mouse_menu)
               *used_mouse_menu = true;
<span style='display:block; white-space:pre;background:#ffe0e0;'>---- 3875,3884 ----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- 3878,3887 ----
</span>           {
             if (event->ie.code == KEY_NS_PUT_WORKING_TEXT)
               obj = list1 (intern ("ns-put-working-text"));
 !           else if (event->ie.code == KEY_NS_UNPUT_WORKING_TEXT)
               obj = list1 (intern ("ns-unput-working-text"));
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+         else if (event->ie.code == KEY_NS_PUT_MARKED_TEXT)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      obj = Fcons (intern ("ns-put-marked-text"), event->ie.arg);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++           else if (event->ie.code == KEY_NS_PUT_MARKED_TEXT)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++             obj = Fcons (intern ("ns-put-marked-text"), event->ie.arg);
</span>             kbd_fetch_ptr = event + 1;
             if (used_mouse_menu)
               *used_mouse_menu = true;
 ***************
<span style='display:block; white-space:pre;background:#ffe0e0;'>-*** 11743,11748 ****
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- 11745,11752 ----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+*** 11748,11753 ****
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- 11748,11756 ----
</span>                               "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",
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+                           "ns-put-marked-text");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                             "ns-put-marked-text");
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 
</span>     /* 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.
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Nrc src/macim.m src/macim.m
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-*** src/macim.m    1970-01-01 09:00:00.000000000 +0900
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/macim.m    2016-09-20 02:27:22.000000000 +0900
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff -crN emacs-25.2_orig/src/macim.m emacs-25.2/src/macim.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+*** emacs-25.2_orig/src/macim.m    1970-01-01 09:00:00.000000000 +0900
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- emacs-25.2/src/macim.m 2017-04-26 14:50:48.000000000 +0900
</span> ***************
 *** 0 ****
<span style='display:block; white-space:pre;background:#ffe0e0;'>---- 1,173 ----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- 1,193 ----
</span> + /* Implementation of Input Method Extension for MacOS X.
 +    Copyright (C) 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011
 +    Taiichi Hashimoto <taiichi2@mac.com>.
 + */
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     
</span> + #include "config.h"
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     
</span> + #ifdef NS_IMPL_COCOA
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     
</span> + #include <math.h>
 + #include <sys/types.h>
 + #include <time.h>
 + #include <signal.h>
 + #include <unistd.h>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     
</span> + #include <Carbon/Carbon.h>
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     
</span> + #include "lisp.h"
 + #include "blockinput.h"
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     
</span> + #include "termhooks.h"
 + #include "keyboard.h"
 + #include "buffer.h"
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     
</span> + //extern Lisp_Object Qcurrent_input_method;
 + //extern int cursor_in_echo_area;
 + static Lisp_Object Qmac_keys_passed_to_system;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     
</span> + 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 ();
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     
</span> + 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? */)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   (void)
</span> + {
 +   TISInputSourceRef is = TISCopyCurrentKeyboardInputSource();
 +   CFBooleanRef ret = TISGetInputSourceProperty(is, kTISPropertyInputSourceIsASCIICapable);
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+   
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         
</span> +   return CFBooleanGetValue(ret)? Qt : Qnil;
 + }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     
</span> + 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 */)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   (void)
</span> + {
 +   NSArray *is_list = (NSArray *)TISCreateInputSourceList(NULL, false);
 +   int list_size = [is_list count];
 +   Lisp_Object list[list_size];
 +   int i;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         
</span> +   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],
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+                         [id lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                           [id lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
</span> +   }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++             
</span> +   return Flist(list_size, list);
 + }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     
</span> + 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 */)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+      (void)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   (void)
</span> + {
 +   TISInputSourceRef is = TISCopyCurrentKeyboardInputSource();
 +   NSString *id = (NSString *)TISGetInputSourceProperty(is, kTISPropertyInputSourceID);
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         
</span> +   return make_string([id UTF8String],
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+                    [id lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                      [id lengthOfBytesUsingEncoding:NSUTF8StringEncoding]);
</span> + }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     
</span> + DEFUN ("mac-toggle-input-source", Fmac_toggle_input_source, Smac_toggle_input_source,
 +        1, 1, 0,
 +        doc: /* toggle input source on MacOSX */)
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -955,7 +918,7 @@ diff -Nrc src/macim.m src/macim.m
</span> +      Lisp_Object arg;
 + {
 +   TISInputSourceRef is = NULL;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         
</span> +   if (NILP (arg))
 +     {
 +       is = TISCopyCurrentASCIICapableKeyboardInputSource();
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -965,132 +928,150 @@ diff -Nrc src/macim.m src/macim.m
</span> +       NSString *locale;
 +       NSArray *languages = [NSLocale preferredLanguages];
 +       if (languages != nil) {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+         locale = [languages objectAtIndex:0];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         locale = [languages objectAtIndex:0];
</span> +       } else {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+         locale = [[NSLocale currentLocale]
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                  objectForKey:NSLocaleLanguageCode];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         locale = [[NSLocale currentLocale]
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                   objectForKey:NSLocaleLanguageCode];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++       }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++       if ( [locale hasPrefix:@"ja"] ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         is = TISCopyInputSourceForLanguage((CFStringRef)locale);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++       } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         NSString *targetID = [NSString stringWithUTF8String:"com.google.inputmethod.Japanese.base"];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         if ( targetID == nil) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++           return arg;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         NSArray *is_list = (NSArray *)TISCreateInputSourceList(NULL, false);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         int list_size = [is_list count];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         for(int i=0; i< list_size; i++) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++           NSString *id = (NSString *)TISGetInputSourceProperty((TISInputSourceRef)[is_list objectAtIndex:i], kTISPropertyInputSourceID);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ //          NSLog(@"%d: %@", i, [is_list objectAtIndex:i]);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++           if ( [id compare:targetID] == NSOrderedSame ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++             is = (TISInputSourceRef)[is_list objectAtIndex:i];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++             break;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++           }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ //      NSLog(@"%@", locale);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ //      NSLog(@"%@", is);
</span> +       }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+       is = TISCopyInputSourceForLanguage((CFStringRef)locale);
</span> +     }
 +   if (is) TISSelectInputSource(is);
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++                 
</span> +   return arg;
 + }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     
</span> + int
 + mac_store_change_input_method_event ()
 + {
 +   Lisp_Object dim;
 +   int ret = FALSE;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+   
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         
</span> +   dim = Fsymbol_value (intern ("default-input-method"));
 +   if (STRINGP (dim) && strcmp(SDATA (dim), "MacOSX") == 0)
 +     {
 +       ret = TRUE;
 +     }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         
</span> +   return ret;
 + }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     
</span> + int
 + mac_pass_key_to_system (int code, int modifiers)
 + {
 +   Lisp_Object keys = Fsymbol_value (Qmac_keys_passed_to_system);
 +   Lisp_Object m, k; 
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         
</span> +   while (!NILP (keys))
 +     {
 +       m = XCAR (XCAR (keys));
 +       k = XCDR (XCAR (keys));
 +       keys = XCDR (keys);
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++             
</span> +       if (NUMBERP (m) && modifiers == XINT (m))
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+       if (NILP (k)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      || (NUMBERP (k) && code == XINT (k)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    return TRUE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         if (NILP (k)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++             || (NUMBERP (k) && code == XINT (k)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++           return TRUE;
</span> +     }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+   
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         
</span> +   return FALSE;
 + }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     
</span> + int
 + mac_pass_key_directly_to_emacs (void)
 + {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         
</span> +   if (NILP (Fmac_input_source_is_ascii_capable()))
 +     {
 +       if (NILP (Vmac_use_input_method_on_system)
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+         || this_command_key_count 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    || cursor_in_echo_area 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    || !NILP (BVAR (current_buffer, read_only)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  return TRUE;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++           || this_command_key_count 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++           || cursor_in_echo_area 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++           || !NILP (BVAR (current_buffer, read_only)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         return TRUE;
</span> +     }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         
</span> +   return FALSE;
 + }
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     
</span> + void mac_init_input_method (void)
 + {
 +   Qmac_keys_passed_to_system = intern ("mac-keys-passed-to-system");
 +   staticpro (&Qmac_keys_passed_to_system);
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         
</span> +   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;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++         
</span> +   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
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Nrc src/nsfns.m src/nsfns.m
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-*** src/nsfns.m    2016-06-29 18:49:22.000000000 +0900
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/nsfns.m    2016-09-20 02:27:22.000000000 +0900
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff -crN emacs-25.2_orig/src/nsfns.m emacs-25.2/src/nsfns.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+*** emacs-25.2_orig/src/nsfns.m    2017-02-03 19:25:45.000000000 +0900
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- emacs-25.2/src/nsfns.m 2017-04-26 14:45:40.000000000 +0900
</span> ***************
 *** 3136,3141 ****
<span style='display:block; white-space:pre;background:#ffe0e0;'>---- 3136,3159 ----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- 3136,3157 ----
</span>                  doc: /* Toolkit version for NS Windowing.  */);
     Vns_version_string = ns_appkit_version_str ();
   
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span> +   DEFVAR_LISP ("ns-shift-key-mask", Vns_shift_key_mask,
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+                doc: /* Shift key mask defined in system. */);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   doc: /* Shift key mask defined in system. */);
</span> +   Vns_shift_key_mask = make_number (NSShiftKeyMask);
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   
</span> +   DEFVAR_LISP ("ns-control-key-mask", Vns_control_key_mask,
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+                doc: /* Control key mask defined in system. */);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   doc: /* Control key mask defined in system. */);
</span> +   Vns_control_key_mask = make_number (NSControlKeyMask);
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   
</span> +   DEFVAR_LISP ("ns-alternate-key-mask", Vns_alternate_key_mask,
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+                doc: /* Alternate key mask defined in system. */);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   doc: /* Alternate key mask defined in system. */);
</span> +   Vns_alternate_key_mask = make_number (NSAlternateKeyMask);
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   
</span> +   DEFVAR_LISP ("ns-command-key-mask", Vns_command_key_mask,
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+                doc: /* Command key mask defined in system. */);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   doc: /* Command key mask defined in system. */);
</span> +   Vns_command_key_mask = make_number (NSCommandKeyMask);
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   
</span>     defsubr (&Sns_read_file_name);
     defsubr (&Sns_get_resource);
     defsubr (&Sns_set_resource);
 ***************
 *** 3180,3185 ****
<span style='display:block; white-space:pre;background:#ffe0e0;'>---- 3198,3207 ----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- 3196,3205 ----
</span>     defsubr (&Sx_show_tip);
     defsubr (&Sx_hide_tip);
   
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+ #ifdef NS_IMPL_COCOA
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+   mac_init_input_method ();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   #ifdef NS_IMPL_COCOA
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++     mac_init_input_method ();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   
</span>     as_status = 0;
     as_script = Qnil;
     as_result = 0;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Nrc src/nsterm.h src/nsterm.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-*** src/nsterm.h   2016-08-22 18:17:47.000000000 +0900
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/nsterm.h   2016-09-20 02:27:22.000000000 +0900
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff -crN emacs-25.2_orig/src/nsterm.h emacs-25.2/src/nsterm.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+*** emacs-25.2_orig/src/nsterm.h   2017-02-03 19:25:45.000000000 +0900
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- emacs-25.2/src/nsterm.h        2017-04-26 14:45:40.000000000 +0900
</span> ***************
 *** 757,762 ****
 --- 757,764 ----
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1102,21 +1083,29 @@ diff -Nrc src/nsterm.h src/nsterm.h
</span>   
   /* could use list to store these, but rest of emacs has a big infrastructure
      for managing a table of bitmap "records" */
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Nrc src/nsterm.m src/nsterm.m
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-*** src/nsterm.m   2016-08-22 18:17:47.000000000 +0900
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/nsterm.m   2016-09-20 02:27:22.000000000 +0900
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff -crN emacs-25.2_orig/src/nsterm.m emacs-25.2/src/nsterm.m
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+*** emacs-25.2_orig/src/nsterm.m   2017-02-03 19:25:45.000000000 +0900
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- emacs-25.2/src/nsterm.m        2017-04-26 14:45:40.000000000 +0900
</span> ***************
<span style='display:block; white-space:pre;background:#ffe0e0;'>-*** 4859,4864 ****
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- 4859,4867 ----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+*** 4859,4865 ****
</span>     /*   [[NSNotificationCenter defaultCenter] addObserver: NSApp
                                            selector: @selector (logNotification:)
                                                name: nil object: nil]; */
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+   [[NSDistributedNotificationCenter defaultCenter] addObserver: NSApp
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                  selector: @selector (changeInputMethod:)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+                                             name: @"AppleSelectedInputSourcesChangedNotification" object: nil];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+! 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    dpyinfo = xzalloc (sizeof *dpyinfo);
</span>   
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    ns_initialize_display_info (dpyinfo);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- 4859,4868 ----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    /*   [[NSNotificationCenter defaultCenter] addObserver: NSApp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                           selector: @selector (logNotification:)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                                               name: nil object: nil]; */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!   [[NSDistributedNotificationCenter defaultCenter] addObserver: NSApp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!      selector: @selector (changeInputMethod:)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!          name: @"AppleSelectedInputSourcesChangedNotification" object: nil];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!   
</span>     dpyinfo = xzalloc (sizeof *dpyinfo);
   
<span style='display:block; white-space:pre;background:#e0ffe0;'>+    ns_initialize_display_info (dpyinfo);
</span> ***************
 *** 5162,5167 ****
 --- 5165,5185 ----
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1155,7 +1144,7 @@ diff -Nrc src/nsterm.m src/nsterm.m
</span>   
         /* if it was a function key or had modifiers, pass it directly to emacs */
 !       if (mac_pass_key_directly_to_emacs ()
<span style='display:block; white-space:pre;background:#ffe0e0;'>-!         ||fnKeysym || (emacs_event->modifiers
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!           || fnKeysym || (emacs_event->modifiers
</span>                          && (emacs_event->modifiers != shift_modifier)
                          && [[theEvent charactersIgnoringModifiers] length] > 0))
   /*[[theEvent characters] length] */
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1174,19 +1163,19 @@ diff -Nrc src/nsterm.m src/nsterm.m
</span>                 ? MULTIBYTE_CHAR_KEYSTROKE_EVENT : ASCII_KEYSTROKE_EVENT;
   
             emacs_event->code = code;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-!         /* The function mac_pass_key_to_system decides 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!       whether it is passed directly to emacs or not. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!    if (emacs_event->kind == NON_ASCII_KEYSTROKE_EVENT
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!        || !mac_pass_key_to_system (code, flags
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!                                    & (NSShiftKeyMask
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!                                       | NSControlKeyMask
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!                                       | NSAlternateKeyMask
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!                                       | NSCommandKeyMask)))
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!      {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!        EV_TRAILER (theEvent);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!        processingCompose = NO;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!        return;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!      }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!           /* The function mac_pass_key_to_system decides 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!              whether it is passed directly to emacs or not. */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!           if (emacs_event->kind == NON_ASCII_KEYSTROKE_EVENT
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!               || !mac_pass_key_to_system (code, flags
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!                                           & (NSShiftKeyMask
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!                                              | NSControlKeyMask
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!                                              | NSAlternateKeyMask
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!                                              | NSCommandKeyMask)))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!             {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!               EV_TRAILER (theEvent);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!               processingCompose = NO;              
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!               return;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!             }
</span>           }
       }
   
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1202,7 +1191,7 @@ diff -Nrc src/nsterm.m src/nsterm.m
</span>   
     if (!emacs_event)
       return;
<span style='display:block; white-space:pre;background:#ffe0e0;'>---- 6127,6145 ----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- 6127,6146 ----
</span>              (unsigned long)selRange.length,
              (unsigned long)selRange.location);
   
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1214,11 +1203,12 @@ diff -Nrc src/nsterm.m src/nsterm.m
</span> !   else
 !     {
 !       if (workingText != nil) {
<span style='display:block; white-space:pre;background:#ffe0e0;'>-!       [workingText release];
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!  workingText = nil;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-!  processingCompose = NO;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!         [workingText release];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!         workingText = nil;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!         processingCompose = NO;
</span> !       }
 !     }
<span style='display:block; white-space:pre;background:#e0ffe0;'>+! 
</span>   
     if (!emacs_event)
       return;
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1231,13 +1221,13 @@ diff -Nrc src/nsterm.m src/nsterm.m
</span>     EV_TRAILER ((id)nil);
   }
   
<span style='display:block; white-space:pre;background:#ffe0e0;'>---- 6149,6157 ----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- 6150,6158 ----
</span>     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),
<span style='display:block; white-space:pre;background:#ffe0e0;'>-!                           Fcons (make_number (selRange.length), Qnil));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+!                             Fcons (make_number (selRange.length), Qnil));
</span>     EV_TRAILER ((id)nil);
   }
   
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1261,36 +1251,36 @@ diff -Nrc src/nsterm.m src/nsterm.m
</span>   
     pt = [self convertPoint: pt toView: nil];
     pt = [[self window] convertBaseToScreen: pt];
<span style='display:block; white-space:pre;background:#ffe0e0;'>---- 6214,6239 ----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- 6215,6240 ----
</span>   {
     NSRect rect;
     NSPoint pt;
<span style='display:block; white-space:pre;background:#ffe0e0;'>-!   //  struct window *win = XWINDOW (FRAME_SELECTED_WINDOW (emacsframe));
</span> !   struct window *win;
   
     NSTRACE ("[EmacsView firstRectForCharacterRange:]");
   
     if (NS_KEYLOG)
       NSLog (@"firstRectForCharRange request");
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+     
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  
</span> +   if (NILP (Vmac_in_echo_area))
 +     win = XWINDOW (FRAME_SELECTED_WINDOW (emacsframe));
<span style='display:block; white-space:pre;background:#ffe0e0;'>-+     else if (WINDOWP (echo_area_window))
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++   else if (WINDOWP (echo_area_window))
</span> +     win = XWINDOW (echo_area_window);
 +   else
 +     win = XWINDOW (FRAME_SELECTED_WINDOW (emacsframe));
<span style='display:block; white-space:pre;background:#ffe0e0;'>-  
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++ 
</span>     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);
<span style='display:block; white-space:pre;background:#e0ffe0;'>+! 
</span>   
     pt = [self convertPoint: pt toView: nil];
     pt = [[self window] convertBaseToScreen: pt];
 ***************
 *** 8782,8787 ****
<span style='display:block; white-space:pre;background:#ffe0e0;'>---- 8830,8839 ----
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- 8831,8840 ----
</span>   baseline level.  The default value is nil.  */);
     x_underline_at_descent_line = 0;
   
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1301,9 +1291,9 @@ diff -Nrc src/nsterm.m src/nsterm.m
</span>     /* Tell Emacs about this window system.  */
     Fprovide (Qns, Qnil);
   
<span style='display:block; white-space:pre;background:#ffe0e0;'>-diff -Nrc src/termhooks.h src/termhooks.h
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-*** src/termhooks.h        2016-06-29 18:49:23.000000000 +0900
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/termhooks.h        2016-09-20 02:27:22.000000000 +0900
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+diff -crN emacs-25.2_orig/src/termhooks.h emacs-25.2/src/termhooks.h
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+*** emacs-25.2_orig/src/termhooks.h        2017-02-03 19:25:45.000000000 +0900
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- emacs-25.2/src/termhooks.h     2017-04-26 14:45:40.000000000 +0900
</span> ***************
 *** 59,64 ****
 --- 59,65 ----
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1313,4 +1303,4 @@ diff -Nrc src/termhooks.h src/termhooks.h
</span> +   output_mac,
     output_ns
   };
<span style='display:block; white-space:pre;background:#ffe0e0;'>-  
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/editors/emacs/files/patch-src-macim.m.diff b/editors/emacs/files/patch-src-macim.m.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 3d5ded9..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/editors/emacs/files/patch-src-macim.m.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,12 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/macim.m.orig       2014-12-20 22:05:03.000000000 -0600
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/macim.m    2014-12-20 22:31:01.000000000 -0600
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -13,7 +13,9 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <signal.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <unistd.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#define Cursor Carbon_Cursor /* avoid conflicting type error on OS X <= 10.6 */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <Carbon/Carbon.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#undef Cursor
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "lisp.h"
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include "blockinput.h"
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/editors/emacs/files/patch-src_emacs.c.diff b/editors/emacs/files/patch-src_emacs.c.diff
</span>deleted file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index cef35c2..0000000
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/editors/emacs/files/patch-src_emacs.c.diff
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,35 +0,0 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>---- src/emacs.c.orig       2016-11-11 17:20:48.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+++ src/emacs.c    2016-11-12 19:13:05.000000000 -0800
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -25,6 +25,7 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <fcntl.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <stdio.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <stdlib.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+#include <string.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <sys/types.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #include <sys/file.h>
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-@@ -743,6 +744,24 @@
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #ifdef DARWIN_OS
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   if (!initialized)
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-     unexec_init_emacs_zone ();
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  /* Imaxima won't work properly if PATH does not contain the
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     MacPorts directory. The following code is a workaround to
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+     avoid this problem. */
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    char *oldpath = getenv("PATH");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (!oldpath) {oldpath = "";}
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    size_t oldpathsize = strlen(oldpath) + 1;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    if (!strstr(oldpath, "__PREFIX__/bin")) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      char *newpath;
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      size_t newpathsize = oldpathsize + strlen("__PREFIX__/bin:");
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      if ((newpath = (char *)malloc(newpathsize)) != NULL) {
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        strlcpy(newpath, "__PREFIX__/bin:", newpathsize);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        strlcat(newpath, oldpath, newpathsize);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+        setenv("PATH", newpath, 1);
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+      }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+    }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-+  }
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- #endif
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>- 
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-   init_standard_fds ();
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/editors/emacs/files/site-start.el b/editors/emacs/files/site-start.el
</span><span style='display:block; white-space:pre;color:#808080;'>index 6138a9d..7fc5f3d 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/editors/emacs/files/site-start.el
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/editors/emacs/files/site-start.el
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -10,3 +10,9 @@
</span> 
 ;; Info-directory-list contains ${prefix}/share/info. See #32148.
 (setq Info-default-directory-list (cons "__PREFIX__/share/info" Info-default-directory-list))
<span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+;; Use the OS X Emoji font for Emoticons
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+(when (fboundp 'set-fontset-font)
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+  (set-fontset-font "fontset-default"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    'symbol
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    (font-spec :name "Apple Color Emoji") nil 'prepend))
</span></pre><pre style='margin:0'>

</pre>