From 0a8b6bc41e19f2ba06739c707a6e0f069eb67854 Mon Sep 17 00:00:00 2001 From: Akos Kitta Date: Fri, 22 Nov 2019 15:48:23 +0100 Subject: [PATCH] Restart the LS on core install/remove. Fixes bcmi-labs/arduino-language-server#9 Signed-off-by: Akos Kitta --- .../arduino-language-client-contribution.ts | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/arduino-ide-extension/src/browser/language/arduino-language-client-contribution.ts b/arduino-ide-extension/src/browser/language/arduino-language-client-contribution.ts index dd2176c6..b22fdf00 100644 --- a/arduino-ide-extension/src/browser/language/arduino-language-client-contribution.ts +++ b/arduino-ide-extension/src/browser/language/arduino-language-client-contribution.ts @@ -2,6 +2,7 @@ import { injectable, inject, postConstruct } from 'inversify'; import { BaseLanguageClientContribution } from '@theia/languages/lib/browser'; import { BoardsServiceClientImpl } from '../boards/boards-service-client-impl'; import { BoardsConfig } from '../boards/boards-config'; +import { Board, BoardPackage } from '../../common/protocol/boards-service'; @injectable() export class ArduinoLanguageClientContribution extends BaseLanguageClientContribution { @@ -25,6 +26,18 @@ export class ArduinoLanguageClientContribution extends BaseLanguageClientContrib @postConstruct() protected init() { this.boardsServiceClient.onBoardsConfigChanged(this.selectBoard.bind(this)); + const restartIfAffected = (pkg: BoardPackage) => { + if (!this.boardConfig) { + this.restart(); + return; + } + const { selectedBoard } = this.boardConfig; + if (selectedBoard && pkg.boards.some(board => Board.sameAs(board, selectedBoard))) { + this.restart(); + } + } + this.boardsServiceClient.onBoardInstalled(({ pkg }) => restartIfAffected(pkg)); + this.boardsServiceClient.onBoardUninstalled(({ pkg }) => restartIfAffected(pkg)); } selectBoard(config: BoardsConfig.Config): void {