예제 #1
0
        public EditorData MakeEditorData()
        {
            var editorData = new EditorData
            {
                ParseCache       = _cacheView,
                IsDebug          = _isDebug,
                DebugLevel       = _debugLevel,
                VersionNumber    = _versionNumber,
                GlobalDebugIds   = _debugIds,
                GlobalVersionIds = _versionIds
            };

            editorData.NewResolutionContexts();
            return(editorData);
        }
예제 #2
0
        ///////////////////////////////////
        void _setupEditorData()
        {
            string versions = _versionIds;

            versions += "Windows\n" + "LittleEndian\n" + "D_HardFloat\n" + "all\n" + "D_Version2\n";
            if ((_flags & 1) != 0)
            {
                versions += "unittest\n";
            }
            if ((_flags & 2) != 0)
            {
                versions += "assert\n";
            }
            if ((_flags & 4) != 0)
            {
                versions += "Win64\n" + "X86_64\n" + "D_InlineAsm_X86_64\n" + "D_LP64\n";
            }
            else
            {
                versions += "Win32\n" + "X86\n" + "D_InlineAsm_X86\n";
            }
            if ((_flags & 8) != 0)
            {
                versions += "D_Coverage\n";
            }
            if ((_flags & 16) != 0)
            {
                versions += "D_Ddoc\n";
            }
            if ((_flags & 32) != 0)
            {
                versions += "D_NoBoundsChecks\n";
            }
            if ((_flags & 64) != 0)
            {
                versions += "GNU\n";
            }
            else if ((_flags & 0x4000000) != 0)
            {
                versions += "LDC\n";
            }
            else
            {
                versions += "DigitalMars\n";
            }
            if ((_flags & 0x8000000) != 0)
            {
                versions += "CRuntime_Microsoft\n";
            }
            else if ((_flags & 0x4000040) != 0) // GNU or LDC
            {
                versions += "CRuntime_MinGW\n";
            }
            else
            {
                versions += "CRuntime_DigitalMars\n";
            }

            string[] uniqueDirs    = uniqueDirectories(_imports);
            bool     isDebug       = (_flags & 2) != 0;
            uint     debugLevel    = (_flags >> 16) & 0xff;
            uint     versionNumber = (_flags >> 8) & 0xff;

            string[] versionIds = versions.Split(nlSeparator, StringSplitOptions.RemoveEmptyEntries);
            string[] debugIds   = _debugIds.Split(nlSeparator, StringSplitOptions.RemoveEmptyEntries);

            if (_editorData.ParseCache == null ||
                !(_editorData.ParseCache as VDserverParseCacheView).PackageRootDirs.SequenceEqual(uniqueDirs) ||
                isDebug != _editorData.IsDebug || debugLevel != _editorData.DebugLevel ||
                versionNumber != _editorData.VersionNumber ||
                !versionIds.SequenceEqual(_editorData.GlobalVersionIds) ||
                !debugIds.SequenceEqual(_editorData.GlobalDebugIds))
            {
                _editorData.ParseCache       = new VDserverParseCacheView(uniqueDirs);
                _editorData.IsDebug          = isDebug;
                _editorData.DebugLevel       = debugLevel;
                _editorData.VersionNumber    = versionNumber;
                _editorData.GlobalVersionIds = versionIds;
                _editorData.GlobalDebugIds   = debugIds;
                _editorData.NewResolutionContexts();
            }
            CompletionOptions.Instance.ShowUFCSItems        = (_flags & 0x2000000) != 0;
            CompletionOptions.Instance.DisableMixinAnalysis = (_flags & 0x1000000) == 0;
            CompletionOptions.Instance.HideDeprecatedNodes  = (_flags & 128) != 0;
            CompletionOptions.Instance.CompletionTimeout    = -1; // 2000;
        }