Allow -I to appear with other options. Fix #134
This commit is contained in:
parent
21576ca9a8
commit
059726b662
22
client.d
22
client.d
|
@ -73,15 +73,6 @@ int main(string[] args)
|
||||||
scope (exit) { socket.shutdown(SocketShutdown.BOTH); socket.close(); }
|
scope (exit) { socket.shutdown(SocketShutdown.BOTH); socket.close(); }
|
||||||
return sendRequest(socket, request) ? 0 : 1;
|
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)
|
else if (cursorPos == size_t.max)
|
||||||
{
|
{
|
||||||
// cursor position is a required argument
|
// cursor position is a required argument
|
||||||
|
@ -122,12 +113,19 @@ int main(string[] args)
|
||||||
request.importPaths = importPaths;
|
request.importPaths = importPaths;
|
||||||
request.sourceCode = sourceCode;
|
request.sourceCode = sourceCode;
|
||||||
request.cursorPosition = cursorPos;
|
request.cursorPosition = cursorPos;
|
||||||
|
|
||||||
|
if (importPaths.length > 0)
|
||||||
|
{
|
||||||
|
request.kind |= RequestKind.addImport;
|
||||||
|
request.importPaths = importPaths.map!(a => absolutePath(a)).array;
|
||||||
|
}
|
||||||
|
|
||||||
if (symbolLocation)
|
if (symbolLocation)
|
||||||
request.kind = RequestKind.symbolLocation;
|
request.kind |= RequestKind.symbolLocation;
|
||||||
else if (doc)
|
else if (doc)
|
||||||
request.kind = RequestKind.doc;
|
request.kind |= RequestKind.doc;
|
||||||
else
|
else
|
||||||
request.kind = RequestKind.autocomplete;
|
request.kind |= RequestKind.autocomplete;
|
||||||
|
|
||||||
// Send message to server
|
// Send message to server
|
||||||
TcpSocket socket = createSocket(port);
|
TcpSocket socket = createSocket(port);
|
||||||
|
|
13
messages.d
13
messages.d
|
@ -111,18 +111,19 @@ enum CompletionType : string
|
||||||
*/
|
*/
|
||||||
enum RequestKind : ubyte
|
enum RequestKind : ubyte
|
||||||
{
|
{
|
||||||
|
uninitialized = 0b00000000,
|
||||||
/// Autocompletion
|
/// Autocompletion
|
||||||
autocomplete,
|
autocomplete = 0b00000001,
|
||||||
/// Clear the completion cache
|
/// Clear the completion cache
|
||||||
clearCache,
|
clearCache = 0b00000010,
|
||||||
/// Add import directory to server
|
/// Add import directory to server
|
||||||
addImport,
|
addImport = 0b00000100,
|
||||||
/// Shut down the server
|
/// Shut down the server
|
||||||
shutdown,
|
shutdown = 0b00001000,
|
||||||
/// Get declaration location of given symbol
|
/// Get declaration location of given symbol
|
||||||
symbolLocation,
|
symbolLocation = 0b00010000,
|
||||||
/// Get the doc comments for the symbol
|
/// Get the doc comments for the symbol
|
||||||
doc
|
doc = 0b00100000,
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
41
server.d
41
server.d
|
@ -145,32 +145,28 @@ int main(string[] args)
|
||||||
|
|
||||||
AutocompleteRequest request;
|
AutocompleteRequest request;
|
||||||
msgpack.unpack(buffer[size_t.sizeof .. bytesReceived], request);
|
msgpack.unpack(buffer[size_t.sizeof .. bytesReceived], request);
|
||||||
final switch (request.kind)
|
if (request.kind & RequestKind.addImport)
|
||||||
{
|
|
||||||
case RequestKind.addImport:
|
|
||||||
ModuleCache.addImportPaths(request.importPaths);
|
ModuleCache.addImportPaths(request.importPaths);
|
||||||
break;
|
if (request.kind & RequestKind.clearCache)
|
||||||
case RequestKind.clearCache:
|
{
|
||||||
Log.info("Clearing cache.");
|
Log.info("Clearing cache.");
|
||||||
ModuleCache.clear();
|
ModuleCache.clear();
|
||||||
break;
|
}
|
||||||
case RequestKind.shutdown:
|
else if (request.kind & RequestKind.shutdown)
|
||||||
|
{
|
||||||
Log.info("Shutting down.");
|
Log.info("Shutting down.");
|
||||||
break serverLoop;
|
break serverLoop;
|
||||||
case RequestKind.autocomplete:
|
}
|
||||||
// try
|
else if (request.kind & RequestKind.autocomplete)
|
||||||
// {
|
{
|
||||||
|
Log.info("Getting completions");
|
||||||
AutocompleteResponse response = complete(request);
|
AutocompleteResponse response = complete(request);
|
||||||
ubyte[] responseBytes = msgpack.pack(response);
|
ubyte[] responseBytes = msgpack.pack(response);
|
||||||
s.send(responseBytes);
|
s.send(responseBytes);
|
||||||
// }
|
}
|
||||||
// catch (Exception e)
|
else if (request.kind & RequestKind.doc)
|
||||||
// {
|
{
|
||||||
// Log.error("Could not handle autocomplete request due to an exception:",
|
Log.info("Getting doc comment");
|
||||||
// e.msg);
|
|
||||||
// }
|
|
||||||
break;
|
|
||||||
case RequestKind.doc:
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
AutocompleteResponse response = getDoc(request);
|
AutocompleteResponse response = getDoc(request);
|
||||||
|
@ -181,9 +177,9 @@ int main(string[] args)
|
||||||
{
|
{
|
||||||
Log.error("Could not get DDoc information", e.msg);
|
Log.error("Could not get DDoc information", e.msg);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
break;
|
else if (request.kind & RequestKind.symbolLocation)
|
||||||
case RequestKind.symbolLocation:
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
AutocompleteResponse response = findDeclaration(request);
|
AutocompleteResponse response = findDeclaration(request);
|
||||||
|
@ -194,8 +190,9 @@ int main(string[] args)
|
||||||
{
|
{
|
||||||
Log.error("Could not get symbol location", e.msg);
|
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");
|
Log.info("Request processed in ", requestWatch.peek().to!("msecs", float), " milliseconds");
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue