Clean up name->name conversion a little, *make sure it happens in all the
right places*!
diff --git a/Doc/partparse.py b/Doc/partparse.py
index 21e20fc..36ffb6c 100644
--- a/Doc/partparse.py
+++ b/Doc/partparse.py
@@ -1013,6 +1013,18 @@
 # same for enumerate
 enumeratesymbols = ['1', 'A', 'a']
 
+d = {}
+for name in ('url', 'module', 'function', 'cfunction',
+	     'keyword', 'method', 'exception', 'constant',
+	     'email', 'class', 'member', 'cdata', 'ctype',
+	     'member'):
+    d[name] = 'code'
+d['program'] = 'strong'
+d['sectcode'] = 'code'
+convertible_csname = d.has_key
+conversion = d.get
+del d, name
+
 ##
 ## \begin{ {func,data,exc}desc }{name}...
 ##   the resulting texi-code is dependent on the contents of indexsubitem
@@ -1391,6 +1403,8 @@
 		if pp[i].chtype != chunk_type[PLAIN]:
 		    raise error, 'Sorry, expected plain text argument'
 		hist.itemargmacro = s(buf, pp[i].data)
+		if convertible_csname(hist.itemargmacro):
+		    hist.itemargmacro = conversion(hist.itemargmacro)
 		del pp[i:newi]
 		length = length - (newi-i)
 
@@ -1593,9 +1607,6 @@
 		ch.chtype = chunk_type[PLAIN]
 		ch.data = release_version
 
-	    elif s_buf_data == 'program':
-		ch.data = "strong"
-
 	    elif s_buf_data == 'item':
 		ch.chtype = chunk_type[CSLINE]
 		length, newi = getoptarg(length, buf, pp, i)
@@ -1641,10 +1652,10 @@
 		if command in regindices:
 
 		    arg = [chunk(CSNAME, ch.where, 't'),
-			      chunk(GROUP, ch.where, arg)]
+			   chunk(GROUP, ch.where, arg)]
 		else:
 		    cat_arg = [chunk(CSNAME, ch.where, 'r'),
-			      chunk(GROUP, ch.where, cat_arg)]
+			       chunk(GROUP, ch.where, cat_arg)]
 
 		ingroupch = arg + \
 			  [chunk(PLAIN, ch.where, ' ')] + \
@@ -1868,9 +1879,6 @@
 		pp.insert(i, chunk(GROUP, ch.where, ingroupch))
 		length, i = length+1, i+1
 
-	    elif s_buf_data == 'sectcode':
-		ch.data = 'code'
-
 	    elif s_buf_data in ('stmodindex', 'refstmodindex'):
 		ch.chtype = chunk_type[CSLINE]
 		# use the program index as module index
@@ -2086,10 +2094,8 @@
 	    elif s_buf_data in ('noindent', 'indexsubitem', 'footnote'):
 		pass
 
-	    elif s_buf_data in ('url', 'module', 'function', 'cfunction',
-				'keyword', 'method', 'exception', 'constant',
-				'email', 'class', 'member', 'cdata', 'ctype'):
-		ch.data = "code"
+	    elif convertible_csname(s_buf_data):
+		ch.data = conversion(s_buf_data)
 
 	    elif s_buf_data == 'label':
 		name = s(buf, pp[i].data[0].data)
diff --git a/Doc/tools/partparse.py b/Doc/tools/partparse.py
index 21e20fc..36ffb6c 100644
--- a/Doc/tools/partparse.py
+++ b/Doc/tools/partparse.py
@@ -1013,6 +1013,18 @@
 # same for enumerate
 enumeratesymbols = ['1', 'A', 'a']
 
+d = {}
+for name in ('url', 'module', 'function', 'cfunction',
+	     'keyword', 'method', 'exception', 'constant',
+	     'email', 'class', 'member', 'cdata', 'ctype',
+	     'member'):
+    d[name] = 'code'
+d['program'] = 'strong'
+d['sectcode'] = 'code'
+convertible_csname = d.has_key
+conversion = d.get
+del d, name
+
 ##
 ## \begin{ {func,data,exc}desc }{name}...
 ##   the resulting texi-code is dependent on the contents of indexsubitem
@@ -1391,6 +1403,8 @@
 		if pp[i].chtype != chunk_type[PLAIN]:
 		    raise error, 'Sorry, expected plain text argument'
 		hist.itemargmacro = s(buf, pp[i].data)
+		if convertible_csname(hist.itemargmacro):
+		    hist.itemargmacro = conversion(hist.itemargmacro)
 		del pp[i:newi]
 		length = length - (newi-i)
 
@@ -1593,9 +1607,6 @@
 		ch.chtype = chunk_type[PLAIN]
 		ch.data = release_version
 
-	    elif s_buf_data == 'program':
-		ch.data = "strong"
-
 	    elif s_buf_data == 'item':
 		ch.chtype = chunk_type[CSLINE]
 		length, newi = getoptarg(length, buf, pp, i)
@@ -1641,10 +1652,10 @@
 		if command in regindices:
 
 		    arg = [chunk(CSNAME, ch.where, 't'),
-			      chunk(GROUP, ch.where, arg)]
+			   chunk(GROUP, ch.where, arg)]
 		else:
 		    cat_arg = [chunk(CSNAME, ch.where, 'r'),
-			      chunk(GROUP, ch.where, cat_arg)]
+			       chunk(GROUP, ch.where, cat_arg)]
 
 		ingroupch = arg + \
 			  [chunk(PLAIN, ch.where, ' ')] + \
@@ -1868,9 +1879,6 @@
 		pp.insert(i, chunk(GROUP, ch.where, ingroupch))
 		length, i = length+1, i+1
 
-	    elif s_buf_data == 'sectcode':
-		ch.data = 'code'
-
 	    elif s_buf_data in ('stmodindex', 'refstmodindex'):
 		ch.chtype = chunk_type[CSLINE]
 		# use the program index as module index
@@ -2086,10 +2094,8 @@
 	    elif s_buf_data in ('noindent', 'indexsubitem', 'footnote'):
 		pass
 
-	    elif s_buf_data in ('url', 'module', 'function', 'cfunction',
-				'keyword', 'method', 'exception', 'constant',
-				'email', 'class', 'member', 'cdata', 'ctype'):
-		ch.data = "code"
+	    elif convertible_csname(s_buf_data):
+		ch.data = conversion(s_buf_data)
 
 	    elif s_buf_data == 'label':
 		name = s(buf, pp[i].data[0].data)