codespell
*********

Fix common misspellings in text files. It's designed primarily for checking
misspelled words in source code, but it can be used with other files as well.

USAGE
=====

Check usage with ./codespell -h. There are a few command line options. We ship
a dictionary that is an improved version of the one available at
http://en.wikipedia.org/wiki/Wikipedia:Lists_of_common_misspellings/For_machines
after applying them in projects like Linux Kernel, EFL, oFono among others.
You can provide your own version of the directory, but patches for
new/different entries are very welcome.

Dictionary format
=================

The format of the dictionary was influenced by the one it originally came from,
i.e. from wikipedia. The difference is how multiple options are treated and
that the last argument is the reason why a certain entry could not be applied
directly, but instead be manually inspected. E.g:

1) Simple entry: one wrong word / one suggestion

calulated->calculated

2) Entry with more than one suggested fix

fiel->feel, field, file, phial,

Note the last comma! You need to use it, otherwise the last suggestion will be
discarded. When there are more than one suggestion, automatically fix is not
possible and the best we can do is to give the user the file and line where the
error occurred as well as the suggestions

3) Entry with one word, but with automatically fix disabled

clas->class, disabled because of name clash in c++

Note that there isn't a comma in the end of the line. The last argument is
treated as the reason why a suggestion can not be automatically applied.
