private static void ParseTag(Scope scope, GroupToken parent, KeywordToken tagToken, string[] endTokens) { var code = scope.Code; parent.AddToken(tagToken); var resetPos = code.Position; if (code.ReadTagName() && ProbeEnvironment.IsValidTagName(code.Text)) { parent.AddToken(new KeywordToken(scope, code.Span, code.Text)); if (code.ReadStringLiteral()) { parent.AddToken(new StringLiteralToken(scope, code.Span, code.Text)); return; } } else { code.Position = resetPos; } var exp = ExpressionToken.TryParse(scope, endTokens); if (exp != null) { parent.AddToken(exp); } }
private void FileTreeRefresh_Click(object sender, EventArgs e) { try { ProbeEnvironment.ReloadAsync(null, false); } catch (Exception ex) { this.ShowError(ex); } }
private void RefreshButton_Click(object sender, RoutedEventArgs e) { try { ProbeEnvironment.ReloadAsync(null, false); } catch (Exception ex) { this.ShowError(ex); } }
private void AppCombo_SelectionChanged(object sender, SelectionChangedEventArgs e) { try { if (_suppressAppChange) { return; } var selectedApp = c_appCombo.SelectedItem as string; if (!string.IsNullOrEmpty(selectedApp) && ProbeEnvironment.CurrentAppSettings.Initialized) { ProbeEnvironment.ReloadAsync(selectedApp, true); } } catch (Exception ex) { this.ShowError(ex); } }
public static void InsertDiag() { ThreadHelper.ThrowIfNotOnUIThread(); var dte = Shell.DTE; var activeDoc = dte.ActiveDocument; if (activeDoc != null) { var options = ProbeToolsPackage.Instance.TaggingOptions; var sel = activeDoc.Selection as TextSelection; var selText = sel.Text.Trim(); if (selText.IndexOf('\n') >= 0) { selText = string.Empty; } var sb = new StringBuilder(); sb.Append("diag(\""); if (options.InitialsInDiags && !string.IsNullOrWhiteSpace(options.Initials)) { sb.Append(options.Initials); sb.Append(": "); } if (options.FileNameInDiags) { sb.Append(Path.GetFileName(activeDoc.FullName)); sb.Append(": "); } if (options.FunctionNameInDiags) { var funcName = string.Empty; var buf = Shell.ActiveBuffer; if (buf != null) { var fileStore = CodeModel.FileStore.GetOrCreateForTextBuffer(buf); if (fileStore != null) { var appSettings = ProbeEnvironment.CurrentAppSettings; var fileName = VsTextUtil.TryGetDocumentFileName(buf); var funcs = fileStore.GetFunctionDropDownList(appSettings, fileName, buf.CurrentSnapshot); var model = fileStore.GetMostRecentModel(appSettings, fileName, buf.CurrentSnapshot, "Insert diag"); var modelPos = model.AdjustPosition(Shell.ActiveView.Caret.Position.BufferPosition.Position, model.Snapshot); foreach (var func in funcs) { if (func.EntireFunctionSpan.Contains(modelPos)) { funcName = func.Name; break; } } } } if (!string.IsNullOrWhiteSpace(funcName)) { sb.Append(funcName); sb.Append("(): "); } } if (!string.IsNullOrWhiteSpace(selText)) { sb.Append(ProbeEnvironment.StringEscape(selText)); sb.Append(" [\", "); sb.Append(selText); sb.Append(", \"]"); } int lengthBefore = sb.Length; sb.Append("\\n\");"); if (options.TodoAfterDiags) { sb.Append("\t// TODO"); } sel.Insert(sb.ToString()); if (string.IsNullOrWhiteSpace(selText)) { sel.CharLeft(false, sb.Length - lengthBefore); } } }
public static StatementState ProcessWord(string word, StatementState state) { switch (state) { case StatementState.None: switch (word) { case "after": return(StatementState.After); case "alter": return(StatementState.Alter); case "before": return(StatementState.Before); case "create": return(StatementState.Create); case "format": return(StatementState.Format); case "interface": return(StatementState.Interface); case "onerror": return(StatementState.Onerror); case "order": return(StatementState.Order); case "select": return(StatementState.Select); } break; #region create case StatementState.Create: switch (word) { case "interfacetype": return(StatementState.CreateInterfacetype); case "time": return(StatementState.CreateTime); } break; case StatementState.CreateInterfacetype: return(StatementState.CreateInterfacetypeName); case StatementState.CreateInterfacetypeName: switch (word) { case "path": case "progid": case "clsid": case "tlibid": case "iid": return(StatementState.CreateInterfacetypeTypeliblocator); case "framework": return(StatementState.CreateInterfacetypeFramework); } break; case StatementState.CreateInterfacetypeTypeliblocator: return(StatementState.CreateInterfacetypeTypeliblocatorName); #endregion #region selects case StatementState.SelectStar: if (word == "from") { return(StatementState.SelectFrom); } break; case StatementState.SelectFrom: if (DkDict.Dict.IsTable(word)) { return(StatementState.SelectFromTable); } break; case StatementState.SelectFromTable: if (word == "of") { return(StatementState.SelectFromTableOf); } if (word == "order") { return(StatementState.Order); } break; case StatementState.SelectFromTableComma: if (DkDict.Dict.IsTable(word)) { return(StatementState.SelectFromTableList); } break; case StatementState.SelectFromTableOf: if (DkDict.Dict.IsTable(word)) { return(StatementState.SelectFromTableOfTable); } break; case StatementState.Order: if (word == "by") { return(StatementState.OrderBy); } break; case StatementState.OrderBy: case StatementState.OrderByTableFieldComma: if (ProbeEnvironment.IsValidTableName(word)) { return(StatementState.OrderByTable); } break; case StatementState.OrderByTableDot: if (ProbeEnvironment.IsValidFieldName(word)) { return(StatementState.OrderByTableField); } break; case StatementState.OrderByTable: case StatementState.OrderByTableField: if (word == "asc" || word == "desc") { return(StatementState.OrderByTableFieldAscDesc); } break; case StatementState.Before: case StatementState.After: if (word == "group") { return(StatementState.BeforeAfterGroup); } break; #endregion #region format case StatementState.Format: if (word == "rows") { return(StatementState.FormatRows); } if (word == "cols") { return(StatementState.FormatCols); } if (word == "genpages") { return(StatementState.FormatGenpages); } if (word == "outfile") { return(StatementState.FormatOutfile); } break; case StatementState.FormatRowsEquals: return(StatementState.FormatRowsNumber); case StatementState.FormatRowsNumber: if (word == "cols") { return(StatementState.FormatCols); } if (word == "genpages") { return(StatementState.FormatGenpages); } if (word == "outfile") { return(StatementState.FormatOutfile); } break; case StatementState.FormatColsEquals: return(StatementState.FormatColsNumber); case StatementState.FormatColsNumber: if (word == "genpages") { return(StatementState.FormatGenpages); } if (word == "outfile") { return(StatementState.FormatOutfile); } break; case StatementState.FormatGenpagesEquals: return(StatementState.FormatGenpagesNumber); case StatementState.FormatGenpagesNumber: if (word == "outfile") { return(StatementState.FormatOutfile); } break; #endregion #region alter case StatementState.Alter: switch (word) { case "application": return(StatementState.AlterApplication); case "column": return(StatementState.AlterColumn); case "table": return(StatementState.AlterTable); case "stringdef": return(StatementState.AlterStringdef); case "typedef": return(StatementState.AlterTypedef); } break; case StatementState.AlterColumn: if (ProbeEnvironment.IsValidFieldName(word)) { return(StatementState.AlterColumnName); } break; case StatementState.AlterApplication: if (word == "AppIID") { return(StatementState.AlterApplicationAppIID); } break; case StatementState.AlterApplicationAppIID: if (word != "prompt") { return(StatementState.AlterApplicationAppIIDName); } break; case StatementState.AlterApplicationAppIIDName: if (word == "prompt") { return(StatementState.AlterApplicationPrompt); } break; case StatementState.AlterApplicationPrompt: return(StatementState.AlterApplicationPromptString); case StatementState.AlterApplicationPromptString: if (word == "comment") { return(StatementState.AlterApplicationComment); } if (word == "langid") { return(StatementState.AlterApplicationLangId); } if (word == "description") { return(StatementState.AlterApplicationDescription); } break; case StatementState.AlterApplicationComment: return(StatementState.AlterApplicationCommentString); case StatementState.AlterApplicationCommentString: if (word == "langid") { return(StatementState.AlterApplicationLangId); } if (word == "description") { return(StatementState.AlterApplicationDescription); } break; case StatementState.AlterApplicationLangId: return(StatementState.AlterApplicationLangIdNumber); case StatementState.AlterApplicationDescription: return(StatementState.AlterApplicationDescriptionString); case StatementState.AlterApplicationBrackets: if (word == "extends") { return(StatementState.AlterApplicationExtends); } break; case StatementState.AlterApplicationExtends: if (word == "AppIID") { return(StatementState.AlterApplicationExtendsAppIID); } break; case StatementState.AlterApplicationExtendsAppIID: return(StatementState.AlterApplicationExtendsAppIIDString); #endregion } return(StatementState.None); }