コード例 #1
0
        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);
            }
        }
コード例 #2
0
 private void FileTreeRefresh_Click(object sender, EventArgs e)
 {
     try
     {
         ProbeEnvironment.ReloadAsync(null, false);
     }
     catch (Exception ex)
     {
         this.ShowError(ex);
     }
 }
コード例 #3
0
 private void RefreshButton_Click(object sender, RoutedEventArgs e)
 {
     try
     {
         ProbeEnvironment.ReloadAsync(null, false);
     }
     catch (Exception ex)
     {
         this.ShowError(ex);
     }
 }
コード例 #4
0
        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);
            }
        }
コード例 #5
0
ファイル: Tagger.cs プロジェクト: cmrazek/DkTools
        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);
                }
            }
        }
コード例 #6
0
ファイル: StatementLayout.cs プロジェクト: cmrazek/DkTools
        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);
        }