Emacs/W3 is still the best Web page rendering option inside
Emacspeak given the ability to apply XSL transforms, as well as
obtaining aural styling via ACSS.
However W3's url handling layer often breaks when faced with
multiple redirects, especially when some of these happen through
the Host:
HTTP header. Additionally,
HTTPS
authentication sometimes fails mysteriously in
the presence of redirects.
In many of these cases, lynx
happily fetches the
pages correctly; however you're then stuck using a fairly weak
auditory interface in that Emacspeak degrades to being
aterminal level screenreader.
An effective solution to this problem is to use
lynx
within an Emacs terminal, and after finding the
content that is worth reading, handing off that content to
Emacs/W3. The next few paragraphs show how.
The lynx-site.cfg
File
This is where you add site-specific configurations.
Here are the lines I have in my lynx-site.cfg
to
integrate lynx
and Emacs.
Before you use any of this, make sure you have executed M-x
server-start
in your running Emacs, and make sure that all
is well by experimenting with emacsclient
to ensure
that external programs can hand-off editting tasks to the
currently running Emacs.
#site defaults #for bookshare: DOWNLOADER:BKS Unpack:bks.pl %s %s:TRUE PRINTER:Edit:emacsclient %s:TRUE KEYMAP:???:EDITTEXTAREA # use external editor to edit a form textarea PRETTYSRC:TRUE SOURCE_CACHE:MEMORY SAVE_SPACE:~/.wget/ BOLD_HEADERS:TRUE PRINTER:W3:emacsclient -e '(w3-open-local "%s")':TRUE
Below, I'll describe what each of the above lines do:
-
DOWNLOADER:BKS Unpack:bks.pl %s %s:TRUE
The above line creates an additional item in the download menu that invokes the BookShare unpacker. Scriptbks-unpack.pl
invokes the BookShare unpack tool with the appropriate options. PRINTER:Edit:emacsclient %s:TRUE
This creates an Edit item in the print menu. Invoking this menu item causes the current page to be handed off to Emacs for editting. If you want to edit the source, first switch to source view by hitting\
before invoking print.KEYMAP:???:EDITTEXTAREA # use external editor to edit a form textarea
This sets lynx up so that when editting a multiline textarea, you can hand off the editting job to Emacs. This is particularly useful for editting Wiki pages. Replace the??
with the desired key sequence.PRETTYSRC:TRUE
SOURCE_CACHE:MEMORY
The above two settings make the edit source functionality more pleasant to use.-
PRINTER:W3:emacsclient -e '(w3-open-local "%s")':TRUE
The above creates a W3 menu item in the print menu. Invoking this causes Emacs/W3 to display the current page --- again switch tosource view
before invoking this so that Emacs/W3 gets handed the HTML markup.
Script bks-unpack.pl
#!/usr/bin/perl -w #$Id: bks.pl,v 1.1 2003/07/04 15:41:55 tvraman Exp tvraman $ #Description: Bookshare downloader for Lynx use strict; my $location="$ENV{HOME}/books/book-share"; my $password = 'xxxxxxx'; my $grabbed = shift; my $target = shift; my $dir =qx(basename $target .bks); chomp $dir; my $where = "$location/$dir"; qx(mkdir -p $where); qx(mv $grabbed $where/$target); chdir $where; qx(echo $password | bks-unpack -q $target 1>&- 2>&- &);