Skip to content

Commit 15978c0

Browse files
authored
Merge pull request #630 from isc-bsaviano/fix-595
Add commands for compiling current file
2 parents 2fcd0b8 + a965cdf commit 15978c0

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
@@ -277,6 +277,43 @@ export async function importAndCompile(
277277
});
278278
}
279279

280+
export async function compileOnly(askFlags = false, document?: vscode.TextDocument): Promise<any> {
281+
document =
282+
document ||
283+
(vscode.window.activeTextEditor && vscode.window.activeTextEditor.document
284+
? vscode.window.activeTextEditor.document
285+
: null);
286+
287+
if (!document) {
288+
return;
289+
}
290+
291+
const file = currentFile(document);
292+
if (!file) {
293+
return;
294+
}
295+
296+
// Do nothing if it is a local file and objectscript.conn.active is false
297+
if (file.uri.scheme === "file" && !config("conn").active) {
298+
return;
299+
}
300+
301+
if (document.isDirty) {
302+
// Don't compile if document is dirty
303+
vscode.window.showWarningMessage(
304+
"Cannot compile '" + file.name + "' because it has unpersisted changes.",
305+
"Dismiss"
306+
);
307+
return;
308+
}
309+
310+
const defaultFlags = config().compileFlags;
311+
const flags = askFlags ? await compileFlags() : defaultFlags;
312+
if (!file.fileName.startsWith("\\.vscode\\")) {
313+
compile([file], flags);
314+
}
315+
}
316+
280317
// Compiles all files types in the namespace
281318
export async function namespaceCompile(askFlags = false): Promise<any> {
282319
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";
@@ -863,6 +864,8 @@ export async function activate(context: vscode.ExtensionContext): Promise<any> {
863864
documentSelector("objectscript-class"),
864865
new ObjectScriptClassCodeLensProvider()
865866
),
867+
vscode.commands.registerCommand("vscode-objectscript.compileOnly", () => compileOnly(false)),
868+
vscode.commands.registerCommand("vscode-objectscript.compileOnlyWithFlags", () => compileOnly(true)),
866869
vscode.languages.registerDocumentLinkProvider(
867870
{ language: "vscode-objectscript-output" },
868871
new DocumentLinkProvider()

0 commit comments

Comments
 (0)