I really liked your solution to this problem, and so I did some more checking and I think that I have found out the cause of the problem, it's not a Zope problem after all, but rather an Emacs regular expression problem. Instead of: (setq auto-mode-alist (cons '("\\_html$" . html-mode) auto-mode-alist)) Try instead: (setq auto-mode-alist (cons '("_html$" . html-mode) auto-mode-alist)) The two '\' characters are just there to escape the next character (which in most of the auto-mode-alist is the special '.' character). With this small modification I was able to get Emacs to do the "right thing" in Zope without having to put comments in each file. I was able to open foo_py, foo_html, and foo_sql in python-mode, html-mode, and sql-mode respectively. This made me very happy. I also learned a bit more about Emacs, and that is always handy. Thanks, Jason