diff --git a/src/parser/parser_types.nim b/src/parser/parser_types.nim index 7b2d8f6..3584eb4 100644 --- a/src/parser/parser_types.nim +++ b/src/parser/parser_types.nim @@ -405,7 +405,13 @@ func highlightStreamPosition2(stream: string, position: int): string = debugEcho "insertMessageAtIndex: " & $insertMessageAtIndex - stream.dup(insert(&"\n{spaceChars}^{lineChars} Char at \"{escapedChar}\"\n", insertMessageAtIndex)) + let beforeNewline = + case (startIndex, ch): + of (-1, '\n'): "\n" + of (_, '\n'): "" + else: "\n" + + stream.dup(insert(&"{beforeNewline}{spaceChars}^{lineChars} Char at \"{escapedChar}\"\n", insertMessageAtIndex)) proc `$`*(x: ParserState): string = &"""ParserState( @@ -457,14 +463,14 @@ when isMainModule: D EFG""" - # echo test1.highlightStreamPosition2(test1.find("B")) - # echo "==============" - # echo test1.highlightStreamPosition2(test1.find("C")) - # echo "==============" - # echo test1.highlightStreamPosition2(test1.find("D")) - - + echo test1.highlightStreamPosition2(test1.find("B")) + echo "==============" + echo test1.highlightStreamPosition2(test1.find("C")) + echo "==============" + echo test1.highlightStreamPosition2(test1.find("D")) + echo "==============" echo test1.highlightStreamPosition2(test1.find("\n")) + echo "==============" echo test1.highlightStreamPosition2(test1.find("\n", test1.find("\n") + 1))