Add :term:s for descriptors.
diff --git a/Doc/library/_ast.rst b/Doc/library/_ast.rst
index 9b195be..9383591 100644
--- a/Doc/library/_ast.rst
+++ b/Doc/library/_ast.rst
@@ -14,7 +14,7 @@
 The ``_ast`` module helps Python applications to process trees of the Python
 abstract syntax grammar. The Python compiler currently provides read-only access
 to such trees, meaning that applications can only create a tree for a given
-piece of Python source code; generating byte code from a (potentially modified)
+piece of Python source code; generating :term:`bytecode` from a (potentially modified)
 tree is not supported. The abstract syntax itself might change with each Python
 release; this module helps to find out programmatically what the current grammar
 looks like.
diff --git a/Doc/library/ctypes.rst b/Doc/library/ctypes.rst
index a5d4a48..c28fcd3 100644
--- a/Doc/library/ctypes.rst
+++ b/Doc/library/ctypes.rst
@@ -586,8 +586,8 @@
    >>> r = RECT(POINT(1, 2), POINT(3, 4))
    >>> r = RECT((1, 2), (3, 4))
 
-Fields descriptors can be retrieved from the *class*, they are useful for
-debugging because they can provide useful information::
+Field :term:`descriptor`\s can be retrieved from the *class*, they are useful
+for debugging because they can provide useful information::
 
    >>> print POINT.x
    <Field type=c_long, ofs=0, size=4>
@@ -1197,10 +1197,10 @@
    >>>
 
 Why is it printing ``False``?  ctypes instances are objects containing a memory
-block plus some descriptors accessing the contents of the memory.  Storing a
-Python object in the memory block does not store the object itself, instead the
-``contents`` of the object is stored. Accessing the contents again constructs a
-new Python each time!
+block plus some :term:`descriptor`\s accessing the contents of the memory.
+Storing a Python object in the memory block does not store the object itself,
+instead the ``contents`` of the object is stored.  Accessing the contents again
+constructs a new Python object each time!
 
 
 .. _ctypes-variable-sized-data-types:
@@ -2267,7 +2267,7 @@
 
 Concrete structure and union types must be created by subclassing one of these
 types, and at least define a :attr:`_fields_` class variable. ``ctypes`` will
-create descriptors which allow reading and writing the fields by direct
+create :term:`descriptor`\s which allow reading and writing the fields by direct
 attribute accesses.  These are the
 
 
diff --git a/Doc/library/pyclbr.rst b/Doc/library/pyclbr.rst
index 5a77b4e..a052a69 100644
--- a/Doc/library/pyclbr.rst
+++ b/Doc/library/pyclbr.rst
@@ -19,10 +19,10 @@
 .. function:: readmodule(module[, path])
 
    Read a module and return a dictionary mapping class names to class descriptor
-   objects.  The parameter *module* should be the name of a module as a string; it
-   may be the name of a module within a package.  The *path* parameter should be a
-   sequence, and is used to augment the value of ``sys.path``, which is used to
-   locate module source code.
+   objects.  The parameter *module* should be the name of a module as a string;
+   it may be the name of a module within a package.  The *path* parameter should
+   be a sequence, and is used to augment the value of ``sys.path``, which is
+   used to locate module source code.
 
    .. % The 'inpackage' parameter appears to be for internal use only....
 
diff --git a/Doc/library/stdtypes.rst b/Doc/library/stdtypes.rst
index c773e9b..44467af 100644
--- a/Doc/library/stdtypes.rst
+++ b/Doc/library/stdtypes.rst
@@ -1899,8 +1899,7 @@
 .. method:: file.fileno()
 
    .. index::
-      single: file descriptor
-      single: descriptor, file
+      pair: file; descriptor
       module: fcntl
 
    Return the integer "file descriptor" that is used by the underlying