diff --git a/ecrire/inc/plugin.php b/ecrire/inc/plugin.php
index 37fc15cfe8e99d45befab2ec34e85c52bf009c86..aeef4c5a7df218039c88a97fe64906bf25ae56fe 100644
--- a/ecrire/inc/plugin.php
+++ b/ecrire/inc/plugin.php
@@ -373,6 +373,7 @@ function pipeline_precompile(){
 		$pipe = array_filter(explode('|',$pipeline));
 		// Eclater le pipeline en filtres et appliquer chaque filtre
 		foreach ($pipe as $fonc) {
+			$fonc = trim($fonc);
 			$s_call .= '$val = minipipe(\''.$fonc.'\', $val);'."\n";
 			if (isset($spip_matrice[$fonc])){
 				$file = $spip_matrice[$fonc];
diff --git a/ecrire/inc/texte.php b/ecrire/inc/texte.php
index 2e9bcaf19eaf308153acbfd61e19af3aea3c9a45..7e288ee68126cbf7d443b01525b470edf657991b 100644
--- a/ecrire/inc/texte.php
+++ b/ecrire/inc/texte.php
@@ -1224,26 +1224,43 @@ function traiter_poesie($letexte)
 	return $letexte;
 }
 
-// Nettoie un texte, traite les raccourcis autre qu'URL, la typo, etc.
-// http://doc.spip.org/@traiter_raccourcis
-function traiter_raccourcis($letexte) {
-
-	// Appeler les fonctions de pre_traitement
-	$letexte = pipeline('pre_propre', $letexte);
+// callback pour la fonction traiter_raccourci_liens()
+function autoliens_callback($r) {
+	if (strlen($r[1])) {
+		$l = preg_replace(',^http:/*,', '', $r[1]);
+		if (preg_match(
+		'/^(?:[^\W_]((?:[^\W_]|-){0,61}[^\W_])?\.)+[a-zA-Z]{2,6}\b/S', $l))
+			return inserer_attribut(expanser_liens('[->http://'.$l.']'),
+				'rel', 'nofollow');
+	}
+	return $r[0];
+}
 
-	$letexte = traiter_poesie($letexte);
+// extraire les liens ecrits en mode texte brut
+function traiter_raccourci_liens($texte) {
+	return preg_replace_callback(
+	',\[[^\[\]]*->.*?\]|<[^<>]*>|((http:|www\.)[^"\'\s\[\]]+),S',
+	'autoliens_callback', $texte);
+	return $texte;
+}
 
-	// Harmoniser les retours chariot
+// Harmonise les retours chariots et mange les paragraphes html
+function traiter_retours_chariots($letexte) {
 	$letexte = preg_replace(",\r\n?,S", "\n", $letexte);
-
-	// Recuperer les paragraphes HTML
-
 	$letexte = preg_replace(",<p[>[:space:]],iS", "\n\n\\0", $letexte);
 	$letexte = preg_replace(",</p[>[:space:]],iS", "\\0\n\n", $letexte);
+	return $letexte;
+}
+
+
+// Nettoie un texte, traite les raccourcis autre qu'URL, la typo, etc.
+// http://doc.spip.org/@traiter_raccourcis
+function traiter_raccourcis($letexte) {
 
-	$letexte = traiter_raccourci_glossaire($letexte);
-	$letexte = traiter_raccourci_ancre($letexte);
+	// Appeler les fonctions de pre_traitement
+	$letexte = pipeline('pre_propre', $letexte);
 
+	// Gerer les notes (ne passe pas dans le pipeline)
 	list($letexte, $mes_notes) = traite_raccourci_notes($letexte);
 
 	// A present on introduit des attributs class_spip*
diff --git a/ecrire/inc/utils.php b/ecrire/inc/utils.php
index 6f8cb6a8dcb29b4363083f0e97cfa905e1a61abc..20b3d56e2d0ec8ff89ba4deb84f54c26b21616e8 100644
--- a/ecrire/inc/utils.php
+++ b/ecrire/inc/utils.php
@@ -76,15 +76,16 @@ function include_spip($f, $include = true) {
 
 // appel unitaire d'une fonction du pipeline
 // utilisee dans le script pipeline precompile
+// on passe $val par reference pour limiter les allocations memoire
 // http://doc.spip.org/@minipipe
-function minipipe($fonc,$val){
+function minipipe($fonc,&$val){
 
 	// fonction
 	if (function_exists($fonc))
 		$val = call_user_func($fonc, $val);
 
 	// Class::Methode
-	else if (preg_match("/^(\w*)::(\w*)$/", $fonc, $regs)
+	else if (preg_match("/^(\w*)::(\w*)$/S", $fonc, $regs)
 	AND $methode = array($regs[1], $regs[2])
 	AND is_callable($methode))
 		$val = call_user_func($methode, $val);
diff --git a/ecrire/inc_version.php b/ecrire/inc_version.php
index e5e0b63f01c5e0e41fbe0f8de2b3136da41707d3..5792dfee6b7076574a8867c61deaf52a5da467f9 100644
--- a/ecrire/inc_version.php
+++ b/ecrire/inc_version.php
@@ -229,7 +229,9 @@ $spip_pipeline = array(
 	'nettoyer_raccourcis_typo' => '',
 	'pre_boucle' => '',
 	'post_boucle' => '',
-	'pre_propre' => '|extraire_multi',
+	'pre_propre' => '|extraire_multi|traiter_poesie|traiter_retours_chariots
+		|traiter_raccourci_liens|traiter_raccourci_glossaire
+		|traiter_raccourci_ancre',
 	'post_propre' => '',
 	'pre_typo' => '|extraire_multi',
 	'post_typo' => '|quote_amp',