anchor.diff:      end;
   
       //other conditions need word-char
  -    bWordChar:= IsCharWordInIdentifier(AText[1]);
  -    if not bWordChar then
  -    begin
  -      FTextCharsTyped:= 0;
  -      exit;
  +    if bTypedChar then
  +    begin
  +      chWide:= UTF8Decode(AText)[1];
  +      bWordChar:= IsCharWord(chWide, Ed.OptNonWordChars);
  +      if not bWordChar then
  +      begin
  +        FTextCharsTyped:= 0;
  +        exit;
  +      end;
       end;
   
       SLexerName:= LexerNameAtPos(Ed, Point(Caret.PosX, Caret.PosY));
  
positive.code:     exit;
    end;
  
    //autoshow autocompletion
    if (ACommand=cCommand_TextInsert) and
      (Length(AText)=1) then
    begin
      //autoshow by trigger chars
      if (Ed.OptAutocompleteTriggerChars<>'') and
  
negative.code:   Ed: TATSynEdit;
    Caret: TATCaretItem;
    SLexerName: string;
    bTypedChar, bWordChar, bIdentChar: boolean;
    chWide: WideChar;
  begin
    Ed:= Sender as TATSynEdit;
    if Ed.Carets.Count<>1 then exit;
  