fun findPrevAnchor()

in src/main/kotlin/org/arend/codeInsight/completion/ArendCompletionContributor.kt [866:889]


            fun findPrevAnchor(caretOffset: Int, file: PsiFile) : Pair<Int, PsiElement?> {
                var pos = caretOffset - 1
                var prev: PsiElement? = file.findElementAt(caretOffset)
                if (prev != null && STATEMENT_WT_KWS.contains(prev.text)) pos = prev.startOffset - 1

                var skippedFirstErrorExpr: PsiElement? = null
                var numberOfCrlfs = 0

                do {
                    prev = if (pos <= 0) {
                        numberOfCrlfs = 1
                        break
                    } else file.findElementAt(pos)

                    numberOfCrlfs += if (prev is PsiWhiteSpace) textBeforeCaret(prev, caretOffset).count { it == '\n' } else 0

                    var skipFirstErrorExpr = (prev?.node?.elementType == BAD_CHARACTER || (prev?.node?.elementType == INVALID_KW && prev?.parent is PsiErrorElement && prev.text.startsWith("\\")))
                    if (skipFirstErrorExpr && skippedFirstErrorExpr != null && skippedFirstErrorExpr != prev) skipFirstErrorExpr = false else skippedFirstErrorExpr = prev

                    pos = (prev?.textRange?.startOffset ?: pos) - 1
                } while (prev is PsiWhiteSpace || prev is PsiComment || skipFirstErrorExpr)

                return Pair(numberOfCrlfs, prev)
            }