anchor.diff:          seq { editor.CaretOffset .. -1 .. 1 }
           |> Seq.tryFind(fun index -> not (fWordChar editor.[index-1]))
           |> Option.defaultValue 0
  -
  -    let findNextWordStartOnLine(editor:TextEditor) (line:IDocumentLine) fWordChar =
  -        let currentWordEnd = findCurrentWordEnd editor fWordChar
  -        if currentWordEnd = editor.Length-1 then
  -            currentWordEnd
  -        else
  -            match editor.[currentWordEnd+1] with
  -            | WhiteSpace ->
  -                //match finish = min line.Offset 
  -                seq { currentWordEnd + 1 .. line.EndOffset - 1 }
  -                |> Seq.tryFind(fun index -> fWordChar editor.[index])
  -                |> Option.defaultValue line.EndOffset
  -            | _ -> currentWordEnd
   
       let paragraphBackwards (editor:TextEditor) =
           seq { editor.CaretLine-1 .. -1 .. 1 }
  
positive.code:             match editor.[editor.CaretOffset] with
              | WhiteSpace ->
                  let matchFunc c = Char.IsWhiteSpace c && (not (isEOLChar c))
                  let start, finish = getWordRange editor matchFunc
                  start, finish
              | _ -> 
                  let fWordChar = getWordCharFunc editor.[editor.CaretOffset]
                  let start, finish = getWordRange editor fWordChar
                  start, finish
          | InnerWORD ->
              match editor.[editor.CaretOffset] with
              | WhiteSpace ->
                  let matchFunc c = Char.IsWhiteSpace c && (not (isEOLChar c))
                  let start, finish = getWordRange editor matchFunc
                  start, finish
              | _ -> 
                  let start, finish = getWordRange editor isWORDChar
                  start, finish
          | AWord -> 
              let getWordCharFunc = function
                  | IsWordChar -> isWordChar
  
negative.code:     let isWORDChar c = not (Char.IsWhiteSpace c)
      let isNonBlankButNotWordChar c = isWORDChar c && not (isWordChar c)
      let isEOLChar c = c = '\r' || c = '\n'
  
      let (|WhiteSpace|_|) c =
          if Char.IsWhiteSpace c then Some WhiteSpace else None
  
      let (|IsWordChar|_|) c =
          if isWordChar c then Some IsWordChar else None
  
      let (|EOLChar|_|) c =
          if isEOLChar c then Some EOLChar else None
  