}
}
-
-
+ public string version = "1.0";
+ public string licence = "LGPL";
public string path = "";
private Gee.ArrayList<JsRender.JsRender> sub_paths;
public Gee.HashMap<string,Palete.GirObject> gir_cache = null; // used by Gir ??? is this used by Roo?
//public Palete.ValaCompileRequest last_request = null; // depricated?
public Gee.HashMap<string,GLib.ListStore>? errorsByType = null;
-
+ public bool loading = false; // flag this to block saving (normally when loading ui that might trigger save..
protected Gee.HashMap<string,Palete.LanguageClient> language_servers;
public void save()
{
-
+
+ if (this.loading) {
+ return;
+ }
+
var s = this.toJSON();
GLib.debug("Save Project %s\n%s", this.name, s);
try {
if (subdir == "build") { // cmake!
return;
}
-
+ if (subdir == "build-dir") { // flatpack
+ return;
+ }
+ if (subdir == "repo") { // flatpack ?? wrong command?
+ 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;
}
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|gif|jpg|png|gif|out|stamp|~)$", fn)) { // object..
+ 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)$", fn)) { // object..
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;
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>();
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)
{