Skip to content

Commit 3ef145f

Browse files
authored
Merge pull request #134 from IBM/fix/language_server
Upgrade LSP and fix missing objects
2 parents 85ba89c + 2e4710f commit 3ef145f

File tree

9 files changed

+46
-47
lines changed

9 files changed

+46
-47
lines changed

cli/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cli/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -297,6 +297,7 @@ async function listDeps(cwd: string, targets: Targets, query: string) {
297297
}
298298

299299
export { Targets } from './targets';
300+
export { TargetsLanguageProvider } from './targets/languages';
300301
export { MakeProject } from './builders/make';
301302
export { BobProject } from "./builders/bob";
302303
export { ImpactMarkdown } from "./builders/imd"

cli/src/targets/languages.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,11 @@ export class TargetsLanguageProvider {
4343
return `**/*.{${allExtensions.join(`,`)},${allExtensions.map(e => e.toUpperCase()).join(`,`)}}`;
4444
}
4545

46+
public static getStandardGlob() {
47+
const allExtensions = [...clExtensions, ...sqlExtensions, ...ddsExtension, ...binderExtensions, ...cmdExtensions, ...rpgExtensions];
48+
return `**/*.{${allExtensions.join(`,`)},${allExtensions.map(e => e.toUpperCase()).join(`,`)}}`;
49+
}
50+
4651
public async handleLanguage(relativePath: string, content: string, options: FileOptions = {}) {
4752
const ext = relativePath.split('.').pop()?.toLowerCase();
4853
const language = this.languageTargets.find(lang => lang.extensions.includes(ext));

vs/client/package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vs/package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vs/server/package-lock.json

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

vs/server/src/TargetsManager.ts

Lines changed: 19 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,13 @@
11
/* eslint-disable no-case-declarations */
22

3-
import { Targets, allExtensions } from "@ibm/sourceorbit";
3+
import { Targets } from "@ibm/sourceorbit";
44
import { ILEObject } from "@ibm/sourceorbit/dist/src/targets";
55

66
import { URI } from 'vscode-uri';
77
import { ReadFileSystem } from './readFileSystem';
88

99
import path = require("path");
1010

11-
export const SupportedGlob = `**/*.{${allExtensions.join(`,`)}}`;
12-
1311
export class TargetsManager {
1412
private static projects: { [workspacePath: string]: Targets | undefined } = {};
1513

@@ -45,11 +43,12 @@ export class TargetsManager {
4543
const url = uri.fsPath;
4644

4745
const rfs = new ReadFileSystem();
48-
const files = await rfs.getFiles(url, SupportedGlob);
4946

5047
const targets = new Targets(url, rfs);
5148

52-
targets.loadObjectsFromPaths(files);
49+
const files = await rfs.getFiles(url, targets.getSearchGlob());
50+
51+
await targets.loadObjectsFromPaths(files);
5352

5453
await Promise.allSettled(files.map(f => targets.parseFile(f)));
5554

@@ -75,14 +74,12 @@ export class TargetsManager {
7574
if (pathDetail.ext.length > 1) {
7675
const ext = pathDetail.ext.substring(1).toLowerCase();
7776

78-
if (allExtensions.includes(ext)) {
79-
const targets = this.getTargetsForFile(uriString);
77+
const targets = this.getTargetsForFile(uriString);
8078

81-
if (targets) {
82-
return targets.parseFile(uri.fsPath);
79+
if (targets) {
80+
return targets.parseFile(uri.fsPath);
8381

84-
// TODO: think about re-resolving later if changing a module?
85-
}
82+
// TODO: think about re-resolving later if changing a module?
8683
}
8784
}
8885
}
@@ -95,24 +92,22 @@ export class TargetsManager {
9592
if (pathDetail.ext.length > 1) {
9693
const ext = pathDetail.ext.substring(1);
9794

98-
if (allExtensions.includes(ext)) {
99-
const targets = this.getTargetsForFile(uriString);
95+
const targets = this.getTargetsForFile(uriString);
10096

101-
if (targets) {
102-
const impacted = targets.removeObjectByPath(uri.fsPath);
97+
if (targets) {
98+
const impacted = targets.removeObjectByPath(uri.fsPath);
10399

104-
if (impacted.length > 0) {
105-
const cwd = this.getWorkspaceFolder(uri.fsPath);
100+
if (impacted.length > 0) {
101+
const cwd = this.getWorkspaceFolder(uri.fsPath);
106102

107-
if (cwd) {
108-
const impactedSources = impacted
109-
.filter(obj => obj.relativePath)
110-
.map(obj => path.join(cwd, obj.relativePath!));
103+
if (cwd) {
104+
const impactedSources = impacted
105+
.filter(obj => obj.relativePath)
106+
.map(obj => path.join(cwd, obj.relativePath!));
111107

112-
console.log(`Impacted sources: ${impactedSources.join(`, `)}`);
108+
console.log(`Impacted sources: ${impactedSources.join(`, `)}`);
113109

114-
return Promise.allSettled(impactedSources.map(sourcePath => targets.parseFile(sourcePath)));
115-
}
110+
return Promise.allSettled(impactedSources.map(sourcePath => targets.parseFile(sourcePath)));
116111
}
117112
}
118113
}

vs/server/src/server.ts

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,13 @@
1+
import { TargetsLanguageProvider } from '@ibm/sourceorbit';
12
import {
23
createConnection,
3-
Diagnostic,
4-
DiagnosticSeverity,
5-
ProposedFeatures,
64
InitializeParams,
7-
TextDocumentSyncKind,
85
InitializeResult,
9-
WorkspaceFolder,
10-
Range,
11-
Position
6+
ProposedFeatures,
7+
TextDocumentSyncKind
128
} from 'vscode-languageserver/node';
13-
import { SupportedGlob, TargetsManager } from './TargetsManager';
14-
import { setupRequestHandler } from './requests';
159
import { setupFsListener } from './fileSystemListener';
10+
import { setupRequestHandler } from './requests';
1611

1712
// Create a connection for the server, using Node's IPC as a transport.
1813
// Also include all preview / proposed LSP features.
@@ -37,9 +32,9 @@ connection.onInitialize((params: InitializeParams) => {
3732
if (hasWorkspaceFolderCapability) {
3833
result.capabilities.workspace = {
3934
fileOperations: {
40-
didCreate: { filters: [{ pattern: { glob: SupportedGlob, options: { ignoreCase: true } } }] },
41-
didRename: { filters: [{ pattern: { glob: SupportedGlob, options: { ignoreCase: true } } }] },
42-
didDelete: { filters: [{ pattern: { glob: SupportedGlob, options: { ignoreCase: true } } }] }
35+
didCreate: { filters: [{ pattern: { glob: TargetsLanguageProvider.getStandardGlob(), options: { ignoreCase: true } } }] },
36+
didRename: { filters: [{ pattern: { glob: TargetsLanguageProvider.getStandardGlob(), options: { ignoreCase: true } } }] },
37+
didDelete: { filters: [{ pattern: { glob: TargetsLanguageProvider.getStandardGlob(), options: { ignoreCase: true } } }] }
4338
},
4439
workspaceFolders: {
4540
supported: true,

vs/server/src/setup.ts

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,15 +6,16 @@ import path from 'path';
66
import { URI } from 'vscode-uri';
77
import { ReadFileSystem } from './readFileSystem';
88
import { connection } from './server';
9-
import { SupportedGlob, TargetsManager } from './TargetsManager';
9+
import { TargetsManager } from './TargetsManager';
1010

1111
export async function initAndRefresh(workspaceUri: string) {
1212
const progress = await connection.window.createWorkDoneProgress();
13-
progress.begin(`Source Orbit`, undefined, `Initializing..`);
13+
progress.begin(`Source Orbit`, undefined, `Indexing..`);
14+
console.log(`Indexing started`);
1415

1516
try {
1617
await TargetsManager.refreshProject(workspaceUri);
17-
progress.report(`Initialized`);
18+
progress.report(`Indexed successfully`);
1819

1920
} catch (e) {
2021
progress.report(`Failed to initialize`);
@@ -89,13 +90,15 @@ export async function fixProject(workspaceUri: string, suggestions: TargetSugges
8990
progress.begin(`Source Orbit`, undefined, `Fetching files..`);
9091

9192
const rfs = new ReadFileSystem();
92-
const files = await rfs.getFiles(url, SupportedGlob);
9393

9494
const targets = new Targets(url, rfs);
95+
96+
const files = await rfs.getFiles(url, targets.getSearchGlob());
97+
9598
targets.setSuggestions(suggestions);
9699

97100
progress.report(`Loading files..`);
98-
targets.loadObjectsFromPaths(files);
101+
await targets.loadObjectsFromPaths(files);
99102

100103
progress.report(`Processing files..`);
101104
await Promise.allSettled(files.map(f => targets.parseFile(f)));

0 commit comments

Comments
 (0)