camlspotter avatar camlspotter committed 7faeede

.ocamlspot test

Comments (0)

Files changed (5)

   assert (FP.is_absolute fp0);
   let rec f bases fp = 
     let dir = FP.to_string fp in
-    let ocamlbuild_path = dir ^/ "_build" in
-    let diropt = 
-      if Unix.is_dir ocamlbuild_path then Some ocamlbuild_path
-      else None
+
+    let fix () =
+      let dot_ocamlspot = 
+        let dot_ocamlspot_path = dir ^/ ".ocamlspot" in
+        if Sys.file_exists dot_ocamlspot_path then
+          match (Dotfile.load dot_ocamlspot_path).Dotfile.build_dir with
+          | (Some _ as res) -> res
+          | None -> None
+        else None
+      in
+      match dot_ocamlspot with
+      | (Some _ as res) -> res
+      | None ->
+          let ocamlbuild_path = dir ^/ "_build" in
+          if Unix.is_dir ocamlbuild_path then Some "_build"
+          else None
     in
-    match diropt with
-    | Some _ -> Some (FP.(^/) fp (Filename.concats ("_build" :: bases)))
-    | None ->
+    match fix () with
+    | Some p -> Some (FP.(^/) fp (Filename.concats (p :: bases)))
+    | None -> 
         if FP.is_root fp then Some fp0
         else match FP.dirbase fp with
         | dir, Some base -> f (base :: bases) dir

tests/dot_ocamlspot/Makefile

+test: build/hello.cmo
+	../../ocamlspot hello.ml:l5c8
+	../../ocamlspot dir/dir2/bye.ml:l2c12
+
+build/dir/dir2/bye.cmo: dir/dir2/bye.ml
+	ocamlc -c -I build/dir/dir2 -o build/dir/dir2/bye.cmo $<
+
+build/hello.cmo: hello.ml build/dir/dir2/bye.cmo
+	ocamlc -c -I build/dir/dir2 -o $@ $<
+
+clean:
+	rm build/hello.* build/dir/dir2/bye.*
+
+
Add a comment to this file

tests/dot_ocamlspot/build/dir/dir2/dest

Empty file added.

tests/dot_ocamlspot/dir/dir2/bye.ml

+let bye = "Bye."
+let bye = bye
+

tests/dot_ocamlspot/hello.ml

+let _ =
+  Printf.printf "Hello, %s ! My name is %s! %s!\n"
+    (if Array.length Sys.argv > 1 then Sys.argv.(1) else "stranger")
+    Sys.argv.(0)
+    Bye.bye
+;;
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.