Raxref - Simple, lightweight and fast Cross Referencing
JavaScript Perl
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


Raxref - Simple, lightweight and fast Cross Referencing

Raxref cross references the source files of your project for you.

It's REALLY REALLY simple to use - this is how it goes:

1. Call Raxref and tell it where your source files are and where to put
   the generated files.
2. Point your web browser to the generated main html file.

That's it. Enjoy your new web application!

(Or, write a simple conf file, or modify and use one of the distributed

Some Details:

Raxref was inspired by tools like LXR, LXRng and MXR. These are all
great tools but are rather complicated to use, partly because of the
many additional requirements or because they're to specialized (MXR).

Raxref only needs a reasonable new Perl to run. It can cope with any
kind of source language because it's dead stupid and doesn't try to
understand the code it's cross referencing.

Raxref consists of two simple parts, an analyzer (Perl) and a runtime

The analyzer goes through your source files and takes hold on everything
that looks like a token. Some filtering is done, and some goodies like
POD detection. Then a load of files is written to the output directory,
consisting of a main html file, the runtime requirements and lots of
data files. This is done pretty fast on the first run, and even faster
in later runs because of caching.

The generated web application includes the runtime. Basicly you just
have to open it with a browser(*) and use it. You'll see different
panels showing the project, project sections, source files, and the
cross references. Every panel type has a color code and links to a panel
have the same color. You may resize the panels.

Optionally, you can write a small configuration file inside of which you
may define different sections of your project. You'll find examples in
the "conf" directory. For more information, type "./rabak --man".

(*) Raxref makes use of some CSS 2/3 features that older browsers don't
support. Tested with FF3 3.0.7, Safari 3.2.2 and Chrome 2. Will propably
not work with any IEs, they are rubbish anyway.


Please look at the LICENSE* files

TODO by priority:

- UI: Remove 'source:' Prefix whereever possible
- Add "include" detection
- Deep Link support
- JS: Add "new source window", "new xref window"
- Add Project Meta Info e.g 'meta author Blah', 'meta url parrot.org'...

TODO misc, unsorted:

- Add Project description
- HTML Encoding
- Analyse Shebang for file type detection
- Force analysis if conf file changes
- Optimize File scanning for PHP
- Fix the FIXMEs
- Include Raxref Version in output
- Add conf directive for sections: "filetypes c99 perl php html"
- Make conf direcive 'token_threshold' section-specific
- Xref: Load visible files first
- Xref: List least indented first
- "--clean" option to clean output directory
- Make several Async-GETs (3?) simultaniously
- Support JavaDoc
- JS: Add Slot dragging
- Add simple GIT and SVN-Support ("source git://..")
- Add tab-width directive for tab expansion. Now hard-coded with 8, but vi's 'tab-width' supported


- CSS: Finish color coding
- Add Xref-Keyword Search
- JS: Add Slot resizing
- Add a simple possibility to build a rexref web app without a conf file
  e.g. raxref --source some/path (auto-include conf/std.conf)
- Implement conf directive "omit"
- Tab expansion: Use MXR code