summary refs log tree commit diff stats
path: root/compiler/msgs.nim
diff options
context:
space:
mode:
authorAraq <rumpf_a@web.de>2012-10-24 01:13:44 +0200
committerAraq <rumpf_a@web.de>2012-10-24 01:13:44 +0200
commitde338526ecaaf86072b7d7c8053db3815238bc1c (patch)
treea1dcfbfff5c9bbb308e7e7326000c27388340ea0 /compiler/msgs.nim
parentb1c44c9ae12f14162dcff060d786fd478349bf94 (diff)
downloadNim-de338526ecaaf86072b7d7c8053db3815238bc1c.tar.gz
caas barely works now
Diffstat (limited to 'compiler/msgs.nim')
-rwxr-xr-xcompiler/msgs.nim15
1 files changed, 11 insertions, 4 deletions
diff --git a/compiler/msgs.nim b/compiler/msgs.nim
index 0d9a05240..50d7e2904 100755
--- a/compiler/msgs.nim
+++ b/compiler/msgs.nim
@@ -413,6 +413,7 @@ type
     fileIndex*: int32
     
   ERecoverableError* = object of EInvalidValue
+  ESuggestDone* = object of EBase
 
 var
   filenameToIndexTbl = initTable[string, int32]()
@@ -471,11 +472,15 @@ var
 proc SuggestWriteln*(s: string) = 
   if gSilence == 0: 
     if isNil(stdoutSocket): Writeln(stdout, s)
-    else: stdoutSocket.send(s & "\c\L")
+    else: 
+      Writeln(stdout, s)
+      stdoutSocket.send(s & "\c\L")
     
 proc SuggestQuit*() =
   if isNil(stdoutSocket): quit(0)
-  else: stdoutSocket.send("\c\L")
+  else: 
+    stdoutSocket.send("\c\L")
+    raise newException(ESuggestDone, "suggest done")
   
 # this format is understood by many text editors: it is the same that
 # Borland and Freepascal use
@@ -599,8 +604,10 @@ proc handleError(msg: TMsgKind, eh: TErrorHandling, s: string) =
     maybeTrace()
     inc(gErrorCounter)
     options.gExitcode = 1'i8
-    if gErrorCounter >= gErrorMax or eh == doAbort: 
-      quit(1)                        # one error stops the compiler
+    if gErrorCounter >= gErrorMax: 
+      quit(1)
+    elif eh == doAbort and gCmd != cmdIdeTools:
+      quit(1)
     elif eh == doRaise:
       raiseRecoverableError(s)