@Override protected GocodeServerInstance doCreateServerInstance(IOperationMonitor om) throws CommonException, OperationCancellation { Path gocodePath = getServerPath(); ArrayList2<String> commandLine = new ArrayList2<String>(); commandLine.add(gocodePath.toString()); commandLine.add("-s"); if (GocodeCompletionOperation.USE_TCP) { commandLine.add("-sock=tcp"); } LangCore.logInfo( "Starting gocode server: " + DebugPlugin.renderArguments(commandLine.toArray(String.class), null)); ProcessBuilder pb = new ProcessBuilder(commandLine); IToolOperationMonitor opMonitor = toolMgr.startNewOperation(ProcessStartKind.ENGINE_SERVER, true, false); String prefixText = "==== Starting gocode server ====\n"; gocodeSetEnableBuiltins(gocodePath, om, opMonitor, prefixText); ExternalProcessNotifyingHelper process = toolMgr.new RunToolTask(opMonitor, prefixText, null, pb, om).startProcess(); return new GocodeServerInstance(gocodePath, process); }