Skip to content

Commit 3955a65

Browse files
committed
Improve FileConverter error handling
1 parent cff558f commit 3955a65

File tree

1 file changed

+29
-23
lines changed

1 file changed

+29
-23
lines changed

src/fileConverter.ts

Lines changed: 29 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -41,8 +41,8 @@ async function convertFileTo(newLanguage: Language, document?: vscode.TextDocume
4141
parsedDocument = parseAsciiPLIST(text);
4242
break;
4343
}
44-
} catch (error) {
45-
console.warn(`TextMate: Attempted file conversion from ${language}\n${error}`);
44+
} catch (error: any) {
45+
vscode.window.showWarningMessage(`TextMate: Error converting file from ${language}:\n${error.toString()}`);
4646
}
4747
// console.log(`parsedDocument: ${language}\n`, parsedDocument);
4848
if (parsedDocument != null) {
@@ -66,24 +66,29 @@ async function convertFileTo(newLanguage: Language, document?: vscode.TextDocume
6666
const indent = insertSpaces ? ''.padEnd(tabSize, ' ') : '\t';
6767

6868
let newText: string;
69-
switch (newLanguage) {
70-
case 'JSON':
71-
newText = JSON.stringify(parsedDocument, null, indent);
72-
break;
73-
case 'YAML':
74-
newText = YAML.stringify(parsedDocument, {
75-
keepUndefined: true,
76-
indent: tabSize,
77-
});
78-
break;
79-
case 'XML':
80-
newText = XML.build(parsedDocument, { indent: indent });
81-
break;
82-
case 'PLIST':
83-
newText = stringifyAsciiPLIST(parsedDocument, indent);
84-
break;
85-
default:
86-
return;
69+
try {
70+
switch (newLanguage) {
71+
case 'JSON':
72+
newText = JSON.stringify(parsedDocument, null, indent);
73+
break;
74+
case 'YAML':
75+
newText = YAML.stringify(parsedDocument, {
76+
keepUndefined: true,
77+
indent: tabSize,
78+
});
79+
break;
80+
case 'XML':
81+
newText = XML.build(parsedDocument, { indent: indent });
82+
break;
83+
case 'PLIST':
84+
newText = stringifyAsciiPLIST(parsedDocument, indent);
85+
break;
86+
default:
87+
return;
88+
}
89+
} catch (error: any) {
90+
vscode.window.showWarningMessage(`TextMate: Error converting file to ${newLanguage}:\n${error.toString()}`);
91+
return;
8792
}
8893

8994
const newDocument = await vscode.workspace.openTextDocument({ content: newText, language: documentLanguage });
@@ -94,7 +99,7 @@ async function convertFileTo(newLanguage: Language, document?: vscode.TextDocume
9499
await vscode.window.showTextDocument(newDocument, options);
95100
}
96101

97-
function rankLanguages(document: vscode.TextDocument) {
102+
function rankLanguages(document: vscode.TextDocument): Language[] {
98103
const languages: { [key in Language]: number; } = {
99104
JSON: 0,
100105
YAML: 0,
@@ -116,7 +121,7 @@ function rankLanguages(document: vscode.TextDocument) {
116121
languages.PLIST += 10;
117122
}
118123
if (/^plaintext$/i.test(documentLanguage)) {
119-
languages.PLIST += 5;
124+
languages.PLIST += 4;
120125
}
121126

122127
const fileName = document.fileName;
@@ -133,6 +138,7 @@ function rankLanguages(document: vscode.TextDocument) {
133138
languages.PLIST += 5;
134139
}
135140
if (/tmLanguage$/i.test(fileName)) {
141+
languages.XML += 2;
136142
languages.PLIST += 2;
137143
}
138144

@@ -141,7 +147,7 @@ function rankLanguages(document: vscode.TextDocument) {
141147
languages.JSON += 2;
142148
}
143149
if (/^\s*#|^%|\w+:\s/i.test(text)) {
144-
languages.YAML += 3;
150+
languages.YAML += 4;
145151
}
146152
if (/^\s*{/i.test(text)) {
147153
languages.YAML += 1;

0 commit comments

Comments
 (0)