Esempio n. 1
0
        /// <summary>
        /// Create a new parsed define item according to its type
        /// </summary>
        private ParsedDefine NewParsedDefined(string name, ParseFlag flags, Token defineToken, Token endToken, ParsedAsLike asLike, string left, ParseDefineType type, string tempPrimitiveType, string viewAs, string bufferFor, int extent)
        {
            // set flags
            flags |= GetCurrentBlock <ParsedScopeBlock>() is ParsedFile ? ParseFlag.FileScope : ParseFlag.LocalScope;

            if (type == ParseDefineType.Parameter)
            {
                flags |= ParseFlag.Parameter;
            }

            if (tempPrimitiveType.Equals("buffer"))
            {
                flags |= ParseFlag.Buffer;
                return(new ParsedBuffer(name, defineToken, asLike, left, type, null, viewAs, bufferFor)
                {
                    Flags = flags,
                    EndPosition = endToken.EndPosition,
                    PrimitiveType = ParsedPrimitiveType.Buffer
                });
            }

            var newDefine = new ParsedDefine(name, defineToken, asLike, left, type, tempPrimitiveType, viewAs, extent)
            {
                Flags       = flags,
                EndPosition = endToken.EndPosition
            };

            return(newDefine);
        }
Esempio n. 2
0
 public void Visit(ParsedDefine pars)
 {
     AppendEverything(pars);
 }
Esempio n. 3
0
        /// <summary>
        /// Defined variables
        /// </summary>
        /// <param name="pars"></param>
        public void Visit(ParsedDefine pars)
        {
            pars.PrimitiveType = ConvertStringToParsedPrimitiveType(pars.TempPrimitiveType, pars.AsLike == ParsedAsLike.Like);

            var            subString = pars.PrimitiveType == ParsedPrimitiveType.Unknow ? pars.Type.ToString() : pars.PrimitiveType.ToString();
            CompletionType type;

            switch (pars.Type)
            {
            case ParseDefineType.Parameter:
                type = CompletionType.VariablePrimitive;

                // To code explorer, program parameters
                PushToCodeExplorerAsParameter(pars);
                break;

            case ParseDefineType.Variable:
                if (!string.IsNullOrEmpty(pars.ViewAs))
                {
                    type = CompletionType.Widget;
                }
                else if ((int)pars.PrimitiveType < 30)
                {
                    type = CompletionType.VariablePrimitive;
                }
                else
                {
                    type = CompletionType.VariableComplex;
                }
                break;

            case ParseDefineType.Button:
            case ParseDefineType.Frame:
            case ParseDefineType.Image:
            case ParseDefineType.SubMenu:
            case ParseDefineType.Menu:
            case ParseDefineType.Rectangle:
                type = CompletionType.Widget;
                break;

            case ParseDefineType.Browse:
                type = CompletionType.Widget;

                // To explorer code for browse
                PushToCodeExplorer(
                    GetExplorerListNode("Browse definitions", CodeExplorerIconType.Browse),
                    new BrowseCodeItem {
                    DisplayText   = pars.Name,
                    Flags         = pars.Flags,
                    SubText       = subString,
                    DocumentOwner = pars.FilePath,
                    GoToLine      = pars.Line,
                    GoToColumn    = pars.Column
                });
                break;

            default:
                type = CompletionType.VariableComplex;
                break;
            }

            // to completion data
            var curItem = CompletionItem.Factory.New(type);

            curItem.DisplayText = pars.Name;
            curItem.Flags       = pars.Flags;
            curItem.SubText     = subString;
            PushToAutoCompletion(curItem, pars);
        }