# -*- mode: perl -*-
# Configuration file
#
# LXR Quick Setup Guide:
#
# 1) Extract lxr-0.9.5.tgz as /usr/local/lxr
# 2) mv /usr/local/lxr/templates/* /usr/local/lxr/
# 3) mv /usr/local/lxr/.htaccess_cgi /usr/local/lxr/.htaccess
# 4) Add the following to your httpd.conf:
# ScriptAlias /lxr /usr/local/lxr
#
# AllowOverride All
#
# 5) mysql -uroot -prootpass < /usr/local/lxr/initdb-mysql
# 6) Copy this file as /usr/local/lxr/lxr.conf and adjust as needed, esp
# - baseurl, virtroot, sourceroot, sourcerootname, cvswebprefix
# 7) perl -MCPAN -e "install File::MMagic"
# 8) cd /usr/local/lxr && ./genxref --allversions --url=http://localhost/lxr/
#
# Optional steps to enable general search
#
# 1) Download and extract latest swish-e from http://www.swish-e.org/
# 2) ./configure && make && make check && make install
# 3) mkdir /usr/local/lxr/db
# 4) Uncomment all swish-e related lines
#
(
{
# Global configuration
# Path to glimpse executables.
# Define this OR the swish-e variable depending which search engine you want to use.
#'glimpsebin' => '/info/lxr/bin/glimpse',
#'glimpseindex' => '/info/lxr/bin/glimpseindex',
# Location of SWISH-E binary
#'swishbin' => '/usr/local/bin/swish-e',
# Path to Exuberant Ctags executable
'ectagsbin' => '/usr/bin/ctags',
# Place where lxr can write temporary files
'tmpdir' => '/tmp',
# Location of the Generic.pm config file
'genericconf' => '/usr/local/lxr/lib/LXR/Lang/generic.conf',
# Location of the ectags.conf file
'ectagsconf' => '/usr/local/lxr/lib/LXR/Lang/ectags.conf',
# Paths for CVS module
'cvspath' => '/bin:/usr/local/bin:/usr/bin:/usr/sbin',
},
{
# Configuration for http://192.168.1.3/lxr.
# baseurl is used to select configuration block.
'baseurl' => 'http://localhost/lxr', # Put your URL here
# baseurl_aliases allows other URLs to be used to reach the site
# comment this out if you do not want any aliases
#'baseurl_aliases' => [ 'http://localhost/lxr', 'http://mydomain/lxr' ],
'virtroot' => '/lxr', # The bit after the / above
'variables' => {
# Define typed variable "v". This is the list of versions to index.
'v' => {
'name' => 'Version',
# This can come from a file, a function or be explicitly
# ennumerated.
# From a file:
#'range' => [ readfile('src/versions') ],
# Explicitly:
# 'range' => [qw(v1 v2 v3.1 v4 experimental)],
# If files within a tree can have different versions,
# e.g in a CVS tree, 'range' can be specified as a
# function to call for each file:
'range' => sub { return
($files->allreleases($LXR::Common::pathname),
$files->allrevisions($LXR::Common::pathname))
}, # deferred function call.
# The default version to display
'default' => 'head'
},
# Define typed variable "a". First value is default.
# 'a' => {
# 'name' => 'Architecture',
# 'range' => [qw(i386 alpha arm m68k mips ppc sparc sparc64)]
# },
},
# These do funky things to paths in the system - you probably don't need them.
# 'maps' => {
# '/include/asm[^\/]*/' => '/include/asm-$a/',
# '/arch/[^\/]+/' => '/arch/$a/',
# },
# Templates used for headers and footers
'htmlhead' => 'html-head.html',
'htmltail' => 'html-tail.html',
'htmldir' => 'html-dir.html',
'htmlident' => 'html-ident.html',
'htmlident_refs' => 'html-ident-refs.html',
'htmlfind' => 'html-find.html',
# 'htmlsearch' => 'html-search-swish.html',
'sourcehead' => 'html-head.html',
'sourcedirhead' => 'html-head.html',
'stylesheet' => 'lxr.css',
# sourceroot - where to get the source files from
# For ordinary directories, this specifies a directory which has each version as a
# subdirectory e.g.
# indexed-src/version1/...
# indexed-src/version2/...
# The names of the version directories must match the values for the Version
# variable above.
#'sourceroot' => '/home/malcolm/indexed-src',
# Alternatively, this can specify a CVS repository by setting the value to "cvs:"
# followed by the path to the repository. Note this must be file accessible - remote
# server access does NOT work.
'sourceroot' => 'cvs:/var/lib/cvsroot/prj/',
# For a BitKeeper repository, specify bk: followed by the path to the
# repository. For BK it is also necessary to specify a 'cachepath' parameter in
# the 'sourceparams' value below. This should point to a directory where the
# code can write and read files.
# 'sourceroot' => 'bk:/some/repository/here',
# Finally, you can also use GIT, Linux Kernel's new
# distributes SCM to access the history:
# 'sourceroot' => 'git:/some/repository/.git'
# 'sourceroot' => 'git:/some/repostitory.git'
# The `sourceroot' config variable points to the directory
# in which you find the `objects', `refs', `index' etc.
# directories.
# The name to display for this source tree
'sourcerootname' => 'prj',
# Any parameters to the source access method should be specified below
#'sourceparams' => {'cachepath' => '/a/path/here'},
# The DBI identifier for the database to use
# For mysql, the format is dbi:mysql:dbname=
# for Postgres, it is dbi:Pg:dbname=
# for Oracle, it is dbi:Oracle:host=localhost;sid=DEVMMS;port=1521
'dbname' => 'dbi:mysql:dbname=lxr',
# If you need to specify the username or password for the database connection,
# uncomment the following two lines
# 'dbpass' => 'foo',
# 'dbuser' => 'lxr',
# If you need multiple lxr configurations in one database, set different table
# prefixes for them.
# 'dbprefix' => 'lxr_',
# For using glimpse, the directory to store the .glimpse files in is required
#'glimpsedir' => '/path/to/glimpse/databases',
# Location of swish-e index database files if using swish-e
#'swishdir' => '/usr/local/lxr/db',
# where to look for include files inside the sourcetree. This is used to hyperlink
# to included files.
'incprefix' => [ '/' ],
# Which extensions to treat as images when browsing. If a file is an image,
# it is displayed.
'graphicfile' => '(?i)\.(gif|jpg|jpeg|pjpg|pjpeg|xbm|png)$', #'
# How to map files to languages
# Note that the string for the key and the first entry in the
# array MUST match
'filetype' => {
# Format is
# Language name, filepatten regexp, module to invoke,
# (optional )tabwidth
# Note that to have another language supported by Generic.pm,
# you must ensure that:
# a) exuberant ctags supports it
# b) generic.conf is updated to specify information about the language
# c) the name of the language given here matches the entry in generic.conf
'C' => [
'C', '\.c$|\.pc$' #'
, 'LXR::Lang::Generic', '8'
],
'C++' => [
'C++',
'\.C$|((?i)\.c\+\+$|\.cc$|\.cpp$|\.cxx$|\.h$|\.hh$|\.hpp$|\.hxx$|\.h\+\+$)' #'
, 'LXR::Lang::Generic', '8'
],
# Some languages are commented out until the relevant entries in generic.conf are made
# The list here is the set supported by ctags 5.0.1
# 'Beta' => [ 'Beta', '(?i)\.bet$', 'LXR::Lang::Generic' ],
# 'Eiffel' => [ 'Eiffel', '(?i)\.e$', 'LXR::Lang::Generic' ],
# 'Fortran' =>
# [ 'Fortran', '(?i)\.f$|\.for$|\.ftn$|\.f77$|\.f90$|\.f95$', 'LXR::Lang::Generic' ],
'Cobol' => [ 'Cobol', '(?i)\.cob$', 'LXR::Lang::Cobol' ],
'Java' => [ 'Java', '(?i)\.java$', 'LXR::Lang::Java', '4' ],
# 'Lisp' => [
# 'Lisp', '(?i)\.cl$|\.clisp$|\.el$|\.l$|\.lisp$|\.lsp$|\.ml$', 'LXR::Lang::Generic'
# ],
# No tabwidth specified here as an example
'Make' => [ 'Make', '(?i)\.mak$|(?i)\.mk$|makefile*', 'LXR::Lang::Generic' ],
# 'Pascal' => [ 'Pascal', '(?i)\.p$|\.pas$', 'LXR::Lang::Generic' ],
'Perl' => [ 'Perl', '(?i)\.pl$|\.pm$|\.perl$', 'LXR::Lang::Generic', '4' ],
'php' => [ 'php', '(?i)\.php$|\.php3$|\.phtml$', 'LXR::Lang::Generic', '2' ],
'Python' => [ 'Python', '(?i)\.py$|\.python$', 'LXR::Lang::Generic', '4' ],
# 'rexx' => [ 'rexx', '(?i)\.cmd$|\.rexx$|\.rx$', 'LXR::Lang::Generic' ],
# 'ruby' => [ 'ruby', '(?i)\.rb$', 'LXR::Lang::Generic' ],
# 'scheme' => [ 'scheme', '(?i)\.sch$|\.scheme$|\.scm$|\.sm$', 'LXR::Lang::Generic' ],
'shell' => [ 'shell', '(?i)\.sh$|\.bsh$|\.bash$|\.ksh$|\.zsh$', 'LXR::Lang::Generic' ],
# 's-Lang' => [ 's-Lang', '(?i)\.sl$', 'LXR::Lang::Generic' ],
'SQL' => [ 'SQL', '(?i)\.sql$|\.pks$|\.pkb$', 'LXR::Lang::Generic' ],
'VB' => [ 'VB', '(?i)\.bas$|\.cls$|\.ctl$|\.frm$|\.vbs$', 'LXR::Lang::Generic' ],
#'tcl' => [ 'tcl', '(?i)\.tcl$|\.wish$', 'LXR::Lang::Generic' ],
},
# Maps interpreter names to languages. The format is:
# regexp => langname
# regexp is matched against the part after #! on the first line of a file
# langname must match one of the keys in filetype above.
#
# This mapping is only used if the filename doesn't match a pattern above, so
# a shell script called shell.c will be recognised as a C file, not a shell file.
'interpreters' => {
'perl' => 'Perl',
'bash' => 'shell',
'csh' => 'shell',
'python' => 'Python',
'ksh' => 'shell',
'zsh' => 'shell',
'sh' => 'shell',
'ksh' => 'shell',
},
# a link of the form (prefix)($filepath)(postfix) is generated when viewing a file
# example for cvsweb:
'cvswebprefix' => 'http://localhost/cgi-bin/cvsweb.cgi/prj',
#'cvswebpostfix' => '?cvsroot=rootname',
# example for viewcvs:
#'cvswebprefix' => 'http://cvs.myhost.com/cgi-bin/viewcvs.cgi/myroot',
#'cvswebpostfix' => '',
# Directories to always ignore. These usually are the SCM's
# private directories which possibly may contain non-public
# project history.
'ignoredirs' => ['CVSROOT', '.git'],
}
)