Allow -I to appear with other options. Fix #134

This commit is contained in:
Hackerpilot 2014-05-27 11:48:17 -07:00
parent 21576ca9a8
commit 059726b662
3 changed files with 39 additions and 43 deletions

View File

@ -73,15 +73,6 @@ int main(string[] args)
scope (exit) { socket.shutdown(SocketShutdown.BOTH); socket.close(); }
return sendRequest(socket, request) ? 0 : 1;
}
else if (importPaths.length > 0)
{
AutocompleteRequest request;
request.kind = RequestKind.addImport;
request.importPaths = importPaths.map!(a => absolutePath(a)).array;
TcpSocket socket = createSocket(port);
scope (exit) { socket.shutdown(SocketShutdown.BOTH); socket.close(); }
return sendRequest(socket, request) ? 0 : 1;
}
else if (cursorPos == size_t.max)
{
// cursor position is a required argument
@ -122,12 +113,19 @@ int main(string[] args)
request.importPaths = importPaths;
request.sourceCode = sourceCode;
request.cursorPosition = cursorPos;
if (importPaths.length > 0)
{
request.kind |= RequestKind.addImport;
request.importPaths = importPaths.map!(a => absolutePath(a)).array;
}
if (symbolLocation)
request.kind = RequestKind.symbolLocation;
request.kind |= RequestKind.symbolLocation;
else if (doc)
request.kind = RequestKind.doc;
request.kind |= RequestKind.doc;
else
request.kind = RequestKind.autocomplete;
request.kind |= RequestKind.autocomplete;
// Send message to server
TcpSocket socket = createSocket(port);

View File

@ -111,18 +111,19 @@ enum CompletionType : string
*/
enum RequestKind : ubyte
{
uninitialized = 0b00000000,
/// Autocompletion
autocomplete,
autocomplete = 0b00000001,
/// Clear the completion cache
clearCache,
clearCache = 0b00000010,
/// Add import directory to server
addImport,
addImport = 0b00000100,
/// Shut down the server
shutdown,
shutdown = 0b00001000,
/// Get declaration location of given symbol
symbolLocation,
symbolLocation = 0b00010000,
/// Get the doc comments for the symbol
doc
doc = 0b00100000,
}
/**

View File

@ -145,32 +145,28 @@ int main(string[] args)
AutocompleteRequest request;
msgpack.unpack(buffer[size_t.sizeof .. bytesReceived], request);
final switch (request.kind)
{
case RequestKind.addImport:
if (request.kind & RequestKind.addImport)
ModuleCache.addImportPaths(request.importPaths);
break;
case RequestKind.clearCache:
if (request.kind & RequestKind.clearCache)
{
Log.info("Clearing cache.");
ModuleCache.clear();
break;
case RequestKind.shutdown:
}
else if (request.kind & RequestKind.shutdown)
{
Log.info("Shutting down.");
break serverLoop;
case RequestKind.autocomplete:
// try
// {
AutocompleteResponse response = complete(request);
ubyte[] responseBytes = msgpack.pack(response);
s.send(responseBytes);
// }
// catch (Exception e)
// {
// Log.error("Could not handle autocomplete request due to an exception:",
// e.msg);
// }
break;
case RequestKind.doc:
}
else if (request.kind & RequestKind.autocomplete)
{
Log.info("Getting completions");
AutocompleteResponse response = complete(request);
ubyte[] responseBytes = msgpack.pack(response);
s.send(responseBytes);
}
else if (request.kind & RequestKind.doc)
{
Log.info("Getting doc comment");
try
{
AutocompleteResponse response = getDoc(request);
@ -181,9 +177,9 @@ int main(string[] args)
{
Log.error("Could not get DDoc information", e.msg);
}
break;
case RequestKind.symbolLocation:
}
else if (request.kind & RequestKind.symbolLocation)
{
try
{
AutocompleteResponse response = findDeclaration(request);
@ -194,8 +190,9 @@ int main(string[] args)
{
Log.error("Could not get symbol location", e.msg);
}
break;
}
else
Log.error("Unknown request type");
Log.info("Request processed in ", requestWatch.peek().to!("msecs", float), " milliseconds");
}
return 0;