Skip to content

Commit 5cf8319

Browse files
committed
Add commands for compiling current file
1 parent 6d2899b commit 5cf8319

File tree

3 files changed

+63
-0
lines changed

3 files changed

+63
-0
lines changed

package.json

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -206,6 +206,14 @@
206206
{
207207
"command": "vscode-objectscript.jumpToTagAndOffset",
208208
"when": "editorLangId == objectscript"
209+
},
210+
{
211+
"command": "vscode-objectscript.compileOnly",
212+
"when": "editorLangId =~ /^objectscript/ && vscode-objectscript.connectActive"
213+
},
214+
{
215+
"command": "vscode-objectscript.compileOnlyWithFlags",
216+
"when": "editorLangId =~ /^objectscript/ && vscode-objectscript.connectActive"
209217
}
210218
],
211219
"view/title": [
@@ -296,6 +304,11 @@
296304
"command": "vscode-objectscript.serverCommands.contextOther",
297305
"when": "resourceScheme =~ /^isfs(-readonly)?$/ && vscode-objectscript.connectActive",
298306
"group": "objectscript@5"
307+
},
308+
{
309+
"command": "vscode-objectscript.compileOnly",
310+
"when": "editorLangId =~ /^objectscript/ && vscode-objectscript.connectActive",
311+
"group": "objectscript@6"
299312
}
300313
],
301314
"editor/title": [
@@ -614,6 +627,16 @@
614627
"category": "ObjectScript",
615628
"command": "vscode-objectscript.showExplorerForWorkspace",
616629
"title": "Show Explorer for Workspace"
630+
},
631+
{
632+
"category": "ObjectScript",
633+
"command": "vscode-objectscript.compileOnly",
634+
"title": "Compile Current File"
635+
},
636+
{
637+
"category": "ObjectScript",
638+
"command": "vscode-objectscript.compileOnlyWithFlags",
639+
"title": "Compile Current File with Specified Flags..."
617640
}
618641
],
619642
"keybindings": [

src/commands/compile.ts

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -265,6 +265,43 @@ export async function importAndCompile(askFlags = false, document?: vscode.TextD
265265
});
266266
}
267267

268+
export async function compileOnly(askFlags = false, document?: vscode.TextDocument): Promise<any> {
269+
document =
270+
document ||
271+
(vscode.window.activeTextEditor && vscode.window.activeTextEditor.document
272+
? vscode.window.activeTextEditor.document
273+
: null);
274+
275+
if (!document) {
276+
return;
277+
}
278+
279+
const file = currentFile(document);
280+
if (!file) {
281+
return;
282+
}
283+
284+
// Do nothing if it is a local file and objectscript.conn.active is false
285+
if (file.uri.scheme === "file" && !config("conn").active) {
286+
return;
287+
}
288+
289+
if (document.isDirty) {
290+
// Don't compile if document is dirty
291+
vscode.window.showWarningMessage(
292+
"Cannot compile '" + file.name + "' because it has unpersisted changes.",
293+
"Dismiss"
294+
);
295+
return;
296+
}
297+
298+
const defaultFlags = config().compileFlags;
299+
const flags = askFlags ? await compileFlags() : defaultFlags;
300+
if (!file.fileName.startsWith("\\.vscode\\")) {
301+
compile([file], flags);
302+
}
303+
}
304+
268305
// Compiles all files types in the namespace
269306
export async function namespaceCompile(askFlags = false): Promise<any> {
270307
const api = new AtelierAPI();

src/extension.ts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import {
2424
namespaceCompile,
2525
compileExplorerItem,
2626
checkChangedOnServer,
27+
compileOnly,
2728
} from "./commands/compile";
2829
import { deleteItem } from "./commands/delete";
2930
import { exportAll, exportExplorerItem } from "./commands/export";
@@ -864,6 +865,8 @@ export async function activate(context: vscode.ExtensionContext): Promise<any> {
864865
new ObjectScriptClassCodeLensProvider()
865866
),
866867
vscode.languages.registerDocumentLinkProvider({ language: "objectscript-output" }, new DocumentLinkProvider()),
868+
vscode.commands.registerCommand("vscode-objectscript.compileOnly", () => compileOnly(false)),
869+
vscode.commands.registerCommand("vscode-objectscript.compileOnlyWithFlags", () => compileOnly(true)),
867870

868871
/* Anything we use from the VS Code proposed API */
869872
...proposed

0 commit comments

Comments
 (0)