public static string GetSelectedProcedureScope(this CodeModule module, Selection selection) { var moduleName = module.Name; var projectName = module.Parent.Collection.Parent.Name; var parentScope = projectName + '.' + moduleName; vbext_ProcKind kind; var procStart = module.get_ProcOfLine(selection.StartLine, out kind); var procEnd = module.get_ProcOfLine(selection.EndLine, out kind); return(procStart == procEnd ? parentScope + '.' + procStart : null); }
public static IEnumerable <Member> GetMembers(this CodeModule module, vbext_ProcKind?procedureKind = null) { var currentLine = module.CountOfDeclarationLines + 1; while (currentLine < module.CountOfLines) { vbext_ProcKind kind; var name = module.get_ProcOfLine(currentLine, out kind); if ((procedureKind ?? kind) == kind) { var startLine = module.get_ProcStartLine(name, kind); var lineCount = module.get_ProcCountLines(name, kind); var body = module.Lines[startLine, lineCount].Split('\n'); Member member; if (Member.TryParse(body, new QualifiedModuleName(module.Parent), out member)) { yield return(member); currentLine = startLine + lineCount; } else { currentLine = currentLine + 1; } } } }
private bool IsValidSelection(CodeModule module, Selection selection) { if (selection.LineCount > 1) { vbext_ProcKind kindStart; var startProc = module.get_ProcOfLine(selection.StartLine, out kindStart); vbext_ProcKind kindEnd; var endProc = module.get_ProcOfLine(selection.EndLine, out kindEnd); if (startProc != endProc || kindStart != kindEnd) { return(false); } } return(true); }
public IEnumerable <Member> GetMembers() { var currentLine = _module.CountOfDeclarationLines + 1; while (currentLine < _module.CountOfLines) { vbext_ProcKind kind; var name = _module.get_ProcOfLine(currentLine, out kind); var startLine = _module.get_ProcStartLine(name, kind); var lineCount = _module.get_ProcCountLines(name, kind); var body = _module.Lines[startLine, lineCount].Split('\n'); Member member; if (Member.TryParse(body, _module.Parent.Collection.Parent.Name, _module.Parent.Name, out member)) { yield return(member); currentLine = startLine + lineCount; } } }
public string get_ProcOfLine(int Line, out Microsoft.Vbe.Interop.vbext_ProcKind ProcKind) { return(_codeModule.get_ProcOfLine(Line, out ProcKind)); }