нашёл, этого ужасного и коварного жирного бага... (точнее целых двух)...
Живут они в uses SynCompletion;
Выглядят жирные баги так:
1)         while (NewBlockBegin.X>1) and (NewBlockBegin.X-1<=length(CurLine))
        and (CurLine[NewBlockBegin.X-1] in ['a'..'z','A'..'Z','0'..'9','_']) do
          dec(NewBlockBegin.X);  
2)          while (NewBlockEnd.X<=length(CurLine))
          and (CurLine[NewBlockEnd.X] in ['a'..'z','A'..'Z','0'..'9','_']) do
            inc(NewBlockEnd.X);   
Соответственно: русских букв - они не понимают... 
Исправил - работает; теперь повторы типа: ррусские иили симсимволы илили обидобидно - отсутствуют; 
Но там есть ещё один жирнющий баг... который из например "ру" - видит только "р", а из "русс" - видит только "ру"...
Понятно что баг идентичен, его только нужно отыскать...  
 Однако вопрос теперь в другом, код: CurLine[NewBlockEnd.X] 
in ['a'..'z','A'..'Z','0'..'9','_'] - выглядит вкусно, 
но сделать CurLine[NewBlockEnd.X] 
in ['а'..'я','А'..'Я'] - естественно не позволяет, 
я сделал с помощью array, вопрос такой: 
Какие существуют варианты замены: ==>> in ['а'..'я','А'..'Я'] для UTF8 ???    
  
 /