                   parentTokenIdx? and
                   tokenStack[parentTokenIdx].type is BRACE_OPEN and
                   tokenStack[parentTokenIdx].row is ( row - 1)
-                    # previous line started with a brace so use different indent rule
-                    # based upon eslint indent not React/indent
                     tagIndentation = firstCharIndentation = firstTagInLineIndentation =
-                      @getEslintIndent() + @getIndentOfPreviousRow row
+                      @eslintIndentOptions.jsxIndent[1] + @getIndentOfPreviousRow row
                     indentRecalc = @indentRow({row: row , blockIndent: firstCharIndentation })
               else if isFirstTagOfBlock and parentTokenIdx?
                 indentRecalc = @indentRow({row: row , blockIndent: @getIndentOfPreviousRow(row), jsxIndent: 1})

                  parentTokenIdx? and
                  tokenStack[parentTokenIdx].type is BRACE_OPEN and
                  tokenStack[parentTokenIdx].row is ( row - 1)
                    # previous line started with a brace so use different indent rule
                    # based upon eslint indent not React/indent
                    tagIndentation = firstCharIndentation =
                      @getEslintIndent() + @getIndentOfPreviousRow row
                    indentRecalc = @indentRow({row: row, blockIndent: firstCharIndentation})
              else if parentTokenIdx?
                indentRecalc = @indentRow({row: row, blockIndent: tokenStack[parentTokenIdx].firstCharIndentation, jsxIndent: 1 } )

    if projectContainingSource[0]?
      path.join projectContainingSource[0], '.eslintrc'

  # to create indents. We can read and return the rules properties or undefined
  readEslintrcOptions: (eslintrcFile) ->
    # get local path overides
    if fs.existsSync eslintrcFile
      fileContent = stripJsonComments(fs.readFileSync(eslintrcFile, 'utf8'))
      try
        eslintRules = (YAML.safeLoad fileContent).rules
        if eslintRules then return eslintRules
      catch err
        atom.notifications.addError "LB: Error reading .eslintrc at #{eslintrcFile}",
          dismissable: true
          detail: "#{err.message}"
    return {}

  # use eslint react format described at http://tinyurl.com/p4mtatv
  # turn spaces into tab dimensions which can be decimal
  # a empty object argument parses back the default settings
  translateIndentOptions: (eslintRules) ->
    # Eslint rules to use as default overidden by .eslintrc
    # N.B. that this is not the same as the eslint rules in that
    # the tab-spaces and 'tab's in eslintrc are converted to tabs based upon
    # the Atom editor tab spacing.
    # e.g. eslint indent [1,4] with an Atom tab spacing of 2 becomes indent [1,2]
    eslintIndentOptions  =
      jsxIndent: [1,1]            # 1 = enabled, 1=#tabs
      jsxIndentProps: [1,1]       # 1 = enabled, 1=#tabs
      jsxClosingBracketLocation: [
        1,
        selfClosing: TAGALIGNED
        nonEmpty: TAGALIGNED
      ]

    return eslintIndentOptions unless typeof eslintRules is "object"

    ES_DEFAULT_INDENT = 4 # default eslint indent as spaces

    # read indent if it exists and use it as the default indent for JSX
    rule = eslintRules['indent']
    if typeof rule is 'number' or typeof rule is 'string'
      defaultIndent  = ES_DEFAULT_INDENT / @editor.getTabLength()
    else if typeof rule is 'object'
      if typeof rule[1] is 'number'
        defaultIndent  = rule[1] / @editor.getTabLength()
      else defaultIndent  = 1
    else defaultIndent  = 1

    rule = eslintRules['react/jsx-indent']
    if typeof rule is 'number' or typeof rule is 'string'
      eslintIndentOptions.jsxIndent[0] = rule
      eslintIndentOptions.jsxIndent[1] = ES_DEFAULT_INDENT / @editor.getTabLength()
    else if typeof rule is 'object'
      eslintIndentOptions.jsxIndent[0] = rule[0]
      if typeof rule[1] is 'number'
        eslintIndentOptions.jsxIndent[1] = rule[1] / @editor.getTabLength()
      else eslintIndentOptions.jsxIndent[1] = 1
    else eslintIndentOptions.jsxIndent[1] = defaultIndent

    rule = eslintRules['react/jsx-indent-props']
    if typeof rule is 'number' or typeof rule is 'string'
      eslintIndentOptions.jsxIndentProps[0] = rule
      eslintIndentOptions.jsxIndentProps[1] = ES_DEFAULT_INDENT / @editor.getTabLength()
    else if typeof rule is 'object'
      eslintIndentOptions.jsxIndentProps[0] = rule[0]
      if typeof rule[1] is 'number'
        eslintIndentOptions.jsxIndentProps[1] = rule[1] / @editor.getTabLength()
      else eslintIndentOptions.jsxIndentProps[1] = 1
    else eslintIndentOptions.jsxIndentProps[1] = defaultIndent

    rule = eslintRules['react/jsx-closing-bracket-location']
    eslintIndentOptions.jsxClosingBracketLocation[1].selfClosing = TAGALIGNED
    eslintIndentOptions.jsxClosingBracketLocation[1].nonEmpty = TAGALIGNED
    if typeof rule is 'number' or typeof rule is 'string'
      eslintIndentOptions.jsxClosingBracketLocation[0] = rule
    else if typeof rule is 'object' # array
      eslintIndentOptions.jsxClosingBracketLocation[0] = rule[0]
      if typeof rule[1] is 'string'
        eslintIndentOptions.jsxClosingBracketLocation[1].selfClosing =
          eslintIndentOptions.jsxClosingBracketLocation[1].nonEmpty =
            rule[1]
      else
        if rule[1].selfClosing?
          eslintIndentOptions.jsxClosingBracketLocation[1].selfClosing = rule[1].selfClosing
        if rule[1].nonEmpty?
          eslintIndentOptions.jsxClosingBracketLocation[1].nonEmpty = rule[1].nonEmpty

    return eslintIndentOptions

  # allign nonEmpty and selfClosing tags based on eslint rules
  # row to be indented based upon a parentTags properties and a rule type
