diff --git a/style/babel.el b/style/babel.el index 784732d..1ce3238 100755 --- a/style/babel.el +++ b/style/babel.el @@ -1,6 +1,6 @@ ;;; babel.el --- AUCTeX style for `babel.sty' -;; Copyright (C) 2005, 2007, 2013 Free Software Foundation, Inc. +;; Copyright (C) 2005, 2007, 2013, 2014 Free Software Foundation, Inc. ;; Author: Ralf Angeli ;; Maintainer: address@hidden @@ -31,26 +31,58 @@ ;;; Code: (defvar LaTeX-babel-language-list - '("acadian" "albanian" "afrikaans" "american" "australian" "austrian" "bahasa" - "indonesian" "indon" "bahasai" "malay" "meyalu" "bahasam" "basque" "brazil" - "brazilian" "breton" "british" "bulgarian" "canadian" "canadien" "catalan" - "croatian" "czech" "danish" "dutch" "english" "esperanto" "estonian" "finnish" - "francais" "frenchb" "french" "galician" "german" "germanb" "greek" - "polutonikogreek" "hebrew" "hungarian" "icelandic" "interlingua" "irish" - "italian" "latin" "lowersorbian" "magyar" "naustrian" "newzealand" "ngerman" - "norsk" "samin" "nynorsk" "polish" "portuges" "portuguese" "romanian" - "russian" "scottish" "serbian" "slovak" "slovene" "spanish" "swedish" "turkish" - "ukrainian" "uppersorbian" "welsh" "UKenglish" "USenglish") + '("afrikaans" + "bahasa" "indonesian" "indon" "bahasai" "bahasam" "malay" "meyalu" + "basque" + "breton" + "bulgarian" + "catalan" + "croatian" + "czech" + "danish" + "dutch" + "english" "USenglish" "american" "UKenglish" "british" "canadian" + "australian" "newzealand" + "esperanto" + "estonian" + "finnish" + "french" "francais" "canadien" "acadian" + "galician" + "austrian" "german" "germanb" "ngerman" "naustrian" + "greek" "polutonikogreek" + "hebrew" + "icelandic" + "interlingua" + "irish" + "italian" + "latin" + "lowersorbian" + "samin" + "norsk" "nynorsk" + "polish" + "portuges" "portuguese" "brazilian" "brazil" + "romanian" + "russian" + "scottish" + "spanish" + "slovak" + "slovene" + "swedish" + "serbian" + "turkish" + "ukrainian" + "uppersorbian" + "welsh" + ;; Extra languages listed in the `babel' manual. + "albanian" "hindi" "thai" "thaicjk" "latvian" "turkmen" "hungarian" "magyar" + "mongolian" "romansh" "lithuanian" "spanglish" "vietnamese" "japanese" + "pinyin" "arabinc" "farsi" "ibygreek" "bgreek" "serbianic" "frenchle" + "ethiop" "friulan" "frenchb") "List of languages supported by the babel LaTeX package.") -(defvar LaTeX-babel-package-options - (append LaTeX-babel-language-list '("activeacute" "activegrave" - "KeepShorthandsActive")) - "Package options for the babel package.") - (defun LaTeX-babel-active-languages () "Return a list of languages used in the document." - (let (active-languages) + (let (main-language active-languages) ;; Loop over options provided to class and `babel' package at load time. (dolist (elt (append ;; In most cases there is only one element in the alist, if @@ -59,10 +91,25 @@ ;; take the car of `LaTeX-provided-class-options'. (cdr (car LaTeX-provided-class-options)) (cdr (assoc "babel" LaTeX-provided-package-options)))) - (when (member elt LaTeX-babel-language-list) - ;; Append element to `active-languages' to respect loading order. - ;; `babel' package uses as default language the last loaded one. - (add-to-list 'active-languages elt t))) + (setq elt (TeX-split-string "=" elt)) + (if (equal (car elt) "main") + ;; Starting from version 3.9 of `babel' package, languages can be set + ;; with the following syntax: + ;; \usepackage[latin.medieval,main=danish,spanish.notilde]{babel} + ;; with `danish' being the default language. When the default + ;; language is set with the `main' option, we record it and append to + ;; the list at the end. + (setq main-language (car (cdr elt))) + ;; Get rid of the modifiers (`medieval' and `notilde' in the above + ;; example). + (setq elt (car (TeX-split-string "\\." (car elt)))) + (if (member elt LaTeX-babel-language-list) + ;; Append element to `active-languages' to respect loading order. + ;; `babel' package uses as default language the last loaded one, + ;; except if it is set with the `main' option. + (add-to-list 'active-languages elt t)))) + (if main-language + (add-to-list 'active-languages main-language t)) active-languages)) (defun TeX-arg-babel-lang (optional &optional prompt) @@ -122,4 +169,25 @@ ("languageattribute" "{{")) 'variable)))) +(defun LaTeX-babel-package-options () + "Prompt for package options for the babel package." + (TeX-read-key-val + t + (append + '(("KeepShorthandsActive") + ("activeacute") + ("activegrave") + ("shorthands") + ("safe" ("none" "ref" "bib")) + ("math" ("active" "normal")) + ("config") + ("main" LaTeX-babel-language-list) + ("headfoot" LaTeX-babel-language-list) + ("noconfigs") + ("showlanguages") + ("strings" ("generic" "unicode" "encoded")) + ("hyphenmap" ("off" "main" "select" "other" "other*")) + ("base")) + (mapcar 'list LaTeX-babel-language-list)))) + ;;; babel.el ends here