summary refs log tree commit diff stats
path: root/tools
diff options
context:
space:
mode:
authorAndreas Rumpf <rumpf_a@web.de>2018-11-15 11:01:55 +0100
committerAndreas Rumpf <rumpf_a@web.de>2018-11-15 11:36:35 +0100
commit9eb9a57ffd9bec1f7ba2a92d7dcd80c8366fbc33 (patch)
tree3f59111e96e58df76ebdfc1163b376e11be48742 /tools
parent6e003eeecb364f26b6f051d9d6e643322a819115 (diff)
downloadNim-9eb9a57ffd9bec1f7ba2a92d7dcd80c8366fbc33.tar.gz
nimfind: improvements
Diffstat (limited to 'tools')
-rw-r--r--tools/nimfind.nim9
1 files changed, 6 insertions, 3 deletions
diff --git a/tools/nimfind.nim b/tools/nimfind.nim
index 097ee599c..c089ea823 100644
--- a/tools/nimfind.nim
+++ b/tools/nimfind.nim
@@ -77,6 +77,7 @@ proc createDb(db: DbConn) =
     foreign key (nimid) references syms(nimid)
   );
   """)
+  db.exec sql"create index if not exists UsagesIx on usages(file, line);"
 
 proc toDbFileId*(db: DbConn; conf: ConfigRef; fileIdx: FileIndex): int =
   if fileIdx == FileIndex(-1): return -1
@@ -166,8 +167,10 @@ proc mainCommand(graph: ModuleGraph) =
     add(conf.searchPaths, conf.libpath)
     # do not stop after the first error:
     conf.errorMax = high(int)
-    compileProject(graph)
-    close(FinderRef(graph.backend).db)
+    try:
+      compileProject(graph)
+    finally:
+      close(FinderRef(graph.backend).db)
   performSearch(conf, dbfile)
 
 proc processCmdLine*(pass: TCmdLinePass, cmd: string; conf: ConfigRef) =
@@ -194,7 +197,7 @@ proc processCmdLine*(pass: TCmdLinePass, cmd: string; conf: ConfigRef) =
         if conf.projectName.len == 0: conf.projectName = info[0]
         try:
           conf.m.trackPos = newLineInfo(conf, AbsoluteFile info[0],
-                                        parseInt(info[1]), parseInt(info[2]))
+                                        parseInt(info[1]), parseInt(info[2])-1)
         except ValueError:
           quit "invalid command line"
       else: