/*---------------------------------------------------------
 * Copyright (C) Microsoft Corporation. All rights reserved.
 * Licensed under the MIT License. See LICENSE in the project root for license information.
 *--------------------------------------------------------*/

'use strict';

import vscode = require('vscode');

interface Filter extends vscode.DocumentFilter {
	language: string;
	scheme: string;
}

export const GO_MODE: Filter = { language: 'go', scheme: 'file' };

export function isGoFile(document: vscode.TextDocument): boolean {
	return GoDocumentSelector.some((selector) => vscode.languages.match(selector, document));
}

export const GoDocumentSelector = [
	// gopls handles only file URIs.
	{ language: 'go', scheme: 'file' },
	{ language: 'go.asm', scheme: 'file' },
	{ language: 'go.mod', scheme: 'file' },
	{ language: 'go.sum', scheme: 'file' },
	{ language: 'go.work', scheme: 'file' },
	{ language: 'gotmpl', scheme: 'file' }
];
