diff --git a/mode/html.py b/mode/html.py
index 0b95f56..9755c34 100644
--- a/mode/html.py
+++ b/mode/html.py
@@ -1,4 +1,4 @@
-import os
+import os, urllib
import color, method, mode
from lex import Grammar, PatternRule, RegionRule
from mode.xml import TagGrammar
@@ -35,6 +35,28 @@ class HtmlViewPage(method.Method):
else:
w.application.run_external(*argv)
+class HtmlValidatePage(method.Method):
+ '''View the HTML data in a browser (curses or external)'''
+ args = [method.arg('url', dv=default.build_mode_var('url'), ld=True,
+ h='')]
+ base = 'http://validator.w3.org/check?'
+ def _execute(self, w, **vargs):
+ w.mode.url = vargs['url']
+ viewcmd = w.application.config.get('html.viewcmd')
+ viewbg = viewcmd.endswith('&')
+ if viewbg:
+ viewcmd = viewcmd[:-1]
+ urlarg = urllib.urlencode({'uri': w.mode.url})
+ argv = (viewcmd, self.base + urlarg)
+ if viewbg:
+ if os.fork() == 0:
+ try:
+ os.execvp(viewcmd, argv)
+ except OSError:
+ os._exit(1)
+ else:
+ w.application.run_external(*argv)
+
class HtmlCheckSpelling(method.Method):
"""Check the spelling of the document via ispell -t"""
def _execute(self, w, **vargs):
@@ -79,5 +101,6 @@ class HTML(mode.Fundamental):
self.add_bindings('xml-create-tag', ('M-t',))
self.add_action(HtmlViewPage())
self.add_action(HtmlCheckSpelling())
+ self.url = None
install = HTML.install