aboutsummaryrefslogtreecommitdiff
path: root/IkiWiki/Plugin/highlight.pm
diff options
context:
space:
mode:
Diffstat (limited to 'IkiWiki/Plugin/highlight.pm')
-rw-r--r--IkiWiki/Plugin/highlight.pm34
1 files changed, 26 insertions, 8 deletions
diff --git a/IkiWiki/Plugin/highlight.pm b/IkiWiki/Plugin/highlight.pm
index fbe7ddff4..ce919748a 100644
--- a/IkiWiki/Plugin/highlight.pm
+++ b/IkiWiki/Plugin/highlight.pm
@@ -60,14 +60,22 @@ sub checkconfig () {
}
if (! exists $config{filetypes_conf}) {
- $config{filetypes_conf}=
- ($data_dir ? $data_dir->getConfDir() : "/etc/highlight/")
- . "filetypes.conf";
+ if (! $data_dir ) {
+ $config{filetypes_conf}= "/etc/highlight/filetypes.conf";
+ } elsif ( $data_dir -> can('searchFile') ) {
+ # 3.18 +
+ $config{filetypes_conf}=
+ $data_dir -> searchFile("filetypes.conf");
+ } 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()) {
@@ -147,17 +155,27 @@ sub 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.