;;; european.el --- support for European languages -*- coding: iso-2022-7bit; -*-
-;; Copyright (C) 1995, 1997, 2001 Electrotechnical Laboratory, JAPAN.
-;; Licensed to the Free Software Foundation.
-;; Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 1998, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+;; Free Software Foundation, Inc.
+;; Copyright (C) 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004,
+;; 2005, 2006, 2007
+;; National Institute of Advanced Industrial Science and Technology (AIST)
+;; Registration Number H14PRO021
;; Copyright (C) 2003
;; National Institute of Advanced Industrial Science and Technology (AIST)
;; Registration Number H13PRO009
;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs; see the file COPYING. If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
;;; Commentary:
-;; For European scripts, character sets ISO8859-1,2,3,4,9,10,13,14,15,
-;; windows-1250,2,4,7, mac-roman, adobe-standard-encoding, cp850 and
-;; next are supported.
+;; For European scripts, all the ISO Latin character sets are
+;; supported, along with various others.
;;; Code:
(unibyte-display . iso-latin-1)
(input-method . "latin-1-prefix")
(sample-text
- . "Hello, Hej, Tere, Hei, Bonjour, Gr\e,A|_\e(B Gott, Ciao, \e,A!\e(BHola!")
+ . "Hello, Hej, Tere, Hei, Bonjour, Gr\e$(D+d)N\e(B Gott, Ciao, \e$(D"B\e(BHola!")
(documentation . "\
This language environment is a generic one for the Latin-1 (ISO-8859-1)
character set which supports the following European languages:
(unibyte-display . iso-latin-8)
(input-method . "latin-8-prefix")
;; Fixme: Welsh/Ga{e}lic greetings
- (sample-text . "\e,_"\e(B \e,_p\e(B \e,_^\e(B")
+ (sample-text . "\e,_"\e(B \e$(D+q\e(B \e$(D*t\e(B")
(documentation . "\
This language environment is a generic one for the Latin-8 (ISO-8859-14)
character set which supports the Celtic languages, including those not
(unibyte-display . iso-latin-9)
(input-method . "latin-9-prefix")
(sample-text
- . "AVE. \e,b&(48<=>\e(B \e,b$\e(B")
+ . "AVE. \e$(D*^+^*v+v)-)M*s\e(B \e$(Q)!\e(B")
(documentation . "\
This language environment is a generic one for the Latin-9 (ISO-8859-15)
character set which supports the same languages as Latin-1 with the
(unibyte-display . iso-latin-1)
(sample-text . "\
German (Deutsch Nord) Guten Tag
-German (Deutsch S\e,A|\e(Bd) Gr\e,A|_\e(B Gott")
+German (Deutsch S\e$(D+d\e(Bd) Gr\e$(D+d)N\e(B Gott")
(documentation . "\
This language environment is almost the same as Latin-1,
but sets the default input method to \"german-postfix\".
(nonascii-translation . iso-8859-1)
(unibyte-display . iso-latin-1)
(input-method . "latin-1-prefix")
- (sample-text . "French (Fran\e,Ag\e(Bais) Bonjour, Salut")
+ (sample-text . "French (Fran\e$(D+.\e(Bais) Bonjour, Salut")
(documentation . "\
This language environment is almost the same as Latin-1,
but it selects the French tutorial and input method."))
(input-method . "slovenian")
(unibyte-display . iso-8859-2)
(tutorial . "TUTORIAL.sl")
- (sample-text . "\e,B.\e(Belimo vam uspe\e,B9\e(Ben dan!")
+ (sample-text . "\e$(D*v\e(Belimo vam uspe\e$(D+^\e(Ben dan!")
(documentation . "\
This language environment is almost the same as Latin-2,
but it selects the Slovenian tutorial and input method."))
(input-method . "spanish-postfix")
(nonascii-translation . iso-8859-1)
(unibyte-display . iso-latin-1)
- (sample-text . "Spanish (Espa\e,Aq\e(Bol) \e,A!\e(BHola!")
+ (sample-text . "Spanish (Espa\e$(D+P\e(Bol) \e$(D"B\e(BHola!")
(documentation . "\
This language environment is almost the same as Latin-1,
but it sets the default input method to \"spanish-postfix\",
(nonascii-translation . iso-8859-9)
(unibyte-display . iso-latin-5)
(input-method . "turkish-postfix")
- (sample-text . "Turkish (T\e,M|\e(Brk\e,Mg\e(Be) Merhaba")
- (setup-function
- . (lambda ()
- (set-case-syntax-pair ?I ?\e,C9\e(B (standard-case-table))
- (set-case-syntax-pair ?\e,C)\e(B ?i (standard-case-table))))
- (exit-function
- . (lambda ()
- (set-case-syntax-pair ?I ?i (standard-case-table))
- (set-case-syntax ?\e,C9\e(B "w" (standard-case-table))
- (set-case-syntax ?\e,C)\e(B "w" (standard-case-table))))
+ (sample-text . "Turkish (T\e$(D+d\e(Brk\e$(D+.\e(Be) Merhaba")
+ (setup-function . turkish-case-conversion-enable)
+ (setup-function . turkish-case-conversion-disable)
(documentation . "Support for Turkish.
Differs from the Latin-5 environment in using the `turkish-postfix' input
-method and applying Turkish case rules for the characters i, I, \e,C9\e(B, \e,C)\e(B.")))
+method and applying Turkish case rules for the characters i, I, \e$(D)E\e(B, \e$(D*D\e(B.")))
+
+(defun turkish-case-conversion-enable ()
+ "Set up Turkish case conversion of `i' and `I' into `\e$(D*D\e(B' and `\e$(D)E\e(B'."
+ (let ((table (standard-case-table)))
+ (set-case-syntax-pair ?\e$(D*D\e(B ?i table)
+ (set-case-syntax-pair ?I ?\e$(D)E\e(B table)))
+
+(defun turkish-case-conversion-disable ()
+ "Set up normal (non-Turkish) case conversion of `i' into `I'."
+ (let ((table (standard-case-table)))
+ (set-case-syntax-pair ?I ?i table)
+ (set-case-syntax ?\e$(D*D\e(B "w" table)
+ (set-case-syntax ?\e$(D)E\e(B "w" table)))
;; Polish ISO 8859-2 environment.
;; Maintainer: Wlodek Bzyl <matwb@univ.gda.pl>
(nonascii-translation . iso-8859-2)
(unibyte-display . iso-8859-2)
(tutorial . "TUTORIAL.pl")
- (sample-text . "P\e,Bs\e(Bjd\e,B<\e(B, ki\e,Bq\e(B-\e,B?\e(Be t\e,Bj\e(B chmurno\e,B6f\e(B w g\e,B31\e(Bb flaszy")
+ (sample-text . "P\e$(D+Q\e(Bjd\e$(D+u\e(B, ki\e$(D+M\e(B-\e$(D+w\e(Be t\e$(D+8\e(B chmurno\e$(D+\++\e(B w g\e$(D)H+(\e(Bb flaszy")
(documentation . t))
'("European"))
(documentation . "Support for Croatian with Latin-2 encoding."))
'("European"))
+(set-language-info-alist
+ "Brazilian Portuguese" '((tutorial . "TUTORIAL.pt_BR")
+ (charset iso-8859-1)
+ (coding-system iso-latin-1 iso-latin-9)
+ (coding-priority iso-latin-1)
+ (nonascii-translation . iso-8859-1)
+ (unibyte-display . iso-8859-1)
+ (input-method . "latin-1-prefix")
+ (sample-text . "Oi")
+ (documentation . "Support for Brazilian Portuguese."))
+ '("European"))
+
\f
(define-coding-system 'mac-roman
"Mac Roman Encoding (MIME:MACINTOSH)."
(narrow-to-region beg end)
(goto-char (point-min))
(while (re-search-forward diacritic-composition-pattern nil t)
- (compose-region (match-beginning 0) (match-end 0)))))
+ (if (= (char-syntax (char-after (match-beginning 0))) ?w)
+ (compose-region (match-beginning 0) (match-end 0))))))
(defun diacritic-compose-string (string)
"Compose diacritic characters in STRING and return the resulting string."
(let ((idx 0))
(while (setq idx (string-match diacritic-composition-pattern string idx))
- (compose-string string idx (match-end 0))
+ (if (= (char-syntax (aref string idx)) ?w)
+ (compose-string string idx (match-end 0)))
(setq idx (match-end 0))))
string)
(interactive)
(diacritic-compose-region (point-min) (point-max)))
-(defun diacritic-post-read-conversion (len)
- (diacritic-compose-region (point) (+ (point) len))
- len)
-
(defun diacritic-composition-function (pos &optional string)
"Compose diacritic text around POS.
Optional 2nd argument STRING, if non-nil, is a string containing text
or nil if no characters are composed."
(setq pos (1- pos))
(if string
- (let ((ch (aref string pos))
- start end components ch composition)
- (when (and (>= pos 0)
- ;; Previous character is latin.
- (aref (char-category-set ch) ?l)
- (/= ch 32))
- (setq start pos
- end (length string)
- components (list ch)
- pos (1+ pos))
- (while (and
- (< pos end)
- (setq ch (aref string pos)
- composition
- (get-char-code-property ch 'diacritic-composition)))
- (setq components (cons ch (cons composition components))
- pos (1+ pos)))
- (compose-string string start pos (nreverse components))
- pos))
- (let ((ch (char-after pos))
- start end components composition)
- (when (and (>= pos (point-min))
- (aref (char-category-set ch) ?l)
- (/= ch 32))
- (setq start pos
- end (point-max)
- components (list ch)
- pos (1+ pos))
- (while (and
- (< pos end)
- (setq ch (char-after pos)
- composition
- (get-char-code-property ch 'diacritic-composition)))
- (setq components (cons ch (cons composition components))
- pos (1+ pos)))
- (compose-region start pos (nreverse components))
- pos))))
+ (if (>= pos 0)
+ (let ((ch (aref string pos))
+ start end components ch composition)
+ (when (= (char-syntax ch) ?w)
+ (setq start pos
+ end (length string)
+ components (list ch)
+ pos (1+ pos))
+ (while (and
+ (< pos end)
+ (setq ch (aref string pos)
+ composition
+ (get-char-code-property ch
+ 'diacritic-composition)))
+ (setq components (cons ch (cons composition components))
+ pos (1+ pos)))
+ (compose-string string start pos (nreverse components))
+ pos)))
+ (if (>= pos (point-min))
+ (let ((ch (char-after pos))
+ start end components composition)
+ (when (= (char-syntax ch) ?w)
+ (setq start pos
+ end (point-max)
+ components (list ch)
+ pos (1+ pos))
+ (while (and
+ (< pos end)
+ (setq ch (char-after pos)
+ composition
+ (get-char-code-property ch 'diacritic-composition)))
+ (setq components (cons ch (cons composition components))
+ pos (1+ pos)))
+ (compose-region start pos (nreverse components))
+ pos)))))
(provide 'european)
+;;; arch-tag: 9e018b12-fb02-4120-907b-9adeaf84b5c2
;;; european.el ends here