Fix issues in the client.

This commit is contained in:
Hackerpilot 2014-05-29 18:46:04 -07:00
parent b516277b0a
commit 7101d7a64b
3 changed files with 21 additions and 12 deletions

View File

@ -57,6 +57,8 @@ int main(string[] args)
return 1;
}
AutocompleteRequest request;
if (help)
{
printHelp(args[0]);
@ -64,7 +66,6 @@ int main(string[] args)
}
else if (shutdown || clearCache)
{
AutocompleteRequest request;
if (shutdown)
request.kind = RequestKind.shutdown;
else if (clearCache)
@ -73,6 +74,19 @@ int main(string[] args)
scope (exit) { socket.shutdown(SocketShutdown.BOTH); socket.close(); }
return sendRequest(socket, request) ? 0 : 1;
}
else if (importPaths.length > 0)
{
request.kind |= RequestKind.addImport;
request.importPaths = importPaths.map!(a => absolutePath(a)).array;
if (cursorPos == size_t.max)
{
TcpSocket socket = createSocket(port);
scope (exit) { socket.shutdown(SocketShutdown.BOTH); socket.close(); }
if (!sendRequest(socket, request))
return 1;
return 0;
}
}
else if (cursorPos == size_t.max)
{
// cursor position is a required argument
@ -107,19 +121,11 @@ int main(string[] args)
f.rawRead(sourceCode);
}
// Create message
AutocompleteRequest request;
request.fileName = fileName;
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;
else if (doc)

View File

@ -141,7 +141,10 @@ struct ModuleCache
import std.stdio;
import std.typecons;
File f = File(cachedLocation);
ubyte[] source = cast(ubyte[]) Mallocator.it.allocate(cast(size_t)f.size);
immutable fileSize = cast(size_t)f.size;
if (fileSize == 0)
return symbols;
ubyte[] source = cast(ubyte[]) Mallocator.it.allocate(fileSize);
f.rawRead(source);
LexerConfig config;
config.fileName = cachedLocation;

View File

@ -145,8 +145,6 @@ int main(string[] args)
AutocompleteRequest request;
msgpack.unpack(buffer[size_t.sizeof .. bytesReceived], request);
if (request.kind & RequestKind.addImport)
ModuleCache.addImportPaths(request.importPaths);
if (request.kind & RequestKind.clearCache)
{
Log.info("Clearing cache.");
@ -157,6 +155,8 @@ int main(string[] args)
Log.info("Shutting down.");
break serverLoop;
}
if (request.kind & RequestKind.addImport)
ModuleCache.addImportPaths(request.importPaths);
else if (request.kind & RequestKind.autocomplete)
{
Log.info("Getting completions");