mirror of
https://github.com/ckaczor/azuredatastudio.git
synced 2026-01-24 01:25:37 -05:00
Register additional editor overrides when adding new notebook file types (#17708)
* Also standardized file extension contributions to always start with a period, and to always do lower case string comparisons for file extensions.
This commit is contained in:
@@ -21,8 +21,7 @@ export function getProvidersForFileName(fileName: string, notebookService: INote
|
||||
let fileExt = path.extname(fileName);
|
||||
let providers: string[];
|
||||
// First try to get provider for actual file type
|
||||
if (fileExt && fileExt.startsWith('.')) {
|
||||
fileExt = fileExt.slice(1, fileExt.length);
|
||||
if (fileExt) {
|
||||
providers = notebookService.getProvidersForFileType(fileExt);
|
||||
}
|
||||
// Fallback to provider for default file type (assume this is a global handler)
|
||||
|
||||
@@ -26,7 +26,7 @@ export const SERVICE_ID = 'sqlNotebookService';
|
||||
export const INotebookService = createDecorator<INotebookService>(SERVICE_ID);
|
||||
|
||||
export const DEFAULT_NOTEBOOK_PROVIDER = 'builtin';
|
||||
export const DEFAULT_NOTEBOOK_FILETYPE = 'IPYNB';
|
||||
export const DEFAULT_NOTEBOOK_FILETYPE = '.ipynb';
|
||||
export const SQL_NOTEBOOK_PROVIDER = 'sql';
|
||||
export const OVERRIDE_EDITOR_THEMING_SETTING = 'notebook.overrideEditorTheming';
|
||||
|
||||
|
||||
@@ -311,7 +311,7 @@ export class NotebookService extends Disposable implements INotebookService {
|
||||
if (!this._serializationProviders.has(p.id)) {
|
||||
// Only add a new provider descriptor if the provider
|
||||
// supports file extensions beyond the default ipynb
|
||||
let addNewProvider = extensions.some(ext => ext?.length > 0 && ext.toUpperCase() !== DEFAULT_NOTEBOOK_FILETYPE);
|
||||
let addNewProvider = extensions.some(ext => ext?.length > 0 && ext.toLowerCase() !== DEFAULT_NOTEBOOK_FILETYPE);
|
||||
if (addNewProvider) {
|
||||
this._serializationProviders.set(p.id, new SerializationProviderDescriptor(p.id));
|
||||
}
|
||||
@@ -378,12 +378,12 @@ export class NotebookService extends Disposable implements INotebookService {
|
||||
}
|
||||
|
||||
private addFileProvider(fileType: string, provider: ProviderDescriptionRegistration) {
|
||||
let providers = this._fileToProviderDescriptions.get(fileType.toUpperCase());
|
||||
let providers = this._fileToProviderDescriptions.get(fileType.toLowerCase());
|
||||
if (!providers) {
|
||||
providers = [];
|
||||
}
|
||||
providers.push(provider);
|
||||
this._fileToProviderDescriptions.set(fileType.toUpperCase(), providers);
|
||||
this._fileToProviderDescriptions.set(fileType.toLowerCase(), providers);
|
||||
}
|
||||
|
||||
// Standard kernels are contributed where a list of kernels are defined that can be shown
|
||||
@@ -411,7 +411,7 @@ export class NotebookService extends Disposable implements INotebookService {
|
||||
}
|
||||
|
||||
getProvidersForFileType(fileType: string): string[] | undefined {
|
||||
let providers = this._fileToProviderDescriptions.get(fileType.toUpperCase());
|
||||
let providers = this._fileToProviderDescriptions.get(fileType.toLowerCase());
|
||||
return providers?.map(provider => provider.provider);
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user