Skip to content

Commit 4216eb7

Browse files
committed
some small fixes
1 parent 8d9a8cf commit 4216eb7

5 files changed

+21
-8
lines changed

extension.ts

+11
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,8 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
112112
}
113113
});
114114

115+
const wordPattern = /(\"(?:[^\"]|\"\")*\")|((\${1,3}|[irm]?%|\^|#)?[^`~!\@@#\%\^\&*()-\=+[{\]\}\|\;\:\'\"\,.\<>\/\?_\s]+)/;
116+
115117
context.subscriptions.push(
116118
window.onDidChangeActiveTextEditor(e => {
117119
if (workspace.workspaceFolders && workspace.workspaceFolders.length > 1) {
@@ -160,6 +162,15 @@ export async function activate(context: vscode.ExtensionContext): Promise<void>
160162

161163
vscode.workspace.registerTextDocumentContentProvider(OBJECTSCRIPT_FILE_SCHEMA, documentContentProvider),
162164
vscode.workspace.registerTextDocumentContentProvider(OBJECTSCRIPTXML_FILE_SCHEMA, xmlContentProvider),
165+
vscode.languages.setLanguageConfiguration('objectscript-class', {
166+
wordPattern
167+
}),
168+
vscode.languages.setLanguageConfiguration('objectscript', {
169+
wordPattern
170+
}),
171+
vscode.languages.setLanguageConfiguration('objectscript-macros', {
172+
wordPattern
173+
}),
163174
vscode.languages.registerDocumentSymbolProvider(['objectscript-class'], new ObjectScriptClassSymbolProvider()),
164175
vscode.languages.registerDocumentSymbolProvider(['objectscript'], new ObjectScriptRoutineSymbolProvider()),
165176
vscode.languages.registerFoldingRangeProvider(['objectscript-class'], new ObjectScriptClassFoldingRangeProvider()),

language-configuration-class.jsonc

+1-2
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,5 @@
1717
"start": "^((Class|Client)?Method|Query|XData|Storage|Trigger)",
1818
"end": "^}"
1919
}
20-
},
21-
"wordPattern": "(\"(?:[^\"]|\"\")*\")|((\\${1,3}|[irm]?%|\\^|#)?\\b\\w+[\\d\\w]*\\b)"
20+
}
2221
}

language-configuration.json

+1-2
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,5 @@
1212
"indentationRules": {
1313
"increaseIndentPattern": "{",
1414
"decreaseIndentPattern": "}"
15-
},
16-
"wordPattern": "(\"(?:[^\"]|\"\")*\")|((\\${1,3}|[irm]?%|\\^|#)?\\b\\w+[\\d\\w]*\\b)"
15+
}
1716
}

providers/ObjectScriptDefinitionProvider.ts

+5-3
Original file line numberDiff line numberDiff line change
@@ -12,14 +12,16 @@ export class ObjectScriptDefinitionProvider implements vscode.DefinitionProvider
1212
): vscode.ProviderResult<vscode.Location | vscode.Location[] | vscode.DefinitionLink[]> {
1313
let lineText = document.lineAt(position.line).text;
1414

15-
let macroRange = document.getWordRangeAtPosition(position, /\${3}\b\w+\b/);
15+
let macroRange = document.getWordRangeAtPosition(position);
1616
let macroText = macroRange ? document.getText(macroRange) : '';
1717
let macroMatch = macroText.match(/^\${3}(\b\w+\b)$/);
1818
if (macroMatch) {
1919
let fileName = currentFile().name;
2020
let [, macro] = macroMatch;
21-
return this.macro(fileName, macro).then(
22-
data => new vscode.Location(DocumentContentProvider.getUri(data.document), new vscode.Position(data.line, 0))
21+
return this.macro(fileName, macro).then(data =>
22+
data && data.document.length
23+
? new vscode.Location(DocumentContentProvider.getUri(data.document), new vscode.Position(data.line, 0))
24+
: null
2325
);
2426
}
2527
let asClass = /(\b(?:Of|As|Extends)\b %?\b[a-zA-Z][a-zA-Z0-9]+(?:\.[a-zA-Z][a-zA-Z0-9]+)*\b(?! of))/i;

providers/ObjectScriptHoverProvider.ts

+3-1
Original file line numberDiff line numberDiff line change
@@ -53,9 +53,11 @@ export class ObjectScriptHoverProvider implements vscode.HoverProvider {
5353
async macro(fileName: string, macro: string): Promise<string[]> {
5454
const api = new AtelierAPI();
5555
let includes = [];
56-
if (fileName.toLowerCase().endsWith('cls')) {
56+
if (fileName.toLowerCase().endsWith('.cls')) {
5757
let classDefinition = new ClassDefinition(fileName);
5858
includes = await classDefinition.includeCode();
59+
} else if (fileName.toLowerCase().endsWith('.inc')) {
60+
includes.push(fileName.replace(/\.inc$/i, ''));
5961
}
6062
return api
6163
.getmacrodefinition(fileName, macro, includes)

0 commit comments

Comments
 (0)