diff options
| author | Fumitoshi UKAI <ukai@debian.or.jp> | 2001-11-30 16:48:12 +0000 | 
|---|---|---|
| committer | Fumitoshi UKAI <ukai@debian.or.jp> | 2001-11-30 16:48:12 +0000 | 
| commit | 54da48c631347b43699211f88607a921fe78c178 (patch) | |
| tree | a00c3ace4be59ba6c6c6b425943f4e9555234e4c /scripts | |
| parent | add ALARM, SUBMIT (diff) | |
| download | w3m-54da48c631347b43699211f88607a921fe78c178.tar.gz w3m-54da48c631347b43699211f88607a921fe78c178.zip | |
[w3m-dev 02600]
From: Fumitoshi UKAI <ukai@debian.or.jp>
Diffstat (limited to 'scripts')
| -rw-r--r-- | scripts/.cvsignore | 3 | ||||
| -rw-r--r-- | scripts/Makefile | 54 | ||||
| -rw-r--r-- | scripts/w3mhelp.cgi.in | 186 | 
3 files changed, 237 insertions, 6 deletions
| diff --git a/scripts/.cvsignore b/scripts/.cvsignore index 8cf0879..191d0e6 100644 --- a/scripts/.cvsignore +++ b/scripts/.cvsignore @@ -1 +1,4 @@  dirlist.cgi +w3mhelp.cgi +w3hmhelp-*.pl + diff --git a/scripts/Makefile b/scripts/Makefile index b1d304a..4cf6575 100644 --- a/scripts/Makefile +++ b/scripts/Makefile @@ -3,27 +3,69 @@ prefix		= /usr/local  DESTDIR		=  BIN_DIR		= $(prefix)/bin  LIB_DIR		= $(prefix)/lib/w3m +HELP_DIR	= $(prefix)/lib/w3m -LIB_TARGETS	= dirlist.cgi +LIB_TARGETS	= dirlist.cgi w3mhelp.cgi  INSTALL		= install -c  INSTALL_SCRIPT	= $(INSTALL) -m 755  PERL		= /usr/local/bin/perl +DOCDIRS = doc:en_English doc-jp:ja_Japanese +  .SUFFIXES: .in -all: $(LIB_TARGETS) +all: $(LIB_TARGETS) helplibs  .in: -	sed 's%@PERL@%$(PERL)%' $< > $@ -	chmod +x $@ +	@echo "generating $@..." +	@sed -e 's%@PERL@%$(PERL)%' -e 's%@HELP_DIR@%$(HELP_DIR)%' \ +	  -e 's%@DOCDIRS@%$(DOCDIRS)%' $< > $@ +	@chmod +x $@ +	@echo done + +helplibs: +	@echo "generating w3mhelp-funcname.pl..." +	@echo '%funcname = (' > w3mhelp-funcname.pl +	@while read fname fid; do \ +	  case "$$fname" in [a-zA-Z@]*) echo "'$$fname', '$$fid',";; esac; \ +	done < ../funcname.tab >> w3mhelp-funcname.pl +	@echo ');' >> w3mhelp-funcname.pl +	@echo '%keyfunc = (' >> w3mhelp-funcname.pl +	@case "$(KEYBIND_SRC)" in *lynx*) keymap=keymap.lynx;; *) keymap=keymap.default;; esac; \ +	while read keyword keys func rest; do \ +	 if [ "X$$keyword" = Xkeymap ]; then \ +	   keys=`echo "$$keys" | sed -e 's/\\\\/\\\\&/g'`; \ +	   echo "'$$keys', '$$func',"; \ +	 fi; \ +	done < ../doc/$$keymap >> w3mhelp-funcname.pl +	@echo ');' >> w3mhelp-funcname.pl +	@echo '1;' >> w3mhelp-funcname.pl +	@echo "done" + +	@echo "generating w3mhelp-funcdesc*.pl..." +	@for dirlang in $(DOCDIRS); do \ +	  dir=`expr "$$dirlang" : "\(.*\):.*"`; \ +	  lang=`expr "$$dirlang" : ".*:\(.*\)_.*"`; \ +	  echo '%funcdesc = (' > w3mhelp-funcdesc.$$lang.pl; \ +	  while read func desc; do \ +	   case "$$func" in [a-zA-Z@]*) echo "'$$func', '$$desc', ";; esac; \ +	  done < ../$$dir/README.func >> w3mhelp-funcdesc.$$lang.pl; \ +	  echo ');' >> w3mhelp-funcdesc.$$lang.pl; \ +	  echo '1;' >> w3mhelp-funcdesc.$$lang.pl; \ +	done +	@echo done  install: $(LIB_TARGETS)  	for file in $(LIB_TARGETS);     \  	do      \ -		$(INSTALL_SCRIPT) $$file $(DISTDIR)$(LIB_DIR);  \ +		$(INSTALL_SCRIPT) $$file $(DESTDIR)$(LIB_DIR);  \ +	done +	for file in w3mhelp-*.pl; \ +	do \ +		$(INSTALL) $$file $(DESTDIR)$(HELP_DIR); \  	done  clean: -	rm -f $(LIB_TARGETS) +	rm -f $(LIB_TARGETS) w3mhelp-*.pl diff --git a/scripts/w3mhelp.cgi.in b/scripts/w3mhelp.cgi.in new file mode 100644 index 0000000..06d99e9 --- /dev/null +++ b/scripts/w3mhelp.cgi.in @@ -0,0 +1,186 @@ +#!@PERL@ +# $Id: w3mhelp.cgi.in,v 1.1 2001/11/30 16:48:19 ukai Exp $ + +$helpdir="@HELP_DIR@"; +unshift(@INC, $helpdir); +@docdirs=qw(@DOCDIRS@); + +require "w3mhelp-funcname.pl"; +require "w3mhelp-funcdesc.en.pl"; +$lang = 'en'; + +%htmlesc = qw(< < > > & &); + +$keymap = "$ENV{'HOME'}/.w3m/keymap"; +$version = '*unknown*'; +if (defined($ENV{'QUERY_STRING'})) { +    print "QUERY_STRING=$ENV{'QUERY_STRING'}\n"; +    if ($ENV{'QUERY_STRING'} =~ /(^|&)version=([^&]*)/) { +	$version = $2; +	$version =~ s/\+|%([0-9A-Fa-f][0-9A-Fa-f])/$& eq '+' ? ' ' : pack('C', hex($1))/ge; +	$version =~ s/w3m\///; +    } +    if ($ENV{'QUERY_STRING'} =~ /(^|&)lang=([^&]*)/) { +	local $tlang=$2; +	$tlang =~ s/\+|%([0-9A-Fa-f][0-9A-Fa-f])/$& eq '+' ? ' ' : pack('C', hex($1))/ge; +	$tlang =~ tr/A-Z/a-z/; +	print "tlang=$tlang\n"; +	eval qq{require "w3mhelp-funcdesc.$tlang.pl"}; +	if (defined(%funcdesc)) { +	    $lang = $tlang; +	} +    } +} + +if (-f $keymap) { +    open(KEYMAP, $keymap) or die "cannot open keymap: $keymap, $!"; +    &load_keymap(*KEYMAP, $func); +    close(KEYMAP); +} + +local (%funckeydesc, $key, $fname, $desc); + +while (($fname, $desc) = each %funcdesc) { +    $funckeydesc{$funcname{$fname}} = "$desc\n"; +} +while (($key, $fname) = each %keyfunc) { +    $funckeydesc{$funcname{$fname}} .= "$key,"; +} + +print <<HEADING; +Content-Type: text/html + +<HTML> +<HEAD> +<TITLE>w3m help page</TITLE> +</HEAD> +<BODY> +<CENTER> +*******  +<A HREF="http://w3m.sourceforge.net/">w3m</A> + (WWW-wo-Miru)  Version $version by  +<A HREF="mailto:aito\@fw.ipsj.or.jp">A.ITO</A> ********<BR> +             ***** Key assign table ***** +</CENTER> + +HEADING + +$q_version = $version; +$q_version =~ s/[^A-Za-z0-9_\$\.\-]/sprintf('%%%02X', ord($&))/ge; +$script = "<A HREF=\"$ENV{'SCRIPT_NAME'}?version=$q_version&lang="; + +# doc:en_English doc-jp:ja_Japanese +for $otherlang (@docdirs) { +    local(@d) = split(/[:_]/, $otherlang); +     +    if ($d[1] ne $lang) { +	$d[1] =~ s/[^A-Za-z0-9_\$\.\-]/sprintf('%%%02X', ord($&))/ge; +	print $script, $d[1], "\">$d[2] version</A><BR>\n"; +    } +} + +&show_keymap("Page/Cursor motion",  +	     qw(pgFore pgBack movR movL movD movU lup1 ldown1  +		goLineF goLineL movRW movLW shiftl shiftr +		col1R col1L goLine ctrCsrH ctrCsrV +		topA lastA nextA prevA +		nextL nextLU nextR nextRD nextD nextU)); + +&show_keymap("Hyperlink operation", +	     qw(followA svA peekURL peekIMG followI svI +		chkURL chkNMID curURL pginfo curlno ldHist +		rFrame extbrz linkbrz)); + +&show_keymap("File/Stream operation", +	     qw(goURL ldfile readsh pipesh)); + +&show_keymap("Buffer operation", +	     qw(backBf vwSrc selMn editBf rdrwSc reload  +		svBuf svSrc editScr)); + +print <<PAGE; +<H2>Buffer selection mode</H2> +<table cellpadding=0> +<TR><TD WIDTH=140>k, C-p<TD>Select previous buffer +<TR><TD>j, C-n<TD>Select next buffer +<TR><TD>D<TD>Delete current buffer +<TR><TD>RET<TD>Go to the selected buffer +</table> +PAGE + +&show_keymap("Bookmark operation", +	     qw(ldBmark adBmark)); + +&show_keymap("Search", +	     qw(srchfor srchbak srchnxt srchprv)); + +&show_keymap("Dictionary look-up", +	     qw(dictword dictwordat)); + +&show_keymap("Mark operation", +	     qw(_mark prevMk nextMk reMark)); + +&show_keymap("Miscellany", +	     qw(setAlarm execsh ldhelp ldOpt cooLst susp qquitfm quitfm)); + +print <<PAGE; +<H2>Line-edit mode</H2> +<table cellpadding=0> +<TR><TD WIDTH=140>C-f<TD>Move cursor forward +<TR><TD>C-b<TD>Move cursor backward +<TR><TD>C-h<TD>Delete previous character +<TR><TD>C-d<TD>Delete current character +<TR><TD>C-k<TD>Kill everything after cursor +<TR><TD>C-u<TD>Kill everything before cursor +<TR><TD>C-a<TD>Move to the top of line +<TR><TD>C-e<TD>Move to the bottom of line +<TR><TD>C-p<TD>Fetch the previous string from the history list +<TR><TD>C-n<TD>Fetch the next string from the history list +<TR><TD>TAB,SPC<TD>Complete filename +<TR><TD>RETURN<TD>Accept +</table> +<HR> +</BODY> +</HTML> +PAGE + +exit 0; + +sub load_keymap { +    local(*FH) = shift; +    my ($func) = @_; + +    while (<FH>) { +	next if /^#/; +	next if /^\s*$/; +	($keymap, $key, $fname) = split; +	next unless $keymap =~ /keymap/; +	$fname =~ tr/a-z/A-Z/; +	next unless (defined($funcdesc{$fname})); +	$key =~ s/^\\//; +	$keyfunc{$key} = $fname; +    } +} + +sub show_keymap { +    my ($head, @list) = @_; +    my ($fid); +    my ($attr) = " WIDTH=140"; + +    print <<PAGE; +<H2>$head</H2> +<table cellpadding=0> +PAGE +    foreach $fid (@list) { +	local ($desc, $keys) = split("\n", $funckeydesc{$fid}, 2); +	$keys =~ s/,$//; +	$keys = '<NOT ASSIGNED>' if ($keys eq ''); +	$keys =~ s/[<>&]/$htmlesc{$&}/ge; +	$desc =~ s/[<>&]/$htmlesc{$&}/ge; +	print <<PAGE; +<TR><TD$attr>$keys</TD><TD>$desc</TD></TR> +PAGE +	$attr = ""; +    } +    print "</table>\n"; +} | 
