mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-02-07 01:25:38 -05:00
* Merge from vscode 1eb87b0e9ce9886afeaecec22b31abd0d9b7939f * fix various icon issues * fix preview features
58 lines
2.8 KiB
TypeScript
58 lines
2.8 KiB
TypeScript
/*---------------------------------------------------------------------------------------------
|
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
* Licensed under the Source EULA. See License.txt in the project root for license information.
|
|
*--------------------------------------------------------------------------------------------*/
|
|
|
|
import { URI } from 'vs/base/common/uri';
|
|
import { IConfigurationService } from 'vs/platform/configuration/common/configuration';
|
|
import { ITextResourcePropertiesService } from 'vs/editor/common/services/resourceConfiguration';
|
|
import { OperatingSystem, OS } from 'vs/base/common/platform';
|
|
import { Schemas } from 'vs/base/common/network';
|
|
import { IStorageService, StorageScope } from 'vs/platform/storage/common/storage';
|
|
import { IWorkbenchEnvironmentService } from 'vs/workbench/services/environment/common/environmentService';
|
|
import { registerSingleton } from 'vs/platform/instantiation/common/extensions';
|
|
import { IRemoteAgentEnvironment } from 'vs/platform/remote/common/remoteAgentEnvironment';
|
|
import { IRemoteAgentService } from 'vs/workbench/services/remote/common/remoteAgentService';
|
|
|
|
export class TextResourcePropertiesService implements ITextResourcePropertiesService {
|
|
|
|
_serviceBrand: undefined;
|
|
|
|
private remoteEnvironment: IRemoteAgentEnvironment | null = null;
|
|
|
|
constructor(
|
|
@IConfigurationService private readonly configurationService: IConfigurationService,
|
|
@IRemoteAgentService remoteAgentService: IRemoteAgentService,
|
|
@IWorkbenchEnvironmentService private readonly environmentService: IWorkbenchEnvironmentService,
|
|
@IStorageService private readonly storageService: IStorageService
|
|
) {
|
|
remoteAgentService.getEnvironment().then(remoteEnv => this.remoteEnvironment = remoteEnv);
|
|
}
|
|
|
|
getEOL(resource?: URI, language?: string): string {
|
|
const filesConfiguration = this.configurationService.getValue<{ eol: string }>('files', { overrideIdentifier: language, resource });
|
|
if (filesConfiguration && filesConfiguration.eol && filesConfiguration.eol !== 'auto') {
|
|
return filesConfiguration.eol;
|
|
}
|
|
const os = this.getOS(resource);
|
|
return os === OperatingSystem.Linux || os === OperatingSystem.Macintosh ? '\n' : '\r\n';
|
|
}
|
|
|
|
private getOS(resource?: URI): OperatingSystem {
|
|
let os = OS;
|
|
|
|
const remoteAuthority = this.environmentService.configuration.remoteAuthority;
|
|
if (remoteAuthority) {
|
|
if (resource && resource.scheme !== Schemas.file) {
|
|
const osCacheKey = `resource.authority.os.${remoteAuthority}`;
|
|
os = this.remoteEnvironment ? this.remoteEnvironment.os : /* Get it from cache */ this.storageService.getNumber(osCacheKey, StorageScope.WORKSPACE, OS);
|
|
this.storageService.store(osCacheKey, os, StorageScope.WORKSPACE);
|
|
}
|
|
}
|
|
|
|
return os;
|
|
}
|
|
}
|
|
|
|
registerSingleton(ITextResourcePropertiesService, TextResourcePropertiesService, true);
|