camlspotter avatar camlspotter committed bf1b213 Merge

merge

Comments (0)

Files changed (12)

INSTALL-ocamlspot.txt

 
 10. How to use
 
-  Compile your ML project by this patched compiler with -annot option to create .spot files. 
-  Open one of the source files in Emacs and place the cursor at the name whose definition 
-  is in question. Type C-c; will show you the defintion.
+  Compile your ML project by this patched compiler with -annot option to create .spot files. Open one of the source files in Emacs and place the cursor at the name whose definition is in question. Type C-c; will show you the defintion.
 
 11. Bug report
 

README-ocamlspot.txt

 ====================================
 
   Camel spotter: Oh, it was extremely interesting, very, very -
-    quite... it was dull; dull, dull, dull, oh God it was dull. 
-    Sitting in the Waterloo waiting room. ...
+  quite... it was dull; dull, dull, dull, oh God it was dull. 
+  Sitting in the Waterloo waiting room. ...
 
                                      from You're No Fun Anymore, 
                                     Monty Python's Flying Circus
 You first days after joining a large OCaml project should be this kind
 of manual value definition spotting with find + grep commands. Yes,
 actually it is very educational: you can learn a lot about the project
-struggling in the source tree (only if your collegues have organized
+struggling in the source tree (only if your colleagues have organized
 things very well :-P), but it is still a dull job...
 
 To say short, OCamlSpotter is a tool which does this dull job
 automatically for you and permits your energy for something more
 "interesting" like Yeti spotting:
 
+===============================
+Summary
+===============================
+
  - The -annot option of ocamlc and ocamlopt is extended and creates 
    <module>.spot files (<module>.spit for .mli), which record the
    location information of the names defined and used in the module.
  - ocamlspot.el provides interactive ocaml-spotting of definition 
    locations in emacs.
 
- - Interfaces for other editors such as vi can be built easily, if you
-   want. I do not want.
+ - Interfaces for other editors such as Vim can be built easily.
+   A small sample for Vim is available (ocamlspot.vim).
+   
+===============================
+ocamlc compiler modifications
+===============================
+
+ - The -annot option of ocamlc and ocamlopt is extended and creates 
+   <module>.spot files (<module>.spit for .mli), which record the
+   location information of the names defined and used in the module.
+
+ - Existence of OCAML_ANNOT environment variable turns on .annot, .spot
+   and .spit file creation, even without -annot option to the compiler.
+   It is good for compiling OCaml softwares with .spot+.spit files without
+   modifying Makefiles.
 
 ===============================
-Usage
+ocamlspot query application
 ===============================
-   
-Compiler command information
+
+
+Compilation information
 ===============================
 
 SYNOPSIS
 
       Retrieve various annotation information from .spot or .spit files
       of the source code position or identifier, specified by the
-      search spec. Information is prited to stdout. They are:
+      search spec. Information is printed to stdout. They are:
 
       Spot: file:pos
           The definition position of the object which the search spec
       XType: type     
           The type of the object which the search spec points to, if
           available. In XType, paths are printed with position
-          informaiton: for example, "unit__6" instead of "unit".
+          information: for example, "unit__6" instead of "unit".
 
       Use: kind, name
           The kind and the name with id numbers of the identifier 
           i.e. types, paths, etc.
 
 
+Value usage analysis (Experimental)
+===================================
+
+SYNOPSIS
+
+      ocamlspot use [search] [target files and dirs]
+            search ::= [file]:[pos] | [file]:[kind]:[path]
+            pos ::= l[line]c[column_bytes] | b[bytes] | [bytes]
+            kind ::= v|t|e|m|mt|c|ct
+            
+            where
+              v  : value
+	      t  : type
+	      e  : exception
+	      m  : module
+	      mt : module type
+	      c  : class
+	      ct : class type
+
+DESCRIPTION
+
+      ocamlspot use does opposite of ocamlspot query: search the uses of
+      the identifier specified by the search spec.
+
+      After the search spec, the search target path names can be specified.
+      If a target is a directory, the search is performed recursively
+      in the directory.
+
+Spot creation w/o real compilation
+==================================
+
+SYNOPSIS
+
+      ocamlspot typecheck <args>
+      ocamlspot recheck <targets>
+
+DESCRIPTION
+
+      ocamlspot typecheck <args> is as same as ocamlc <args>, but it does
+      not create object files but only .annot/.spot/.spit files 
+      independently. Useful if you want to stick to the official OCaml 
+      compiler to create object files.
+
+      ocamlspot recheck <targets> redos the typecheck and creation of
+      .annot/.spot/.spit files using the compilation information already
+      stored in .spot/.spit files.
+
+===============================
+ocamlspot.el emacs interface
+===============================
+
+...
+
+=====================
 Bugs and future works
 =====================
 
 This software contain lots of bugs and todos.
 
+=======
 License
 =======
 
 Read LICENSE file in this directory. 
 
+======
 Author
 ======
 
   Jun FURUSE (jun.furuse@gmail.com). Bug reports and comments are
   welcome. Patches are appreciated. Donating camel related gadgets is
-  the most wonderful. Complaints might be simply ignored.
+  the most wonderful.

ocamlspot/Makefile

 # Various commands and dir
 ##########################
 CAMLRUN=../boot/ocamlrun
-OCAMLC   = ../ocamlcomp.sh -annot -w Ae -warn-error Ae-31
+OCAMLC   = ../ocamlcomp.sh -annot -w Ae -warn-error Ae
 OCAMLOPT = ../ocamlcompopt.sh
 OCAMLDEP = $(CAMLRUN) ../tools/ocamldep
 OCAMLLEX = $(CAMLRUN) ../boot/ocamllex

File contents unchanged.

File contents unchanged.

ocamlspot/pathreparse.ml

 
 open Spotapi
 
-open Parsetree
-open Lexing
-
 open Path
 
 open Locident

ocamlspot/spotapi.mli

 module Printtyp : sig
   open Format
 
-  open Types
-
   val reset : unit -> unit
   val mark_loops : Types.type_expr -> unit
   val reset_names : unit -> unit
Add a comment to this file

ocamlspot/spotconfig.ml

File contents unchanged.

ocamlspot/tests_use/.depend

+dummy.cmi:
+test1.cmo:
+test1.cmx:
+test2.cmo: test1.cmo
+test2.cmx: test1.cmx

ocamlspot/tests_use/Makefile

 beforedepend::
 
 depend: beforedepend
-	$(CAMLRUN) ../../tools/ocamldep $(INCLUDES) -I dir1 -I dir2 *.mli *.ml */*.mli */*.ml > .depend
+	$(CAMLRUN) ../../tools/ocamldep $(INCLUDES) *.mli *.ml */*.mli */*.ml > .depend
 
 Makefile.targets: *.ml *.mli
 	echo TARGETS= \\ > $@
Add a comment to this file

ocamlspot/tests_use/dummy.mli

Empty file added.

ocamlspot/typeexpand.mli

 
 (* expansion of expr/pattern by type *)
 
-open Asttypes
 open Types
 
 type t 
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.