Spelling for the docs also
diff --git a/.hgignore b/.hgignore
index 1a6022d..68d0afd 100644
--- a/.hgignore
+++ b/.hgignore
@@ -31,4 +31,5 @@
 
 # Stuff in the doc directory.
 _build
+_spell
 sample_html_beta
diff --git a/Makefile b/Makefile
index 3958214..6afb718 100644
--- a/Makefile
+++ b/Makefile
@@ -19,7 +19,7 @@
 	-rm -f tests/zipmods.zip
 	-rm -rf tests/eggsrc/build tests/eggsrc/dist tests/eggsrc/*.egg-info
 	-rm -f setuptools-*.egg distribute-*.egg distribute-*.tar.gz
-	-rm -rf doc/_build
+	-rm -rf doc/_build doc/_spell
 
 sterile: clean
 	-rm -rf .tox*
@@ -90,6 +90,9 @@
 	@echo
 	@echo "Build finished. The HTML pages are in doc/_build/html."
 
+docspell:
+	$(SPHINXBUILD) -b spelling $(SPHINXOPTS) doc/_spell
+
 publish: px
 	rm -f $(WEBHOME)/*.px
 	cp doc/_build/px/*.px $(WEBHOME)
diff --git a/doc/conf.py b/doc/conf.py
index 16f566f..2f1faf8 100644
--- a/doc/conf.py
+++ b/doc/conf.py
@@ -24,7 +24,13 @@
 
 # Add any Sphinx extension module names here, as strings. They can be extensions
 # coming with Sphinx (named 'sphinx.ext.*') or your custom ones.
-extensions = ['sphinx.ext.autodoc', 'sphinx.ext.todo', 'sphinx.ext.ifconfig', 'px_xlator']
+extensions = [
+    'sphinx.ext.autodoc',
+    'sphinx.ext.todo',
+    'sphinx.ext.ifconfig',
+    'sphinxcontrib.spelling',
+    'px_xlator',
+]
 
 # Add any paths that contain templates here, relative to this directory.
 templates_path = ['_templates']
@@ -167,6 +173,10 @@
 # Output file base name for HTML help builder.
 htmlhelp_basename = 'coveragepydoc'
 
+# -- Spelling ---
+
+spelling_word_list_filename = 'dict.txt'
+spelling_show_suggestions = False
 
 # -- Options for LaTeX output --------------------------------------------------
 
diff --git a/doc/dict.txt b/doc/dict.txt
new file mode 100644
index 0000000..ead41ff
--- /dev/null
+++ b/doc/dict.txt
@@ -0,0 +1,151 @@
+activestate
+api
+API
+args
+argv
+bitbucket
+BOM
+boolean
+BTW
+builtin
+builtins
+bytecode
+bytecodes
+canonicalize
+canonicalized
+canonicalizes
+cmdline
+codecs
+colorsys
+config
+configparser
+configurability
+configurability's
+cov
+coveragepy
+coveragerc
+covhtml
+css
+dict
+dict's
+dicts
+dirname
+django
+docstring
+docstrings
+doctest
+DOM
+encodings
+endfor
+endif
+eventlet
+exe
+execfile
+executable's
+expr
+filename
+filenames
+fname
+fnmatch
+fpath
+fullcoverage
+getattr
+gevent
+gevent's
+github
+globals
+greenlet
+html
+HTML
+http
+https
+importlib
+instancemethod
+int
+ints
+iterable
+iterables
+jython
+kwargs
+matcher
+matchers
+merchantability
+mixin
+modulename
+morf
+morfs
+multi
+namespace
+namespaces
+nano
+nbsp
+ned
+nedbat
+nedbatchelder
+nosetests
+nullary
+num
+ok
+OK
+opcode
+opcodes
+optparse
+os
+outfile
+parsable
+parsers
+pragma
+pre
+programmability
+py
+py's
+pyc
+pyexpat
+pypy
+PYTHONPATH
+pyw
+rcfile
+regex
+regexes
+renderer
+settrace
+setuptools
+sitecustomize
+stackoverflow
+stderr
+stdlib
+stdout
+str
+sys
+templite
+timestamp
+todo
+TODO
+tokenization
+tokenize
+tokenized
+tokenizer
+tokenizes
+tokenizing
+traceback
+tuple
+tuples
+txt
+ubuntu
+undecodable
+unexecuted
+unittest
+unparsable
+unsubscriptable
+untokenizable
+URL
+UTF
+utf
+virtualenv
+whitespace
+wikipedia
+wildcard
+wildcards
+xml
+XML
+xrange
diff --git a/pylintrc b/pylintrc
index 6a1e555..2ea150b 100644
--- a/pylintrc
+++ b/pylintrc
@@ -337,28 +337,4 @@
 # pylint doesn't strip the words, so insert a dummy x at the beginning to make
 # the other words work properly.
 # https://bitbucket.org/logilab/pylint/issue/398/spelling-words-need-to-be-stripped-or-the
-spelling-ignore-words=
-    x,activestate,API,args,argv,
-    x,bitbucket,BOM,boolean,BTW,builtin,builtins,bytecode,bytecodes,
-    x,canonicalize,canonicalized,canonicalizes,cmdline,codecs,colorsys,config,configparser,
-    x,configurability,configurability's,cov,coveragepy,coveragerc,covhtml,css,
-    x,dict,dict's,dicts,dirname,django,docstring,docstrings,doctest,DOM,
-    x,encodings,endfor,endif,eventlet,exe,execfile,executable's,expr,
-    x,filename,filenames,fname,fnmatch,fpath,fullcoverage,
-    x,getattr,gevent,gevent's,github,globals,greenlet,
-    x,HTML,http,https,
-    x,importlib,instancemethod,int,ints,iterable,iterables,
-    x,jython,
-    x,kwargs,
-    x,matcher,matchers,merchantability,mixin,modulename,morf,morfs,multi,
-    x,namespace,namespaces,nano,nbsp,ned,nedbat,nedbatchelder,nosetests,nullary,num,
-    x,OK,opcode,opcodes,optparse,os,outfile,
-    x,parsable,parsers,pragma,pre,programmability,py,py's,pyc,pyexpat,pypy,PYTHONPATH,pyw,
-    x,rcfile,regex,regexes,renderer,
-    x,settrace,setuptools,sitecustomize,stackoverflow,stderr,stdlib,stdout,str,sys,
-    x,templite,timestamp,TODO,tokenization,tokenize,tokenized,tokenizer,tokenizes,
-    x,tokenizing,traceback,tuple,tuples,txt,
-    x,ubuntu,undecodable,unexecuted,unittest,unparsable,unsubscriptable,untokenizable,URL,UTF,utf,
-    x,virtualenv,
-    x,whitespace,wikipedia,wildcard,wildcards,
-    x,XML,xrange,
+spelling-private-dict-file=doc/dict.txt