示例#1
0
文件: TextManager.cs 项目: vvmk/VsVim
        private IEnumerable <ITextBuffer> GetDocumentTextBuffers(DocumentLoad documentLoad)
        {
            var list = new List <ITextBuffer>();

            foreach (var docCookie in _runningDocumentTable.GetRunningDocumentCookies())
            {
                if (documentLoad == DocumentLoad.RespectLazy && _sharedService.IsLazyLoaded(docCookie))
                {
                    continue;
                }

                if (_vsAdapter.GetTextBufferForDocCookie(docCookie).TryGetValue(out ITextBuffer buffer))
                {
                    list.Add(buffer);
                }
            }

            return(list);
        }
示例#2
0
        private IEnumerable <ITextBuffer> GetDocumentTextBuffers(DocumentLoad documentLoad)
        {
            var list = new List <ITextBuffer>();

            foreach (var docCookie in _runningDocumentTable.GetRunningDocumentCookies())
            {
                if (documentLoad == DocumentLoad.RespectLazy && isLazyLoaded(docCookie))
                {
                    continue;
                }

                if (_vsAdapter.GetTextBufferForDocCookie(docCookie).TryGetValue(out ITextBuffer buffer))
                {
                    list.Add(buffer);
                }
            }

            return(list);

            bool isLazyLoaded(uint documentCookie)
            {
                try
                {
                    if (_runningDocumentTable4 is null)
                    {
                        _runningDocumentTable4 = _serviceProvider.GetService <SVsRunningDocumentTable, IVsRunningDocumentTable4>();
                    }

                    var flags = (_VSRDTFLAGS4)_runningDocumentTable4.GetDocumentFlags(documentCookie);
                    return(0 != (flags & _VSRDTFLAGS4.RDT_PendingInitialization));
                }
                catch (Exception)
                {
                    return(false);
                }
            }
        }