Skip to content

Commit

Permalink
upgrading to Monaco 0.17.0
Browse files Browse the repository at this point in the history
Signed-off-by: Anton Kosyakov <[email protected]>
  • Loading branch information
akosyakov committed Aug 16, 2019
1 parent 0751947 commit 1ac5db0
Show file tree
Hide file tree
Showing 46 changed files with 677 additions and 762 deletions.
6 changes: 3 additions & 3 deletions packages/console/src/browser/console-keybinding-contexts.ts
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ export class ConsoleNavigationBackEnabled extends ConsoleInputFocusContext {
return false;
}
const editor = console.input.getControl();
return editor.getPosition().equals({ lineNumber: 1, column: 1 });
return editor.getPosition()!.equals({ lineNumber: 1, column: 1 });
}

}
Expand All @@ -98,10 +98,10 @@ export class ConsoleNavigationForwardEnabled extends ConsoleInputFocusContext {
return false;
}
const editor = console.input.getControl();
const model = console.input.getControl().getModel();
const model = console.input.getControl().getModel()!;
const lineNumber = model.getLineCount();
const column = model.getLineMaxColumn(lineNumber);
return editor.getPosition().equals({ lineNumber, column });
return editor.getPosition()!.equals({ lineNumber, column });
}

}
4 changes: 2 additions & 2 deletions packages/console/src/browser/console-widget.ts
Original file line number Diff line number Diff line change
Expand Up @@ -193,8 +193,8 @@ export class ConsoleWidget extends BaseWidget implements StatefulWidget {
const value = this.history.next || '';
const editor = this.input.getControl();
editor.setValue(value);
const lineNumber = editor.getModel().getLineCount();
const column = editor.getModel().getLineMaxColumn(lineNumber);
const lineNumber = editor.getModel()!.getLineCount();
const column = editor.getModel()!.getLineMaxColumn(lineNumber);
editor.setPosition({ lineNumber, column });
}

Expand Down
6 changes: 3 additions & 3 deletions packages/debug/src/browser/debug-configuration-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -208,7 +208,7 @@ export class DebugConfigurationManager {
},
onArrayBegin: offset => {
if (lastProperty === 'configurations' && depthInArray === 0) {
position = editor.getModel().getPositionAt(offset + 1);
position = editor.getModel()!.getPositionAt(offset + 1);
}
depthInArray++;
},
Expand All @@ -220,12 +220,12 @@ export class DebugConfigurationManager {
return;
}
// Check if there are more characters on a line after a "configurations": [, if yes enter a newline
if (editor.getModel().getLineLastNonWhitespaceColumn(position.lineNumber) > position.column) {
if (editor.getModel()!.getLineLastNonWhitespaceColumn(position.lineNumber) > position.column) {
editor.setPosition(position);
editor.trigger('debug', 'lineBreakInsert', undefined);
}
// Check if there is already an empty line to insert suggest, if yes just place the cursor
if (editor.getModel().getLineLastNonWhitespaceColumn(position.lineNumber + 1) === 0) {
if (editor.getModel()!.getLineLastNonWhitespaceColumn(position.lineNumber + 1) === 0) {
editor.setPosition({ lineNumber: position.lineNumber + 1, column: 1 << 30 });
await commandService.executeCommand('editor.action.deleteLines');
}
Expand Down
34 changes: 23 additions & 11 deletions packages/debug/src/browser/editor/debug-breakpoint-widget.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -89,28 +89,39 @@ export class DebugBreakpointWidget implements Disposable {
return;
}
this.toDispose.push(input);
this.toDispose.push(monaco.modes.SuggestRegistry.register({ scheme: input.uri.scheme }, {
this.toDispose.push(monaco.modes.CompletionProviderRegistry.register({ scheme: input.uri.scheme }, {
provideCompletionItems: async (model, position, context, token) => {
const suggestions = [];
if ((this.context === 'condition' || this.context === 'logMessage')
&& input.uri.toString() === model.uri.toString()) {
const editor = this.editor.getControl();
const items = await monaco.suggest.provideSuggestionItems(
editor.getModel(),
new monaco.Position(editor.getPosition().lineNumber, 1),
'none', undefined, context, token);
for (const { suggestion } of items) {
suggestion.overwriteAfter = 0;
suggestion.overwriteBefore = position.column - 1;
suggestions.push(suggestion);
editor.getModel()!,
new monaco.Position(editor.getPosition()!.lineNumber, 1),
new monaco.suggest.CompletionOptions(undefined, new Set<monaco.languages.CompletionItemKind>().add(monaco.languages.CompletionItemKind.Snippet)),
context, token);
let overwriteBefore = 0;
if (this.context === 'condition') {
overwriteBefore = position.column - 1;
} else {
// Inside the currly brackets, need to count how many useful characters are behind the position so they would all be taken into account
const value = editor.getModel()!.getValue();
while ((position.column - 2 - overwriteBefore >= 0)
&& value[position.column - 2 - overwriteBefore] !== '{' && value[position.column - 2 - overwriteBefore] !== ' ') {
overwriteBefore++;
}
}
for (const { completion } of items) {
completion.range = monaco.Range.fromPositions(position.delta(0, -overwriteBefore), position);
suggestions.push(completion);
}
}
return { suggestions };
}
}));
this.toDispose.push(this.zone.onDidLayoutChange(dimension => this.layout(dimension)));
this.toDispose.push(input.getControl().onDidChangeModelContent(() => {
const heightInLines = input.getControl().getModel().getLineCount() + 1;
const heightInLines = input.getControl().getModel()!.getLineCount() + 1;
this.zone.layout(heightInLines);
this.updatePlaceholder();
}));
Expand Down Expand Up @@ -152,9 +163,9 @@ export class DebugBreakpointWidget implements Disposable {
const afterLineNumber = breakpoint ? breakpoint.line : position!.lineNumber;
const afterColumn = breakpoint ? breakpoint.column : position!.column;
const editor = this._input.getControl();
const heightInLines = editor.getModel().getLineCount() + 1;
const heightInLines = editor.getModel()!.getLineCount() + 1;
this.zone.show({ afterLineNumber, afterColumn, heightInLines, frameWidth: 1 });
editor.setPosition(editor.getModel().getPositionAt(editor.getModel().getValueLength()));
editor.setPosition(editor.getModel()!.getPositionAt(editor.getModel()!.getValueLength()));
this._input.focus();
}

Expand Down Expand Up @@ -207,6 +218,7 @@ export class DebugBreakpointWidget implements Disposable {
}
const value = this._input.getControl().getValue();
const decorations: monaco.editor.IDecorationOptions[] = !!value ? [] : [{
color: undefined,
range: {
startLineNumber: 0,
endLineNumber: 0,
Expand Down
26 changes: 13 additions & 13 deletions packages/debug/src/browser/editor/debug-editor-model.ts
Original file line number Diff line number Diff line change
Expand Up @@ -79,15 +79,15 @@ export class DebugEditorModel implements Disposable {

@postConstruct()
protected init(): void {
this.uri = new URI(this.editor.getControl().getModel().uri.toString());
this.uri = new URI(this.editor.getControl().getModel()!.uri.toString());
this.toDispose.pushAll([
this.hover,
this.breakpointWidget,
this.editor.getControl().onMouseDown(event => this.handleMouseDown(event)),
this.editor.getControl().onMouseMove(event => this.handleMouseMove(event)),
this.editor.getControl().onMouseLeave(event => this.handleMouseLeave(event)),
this.editor.getControl().onKeyDown(() => this.hover.hide({ immediate: false })),
this.editor.getControl().getModel().onDidChangeDecorations(() => this.updateBreakpoints()),
this.editor.getControl().getModel()!.onDidChangeDecorations(() => this.updateBreakpoints()),
this.sessions.onDidChange(() => this.renderFrames())
]);
this.renderFrames();
Expand Down Expand Up @@ -176,7 +176,7 @@ export class DebugEditorModel implements Disposable {
protected updateBreakpointRanges(): void {
this.breakpointRanges.clear();
for (const decoration of this.breakpointDecorations) {
const range = this.editor.getControl().getModel().getDecorationRange(decoration);
const range = this.editor.getControl().getModel()!.getDecorationRange(decoration)!;
this.breakpointRanges.set(decoration, range);
}
}
Expand Down Expand Up @@ -214,7 +214,7 @@ export class DebugEditorModel implements Disposable {
return false;
}
for (const decoration of this.breakpointDecorations) {
const range = this.editor.getControl().getModel().getDecorationRange(decoration);
const range = this.editor.getControl().getModel()!.getDecorationRange(decoration);
const oldRange = this.breakpointRanges.get(decoration)!;
if (!range || !range.equalsRange(oldRange)) {
return true;
Expand All @@ -227,7 +227,7 @@ export class DebugEditorModel implements Disposable {
const lines = new Set<number>();
const breakpoints: SourceBreakpoint[] = [];
for (const decoration of this.breakpointDecorations) {
const range = this.editor.getControl().getModel().getDecorationRange(decoration);
const range = this.editor.getControl().getModel()!.getDecorationRange(decoration);
if (range && !lines.has(range.startLineNumber)) {
const line = range.startLineNumber;
const oldRange = this.breakpointRanges.get(decoration);
Expand All @@ -242,7 +242,7 @@ export class DebugEditorModel implements Disposable {

protected _position: monaco.Position | undefined;
get position(): monaco.Position {
return this._position || this.editor.getControl().getPosition();
return this._position || this.editor.getControl().getPosition()!;
}
get breakpoint(): DebugBreakpoint | undefined {
return this.getBreakpoint();
Expand Down Expand Up @@ -285,12 +285,12 @@ export class DebugEditorModel implements Disposable {
protected handleMouseDown(event: monaco.editor.IEditorMouseEvent): void {
if (event.target && event.target.type === monaco.editor.MouseTargetType.GUTTER_GLYPH_MARGIN) {
if (event.event.rightButton) {
this._position = event.target.position;
this._position = event.target.position!;
this.contextMenu.render(DebugEditorModel.CONTEXT_MENU, event.event.browserEvent, () =>
setTimeout(() => this._position = undefined)
);
} else {
this.doToggleBreakpoint(event.target.position);
this.doToggleBreakpoint(event.target.position!);
}
}
this.hintBreakpoint(event);
Expand All @@ -299,7 +299,7 @@ export class DebugEditorModel implements Disposable {
this.showHover(event);
this.hintBreakpoint(event);
}
protected handleMouseLeave(event: monaco.editor.IEditorMouseEvent): void {
protected handleMouseLeave(event: monaco.editor.IPartialEditorMouseEvent): void {
this.hideHover(event);
this.deltaHintDecorations([]);
}
Expand All @@ -313,7 +313,7 @@ export class DebugEditorModel implements Disposable {
this.hintDecorations = this.deltaDecorations(this.hintDecorations, hintDecorations);
}
protected createHintDecorations(event: monaco.editor.IEditorMouseEvent): monaco.editor.IModelDeltaDecoration[] {
if (event.target && event.target.type === monaco.editor.MouseTargetType.GUTTER_GLYPH_MARGIN) {
if (event.target && event.target.type === monaco.editor.MouseTargetType.GUTTER_GLYPH_MARGIN && event.target.position) {
const lineNumber = event.target.position.lineNumber;
if (!!this.sessions.getBreakpoint(this.uri, lineNumber)) {
return [];
Expand All @@ -337,14 +337,14 @@ export class DebugEditorModel implements Disposable {
}
if (targetType === monaco.editor.MouseTargetType.CONTENT_TEXT) {
this.hover.show({
selection: mouseEvent.target.range,
selection: mouseEvent.target.range!,
immediate: false
});
} else {
this.hover.hide({ immediate: false });
}
}
protected hideHover({ event }: monaco.editor.IEditorMouseEvent): void {
protected hideHover({ event }: monaco.editor.IPartialEditorMouseEvent): void {
const rect = this.hover.getDomNode().getBoundingClientRect();
if (event.posx < rect.left || event.posx > rect.right || event.posy < rect.top || event.posy > rect.bottom) {
this.hover.hide({ immediate: false });
Expand All @@ -354,7 +354,7 @@ export class DebugEditorModel implements Disposable {
protected deltaDecorations(oldDecorations: string[], newDecorations: monaco.editor.IModelDeltaDecoration[]): string[] {
this.updatingDecorations = true;
try {
return this.editor.getControl().getModel().deltaDecorations(oldDecorations, newDecorations);
return this.editor.getControl().getModel()!.deltaDecorations(oldDecorations, newDecorations);
} finally {
this.updatingDecorations = false;
}
Expand Down
8 changes: 4 additions & 4 deletions packages/debug/src/browser/editor/debug-editor-service.ts
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ export class DebugEditorService {
if (!(editor instanceof MonacoEditor)) {
return;
}
const uri = editor.getControl().getModel().uri.toString();
const uri = editor.getControl().getModel()!.uri.toString();
const debugModel = this.factory(editor);
this.models.set(uri, debugModel);
editor.getControl().onDidDispose(() => {
Expand Down Expand Up @@ -122,15 +122,15 @@ export class DebugEditorService {
showHover(): void {
const { model } = this;
if (model) {
const selection = model.editor.getControl().getSelection();
const selection = model.editor.getControl().getSelection()!;
model.hover.show({ selection, focus: true });
}
}
canShowHover(): boolean {
const { model } = this;
if (model) {
const selection = model.editor.getControl().getSelection();
return !!model.editor.getControl().getModel().getWordAtPosition(selection.getStartPosition());
const selection = model.editor.getControl().getSelection()!;
return !!model.editor.getControl().getModel()!.getWordAtPosition(selection.getStartPosition());
}
return false;
}
Expand Down
6 changes: 3 additions & 3 deletions packages/debug/src/browser/editor/debug-hover-widget.ts
Original file line number Diff line number Diff line change
Expand Up @@ -159,7 +159,7 @@ export class DebugHoverWidget extends SourceTreeWidget implements monaco.editor.
}
super.show();
this.options = options;
const expression = this.expressionProvider.get(this.editor.getControl().getModel(), options.selection);
const expression = this.expressionProvider.get(this.editor.getControl().getModel()!, options.selection);
if (!expression) {
this.hide();
return;
Expand All @@ -181,15 +181,15 @@ export class DebugHoverWidget extends SourceTreeWidget implements monaco.editor.
protected isEditorFrame(): boolean {
const { currentFrame } = this.sessions;
return !!currentFrame && !!currentFrame.source &&
this.editor.getControl().getModel().uri.toString() === currentFrame.source.uri.toString();
this.editor.getControl().getModel()!.uri.toString() === currentFrame.source.uri.toString();
}

getPosition(): monaco.editor.IContentWidgetPosition {
if (!this.isVisible) {
return undefined!;
}
const position = this.options && this.options.selection.getStartPosition();
const word = position && this.editor.getControl().getModel().getWordAtPosition(position);
const word = position && this.editor.getControl().getModel()!.getWordAtPosition(position);
return position && word ? {
position: new monaco.Position(position.lineNumber, word.startColumn),
preference: [
Expand Down
49 changes: 25 additions & 24 deletions packages/editor-preview/src/browser/editor-preview-manager.ts
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,6 @@ import { EditorPreviewWidget } from './editor-preview-widget';
import { EditorPreviewWidgetFactory, EditorPreviewWidgetOptions } from './editor-preview-factory';
import { EditorPreviewPreferences } from './editor-preview-preferences';
import { WidgetOpenHandler, WidgetOpenerOptions } from '@theia/core/lib/browser';
import { Deferred } from '@theia/core/lib/common/promise-util';

/**
* Opener options containing an optional preview flag.
Expand Down Expand Up @@ -109,38 +108,40 @@ export class EditorPreviewManager extends WidgetOpenHandler<EditorPreviewWidget
return 0;
}

async open(uri: URI, options?: PreviewEditorOpenerOptions): Promise<EditorPreviewWidget | EditorWidget> {
options = { ...options, mode: 'open' };

const deferred = new Deferred<EditorPreviewWidget | undefined>();
const previousPreview = await this.currentEditorPreview;
this.currentEditorPreview = deferred.promise;
async open(uri: URI, options: PreviewEditorOpenerOptions = {}): Promise<EditorPreviewWidget | EditorWidget> {
let widget = await this.pinCurrentEditor(uri, options);
if (widget) {
return widget;
}
widget = await this.replaceCurrentPreview(uri, options) || await this.openNewPreview(uri, options);
await this.editorManager.open(uri, options);
return widget;
}

protected async pinCurrentEditor(uri: URI, options: PreviewEditorOpenerOptions): Promise<EditorWidget | EditorPreviewWidget | undefined> {
if (await this.editorManager.getByUri(uri)) {
let widget: EditorWidget | EditorPreviewWidget = await this.editorManager.open(uri, options);
if (widget.parent instanceof EditorPreviewWidget) {
const editorWidget = await this.editorManager.open(uri, options);
if (editorWidget.parent instanceof EditorPreviewWidget) {
if (!options.preview) {
widget.parent.pinEditorWidget();
editorWidget.parent.pinEditorWidget();
}
widget = widget.parent;
return editorWidget.parent;
}
this.shell.revealWidget(widget.id);
deferred.resolve(previousPreview);
return widget;
return editorWidget;
}
}

if (!previousPreview) {
this.currentEditorPreview = super.open(uri, options) as Promise<EditorPreviewWidget>;
} else {
const childWidget = await this.editorManager.getOrCreateByUri(uri);
previousPreview.replaceEditorWidget(childWidget);
this.currentEditorPreview = Promise.resolve(previousPreview);
protected async replaceCurrentPreview(uri: URI, options: PreviewEditorOpenerOptions): Promise<EditorPreviewWidget | undefined> {
const currentPreview = await this.currentEditorPreview;
if (currentPreview) {
const editorWidget = await this.editorManager.getOrCreateByUri(uri);
currentPreview.replaceEditorWidget(editorWidget);
return currentPreview;
}
}

const preview = await this.currentEditorPreview as EditorPreviewWidget;
this.editorManager.open(uri, options);
this.shell.revealWidget(preview.id);
return preview;
protected openNewPreview(uri: URI, options: PreviewEditorOpenerOptions): Promise<EditorPreviewWidget> {
return this.currentEditorPreview = super.open(uri, options) as Promise<EditorPreviewWidget>;
}

protected createWidgetOptions(uri: URI, options?: WidgetOpenerOptions): EditorPreviewWidgetOptions {
Expand Down
2 changes: 1 addition & 1 deletion packages/editor/src/browser/editor.ts
Original file line number Diff line number Diff line change
Expand Up @@ -119,7 +119,7 @@ export interface MouseTarget {
/**
* The target element
*/
readonly element: Element;
readonly element?: Element;
/**
* The target type
*/
Expand Down
Loading

0 comments on commit 1ac5db0

Please sign in to comment.