diff --git a/CHANGES.md b/CHANGES.md
index 323bab5cde..d767090542 100644
--- a/CHANGES.md
+++ b/CHANGES.md
@@ -16,6 +16,7 @@ Core Changes:
Language Improvements:
+- fix(elixir) Support function names with a slash (#2406) [Josh Goebel][]
- fix(javascript) comma is allowed in a "value container" (#2403) [Josh Goebel][]
- enh(apache) add `deny` and `allow` keywords [Josh Goebel][]
- enh(apache) highlight numeric attributes values [Josh Goebel][]
diff --git a/src/languages/elixir.js b/src/languages/elixir.js
index 89f498774d..998fa745a1 100644
--- a/src/languages/elixir.js
+++ b/src/languages/elixir.js
@@ -19,7 +19,11 @@ export default function(hljs) {
lexemes: ELIXIR_IDENT_RE,
keywords: ELIXIR_KEYWORDS
};
-
+ var NUMBER = {
+ className: 'number',
+ begin: '(\\b0o[0-7_]+)|(\\b0b[01_]+)|(\\b0x[0-9a-fA-F_]+)|(-?\\b[1-9][0-9_]*(.[0-9_]+([eE][-+]?[0-9]+)?)?)',
+ relevance: 0
+ };
var SIGIL_DELIMITERS = '[/|([{<"\']'
var LOWERCASE_SIGIL = {
className: 'string',
@@ -128,11 +132,7 @@ export default function(hljs) {
begin: ELIXIR_IDENT_RE + ':(?!:)',
relevance: 0
},
- {
- className: 'number',
- begin: '(\\b0o[0-7_]+)|(\\b0b[01_]+)|(\\b0x[0-9a-fA-F_]+)|(-?\\b[1-9][0-9_]*(.[0-9_]+([eE][-+]?[0-9]+)?)?)',
- relevance: 0
- },
+ NUMBER,
{
className: 'variable',
begin: '(\\$\\W)|((\\$|\\@\\@?)(\\w+))'
@@ -144,6 +144,15 @@ export default function(hljs) {
begin: '(' + hljs.RE_STARTERS_RE + ')\\s*',
contains: [
hljs.HASH_COMMENT_MODE,
+ {
+ // to prevent false regex triggers for the division function:
+ // /:
+ begin: /\/: (?=\d+\s*[,\]])/,
+ relevance: 0,
+ contains: [
+ NUMBER
+ ]
+ },
{
className: 'regexp',
illegal: '\\n',
diff --git a/test/markup/elixir/function-not-regex.expect.txt b/test/markup/elixir/function-not-regex.expect.txt
new file mode 100644
index 0000000000..bd914311ce
--- /dev/null
+++ b/test/markup/elixir/function-not-regex.expect.txt
@@ -0,0 +1,6 @@
+import Kernel, except: [
+ spawn: 1,
+ +: 2,
+ /: 2,
+ Unless: 2
+]
diff --git a/test/markup/elixir/function-not-regex.txt b/test/markup/elixir/function-not-regex.txt
new file mode 100644
index 0000000000..bda5875d58
--- /dev/null
+++ b/test/markup/elixir/function-not-regex.txt
@@ -0,0 +1,6 @@
+import Kernel, except: [
+ spawn: 1,
+ +: 2,
+ /: 2,
+ Unless: 2
+]