public void AttachBuffer(IBuffer buf) { var buffer = buf as DocumentBuffer; if (buffer == null) { throw new NotSupportedException(); } if (Buffer != null && buffer != Buffer) { DetachBuffer(); } else if (Buffer == buffer) { return; } var @lock = Buffer?.ObtainLock(); try { buffer.LastAccess = DateTime.Now; if (buffer != Buffer) { buffer.Editors.Add(this); Buffer = buffer; } if (Buffer.GrammarKey == null) { Buffer.GrammarKey = App.Component <IModeManager>() .SelectMode(buffer.File).Key; } Scroll.InvalidateLines(InvalidateFlags.Force); Scroll.ScrollPosition = buffer.ScrollPosition; Styles.RestyleDocument(); Folding.RebuildFolding(full: true); Redraw(); MatchBrackets.Match(); Search.HideSearch(); TopMargins.ResetMargins(); BottomMargins.ResetMargins(); LeftMargins.ResetMargins(); RightMargins.ResetMargins(); } finally { if (@lock != null) { @lock.Release(); } } }
public void DetachBuffer() { var buf = Buffer; if (buf != null) { buf.ScrollPosition = Scroll.ScrollPosition; buf.Editors.Remove(this); MatchWords.ClearMatches(); MatchBrackets.ClearMatches(); Search.ClearMatches(); } }