eval q{use highlight};
if (highlight::DataDir->can('new')) {
$data_dir=new highlight::DataDir();
- $data_dir->searchDataDir("");
+ if ( $data_dir->can('initSearchDirectories') ) {
+ # 4.0+
+ $data_dir -> initSearchDirectories("");
+ } else {
+ # pre-4.0
+ $data_dir -> searchDataDir("");
+ }
} else {
$data_dir=undef;
}
if (! exists $config{filetypes_conf}) {
if (! $data_dir ) {
$config{filetypes_conf}= "/etc/highlight/filetypes.conf";
- } elsif ( $data_dir -> can('searchFile') ) {
- # 3.18 +
+ } elsif ( $data_dir -> can('getFiletypesConfPath') ) {
+ # 3.14 +
$config{filetypes_conf}=
- $data_dir -> searchFile("filetypes.conf");
+ $data_dir -> getFiletypesConfPath("filetypes");
} else {
# 3.9 +
$config{filetypes_conf}=
$data_dir -> getConfDir() . "/filetypes.conf";
}
}
+ # note that this is only used for old versions of highlight
+ # where $data_dir will not be defined.
if (! exists $config{langdefdir}) {
- $config{langdefdir}=
- ($data_dir ? $data_dir->getLangPath("")
- : "/usr/share/highlight/langDefs");
+ $config{langdefdir}= "/usr/share/highlight/langDefs";
}
if (exists $config{tohighlight} && read_filetypes()) {
}
+sub searchlangdef {
+ my $lang=shift;
+
+ if ($data_dir) {
+ return $data_dir->getLangPath($lang . ".lang");
+ } else {
+ return "$config{langdefdir}/$lang.lang";
+ }
+
+}
# Given a filename extension, determines the language definition to
# use to highlight it.
sub ext2langfile ($) {
my $ext=shift;
- my $langfile="$config{langdefdir}/$ext.lang";
+ my $langfile=searchlangdef($ext);
return $langfile if exists $highlighters{$langfile};
read_filetypes() unless $filetypes_read;
if (exists $ext2lang{$ext}) {
- return "$config{langdefdir}/$ext2lang{$ext}.lang";
+ return searchlangdef($ext2lang{$ext});
}
# If a language only has one common extension, it will not
# be listed in filetypes, so check the langfile.
my $gen;
if (! exists $highlighters{$langfile}) {
+ no warnings 'once';
$gen = highlight::CodeGenerator::getInstance($highlight::XHTML);
+ use warnings;
$gen->setFragmentCode(1); # generate html fragment
$gen->setHTMLEnclosePreTag(1); # include stylish <pre>
if ($data_dir){