예제 #1
0
        private EditorData MakeInitialEditorData(string handledModuleFile, CodeLocation caretLocation)
        {
            // if possible, keep the EditorData, especially resolution contexts
            EditorData editorData;
            uint       modificationCount = _editorDataProvider.ModificationCount();

            if (_editorData == null || _editorDataModificationCount != modificationCount)
            {
                editorData = _editorDataProvider.MakeEditorData();
            }
            else
            {
                // wait for pending task to finish/cancel, so we do not access
                //  the context from different threads
                try
                {
                    if (_task != null)
                    {
                        _ = _task.Result;
                    }
                }
                catch (TaskCanceledException)
                {
                }
                catch (AggregateException)
                {
                }
                editorData = _editorData;
            }
            editorData.CancelToken = _cancellation.Token;
            handledModuleFile      = EditorDataProvider.normalizePath(handledModuleFile);
            var ast = _vdServer.GetModule(handledModuleFile);

            editorData.SyntaxTree    = ast ?? throw new COMException("module not found", 1);
            editorData.ModuleCode    = _vdServer._sources[handledModuleFile];
            editorData.CaretLocation = caretLocation;
            editorData.CaretOffset   = GetCodeOffset(editorData.ModuleCode, caretLocation);

            _editorData = editorData;
            _editorDataModificationCount = modificationCount;
            return(editorData);
        }
예제 #2
0
 public IdentifierTypesGenerator(VDServer vdServer, EditorDataProvider editorDataProvider)
     : base(vdServer, editorDataProvider)
 {
 }
예제 #3
0
 public ReferencesListGenerator(VDServer vdServer, EditorDataProvider editorDataProvider)
     : base(vdServer, editorDataProvider)
 {
     _vdServer = vdServer;
 }
예제 #4
0
 public TooltipGenerator(VDServer vdServer, EditorDataProvider editorDataProvider)
     : base(vdServer, editorDataProvider)
 {
 }
예제 #5
0
 protected AbstractVDServerTask(VDServer vdServer, EditorDataProvider editorDataProvider)
 {
     _vdServer           = vdServer;
     _editorDataProvider = editorDataProvider;
 }
예제 #6
0
 public SemanticExpansionsGenerator(VDServer vdServer, EditorDataProvider editorDataProvider)
     : base(vdServer, editorDataProvider)
 {
 }
예제 #7
0
 public SymbolDefinitionGenerator(VDServer vdServer, EditorDataProvider editorDataProvider)
     : base(vdServer, editorDataProvider)
 {
 }