diff options
author | Araq <rumpf_a@web.de> | 2015-01-29 03:08:41 +0100 |
---|---|---|
committer | Araq <rumpf_a@web.de> | 2015-01-29 03:08:41 +0100 |
commit | 8710a3738470e19e0d05c8e68db0803100caf3d8 (patch) | |
tree | 2169fe70ef9b4acf33379d5d6e33ffbd0c9d06ec /compiler/nimsuggest/nimsuggest.nim | |
parent | ebda8e89e15e3af88822fb2dd57c108830609ec6 (diff) | |
download | Nim-8710a3738470e19e0d05c8e68db0803100caf3d8.tar.gz |
nimsuggest: sane dirty buffer handling
Diffstat (limited to 'compiler/nimsuggest/nimsuggest.nim')
-rw-r--r-- | compiler/nimsuggest/nimsuggest.nim | 34 |
1 files changed, 18 insertions, 16 deletions
diff --git a/compiler/nimsuggest/nimsuggest.nim b/compiler/nimsuggest/nimsuggest.nim index 3a447effb..6edea06e5 100644 --- a/compiler/nimsuggest/nimsuggest.nim +++ b/compiler/nimsuggest/nimsuggest.nim @@ -37,7 +37,7 @@ var const seps = {':', ';', ' ', '\t'} - Help = "usage: sug|con|def|use dirtybuffer.nim[;originalfile.nim]:line:col\n"& + Help = "usage: sug|con|def|use file.nim[;dirtyfile.nim]:line:col\n"& "type 'quit' to quit\n" & "type 'debug' to toggle debug mode on/off\n" & "type 'terse' to toggle terse mode on/off" @@ -59,6 +59,10 @@ proc action(cmd: string) = incl(gGlobalOptions, sw) return + template err() = + echo Help + return + var opc = "" var i = parseIdent(cmd, opc, 0) case opc.normalize @@ -71,35 +75,33 @@ proc action(cmd: string) = of "quit": quit() of "debug": toggle optIdeDebug of "terse": toggle optIdeTerse - else: - echo Help - return + else: err() var dirtyfile = "" var orig = "" - i = parseQuoted(cmd, dirtyfile, i) + i = parseQuoted(cmd, orig, i) if cmd[i] == ';': - i = parseQuoted(cmd, orig, i+1) + i = parseQuoted(cmd, dirtyfile, i+1) i += skipWhile(cmd, seps, i) var line, col = -1 i += parseInt(cmd, line, i) i += skipWhile(cmd, seps, i) i += parseInt(cmd, col, i) - if dirtyfile.len != 0: - gDirtyBufferIdx = dirtyfile.fileInfoIdx - gDirtyOriginalIdx = if orig.len != 0: orig.fileInfoIdx else: gDirtyBufferIdx - else: - discard "use the same filename as in the last command" - resetModule gDirtyBufferIdx - if gDirtyBufferIdx != gProjectMainIdx: + + if orig.len == 0: err() + let dirtyIdx = orig.fileInfoIdx + + if dirtyfile.len != 0: msgs.setDirtyFile(dirtyIdx, dirtyfile) + else: msgs.setDirtyFile(dirtyIdx, nil) + + resetModule dirtyIdx + if dirtyIdx != gProjectMainIdx: resetModule gProjectMainIdx - gTrackPos = newLineInfo(gDirtyBufferIdx, line, col) + gTrackPos = newLineInfo(dirtyIdx, line, col) #echo dirtyfile, gDirtyBufferIdx, " project ", gProjectMainIdx gErrorCounter = 0 compileProject() proc serve() = - gDirtyBufferIdx = gProjectMainIdx - gDirtyOriginalIdx = gProjectMainIdx # do not stop after the first error: msgs.gErrorMax = high(int) if gUseStdin: |