Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 13 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,9 +1,20 @@
.DEFAULT_GOAL := package

.PHONY: package
package:
.PHONY: check-install compile package
package: compile
npm run package

.PHONY: install
install:
npm install

.PHONY: check-install
check-install:
@if [ ! -d "node_modules" ]; then \
echo "installing npm packages..."; \
npm install; \
fi

.PHONY: compile
compile: check-install
npm run compile
34 changes: 34 additions & 0 deletions src/extension.ts
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ import { startLanguageServer } from "./commands/start-lsp";
import { stopLanguageServer } from "./commands/stop-lsp";
import { log } from "./log";
import { activateStatusBar, deactivateStatusBar } from "./status-bar";
import { bufState } from "./state";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This import should be unused now ^^" Hmm, unfortunate that CI doesn't catch that... o_o


/**
* activate is the entrypoint for activating the extension.
Expand All @@ -15,6 +16,20 @@ export async function activate(ctx: vscode.ExtensionContext) {
ctx.subscriptions.push(
vscode.workspace.onDidChangeConfiguration(handleOnDidConfigChange)
);

// Listen for when .proto files are opened
ctx.subscriptions.push(
vscode.workspace.onDidOpenTextDocument(handleProtoFileOpened)
);

// Check if any .proto files are already open
for (const document of vscode.workspace.textDocuments) {
if (document.languageId === "proto") {
await handleProtoFileOpened(document);
break; // Only need to check once
}
}

await installBuf.execute();
}

Expand Down Expand Up @@ -45,3 +60,22 @@ const handleOnDidConfigChange = async (e: vscode.ConfigurationChangeEvent) => {
await startLanguageServer.execute();
}
};

/**
* handleProtoFileOpened checks when a .proto file is opened and ensures the language server is running.
*/
const handleProtoFileOpened = async (document: vscode.TextDocument) => {
if (document.languageId !== "proto") {
return;
}

const languageServerStatus = bufState.getLanguageServerStatus();
if (languageServerStatus === "LANGUAGE_SERVER_RUNNING") {
// Language server is already running, nothing to do
return;
}

// Start the language server if it's not running
log.info("Proto file opened, ensuring language server is running...");
await startLanguageServer.execute();
};
Loading