Ejemplo n.º 1
0
        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();
                }
            }
        }
Ejemplo n.º 2
0
        public void DetachBuffer()
        {
            var buf = Buffer;

            if (buf != null)
            {
                buf.ScrollPosition = Scroll.ScrollPosition;
                buf.Editors.Remove(this);
                MatchWords.ClearMatches();
                MatchBrackets.ClearMatches();
                Search.ClearMatches();
            }
        }