diff lisp/w3/w3-emulate.el @ 0:376386a54a3c r19-14

Import from CVS: tag r19-14
author cvs
date Mon, 13 Aug 2007 08:45:50 +0200
parents
children ac2d302a0011
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/lisp/w3/w3-emulate.el	Mon Aug 13 08:45:50 2007 +0200
@@ -0,0 +1,217 @@
+;;; w3-emulate.el,v --- All variable definitions for emacs-w3
+;; Author: wmperry
+;; Created: 1996/05/24 15:25:13
+;; Version: 1.10
+;; Keywords: comm, help, hypermedia
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Copyright (c) 1996 by William M. Perry (wmperry@spry.com)
+;;;
+;;; This file is not part of GNU Emacs, but the same permissions apply.
+;;;
+;;; GNU Emacs 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.
+;;;
+;;; GNU Emacs 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 GNU Emacs; see the file COPYING.  If not, write to
+;;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; Provide emulations of various other web browsers
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+(require 'w3-vars)
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; First, we emulate Netscape 2.x
+;; ------------------------------
+;; This entails mainly a few new keybindings.
+;; Alt-S    == Save As
+;; Alt-M    == New Mail Message
+;; Alt-N    == New Window
+;; Alt-L    == Open Location
+;; Alt-O    == Open File
+;; Alt-P    == Print
+;; Alt-Q    == Quit
+;; Alt-F    == Search
+;; Alt-G    == Search Again
+;; Alt-R    == Reload
+;; Alt-I    == Load Images
+;; Alt-A    == Add Bookmark
+;; Alt-B    == Show Bookmark Window
+;; Alt-H    == Show History Window
+;; Alt-Left == Back
+;; Alt-Right== Forward
+;; Right    == Scroll left
+;; Left     == Scroll right
+;; Up       == Smooth scroll up
+;; Down     == Smooth scroll down
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(define-key w3-netscape-emulation-minor-mode-map "\M-s" 'w3-save-as)
+(define-key w3-netscape-emulation-minor-mode-map "\M-m" 'w3-mailto)
+(define-key w3-netscape-emulation-minor-mode-map "\M-n" 'make-frame)
+(define-key w3-netscape-emulation-minor-mode-map "\M-l" 'w3-fetch)
+(define-key w3-netscape-emulation-minor-mode-map "\M-o" 'w3-open-local)
+(define-key w3-netscape-emulation-minor-mode-map "\M-p" 'w3-print-this-url)
+(define-key w3-netscape-emulation-minor-mode-map "\M-q" 'w3-quit)
+(define-key w3-netscape-emulation-minor-mode-map "\M-f" 'w3-search-forward)
+(define-key w3-netscape-emulation-minor-mode-map "\M-g" 'w3-search-again)
+(define-key w3-netscape-emulation-minor-mode-map "\M-r" 'w3-reload-document)
+(define-key w3-netscape-emulation-minor-mode-map "\M-i" 'w3-load-delayed-images)
+(define-key w3-netscape-emulation-minor-mode-map "\M-a" 'w3-hotlist-add-document)
+(define-key w3-netscape-emulation-minor-mode-map "\M-b" 'w3-show-hotlist)
+(define-key w3-netscape-emulation-minor-mode-map "\M-h" 'w3-show-history-list)
+
+(define-key w3-netscape-emulation-minor-mode-map [up]
+  (function (lambda () (interactive) (scroll-down 1))))
+(define-key w3-netscape-emulation-minor-mode-map [down]
+  (function (lambda () (interactive) (scroll-up 1))))
+(define-key w3-netscape-emulation-minor-mode-map [right] 'scroll-left)
+(define-key w3-netscape-emulation-minor-mode-map [left] 'scroll-right)
+(define-key w3-netscape-emulation-minor-mode-map [(meta left)]
+  'w3-backward-in-history)
+(define-key w3-netscape-emulation-minor-mode-map [(meta right)]
+  'w3-forward-in-history)
+
+(defun turn-on-netscape-emulation ()
+  (interactive)
+  (w3-lynx-emulation-minor-mode 0)
+  (w3-netscape-emulation-minor-mode 1))
+
+(defun w3-netscape-emulation-minor-mode (&optional arg)
+  "Minor mode for emulating netscape key navigation."
+  (interactive "P")
+  (cond
+   ((null arg)
+    (setq w3-netscape-emulation-minor-mode
+	  (not w3-netscape-emulation-minor-mode))
+    (if w3-netscape-emulation-minor-mode
+	(setq w3-lynx-emulation-minor-mode nil)))
+   ((= 0 arg)
+    (setq w3-netscape-emulation-minor-mode nil))
+   (t
+    (setq w3-lynx-emulation-minor-mode nil
+	  w3-netscape-emulation-minor-mode t)))
+  )
+
+(defsubst w3-skip-word ()
+  (skip-chars-forward "^ \t\n\r")
+  (skip-chars-forward " \t"))
+
+(defun w3-read-netscape-config (&optional fname)
+  "Read in a netscape-style configuration file."
+  (interactive "fNetscape configuration file: ")
+  (if (not (and (file-exists-p fname)
+		(file-readable-p fname)))
+      (error "Could not read %s" fname))
+  (let ((results nil)
+	(tag nil)
+	(val nil)
+	(var nil)
+	(save-pos nil))
+    (save-excursion
+      (set-buffer (get-buffer-create " *w3-tmp*"))
+      (erase-buffer)
+      (insert-file-contents-literally fname)
+      (goto-char (point-min))
+      (skip-chars-forward "^ \t\r\n")	; Skip tag line
+      (skip-chars-forward " \t\r\n")	; Skip blank line(s)
+      (while (not (eobp))
+	(setq save-pos (point))
+	(skip-chars-forward "^:")
+	(upcase-region save-pos (point))
+	(setq tag (buffer-substring save-pos (point)))
+	(skip-chars-forward ":\t ")
+	(setq save-pos (point))
+	(skip-chars-forward "^\r\n")
+	(setq val (if (= save-pos (point))
+		      nil
+		    (buffer-substring save-pos (point))))
+	(cond
+	 ((null val) nil)
+	 ((string-match "^[0-9]+$" val)
+	  (setq val (string-to-int val)))
+	 ((string= "false" (downcase val))
+	  (setq val nil))
+	 ((string= "true" (downcase val))
+	  (setq val t))
+	 (t nil))
+	(skip-chars-forward " \t\n\r")
+	(setq results (cons (cons tag val) results))))
+    (while results
+      (setq tag (car (car results))
+	    val (cdr (car results))
+	    var (cdr-safe (assoc tag w3-netscape-variable-mappings))
+	    results (cdr results))
+      (cond
+       ((eq var 'w3-delay-image-loads) (set var (not val)))
+       (var (set var val))
+       (t nil)))))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; Now, lets try Lynx
+;; ------------------
+;; A few keybindings and modifications to some default functions
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+(defun turn-on-lynx-emulation ()
+  (interactive)
+  (w3-netscape-emulation-minor-mode 0)
+  (w3-lynx-emulation-minor-mode 1))
+
+(defun w3-lynx-emulation-minor-mode (&optional arg)
+  "Minor mode for emulating lynx key navigation."
+  (interactive "P")
+  (cond
+   ((null arg)
+    (setq w3-lynx-emulation-minor-mode
+	  (not w3-lynx-emulation-minor-mode))
+    (if w3-lynx-emulation-minor-mode
+	(setq w3-netscape-emulation-minor-mode nil)))
+   ((= 0 arg)
+    (setq w3-lynx-emulation-minor-mode nil))
+   (t
+    (setq w3-lynx-emulation-minor-mode t
+	  w3-netscape-emulation-minor-mode nil))))
+
+(define-key w3-lynx-emulation-minor-mode-map "+"    'w3-scroll-up)
+(define-key w3-lynx-emulation-minor-mode-map "-"    'scroll-down)
+(define-key w3-lynx-emulation-minor-mode-map "b"    'scroll-down)
+(define-key w3-lynx-emulation-minor-mode-map "a"    'w3-hotlist-add-document)
+(define-key w3-lynx-emulation-minor-mode-map "c"    'w3-mail-document-author)
+(define-key w3-lynx-emulation-minor-mode-map "e"    'w3-edit-source)
+(define-key w3-lynx-emulation-minor-mode-map "g"    'w3-fetch)
+(define-key w3-lynx-emulation-minor-mode-map "i"    'ignore)
+(define-key w3-lynx-emulation-minor-mode-map "m"    'w3)
+(define-key w3-lynx-emulation-minor-mode-map "o"    'ignore)
+(define-key w3-lynx-emulation-minor-mode-map "p"    'w3-print-this-url)
+(define-key w3-lynx-emulation-minor-mode-map "q"    'w3-quit)
+(define-key w3-lynx-emulation-minor-mode-map "/"    'w3-search-forward)
+(define-key w3-lynx-emulation-minor-mode-map "s"    'w3-search-forward)
+(define-key w3-lynx-emulation-minor-mode-map "n"    'w3-search-again)
+(define-key w3-lynx-emulation-minor-mode-map "v"    'w3-show-hotlist)
+(define-key w3-lynx-emulation-minor-mode-map "="    'w3-document-information)
+(define-key w3-lynx-emulation-minor-mode-map "\C-r" 'w3-reload-document)
+(define-key w3-lynx-emulation-minor-mode-map "\C-w" 'w3-refresh-buffer)
+(define-key w3-lynx-emulation-minor-mode-map "\\"   'w3-source-document)
+(define-key w3-lynx-emulation-minor-mode-map "!"    'shell)
+(define-key w3-lynx-emulation-minor-mode-map [up]   'w3-back-link)
+(define-key w3-lynx-emulation-minor-mode-map [down] 'w3-forward-link)
+(define-key w3-lynx-emulation-minor-mode-map [right] 'w3-follow-link)
+(define-key w3-lynx-emulation-minor-mode-map [left] 'w3-backward-in-history)
+
+(provide 'w3-emulate)
+
+;;; Local Variables:
+;;; truncate-lines: t
+;;; End: