Codemirror: Add support for perl mode

Bug: issue 2398
Change-Id: Ie7c2b4583a71ad9646ef745df156bcb31ae1f9a4
diff --git a/gerrit-gwtui/src/main/java/net/codemirror/lib/ModeInjector.java b/gerrit-gwtui/src/main/java/net/codemirror/lib/ModeInjector.java
index 4c32f38..285b9ec 100644
--- a/gerrit-gwtui/src/main/java/net/codemirror/lib/ModeInjector.java
+++ b/gerrit-gwtui/src/main/java/net/codemirror/lib/ModeInjector.java
@@ -45,6 +45,7 @@
       Modes.I.go(),
       Modes.I.htmlmixed(),
       Modes.I.javascript(),
+      Modes.I.perl(),
       Modes.I.properties(),
       Modes.I.python(),
       Modes.I.shell(),
diff --git a/gerrit-gwtui/src/main/java/net/codemirror/mode/Modes.java b/gerrit-gwtui/src/main/java/net/codemirror/mode/Modes.java
index e2d3e3c..3f41772 100644
--- a/gerrit-gwtui/src/main/java/net/codemirror/mode/Modes.java
+++ b/gerrit-gwtui/src/main/java/net/codemirror/mode/Modes.java
@@ -30,6 +30,7 @@
   @Source("htmlmixed/htmlmixed.js") @DoNotEmbed DataResource htmlmixed();
   @Source("javascript/javascript.js") @DoNotEmbed DataResource javascript();
   @Source("properties/properties.js") @DoNotEmbed DataResource properties();
+  @Source("perl/perl.js") @DoNotEmbed DataResource perl();
   @Source("python/python.js") @DoNotEmbed DataResource python();
   @Source("shell/shell.js") @DoNotEmbed DataResource shell();
   @Source("sql/sql.js") @DoNotEmbed DataResource sql();
diff --git a/gerrit-gwtui/src/main/java/net/codemirror/mode/mode_map b/gerrit-gwtui/src/main/java/net/codemirror/mode/mode_map
index c3128f6..61b0676 100644
--- a/gerrit-gwtui/src/main/java/net/codemirror/mode/mode_map
+++ b/gerrit-gwtui/src/main/java/net/codemirror/mode/mode_map
@@ -32,6 +32,9 @@
 text/x-ini
 text/x-properties
 
+perl:
+text/x-perl
+
 python:
 text/x-python
 
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/DefaultFileExtensionRegistry.java b/gerrit-server/src/main/java/com/google/gerrit/server/DefaultFileExtensionRegistry.java
index be4a9e8..8520fa3 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/DefaultFileExtensionRegistry.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/DefaultFileExtensionRegistry.java
@@ -29,6 +29,7 @@
 public class DefaultFileExtensionRegistry extends MimeDetector {
   private static final MimeType INI = newMimeType("text/x-ini", 2);
   private static final MimeType PYTHON = newMimeType("text/x-python", 2);
+  private static final MimeType PERL = newMimeType("text/x-perl", 2);
 
   private static final ImmutableMap<String, MimeType> TYPES =
     ImmutableMap.<String,MimeType>builder()
@@ -41,6 +42,8 @@
       .put("cxx", newMimeType("text/x-c++src", 1))
       .put("hxx", newMimeType("text/x-c++hdr", 1))
       .put("scala", newMimeType("text/x-scala", 1))
+      .put("pl", PERL)
+      .put("pm", PERL)
       .build();
 
   private static MimeType newMimeType(String type, final int specificity) {
diff --git a/lib/codemirror/cm3.defs b/lib/codemirror/cm3.defs
index ef1851b..6167541 100644
--- a/lib/codemirror/cm3.defs
+++ b/lib/codemirror/cm3.defs
@@ -20,6 +20,7 @@
   'htmlmixed/htmlmixed.js',
   'javascript/javascript.js',
   'properties/properties.js',
+  'perl/perl.js',
   'python/python.js',
   'shell/shell.js',
   'sql/sql.js',