anchor.diff:  
     CharEnd:= EditorBracket_GetPairForOpeningBracketOrQuote(CharBegin);
     if CharEnd=#0 then exit;
  +
  +  case CharBegin of
  +    '"', '''', '`':
  +      bQuoteChar:= true;
  +    else
  +      bQuoteChar:= false;
  +  end;
   
     //make additional loop, to detect that ALL carets need pairing.
     //if at least one caret doesn't need, stop.
  
positive.code:     Caret:= Ed.Carets[NCaret];
      if not Ed.Strings.IsIndexValid(Caret.PosY) then Continue;
      if Caret.EndY<0 then
        if not EditorAutoCloseBracket_NeedPair(Ed, Caret) then
          exit;
    end;
  
  
negative.code:   Result:= true;
    NPos:= Caret.PosX;
    Str:= Ed.Strings.Lines[Caret.PosY];
  
    //don't do, if before caret is \
    if (NPos>=1) and (NPos<=Length(Str)) and (Str[NPos]='\') then
      exit(false);
  
    //don't do, if caret before text
    if (NPos<Length(Str)) and
      not Editor_NextCharAllowed_AutoCloseBracket(Str[NPos+1]) then
        exit(false);
  
    //don't do, if quote-char is typed after a word-char. CudaText issue #3331
    if AQuoteChar then
     if (NPos>=1) and (NPos<=Length(Str)) and IsCharWord(Str[NPos], Ed.OptNonWordChars) then
       exit(false);
  end;
  
  function EditorAutoPairChar(Ed: TATSynEdit; CharBegin: atChar): boolean;
  