3 Dictionary/demo.cc | 35
4 Dictionary/dict_todo.txt | 33
5 Dictionary/dictionary.nm | 391 +
6 Dictionary/dicts/cpp.dict | 146
7 Dictionary/dicts/english_top.dict | 9108 +++++++++++++++++++++++++++++++++++
8 Dictionary/dicts/german.dict | 4059 +++++++++++++++
9 Dictionary/dicts/german_latex.dict | 1486 +++++
10 Dictionary/dicts/german_top.dict | 9532 +++++++++++++++++++++++++++++++++++++
11 Dictionary/dicts/html.dict | 1
12 Dictionary/dicts/latex.dict | 304 +
13 Dictionary/dotnedit | 41
14 Dictionary/readme.html | 284 +
15 Dictionary/setup.sh | 13
16 source/Makefile.common | 3
17 source/Makefile.dependencies | 4
18 source/dictionary.c | 407 +
19 source/dictionary.h | 21
20 source/highlightData.c | 2
21 source/macro.c | 272 +
23 source/ternary_search_tree.c | 507 +
24 source/ternary_search_tree.h | 11
27 24 files changed, 26673 insertions(+), 7 deletions(-)
29 diff --quilt /dev/null new/Dictionary/demo.cc
31 +++ new/Dictionary/demo.cc
35 +// C++ demo file to test the dictionary features:
36 +// Please go below, type in 'cl' (without quotes) and
42 +// Please type in 'main' or 'fo' somewhere below and press
45 +// then press Ctrl-\ to step through the fields @@@
68 diff --quilt /dev/null new/Dictionary/dictionary.nm
70 +++ new/Dictionary/dictionary.nm
72 +# Macro definition file for the dictionary enhanced version of nedit 5.1.1 and later.
73 +# These macro command will not work without the patched version since all built-in macro
74 +# commands for handling the dictionary are not present in the original version.
76 +# The dictionary can be seen as simply as a collection of (unique) strings, where each
77 +# string has a weight attached that can be increased or decreased. The dictionary allows
78 +# to search for strings just by giving some portion of the beginning of the desired string.
79 +# If this portion is enough to uniquely identify to whole string, the string without
80 +# the beginning portion is returned. If it is not possible to uniquely identify a string,
81 +# one ore more possible completions are returned, sorted by weight. If there is no match
82 +# at all, an empty string is returned. The key point of the dictionary is that it is very
83 +# fast in insertion and retrieval of strings. Also, common sequences are stored only once.
85 +# While these new built-in macro commands are kept very general, all functionality
86 +# for word completion and template expansion is coded in the nedit macro language to
87 +# allow for maximum flexibility and gives users the control over the behaviour of these
88 +# features. E.g., the whole namespace handling is done in the macro definitions in this
90 +# Christian Merkwirth, March 2000
92 +# Set autoSave to "on" (save on Window close/exit), save dictionary after every 16 insertion operations
93 +$dict_auto_save = "on"
94 +$dict_refresh_cycle = 16
95 +dict_save($dict_auto_save, $dict_refresh_cycle)
97 +# global variables for the word completion
104 +# global variables for template expansion
106 +$name_of_last_field = ""
108 +# Return name of current language mode or an empty string for the "Plain" mode
110 + if ($language_mode == "Plain")
113 + namesp = "::" $language_mode "::"
118 +############################################################################################
120 +# Complete word section
122 +############################################################################################
124 +# Get the nearest match from the text before and after the cursor (pretty much like
125 +# the old style complete word macro). Usually, this is presented as first option when
126 +# the new complete word macro is invoked. The return does not return the whole
127 +# completed string, just the part that is needed to fill up the keyString is returned.
128 +define get_nearest_match {
129 + backMatch = search("<" $keyString, $keyStart-1, "backward", "regex")
130 + forwardMatch = search("<" $keyString, $cursor, "regex")
132 + if ((backMatch < 0) && (forwardMatch < 0)) {
136 + backdist = $text_length
138 + backdist = $keyStart-1 - backMatch
140 + if (forwardMatch < 0)
141 + forwarddist = $text_length
143 + forwarddist = forwardMatch - $cursor
145 + if (backdist <= forwarddist)
146 + nearestMatch = backMatch
148 + nearestMatch = forwardMatch
150 + matchEnd = search(">", nearestMatch, "regex")
152 + if ((matchEnd == -1) || (matchEnd == $text_length))
155 + completion = get_range(nearestMatch+length($keyString), matchEnd)
161 +# Define revert to the initial keyString if the user does not accept propesed completion
162 +define revert_to_keystring {
163 + if (($compword_end == $cursor) && ($keyStart > -1)) {
164 + replace_range($keyStart, $cursor, $keyString)
167 + $completedWord = ""
173 +# Insert the completed string at the current position
174 +define insert_completion {
175 + $completedWord = $keyString $1
176 + replace_range($keyStart, $cursor, $completedWord)
177 + $compword_end = $cursor
180 +# Main complete word macro. When invoked, it tries to determine if this the user is looking for
181 +# a completion to a new keyString or if he wants to step through the possible completions to the
182 +# previously given keyString.
184 +# Possible completions are presented in the following order:
186 +# 1) Get the nearest match from the text in the current window (like the old complete_word macro)
187 +# 2) Get #MaxMatches completions from the dictionary, using the language mode specific namespace
188 +# 3) Get #MaxMatches completions from the dictionary, using the global ("Plain") namespace
189 +define complete_word {
193 + newkeyStart = search("<", $cursor, "backward", "regex")
195 + if (($compword_end != $cursor) || (newkeyStart != $keyStart)) { # OK, new keyword, new search
196 + # If there was a successful completion last time, insert this accepted completion
197 + # into the dictionary to reinforce weights. This also enables to learn new words by accepting
198 + # the nearest match. The next time the macro is invoked, this match is inserted into the
200 + if (length($completedWord) > 0) {
201 + if ((dict_is_element($completedWord) > 0) && (!dict_is_element(namespace() $completedWord))) {
202 + # if word exists already in global namespace, but not in specific
203 + dict_insert($completedWord) # do not insert it into language specific namespace
205 + dict_insert(namespace() $completedWord)
209 + $keyStart = newkeyStart
211 + if ($keyStart == -1)
214 + $keyString = get_range($keyStart, $cursor)
216 + if (length($keyString) == 0) {
225 + if ($search_level == 0) {
227 + completion = get_nearest_match()
228 + if (length(completion) > 0) {
229 + insert_completion(completion)
233 + if ($search_level == 1) {
234 + if (length(namespace()) == 0)
237 + completion = dict_complete(namespace() $keyString, MinChars, MaxMatches)
238 + if (length(completion) == 0)
242 + insert_completion(completion)
247 + if ($search_level == 2) {
248 + completion = dict_complete("", MinChars, MaxMatches)
249 + if (length(completion) == 0)
252 + insert_completion(completion)
256 + if ($search_level == 3) {
257 + completion = dict_complete($keyString, MinChars, MaxMatches)
258 + if (length(completion) == 0)
262 + insert_completion(completion)
266 + if ($search_level == 4) {
267 + completion = dict_complete("", MinChars, MaxMatches)
268 + if (length(completion) == 0)
271 + insert_completion(completion)
275 + if (length(completion) == 0) {
276 + revert_to_keystring()
280 +# Insert the current selection into the dictionary
281 +define insert_selection {
282 + dict_insert(namespace() get_selection())
285 +# Scan the current text and insert all words of given length into the dictionary
288 + $completedWord = ""
291 + dict_save("off", -1)
294 + $keyStart = search("<", $keyStart+1, "forward", "regex")
298 + matchEnd = search(">", $keyStart, "forward", "regex")
299 + word = get_range($keyStart, matchEnd)
301 + if (length(word) >= MinChars) {
302 + if ((dict_is_element(word) > 0) && (!dict_is_element(namespace() word))) {
303 + # if word exists already in global namespace, but not in specific
304 + dict_insert(word) # do not insert it into language specific namespace
306 + dict_insert(namespace() word)
312 + dict_save($dict_auto_save, $dict_refresh_cycle)
315 +############################################################################################
317 +# Template expansion section
319 +############################################################################################
321 +# Main routine that is invoked first when the user invokes template expansion.
324 +# 1) Get the abbreviation to expand from the text before the cursor
325 +# 2) Parse this expansion to see if it needs further treatment
326 +# 3) Insert the expansion at the current position
329 + keyStart = search("<", $cursor, "backward", "regex", "wrap")
330 + if (keyStart == -1)
333 + keyString = get_range(keyStart, $cursor)
334 + expansionString = get_expansion(keyString)
336 + if (length(expansionString) == 0) {
341 + expansionString = parse_expansion(expansionString)
343 + replace_range(keyStart, $cursor, expansionString)
345 + if (search_string(expansionString, "(@[\\w/@\\>\\<\\.\\+\\-]+@)", 0, "regex") > 0) {
346 + # if a @@@ exists in the expansion, immediately move the cursor to this position
347 + set_cursor_pos(keyStart)
352 +# Search the dictionary for the given shortcut (given as first argument).
355 +# First look in the namespace of the current language mode, if there is no
356 +# match, also look in global namespace.
357 +define get_expansion {
359 + expansionString = dict_complete("@@@" namespace() keyString ":", 1, 1)
361 + if (length(expansionString) == 0) {
362 + expansionString = dict_complete("@@@" keyString ":", 1, 1)
365 + return expansionString
368 +# parse the expansion string recursively to replace special sequences, given in the form
371 +# The following sequences are recognized:
372 +# @@@ this is a plain placeholder which is left as it is except for the first one that appears,
373 +# which is just removed an the cursor is placed at this position
375 +# @<file@ insert text from file 'file' at this position (even recursively)
376 +# @>temp@ insert text from template 'temp' at this position (even recursively)
377 +define parse_expansion {
378 + expansionString = $1
381 + reg = "(@[\\<\\>\\w\\./\\\\]+@)"
383 + while (search_string(expansionString, reg , start, "forward", "regex") > 0) {
385 + s = search_string(expansionString, "(@\\<[\\w\\./\\\\]+@)", start, "forward", "regex")
386 + # include file given by @<filename@ as subExpansion
389 + filename = substring(expansionString, s+2, end-1)
390 + subExpansion = read_file(filename)
392 + if (length(subExpansion) > 0) {
393 + subExpansion = parse_expansion(subExpansion)
394 + expansionString = replace_substring(expansionString, s, end, subExpansion)
397 + s = search_string(expansionString,"(@\\>[\\w]+@)", start, "forward", "regex")
400 + # expand this subexpression
401 + sub = substring(expansionString, s+2, end-1)
402 + subExpansion = get_expansion(sub)
404 + if (length(subExpansion) > 0) {
405 + subExpansion = parse_expansion(subExpansion)
406 + expansionString = replace_substring(expansionString, s, end, subExpansion)
412 + return expansionString
415 +# Move cursor to next template field
416 +# If a field that looked like @-name@ was filled, we try fill out all other fields @-name@
417 +# with the text of the first one
418 +define goto_next_field {
419 + if ($last_field > 0) {
420 + entryStart = search("<", $cursor, "backward", "regex")
421 + if (entryStart > 0) {
422 + entry = get_range(entryStart, $cursor)
424 + replace_all("@-" $name_of_last_field "@", entry, "forward")
425 + set_cursor_pos(pos)
430 + $last_field = search("(@\\-[\\w]+@)", $cursor, "forward", "regex")
431 + if ($last_field > 0) {
432 + $name_of_last_field = get_range($last_field+2, $search_end-1)
435 + replace("(@[\\w/@\\>\\<\\.\\+\\-]+@)", "", "forward" , "regex")
439 +# Define new expansion (or template, however you like to call it). The text that should be
440 +# inserted must be selected before this routine is called. It then asks for the shortcut (or
441 +# abbreviation) that is assigned to the template. Before the new expansion is inserted into
442 +# the dictionary, we check whether the shortcut is already in use.
443 +define define_expansion {
445 + shortcut = string_dialog("Please enter the shortcut for the selected text" , "OK" , "Dismiss")
447 + if ((length(shortcut) == 0) || ($string_dialog_button == 0) || ($string_dialog_button == 2))
450 + expansionString = dict_complete("@@@" namespace() shortcut ":", 1, 0)
452 + if (length(expansionString) != 0) {
454 + dialog("Warning : Proposed shortcut is already used, please choose another one", "Dismiss")
458 + dict_insert("@@@" namespace() shortcut ":" get_selection())
463 diff --quilt /dev/null new/Dictionary/dicts/cpp.dict
465 +++ new/Dictionary/dicts/cpp.dict
467 +#Word completion for C++
469 +"::C++::break", 1000
471 +"::C++::catch", 1000
472 +"::C++::class", 1000
473 +"::C++::const", 1000
474 +"::C++::continue", 1000
475 +"::C++::default", 1000
476 +"::C++::define", 1000
477 +"::C++::delete", 1000
478 +"::C++::double", 1000
481 +"::C++::explicit", 1000
482 +"::C++::extern", 1000
483 +"::C++::float", 1000
486 +"::C++::friend", 1000
488 +"::C++::include", 1000
489 +"::C++::inline", 1000
491 +"::C++::iostream", 1000
494 +"::C++::malloc", 1000
496 +"::C++::namespace", 1000
498 +"::C++::operator", 1000
499 +"::C++::private", 1000
500 +"::C++::protected", 1000
501 +"::C++::public", 1000
502 +"::C++::realloc", 1000
503 +"::C++::register", 1000
504 +"::C++::return", 1000
505 +"::C++::short", 1000
506 +"::C++::static", 1000
507 +"::C++::stdio", 1000
508 +"::C++::stdlib", 1000
509 +"::C++::struct", 1000
510 +"::C++::switch", 1000
511 +"::C++::template", 1000
512 +"::C++::throw", 1000
514 +"::C++::typedef", 1000
515 +"::C++::typename", 1000
516 +"::C++::union", 1000
517 +"::C++::unsigned", 1000
518 +"::C++::virtual", 1000
520 +"::C++::volatile", 1000
521 +"::C++::while", 1000
523 +#Word completion for C
528 +"::C::continue", 1000
529 +"::C::default", 1000
539 +"::C::include", 1000
545 +"::C::realloc", 1000
546 +"::C::register", 1000
554 +"::C::typedef", 1000
556 +"::C::unsigned", 1000
558 +"::C::volatile", 1000
562 +"@@@::C++::cl:class @-name@ {
571 +"@@@::C++::str:struct @@@ {
574 +"@@@::C++::wh:while(@@@)
578 +"@@@::C++::fo:for(@@@;@@@;@@@)
582 +"@@@::C++::if:if(@@@)
586 +"@@@::C++::main:int main(int argc, char** argv)
593 +"@@@::C::str:struct @@@ {
596 +"@@@::C::wh:while(@@@)
600 +"@@@::C::fo:for(@@@;@@@;@@@)
608 +"@@@::C::main:int main(int argc, char** argv)
613 diff --quilt /dev/null new/Dictionary/dicts/english_top.dict
615 +++ new/Dictionary/dicts/english_top.dict
1459 +"Hewlett-Packard's"
2552 +"Telecommunications"
3124 +"application-specific"
4143 +"context-sensitive"
4523 +"desktop-publishing"
5406 +"fourth-generation"
5931 +"industry-standard"
6802 +"network-management"
7525 +"project-management"
8229 +"secretary-general"
8989 +"telecommunications"
9087 +"three-dimensional"
9725 diff --quilt /dev/null new/Dictionary/dicts/german.dict
9727 +++ new/Dictionary/dicts/german.dict
9748 +"Abweichungen", 122
9758 +"Adressierung", 102
9777 +"Alternativen", 151
9784 +"Andererseits", 277
9789 +"Anforderungen", 621
9807 +"Anrufbeantworter", 192
9824 +"Anwendungen", 1988
9832 +"Applikationen", 1296
9837 +"Arbeitsplatz", 146
9838 +"Arbeitsspeicher", 211
9839 +"Arbeitsweise", 196
9840 +"Architecture", 119
9863 +"Aufmerksamkeit", 112
9871 +"Aufzeichnung", 128
9883 +"Auslieferung", 127
9897 +"Auswirkungen", 178
9943 +"Beispielprogramm", 149
9944 +"Beispielsweise", 227
9955 +"Berechnungen", 169
9961 +"Berichtigungen", 125
9967 +"Beschleunigung", 115
9968 +"Beschreibung", 515
9970 +"Besonderheit", 200
9971 +"Besonderheiten", 165
9975 +"Bestandteile", 195
9978 +"Bestimmungen", 111
9987 +"Betriebssystem", 1395
9988 +"Betriebssysteme", 544
9989 +"Betriebssystemen", 265
9990 +"Betriebssystems", 353
9999 +"Bezugsquelle", 141
10001 +"Bibliotheken", 286
10005 +"Bildbearbeitung", 194
10011 +"Bildpunkten", 362
10012 +"Bildschirm", 1407
10013 +"Bildschirms", 109
10014 +"Bildschirmspeicher", 113
10015 +"Bildspeicher", 251
10016 +"Bildverarbeitung", 167
10017 +"Bildwiederholfrequenz", 146
10018 +"Bildwiederholrate", 109
10044 +"Braunschweig", 174
10105 +"Communication", 109
10106 +"Communications", 107
10112 +"Computergrafik", 120
10123 +"Coprozessor", 315
10127 +"Corporation", 146
10149 +"Darstellung", 971
10154 +"Dateimanager", 191
10156 +"Dateisystem", 202
10159 +"Datenaustausch", 316
10161 +"Datenbanken", 685
10163 +"Datendurchsatz", 123
10164 +"Datenkompression", 121
10166 +"Datenmengen", 230
10169 +"Datensicherung", 123
10171 +"Datenstruktur", 151
10172 +"Datenstrukturen", 156
10173 +"Datentransfer", 208
10174 +"Datentransferrate", 212
10185 +"Definitionen", 102
10186 +"Deklaration", 102
10206 +"Deutschland", 956
10208 +"Development", 196
10214 +"Dialogboxen", 208
10238 +"Diskettenlaufwerk", 130
10242 +"Distributor", 276
10246 +"Dokumentation", 1269
10252 +"Doppelklick", 217
10267 +"Druckertreiber", 166
10293 +"Eigenschaft", 244
10294 +"Eigenschaften", 647
10310 +"Einrichtung", 195
10312 +"Einschalten", 169
10314 +"Einstellung", 472
10315 +"Einstellungen", 612
10321 +"Electronics", 104
10337 +"Entscheidung", 270
10338 +"Entsprechend", 152
10340 +"Entwickler", 1360
10341 +"Entwicklern", 144
10342 +"Entwicklung", 1313
10343 +"Entwicklungen", 178
10344 +"Entwicklungssystem", 111
10345 +"Entwicklungsumgebung", 323
10347 +"Environment", 124
10354 +"Erfahrungen", 271
10358 +"Ergebnissen", 121
10367 +"Erwartungen", 155
10368 +"Erweiterung", 494
10369 +"Erweiterungen", 531
10414 +"Fehlerkorrektur", 164
10415 +"Fehlermeldung", 322
10416 +"Fehlermeldungen", 181
10418 +"Fehlersuche", 148
10429 +"Festplatte", 1889
10430 +"Festplatten", 688
10461 +"Fortschritt", 141
10480 +"Funktionen", 3022
10481 +"Funktionsumfang", 344
10482 +"Funktionsweise", 110
10496 +"Gegenstelle", 137
10501 +"Gelegenheit", 217
10503 +"Genauigkeit", 193
10504 +"Genehmigung", 100
10509 +"Geschwindigkeit", 1289
10510 +"Geschwindigkeiten", 123
10511 +"Gesellschaft", 187
10520 +"Gleichzeitig", 132
10527 +"Grafikkarte", 757
10528 +"Grafikkarten", 537
10529 +"Grafikmodus", 146
10539 +"Grundausstattung", 130
10541 +"Grundfarben", 100
10569 +"Hauptplatine", 104
10570 +"Hauptprogramm", 141
10571 +"Hauptspeicher", 768
10581 +"Herausgeber", 115
10585 +"Hersteller", 3043
10586 +"Herstellern", 231
10587 +"Herstellers", 282
10588 +"Herstellung", 230
10598 +"Hilfsmittel", 155
10603 +"Hintergrund", 700
10609 +"Hostadapter", 477
10630 +"Implementation", 196
10631 +"Implementierung", 334
10634 +"Inbetriebnahme", 125
10640 +"Information", 787
10641 +"Informationen", 2201
10646 +"Inhaltsverzeichnis", 149
10648 +"Initialisierung", 264
10651 +"Insbesondere", 196
10654 +"Installation", 1815
10655 +"Installationsprogramm", 198
10659 +"Instruments", 234
10661 +"Integration", 501
10663 +"Intelligenz", 183
10665 +"Interactive", 123
10666 +"Interessant", 180
10668 +"Interessenten", 133
10671 +"International", 213
10673 +"Interpolation", 111
10674 +"Interpreter", 193
10683 +"Jahresabonnement", 108
10727 +"Klassenbibliothek", 197
10728 +"Klassenbibliotheken", 105
10738 +"Kombination", 496
10739 +"Kombinationen", 117
10743 +"Kommandozeile", 142
10744 +"Kommunikation", 800
10746 +"Komponenten", 657
10747 +"Kompression", 394
10749 +"Konfiguration", 801
10750 +"Konfigurationen", 101
10751 +"Konkurrenten", 283
10754 +"Konstruktion", 151
10761 +"Kontrollfeld", 176
10763 +"Konvertierung", 182
10766 +"Kooperation", 123
10767 +"Koordinaten", 208
10773 +"Korrespondenz", 112
10782 +"Kundenkonto", 102
10789 +"Kurzmeldungen", 388
10800 +"Laserdrucker", 174
10807 +"Lautsprecher", 141
10811 +"Leerzeichen", 124
10820 +"Lesersprechstunde", 101
10829 +"Lieferumfang", 1079
10874 +"Makrosprache", 143
10881 +"Manipulation", 175
10885 +"Manuskripte", 100
10897 +"Massenspeicher", 101
10900 +"Mathematica", 171
10909 +"Mechanismen", 178
10910 +"Mechanismus", 218
10954 +"Mitarbeiter", 334
10958 +"Mittelpunkt", 107
10961 +"Mittlerweile", 177
10983 +"Motherboard", 233
10984 +"Motherboards", 125
10990 +"Multitasking", 306
11000 +"Nachrichten", 1049
11039 +"Normalerweise", 150
11045 +"Notwendigkeit", 112
11082 +"Operationen", 346
11084 +"Optimierung", 231
11091 +"Organisation", 170
11092 +"Orientierung", 114
11111 +"Partitionen", 157
11118 +"Performance", 1061
11139 +"Plattenplatz", 129
11141 +"Plattformen", 356
11166 +"Presentation", 212
11169 +"Printserver", 133
11180 +"Professional", 304
11184 +"Programmbeispiele", 354
11185 +"Programmcode", 116
11187 +"Programmen", 1205
11189 +"Programmieren", 170
11190 +"Programmierer", 1071
11191 +"Programmiersprache", 391
11192 +"Programmiersprachen", 197
11193 +"Programmierung", 986
11194 +"Programming", 250
11196 +"Programmstart", 105
11214 +"Prozessoren", 724
11250 +"Realisierung", 134
11252 +"Rechenleistung", 245
11274 +"Registrierung", 137
11276 +"Reihenfolge", 437
11336 +"Schnittstelle", 1331
11337 +"Schnittstellen", 718
11341 +"Schreibtisch", 160
11350 +"Schwerpunkt", 129
11351 +"Schwierigkeiten", 542
11417 +"Sonderzeichen", 146
11421 +"Soundkarten", 183
11433 +"Speicherbedarf", 160
11434 +"Speicherbereich", 201
11435 +"Speicherbereiche", 101
11437 +"Speicherplatz", 260
11439 +"Speicherung", 177
11440 +"Speicherverwaltung", 248
11443 +"Spezifikation", 189
11450 +"Spracherkennung", 122
11462 +"Startadresse", 105
11471 +"Steckkarten", 108
11489 +"Stromversorgung", 103
11508 +"Synchronisation", 112
11520 +"Tabellenkalkulation", 309
11527 +"Taktfrequenz", 315
11533 +"Tastendruck", 149
11534 +"Tastenkombination", 101
11541 +"Technologie", 225
11542 +"Technologies", 175
11550 +"Telefonleitung", 100
11551 +"Telefonnetz", 151
11552 +"Telefonnummer", 127
11553 +"Telefonnummern", 113
11555 +"Telekommunikation", 150
11562 +"Terminalprogramm", 180
11567 +"Testkandidaten", 163
11568 +"Testprogramm", 145
11574 +"Textdateien", 123
11581 +"Textverarbeitung", 656
11582 +"Textverarbeitungen", 102
11595 +"Tintenstrahldrucker", 110
11607 +"Transferrate", 241
11608 +"Transferraten", 113
11637 +"Umschaltung", 116
11652 +"Unternehmen", 437
11653 +"Unterscheidung", 122
11654 +"Unterschied", 601
11655 +"Unterschiede", 506
11656 +"Unterthema", 2069
11673 +"Veranstaltung", 111
11674 +"Verarbeitung", 196
11675 +"Verbesserung", 150
11676 +"Verbesserungen", 232
11677 +"Verbindung", 1602
11678 +"Verbindungen", 513
11679 +"Verbindungsaufbau", 150
11680 +"Verbreitung", 280
11682 +"Vergangenheit", 184
11690 +"Verschieben", 138
11693 +"Versionsnummer", 159
11700 +"Verwendung", 1003
11701 +"Verzeichnis", 573
11702 +"Verzeichnisse", 275
11705 +"Videorecorder", 102
11707 +"Videosignal", 111
11724 +"VisualBASIC", 357
11727 +"Vollversion", 193
11730 +"Voraussetzung", 305
11731 +"Voraussetzungen", 183
11732 +"Vorbereitung", 163
11734 +"Vordergrund", 286
11738 +"Vorgehensweise", 142
11743 +"Vorstellung", 212
11750 +"Wahrscheinlichkeit", 131
11753 +"Warteschlange", 100
11761 +"Wechselplatte", 138
11762 +"Wechselplatten", 186
11768 +"Weiterentwicklung", 148
11801 +"Wirklichkeit", 141
11804 +"Wissenschaft", 109
11809 +"WordPerfect", 605
11815 +"Workstation", 293
11816 +"Workstations", 327
11833 +"Zeichensatz", 219
11835 +"Zeichnungen", 138
11839 +"Zeilenfrequenz", 136
11847 +"Zivadinovic", 139
11854 +"Zugriffsrechte", 113
11855 +"Zugriffszeit", 207
11860 +"Zusammenarbeit", 378
11861 +"Zusammenhang", 423
11862 +"Zusammenspiel", 214
11870 +"Zwischenablage", 185
11874 +"abgedruckte", 119
11875 +"abgedruckten", 223
11877 +"abgeschaltet", 128
11878 +"abgeschlossen", 217
11880 +"abgespeichert", 151
11887 +"abspeichern", 151
11897 +"aktualisiert", 155
11910 +"allerdings", 4659
11914 +"allgemeinen", 480
11921 +"amerikanische", 244
11922 +"amerikanischen", 366
11932 +"andererseits", 246
11941 +"angebotenen", 187
11945 +"angegebenen", 251
11951 +"angeschlossen", 430
11952 +"angeschlossenen", 299
11954 +"angesprochen", 241
11962 +"anscheinend", 186
11980 +"aufeinander", 112
11982 +"aufgenommen", 210
11998 +"aufzunehmen", 100
12006 +"ausgeliefert", 345
12007 +"ausgeschaltet", 115
12008 +"ausgeschlossen", 142
12009 +"ausgesprochen", 145
12010 +"ausgestattet", 518
12011 +"ausgetauscht", 121
12012 +"ausgewertet", 100
12016 +"ausreichend", 346
12018 +"ausschalten", 116
12020 +"austauschen", 246
12023 +"automatisch", 1803
12024 +"automatische", 422
12025 +"automatischen", 223
12032 +"beansprucht", 125
12033 +"beantworten", 138
12042 +"beeinflussen", 170
12047 +"befindlichen", 149
12058 +"beherrschen", 287
12068 +"beispielsweise", 3309
12095 +"bereitstellen", 127
12096 +"bereitstellt", 113
12099 +"beschleunigen", 172
12100 +"beschleunigt", 159
12101 +"beschreiben", 345
12103 +"beschrieben", 480
12104 +"beschriebene", 157
12105 +"beschriebenen", 312
12121 +"bestehenden", 232
12131 +"beteiligten", 146
12136 +"betreffende", 106
12137 +"betreffenden", 156
12154 +"beziehungsweise", 2293
12216 +"dargestellt", 461
12222 +"darzustellen", 178
12233 +"definierten", 210
12236 +"demonstriert", 122
12252 +"derzeitigen", 136
12257 +"detaillierte", 116
12285 +"digitalisiert", 109
12293 +"dokumentiert", 213
12301 +"dreidimensionale", 122
12310 +"durchlaufen", 109
12315 +"dynamischen", 140
12332 +"eigentlich", 1200
12333 +"eigentliche", 549
12334 +"eigentlichen", 585
12352 +"einfachsten", 186
12355 +"eingebauten", 262
12357 +"eingebunden", 220
12359 +"eingerichtet", 172
12360 +"eingeschaltet", 141
12362 +"eingesetzten", 110
12363 +"eingestellt", 396
12364 +"eingetragen", 256
12365 +"einheitliche", 120
12374 +"einschalten", 127
12378 +"einstellbar", 109
12381 +"einwandfrei", 267
12391 +"einzusetzen", 212
12392 +"einzustellen", 123
12393 +"elektronische", 264
12394 +"elektronischen", 373
12395 +"elektronischer", 110
12399 +"empfehlenswert", 103
12418 +"enthaltenen", 232
12421 +"entscheiden", 269
12422 +"entscheidende", 101
12423 +"entscheidet", 159
12424 +"entschieden", 171
12425 +"entsprechen", 358
12426 +"entsprechend", 923
12427 +"entsprechende", 1064
12428 +"entsprechenden", 1273
12429 +"entsprechender", 223
12430 +"entsprechendes", 121
12439 +"entwickelte", 300
12440 +"entwickelten", 193
12444 +"erfolgreich", 298
12445 +"erfolgreichen", 112
12448 +"erforderlich", 773
12449 +"erforderlichen", 166
12470 +"erleichtern", 328
12471 +"erleichtert", 319
12474 +"ermittelten", 115
12488 +"erstaunlich", 152
12505 +"erweiterten", 366
12525 +"existierenden", 127
12550 +"fehlerhafte", 107
12561 +"festgelegten", 100
12563 +"feststellen", 240
12564 +"festzustellen", 112
12579 +"formatieren", 107
12589 +"freigegeben", 140
12595 +"funktionieren", 317
12596 +"funktioniert", 923
12597 +"funktionierte", 132
12622 +"gegebenenfalls", 402
12624 +"gegenseitig", 116
12630 +"gekennzeichnet", 134
12636 +"gelegentlich", 263
12640 +"gelieferten", 136
12648 +"gemeinsamen", 272
12684 +"geschlossen", 149
12685 +"geschrieben", 637
12691 +"gespeichert", 578
12692 +"gespeicherten", 153
12731 +"gleichzeitig", 1279
12742 +"grundlegende", 116
12743 +"grundlegenden", 111
12764 +"hergestellt", 162
12769 +"hervorragend", 105
12777 +"hierzulande", 145
12783 +"hinsichtlich", 243
12786 +"hintereinander", 101
12802 +"identifiziert", 113
12814 +"implementieren", 198
12815 +"implementiert", 467
12816 +"importieren", 131
12821 +"individuell", 148
12822 +"individuelle", 157
12823 +"individuellen", 107
12824 +"informieren", 145
12826 +"initialisieren", 161
12827 +"initialisiert", 225
12832 +"insbesondere", 680
12834 +"installieren", 556
12835 +"installiert", 816
12836 +"installierten", 166
12837 +"integrieren", 267
12839 +"integrierte", 422
12840 +"integriertem", 159
12841 +"integrierten", 462
12842 +"integrierter", 141
12843 +"intelligente", 100
12845 +"interaktive", 237
12846 +"interaktiven", 188
12847 +"interessant", 491
12848 +"interessante", 309
12849 +"interessanten", 145
12850 +"interessanter", 104
12851 +"interessieren", 123
12852 +"interessiert", 205
12854 +"internationalen", 138
12857 +"interpretiert", 165
12858 +"investieren", 127
12861 +"irgendwelche", 120
12894 +"keinesfalls", 134
12901 +"klassischen", 286
12914 +"komfortabel", 202
12915 +"komfortable", 152
12918 +"kommerzielle", 178
12919 +"kommerziellen", 236
12921 +"kommunizieren", 229
12923 +"kompilieren", 107
12932 +"kompliziert", 129
12933 +"komplizierter", 131
12934 +"komprimiert", 218
12935 +"komprimierte", 100
12936 +"komprimierten", 118
12937 +"konfigurieren", 209
12938 +"konfiguriert", 200
12944 +"kontrollieren", 103
12945 +"konventionellen", 117
12946 +"konvertieren", 128
12947 +"konvertiert", 157
12954 +"korrigieren", 144
13005 +"letztendlich", 127
13045 +"manipulieren", 148
13049 +"mathematische", 112
13050 +"mathematischen", 143
13072 +"menschliche", 152
13073 +"menschlichen", 174
13081 +"miteinander", 538
13082 +"mitgeliefert", 239
13083 +"mitgelieferte", 405
13084 +"mitgelieferten", 590
13089 +"mittlerweile", 640
13095 +"modifiziert", 104
13101 +"nacheinander", 160
13109 +"nebeneinander", 108
13140 +"normalerweise", 368
13144 +"notwendigen", 460
13147 +"numerischen", 120
13157 +"objektorientierte", 302
13158 +"objektorientierten", 258
13165 +"offensichtlich", 317
13168 +"offiziellen", 112
13182 +"organisiert", 145
13183 +"orientieren", 107
13195 +"physikalisch", 139
13196 +"physikalische", 176
13197 +"physikalischen", 174
13209 +"praktischen", 147
13212 +"preiswerten", 157
13213 +"preiswerter", 102
13215 +"prinzipiell", 194
13220 +"produzieren", 155
13222 +"professionelle", 227
13223 +"professionellen", 322
13224 +"profitieren", 202
13225 +"programmieren", 287
13226 +"programmiert", 254
13235 +"realisieren", 406
13243 +"rechtzeitig", 121
13247 +"registriert", 117
13294 +"schnelleren", 197
13297 +"schnellsten", 184
13315 +"seinerseits", 105
13336 +"sichergestellt", 106
13339 +"sicherstellen", 102
13347 +"signalisiert", 124
13361 +"sogenannten", 836
13362 +"sogenannter", 136
13363 +"sogenanntes", 120
13396 +"spezifiziert", 135
13438 +"technischen", 501
13439 +"technischer", 120
13450 +"theoretisch", 194
13455 +"transparent", 166
13469 +"typischerweise", 106
13470 +"umfangreiche", 264
13471 +"umfangreichen", 226
13479 +"unmittelbar", 294
13490 +"unterbringen", 115
13492 +"untereinander", 249
13494 +"untergebracht", 222
13496 +"unterscheiden", 632
13497 +"unterscheidet", 515
13498 +"unterschiedlich", 279
13499 +"unterschiedliche", 594
13500 +"unterschiedlichen", 563
13501 +"unterschiedlicher", 197
13502 +"unterstützen", 790
13503 +"untersuchen", 115
13506 +"verantwortlich", 330
13507 +"verarbeiten", 231
13508 +"verarbeitet", 284
13512 +"verbesserte", 177
13518 +"verbreitete", 125
13519 +"verbreiteten", 199
13521 +"verbundenen", 102
13524 +"vereinfachen", 154
13525 +"vereinfacht", 179
13529 +"vergangenen", 135
13533 +"vergleichbar", 203
13534 +"vergleichen", 217
13535 +"vergleichsweise", 185
13554 +"verschaffen", 128
13555 +"verschicken", 114
13557 +"verschieben", 250
13559 +"verschieden", 120
13560 +"verschiedene", 1628
13561 +"verschiedenen", 1958
13562 +"verschiedener", 367
13563 +"verschiedensten", 115
13565 +"verschwinden", 111
13566 +"verschwunden", 104
13572 +"versprechen", 132
13595 +"verwendeten", 557
13616 +"voneinander", 277
13620 +"vorausgesetzt", 336
13621 +"voraussichtlich", 140
13622 +"vorbehalten", 182
13624 +"vorbereitet", 119
13625 +"vordefinierten", 103
13627 +"vorgegebenen", 172
13628 +"vorgenommen", 198
13630 +"vorgesehenen", 111
13631 +"vorgestellt", 1240
13632 +"vorgestellte", 216
13633 +"vorgestellten", 425
13636 +"vorhandenen", 649
13640 +"vorliegende", 137
13641 +"vorliegenden", 236
13646 +"vornehmlich", 127
13649 +"vorzunehmen", 110
13652 +"wahrscheinlich", 270
13697 +"wesentliche", 212
13698 +"wesentlichen", 604
13706 +"wichtigsten", 609
13709 +"wiederholen", 103
13736 +"zahlreichen", 354
13754 +"zufriedenstellend", 505
13768 +"zusammenarbeiten", 105
13769 +"zusammenfassen", 100
13773 +"zuzugreifen", 122
13784 +"Änderungen", 808
13786 +"übertragen", 827
13788 diff --quilt /dev/null new/Dictionary/dicts/german_latex.dict
13790 +++ new/Dictionary/dicts/german_latex.dict
13792 +"::LaTeX::Abf\"alle"
13793 +"::LaTeX::Abh\"angigkeit"
13794 +"::LaTeX::Abl\"osung"
13795 +"::LaTeX::Aff\"are"
13796 +"::LaTeX::Aktion\"are"
13797 +"::LaTeX::Aktion\"aren"
13798 +"::LaTeX::Aktivit\"aten"
13799 +"::LaTeX::Anf\"uhrer"
13800 +"::LaTeX::Angeh\"orige"
13801 +"::LaTeX::Angeh\"origen"
13802 +"::LaTeX::Anh\"anger"
13803 +"::LaTeX::Anh\"angern"
13804 +"::LaTeX::Anh\"orung"
13805 +"::LaTeX::Ank\"undigung"
13806 +"::LaTeX::Ann\"aherung"
13807 +"::LaTeX::Ans\"atze"
13808 +"::LaTeX::Anschl\"age"
13809 +"::LaTeX::Anschl\"agen"
13810 +"::LaTeX::Anspr\"uche"
13811 +"::LaTeX::Anspr\"uchen"
13812 +"::LaTeX::Antr\"age"
13813 +"::LaTeX::Anw\"alte"
13814 +"::LaTeX::Arbeitskr\"afte"
13815 +"::LaTeX::Arbeitspl\"atze"
13816 +"::LaTeX::Arbeitspl\"atzen"
13817 +"::LaTeX::Atmosph\"are"
13818 +"::LaTeX::Attraktivit\"at"
13819 +"::LaTeX::Auff\"uhrung"
13820 +"::LaTeX::Auff\"uhrungen"
13821 +"::LaTeX::Aufkl\"arung"
13822 +"::LaTeX::Aufl\"osung"
13823 +"::LaTeX::Auftr\"age"
13824 +"::LaTeX::Ausf\"uhrung"
13825 +"::LaTeX::Ausf\"uhrungen"
13826 +"::LaTeX::Ausk\"unfte"
13827 +"::LaTeX::Ausl\"ander"
13828 +"::LaTeX::Ausl\"anderfeindlichkeit"
13829 +"::LaTeX::Ausl\"andern"
13830 +"::LaTeX::Ausl\"oser"
13831 +"::LaTeX::Ausr\"ustung"
13832 +"::LaTeX::Autorit\"at"
13833 +"::LaTeX::B\"acker"
13834 +"::LaTeX::B\"alle"
13835 +"::LaTeX::B\"ande"
13836 +"::LaTeX::B\"aume"
13837 +"::LaTeX::B\"aumen"
13838 +"::LaTeX::B\"oblingen"
13839 +"::LaTeX::B\"oblinger"
13840 +"::LaTeX::B\"oden"
13841 +"::LaTeX::B\"orse"
13842 +"::LaTeX::B\"orsen"
13844 +"::LaTeX::B\"ucher"
13845 +"::LaTeX::B\"uchern"
13846 +"::LaTeX::B\"uhne"
13847 +"::LaTeX::B\"uhnen"
13848 +"::LaTeX::B\"undnis"
13849 +"::LaTeX::B\"undnisgr\"unen"
13850 +"::LaTeX::B\"urger"
13851 +"::LaTeX::B\"urgerhaus"
13852 +"::LaTeX::B\"urgerinitiative"
13853 +"::LaTeX::B\"urgerinnen"
13854 +"::LaTeX::B\"urgerkrieg"
13855 +"::LaTeX::B\"urgermeister"
13856 +"::LaTeX::B\"urgermeisterin"
13857 +"::LaTeX::B\"urgermeisters"
13858 +"::LaTeX::B\"urgern"
13859 +"::LaTeX::B\"urgerschaft"
13860 +"::LaTeX::B\"urgerversammlung"
13862 +"::LaTeX::B\"urokratie"
13863 +"::LaTeX::B\"uros"
13864 +"::LaTeX::Baden-W\"urttemberg"
13865 +"::LaTeX::Bed\"urfnis"
13866 +"::LaTeX::Bed\"urfnisse"
13867 +"::LaTeX::Bef\"urchtung"
13868 +"::LaTeX::Bef\"urchtungen"
13869 +"::LaTeX::Bef\"urworter"
13870 +"::LaTeX::Begr\"undung"
13871 +"::LaTeX::Beh\"orde"
13872 +"::LaTeX::Beh\"orden"
13873 +"::LaTeX::Beitr\"age"
13874 +"::LaTeX::Beitr\"agen"
13875 +"::LaTeX::Bek\"ampfung"
13876 +"::LaTeX::Bem\"uhen"
13877 +"::LaTeX::Bem\"uhungen"
13878 +"::LaTeX::Ber\"ucksichtigung"
13879 +"::LaTeX::Besch\"aftigte"
13880 +"::LaTeX::Besch\"aftigten"
13881 +"::LaTeX::Besch\"aftigung"
13882 +"::LaTeX::Beschl\"usse"
13883 +"::LaTeX::Beschr\"ankung"
13884 +"::LaTeX::Best\"atigung"
13885 +"::LaTeX::Betr\"age"
13886 +"::LaTeX::Bev\"olkerung"
13887 +"::LaTeX::Bew\"ahrung"
13888 +"::LaTeX::Bez\"uge"
13889 +"::LaTeX::Bisch\"ofe"
13890 +"::LaTeX::Bl\"atter"
13891 +"::LaTeX::Bl\"attern"
13893 +"::LaTeX::Bl\"uten"
13894 +"::LaTeX::Br\"ucke"
13895 +"::LaTeX::Br\"ucken"
13896 +"::LaTeX::Br\"uder"
13897 +"::LaTeX::Br\"ussel"
13898 +"::LaTeX::Br\"usseler"
13899 +"::LaTeX::Brosch\"ure"
13900 +"::LaTeX::Bundesb\"urger"
13901 +"::LaTeX::Bundesl\"ander"
13902 +"::LaTeX::Bundesl\"andern"
13903 +"::LaTeX::Bundespr\"asident"
13904 +"::LaTeX::Bundespr\"asidenten"
13905 +"::LaTeX::D\"anemark"
13906 +"::LaTeX::D\"anen"
13907 +"::LaTeX::D\"orfer"
13908 +"::LaTeX::D\"orfern"
13909 +"::LaTeX::D\"usseldorf"
13910 +"::LaTeX::D\"usseldorfer"
13911 +"::LaTeX::Daf\"ur"
13912 +"::LaTeX::Dar\"uber"
13913 +"::LaTeX::Darmst\"adter"
13914 +"::LaTeX::Durchf\"uhrung"
13915 +"::LaTeX::Eigent\"umer"
13916 +"::LaTeX::Einf\"uhrung"
13917 +"::LaTeX::Einfl\"usse"
13918 +"::LaTeX::Eins\"atze"
13919 +"::LaTeX::Einsch\"atzung"
13920 +"::LaTeX::Einschr\"ankung"
13921 +"::LaTeX::Einschr\"ankungen"
13922 +"::LaTeX::Einw\"ande"
13923 +"::LaTeX::Emp\"orung"
13924 +"::LaTeX::Empf\"anger"
13925 +"::LaTeX::Engl\"ander"
13926 +"::LaTeX::Entf\"uhrung"
13927 +"::LaTeX::Entsch\"adigung"
13928 +"::LaTeX::Entt\"auschung"
13929 +"::LaTeX::Entw\"urfe"
13930 +"::LaTeX::Entwicklungsl\"ander"
13931 +"::LaTeX::Entwicklungsl\"andern"
13932 +"::LaTeX::Er\"offnung"
13933 +"::LaTeX::Erf\"ullung"
13934 +"::LaTeX::Erg\"anzung"
13935 +"::LaTeX::Erh\"ohung"
13936 +"::LaTeX::Erkl\"arung"
13937 +"::LaTeX::Erkl\"arungen"
13938 +"::LaTeX::Erl\"os"
13939 +"::LaTeX::Ern\"ahrung"
13940 +"::LaTeX::Ertr\"age"
13941 +"::LaTeX::Erz\"ahler"
13942 +"::LaTeX::Erz\"ahlung"
13943 +"::LaTeX::Erz\"ahlungen"
13944 +"::LaTeX::Europ\"aer"
13945 +"::LaTeX::Europ\"aische"
13946 +"::LaTeX::Europ\"aischen"
13947 +"::LaTeX::F\"ahigkeit"
13948 +"::LaTeX::F\"ahigkeiten"
13949 +"::LaTeX::F\"alle"
13950 +"::LaTeX::F\"allen"
13951 +"::LaTeX::F\"oderation"
13952 +"::LaTeX::F\"orderung"
13953 +"::LaTeX::F\"orster"
13954 +"::LaTeX::F\"u"se"
13955 +"::LaTeX::F\"u"sen"
13956 +"::LaTeX::F\"uhrer"
13957 +"::LaTeX::F\"uhrerschein"
13958 +"::LaTeX::F\"uhrung"
13959 +"::LaTeX::F\"uhrungen"
13960 +"::LaTeX::F\"ulle"
13962 +"::LaTeX::F\"unftel"
13964 +"::LaTeX::Fahrg\"aste"
13965 +"::LaTeX::Fakult\"at"
13966 +"::LaTeX::Fl\"ache"
13967 +"::LaTeX::Fl\"achen"
13968 +"::LaTeX::Fl\"uchtlinge"
13969 +"::LaTeX::Fl\"uchtlingen"
13970 +"::LaTeX::Fl\"uge"
13971 +"::LaTeX::Fl\"ugel"
13972 +"::LaTeX::Fl\"usse"
13973 +"::LaTeX::Flexibilit\"at"
13974 +"::LaTeX::Flugh\"afen"
13975 +"::LaTeX::Fr\"uchte"
13976 +"::LaTeX::Fr\"uher"
13977 +"::LaTeX::Fr\"uhjahr"
13978 +"::LaTeX::Fr\"uhling"
13979 +"::LaTeX::Fr\"uhst\"uck"
13980 +"::LaTeX::Fu"sg\"anger"
13981 +"::LaTeX::Fu"sg\"angerzone"
13982 +"::LaTeX::Funktion\"are"
13983 +"::LaTeX::G\"arten"
13984 +"::LaTeX::G\"artner"
13985 +"::LaTeX::G\"aste"
13986 +"::LaTeX::G\"asten"
13987 +"::LaTeX::G\"oppingen"
13988 +"::LaTeX::G\"otter"
13989 +"::LaTeX::G\"ottingen"
13990 +"::LaTeX::G\"unter"
13991 +"::LaTeX::G\"unther"
13992 +"::LaTeX::G\"uter"
13993 +"::LaTeX::Gastst\"atte"
13994 +"::LaTeX::Geb\"aude"
13995 +"::LaTeX::Geb\"auden"
13996 +"::LaTeX::Geb\"audes"
13997 +"::LaTeX::Geb\"uhr"
13998 +"::LaTeX::Geb\"uhren"
13999 +"::LaTeX::Ged\"achtnis"
14000 +"::LaTeX::Gef\"ahrdung"
14001 +"::LaTeX::Gef\"angnis"
14002 +"::LaTeX::Gef\"uhl"
14003 +"::LaTeX::Gef\"uhle"
14004 +"::LaTeX::Gef\"uhlen"
14005 +"::LaTeX::Gegen\"uber"
14006 +"::LaTeX::Gegenst\"ande"
14007 +"::LaTeX::Geh\"alter"
14008 +"::LaTeX::Geh\"or"
14009 +"::LaTeX::Gel\"ande"
14010 +"::LaTeX::Gem\"alde"
14011 +"::LaTeX::Gem\"use"
14012 +"::LaTeX::Generalsekret\"ar"
14013 +"::LaTeX::Gep\"ack"
14014 +"::LaTeX::Ger\"at"
14015 +"::LaTeX::Ger\"ate"
14016 +"::LaTeX::Ger\"aten"
14017 +"::LaTeX::Ger\"uchte"
14018 +"::LaTeX::Gesch\"aft"
14019 +"::LaTeX::Gesch\"afte"
14020 +"::LaTeX::Gesch\"aften"
14021 +"::LaTeX::Gesch\"aftsf\"uhrer"
14022 +"::LaTeX::Gesch\"aftsf\"uhrung"
14023 +"::LaTeX::Gesch\"aftsjahr"
14024 +"::LaTeX::Gesch\"aftsleitung"
14025 +"::LaTeX::Gesch\"aftsleute"
14026 +"::LaTeX::Gesch\"aftsmann"
14027 +"::LaTeX::Gesch\"aftsstelle"
14028 +"::LaTeX::Gespr\"ach"
14029 +"::LaTeX::Gespr\"ache"
14030 +"::LaTeX::Gespr\"achen"
14031 +"::LaTeX::Gespr\"achspartner"
14032 +"::LaTeX::Gest\"andnis"
14033 +"::LaTeX::Getr\"anke"
14034 +"::LaTeX::Gew\"asser"
14035 +"::LaTeX::Gl\"aubigen"
14036 +"::LaTeX::Gl\"aubiger"
14037 +"::LaTeX::Gl\"uck"
14038 +"::LaTeX::Glaubw\"urdigkeit"
14039 +"::LaTeX::Gr\"o"se"
14040 +"::LaTeX::Gr\"o"sen"
14041 +"::LaTeX::Gr\"o"senordnung"
14043 +"::LaTeX::Gr\"unde"
14044 +"::LaTeX::Gr\"unden"
14045 +"::LaTeX::Gr\"under"
14046 +"::LaTeX::Gr\"undung"
14047 +"::LaTeX::Gr\"une"
14048 +"::LaTeX::Gr\"unen"
14049 +"::LaTeX::Gro"sst\"adten"
14050 +"::LaTeX::Grunds\"atze"
14051 +"::LaTeX::Grunds\"atzlich"
14052 +"::LaTeX::Grundst\"uck"
14053 +"::LaTeX::Grundst\"ucke"
14054 +"::LaTeX::H\"aftlinge"
14055 +"::LaTeX::H\"alfte"
14056 +"::LaTeX::H\"ande"
14057 +"::LaTeX::H\"anden"
14058 +"::LaTeX::H\"andler"
14059 +"::LaTeX::H\"arte"
14060 +"::LaTeX::H\"atte"
14061 +"::LaTeX::H\"auser"
14062 +"::LaTeX::H\"ausern"
14063 +"::LaTeX::H\"ochst"
14064 +"::LaTeX::H\"ochster"
14066 +"::LaTeX::H\"ohen"
14067 +"::LaTeX::H\"ohepunkt"
14068 +"::LaTeX::H\"olle"
14069 +"::LaTeX::H\"orer"
14070 +"::LaTeX::H\"ugel"
14071 +"::LaTeX::H\"urde"
14072 +"::LaTeX::H\"urden"
14073 +"::LaTeX::H\"utte"
14074 +"::LaTeX::Hans-J\"urgen"
14075 +"::LaTeX::Haust\"ur"
14076 +"::LaTeX::Hintergr\"unde"
14077 +"::LaTeX::Holl\"ander"
14078 +"::LaTeX::Identit\"at"
14079 +"::LaTeX::Intensit\"at"
14080 +"::LaTeX::J\"ager"
14082 +"::LaTeX::J\"urgen"
14083 +"::LaTeX::Jahres\"uberschu"s"
14084 +"::LaTeX::Jubil\"aum"
14085 +"::LaTeX::K\"alte"
14086 +"::LaTeX::K\"ammerer"
14087 +"::LaTeX::K\"ampfe"
14088 +"::LaTeX::K\"ampfen"
14089 +"::LaTeX::K\"ampfer"
14091 +"::LaTeX::K\"aufer"
14092 +"::LaTeX::K\"ohler"
14094 +"::LaTeX::K\"olner"
14095 +"::LaTeX::K\"onig"
14096 +"::LaTeX::K\"onigin"
14097 +"::LaTeX::K\"onigreich"
14098 +"::LaTeX::K\"onigs"
14099 +"::LaTeX::K\"onnen"
14100 +"::LaTeX::K\"opfe"
14101 +"::LaTeX::K\"opfen"
14102 +"::LaTeX::K\"orper"
14103 +"::LaTeX::K\"orpers"
14104 +"::LaTeX::K\"orperverletzung"
14105 +"::LaTeX::K\"uche"
14107 +"::LaTeX::K\"undigung"
14108 +"::LaTeX::K\"unftig"
14109 +"::LaTeX::K\"unste"
14110 +"::LaTeX::K\"unstler"
14111 +"::LaTeX::K\"unstlerin"
14112 +"::LaTeX::K\"unstlern"
14113 +"::LaTeX::K\"unstlers"
14114 +"::LaTeX::K\"urze"
14115 +"::LaTeX::K\"urzung"
14116 +"::LaTeX::K\"urzungen"
14117 +"::LaTeX::K\"uste"
14118 +"::LaTeX::Kan\"ale"
14119 +"::LaTeX::Kapazit\"at"
14120 +"::LaTeX::Kapazit\"aten"
14121 +"::LaTeX::Kapit\"an"
14122 +"::LaTeX::Kapitalerh\"ohung"
14123 +"::LaTeX::Kinderg\"arten"
14124 +"::LaTeX::Kl\"ager"
14125 +"::LaTeX::Kl\"arung"
14126 +"::LaTeX::Kom\"odie"
14127 +"::LaTeX::Kontinuit\"at"
14128 +"::LaTeX::Kr\"afte"
14129 +"::LaTeX::Kr\"aften"
14130 +"::LaTeX::Kr\"uger"
14131 +"::LaTeX::Krankenh\"auser"
14132 +"::LaTeX::Krankenh\"ausern"
14133 +"::LaTeX::Kreativit\"at"
14134 +"::LaTeX::Kriminalit\"at"
14135 +"::LaTeX::L\"acheln"
14136 +"::LaTeX::L\"aden"
14137 +"::LaTeX::L\"ander"
14138 +"::LaTeX::L\"andern"
14139 +"::LaTeX::L\"ange"
14140 +"::LaTeX::L\"angst"
14142 +"::LaTeX::L\"aufer"
14143 +"::LaTeX::L\"ocher"
14144 +"::LaTeX::L\"ohne"
14145 +"::LaTeX::L\"osung"
14146 +"::LaTeX::L\"osungen"
14147 +"::LaTeX::L\"owen"
14148 +"::LaTeX::L\"ubeck"
14149 +"::LaTeX::L\"ubecker"
14150 +"::LaTeX::L\"ucke"
14151 +"::LaTeX::L\"ucken"
14153 +"::LaTeX::L\"ugen"
14154 +"::LaTeX::Leistungsf\"ahigkeit"
14155 +"::LaTeX::Lekt\"ure"
14156 +"::LaTeX::M\"adchen"
14157 +"::LaTeX::M\"angel"
14158 +"::LaTeX::M\"anner"
14159 +"::LaTeX::M\"annern"
14160 +"::LaTeX::M\"archen"
14161 +"::LaTeX::M\"arkte"
14162 +"::LaTeX::M\"arkten"
14164 +"::LaTeX::M\"obel"
14165 +"::LaTeX::M\"oglicherweise"
14166 +"::LaTeX::M\"oglichkeit"
14167 +"::LaTeX::M\"oglichkeiten"
14168 +"::LaTeX::M\"ollemann"
14169 +"::LaTeX::M\"oller"
14170 +"::LaTeX::M\"onchengladbach"
14171 +"::LaTeX::M\"order"
14174 +"::LaTeX::M\"uller"
14175 +"::LaTeX::M\"unchen"
14176 +"::LaTeX::M\"unchener"
14177 +"::LaTeX::M\"unchens"
14178 +"::LaTeX::M\"unchner"
14179 +"::LaTeX::M\"unster"
14180 +"::LaTeX::M\"unzen"
14181 +"::LaTeX::M\"utter"
14182 +"::LaTeX::Ma"sst\"abe"
14183 +"::LaTeX::Mail\"ander"
14184 +"::LaTeX::Man\"over"
14185 +"::LaTeX::Marktf\"uhrer"
14186 +"::LaTeX::Matth\"aus"
14187 +"::LaTeX::Milit\"ar"
14188 +"::LaTeX::Milit\"ars"
14189 +"::LaTeX::Millionenh\"ohe"
14190 +"::LaTeX::Ministerpr\"asident"
14191 +"::LaTeX::Ministerpr\"asidenten"
14192 +"::LaTeX::Mitb\"urger"
14193 +"::LaTeX::Mobilit\"at"
14194 +"::LaTeX::N\"achte"
14196 +"::LaTeX::N\"ahere"
14197 +"::LaTeX::N\"urnberg"
14198 +"::LaTeX::N\"urnberger"
14199 +"::LaTeX::Nat\"urlich"
14200 +"::LaTeX::Natursch\"utzer"
14201 +"::LaTeX::Niederl\"ander"
14202 +"::LaTeX::Normalit\"at"
14203 +"::LaTeX::Oberb\"urgermeister"
14204 +"::LaTeX::Oberfl\"ache"
14205 +"::LaTeX::P\"adagogen"
14206 +"::LaTeX::Pal\"astinenser"
14207 +"::LaTeX::Pal\"astinensern"
14208 +"::LaTeX::Parkpl\"atze"
14209 +"::LaTeX::Pers\"onlichkeit"
14210 +"::LaTeX::Pers\"onlichkeiten"
14211 +"::LaTeX::Ph\"anomen"
14212 +"::LaTeX::Pl\"adoyer"
14213 +"::LaTeX::Pl\"ane"
14214 +"::LaTeX::Pl\"anen"
14215 +"::LaTeX::Pl\"atze"
14216 +"::LaTeX::Pl\"atzen"
14217 +"::LaTeX::Pl\"otzlich"
14218 +"::LaTeX::Popularit\"at"
14219 +"::LaTeX::Portr\"at"
14220 +"::LaTeX::Pr\"asentation"
14221 +"::LaTeX::Pr\"asenz"
14222 +"::LaTeX::Pr\"asident"
14223 +"::LaTeX::Pr\"asidenten"
14224 +"::LaTeX::Pr\"asidentin"
14225 +"::LaTeX::Pr\"asidium"
14226 +"::LaTeX::Pr\"ufung"
14227 +"::LaTeX::Priorit\"at"
14228 +"::LaTeX::Produktivit\"at"
14229 +"::LaTeX::Qualit\"at"
14230 +"::LaTeX::Qualit\"aten"
14231 +"::LaTeX::R\"ader"
14232 +"::LaTeX::R\"atsel"
14233 +"::LaTeX::R\"auber"
14234 +"::LaTeX::R\"aume"
14235 +"::LaTeX::R\"aumen"
14236 +"::LaTeX::R\"aumung"
14237 +"::LaTeX::R\"omer"
14238 +"::LaTeX::R\"uckblick"
14239 +"::LaTeX::R\"ucken"
14240 +"::LaTeX::R\"uckf\"uhrung"
14241 +"::LaTeX::R\"uckgabe"
14242 +"::LaTeX::R\"uckgang"
14243 +"::LaTeX::R\"uckkehr"
14244 +"::LaTeX::R\"ucksicht"
14245 +"::LaTeX::R\"uckstand"
14246 +"::LaTeX::R\"ucktritt"
14247 +"::LaTeX::R\"uckzug"
14248 +"::LaTeX::R\"udiger"
14250 +"::LaTeX::R\"usselsheim"
14251 +"::LaTeX::R\"uttgers"
14252 +"::LaTeX::Realit\"at"
14253 +"::LaTeX::Regierungspr\"asidium"
14254 +"::LaTeX::Reiseb\"uros"
14255 +"::LaTeX::Repr\"asentanten"
14256 +"::LaTeX::Rot-Gr\"un"
14257 +"::LaTeX::Rum\"anien"
14258 +"::LaTeX::S\"anger"
14259 +"::LaTeX::S\"angerin"
14260 +"::LaTeX::S\"atze"
14261 +"::LaTeX::S\"atzen"
14262 +"::LaTeX::S\"aulen"
14263 +"::LaTeX::S\"ohne"
14265 +"::LaTeX::S\"udafrika"
14266 +"::LaTeX::S\"udafrikas"
14267 +"::LaTeX::S\"udamerika"
14268 +"::LaTeX::S\"uden"
14269 +"::LaTeX::S\"udkorea"
14270 +"::LaTeX::S\"udosten"
14271 +"::LaTeX::S\"udwesten"
14272 +"::LaTeX::Saarbr\"ucken"
14273 +"::LaTeX::Sachverst\"andigen"
14274 +"::LaTeX::Sch\"aden"
14275 +"::LaTeX::Sch\"afer"
14276 +"::LaTeX::Sch\"atzung"
14277 +"::LaTeX::Sch\"atzungen"
14278 +"::LaTeX::Sch\"auble"
14279 +"::LaTeX::Sch\"on"
14280 +"::LaTeX::Sch\"one"
14281 +"::LaTeX::Sch\"onheit"
14282 +"::LaTeX::Sch\"uler"
14283 +"::LaTeX::Sch\"ulerin"
14284 +"::LaTeX::Sch\"ulerinnen"
14285 +"::LaTeX::Sch\"ulern"
14286 +"::LaTeX::Sch\"usse"
14287 +"::LaTeX::Schl\"age"
14288 +"::LaTeX::Schl\"ussel"
14289 +"::LaTeX::Schr\"oder"
14290 +"::LaTeX::Schw\"ache"
14291 +"::LaTeX::Schw\"achen"
14292 +"::LaTeX::Selbst\"andigkeit"
14293 +"::LaTeX::Sexualit\"at"
14294 +"::LaTeX::Sicherheitskr\"afte"
14295 +"::LaTeX::Solidarit\"at"
14296 +"::LaTeX::Souver\"anit\"at"
14297 +"::LaTeX::Sozialhilfeempf\"anger"
14298 +"::LaTeX::Sp\"ater"
14299 +"::LaTeX::Sp\"atestens"
14300 +"::LaTeX::St\"adte"
14301 +"::LaTeX::St\"adten"
14302 +"::LaTeX::St\"amme"
14303 +"::LaTeX::St\"arke"
14304 +"::LaTeX::St\"arkung"
14305 +"::LaTeX::St\"orungen"
14306 +"::LaTeX::St\"uck"
14307 +"::LaTeX::St\"ucke"
14308 +"::LaTeX::St\"ucken"
14309 +"::LaTeX::St\"uhle"
14310 +"::LaTeX::St\"urmer"
14311 +"::LaTeX::Staatsanw\"alte"
14312 +"::LaTeX::Staatsb\"urgerschaft"
14313 +"::LaTeX::Staatspr\"asident"
14314 +"::LaTeX::Staatspr\"asidenten"
14315 +"::LaTeX::Staatssekret\"ar"
14316 +"::LaTeX::Stabilit\"at"
14317 +"::LaTeX::Stadtb\"ucherei"
14318 +"::LaTeX::Stadtr\"ate"
14319 +"::LaTeX::Stadtr\"atin"
14320 +"::LaTeX::Streitkr\"afte"
14321 +"::LaTeX::T\"anzer"
14322 +"::LaTeX::T\"ater"
14323 +"::LaTeX::T\"atern"
14324 +"::LaTeX::T\"atigkeit"
14325 +"::LaTeX::T\"atigkeiten"
14326 +"::LaTeX::T\"ochter"
14328 +"::LaTeX::T\"opfer"
14329 +"::LaTeX::T\"otung"
14330 +"::LaTeX::T\"ubingen"
14331 +"::LaTeX::T\"ubinger"
14333 +"::LaTeX::T\"uren"
14334 +"::LaTeX::T\"urkei"
14335 +"::LaTeX::T\"urken"
14336 +"::LaTeX::Tats\"achlich"
14337 +"::LaTeX::Th\"uringen"
14338 +"::LaTeX::Th\"uringer"
14339 +"::LaTeX::Torh\"uter"
14340 +"::LaTeX::Torj\"ager"
14341 +"::LaTeX::Tr\"ager"
14342 +"::LaTeX::Tr\"anen"
14343 +"::LaTeX::Tr\"aume"
14344 +"::LaTeX::Trag\"odie"
14345 +"::LaTeX::Trib\"une"
14346 +"::LaTeX::US-Pr\"asident"
14347 +"::LaTeX::Ums\"atze"
14348 +"::LaTeX::Umst\"ande"
14349 +"::LaTeX::Umst\"anden"
14350 +"::LaTeX::Umweltsch\"utzer"
14351 +"::LaTeX::Unabh\"angigkeit"
14352 +"::LaTeX::Unf\"alle"
14353 +"::LaTeX::Unf\"allen"
14354 +"::LaTeX::Ungl\"uck"
14355 +"::LaTeX::Universit\"at"
14356 +"::LaTeX::Universit\"aten"
14357 +"::LaTeX::Unterdr\"uckung"
14358 +"::LaTeX::Unterst\"utzung"
14359 +"::LaTeX::Urauff\"uhrung"
14360 +"::LaTeX::Urspr\"unglich"
14361 +"::LaTeX::V\"ater"
14362 +"::LaTeX::V\"ogel"
14363 +"::LaTeX::V\"olker"
14364 +"::LaTeX::V\"ollig"
14365 +"::LaTeX::Ver\"anderung"
14366 +"::LaTeX::Ver\"anderungen"
14367 +"::LaTeX::Ver\"offentlichung"
14368 +"::LaTeX::Verb\"ande"
14369 +"::LaTeX::Verb\"anden"
14370 +"::LaTeX::Verb\"undeten"
14371 +"::LaTeX::Verf\"ugung"
14372 +"::LaTeX::Vergn\"ugen"
14373 +"::LaTeX::Verh\"altnis"
14374 +"::LaTeX::Verh\"altnisse"
14375 +"::LaTeX::Verh\"altnissen"
14376 +"::LaTeX::Verk\"aufer"
14377 +"::LaTeX::Verl\"angerung"
14378 +"::LaTeX::Verm\"ogen"
14379 +"::LaTeX::Vers\"ohnung"
14380 +"::LaTeX::Versch\"arfung"
14381 +"::LaTeX::Versp\"atung"
14382 +"::LaTeX::Verst\"andigung"
14383 +"::LaTeX::Verst\"andnis"
14384 +"::LaTeX::Verst\"arkung"
14385 +"::LaTeX::Verst\"o"se"
14386 +"::LaTeX::Vertr\"age"
14387 +"::LaTeX::Verz\"ogerung"
14388 +"::LaTeX::Vizepr\"asident"
14389 +"::LaTeX::Vorg\"ange"
14390 +"::LaTeX::Vorg\"anger"
14391 +"::LaTeX::Vorschl\"age"
14392 +"::LaTeX::Vorschl\"agen"
14393 +"::LaTeX::Vortr\"age"
14394 +"::LaTeX::Vorw\"urfe"
14395 +"::LaTeX::Vorw\"urfen"
14396 +"::LaTeX::Vorz\"uge"
14397 +"::LaTeX::W\"ahler"
14398 +"::LaTeX::W\"ahlern"
14399 +"::LaTeX::W\"ahrend"
14400 +"::LaTeX::W\"ahrung"
14401 +"::LaTeX::W\"ahrungen"
14402 +"::LaTeX::W\"ahrungsunion"
14403 +"::LaTeX::W\"alder"
14404 +"::LaTeX::W\"ande"
14405 +"::LaTeX::W\"anden"
14407 +"::LaTeX::W\"arme"
14408 +"::LaTeX::W\"orter"
14409 +"::LaTeX::W\"unsche"
14410 +"::LaTeX::W\"unschen"
14411 +"::LaTeX::W\"urde"
14412 +"::LaTeX::W\"urttemberg"
14413 +"::LaTeX::W\"urzburg"
14414 +"::LaTeX::W\"uste"
14415 +"::LaTeX::Werkst\"atten"
14416 +"::LaTeX::Wettbewerbsf\"ahigkeit"
14417 +"::LaTeX::Widerspr\"uche"
14418 +"::LaTeX::Z\"ahler"
14419 +"::LaTeX::Z\"ahne"
14421 +"::LaTeX::Z\"ugen"
14422 +"::LaTeX::Z\"urich"
14423 +"::LaTeX::Zerst\"orung"
14424 +"::LaTeX::Zuh\"orer"
14425 +"::LaTeX::Zun\"achst"
14426 +"::LaTeX::Zur\"uck"
14427 +"::LaTeX::Zur\"uckhaltung"
14428 +"::LaTeX::Zus\"atzlich"
14429 +"::LaTeX::Zusammenh\"ange"
14430 +"::LaTeX::Zusch\"usse"
14431 +"::LaTeX::Zust\"ande"
14432 +"::LaTeX::Zust\"andigkeit"
14433 +"::LaTeX::Zw\"olf"
14435 +"::LaTeX::\"Agypten"
14436 +"::LaTeX::\"Ahnlich"
14437 +"::LaTeX::\"Amter"
14438 +"::LaTeX::\"Amtern"
14439 +"::LaTeX::\"Anderung"
14440 +"::LaTeX::\"Anderungen"
14441 +"::LaTeX::\"Angste"
14443 +"::LaTeX::\"Arger"
14444 +"::LaTeX::\"Arzte"
14445 +"::LaTeX::\"Arzten"
14446 +"::LaTeX::\"Asthetik"
14447 +"::LaTeX::\"Au"serung"
14448 +"::LaTeX::\"Au"serungen"
14450 +"::LaTeX::\"Offentliche"
14451 +"::LaTeX::\"Offentlichkeit"
14452 +"::LaTeX::\"Offentlichkeitsarbeit"
14453 +"::LaTeX::\"Offnung"
14454 +"::LaTeX::\"Offnungszeiten"
14455 +"::LaTeX::\"Okologie"
14456 +"::LaTeX::\"Okonomie"
14458 +"::LaTeX::\"Osterreich"
14459 +"::LaTeX::\"Osterreicher"
14460 +"::LaTeX::\"Osterreichs"
14462 +"::LaTeX::\"Uberall"
14463 +"::LaTeX::\"Uberblick"
14464 +"::LaTeX::\"Ubereinstimmung"
14465 +"::LaTeX::\"Uberfall"
14466 +"::LaTeX::\"Ubergabe"
14467 +"::LaTeX::\"Ubergang"
14468 +"::LaTeX::\"Uberhaupt"
14469 +"::LaTeX::\"Uberleben"
14470 +"::LaTeX::\"Uberlebenden"
14471 +"::LaTeX::\"Uberlegungen"
14472 +"::LaTeX::\"Ubernachtungen"
14473 +"::LaTeX::\"Ubernahme"
14474 +"::LaTeX::\"Uberpr\"ufung"
14475 +"::LaTeX::\"Uberraschung"
14476 +"::LaTeX::\"Uberraschungen"
14477 +"::LaTeX::\"Uberschrift"
14478 +"::LaTeX::\"Uberschu"s"
14479 +"::LaTeX::\"Ubersetzung"
14480 +"::LaTeX::\"Uberstunden"
14481 +"::LaTeX::\"Ubertragung"
14482 +"::LaTeX::\"Uberwachung"
14483 +"::LaTeX::\"Uberzeugung"
14484 +"::LaTeX::\"Ubung"
14485 +"::LaTeX::\"Ubungen"
14486 +"::LaTeX::\"agyptischen"
14487 +"::LaTeX::\"ahnlich"
14488 +"::LaTeX::\"ahnliche"
14489 +"::LaTeX::\"ahnlichen"
14490 +"::LaTeX::\"ahnlicher"
14491 +"::LaTeX::\"ahnliches"
14492 +"::LaTeX::\"alter"
14493 +"::LaTeX::\"altere"
14494 +"::LaTeX::\"alteren"
14495 +"::LaTeX::\"alterer"
14496 +"::LaTeX::\"alteste"
14497 +"::LaTeX::\"altesten"
14498 +"::LaTeX::\"andern"
14499 +"::LaTeX::\"andert"
14500 +"::LaTeX::\"anderte"
14501 +"::LaTeX::\"argert"
14502 +"::LaTeX::\"arztliche"
14503 +"::LaTeX::\"au"sere"
14504 +"::LaTeX::\"au"seren"
14505 +"::LaTeX::\"au"sern"
14506 +"::LaTeX::\"au"serst"
14507 +"::LaTeX::\"au"sert"
14508 +"::LaTeX::\"au"serte"
14509 +"::LaTeX::\"au"serten"
14510 +"::LaTeX::\"offentlich"
14511 +"::LaTeX::\"offentlich-rechtlichen"
14512 +"::LaTeX::\"offentliche"
14513 +"::LaTeX::\"offentlichen"
14514 +"::LaTeX::\"offentlicher"
14515 +"::LaTeX::\"offnen"
14516 +"::LaTeX::\"offnet"
14517 +"::LaTeX::\"offnete"
14518 +"::LaTeX::\"ofter"
14519 +"::LaTeX::\"okologisch"
14520 +"::LaTeX::\"okologische"
14521 +"::LaTeX::\"okologischen"
14522 +"::LaTeX::\"okonomisch"
14523 +"::LaTeX::\"okonomische"
14524 +"::LaTeX::\"okonomischen"
14525 +"::LaTeX::\"ortliche"
14526 +"::LaTeX::\"ortlichen"
14527 +"::LaTeX::\"osterreichische"
14528 +"::LaTeX::\"osterreichischen"
14529 +"::LaTeX::\"ostlich"
14530 +"::LaTeX::\"ostlichen"
14534 +"::LaTeX::\"uberall"
14535 +"::LaTeX::\"uberaus"
14536 +"::LaTeX::\"uberdies"
14537 +"::LaTeX::\"uberein"
14538 +"::LaTeX::\"uberfallen"
14539 +"::LaTeX::\"uberfl\"ussig"
14540 +"::LaTeX::\"uberfordert"
14541 +"::LaTeX::\"ubergeben"
14542 +"::LaTeX::\"uberhaupt"
14543 +"::LaTeX::\"uberholt"
14544 +"::LaTeX::\"uberlassen"
14545 +"::LaTeX::\"uberleben"
14546 +"::LaTeX::\"uberlebt"
14547 +"::LaTeX::\"uberlegen"
14548 +"::LaTeX::\"uberlegt"
14549 +"::LaTeX::\"ubernahm"
14550 +"::LaTeX::\"ubernehmen"
14551 +"::LaTeX::\"ubernimmt"
14552 +"::LaTeX::\"ubernommen"
14553 +"::LaTeX::\"uberpr\"ufen"
14554 +"::LaTeX::\"uberpr\"uft"
14555 +"::LaTeX::\"uberraschend"
14556 +"::LaTeX::\"uberraschenden"
14557 +"::LaTeX::\"uberrascht"
14558 +"::LaTeX::\"uberreicht"
14559 +"::LaTeX::\"ubers"
14560 +"::LaTeX::\"uberschreiten"
14561 +"::LaTeX::\"uberschritten"
14562 +"::LaTeX::\"ubersehen"
14563 +"::LaTeX::\"ubersetzt"
14564 +"::LaTeX::\"uberstanden"
14565 +"::LaTeX::\"ubertragen"
14566 +"::LaTeX::\"ubertrieben"
14567 +"::LaTeX::\"ubertroffen"
14568 +"::LaTeX::\"uberwachen"
14569 +"::LaTeX::\"uberwacht"
14570 +"::LaTeX::\"uberwiegend"
14571 +"::LaTeX::\"uberwiesen"
14572 +"::LaTeX::\"uberwinden"
14573 +"::LaTeX::\"uberwunden"
14574 +"::LaTeX::\"uberzeugen"
14575 +"::LaTeX::\"uberzeugend"
14576 +"::LaTeX::\"uberzeugt"
14577 +"::LaTeX::\"uberzogen"
14578 +"::LaTeX::\"ublich"
14579 +"::LaTeX::\"ubliche"
14580 +"::LaTeX::\"ublichen"
14581 +"::LaTeX::\"ubrig"
14582 +"::LaTeX::\"ubrigen"
14583 +"::LaTeX::\"ubrigens"
14586 +"::LaTeX::abgel\"ost"
14587 +"::LaTeX::abh\"angig"
14588 +"::LaTeX::allj\"ahrlich"
14589 +"::LaTeX::allm\"ahlich"
14590 +"::LaTeX::allt\"aglichen"
14591 +"::LaTeX::angef\"uhrt"
14592 +"::LaTeX::angeh\"oren"
14593 +"::LaTeX::angeh\"ort"
14594 +"::LaTeX::angek\"undigt"
14595 +"::LaTeX::angek\"undigte"
14596 +"::LaTeX::angek\"undigten"
14597 +"::LaTeX::anl\"a"slich"
14598 +"::LaTeX::ann\"ahernd"
14599 +"::LaTeX::aufgef\"uhrt"
14600 +"::LaTeX::aufgekl\"art"
14601 +"::LaTeX::aufgel\"ost"
14602 +"::LaTeX::aufh\"oren"
14603 +"::LaTeX::aus\"uben"
14604 +"::LaTeX::ausdr\"ucklich"
14605 +"::LaTeX::ausf\"uhrlich"
14606 +"::LaTeX::ausge\"ubt"
14607 +"::LaTeX::ausgef\"uhrt"
14608 +"::LaTeX::ausgel\"ost"
14609 +"::LaTeX::ausger\"ustet"
14610 +"::LaTeX::ausgew\"ahlt"
14611 +"::LaTeX::ausl\"andische"
14612 +"::LaTeX::ausl\"andischen"
14613 +"::LaTeX::ausl\"andischer"
14614 +"::LaTeX::ausl\"osen"
14616 +"::LaTeX::b\"osen"
14617 +"::LaTeX::b\"urgerliche"
14618 +"::LaTeX::b\"urgerlichen"
14619 +"::LaTeX::baden-w\"urttembergische"
14620 +"::LaTeX::baden-w\"urttembergischen"
14621 +"::LaTeX::beeintr\"achtigt"
14622 +"::LaTeX::bef\"ordert"
14623 +"::LaTeX::bef\"urchten"
14624 +"::LaTeX::bef\"urchtet"
14625 +"::LaTeX::bef\"urwortet"
14626 +"::LaTeX::begn\"ugen"
14627 +"::LaTeX::begr\"u"sen"
14628 +"::LaTeX::begr\"u"st"
14629 +"::LaTeX::begr\"u"ste"
14630 +"::LaTeX::begr\"unden"
14631 +"::LaTeX::begr\"undet"
14632 +"::LaTeX::begr\"undete"
14633 +"::LaTeX::begr\"undeten"
14634 +"::LaTeX::beh\"alt"
14635 +"::LaTeX::bek\"ampfen"
14636 +"::LaTeX::bek\"ampft"
14637 +"::LaTeX::bekr\"aftigt"
14638 +"::LaTeX::bekr\"aftigte"
14639 +"::LaTeX::bem\"uhen"
14640 +"::LaTeX::bem\"uht"
14641 +"::LaTeX::bem\"uhte"
14642 +"::LaTeX::ben\"otigen"
14643 +"::LaTeX::ben\"otigt"
14644 +"::LaTeX::ben\"otigte"
14645 +"::LaTeX::ben\"otigten"
14646 +"::LaTeX::ber\"at"
14647 +"::LaTeX::ber\"ucksichtigen"
14648 +"::LaTeX::ber\"ucksichtigt"
14649 +"::LaTeX::ber\"uhmt"
14650 +"::LaTeX::ber\"uhmte"
14651 +"::LaTeX::ber\"uhmten"
14652 +"::LaTeX::ber\"uhrt"
14653 +"::LaTeX::besch\"adigt"
14654 +"::LaTeX::besch\"aftigen"
14655 +"::LaTeX::besch\"aftigt"
14656 +"::LaTeX::besch\"aftigte"
14657 +"::LaTeX::beschr\"anken"
14658 +"::LaTeX::beschr\"ankt"
14659 +"::LaTeX::best\"atigen"
14660 +"::LaTeX::best\"atigt"
14661 +"::LaTeX::best\"atigte"
14662 +"::LaTeX::best\"atigten"
14663 +"::LaTeX::betr\"achtlich"
14664 +"::LaTeX::betr\"agt"
14665 +"::LaTeX::bew\"ahrt"
14666 +"::LaTeX::bew\"altigen"
14667 +"::LaTeX::bew\"olkt"
14668 +"::LaTeX::bez\"uglich"
14669 +"::LaTeX::buchst\"ablich"
14670 +"::LaTeX::d\"anische"
14671 +"::LaTeX::d\"anischen"
14673 +"::LaTeX::d\"unnen"
14674 +"::LaTeX::d\"urfe"
14675 +"::LaTeX::d\"urfen"
14676 +"::LaTeX::d\"urfte"
14677 +"::LaTeX::d\"urften"
14678 +"::LaTeX::daf\"ur"
14679 +"::LaTeX::dar\"uber"
14680 +"::LaTeX::demn\"achst"
14681 +"::LaTeX::diesj\"ahrigen"
14682 +"::LaTeX::dr\"angen"
14683 +"::LaTeX::dr\"angt"
14684 +"::LaTeX::dr\"uben"
14685 +"::LaTeX::dr\"ucken"
14686 +"::LaTeX::dr\"uckt"
14687 +"::LaTeX::dr\"uckte"
14688 +"::LaTeX::durchf\"uhren"
14689 +"::LaTeX::durchgef\"uhrt"
14690 +"::LaTeX::eigenst\"andige"
14691 +"::LaTeX::einf\"uhren"
14692 +"::LaTeX::eingef\"uhrt"
14693 +"::LaTeX::einger\"aumt"
14694 +"::LaTeX::eingeschr\"ankt"
14695 +"::LaTeX::einschl\"agigen"
14696 +"::LaTeX::einzuf\"uhren"
14697 +"::LaTeX::emp\"ort"
14698 +"::LaTeX::endg\"ultig"
14699 +"::LaTeX::endg\"ultige"
14700 +"::LaTeX::endg\"ultigen"
14701 +"::LaTeX::entf\"allt"
14702 +"::LaTeX::entf\"uhrt"
14703 +"::LaTeX::enth\"alt"
14704 +"::LaTeX::entt\"auscht"
14705 +"::LaTeX::er\"offnen"
14706 +"::LaTeX::er\"offnet"
14707 +"::LaTeX::er\"offnete"
14708 +"::LaTeX::er\"ortert"
14709 +"::LaTeX::erf\"ahrt"
14710 +"::LaTeX::erf\"ullen"
14711 +"::LaTeX::erf\"ullt"
14712 +"::LaTeX::erg\"anzen"
14713 +"::LaTeX::erg\"anzt"
14714 +"::LaTeX::erh\"alt"
14715 +"::LaTeX::erh\"altlich"
14716 +"::LaTeX::erh\"ohen"
14717 +"::LaTeX::erh\"oht"
14718 +"::LaTeX::erh\"ohte"
14719 +"::LaTeX::erh\"ohten"
14720 +"::LaTeX::erkl\"aren"
14721 +"::LaTeX::erkl\"art"
14722 +"::LaTeX::erkl\"arte"
14723 +"::LaTeX::erkl\"arten"
14724 +"::LaTeX::erl\"autert"
14725 +"::LaTeX::erl\"auterte"
14726 +"::LaTeX::erm\"oglichen"
14727 +"::LaTeX::erm\"oglicht"
14728 +"::LaTeX::ern\"ahren"
14729 +"::LaTeX::ersch\"opft"
14730 +"::LaTeX::ersch\"uttert"
14731 +"::LaTeX::erw\"ahnt"
14732 +"::LaTeX::erw\"ahnte"
14733 +"::LaTeX::erz\"ahlen"
14734 +"::LaTeX::erz\"ahlt"
14735 +"::LaTeX::erz\"ahlte"
14736 +"::LaTeX::europ\"aische"
14737 +"::LaTeX::europ\"aischen"
14738 +"::LaTeX::europ\"aischer"
14739 +"::LaTeX::f\"ahig"
14740 +"::LaTeX::f\"ahrt"
14741 +"::LaTeX::f\"allig"
14742 +"::LaTeX::f\"allt"
14743 +"::LaTeX::f\"angt"
14744 +"::LaTeX::f\"ordern"
14745 +"::LaTeX::f\"ordert"
14747 +"::LaTeX::f\"ugte"
14748 +"::LaTeX::f\"uhle"
14749 +"::LaTeX::f\"uhlen"
14750 +"::LaTeX::f\"uhlt"
14751 +"::LaTeX::f\"uhlte"
14752 +"::LaTeX::f\"uhlten"
14753 +"::LaTeX::f\"uhre"
14754 +"::LaTeX::f\"uhren"
14755 +"::LaTeX::f\"uhrende"
14756 +"::LaTeX::f\"uhrenden"
14757 +"::LaTeX::f\"uhrender"
14758 +"::LaTeX::f\"uhrt"
14759 +"::LaTeX::f\"uhrte"
14760 +"::LaTeX::f\"uhrten"
14761 +"::LaTeX::f\"ullen"
14762 +"::LaTeX::f\"ullt"
14764 +"::LaTeX::f\"unfmal"
14765 +"::LaTeX::f\"unfte"
14766 +"::LaTeX::f\"unften"
14767 +"::LaTeX::f\"unfzehn"
14768 +"::LaTeX::f\"unfzig"
14770 +"::LaTeX::f\"urchten"
14771 +"::LaTeX::f\"urchtet"
14773 +"::LaTeX::fl\"uchtete"
14774 +"::LaTeX::fr\"ohlich"
14776 +"::LaTeX::fr\"uhe"
14777 +"::LaTeX::fr\"uhen"
14778 +"::LaTeX::fr\"uher"
14779 +"::LaTeX::fr\"uhere"
14780 +"::LaTeX::fr\"uheren"
14781 +"::LaTeX::fr\"uherer"
14782 +"::LaTeX::fr\"uhestens"
14783 +"::LaTeX::fr\"uhzeitig"
14784 +"::LaTeX::franz\"osische"
14785 +"::LaTeX::franz\"osischen"
14786 +"::LaTeX::franz\"osischer"
14788 +"::LaTeX::g\"anzlich"
14789 +"::LaTeX::g\"ultig"
14790 +"::LaTeX::g\"ultigen"
14791 +"::LaTeX::g\"unstig"
14792 +"::LaTeX::g\"unstige"
14793 +"::LaTeX::g\"unstigen"
14794 +"::LaTeX::g\"unstiger"
14795 +"::LaTeX::ge\"andert"
14796 +"::LaTeX::ge\"au"sert"
14797 +"::LaTeX::ge\"offnet"
14798 +"::LaTeX::ge\"ubt"
14799 +"::LaTeX::geb\"urtige"
14800 +"::LaTeX::gedr\"angt"
14801 +"::LaTeX::gedr\"uckt"
14802 +"::LaTeX::gef\"ahrden"
14803 +"::LaTeX::gef\"ahrdet"
14804 +"::LaTeX::gef\"ahrlich"
14805 +"::LaTeX::gef\"ahrliche"
14806 +"::LaTeX::gef\"ahrlichen"
14807 +"::LaTeX::gef\"ahrlicher"
14808 +"::LaTeX::gef\"allt"
14809 +"::LaTeX::gef\"ordert"
14810 +"::LaTeX::gef\"uhlt"
14811 +"::LaTeX::gef\"uhrt"
14812 +"::LaTeX::gef\"uhrte"
14813 +"::LaTeX::gef\"uhrten"
14814 +"::LaTeX::gef\"ullt"
14815 +"::LaTeX::gefl\"uchtet"
14816 +"::LaTeX::gegen\"uber"
14817 +"::LaTeX::gegenw\"artig"
14818 +"::LaTeX::gegenw\"artige"
14819 +"::LaTeX::gegenw\"artigen"
14820 +"::LaTeX::gegr\"undet"
14821 +"::LaTeX::gegr\"undete"
14822 +"::LaTeX::gegr\"undeten"
14823 +"::LaTeX::geh\"ore"
14824 +"::LaTeX::geh\"oren"
14825 +"::LaTeX::geh\"orende"
14826 +"::LaTeX::geh\"orenden"
14827 +"::LaTeX::geh\"ort"
14828 +"::LaTeX::geh\"orte"
14829 +"::LaTeX::geh\"orten"
14830 +"::LaTeX::gek\"ampft"
14831 +"::LaTeX::gek\"undigt"
14832 +"::LaTeX::gek\"urzt"
14833 +"::LaTeX::gekl\"art"
14834 +"::LaTeX::gel\"ost"
14835 +"::LaTeX::gem\"a"s"
14836 +"::LaTeX::gen\"ugen"
14837 +"::LaTeX::gen\"ugend"
14838 +"::LaTeX::gen\"ugt"
14839 +"::LaTeX::gepr\"agt"
14840 +"::LaTeX::gepr\"agten"
14841 +"::LaTeX::gepr\"uft"
14842 +"::LaTeX::ger\"at"
14843 +"::LaTeX::ger\"aumt"
14844 +"::LaTeX::ger\"uckt"
14845 +"::LaTeX::geringf\"ugig"
14846 +"::LaTeX::gesch\"atzt"
14847 +"::LaTeX::gesch\"utzt"
14848 +"::LaTeX::gest\"arkt"
14849 +"::LaTeX::gest\"ort"
14850 +"::LaTeX::gest\"urzt"
14851 +"::LaTeX::gest\"utzt"
14852 +"::LaTeX::get\"otet"
14853 +"::LaTeX::gew\"ahlt"
14854 +"::LaTeX::gew\"ahlte"
14855 +"::LaTeX::gew\"ahlten"
14856 +"::LaTeX::gew\"ahren"
14857 +"::LaTeX::gew\"ahrleisten"
14858 +"::LaTeX::gew\"ahrleistet"
14859 +"::LaTeX::gew\"ahrt"
14860 +"::LaTeX::gew\"ohnlich"
14861 +"::LaTeX::gew\"ohnlichen"
14862 +"::LaTeX::gew\"ohnt"
14863 +"::LaTeX::gew\"unscht"
14864 +"::LaTeX::gew\"unschte"
14865 +"::LaTeX::gew\"unschten"
14866 +"::LaTeX::gew\"urdigt"
14867 +"::LaTeX::gez\"ahlt"
14868 +"::LaTeX::gl\"ucklich"
14869 +"::LaTeX::gr\"o"ser"
14870 +"::LaTeX::gr\"o"sere"
14871 +"::LaTeX::gr\"o"seren"
14872 +"::LaTeX::gr\"o"serer"
14873 +"::LaTeX::gr\"o"seres"
14874 +"::LaTeX::gr\"o"ste"
14875 +"::LaTeX::gr\"o"sten"
14876 +"::LaTeX::gr\"o"stenteils"
14877 +"::LaTeX::gr\"o"ster"
14879 +"::LaTeX::gr\"unden"
14880 +"::LaTeX::gr\"undete"
14881 +"::LaTeX::gr\"undeten"
14882 +"::LaTeX::gr\"undlich"
14883 +"::LaTeX::gr\"une"
14884 +"::LaTeX::gr\"unen"
14885 +"::LaTeX::gro"sz\"ugig"
14886 +"::LaTeX::grunds\"atzlich"
14887 +"::LaTeX::grunds\"atzliche"
14889 +"::LaTeX::h\"angen"
14890 +"::LaTeX::h\"angt"
14891 +"::LaTeX::h\"arter"
14892 +"::LaTeX::h\"atte"
14893 +"::LaTeX::h\"atten"
14894 +"::LaTeX::h\"aufig"
14895 +"::LaTeX::h\"aufiger"
14896 +"::LaTeX::h\"aufigsten"
14897 +"::LaTeX::h\"ochst"
14898 +"::LaTeX::h\"ochste"
14899 +"::LaTeX::h\"ochsten"
14900 +"::LaTeX::h\"ochstens"
14901 +"::LaTeX::h\"ochster"
14902 +"::LaTeX::h\"oher"
14903 +"::LaTeX::h\"ohere"
14904 +"::LaTeX::h\"oheren"
14905 +"::LaTeX::h\"oherer"
14907 +"::LaTeX::h\"oren"
14909 +"::LaTeX::h\"orte"
14910 +"::LaTeX::haupts\"achlich"
14911 +"::LaTeX::herk\"ommlichen"
14912 +"::LaTeX::hierf\"ur"
14913 +"::LaTeX::holl\"andischen"
14914 +"::LaTeX::humanit\"are"
14915 +"::LaTeX::j\"ahrlich"
14916 +"::LaTeX::j\"ahrliche"
14917 +"::LaTeX::j\"ahrlichen"
14918 +"::LaTeX::j\"udische"
14919 +"::LaTeX::j\"udischen"
14920 +"::LaTeX::j\"udischer"
14921 +"::LaTeX::j\"unger"
14922 +"::LaTeX::j\"ungere"
14923 +"::LaTeX::j\"ungeren"
14924 +"::LaTeX::j\"ungst"
14925 +"::LaTeX::j\"ungste"
14926 +"::LaTeX::j\"ungsten"
14927 +"::LaTeX::j\"ungster"
14929 +"::LaTeX::k\"amen"
14930 +"::LaTeX::k\"ampfen"
14931 +"::LaTeX::k\"ampft"
14932 +"::LaTeX::k\"ampfte"
14933 +"::LaTeX::k\"onne"
14934 +"::LaTeX::k\"onnen"
14935 +"::LaTeX::k\"onnte"
14936 +"::LaTeX::k\"onnten"
14937 +"::LaTeX::k\"orperlich"
14938 +"::LaTeX::k\"orperliche"
14939 +"::LaTeX::k\"orperlichen"
14941 +"::LaTeX::k\"uhlen"
14942 +"::LaTeX::k\"ummern"
14943 +"::LaTeX::k\"ummert"
14944 +"::LaTeX::k\"undigen"
14945 +"::LaTeX::k\"undigt"
14946 +"::LaTeX::k\"undigte"
14947 +"::LaTeX::k\"undigten"
14948 +"::LaTeX::k\"unftig"
14949 +"::LaTeX::k\"unftige"
14950 +"::LaTeX::k\"unftigen"
14951 +"::LaTeX::k\"unstlerische"
14952 +"::LaTeX::k\"unstlerischen"
14953 +"::LaTeX::k\"unstlich"
14954 +"::LaTeX::k\"unstliche"
14955 +"::LaTeX::k\"unstlichen"
14956 +"::LaTeX::k\"urzen"
14957 +"::LaTeX::k\"urzer"
14958 +"::LaTeX::k\"urzlich"
14959 +"::LaTeX::kl\"aren"
14960 +"::LaTeX::kr\"aftig"
14961 +"::LaTeX::kr\"aftige"
14962 +"::LaTeX::kr\"aftigen"
14963 +"::LaTeX::l\"a"st"
14964 +"::LaTeX::l\"achelt"
14965 +"::LaTeX::l\"acherlich"
14967 +"::LaTeX::l\"agen"
14968 +"::LaTeX::l\"andlichen"
14969 +"::LaTeX::l\"anger"
14970 +"::LaTeX::l\"angere"
14971 +"::LaTeX::l\"angerem"
14972 +"::LaTeX::l\"angeren"
14973 +"::LaTeX::l\"angerer"
14974 +"::LaTeX::l\"angst"
14975 +"::LaTeX::l\"auft"
14976 +"::LaTeX::l\"osen"
14978 +"::LaTeX::l\"oste"
14979 +"::LaTeX::langj\"ahrige"
14980 +"::LaTeX::langj\"ahrigen"
14981 +"::LaTeX::legend\"aren"
14982 +"::LaTeX::m\"achtig"
14983 +"::LaTeX::m\"achtige"
14984 +"::LaTeX::m\"achtigen"
14985 +"::LaTeX::m\"annliche"
14986 +"::LaTeX::m\"annlichen"
14987 +"::LaTeX::m\"ochte"
14988 +"::LaTeX::m\"ochten"
14990 +"::LaTeX::m\"ogen"
14991 +"::LaTeX::m\"oglich"
14992 +"::LaTeX::m\"ogliche"
14993 +"::LaTeX::m\"oglichen"
14994 +"::LaTeX::m\"oglicher"
14995 +"::LaTeX::m\"oglicherweise"
14996 +"::LaTeX::m\"oglichst"
14997 +"::LaTeX::m\"u"ste"
14998 +"::LaTeX::m\"u"sten"
15000 +"::LaTeX::m\"uhsam"
15001 +"::LaTeX::m\"usse"
15002 +"::LaTeX::m\"ussen"
15003 +"::LaTeX::milit\"arisch"
15004 +"::LaTeX::milit\"arische"
15005 +"::LaTeX::milit\"arischen"
15006 +"::LaTeX::n\"achste"
15007 +"::LaTeX::n\"achsten"
15008 +"::LaTeX::n\"achster"
15009 +"::LaTeX::n\"achstes"
15010 +"::LaTeX::n\"achtlichen"
15011 +"::LaTeX::n\"aher"
15012 +"::LaTeX::n\"amlich"
15013 +"::LaTeX::n\"ordlich"
15014 +"::LaTeX::n\"ordlichen"
15015 +"::LaTeX::n\"otig"
15016 +"::LaTeX::n\"otige"
15017 +"::LaTeX::n\"otigen"
15018 +"::LaTeX::n\"utzlich"
15019 +"::LaTeX::n\"utzt"
15020 +"::LaTeX::nachdr\"ucklich"
15021 +"::LaTeX::nachtr\"aglich"
15022 +"::LaTeX::nat\"urlich"
15023 +"::LaTeX::nat\"urliche"
15024 +"::LaTeX::nat\"urlichen"
15025 +"::LaTeX::nerv\"os"
15026 +"::LaTeX::niederl\"andische"
15027 +"::LaTeX::niederl\"andischen"
15028 +"::LaTeX::nieders\"achsische"
15029 +"::LaTeX::nieders\"achsischen"
15030 +"::LaTeX::osteurop\"aischen"
15031 +"::LaTeX::p\"unktlich"
15032 +"::LaTeX::pal\"astinensische"
15033 +"::LaTeX::pal\"astinensischen"
15034 +"::LaTeX::pers\"onlich"
15035 +"::LaTeX::pers\"onliche"
15036 +"::LaTeX::pers\"onlichen"
15037 +"::LaTeX::pers\"onlicher"
15038 +"::LaTeX::pl\"adiert"
15039 +"::LaTeX::pl\"adierte"
15040 +"::LaTeX::pl\"otzlich"
15041 +"::LaTeX::popul\"ar"
15042 +"::LaTeX::pr\"asent"
15043 +"::LaTeX::pr\"asentieren"
15044 +"::LaTeX::pr\"asentiert"
15045 +"::LaTeX::pr\"asentierte"
15046 +"::LaTeX::pr\"asentierten"
15047 +"::LaTeX::pr\"azise"
15048 +"::LaTeX::pr\"ufen"
15049 +"::LaTeX::pr\"uft"
15051 +"::LaTeX::r\"aumen"
15052 +"::LaTeX::r\"aumt"
15053 +"::LaTeX::r\"aumte"
15054 +"::LaTeX::r\"omische"
15055 +"::LaTeX::r\"omischen"
15056 +"::LaTeX::r\"ucken"
15057 +"::LaTeX::r\"uckg\"angig"
15058 +"::LaTeX::r\"uckt"
15059 +"::LaTeX::r\"uckte"
15060 +"::LaTeX::r\"uhrt"
15061 +"::LaTeX::regelm\"a"sig"
15062 +"::LaTeX::regelm\"a"sige"
15063 +"::LaTeX::regelm\"a"sigen"
15064 +"::LaTeX::regul\"aren"
15065 +"::LaTeX::religi\"ose"
15066 +"::LaTeX::religi\"osen"
15067 +"::LaTeX::rot-gr\"une"
15068 +"::LaTeX::rot-gr\"unen"
15069 +"::LaTeX::s\"achsischen"
15070 +"::LaTeX::s\"amtliche"
15071 +"::LaTeX::s\"udafrikanischen"
15072 +"::LaTeX::s\"udlich"
15073 +"::LaTeX::s\"udlichen"
15074 +"::LaTeX::sch\"atzen"
15075 +"::LaTeX::sch\"atzt"
15076 +"::LaTeX::sch\"atzungsweise"
15077 +"::LaTeX::sch\"on"
15078 +"::LaTeX::sch\"one"
15079 +"::LaTeX::sch\"onen"
15080 +"::LaTeX::sch\"oner"
15081 +"::LaTeX::sch\"ones"
15082 +"::LaTeX::sch\"onste"
15083 +"::LaTeX::sch\"onsten"
15084 +"::LaTeX::sch\"utzen"
15085 +"::LaTeX::sch\"utzt"
15086 +"::LaTeX::schl\"agt"
15087 +"::LaTeX::schw\"abischen"
15088 +"::LaTeX::schw\"acher"
15089 +"::LaTeX::schw\"armt"
15090 +"::LaTeX::selbst\"andig"
15091 +"::LaTeX::selbstverst\"andlich"
15092 +"::LaTeX::sorgf\"altig"
15093 +"::LaTeX::souver\"an"
15095 +"::LaTeX::sp\"aten"
15096 +"::LaTeX::sp\"ater"
15097 +"::LaTeX::sp\"atere"
15098 +"::LaTeX::sp\"ateren"
15099 +"::LaTeX::sp\"atestens"
15100 +"::LaTeX::sp\"urbar"
15101 +"::LaTeX::sp\"uren"
15102 +"::LaTeX::sp\"urt"
15103 +"::LaTeX::spektakul\"are"
15104 +"::LaTeX::spektakul\"aren"
15105 +"::LaTeX::st\"adtische"
15106 +"::LaTeX::st\"adtischen"
15107 +"::LaTeX::st\"andig"
15108 +"::LaTeX::st\"andige"
15109 +"::LaTeX::st\"andigen"
15110 +"::LaTeX::st\"arken"
15111 +"::LaTeX::st\"arker"
15112 +"::LaTeX::st\"arkere"
15113 +"::LaTeX::st\"arkeren"
15114 +"::LaTeX::st\"arkste"
15115 +"::LaTeX::st\"arksten"
15116 +"::LaTeX::st\"o"st"
15117 +"::LaTeX::st\"oren"
15118 +"::LaTeX::st\"ort"
15119 +"::LaTeX::st\"unde"
15120 +"::LaTeX::st\"unden"
15121 +"::LaTeX::st\"urzen"
15122 +"::LaTeX::st\"urzt"
15123 +"::LaTeX::st\"urzte"
15124 +"::LaTeX::st\"utzen"
15125 +"::LaTeX::st\"utzt"
15126 +"::LaTeX::t\"aglich"
15127 +"::LaTeX::t\"agliche"
15128 +"::LaTeX::t\"aglichen"
15129 +"::LaTeX::t\"atig"
15130 +"::LaTeX::t\"atigen"
15131 +"::LaTeX::t\"odlich"
15132 +"::LaTeX::t\"odliche"
15133 +"::LaTeX::t\"odlichen"
15134 +"::LaTeX::t\"oten"
15135 +"::LaTeX::t\"urkische"
15136 +"::LaTeX::t\"urkischen"
15137 +"::LaTeX::t\"urkischer"
15138 +"::LaTeX::tags\"uber"
15139 +"::LaTeX::tats\"achlich"
15140 +"::LaTeX::tats\"achliche"
15141 +"::LaTeX::tats\"achlichen"
15142 +"::LaTeX::tr\"agt"
15143 +"::LaTeX::tr\"aumen"
15144 +"::LaTeX::tr\"aumt"
15145 +"::LaTeX::unabh\"angig"
15146 +"::LaTeX::unabh\"angige"
15147 +"::LaTeX::unabh\"angigen"
15148 +"::LaTeX::unbegr\"undet"
15149 +"::LaTeX::unertr\"aglich"
15150 +"::LaTeX::ungef\"ahr"
15151 +"::LaTeX::ungekl\"art"
15152 +"::LaTeX::ungew\"ohnlich"
15153 +"::LaTeX::ungew\"ohnliche"
15154 +"::LaTeX::ungew\"ohnlichen"
15155 +"::LaTeX::unl\"angst"
15156 +"::LaTeX::unm\"oglich"
15157 +"::LaTeX::unn\"otig"
15158 +"::LaTeX::unterh\"alt"
15159 +"::LaTeX::unterst\"utzen"
15160 +"::LaTeX::unterst\"utzt"
15161 +"::LaTeX::unterst\"utzte"
15162 +"::LaTeX::unterst\"utzten"
15163 +"::LaTeX::unver\"andert"
15164 +"::LaTeX::unverst\"andlich"
15165 +"::LaTeX::unverz\"uglich"
15166 +"::LaTeX::unzul\"assig"
15167 +"::LaTeX::urspr\"unglich"
15168 +"::LaTeX::urspr\"ungliche"
15169 +"::LaTeX::urspr\"unglichen"
15170 +"::LaTeX::v\"ollig"
15171 +"::LaTeX::ver\"andern"
15172 +"::LaTeX::ver\"andert"
15173 +"::LaTeX::ver\"anderte"
15174 +"::LaTeX::ver\"anderten"
15175 +"::LaTeX::ver\"argert"
15176 +"::LaTeX::ver\"offentlichen"
15177 +"::LaTeX::ver\"offentlicht"
15178 +"::LaTeX::ver\"offentlichte"
15179 +"::LaTeX::ver\"offentlichten"
15180 +"::LaTeX::ver\"ubt"
15181 +"::LaTeX::verd\"achtigt"
15182 +"::LaTeX::verdr\"angen"
15183 +"::LaTeX::verdr\"angt"
15184 +"::LaTeX::verf\"ugen"
15185 +"::LaTeX::verf\"ugt"
15186 +"::LaTeX::verf\"ugte"
15187 +"::LaTeX::vergr\"o"sert"
15188 +"::LaTeX::verh\"alt"
15189 +"::LaTeX::verh\"angt"
15190 +"::LaTeX::verk\"unden"
15191 +"::LaTeX::verk\"undet"
15192 +"::LaTeX::verk\"undete"
15193 +"::LaTeX::verk\"urzt"
15194 +"::LaTeX::verkn\"upft"
15195 +"::LaTeX::verl\"a"st"
15196 +"::LaTeX::verl\"angern"
15197 +"::LaTeX::verl\"angert"
15198 +"::LaTeX::verl\"auft"
15199 +"::LaTeX::vern\"unftig"
15200 +"::LaTeX::vern\"unftige"
15201 +"::LaTeX::vernachl\"assigt"
15202 +"::LaTeX::verr\"at"
15203 +"::LaTeX::verr\"uckt"
15204 +"::LaTeX::vers\"aumt"
15205 +"::LaTeX::versch\"arft"
15206 +"::LaTeX::verst\"andigt"
15207 +"::LaTeX::verst\"andlich"
15208 +"::LaTeX::verst\"arken"
15209 +"::LaTeX::verst\"arkt"
15210 +"::LaTeX::verst\"arkte"
15211 +"::LaTeX::verst\"arkten"
15212 +"::LaTeX::verz\"ogert"
15213 +"::LaTeX::vielf\"altigen"
15214 +"::LaTeX::vollst\"andig"
15215 +"::LaTeX::vollst\"andige"
15216 +"::LaTeX::vor\"ubergehend"
15217 +"::LaTeX::vorgef\"uhrt"
15218 +"::LaTeX::vorl\"aufig"
15219 +"::LaTeX::vorl\"aufigen"
15220 +"::LaTeX::w\"achst"
15221 +"::LaTeX::w\"ahlen"
15222 +"::LaTeX::w\"ahlt"
15223 +"::LaTeX::w\"ahlte"
15224 +"::LaTeX::w\"ahrend"
15226 +"::LaTeX::w\"aren"
15227 +"::LaTeX::w\"ochentlich"
15228 +"::LaTeX::w\"ortlich"
15229 +"::LaTeX::w\"unsche"
15230 +"::LaTeX::w\"unschen"
15231 +"::LaTeX::w\"unscht"
15232 +"::LaTeX::w\"urde"
15233 +"::LaTeX::w\"urden"
15234 +"::LaTeX::w\"urdigte"
15235 +"::LaTeX::wof\"ur"
15236 +"::LaTeX::wom\"oglich"
15237 +"::LaTeX::z\"ahlen"
15238 +"::LaTeX::z\"ahlt"
15239 +"::LaTeX::z\"ahlte"
15240 +"::LaTeX::z\"ahlten"
15241 +"::LaTeX::z\"ugig"
15242 +"::LaTeX::zeitgen\"ossischen"
15243 +"::LaTeX::zerst\"oren"
15244 +"::LaTeX::zerst\"ort"
15245 +"::LaTeX::zerst\"orte"
15246 +"::LaTeX::zerst\"orten"
15247 +"::LaTeX::zuf\"allig"
15248 +"::LaTeX::zug\"anglich"
15249 +"::LaTeX::zuk\"unftig"
15250 +"::LaTeX::zuk\"unftige"
15251 +"::LaTeX::zuk\"unftigen"
15252 +"::LaTeX::zul\"assig"
15253 +"::LaTeX::zun\"achst"
15254 +"::LaTeX::zur\"uck"
15255 +"::LaTeX::zur\"uckgegangen"
15256 +"::LaTeX::zur\"uckgekehrt"
15257 +"::LaTeX::zur\"uckgenommen"
15258 +"::LaTeX::zur\"uckgetreten"
15259 +"::LaTeX::zur\"uckgewiesen"
15260 +"::LaTeX::zur\"uckgezogen"
15261 +"::LaTeX::zur\"uckgreifen"
15262 +"::LaTeX::zur\"uckhaltend"
15263 +"::LaTeX::zur\"uckkehren"
15264 +"::LaTeX::zur\"uckliegenden"
15265 +"::LaTeX::zur\"uckziehen"
15266 +"::LaTeX::zur\"uckzuf\"uhren"
15267 +"::LaTeX::zur\"uckzukehren"
15268 +"::LaTeX::zus\"atzlich"
15269 +"::LaTeX::zus\"atzliche"
15270 +"::LaTeX::zus\"atzlichen"
15271 +"::LaTeX::zus\"atzlicher"
15272 +"::LaTeX::zust\"andig"
15273 +"::LaTeX::zust\"andige"
15274 +"::LaTeX::zust\"andigen"
15275 +"::LaTeX::zw\"olf"
15276 +"::LaTeX::zwangsl\"aufig"
15277 +"::LaTeX::zweitgr\"o"ste"
15278 diff --quilt /dev/null new/Dictionary/dicts/german_top.dict
15280 +++ new/Dictionary/dicts/german_top.dict
15298 +"Abgeordnetenhaus"
15330 +"Abteilungsleiter"
15359 +"Aktiengesellschaft"
15536 +"Arbeiterwohlfahrt"
15542 +"Arbeitsbedingungen"
15543 +"Arbeitsgemeinschaft"
15549 +"Arbeitslosenquote"
15550 +"Arbeitslosigkeit"
15655 +"Auseinandersetzung"
15656 +"Auseinandersetzungen"
15672 +"Ausländerfeindlichkeit"
15717 +"Außenministerium"
15732 +"Baden-Württemberg"
15875 +"Berichterstattung"
15887 +"Berücksichtigung"
15936 +"Betriebsergebnis"
15966 +"Bezirksausschuß"
16020 +"Bosnien-Herzegowina"
16075 +"Bundesanwaltschaft"
16076 +"Bundesaußenminister"
16080 +"Bundesfinanzminister"
16082 +"Bundesgerichtshof"
16083 +"Bundesinnenminister"
16089 +"Bundespräsident"
16090 +"Bundespräsidenten"
16098 +"Bundestagsabgeordnete"
16102 +"Bundesverfassungsgericht"
16103 +"Bundesverfassungsgerichts"
16130 +"Bürgerinitiative"
16134 +"Bürgermeisterin"
16138 +"Bürgerversammlung"
16173 +"Christdemokraten"
16289 +"Dienstleistungen"
16401 +"Eigentumswohnungen"
16444 +"Einschränkungen"
16518 +"Entwicklungshilfe"
16519 +"Entwicklungsländer"
16520 +"Entwicklungsländern"
16571 +"Ermittlungsverfahren"
16621 +"Europameisterschaft"
16728 +"Finanzministerium"
16750 +"Fluggesellschaft"
16794 +"Fraktionsvorsitzende"
16852 +"Fundamentalisten"
16967 +"Generalsekretär"
17008 +"Geschäftsführer"
17009 +"Geschäftsführung"
17011 +"Geschäftsleitung"
17014 +"Geschäftsstelle"
17029 +"Gesprächspartner"
17038 +"Gesundheitswesen"
17066 +"Glaubwürdigkeit"
17068 +"Gleichberechtigung"
17215 +"Hauptversammlung"
17252 +"Herausforderungen"
17278 +"Hilfsorganisationen"
17396 +"Innenministerium"
17397 +"Innenministeriums"
17471 +"Jahreshauptversammlung"
17475 +"Jahresüberschuß"
17481 +"Jahrhundertwende"
17483 +"Jahrtausendwende"
17583 +"Kapitalerhöhung"
17690 +"Koalitionspartner"
17711 +"Kommunalpolitiker"
17760 +"Konzentrationslager"
17785 +"Krankenversicherung"
17832 +"Kultusministerium"
17870 +"Körperverletzung"
17898 +"Landeshauptstadt"
17944 +"Legislaturperiode"
17963 +"Leistungsfähigkeit"
18140 +"Mecklenburg-Vorpommern"
18172 +"Menschenrechtsverletzungen"
18221 +"Ministerpräsident"
18222 +"Ministerpräsidenten"
18233 +"Mitarbeiterinnen"
18239 +"Mitgliederversammlung"
18241 +"Mitgliedsstaaten"
18326 +"Mönchengladbach"
18354 +"Nachrichtenagentur"
18373 +"Nationalmannschaft"
18375 +"Nationalsozialismus"
18376 +"Nationalsozialisten"
18434 +"Nordrhein-Westfalen"
18459 +"Oberbürgermeister"
18461 +"Oberlandesgericht"
18462 +"Oberstaatsanwalt"
18495 +"Oppositionsparteien"
18553 +"Parlamentswahlen"
18588 +"Persönlichkeiten"
18599 +"Pflegeversicherung"
18641 +"Podiumsdiskussion"
18680 +"Pressemitteilung"
18755 +"Quadratkilometer"
18773 +"Rahmenbedingungen"
18828 +"Regierungskoalition"
18829 +"Regierungspartei"
18830 +"Regierungspräsidium"
18831 +"Regierungssprecher"
18832 +"Regierungstruppen"
18870 +"Rentenversicherung"
18985 +"SPD-Fraktionschef"
18998 +"Sachverständigen"
19051 +"Schleswig-Holstein"
19078 +"Schriftstellerin"
19156 +"Selbstbewußtsein"
19159 +"Selbstverwaltung"
19160 +"Selbständigkeit"
19188 +"Sicherheitskräfte"
19260 +"Sozialdemokraten"
19262 +"Sozialhilfeempfänger"
19331 +"Staatsanwaltschaft"
19333 +"Staatsbürgerschaft"
19336 +"Staatspräsident"
19337 +"Staatspräsidenten"
19353 +"Stadtverordneten"
19354 +"Stadtverordnetenversammlung"
19401 +"Steuerhinterziehung"
19533 +"Tarifverhandlungen"
19566 +"Telekommunikation"
19618 +"Titelverteidiger"
19704 +"US-amerikanischen"
19728 +"Umstrukturierung"
19735 +"Umweltministerium"
19780 +"Untersuchungsausschuß"
19781 +"Untersuchungshaft"
19806 +"Verantwortlichen"
19841 +"Verfassungsgericht"
19842 +"Verfassungsschutz"
19859 +"Verkehrsberuhigung"
19860 +"Verkehrsminister"
19916 +"Verteidigungsminister"
19917 +"Verteidigungsministerium"
19930 +"Verwaltungsgericht"
19941 +"Veröffentlichung"
20011 +"Vorstandsmitglied"
20012 +"Vorstandsvorsitzende"
20013 +"Vorstandsvorsitzender"
20037 +"Waffenstillstand"
20053 +"Wahrscheinlichkeit"
20090 +"Weiterentwicklung"
20104 +"Weltmeisterschaft"
20105 +"Weltmeisterschaften"
20137 +"Wettbewerbsfähigkeit"
20149 +"Wiederherstellung"
20151 +"Wiedervereinigung"
20181 +"Wirtschaftsminister"
20182 +"Wirtschaftsministerium"
20183 +"Wirtschaftspolitik"
20184 +"Wirtschaftswachstum"
20188 +"Wissenschaftlern"
20590 +"aufrechterhalten"
20604 +"auseinandersetzen"
20671 +"außerordentlich"
20672 +"außerordentlichen"
20673 +"baden-württembergische"
20674 +"baden-württembergischen"
20860 +"berücksichtigen"
21203 +"deutschsprachigen"
21296 +"durchschnittlich"
21297 +"durchschnittliche"
21298 +"durchschnittlichen"
22136 +"gesellschaftliche"
22137 +"gesellschaftlichen"
22182 +"gesundheitlichen"
22792 +"landwirtschaftlichen"
22997 +"mittelalterlichen"
23108 +"niederländische"
23109 +"niederländischen"
23110 +"niedersächsische"
23111 +"niedersächsischen"
23198 +"osteuropäischen"
23201 +"palästinensische"
23202 +"palästinensischen"
23205 +"parlamentarische"
23206 +"parlamentarischen"
23503 +"schätzungsweise"
23537 +"selbstverständlich"
23627 +"sozialdemokratische"
23628 +"sozialdemokratischen"
23720 +"stellvertretende"
23721 +"stellvertretenden"
23722 +"stellvertretender"
23785 +"südafrikanischen"
23866 +"tschetschenischen"
23962 +"unterschiedliche"
23963 +"unterschiedlichen"
23964 +"unterschiedlicher"
23980 +"unwahrscheinlich"
24046 +"verfassungswidrig"
24247 +"veröffentlichen"
24249 +"veröffentlichte"
24250 +"veröffentlichten"
24480 +"wirtschaftlichen"
24481 +"wirtschaftlicher"
24484 +"wissenschaftlich"
24485 +"wissenschaftliche"
24486 +"wissenschaftlichen"
24487 +"wissenschaftlicher"
24546 +"zeitgenössischen"
24608 +"zurückliegenden"
24610 +"zurückzuführen"
24613 +"zusammenarbeiten"
24615 +"zusammengeschlossen"
24616 +"zusammengestellt"
24676 +"Öffentlichkeitsarbeit"
24688 +"Ãœbereinstimmung"
24736 +"öffentlich-rechtlichen"
24752 +"österreichische"
24753 +"österreichischen"
24811 +"@@@mfg:Mit freundlichen Grüßen,", 1
24812 +"@@@sgdh:Sehr geehrte Damen und Herren,", 1
24814 diff --quilt /dev/null new/Dictionary/dicts/html.dict
24816 +++ new/Dictionary/dicts/html.dict
24818 +"@@@::SGML HTML::env:<@env@>@@@<@env@>", 1
24819 diff --quilt /dev/null new/Dictionary/dicts/latex.dict
24821 +++ new/Dictionary/dicts/latex.dict
24823 +##Word completion for LaTeX
24824 +"::LaTeX::\\Delta", 1000
24825 +"::LaTeX::\\Downarrow", 1000
24826 +"::LaTeX::\\Gamma", 1000
24827 +"::LaTeX::\\Im", 1000
24828 +"::LaTeX::\\Lambda", 1000
24829 +"::LaTeX::\\Leftarrow", 1000
24830 +"::LaTeX::\\Leftrightarrow", 1000
24831 +"::LaTeX::\\Omega", 1000
24832 +"::LaTeX::\\Phi", 1000
24833 +"::LaTeX::\\Pi", 1000
24834 +"::LaTeX::\\Pr", 1000
24835 +"::LaTeX::\\Psi", 1000
24836 +"::LaTeX::\\Re", 1000
24837 +"::LaTeX::\\Rightarrow", 1000
24838 +"::LaTeX::\\Sigma", 1000
24839 +"::LaTeX::\\Theta", 1000
24840 +"::LaTeX::\\Uparrow", 1000
24841 +"::LaTeX::\\Updownarrow", 1000
24842 +"::LaTeX::\\Upsilon", 1000
24843 +"::LaTeX::\\Xi", 1000
24844 +"::LaTeX::abstract", 1000
24845 +"::LaTeX::\\acute ", 1000
24846 +"::LaTeX::\\address", 1000
24847 +"::LaTeX::\\aleph", 1000
24848 +"::LaTeX::\\alpha", 1000
24849 +"::LaTeX::\\amalg", 1000
24850 +"::LaTeX::\\angle", 1000
24851 +"::LaTeX::\\approx", 1000
24852 +"::LaTeX::\\arccos", 1000
24853 +"::LaTeX::\\arcsin", 1000
24854 +"::LaTeX::\\arctan", 1000
24855 +"::LaTeX::\\arg", 1000
24856 +"::LaTeX::article", 1000
24857 +"::LaTeX::\\ast", 1000
24858 +"::LaTeX::\\asymp", 1000
24859 +"::LaTeX::\\author", 1000
24860 +"::LaTeX::\\backslash", 1000
24861 +"::LaTeX::\\bar", 1000
24862 +"::LaTeX::\\begin", 1000
24863 +"::LaTeX::\\beta", 1000
24864 +"::LaTeX::\\bibitem", 1000
24865 +"::LaTeX::\\bigcap", 1000
24866 +"::LaTeX::\\bigcirc", 1000
24867 +"::LaTeX::\\bigcup", 1000
24868 +"::LaTeX::\\bigodot ", 1000
24869 +"::LaTeX::\\bigoplus", 1000
24870 +"::LaTeX::\\bigotimes", 1000
24871 +"::LaTeX::\\bigsqcup", 1000
24872 +"::LaTeX::\\bigtriangledown", 1000
24873 +"::LaTeX::\\bigtriangleup", 1000
24874 +"::LaTeX::\\biguplus", 1000
24875 +"::LaTeX::\\bigvee ", 1000
24876 +"::LaTeX::\\bigwedge ", 1000
24877 +"::LaTeX::book", 1000
24878 +"::LaTeX::\\bot", 1000
24879 +"::LaTeX::\\breve", 1000
24880 +"::LaTeX::\\bullet", 1000
24881 +"::LaTeX::\\cap", 1000
24882 +"::LaTeX::\\caption", 1000
24883 +"::LaTeX::\\cdot", 1000
24884 +"::LaTeX::\\center", 1000
24885 +"::LaTeX::\\centering", 1000
24886 +"::LaTeX::\\chapter", 1000
24887 +"::LaTeX::\\check", 1000
24888 +"::LaTeX::\\choose", 1000
24889 +"::LaTeX::\\circ", 1000
24890 +"::LaTeX::\\cite", 1000
24891 +"::LaTeX::\\clubsuit", 1000
24892 +"::LaTeX::\\coprod", 1000
24893 +"::LaTeX::\\cos", 1000
24894 +"::LaTeX::\\cosh", 1000
24895 +"::LaTeX::\\cot", 1000
24896 +"::LaTeX::\\coth", 1000
24897 +"::LaTeX::\\csc", 1000
24898 +"::LaTeX::\\cup", 1000
24899 +"::LaTeX::\\dagger", 1000
24900 +"::LaTeX::\\dashv", 1000
24901 +"::LaTeX::\\date", 1000
24902 +"::LaTeX::\\ddagger", 1000
24903 +"::LaTeX::\\ddot", 1000
24904 +"::LaTeX::\\deg", 1000
24905 +"::LaTeX::\\delta", 1000
24906 +"::LaTeX::description", 1000
24907 +"::LaTeX::\\det", 1000
24908 +"::LaTeX::\\diamond", 1000
24909 +"::LaTeX::\\diamondsuit", 1000
24910 +"::LaTeX::\\dim", 1000
24911 +"::LaTeX::\\displaymath", 1000
24912 +"::LaTeX::\\div", 1000
24913 +"::LaTeX::document", 1000
24914 +"::LaTeX::\\documentclass", 1000
24915 +"::LaTeX::\\documentstyle", 1000
24916 +"::LaTeX::\\dot", 1000
24917 +"::LaTeX::\\dots", 1000
24918 +"::LaTeX::\\downarrow", 1000
24919 +"::LaTeX::\\downarrow", 1000
24920 +"::LaTeX::\\downarrow", 1000
24921 +"::LaTeX::\\ell", 1000
24922 +"::LaTeX::\\emptyset", 1000
24923 +"::LaTeX::\\end", 1000
24924 +"::LaTeX::enumerate", 1000
24925 +"::LaTeX::eqnarray", 1000
24926 +"::LaTeX::equation", 1000
24927 +"::LaTeX::\\equiv", 1000
24928 +"::LaTeX::\\eta", 1000
24929 +"::LaTeX::\\exists", 1000
24930 +"::LaTeX::\\exp", 1000
24931 +"::LaTeX::figure", 1000
24932 +"::LaTeX::\\flat", 1000
24933 +"::LaTeX::\\footnote", 1000
24934 +"::LaTeX::\\forall", 1000
24935 +"::LaTeX::\\frac", 1000
24936 +"::LaTeX::\\frown", 1000
24937 +"::LaTeX::\\gamma", 1000
24938 +"::LaTeX::\\gcd", 1000
24939 +"::LaTeX::\\geq", 1000
24940 +"::LaTeX::\\gg", 1000
24941 +"::LaTeX::\\grave", 1000
24942 +"::LaTeX::\\hat", 1000
24943 +"::LaTeX::\\hbar", 1000
24944 +"::LaTeX::\\hbar", 1000
24945 +"::LaTeX::\\heartsuit", 1000
24946 +"::LaTeX::\\hom", 1000
24947 +"::LaTeX::\\imath", 1000
24948 +"::LaTeX::\\in", 1000
24949 +"::LaTeX::\\include", 1000
24950 +"::LaTeX::\\inf", 1000
24951 +"::LaTeX::\\infty", 1000
24952 +"::LaTeX::\\int", 1000
24953 +"::LaTeX::\\iota", 1000
24954 +"::LaTeX::\\item", 1000
24955 +"::LaTeX::itemize", 1000
24956 +"::LaTeX::\\jmath", 1000
24957 +"::LaTeX::\\kappa", 1000
24958 +"::LaTeX::\\ker", 1000
24959 +"::LaTeX::\\ki", 1000
24960 +"::LaTeX::\\label", 1000
24961 +"::LaTeX::\\langle", 1000
24962 +"::LaTeX::\\lceil", 1000
24963 +"::LaTeX::\\leftarrow", 1000
24964 +"::LaTeX::\\leftharpoondown", 1000
24965 +"::LaTeX::\\leftharpoonup", 1000
24966 +"::LaTeX::\\leftrightarrow", 1000
24967 +"::LaTeX::\\leq", 1000
24968 +"::LaTeX::\\letter", 1000
24969 +"::LaTeX::\\lfloor", 1000
24970 +"::LaTeX::\\lg", 1000
24971 +"::LaTeX::\\lim", 1000
24972 +"::LaTeX::\\liminf", 1000
24973 +"::LaTeX::\\limsup", 1000
24974 +"::LaTeX::\\ll", 1000
24975 +"::LaTeX::\\ln", 1000
24976 +"::LaTeX::\\log", 1000
24977 +"::LaTeX::\\maketitle", 1000
24978 +"::LaTeX::\\mapsto", 1000
24979 +"::LaTeX::\\math", 1000
24980 +"::LaTeX::\\max", 1000
24981 +"::LaTeX::\\mbox", 1000
24982 +"::LaTeX::\\mid", 1000
24983 +"::LaTeX::\\min", 1000
24984 +"::LaTeX::\\minipage", 1000
24985 +"::LaTeX::\\mp", 1000
24986 +"::LaTeX::\\mu", 1000
24987 +"::LaTeX::\\nabla", 1000
24988 +"::LaTeX::\\natural", 1000
24989 +"::LaTeX::\\nearrow", 1000
24990 +"::LaTeX::\\neg", 1000
24991 +"::LaTeX::\\newcommand", 1000
24992 +"::LaTeX::\\ni", 1000
24993 +"::LaTeX::\\not", 1000
24994 +"::LaTeX::\\nu", 1000
24995 +"::LaTeX::\\nwarrow", 1000
24996 +"::LaTeX::\\odot", 1000
24997 +"::LaTeX::\\oint", 1000
24998 +"::LaTeX::\\omega", 1000
24999 +"::LaTeX::\\ominus", 1000
25000 +"::LaTeX::\\onecolumn", 1000
25001 +"::LaTeX::\\oplus", 1000
25002 +"::LaTeX::\\oslash", 1000
25003 +"::LaTeX::\\otimes", 1000
25004 +"::LaTeX::\\overbrace", 1000
25005 +"::LaTeX::\\overleftarrow", 1000
25006 +"::LaTeX::\\overline", 1000
25007 +"::LaTeX::\\overrightarrow", 1000
25008 +"::LaTeX::\\parallel", 1000
25009 +"::LaTeX::\\partial", 1000
25010 +"::LaTeX::\\perp", 1000
25011 +"::LaTeX::\\phi", 1000
25012 +"::LaTeX::\\pi", 1000
25013 +"::LaTeX::\\pm", 1000
25014 +"::LaTeX::\\prec", 1000
25015 +"::LaTeX::\\preceq", 1000
25016 +"::LaTeX::\\prime", 1000
25017 +"::LaTeX::\\prod ", 1000
25018 +"::LaTeX::\\propto", 1000
25019 +"::LaTeX::\\psi", 1000
25020 +"::LaTeX::\\qquad", 1000
25021 +"::LaTeX::\\quad", 1000
25022 +"::LaTeX::\\rangle", 1000
25023 +"::LaTeX::\\rceil", 1000
25024 +"::LaTeX::\\ref", 1000
25025 +"::LaTeX::\\renewcommand", 1000
25026 +"::LaTeX::report", 1000
25027 +"::LaTeX::\\rfloor", 1000
25028 +"::LaTeX::\\rho", 1000
25029 +"::LaTeX::\\rightarrow", 1000
25030 +"::LaTeX::\\rightharpoondown", 1000
25031 +"::LaTeX::\\rightharpoonup", 1000
25032 +"::LaTeX::\\searrow", 1000
25033 +"::LaTeX::\\sec", 1000
25034 +"::LaTeX::\\section", 1000
25035 +"::LaTeX::\\setminus", 1000
25036 +"::LaTeX::\\sharp", 1000
25037 +"::LaTeX::\\sigma", 1000
25038 +"::LaTeX::\\sim", 1000
25039 +"::LaTeX::\\simeq", 1000
25040 +"::LaTeX::\\sin", 1000
25041 +"::LaTeX::\\sinh", 1000
25042 +"::LaTeX::\\smallint", 1000
25043 +"::LaTeX::\\smile", 1000
25044 +"::LaTeX::\\spadesuit", 1000
25045 +"::LaTeX::\\sqcap", 1000
25046 +"::LaTeX::\\sqcup", 1000
25047 +"::LaTeX::\\sqsubseteq", 1000
25048 +"::LaTeX::\\sqsupseteq", 1000
25049 +"::LaTeX::\\star", 1000
25050 +"::LaTeX::\\subsection", 1000
25051 +"::LaTeX::\\subset", 1000
25052 +"::LaTeX::\\subseteq", 1000
25053 +"::LaTeX::\\succ", 1000
25054 +"::LaTeX::\\succeq", 1000
25055 +"::LaTeX::\\sum", 1000
25056 +"::LaTeX::\\sup", 1000
25057 +"::LaTeX::\\supset", 1000
25058 +"::LaTeX::\\supseteq", 1000
25059 +"::LaTeX::\\surd", 1000
25060 +"::LaTeX::\\swarrow", 1000
25061 +"::LaTeX::\\table", 1000
25062 +"::LaTeX::\\tabular", 1000
25063 +"::LaTeX::\\tan", 1000
25064 +"::LaTeX::\\tanh", 1000
25065 +"::LaTeX::\\tau", 1000
25066 +"::LaTeX::\\text", 1000
25067 +"::LaTeX::\\thebibliography", 1000
25068 +"::LaTeX::\\theta", 1000
25069 +"::LaTeX::\\tilde", 1000
25070 +"::LaTeX::\\times", 1000
25071 +"::LaTeX::\\today", 1000
25072 +"::LaTeX::\\top", 1000
25073 +"::LaTeX::\\triangle", 1000
25074 +"::LaTeX::\\triangleleft ", 1000
25075 +"::LaTeX::\\triangleright", 1000
25076 +"::LaTeX::\\twocolumn", 1000
25077 +"::LaTeX::\\underbrace", 1000
25078 +"::LaTeX::\\underline", 1000
25079 +"::LaTeX::\\uparrow", 1000
25080 +"::LaTeX::\\uparrow", 1000
25081 +"::LaTeX::\\uparrow", 1000
25082 +"::LaTeX::\\updownarrow", 1000
25083 +"::LaTeX::\\updownarrow", 1000
25084 +"::LaTeX::\\updownarrow", 1000
25085 +"::LaTeX::\\uplus", 1000
25086 +"::LaTeX::\\upsilon", 1000
25087 +"::LaTeX::\\usepackage", 1000
25088 +"::LaTeX::\\varepsilon", 1000
25089 +"::LaTeX::\\varphi", 1000
25090 +"::LaTeX::\\varpi", 1000
25091 +"::LaTeX::\\varsigma", 1000
25092 +"::LaTeX::\\vartheta", 1000
25093 +"::LaTeX::\\vdash", 1000
25094 +"::LaTeX::\\vec", 1000
25095 +"::LaTeX::\\vee", 1000
25096 +"::LaTeX::\\vspace", 1000
25097 +"::LaTeX::\\wedge", 1000
25098 +"::LaTeX::\\widehat", 1000
25099 +"::LaTeX::\\widetilde", 1000
25100 +"::LaTeX::\\wp", 1000
25101 +"::LaTeX::\\wr", 1000
25102 +"::LaTeX::\\zeta", 1000
25104 +##Expansions for LaTeX
25105 +"@@@::LaTeX::it:\\begin{itemize}
25110 +"@@@::LaTeX::en:\\begin{enumerate}
25115 +"@@@::LaTeX::de:\\begin{description}
25117 +\\end{description}
25120 +"@@@::LaTeX::b:\\begin{@-env@}
25125 +"@@@::LaTeX::bf:{\\bf @@@}", 1
25126 +"@@@::LaTeX::em:{\\em @@@}", 1
25127 diff --quilt /dev/null new/Dictionary/dict_todo.txt
25129 +++ new/Dictionary/dict_todo.txt
25131 +TODO list for nedit with dictionary enhancement
25133 +- As soon as arrays (a[0] .. a[1]) of strings are available,
25134 + update the dict_complete macro command (macro.c) so that this
25135 + type is returned. Also updata macro function complete_word so
25136 + that all possible completions (nearest, global and language
25137 + specific) are put into one array, duplicates are removed and
25138 + (optional) everything is sorted by weight
25140 +- Somehow support comfortable editing of the dictionary to allow
25141 + changes to completions and templates. Also allow to automatically
25142 + scan through the dictionary to remove low weight entries, short
25145 +- Go away from one single,big dictionary file to a group of files
25146 + called plain.dict, cpp.dict etc. that are located somewhere like
25147 + .nedit/dictionary/ or .neditutil/dictionary/
25149 +- Find clever strategies to update the dictionary by scanning all
25150 + open files from time to time (however, keep things still simple
25153 +- Documentation! Without documentation, the user will not accept the
25154 + changes. Write documentation for the new built-in macro commands,
25155 + for the macro definitions, for the dictionary file format.
25157 +- What about identing of template expansions? Do we have to change the
25158 + routine that parses the text that should be inserted or do can this
25159 + be done with the Smart Indenting capabilities of nedit itself.
25162 +Christian Merkwirth, March 2000
25164 diff --quilt /dev/null new/Dictionary/dotnedit
25166 +++ new/Dictionary/dotnedit
25168 +nedit.macroCommands: \
25169 + Dictionary>Complete Word:Ctrl+Space::: {\n\
25170 + complete_word()\n\
25172 + Dictionary>Revert to original:Ctrl+Return::: {\n\
25173 + revert_to_keystring()\n\
25175 + Dictionary>Expand Template:Ctrl+Bracketright::: {\n\
25178 + Dictionary>Define Completion:Ctrl+Bracketleft::R: {\n\
25179 + insert_selection()\n\
25181 + Dictionary>Define Template:::R: {\n\
25182 + define_expansion()\n\
25184 + Dictionary>Scan Text:::: {\n\
25187 + Dictionary>Next Field:Ctrl+Backslash::: {\n\
25188 + goto_next_field()\n\
25190 + Dictionary>Save dictionary:::: {\n\
25193 + Dictionary>Append file to dictionary:::: {\n\
25194 + filename = string_dialog("Please enter dictionary filename" , "OK" , "Dismiss")\n\
25195 + dict_append(filename)\n\
25197 +nedit.highlightPatterns: \
25198 + Dictionary:20:0{\n\
25199 + Completion:"""[^@]":""""::String::\n\
25200 + Template:"""@@@":""""::Text Key::\n\
25201 + Namespace1:":[\\w]+::":::Preprocessor:Completion:\n\
25202 + Namespace2:"::[\\w]+::":::Preprocessor:Template:\n\
25203 + Comment:"#":"$"::Comment::\n\
25204 + Weight:"[0-9]+":::Identifier::\n\
25205 + Field:"@[@\\w\\>\\<\\.\\\\/]+@":::Text Arg:Template:\n\
25207 +nedit.languageModes: \
25208 + Dictionary:.dict::::::".,/\\`'!|@#%^&*()-=+{}[]"":;<>?~"\n
25209 diff --quilt /dev/null new/Dictionary/readme.html
25211 +++ new/Dictionary/readme.html
25214 +<TITLE>Nedit Dictionary</TITLE></HEAD>
25215 +<BODY bgcolor="#FFFFFF" text="#000000" <font face="arial, helvetica">
25217 +<H1>Dictionary based word completion and shortcut expansion for nedit 5.1.1</H1>
25221 +<LI><A HREF="#INTRO">Intro</A></LI>
25222 +<LI><A HREF="#INSTALL">Download and Installation</A></LI>
25223 +<LI><A HREF="#COMPLETION">Word completion</A></LI>
25224 +<LI><A HREF="#COMPLETION2">Stepping through the dictionary (<B>NEW</B>)</A></LI>
25225 +<LI><A HREF="#EXPANSION">Template (Shortcut) expansion</A></LI>
25226 +<LI><A HREF="#EXPANSION2">Auto fill fields in expansions</A></LI>
25227 +<LI><A HREF="#FORMAT">The dictionary file</A></LI>
25228 +<LI><A HREF="#CREDITS">Credits</A></LI>
25233 +<H2><A NAME="INTRO">Intro</A></H2>
25235 +<P>Nedit is my favorite editor for X-Windows. Though equipped with a lot of
25236 +useful features, it's still lean and fast, especially compared to the good old Emacs.
25237 +Nedit can be obtainded for free from <A HREF="http://www.nedit.org">
25238 +this website</A>.</P>
25240 +<P>I wrote an extension to nedit version 5.1.1, giving nedit the ability to quickly locate
25241 +strings just by giving the beginning characters inside a personal dictionary which is loaded
25242 +from the file <tt>.neditdict</tt>. This feature can be used at least for two tasks which might
25243 +come in very useful if you are a programmer or the like and tired of typing the same long words
25244 +(e.g. names of functions, library calls, variables etc.) again and again:
25246 +<LI><A HREF="#COMPLETION">Word completion</A></LI>
25247 +<LI><A HREF="#EXPANSION">Template (Shortcut) expansion</A></LI>
25251 +<P>The contributed patch is based on both a mixture of C code, which is compiled into the
25252 +nedit binary, and some code written in the nedit macro language. The C code part just adds
25253 +a couple of <A HREF="#COMMANDS">new macro commands</A> to nedit's built-in macro language,
25254 +which are used in some nice macros that are usually bound to accelerator keys (like Ctrl-Space
25255 +or the like) to allow for fast access.</P>
25257 +<P>The reason to apply only small changes to the nedit source code and implement a large part
25258 +of the dictionary stuff in the macro language was to allow the user to customize or improve
25259 +things if needed.</P>
25261 +<H2><A NAME="COMPLETION">Word completion</A></H2>
25263 +<P>A <EM>Complete word</EM> macro that inserts the nearest match to a given beginning was part
25264 +of the official nedit distribution for a long time. I liked this feature very much, but still
25265 +there were some shortcomings that bugged me. Possible completions were taken only from the
25266 +text of the current window. But when you begin to edit a new or very short file, the word that
25267 +you like to be completed is not given within the current text. And even if it is given, it may
25268 +be to far away from the cursor position. So I thought of some dictionary that stores the words
25269 +that ones uses. And since these are quite sure a lot of words, it is a good idea to attach a weight
25270 +to each word in the dictionary that is related to the typing usage frequency of this word so that
25271 +the hit rate will be optimized.</P>
25273 +<P>Assume the words <strong>dictionary</strong>, <strong>dictator</strong> and <strong>dictate</strong> are
25274 +stored in your personal dictionary, with relative weights 23, 2 and 3. Typing <strong>dict</strong> and invoking
25275 +the macro <em>Complete Word</em> (e.g. by typing Ctrl-Space) will complete to <strong>dictionary</strong>,
25276 +since <strong>dictionary</strong> has the greatest weight (actually, things are little bit more difficult,
25277 +there are several parameters which control the behaviour of <em>Complete Word</em>).
25280 +<P>The dictionary is sensitive to the current language mode. When a language mode other than <strong>Plain</strong>
25281 +is active, words are inserted into a separate namespace for this language. <em>Complete Word</em> first
25282 +searches for matches in the namespace of the current language mode. If there's no match, the global namespace is
25285 +<P>The more the <em>Complete word</em> macro is used, the quicker the dictionary will grow (and adapt).
25286 +To manually insert a word (or even a whole sentence) into the dictionary, select the text to insert and
25287 +type <EM>Ctrl-Bracketleft</EM>.</P>
25289 +<H2><A NAME="COMPLETION2">Stepping through the dictionary</A></H2>
25291 +<P>Now it's possible to step through various possible completions (in order of ascending weight)
25292 +by repeatedly invoking the <em>Complete word</em> macro. The first completion offered is the
25293 +nearest match taken from the current text, pretty much like the old-style complete word. Then
25294 +the language mode specific namespace will be searched for possible matches. Last but not least,
25295 +the global namespace will be searched. The number of possible matches can be changed in the macro
25296 +definitions according to the user's preferences.</P>
25298 +<P>I was looking for a proper method to let the dictionary learn which words the user uses most. The rule
25299 +I coded into the macro definitions is now as follows: Each time you invoke the complete word macro, it looks
25300 +if you made a successful completion previously. If there was a successful completion, this string is inserted
25301 +into the dictionary to reinforce weights or just learn the new string. But how does the macro detect if the
25302 +last completion was successful, i.e. the user got what he wanted ? Simply by the fact that you did nothing
25303 +but going on typing. If you step through the possible completions to some given characters and you are not
25304 +satisfied with the solutions provided, please use the <EM>Revert to original</EM> macro. This will delete
25305 +the proposed completion, just giving the characters that you typed in. And it tells the other macro routines
25306 +that there was no successful completion. Otherwise, the last completion that was offered is taken to be a
25310 +<H2><A NAME="EXPANSION">Template (Shortcut) expansion</A></H2>
25313 +Template (Shortcut) expansion is a very simple, yet powerful feature. For example, typing <strong>cl</strong> and invoking
25314 +the macro <em>Expand</em> (e.g. by typing Ctrl-Bracketright) will replace <strong>cl</strong> by:
25317 +<font color="#7a0c0c"><b>class </b></font><font color="#000000"><b><i>@-name@ </i></b></font><font color="#000000"><b>{
25318 + </b></font><font color="#7a0c0c"><b>private</b></font><font color="#000000">:
25319 + </font><font color="#000000"><b><i>@@@
25321 + </i></b></font><font color="#7a0c0c"><b>public</b></font><font color="#000000">:
25322 + </font><font color="#000000"><b><i>@-name@</i></b></font><font color="#1530b0"><b>()</b></font><font color="#000000">;
25323 + ~</font><font color="#000000"><b><i>@-name@</i></b></font><font color="#1530b0"><b>()</b></font><font color="#000000">;
25328 +<P>A sequence of type <tt>@*@</tt> is used as a placeholder or <B>field</B>in the template.
25329 +Invoking the <em>Next field</em> macro (Ctrl-Backslash) positions the cursor at
25330 +the next <tt>@*@</tt> section, so you can quickly fill these parts of a template as
25331 +if it was a form sheet.</P>
25333 +<P>Like word completion, this feature is language mode sensitive. This allows to use the same abbreviations
25334 +in different language modes. Templates can only be defined manually by selecting the desired code
25335 +segment and invoking the macro <em>Define Expansion</em>. It is not possible to
25336 +use the same abbreviation (e.g. <B>cl</B>) twice, it has to be unique.</P>
25338 +<H2><A NAME="EXPANSION2">Auto fill fields in expansions (<B>NEW</B>)</A></H2>
25340 +<P>A field <tt>@@@</tt> is a general purpose field. Using the above mentioned macros, one
25341 +can quickly jump to this positions and fill in. Fields of type <b><tt>@-name@</tt></b> are
25342 +treated somewhat different. These field are called <EM>auto fill fields</EM>. If the user
25343 +fills in the first named field of a template and invokes the <em>Next field</em> macro,
25344 +all other named fields with the same name tag are replaced automatically with this text.
25345 +In the above class example, the class name will be inserted at any position <b><tt>@-name@</tt></b>
25348 +<P>There are some additional types of fields. First, fields of type <b><tt>@<file@</tt></b>
25349 +insert text from file called 'file' at the given position (even recursively!). Fields of type
25350 +<b><tt>@>temp@</tt></b> try to expand template 'temp' and the insert the expanded text at
25354 +<H2><A NAME="INSTALL">Download</A></H2>
25356 +<P>Here is the dictionary enhanced version of nedit <strong>5.1.1</strong>:</p>
25361 +<LI><A HREF="nedit-5.1.1.tgz">5.1.1 sources as tar.gz file (~620 kB)</A></LI>
25363 +<LI>Precompiled binaries (nedit/nc)
25365 +<LI><A HREF="nedit511_sgi.tgz"> 5.1.1 Executables for SGI IRIX 6.5 (n32) (~420 kB)</A></LI>
25366 +<LI><A HREF="nedit511_solaris.tgz"> 5.1.1 Executables for Solaris (~320 kB)</A></LI>
25368 +<LI>Macro definitions
25370 +<LI><A HREF="dotnedit">Snippet from .nedit (include into your existing .nedit file)</A></LI>
25371 +<LI><A HREF="dictionary.nm">dictionary.nm (put into your home directory)</A></LI>
25373 +<LI>Startup dictionaries:
25375 +<LI><A HREF="dicts/cpp.dict">Completions and expansions for C/C++</A></LI>
25376 +<LI><A HREF="dicts/latex.dict">Completions and expansions for LaTeX</A></LI>
25377 +<LI><A HREF="dicts/german_latex.dict">German words containing umlaut, prepared for use with LaTeX</A></LI>
25378 +<LI><A HREF="dicts/german.dict">Frequently used german words (weighted)</A></LI>
25379 +<LI><A HREF="dicts/english_top.dict">10000 most frequently used english words (without weights)</A></LI>
25380 +<LI><A HREF="dicts/german_top.dict">10000 most frequently used german words (without weights)</A></LI>
25384 +<H3>Quick setup</H3>
25387 +To install, get the source code from the above section and unpack it. It contains all necessary
25388 +stuff to build nedit and set up the dictionary. Unpack it and change to the distribution directory.
25389 +Issuing <CODE>make xxx</CODE> (with xxx filled in for your system)
25390 +should hopefully do it. If you are not afraid of collisions between your existing nedit preferences and
25391 +the new ones, simply change to the Dictionary directory and issue <CODE>source setup.sh</CODE>. Your old settings
25392 +will be save to files <EM>.nedit.O</EM> and <EM>.neditmacro.O</EM>. This should give a minimal setup to
25393 +work with the dictionary. Please don't forget to save these preferences with <EM>Preferences->Save Defaults</EM> </P>
25395 +<H3>Manual setup</H3>
25397 +<p>However, up to now, there's no really elegant
25398 +method for merging old and new nedit settings. So if one wants to do things manually, start as stated above and
25399 +make the executable, then append dictionary.nm to .neditmacro (e.g. by <CODE>cd $HOME; cat dictionary.nm >> .neditmacro</CODE>) and create the
25400 +dictionary file (e.g. by <CODE>cd $HOME; cat cpp.dict latex.dict >> .neditdict</CODE>). You can even start with an
25401 +empty or nonexisting dictionary file, it will be created automatically.</p>
25403 +<p>The only thing left is to include the new macro definitions into your <EM>.nedit</EM>
25404 +file. Please make sure that there are no colliding keybindings with your old setup. New keybindings are
25405 +<EM>Ctrl-Space</EM> and <EM>Ctrl-Bracketleft</EM>, <EM>Ctrl-Bracketright</EM>, <EM>Ctrl-Backslash</EM>
25406 +and <EM>Ctrl-Return</EM>.
25407 +Of course, you can change the keybindings according to your preferences.
25408 +To include the new macro definitions, issue <CODE>nedit -import dotnedit</CODE> and save new settings with
25409 +<EM>Preferences->Save Defaults</EM>.</P>
25413 +<H2><A NAME="FORMAT">The dictionary file</A></H2>
25415 +<P>The dictionary will be loaded from a the file <tt>.neditdict</tt>. Its format is human readable, so it can be modified
25416 +by hand if needed. If no file <tt>.neditdict</tt> is present, it will be created automatically.
25419 +<H3>General Format</H3>
25421 +<p>The dictionary file format is quite simple, each string is put into quotes, then comes a comma and the integer weight.
25422 +The quoted string can occupy several lines, contain linefeeds etc. A <tt>\</tt> escapes any following character, so in order to get a quote,
25423 +simply use <tt>\"</tt>, to get a backslash, use <tt>\\</tt>.
25425 +"String1", weight1
25426 +"String2", weight2
25427 +"String3", weight3
25428 +"String4", weight4
25432 +<H3>Complete word format</H3>
25434 +<p>The syntax for word completion is as follows:
25440 +"::C++::class", 15
25441 +"::C++::double", 34
25442 +"::LaTeX::document", 12
25443 +"::LaTeX::itemize", 4
25444 +"::LaTeX::item", 12
25447 +The first three lines define words in the global namespace. Words in language mode specific namespaces begin with a <tt>::</tt>,
25448 +followed by the language mode and another <tt>::</tt>, and finally the word itself.</P>
25450 +<H3>Template (Shortcut) expansion format</H3>
25453 +"@@@::C++::cl:class @-name@ {
25461 +"@@@::LaTeX::it:\\begin{itemize}
25468 +A expansion entry begins with <tt>@@@</tt>, followed by <tt>::</tt> language mode name <tt>::</tt> and the
25469 +shortcut keyword, terminated with a single <tt>:</tt>. After this comes the expansion text.
25470 +Any sequence of type <tt>@*@</tt> is called
25471 +a field, which is just a position in the template where the user usually fills in text, e.g.
25472 +the body of a loop, the name of a class etc. Within the dictionary, these field are just
25473 +treated like any normal text. All functions related to template expansion and fields are
25474 +realized in the nedit macro language, so the user can change the behaviour of these macros.
25475 +E.g., it is possible to redefine the field sequence to something like <tt>%%%</tt> (of
25476 +course, every entry in the dictionary must then be changed accordingly).
25479 +<H2><A NAME="CREDITS">Credits</A></H2>
25481 +<p>Credits to <a href="http://www.cs.princeton.edu/~rs/">Robert Sedgewick</a>, who wrote some
25482 +interesing articles on <em>Ternary Search Trees</em> on which is dictionary code is strongly based.
25483 +Thanks to <a href="http://www.physik3.gwdg.de/~junge/">Lutz Junge</a> for helping me to cope with the
25484 +macro language and macro files. Also thanks to Marc Verdiesen, whose original expander contribution gave
25485 +me the idea to use the dictionary for shortcut expansion, Stefan Haehn, whose enhanced expander
25486 +code inspired me to parse the expansion string before it is inserted, and to Peter Hellwig,
25487 +who helped me supplying a german dictionary with usage frequencies.
25488 +The top 10000 and top 1000 English and German words are adapted from files provided
25489 +by the University of Leipzig in the <a href="http://wortschatz.uni-leipzig.de">Projekt deutscher Wortschatz</a>.
25490 +Any suggestions, enhancements or useful dictionaries and templates are highly welcome.
25495 +<BR><FONT SIZE=2>Copyright © 1997-2000 <A HREF="http://www.physik3.gwdg.de">DPI Göttingen</A>
25497 diff --quilt /dev/null new/Dictionary/setup.sh
25499 +++ new/Dictionary/setup.sh
25503 +# Simple setup script for the dictionary enhanced version of nedit 5.1.1
25505 +cp ${HOME}/.neditmacro ${HOME}/.neditmacro.O
25506 +cp ${HOME}/.nedit ${HOME}/.nedit.O
25508 +cat dictionary.nm >> ${HOME}/.neditmacro
25509 +cat dicts/cpp.dict dicts/latex.dict >> ${HOME}/.neditdict
25511 +../source/nedit -import dotnedit demo.cc &
25514 diff --quilt /dev/null new/source/dictionary.c
25516 +++ new/source/dictionary.c
25518 +/*******************************************************************************
25520 +* dictionary.c - dictionary extension for the nirvana editor nedit
25523 +* Germany Dec 1999
25525 +* Copyright (C) Christian Merkwirth
25527 +* This is free software; you can redistribute it and/or modify it under the *
25528 +* terms of the GNU General Public License as published by the Free Software *
25529 +* Foundation; either version 2 of the License, or (at your option) any later *
25532 +* This software is distributed in the hope that it will be useful, but WITHOUT *
25533 +* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
25534 +* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License *
25535 +* for more details. *
25537 +* You should have received a copy of the GNU General Public License along with *
25538 +* software; if not, write to the Free Software Foundation, Inc., 59 Temple *
25539 +* Place, Suite 330, Boston, MA 02111-1307 USA *
25541 +* Written by Christian Merkwirth
25543 +*******************************************************************************/
25546 +#include <stdio.h>
25547 +#include <stdlib.h>
25548 +#include <string.h>
25550 +#include "../util/utils.h"
25552 +#include "dictionary.h"
25553 +#include "ternary_search_tree.h"
25555 +int dictionary_loaded = 0; /* = 1 => dictionary was loaded from file */
25556 +int dictionary_modified = 0; /* = 1 => dictionary was */
25557 +int dictionary_auto_save = 0; /* = 1 => save dictionary automatically (on exit/window close) */
25558 +int dictionary_cumulative_save = 0; /* > 0 => save dictionary after every dictionary_cumulative_save insertion operations */
25559 +char* dictionary_filename = NULL; /* == NULL => the default dictionary name is used */
25561 +static FILE* fid = NULL;
25562 +static int default_tree_for_dictionary = 0;
25564 +static void save_entry(const char* s, const unsigned long weight);
25566 +int loaddict(void);
25567 +int savedict(void);
25568 +int appenddict(char* filename);
25569 +int load_dict(const char* filename);
25570 +int save_dict(const char* filename);
25571 +void cleanup_dict(void);
25572 +int insert_dict(const char* s, unsigned long weight);
25573 +int complete_dict(const char* s, char** S, const long minimum_chars, const int maxmatches);
25574 +unsigned long dict_is_element(const char* const s);
25576 +int insert_dict(const char* s, unsigned long weight)
25578 + return insert_string(s, weight, default_tree_for_dictionary);
25581 +/* Search tree to see if we can complete the string s
25583 + s - beginning of word to complete (terminated by '\0'
25584 + (*S) - (output) string with the characters needed to complete s to the full word, allocated by the
25585 + called function, no deallocation is needed, so better copy string
25587 + ambiguity_tolerance - parameter ranging within ]0..1] that determines how much ambiguity is allowed
25588 + when completing the word, 1 means allow no ambiguity at all, smaller values
25589 + allow for more ambiguity
25591 + minimum_chars - minimal number of chars s must have before completion is tried (default should be 0)
25593 +int complete_dict(const char* s, char** S, const long minimum_chars, const int maxmatches)
25596 + static char* empty_string = "";
25598 + if (strlen(s) < minimum_chars) {
25599 + *S = empty_string;
25601 + status = complete_string(s, S, maxmatches, default_tree_for_dictionary);
25602 + if (status <= 0) {
25603 + *S = empty_string;
25610 +unsigned long dict_is_element(const char* const s)
25612 + return string_is_element(s, default_tree_for_dictionary);
25615 +void cleanup_dict(void)
25617 + cleanup_tree(default_tree_for_dictionary);
25620 + dictionary_loaded = 0;
25621 + dictionary_modified = 0;
25624 +/* small wrapper to load dictionary from default dictionary file */
25625 +int loaddict(void)
25629 + if (dictionary_filename == NULL) {
25630 + if ((dictionary_filename = strdup(GetRCFileName(NEDIT_DICT))) == NULL)
25634 + if (!dictionary_loaded) {
25635 + status = load_dict(dictionary_filename);
25637 + /* anyway, assume dictionary is loaded (maybe there's no file $HOME/$DEFAULT_DICTIONARY_NAME) */
25638 + dictionary_loaded = 1;
25644 +/* small wrapper to save dictionary to file $HOME/$DEFAULT_DICTIONARY_NAME */
25645 +int savedict(void)
25649 + if (dictionary_filename == NULL) {
25650 + if ((dictionary_filename = strdup(GetRCFileName(NEDIT_DICT))) == NULL)
25654 + if (dictionary_modified) {
25655 + char* backup_name = NULL;
25657 + if (!dictionary_loaded)
25660 + backup_name = malloc(strlen(dictionary_filename) + 2);
25662 + if (backup_name) {
25663 + strcpy(backup_name, dictionary_filename);
25664 + strcat(backup_name, "~");
25665 + rename(dictionary_filename, backup_name);
25666 + free(backup_name);
25669 + status = save_dict(dictionary_filename);
25671 + dictionary_modified = 0;
25677 +int appenddict(char* filename)
25681 + if (filename == NULL)
25684 + loaddict(); /* first load dictionary from default dictionary file */
25685 + status = load_dict(filename); /* load additional dictionary */
25686 + if (status == 0) {
25687 + dictionary_modified = 1; /* mark dictionary as modified */
25696 + load dictionary from file filename
25697 + format of dictfile :
25710 + In the quoted string, any character can be escaped by an \, so
25714 + returns 0 on SUCCESS, otherwise failure
25716 +int load_dict(const char* filename)
25719 + long count = 0; /* length of current line */
25721 + char* line = NULL;
25722 + long linelen = 512;
25728 + if (filename == NULL)
25731 + fid = fopen(filename, "r");
25736 + line = (char*) malloc((linelen+4) * sizeof(char));
25737 + if (line == NULL)
25743 + goto success_exit;
25744 + else if (c == '\"')
25745 + goto read_string;
25747 + goto expecting_quote;
25752 + static int escaped = 0;
25757 + if (!escaped && (c == '\\')) {
25762 + if (!escaped && (c == '\"')) {
25763 + line[count] = '\0'; /* add terminating zero */
25764 + goto expecting_comma;
25767 + line[count++] = c;
25769 + if (count >= linelen) {
25771 + line = (char*) realloc(line, (linelen+4) * sizeof(char));
25772 + if (line == NULL)
25781 + insert_string(line, 1, default_tree_for_dictionary); /* assume weight 1 */
25782 + goto success_exit;
25785 + goto read_number;
25787 + insert_string(line, 1, default_tree_for_dictionary); /* assume weight 1 */
25788 + goto read_string;
25793 + if (fscanf(fid, "%ld", &weight) != 1)
25799 + insert_string(line, weight, default_tree_for_dictionary);
25801 + goto expecting_quote;
25819 +static void save_entry(const char* s, const unsigned long weight)
25823 + if ((*s == '"') || (*s == '\\')) /* escape quote and backslash chars */
25826 + putc(*(s++), fid);
25828 + fprintf(fid, "\", %lu\n", weight);
25832 + save dictionary to file filename
25833 + format of dictfile :
25846 + In the quoted string, any character can be escaped by an \, so
25850 + returns 0 on SUCCESS, otherwise failure
25852 +int save_dict(const char* filename)
25854 + void (*func)() = (&save_entry);
25856 + if (filename != 0) {
25857 + fid = fopen(filename, "w");
25860 + traverse(default_tree_for_dictionary, func);
25865 + return -1; /* could not open file filename */
25869 + return -2; /* no filename given */
25872 +#ifdef DEB_STAND_ALONE_DICT
25873 +/* for debugging, dictionary.c can be compiled to a standalone application */
25875 +static char line[65536];
25876 +static char* completion;
25878 +/* recursivly traverse tree (for testing purposes) */
25880 +void testing(const char* s, const unsigned long weight)
25882 + printf("%s : %d\n", s, weight);
25886 +int main(int argc, char** argv)
25889 + void (*func)() = (&testing);
25895 + for(i=0; i < 1; i++) {
25896 + load_dict(argv[1]);
25897 + fprintf(stderr, "Loaded dictionary from file : %s \n", argv[1]);
25898 + traverse(default_tree_for_dictionary, func);
25899 + fprintf(stderr, "Cleaning up dictionary\n");
25904 + long matches = 0;
25906 + load_dict(argv[1]);
25908 + matches = complete_string(argv[2], S, 0.0, 8, default_tree_for_dictionary);
25910 + printf("Found %d matches\n", matches);
25911 + for(i=0; i<matches;i++) {
25912 + printf("%s\n", S[i]);
25923 +#undef DEFAULT_DICTIONARY_NAME
25925 diff --quilt /dev/null new/source/dictionary.h
25927 +++ new/source/dictionary.h
25929 +#ifndef DICTIONARY_H
25930 +#define DICTIONARY_H
25932 +extern char* dictionary_filename; /* == NULL => the default dictionary name is used */
25933 +extern int dictionary_loaded; /* = 1 => dictionary was loaded from file */
25934 +extern int dictionary_modified; /* = 1 => dictionary was modified */
25935 +extern int dictionary_auto_save; /* = 1 => save dictionary automatically (on exit/window close) */
25936 +extern int dictionary_cumulative_save; /* > 0 => save dictionary after every dictionary_cumulative_save insertion operations */
25938 +extern int insert_dict(const char* s, unsigned long weight);
25939 +extern int complete_dict(const char* s, char** S, const long minimum_chars, const int maxmatches);
25940 +extern unsigned long dict_is_element(const char* const s);
25942 +extern int load_dict(const char* filename);
25943 +extern int save_dict(const char* filename);
25944 +extern void cleanup_dict(void);
25946 +extern int loaddict(void);
25947 +extern int savedict(void);
25948 +extern int appenddict(char* filename);
25950 diff --quilt old/source/macro.c new/source/macro.c
25951 --- old/source/macro.c
25952 +++ new/source/macro.c
25953 @@ -57,10 +57,12 @@ static const char CVSID[] = "$Id: macro.
25954 #include "highlight.h"
25955 #include "highlightData.h"
25956 #include "rangeset.h"
25957 #include "patternMatch.h"
25958 #include "regularExp.h"
25959 +#include "dictionary.h"
25963 #include <stdlib.h>
25964 #include <string.h>
25966 @@ -416,10 +418,21 @@ static int callMS(WindowInfo *window, Da
25968 /* Pattern Match Feature */
25969 static int getMatchingMS(WindowInfo *window, DataValue *argList, int nArgs,
25970 DataValue *result, char **errMsg);
25972 +static int dictinsertMS(WindowInfo *window, DataValue *argList, int nArgs,
25973 + DataValue *result, char **errMsg);
25974 +static int dictcompleteMS(WindowInfo *window, DataValue *argList, int nArgs,
25975 + DataValue *result, char **errMsg);
25976 +static int dictsaveMS(WindowInfo *window, DataValue *argList, int nArgs,
25977 + DataValue *result, char **errMsg);
25978 +static int dictappendMS(WindowInfo *window, DataValue *argList, int nArgs,
25979 + DataValue *result, char **errMsg);
25980 +static int dictiselementMS(WindowInfo *window, DataValue *argList, int nArgs,
25981 + DataValue *result, char **errMsg);
25983 /* Built-in subroutines and variables for the macro language */
25984 static const BuiltInSubrName MacroSubrs[] = {
25985 { "length", lengthMS },
25986 { "get_range", getRangeMS },
25987 { "t_print", tPrintMS },
25988 @@ -477,10 +490,15 @@ static const BuiltInSubrName MacroSubrs[
25989 { "get_style_by_name", getStyleByNameMS },
25990 { "get_style_at_pos", getStyleAtPosMS },
25991 { "filename_dialog", filenameDialogMS },
25992 { "call", callMS },
25993 { "get_matching", getMatchingMS },
25994 + { "dict_insert", dictinsertMS },
25995 + { "dict_complete", dictcompleteMS },
25996 + { "dict_save", dictsaveMS },
25997 + { "dict_append", dictappendMS },
25998 + { "dict_is_element", dictiselementMS },
25999 { NULL, NULL } /* sentinel */
26002 static const BuiltInSubrName SpecialVars[] = {
26003 { "$cursor", cursorMV },
26004 @@ -6030,10 +6048,264 @@ static int getMatchingMS(WindowInfo *win
26010 +/* New built-in macro commands for dictionary code Christian Merkwirth 2000 */
26012 +/* Insert a string into the acutal dictionary */
26013 +/* Syntax : dictinsert(string) % assuming weight = 1 */
26014 +/* dictinsert(string, weight) */
26015 +static int dictinsertMS(WindowInfo *window, DataValue *argList, int nArgs,
26016 + DataValue *result, char **errMsg)
26018 + static long nr_insertions = 0;
26021 + char stringStorage[25], *string;
26023 + /* Validate arguments and convert to int */
26024 + if (nArgs < 1) { /* we expect one or more input argument */
26025 + return wrongNArgsErr(errMsg);
26028 + if (!readStringArg(argList[0], &string, stringStorage, errMsg)) {
26033 + if (!readIntArg(argList[1], &weight, errMsg)) {
26038 + if (weight < 1) {
26044 + result->tag = INT_TAG;
26045 + result->val.n = insert_dict(string, weight);
26047 + if (result->val.n == 0) {
26048 + dictionary_modified = 1;
26051 + if (dictionary_cumulative_save > 0) {
26052 + if (nr_insertions >= dictionary_cumulative_save) {
26054 + nr_insertions = 0;
26062 +/* Test if string is an element of the acutal dictionary */
26063 +/* Syntax : weight = dictiselement(string) */
26064 +/* Output argument : (integer) weight of element */
26065 +static int dictiselementMS(WindowInfo *window, DataValue *argList, int nArgs,
26066 + DataValue *result, char **errMsg)
26068 + char stringStorage[25], *string;
26069 + unsigned long weight;
26071 + /* Validate arguments and convert to int */
26072 + if (nArgs < 1) { /* we expect one or more input argument */
26073 + return wrongNArgsErr(errMsg);
26076 + if (!readStringArg(argList[0], &string, stringStorage, errMsg)) {
26081 + weight = dict_is_element(string);
26083 + result->tag = INT_TAG;
26085 + if (weight > INT_MAX) {
26086 + result->val.n = INT_MAX;
26088 + result->val.n = weight;
26095 +/* Load/append file to current dictionary */
26096 +/* Syntax : dict_append(filename) */
26097 +static int dictappendMS(WindowInfo *window, DataValue *argList, int nArgs,
26098 + DataValue *result, char **errMsg)
26100 + char stringStorage[25], *string;
26102 + /* Validate arguments and convert to int */
26103 + if (nArgs < 1) { /* we expect one or more input argument */
26104 + return wrongNArgsErr(errMsg);
26107 + if (!readStringArg(argList[0], &string, stringStorage, errMsg)) {
26111 + result->tag = INT_TAG;
26112 + result->val.n = appenddict(string);
26117 +/* Save current acutal dictionary or control the saving behaviour of the dictionary */
26118 +/* Syntax : dict_save() => save dictionary to current filename, see dictionary.c */
26119 +/* dict_save(filename) => set dictionary filename (otherwise default filename is used) */
26120 +/* dict_save("") => return current filename as string */
26121 +/* dict_save(autoSave, cumulSave) => autoSave = "on"/"off"/"flush", cumulSave=0,1,2,3,... */
26122 +static int dictsaveMS(WindowInfo *window, DataValue *argList, int nArgs,
26123 + DataValue *result, char **errMsg)
26125 + int cumulSave = 0;
26127 + char stringStorage[25], *string;
26129 + /* Validate arguments */
26131 + if (nArgs == 0) {
26132 + result->tag = INT_TAG;
26133 + result->val.n = savedict();
26135 + } else if (nArgs == 1) {
26136 + if (!readStringArg(argList[0], &string, stringStorage, errMsg)) {
26140 + if ((string != NULL) && (strlen(string) > 0)) {
26141 + free(dictionary_filename);
26142 + dictionary_filename = strdup(string);
26143 + dictionary_modified = 1; /* force savedict() to write the actual dictionary */
26146 + result->tag = STRING_TAG;
26147 + AllocNString(&result->val.str, strlen(dictionary_filename)+1);
26148 + AllocNStringCpy(&result->val.str, dictionary_filename);
26151 + } else if (nArgs == 2) {
26152 + if (!readStringArg(argList[0], &string, stringStorage, errMsg)) {
26156 + if (!readIntArg(argList[1], &cumulSave, errMsg)) {
26161 + if (!strcmp(string, "on")) {
26162 + dictionary_auto_save = 1;
26163 + } else if (!strcmp(string, "flush")) {
26164 + dictionary_auto_save = 0;
26167 + } else /* if (!strcmp(string, "off")) */ {
26168 + dictionary_auto_save = 0;
26172 + if (cumulSave >= 0) {
26173 + dictionary_cumulative_save = cumulSave;
26175 + dictionary_cumulative_save = 0;
26180 + return wrongNArgsErr(errMsg);
26184 +/* Syntax : dict_complete(string)
26185 + dict_complete(string)
26186 + dict_complete(string, minchars)
26187 + dict_complete(string, minchars, maxmatches)
26189 + See file : dictionary.c
26191 +#define MAXMATCHES 128
26193 +static int dictcompleteMS(WindowInfo *window, DataValue *argList, int nArgs,
26194 + DataValue *result, char **errMsg)
26196 + int minchars = 0;
26197 + int maxmatches = 1;
26198 + static char *s2[MAXMATCHES]; /* at max, 128 possible completions can be returned */
26199 + static int items_left = 0; /* number of possible completions left from last search */
26201 + char stringStorage[25], *string;
26203 + /* Validate arguments and convert to int */
26205 + return wrongNArgsErr(errMsg);
26208 + if (!readStringArg(argList[0], &string, stringStorage, errMsg)) {
26213 + if (!readIntArg(argList[1], &minchars, errMsg)) {
26219 + if (!readIntArg(argList[2], &maxmatches, errMsg)) {
26224 + if (minchars < 0) {
26228 + if ((maxmatches < 1) || (maxmatches > MAXMATCHES)) {
26232 + loaddict(); /* load dict is a wrapper which loads the dictionary from file on demand */
26234 + result->tag = STRING_TAG;
26236 + if (strlen(string) > 0) { /* A string to complete is given */
26237 + items_left = complete_dict(string, s2, minchars, maxmatches); /* so invoke a new search */
26239 + if (items_left <= 0) {
26240 + AllocNString(&result->val.str, 1);
26241 + AllocNStringCpy(&result->val.str, "");
26245 + AllocNString(&result->val.str, strlen(s2[items_left])+1);
26246 + AllocNStringCpy(&result->val.str, s2[items_left]);
26248 + } else { /* An empty key string was given, but maybe there are still some matches left from last call */
26249 + if (items_left > 0) {
26251 + AllocNString(&result->val.str, strlen(s2[items_left])+1);
26252 + AllocNStringCpy(&result->val.str, s2[items_left]);
26254 + AllocNString(&result->val.str, 1);
26255 + AllocNStringCpy(&result->val.str, "");
26262 +/* end of new macros for dictionary Christian Merkwirth 2000 */
26264 static int wrongNArgsErr(char **errMsg)
26266 *errMsg = "Wrong number of arguments to function %s";
26269 diff --quilt old/source/Makefile.common new/source/Makefile.common
26270 --- old/source/Makefile.common
26271 +++ new/source/Makefile.common
26273 OBJS = nedit.o file.o menu.o window.o selection.o search.o undo.o shift.o \
26274 help.o preferences.o tags.o userCmds.o shell.o regularExp.o macro.o \
26275 text.o textSel.o textDisp.o textBuf.o textDrag.o server.o highlight.o \
26276 highlightData.o interpret.o parse.o smartIndent.o regexConvert.o \
26277 rbTree.o windowTitle.o calltips.o server_common.o rangeset.o \
26278 - patternMatch.o patternMatchData.o
26279 + patternMatch.o patternMatchData.o \
26280 + ternary_search_tree.o dictionary.o
26282 XLTLIB = ../Xlt/libXlt.a
26283 XMLLIB = ../Microline/XmL/libXmL.a
26286 diff --quilt old/source/Makefile.dependencies new/source/Makefile.dependencies
26287 --- old/source/Makefile.dependencies
26288 +++ new/source/Makefile.dependencies
26289 @@ -95,5 +95,9 @@ patternMatchData.o: patternMatchData.c .
26290 macro.o: patternMatch.h regularExp.h
26291 menu.o: patternMatchData.h
26292 preferences.o: patternMatchData.h
26293 search.o: patternMatch.h
26294 window.o: patternMatchData.h
26295 +dictionary.o: dictionary.c dictionary.h ternary_search_tree.h ../util/utils.h
26296 +ternary_search_tree.o: ternary_search_tree.c ternary_search_tree.h
26297 +macro.o: dictionary.h file.h
26298 +menu.o: dictionary.h
26299 diff --quilt old/source/menu.c new/source/menu.c
26300 --- old/source/menu.c
26301 +++ new/source/menu.c
26302 @@ -58,10 +58,11 @@ static const char CVSID[] = "$Id: menu.c
26303 #include "../util/DialogF.h"
26304 #include "../util/misc.h"
26305 #include "../util/fileUtils.h"
26306 #include "../util/utils.h"
26307 #include "../Xlt/BubbleButton.h"
26308 +#include "dictionary.h"
26313 #include <stdlib.h>
26314 @@ -2896,10 +2897,15 @@ static void closeAP(Widget w, XEvent *ev
26316 else if (strcmp(args[0], "nosave") == 0) {
26317 preResponse = NO_SBC_DIALOG_RESPONSE;
26321 +/* Save dictionary on exit/close Christian Merkwirth 1999 */
26322 + if (dictionary_auto_save)
26325 CloseFileAndWindow(WidgetToWindow(w), preResponse);
26329 static void saveAP(Widget w, XEvent *event, String *args, Cardinal *nArgs)
26330 @@ -3154,10 +3160,14 @@ static void printSelAP(Widget w, XEvent
26332 static void exitAP(Widget w, XEvent *event, String *args, Cardinal *nArgs)
26334 WindowInfo *window = WidgetToWindow(w);
26336 +/* Save dictionary on exit/close Christian Merkwirth 1999 */
26337 + if (dictionary_auto_save)
26340 if (!CheckPrefsChangesSaved(window->shell))
26343 /* If this is not the last window (more than one window is open),
26344 confirm with the user before exiting. */
26345 diff --quilt /dev/null new/source/ternary_search_tree.c
26347 +++ new/source/ternary_search_tree.c
26349 +/*******************************************************************************
26351 +* ternary_search_tree.c - dictionary extension for the nirvana editor nedit
26353 +* Germany Dec 1999
26355 +* Copyright (C) Christian Merkwirth
26357 +* This is free software; you can redistribute it and/or modify it under the *
26358 +* terms of the GNU General Public License as published by the Free Software *
26359 +* Foundation; either version 2 of the License, or (at your option) any later *
26362 +* This software is distributed in the hope that it will be useful, but WITHOUT *
26363 +* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
26364 +* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License *
26365 +* for more details. *
26367 +* You should have received a copy of the GNU General Public License along with *
26368 +* software; if not, write to the Free Software Foundation, Inc., 59 Temple *
26369 +* Place, Suite 330, Boston, MA 02111-1307 USA *
26371 +* Written by Christian Merkwirth
26373 +*******************************************************************************/
26375 +#include <stdio.h>
26376 +#include <stdlib.h>
26377 +#include <string.h>
26379 +#include "ternary_search_tree.h"
26381 +#define NUMBERR_TSTREES 8
26382 +#define TST_BUFFERS 256
26383 +#define TST_INITAL_BUFSIZE 512
26384 +#define STACK_PAGESIZE 256
26386 +typedef struct tnode* Tptr;
26387 +typedef struct tnode {
26393 + unsigned long count; /* if splitchar==0, count is used, otherwise eqkid */
26396 + unsigned char splitchar;
26399 +typedef struct STACK_ITEM {
26408 +/* variables and function definitions for the stack */
26409 +typedef struct STACK {
26410 + void** stackpointer;
26411 + long stack_count;
26412 + long stack_limit;
26413 + long stack_pagesize;
26416 +typedef struct TSTREE {
26417 + Tptr root; /* tree root node */
26418 + Tptr buf; /* these four variables are used */
26419 + long bufn; /* to accelerate allocation of */
26420 + long freen; /* Tnode objects */
26421 + void* freearr[TST_BUFFERS]; /* freearr and buff_size are needed for managing memory for tree */
26425 +static char* word = NULL; /* global string result storage, used in complete_string */
26426 +static long maxwordlen = 512;
26427 +static long completions_found = 0;
26428 +static long size_string_list = 0;
26429 +static char** string_list = NULL;
26430 +static unsigned long* weight_list = NULL;
26432 +/* static stack sisters = { 0, 0, 0, STACK_PAGESIZE};
26433 +static stack deep = { 0, 0, 0, STACK_PAGESIZE};
26435 +/* allocate space for several dictionaries */
26436 +static tstree tree[NUMBERR_TSTREES] = {
26437 + {0, 0, 0, 0, {0}, TST_INITAL_BUFSIZE},
26438 + {0, 0, 0, 0, {0}, TST_INITAL_BUFSIZE},
26439 + {0, 0, 0, 0, {0}, TST_INITAL_BUFSIZE},
26440 + {0, 0, 0, 0, {0}, TST_INITAL_BUFSIZE},
26441 + {0, 0, 0, 0, {0}, TST_INITAL_BUFSIZE},
26442 + {0, 0, 0, 0, {0}, TST_INITAL_BUFSIZE},
26443 + {0, 0, 0, 0, {0}, TST_INITAL_BUFSIZE},
26444 + {0, 0, 0, 0, {0}, TST_INITAL_BUFSIZE}};
26446 +static void cleanup_stack(stack* s);
26447 +static void push_stack(void* const x, stack* s);
26448 +static void* pop_stack(stack* s);
26449 +static int isempty_stack(const stack* s);
26451 +static int depth_first_traverse(const Tptr q, void (*func)(const char*, const unsigned long));
26452 +int traverse(const int tst_nr, void (*func)(const char*, const unsigned long));
26454 +/* insert string s (terminated by '\0') into dictionary number tst_nr (0...NUMBERR_TSTREES) */
26455 +/* the minimum length of s is 1 */
26456 +/* returns 0 on SUCCESS, otherwise failure */
26457 +int insert_string(const char* s, unsigned long weight, const int tst_nr)
26461 + Tptr *p = &(tree[tst_nr].root);
26463 + if ((weight < 1) || (strlen(s) < 1)) /* don't insert an empty string or just one character */
26466 + while (pp = *p) { /* as long as we encounter already exisiting nodes */
26467 + if ((d = *s - pp->splitchar) == 0) { /* characters match */
26468 + if (*(s++) == 0) {
26469 + pp->id.count += weight;
26472 + p = &(pp->id.eqkid); /* go to next level of tree */
26474 + } else if (d < 0) {
26475 + p = &(pp->lokid); /* move left in the current level */
26478 + p = &(pp->hikid); /* move right in the current level */
26481 + for (;;) { /* once we find a node that is not created, we must create every next node */
26482 + if (tree[tst_nr].bufn-- <= 0) {
26483 + tree[tst_nr].buff_size *= 2; /* size of newly allocated memory double each time */
26484 + tree[tst_nr].buf = (Tptr) malloc(tree[tst_nr].buff_size * sizeof(Tnode));
26485 + if (tree[tst_nr].buf == NULL) /* we ran out of memory */
26488 + /* due to doubling of page size, it is nearly impossible to run out of array freearr */
26489 + tree[tst_nr].freearr[tree[tst_nr].freen++] = (void *) tree[tst_nr].buf;
26490 + tree[tst_nr].bufn = tree[tst_nr].buff_size-1;
26492 + *p = tree[tst_nr].buf++;
26494 + pp->splitchar = *s;
26495 + pp->lokid = pp->id.eqkid = pp->hikid = 0;
26496 + if (*(s++) == 0) {
26497 + pp->id.count = weight; /* set count to weight */
26500 + p = &(pp->id.eqkid);
26504 +void sort_matches(const char* s, const unsigned long weight)
26507 + static unsigned long minweight = 0;
26508 + long pos = 0; /* position where to insert */
26510 + if (strlen(s) <= 0)
26513 + if (completions_found == 0) /* when invoked for the first time, clear minweight */
26517 + printf("Completion : %s %d\n", s, weight);
26520 + if (weight <= minweight)
26523 + while(weight <= weight_list[pos]) { /* find position to insert */
26524 + if (++pos >= size_string_list) /* list is sorted from highest to lowest weight */
26528 + if (pos >= completions_found) { /* new entry in free slot */
26530 + printf("Inserting element at %d\n", pos);
26532 + string_list[pos] = (char*) malloc(strlen(s)+1);
26533 + weight_list[pos] = weight;
26534 + strcpy(string_list[pos], s);
26535 + completions_found++;
26537 + else /* insert at position pos */
26539 + if (completions_found >= size_string_list) { /* list is full, so we have to remove the last item */
26540 + free(string_list[size_string_list-1]);
26541 + } else { /* completions_found < size_string_list */
26542 + completions_found++;
26545 + printf("Moving elements %d to %d (incl) \n", completions_found-2, pos);
26547 + for (i = completions_found-2; i >= pos; i--) { /* move elements one slot down */
26548 + string_list[i+1] = string_list[i];
26549 + weight_list[i+1] = weight_list[i];
26552 + printf("and inserting element at %d\n", pos);
26554 + weight_list[pos] = weight;
26555 + string_list[pos] = (char*) malloc(strlen(s)+1);
26556 + strcpy(string_list[pos], s);
26559 + minweight = weight_list[size_string_list-1];
26562 + printf("Completions found so far : %d\n", completions_found);
26563 + for (i=0; i < completions_found; i++)
26564 + printf("%d %d %s\n", i, weight_list[i], string_list[i]);
26570 +/* Search tree to see if we can complete the string s
26572 + Only the missing characters, terminated by a null, are returned in string
26573 + S[0], which is may not be freed by the calling function
26574 + S must point to a valid char*, e.g. char* s2; S = &s2;
26576 + If we cannot complete s or an error occured, zero or a negative value is returned.
26577 + Otherwise, the number of possible completions found is returned
26578 + The parameters are as follows :
26580 + s - beginning of word to complete (terminated by '\0')
26582 + S - array of char pointers, holding (output) string(s) with the characters needed to complete s to the full word.
26583 + While the array S itself must be allocated by the calling function, the strings to which S[0], S[1] ... point
26584 + are allocated by the called function, so no deallocation is needed
26586 + maxmatches - maximal number of returned strings (i.e. size of array S)
26589 +int complete_string(const char* const s, char** S, const int maxmatches, const int tst_nr)
26591 + Tptr p = tree[tst_nr].root;
26592 + long position = 0;
26593 + long s_len = strlen(s);
26595 + if (maxmatches < 1) {
26599 + if (word == NULL) {
26600 + word = (char*) malloc(maxwordlen + 4);
26601 + if (word == NULL) {
26602 + return -3; /* out of memory */
26607 + if (s[position] < p->splitchar)
26609 + else if (s[position] > p->splitchar)
26611 + else { /* s[position] == splitchar */
26612 + if (!p->splitchar) { /* if s is longer than the matching path in the tree */
26616 + if (++position == s_len) {
26617 + goto found; /* if we found s completely in the tree, now try to find a completion */
26619 + p = p->id.eqkid; /* otherwise, go one level deeper into the tree */
26631 + void (*func)() = &sort_matches;
26633 + if (p->id.eqkid == 0) return -1; /* tree is empty */
26635 + size_string_list = maxmatches;
26636 + completions_found = 0;
26638 + string_list = (char**) malloc(size_string_list * sizeof(char*));
26639 + weight_list = (unsigned long*) malloc(size_string_list * sizeof(unsigned long));
26641 + for (i=0; i < size_string_list; i++) {
26642 + string_list[i] = 0;
26643 + weight_list[i] = 0;
26646 + depth_first_traverse(p->id.eqkid, func);
26648 + for (i=0; i < completions_found; i++) {
26649 + pos += strlen(string_list[i]) + 1;
26652 + if (pos >= maxwordlen) { /* resize output string */
26653 + maxwordlen += pos;
26654 + word = realloc(word, (maxwordlen + 4));
26655 + if (word == NULL) {
26656 + for (i=0; i < completions_found; i++)
26657 + free(string_list[i]);
26659 + free(string_list);
26660 + free(weight_list);
26661 + return -3; /* out of memory */
26667 + for (i=0; i < completions_found; i++) {
26668 + const long n = completions_found - i - 1;
26669 + const long s_len = strlen(string_list[n]) + 1;
26670 + S[i] = word + pos;
26671 + strcpy(S[i], string_list[n]);
26672 + free(string_list[n]);
26676 + free(string_list);
26677 + free(weight_list);
26678 + size_string_list = 0;
26680 + return completions_found;
26684 +/* Search dictionary if string s is element
26686 + Input arguments :
26687 + s - string to find (terminated by '\0')
26688 + Output arguments :
26689 + weight is element s, otherwise zero
26691 +unsigned long string_is_element(const char* const s, const int tst_nr)
26693 + Tptr p = tree[tst_nr].root;
26694 + int position = 0;
26696 + if (strlen(s) > 0) {
26698 + if (s[position] < p->splitchar)
26700 + else if (s[position] > p->splitchar)
26702 + else { /* s[position] == splitchar */
26703 + if (!p->splitchar) { /* s[position] == p->splitchar == 0, so we s is an element */
26704 + return p->id.count;
26717 +/* recursivly traverse tree (for saving dictionary to file or similar purposes) */
26718 +int traverse(const int tst_nr, void (*func)(const char*, const unsigned long))
26720 + const Tptr p = tree[tst_nr].root;
26722 + return -1; /* tree is empty */
26724 + return depth_first_traverse(p, func);
26727 +static int depth_first_traverse(const Tptr q, void (*func)(const char*, const unsigned long))
26729 + char* line = NULL;
26730 + long maxlinelen = 512;
26732 + stack tpr_stack = { 0, 0, 0, STACK_PAGESIZE};
26733 + stack pos_stack = { 0, 0, 0, STACK_PAGESIZE};
26735 + if (line == NULL) {
26736 + line = malloc((maxlinelen + 4));
26737 + if (line == NULL) return -3; /* out of memory */
26740 + push_stack((void*) q, &tpr_stack);
26741 + push_stack((void*) ((unsigned long) 0), &pos_stack);
26743 + while(!isempty_stack(&tpr_stack)) {
26744 + unsigned long pos = (unsigned long) pop_stack(&pos_stack);
26745 + const Tptr p = (Tptr) pop_stack(&tpr_stack);
26750 + if (pos >= maxlinelen) {
26751 + maxlinelen += pos;
26752 + line = realloc(line, (maxlinelen + 4));
26753 + if (line == NULL) {
26754 + cleanup_stack(&pos_stack);
26755 + cleanup_stack(&tpr_stack);
26756 + return -3; /* out of memory */
26760 + line[pos] = p->splitchar;
26762 + push_stack((void*) p->hikid, &tpr_stack);
26763 + push_stack((void*) pos, &pos_stack);
26764 + push_stack((void*) p->lokid, &tpr_stack);
26765 + push_stack((void*) pos, &pos_stack);
26767 + if (p->splitchar) {
26768 + push_stack((void*) p->id.eqkid, &tpr_stack);
26769 + push_stack((void*) (pos+1), &pos_stack);
26772 + (*func)(line, p->id.count);
26777 + cleanup_stack(&pos_stack);
26778 + cleanup_stack(&tpr_stack);
26785 +/* general cleaning up */
26789 + maxwordlen = 512;
26793 + * cleanup_stack(&sisters);
26794 + * cleanup_stack(&deep)
26799 +void cleanup_tree(const int tst_nr)
26803 + for (i = 0; i < tree[tst_nr].freen; i++)
26804 + free(tree[tst_nr].freearr[i]);
26806 + tree[tst_nr].root = 0;
26807 + tree[tst_nr].buf = 0;
26808 + tree[tst_nr].bufn = 0;
26809 + tree[tst_nr].freen = 0;
26811 + tree[tst_nr].buff_size = TST_INITAL_BUFSIZE;
26814 +/* end of ternary search tree section */
26817 +/* beginning of stack section */
26819 +static void cleanup_stack(stack* s)
26821 + free(s->stackpointer);
26823 + s->stackpointer = 0;
26824 + s->stack_limit = 0;
26825 + s->stack_count = 0;
26826 + s->stack_pagesize = STACK_PAGESIZE;
26829 +static void push_stack(void* const x, stack* s) {
26830 + if (s->stack_count >= s->stack_limit) {
26831 + s->stack_limit += s->stack_pagesize;
26832 + s->stack_pagesize *= 2; /* double size of newly allocated array */
26833 + s->stackpointer = (void*) realloc(s->stackpointer, s->stack_limit*sizeof(void*));
26836 + s->stackpointer[s->stack_count++] = x;
26839 +static void* pop_stack(stack* s)
26841 + return s->stackpointer[--s->stack_count];
26844 +static int isempty_stack(const stack* s)
26846 + return (s->stack_count==0);
26849 +/* end of stack* section */
26852 +#undef TST_BUFFERS
26853 +#undef TST_INITAL_BUFSIZE
26854 +#undef STACK_PAGESIZE
26855 +#undef NUMBERR_TSTREES
26856 diff --quilt /dev/null new/source/ternary_search_tree.h
26858 +++ new/source/ternary_search_tree.h
26860 +#ifndef TERNARY_SEARCH_TREE_H
26861 +#define TERNARY_SEARCH_TREE_H
26863 +extern int insert_string(const char* s, unsigned long weight, const int tst_nr);
26864 +extern int complete_string(const char* const s, char** S, const int maxmatches, const int tst_nr);
26865 +extern unsigned long string_is_element(const char* const s, const int tst_nr);
26866 +extern int traverse(const int tst_nr, void (*func)(const char*, const unsigned long));
26868 +extern void cleanup();
26869 +extern void cleanup_tree(const int tst_nr);
26871 diff --quilt old/util/utils.c new/util/utils.c
26872 --- old/util/utils.c
26873 +++ new/util/utils.c
26874 @@ -50,15 +50,15 @@ static const char CVSID[] = "$Id: utils.
26875 #include "../debug.h"
26878 #define DEFAULT_NEDIT_HOME ".nedit"
26880 - static char* hiddenFileNames[N_FILE_TYPES] = {".nedit", ".neditmacro", ".neditdb;1"};
26881 - static char* plainFileNames[N_FILE_TYPES] = {"nedit.rc", "autoload.nm", "nedit.history;1"};
26882 + static char* hiddenFileNames[N_FILE_TYPES] = {".nedit", ".neditmacro", ".neditdb;1", ".neditdict"};
26883 + static char* plainFileNames[N_FILE_TYPES] = {"nedit.rc", "autoload.nm", "nedit.history;1", "nedit.dict"};
26885 - static char* hiddenFileNames[N_FILE_TYPES] = {".nedit", ".neditmacro", ".neditdb"};
26886 - static char* plainFileNames[N_FILE_TYPES] = {"nedit.rc", "autoload.nm", "nedit.history"};
26887 + static char* hiddenFileNames[N_FILE_TYPES] = {".nedit", ".neditmacro", ".neditdb", ".neditdict"};
26888 + static char* plainFileNames[N_FILE_TYPES] = {"nedit.rc", "autoload.nm", "nedit.history", "nedit.dict"};
26891 static void buildFilePath(char* fullPath, const char* dir, const char* file);
26892 static Boolean isDir(const char* file);
26893 static Boolean isRegFile(const char* file);
26894 diff --quilt old/util/utils.h new/util/utils.h
26895 --- old/util/utils.h
26896 +++ new/util/utils.h
26897 @@ -70,11 +70,11 @@ typedef struct {
26899 void Push(Stack* stack, const void* value);
26900 void* Pop(Stack* stack);
26902 /* N_FILE_TYPES must be the last entry!! This saves us from counting. */
26903 -enum {NEDIT_RC, AUTOLOAD_NM, NEDIT_HISTORY, N_FILE_TYPES};
26904 +enum {NEDIT_RC, AUTOLOAD_NM, NEDIT_HISTORY, NEDIT_DICT, N_FILE_TYPES};
26906 /* If anyone knows where to get this from system include files (in a machine
26907 independent way), please change this (L_cuserid is apparently not ANSI) */
26908 #define MAXUSERNAMELEN 32
26910 diff --quilt old/source/highlightData.c new/source/highlightData.c
26911 --- old/source/highlightData.c
26912 +++ new/source/highlightData.c
26913 @@ -549,11 +549,11 @@ static char *DefaultPatternSets[] = {
26914 README:\"NEdit Macro syntax highlighting patterns, version 2.6, maintainer Thorsten Haude, nedit at thorstenhau.de\":::Flag::D\n\
26915 Comment:\"#\":\"$\"::Comment::\n\
26916 Built-in Misc Vars:\"(?<!\\Y)\\$(?:active_pane|args|calltip_ID|column|cursor|display_width|empty_array|file_name|file_path|language_mode|line|locked|max_font_width|min_font_width|modified|n_display_lines|n_panes|rangeset_list|read_only|selection_(?:start|end|left|right)|server_name|text_length|top_line|transient|VERSION|NEDIT_HOME)>\":::Identifier::\n\
26917 Built-in Pref Vars:\"(?<!\\Y)\\$(?:auto_indent|em_tab_dist|file_format|font_name|font_name_bold|font_name_bold_italic|font_name_italic|highlight_syntax|incremental_backup|incremental_search_line|make_backup_copy|match_syntax_based|overtype_mode|show_line_numbers|show_matching|statistics_line|tab_dist|use_tabs|wrap_margin|wrap_text)>\":::Identifier2::\n\
26918 Built-in Special Vars:\"(?<!\\Y)\\$(?:[1-9]|list_dialog_button|n_args|read_status|search_end|shell_cmd_status|string_dialog_button|sub_sep)>\":::String1::\n\
26919 - Built-in Subrs:\"<(?:append_file|beep|call|calltip|clipboard_to_string|dialog|filename_dialog|focus_window|get_character|get_matching|get_pattern_(by_name|at_pos)|get_range|get_selection|get_style_(by_name|at_pos)|getenv|highlight_calltip_line|kill_calltip|length|list_dialog|max|min|rangeset_(?:add|create|destroy|get_by_name|includes|info|invert|range|set_color|set_mode|set_name|subtract)|read_file|replace_in_string|replace_range|replace_selection|replace_substring|search|search_string|select|select_rectangle|set_cursor_pos|set_transient|shell_command|split|string_compare|string_dialog|string_to_clipboard|substring|t_print|tolower|toupper|valid_number|write_file)(?=\\s*\\()\":::Subroutine::\n\
26920 + Built-in Subrs:\"<(?:append_file|beep|call|calltip|clipboard_to_string|dialog|filename_dialog|dict_(?:insert|complete|save|append|is_element)|focus_window|get_character|get_matching|get_pattern_(by_name|at_pos)|get_range|get_selection|get_style_(by_name|at_pos)|getenv|highlight_calltip_line|kill_calltip|length|list_dialog|max|min|rangeset_(?:add|create|destroy|get_by_name|includes|info|invert|range|set_color|set_mode|set_name|subtract)|read_file|replace_in_string|replace_range|replace_selection|replace_substring|search|search_string|select|select_rectangle|set_cursor_pos|set_transient|shell_command|split|string_compare|string_dialog|string_to_clipboard|substring|t_print|tolower|toupper|valid_number|write_file)(?=\\s*\\()\":::Subroutine::\n\
26921 Menu Actions:\"<(?:new(?:_tab|_opposite)?|open|open-dialog|open_dialog|open-selected|open_selected|close|save|save-as|save_as|save-as-dialog|save_as_dialog|revert-to-saved|revert_to_saved|revert_to_saved_dialog|include-file|include_file|include-file-dialog|include_file_dialog|load-macro-file|load_macro_file|load-macro-file-dialog|load_macro_file_dialog|load-tags-file|load_tags_file|load-tags-file-dialog|load_tags_file_dialog|unload_tags_file|load_tips_file|load_tips_file_dialog|unload_tips_file|print|print-selection|print_selection|exit|undo|redo|delete|select-all|select_all|shift-left|shift_left|shift-left-by-tab|shift_left_by_tab|shift-right|shift_right|shift-right-by-tab|shift_right_by_tab|find|find-dialog|find_dialog|find-again|find_again|find-selection|find_selection|find_incremental|start_incremental_find|replace|replace-dialog|replace_dialog|replace-all|replace_all|replace-in-selection|replace_in_selection|replace-again|replace_again|replace_find|replace_find_same|replace_find_again|goto-line-number|goto_line_number|goto-line-number-dialog|goto_line_number_dialog|goto-selected|goto_selected|mark|mark-dialog|mark_dialog|goto-mark|goto_mark|goto-mark-dialog|goto_mark_dialog|match|select_to_matching|goto_matching|find-definition|find_definition|show_tip|split-pane|split_pane|close-pane|close_pane|detach_document(?:_dialog)?|move_document_dialog|(?:next|previous|last)_document|uppercase|lowercase|fill-paragraph|fill_paragraph|control-code-dialog|control_code_dialog|filter-selection-dialog|filter_selection_dialog|filter-selection|filter_selection|execute-command|execute_command|execute-command-dialog|execute_command_dialog|execute-command-line|execute_command_line|shell-menu-command|shell_menu_command|macro-menu-command|macro_menu_command|bg_menu_command|post_window_bg_menu|post_tab_context_menu|beginning-of-selection|beginning_of_selection|end-of-selection|end_of_selection|repeat_macro|repeat_dialog|raise_window|focus_pane|set_statistics_line|set_incremental_search_line|set_show_line_numbers|set_auto_indent|set_wrap_text|set_wrap_margin|set_highlight_syntax|set_make_backup_copy|set_incremental_backup|set_show_matching|set_match_syntax_based|set_overtype_mode|set_locked|set_tab_dist|set_em_tab_dist|set_use_tabs|set_fonts|set_language_mode)(?=\\s*\\()\":::Subroutine::\n\
26922 Text Actions:\"<(?:self-insert|self_insert|grab-focus|grab_focus|extend-adjust|extend_adjust|extend-start|extend_start|extend-end|extend_end|secondary-adjust|secondary_adjust|secondary-or-drag-adjust|secondary_or_drag_adjust|secondary-start|secondary_start|secondary-or-drag-start|secondary_or_drag_start|process-bdrag|process_bdrag|move-destination|move_destination|move-to|move_to|move-to-or-end-drag|move_to_or_end_drag|end_drag|copy-to|copy_to|copy-to-or-end-drag|copy_to_or_end_drag|exchange|process-cancel|process_cancel|paste-clipboard|paste_clipboard|copy-clipboard|copy_clipboard|cut-clipboard|cut_clipboard|copy-primary|copy_primary|cut-primary|cut_primary|newline|newline-and-indent|newline_and_indent|newline-no-indent|newline_no_indent|delete-selection|delete_selection|delete-previous-character|delete_previous_character|delete-next-character|delete_next_character|delete-previous-word|delete_previous_word|delete-next-word|delete_next_word|delete-to-start-of-line|delete_to_start_of_line|delete-to-end-of-line|delete_to_end_of_line|forward-character|forward_character|backward-character|backward_character|key-select|key_select|process-up|process_up|process-down|process_down|process-shift-up|process_shift_up|process-shift-down|process_shift_down|process-home|process_home|forward-word|forward_word|backward-word|backward_word|forward-paragraph|forward_paragraph|backward-paragraph|backward_paragraph|beginning-of-line|beginning_of_line|end-of-line|end_of_line|beginning-of-file|beginning_of_file|end-of-file|end_of_file|next-page|next_page|previous-page|previous_page|page-left|page_left|page-right|page_right|toggle-overstrike|toggle_overstrike|scroll-up|scroll_up|scroll-down|scroll_down|scroll_left|scroll_right|scroll-to-line|scroll_to_line|select-all|select_all|deselect-all|deselect_all|focusIn|focusOut|process-return|process_return|process-tab|process_tab|insert-string|insert_string|mouse_pan)(?=\\s*\\()\":::Subroutine::\n\
26923 Macro Hooks:\"<(?:(?:pre|post)_(?open|save)|cursor_moved|modified|(?:losing_)?focus)_hook(?=\\s*\\()\":::Subroutine1::\n\
26924 Keyword:\"<(?:break|continue|define|delete|else|for|if|in|return|while)>\":::Keyword::\n\
26925 Braces:\"[{}\\[\\]]\":::Keyword::\n\