Fix #8011 - add resources
[roobuilder] / src / Project / Project.vala
index 42aaaf8..7060c2b 100644 (file)
@@ -692,13 +692,15 @@ namespace Project {
                        if (subdir == "build") { // cmake!
                                return;
                        }
-                       
                        if (subdir == "autom4te.cache") { // automake?
                                return;
                        }
-                       if (subdir == "debian") { // debian!?
+                       if (subdir == "obj-x86_64-linux-gnu") { // meson?
                                return;
                        }
+                       //if (subdir == "debian") { // debian!?
+                       //      return;
+                       //}
 
                        
                        var dir = this.path + (subdir.length > 0 ? "/" : "") + subdir;
@@ -733,13 +735,18 @@ namespace Project {
                                        }
                                        
                                        if (FileUtils.test(dir  + "/" + fn, GLib.FileTest.IS_DIR)) {
+                                               if (subdir == "debian") { // dont bother with subdirs  of debian.
+                                       continue;
+                               }
+
+                                               
                                                subs.add(dir  + "/" + fn);
                                                continue;
                                        }
                                        if (Regex.match_simple("\\.(o|cache|out|stamp|~)$", fn)) { // object..
                                                continue;
                                        }
-                                       if (Regex.match_simple("^(config1.builder|a.out|stamp-h1|depcomp|config.log|config.status|obj-x86_64-linux-gnu)$", fn)) { // object..
+                                       if (Regex.match_simple("^(config1.builder|a.out|stamp-h1|depcomp|config.log|config.status)$", fn)) { // object..
                                                continue;
                                        }
                                        
@@ -972,9 +979,6 @@ namespace Project {
                        string[] ret = {};
                         
                        foreach(var jdir in this.sub_paths) { 
-                               
-
-                               
                                if (Path.get_basename (jdir.path) == name) {
                                        GLib.debug("pathsMatching %s\n", jdir.path);
                                        ret += full_path ? jdir.path : jdir.relpath;
@@ -984,6 +988,21 @@ namespace Project {
                        return ret;
                        
                }
+               
+               public Gee.ArrayList<JsRender.Dir> pathsUnder(string name)
+               {
+                       var ret = new Gee.ArrayList<JsRender.Dir>();
+                        
+                       foreach(var jdir in this.sub_paths) { 
+                               if (jdir.relpath.has_prefix(name + "/")) {
+                                       ret.add(jdir as JsRender.Dir);
+                               }
+                               
+                       }
+                       return ret;
+                       
+               }
+               
                public Gee.ArrayList<string> readArray(Json.Array ar) 
                {
                        var ret = new Gee.ArrayList<string>();
@@ -998,36 +1017,48 @@ namespace Project {
                        return ret;
                }
                
-               public void updateErrorsforFile(JsRender.JsRender? f) 
+               // called from file..
+               public void addError(JsRender.JsRender f, Lsp.Diagnostic diag)
                {
-                       if (f != null)  {
-                               var n = this.updateErrorsByType(f, "WARN");
-                               n += this.updateErrorsByType(f, "ERR");
-                               n += this.updateErrorsByType(f, "DEPR");
-                       }
+                       var new_ce = new Palete.CompileError.new_from_diagnostic(f, diag);
+                       var ls = this.getErrors(new_ce.category); // will create if necessary..
+                       // find the file in the list store.
 
-                       BuilderApplication.updateCompileResults();
-                       
-                       
+                       for(var i =0; i < ls.get_n_items(); i++) {
+                               var ce = ls.get_item(i) as Palete.CompileError;
+                               if (ce.file.path == f.path) {
+                                       ce.lines.append(new_ce);
+                                       return;
+                               } 
+                       }
+                       // we did not have the file..
+                       var add = new Palete.CompileError.new_from_file(f, diag.category);
+                       ls.append(add);
+                       add.lines.append(new_ce);
+                         
                }
-               public int  updateErrorsByType(JsRender.JsRender f, string n) 
+               public void removeError(JsRender.JsRender f, Lsp.Diagnostic diag)
                {
-                       var ls = this.getErrors(n);
-                       
-                       // remove thie file from the list.      
+                       var ls = this.getErrors(diag.category);
                        for(var i =0; i < ls.get_n_items(); i++) {
                                var ce = ls.get_item(i) as Palete.CompileError;
-                               if (ce.file.path == f.path) {
-                                       ls.remove(i);
-                                       break;
+                               if (ce.file.path != f.path) {
+                                       continue;
+                               }
+                               for(var j =0; j < ce.lines.get_n_items(); j++) {
+                                       var  lce = ce.lines.get_item(j) as Palete.CompileError;
+                                       
+                                       if (!diag.equals( lce.diag)) {
+                                               continue;
+                                       }
+                                       ce.lines.remove(j);
+                                       if (ce.lines.get_n_items() < 1) {
+                                               ls.remove(i);
+                                               return;
+                                       }
                                }
                        }
-                       var add = new Palete.CompileError.new_from_file(f, n);
-                       if (add.hasErrors()) {
-                               ls.append(add);
-                               return 1;
-                       }
-                       return 0;
+
                }
                public GLib.ListStore getErrors(string n)
                {