The patch adds flag to search() flag to not use smartcase. '*' and '#' do not use smartcase, but search() always uses smartcase (cannot be turned off). When we use search() with @/ pattern that comes from * or #, search() fails because of discrepancy in smartcase handling.
Yakov --- runtime/doc/eval.txt.000 2007-05-03 09:35:19.000000000 -0400 +++ runtime/doc/eval.txt 2007-05-03 09:36:21.000000000 -0400 @@ -4086,6 +4086,7 @@ 'n' do Not move the cursor 'p' return number of matching sub-pattern (see below) 's' set the ' mark at the previous location of the cursor + 'S' do not use smartcase 'w' wrap around the end of the file 'W' don't wrap around the end of the file If neither 'w' or 'W' is given, the 'wrapscan' option applies. --- src/eval.c.000 2007-05-03 09:07:52.000000000 -0400 +++ src/eval.c 2007-05-03 09:34:50.000000000 -0400 @@ -13813,6 +13813,7 @@ case 'b': dir = BACKWARD; break; case 'w': p_ws = TRUE; break; case 'W': p_ws = FALSE; break; + case 'S': no_smartcase = TRUE; break; default: mask = 0; if (flagsp != NULL) switch (*flags)