Skip to content
This repository was archived by the owner on Sep 6, 2021. It is now read-only.

Commit 0194e1e

Browse files
committed
Code cleanup
1 parent 7867779 commit 0194e1e

File tree

5 files changed

+74
-33
lines changed

5 files changed

+74
-33
lines changed

src/extensions/default/PhpTooling/PHPSymbolProviders.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
*/
2323

2424
/*jslint regexp: true */
25-
25+
/*eslint no-invalid-this: 0, max-len: 0*/
2626
define(function (require, exports, module) {
2727
"use strict";
2828

@@ -34,6 +34,12 @@ define(function (require, exports, module) {
3434

3535
var SymbolKind = QuickOpen.SymbolKind;
3636

37+
function setClient(client) {
38+
if (client) {
39+
this.client = client;
40+
}
41+
}
42+
3743
function convertRangePosToEditorPos(rangePos) {
3844
return {
3945
line: rangePos.line,
@@ -112,6 +118,8 @@ define(function (require, exports, module) {
112118
this.client = client;
113119
}
114120

121+
DocumentSymbolsProvider.prototype.setClient = setClient;
122+
115123
DocumentSymbolsProvider.prototype.match = function (query) {
116124
return query.startsWith("@");
117125
};
@@ -171,6 +179,8 @@ define(function (require, exports, module) {
171179
this.client = client;
172180
}
173181

182+
ProjectSymbolsProvider.prototype.setClient = setClient;
183+
174184
ProjectSymbolsProvider.prototype.match = function (query) {
175185
return query.startsWith("#");
176186
};

src/extensions/default/PhpTooling/main.js

Lines changed: 40 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -62,13 +62,14 @@ define(function (require, exports, module) {
6262
phpServerRunning = false,
6363
serverCapabilities,
6464
currentRootPath,
65-
chProvider,
66-
phProvider,
67-
lProvider,
68-
jdProvider,
69-
dSymProvider,
70-
pSymProvider,
71-
refProvider;
65+
chProvider = null,
66+
phProvider = null,
67+
lProvider = null,
68+
jdProvider = null,
69+
dSymProvider = null,
70+
pSymProvider = null,
71+
refProvider = null,
72+
providersRegistered = false;
7273

7374
PreferencesManager.definePreference("php", "object", phpConfig, {
7475
description: Strings.DESCRIPTION_PHP_TOOLING_CONFIGURATION
@@ -104,11 +105,22 @@ define(function (require, exports, module) {
104105
}
105106
};
106107

108+
function resetClientInProviders() {
109+
var logErr = "PhpTooling: Can't reset client for : ";
110+
chProvider ? chProvider.setClient(_client) : console.log(logErr, "CodeHintsProvider");
111+
phProvider ? phProvider.setClient(_client) : console.log(logErr, "ParameterHintsProvider");
112+
lProvider ? lProvider.setClient(_client) : console.log(logErr, "LintingProvider");
113+
jdProvider ? jdProvider.setClient(_client) : console.log(logErr, "JumpToDefProvider");
114+
dSymProvider ? dSymProvider.setClient(_client) : console.log(logErr, "DocumentSymbolsProvider");
115+
pSymProvider ? pSymProvider.setClient(_client) : console.log(logErr, "ProjectSymbolsProvider");
116+
refProvider ? refProvider.setClient(_client) : console.log(logErr, "FindReferencesProvider");
117+
}
118+
107119
function registerToolingProviders() {
108120
chProvider = new CodeHintsProvider(_client),
109-
phProvider = new DefaultProviders.ParameterHintsProvider(_client),
110-
lProvider = new DefaultProviders.LintingProvider(_client),
111-
jdProvider = new DefaultProviders.JumpToDefProvider(_client);
121+
phProvider = new DefaultProviders.ParameterHintsProvider(_client),
122+
lProvider = new DefaultProviders.LintingProvider(_client),
123+
jdProvider = new DefaultProviders.JumpToDefProvider(_client);
112124
dSymProvider = new SymbolProviders.DocumentSymbolsProvider(_client);
113125
pSymProvider = new SymbolProviders.ProjectSymbolsProvider(_client);
114126
refProvider = new DefaultProviders.ReferencesProvider(_client);
@@ -148,6 +160,8 @@ define(function (require, exports, module) {
148160
CommandManager.get(Commands.NAVIGATE_GOTO_DEFINITION_PROJECT).setEnabled(true);
149161

150162
_client.addOnCodeInspection(lProvider.setInspectionResults.bind(lProvider));
163+
164+
providersRegistered = true;
151165
}
152166

153167
function addEventHandlers() {
@@ -221,7 +235,13 @@ define(function (require, exports, module) {
221235
function handlePostPhpServerStart() {
222236
if (!phpServerRunning) {
223237
phpServerRunning = true;
224-
registerToolingProviders();
238+
239+
if (providersRegistered) {
240+
resetClientInProviders();
241+
} else {
242+
registerToolingProviders();
243+
}
244+
225245
addEventHandlers();
226246
EditorManager.off("activeEditorChange.php");
227247
LanguageManager.off("languageModified.php");
@@ -275,8 +295,13 @@ define(function (require, exports, module) {
275295
}
276296
}
277297

278-
function initiateService() {
279-
console.log("Php tooling: Starting the service");
298+
function initiateService(onAppReady) {
299+
if (onAppReady) {
300+
console.log("Php tooling: Starting the service");
301+
} else {
302+
console.log("Php tooling: Something went wrong. Restarting the service");
303+
}
304+
280305
phpServerRunning = false;
281306
LanguageTools.initiateToolingService(clientName, clientFilePath, ['php']).done(function (client) {
282307
_client = client;
@@ -291,8 +316,8 @@ define(function (require, exports, module) {
291316
}
292317

293318
AppInit.appReady(function () {
294-
initiateService();
295-
ClientLoader.on("clientsReloaded", initiateService);
319+
initiateService(true);
320+
ClientLoader.on("languageClientModuleInitialized", initiateService);
296321
});
297322

298323
//Only for Unit testing

src/languageTools/ClientLoader.js

Lines changed: 2 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -45,9 +45,7 @@ define(function (require, exports, module) {
4545
clientInfoLoadedPromise = null,
4646
//Clients that have to be loaded once the LanguageClient info is successfully loaded on the
4747
//node side.
48-
pendingClientsToBeLoaded = [],
49-
//list of the client which have to be loaded
50-
clientMap = {};
48+
pendingClientsToBeLoaded = [];
5149

5250
function syncPrefsWithDomain(languageToolsPrefs) {
5351
if (clientInfoDomain) {
@@ -104,7 +102,6 @@ define(function (require, exports, module) {
104102
function initiateLanguageClient(clientName, clientFilePath) {
105103
var result = $.Deferred();
106104

107-
clientMap[clientName] = clientFilePath;
108105
//Only load clients after the LanguageClient Info has been initialized
109106
if (!clientInfoLoadedPromise || clientInfoLoadedPromise.state() === "pending") {
110107
var pendingClient = {
@@ -129,14 +126,7 @@ define(function (require, exports, module) {
129126
pendingClient.load();
130127
});
131128
} else {
132-
//the node process might have restarted, so try loading all the clients again
133-
// console.log("Reloading clients due to Node process crash...");
134-
// var clients = Object.keys(clientMap);
135-
// clients.forEach(function (client) {
136-
// var clientPromise = $.Deferred();
137-
// _clientLoader(client, clientMap[client], clientPromise);
138-
// });
139-
exports.trigger("clientsReloaded");
129+
exports.trigger("languageClientModuleInitialized");
140130
}
141131
pendingClientsToBeLoaded = null;
142132
}, function () {

src/languageTools/DefaultProviders.js

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323

2424
/*global Map*/
2525
/* eslint-disable indent */
26-
/* eslint max-len: ["error", { "code": 200 }]*/
26+
/* eslint max-len: ["error", { "code": 200 }], no-invalid-this: 0*/
2727
define(function (require, exports, module) {
2828
"use strict";
2929

@@ -44,12 +44,20 @@ define(function (require, exports, module) {
4444

4545
ExtensionUtils.loadStyleSheet(module, "styles/default_provider_style.css");
4646

47+
function setClient(client) {
48+
if (client) {
49+
this.client = client;
50+
}
51+
}
52+
4753
function CodeHintsProvider(client) {
4854
this.client = client;
4955
this.query = "";
5056
this.ignoreQuery = ["-", "->", ">", ":", "::", "(", "()", ")", "[", "[]", "]", "{", "{}", "}"];
5157
}
5258

59+
CodeHintsProvider.prototype.setClient = setClient;
60+
5361
function formatTypeDataForToken($hintObj, token) {
5462
$hintObj.addClass('brackets-hints-with-type-details');
5563
if (token.detail) {
@@ -197,6 +205,8 @@ define(function (require, exports, module) {
197205
this.client = client;
198206
}
199207

208+
ParameterHintsProvider.prototype.setClient = setClient;
209+
200210
ParameterHintsProvider.prototype.hasParameterHints = function (editor, implicitChar) {
201211
if (!this.client) {
202212
return false;
@@ -273,6 +283,8 @@ define(function (require, exports, module) {
273283
this.client = client;
274284
}
275285

286+
JumpToDefProvider.prototype.setClient = setClient;
287+
276288
JumpToDefProvider.prototype.canJumpToDef = function (editor, implicitChar) {
277289
if (!this.client) {
278290
return false;
@@ -342,6 +354,8 @@ define(function (require, exports, module) {
342354
this._validateOnType = false;
343355
}
344356

357+
LintingProvider.prototype.setClient = setClient;
358+
345359
LintingProvider.prototype.clearExistingResults = function (filePath) {
346360
var filePathProvided = !!filePath;
347361

@@ -451,6 +465,8 @@ define(function (require, exports, module) {
451465
this.client = client;
452466
}
453467

468+
ReferencesProvider.prototype.setClient = setClient;
469+
454470
ReferencesProvider.prototype.hasReferences = function() {
455471
if (!this.client) {
456472
return false;

src/languageTools/node/RegisterLanguageClientInfo.js

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -285,18 +285,18 @@ function init(domainManager) {
285285
],
286286
[]
287287
);
288-
288+
289289
domainManager.registerEvent(
290290
domainName,
291291
"requestLanguageClientInfo",
292-
[]
292+
[] //no parameters
293293
);
294-
294+
295295
function requestInfo() {
296296
domainManager.emitEvent(domainName, "requestLanguageClientInfo", []);
297297
}
298298
//Allow the handler enough time to get registered on Brackets side.
299-
setTimeout(requestInfo, 500);
299+
setTimeout(requestInfo, 250);
300300
}
301301

302302
exports.init = init;

0 commit comments

Comments
 (0)