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