From 1c630b1d4e30bf6f33585870e1bb9dfbcf591524 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20San=20Juli=C3=A1n?= Date: Sun, 9 Aug 2015 00:05:14 +0200 Subject: [PATCH 1/4] complete hook added --- prism.js | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/prism.js b/prism.js index 8282b57193..e6a2273c4b 100644 --- a/prism.js +++ b/prism.js @@ -177,10 +177,6 @@ var _ = _self.Prism = { parent.className = parent.className.replace(lang, '').replace(/\s+/g, ' ') + ' language-' + language; } - if (!grammar) { - return; - } - var code = element.textContent; if(!code) { @@ -196,6 +192,11 @@ var _ = _self.Prism = { code: code }; + if (!grammar) { + _.hooks.run('complete', env); + return; + } + _.hooks.run('before-highlight', env); if (async && _self.Worker) { @@ -228,6 +229,9 @@ var _ = _self.Prism = { _.hooks.run('after-highlight', env); } + + _.hooks.run('complete', env); + }, highlight: function (text, grammar, language) { From 3f4d9182a00bc48aa8d87377fc626ded418d0c69 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fernando=20San=20Juli=C3=A1n?= Date: Sun, 9 Aug 2015 00:07:08 +0200 Subject: [PATCH 2/4] run line numbers plugin in complete hook --- plugins/line-numbers/prism-line-numbers.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/line-numbers/prism-line-numbers.js b/plugins/line-numbers/prism-line-numbers.js index 9443deb7dc..73884cce64 100644 --- a/plugins/line-numbers/prism-line-numbers.js +++ b/plugins/line-numbers/prism-line-numbers.js @@ -1,4 +1,4 @@ -Prism.hooks.add('after-highlight', function (env) { +Prism.hooks.add('complete', function (env) { // works only for wrapped inside
 (not inline)
 	var pre = env.element.parentNode;
 	var clsReg = /\s*\bline-numbers\b\s*/;

From f237e67b8301a4252b2dca1c90f73dfcd38d2e44 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fernando=20San=20Juli=C3=A1n?= 
Date: Sun, 9 Aug 2015 03:21:30 +0200
Subject: [PATCH 3/4] run line highlight plugin in complete hook

---
 plugins/line-highlight/prism-line-highlight.js | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/plugins/line-highlight/prism-line-highlight.js b/plugins/line-highlight/prism-line-highlight.js
index 577d142e98..8d5faa156c 100644
--- a/plugins/line-highlight/prism-line-highlight.js
+++ b/plugins/line-highlight/prism-line-highlight.js
@@ -85,7 +85,7 @@ function applyHash() {
 
 var fakeTimer = 0; // Hack to limit the number of times applyHash() runs
 
-Prism.hooks.add('after-highlight', function(env) {
+Prism.hooks.add('complete', function(env) {
 	var pre = env.element.parentNode;
 	var lines = pre && pre.getAttribute('data-line');
 	

From c89bbdb156c867b161e55c04964f10dae9a193c6 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Fernando=20San=20Juli=C3=A1n?= 
Date: Sun, 9 Aug 2015 03:56:20 +0200
Subject: [PATCH 4/4] no line numbers if already exists

---
 plugins/line-numbers/prism-line-numbers.js | 5 +++++
 1 file changed, 5 insertions(+)

diff --git a/plugins/line-numbers/prism-line-numbers.js b/plugins/line-numbers/prism-line-numbers.js
index 73884cce64..5b01dceeae 100644
--- a/plugins/line-numbers/prism-line-numbers.js
+++ b/plugins/line-numbers/prism-line-numbers.js
@@ -10,6 +10,11 @@ Prism.hooks.add('complete', function (env) {
 		return;
 	}
 
+	if ( env.element.querySelector(".line-numbers-rows") ) {
+		// Abort if line numbers already exists
+		return;
+	}
+
 	if (clsReg.test(env.element.className)) {
 		// Remove the class "line-numbers" from the 
 		env.element.className = env.element.className.replace(clsReg, '');