Skip to content

Commit e12955b

Browse files
authored
Recognize custom file extensions (#3731)
1 parent e638d27 commit e12955b

File tree

4 files changed

+25
-5
lines changed

4 files changed

+25
-5
lines changed

src/extension.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ export async function activate(context: ExtensionContext): Promise<ExtensionAPI>
208208
{ scheme: 'untitled', language: 'java' }
209209
],
210210
synchronize: {
211-
configurationSection: ['java', 'editor.insertSpaces', 'editor.tabSize'],
211+
configurationSection: ['java', 'editor.insertSpaces', 'editor.tabSize', "files.associations"],
212212
},
213213
initializationOptions: {
214214
bundles: collectJavaExtensions(extensions.all),
@@ -1061,7 +1061,7 @@ async function getTriggerFiles(): Promise<string[]> {
10611061
function getJavaFilePathOfTextDocument(document: TextDocument): string | undefined {
10621062
if (document) {
10631063
const resource = document.uri;
1064-
if (resource.scheme === 'file' && resource.fsPath.endsWith('.java')) {
1064+
if (resource.scheme === 'file' && document.languageId === "java") {
10651065
return path.normalize(resource.fsPath);
10661066
}
10671067
}

src/fileEventHandler.ts

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -174,7 +174,25 @@ function getWillRenameHandler(client: LanguageClient) {
174174
}
175175

176176
function isJavaFile(uri: Uri): boolean {
177-
return uri.fsPath && uri.fsPath.endsWith(".java");
177+
if (uri.fsPath && uri.fsPath.endsWith(".java")) {
178+
return true;
179+
}
180+
let result = false;
181+
const associations = workspace.getConfiguration().get("files.associations");
182+
if (associations !== null) {
183+
Object.keys(associations).forEach(pattern => {
184+
const langId = associations[pattern];
185+
if (langId === 'java' && pattern.startsWith('*.') && pattern.length > 2) {
186+
const ext = pattern.substring(2);
187+
if (!ext.includes('?') && !ext.includes('*')) {
188+
if (uri.fsPath && uri.fsPath.endsWith(`.${ext}`)) {
189+
result = true;
190+
}
191+
}
192+
}
193+
});
194+
}
195+
return result;
178196
}
179197

180198
async function isFile(uri: Uri): Promise<boolean> {

src/pasteAction.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,8 @@ export async function registerOrganizeImportsOnPasteCommand(): Promise<void> {
3939
});
4040

4141
action.then((wasApplied) => {
42-
const fileURI = editor.document.uri.toString();
43-
if (wasApplied && fileURI.endsWith(".java")) {
42+
if (wasApplied && editor.document.languageId === "java") {
43+
const fileURI = editor.document.uri.toString();
4444
const hasText: boolean = documentText !== null && /\S/.test(documentText);
4545
if (hasText) {
4646
// Organize imports silently to avoid surprising the user

src/utils.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -226,6 +226,8 @@ export async function getJavaConfig(javaHome: string) {
226226
const editorConfig = workspace.getConfiguration('editor');
227227
javaConfig.format.insertSpaces = editorConfig.get('insertSpaces');
228228
javaConfig.format.tabSize = editorConfig.get('tabSize');
229+
const filesConfig = workspace.getConfiguration('files');
230+
javaConfig.associations = filesConfig.get('associations');
229231
const isInsider: boolean = version.includes("insider");
230232
const androidSupport = javaConfig.jdt.ls.androidSupport.enabled;
231233
switch (androidSupport) {

0 commit comments

Comments
 (0)