Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

Commit 8e179b9

Browse files
committed
Add plugins configuration
1 parent dee2076 commit 8e179b9

File tree

2 files changed

+47
-3
lines changed

2 files changed

+47
-3
lines changed

package.json

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,30 @@
4949
"title": "Syntax Tree: Visualize"
5050
}
5151
],
52+
"configuration": {
53+
"type": "object",
54+
"title": "Syntax Tree",
55+
"properties": {
56+
"syntaxTree.singleQuotes": {
57+
"default": false,
58+
"markdownDescription": "Uses single-quoted strings when possible.",
59+
"type": "boolean"
60+
},
61+
"syntaxTree.trailingComma": {
62+
"default": false,
63+
"markdownDescription": "Adds an extra comma after the last item of arrays, hashes and parameters.",
64+
"type": "boolean"
65+
},
66+
"syntaxTree.additionalPlugins": {
67+
"default": [],
68+
"markdownDescription": "Registers [extra behaviors](https://github.com/ruby-syntax-tree/syntax_tree#plugins) with the language server.",
69+
"items": {
70+
"type": "string"
71+
},
72+
"type": "array"
73+
}
74+
}
75+
},
5276
"colors": [
5377
{
5478
"id": "syntaxTree.inlayHints",

src/extension.ts

Lines changed: 23 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
"use strict";
22

3-
import { ExtensionContext, commands, window, workspace } from "vscode";
3+
import { ConfigurationChangeEvent, ExtensionContext, commands, window, workspace } from "vscode";
44
import { LanguageClient, ServerOptions } from "vscode-languageclient/node";
55
import { promisify } from "util";
66
import { exec } from "child_process";
@@ -27,8 +27,28 @@ export function activate(context: ExtensionContext) {
2727
return startLanguageServer();
2828

2929
async function startLanguageServer() {
30-
outputChannel.appendLine("Starting language server...");
31-
let run: ServerOptions = { command: "stree", args: ["lsp"] };
30+
const config = workspace.getConfiguration("syntaxTree");
31+
const addlPlugins = config.get<string[]>("additionalPlugins") || [];
32+
const singleQuotes = config.get<boolean>("singleQuotes");
33+
const trailingComma = config.get<boolean>("trailingComma");
34+
35+
const args = ["lsp"];
36+
37+
const plugins = new Set<string>();
38+
if (singleQuotes) {
39+
plugins.add("plugin/single_quotes");
40+
}
41+
if (trailingComma) {
42+
plugins.add("plugin/trailing_comma");
43+
}
44+
addlPlugins.forEach(plugins.add);
45+
46+
if (plugins.size) {
47+
args.push(`--plugins=${Array.from(plugins).join(",")}`);
48+
}
49+
50+
outputChannel.appendLine(`Starting language server with ${plugins.size} plugin(s)...`);
51+
let run: ServerOptions = { command: "stree", args };
3252

3353
if (workspace.workspaceFolders) {
3454
const cwd = workspace.workspaceFolders![0].uri.fsPath;

0 commit comments

Comments
 (0)