public void ClearBuiltInReferences() { foreach (var item in AllDeclarations.Where(item => item.IsBuiltIn && item.References.Any())) { item.ClearReferences(); } }
public Declaration FindSelectedDeclaration(CodePane activeCodePane, bool procedureLevelOnly = false) { var selection = activeCodePane.GetSelection(); if (selection.Equals(_lastSelection)) { return(_selectedDeclaration); } _lastSelection = selection; _selectedDeclaration = null; if (!selection.Equals(default(QualifiedSelection))) { var matches = AllDeclarations .Where(item => item.DeclarationType != DeclarationType.Project && item.DeclarationType != DeclarationType.ModuleOption && item.DeclarationType != DeclarationType.ClassModule && item.DeclarationType != DeclarationType.ProceduralModule && (IsSelectedDeclaration(selection, item) || item.References.Any(reference => IsSelectedReference(selection, reference)))) .ToList(); try { if (matches.Count == 1) { _selectedDeclaration = matches.Single(); } else { Declaration match = null; if (procedureLevelOnly) { match = matches.SingleOrDefault(item => item.DeclarationType.HasFlag(DeclarationType.Member)); } // ambiguous (?), or no match - make the module be the current selection match = match ?? AllUserDeclarations.SingleOrDefault(item => (item.DeclarationType == DeclarationType.ClassModule || item.DeclarationType == DeclarationType.ProceduralModule) && item.QualifiedName.QualifiedModuleName.Equals(selection.QualifiedName)); _selectedDeclaration = match; } } catch (InvalidOperationException exception) { Debug.WriteLine(exception); } } if (_selectedDeclaration != null) { Debug.WriteLine("Current selection ({0}) is '{1}' ({2})", selection, _selectedDeclaration.IdentifierName, _selectedDeclaration.DeclarationType); } return(_selectedDeclaration); }