예제 #1
0
        /// <summary>
        /// Initializes the plugin
        /// </summary>
        public void Initialize()
        {
            this.InitBasics();
            this.LoadSettings();
            this.AddEventHandlers();

            LintingManager.RegisterLinter("haxe", new DiagnosticsLinter());
        }
예제 #2
0
        public void HandleEvent(object sender, NotifyEvent e, HandlingPriority priority)
        {
            switch (e.Type)
            {
            case EventType.FileOpen:
                if (MessageBar.Locked)
                {
                    return;
                }
                var fileOpen = (TextEvent)e;
                if (this.settingObject.LintOnOpen)
                {
                    LintingManager.Cache.RemoveDocument(fileOpen.Value);
                    LintingManager.LintFiles(new[] { fileOpen.Value });
                }
                break;

            case EventType.FileSave:
                if (MessageBar.Locked)
                {
                    return;
                }
                var reason = (e as TextDataEvent)?.Data as string;
                if (reason != "HaxeComplete" && this.settingObject.LintOnSave)
                {
                    var fileSave = (TextEvent)e;
                    LintingManager.Cache.RemoveDocument(fileSave.Value);
                    LintingManager.LintFiles(new[] { fileSave.Value });
                }
                break;

            case EventType.Command:
                var ev = (DataEvent)e;
                if (ev.Action == ProjectManagerEvents.BuildComplete || ev.Action == ProjectManagerEvents.Project)
                {
                    LintingManager.Cache.RemoveAll();
                    LintingManager.UpdateLinterPanel();
                    if (ev.Action == ProjectManagerEvents.Project)
                    {
                        foreach (var doc in PluginBase.MainForm.Documents)
                        {
                            if (!doc.IsUntitled && doc.SciControl != null)
                            {
                                LintingManager.LintDocument(doc);
                            }
                        }
                    }
                }

                break;

            case EventType.FileModify:
                LintingManager.UnLintFile(((TextEvent)e).Value);
                break;
            }
        }
예제 #3
0
 public void ProcessProject(IProject project)
 {
     LintingManager.LintProject(project);
 }
예제 #4
0
 public void Process(IEnumerable <string> files)
 {
     LintingManager.LintFiles(files.ToArray());
 }
예제 #5
0
 public void Process(string[] files)
 {
     LintingManager.LintFiles(files);
 }
예제 #6
0
        public void HandleEvent(object sender, NotifyEvent e, HandlingPriority priority)
        {
            switch (e.Type)
            {
            case EventType.FileOpen:
                if (MessageBar.Locked)
                {
                    return;
                }
                var fileOpen = (TextEvent)e;
                if (this.settingObject.LintOnOpen)
                {
                    LintingManager.Cache.RemoveDocument(fileOpen.Value);
                    LintingManager.LintFiles(new[] { fileOpen.Value });
                }
                break;

            case EventType.FileSave:
                if (MessageBar.Locked)
                {
                    return;
                }
                var reason = (e as TextDataEvent)?.Data as string;
                if (reason != "HaxeComplete" && this.settingObject.LintOnSave)
                {
                    var fileSave = (TextEvent)e;
                    LintingManager.Cache.RemoveDocument(fileSave.Value);
                    LintingManager.LintFiles(new[] { fileSave.Value });
                }
                break;

            case EventType.Command:
                var ev = (DataEvent)e;
                if (ev.Action == ProjectManagerEvents.BuildComplete || ev.Action == ProjectManagerEvents.ProjectSetUp)
                {
                    LintingManager.Cache.RemoveAll();
                    LintingManager.UpdateLinterPanel();
                    if (ev.Action == ProjectManagerEvents.ProjectSetUp)
                    {
                        var groupedFiles = new Dictionary <string, List <string> >();
                        foreach (var doc in PluginBase.MainForm.Documents)

                        /* if (!doc.IsUntitled && doc.SciControl != null)
                         *   LintingManager.LintDocument(doc);*/
                        {
                            ScintillaNet.ScintillaControl sci;
                            if (doc.IsUntitled || (sci = doc.SciControl) == null)
                            {
                                continue;
                            }

                            var files = groupedFiles.GetOrCreate(sci.ConfigurationLanguage);
                            files.Add(sci.FileName);
                        }

                        foreach (var languageFileGroup in groupedFiles)
                        {
                            LintingManager.LintFiles(languageFileGroup.Value, languageFileGroup.Key);
                        }
                    }
                }

                break;

            case EventType.FileModify:
                LintingManager.UnLintFile(((TextEvent)e).Value);
                break;
            }
        }