From eeffa0163fba932f5e0a16023ef3c4b833b36358 Mon Sep 17 00:00:00 2001 From: alaviss Date: Fri, 11 Oct 2019 14:55:15 +0700 Subject: nimsuggest: add option to force finding the project file (#12409) --- nimsuggest/nimsuggest.nim | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'nimsuggest/nimsuggest.nim') diff --git a/nimsuggest/nimsuggest.nim b/nimsuggest/nimsuggest.nim index aa45a64e9..26cb0ce31 100644 --- a/nimsuggest/nimsuggest.nim +++ b/nimsuggest/nimsuggest.nim @@ -48,6 +48,7 @@ Options: --maxresults:N limit the number of suggestions to N --tester implies --stdin and outputs a line '""" & DummyEof & """' for the tester + --find attempts to find the project file of the current project The server then listens to the connection and takes line-based commands. @@ -549,6 +550,7 @@ proc mainCommand(graph: ModuleGraph) = proc processCmdLine*(pass: TCmdLinePass, cmd: string; conf: ConfigRef) = var p = parseopt.initOptParser(cmd) + var findProject = false while true: parseopt.next(p) case p.kind @@ -594,6 +596,8 @@ proc processCmdLine*(pass: TCmdLinePass, cmd: string; conf: ConfigRef) = gRefresh = true of "maxresults": conf.suggestMaxResults = parseInt(p.val) + of "find": + findProject = true else: processSwitch(pass, p, conf) of cmdArgument: let a = unixToNativePath(p.key) @@ -602,7 +606,12 @@ proc processCmdLine*(pass: TCmdLinePass, cmd: string; conf: ConfigRef) = # don't make it worse, report the error the old way: if conf.projectName.len == 0: conf.projectName = a else: - conf.projectName = a + if findProject: + conf.projectName = findProjectNimFile(conf, a.parentDir()) + if conf.projectName.len == 0: + conf.projectName = a + else: + conf.projectName = a # if processArgument(pass, p, argsCount): break proc handleCmdLine(cache: IdentCache; conf: ConfigRef) = -- cgit 1.4.1-2-gfad0