| Index: lib/src/prism/plugins/autolinker/prism-autolinker.js
 | 
| diff --git a/lib/src/prism/plugins/autolinker/prism-autolinker.js b/lib/src/prism/plugins/autolinker/prism-autolinker.js
 | 
| index a26b26304746b640c7141148898fce79a8ae5fcc..e56303f8edda3d8afd2c69599a0799c01676878a 100644
 | 
| --- a/lib/src/prism/plugins/autolinker/prism-autolinker.js
 | 
| +++ b/lib/src/prism/plugins/autolinker/prism-autolinker.js
 | 
| @@ -1,6 +1,9 @@
 | 
|  (function(){
 | 
|  
 | 
| -if (!self.Prism) {
 | 
| +if (
 | 
| +	typeof self !== 'undefined' && !self.Prism ||
 | 
| +	typeof global !== 'undefined' && !global.Prism
 | 
| +) {
 | 
|  	return;
 | 
|  }
 | 
|  
 | 
| @@ -11,19 +14,21 @@ var url = /\b([a-z]{3,7}:\/\/|tel:)[\w\-+%~/.:#=?&]+/,
 | 
|  	// Tokens that may contain URLs and emails
 | 
|      candidates = ['comment', 'url', 'attr-value', 'string'];
 | 
|  
 | 
| -for (var language in Prism.languages) {
 | 
| -	var tokens = Prism.languages[language];
 | 
| -	
 | 
| -	Prism.languages.DFS(tokens, function (key, def, type) {
 | 
| +Prism.hooks.add('before-highlight', function(env) {
 | 
| +	// Abort if grammar has already been processed
 | 
| +	if (!env.grammar || env.grammar['url-link']) {
 | 
| +		return;
 | 
| +	}
 | 
| +	Prism.languages.DFS(env.grammar, function (key, def, type) {
 | 
|  		if (candidates.indexOf(type) > -1 && Prism.util.type(def) !== 'Array') {
 | 
|  			if (!def.pattern) {
 | 
|  				def = this[key] = {
 | 
|  					pattern: def
 | 
|  				};
 | 
|  			}
 | 
| -			
 | 
| +
 | 
|  			def.inside = def.inside || {};
 | 
| -			
 | 
| +
 | 
|  			if (type == 'comment') {
 | 
|  				def.inside['md-link'] = linkMd;
 | 
|  			}
 | 
| @@ -33,14 +38,13 @@ for (var language in Prism.languages) {
 | 
|  			else {
 | 
|  				def.inside['url-link'] = url;
 | 
|  			}
 | 
| -			
 | 
| +
 | 
|  			def.inside['email-link'] = email;
 | 
|  		}
 | 
|  	});
 | 
| -	
 | 
| -	tokens['url-link'] = url;
 | 
| -	tokens['email-link'] = email;
 | 
| -}
 | 
| +	env.grammar['url-link'] = url;
 | 
| +	env.grammar['email-link'] = email;
 | 
| +});
 | 
|  
 | 
|  Prism.hooks.add('wrap', function(env) {
 | 
|  	if (/-link$/.test(env.type)) {
 | 
| @@ -63,4 +67,4 @@ Prism.hooks.add('wrap', function(env) {
 | 
|  	}
 | 
|  });
 | 
|  
 | 
| -})();
 | 
| +})();
 | 
| 
 |