diff options
Diffstat (limited to 'share/emacs/site-lisp/w3m/w3m-dtree.el')
-rw-r--r-- | share/emacs/site-lisp/w3m/w3m-dtree.el | 239 |
1 files changed, 0 insertions, 239 deletions
diff --git a/share/emacs/site-lisp/w3m/w3m-dtree.el b/share/emacs/site-lisp/w3m/w3m-dtree.el deleted file mode 100644 index 5bfe5355e68..00000000000 --- a/share/emacs/site-lisp/w3m/w3m-dtree.el +++ /dev/null @@ -1,239 +0,0 @@ -;;; w3m-dtree.el --- The add-on program to display local directory tree. - -;; Copyright (C) 2001, 2002, 2003, 2005, 2006, 2007, 2009 -;; TSUCHIYA Masatoshi <tsuchiya@namazu.org> - -;; Author: Hideyuki SHIRAI <shirai@meadowy.org>, -;; TSUCHIYA Masatoshi <tsuchiya@namazu.org> -;; Keywords: w3m, WWW, hypermedia, directory, tree - -;; This program is free software; you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation; either version 2, or (at your option) -;; any later version. - -;; This program is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. - -;; You should have received a copy of the GNU General Public License -;; along with this program; see the file COPYING. If not, write to -;; the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, -;; Boston, MA 02110-1301, USA. - - -;;; Commentary: - -;; w3m-dtree.el is the add-on program of emacs-w3m to display local -;; directory tree. For more detail about emacs-w3m, see: -;; -;; http://emacs-w3m.namazu.org/ - - -;;; Code: -(require 'w3m) - -(defcustom w3m-dtree-default-allfiles nil - "*If non-nil, set 'allfiles' to default." - :group 'w3m - :type 'boolean) - -(defcustom w3m-dtree-directory-depth 8 - "*Interger of a depth of the viewing directory." - :group 'w3m - :type '(choice - (const :tag "No limit" nil) - (integer :format "%t: %v\n" :size 0 :tag "depth" 10))) - -(defcustom w3m-dtree-indent-strings ["|-" "+-" "| " " "] - "*Vector of strings to be used for indentation with w3m-dtree. - -If use default value or choice 'ASCII', display like this, -/home/shirai/work/emacs-w3m/ - |-CVS/ - |-icons/ - | +-CVS/ - +-shimbun/ - +-CVS/ - -If you care for another style, set manually and try it :-). -" - :group 'w3m - :type '(radio - (const :format "ASCII: " ["|-" "+-" "| " " "]) - (vector - :convert-widget w3m-widget-type-convert-widget - (let ((defaults (if (equal w3m-language "Japanese") - (vconcat - (mapcar - (lambda (s) - (decode-coding-string s 'iso-2022-7bit)) - '("\e$B('\e(B" "\e$B(&\e(B" - "\e$B(\"\e(B" "\e$B!!\e(B"))) - ["|-" "+-" "| " " "]))) - `(:format "Others:\n%v" :indent 4 - (string :format "%{|-%} %v\n" - :sample-face widget-field-face :size 0 - :value ,(aref defaults 0)) - (string :format "%{+-%} %v\n" - :sample-face widget-field-face :size 0 - :value ,(aref defaults 1)) - (string :format "%{| %} %v\n" - :sample-face widget-field-face :size 0 - :value ,(aref defaults 2)) - (string :format "%{ %} %v" - :sample-face widget-field-face :size 0 - :value ,(aref defaults 3))))))) - -(defcustom w3m-dtree-stop-strings ["|=" "+="] - "*Vector of strings to be used for indentation when a depth of directory -over the 'w3m-dtree-directory-depth'." - :group 'w3m - :type '(radio - (const :format "ASCII: " ["|=" "+="]) - (const :format "ASCII Bold: " ["<b>|-</b>" "<b>+-</b>"]) - (vector - :convert-widget w3m-widget-type-convert-widget - (let ((defaults (if (equal w3m-language "Japanese") - (vconcat - (mapcar - (lambda (s) - (decode-coding-string s 'iso-2022-7bit)) - '("\e$B(<\e(B" "\e$B(1\e(B"))) - ["|=" "+="]))) - `(:format "Others:\n%v" :indent 4 - (string :format "|= %{|=%} %v\n" - :sample-face bold :size 0 - :value ,(aref defaults 0)) - (string :format "+= %{+=%} %v\n" - :sample-face bold :size 0 - :value ,(aref defaults 1))))))) - -(defun w3m-dtree-expand-file-name (path) - (if (string-match "^\\(.\\):\\(.*\\)" path) - (if w3m-use-cygdrive - (concat "/cygdrive/" - (match-string 1 path) (match-string 2 path)) - (concat "/" (match-string 1 path) "|" (match-string 2 path))) - path)) - -(defun w3m-dtree-directory-name (path) - (when (and w3m-treat-drive-letter - (string-match - "^/\\(?:\\([A-Za-z]\\)[|:]?\\|cygdrive/\\([A-Za-z]\\)\\)/" - path)) - (setq path (concat - (or (match-string 1 path) - (match-string 2 path)) - ":/" - (substring path (match-end 0))))) - path) - -(defmacro w3m-dtree-has-child (path) - `(let ((w32-get-true-file-link-count t)) ;; true link count for Meadow - (and (nth 1 (file-attributes ,path)) - (/= (nth 1 (file-attributes ,path)) 2)))) - -(defun w3m-dtree-create-sub (path allfiles dirprefix fileprefix indent depth) - (let* ((files (directory-files path t)) - (limit (and (integerp w3m-dtree-directory-depth) - (>= depth w3m-dtree-directory-depth))) - (indent-sub1 (if limit - (aref w3m-dtree-stop-strings 0) - (aref w3m-dtree-indent-strings 0))) - (indent-sub2 (aref w3m-dtree-indent-strings 2)) - file fullpath tmp) - (setq files (delete (concat (file-name-as-directory path) ".") - (delete (concat (file-name-as-directory path) "..") - files))) - (unless allfiles - (setq tmp files) - (while (setq file (car tmp)) - (unless (file-directory-p file) - (setq files (delete file files))) - (setq tmp (cdr tmp)))) - (while (setq fullpath (car files)) - (when (= (length files) 1) - (if limit - (setq indent-sub1 (aref w3m-dtree-stop-strings 1)) - (setq indent-sub1 (aref w3m-dtree-indent-strings 1))) - (setq indent-sub2 (aref w3m-dtree-indent-strings 3))) - (setq file (file-name-nondirectory fullpath)) - (cond - ((or (not allfiles) (file-directory-p fullpath)) - (insert (format "%s%s%s<A HREF=\"%s%s\">%s</A>\n" - indent indent-sub1 - (if allfiles "<B>[d]</B>" "") - dirprefix - (w3m-dtree-expand-file-name (file-name-as-directory fullpath)) - (concat file "/"))) - (when (and (null limit) - (or allfiles (w3m-dtree-has-child fullpath))) - (w3m-dtree-create-sub fullpath allfiles dirprefix fileprefix - (concat indent indent-sub2) (1+ depth)))) - ((and allfiles (file-exists-p fullpath)) - (insert (format "%s%s%s<A HREF=\"%s%s\">%s</A>\n" - indent indent-sub1 - (if allfiles "(f)" "") - fileprefix (w3m-dtree-expand-file-name fullpath) - file)))) - (setq files (cdr files))))) - -(defun w3m-dtree-create (path allfiles dirprefix fileprefix) - (let ((charset (or (car (rassq w3m-file-name-coding-system - w3m-charset-coding-system-alist)) - w3m-file-name-coding-system))) - (insert "<!doctype html public \"-//W3C//DTD HTML 3.2//EN\">\n" - "<html>\n<head>\n" - "<meta http-equiv=\"CONTENT-TYPE\" " - "content=\"text/html; charset=" - (symbol-name charset) - "\">\n" - "<title>" - path - "</title>\n</head>\n<body>\n<pre>\n") - (insert (format "<A HREF=\"%s%s\">%s</A>%s\n" - dirprefix (w3m-dtree-expand-file-name path) path - (if allfiles " (allfiles)" ""))) - (if (file-directory-p path) - (w3m-dtree-create-sub path allfiles dirprefix fileprefix " " 0) - (insert (format "\n<h3>Warning: Directory not found.</h3>\n"))) - (insert "</pre>\n</body>\n</html>\n"))) - -;;;###autoload -(defun w3m-about-dtree (url &optional nodecode allfiles &rest args) - (let ((prelen (length "about://dtree")) - (dirprefix "about://dtree") - (fileprefix "file://") - path) - (if (string-match "\\?allfiles=\\(?:\\(true\\)\\|false\\)$" url) - (progn - (setq path (substring url prelen (match-beginning 0))) - (if (match-beginning 1) (setq allfiles t))) - (if w3m-dtree-default-allfiles - (setq allfiles (not allfiles))) - (setq path (substring url prelen))) - ;; counter drive letter - (setq path (file-name-as-directory (w3m-dtree-directory-name path))) - (setq default-directory path) - (w3m-message "Dtree (%s)..." path) - (w3m-dtree-create path allfiles dirprefix fileprefix) - (w3m-message "Dtree...done") - "text/html")) - -;;;###autoload -(defun w3m-dtree (allfiles path) - "Display directory tree on local file system. -If called with 'prefix argument', display all directorys and files." - (interactive "P\nDDtree directory: ") - (if w3m-dtree-default-allfiles - (setq allfiles (not allfiles))) - (w3m-goto-url (format "about://dtree%s%s" - (w3m-dtree-expand-file-name - (file-name-as-directory - (expand-file-name path))) - (if allfiles "?allfiles=true" "")))) - -(provide 'w3m-dtree) -;;; w3m-dtree.el ends here |