Exemplo n.º 1
0
        public static NemerleSource GetFileSource(IServiceProvider site, string filePath)
        {
            NemerleLanguageService lang = (NemerleLanguageService)site.GetService(
                typeof(NemerleLanguageService));

            return((NemerleSource)lang.GetSource(filePath));
        }
Exemplo n.º 2
0
        public int FDoIdle(uint grfidlef)
        {
            if (_allProjectInSolutionIsLoaded)
            {
                _allProjectInSolutionIsLoaded = false;
                AfterSolutionLoaded();
            }

            NemerleLanguageService lang = GetService(typeof(NemerleLanguageService)) as NemerleLanguageService;

            var isPeriodic = (grfidlef & (uint)_OLEIDLEF.oleidlefPeriodic) != 0;

            if (lang != null)
            {
                lang.OnIdle(isPeriodic);
            }

            if (_libraryManager != null)
            {
                _libraryManager.OnIdle();
            }

            if (_sourceOutlinerToolWindow != null)
            {
                _sourceOutlinerToolWindow.OnIdle();
            }

            return(0);
        }
        private CodeGeneratorOptions GetCodeGeneratorOptions()
        {
            NemerleLanguageService langService = (_fileNode.GetService(typeof(NemerleLanguageService)) as NemerleLanguageService);

            if (langService == null)
            {
                throw new ApplicationException("Language service not found");
            }

            CodeGeneratorOptions codeGenOptions = new CodeGeneratorOptions();

            LanguagePreferences prefs = langService.GetLanguagePreferences();

            if (prefs.InsertTabs)
            {
                codeGenOptions.IndentString = "\t";
            }
            else
            {
                codeGenOptions.IndentString = new string(' ', prefs.IndentSize );
            }

            // Set deliberately (TODO)
            codeGenOptions.BlankLinesBetweenMembers = true;
            codeGenOptions.BracingStyle             = "Block";
            codeGenOptions.ElseOnClosing            = false;

            return(codeGenOptions);
        }
Exemplo n.º 4
0
        public ProjectInfo(
            NemerleProjectNode projectNode,
            IVsHierarchy hierarchy,
            NemerleLanguageService languageService,
            string fileName,
            string location
            )
        {
            ErrorHelper.ThrowIsNull(languageService, "languageService");
            ErrorHelper.ThrowIsNull(projectNode, "projectNode");
            ErrorHelper.ThrowIsNull(hierarchy, "hierarchy");
            Debug.Assert(projectNode.Site != null);

            LanguageService = languageService;
            _errorList      = new ErrorListProvider(languageService.Site);
            ProjectFullPath = Path.GetFullPath(fileName);
            _projectNode    = projectNode;
            _hierarchy      = hierarchy;

            _engine = EngineFactory.Create(this, new TraceWriter(), false);             // it enables parser working.

            Engine.TypedtreeCreated += delegate
            {
                _buildTypedtreeCount++;
                AstToolWindow tool = AstToolWindow.AstTool;
                if (tool != null)
                {
                    tool.BuildTypedtreeCount = _buildTypedtreeCount;
                }
            };

            if (!string.IsNullOrEmpty(location))
            {
                _projectLocation = location;
            }
            else
            {
                _projectLocation = Path.GetDirectoryName(fileName);
            }

            if (!_projectLocation.EndsWith("\\"))
            {
                _projectLocation += "\\";
            }
        }
Exemplo n.º 5
0
        private object CreateService(IServiceContainer container, Type serviceType)
        {
            if (serviceType == typeof(NemerleLanguageService))
            {
                NemerleLanguageService language = new NemerleLanguageService(this);

                language.SetSite(this);
                RegisterForIdleTime();

                return(language);
            }
            else if (serviceType == typeof(INemerleLibraryManager))
            {
                return(_libraryManager = new NemerleLibraryManager(this));
            }

            return(null);
        }
Exemplo n.º 6
0
        public GotoInfoLibraryNode(NemerleLanguageService langSvc, GotoInfo gotoInfo, string caption)
            : base(gotoInfo.UsageTypeToString())
        {
            _langSvc      = langSvc;
            _gotoInfo     = gotoInfo;
            _caption      = caption;
            CanGoToSource = true;

            var project = ProjectInfo.FindProject(gotoInfo.FilePath);

            if (project != null)
            {
                Text = _gotoInfo.GetLineOfCode(project.Engine).Trim().Replace("\t", "  ");
            }
            else                       //я не представляю как такое может случиться, но если случится
            {
                Text = "<not loaded>"; //то нужно скоприровать функционал ручной загрузки файла и поиска строки из конструктора GotoUsageForm
            }
        }
Exemplo n.º 7
0
        public int FDoIdle(uint grfidlef)
        {
            NemerleLanguageService lang = GetService(typeof(NemerleLanguageService)) as NemerleLanguageService;

            var isPeriodic = (grfidlef & (uint)_OLEIDLEF.oleidlefPeriodic) != 0;

            if (lang != null)
            {
                lang.OnIdle(isPeriodic);
            }

            if (_libraryManager != null)
            {
                _libraryManager.OnIdle();
            }

            if (_sourceOutlinerToolWindow != null)
            {
                _sourceOutlinerToolWindow.OnIdle();
            }

            return(0);
        }