Initial Commit
[packages] / xemacs-packages / auctex / style / scrlttr2.el
1 ;;; scrlttr2.el --- AUCTeX style for scrlttr2.cls.
2
3 ;; Copyright (C) 2002, 2007 Free Software Foundation
4
5 ;; Author: Mark Trettin <Mark.Trettin@gmx.de>
6 ;; Created: 2002-10-26
7 ;; Keywords: tex
8
9 ;; This file is part of AUCTeX.
10
11 ;; AUCTeX is free software; you can redistribute it and/or modify it
12 ;; under the terms of the GNU General Public License as published by
13 ;; the Free Software Foundation; either version 3, or (at your option)
14 ;; any later version.
15
16 ;; AUCTeX is distributed in the hope that it will be useful, but
17 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
19 ;; General Public License for more details.
20
21 ;; You should have received a copy of the GNU General Public License
22 ;; along with AUCTeX; see the file COPYING.  If not, write to the Free
23 ;; Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
24 ;; 02110-1301, USA.
25
26 ;;; Commentary: 
27
28 ;; This file adds support for `scrlttr2.cls'.
29
30 ;; Since I just recently switched from `g-brief.cls' to the
31 ;; KOMA-Script letter class *and* I don't really write many
32 ;; snailmails, there are probably some superflous macros included and
33 ;; important ones left out. Comments appreciated.
34
35 ;; I left out any length and positioning macros since those should be
36 ;; set in a personal `*.lco'-File. IMHO.
37
38 ;;; Code
39
40 (TeX-add-style-hook "scrlttr2"
41   (lambda ()
42     (TeX-add-symbols
43      '("AtBeginLetter" t)
44      '("KOMAoptions" t)
45      '("LetterOptionNeedsPapersize" "Name of lco file" "Paper size")
46      '("LoadLetterOption" "Name of lco file")
47      '("addrchar" "Initial letter")
48      '("addrentry" "Lastname" "Firstname" "Address" "Telephone" "F1"
49        "F2" "F3" "F4" "Key")
50      '("addtokomafont" TeX-arg-KOMA-scrlttr-fontelements t)
51      '("addtolengthplength" [ "Factor" ] "Name of length"
52        "Name of pseudo length")
53      '("addtoreffields" TeX-arg-KOMA-scrlttr-vars)
54      '("adrchar" "Initial letter")
55      '("adrentry" "Lastname" "Firstname" "Address" "Telephone" "F1"
56        "F2" "Comment" "Key")
57      '("bankname" t)
58      '("captionsUKenglish" nil)
59      '("captionsUSenglish" nil)
60      '("captionsamerican" nil)
61      '("captionsaustrian" nil)
62      '("captionsbritish" nil)
63      '("captionscroatian" nil)
64      '("captionsdutch" nil)
65      '("captionsenglish" nil)
66      '("captionsfrench" nil)
67      '("captionsgerman" nil)
68      '("captionsitalian" nil)
69      '("captionsngerman" nil)
70      '("captionsspanish" nil)
71      '("cc" t)
72      '("ccname" t)
73      '("cleardoubleemptypage")
74      '("cleardoubleplainpage")
75      '("cleardoublestandardpage")
76      '("closing" "Closing Phrase")
77      '("customername" t)
78      '("dateUKenglish" nil)
79      '("dateUSenglish" nil)
80      '("dateamerican" nil)
81      '("dateaustrian" nil)
82      '("datebritish" nil)
83      '("datecroatian" nil)
84      '("datedutch" nil)
85      '("dateenglish" nil)
86      '("datefrench" nil)
87      '("dategerman" nil)
88      '("dateitalian" nil)
89      '("datename" t)
90      '("datengerman" nil)
91      '("datespanish" nil)
92      '("emailname" t)
93      '("encl" t)
94      '("enclname" t)
95      '("faxname" t)
96      '("firstfoot" t)
97      '("firsthead" t)
98      '("headfromname" t)
99      '("headtoname" t)
100      '("ifkomavarempty" TeX-arg-KOMA-scrlttr-vars 2)
101      '("ifkomavarempty*" TeX-arg-KOMA-scrlttr-vars 2)
102      '("invoicename" t)
103      '("myrefname" t)
104      '("newcaptionname" "Language" "Term" "Definition")
105      '("newkomavar" [ "Description" ] "Name")
106      '("newkomavar*" [ "Description" ] "Name")
107      '("nextfoot" t)
108      '("nexthead" t)
109      '("opening" "Opening")
110      '("pagename" t)
111      '("phonename" t)
112      '("providecaptionname" "Language" "Term" "Definition")
113      '("ps")
114      '("raggedsignature" nil)
115      '("renewcaptionname" "Language" "Term" "Definition")
116      '("setkomafont" TeX-arg-KOMA-scrlttr-fontelements t)
117      '("setkomavar" TeX-arg-KOMA-scrlttr-vars [ "Description" ] t)
118      '("setkomavar*" TeX-arg-KOMA-scrlttr-vars "Description")
119      '("setlengthtoplength" [ "Factor" ] "Name of length"
120        "Name of pseudo length")
121      '("subjectname" t)
122      '("usekomafont" TeX-arg-KOMA-scrlttr-fontelements)
123      '("usekomavar" [ "Command" ] TeX-arg-KOMA-scrlttr-vars)
124      '("usekomavar*" [ "Command" ] TeX-arg-KOMA-scrlttr-vars)
125      '("useplength" "Name")
126      '("wwwname" t)
127      '("yourmailname" t)
128      '("yourrefname" t))
129     (LaTeX-add-environments
130      '("letter" (lambda (env &rest ignore)
131                   (LaTeX-insert-environment
132                    env
133                    (let ((options (read-string "Optional options: "))
134                          (recip (read-string "Recipient: ")))
135                      (concat
136                       (if (not (zerop (length options)))
137                           (format "[%s]" options))
138                       (format "{%s}" recip)))))))
139     ;; Definitions for font-latex
140    (when (and (featurep 'font-latex)
141               (eq TeX-install-font-lock 'font-latex-setup))
142      ;; Textual keywords
143      (font-latex-add-keywords '(("addrentry" "{{{{{{{{{")
144                                 ("adrentry" "{{{{{{{{")
145                                 ("bankname" "{")
146                                 ("cc" "{")
147                                 ("ccname" "{")
148                                 ("closing" "{")
149                                 ("customername" "{")
150                                 ("datename" "{")
151                                 ("emailname" "{")
152                                 ("encl" "{")
153                                 ("enclname" "{")
154                                 ("faxname" "{")
155                                 ("firstfoot" "{")
156                                 ("firsthead" "{")
157                                 ("headfromname" "{")
158                                 ("headtoname" "{")
159                                 ("invoicename" "{")
160                                 ("myrefname" "{")
161                                 ("nextfoot" "{")
162                                 ("nexthead" "{")
163                                 ("opening" "{")
164                                 ("pagename" "{")
165                                 ("phonename" "{")
166                                 ("ps" "")
167                                 ("subjectname" "{")
168                                 ("wwwname" "{")
169                                 ("yourmailname" "{")
170                                 ("yourrefname" "{"))
171                               'textual)
172      ;; Function keywords
173      (font-latex-add-keywords '(("AtBeginLetter" "{")
174                                 ("LetterOptionNeedsPapersize" "{{")
175                                 ("LoadLetterOption" "{")
176                                 ("addrchar" "{")
177                                 ("adrchar" "{")
178                                 ("ifkomavarempty" "*{{{"))
179                               'function)
180      ;; Variable keywords
181      (font-latex-add-keywords '(("KOMAoptions" "{")
182                                 ("addtokomafont" "{{")
183                                 ("addtolengthplength" "[{{")
184                                 ("addtoreffields" "{")
185                                 ("newcaptionname" "{{{")
186                                 ("newkomavar" "*[{")
187                                 ("providecaptionname" "{{{")
188                                 ("renewcaptionname" "{{{")
189                                 ("setkomafont" "{{")
190                                 ("setkomavar" "*{[{")
191                                 ("setlengthtoplength" "[{{")
192                                 ("usekomafont" "{")
193                                 ("usekomavar" "*[{")
194                                 ("useplength" "{"))
195                               'variable)
196      ;; Warning keywords
197      (font-latex-add-keywords '("cleardoublestandardpage"
198                                 "cleardoubleplainpage"
199                                 "cleardoubleemptypage")
200                               'warning)))
201   LaTeX-dialect)
202
203 (defun TeX-arg-KOMA-scrlttr-vars (optional &optional prompt)
204   "Prompt for KOMA-Script's scrlttr2 predefined variables with completion."
205   (TeX-argument-insert
206    (completing-read
207     (TeX-argument-prompt optional prompt "Variable")
208     '(("")
209       ("backaddress") ("backaddressseparator")
210       ("ccseparator") ("customer")
211       ("date")
212       ("emailseparator") ("enclseparator")
213       ("faxseparator") ("frombank") ("fromaddress") ("fromemail")
214       ("fromfax") ("fromlogo") ("fromname") ("fromphone") ("fromurl")
215       ("invoice")
216       ("location")
217       ("myref")
218       ("place") ("placeseparator") ("phoneseparator")
219       ("signature") ("specialmail") ("subject") ("subjectseparator")
220       ("title") ("toname") ("toaddress")
221       ("yourmail") ("yourref"))
222     nil nil)
223    optional))
224
225 (defun TeX-arg-KOMA-scrlttr-fontelements (optional &optional prompt)
226   "Prompt for KOMA-Script's scrlttr2 fontelements with completion."
227   (TeX-argument-insert
228    (completing-read
229     (TeX-argument-prompt optional prompt "Element")
230     '(("")
231       ("backaddress")
232       ("descriptionlabel")
233       ("fromaddress") ("fromname")
234       ("pagefoot") ("pagehead") ("pagenumber")
235       ("subject")
236       ("title"))
237     nil t)
238    optional))
239
240 ;;; scrlttr2.el ends here