Next: , Up: Dictionaries


5.1 Creating Dictionaries

Predictive mode dictionaries store words along with their associated weights, used to rank the words in order of likelihood. The weight is just an integer value, which can be thought of as the relative frequency of a word (relative to the other words in the dictionary). A dictionary can also store prefix relationships between words, See Relationships Between Words.

The following commands are used to manually create and modify dictionaries:

predictive-create-dict
Create a new dictionary. The dictionary name is read from the mini-buffer. You can optionally supply a filename to associate with the dictionary. The dictionary will be saved to this file by default (just as a buffer is saved to its associated file). You may also supply a file containing a list of words with which to populate the new dictionary. The predictive-completion-speed and predictive-dict-autosave variables set the new dictionary's completion speed and autosave flag (see below).
predictive-create-meta-dict
Create a new meta-dictionary. A meta-dictionary is a wrapper around two or more dictionaries that behaves as if it was a single, combined dictionary. The weight of a word is the sum of it's weights in the constituent dictionaries, and the prefix relationships from all constituent dictionaries are merged (see Relationships Between Words). Apart from supplying a list of constituent dictionaries, the other options are identical to those for predictive-create-dict.
predictive-add-to-dict
Insert a word into a dictionary. The dictionary name and word are read from the mini-buffer (defaults to the word at the point). An optional prefix argument specifies the weight. If the word is not already in the dictionary, it will be added to it with that initial weight (or 0 if none is supplied). If the word is already in the dictionary, its weight will be incremented by the weight value (or by 1 if none is supplied).
predictive-remove-from-dict
Completely remove a word from a dictionary. The dictionary name and word are read from the mini-buffer (defaults to the word at the point).
predictive-reset-weight
Reset the weight of a word in a dictionary to 0. The dictionary name and word are read from the mini-buffer. If no word is supplied, reset the weights of all words in the dictionary. If a prefix argument is supplied, reset weight(s) to that value, rather than 0.
dictree-size
Display the number of words in a dictionary.

The file containing the list of words used to populate a dictionary has to conform to a specific format:

     "word" weight [prefix-list]

Each line contains one word word, delimited by ‘""’, followed by an integer weight which specifies the word's weight, separated by white-space from the word itself. Note that the `words' in a dictionary do not have to be words in the usual sense. They can be arbitrary sequences of characters, including white-space and punctuation characters. The quote character ‘"’ can be included in a word by escaping it: ‘\"’. Optionally, a list of words which are prefixes of word can be specified in prefix-list at the end of the line, again separated from the weight by white-space (see Relationships Between Words). If present, it should be of the form:

     (:prefixes ("prefix1" "prefix2" ...))

Note that trailing whitespace on any line is not allowed.

The following variables set defaults for other dictionary properties. To change their values for a single dictionary, set the variable to the desired value before creating the dictionary, resetting the value afterwards.

predictive-completion-speed
Sets the default completion speed of dictionaries created with predictive-create-dict. This is the desired upper limit on the time it takes to find completions. If it takes longer than this to find a particular completion, the results are cached so that they can be retrieved faster next time. Thus lower values result in faster completion, at the expense of dictionaries taking up more memory.

Due to the efficient data structures used by the dictionaries, it is typically safe to set this quite low (the default is 0.1 seconds). Most completions will be found faster than this even on slow computers, and only a few of the very slowest will need to be cached.

predictive-dict-autosave
Sets the default autosave property for dictionaries created with predictive-create-dict. If non-nil, modified dictionaries will automatically be saved when they are unloaded (either with the predictive-dict-unload command, or when exiting emacs). If nil, any unsaved modifications will be lost unless the dictionary is saved manually. See Loading and Saving Dictionaries.