1 From: Christian Merkwirth
2 Subject: dictionary support for nedit
6 Dictionary/demo.cc | 35
7 Dictionary/dict_todo.txt | 33
8 Dictionary/dictionary.nm | 391 +
9 Dictionary/dicts/cpp.dict | 146
10 Dictionary/dicts/english_top.dict | 9108 +++++++++++++++++++++++++++++++++++
11 Dictionary/dicts/german.dict | 4059 +++++++++++++++
12 Dictionary/dicts/german_latex.dict | 1486 +++++
13 Dictionary/dicts/german_top.dict | 9532 +++++++++++++++++++++++++++++++++++++
14 Dictionary/dicts/html.dict | 1
15 Dictionary/dicts/latex.dict | 304 +
16 Dictionary/dotnedit | 41
17 Dictionary/readme.html | 284 +
18 Dictionary/setup.sh | 13
19 source/Makefile.common | 3
20 source/Makefile.dependencies | 4
21 source/dictionary.c | 407 +
22 source/dictionary.h | 21
23 source/highlightData.c | 2
24 source/macro.c | 272 +
26 source/ternary_search_tree.c | 507 +
27 source/ternary_search_tree.h | 11
30 24 files changed, 26673 insertions(+), 7 deletions(-)
32 diff --quilt /dev/null new/Dictionary/demo.cc
34 +++ new/Dictionary/demo.cc
38 +// C++ demo file to test the dictionary features:
39 +// Please go below, type in 'cl' (without quotes) and
45 +// Please type in 'main' or 'fo' somewhere below and press
48 +// then press Ctrl-\ to step through the fields @@@
71 diff --quilt /dev/null new/Dictionary/dictionary.nm
73 +++ new/Dictionary/dictionary.nm
75 +# Macro definition file for the dictionary enhanced version of nedit 5.1.1 and later.
76 +# These macro command will not work without the patched version since all built-in macro
77 +# commands for handling the dictionary are not present in the original version.
79 +# The dictionary can be seen as simply as a collection of (unique) strings, where each
80 +# string has a weight attached that can be increased or decreased. The dictionary allows
81 +# to search for strings just by giving some portion of the beginning of the desired string.
82 +# If this portion is enough to uniquely identify to whole string, the string without
83 +# the beginning portion is returned. If it is not possible to uniquely identify a string,
84 +# one ore more possible completions are returned, sorted by weight. If there is no match
85 +# at all, an empty string is returned. The key point of the dictionary is that it is very
86 +# fast in insertion and retrieval of strings. Also, common sequences are stored only once.
88 +# While these new built-in macro commands are kept very general, all functionality
89 +# for word completion and template expansion is coded in the nedit macro language to
90 +# allow for maximum flexibility and gives users the control over the behaviour of these
91 +# features. E.g., the whole namespace handling is done in the macro definitions in this
93 +# Christian Merkwirth, March 2000
95 +# Set autoSave to "on" (save on Window close/exit), save dictionary after every 16 insertion operations
96 +$dict_auto_save = "on"
97 +$dict_refresh_cycle = 16
98 +dict_save($dict_auto_save, $dict_refresh_cycle)
100 +# global variables for the word completion
107 +# global variables for template expansion
109 +$name_of_last_field = ""
111 +# Return name of current language mode or an empty string for the "Plain" mode
113 + if ($language_mode == "Plain")
116 + namesp = "::" $language_mode "::"
121 +############################################################################################
123 +# Complete word section
125 +############################################################################################
127 +# Get the nearest match from the text before and after the cursor (pretty much like
128 +# the old style complete word macro). Usually, this is presented as first option when
129 +# the new complete word macro is invoked. The return does not return the whole
130 +# completed string, just the part that is needed to fill up the keyString is returned.
131 +define get_nearest_match {
132 + backMatch = search("<" $keyString, $keyStart-1, "backward", "regex")
133 + forwardMatch = search("<" $keyString, $cursor, "regex")
135 + if ((backMatch < 0) && (forwardMatch < 0)) {
139 + backdist = $text_length
141 + backdist = $keyStart-1 - backMatch
143 + if (forwardMatch < 0)
144 + forwarddist = $text_length
146 + forwarddist = forwardMatch - $cursor
148 + if (backdist <= forwarddist)
149 + nearestMatch = backMatch
151 + nearestMatch = forwardMatch
153 + matchEnd = search(">", nearestMatch, "regex")
155 + if ((matchEnd == -1) || (matchEnd == $text_length))
158 + completion = get_range(nearestMatch+length($keyString), matchEnd)
164 +# Define revert to the initial keyString if the user does not accept propesed completion
165 +define revert_to_keystring {
166 + if (($compword_end == $cursor) && ($keyStart > -1)) {
167 + replace_range($keyStart, $cursor, $keyString)
170 + $completedWord = ""
176 +# Insert the completed string at the current position
177 +define insert_completion {
178 + $completedWord = $keyString $1
179 + replace_range($keyStart, $cursor, $completedWord)
180 + $compword_end = $cursor
183 +# Main complete word macro. When invoked, it tries to determine if this the user is looking for
184 +# a completion to a new keyString or if he wants to step through the possible completions to the
185 +# previously given keyString.
187 +# Possible completions are presented in the following order:
189 +# 1) Get the nearest match from the text in the current window (like the old complete_word macro)
190 +# 2) Get #MaxMatches completions from the dictionary, using the language mode specific namespace
191 +# 3) Get #MaxMatches completions from the dictionary, using the global ("Plain") namespace
192 +define complete_word {
196 + newkeyStart = search("<", $cursor, "backward", "regex")
198 + if (($compword_end != $cursor) || (newkeyStart != $keyStart)) { # OK, new keyword, new search
199 + # If there was a successful completion last time, insert this accepted completion
200 + # into the dictionary to reinforce weights. This also enables to learn new words by accepting
201 + # the nearest match. The next time the macro is invoked, this match is inserted into the
203 + if (length($completedWord) > 0) {
204 + if ((dict_is_element($completedWord) > 0) && (!dict_is_element(namespace() $completedWord))) {
205 + # if word exists already in global namespace, but not in specific
206 + dict_insert($completedWord) # do not insert it into language specific namespace
208 + dict_insert(namespace() $completedWord)
212 + $keyStart = newkeyStart
214 + if ($keyStart == -1)
217 + $keyString = get_range($keyStart, $cursor)
219 + if (length($keyString) == 0) {
228 + if ($search_level == 0) {
230 + completion = get_nearest_match()
231 + if (length(completion) > 0) {
232 + insert_completion(completion)
236 + if ($search_level == 1) {
237 + if (length(namespace()) == 0)
240 + completion = dict_complete(namespace() $keyString, MinChars, MaxMatches)
241 + if (length(completion) == 0)
245 + insert_completion(completion)
250 + if ($search_level == 2) {
251 + completion = dict_complete("", MinChars, MaxMatches)
252 + if (length(completion) == 0)
255 + insert_completion(completion)
259 + if ($search_level == 3) {
260 + completion = dict_complete($keyString, MinChars, MaxMatches)
261 + if (length(completion) == 0)
265 + insert_completion(completion)
269 + if ($search_level == 4) {
270 + completion = dict_complete("", MinChars, MaxMatches)
271 + if (length(completion) == 0)
274 + insert_completion(completion)
278 + if (length(completion) == 0) {
279 + revert_to_keystring()
283 +# Insert the current selection into the dictionary
284 +define insert_selection {
285 + dict_insert(namespace() get_selection())
288 +# Scan the current text and insert all words of given length into the dictionary
291 + $completedWord = ""
294 + dict_save("off", -1)
297 + $keyStart = search("<", $keyStart+1, "forward", "regex")
301 + matchEnd = search(">", $keyStart, "forward", "regex")
302 + word = get_range($keyStart, matchEnd)
304 + if (length(word) >= MinChars) {
305 + if ((dict_is_element(word) > 0) && (!dict_is_element(namespace() word))) {
306 + # if word exists already in global namespace, but not in specific
307 + dict_insert(word) # do not insert it into language specific namespace
309 + dict_insert(namespace() word)
315 + dict_save($dict_auto_save, $dict_refresh_cycle)
318 +############################################################################################
320 +# Template expansion section
322 +############################################################################################
324 +# Main routine that is invoked first when the user invokes template expansion.
327 +# 1) Get the abbreviation to expand from the text before the cursor
328 +# 2) Parse this expansion to see if it needs further treatment
329 +# 3) Insert the expansion at the current position
332 + keyStart = search("<", $cursor, "backward", "regex", "wrap")
333 + if (keyStart == -1)
336 + keyString = get_range(keyStart, $cursor)
337 + expansionString = get_expansion(keyString)
339 + if (length(expansionString) == 0) {
344 + expansionString = parse_expansion(expansionString)
346 + replace_range(keyStart, $cursor, expansionString)
348 + if (search_string(expansionString, "(@[\\w/@\\>\\<\\.\\+\\-]+@)", 0, "regex") > 0) {
349 + # if a @@@ exists in the expansion, immediately move the cursor to this position
350 + set_cursor_pos(keyStart)
355 +# Search the dictionary for the given shortcut (given as first argument).
358 +# First look in the namespace of the current language mode, if there is no
359 +# match, also look in global namespace.
360 +define get_expansion {
362 + expansionString = dict_complete("@@@" namespace() keyString ":", 1, 1)
364 + if (length(expansionString) == 0) {
365 + expansionString = dict_complete("@@@" keyString ":", 1, 1)
368 + return expansionString
371 +# parse the expansion string recursively to replace special sequences, given in the form
374 +# The following sequences are recognized:
375 +# @@@ this is a plain placeholder which is left as it is except for the first one that appears,
376 +# which is just removed an the cursor is placed at this position
378 +# @<file@ insert text from file 'file' at this position (even recursively)
379 +# @>temp@ insert text from template 'temp' at this position (even recursively)
380 +define parse_expansion {
381 + expansionString = $1
384 + reg = "(@[\\<\\>\\w\\./\\\\]+@)"
386 + while (search_string(expansionString, reg , start, "forward", "regex") > 0) {
388 + s = search_string(expansionString, "(@\\<[\\w\\./\\\\]+@)", start, "forward", "regex")
389 + # include file given by @<filename@ as subExpansion
392 + filename = substring(expansionString, s+2, end-1)
393 + subExpansion = read_file(filename)
395 + if (length(subExpansion) > 0) {
396 + subExpansion = parse_expansion(subExpansion)
397 + expansionString = replace_substring(expansionString, s, end, subExpansion)
400 + s = search_string(expansionString,"(@\\>[\\w]+@)", start, "forward", "regex")
403 + # expand this subexpression
404 + sub = substring(expansionString, s+2, end-1)
405 + subExpansion = get_expansion(sub)
407 + if (length(subExpansion) > 0) {
408 + subExpansion = parse_expansion(subExpansion)
409 + expansionString = replace_substring(expansionString, s, end, subExpansion)
415 + return expansionString
418 +# Move cursor to next template field
419 +# If a field that looked like @-name@ was filled, we try fill out all other fields @-name@
420 +# with the text of the first one
421 +define goto_next_field {
422 + if ($last_field > 0) {
423 + entryStart = search("<", $cursor, "backward", "regex")
424 + if (entryStart > 0) {
425 + entry = get_range(entryStart, $cursor)
427 + replace_all("@-" $name_of_last_field "@", entry, "forward")
428 + set_cursor_pos(pos)
433 + $last_field = search("(@\\-[\\w]+@)", $cursor, "forward", "regex")
434 + if ($last_field > 0) {
435 + $name_of_last_field = get_range($last_field+2, $search_end-1)
438 + replace("(@[\\w/@\\>\\<\\.\\+\\-]+@)", "", "forward" , "regex")
442 +# Define new expansion (or template, however you like to call it). The text that should be
443 +# inserted must be selected before this routine is called. It then asks for the shortcut (or
444 +# abbreviation) that is assigned to the template. Before the new expansion is inserted into
445 +# the dictionary, we check whether the shortcut is already in use.
446 +define define_expansion {
448 + shortcut = string_dialog("Please enter the shortcut for the selected text" , "OK" , "Dismiss")
450 + if ((length(shortcut) == 0) || ($string_dialog_button == 0) || ($string_dialog_button == 2))
453 + expansionString = dict_complete("@@@" namespace() shortcut ":", 1, 0)
455 + if (length(expansionString) != 0) {
457 + dialog("Warning : Proposed shortcut is already used, please choose another one", "Dismiss")
461 + dict_insert("@@@" namespace() shortcut ":" get_selection())
466 diff --quilt /dev/null new/Dictionary/dicts/cpp.dict
468 +++ new/Dictionary/dicts/cpp.dict
470 +#Word completion for C++
472 +"::C++::break", 1000
474 +"::C++::catch", 1000
475 +"::C++::class", 1000
476 +"::C++::const", 1000
477 +"::C++::continue", 1000
478 +"::C++::default", 1000
479 +"::C++::define", 1000
480 +"::C++::delete", 1000
481 +"::C++::double", 1000
484 +"::C++::explicit", 1000
485 +"::C++::extern", 1000
486 +"::C++::float", 1000
489 +"::C++::friend", 1000
491 +"::C++::include", 1000
492 +"::C++::inline", 1000
494 +"::C++::iostream", 1000
497 +"::C++::malloc", 1000
499 +"::C++::namespace", 1000
501 +"::C++::operator", 1000
502 +"::C++::private", 1000
503 +"::C++::protected", 1000
504 +"::C++::public", 1000
505 +"::C++::realloc", 1000
506 +"::C++::register", 1000
507 +"::C++::return", 1000
508 +"::C++::short", 1000
509 +"::C++::static", 1000
510 +"::C++::stdio", 1000
511 +"::C++::stdlib", 1000
512 +"::C++::struct", 1000
513 +"::C++::switch", 1000
514 +"::C++::template", 1000
515 +"::C++::throw", 1000
517 +"::C++::typedef", 1000
518 +"::C++::typename", 1000
519 +"::C++::union", 1000
520 +"::C++::unsigned", 1000
521 +"::C++::virtual", 1000
523 +"::C++::volatile", 1000
524 +"::C++::while", 1000
526 +#Word completion for C
531 +"::C::continue", 1000
532 +"::C::default", 1000
542 +"::C::include", 1000
548 +"::C::realloc", 1000
549 +"::C::register", 1000
557 +"::C::typedef", 1000
559 +"::C::unsigned", 1000
561 +"::C::volatile", 1000
565 +"@@@::C++::cl:class @-name@ {
574 +"@@@::C++::str:struct @@@ {
577 +"@@@::C++::wh:while(@@@)
581 +"@@@::C++::fo:for(@@@;@@@;@@@)
585 +"@@@::C++::if:if(@@@)
589 +"@@@::C++::main:int main(int argc, char** argv)
596 +"@@@::C::str:struct @@@ {
599 +"@@@::C::wh:while(@@@)
603 +"@@@::C::fo:for(@@@;@@@;@@@)
611 +"@@@::C::main:int main(int argc, char** argv)
616 diff --quilt /dev/null new/Dictionary/dicts/english_top.dict
618 +++ new/Dictionary/dicts/english_top.dict
1462 +"Hewlett-Packard's"
2555 +"Telecommunications"
3127 +"application-specific"
4146 +"context-sensitive"
4526 +"desktop-publishing"
5409 +"fourth-generation"
5934 +"industry-standard"
6805 +"network-management"
7528 +"project-management"
8232 +"secretary-general"
8992 +"telecommunications"
9090 +"three-dimensional"
9728 diff --quilt /dev/null new/Dictionary/dicts/german.dict
9730 +++ new/Dictionary/dicts/german.dict
9751 +"Abweichungen", 122
9761 +"Adressierung", 102
9780 +"Alternativen", 151
9787 +"Andererseits", 277
9792 +"Anforderungen", 621
9810 +"Anrufbeantworter", 192
9827 +"Anwendungen", 1988
9835 +"Applikationen", 1296
9840 +"Arbeitsplatz", 146
9841 +"Arbeitsspeicher", 211
9842 +"Arbeitsweise", 196
9843 +"Architecture", 119
9866 +"Aufmerksamkeit", 112
9874 +"Aufzeichnung", 128
9886 +"Auslieferung", 127
9900 +"Auswirkungen", 178
9946 +"Beispielprogramm", 149
9947 +"Beispielsweise", 227
9958 +"Berechnungen", 169
9964 +"Berichtigungen", 125
9970 +"Beschleunigung", 115
9971 +"Beschreibung", 515
9973 +"Besonderheit", 200
9974 +"Besonderheiten", 165
9978 +"Bestandteile", 195
9981 +"Bestimmungen", 111
9990 +"Betriebssystem", 1395
9991 +"Betriebssysteme", 544
9992 +"Betriebssystemen", 265
9993 +"Betriebssystems", 353
10000 +"Bezeichnung", 425
10002 +"Bezugsquelle", 141
10004 +"Bibliotheken", 286
10008 +"Bildbearbeitung", 194
10014 +"Bildpunkten", 362
10015 +"Bildschirm", 1407
10016 +"Bildschirms", 109
10017 +"Bildschirmspeicher", 113
10018 +"Bildspeicher", 251
10019 +"Bildverarbeitung", 167
10020 +"Bildwiederholfrequenz", 146
10021 +"Bildwiederholrate", 109
10047 +"Braunschweig", 174
10108 +"Communication", 109
10109 +"Communications", 107
10115 +"Computergrafik", 120
10126 +"Coprozessor", 315
10130 +"Corporation", 146
10152 +"Darstellung", 971
10157 +"Dateimanager", 191
10159 +"Dateisystem", 202
10162 +"Datenaustausch", 316
10164 +"Datenbanken", 685
10166 +"Datendurchsatz", 123
10167 +"Datenkompression", 121
10169 +"Datenmengen", 230
10172 +"Datensicherung", 123
10174 +"Datenstruktur", 151
10175 +"Datenstrukturen", 156
10176 +"Datentransfer", 208
10177 +"Datentransferrate", 212
10188 +"Definitionen", 102
10189 +"Deklaration", 102
10209 +"Deutschland", 956
10211 +"Development", 196
10217 +"Dialogboxen", 208
10241 +"Diskettenlaufwerk", 130
10245 +"Distributor", 276
10249 +"Dokumentation", 1269
10255 +"Doppelklick", 217
10270 +"Druckertreiber", 166
10296 +"Eigenschaft", 244
10297 +"Eigenschaften", 647
10313 +"Einrichtung", 195
10315 +"Einschalten", 169
10317 +"Einstellung", 472
10318 +"Einstellungen", 612
10324 +"Electronics", 104
10340 +"Entscheidung", 270
10341 +"Entsprechend", 152
10343 +"Entwickler", 1360
10344 +"Entwicklern", 144
10345 +"Entwicklung", 1313
10346 +"Entwicklungen", 178
10347 +"Entwicklungssystem", 111
10348 +"Entwicklungsumgebung", 323
10350 +"Environment", 124
10357 +"Erfahrungen", 271
10361 +"Ergebnissen", 121
10370 +"Erwartungen", 155
10371 +"Erweiterung", 494
10372 +"Erweiterungen", 531
10417 +"Fehlerkorrektur", 164
10418 +"Fehlermeldung", 322
10419 +"Fehlermeldungen", 181
10421 +"Fehlersuche", 148
10432 +"Festplatte", 1889
10433 +"Festplatten", 688
10464 +"Fortschritt", 141
10483 +"Funktionen", 3022
10484 +"Funktionsumfang", 344
10485 +"Funktionsweise", 110
10499 +"Gegenstelle", 137
10504 +"Gelegenheit", 217
10506 +"Genauigkeit", 193
10507 +"Genehmigung", 100
10512 +"Geschwindigkeit", 1289
10513 +"Geschwindigkeiten", 123
10514 +"Gesellschaft", 187
10523 +"Gleichzeitig", 132
10530 +"Grafikkarte", 757
10531 +"Grafikkarten", 537
10532 +"Grafikmodus", 146
10542 +"Grundausstattung", 130
10544 +"Grundfarben", 100
10572 +"Hauptplatine", 104
10573 +"Hauptprogramm", 141
10574 +"Hauptspeicher", 768
10584 +"Herausgeber", 115
10588 +"Hersteller", 3043
10589 +"Herstellern", 231
10590 +"Herstellers", 282
10591 +"Herstellung", 230
10601 +"Hilfsmittel", 155
10606 +"Hintergrund", 700
10612 +"Hostadapter", 477
10633 +"Implementation", 196
10634 +"Implementierung", 334
10637 +"Inbetriebnahme", 125
10643 +"Information", 787
10644 +"Informationen", 2201
10649 +"Inhaltsverzeichnis", 149
10651 +"Initialisierung", 264
10654 +"Insbesondere", 196
10657 +"Installation", 1815
10658 +"Installationsprogramm", 198
10662 +"Instruments", 234
10664 +"Integration", 501
10666 +"Intelligenz", 183
10668 +"Interactive", 123
10669 +"Interessant", 180
10671 +"Interessenten", 133
10674 +"International", 213
10676 +"Interpolation", 111
10677 +"Interpreter", 193
10686 +"Jahresabonnement", 108
10730 +"Klassenbibliothek", 197
10731 +"Klassenbibliotheken", 105
10741 +"Kombination", 496
10742 +"Kombinationen", 117
10746 +"Kommandozeile", 142
10747 +"Kommunikation", 800
10749 +"Komponenten", 657
10750 +"Kompression", 394
10752 +"Konfiguration", 801
10753 +"Konfigurationen", 101
10754 +"Konkurrenten", 283
10757 +"Konstruktion", 151
10764 +"Kontrollfeld", 176
10766 +"Konvertierung", 182
10769 +"Kooperation", 123
10770 +"Koordinaten", 208
10776 +"Korrespondenz", 112
10785 +"Kundenkonto", 102
10792 +"Kurzmeldungen", 388
10803 +"Laserdrucker", 174
10810 +"Lautsprecher", 141
10814 +"Leerzeichen", 124
10823 +"Lesersprechstunde", 101
10832 +"Lieferumfang", 1079
10877 +"Makrosprache", 143
10884 +"Manipulation", 175
10888 +"Manuskripte", 100
10900 +"Massenspeicher", 101
10903 +"Mathematica", 171
10912 +"Mechanismen", 178
10913 +"Mechanismus", 218
10957 +"Mitarbeiter", 334
10961 +"Mittelpunkt", 107
10964 +"Mittlerweile", 177
10986 +"Motherboard", 233
10987 +"Motherboards", 125
10993 +"Multitasking", 306
11003 +"Nachrichten", 1049
11042 +"Normalerweise", 150
11048 +"Notwendigkeit", 112
11085 +"Operationen", 346
11087 +"Optimierung", 231
11094 +"Organisation", 170
11095 +"Orientierung", 114
11114 +"Partitionen", 157
11121 +"Performance", 1061
11142 +"Plattenplatz", 129
11144 +"Plattformen", 356
11169 +"Presentation", 212
11172 +"Printserver", 133
11183 +"Professional", 304
11187 +"Programmbeispiele", 354
11188 +"Programmcode", 116
11190 +"Programmen", 1205
11192 +"Programmieren", 170
11193 +"Programmierer", 1071
11194 +"Programmiersprache", 391
11195 +"Programmiersprachen", 197
11196 +"Programmierung", 986
11197 +"Programming", 250
11199 +"Programmstart", 105
11217 +"Prozessoren", 724
11253 +"Realisierung", 134
11255 +"Rechenleistung", 245
11277 +"Registrierung", 137
11279 +"Reihenfolge", 437
11339 +"Schnittstelle", 1331
11340 +"Schnittstellen", 718
11344 +"Schreibtisch", 160
11353 +"Schwerpunkt", 129
11354 +"Schwierigkeiten", 542
11420 +"Sonderzeichen", 146
11424 +"Soundkarten", 183
11436 +"Speicherbedarf", 160
11437 +"Speicherbereich", 201
11438 +"Speicherbereiche", 101
11440 +"Speicherplatz", 260
11442 +"Speicherung", 177
11443 +"Speicherverwaltung", 248
11446 +"Spezifikation", 189
11453 +"Spracherkennung", 122
11465 +"Startadresse", 105
11474 +"Steckkarten", 108
11492 +"Stromversorgung", 103
11511 +"Synchronisation", 112
11523 +"Tabellenkalkulation", 309
11530 +"Taktfrequenz", 315
11536 +"Tastendruck", 149
11537 +"Tastenkombination", 101
11544 +"Technologie", 225
11545 +"Technologies", 175
11553 +"Telefonleitung", 100
11554 +"Telefonnetz", 151
11555 +"Telefonnummer", 127
11556 +"Telefonnummern", 113
11558 +"Telekommunikation", 150
11565 +"Terminalprogramm", 180
11570 +"Testkandidaten", 163
11571 +"Testprogramm", 145
11577 +"Textdateien", 123
11584 +"Textverarbeitung", 656
11585 +"Textverarbeitungen", 102
11598 +"Tintenstrahldrucker", 110
11610 +"Transferrate", 241
11611 +"Transferraten", 113
11640 +"Umschaltung", 116
11655 +"Unternehmen", 437
11656 +"Unterscheidung", 122
11657 +"Unterschied", 601
11658 +"Unterschiede", 506
11659 +"Unterthema", 2069
11676 +"Veranstaltung", 111
11677 +"Verarbeitung", 196
11678 +"Verbesserung", 150
11679 +"Verbesserungen", 232
11680 +"Verbindung", 1602
11681 +"Verbindungen", 513
11682 +"Verbindungsaufbau", 150
11683 +"Verbreitung", 280
11685 +"Vergangenheit", 184
11693 +"Verschieben", 138
11696 +"Versionsnummer", 159
11703 +"Verwendung", 1003
11704 +"Verzeichnis", 573
11705 +"Verzeichnisse", 275
11708 +"Videorecorder", 102
11710 +"Videosignal", 111
11727 +"VisualBASIC", 357
11730 +"Vollversion", 193
11733 +"Voraussetzung", 305
11734 +"Voraussetzungen", 183
11735 +"Vorbereitung", 163
11737 +"Vordergrund", 286
11741 +"Vorgehensweise", 142
11746 +"Vorstellung", 212
11753 +"Wahrscheinlichkeit", 131
11756 +"Warteschlange", 100
11764 +"Wechselplatte", 138
11765 +"Wechselplatten", 186
11771 +"Weiterentwicklung", 148
11804 +"Wirklichkeit", 141
11807 +"Wissenschaft", 109
11812 +"WordPerfect", 605
11818 +"Workstation", 293
11819 +"Workstations", 327
11836 +"Zeichensatz", 219
11838 +"Zeichnungen", 138
11842 +"Zeilenfrequenz", 136
11850 +"Zivadinovic", 139
11857 +"Zugriffsrechte", 113
11858 +"Zugriffszeit", 207
11863 +"Zusammenarbeit", 378
11864 +"Zusammenhang", 423
11865 +"Zusammenspiel", 214
11873 +"Zwischenablage", 185
11877 +"abgedruckte", 119
11878 +"abgedruckten", 223
11880 +"abgeschaltet", 128
11881 +"abgeschlossen", 217
11883 +"abgespeichert", 151
11890 +"abspeichern", 151
11900 +"aktualisiert", 155
11913 +"allerdings", 4659
11917 +"allgemeinen", 480
11924 +"amerikanische", 244
11925 +"amerikanischen", 366
11935 +"andererseits", 246
11944 +"angebotenen", 187
11948 +"angegebenen", 251
11954 +"angeschlossen", 430
11955 +"angeschlossenen", 299
11957 +"angesprochen", 241
11965 +"anscheinend", 186
11983 +"aufeinander", 112
11985 +"aufgenommen", 210
12001 +"aufzunehmen", 100
12009 +"ausgeliefert", 345
12010 +"ausgeschaltet", 115
12011 +"ausgeschlossen", 142
12012 +"ausgesprochen", 145
12013 +"ausgestattet", 518
12014 +"ausgetauscht", 121
12015 +"ausgewertet", 100
12019 +"ausreichend", 346
12021 +"ausschalten", 116
12023 +"austauschen", 246
12026 +"automatisch", 1803
12027 +"automatische", 422
12028 +"automatischen", 223
12035 +"beansprucht", 125
12036 +"beantworten", 138
12045 +"beeinflussen", 170
12050 +"befindlichen", 149
12061 +"beherrschen", 287
12071 +"beispielsweise", 3309
12098 +"bereitstellen", 127
12099 +"bereitstellt", 113
12102 +"beschleunigen", 172
12103 +"beschleunigt", 159
12104 +"beschreiben", 345
12106 +"beschrieben", 480
12107 +"beschriebene", 157
12108 +"beschriebenen", 312
12124 +"bestehenden", 232
12134 +"beteiligten", 146
12139 +"betreffende", 106
12140 +"betreffenden", 156
12157 +"beziehungsweise", 2293
12219 +"dargestellt", 461
12225 +"darzustellen", 178
12236 +"definierten", 210
12239 +"demonstriert", 122
12255 +"derzeitigen", 136
12260 +"detaillierte", 116
12288 +"digitalisiert", 109
12296 +"dokumentiert", 213
12304 +"dreidimensionale", 122
12313 +"durchlaufen", 109
12318 +"dynamischen", 140
12335 +"eigentlich", 1200
12336 +"eigentliche", 549
12337 +"eigentlichen", 585
12355 +"einfachsten", 186
12358 +"eingebauten", 262
12360 +"eingebunden", 220
12362 +"eingerichtet", 172
12363 +"eingeschaltet", 141
12365 +"eingesetzten", 110
12366 +"eingestellt", 396
12367 +"eingetragen", 256
12368 +"einheitliche", 120
12377 +"einschalten", 127
12381 +"einstellbar", 109
12384 +"einwandfrei", 267
12394 +"einzusetzen", 212
12395 +"einzustellen", 123
12396 +"elektronische", 264
12397 +"elektronischen", 373
12398 +"elektronischer", 110
12402 +"empfehlenswert", 103
12421 +"enthaltenen", 232
12424 +"entscheiden", 269
12425 +"entscheidende", 101
12426 +"entscheidet", 159
12427 +"entschieden", 171
12428 +"entsprechen", 358
12429 +"entsprechend", 923
12430 +"entsprechende", 1064
12431 +"entsprechenden", 1273
12432 +"entsprechender", 223
12433 +"entsprechendes", 121
12442 +"entwickelte", 300
12443 +"entwickelten", 193
12447 +"erfolgreich", 298
12448 +"erfolgreichen", 112
12451 +"erforderlich", 773
12452 +"erforderlichen", 166
12473 +"erleichtern", 328
12474 +"erleichtert", 319
12477 +"ermittelten", 115
12491 +"erstaunlich", 152
12508 +"erweiterten", 366
12528 +"existierenden", 127
12553 +"fehlerhafte", 107
12564 +"festgelegten", 100
12566 +"feststellen", 240
12567 +"festzustellen", 112
12582 +"formatieren", 107
12592 +"freigegeben", 140
12598 +"funktionieren", 317
12599 +"funktioniert", 923
12600 +"funktionierte", 132
12625 +"gegebenenfalls", 402
12627 +"gegenseitig", 116
12633 +"gekennzeichnet", 134
12639 +"gelegentlich", 263
12643 +"gelieferten", 136
12651 +"gemeinsamen", 272
12687 +"geschlossen", 149
12688 +"geschrieben", 637
12694 +"gespeichert", 578
12695 +"gespeicherten", 153
12734 +"gleichzeitig", 1279
12745 +"grundlegende", 116
12746 +"grundlegenden", 111
12767 +"hergestellt", 162
12772 +"hervorragend", 105
12780 +"hierzulande", 145
12786 +"hinsichtlich", 243
12789 +"hintereinander", 101
12805 +"identifiziert", 113
12817 +"implementieren", 198
12818 +"implementiert", 467
12819 +"importieren", 131
12824 +"individuell", 148
12825 +"individuelle", 157
12826 +"individuellen", 107
12827 +"informieren", 145
12829 +"initialisieren", 161
12830 +"initialisiert", 225
12835 +"insbesondere", 680
12837 +"installieren", 556
12838 +"installiert", 816
12839 +"installierten", 166
12840 +"integrieren", 267
12842 +"integrierte", 422
12843 +"integriertem", 159
12844 +"integrierten", 462
12845 +"integrierter", 141
12846 +"intelligente", 100
12848 +"interaktive", 237
12849 +"interaktiven", 188
12850 +"interessant", 491
12851 +"interessante", 309
12852 +"interessanten", 145
12853 +"interessanter", 104
12854 +"interessieren", 123
12855 +"interessiert", 205
12857 +"internationalen", 138
12860 +"interpretiert", 165
12861 +"investieren", 127
12864 +"irgendwelche", 120
12897 +"keinesfalls", 134
12904 +"klassischen", 286
12917 +"komfortabel", 202
12918 +"komfortable", 152
12921 +"kommerzielle", 178
12922 +"kommerziellen", 236
12924 +"kommunizieren", 229
12926 +"kompilieren", 107
12935 +"kompliziert", 129
12936 +"komplizierter", 131
12937 +"komprimiert", 218
12938 +"komprimierte", 100
12939 +"komprimierten", 118
12940 +"konfigurieren", 209
12941 +"konfiguriert", 200
12947 +"kontrollieren", 103
12948 +"konventionellen", 117
12949 +"konvertieren", 128
12950 +"konvertiert", 157
12957 +"korrigieren", 144
13008 +"letztendlich", 127
13048 +"manipulieren", 148
13052 +"mathematische", 112
13053 +"mathematischen", 143
13075 +"menschliche", 152
13076 +"menschlichen", 174
13084 +"miteinander", 538
13085 +"mitgeliefert", 239
13086 +"mitgelieferte", 405
13087 +"mitgelieferten", 590
13092 +"mittlerweile", 640
13098 +"modifiziert", 104
13104 +"nacheinander", 160
13112 +"nebeneinander", 108
13143 +"normalerweise", 368
13147 +"notwendigen", 460
13150 +"numerischen", 120
13160 +"objektorientierte", 302
13161 +"objektorientierten", 258
13168 +"offensichtlich", 317
13171 +"offiziellen", 112
13185 +"organisiert", 145
13186 +"orientieren", 107
13198 +"physikalisch", 139
13199 +"physikalische", 176
13200 +"physikalischen", 174
13212 +"praktischen", 147
13215 +"preiswerten", 157
13216 +"preiswerter", 102
13218 +"prinzipiell", 194
13223 +"produzieren", 155
13225 +"professionelle", 227
13226 +"professionellen", 322
13227 +"profitieren", 202
13228 +"programmieren", 287
13229 +"programmiert", 254
13238 +"realisieren", 406
13246 +"rechtzeitig", 121
13250 +"registriert", 117
13297 +"schnelleren", 197
13300 +"schnellsten", 184
13318 +"seinerseits", 105
13339 +"sichergestellt", 106
13342 +"sicherstellen", 102
13350 +"signalisiert", 124
13364 +"sogenannten", 836
13365 +"sogenannter", 136
13366 +"sogenanntes", 120
13399 +"spezifiziert", 135
13441 +"technischen", 501
13442 +"technischer", 120
13453 +"theoretisch", 194
13458 +"transparent", 166
13472 +"typischerweise", 106
13473 +"umfangreiche", 264
13474 +"umfangreichen", 226
13482 +"unmittelbar", 294
13493 +"unterbringen", 115
13495 +"untereinander", 249
13497 +"untergebracht", 222
13499 +"unterscheiden", 632
13500 +"unterscheidet", 515
13501 +"unterschiedlich", 279
13502 +"unterschiedliche", 594
13503 +"unterschiedlichen", 563
13504 +"unterschiedlicher", 197
13505 +"unterstützen", 790
13506 +"untersuchen", 115
13509 +"verantwortlich", 330
13510 +"verarbeiten", 231
13511 +"verarbeitet", 284
13515 +"verbesserte", 177
13521 +"verbreitete", 125
13522 +"verbreiteten", 199
13524 +"verbundenen", 102
13527 +"vereinfachen", 154
13528 +"vereinfacht", 179
13532 +"vergangenen", 135
13536 +"vergleichbar", 203
13537 +"vergleichen", 217
13538 +"vergleichsweise", 185
13557 +"verschaffen", 128
13558 +"verschicken", 114
13560 +"verschieben", 250
13562 +"verschieden", 120
13563 +"verschiedene", 1628
13564 +"verschiedenen", 1958
13565 +"verschiedener", 367
13566 +"verschiedensten", 115
13568 +"verschwinden", 111
13569 +"verschwunden", 104
13575 +"versprechen", 132
13598 +"verwendeten", 557
13619 +"voneinander", 277
13623 +"vorausgesetzt", 336
13624 +"voraussichtlich", 140
13625 +"vorbehalten", 182
13627 +"vorbereitet", 119
13628 +"vordefinierten", 103
13630 +"vorgegebenen", 172
13631 +"vorgenommen", 198
13633 +"vorgesehenen", 111
13634 +"vorgestellt", 1240
13635 +"vorgestellte", 216
13636 +"vorgestellten", 425
13639 +"vorhandenen", 649
13643 +"vorliegende", 137
13644 +"vorliegenden", 236
13649 +"vornehmlich", 127
13652 +"vorzunehmen", 110
13655 +"wahrscheinlich", 270
13700 +"wesentliche", 212
13701 +"wesentlichen", 604
13709 +"wichtigsten", 609
13712 +"wiederholen", 103
13739 +"zahlreichen", 354
13757 +"zufriedenstellend", 505
13771 +"zusammenarbeiten", 105
13772 +"zusammenfassen", 100
13776 +"zuzugreifen", 122
13787 +"Änderungen", 808
13789 +"übertragen", 827
13791 diff --quilt /dev/null new/Dictionary/dicts/german_latex.dict
13793 +++ new/Dictionary/dicts/german_latex.dict
13795 +"::LaTeX::Abf\"alle"
13796 +"::LaTeX::Abh\"angigkeit"
13797 +"::LaTeX::Abl\"osung"
13798 +"::LaTeX::Aff\"are"
13799 +"::LaTeX::Aktion\"are"
13800 +"::LaTeX::Aktion\"aren"
13801 +"::LaTeX::Aktivit\"aten"
13802 +"::LaTeX::Anf\"uhrer"
13803 +"::LaTeX::Angeh\"orige"
13804 +"::LaTeX::Angeh\"origen"
13805 +"::LaTeX::Anh\"anger"
13806 +"::LaTeX::Anh\"angern"
13807 +"::LaTeX::Anh\"orung"
13808 +"::LaTeX::Ank\"undigung"
13809 +"::LaTeX::Ann\"aherung"
13810 +"::LaTeX::Ans\"atze"
13811 +"::LaTeX::Anschl\"age"
13812 +"::LaTeX::Anschl\"agen"
13813 +"::LaTeX::Anspr\"uche"
13814 +"::LaTeX::Anspr\"uchen"
13815 +"::LaTeX::Antr\"age"
13816 +"::LaTeX::Anw\"alte"
13817 +"::LaTeX::Arbeitskr\"afte"
13818 +"::LaTeX::Arbeitspl\"atze"
13819 +"::LaTeX::Arbeitspl\"atzen"
13820 +"::LaTeX::Atmosph\"are"
13821 +"::LaTeX::Attraktivit\"at"
13822 +"::LaTeX::Auff\"uhrung"
13823 +"::LaTeX::Auff\"uhrungen"
13824 +"::LaTeX::Aufkl\"arung"
13825 +"::LaTeX::Aufl\"osung"
13826 +"::LaTeX::Auftr\"age"
13827 +"::LaTeX::Ausf\"uhrung"
13828 +"::LaTeX::Ausf\"uhrungen"
13829 +"::LaTeX::Ausk\"unfte"
13830 +"::LaTeX::Ausl\"ander"
13831 +"::LaTeX::Ausl\"anderfeindlichkeit"
13832 +"::LaTeX::Ausl\"andern"
13833 +"::LaTeX::Ausl\"oser"
13834 +"::LaTeX::Ausr\"ustung"
13835 +"::LaTeX::Autorit\"at"
13836 +"::LaTeX::B\"acker"
13837 +"::LaTeX::B\"alle"
13838 +"::LaTeX::B\"ande"
13839 +"::LaTeX::B\"aume"
13840 +"::LaTeX::B\"aumen"
13841 +"::LaTeX::B\"oblingen"
13842 +"::LaTeX::B\"oblinger"
13843 +"::LaTeX::B\"oden"
13844 +"::LaTeX::B\"orse"
13845 +"::LaTeX::B\"orsen"
13847 +"::LaTeX::B\"ucher"
13848 +"::LaTeX::B\"uchern"
13849 +"::LaTeX::B\"uhne"
13850 +"::LaTeX::B\"uhnen"
13851 +"::LaTeX::B\"undnis"
13852 +"::LaTeX::B\"undnisgr\"unen"
13853 +"::LaTeX::B\"urger"
13854 +"::LaTeX::B\"urgerhaus"
13855 +"::LaTeX::B\"urgerinitiative"
13856 +"::LaTeX::B\"urgerinnen"
13857 +"::LaTeX::B\"urgerkrieg"
13858 +"::LaTeX::B\"urgermeister"
13859 +"::LaTeX::B\"urgermeisterin"
13860 +"::LaTeX::B\"urgermeisters"
13861 +"::LaTeX::B\"urgern"
13862 +"::LaTeX::B\"urgerschaft"
13863 +"::LaTeX::B\"urgerversammlung"
13865 +"::LaTeX::B\"urokratie"
13866 +"::LaTeX::B\"uros"
13867 +"::LaTeX::Baden-W\"urttemberg"
13868 +"::LaTeX::Bed\"urfnis"
13869 +"::LaTeX::Bed\"urfnisse"
13870 +"::LaTeX::Bef\"urchtung"
13871 +"::LaTeX::Bef\"urchtungen"
13872 +"::LaTeX::Bef\"urworter"
13873 +"::LaTeX::Begr\"undung"
13874 +"::LaTeX::Beh\"orde"
13875 +"::LaTeX::Beh\"orden"
13876 +"::LaTeX::Beitr\"age"
13877 +"::LaTeX::Beitr\"agen"
13878 +"::LaTeX::Bek\"ampfung"
13879 +"::LaTeX::Bem\"uhen"
13880 +"::LaTeX::Bem\"uhungen"
13881 +"::LaTeX::Ber\"ucksichtigung"
13882 +"::LaTeX::Besch\"aftigte"
13883 +"::LaTeX::Besch\"aftigten"
13884 +"::LaTeX::Besch\"aftigung"
13885 +"::LaTeX::Beschl\"usse"
13886 +"::LaTeX::Beschr\"ankung"
13887 +"::LaTeX::Best\"atigung"
13888 +"::LaTeX::Betr\"age"
13889 +"::LaTeX::Bev\"olkerung"
13890 +"::LaTeX::Bew\"ahrung"
13891 +"::LaTeX::Bez\"uge"
13892 +"::LaTeX::Bisch\"ofe"
13893 +"::LaTeX::Bl\"atter"
13894 +"::LaTeX::Bl\"attern"
13896 +"::LaTeX::Bl\"uten"
13897 +"::LaTeX::Br\"ucke"
13898 +"::LaTeX::Br\"ucken"
13899 +"::LaTeX::Br\"uder"
13900 +"::LaTeX::Br\"ussel"
13901 +"::LaTeX::Br\"usseler"
13902 +"::LaTeX::Brosch\"ure"
13903 +"::LaTeX::Bundesb\"urger"
13904 +"::LaTeX::Bundesl\"ander"
13905 +"::LaTeX::Bundesl\"andern"
13906 +"::LaTeX::Bundespr\"asident"
13907 +"::LaTeX::Bundespr\"asidenten"
13908 +"::LaTeX::D\"anemark"
13909 +"::LaTeX::D\"anen"
13910 +"::LaTeX::D\"orfer"
13911 +"::LaTeX::D\"orfern"
13912 +"::LaTeX::D\"usseldorf"
13913 +"::LaTeX::D\"usseldorfer"
13914 +"::LaTeX::Daf\"ur"
13915 +"::LaTeX::Dar\"uber"
13916 +"::LaTeX::Darmst\"adter"
13917 +"::LaTeX::Durchf\"uhrung"
13918 +"::LaTeX::Eigent\"umer"
13919 +"::LaTeX::Einf\"uhrung"
13920 +"::LaTeX::Einfl\"usse"
13921 +"::LaTeX::Eins\"atze"
13922 +"::LaTeX::Einsch\"atzung"
13923 +"::LaTeX::Einschr\"ankung"
13924 +"::LaTeX::Einschr\"ankungen"
13925 +"::LaTeX::Einw\"ande"
13926 +"::LaTeX::Emp\"orung"
13927 +"::LaTeX::Empf\"anger"
13928 +"::LaTeX::Engl\"ander"
13929 +"::LaTeX::Entf\"uhrung"
13930 +"::LaTeX::Entsch\"adigung"
13931 +"::LaTeX::Entt\"auschung"
13932 +"::LaTeX::Entw\"urfe"
13933 +"::LaTeX::Entwicklungsl\"ander"
13934 +"::LaTeX::Entwicklungsl\"andern"
13935 +"::LaTeX::Er\"offnung"
13936 +"::LaTeX::Erf\"ullung"
13937 +"::LaTeX::Erg\"anzung"
13938 +"::LaTeX::Erh\"ohung"
13939 +"::LaTeX::Erkl\"arung"
13940 +"::LaTeX::Erkl\"arungen"
13941 +"::LaTeX::Erl\"os"
13942 +"::LaTeX::Ern\"ahrung"
13943 +"::LaTeX::Ertr\"age"
13944 +"::LaTeX::Erz\"ahler"
13945 +"::LaTeX::Erz\"ahlung"
13946 +"::LaTeX::Erz\"ahlungen"
13947 +"::LaTeX::Europ\"aer"
13948 +"::LaTeX::Europ\"aische"
13949 +"::LaTeX::Europ\"aischen"
13950 +"::LaTeX::F\"ahigkeit"
13951 +"::LaTeX::F\"ahigkeiten"
13952 +"::LaTeX::F\"alle"
13953 +"::LaTeX::F\"allen"
13954 +"::LaTeX::F\"oderation"
13955 +"::LaTeX::F\"orderung"
13956 +"::LaTeX::F\"orster"
13957 +"::LaTeX::F\"u"se"
13958 +"::LaTeX::F\"u"sen"
13959 +"::LaTeX::F\"uhrer"
13960 +"::LaTeX::F\"uhrerschein"
13961 +"::LaTeX::F\"uhrung"
13962 +"::LaTeX::F\"uhrungen"
13963 +"::LaTeX::F\"ulle"
13965 +"::LaTeX::F\"unftel"
13967 +"::LaTeX::Fahrg\"aste"
13968 +"::LaTeX::Fakult\"at"
13969 +"::LaTeX::Fl\"ache"
13970 +"::LaTeX::Fl\"achen"
13971 +"::LaTeX::Fl\"uchtlinge"
13972 +"::LaTeX::Fl\"uchtlingen"
13973 +"::LaTeX::Fl\"uge"
13974 +"::LaTeX::Fl\"ugel"
13975 +"::LaTeX::Fl\"usse"
13976 +"::LaTeX::Flexibilit\"at"
13977 +"::LaTeX::Flugh\"afen"
13978 +"::LaTeX::Fr\"uchte"
13979 +"::LaTeX::Fr\"uher"
13980 +"::LaTeX::Fr\"uhjahr"
13981 +"::LaTeX::Fr\"uhling"
13982 +"::LaTeX::Fr\"uhst\"uck"
13983 +"::LaTeX::Fu"sg\"anger"
13984 +"::LaTeX::Fu"sg\"angerzone"
13985 +"::LaTeX::Funktion\"are"
13986 +"::LaTeX::G\"arten"
13987 +"::LaTeX::G\"artner"
13988 +"::LaTeX::G\"aste"
13989 +"::LaTeX::G\"asten"
13990 +"::LaTeX::G\"oppingen"
13991 +"::LaTeX::G\"otter"
13992 +"::LaTeX::G\"ottingen"
13993 +"::LaTeX::G\"unter"
13994 +"::LaTeX::G\"unther"
13995 +"::LaTeX::G\"uter"
13996 +"::LaTeX::Gastst\"atte"
13997 +"::LaTeX::Geb\"aude"
13998 +"::LaTeX::Geb\"auden"
13999 +"::LaTeX::Geb\"audes"
14000 +"::LaTeX::Geb\"uhr"
14001 +"::LaTeX::Geb\"uhren"
14002 +"::LaTeX::Ged\"achtnis"
14003 +"::LaTeX::Gef\"ahrdung"
14004 +"::LaTeX::Gef\"angnis"
14005 +"::LaTeX::Gef\"uhl"
14006 +"::LaTeX::Gef\"uhle"
14007 +"::LaTeX::Gef\"uhlen"
14008 +"::LaTeX::Gegen\"uber"
14009 +"::LaTeX::Gegenst\"ande"
14010 +"::LaTeX::Geh\"alter"
14011 +"::LaTeX::Geh\"or"
14012 +"::LaTeX::Gel\"ande"
14013 +"::LaTeX::Gem\"alde"
14014 +"::LaTeX::Gem\"use"
14015 +"::LaTeX::Generalsekret\"ar"
14016 +"::LaTeX::Gep\"ack"
14017 +"::LaTeX::Ger\"at"
14018 +"::LaTeX::Ger\"ate"
14019 +"::LaTeX::Ger\"aten"
14020 +"::LaTeX::Ger\"uchte"
14021 +"::LaTeX::Gesch\"aft"
14022 +"::LaTeX::Gesch\"afte"
14023 +"::LaTeX::Gesch\"aften"
14024 +"::LaTeX::Gesch\"aftsf\"uhrer"
14025 +"::LaTeX::Gesch\"aftsf\"uhrung"
14026 +"::LaTeX::Gesch\"aftsjahr"
14027 +"::LaTeX::Gesch\"aftsleitung"
14028 +"::LaTeX::Gesch\"aftsleute"
14029 +"::LaTeX::Gesch\"aftsmann"
14030 +"::LaTeX::Gesch\"aftsstelle"
14031 +"::LaTeX::Gespr\"ach"
14032 +"::LaTeX::Gespr\"ache"
14033 +"::LaTeX::Gespr\"achen"
14034 +"::LaTeX::Gespr\"achspartner"
14035 +"::LaTeX::Gest\"andnis"
14036 +"::LaTeX::Getr\"anke"
14037 +"::LaTeX::Gew\"asser"
14038 +"::LaTeX::Gl\"aubigen"
14039 +"::LaTeX::Gl\"aubiger"
14040 +"::LaTeX::Gl\"uck"
14041 +"::LaTeX::Glaubw\"urdigkeit"
14042 +"::LaTeX::Gr\"o"se"
14043 +"::LaTeX::Gr\"o"sen"
14044 +"::LaTeX::Gr\"o"senordnung"
14046 +"::LaTeX::Gr\"unde"
14047 +"::LaTeX::Gr\"unden"
14048 +"::LaTeX::Gr\"under"
14049 +"::LaTeX::Gr\"undung"
14050 +"::LaTeX::Gr\"une"
14051 +"::LaTeX::Gr\"unen"
14052 +"::LaTeX::Gro"sst\"adten"
14053 +"::LaTeX::Grunds\"atze"
14054 +"::LaTeX::Grunds\"atzlich"
14055 +"::LaTeX::Grundst\"uck"
14056 +"::LaTeX::Grundst\"ucke"
14057 +"::LaTeX::H\"aftlinge"
14058 +"::LaTeX::H\"alfte"
14059 +"::LaTeX::H\"ande"
14060 +"::LaTeX::H\"anden"
14061 +"::LaTeX::H\"andler"
14062 +"::LaTeX::H\"arte"
14063 +"::LaTeX::H\"atte"
14064 +"::LaTeX::H\"auser"
14065 +"::LaTeX::H\"ausern"
14066 +"::LaTeX::H\"ochst"
14067 +"::LaTeX::H\"ochster"
14069 +"::LaTeX::H\"ohen"
14070 +"::LaTeX::H\"ohepunkt"
14071 +"::LaTeX::H\"olle"
14072 +"::LaTeX::H\"orer"
14073 +"::LaTeX::H\"ugel"
14074 +"::LaTeX::H\"urde"
14075 +"::LaTeX::H\"urden"
14076 +"::LaTeX::H\"utte"
14077 +"::LaTeX::Hans-J\"urgen"
14078 +"::LaTeX::Haust\"ur"
14079 +"::LaTeX::Hintergr\"unde"
14080 +"::LaTeX::Holl\"ander"
14081 +"::LaTeX::Identit\"at"
14082 +"::LaTeX::Intensit\"at"
14083 +"::LaTeX::J\"ager"
14085 +"::LaTeX::J\"urgen"
14086 +"::LaTeX::Jahres\"uberschu"s"
14087 +"::LaTeX::Jubil\"aum"
14088 +"::LaTeX::K\"alte"
14089 +"::LaTeX::K\"ammerer"
14090 +"::LaTeX::K\"ampfe"
14091 +"::LaTeX::K\"ampfen"
14092 +"::LaTeX::K\"ampfer"
14094 +"::LaTeX::K\"aufer"
14095 +"::LaTeX::K\"ohler"
14097 +"::LaTeX::K\"olner"
14098 +"::LaTeX::K\"onig"
14099 +"::LaTeX::K\"onigin"
14100 +"::LaTeX::K\"onigreich"
14101 +"::LaTeX::K\"onigs"
14102 +"::LaTeX::K\"onnen"
14103 +"::LaTeX::K\"opfe"
14104 +"::LaTeX::K\"opfen"
14105 +"::LaTeX::K\"orper"
14106 +"::LaTeX::K\"orpers"
14107 +"::LaTeX::K\"orperverletzung"
14108 +"::LaTeX::K\"uche"
14110 +"::LaTeX::K\"undigung"
14111 +"::LaTeX::K\"unftig"
14112 +"::LaTeX::K\"unste"
14113 +"::LaTeX::K\"unstler"
14114 +"::LaTeX::K\"unstlerin"
14115 +"::LaTeX::K\"unstlern"
14116 +"::LaTeX::K\"unstlers"
14117 +"::LaTeX::K\"urze"
14118 +"::LaTeX::K\"urzung"
14119 +"::LaTeX::K\"urzungen"
14120 +"::LaTeX::K\"uste"
14121 +"::LaTeX::Kan\"ale"
14122 +"::LaTeX::Kapazit\"at"
14123 +"::LaTeX::Kapazit\"aten"
14124 +"::LaTeX::Kapit\"an"
14125 +"::LaTeX::Kapitalerh\"ohung"
14126 +"::LaTeX::Kinderg\"arten"
14127 +"::LaTeX::Kl\"ager"
14128 +"::LaTeX::Kl\"arung"
14129 +"::LaTeX::Kom\"odie"
14130 +"::LaTeX::Kontinuit\"at"
14131 +"::LaTeX::Kr\"afte"
14132 +"::LaTeX::Kr\"aften"
14133 +"::LaTeX::Kr\"uger"
14134 +"::LaTeX::Krankenh\"auser"
14135 +"::LaTeX::Krankenh\"ausern"
14136 +"::LaTeX::Kreativit\"at"
14137 +"::LaTeX::Kriminalit\"at"
14138 +"::LaTeX::L\"acheln"
14139 +"::LaTeX::L\"aden"
14140 +"::LaTeX::L\"ander"
14141 +"::LaTeX::L\"andern"
14142 +"::LaTeX::L\"ange"
14143 +"::LaTeX::L\"angst"
14145 +"::LaTeX::L\"aufer"
14146 +"::LaTeX::L\"ocher"
14147 +"::LaTeX::L\"ohne"
14148 +"::LaTeX::L\"osung"
14149 +"::LaTeX::L\"osungen"
14150 +"::LaTeX::L\"owen"
14151 +"::LaTeX::L\"ubeck"
14152 +"::LaTeX::L\"ubecker"
14153 +"::LaTeX::L\"ucke"
14154 +"::LaTeX::L\"ucken"
14156 +"::LaTeX::L\"ugen"
14157 +"::LaTeX::Leistungsf\"ahigkeit"
14158 +"::LaTeX::Lekt\"ure"
14159 +"::LaTeX::M\"adchen"
14160 +"::LaTeX::M\"angel"
14161 +"::LaTeX::M\"anner"
14162 +"::LaTeX::M\"annern"
14163 +"::LaTeX::M\"archen"
14164 +"::LaTeX::M\"arkte"
14165 +"::LaTeX::M\"arkten"
14167 +"::LaTeX::M\"obel"
14168 +"::LaTeX::M\"oglicherweise"
14169 +"::LaTeX::M\"oglichkeit"
14170 +"::LaTeX::M\"oglichkeiten"
14171 +"::LaTeX::M\"ollemann"
14172 +"::LaTeX::M\"oller"
14173 +"::LaTeX::M\"onchengladbach"
14174 +"::LaTeX::M\"order"
14177 +"::LaTeX::M\"uller"
14178 +"::LaTeX::M\"unchen"
14179 +"::LaTeX::M\"unchener"
14180 +"::LaTeX::M\"unchens"
14181 +"::LaTeX::M\"unchner"
14182 +"::LaTeX::M\"unster"
14183 +"::LaTeX::M\"unzen"
14184 +"::LaTeX::M\"utter"
14185 +"::LaTeX::Ma"sst\"abe"
14186 +"::LaTeX::Mail\"ander"
14187 +"::LaTeX::Man\"over"
14188 +"::LaTeX::Marktf\"uhrer"
14189 +"::LaTeX::Matth\"aus"
14190 +"::LaTeX::Milit\"ar"
14191 +"::LaTeX::Milit\"ars"
14192 +"::LaTeX::Millionenh\"ohe"
14193 +"::LaTeX::Ministerpr\"asident"
14194 +"::LaTeX::Ministerpr\"asidenten"
14195 +"::LaTeX::Mitb\"urger"
14196 +"::LaTeX::Mobilit\"at"
14197 +"::LaTeX::N\"achte"
14199 +"::LaTeX::N\"ahere"
14200 +"::LaTeX::N\"urnberg"
14201 +"::LaTeX::N\"urnberger"
14202 +"::LaTeX::Nat\"urlich"
14203 +"::LaTeX::Natursch\"utzer"
14204 +"::LaTeX::Niederl\"ander"
14205 +"::LaTeX::Normalit\"at"
14206 +"::LaTeX::Oberb\"urgermeister"
14207 +"::LaTeX::Oberfl\"ache"
14208 +"::LaTeX::P\"adagogen"
14209 +"::LaTeX::Pal\"astinenser"
14210 +"::LaTeX::Pal\"astinensern"
14211 +"::LaTeX::Parkpl\"atze"
14212 +"::LaTeX::Pers\"onlichkeit"
14213 +"::LaTeX::Pers\"onlichkeiten"
14214 +"::LaTeX::Ph\"anomen"
14215 +"::LaTeX::Pl\"adoyer"
14216 +"::LaTeX::Pl\"ane"
14217 +"::LaTeX::Pl\"anen"
14218 +"::LaTeX::Pl\"atze"
14219 +"::LaTeX::Pl\"atzen"
14220 +"::LaTeX::Pl\"otzlich"
14221 +"::LaTeX::Popularit\"at"
14222 +"::LaTeX::Portr\"at"
14223 +"::LaTeX::Pr\"asentation"
14224 +"::LaTeX::Pr\"asenz"
14225 +"::LaTeX::Pr\"asident"
14226 +"::LaTeX::Pr\"asidenten"
14227 +"::LaTeX::Pr\"asidentin"
14228 +"::LaTeX::Pr\"asidium"
14229 +"::LaTeX::Pr\"ufung"
14230 +"::LaTeX::Priorit\"at"
14231 +"::LaTeX::Produktivit\"at"
14232 +"::LaTeX::Qualit\"at"
14233 +"::LaTeX::Qualit\"aten"
14234 +"::LaTeX::R\"ader"
14235 +"::LaTeX::R\"atsel"
14236 +"::LaTeX::R\"auber"
14237 +"::LaTeX::R\"aume"
14238 +"::LaTeX::R\"aumen"
14239 +"::LaTeX::R\"aumung"
14240 +"::LaTeX::R\"omer"
14241 +"::LaTeX::R\"uckblick"
14242 +"::LaTeX::R\"ucken"
14243 +"::LaTeX::R\"uckf\"uhrung"
14244 +"::LaTeX::R\"uckgabe"
14245 +"::LaTeX::R\"uckgang"
14246 +"::LaTeX::R\"uckkehr"
14247 +"::LaTeX::R\"ucksicht"
14248 +"::LaTeX::R\"uckstand"
14249 +"::LaTeX::R\"ucktritt"
14250 +"::LaTeX::R\"uckzug"
14251 +"::LaTeX::R\"udiger"
14253 +"::LaTeX::R\"usselsheim"
14254 +"::LaTeX::R\"uttgers"
14255 +"::LaTeX::Realit\"at"
14256 +"::LaTeX::Regierungspr\"asidium"
14257 +"::LaTeX::Reiseb\"uros"
14258 +"::LaTeX::Repr\"asentanten"
14259 +"::LaTeX::Rot-Gr\"un"
14260 +"::LaTeX::Rum\"anien"
14261 +"::LaTeX::S\"anger"
14262 +"::LaTeX::S\"angerin"
14263 +"::LaTeX::S\"atze"
14264 +"::LaTeX::S\"atzen"
14265 +"::LaTeX::S\"aulen"
14266 +"::LaTeX::S\"ohne"
14268 +"::LaTeX::S\"udafrika"
14269 +"::LaTeX::S\"udafrikas"
14270 +"::LaTeX::S\"udamerika"
14271 +"::LaTeX::S\"uden"
14272 +"::LaTeX::S\"udkorea"
14273 +"::LaTeX::S\"udosten"
14274 +"::LaTeX::S\"udwesten"
14275 +"::LaTeX::Saarbr\"ucken"
14276 +"::LaTeX::Sachverst\"andigen"
14277 +"::LaTeX::Sch\"aden"
14278 +"::LaTeX::Sch\"afer"
14279 +"::LaTeX::Sch\"atzung"
14280 +"::LaTeX::Sch\"atzungen"
14281 +"::LaTeX::Sch\"auble"
14282 +"::LaTeX::Sch\"on"
14283 +"::LaTeX::Sch\"one"
14284 +"::LaTeX::Sch\"onheit"
14285 +"::LaTeX::Sch\"uler"
14286 +"::LaTeX::Sch\"ulerin"
14287 +"::LaTeX::Sch\"ulerinnen"
14288 +"::LaTeX::Sch\"ulern"
14289 +"::LaTeX::Sch\"usse"
14290 +"::LaTeX::Schl\"age"
14291 +"::LaTeX::Schl\"ussel"
14292 +"::LaTeX::Schr\"oder"
14293 +"::LaTeX::Schw\"ache"
14294 +"::LaTeX::Schw\"achen"
14295 +"::LaTeX::Selbst\"andigkeit"
14296 +"::LaTeX::Sexualit\"at"
14297 +"::LaTeX::Sicherheitskr\"afte"
14298 +"::LaTeX::Solidarit\"at"
14299 +"::LaTeX::Souver\"anit\"at"
14300 +"::LaTeX::Sozialhilfeempf\"anger"
14301 +"::LaTeX::Sp\"ater"
14302 +"::LaTeX::Sp\"atestens"
14303 +"::LaTeX::St\"adte"
14304 +"::LaTeX::St\"adten"
14305 +"::LaTeX::St\"amme"
14306 +"::LaTeX::St\"arke"
14307 +"::LaTeX::St\"arkung"
14308 +"::LaTeX::St\"orungen"
14309 +"::LaTeX::St\"uck"
14310 +"::LaTeX::St\"ucke"
14311 +"::LaTeX::St\"ucken"
14312 +"::LaTeX::St\"uhle"
14313 +"::LaTeX::St\"urmer"
14314 +"::LaTeX::Staatsanw\"alte"
14315 +"::LaTeX::Staatsb\"urgerschaft"
14316 +"::LaTeX::Staatspr\"asident"
14317 +"::LaTeX::Staatspr\"asidenten"
14318 +"::LaTeX::Staatssekret\"ar"
14319 +"::LaTeX::Stabilit\"at"
14320 +"::LaTeX::Stadtb\"ucherei"
14321 +"::LaTeX::Stadtr\"ate"
14322 +"::LaTeX::Stadtr\"atin"
14323 +"::LaTeX::Streitkr\"afte"
14324 +"::LaTeX::T\"anzer"
14325 +"::LaTeX::T\"ater"
14326 +"::LaTeX::T\"atern"
14327 +"::LaTeX::T\"atigkeit"
14328 +"::LaTeX::T\"atigkeiten"
14329 +"::LaTeX::T\"ochter"
14331 +"::LaTeX::T\"opfer"
14332 +"::LaTeX::T\"otung"
14333 +"::LaTeX::T\"ubingen"
14334 +"::LaTeX::T\"ubinger"
14336 +"::LaTeX::T\"uren"
14337 +"::LaTeX::T\"urkei"
14338 +"::LaTeX::T\"urken"
14339 +"::LaTeX::Tats\"achlich"
14340 +"::LaTeX::Th\"uringen"
14341 +"::LaTeX::Th\"uringer"
14342 +"::LaTeX::Torh\"uter"
14343 +"::LaTeX::Torj\"ager"
14344 +"::LaTeX::Tr\"ager"
14345 +"::LaTeX::Tr\"anen"
14346 +"::LaTeX::Tr\"aume"
14347 +"::LaTeX::Trag\"odie"
14348 +"::LaTeX::Trib\"une"
14349 +"::LaTeX::US-Pr\"asident"
14350 +"::LaTeX::Ums\"atze"
14351 +"::LaTeX::Umst\"ande"
14352 +"::LaTeX::Umst\"anden"
14353 +"::LaTeX::Umweltsch\"utzer"
14354 +"::LaTeX::Unabh\"angigkeit"
14355 +"::LaTeX::Unf\"alle"
14356 +"::LaTeX::Unf\"allen"
14357 +"::LaTeX::Ungl\"uck"
14358 +"::LaTeX::Universit\"at"
14359 +"::LaTeX::Universit\"aten"
14360 +"::LaTeX::Unterdr\"uckung"
14361 +"::LaTeX::Unterst\"utzung"
14362 +"::LaTeX::Urauff\"uhrung"
14363 +"::LaTeX::Urspr\"unglich"
14364 +"::LaTeX::V\"ater"
14365 +"::LaTeX::V\"ogel"
14366 +"::LaTeX::V\"olker"
14367 +"::LaTeX::V\"ollig"
14368 +"::LaTeX::Ver\"anderung"
14369 +"::LaTeX::Ver\"anderungen"
14370 +"::LaTeX::Ver\"offentlichung"
14371 +"::LaTeX::Verb\"ande"
14372 +"::LaTeX::Verb\"anden"
14373 +"::LaTeX::Verb\"undeten"
14374 +"::LaTeX::Verf\"ugung"
14375 +"::LaTeX::Vergn\"ugen"
14376 +"::LaTeX::Verh\"altnis"
14377 +"::LaTeX::Verh\"altnisse"
14378 +"::LaTeX::Verh\"altnissen"
14379 +"::LaTeX::Verk\"aufer"
14380 +"::LaTeX::Verl\"angerung"
14381 +"::LaTeX::Verm\"ogen"
14382 +"::LaTeX::Vers\"ohnung"
14383 +"::LaTeX::Versch\"arfung"
14384 +"::LaTeX::Versp\"atung"
14385 +"::LaTeX::Verst\"andigung"
14386 +"::LaTeX::Verst\"andnis"
14387 +"::LaTeX::Verst\"arkung"
14388 +"::LaTeX::Verst\"o"se"
14389 +"::LaTeX::Vertr\"age"
14390 +"::LaTeX::Verz\"ogerung"
14391 +"::LaTeX::Vizepr\"asident"
14392 +"::LaTeX::Vorg\"ange"
14393 +"::LaTeX::Vorg\"anger"
14394 +"::LaTeX::Vorschl\"age"
14395 +"::LaTeX::Vorschl\"agen"
14396 +"::LaTeX::Vortr\"age"
14397 +"::LaTeX::Vorw\"urfe"
14398 +"::LaTeX::Vorw\"urfen"
14399 +"::LaTeX::Vorz\"uge"
14400 +"::LaTeX::W\"ahler"
14401 +"::LaTeX::W\"ahlern"
14402 +"::LaTeX::W\"ahrend"
14403 +"::LaTeX::W\"ahrung"
14404 +"::LaTeX::W\"ahrungen"
14405 +"::LaTeX::W\"ahrungsunion"
14406 +"::LaTeX::W\"alder"
14407 +"::LaTeX::W\"ande"
14408 +"::LaTeX::W\"anden"
14410 +"::LaTeX::W\"arme"
14411 +"::LaTeX::W\"orter"
14412 +"::LaTeX::W\"unsche"
14413 +"::LaTeX::W\"unschen"
14414 +"::LaTeX::W\"urde"
14415 +"::LaTeX::W\"urttemberg"
14416 +"::LaTeX::W\"urzburg"
14417 +"::LaTeX::W\"uste"
14418 +"::LaTeX::Werkst\"atten"
14419 +"::LaTeX::Wettbewerbsf\"ahigkeit"
14420 +"::LaTeX::Widerspr\"uche"
14421 +"::LaTeX::Z\"ahler"
14422 +"::LaTeX::Z\"ahne"
14424 +"::LaTeX::Z\"ugen"
14425 +"::LaTeX::Z\"urich"
14426 +"::LaTeX::Zerst\"orung"
14427 +"::LaTeX::Zuh\"orer"
14428 +"::LaTeX::Zun\"achst"
14429 +"::LaTeX::Zur\"uck"
14430 +"::LaTeX::Zur\"uckhaltung"
14431 +"::LaTeX::Zus\"atzlich"
14432 +"::LaTeX::Zusammenh\"ange"
14433 +"::LaTeX::Zusch\"usse"
14434 +"::LaTeX::Zust\"ande"
14435 +"::LaTeX::Zust\"andigkeit"
14436 +"::LaTeX::Zw\"olf"
14438 +"::LaTeX::\"Agypten"
14439 +"::LaTeX::\"Ahnlich"
14440 +"::LaTeX::\"Amter"
14441 +"::LaTeX::\"Amtern"
14442 +"::LaTeX::\"Anderung"
14443 +"::LaTeX::\"Anderungen"
14444 +"::LaTeX::\"Angste"
14446 +"::LaTeX::\"Arger"
14447 +"::LaTeX::\"Arzte"
14448 +"::LaTeX::\"Arzten"
14449 +"::LaTeX::\"Asthetik"
14450 +"::LaTeX::\"Au"serung"
14451 +"::LaTeX::\"Au"serungen"
14453 +"::LaTeX::\"Offentliche"
14454 +"::LaTeX::\"Offentlichkeit"
14455 +"::LaTeX::\"Offentlichkeitsarbeit"
14456 +"::LaTeX::\"Offnung"
14457 +"::LaTeX::\"Offnungszeiten"
14458 +"::LaTeX::\"Okologie"
14459 +"::LaTeX::\"Okonomie"
14461 +"::LaTeX::\"Osterreich"
14462 +"::LaTeX::\"Osterreicher"
14463 +"::LaTeX::\"Osterreichs"
14465 +"::LaTeX::\"Uberall"
14466 +"::LaTeX::\"Uberblick"
14467 +"::LaTeX::\"Ubereinstimmung"
14468 +"::LaTeX::\"Uberfall"
14469 +"::LaTeX::\"Ubergabe"
14470 +"::LaTeX::\"Ubergang"
14471 +"::LaTeX::\"Uberhaupt"
14472 +"::LaTeX::\"Uberleben"
14473 +"::LaTeX::\"Uberlebenden"
14474 +"::LaTeX::\"Uberlegungen"
14475 +"::LaTeX::\"Ubernachtungen"
14476 +"::LaTeX::\"Ubernahme"
14477 +"::LaTeX::\"Uberpr\"ufung"
14478 +"::LaTeX::\"Uberraschung"
14479 +"::LaTeX::\"Uberraschungen"
14480 +"::LaTeX::\"Uberschrift"
14481 +"::LaTeX::\"Uberschu"s"
14482 +"::LaTeX::\"Ubersetzung"
14483 +"::LaTeX::\"Uberstunden"
14484 +"::LaTeX::\"Ubertragung"
14485 +"::LaTeX::\"Uberwachung"
14486 +"::LaTeX::\"Uberzeugung"
14487 +"::LaTeX::\"Ubung"
14488 +"::LaTeX::\"Ubungen"
14489 +"::LaTeX::\"agyptischen"
14490 +"::LaTeX::\"ahnlich"
14491 +"::LaTeX::\"ahnliche"
14492 +"::LaTeX::\"ahnlichen"
14493 +"::LaTeX::\"ahnlicher"
14494 +"::LaTeX::\"ahnliches"
14495 +"::LaTeX::\"alter"
14496 +"::LaTeX::\"altere"
14497 +"::LaTeX::\"alteren"
14498 +"::LaTeX::\"alterer"
14499 +"::LaTeX::\"alteste"
14500 +"::LaTeX::\"altesten"
14501 +"::LaTeX::\"andern"
14502 +"::LaTeX::\"andert"
14503 +"::LaTeX::\"anderte"
14504 +"::LaTeX::\"argert"
14505 +"::LaTeX::\"arztliche"
14506 +"::LaTeX::\"au"sere"
14507 +"::LaTeX::\"au"seren"
14508 +"::LaTeX::\"au"sern"
14509 +"::LaTeX::\"au"serst"
14510 +"::LaTeX::\"au"sert"
14511 +"::LaTeX::\"au"serte"
14512 +"::LaTeX::\"au"serten"
14513 +"::LaTeX::\"offentlich"
14514 +"::LaTeX::\"offentlich-rechtlichen"
14515 +"::LaTeX::\"offentliche"
14516 +"::LaTeX::\"offentlichen"
14517 +"::LaTeX::\"offentlicher"
14518 +"::LaTeX::\"offnen"
14519 +"::LaTeX::\"offnet"
14520 +"::LaTeX::\"offnete"
14521 +"::LaTeX::\"ofter"
14522 +"::LaTeX::\"okologisch"
14523 +"::LaTeX::\"okologische"
14524 +"::LaTeX::\"okologischen"
14525 +"::LaTeX::\"okonomisch"
14526 +"::LaTeX::\"okonomische"
14527 +"::LaTeX::\"okonomischen"
14528 +"::LaTeX::\"ortliche"
14529 +"::LaTeX::\"ortlichen"
14530 +"::LaTeX::\"osterreichische"
14531 +"::LaTeX::\"osterreichischen"
14532 +"::LaTeX::\"ostlich"
14533 +"::LaTeX::\"ostlichen"
14537 +"::LaTeX::\"uberall"
14538 +"::LaTeX::\"uberaus"
14539 +"::LaTeX::\"uberdies"
14540 +"::LaTeX::\"uberein"
14541 +"::LaTeX::\"uberfallen"
14542 +"::LaTeX::\"uberfl\"ussig"
14543 +"::LaTeX::\"uberfordert"
14544 +"::LaTeX::\"ubergeben"
14545 +"::LaTeX::\"uberhaupt"
14546 +"::LaTeX::\"uberholt"
14547 +"::LaTeX::\"uberlassen"
14548 +"::LaTeX::\"uberleben"
14549 +"::LaTeX::\"uberlebt"
14550 +"::LaTeX::\"uberlegen"
14551 +"::LaTeX::\"uberlegt"
14552 +"::LaTeX::\"ubernahm"
14553 +"::LaTeX::\"ubernehmen"
14554 +"::LaTeX::\"ubernimmt"
14555 +"::LaTeX::\"ubernommen"
14556 +"::LaTeX::\"uberpr\"ufen"
14557 +"::LaTeX::\"uberpr\"uft"
14558 +"::LaTeX::\"uberraschend"
14559 +"::LaTeX::\"uberraschenden"
14560 +"::LaTeX::\"uberrascht"
14561 +"::LaTeX::\"uberreicht"
14562 +"::LaTeX::\"ubers"
14563 +"::LaTeX::\"uberschreiten"
14564 +"::LaTeX::\"uberschritten"
14565 +"::LaTeX::\"ubersehen"
14566 +"::LaTeX::\"ubersetzt"
14567 +"::LaTeX::\"uberstanden"
14568 +"::LaTeX::\"ubertragen"
14569 +"::LaTeX::\"ubertrieben"
14570 +"::LaTeX::\"ubertroffen"
14571 +"::LaTeX::\"uberwachen"
14572 +"::LaTeX::\"uberwacht"
14573 +"::LaTeX::\"uberwiegend"
14574 +"::LaTeX::\"uberwiesen"
14575 +"::LaTeX::\"uberwinden"
14576 +"::LaTeX::\"uberwunden"
14577 +"::LaTeX::\"uberzeugen"
14578 +"::LaTeX::\"uberzeugend"
14579 +"::LaTeX::\"uberzeugt"
14580 +"::LaTeX::\"uberzogen"
14581 +"::LaTeX::\"ublich"
14582 +"::LaTeX::\"ubliche"
14583 +"::LaTeX::\"ublichen"
14584 +"::LaTeX::\"ubrig"
14585 +"::LaTeX::\"ubrigen"
14586 +"::LaTeX::\"ubrigens"
14589 +"::LaTeX::abgel\"ost"
14590 +"::LaTeX::abh\"angig"
14591 +"::LaTeX::allj\"ahrlich"
14592 +"::LaTeX::allm\"ahlich"
14593 +"::LaTeX::allt\"aglichen"
14594 +"::LaTeX::angef\"uhrt"
14595 +"::LaTeX::angeh\"oren"
14596 +"::LaTeX::angeh\"ort"
14597 +"::LaTeX::angek\"undigt"
14598 +"::LaTeX::angek\"undigte"
14599 +"::LaTeX::angek\"undigten"
14600 +"::LaTeX::anl\"a"slich"
14601 +"::LaTeX::ann\"ahernd"
14602 +"::LaTeX::aufgef\"uhrt"
14603 +"::LaTeX::aufgekl\"art"
14604 +"::LaTeX::aufgel\"ost"
14605 +"::LaTeX::aufh\"oren"
14606 +"::LaTeX::aus\"uben"
14607 +"::LaTeX::ausdr\"ucklich"
14608 +"::LaTeX::ausf\"uhrlich"
14609 +"::LaTeX::ausge\"ubt"
14610 +"::LaTeX::ausgef\"uhrt"
14611 +"::LaTeX::ausgel\"ost"
14612 +"::LaTeX::ausger\"ustet"
14613 +"::LaTeX::ausgew\"ahlt"
14614 +"::LaTeX::ausl\"andische"
14615 +"::LaTeX::ausl\"andischen"
14616 +"::LaTeX::ausl\"andischer"
14617 +"::LaTeX::ausl\"osen"
14619 +"::LaTeX::b\"osen"
14620 +"::LaTeX::b\"urgerliche"
14621 +"::LaTeX::b\"urgerlichen"
14622 +"::LaTeX::baden-w\"urttembergische"
14623 +"::LaTeX::baden-w\"urttembergischen"
14624 +"::LaTeX::beeintr\"achtigt"
14625 +"::LaTeX::bef\"ordert"
14626 +"::LaTeX::bef\"urchten"
14627 +"::LaTeX::bef\"urchtet"
14628 +"::LaTeX::bef\"urwortet"
14629 +"::LaTeX::begn\"ugen"
14630 +"::LaTeX::begr\"u"sen"
14631 +"::LaTeX::begr\"u"st"
14632 +"::LaTeX::begr\"u"ste"
14633 +"::LaTeX::begr\"unden"
14634 +"::LaTeX::begr\"undet"
14635 +"::LaTeX::begr\"undete"
14636 +"::LaTeX::begr\"undeten"
14637 +"::LaTeX::beh\"alt"
14638 +"::LaTeX::bek\"ampfen"
14639 +"::LaTeX::bek\"ampft"
14640 +"::LaTeX::bekr\"aftigt"
14641 +"::LaTeX::bekr\"aftigte"
14642 +"::LaTeX::bem\"uhen"
14643 +"::LaTeX::bem\"uht"
14644 +"::LaTeX::bem\"uhte"
14645 +"::LaTeX::ben\"otigen"
14646 +"::LaTeX::ben\"otigt"
14647 +"::LaTeX::ben\"otigte"
14648 +"::LaTeX::ben\"otigten"
14649 +"::LaTeX::ber\"at"
14650 +"::LaTeX::ber\"ucksichtigen"
14651 +"::LaTeX::ber\"ucksichtigt"
14652 +"::LaTeX::ber\"uhmt"
14653 +"::LaTeX::ber\"uhmte"
14654 +"::LaTeX::ber\"uhmten"
14655 +"::LaTeX::ber\"uhrt"
14656 +"::LaTeX::besch\"adigt"
14657 +"::LaTeX::besch\"aftigen"
14658 +"::LaTeX::besch\"aftigt"
14659 +"::LaTeX::besch\"aftigte"
14660 +"::LaTeX::beschr\"anken"
14661 +"::LaTeX::beschr\"ankt"
14662 +"::LaTeX::best\"atigen"
14663 +"::LaTeX::best\"atigt"
14664 +"::LaTeX::best\"atigte"
14665 +"::LaTeX::best\"atigten"
14666 +"::LaTeX::betr\"achtlich"
14667 +"::LaTeX::betr\"agt"
14668 +"::LaTeX::bew\"ahrt"
14669 +"::LaTeX::bew\"altigen"
14670 +"::LaTeX::bew\"olkt"
14671 +"::LaTeX::bez\"uglich"
14672 +"::LaTeX::buchst\"ablich"
14673 +"::LaTeX::d\"anische"
14674 +"::LaTeX::d\"anischen"
14676 +"::LaTeX::d\"unnen"
14677 +"::LaTeX::d\"urfe"
14678 +"::LaTeX::d\"urfen"
14679 +"::LaTeX::d\"urfte"
14680 +"::LaTeX::d\"urften"
14681 +"::LaTeX::daf\"ur"
14682 +"::LaTeX::dar\"uber"
14683 +"::LaTeX::demn\"achst"
14684 +"::LaTeX::diesj\"ahrigen"
14685 +"::LaTeX::dr\"angen"
14686 +"::LaTeX::dr\"angt"
14687 +"::LaTeX::dr\"uben"
14688 +"::LaTeX::dr\"ucken"
14689 +"::LaTeX::dr\"uckt"
14690 +"::LaTeX::dr\"uckte"
14691 +"::LaTeX::durchf\"uhren"
14692 +"::LaTeX::durchgef\"uhrt"
14693 +"::LaTeX::eigenst\"andige"
14694 +"::LaTeX::einf\"uhren"
14695 +"::LaTeX::eingef\"uhrt"
14696 +"::LaTeX::einger\"aumt"
14697 +"::LaTeX::eingeschr\"ankt"
14698 +"::LaTeX::einschl\"agigen"
14699 +"::LaTeX::einzuf\"uhren"
14700 +"::LaTeX::emp\"ort"
14701 +"::LaTeX::endg\"ultig"
14702 +"::LaTeX::endg\"ultige"
14703 +"::LaTeX::endg\"ultigen"
14704 +"::LaTeX::entf\"allt"
14705 +"::LaTeX::entf\"uhrt"
14706 +"::LaTeX::enth\"alt"
14707 +"::LaTeX::entt\"auscht"
14708 +"::LaTeX::er\"offnen"
14709 +"::LaTeX::er\"offnet"
14710 +"::LaTeX::er\"offnete"
14711 +"::LaTeX::er\"ortert"
14712 +"::LaTeX::erf\"ahrt"
14713 +"::LaTeX::erf\"ullen"
14714 +"::LaTeX::erf\"ullt"
14715 +"::LaTeX::erg\"anzen"
14716 +"::LaTeX::erg\"anzt"
14717 +"::LaTeX::erh\"alt"
14718 +"::LaTeX::erh\"altlich"
14719 +"::LaTeX::erh\"ohen"
14720 +"::LaTeX::erh\"oht"
14721 +"::LaTeX::erh\"ohte"
14722 +"::LaTeX::erh\"ohten"
14723 +"::LaTeX::erkl\"aren"
14724 +"::LaTeX::erkl\"art"
14725 +"::LaTeX::erkl\"arte"
14726 +"::LaTeX::erkl\"arten"
14727 +"::LaTeX::erl\"autert"
14728 +"::LaTeX::erl\"auterte"
14729 +"::LaTeX::erm\"oglichen"
14730 +"::LaTeX::erm\"oglicht"
14731 +"::LaTeX::ern\"ahren"
14732 +"::LaTeX::ersch\"opft"
14733 +"::LaTeX::ersch\"uttert"
14734 +"::LaTeX::erw\"ahnt"
14735 +"::LaTeX::erw\"ahnte"
14736 +"::LaTeX::erz\"ahlen"
14737 +"::LaTeX::erz\"ahlt"
14738 +"::LaTeX::erz\"ahlte"
14739 +"::LaTeX::europ\"aische"
14740 +"::LaTeX::europ\"aischen"
14741 +"::LaTeX::europ\"aischer"
14742 +"::LaTeX::f\"ahig"
14743 +"::LaTeX::f\"ahrt"
14744 +"::LaTeX::f\"allig"
14745 +"::LaTeX::f\"allt"
14746 +"::LaTeX::f\"angt"
14747 +"::LaTeX::f\"ordern"
14748 +"::LaTeX::f\"ordert"
14750 +"::LaTeX::f\"ugte"
14751 +"::LaTeX::f\"uhle"
14752 +"::LaTeX::f\"uhlen"
14753 +"::LaTeX::f\"uhlt"
14754 +"::LaTeX::f\"uhlte"
14755 +"::LaTeX::f\"uhlten"
14756 +"::LaTeX::f\"uhre"
14757 +"::LaTeX::f\"uhren"
14758 +"::LaTeX::f\"uhrende"
14759 +"::LaTeX::f\"uhrenden"
14760 +"::LaTeX::f\"uhrender"
14761 +"::LaTeX::f\"uhrt"
14762 +"::LaTeX::f\"uhrte"
14763 +"::LaTeX::f\"uhrten"
14764 +"::LaTeX::f\"ullen"
14765 +"::LaTeX::f\"ullt"
14767 +"::LaTeX::f\"unfmal"
14768 +"::LaTeX::f\"unfte"
14769 +"::LaTeX::f\"unften"
14770 +"::LaTeX::f\"unfzehn"
14771 +"::LaTeX::f\"unfzig"
14773 +"::LaTeX::f\"urchten"
14774 +"::LaTeX::f\"urchtet"
14776 +"::LaTeX::fl\"uchtete"
14777 +"::LaTeX::fr\"ohlich"
14779 +"::LaTeX::fr\"uhe"
14780 +"::LaTeX::fr\"uhen"
14781 +"::LaTeX::fr\"uher"
14782 +"::LaTeX::fr\"uhere"
14783 +"::LaTeX::fr\"uheren"
14784 +"::LaTeX::fr\"uherer"
14785 +"::LaTeX::fr\"uhestens"
14786 +"::LaTeX::fr\"uhzeitig"
14787 +"::LaTeX::franz\"osische"
14788 +"::LaTeX::franz\"osischen"
14789 +"::LaTeX::franz\"osischer"
14791 +"::LaTeX::g\"anzlich"
14792 +"::LaTeX::g\"ultig"
14793 +"::LaTeX::g\"ultigen"
14794 +"::LaTeX::g\"unstig"
14795 +"::LaTeX::g\"unstige"
14796 +"::LaTeX::g\"unstigen"
14797 +"::LaTeX::g\"unstiger"
14798 +"::LaTeX::ge\"andert"
14799 +"::LaTeX::ge\"au"sert"
14800 +"::LaTeX::ge\"offnet"
14801 +"::LaTeX::ge\"ubt"
14802 +"::LaTeX::geb\"urtige"
14803 +"::LaTeX::gedr\"angt"
14804 +"::LaTeX::gedr\"uckt"
14805 +"::LaTeX::gef\"ahrden"
14806 +"::LaTeX::gef\"ahrdet"
14807 +"::LaTeX::gef\"ahrlich"
14808 +"::LaTeX::gef\"ahrliche"
14809 +"::LaTeX::gef\"ahrlichen"
14810 +"::LaTeX::gef\"ahrlicher"
14811 +"::LaTeX::gef\"allt"
14812 +"::LaTeX::gef\"ordert"
14813 +"::LaTeX::gef\"uhlt"
14814 +"::LaTeX::gef\"uhrt"
14815 +"::LaTeX::gef\"uhrte"
14816 +"::LaTeX::gef\"uhrten"
14817 +"::LaTeX::gef\"ullt"
14818 +"::LaTeX::gefl\"uchtet"
14819 +"::LaTeX::gegen\"uber"
14820 +"::LaTeX::gegenw\"artig"
14821 +"::LaTeX::gegenw\"artige"
14822 +"::LaTeX::gegenw\"artigen"
14823 +"::LaTeX::gegr\"undet"
14824 +"::LaTeX::gegr\"undete"
14825 +"::LaTeX::gegr\"undeten"
14826 +"::LaTeX::geh\"ore"
14827 +"::LaTeX::geh\"oren"
14828 +"::LaTeX::geh\"orende"
14829 +"::LaTeX::geh\"orenden"
14830 +"::LaTeX::geh\"ort"
14831 +"::LaTeX::geh\"orte"
14832 +"::LaTeX::geh\"orten"
14833 +"::LaTeX::gek\"ampft"
14834 +"::LaTeX::gek\"undigt"
14835 +"::LaTeX::gek\"urzt"
14836 +"::LaTeX::gekl\"art"
14837 +"::LaTeX::gel\"ost"
14838 +"::LaTeX::gem\"a"s"
14839 +"::LaTeX::gen\"ugen"
14840 +"::LaTeX::gen\"ugend"
14841 +"::LaTeX::gen\"ugt"
14842 +"::LaTeX::gepr\"agt"
14843 +"::LaTeX::gepr\"agten"
14844 +"::LaTeX::gepr\"uft"
14845 +"::LaTeX::ger\"at"
14846 +"::LaTeX::ger\"aumt"
14847 +"::LaTeX::ger\"uckt"
14848 +"::LaTeX::geringf\"ugig"
14849 +"::LaTeX::gesch\"atzt"
14850 +"::LaTeX::gesch\"utzt"
14851 +"::LaTeX::gest\"arkt"
14852 +"::LaTeX::gest\"ort"
14853 +"::LaTeX::gest\"urzt"
14854 +"::LaTeX::gest\"utzt"
14855 +"::LaTeX::get\"otet"
14856 +"::LaTeX::gew\"ahlt"
14857 +"::LaTeX::gew\"ahlte"
14858 +"::LaTeX::gew\"ahlten"
14859 +"::LaTeX::gew\"ahren"
14860 +"::LaTeX::gew\"ahrleisten"
14861 +"::LaTeX::gew\"ahrleistet"
14862 +"::LaTeX::gew\"ahrt"
14863 +"::LaTeX::gew\"ohnlich"
14864 +"::LaTeX::gew\"ohnlichen"
14865 +"::LaTeX::gew\"ohnt"
14866 +"::LaTeX::gew\"unscht"
14867 +"::LaTeX::gew\"unschte"
14868 +"::LaTeX::gew\"unschten"
14869 +"::LaTeX::gew\"urdigt"
14870 +"::LaTeX::gez\"ahlt"
14871 +"::LaTeX::gl\"ucklich"
14872 +"::LaTeX::gr\"o"ser"
14873 +"::LaTeX::gr\"o"sere"
14874 +"::LaTeX::gr\"o"seren"
14875 +"::LaTeX::gr\"o"serer"
14876 +"::LaTeX::gr\"o"seres"
14877 +"::LaTeX::gr\"o"ste"
14878 +"::LaTeX::gr\"o"sten"
14879 +"::LaTeX::gr\"o"stenteils"
14880 +"::LaTeX::gr\"o"ster"
14882 +"::LaTeX::gr\"unden"
14883 +"::LaTeX::gr\"undete"
14884 +"::LaTeX::gr\"undeten"
14885 +"::LaTeX::gr\"undlich"
14886 +"::LaTeX::gr\"une"
14887 +"::LaTeX::gr\"unen"
14888 +"::LaTeX::gro"sz\"ugig"
14889 +"::LaTeX::grunds\"atzlich"
14890 +"::LaTeX::grunds\"atzliche"
14892 +"::LaTeX::h\"angen"
14893 +"::LaTeX::h\"angt"
14894 +"::LaTeX::h\"arter"
14895 +"::LaTeX::h\"atte"
14896 +"::LaTeX::h\"atten"
14897 +"::LaTeX::h\"aufig"
14898 +"::LaTeX::h\"aufiger"
14899 +"::LaTeX::h\"aufigsten"
14900 +"::LaTeX::h\"ochst"
14901 +"::LaTeX::h\"ochste"
14902 +"::LaTeX::h\"ochsten"
14903 +"::LaTeX::h\"ochstens"
14904 +"::LaTeX::h\"ochster"
14905 +"::LaTeX::h\"oher"
14906 +"::LaTeX::h\"ohere"
14907 +"::LaTeX::h\"oheren"
14908 +"::LaTeX::h\"oherer"
14910 +"::LaTeX::h\"oren"
14912 +"::LaTeX::h\"orte"
14913 +"::LaTeX::haupts\"achlich"
14914 +"::LaTeX::herk\"ommlichen"
14915 +"::LaTeX::hierf\"ur"
14916 +"::LaTeX::holl\"andischen"
14917 +"::LaTeX::humanit\"are"
14918 +"::LaTeX::j\"ahrlich"
14919 +"::LaTeX::j\"ahrliche"
14920 +"::LaTeX::j\"ahrlichen"
14921 +"::LaTeX::j\"udische"
14922 +"::LaTeX::j\"udischen"
14923 +"::LaTeX::j\"udischer"
14924 +"::LaTeX::j\"unger"
14925 +"::LaTeX::j\"ungere"
14926 +"::LaTeX::j\"ungeren"
14927 +"::LaTeX::j\"ungst"
14928 +"::LaTeX::j\"ungste"
14929 +"::LaTeX::j\"ungsten"
14930 +"::LaTeX::j\"ungster"
14932 +"::LaTeX::k\"amen"
14933 +"::LaTeX::k\"ampfen"
14934 +"::LaTeX::k\"ampft"
14935 +"::LaTeX::k\"ampfte"
14936 +"::LaTeX::k\"onne"
14937 +"::LaTeX::k\"onnen"
14938 +"::LaTeX::k\"onnte"
14939 +"::LaTeX::k\"onnten"
14940 +"::LaTeX::k\"orperlich"
14941 +"::LaTeX::k\"orperliche"
14942 +"::LaTeX::k\"orperlichen"
14944 +"::LaTeX::k\"uhlen"
14945 +"::LaTeX::k\"ummern"
14946 +"::LaTeX::k\"ummert"
14947 +"::LaTeX::k\"undigen"
14948 +"::LaTeX::k\"undigt"
14949 +"::LaTeX::k\"undigte"
14950 +"::LaTeX::k\"undigten"
14951 +"::LaTeX::k\"unftig"
14952 +"::LaTeX::k\"unftige"
14953 +"::LaTeX::k\"unftigen"
14954 +"::LaTeX::k\"unstlerische"
14955 +"::LaTeX::k\"unstlerischen"
14956 +"::LaTeX::k\"unstlich"
14957 +"::LaTeX::k\"unstliche"
14958 +"::LaTeX::k\"unstlichen"
14959 +"::LaTeX::k\"urzen"
14960 +"::LaTeX::k\"urzer"
14961 +"::LaTeX::k\"urzlich"
14962 +"::LaTeX::kl\"aren"
14963 +"::LaTeX::kr\"aftig"
14964 +"::LaTeX::kr\"aftige"
14965 +"::LaTeX::kr\"aftigen"
14966 +"::LaTeX::l\"a"st"
14967 +"::LaTeX::l\"achelt"
14968 +"::LaTeX::l\"acherlich"
14970 +"::LaTeX::l\"agen"
14971 +"::LaTeX::l\"andlichen"
14972 +"::LaTeX::l\"anger"
14973 +"::LaTeX::l\"angere"
14974 +"::LaTeX::l\"angerem"
14975 +"::LaTeX::l\"angeren"
14976 +"::LaTeX::l\"angerer"
14977 +"::LaTeX::l\"angst"
14978 +"::LaTeX::l\"auft"
14979 +"::LaTeX::l\"osen"
14981 +"::LaTeX::l\"oste"
14982 +"::LaTeX::langj\"ahrige"
14983 +"::LaTeX::langj\"ahrigen"
14984 +"::LaTeX::legend\"aren"
14985 +"::LaTeX::m\"achtig"
14986 +"::LaTeX::m\"achtige"
14987 +"::LaTeX::m\"achtigen"
14988 +"::LaTeX::m\"annliche"
14989 +"::LaTeX::m\"annlichen"
14990 +"::LaTeX::m\"ochte"
14991 +"::LaTeX::m\"ochten"
14993 +"::LaTeX::m\"ogen"
14994 +"::LaTeX::m\"oglich"
14995 +"::LaTeX::m\"ogliche"
14996 +"::LaTeX::m\"oglichen"
14997 +"::LaTeX::m\"oglicher"
14998 +"::LaTeX::m\"oglicherweise"
14999 +"::LaTeX::m\"oglichst"
15000 +"::LaTeX::m\"u"ste"
15001 +"::LaTeX::m\"u"sten"
15003 +"::LaTeX::m\"uhsam"
15004 +"::LaTeX::m\"usse"
15005 +"::LaTeX::m\"ussen"
15006 +"::LaTeX::milit\"arisch"
15007 +"::LaTeX::milit\"arische"
15008 +"::LaTeX::milit\"arischen"
15009 +"::LaTeX::n\"achste"
15010 +"::LaTeX::n\"achsten"
15011 +"::LaTeX::n\"achster"
15012 +"::LaTeX::n\"achstes"
15013 +"::LaTeX::n\"achtlichen"
15014 +"::LaTeX::n\"aher"
15015 +"::LaTeX::n\"amlich"
15016 +"::LaTeX::n\"ordlich"
15017 +"::LaTeX::n\"ordlichen"
15018 +"::LaTeX::n\"otig"
15019 +"::LaTeX::n\"otige"
15020 +"::LaTeX::n\"otigen"
15021 +"::LaTeX::n\"utzlich"
15022 +"::LaTeX::n\"utzt"
15023 +"::LaTeX::nachdr\"ucklich"
15024 +"::LaTeX::nachtr\"aglich"
15025 +"::LaTeX::nat\"urlich"
15026 +"::LaTeX::nat\"urliche"
15027 +"::LaTeX::nat\"urlichen"
15028 +"::LaTeX::nerv\"os"
15029 +"::LaTeX::niederl\"andische"
15030 +"::LaTeX::niederl\"andischen"
15031 +"::LaTeX::nieders\"achsische"
15032 +"::LaTeX::nieders\"achsischen"
15033 +"::LaTeX::osteurop\"aischen"
15034 +"::LaTeX::p\"unktlich"
15035 +"::LaTeX::pal\"astinensische"
15036 +"::LaTeX::pal\"astinensischen"
15037 +"::LaTeX::pers\"onlich"
15038 +"::LaTeX::pers\"onliche"
15039 +"::LaTeX::pers\"onlichen"
15040 +"::LaTeX::pers\"onlicher"
15041 +"::LaTeX::pl\"adiert"
15042 +"::LaTeX::pl\"adierte"
15043 +"::LaTeX::pl\"otzlich"
15044 +"::LaTeX::popul\"ar"
15045 +"::LaTeX::pr\"asent"
15046 +"::LaTeX::pr\"asentieren"
15047 +"::LaTeX::pr\"asentiert"
15048 +"::LaTeX::pr\"asentierte"
15049 +"::LaTeX::pr\"asentierten"
15050 +"::LaTeX::pr\"azise"
15051 +"::LaTeX::pr\"ufen"
15052 +"::LaTeX::pr\"uft"
15054 +"::LaTeX::r\"aumen"
15055 +"::LaTeX::r\"aumt"
15056 +"::LaTeX::r\"aumte"
15057 +"::LaTeX::r\"omische"
15058 +"::LaTeX::r\"omischen"
15059 +"::LaTeX::r\"ucken"
15060 +"::LaTeX::r\"uckg\"angig"
15061 +"::LaTeX::r\"uckt"
15062 +"::LaTeX::r\"uckte"
15063 +"::LaTeX::r\"uhrt"
15064 +"::LaTeX::regelm\"a"sig"
15065 +"::LaTeX::regelm\"a"sige"
15066 +"::LaTeX::regelm\"a"sigen"
15067 +"::LaTeX::regul\"aren"
15068 +"::LaTeX::religi\"ose"
15069 +"::LaTeX::religi\"osen"
15070 +"::LaTeX::rot-gr\"une"
15071 +"::LaTeX::rot-gr\"unen"
15072 +"::LaTeX::s\"achsischen"
15073 +"::LaTeX::s\"amtliche"
15074 +"::LaTeX::s\"udafrikanischen"
15075 +"::LaTeX::s\"udlich"
15076 +"::LaTeX::s\"udlichen"
15077 +"::LaTeX::sch\"atzen"
15078 +"::LaTeX::sch\"atzt"
15079 +"::LaTeX::sch\"atzungsweise"
15080 +"::LaTeX::sch\"on"
15081 +"::LaTeX::sch\"one"
15082 +"::LaTeX::sch\"onen"
15083 +"::LaTeX::sch\"oner"
15084 +"::LaTeX::sch\"ones"
15085 +"::LaTeX::sch\"onste"
15086 +"::LaTeX::sch\"onsten"
15087 +"::LaTeX::sch\"utzen"
15088 +"::LaTeX::sch\"utzt"
15089 +"::LaTeX::schl\"agt"
15090 +"::LaTeX::schw\"abischen"
15091 +"::LaTeX::schw\"acher"
15092 +"::LaTeX::schw\"armt"
15093 +"::LaTeX::selbst\"andig"
15094 +"::LaTeX::selbstverst\"andlich"
15095 +"::LaTeX::sorgf\"altig"
15096 +"::LaTeX::souver\"an"
15098 +"::LaTeX::sp\"aten"
15099 +"::LaTeX::sp\"ater"
15100 +"::LaTeX::sp\"atere"
15101 +"::LaTeX::sp\"ateren"
15102 +"::LaTeX::sp\"atestens"
15103 +"::LaTeX::sp\"urbar"
15104 +"::LaTeX::sp\"uren"
15105 +"::LaTeX::sp\"urt"
15106 +"::LaTeX::spektakul\"are"
15107 +"::LaTeX::spektakul\"aren"
15108 +"::LaTeX::st\"adtische"
15109 +"::LaTeX::st\"adtischen"
15110 +"::LaTeX::st\"andig"
15111 +"::LaTeX::st\"andige"
15112 +"::LaTeX::st\"andigen"
15113 +"::LaTeX::st\"arken"
15114 +"::LaTeX::st\"arker"
15115 +"::LaTeX::st\"arkere"
15116 +"::LaTeX::st\"arkeren"
15117 +"::LaTeX::st\"arkste"
15118 +"::LaTeX::st\"arksten"
15119 +"::LaTeX::st\"o"st"
15120 +"::LaTeX::st\"oren"
15121 +"::LaTeX::st\"ort"
15122 +"::LaTeX::st\"unde"
15123 +"::LaTeX::st\"unden"
15124 +"::LaTeX::st\"urzen"
15125 +"::LaTeX::st\"urzt"
15126 +"::LaTeX::st\"urzte"
15127 +"::LaTeX::st\"utzen"
15128 +"::LaTeX::st\"utzt"
15129 +"::LaTeX::t\"aglich"
15130 +"::LaTeX::t\"agliche"
15131 +"::LaTeX::t\"aglichen"
15132 +"::LaTeX::t\"atig"
15133 +"::LaTeX::t\"atigen"
15134 +"::LaTeX::t\"odlich"
15135 +"::LaTeX::t\"odliche"
15136 +"::LaTeX::t\"odlichen"
15137 +"::LaTeX::t\"oten"
15138 +"::LaTeX::t\"urkische"
15139 +"::LaTeX::t\"urkischen"
15140 +"::LaTeX::t\"urkischer"
15141 +"::LaTeX::tags\"uber"
15142 +"::LaTeX::tats\"achlich"
15143 +"::LaTeX::tats\"achliche"
15144 +"::LaTeX::tats\"achlichen"
15145 +"::LaTeX::tr\"agt"
15146 +"::LaTeX::tr\"aumen"
15147 +"::LaTeX::tr\"aumt"
15148 +"::LaTeX::unabh\"angig"
15149 +"::LaTeX::unabh\"angige"
15150 +"::LaTeX::unabh\"angigen"
15151 +"::LaTeX::unbegr\"undet"
15152 +"::LaTeX::unertr\"aglich"
15153 +"::LaTeX::ungef\"ahr"
15154 +"::LaTeX::ungekl\"art"
15155 +"::LaTeX::ungew\"ohnlich"
15156 +"::LaTeX::ungew\"ohnliche"
15157 +"::LaTeX::ungew\"ohnlichen"
15158 +"::LaTeX::unl\"angst"
15159 +"::LaTeX::unm\"oglich"
15160 +"::LaTeX::unn\"otig"
15161 +"::LaTeX::unterh\"alt"
15162 +"::LaTeX::unterst\"utzen"
15163 +"::LaTeX::unterst\"utzt"
15164 +"::LaTeX::unterst\"utzte"
15165 +"::LaTeX::unterst\"utzten"
15166 +"::LaTeX::unver\"andert"
15167 +"::LaTeX::unverst\"andlich"
15168 +"::LaTeX::unverz\"uglich"
15169 +"::LaTeX::unzul\"assig"
15170 +"::LaTeX::urspr\"unglich"
15171 +"::LaTeX::urspr\"ungliche"
15172 +"::LaTeX::urspr\"unglichen"
15173 +"::LaTeX::v\"ollig"
15174 +"::LaTeX::ver\"andern"
15175 +"::LaTeX::ver\"andert"
15176 +"::LaTeX::ver\"anderte"
15177 +"::LaTeX::ver\"anderten"
15178 +"::LaTeX::ver\"argert"
15179 +"::LaTeX::ver\"offentlichen"
15180 +"::LaTeX::ver\"offentlicht"
15181 +"::LaTeX::ver\"offentlichte"
15182 +"::LaTeX::ver\"offentlichten"
15183 +"::LaTeX::ver\"ubt"
15184 +"::LaTeX::verd\"achtigt"
15185 +"::LaTeX::verdr\"angen"
15186 +"::LaTeX::verdr\"angt"
15187 +"::LaTeX::verf\"ugen"
15188 +"::LaTeX::verf\"ugt"
15189 +"::LaTeX::verf\"ugte"
15190 +"::LaTeX::vergr\"o"sert"
15191 +"::LaTeX::verh\"alt"
15192 +"::LaTeX::verh\"angt"
15193 +"::LaTeX::verk\"unden"
15194 +"::LaTeX::verk\"undet"
15195 +"::LaTeX::verk\"undete"
15196 +"::LaTeX::verk\"urzt"
15197 +"::LaTeX::verkn\"upft"
15198 +"::LaTeX::verl\"a"st"
15199 +"::LaTeX::verl\"angern"
15200 +"::LaTeX::verl\"angert"
15201 +"::LaTeX::verl\"auft"
15202 +"::LaTeX::vern\"unftig"
15203 +"::LaTeX::vern\"unftige"
15204 +"::LaTeX::vernachl\"assigt"
15205 +"::LaTeX::verr\"at"
15206 +"::LaTeX::verr\"uckt"
15207 +"::LaTeX::vers\"aumt"
15208 +"::LaTeX::versch\"arft"
15209 +"::LaTeX::verst\"andigt"
15210 +"::LaTeX::verst\"andlich"
15211 +"::LaTeX::verst\"arken"
15212 +"::LaTeX::verst\"arkt"
15213 +"::LaTeX::verst\"arkte"
15214 +"::LaTeX::verst\"arkten"
15215 +"::LaTeX::verz\"ogert"
15216 +"::LaTeX::vielf\"altigen"
15217 +"::LaTeX::vollst\"andig"
15218 +"::LaTeX::vollst\"andige"
15219 +"::LaTeX::vor\"ubergehend"
15220 +"::LaTeX::vorgef\"uhrt"
15221 +"::LaTeX::vorl\"aufig"
15222 +"::LaTeX::vorl\"aufigen"
15223 +"::LaTeX::w\"achst"
15224 +"::LaTeX::w\"ahlen"
15225 +"::LaTeX::w\"ahlt"
15226 +"::LaTeX::w\"ahlte"
15227 +"::LaTeX::w\"ahrend"
15229 +"::LaTeX::w\"aren"
15230 +"::LaTeX::w\"ochentlich"
15231 +"::LaTeX::w\"ortlich"
15232 +"::LaTeX::w\"unsche"
15233 +"::LaTeX::w\"unschen"
15234 +"::LaTeX::w\"unscht"
15235 +"::LaTeX::w\"urde"
15236 +"::LaTeX::w\"urden"
15237 +"::LaTeX::w\"urdigte"
15238 +"::LaTeX::wof\"ur"
15239 +"::LaTeX::wom\"oglich"
15240 +"::LaTeX::z\"ahlen"
15241 +"::LaTeX::z\"ahlt"
15242 +"::LaTeX::z\"ahlte"
15243 +"::LaTeX::z\"ahlten"
15244 +"::LaTeX::z\"ugig"
15245 +"::LaTeX::zeitgen\"ossischen"
15246 +"::LaTeX::zerst\"oren"
15247 +"::LaTeX::zerst\"ort"
15248 +"::LaTeX::zerst\"orte"
15249 +"::LaTeX::zerst\"orten"
15250 +"::LaTeX::zuf\"allig"
15251 +"::LaTeX::zug\"anglich"
15252 +"::LaTeX::zuk\"unftig"
15253 +"::LaTeX::zuk\"unftige"
15254 +"::LaTeX::zuk\"unftigen"
15255 +"::LaTeX::zul\"assig"
15256 +"::LaTeX::zun\"achst"
15257 +"::LaTeX::zur\"uck"
15258 +"::LaTeX::zur\"uckgegangen"
15259 +"::LaTeX::zur\"uckgekehrt"
15260 +"::LaTeX::zur\"uckgenommen"
15261 +"::LaTeX::zur\"uckgetreten"
15262 +"::LaTeX::zur\"uckgewiesen"
15263 +"::LaTeX::zur\"uckgezogen"
15264 +"::LaTeX::zur\"uckgreifen"
15265 +"::LaTeX::zur\"uckhaltend"
15266 +"::LaTeX::zur\"uckkehren"
15267 +"::LaTeX::zur\"uckliegenden"
15268 +"::LaTeX::zur\"uckziehen"
15269 +"::LaTeX::zur\"uckzuf\"uhren"
15270 +"::LaTeX::zur\"uckzukehren"
15271 +"::LaTeX::zus\"atzlich"
15272 +"::LaTeX::zus\"atzliche"
15273 +"::LaTeX::zus\"atzlichen"
15274 +"::LaTeX::zus\"atzlicher"
15275 +"::LaTeX::zust\"andig"
15276 +"::LaTeX::zust\"andige"
15277 +"::LaTeX::zust\"andigen"
15278 +"::LaTeX::zw\"olf"
15279 +"::LaTeX::zwangsl\"aufig"
15280 +"::LaTeX::zweitgr\"o"ste"
15281 diff --quilt /dev/null new/Dictionary/dicts/german_top.dict
15283 +++ new/Dictionary/dicts/german_top.dict
15301 +"Abgeordnetenhaus"
15333 +"Abteilungsleiter"
15362 +"Aktiengesellschaft"
15539 +"Arbeiterwohlfahrt"
15545 +"Arbeitsbedingungen"
15546 +"Arbeitsgemeinschaft"
15552 +"Arbeitslosenquote"
15553 +"Arbeitslosigkeit"
15658 +"Auseinandersetzung"
15659 +"Auseinandersetzungen"
15675 +"Ausländerfeindlichkeit"
15720 +"Außenministerium"
15735 +"Baden-Württemberg"
15878 +"Berichterstattung"
15890 +"Berücksichtigung"
15939 +"Betriebsergebnis"
15969 +"Bezirksausschuß"
16023 +"Bosnien-Herzegowina"
16078 +"Bundesanwaltschaft"
16079 +"Bundesaußenminister"
16083 +"Bundesfinanzminister"
16085 +"Bundesgerichtshof"
16086 +"Bundesinnenminister"
16092 +"Bundespräsident"
16093 +"Bundespräsidenten"
16101 +"Bundestagsabgeordnete"
16105 +"Bundesverfassungsgericht"
16106 +"Bundesverfassungsgerichts"
16133 +"Bürgerinitiative"
16137 +"Bürgermeisterin"
16141 +"Bürgerversammlung"
16176 +"Christdemokraten"
16292 +"Dienstleistungen"
16404 +"Eigentumswohnungen"
16447 +"Einschränkungen"
16521 +"Entwicklungshilfe"
16522 +"Entwicklungsländer"
16523 +"Entwicklungsländern"
16574 +"Ermittlungsverfahren"
16624 +"Europameisterschaft"
16731 +"Finanzministerium"
16753 +"Fluggesellschaft"
16797 +"Fraktionsvorsitzende"
16855 +"Fundamentalisten"
16970 +"Generalsekretär"
17011 +"Geschäftsführer"
17012 +"Geschäftsführung"
17014 +"Geschäftsleitung"
17017 +"Geschäftsstelle"
17032 +"Gesprächspartner"
17041 +"Gesundheitswesen"
17069 +"Glaubwürdigkeit"
17071 +"Gleichberechtigung"
17218 +"Hauptversammlung"
17255 +"Herausforderungen"
17281 +"Hilfsorganisationen"
17399 +"Innenministerium"
17400 +"Innenministeriums"
17474 +"Jahreshauptversammlung"
17478 +"Jahresüberschuß"
17484 +"Jahrhundertwende"
17486 +"Jahrtausendwende"
17586 +"Kapitalerhöhung"
17693 +"Koalitionspartner"
17714 +"Kommunalpolitiker"
17763 +"Konzentrationslager"
17788 +"Krankenversicherung"
17835 +"Kultusministerium"
17873 +"Körperverletzung"
17901 +"Landeshauptstadt"
17947 +"Legislaturperiode"
17966 +"Leistungsfähigkeit"
18143 +"Mecklenburg-Vorpommern"
18175 +"Menschenrechtsverletzungen"
18224 +"Ministerpräsident"
18225 +"Ministerpräsidenten"
18236 +"Mitarbeiterinnen"
18242 +"Mitgliederversammlung"
18244 +"Mitgliedsstaaten"
18329 +"Mönchengladbach"
18357 +"Nachrichtenagentur"
18376 +"Nationalmannschaft"
18378 +"Nationalsozialismus"
18379 +"Nationalsozialisten"
18437 +"Nordrhein-Westfalen"
18462 +"Oberbürgermeister"
18464 +"Oberlandesgericht"
18465 +"Oberstaatsanwalt"
18498 +"Oppositionsparteien"
18556 +"Parlamentswahlen"
18591 +"Persönlichkeiten"
18602 +"Pflegeversicherung"
18644 +"Podiumsdiskussion"
18683 +"Pressemitteilung"
18758 +"Quadratkilometer"
18776 +"Rahmenbedingungen"
18831 +"Regierungskoalition"
18832 +"Regierungspartei"
18833 +"Regierungspräsidium"
18834 +"Regierungssprecher"
18835 +"Regierungstruppen"
18873 +"Rentenversicherung"
18988 +"SPD-Fraktionschef"
19001 +"Sachverständigen"
19054 +"Schleswig-Holstein"
19081 +"Schriftstellerin"
19159 +"Selbstbewußtsein"
19162 +"Selbstverwaltung"
19163 +"Selbständigkeit"
19191 +"Sicherheitskräfte"
19263 +"Sozialdemokraten"
19265 +"Sozialhilfeempfänger"
19334 +"Staatsanwaltschaft"
19336 +"Staatsbürgerschaft"
19339 +"Staatspräsident"
19340 +"Staatspräsidenten"
19356 +"Stadtverordneten"
19357 +"Stadtverordnetenversammlung"
19404 +"Steuerhinterziehung"
19536 +"Tarifverhandlungen"
19569 +"Telekommunikation"
19621 +"Titelverteidiger"
19707 +"US-amerikanischen"
19731 +"Umstrukturierung"
19738 +"Umweltministerium"
19783 +"Untersuchungsausschuß"
19784 +"Untersuchungshaft"
19809 +"Verantwortlichen"
19844 +"Verfassungsgericht"
19845 +"Verfassungsschutz"
19862 +"Verkehrsberuhigung"
19863 +"Verkehrsminister"
19919 +"Verteidigungsminister"
19920 +"Verteidigungsministerium"
19933 +"Verwaltungsgericht"
19944 +"Veröffentlichung"
20014 +"Vorstandsmitglied"
20015 +"Vorstandsvorsitzende"
20016 +"Vorstandsvorsitzender"
20040 +"Waffenstillstand"
20056 +"Wahrscheinlichkeit"
20093 +"Weiterentwicklung"
20107 +"Weltmeisterschaft"
20108 +"Weltmeisterschaften"
20140 +"Wettbewerbsfähigkeit"
20152 +"Wiederherstellung"
20154 +"Wiedervereinigung"
20184 +"Wirtschaftsminister"
20185 +"Wirtschaftsministerium"
20186 +"Wirtschaftspolitik"
20187 +"Wirtschaftswachstum"
20191 +"Wissenschaftlern"
20593 +"aufrechterhalten"
20607 +"auseinandersetzen"
20674 +"außerordentlich"
20675 +"außerordentlichen"
20676 +"baden-württembergische"
20677 +"baden-württembergischen"
20863 +"berücksichtigen"
21206 +"deutschsprachigen"
21299 +"durchschnittlich"
21300 +"durchschnittliche"
21301 +"durchschnittlichen"
22139 +"gesellschaftliche"
22140 +"gesellschaftlichen"
22185 +"gesundheitlichen"
22795 +"landwirtschaftlichen"
23000 +"mittelalterlichen"
23111 +"niederländische"
23112 +"niederländischen"
23113 +"niedersächsische"
23114 +"niedersächsischen"
23201 +"osteuropäischen"
23204 +"palästinensische"
23205 +"palästinensischen"
23208 +"parlamentarische"
23209 +"parlamentarischen"
23506 +"schätzungsweise"
23540 +"selbstverständlich"
23630 +"sozialdemokratische"
23631 +"sozialdemokratischen"
23723 +"stellvertretende"
23724 +"stellvertretenden"
23725 +"stellvertretender"
23788 +"südafrikanischen"
23869 +"tschetschenischen"
23965 +"unterschiedliche"
23966 +"unterschiedlichen"
23967 +"unterschiedlicher"
23983 +"unwahrscheinlich"
24049 +"verfassungswidrig"
24250 +"veröffentlichen"
24252 +"veröffentlichte"
24253 +"veröffentlichten"
24483 +"wirtschaftlichen"
24484 +"wirtschaftlicher"
24487 +"wissenschaftlich"
24488 +"wissenschaftliche"
24489 +"wissenschaftlichen"
24490 +"wissenschaftlicher"
24549 +"zeitgenössischen"
24611 +"zurückliegenden"
24613 +"zurückzuführen"
24616 +"zusammenarbeiten"
24618 +"zusammengeschlossen"
24619 +"zusammengestellt"
24679 +"Öffentlichkeitsarbeit"
24691 +"Ãœbereinstimmung"
24739 +"öffentlich-rechtlichen"
24755 +"österreichische"
24756 +"österreichischen"
24814 +"@@@mfg:Mit freundlichen Grüßen,", 1
24815 +"@@@sgdh:Sehr geehrte Damen und Herren,", 1
24817 diff --quilt /dev/null new/Dictionary/dicts/html.dict
24819 +++ new/Dictionary/dicts/html.dict
24821 +"@@@::SGML HTML::env:<@env@>@@@<@env@>", 1
24822 diff --quilt /dev/null new/Dictionary/dicts/latex.dict
24824 +++ new/Dictionary/dicts/latex.dict
24826 +##Word completion for LaTeX
24827 +"::LaTeX::\\Delta", 1000
24828 +"::LaTeX::\\Downarrow", 1000
24829 +"::LaTeX::\\Gamma", 1000
24830 +"::LaTeX::\\Im", 1000
24831 +"::LaTeX::\\Lambda", 1000
24832 +"::LaTeX::\\Leftarrow", 1000
24833 +"::LaTeX::\\Leftrightarrow", 1000
24834 +"::LaTeX::\\Omega", 1000
24835 +"::LaTeX::\\Phi", 1000
24836 +"::LaTeX::\\Pi", 1000
24837 +"::LaTeX::\\Pr", 1000
24838 +"::LaTeX::\\Psi", 1000
24839 +"::LaTeX::\\Re", 1000
24840 +"::LaTeX::\\Rightarrow", 1000
24841 +"::LaTeX::\\Sigma", 1000
24842 +"::LaTeX::\\Theta", 1000
24843 +"::LaTeX::\\Uparrow", 1000
24844 +"::LaTeX::\\Updownarrow", 1000
24845 +"::LaTeX::\\Upsilon", 1000
24846 +"::LaTeX::\\Xi", 1000
24847 +"::LaTeX::abstract", 1000
24848 +"::LaTeX::\\acute ", 1000
24849 +"::LaTeX::\\address", 1000
24850 +"::LaTeX::\\aleph", 1000
24851 +"::LaTeX::\\alpha", 1000
24852 +"::LaTeX::\\amalg", 1000
24853 +"::LaTeX::\\angle", 1000
24854 +"::LaTeX::\\approx", 1000
24855 +"::LaTeX::\\arccos", 1000
24856 +"::LaTeX::\\arcsin", 1000
24857 +"::LaTeX::\\arctan", 1000
24858 +"::LaTeX::\\arg", 1000
24859 +"::LaTeX::article", 1000
24860 +"::LaTeX::\\ast", 1000
24861 +"::LaTeX::\\asymp", 1000
24862 +"::LaTeX::\\author", 1000
24863 +"::LaTeX::\\backslash", 1000
24864 +"::LaTeX::\\bar", 1000
24865 +"::LaTeX::\\begin", 1000
24866 +"::LaTeX::\\beta", 1000
24867 +"::LaTeX::\\bibitem", 1000
24868 +"::LaTeX::\\bigcap", 1000
24869 +"::LaTeX::\\bigcirc", 1000
24870 +"::LaTeX::\\bigcup", 1000
24871 +"::LaTeX::\\bigodot ", 1000
24872 +"::LaTeX::\\bigoplus", 1000
24873 +"::LaTeX::\\bigotimes", 1000
24874 +"::LaTeX::\\bigsqcup", 1000
24875 +"::LaTeX::\\bigtriangledown", 1000
24876 +"::LaTeX::\\bigtriangleup", 1000
24877 +"::LaTeX::\\biguplus", 1000
24878 +"::LaTeX::\\bigvee ", 1000
24879 +"::LaTeX::\\bigwedge ", 1000
24880 +"::LaTeX::book", 1000
24881 +"::LaTeX::\\bot", 1000
24882 +"::LaTeX::\\breve", 1000
24883 +"::LaTeX::\\bullet", 1000
24884 +"::LaTeX::\\cap", 1000
24885 +"::LaTeX::\\caption", 1000
24886 +"::LaTeX::\\cdot", 1000
24887 +"::LaTeX::\\center", 1000
24888 +"::LaTeX::\\centering", 1000
24889 +"::LaTeX::\\chapter", 1000
24890 +"::LaTeX::\\check", 1000
24891 +"::LaTeX::\\choose", 1000
24892 +"::LaTeX::\\circ", 1000
24893 +"::LaTeX::\\cite", 1000
24894 +"::LaTeX::\\clubsuit", 1000
24895 +"::LaTeX::\\coprod", 1000
24896 +"::LaTeX::\\cos", 1000
24897 +"::LaTeX::\\cosh", 1000
24898 +"::LaTeX::\\cot", 1000
24899 +"::LaTeX::\\coth", 1000
24900 +"::LaTeX::\\csc", 1000
24901 +"::LaTeX::\\cup", 1000
24902 +"::LaTeX::\\dagger", 1000
24903 +"::LaTeX::\\dashv", 1000
24904 +"::LaTeX::\\date", 1000
24905 +"::LaTeX::\\ddagger", 1000
24906 +"::LaTeX::\\ddot", 1000
24907 +"::LaTeX::\\deg", 1000
24908 +"::LaTeX::\\delta", 1000
24909 +"::LaTeX::description", 1000
24910 +"::LaTeX::\\det", 1000
24911 +"::LaTeX::\\diamond", 1000
24912 +"::LaTeX::\\diamondsuit", 1000
24913 +"::LaTeX::\\dim", 1000
24914 +"::LaTeX::\\displaymath", 1000
24915 +"::LaTeX::\\div", 1000
24916 +"::LaTeX::document", 1000
24917 +"::LaTeX::\\documentclass", 1000
24918 +"::LaTeX::\\documentstyle", 1000
24919 +"::LaTeX::\\dot", 1000
24920 +"::LaTeX::\\dots", 1000
24921 +"::LaTeX::\\downarrow", 1000
24922 +"::LaTeX::\\downarrow", 1000
24923 +"::LaTeX::\\downarrow", 1000
24924 +"::LaTeX::\\ell", 1000
24925 +"::LaTeX::\\emptyset", 1000
24926 +"::LaTeX::\\end", 1000
24927 +"::LaTeX::enumerate", 1000
24928 +"::LaTeX::eqnarray", 1000
24929 +"::LaTeX::equation", 1000
24930 +"::LaTeX::\\equiv", 1000
24931 +"::LaTeX::\\eta", 1000
24932 +"::LaTeX::\\exists", 1000
24933 +"::LaTeX::\\exp", 1000
24934 +"::LaTeX::figure", 1000
24935 +"::LaTeX::\\flat", 1000
24936 +"::LaTeX::\\footnote", 1000
24937 +"::LaTeX::\\forall", 1000
24938 +"::LaTeX::\\frac", 1000
24939 +"::LaTeX::\\frown", 1000
24940 +"::LaTeX::\\gamma", 1000
24941 +"::LaTeX::\\gcd", 1000
24942 +"::LaTeX::\\geq", 1000
24943 +"::LaTeX::\\gg", 1000
24944 +"::LaTeX::\\grave", 1000
24945 +"::LaTeX::\\hat", 1000
24946 +"::LaTeX::\\hbar", 1000
24947 +"::LaTeX::\\hbar", 1000
24948 +"::LaTeX::\\heartsuit", 1000
24949 +"::LaTeX::\\hom", 1000
24950 +"::LaTeX::\\imath", 1000
24951 +"::LaTeX::\\in", 1000
24952 +"::LaTeX::\\include", 1000
24953 +"::LaTeX::\\inf", 1000
24954 +"::LaTeX::\\infty", 1000
24955 +"::LaTeX::\\int", 1000
24956 +"::LaTeX::\\iota", 1000
24957 +"::LaTeX::\\item", 1000
24958 +"::LaTeX::itemize", 1000
24959 +"::LaTeX::\\jmath", 1000
24960 +"::LaTeX::\\kappa", 1000
24961 +"::LaTeX::\\ker", 1000
24962 +"::LaTeX::\\ki", 1000
24963 +"::LaTeX::\\label", 1000
24964 +"::LaTeX::\\langle", 1000
24965 +"::LaTeX::\\lceil", 1000
24966 +"::LaTeX::\\leftarrow", 1000
24967 +"::LaTeX::\\leftharpoondown", 1000
24968 +"::LaTeX::\\leftharpoonup", 1000
24969 +"::LaTeX::\\leftrightarrow", 1000
24970 +"::LaTeX::\\leq", 1000
24971 +"::LaTeX::\\letter", 1000
24972 +"::LaTeX::\\lfloor", 1000
24973 +"::LaTeX::\\lg", 1000
24974 +"::LaTeX::\\lim", 1000
24975 +"::LaTeX::\\liminf", 1000
24976 +"::LaTeX::\\limsup", 1000
24977 +"::LaTeX::\\ll", 1000
24978 +"::LaTeX::\\ln", 1000
24979 +"::LaTeX::\\log", 1000
24980 +"::LaTeX::\\maketitle", 1000
24981 +"::LaTeX::\\mapsto", 1000
24982 +"::LaTeX::\\math", 1000
24983 +"::LaTeX::\\max", 1000
24984 +"::LaTeX::\\mbox", 1000
24985 +"::LaTeX::\\mid", 1000
24986 +"::LaTeX::\\min", 1000
24987 +"::LaTeX::\\minipage", 1000
24988 +"::LaTeX::\\mp", 1000
24989 +"::LaTeX::\\mu", 1000
24990 +"::LaTeX::\\nabla", 1000
24991 +"::LaTeX::\\natural", 1000
24992 +"::LaTeX::\\nearrow", 1000
24993 +"::LaTeX::\\neg", 1000
24994 +"::LaTeX::\\newcommand", 1000
24995 +"::LaTeX::\\ni", 1000
24996 +"::LaTeX::\\not", 1000
24997 +"::LaTeX::\\nu", 1000
24998 +"::LaTeX::\\nwarrow", 1000
24999 +"::LaTeX::\\odot", 1000
25000 +"::LaTeX::\\oint", 1000
25001 +"::LaTeX::\\omega", 1000
25002 +"::LaTeX::\\ominus", 1000
25003 +"::LaTeX::\\onecolumn", 1000
25004 +"::LaTeX::\\oplus", 1000
25005 +"::LaTeX::\\oslash", 1000
25006 +"::LaTeX::\\otimes", 1000
25007 +"::LaTeX::\\overbrace", 1000
25008 +"::LaTeX::\\overleftarrow", 1000
25009 +"::LaTeX::\\overline", 1000
25010 +"::LaTeX::\\overrightarrow", 1000
25011 +"::LaTeX::\\parallel", 1000
25012 +"::LaTeX::\\partial", 1000
25013 +"::LaTeX::\\perp", 1000
25014 +"::LaTeX::\\phi", 1000
25015 +"::LaTeX::\\pi", 1000
25016 +"::LaTeX::\\pm", 1000
25017 +"::LaTeX::\\prec", 1000
25018 +"::LaTeX::\\preceq", 1000
25019 +"::LaTeX::\\prime", 1000
25020 +"::LaTeX::\\prod ", 1000
25021 +"::LaTeX::\\propto", 1000
25022 +"::LaTeX::\\psi", 1000
25023 +"::LaTeX::\\qquad", 1000
25024 +"::LaTeX::\\quad", 1000
25025 +"::LaTeX::\\rangle", 1000
25026 +"::LaTeX::\\rceil", 1000
25027 +"::LaTeX::\\ref", 1000
25028 +"::LaTeX::\\renewcommand", 1000
25029 +"::LaTeX::report", 1000
25030 +"::LaTeX::\\rfloor", 1000
25031 +"::LaTeX::\\rho", 1000
25032 +"::LaTeX::\\rightarrow", 1000
25033 +"::LaTeX::\\rightharpoondown", 1000
25034 +"::LaTeX::\\rightharpoonup", 1000
25035 +"::LaTeX::\\searrow", 1000
25036 +"::LaTeX::\\sec", 1000
25037 +"::LaTeX::\\section", 1000
25038 +"::LaTeX::\\setminus", 1000
25039 +"::LaTeX::\\sharp", 1000
25040 +"::LaTeX::\\sigma", 1000
25041 +"::LaTeX::\\sim", 1000
25042 +"::LaTeX::\\simeq", 1000
25043 +"::LaTeX::\\sin", 1000
25044 +"::LaTeX::\\sinh", 1000
25045 +"::LaTeX::\\smallint", 1000
25046 +"::LaTeX::\\smile", 1000
25047 +"::LaTeX::\\spadesuit", 1000
25048 +"::LaTeX::\\sqcap", 1000
25049 +"::LaTeX::\\sqcup", 1000
25050 +"::LaTeX::\\sqsubseteq", 1000
25051 +"::LaTeX::\\sqsupseteq", 1000
25052 +"::LaTeX::\\star", 1000
25053 +"::LaTeX::\\subsection", 1000
25054 +"::LaTeX::\\subset", 1000
25055 +"::LaTeX::\\subseteq", 1000
25056 +"::LaTeX::\\succ", 1000
25057 +"::LaTeX::\\succeq", 1000
25058 +"::LaTeX::\\sum", 1000
25059 +"::LaTeX::\\sup", 1000
25060 +"::LaTeX::\\supset", 1000
25061 +"::LaTeX::\\supseteq", 1000
25062 +"::LaTeX::\\surd", 1000
25063 +"::LaTeX::\\swarrow", 1000
25064 +"::LaTeX::\\table", 1000
25065 +"::LaTeX::\\tabular", 1000
25066 +"::LaTeX::\\tan", 1000
25067 +"::LaTeX::\\tanh", 1000
25068 +"::LaTeX::\\tau", 1000
25069 +"::LaTeX::\\text", 1000
25070 +"::LaTeX::\\thebibliography", 1000
25071 +"::LaTeX::\\theta", 1000
25072 +"::LaTeX::\\tilde", 1000
25073 +"::LaTeX::\\times", 1000
25074 +"::LaTeX::\\today", 1000
25075 +"::LaTeX::\\top", 1000
25076 +"::LaTeX::\\triangle", 1000
25077 +"::LaTeX::\\triangleleft ", 1000
25078 +"::LaTeX::\\triangleright", 1000
25079 +"::LaTeX::\\twocolumn", 1000
25080 +"::LaTeX::\\underbrace", 1000
25081 +"::LaTeX::\\underline", 1000
25082 +"::LaTeX::\\uparrow", 1000
25083 +"::LaTeX::\\uparrow", 1000
25084 +"::LaTeX::\\uparrow", 1000
25085 +"::LaTeX::\\updownarrow", 1000
25086 +"::LaTeX::\\updownarrow", 1000
25087 +"::LaTeX::\\updownarrow", 1000
25088 +"::LaTeX::\\uplus", 1000
25089 +"::LaTeX::\\upsilon", 1000
25090 +"::LaTeX::\\usepackage", 1000
25091 +"::LaTeX::\\varepsilon", 1000
25092 +"::LaTeX::\\varphi", 1000
25093 +"::LaTeX::\\varpi", 1000
25094 +"::LaTeX::\\varsigma", 1000
25095 +"::LaTeX::\\vartheta", 1000
25096 +"::LaTeX::\\vdash", 1000
25097 +"::LaTeX::\\vec", 1000
25098 +"::LaTeX::\\vee", 1000
25099 +"::LaTeX::\\vspace", 1000
25100 +"::LaTeX::\\wedge", 1000
25101 +"::LaTeX::\\widehat", 1000
25102 +"::LaTeX::\\widetilde", 1000
25103 +"::LaTeX::\\wp", 1000
25104 +"::LaTeX::\\wr", 1000
25105 +"::LaTeX::\\zeta", 1000
25107 +##Expansions for LaTeX
25108 +"@@@::LaTeX::it:\\begin{itemize}
25113 +"@@@::LaTeX::en:\\begin{enumerate}
25118 +"@@@::LaTeX::de:\\begin{description}
25120 +\\end{description}
25123 +"@@@::LaTeX::b:\\begin{@-env@}
25128 +"@@@::LaTeX::bf:{\\bf @@@}", 1
25129 +"@@@::LaTeX::em:{\\em @@@}", 1
25130 diff --quilt /dev/null new/Dictionary/dict_todo.txt
25132 +++ new/Dictionary/dict_todo.txt
25134 +TODO list for nedit with dictionary enhancement
25136 +- As soon as arrays (a[0] .. a[1]) of strings are available,
25137 + update the dict_complete macro command (macro.c) so that this
25138 + type is returned. Also updata macro function complete_word so
25139 + that all possible completions (nearest, global and language
25140 + specific) are put into one array, duplicates are removed and
25141 + (optional) everything is sorted by weight
25143 +- Somehow support comfortable editing of the dictionary to allow
25144 + changes to completions and templates. Also allow to automatically
25145 + scan through the dictionary to remove low weight entries, short
25148 +- Go away from one single,big dictionary file to a group of files
25149 + called plain.dict, cpp.dict etc. that are located somewhere like
25150 + .nedit/dictionary/ or .neditutil/dictionary/
25152 +- Find clever strategies to update the dictionary by scanning all
25153 + open files from time to time (however, keep things still simple
25156 +- Documentation! Without documentation, the user will not accept the
25157 + changes. Write documentation for the new built-in macro commands,
25158 + for the macro definitions, for the dictionary file format.
25160 +- What about identing of template expansions? Do we have to change the
25161 + routine that parses the text that should be inserted or do can this
25162 + be done with the Smart Indenting capabilities of nedit itself.
25165 +Christian Merkwirth, March 2000
25167 diff --quilt /dev/null new/Dictionary/dotnedit
25169 +++ new/Dictionary/dotnedit
25171 +nedit.macroCommands: \
25172 + Dictionary>Complete Word:Ctrl+Space::: {\n\
25173 + complete_word()\n\
25175 + Dictionary>Revert to original:Ctrl+Return::: {\n\
25176 + revert_to_keystring()\n\
25178 + Dictionary>Expand Template:Ctrl+Bracketright::: {\n\
25181 + Dictionary>Define Completion:Ctrl+Bracketleft::R: {\n\
25182 + insert_selection()\n\
25184 + Dictionary>Define Template:::R: {\n\
25185 + define_expansion()\n\
25187 + Dictionary>Scan Text:::: {\n\
25190 + Dictionary>Next Field:Ctrl+Backslash::: {\n\
25191 + goto_next_field()\n\
25193 + Dictionary>Save dictionary:::: {\n\
25196 + Dictionary>Append file to dictionary:::: {\n\
25197 + filename = string_dialog("Please enter dictionary filename" , "OK" , "Dismiss")\n\
25198 + dict_append(filename)\n\
25200 +nedit.highlightPatterns: \
25201 + Dictionary:20:0{\n\
25202 + Completion:"""[^@]":""""::String::\n\
25203 + Template:"""@@@":""""::Text Key::\n\
25204 + Namespace1:":[\\w]+::":::Preprocessor:Completion:\n\
25205 + Namespace2:"::[\\w]+::":::Preprocessor:Template:\n\
25206 + Comment:"#":"$"::Comment::\n\
25207 + Weight:"[0-9]+":::Identifier::\n\
25208 + Field:"@[@\\w\\>\\<\\.\\\\/]+@":::Text Arg:Template:\n\
25210 +nedit.languageModes: \
25211 + Dictionary:.dict::::::".,/\\`'!|@#%^&*()-=+{}[]"":;<>?~"\n
25212 diff --quilt /dev/null new/Dictionary/readme.html
25214 +++ new/Dictionary/readme.html
25217 +<TITLE>Nedit Dictionary</TITLE></HEAD>
25218 +<BODY bgcolor="#FFFFFF" text="#000000" <font face="arial, helvetica">
25220 +<H1>Dictionary based word completion and shortcut expansion for nedit 5.1.1</H1>
25224 +<LI><A HREF="#INTRO">Intro</A></LI>
25225 +<LI><A HREF="#INSTALL">Download and Installation</A></LI>
25226 +<LI><A HREF="#COMPLETION">Word completion</A></LI>
25227 +<LI><A HREF="#COMPLETION2">Stepping through the dictionary (<B>NEW</B>)</A></LI>
25228 +<LI><A HREF="#EXPANSION">Template (Shortcut) expansion</A></LI>
25229 +<LI><A HREF="#EXPANSION2">Auto fill fields in expansions</A></LI>
25230 +<LI><A HREF="#FORMAT">The dictionary file</A></LI>
25231 +<LI><A HREF="#CREDITS">Credits</A></LI>
25236 +<H2><A NAME="INTRO">Intro</A></H2>
25238 +<P>Nedit is my favorite editor for X-Windows. Though equipped with a lot of
25239 +useful features, it's still lean and fast, especially compared to the good old Emacs.
25240 +Nedit can be obtainded for free from <A HREF="http://www.nedit.org">
25241 +this website</A>.</P>
25243 +<P>I wrote an extension to nedit version 5.1.1, giving nedit the ability to quickly locate
25244 +strings just by giving the beginning characters inside a personal dictionary which is loaded
25245 +from the file <tt>.neditdict</tt>. This feature can be used at least for two tasks which might
25246 +come in very useful if you are a programmer or the like and tired of typing the same long words
25247 +(e.g. names of functions, library calls, variables etc.) again and again:
25249 +<LI><A HREF="#COMPLETION">Word completion</A></LI>
25250 +<LI><A HREF="#EXPANSION">Template (Shortcut) expansion</A></LI>
25254 +<P>The contributed patch is based on both a mixture of C code, which is compiled into the
25255 +nedit binary, and some code written in the nedit macro language. The C code part just adds
25256 +a couple of <A HREF="#COMMANDS">new macro commands</A> to nedit's built-in macro language,
25257 +which are used in some nice macros that are usually bound to accelerator keys (like Ctrl-Space
25258 +or the like) to allow for fast access.</P>
25260 +<P>The reason to apply only small changes to the nedit source code and implement a large part
25261 +of the dictionary stuff in the macro language was to allow the user to customize or improve
25262 +things if needed.</P>
25264 +<H2><A NAME="COMPLETION">Word completion</A></H2>
25266 +<P>A <EM>Complete word</EM> macro that inserts the nearest match to a given beginning was part
25267 +of the official nedit distribution for a long time. I liked this feature very much, but still
25268 +there were some shortcomings that bugged me. Possible completions were taken only from the
25269 +text of the current window. But when you begin to edit a new or very short file, the word that
25270 +you like to be completed is not given within the current text. And even if it is given, it may
25271 +be to far away from the cursor position. So I thought of some dictionary that stores the words
25272 +that ones uses. And since these are quite sure a lot of words, it is a good idea to attach a weight
25273 +to each word in the dictionary that is related to the typing usage frequency of this word so that
25274 +the hit rate will be optimized.</P>
25276 +<P>Assume the words <strong>dictionary</strong>, <strong>dictator</strong> and <strong>dictate</strong> are
25277 +stored in your personal dictionary, with relative weights 23, 2 and 3. Typing <strong>dict</strong> and invoking
25278 +the macro <em>Complete Word</em> (e.g. by typing Ctrl-Space) will complete to <strong>dictionary</strong>,
25279 +since <strong>dictionary</strong> has the greatest weight (actually, things are little bit more difficult,
25280 +there are several parameters which control the behaviour of <em>Complete Word</em>).
25283 +<P>The dictionary is sensitive to the current language mode. When a language mode other than <strong>Plain</strong>
25284 +is active, words are inserted into a separate namespace for this language. <em>Complete Word</em> first
25285 +searches for matches in the namespace of the current language mode. If there's no match, the global namespace is
25288 +<P>The more the <em>Complete word</em> macro is used, the quicker the dictionary will grow (and adapt).
25289 +To manually insert a word (or even a whole sentence) into the dictionary, select the text to insert and
25290 +type <EM>Ctrl-Bracketleft</EM>.</P>
25292 +<H2><A NAME="COMPLETION2">Stepping through the dictionary</A></H2>
25294 +<P>Now it's possible to step through various possible completions (in order of ascending weight)
25295 +by repeatedly invoking the <em>Complete word</em> macro. The first completion offered is the
25296 +nearest match taken from the current text, pretty much like the old-style complete word. Then
25297 +the language mode specific namespace will be searched for possible matches. Last but not least,
25298 +the global namespace will be searched. The number of possible matches can be changed in the macro
25299 +definitions according to the user's preferences.</P>
25301 +<P>I was looking for a proper method to let the dictionary learn which words the user uses most. The rule
25302 +I coded into the macro definitions is now as follows: Each time you invoke the complete word macro, it looks
25303 +if you made a successful completion previously. If there was a successful completion, this string is inserted
25304 +into the dictionary to reinforce weights or just learn the new string. But how does the macro detect if the
25305 +last completion was successful, i.e. the user got what he wanted ? Simply by the fact that you did nothing
25306 +but going on typing. If you step through the possible completions to some given characters and you are not
25307 +satisfied with the solutions provided, please use the <EM>Revert to original</EM> macro. This will delete
25308 +the proposed completion, just giving the characters that you typed in. And it tells the other macro routines
25309 +that there was no successful completion. Otherwise, the last completion that was offered is taken to be a
25313 +<H2><A NAME="EXPANSION">Template (Shortcut) expansion</A></H2>
25316 +Template (Shortcut) expansion is a very simple, yet powerful feature. For example, typing <strong>cl</strong> and invoking
25317 +the macro <em>Expand</em> (e.g. by typing Ctrl-Bracketright) will replace <strong>cl</strong> by:
25320 +<font color="#7a0c0c"><b>class </b></font><font color="#000000"><b><i>@-name@ </i></b></font><font color="#000000"><b>{
25321 + </b></font><font color="#7a0c0c"><b>private</b></font><font color="#000000">:
25322 + </font><font color="#000000"><b><i>@@@
25324 + </i></b></font><font color="#7a0c0c"><b>public</b></font><font color="#000000">:
25325 + </font><font color="#000000"><b><i>@-name@</i></b></font><font color="#1530b0"><b>()</b></font><font color="#000000">;
25326 + ~</font><font color="#000000"><b><i>@-name@</i></b></font><font color="#1530b0"><b>()</b></font><font color="#000000">;
25331 +<P>A sequence of type <tt>@*@</tt> is used as a placeholder or <B>field</B>in the template.
25332 +Invoking the <em>Next field</em> macro (Ctrl-Backslash) positions the cursor at
25333 +the next <tt>@*@</tt> section, so you can quickly fill these parts of a template as
25334 +if it was a form sheet.</P>
25336 +<P>Like word completion, this feature is language mode sensitive. This allows to use the same abbreviations
25337 +in different language modes. Templates can only be defined manually by selecting the desired code
25338 +segment and invoking the macro <em>Define Expansion</em>. It is not possible to
25339 +use the same abbreviation (e.g. <B>cl</B>) twice, it has to be unique.</P>
25341 +<H2><A NAME="EXPANSION2">Auto fill fields in expansions (<B>NEW</B>)</A></H2>
25343 +<P>A field <tt>@@@</tt> is a general purpose field. Using the above mentioned macros, one
25344 +can quickly jump to this positions and fill in. Fields of type <b><tt>@-name@</tt></b> are
25345 +treated somewhat different. These field are called <EM>auto fill fields</EM>. If the user
25346 +fills in the first named field of a template and invokes the <em>Next field</em> macro,
25347 +all other named fields with the same name tag are replaced automatically with this text.
25348 +In the above class example, the class name will be inserted at any position <b><tt>@-name@</tt></b>
25351 +<P>There are some additional types of fields. First, fields of type <b><tt>@<file@</tt></b>
25352 +insert text from file called 'file' at the given position (even recursively!). Fields of type
25353 +<b><tt>@>temp@</tt></b> try to expand template 'temp' and the insert the expanded text at
25357 +<H2><A NAME="INSTALL">Download</A></H2>
25359 +<P>Here is the dictionary enhanced version of nedit <strong>5.1.1</strong>:</p>
25364 +<LI><A HREF="nedit-5.1.1.tgz">5.1.1 sources as tar.gz file (~620 kB)</A></LI>
25366 +<LI>Precompiled binaries (nedit/nc)
25368 +<LI><A HREF="nedit511_sgi.tgz"> 5.1.1 Executables for SGI IRIX 6.5 (n32) (~420 kB)</A></LI>
25369 +<LI><A HREF="nedit511_solaris.tgz"> 5.1.1 Executables for Solaris (~320 kB)</A></LI>
25371 +<LI>Macro definitions
25373 +<LI><A HREF="dotnedit">Snippet from .nedit (include into your existing .nedit file)</A></LI>
25374 +<LI><A HREF="dictionary.nm">dictionary.nm (put into your home directory)</A></LI>
25376 +<LI>Startup dictionaries:
25378 +<LI><A HREF="dicts/cpp.dict">Completions and expansions for C/C++</A></LI>
25379 +<LI><A HREF="dicts/latex.dict">Completions and expansions for LaTeX</A></LI>
25380 +<LI><A HREF="dicts/german_latex.dict">German words containing umlaut, prepared for use with LaTeX</A></LI>
25381 +<LI><A HREF="dicts/german.dict">Frequently used german words (weighted)</A></LI>
25382 +<LI><A HREF="dicts/english_top.dict">10000 most frequently used english words (without weights)</A></LI>
25383 +<LI><A HREF="dicts/german_top.dict">10000 most frequently used german words (without weights)</A></LI>
25387 +<H3>Quick setup</H3>
25390 +To install, get the source code from the above section and unpack it. It contains all necessary
25391 +stuff to build nedit and set up the dictionary. Unpack it and change to the distribution directory.
25392 +Issuing <CODE>make xxx</CODE> (with xxx filled in for your system)
25393 +should hopefully do it. If you are not afraid of collisions between your existing nedit preferences and
25394 +the new ones, simply change to the Dictionary directory and issue <CODE>source setup.sh</CODE>. Your old settings
25395 +will be save to files <EM>.nedit.O</EM> and <EM>.neditmacro.O</EM>. This should give a minimal setup to
25396 +work with the dictionary. Please don't forget to save these preferences with <EM>Preferences->Save Defaults</EM> </P>
25398 +<H3>Manual setup</H3>
25400 +<p>However, up to now, there's no really elegant
25401 +method for merging old and new nedit settings. So if one wants to do things manually, start as stated above and
25402 +make the executable, then append dictionary.nm to .neditmacro (e.g. by <CODE>cd $HOME; cat dictionary.nm >> .neditmacro</CODE>) and create the
25403 +dictionary file (e.g. by <CODE>cd $HOME; cat cpp.dict latex.dict >> .neditdict</CODE>). You can even start with an
25404 +empty or nonexisting dictionary file, it will be created automatically.</p>
25406 +<p>The only thing left is to include the new macro definitions into your <EM>.nedit</EM>
25407 +file. Please make sure that there are no colliding keybindings with your old setup. New keybindings are
25408 +<EM>Ctrl-Space</EM> and <EM>Ctrl-Bracketleft</EM>, <EM>Ctrl-Bracketright</EM>, <EM>Ctrl-Backslash</EM>
25409 +and <EM>Ctrl-Return</EM>.
25410 +Of course, you can change the keybindings according to your preferences.
25411 +To include the new macro definitions, issue <CODE>nedit -import dotnedit</CODE> and save new settings with
25412 +<EM>Preferences->Save Defaults</EM>.</P>
25416 +<H2><A NAME="FORMAT">The dictionary file</A></H2>
25418 +<P>The dictionary will be loaded from a the file <tt>.neditdict</tt>. Its format is human readable, so it can be modified
25419 +by hand if needed. If no file <tt>.neditdict</tt> is present, it will be created automatically.
25422 +<H3>General Format</H3>
25424 +<p>The dictionary file format is quite simple, each string is put into quotes, then comes a comma and the integer weight.
25425 +The quoted string can occupy several lines, contain linefeeds etc. A <tt>\</tt> escapes any following character, so in order to get a quote,
25426 +simply use <tt>\"</tt>, to get a backslash, use <tt>\\</tt>.
25428 +"String1", weight1
25429 +"String2", weight2
25430 +"String3", weight3
25431 +"String4", weight4
25435 +<H3>Complete word format</H3>
25437 +<p>The syntax for word completion is as follows:
25443 +"::C++::class", 15
25444 +"::C++::double", 34
25445 +"::LaTeX::document", 12
25446 +"::LaTeX::itemize", 4
25447 +"::LaTeX::item", 12
25450 +The first three lines define words in the global namespace. Words in language mode specific namespaces begin with a <tt>::</tt>,
25451 +followed by the language mode and another <tt>::</tt>, and finally the word itself.</P>
25453 +<H3>Template (Shortcut) expansion format</H3>
25456 +"@@@::C++::cl:class @-name@ {
25464 +"@@@::LaTeX::it:\\begin{itemize}
25471 +A expansion entry begins with <tt>@@@</tt>, followed by <tt>::</tt> language mode name <tt>::</tt> and the
25472 +shortcut keyword, terminated with a single <tt>:</tt>. After this comes the expansion text.
25473 +Any sequence of type <tt>@*@</tt> is called
25474 +a field, which is just a position in the template where the user usually fills in text, e.g.
25475 +the body of a loop, the name of a class etc. Within the dictionary, these field are just
25476 +treated like any normal text. All functions related to template expansion and fields are
25477 +realized in the nedit macro language, so the user can change the behaviour of these macros.
25478 +E.g., it is possible to redefine the field sequence to something like <tt>%%%</tt> (of
25479 +course, every entry in the dictionary must then be changed accordingly).
25482 +<H2><A NAME="CREDITS">Credits</A></H2>
25484 +<p>Credits to <a href="http://www.cs.princeton.edu/~rs/">Robert Sedgewick</a>, who wrote some
25485 +interesing articles on <em>Ternary Search Trees</em> on which is dictionary code is strongly based.
25486 +Thanks to <a href="http://www.physik3.gwdg.de/~junge/">Lutz Junge</a> for helping me to cope with the
25487 +macro language and macro files. Also thanks to Marc Verdiesen, whose original expander contribution gave
25488 +me the idea to use the dictionary for shortcut expansion, Stefan Haehn, whose enhanced expander
25489 +code inspired me to parse the expansion string before it is inserted, and to Peter Hellwig,
25490 +who helped me supplying a german dictionary with usage frequencies.
25491 +The top 10000 and top 1000 English and German words are adapted from files provided
25492 +by the University of Leipzig in the <a href="http://wortschatz.uni-leipzig.de">Projekt deutscher Wortschatz</a>.
25493 +Any suggestions, enhancements or useful dictionaries and templates are highly welcome.
25498 +<BR><FONT SIZE=2>Copyright © 1997-2000 <A HREF="http://www.physik3.gwdg.de">DPI Göttingen</A>
25500 diff --quilt /dev/null new/Dictionary/setup.sh
25502 +++ new/Dictionary/setup.sh
25506 +# Simple setup script for the dictionary enhanced version of nedit 5.1.1
25508 +cp ${HOME}/.neditmacro ${HOME}/.neditmacro.O
25509 +cp ${HOME}/.nedit ${HOME}/.nedit.O
25511 +cat dictionary.nm >> ${HOME}/.neditmacro
25512 +cat dicts/cpp.dict dicts/latex.dict >> ${HOME}/.neditdict
25514 +../source/nedit -import dotnedit demo.cc &
25517 diff --quilt /dev/null new/source/dictionary.c
25519 +++ new/source/dictionary.c
25521 +/*******************************************************************************
25523 +* dictionary.c - dictionary extension for the nirvana editor nedit
25526 +* Germany Dec 1999
25528 +* Copyright (C) Christian Merkwirth
25530 +* This is free software; you can redistribute it and/or modify it under the *
25531 +* terms of the GNU General Public License as published by the Free Software *
25532 +* Foundation; either version 2 of the License, or (at your option) any later *
25535 +* This software is distributed in the hope that it will be useful, but WITHOUT *
25536 +* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
25537 +* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License *
25538 +* for more details. *
25540 +* You should have received a copy of the GNU General Public License along with *
25541 +* software; if not, write to the Free Software Foundation, Inc., 59 Temple *
25542 +* Place, Suite 330, Boston, MA 02111-1307 USA *
25544 +* Written by Christian Merkwirth
25546 +*******************************************************************************/
25549 +#include <stdio.h>
25550 +#include <stdlib.h>
25551 +#include <string.h>
25553 +#include "../util/utils.h"
25555 +#include "dictionary.h"
25556 +#include "ternary_search_tree.h"
25558 +int dictionary_loaded = 0; /* = 1 => dictionary was loaded from file */
25559 +int dictionary_modified = 0; /* = 1 => dictionary was */
25560 +int dictionary_auto_save = 0; /* = 1 => save dictionary automatically (on exit/window close) */
25561 +int dictionary_cumulative_save = 0; /* > 0 => save dictionary after every dictionary_cumulative_save insertion operations */
25562 +char* dictionary_filename = NULL; /* == NULL => the default dictionary name is used */
25564 +static FILE* fid = NULL;
25565 +static int default_tree_for_dictionary = 0;
25567 +static void save_entry(const char* s, const unsigned long weight);
25569 +int loaddict(void);
25570 +int savedict(void);
25571 +int appenddict(char* filename);
25572 +int load_dict(const char* filename);
25573 +int save_dict(const char* filename);
25574 +void cleanup_dict(void);
25575 +int insert_dict(const char* s, unsigned long weight);
25576 +int complete_dict(const char* s, char** S, const long minimum_chars, const int maxmatches);
25577 +unsigned long dict_is_element(const char* const s);
25579 +int insert_dict(const char* s, unsigned long weight)
25581 + return insert_string(s, weight, default_tree_for_dictionary);
25584 +/* Search tree to see if we can complete the string s
25586 + s - beginning of word to complete (terminated by '\0'
25587 + (*S) - (output) string with the characters needed to complete s to the full word, allocated by the
25588 + called function, no deallocation is needed, so better copy string
25590 + ambiguity_tolerance - parameter ranging within ]0..1] that determines how much ambiguity is allowed
25591 + when completing the word, 1 means allow no ambiguity at all, smaller values
25592 + allow for more ambiguity
25594 + minimum_chars - minimal number of chars s must have before completion is tried (default should be 0)
25596 +int complete_dict(const char* s, char** S, const long minimum_chars, const int maxmatches)
25599 + static char* empty_string = "";
25601 + if (strlen(s) < minimum_chars) {
25602 + *S = empty_string;
25604 + status = complete_string(s, S, maxmatches, default_tree_for_dictionary);
25605 + if (status <= 0) {
25606 + *S = empty_string;
25613 +unsigned long dict_is_element(const char* const s)
25615 + return string_is_element(s, default_tree_for_dictionary);
25618 +void cleanup_dict(void)
25620 + cleanup_tree(default_tree_for_dictionary);
25623 + dictionary_loaded = 0;
25624 + dictionary_modified = 0;
25627 +/* small wrapper to load dictionary from default dictionary file */
25628 +int loaddict(void)
25632 + if (dictionary_filename == NULL) {
25633 + if ((dictionary_filename = strdup(GetRCFileName(NEDIT_DICT))) == NULL)
25637 + if (!dictionary_loaded) {
25638 + status = load_dict(dictionary_filename);
25640 + /* anyway, assume dictionary is loaded (maybe there's no file $HOME/$DEFAULT_DICTIONARY_NAME) */
25641 + dictionary_loaded = 1;
25647 +/* small wrapper to save dictionary to file $HOME/$DEFAULT_DICTIONARY_NAME */
25648 +int savedict(void)
25652 + if (dictionary_filename == NULL) {
25653 + if ((dictionary_filename = strdup(GetRCFileName(NEDIT_DICT))) == NULL)
25657 + if (dictionary_modified) {
25658 + char* backup_name = NULL;
25660 + if (!dictionary_loaded)
25663 + backup_name = malloc(strlen(dictionary_filename) + 2);
25665 + if (backup_name) {
25666 + strcpy(backup_name, dictionary_filename);
25667 + strcat(backup_name, "~");
25668 + rename(dictionary_filename, backup_name);
25669 + free(backup_name);
25672 + status = save_dict(dictionary_filename);
25674 + dictionary_modified = 0;
25680 +int appenddict(char* filename)
25684 + if (filename == NULL)
25687 + loaddict(); /* first load dictionary from default dictionary file */
25688 + status = load_dict(filename); /* load additional dictionary */
25689 + if (status == 0) {
25690 + dictionary_modified = 1; /* mark dictionary as modified */
25699 + load dictionary from file filename
25700 + format of dictfile :
25713 + In the quoted string, any character can be escaped by an \, so
25717 + returns 0 on SUCCESS, otherwise failure
25719 +int load_dict(const char* filename)
25722 + long count = 0; /* length of current line */
25724 + char* line = NULL;
25725 + long linelen = 512;
25731 + if (filename == NULL)
25734 + fid = fopen(filename, "r");
25739 + line = (char*) malloc((linelen+4) * sizeof(char));
25740 + if (line == NULL)
25746 + goto success_exit;
25747 + else if (c == '\"')
25748 + goto read_string;
25750 + goto expecting_quote;
25755 + static int escaped = 0;
25760 + if (!escaped && (c == '\\')) {
25765 + if (!escaped && (c == '\"')) {
25766 + line[count] = '\0'; /* add terminating zero */
25767 + goto expecting_comma;
25770 + line[count++] = c;
25772 + if (count >= linelen) {
25774 + line = (char*) realloc(line, (linelen+4) * sizeof(char));
25775 + if (line == NULL)
25784 + insert_string(line, 1, default_tree_for_dictionary); /* assume weight 1 */
25785 + goto success_exit;
25788 + goto read_number;
25790 + insert_string(line, 1, default_tree_for_dictionary); /* assume weight 1 */
25791 + goto read_string;
25796 + if (fscanf(fid, "%ld", &weight) != 1)
25802 + insert_string(line, weight, default_tree_for_dictionary);
25804 + goto expecting_quote;
25822 +static void save_entry(const char* s, const unsigned long weight)
25826 + if ((*s == '"') || (*s == '\\')) /* escape quote and backslash chars */
25829 + putc(*(s++), fid);
25831 + fprintf(fid, "\", %lu\n", weight);
25835 + save dictionary to file filename
25836 + format of dictfile :
25849 + In the quoted string, any character can be escaped by an \, so
25853 + returns 0 on SUCCESS, otherwise failure
25855 +int save_dict(const char* filename)
25857 + void (*func)() = (&save_entry);
25859 + if (filename != 0) {
25860 + fid = fopen(filename, "w");
25863 + traverse(default_tree_for_dictionary, func);
25868 + return -1; /* could not open file filename */
25872 + return -2; /* no filename given */
25875 +#ifdef DEB_STAND_ALONE_DICT
25876 +/* for debugging, dictionary.c can be compiled to a standalone application */
25878 +static char line[65536];
25879 +static char* completion;
25881 +/* recursivly traverse tree (for testing purposes) */
25883 +void testing(const char* s, const unsigned long weight)
25885 + printf("%s : %d\n", s, weight);
25889 +int main(int argc, char** argv)
25892 + void (*func)() = (&testing);
25898 + for(i=0; i < 1; i++) {
25899 + load_dict(argv[1]);
25900 + fprintf(stderr, "Loaded dictionary from file : %s \n", argv[1]);
25901 + traverse(default_tree_for_dictionary, func);
25902 + fprintf(stderr, "Cleaning up dictionary\n");
25907 + long matches = 0;
25909 + load_dict(argv[1]);
25911 + matches = complete_string(argv[2], S, 0.0, 8, default_tree_for_dictionary);
25913 + printf("Found %d matches\n", matches);
25914 + for(i=0; i<matches;i++) {
25915 + printf("%s\n", S[i]);
25926 +#undef DEFAULT_DICTIONARY_NAME
25928 diff --quilt /dev/null new/source/dictionary.h
25930 +++ new/source/dictionary.h
25932 +#ifndef DICTIONARY_H
25933 +#define DICTIONARY_H
25935 +extern char* dictionary_filename; /* == NULL => the default dictionary name is used */
25936 +extern int dictionary_loaded; /* = 1 => dictionary was loaded from file */
25937 +extern int dictionary_modified; /* = 1 => dictionary was modified */
25938 +extern int dictionary_auto_save; /* = 1 => save dictionary automatically (on exit/window close) */
25939 +extern int dictionary_cumulative_save; /* > 0 => save dictionary after every dictionary_cumulative_save insertion operations */
25941 +extern int insert_dict(const char* s, unsigned long weight);
25942 +extern int complete_dict(const char* s, char** S, const long minimum_chars, const int maxmatches);
25943 +extern unsigned long dict_is_element(const char* const s);
25945 +extern int load_dict(const char* filename);
25946 +extern int save_dict(const char* filename);
25947 +extern void cleanup_dict(void);
25949 +extern int loaddict(void);
25950 +extern int savedict(void);
25951 +extern int appenddict(char* filename);
25953 diff --quilt old/source/macro.c new/source/macro.c
25954 --- old/source/macro.c
25955 +++ new/source/macro.c
25956 @@ -57,10 +57,12 @@ static const char CVSID[] = "$Id: macro.
25957 #include "highlight.h"
25958 #include "highlightData.h"
25959 #include "rangeset.h"
25960 #include "patternMatch.h"
25961 #include "regularExp.h"
25962 +#include "dictionary.h"
25966 #include <stdlib.h>
25967 #include <string.h>
25969 @@ -427,10 +429,21 @@ static int callMS(WindowInfo *window, Da
25971 /* Pattern Match Feature */
25972 static int getMatchingMS(WindowInfo *window, DataValue *argList, int nArgs,
25973 DataValue *result, char **errMsg);
25975 +static int dictinsertMS(WindowInfo *window, DataValue *argList, int nArgs,
25976 + DataValue *result, char **errMsg);
25977 +static int dictcompleteMS(WindowInfo *window, DataValue *argList, int nArgs,
25978 + DataValue *result, char **errMsg);
25979 +static int dictsaveMS(WindowInfo *window, DataValue *argList, int nArgs,
25980 + DataValue *result, char **errMsg);
25981 +static int dictappendMS(WindowInfo *window, DataValue *argList, int nArgs,
25982 + DataValue *result, char **errMsg);
25983 +static int dictiselementMS(WindowInfo *window, DataValue *argList, int nArgs,
25984 + DataValue *result, char **errMsg);
25986 /* Built-in subroutines and variables for the macro language */
25987 static const BuiltInSubrName MacroSubrs[] = {
25988 { "length", lengthMS },
25989 { "get_range", getRangeMS },
25990 { "t_print", tPrintMS },
25991 @@ -488,10 +501,15 @@ static const BuiltInSubrName MacroSubrs[
25992 { "get_style_by_name", getStyleByNameMS },
25993 { "get_style_at_pos", getStyleAtPosMS },
25994 { "filename_dialog", filenameDialogMS },
25995 { "call", callMS },
25996 { "get_matching", getMatchingMS },
25997 + { "dict_insert", dictinsertMS },
25998 + { "dict_complete", dictcompleteMS },
25999 + { "dict_save", dictsaveMS },
26000 + { "dict_append", dictappendMS },
26001 + { "dict_is_element", dictiselementMS },
26002 { NULL, NULL } /* sentinel */
26005 static const BuiltInSubrName SpecialVars[] = {
26006 { "$cursor", cursorMV },
26007 @@ -5954,10 +5972,264 @@ static int getMatchingMS(WindowInfo *win
26013 +/* New built-in macro commands for dictionary code Christian Merkwirth 2000 */
26015 +/* Insert a string into the acutal dictionary */
26016 +/* Syntax : dictinsert(string) % assuming weight = 1 */
26017 +/* dictinsert(string, weight) */
26018 +static int dictinsertMS(WindowInfo *window, DataValue *argList, int nArgs,
26019 + DataValue *result, char **errMsg)
26021 + static long nr_insertions = 0;
26024 + char stringStorage[25], *string;
26026 + /* Validate arguments and convert to int */
26027 + if (nArgs < 1) { /* we expect one or more input argument */
26028 + return wrongNArgsErr(errMsg);
26031 + if (!readStringArg(argList[0], &string, stringStorage, errMsg)) {
26036 + if (!readIntArg(argList[1], &weight, errMsg)) {
26041 + if (weight < 1) {
26047 + result->tag = INT_TAG;
26048 + result->val.n = insert_dict(string, weight);
26050 + if (result->val.n == 0) {
26051 + dictionary_modified = 1;
26054 + if (dictionary_cumulative_save > 0) {
26055 + if (nr_insertions >= dictionary_cumulative_save) {
26057 + nr_insertions = 0;
26065 +/* Test if string is an element of the acutal dictionary */
26066 +/* Syntax : weight = dictiselement(string) */
26067 +/* Output argument : (integer) weight of element */
26068 +static int dictiselementMS(WindowInfo *window, DataValue *argList, int nArgs,
26069 + DataValue *result, char **errMsg)
26071 + char stringStorage[25], *string;
26072 + unsigned long weight;
26074 + /* Validate arguments and convert to int */
26075 + if (nArgs < 1) { /* we expect one or more input argument */
26076 + return wrongNArgsErr(errMsg);
26079 + if (!readStringArg(argList[0], &string, stringStorage, errMsg)) {
26084 + weight = dict_is_element(string);
26086 + result->tag = INT_TAG;
26088 + if (weight > INT_MAX) {
26089 + result->val.n = INT_MAX;
26091 + result->val.n = weight;
26098 +/* Load/append file to current dictionary */
26099 +/* Syntax : dict_append(filename) */
26100 +static int dictappendMS(WindowInfo *window, DataValue *argList, int nArgs,
26101 + DataValue *result, char **errMsg)
26103 + char stringStorage[25], *string;
26105 + /* Validate arguments and convert to int */
26106 + if (nArgs < 1) { /* we expect one or more input argument */
26107 + return wrongNArgsErr(errMsg);
26110 + if (!readStringArg(argList[0], &string, stringStorage, errMsg)) {
26114 + result->tag = INT_TAG;
26115 + result->val.n = appenddict(string);
26120 +/* Save current acutal dictionary or control the saving behaviour of the dictionary */
26121 +/* Syntax : dict_save() => save dictionary to current filename, see dictionary.c */
26122 +/* dict_save(filename) => set dictionary filename (otherwise default filename is used) */
26123 +/* dict_save("") => return current filename as string */
26124 +/* dict_save(autoSave, cumulSave) => autoSave = "on"/"off"/"flush", cumulSave=0,1,2,3,... */
26125 +static int dictsaveMS(WindowInfo *window, DataValue *argList, int nArgs,
26126 + DataValue *result, char **errMsg)
26128 + int cumulSave = 0;
26130 + char stringStorage[25], *string;
26132 + /* Validate arguments */
26134 + if (nArgs == 0) {
26135 + result->tag = INT_TAG;
26136 + result->val.n = savedict();
26138 + } else if (nArgs == 1) {
26139 + if (!readStringArg(argList[0], &string, stringStorage, errMsg)) {
26143 + if ((string != NULL) && (strlen(string) > 0)) {
26144 + free(dictionary_filename);
26145 + dictionary_filename = strdup(string);
26146 + dictionary_modified = 1; /* force savedict() to write the actual dictionary */
26149 + result->tag = STRING_TAG;
26150 + AllocNString(&result->val.str, strlen(dictionary_filename)+1);
26151 + AllocNStringCpy(&result->val.str, dictionary_filename);
26154 + } else if (nArgs == 2) {
26155 + if (!readStringArg(argList[0], &string, stringStorage, errMsg)) {
26159 + if (!readIntArg(argList[1], &cumulSave, errMsg)) {
26164 + if (!strcmp(string, "on")) {
26165 + dictionary_auto_save = 1;
26166 + } else if (!strcmp(string, "flush")) {
26167 + dictionary_auto_save = 0;
26170 + } else /* if (!strcmp(string, "off")) */ {
26171 + dictionary_auto_save = 0;
26175 + if (cumulSave >= 0) {
26176 + dictionary_cumulative_save = cumulSave;
26178 + dictionary_cumulative_save = 0;
26183 + return wrongNArgsErr(errMsg);
26187 +/* Syntax : dict_complete(string)
26188 + dict_complete(string)
26189 + dict_complete(string, minchars)
26190 + dict_complete(string, minchars, maxmatches)
26192 + See file : dictionary.c
26194 +#define MAXMATCHES 128
26196 +static int dictcompleteMS(WindowInfo *window, DataValue *argList, int nArgs,
26197 + DataValue *result, char **errMsg)
26199 + int minchars = 0;
26200 + int maxmatches = 1;
26201 + static char *s2[MAXMATCHES]; /* at max, 128 possible completions can be returned */
26202 + static int items_left = 0; /* number of possible completions left from last search */
26204 + char stringStorage[25], *string;
26206 + /* Validate arguments and convert to int */
26208 + return wrongNArgsErr(errMsg);
26211 + if (!readStringArg(argList[0], &string, stringStorage, errMsg)) {
26216 + if (!readIntArg(argList[1], &minchars, errMsg)) {
26222 + if (!readIntArg(argList[2], &maxmatches, errMsg)) {
26227 + if (minchars < 0) {
26231 + if ((maxmatches < 1) || (maxmatches > MAXMATCHES)) {
26235 + loaddict(); /* load dict is a wrapper which loads the dictionary from file on demand */
26237 + result->tag = STRING_TAG;
26239 + if (strlen(string) > 0) { /* A string to complete is given */
26240 + items_left = complete_dict(string, s2, minchars, maxmatches); /* so invoke a new search */
26242 + if (items_left <= 0) {
26243 + AllocNString(&result->val.str, 1);
26244 + AllocNStringCpy(&result->val.str, "");
26248 + AllocNString(&result->val.str, strlen(s2[items_left])+1);
26249 + AllocNStringCpy(&result->val.str, s2[items_left]);
26251 + } else { /* An empty key string was given, but maybe there are still some matches left from last call */
26252 + if (items_left > 0) {
26254 + AllocNString(&result->val.str, strlen(s2[items_left])+1);
26255 + AllocNStringCpy(&result->val.str, s2[items_left]);
26257 + AllocNString(&result->val.str, 1);
26258 + AllocNStringCpy(&result->val.str, "");
26265 +/* end of new macros for dictionary Christian Merkwirth 2000 */
26267 static int wrongNArgsErr(char **errMsg)
26269 *errMsg = "Wrong number of arguments to function %s";
26272 diff --quilt old/source/Makefile.common new/source/Makefile.common
26273 --- old/source/Makefile.common
26274 +++ new/source/Makefile.common
26276 OBJS = nedit.o file.o menu.o window.o selection.o search.o undo.o shift.o \
26277 help.o preferences.o tags.o userCmds.o shell.o regularExp.o macro.o \
26278 text.o textSel.o textDisp.o textBuf.o textDrag.o server.o highlight.o \
26279 highlightData.o interpret.o parse.o smartIndent.o regexConvert.o \
26280 rbTree.o windowTitle.o calltips.o server_common.o rangeset.o \
26281 - patternMatch.o patternMatchData.o
26282 + patternMatch.o patternMatchData.o \
26283 + ternary_search_tree.o dictionary.o
26285 XLTLIB = ../Xlt/libXlt.a
26286 XMLLIB = ../Microline/XmL/libXmL.a
26289 diff --quilt old/source/Makefile.dependencies new/source/Makefile.dependencies
26290 --- old/source/Makefile.dependencies
26291 +++ new/source/Makefile.dependencies
26292 @@ -96,5 +96,9 @@ patternMatchData.o: patternMatchData.c .
26293 macro.o: patternMatch.h regularExp.h
26294 menu.o: patternMatchData.h
26295 preferences.o: patternMatchData.h
26296 search.o: patternMatch.h
26297 window.o: patternMatchData.h
26298 +dictionary.o: dictionary.c dictionary.h ternary_search_tree.h ../util/utils.h
26299 +ternary_search_tree.o: ternary_search_tree.c ternary_search_tree.h
26300 +macro.o: dictionary.h file.h
26301 +menu.o: dictionary.h
26302 diff --quilt old/source/menu.c new/source/menu.c
26303 --- old/source/menu.c
26304 +++ new/source/menu.c
26305 @@ -58,10 +58,11 @@ static const char CVSID[] = "$Id: menu.c
26306 #include "../util/DialogF.h"
26307 #include "../util/misc.h"
26308 #include "../util/fileUtils.h"
26309 #include "../util/utils.h"
26310 #include "../Xlt/BubbleButton.h"
26311 +#include "dictionary.h"
26316 #include <stdlib.h>
26317 @@ -2896,10 +2897,15 @@ static void closeAP(Widget w, XEvent *ev
26319 else if (strcmp(args[0], "nosave") == 0) {
26320 preResponse = NO_SBC_DIALOG_RESPONSE;
26324 +/* Save dictionary on exit/close Christian Merkwirth 1999 */
26325 + if (dictionary_auto_save)
26328 CloseFileAndWindow(WidgetToWindow(w), preResponse);
26332 static void saveAP(Widget w, XEvent *event, String *args, Cardinal *nArgs)
26333 @@ -3154,10 +3160,14 @@ static void printSelAP(Widget w, XEvent
26335 static void exitAP(Widget w, XEvent *event, String *args, Cardinal *nArgs)
26337 WindowInfo *window = WidgetToWindow(w);
26339 +/* Save dictionary on exit/close Christian Merkwirth 1999 */
26340 + if (dictionary_auto_save)
26343 if (!CheckPrefsChangesSaved(window->shell))
26346 /* If this is not the last window (more than one window is open),
26347 confirm with the user before exiting. */
26348 diff --quilt /dev/null new/source/ternary_search_tree.c
26350 +++ new/source/ternary_search_tree.c
26352 +/*******************************************************************************
26354 +* ternary_search_tree.c - dictionary extension for the nirvana editor nedit
26356 +* Germany Dec 1999
26358 +* Copyright (C) Christian Merkwirth
26360 +* This is free software; you can redistribute it and/or modify it under the *
26361 +* terms of the GNU General Public License as published by the Free Software *
26362 +* Foundation; either version 2 of the License, or (at your option) any later *
26365 +* This software is distributed in the hope that it will be useful, but WITHOUT *
26366 +* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or *
26367 +* FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License *
26368 +* for more details. *
26370 +* You should have received a copy of the GNU General Public License along with *
26371 +* software; if not, write to the Free Software Foundation, Inc., 59 Temple *
26372 +* Place, Suite 330, Boston, MA 02111-1307 USA *
26374 +* Written by Christian Merkwirth
26376 +*******************************************************************************/
26378 +#include <stdio.h>
26379 +#include <stdlib.h>
26380 +#include <string.h>
26382 +#include "ternary_search_tree.h"
26384 +#define NUMBERR_TSTREES 8
26385 +#define TST_BUFFERS 256
26386 +#define TST_INITAL_BUFSIZE 512
26387 +#define STACK_PAGESIZE 256
26389 +typedef struct tnode* Tptr;
26390 +typedef struct tnode {
26396 + unsigned long count; /* if splitchar==0, count is used, otherwise eqkid */
26399 + unsigned char splitchar;
26402 +typedef struct STACK_ITEM {
26411 +/* variables and function definitions for the stack */
26412 +typedef struct STACK {
26413 + void** stackpointer;
26414 + long stack_count;
26415 + long stack_limit;
26416 + long stack_pagesize;
26419 +typedef struct TSTREE {
26420 + Tptr root; /* tree root node */
26421 + Tptr buf; /* these four variables are used */
26422 + long bufn; /* to accelerate allocation of */
26423 + long freen; /* Tnode objects */
26424 + void* freearr[TST_BUFFERS]; /* freearr and buff_size are needed for managing memory for tree */
26428 +static char* word = NULL; /* global string result storage, used in complete_string */
26429 +static long maxwordlen = 512;
26430 +static long completions_found = 0;
26431 +static long size_string_list = 0;
26432 +static char** string_list = NULL;
26433 +static unsigned long* weight_list = NULL;
26435 +/* static stack sisters = { 0, 0, 0, STACK_PAGESIZE};
26436 +static stack deep = { 0, 0, 0, STACK_PAGESIZE};
26438 +/* allocate space for several dictionaries */
26439 +static tstree tree[NUMBERR_TSTREES] = {
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},
26445 + {0, 0, 0, 0, {0}, TST_INITAL_BUFSIZE},
26446 + {0, 0, 0, 0, {0}, TST_INITAL_BUFSIZE},
26447 + {0, 0, 0, 0, {0}, TST_INITAL_BUFSIZE}};
26449 +static void cleanup_stack(stack* s);
26450 +static void push_stack(void* const x, stack* s);
26451 +static void* pop_stack(stack* s);
26452 +static int isempty_stack(const stack* s);
26454 +static int depth_first_traverse(const Tptr q, void (*func)(const char*, const unsigned long));
26455 +int traverse(const int tst_nr, void (*func)(const char*, const unsigned long));
26457 +/* insert string s (terminated by '\0') into dictionary number tst_nr (0...NUMBERR_TSTREES) */
26458 +/* the minimum length of s is 1 */
26459 +/* returns 0 on SUCCESS, otherwise failure */
26460 +int insert_string(const char* s, unsigned long weight, const int tst_nr)
26464 + Tptr *p = &(tree[tst_nr].root);
26466 + if ((weight < 1) || (strlen(s) < 1)) /* don't insert an empty string or just one character */
26469 + while (pp = *p) { /* as long as we encounter already exisiting nodes */
26470 + if ((d = *s - pp->splitchar) == 0) { /* characters match */
26471 + if (*(s++) == 0) {
26472 + pp->id.count += weight;
26475 + p = &(pp->id.eqkid); /* go to next level of tree */
26477 + } else if (d < 0) {
26478 + p = &(pp->lokid); /* move left in the current level */
26481 + p = &(pp->hikid); /* move right in the current level */
26484 + for (;;) { /* once we find a node that is not created, we must create every next node */
26485 + if (tree[tst_nr].bufn-- <= 0) {
26486 + tree[tst_nr].buff_size *= 2; /* size of newly allocated memory double each time */
26487 + tree[tst_nr].buf = (Tptr) malloc(tree[tst_nr].buff_size * sizeof(Tnode));
26488 + if (tree[tst_nr].buf == NULL) /* we ran out of memory */
26491 + /* due to doubling of page size, it is nearly impossible to run out of array freearr */
26492 + tree[tst_nr].freearr[tree[tst_nr].freen++] = (void *) tree[tst_nr].buf;
26493 + tree[tst_nr].bufn = tree[tst_nr].buff_size-1;
26495 + *p = tree[tst_nr].buf++;
26497 + pp->splitchar = *s;
26498 + pp->lokid = pp->id.eqkid = pp->hikid = 0;
26499 + if (*(s++) == 0) {
26500 + pp->id.count = weight; /* set count to weight */
26503 + p = &(pp->id.eqkid);
26507 +void sort_matches(const char* s, const unsigned long weight)
26510 + static unsigned long minweight = 0;
26511 + long pos = 0; /* position where to insert */
26513 + if (strlen(s) <= 0)
26516 + if (completions_found == 0) /* when invoked for the first time, clear minweight */
26520 + printf("Completion : %s %d\n", s, weight);
26523 + if (weight <= minweight)
26526 + while(weight <= weight_list[pos]) { /* find position to insert */
26527 + if (++pos >= size_string_list) /* list is sorted from highest to lowest weight */
26531 + if (pos >= completions_found) { /* new entry in free slot */
26533 + printf("Inserting element at %d\n", pos);
26535 + string_list[pos] = (char*) malloc(strlen(s)+1);
26536 + weight_list[pos] = weight;
26537 + strcpy(string_list[pos], s);
26538 + completions_found++;
26540 + else /* insert at position pos */
26542 + if (completions_found >= size_string_list) { /* list is full, so we have to remove the last item */
26543 + free(string_list[size_string_list-1]);
26544 + } else { /* completions_found < size_string_list */
26545 + completions_found++;
26548 + printf("Moving elements %d to %d (incl) \n", completions_found-2, pos);
26550 + for (i = completions_found-2; i >= pos; i--) { /* move elements one slot down */
26551 + string_list[i+1] = string_list[i];
26552 + weight_list[i+1] = weight_list[i];
26555 + printf("and inserting element at %d\n", pos);
26557 + weight_list[pos] = weight;
26558 + string_list[pos] = (char*) malloc(strlen(s)+1);
26559 + strcpy(string_list[pos], s);
26562 + minweight = weight_list[size_string_list-1];
26565 + printf("Completions found so far : %d\n", completions_found);
26566 + for (i=0; i < completions_found; i++)
26567 + printf("%d %d %s\n", i, weight_list[i], string_list[i]);
26573 +/* Search tree to see if we can complete the string s
26575 + Only the missing characters, terminated by a null, are returned in string
26576 + S[0], which is may not be freed by the calling function
26577 + S must point to a valid char*, e.g. char* s2; S = &s2;
26579 + If we cannot complete s or an error occured, zero or a negative value is returned.
26580 + Otherwise, the number of possible completions found is returned
26581 + The parameters are as follows :
26583 + s - beginning of word to complete (terminated by '\0')
26585 + S - array of char pointers, holding (output) string(s) with the characters needed to complete s to the full word.
26586 + While the array S itself must be allocated by the calling function, the strings to which S[0], S[1] ... point
26587 + are allocated by the called function, so no deallocation is needed
26589 + maxmatches - maximal number of returned strings (i.e. size of array S)
26592 +int complete_string(const char* const s, char** S, const int maxmatches, const int tst_nr)
26594 + Tptr p = tree[tst_nr].root;
26595 + long position = 0;
26596 + long s_len = strlen(s);
26598 + if (maxmatches < 1) {
26602 + if (word == NULL) {
26603 + word = (char*) malloc(maxwordlen + 4);
26604 + if (word == NULL) {
26605 + return -3; /* out of memory */
26610 + if (s[position] < p->splitchar)
26612 + else if (s[position] > p->splitchar)
26614 + else { /* s[position] == splitchar */
26615 + if (!p->splitchar) { /* if s is longer than the matching path in the tree */
26619 + if (++position == s_len) {
26620 + goto found; /* if we found s completely in the tree, now try to find a completion */
26622 + p = p->id.eqkid; /* otherwise, go one level deeper into the tree */
26634 + void (*func)() = &sort_matches;
26636 + if (p->id.eqkid == 0) return -1; /* tree is empty */
26638 + size_string_list = maxmatches;
26639 + completions_found = 0;
26641 + string_list = (char**) malloc(size_string_list * sizeof(char*));
26642 + weight_list = (unsigned long*) malloc(size_string_list * sizeof(unsigned long));
26644 + for (i=0; i < size_string_list; i++) {
26645 + string_list[i] = 0;
26646 + weight_list[i] = 0;
26649 + depth_first_traverse(p->id.eqkid, func);
26651 + for (i=0; i < completions_found; i++) {
26652 + pos += strlen(string_list[i]) + 1;
26655 + if (pos >= maxwordlen) { /* resize output string */
26656 + maxwordlen += pos;
26657 + word = realloc(word, (maxwordlen + 4));
26658 + if (word == NULL) {
26659 + for (i=0; i < completions_found; i++)
26660 + free(string_list[i]);
26662 + free(string_list);
26663 + free(weight_list);
26664 + return -3; /* out of memory */
26670 + for (i=0; i < completions_found; i++) {
26671 + const long n = completions_found - i - 1;
26672 + const long s_len = strlen(string_list[n]) + 1;
26673 + S[i] = word + pos;
26674 + strcpy(S[i], string_list[n]);
26675 + free(string_list[n]);
26679 + free(string_list);
26680 + free(weight_list);
26681 + size_string_list = 0;
26683 + return completions_found;
26687 +/* Search dictionary if string s is element
26689 + Input arguments :
26690 + s - string to find (terminated by '\0')
26691 + Output arguments :
26692 + weight is element s, otherwise zero
26694 +unsigned long string_is_element(const char* const s, const int tst_nr)
26696 + Tptr p = tree[tst_nr].root;
26697 + int position = 0;
26699 + if (strlen(s) > 0) {
26701 + if (s[position] < p->splitchar)
26703 + else if (s[position] > p->splitchar)
26705 + else { /* s[position] == splitchar */
26706 + if (!p->splitchar) { /* s[position] == p->splitchar == 0, so we s is an element */
26707 + return p->id.count;
26720 +/* recursivly traverse tree (for saving dictionary to file or similar purposes) */
26721 +int traverse(const int tst_nr, void (*func)(const char*, const unsigned long))
26723 + const Tptr p = tree[tst_nr].root;
26725 + return -1; /* tree is empty */
26727 + return depth_first_traverse(p, func);
26730 +static int depth_first_traverse(const Tptr q, void (*func)(const char*, const unsigned long))
26732 + char* line = NULL;
26733 + long maxlinelen = 512;
26735 + stack tpr_stack = { 0, 0, 0, STACK_PAGESIZE};
26736 + stack pos_stack = { 0, 0, 0, STACK_PAGESIZE};
26738 + if (line == NULL) {
26739 + line = malloc((maxlinelen + 4));
26740 + if (line == NULL) return -3; /* out of memory */
26743 + push_stack((void*) q, &tpr_stack);
26744 + push_stack((void*) ((unsigned long) 0), &pos_stack);
26746 + while(!isempty_stack(&tpr_stack)) {
26747 + unsigned long pos = (unsigned long) pop_stack(&pos_stack);
26748 + const Tptr p = (Tptr) pop_stack(&tpr_stack);
26753 + if (pos >= maxlinelen) {
26754 + maxlinelen += pos;
26755 + line = realloc(line, (maxlinelen + 4));
26756 + if (line == NULL) {
26757 + cleanup_stack(&pos_stack);
26758 + cleanup_stack(&tpr_stack);
26759 + return -3; /* out of memory */
26763 + line[pos] = p->splitchar;
26765 + push_stack((void*) p->hikid, &tpr_stack);
26766 + push_stack((void*) pos, &pos_stack);
26767 + push_stack((void*) p->lokid, &tpr_stack);
26768 + push_stack((void*) pos, &pos_stack);
26770 + if (p->splitchar) {
26771 + push_stack((void*) p->id.eqkid, &tpr_stack);
26772 + push_stack((void*) (pos+1), &pos_stack);
26775 + (*func)(line, p->id.count);
26780 + cleanup_stack(&pos_stack);
26781 + cleanup_stack(&tpr_stack);
26788 +/* general cleaning up */
26792 + maxwordlen = 512;
26796 + * cleanup_stack(&sisters);
26797 + * cleanup_stack(&deep)
26802 +void cleanup_tree(const int tst_nr)
26806 + for (i = 0; i < tree[tst_nr].freen; i++)
26807 + free(tree[tst_nr].freearr[i]);
26809 + tree[tst_nr].root = 0;
26810 + tree[tst_nr].buf = 0;
26811 + tree[tst_nr].bufn = 0;
26812 + tree[tst_nr].freen = 0;
26814 + tree[tst_nr].buff_size = TST_INITAL_BUFSIZE;
26817 +/* end of ternary search tree section */
26820 +/* beginning of stack section */
26822 +static void cleanup_stack(stack* s)
26824 + free(s->stackpointer);
26826 + s->stackpointer = 0;
26827 + s->stack_limit = 0;
26828 + s->stack_count = 0;
26829 + s->stack_pagesize = STACK_PAGESIZE;
26832 +static void push_stack(void* const x, stack* s) {
26833 + if (s->stack_count >= s->stack_limit) {
26834 + s->stack_limit += s->stack_pagesize;
26835 + s->stack_pagesize *= 2; /* double size of newly allocated array */
26836 + s->stackpointer = (void*) realloc(s->stackpointer, s->stack_limit*sizeof(void*));
26839 + s->stackpointer[s->stack_count++] = x;
26842 +static void* pop_stack(stack* s)
26844 + return s->stackpointer[--s->stack_count];
26847 +static int isempty_stack(const stack* s)
26849 + return (s->stack_count==0);
26852 +/* end of stack* section */
26855 +#undef TST_BUFFERS
26856 +#undef TST_INITAL_BUFSIZE
26857 +#undef STACK_PAGESIZE
26858 +#undef NUMBERR_TSTREES
26859 diff --quilt /dev/null new/source/ternary_search_tree.h
26861 +++ new/source/ternary_search_tree.h
26863 +#ifndef TERNARY_SEARCH_TREE_H
26864 +#define TERNARY_SEARCH_TREE_H
26866 +extern int insert_string(const char* s, unsigned long weight, const int tst_nr);
26867 +extern int complete_string(const char* const s, char** S, const int maxmatches, const int tst_nr);
26868 +extern unsigned long string_is_element(const char* const s, const int tst_nr);
26869 +extern int traverse(const int tst_nr, void (*func)(const char*, const unsigned long));
26871 +extern void cleanup();
26872 +extern void cleanup_tree(const int tst_nr);
26874 diff --quilt old/util/utils.c new/util/utils.c
26875 --- old/util/utils.c
26876 +++ new/util/utils.c
26877 @@ -50,15 +50,15 @@ static const char CVSID[] = "$Id: utils.
26878 #include "../debug.h"
26881 #define DEFAULT_NEDIT_HOME ".nedit"
26883 - static char* hiddenFileNames[N_FILE_TYPES] = {".nedit", ".neditmacro", ".neditdb;1"};
26884 - static char* plainFileNames[N_FILE_TYPES] = {"nedit.rc", "autoload.nm", "nedit.history;1"};
26885 + static char* hiddenFileNames[N_FILE_TYPES] = {".nedit", ".neditmacro", ".neditdb;1", ".neditdict"};
26886 + static char* plainFileNames[N_FILE_TYPES] = {"nedit.rc", "autoload.nm", "nedit.history;1", "nedit.dict"};
26888 - static char* hiddenFileNames[N_FILE_TYPES] = {".nedit", ".neditmacro", ".neditdb"};
26889 - static char* plainFileNames[N_FILE_TYPES] = {"nedit.rc", "autoload.nm", "nedit.history"};
26890 + static char* hiddenFileNames[N_FILE_TYPES] = {".nedit", ".neditmacro", ".neditdb", ".neditdict"};
26891 + static char* plainFileNames[N_FILE_TYPES] = {"nedit.rc", "autoload.nm", "nedit.history", "nedit.dict"};
26894 static void buildFilePath(char* fullPath, const char* dir, const char* file);
26895 static Boolean isDir(const char* file);
26896 static Boolean isRegFile(const char* file);
26897 diff --quilt old/util/utils.h new/util/utils.h
26898 --- old/util/utils.h
26899 +++ new/util/utils.h
26900 @@ -70,11 +70,11 @@ typedef struct {
26902 void Push(Stack* stack, const void* value);
26903 void* Pop(Stack* stack);
26905 /* N_FILE_TYPES must be the last entry!! This saves us from counting. */
26906 -enum {NEDIT_RC, AUTOLOAD_NM, NEDIT_HISTORY, N_FILE_TYPES};
26907 +enum {NEDIT_RC, AUTOLOAD_NM, NEDIT_HISTORY, NEDIT_DICT, N_FILE_TYPES};
26909 /* If anyone knows where to get this from system include files (in a machine
26910 independent way), please change this (L_cuserid is apparently not ANSI) */
26911 #define MAXUSERNAMELEN 32
26913 diff --quilt old/source/highlightData.c new/source/highlightData.c
26914 --- old/source/highlightData.c
26915 +++ new/source/highlightData.c
26916 @@ -549,11 +549,11 @@ static char *DefaultPatternSets[] = {
26917 README:\"NEdit Macro syntax highlighting patterns, version 2.6, maintainer Thorsten Haude, nedit at thorstenhau.de\":::Flag::D\n\
26918 Comment:\"#\":\"$\"::Comment::\n\
26919 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\
26920 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\
26921 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\
26922 - 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\
26923 + 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\
26924 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\
26925 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\
26926 Macro Hooks:\"<(?:(?:pre|post)_(?:open|save)|cursor_moved|modified|(?:losing_)?focus)_hook(?=\\s*\\()\":::Subroutine1::\n\
26927 Keyword:\"<(?:break|continue|define|delete|else|for|if|in|return|while)>\":::Keyword::\n\
26928 Braces:\"[{}\\[\\]]\":::Keyword::\n\