Skip to content

Commit d8b0d61

Browse files
committed
Adapt to the new version for intelephense
1 parent 34711a7 commit d8b0d61

File tree

3 files changed

+253
-87
lines changed

3 files changed

+253
-87
lines changed

package.json

+7-7
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "coc-phpls",
3-
"version": "2.0.6",
3+
"version": "2.0.7",
44
"description": "PHP language server extension for coc.nvim",
55
"main": "lib/index.js",
66
"publisher": "marlonfan",
@@ -191,17 +191,17 @@
191191
"@chemzqm/tslint-config": "^1.0.18",
192192
"@types/fs-extra": "^8.0.0",
193193
"@types/glob": "^7.1.1",
194-
"@types/node": "^12.0.12",
195-
"coc.nvim": "^0.0.72",
196-
"rimraf": "^2.6.3",
194+
"@types/node": "^12.7.1",
195+
"coc.nvim": "^0.0.73",
196+
"rimraf": "^3.0.0",
197197
"tslint": "^5.18.0",
198-
"typescript": "^3.5.2"
198+
"typescript": "^3.5.3"
199199
},
200200
"dependencies": {
201201
"glob": "^7.1.4",
202-
"intelephense": "^1.1.1",
202+
"intelephense": "^1.1.6",
203203
"tslib": "^1.10.0",
204-
"vscode": "^1.1.35",
204+
"vscode": "^1.1.36",
205205
"vscode-languageclient": "^5.2.1",
206206
"vscode-languageserver-protocol": "^3.14.1"
207207
}

src/index.ts

+44-17
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ import {
1818
Position,
1919
CompletionList,
2020
NotificationType,
21-
RequestType
21+
RequestType,
22+
Disposable
2223
} from "vscode-languageserver-protocol";
2324

2425
import { CancellationToken } from "vscode-jsonrpc";
@@ -31,12 +32,18 @@ const INDEX_WORKSPACE_REQUEST = new RequestType('indexWorkspace');
3132
const CANCEL_INDEXING_REQUEST = new RequestType('cancelIndexing');
3233

3334
let languageClient: LanguageClient;
35+
let extensionContext: ExtensionContext;
36+
let clientDisposable:Disposable;
37+
let file: string;
3438

3539
export async function activate(context: ExtensionContext): Promise<void> {
40+
extensionContext = context;
41+
3642
let c = workspace.getConfiguration();
3743
const config = c.get("phpls") as any;
3844
const enable = config.enable;
39-
const file = require.resolve("intelephense");
45+
46+
file = require.resolve("intelephense");
4047

4148
if (enable === false) return;
4249
if (!file) {
@@ -47,6 +54,26 @@ export async function activate(context: ExtensionContext): Promise<void> {
4754
return;
4855
}
4956

57+
languageClient = createClient(context, false);
58+
59+
let indexWorkspaceDisposable = commands.registerCommand('intelephense.index.workspace', indexWorkspace);
60+
let cancelIndexingDisposable = commands.registerCommand('intelephense.cancel.indexing', cancelIndexing);
61+
62+
context.subscriptions.push(
63+
indexWorkspaceDisposable,
64+
cancelIndexingDisposable,
65+
);
66+
67+
clientDisposable = languageClient.start();
68+
}
69+
70+
function fixItem(item: CompletionItem): void {
71+
if (/^\\\w+/.test(item.insertText) && !/^(\\\w+){2,}/.test(item.insertText)) {
72+
item.insertText = item.insertText.replace('\\', '');
73+
}
74+
}
75+
76+
function createClient(context: ExtensionContext, clearCache: boolean) {
5077
// The debug options for the server
5178
let debugOptions = {
5279
execArgv: ["--nolazy", "--inspect=6039", "--trace-warnings", "--preserve-symlinks"],
@@ -70,7 +97,7 @@ export async function activate(context: ExtensionContext): Promise<void> {
7097
],
7198
initializationOptions: {
7299
storagePath: context.storagePath,
73-
clearCache: false
100+
clearCache: clearCache
74101
},
75102
middleware: {
76103
provideCompletionItem: (
@@ -111,9 +138,7 @@ export async function activate(context: ExtensionContext): Promise<void> {
111138
clientOptions
112139
);
113140

114-
let ready = languageClient.onReady();
115-
116-
ready.then(() => {
141+
languageClient.onReady().then(() => {
117142
languageClient.info('Intelephense ' + VERSION);
118143

119144
let startedTime: Date;
@@ -131,18 +156,20 @@ export async function activate(context: ExtensionContext): Promise<void> {
131156
});
132157
});
133158

134-
let indexWorkspaceDisposable = commands.registerCommand('intelephense.index.workspace', () => languageClient.sendRequest(INDEX_WORKSPACE_REQUEST.method));
135-
let cancelIndexingDisposable = commands.registerCommand('intelephense.cancel.indexing', () => languageClient.sendRequest(CANCEL_INDEXING_REQUEST.method));
159+
return languageClient;
160+
}
136161

137-
context.subscriptions.push(
138-
services.registLanguageClient(languageClient),
139-
indexWorkspaceDisposable,
140-
cancelIndexingDisposable,
141-
);
162+
function indexWorkspace() {
163+
if(!languageClient) {
164+
return;
165+
}
166+
languageClient.stop().then(_ => {
167+
clientDisposable.dispose();
168+
languageClient = createClient(extensionContext, true);
169+
clientDisposable = languageClient.start();
170+
});
142171
}
143172

144-
function fixItem(item: CompletionItem): void {
145-
if (/^\\\w+/.test(item.insertText) && !/^(\\\w+){2,}/.test(item.insertText)) {
146-
item.insertText = item.insertText.replace('\\', '');
147-
}
173+
function cancelIndexing() {
174+
languageClient.sendRequest(CANCEL_INDEXING_REQUEST.method);
148175
}

0 commit comments

Comments
 (0)