mirror of
https://github.com/microsoft/vscode.git
synced 2025-12-24 12:19:20 +00:00
Merge pull request #143211 from gjsjohnmurray/interactive-input-prompt
Fix and improve IW input placeholder text
This commit is contained in:
@@ -56,6 +56,7 @@ import { EditorInput } from 'vs/workbench/common/editor/editorInput';
|
|||||||
import { ITextResourceConfigurationService } from 'vs/editor/common/services/textResourceConfiguration';
|
import { ITextResourceConfigurationService } from 'vs/editor/common/services/textResourceConfiguration';
|
||||||
import { ITextEditorOptions } from 'vs/platform/editor/common/editor';
|
import { ITextEditorOptions } from 'vs/platform/editor/common/editor';
|
||||||
import { INotebookExecutionStateService } from 'vs/workbench/contrib/notebook/common/notebookExecutionStateService';
|
import { INotebookExecutionStateService } from 'vs/workbench/contrib/notebook/common/notebookExecutionStateService';
|
||||||
|
import { NOTEBOOK_KERNEL } from 'vs/workbench/contrib/notebook/common/notebookContextKeys';
|
||||||
|
|
||||||
const DECORATION_KEY = 'interactiveInputDecoration';
|
const DECORATION_KEY = 'interactiveInputDecoration';
|
||||||
const INTERACTIVE_EDITOR_VIEW_STATE_PREFERENCE_KEY = 'InteractiveEditorViewState';
|
const INTERACTIVE_EDITOR_VIEW_STATE_PREFERENCE_KEY = 'InteractiveEditorViewState';
|
||||||
@@ -435,8 +436,8 @@ export class InteractiveEditor extends EditorPane {
|
|||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this.#widgetDisposableStore.add(this.#notebookKernelService.onDidChangeNotebookAffinity(this.#updateInputEditorLanguage, this));
|
this.#widgetDisposableStore.add(this.#notebookKernelService.onDidChangeNotebookAffinity(this.#syncWithKernel, this));
|
||||||
this.#widgetDisposableStore.add(this.#notebookKernelService.onDidChangeSelectedNotebooks(this.#updateInputEditorLanguage, this));
|
this.#widgetDisposableStore.add(this.#notebookKernelService.onDidChangeSelectedNotebooks(this.#syncWithKernel, this));
|
||||||
|
|
||||||
this.#widgetDisposableStore.add(this.themeService.onDidColorThemeChange(() => {
|
this.#widgetDisposableStore.add(this.themeService.onDidColorThemeChange(() => {
|
||||||
if (this.isVisible()) {
|
if (this.isVisible()) {
|
||||||
@@ -491,8 +492,7 @@ export class InteractiveEditor extends EditorPane {
|
|||||||
}
|
}
|
||||||
}));
|
}));
|
||||||
|
|
||||||
this.#updateInputDecoration();
|
this.#syncWithKernel();
|
||||||
this.#updateInputEditorLanguage();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#lastCell: ICellViewModel | undefined = undefined;
|
#lastCell: ICellViewModel | undefined = undefined;
|
||||||
@@ -592,22 +592,24 @@ export class InteractiveEditor extends EditorPane {
|
|||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
#updateInputEditorLanguage() {
|
#syncWithKernel() {
|
||||||
const notebook = this.#notebookWidget.value?.textModel;
|
const notebook = this.#notebookWidget.value?.textModel;
|
||||||
const textModel = this.#codeEditorWidget.getModel();
|
const textModel = this.#codeEditorWidget.getModel();
|
||||||
|
|
||||||
if (!notebook || !textModel) {
|
if (notebook && textModel) {
|
||||||
return;
|
const info = this.#notebookKernelService.getMatchingKernel(notebook);
|
||||||
|
const selectedOrSuggested = info.selected ?? info.suggestions[0];
|
||||||
|
|
||||||
|
if (selectedOrSuggested) {
|
||||||
|
const language = selectedOrSuggested.supportedLanguages[0];
|
||||||
|
const newMode = language ? this.#languageService.createById(language).languageId : PLAINTEXT_LANGUAGE_ID;
|
||||||
|
textModel.setMode(newMode);
|
||||||
|
|
||||||
|
NOTEBOOK_KERNEL.bindTo(this.#contextKeyService).set(selectedOrSuggested.id);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const info = this.#notebookKernelService.getMatchingKernel(notebook);
|
this.#updateInputDecoration();
|
||||||
const selectedOrSuggested = info.selected ?? info.suggestions[0];
|
|
||||||
|
|
||||||
if (selectedOrSuggested) {
|
|
||||||
const language = selectedOrSuggested.supportedLanguages[0];
|
|
||||||
const newMode = language ? this.#languageService.createById(language).languageId : PLAINTEXT_LANGUAGE_ID;
|
|
||||||
textModel.setMode(newMode);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
layout(dimension: DOM.Dimension): void {
|
layout(dimension: DOM.Dimension): void {
|
||||||
@@ -661,8 +663,9 @@ export class InteractiveEditor extends EditorPane {
|
|||||||
|
|
||||||
if (model?.getValueLength() === 0) {
|
if (model?.getValueLength() === 0) {
|
||||||
const transparentForeground = resolveColorValue(editorForeground, this.themeService.getColorTheme())?.transparent(0.4);
|
const transparentForeground = resolveColorValue(editorForeground, this.themeService.getColorTheme())?.transparent(0.4);
|
||||||
const keybinding = this.#keybindingService.lookupKeybinding('interactive.execute')?.getLabel();
|
const languageId = model.getLanguageId();
|
||||||
const text = nls.localize('interactiveInputPlaceHolder', "Type code here and press {0} to run", keybinding ?? 'ctrl+enter');
|
const keybinding = this.#keybindingService.lookupKeybinding('interactive.execute', this.#contextKeyService)?.getLabel();
|
||||||
|
const text = nls.localize('interactiveInputPlaceHolder', "Type '{0}' code here and press {1} to run", languageId, keybinding ?? 'ctrl+enter');
|
||||||
decorations.push({
|
decorations.push({
|
||||||
range: {
|
range: {
|
||||||
startLineNumber: 0,
|
startLineNumber: 0,
|
||||||
|
|||||||
Reference in New Issue
Block a user