Skip to content

Commit 576b9a2

Browse files
committed
added config code; started completions code
1 parent 8ba3ca6 commit 576b9a2

File tree

2 files changed

+56
-0
lines changed

2 files changed

+56
-0
lines changed

src/config.ts

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
import { WorkspaceConfiguration, workspace } from "vscode";
2+
3+
class Config {
4+
private config: WorkspaceConfiguration;
5+
6+
constructor() {
7+
workspace.onDidChangeConfiguration((e) => this.reloadConfig());
8+
9+
this.config = workspace.getConfiguration("gcode");
10+
}
11+
12+
private reloadConfig() {
13+
this.config = workspace.getConfiguration("gcode");
14+
}
15+
16+
}
17+
18+
export const config = new Config();

src/providers/gcode_completions.ts

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// Rerieve/Load Snippets based on configuration settings
2+
3+
import * as path from "path";
4+
import * as vscode from "vscode";
5+
import { config } from "../config";
6+
7+
8+
export class GcodeCompletionItemProvider implements vscode.CompletionItemProvider {
9+
private completions = new vscode.CompletionList();
10+
11+
constructor(filename: string) {
12+
const snippets = require(path.join("../..", filename));
13+
14+
for (const snippetType of Object.keys(snippets)) {
15+
for (const snippetName of Object.keys(snippets[snippetType])) {
16+
const snippet = snippets[snippetType][snippetName];
17+
const completionItem = new vscode.CompletionItem(snippetName, CompletionItemKind.Snippet);
18+
completionItem.filterText = snippet.prefix;
19+
completionItem.insertText = new vscode.SnippetString(
20+
isArray(snippet.body)
21+
? snippet.body.join("\n")
22+
: snippet.body,
23+
);
24+
25+
completionItem.detail = snippet.description;
26+
completionItem.documentation = new vscode.MarkdownString().appendCodeblock(completionItem.insertText.value);
27+
this.completions.items.push(completionItem);
28+
}
29+
}
30+
}
31+
32+
public provideCompletionItems(
33+
document: vscode.TextDocument, position: Position, token: vscode.CancellationToken,
34+
): vscode.CompletionList {
35+
return this.completions;
36+
}
37+
}
38+

0 commit comments

Comments
 (0)