diff options
author | Andreas Rumpf <rumpf_a@web.de> | 2017-02-20 11:51:17 +0100 |
---|---|---|
committer | Andreas Rumpf <rumpf_a@web.de> | 2017-02-20 11:51:17 +0100 |
commit | 2d28a626f2113d3712ea541bbc7686afe13d8d90 (patch) | |
tree | 3abe85edef78bbc4bbfe1433d4230ac85e03ef1c | |
parent | 1ec96d735355708bf2739d52d28374d91cd260a4 (diff) | |
download | Nim-2d28a626f2113d3712ea541bbc7686afe13d8d90.tar.gz |
nimsuggest: works with VS-Plugin again
-rw-r--r-- | tools/nimsuggest/nimsuggest.nim | 22 | ||||
-rw-r--r-- | tools/nimsuggest/tester.nim | 17 |
2 files changed, 31 insertions, 8 deletions
diff --git a/tools/nimsuggest/nimsuggest.nim b/tools/nimsuggest/nimsuggest.nim index 80ae58d95..db8b90541 100644 --- a/tools/nimsuggest/nimsuggest.nim +++ b/tools/nimsuggest/nimsuggest.nim @@ -286,6 +286,23 @@ proc replTcp(x: ThreadParams) {.thread.} = stdoutSocket.send("\c\L") stdoutSocket.close() +proc argsToStr(x: SexpNode): string = + if x.kind != SList: return x.getStr + doAssert x.kind == SList + doAssert x.len >= 4 + let file = x[0].getStr + let line = x[1].getNum + let col = x[2].getNum + let dirty = x[3].getStr + result = x[0].getStr.escape + if dirty.len > 0: + result.add ';' + result.add dirty.escape + result.add ':' + result.add line + result.add ':' + result.add col + proc replEpc(x: ThreadParams) {.thread.} = var server = newSocket() let port = connectToNextFreePort(server, "localhost") @@ -320,9 +337,10 @@ proc replEpc(x: ThreadParams) {.thread.} = of ideSug, ideCon, ideDef, ideUse, ideDus, ideOutline, ideHighlight: setVerbosity(0) else: discard + let cmd = $gIdeCmd & " " & args.argsToStr if gLogging: - logStr "MSG ARG: " & args.getStr - requests.send($gIdeCmd & " " & args.getStr) + logStr "MSG CMD: " & cmd + requests.send(cmd) toEpc(client, uid) of "methods": returnEpc(client, message[1].getNum, listEpc()) diff --git a/tools/nimsuggest/tester.nim b/tools/nimsuggest/tester.nim index 4e12f329f..c4542e089 100644 --- a/tools/nimsuggest/tester.nim +++ b/tools/nimsuggest/tester.nim @@ -17,7 +17,7 @@ const template tpath(): untyped = getAppDir() / "tests" -proc parseTest(filename: string): Test = +proc parseTest(filename: string; epcMode=false): Test = const cursorMarker = "#[!]#" let nimsug = curDir & addFileExt("nimsuggest", ExeExt) result.dest = getTempDir() / extractFilename(filename) @@ -31,7 +31,10 @@ proc parseTest(filename: string): Test = for x in lines(filename): let marker = x.find(cursorMarker)+1 if marker > 0: - markers.add "\"" & filename & "\";\"" & result.dest & "\":" & $i & ":" & $marker + if epcMode: + markers.add "(\"" & filename & "\" " & $i & " " & $marker & " \"" & result.dest & "\")" + else: + markers.add "\"" & filename & "\";\"" & result.dest & "\":" & $i & ":" & $marker tmp.writeLine x.replace(cursorMarker, "") else: tmp.writeLine x @@ -136,9 +139,11 @@ proc smartCompare(pattern, x: string): bool = proc sendEpcStr(socket: Socket; cmd: string) = let s = cmd.find(' ') doAssert s > 0 - let cmd = "(call 567 " & cmd.substr(0, s) & escapeJson(cmd.substr(s+1)) & ")" - socket.send toHex(cmd.len, 6) - socket.send cmd + var args = cmd.substr(s+1) + if not args.startsWith("("): args = escapeJson(args) + let c = "(call 567 " & cmd.substr(0, s) & args & ")" + socket.send toHex(c.len, 6) + socket.send c proc recvEpc(socket: Socket): string = var L = newStringOfCap(6) @@ -216,7 +221,7 @@ proc doReport(filename, answer, resp: string; report: var string) = report.add "\n But got: " & answer proc runEpcTest(filename: string): int = - let s = parseTest filename + let s = parseTest(filename, true) for cmd in s.startup: if not runCmd(cmd, s.dest): quit "invalid command: " & cmd |