@@ -5,12 +5,15 @@ import {
5
5
Range ,
6
6
TextDocument ,
7
7
getCursorlessRepoRoot ,
8
+ isTesting ,
9
+ showError ,
8
10
} from "@cursorless/common" ;
9
11
import { join } from "path" ;
10
12
import { SyntaxNode } from "web-tree-sitter" ;
11
13
import { TreeSitter } from "../typings/TreeSitter" ;
12
14
import { ide } from "../singletons/ide.singleton" ;
13
15
import { LanguageDefinition } from "./LanguageDefinition" ;
16
+ import { toString } from "lodash" ;
14
17
15
18
/**
16
19
* Sentinel value to indicate that a language doesn't have
@@ -78,9 +81,20 @@ export class LanguageDefinitions {
78
81
( { document } ) => document . languageId ,
79
82
) ;
80
83
81
- await Promise . all (
82
- languageIds . map ( ( languageId ) => this . loadLanguage ( languageId ) ) ,
83
- ) ;
84
+ try {
85
+ await Promise . all (
86
+ languageIds . map ( ( languageId ) => this . loadLanguage ( languageId ) ) ,
87
+ ) ;
88
+ } catch ( err ) {
89
+ showError (
90
+ ide ( ) . messages ,
91
+ "Failed to load language definitions" ,
92
+ toString ( err ) ,
93
+ ) ;
94
+ if ( isTesting ( ) ) {
95
+ throw err ;
96
+ }
97
+ }
84
98
}
85
99
86
100
public async loadLanguage ( languageId : string ) : Promise < void > {
@@ -100,11 +114,8 @@ export class LanguageDefinitions {
100
114
}
101
115
102
116
private async reloadLanguageDefinitions ( ) : Promise < void > {
103
- const languageIds = Array . from ( this . languageDefinitions . keys ( ) ) ;
104
117
this . languageDefinitions . clear ( ) ;
105
- await Promise . all (
106
- languageIds . map ( ( languageId ) => this . loadLanguage ( languageId ) ) ,
107
- ) ;
118
+ await this . loadAllLanguages ( ) ;
108
119
this . notifier . notifyListeners ( ) ;
109
120
}
110
121
0 commit comments