[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
file:/// -> find-file and dired
- From: Masatake Yamato <masata-y@xxxxxxxxxxxxxxxxxx>
- Date: Sun, 06 May 2001 03:31:51 +0900 (JST)
- X-ml-name: emacs-w3m
- X-mail-count: 00689
大和です.
file:///で指定されたファイルでも,そのファイル名が
w3m-content-type-alistにヒットしない場合には表示することが
できませんが,find-fileかdiredを実行するというのは難しいで
しょうか.
私は任意のコマンドのhtml出力をemacsの機能を結び付けることが
できることがemacs-w3mのすばらしさの一つだと考えています.
それを示す例として,ローカルのファイルシステムのツリー構造を
html出力するプログラムを書き,さらにそのプログラムの出力を
ファイルに落してM-x w3mするプログラムを書いてみました.
そのスクリーンショットです.
http://www.gyve.org/~jet/dtree.png
(defun dtree (allfiles path)
(interactive "P\nDDirectory: ")
(let ((flag (if allfiles "-f" "-d")))
(shell-command (format "htree %s %s"
flag
path)
(get-buffer-create "*DTREE*"))
(set-buffer (get-buffer "*DTREE*"))
(w3m-region (point-min) (point-max))
(toggle-read-only t)
))
#!/bin/sh
# PATHの通っているところにhtreeの名前で置いてchmod +xして下さい.
# Name: htree
# Programmer:
# Hemant T. Shah
# Life Insurance Data Processing
# July 12 1994
#
# Masatake YAMATO
# HTML produce code
#
# Description:
# Print directory tree structure as follows:
# |___Mail
# |___scheduler
# |___cics_scripts
# |___tar_msdos
# |___awk
# |___attributes
# |___tmp
# |___News
# |___dosscsi
# |___FAQ_xterminal
# |___shell_history.Z
# |___FAQ_AIX
# |___aix_ftp_site
# |___hp_software
# |___dnload
# |___telnet.h
# |___msdos
# |___tnetd.tar.Z
# |___aix
# |___hp
# |___xkey.c
#
# Conversion to bash v2 syntax done by Chet Ramey
# - removed command substitutions calling `basename'
#
ProgramName=${0##*/}
Path="."
ShowAll=1
ShowDir=0
ExpandDirectory()
{
local object # Local variable
cd "$1"
for object in $PWD/.??* $PWD/*
do
if [ -d $object ]; # It is a directory
then
echo "${indent}+---<A HREF="\"file://${object}\"">${object##*/}/</A>"
# indent="${indent}! " # Add to indentation
indent="${indent} " # Add to indentation
if [ -x $object ];
then
ExpandDirectory $object
fi
indent=${indent%????} # Remove from indentation
elif [ -e $object ]; then
if (( ShowAll == 1 ));
then
echo "${indent}+---<A HREF="\"file://${object}\"">${object##*/}</A>"
fi
fi
done
}
usage()
{
echo -e "Usage: $ProgramName [-h] [-f] [-d] [path] "
echo -e "\t-h ... display this help message."
echo -e "\t-f path ... shows all files and directories below path (default)."
echo -e "\t-d path ... shows all directories only below path."
}
while getopts "fd" opt
do
case $opt in
f) ShowAll=1 ;;
d) ShowDir=1
ShowAll=0 ;;
*) usage ; exit 2;;
esac
done
shift $(( $OPTIND - 1 ))
Path=${1:-.}
if [ ! -d "$Path" ]; then
echo "$0: error: specified path is not a directory." >&2
exit 1
fi
# echo "!$Path/"
echo "<pre>"
echo "<A HREF=\"file://$PWD\">$Path</A>"
ExpandDirectory $Path
echo "</pre>"