diff --git a/src/replace.ls b/src/replace.ls index 8519afa..911b426 100644 --- a/src/replace.ls +++ b/src/replace.ls @@ -170,7 +170,7 @@ replace = (replacement, input, nodes, query-engine) -> end-line-num = end.line - 1 + line-offset number-of-lines = end-line-num - start-line-num + 1 - col-offset := if last-line is start-line-num then col-offset else 0 + col-offset := if "id" of prev-node and prev-node.loc.end.line!=start.line then col-offset else 0 start-col = start.column + col-offset end-col = end.column + if start-line-num is end-line-num then col-offset else 0 @@ -190,8 +190,8 @@ replace = (replacement, input, nodes, query-engine) -> input-lines.splice start-line-num, number-of-lines, ...replace-lines line-offset += replace-lines.length - number-of-lines - col-offset += end-len - end-col - last-line := end-line-num + line-offset + col-offset = (if start-line-num != end-line-num and replace-lines.length == 1 then 0 else col-offset) + end-len - end-col + last-line := end-line-num prev-node := node unlines input-lines