Mercurial > hg > xemacs-beta
diff lisp/language/european.el @ 197:acd284d43ca1 r20-3b25
Import from CVS: tag r20-3b25
author | cvs |
---|---|
date | Mon, 13 Aug 2007 10:00:02 +0200 |
parents | 929b76928fce |
children | e45d5e7c476e |
line wrap: on
line diff
--- a/lisp/language/european.el Mon Aug 13 09:59:07 2007 +0200 +++ b/lisp/language/european.el Mon Aug 13 10:00:02 2007 +0200 @@ -1,7 +1,7 @@ ;;; european.el --- Support for European languages -;; Copyright (C) 1995 Free Software Foundation, Inc. ;; Copyright (C) 1995 Electrotechnical Laboratory, JAPAN. +;; Licensed to the Free Software Foundation. ;; Copyright (C) 1997 MORIOKA Tomohiko ;; Keywords: multilingual, European @@ -30,56 +30,118 @@ ;;; Code: ;; For syntax of Latin-1 characters. -(loop for c from 64 to 127 ; from '.AN@' to 'N' +(loop for c from 64 to 127 ; from ',A@(B' to ',A(B' do (modify-syntax-entry (make-char 'latin-iso8859-1 c) "w")) (modify-syntax-entry (make-char 'latin-iso8859-1 32) "w") ; no-break space -(modify-syntax-entry ?NW "_") -(modify-syntax-entry ?Nw "_") +(modify-syntax-entry ?,AW(B "_") +(modify-syntax-entry ?,Aw(B "_") ;; For syntax of Latin-2 -(loop for c in '(?.BN! ?N# ?N% ?N& ?N) ?N* ?N+ ?N, ?N. ?N/ ?N1 ?N3 ?N5 ?N6 ?N9 ?N: ?N; ?N<) +(loop for c in '(?,B!(B ?,B#(B ?,B%(B ?,B&(B ?,B)(B ?,B*(B ?,B+(B ?,B,(B ?,B.(B ?,B/(B ?,B1(B ?,B3(B ?,B5(B ?,B6(B ?,B9(B ?,B:(B ?,B;(B ?,B<(B) do (modify-syntax-entry c "w")) (loop for c from 62 to 126 do (modify-syntax-entry (make-char 'latin-iso8859-2 c) "w")) (modify-syntax-entry (make-char 'latin-iso8859-2 32) "w") ; no-break space -(modify-syntax-entry ?NW ".") -(modify-syntax-entry ?Nw ".") +(modify-syntax-entry ?,BW(B ".") +(modify-syntax-entry ?,Bw(B ".") ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;; EUROPEANS ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(define-language-environment 'european - "European (for Latin-1 through Latin-5)" - (lambda () - (set-coding-category-system 'iso-8-designate 'iso-8859-1) - (set-coding-priority-list '(iso-8-designate iso-8-1)) - ;;(setq locale-coding-system 'no-conversion) ; iso-8859-1 - (set-default-buffer-file-coding-system 'no-conversion) ; iso-8859-1 - ;;(set-buffer-file-coding-system-for-read 'no-conversion) ; iso-8859-1 - ;;(setq display-coding-system 'iso-8859-1) - ;;(setq keyboard-coding-system 'iso-8859-1) - ;; (setq-default quail-current-package - ;; (assoc "latin-1" quail-package-alist)) - )) +;; (define-prefix-command 'describe-european-environment-map) +;; (define-key-after describe-language-environment-map [European] +;; '("European" . describe-european-environment-map) +;; t) + +;; (define-prefix-command 'setup-european-environment-map) +;; (define-key-after setup-language-environment-map [European] +;; '("European" . setup-european-environment-map) +;; t) + +;; Setup for LANGAUGE which uses one-byte 8-bit CHARSET, one-byte +;; 8-bit CODING-SYSTEM, and INPUT-METHOD. +(defun setup-8-bit-environment (language charset coding-system input-method) + (setup-english-environment) + (set-default-coding-systems coding-system) + (setq coding-category-iso-8-1 coding-system + coding-category-iso-8-2 coding-system) + + (if charset + (let ((nonascii-offset (- (make-char charset) 128))) + ;; Set up for insertion of characters in this character set + ;; when codes 0200 - 0377 are typed in. + (setq nonascii-insert-offset nonascii-offset))) + + (if input-method + (setq default-input-method input-method)) + + ;; If this is a Latin-N character set, set up syntax for it in + ;; single-byte mode. We can't use require because the file + ;; must be eval'd each time in case we change from one Latin-N to another. + (if (string-match "^Latin-\\([1-9]\\)$" language) + (load (downcase language) nil t))) + +;; (define-language-environment 'european +;; "European (for Latin-1 through Latin-5)" +;; (lambda () +;; (set-coding-category-system 'iso-8-designate 'iso-8859-1) +;; (set-coding-priority-list '(iso-8-designate iso-8-1)) +;; ;;(setq locale-coding-system 'no-conversion) ; iso-8859-1 +;; (set-default-buffer-file-coding-system 'no-conversion) ; iso-8859-1 +;; ;;(set-buffer-file-coding-system-for-read 'no-conversion) ; iso-8859-1 +;; ;;(setq display-coding-system 'iso-8859-1) +;; ;;(setq keyboard-coding-system 'iso-8859-1) +;; ;; (setq-default quail-current-package +;; ;; (assoc "latin-1" quail-package-alist)) +;; )) -;; (make-coding-system -;; 'iso-8859-1 2 ?X -;; "Coding-system used in X as Compound Text Encoding." -;; '((ascii t) (latin-iso8859-1 t) nil nil -;; nil ascii-eol ascii-cntl)) - -;; CTEXT is an alias for ISO-8859-1 -;; (define-coding-system-alias 'iso-8859-1 'ctext) +;; Latin-1 (ISO-8859-1) ;; (make-coding-system -;; 'iso-8859-2 2 ?2 "MIME ISO-8859-2" +;; 'iso-latin-1 2 ?1 +;; "ISO 2022 based 8-bit encoding (MIME:ISO-8859-1, Compound Text Encoding)" +;; '((ascii t) (latin-iso8859-1 t) nil nil +;; nil ascii-eol ascii-cntl nil nil nil nil nil nil nil nil nil t)) + +;; (define-coding-system-alias 'iso-8859-1 'iso-latin-1) +;; (define-coding-system-alias 'latin-1 'iso-latin-1) +;; (define-coding-system-alias 'ctext 'iso-latin-1) + +(defun setup-latin1-environment () + "Set up multilingual environment (MULE) for European Latin-1 users." + (interactive) + (setup-8-bit-environment "Latin-1" 'latin-iso8859-1 'iso-8859-1 + "latin-1-prefix")) + +(set-language-info-alist + "Latin-1" '((setup-function . (setup-latin1-environment + . setup-european-environment-map)) + (charset . (ascii latin-iso8859-1)) + (coding-system . (iso-8859-1)) + (sample-text + . "Hello, Hej, Tere, Hei, Bonjour, Gr,A|_(B Gott, Ciao, ,A!(BHola!") + (documentation . ("\ +These languages are supported with the Latin-1 (ISO-8859-1) character set: + Danish, Dutch, English, Faeroese, Finnish, French, German, Icelandic, + Irish, Italian, Norwegian, Portuguese, Spanish, and Swedish. +" . describe-european-environment-map)) + )) + +;; Latin-2 (ISO-8859-2) + +;; (make-coding-system +;; 'iso-latin-2 2 ?2 +;; "ISO 2022 based 8-bit encoding (MIME:ISO-8859-2)" ;; '((ascii t) (latin-iso8859-2 t) nil nil ;; nil ascii-eol ascii-cntl nil nil nil nil)) +;; (define-coding-system-alias 'iso-8859-2 'iso-latin-2) +;; (define-coding-system-alias 'latin-2 'iso-latin-2) + (make-coding-system 'iso-8859-2 'iso2022 "MIME ISO-8859-2" '(charset-g0 ascii @@ -89,11 +151,35 @@ mnemonic "MIME/Ltn-2" )) +(defun setup-latin2-environment () + "Set up multilingual environment (MULE) for European Latin-2 users." + (interactive) + (setup-8-bit-environment "Latin-2" 'latin-iso8859-2 'iso-8859-2 + "latin-2-prefix")) + +(set-language-info-alist + "Latin-2" '((setup-function . (setup-latin2-environment + . setup-european-environment-map)) + (charset . (ascii latin-iso8859-2)) + (coding-system . (iso-8859-2)) + (documentation . ("\ +These languages are supported with the Latin-2 (ISO-8859-2) character set: + Albanian, Czech, English, German, Hungarian, Polish, Romanian, + Serbo-Croatian or Croatian, Slovak, Slovene, and Swedish. +" . describe-european-environment-map)) + )) + +;; Latin-3 (ISO-8859-3) + ;; (make-coding-system -;; 'iso-8859-3 2 ?3 "MIME ISO-8859-3" +;; 'iso-latin-3 2 ?3 +;; "ISO 2022 based 8-bit encoding (MIME:ISO-8859-3)" ;; '((ascii t) (latin-iso8859-3 t) nil nil ;; nil ascii-eol ascii-cntl nil nil nil nil)) +;; (define-coding-system-alias 'iso-8859-3 'iso-latin-3) +;; (define-coding-system-alias 'latin-3 'iso-latin-3) + (make-coding-system 'iso-8859-3 'iso2022 "MIME ISO-8859-3" '(charset-g0 ascii @@ -103,11 +189,35 @@ mnemonic "MIME/Ltn-3" )) +(defun setup-latin3-environment () + "Set up multilingual environment (MULE) for European Latin-3 users." + (interactive) + (setup-8-bit-environment "Latin-3" 'latin-iso8859-3 'iso-8859-3 + "latin-3-prefix")) + +(set-language-info-alist + "Latin-3" '((setup-function . (setup-latin3-environment + . setup-european-environment-map)) + (charset . (ascii latin-iso8859-3)) + (coding-system . (iso-8859-3)) + (documentation . ("\ +These languages are supported with the Latin-3 (ISO-8859-3) character set: + Afrikaans, Catalan, Dutch, English, Esperanto, French, Galician, + German, Italian, Maltese, Spanish, and Turkish. +" . describe-european-environment-map)) + )) + +;; Latin-4 (ISO-8859-4) + ;; (make-coding-system -;; 'iso-8859-4 2 ?4 "MIME ISO-8859-4" +;; 'iso-latin-4 2 ?4 +;; "ISO 2022 based 8-bit encoding (MIME:ISO-8859-4)" ;; '((ascii t) (latin-iso8859-4 t) nil nil ;; nil ascii-eol ascii-cntl nil nil nil nil)) +;; (define-coding-system-alias 'iso-8859-4 'iso-latin-4) +;; (define-coding-system-alias 'latin-4 'iso-latin-4) + (make-coding-system 'iso-8859-4 'iso2022 "MIME ISO-8859-4" '(charset-g0 ascii @@ -117,11 +227,35 @@ mnemonic "MIME/Ltn-4" )) +(defun setup-latin4-environment () + "Set up multilingual environment (MULE) for European Latin-4 users." + (interactive) + (setup-8-bit-environment "Latin-4" 'latin-iso8859-4 'iso-8859-4 + "latin-4-prefix")) + +(set-language-info-alist + "Latin-4" '((setup-function . (setup-latin4-environment + . setup-european-environment-map)) + (charset . (ascii latin-iso8859-4)) + (coding-system . (iso-8859-4)) + (documentation . ("\ +These languages are supported with the Latin-4 (ISO-8859-4) character set: + Danish, English, Estonian, Finnish, German, Greenlandic, Lappish, + Latvian, Lithuanian, and Norwegian. +" . describe-european-environment-map)) + )) + +;; Latin-5 (ISO-8859-9) + ;; (make-coding-system -;; 'iso-8859-9 2 ?9 "MIME ISO-8859-9" +;; 'iso-latin-5 2 ?9 +;; "ISO 2022 based 8-bit encoding (MIME:ISO-8859-9)" ;; '((ascii t) (latin-iso8859-9 t) nil nil ;; nil ascii-eol ascii-cntl nil nil nil nil)) +;; (define-coding-system-alias 'iso-8859-9 'iso-latin-5) +;; (define-coding-system-alias 'latin-5 'iso-latin-5) + (make-coding-system 'iso-8859-9 'iso2022 "MIME ISO-8859-9" '(charset-g0 ascii @@ -131,133 +265,49 @@ mnemonic "MIME/Ltn-5" )) -(register-input-method "European" - '("quail-latin-1" quail-use-package "quail/latin")) -(register-input-method "European" - '("quail-latin-2" quail-use-package "quail/latin")) -(register-input-method "European" - '("quail-latin-3" quail-use-package "quail/latin")) -(register-input-method "European" - '("quail-latin-4" quail-use-package "quail/latin")) -(register-input-method "European" - '("quail-latin-5" quail-use-package "quail/latin")) - -(defun setup-european-environment () - "Setup multilingual environment (MULE) for European languages users. -It actually reset MULE to the default status, and -set quail-latin-1 as the default input method to be selected. -See also the documentation of setup-english-environment." - (setup-english-environment) - (setq default-input-method '("European" . "quail-latin-1"))) - -(defun describe-european-support () - "Describe how Emacs support European languages." +(defun setup-latin5-environment () + "Set up multilingual environment (MULE) for European Latin-5 users." (interactive) - (describe-language-support-internal "European")) + (setup-8-bit-environment "Latin-5" 'latin-iso8859-9 'iso-8859-5 + "latin-5-prefix")) (set-language-info-alist - "European" '((setup-function . setup-european-environment) - (describe-function . describe-european-support) - (charset . (ascii latin-iso8859-1 latin-iso8859-2 - latin-iso8859-3 latin-iso8859-4 latin-iso8859-9)) - (coding-system . (iso-8859-1 iso-8859-2 iso-8859-3 - iso-8859-4 iso-8859-9)) - (sample-text - . "Hello, Hej, Tere, Hei, Bonjour, Gr.AN|N_ Gott, Ciao, N!Hola!") - (documentation . "\ -Almost all of European languages are supported by the character sets and -coding systems listed below. -To input them, LEIM (Libraries for Emacs Input Methods) should have been -installed.") - )) - -(let ((languages '("French" "German" "Spanish" "Italian" - ;; We have to list much more European langauges here. - )) - (val '("quail-latin-1" quail-use-package "quail/latin"))) - (while languages - (register-input-method (car languages) val) - (setq languages (cdr languages)))) + "Latin-5" '((setup-function . (setup-latin5-environment + . setup-european-environment-map)) + (charset . (ascii latin-iso8859-9)) + (coding-system . (iso-8859-5)) + (documentation . ("\ +These languages are supported with the Latin-5 (ISO-8859-9) character set. +" . describe-european-environment-map)) + )) -(register-input-method "Esperanto" - '("quail-esperanto" quail-use-package "quail/latin")) - -(mapcar (function - (lambda (method) - (register-input-method "Italian" - (cons method - '(quail-use-package "quail/latin"))) - )) - '("quail-italian" "quail-itln")) - -(mapcar (function - (lambda (method) - (register-input-method "Spanish" - (cons method - '(quail-use-package "quail/latin"))) - )) - '("quail-spanish" "quail-spnsh")) - -(mapcar (function - (lambda (method) - (register-input-method "French" - (cons method - '(quail-use-package "quail/latin"))) - )) - '("quail-french" "quail-frnch" "quail-azerty")) +;; (defun setup-european-environment () +;; "Setup multilingual environment (MULE) for European languages users. +;; It actually reset MULE to the default status, and +;; set quail-latin-1 as the default input method to be selected. +;; See also the documentation of setup-english-environment." +;; (setup-english-environment) +;; (setq default-input-method '("European" . "quail-latin-1"))) -(mapcar (function - (lambda (method) - (register-input-method "German" - (cons method - '(quail-use-package "quail/latin"))) - )) - '("quail-german" "quail-grmn")) - -(register-input-method "Scandinavian" - '("quail-scandinavian" quail-use-package "quail/latin")) - -(mapcar (function - (lambda (method) - (register-input-method "Icelandic" - (cons method - '(quail-use-package "quail/latin"))) - )) - '("quail-icelandic" "quail-iclndc")) - -(mapcar (function - (lambda (method) - (register-input-method "Danish" - (cons method - '(quail-use-package "quail/latin"))) - )) - '("quail-danish" "quail-dnsh")) +;; (defun describe-european-support () +;; "Describe how Emacs support European languages." +;; (interactive) +;; (describe-language-support-internal "European")) -(mapcar (function - (lambda (method) - (register-input-method "Norwegian" - (cons method - '(quail-use-package "quail/latin"))) - )) - '("quail-norwegian" "quail-nrwgn")) - -(mapcar (function - (lambda (method) - (register-input-method "Swedish" - (cons method - '(quail-use-package "quail/latin"))) - )) - '("quail-swedish" "quail-swdsh")) - -(mapcar (function - (lambda (method) - (register-input-method "Finish" - (cons method - '(quail-use-package "quail/latin"))) - )) - '("quail-finnish" "quail-fnnsh")) - -(register-input-method "Turkish" - '("quail-turkish" quail-use-package "quail/latin")) +;; (set-language-info-alist +;; "European" '((setup-function . setup-european-environment) +;; (describe-function . describe-european-support) +;; (charset . (ascii latin-iso8859-1 latin-iso8859-2 +;; latin-iso8859-3 latin-iso8859-4 latin-iso8859-9)) +;; (coding-system . (iso-8859-1 iso-8859-2 iso-8859-3 +;; iso-8859-4 iso-8859-9)) +;; (sample-text +;; . "Hello, Hej, Tere, Hei, Bonjour, Gr,A|_(B Gott, Ciao, ,A!(BHola!") +;; (documentation . "\ +;; Almost all of European languages are supported by the character sets and +;; coding systems listed below. +;; To input them, LEIM (Libraries for Emacs Input Methods) should have been +;; installed.") +;; )) ;;; european.el ends here