public TextEditorViewModel(ITextDocument document, ISourceFile file) : base(file) { _lastLineNumber = -1; _visualFontSize = _fontSize = 14; _zoomLevel = 1; if (_studio != null) { ZoomLevel = _studio.GlobalZoomLevel; } _document = document; _inputHelpers = new List <ITextEditorInputHelper>(); _inputHelpers.Add(new DefaultIndentationInputHelper()); this.WhenAnyValue(x => x.Line).Subscribe(lineNumber => { if (lineNumber != _lastLineNumber && lineNumber > 0) { var line = Document.Lines[Line]; var text = Document.GetText(line); if (string.IsNullOrWhiteSpace(text)) { foreach (var helper in InputHelpers) { helper.CaretMovedToEmptyLine(this); } } _lastLineNumber = lineNumber; } }); this.WhenAnyValue(x => x.Offset).ObserveOn(RxApp.MainThreadScheduler).Subscribe(x => { _statusBar?.SetTextPosition(Offset, Line, Column); }); _statusBar = IoC.Get <IStatusBar>(); }