X-Git-Url: http://git.vanrenterghem.biz/git.ikiwiki.info.git/blobdiff_plain/a55a20f5f879b11ce1ac2e7c72ca7c3f7dea6a9b..33f479526e0afe70f92ca954ee1085705a8c5743:/IkiWiki/Plugin/highlight.pm?ds=sidebyside

diff --git a/IkiWiki/Plugin/highlight.pm b/IkiWiki/Plugin/highlight.pm
index 0aa7386ba..04c554ac4 100644
--- a/IkiWiki/Plugin/highlight.pm
+++ b/IkiWiki/Plugin/highlight.pm
@@ -62,20 +62,20 @@ sub checkconfig () {
 	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()) {
@@ -155,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.
@@ -191,7 +201,9 @@ sub highlight ($$) {
 
 	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){