continued convertig filters

--HG--
branch : trunk
diff --git a/jinja2/compiler.py b/jinja2/compiler.py
index 4ddacd9..162192d 100644
--- a/jinja2/compiler.py
+++ b/jinja2/compiler.py
@@ -981,12 +981,14 @@
 
     def visit_Filter(self, node, frame, initial=None):
         self.write('f_%s(' % node.name)
-        if initial is not None:
+        func = self.environment.filters.get(node.name)
+        if getattr(func, 'contextfilter', False):
+            self.write('context, ')
+        if isinstance(node.node, nodes.Filter):
+            self.visit_Filter(node.node, frame, initial)
+        elif node.node is None:
             self.write(initial)
         else:
-            func = self.environment.filters.get(node.name)
-            if getattr(func, 'contextfilter', False):
-                self.write('context, ')
             self.visit(node.node, frame)
         self.signature(node, frame)
         self.write(')')