diff --git a/lisp/loadup.el b/lisp/loadup.el index f0caa8b..dda433e 100644 --- a/lisp/loadup.el +++ b/lisp/loadup.el @@ -276,6 +276,7 @@ (if (featurep 'ns) (progn (load "term/common-win") + (load "international/ucs-normalize") (load "term/ns-win"))) (if (fboundp 'x-create-frame) ;; Do it after loading term/foo-win.el since the value of the diff --git a/lisp/term/ns-win.el b/lisp/term/ns-win.el index 0b3e3bd..9bd59fc 100644 --- a/lisp/term/ns-win.el +++ b/lisp/term/ns-win.el @@ -51,6 +51,7 @@ (require 'menu-bar) (require 'fontset) (require 'dnd) +(require 'ucs-normalize) (defgroup ns nil "GNUstep/Mac OS X specific features." @@ -337,29 +338,12 @@ ns-delete-working-text (setq ns-working-overlay nil)) -(declare-function ns-convert-utf8-nfd-to-nfc "nsfns.m" (str)) - -;;;; OS X file system Unicode UTF-8 NFD (decomposed form) support -;; Lisp code based on utf-8m.el, by Seiji Zenitani, Eiji Honjoh, and -;; Carsten Bormann. +;; OS X file system Unicode UTF-8 NFD (decomposed form) support. (when (eq system-type 'darwin) - (defun ns-utf8-nfd-post-read-conversion (length) - "Calls `ns-convert-utf8-nfd-to-nfc' to compose char sequences." - (save-excursion - (save-restriction - (narrow-to-region (point) (+ (point) length)) - (let ((str (buffer-string))) - (delete-region (point-min) (point-max)) - (insert (ns-convert-utf8-nfd-to-nfc str)) - (- (point-max) (point-min)))))) - - (define-coding-system 'utf-8-nfd - "UTF-8 NFD (decomposed) encoding." - :coding-type 'utf-8 - :mnemonic ?U - :charset-list '(unicode) - :post-read-conversion 'ns-utf8-nfd-post-read-conversion) - (set-file-name-coding-system 'utf-8-nfd)) + ;; Used prior to Emacs 25. + (define-coding-system-alias 'utf-8-nfd 'utf-8-hfs) + + (set-file-name-coding-system 'utf-8-hfs)) ;;;; Inter-app communications support. diff --git a/src/nsfns.m b/src/nsfns.m index edc02e8..5fa68c0 100644 --- a/src/nsfns.m +++ b/src/nsfns.m @@ -2099,39 +2099,6 @@ there was no result. */) } -DEFUN ("ns-convert-utf8-nfd-to-nfc", Fns_convert_utf8_nfd_to_nfc, - Sns_convert_utf8_nfd_to_nfc, 1, 1, 0, - doc: /* Return an NFC string that matches the UTF-8 NFD string STR. */) - (Lisp_Object str) -{ -/* TODO: If GNUstep ever implements precomposedStringWithCanonicalMapping, - remove this. */ - NSString *utfStr; - Lisp_Object ret = Qnil; - NSAutoreleasePool *pool; - - CHECK_STRING (str); - pool = [[NSAutoreleasePool alloc] init]; - utfStr = [NSString stringWithUTF8String: SSDATA (str)]; -#ifdef NS_IMPL_COCOA - if (utfStr) - utfStr = [utfStr precomposedStringWithCanonicalMapping]; -#endif - if (utfStr) - { - const char *cstr = [utfStr UTF8String]; - if (cstr) - ret = build_string (cstr); - } - - [pool release]; - if (NILP (ret)) - error ("Invalid UTF-8"); - - return ret; -} - - #ifdef NS_IMPL_COCOA /* Compile and execute the AppleScript SCRIPT and return the error @@ -3207,7 +3174,6 @@ be used as the image of the icon representing the frame. */); defsubr (&Sns_emacs_info_panel); defsubr (&Sns_list_services); defsubr (&Sns_perform_service); - defsubr (&Sns_convert_utf8_nfd_to_nfc); defsubr (&Sns_popup_font_panel); defsubr (&Sns_popup_color_panel);