I always meant to remove emphasis in the index by default. Now I do
authorsimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Tue, 30 Mar 2004 19:32:00 +0000 (19:32 +0000)
committersimon <simon@cda61777-01e9-0310-a592-d414129be87e>
Tue, 30 Mar 2004 19:32:00 +0000 (19:32 +0000)
so. It's restorable using \IM.

git-svn-id: svn://svn.tartarus.org/sgt/halibut@4000 cda61777-01e9-0310-a592-d414129be87e

doc/input.but
index.c

index 05d18b5..ca66df5 100644 (file)
@@ -1059,6 +1059,11 @@ still want it to look like code in the index, whereas most people
 indexing an emphasised word will \e{not} want it emphasised in the
 index.
 
+(In fact, \e{no} emphasis in the text inside \c{\\i} will be
+preserved in the index. If you really want a term in the index to
+appear emphasised, you must say so explicitly using \c{\\IM}; see
+\k{input-index-rewrite}.)
+
 Sometimes you might want to index a term which is not explicitly
 mentioned, but which is highly relevant to the text and you think
 that somebody looking up that term in the index might find it useful
diff --git a/index.c b/index.c
index 3b1df51..c312f07 100644 (file)
--- a/index.c
+++ b/index.c
@@ -61,6 +61,24 @@ void index_merge(indexdata *idx, int is_explicit, wchar_t *tags, word *text) {
     indextag *t, *existing;
 
     /*
+     * For an implicit merge, we want to remove all emphasis,
+     * because the chances are that the user didn't really want to
+     * index the term as emphasised.
+     */
+    {
+       word *w;
+
+       for (w = text; w; w = w->next) {
+           if (w->type == word_Emph)
+               w->type = word_Normal;
+           else if (w->type == word_EmphSpace)
+               w->type = word_WhiteSpace;
+           else if (w->type == word_EmphQuote)
+               w->type = word_Quote;
+       }
+    }
+
+    /*
      * FIXME: want to warn on overlapping source sets.
      */
     for (; *tags; tags = uadv(tags)) {