nimsuggest: works with VS-Plugin again
This commit is contained in:
parent
1ec96d7353
commit
2d28a626f2
2 changed files with 31 additions and 8 deletions
|
|
@ -286,6 +286,23 @@ proc replTcp(x: ThreadParams) {.thread.} =
|
||||||
stdoutSocket.send("\c\L")
|
stdoutSocket.send("\c\L")
|
||||||
stdoutSocket.close()
|
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.} =
|
proc replEpc(x: ThreadParams) {.thread.} =
|
||||||
var server = newSocket()
|
var server = newSocket()
|
||||||
let port = connectToNextFreePort(server, "localhost")
|
let port = connectToNextFreePort(server, "localhost")
|
||||||
|
|
@ -320,9 +337,10 @@ proc replEpc(x: ThreadParams) {.thread.} =
|
||||||
of ideSug, ideCon, ideDef, ideUse, ideDus, ideOutline, ideHighlight:
|
of ideSug, ideCon, ideDef, ideUse, ideDus, ideOutline, ideHighlight:
|
||||||
setVerbosity(0)
|
setVerbosity(0)
|
||||||
else: discard
|
else: discard
|
||||||
|
let cmd = $gIdeCmd & " " & args.argsToStr
|
||||||
if gLogging:
|
if gLogging:
|
||||||
logStr "MSG ARG: " & args.getStr
|
logStr "MSG CMD: " & cmd
|
||||||
requests.send($gIdeCmd & " " & args.getStr)
|
requests.send(cmd)
|
||||||
toEpc(client, uid)
|
toEpc(client, uid)
|
||||||
of "methods":
|
of "methods":
|
||||||
returnEpc(client, message[1].getNum, listEpc())
|
returnEpc(client, message[1].getNum, listEpc())
|
||||||
|
|
|
||||||
|
|
@ -17,7 +17,7 @@ const
|
||||||
|
|
||||||
template tpath(): untyped = getAppDir() / "tests"
|
template tpath(): untyped = getAppDir() / "tests"
|
||||||
|
|
||||||
proc parseTest(filename: string): Test =
|
proc parseTest(filename: string; epcMode=false): Test =
|
||||||
const cursorMarker = "#[!]#"
|
const cursorMarker = "#[!]#"
|
||||||
let nimsug = curDir & addFileExt("nimsuggest", ExeExt)
|
let nimsug = curDir & addFileExt("nimsuggest", ExeExt)
|
||||||
result.dest = getTempDir() / extractFilename(filename)
|
result.dest = getTempDir() / extractFilename(filename)
|
||||||
|
|
@ -31,7 +31,10 @@ proc parseTest(filename: string): Test =
|
||||||
for x in lines(filename):
|
for x in lines(filename):
|
||||||
let marker = x.find(cursorMarker)+1
|
let marker = x.find(cursorMarker)+1
|
||||||
if marker > 0:
|
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, "")
|
tmp.writeLine x.replace(cursorMarker, "")
|
||||||
else:
|
else:
|
||||||
tmp.writeLine x
|
tmp.writeLine x
|
||||||
|
|
@ -136,9 +139,11 @@ proc smartCompare(pattern, x: string): bool =
|
||||||
proc sendEpcStr(socket: Socket; cmd: string) =
|
proc sendEpcStr(socket: Socket; cmd: string) =
|
||||||
let s = cmd.find(' ')
|
let s = cmd.find(' ')
|
||||||
doAssert s > 0
|
doAssert s > 0
|
||||||
let cmd = "(call 567 " & cmd.substr(0, s) & escapeJson(cmd.substr(s+1)) & ")"
|
var args = cmd.substr(s+1)
|
||||||
socket.send toHex(cmd.len, 6)
|
if not args.startsWith("("): args = escapeJson(args)
|
||||||
socket.send cmd
|
let c = "(call 567 " & cmd.substr(0, s) & args & ")"
|
||||||
|
socket.send toHex(c.len, 6)
|
||||||
|
socket.send c
|
||||||
|
|
||||||
proc recvEpc(socket: Socket): string =
|
proc recvEpc(socket: Socket): string =
|
||||||
var L = newStringOfCap(6)
|
var L = newStringOfCap(6)
|
||||||
|
|
@ -216,7 +221,7 @@ proc doReport(filename, answer, resp: string; report: var string) =
|
||||||
report.add "\n But got: " & answer
|
report.add "\n But got: " & answer
|
||||||
|
|
||||||
proc runEpcTest(filename: string): int =
|
proc runEpcTest(filename: string): int =
|
||||||
let s = parseTest filename
|
let s = parseTest(filename, true)
|
||||||
for cmd in s.startup:
|
for cmd in s.startup:
|
||||||
if not runCmd(cmd, s.dest):
|
if not runCmd(cmd, s.dest):
|
||||||
quit "invalid command: " & cmd
|
quit "invalid command: " & cmd
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue