diff options
| author | Anders Lindgren | 2015-12-23 07:15:45 +0100 |
|---|---|---|
| committer | Anders Lindgren | 2015-12-23 07:15:45 +0100 |
| commit | 09053075225fec8a6cf7a72017a6dfc1ec6b6f0c (patch) | |
| tree | fd9ce26de7a7c7cd94502ca02a4155f821694aaa /lisp/term | |
| parent | 781770b4dcfe44b255e94e16479fd14633803640 (diff) | |
| download | emacs-09053075225fec8a6cf7a72017a6dfc1ec6b6f0c.tar.gz emacs-09053075225fec8a6cf7a72017a6dfc1ec6b6f0c.zip | |
File-name completion of non-ASCII characters on OS X (bug#22169)
The coding system `utf-8-nfd', locally defined in ns-win.el,
didn't provide a :pre-write-conversion method, causing file name
completion of non-ASCII characters to fail. Solved by using the
`utf-8-hfs' coding system provided by `ucs-normalize'.
* lisp/loadup.el: Load international/ucs-normalize (when building
for ns).
* lisp/term/ns-win.el (utf-8-nfd): Made `utf-8-nfd' as alias for
`utf-8-hfs' and removed the old implementation. Set `utf-8-hfs'
as the file name coding system.
* src/nsfns.c (ns-convert-utf8-nfd-to-nfc): Removed.
Diffstat (limited to 'lisp/term')
| -rw-r--r-- | lisp/term/ns-win.el | 28 |
1 files changed, 6 insertions, 22 deletions
diff --git a/lisp/term/ns-win.el b/lisp/term/ns-win.el index 0b3e3bd9d9c..9bd59fc1954 100644 --- a/lisp/term/ns-win.el +++ b/lisp/term/ns-win.el | |||
| @@ -51,6 +51,7 @@ | |||
| 51 | (require 'menu-bar) | 51 | (require 'menu-bar) |
| 52 | (require 'fontset) | 52 | (require 'fontset) |
| 53 | (require 'dnd) | 53 | (require 'dnd) |
| 54 | (require 'ucs-normalize) | ||
| 54 | 55 | ||
| 55 | (defgroup ns nil | 56 | (defgroup ns nil |
| 56 | "GNUstep/Mac OS X specific features." | 57 | "GNUstep/Mac OS X specific features." |
| @@ -337,29 +338,12 @@ See `ns-insert-working-text'." | |||
| 337 | (setq ns-working-overlay nil)) | 338 | (setq ns-working-overlay nil)) |
| 338 | 339 | ||
| 339 | 340 | ||
| 340 | (declare-function ns-convert-utf8-nfd-to-nfc "nsfns.m" (str)) | 341 | ;; OS X file system Unicode UTF-8 NFD (decomposed form) support. |
| 341 | |||
| 342 | ;;;; OS X file system Unicode UTF-8 NFD (decomposed form) support | ||
| 343 | ;; Lisp code based on utf-8m.el, by Seiji Zenitani, Eiji Honjoh, and | ||
| 344 | ;; Carsten Bormann. | ||
| 345 | (when (eq system-type 'darwin) | 342 | (when (eq system-type 'darwin) |
| 346 | (defun ns-utf8-nfd-post-read-conversion (length) | 343 | ;; Used prior to Emacs 25. |
| 347 | "Calls `ns-convert-utf8-nfd-to-nfc' to compose char sequences." | 344 | (define-coding-system-alias 'utf-8-nfd 'utf-8-hfs) |
| 348 | (save-excursion | 345 | |
| 349 | (save-restriction | 346 | (set-file-name-coding-system 'utf-8-hfs)) |
| 350 | (narrow-to-region (point) (+ (point) length)) | ||
| 351 | (let ((str (buffer-string))) | ||
| 352 | (delete-region (point-min) (point-max)) | ||
| 353 | (insert (ns-convert-utf8-nfd-to-nfc str)) | ||
| 354 | (- (point-max) (point-min)))))) | ||
| 355 | |||
| 356 | (define-coding-system 'utf-8-nfd | ||
| 357 | "UTF-8 NFD (decomposed) encoding." | ||
| 358 | :coding-type 'utf-8 | ||
| 359 | :mnemonic ?U | ||
| 360 | :charset-list '(unicode) | ||
| 361 | :post-read-conversion 'ns-utf8-nfd-post-read-conversion) | ||
| 362 | (set-file-name-coding-system 'utf-8-nfd)) | ||
| 363 | 347 | ||
| 364 | ;;;; Inter-app communications support. | 348 | ;;;; Inter-app communications support. |
| 365 | 349 | ||