Hi Christopher, I mant to copy the list, I am doing this again now.
Wow, I was not aware that Emacs caches by content, this is an important piece of information. I guess this removed the main concern I had. Thanks for looking it up in the code and showing it to me. I am not sure if I understand that code completely, but i trust your judgment. -Carsten On 31 jan. 2013, at 10:29, Christopher Schmidt <christop...@ch.ristopher.com> wrote: > Christopher Schmidt <christop...@ch.ristopher.com> writes: >> I was not aware of Emacs caching the regexp on a per-object rather >> than per-content basis. If that is true, the regexp should be made a >> buffer local variable, of course! > > I do not think that's true. > > In compile_pattern: > > for (cpp = &searchbuf_head; ; cpp = &cp->next) > { > cp = *cpp; > ... > if (SCHARS (cp->regexp) == SCHARS (pattern) > && STRING_MULTIBYTE (cp->regexp) == STRING_MULTIBYTE (pattern) > && !NILP (Fstring_equal (cp->regexp, pattern)) > ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ > && EQ (cp->buf.translate, (! NILP (translate) ? translate : > make_number (0))) > && cp->posix == posix > && (EQ (cp->syntax_table, Qt) > || EQ (cp->syntax_table, BVAR (current_buffer, > syntax_table))) > && !NILP (Fequal (cp->whitespace_regexp, Vsearch_spaces_regexp)) > && cp->buf.charset_unibyte == charset_unibyte) > break; > > /* If we're at the end of the cache, compile into the nil cell > we found, or the last (least recently used) cell with a > string value. */ > if (cp->next == 0) > { > compile_it: > compile_pattern_1 (cp, pattern, translate, posix); > break; > } > } > ... > > Christopher -- They can't eat you. -- Merlin Mann in his "Scared Shitless" talk