]> code.delx.au - gnu-emacs-elpa/blobdiff - packages/auctex/style/babel.el
Remove version numbers in packages/ directory
[gnu-emacs-elpa] / packages / auctex / style / babel.el
diff --git a/packages/auctex/style/babel.el b/packages/auctex/style/babel.el
new file mode 100644 (file)
index 0000000..3242d0e
--- /dev/null
@@ -0,0 +1,108 @@
+;;; babel.el --- AUCTeX style for `babel.sty'
+
+;; Copyright (C) 2005 Free Software Foundation, Inc.
+
+;; Author: Ralf Angeli <angeli@iwi.uni-sb.de>
+;; Maintainer: auctex-devel@gnu.org
+;; Created: 2005-05-29
+;; Keywords: tex
+
+;; This file is part of AUCTeX.
+
+;; AUCTeX is free software; you can redistribute it and/or modify it
+;; under the terms of the GNU General Public License as published by
+;; the Free Software Foundation; either version 3, or (at your option)
+;; any later version.
+
+;; AUCTeX is distributed in the hope that it will be useful, but
+;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+;; General Public License for more details.
+
+;; You should have received a copy of the GNU General Public License
+;; along with AUCTeX; see the file COPYING.  If not, write to the Free
+;; Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+;; 02110-1301, USA.
+
+;;; Commentary:
+
+;; This file adds support for `babel.sty'.
+
+;;; Code:
+
+(defvar LaTeX-babel-language-list
+  '("acadian" "afrikaans" "american" "austrian""bahasa" "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" "irish" "italian" "latin" "lowersorbian" "magyar"
+    "naustrian" "ngerman" "norsk" "samin" "nynorsk" "polish" "portuges"
+    "portuguese" "romanian" "russian" "scottish" "serbian" "slovak"
+    "slovene" "spanish" "swedish" "turkish" "ukrainian" "uppersorbian"
+    "welsh" "UKenglish" "USenglish")
+  "List of languages supported by the babel LaTeX package.")
+
+(if (fboundp 'defvaralias)
+    (defvaralias 'LaTeX-babel-package-options 'LaTeX-babel-language-list)
+  (defvar LaTeX-babel-package-options LaTeX-babel-language-list
+    "Package options for the babel package."))
+
+(defun LaTeX-babel-active-languages ()
+  "Return a list of languages used in the document."
+  (let (active-languages)
+    (dolist (elt LaTeX-babel-language-list)
+      (when (member elt TeX-active-styles)
+       (add-to-list 'active-languages (list elt))))
+    active-languages))
+
+(defun TeX-arg-babel-lang (optional &optional prompt)
+  "Prompt for a language with completion and insert it as an argument."
+  (TeX-argument-insert
+   (completing-read "Language: " (LaTeX-babel-active-languages)) nil))
+
+(defun LaTeX-env-babel-lang (env)
+  "Prompt for a language and insert it as an argument of ENV."
+  (LaTeX-insert-environment
+   env (format "{%s}" (completing-read "Language: "
+                                      (LaTeX-babel-active-languages)))))
+
+(TeX-add-style-hook
+ "babel"
+ (lambda ()
+   ;; New symbols
+   (TeX-add-symbols
+    '("selectlanguage" TeX-arg-babel-lang)
+    '("foreignlanguage" TeX-arg-babel-lang t)
+    "languagename"
+    '("iflanguage" TeX-arg-babel-lang t nil)
+    '("useshorthands" t)
+    '("defineshorthand" t nil)
+    '("aliasshorthand" t nil)
+    '("languageshorthands" TeX-arg-babel-lang)
+    '("shorthandon" t)
+    '("shorthandoff" t)
+    '("languageattribute" TeX-arg-babel-lang t))
+   ;; New environments
+   (LaTeX-add-environments
+    '("otherlanguage" LaTeX-env-babel-lang)
+    '("otherlanguage*" LaTeX-env-babel-lang)
+    '("hyphenrules" LaTeX-env-babel-lang))
+   ;; Fontification
+   (when (and (featurep 'font-latex)
+             (eq TeX-install-font-lock 'font-latex-setup))
+     (font-latex-add-keywords '(("selectlanguage" "{")
+                               ("foreignlanguage" "{{")
+                               ("iflanguage" "{{{")
+                               ("languagename" "")
+                               ("useshorthands" "{")
+                               ("languageshorthands" "{")
+                               ("shorthandon" "{")
+                               ("shorthandoff" "{"))
+                             'function)
+     (font-latex-add-keywords '(("defineshorthand" "{{")
+                               ("aliasshorthand" "{{")
+                               ("languageattribute" "{{"))
+                             'variable))))
+
+;;; babel.el ends here