exclude languages from language picker normal section if they are a detected language

上级 475eacd1
...@@ -1158,11 +1158,6 @@ export class ChangeModeAction extends Action { ...@@ -1158,11 +1158,6 @@ export class ChangeModeAction extends Action {
const textModel = activeTextEditorControl.getModel(); const textModel = activeTextEditorControl.getModel();
const resource = EditorResourceAccessor.getOriginalUri(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.PRIMARY }); const resource = EditorResourceAccessor.getOriginalUri(this.editorService.activeEditor, { supportSideBySide: SideBySideEditor.PRIMARY });
let hasLanguageSupport = !!resource;
if (resource?.scheme === Schemas.untitled && !this.textFileService.untitled.get(resource)?.hasAssociatedFilePath) {
hasLanguageSupport = false; // no configuration for untitled resources (e.g. "Untitled-1")
}
// Compute mode // Compute mode
let currentLanguageId: string | undefined; let currentLanguageId: string | undefined;
let currentModeId: string | undefined; let currentModeId: string | undefined;
...@@ -1171,9 +1166,22 @@ export class ChangeModeAction extends Action { ...@@ -1171,9 +1166,22 @@ export class ChangeModeAction extends Action {
currentLanguageId = withNullAsUndefined(this.modeService.getLanguageName(currentModeId)); currentLanguageId = withNullAsUndefined(this.modeService.getLanguageName(currentModeId));
} }
let hasLanguageSupport = !!resource;
let detectedLanguages: string[] = [];
if (resource?.scheme === Schemas.untitled && !this.textFileService.untitled.get(resource)?.hasAssociatedFilePath) {
hasLanguageSupport = false; // no configuration for untitled resources (e.g. "Untitled-1")
// Detect languages since we are in an untitled file
detectedLanguages = await this.languageDetectionService.detectLanguages(resource);
}
// All languages are valid picks // All languages are valid picks
const languages = this.modeService.getRegisteredLanguageNames(); const languages = this.modeService.getRegisteredLanguageNames();
const picks: QuickPickInput[] = languages.sort().map(lang => { const picks: QuickPickInput[] = languages.sort()
.filter(lang => {
const modeId = this.modeService.getModeIdForLanguageName(lang.toLowerCase()) || 'unknown';
return (detectedLanguages.indexOf(modeId) === -1);
}).map(lang => {
const modeId = this.modeService.getModeIdForLanguageName(lang.toLowerCase()) || 'unknown'; const modeId = this.modeService.getModeIdForLanguageName(lang.toLowerCase()) || 'unknown';
const extensions = this.modeService.getExtensions(lang).join(' '); const extensions = this.modeService.getExtensions(lang).join(' ');
let description: string; let description: string;
...@@ -1218,10 +1226,8 @@ export class ChangeModeAction extends Action { ...@@ -1218,10 +1226,8 @@ export class ChangeModeAction extends Action {
if (hasLanguageSupport) { if (hasLanguageSupport) {
picks.unshift(autoDetectMode); picks.unshift(autoDetectMode);
} else if (resource) { } else if (detectedLanguages) {
// Handle language detection // Add untitled detected languages
const detectedLanguages = await this.languageDetectionService.detectLanguages(resource);
if (detectedLanguages) {
for (const modeId of detectedLanguages.reverse()) { for (const modeId of detectedLanguages.reverse()) {
const lang = this.modeService.getLanguageName(modeId) || 'unknown'; const lang = this.modeService.getLanguageName(modeId) || 'unknown';
let description: string; let description: string;
...@@ -1240,7 +1246,6 @@ export class ChangeModeAction extends Action { ...@@ -1240,7 +1246,6 @@ export class ChangeModeAction extends Action {
picks.unshift({ type: 'separator', label: localize('detectedLanguagesPicks', "detected languages (identifier)") }); picks.unshift({ type: 'separator', label: localize('detectedLanguagesPicks', "detected languages (identifier)") });
} }
}
const pick = await this.quickInputService.pick(picks, { placeHolder: localize('pickLanguage', "Select Language Mode"), matchOnDescription: true }); const pick = await this.quickInputService.pick(picks, { placeHolder: localize('pickLanguage', "Select Language Mode"), matchOnDescription: true });
if (!pick) { if (!pick) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册