diff -r ffaec355ee84 MoinMoin/parser/highlight.py
--- a/MoinMoin/parser/highlight.py	Mon Dec 28 14:53:08 2009 +0000
+++ b/MoinMoin/parser/highlight.py	Tue Jan 05 22:38:32 2010 +0100
@@ -28,6 +28,9 @@
         if m and m.groups(0):
             extensions.extend(m.groups(0))
 
+def extensions_from_lexer(parsername):
+    lexer = pygments.lexers.get_lexer_by_name(parsername)
+    extensions = [ext.strip('*') for ext in lexer.filenames if ext.startswith('*.')]
 
 class PygmentsFormatter(pygments.formatter.Formatter):
     """ a formatter for Pygments that uses the moin formatter for creating output """
@@ -169,4 +172,3 @@
         fmt.result.append(formatter.code_area(0, self._code_id))
         fmt.result.append(formatter.div(0))
         self.request.write("".join(fmt.result))
-
diff -r ffaec355ee84 MoinMoin/parser/text_cplusplus.py
--- a/MoinMoin/parser/text_cplusplus.py	Mon Dec 28 14:53:08 2009 +0000
+++ b/MoinMoin/parser/text_cplusplus.py	Tue Jan 05 22:38:32 2010 +0100
@@ -19,8 +19,8 @@
 """
 
 from MoinMoin.parser.highlight import Parser as HighlightParser
-from MoinMoin.parser.highlight import Dependencies
+from MoinMoin.parser.highlight import extensions_from_lexer, Dependencies
 
 class Parser(HighlightParser):
     parsername = 'cpp'  # Lexer name pygments recognizes
-
+    extensions = extensions_from_lexer(parsername)
diff -r ffaec355ee84 MoinMoin/parser/text_diff.py
--- a/MoinMoin/parser/text_diff.py	Mon Dec 28 14:53:08 2009 +0000
+++ b/MoinMoin/parser/text_diff.py	Tue Jan 05 22:38:32 2010 +0100
@@ -19,8 +19,8 @@
 """
 
 from MoinMoin.parser.highlight import Parser as HighlightParser
-from MoinMoin.parser.highlight import Dependencies
+from MoinMoin.parser.highlight import extensions_from_lexer, Dependencies
 
 class Parser(HighlightParser):
     parsername = 'diff'  # Lexer name pygments recognizes
-
+    extensions = extensions_from_lexer(parsername)
diff -r ffaec355ee84 MoinMoin/parser/text_irssi.py
--- a/MoinMoin/parser/text_irssi.py	Mon Dec 28 14:53:08 2009 +0000
+++ b/MoinMoin/parser/text_irssi.py	Tue Jan 05 22:38:32 2010 +0100
@@ -19,8 +19,8 @@
 """
 
 from MoinMoin.parser.highlight import Parser as HighlightParser
-from MoinMoin.parser.highlight import Dependencies
+from MoinMoin.parser.highlight import extensions_from_lexer, Dependencies
 
 class Parser(HighlightParser):
     parsername = 'irc'  # Lexer name pygments recognizes
-
+    extensions = extensions_from_lexer(parsername)
diff -r ffaec355ee84 MoinMoin/parser/text_java.py
--- a/MoinMoin/parser/text_java.py	Mon Dec 28 14:53:08 2009 +0000
+++ b/MoinMoin/parser/text_java.py	Tue Jan 05 22:38:32 2010 +0100
@@ -19,8 +19,8 @@
 """
 
 from MoinMoin.parser.highlight import Parser as HighlightParser
-from MoinMoin.parser.highlight import Dependencies
+from MoinMoin.parser.highlight import extensions_from_lexer, Dependencies
 
 class Parser(HighlightParser):
     parsername = 'java'  # Lexer name pygments recognizes
-
+    extensions = extensions_from_lexer(parsername)
diff -r ffaec355ee84 MoinMoin/parser/text_pascal.py
--- a/MoinMoin/parser/text_pascal.py	Mon Dec 28 14:53:08 2009 +0000
+++ b/MoinMoin/parser/text_pascal.py	Tue Jan 05 22:38:32 2010 +0100
@@ -19,8 +19,10 @@
 """
 
 from MoinMoin.parser.highlight import Parser as HighlightParser
-from MoinMoin.parser.highlight import Dependencies
+from MoinMoin.parser.highlight import extensions_from_lexer, Dependencies
 
 class Parser(HighlightParser):
     parsername = 'pascal'  # Lexer name pygments recognizes
+    extensions = extensions_from_lexer(parsername)
 
+
diff -r ffaec355ee84 MoinMoin/parser/text_python.py
--- a/MoinMoin/parser/text_python.py	Mon Dec 28 14:53:08 2009 +0000
+++ b/MoinMoin/parser/text_python.py	Tue Jan 05 22:38:32 2010 +0100
@@ -19,8 +19,9 @@
 """
 
 from MoinMoin.parser.highlight import Parser as HighlightParser
-from MoinMoin.parser.highlight import Dependencies
+from MoinMoin.parser.highlight import extensions_from_lexer, Dependencies
 
 class Parser(HighlightParser):
     parsername = 'python'  # Lexer name pygments recognizes
+    extensions = extensions_from_lexer(parsername)
 
diff -r ffaec355ee84 MoinMoin/wikiutil.py
--- a/MoinMoin/wikiutil.py	Mon Dec 28 14:53:08 2009 +0000
+++ b/MoinMoin/wikiutil.py	Tue Jan 05 22:38:32 2010 +0100
@@ -839,7 +839,7 @@
 ### mimetype support
 #############################################################################
 import mimetypes
-
+import pygments.lexers
 MIMETYPES_MORE = {
  # OpenOffice 2.x & other open document stuff
  '.odt': 'application/vnd.oasis.opendocument.text',
@@ -868,6 +868,13 @@
  '.wmv': 'video/x-ms-wmv',
  '.swf': 'application/x-shockwave-flash',
 }
+# add all mimetype patterns of pygments
+for name, short, patterns, mime in pygments.lexers.get_all_lexers():
+    for pattern in list(patterns):
+        if pattern.startswith('*.') and mime:
+            patt = pattern.strip('*')
+            MIMETYPES_MORE[patt] = mime[0]
+
 [mimetypes.add_type(mimetype, ext, True) for ext, mimetype in MIMETYPES_MORE.items()]
 
 MIMETYPES_sanitize_mapping = {
@@ -1188,7 +1195,13 @@
     """
     if not hasattr(cfg.cache, 'EXT_TO_PARSER'):
         etp, etd = {}, None
-        for pname in getPlugins('parser', cfg):
+        parser_plugins = getPlugins('parser', cfg)
+        # force highlight parser first entry in the list
+        # this makes it possible to overwrite an extension
+        # for a different parser
+        parser_plugins.remove('highlight')
+        parser_plugins = ['highlight'] + parser_plugins
+        for pname in parser_plugins:
             try:
                 Parser = importPlugin(cfg, 'parser', pname, 'Parser')
             except PluginMissingError:
