www-mode

Last modified: "2003/08/17 08:41:20"

Intro

www-modeは, HATTORI Masashi さんがつくられた, キャラクタベースの WEB ブラウザです。


Table of contents


いろいろ

バッファの状態を調整する

行番号、改行、EOF マークを非表示にし、行カーソルを表示する。 xyzzy Part7 431 を参考に、set-local-window-flags を繰り返し記述しなくて良いことを知った。 (ん〜、tterm.l にもこうかいてあるのか)。 テキストを折り返さないようにしているのは、そうしないと見にくいページがあったので。

(add-hook '*www-view-mode-hook*
          #'(lambda ()
              ;テキストを折り返さない
              (set-buffer-fold-type-none)
              (let ((buf (selected-buffer)))
                ;無効にするもの
                (set-local-window-flags buf
                                        (+ *window-flag-line-number*
                                           *window-flag-newline*
                                           *window-flag-eof*)
                                        nil)
                ;有効にするもの
                (set-local-window-flags buf
                                        (+ *window-flag-cursor-line*)
                                        t))))

www-mode 関係のバッファをバッファリストに出さないように

バッファバーやバッファリストに www-mode 関係のバッファを出さないようにする。 これで良いのかわからないが、一応動いているみたい。

(setq *www-buffer-name-prefix* " *WWW ")
(setq *www-buffer-src-prefix*
  (concat *www-buffer-name-prefix* "SRC: "))
(setq *www-buffer-source-prefix*
  (concat *www-buffer-name-prefix* "SOURCE: "))
(setq *www-buffer-view-prefix*
  (concat *www-buffer-name-prefix* "VIEW: "))
(setq *www-buffer-temp*
  (concat *www-buffer-name-prefix* "TEMP*"))
(setq *www-buffer-work*
  (concat *www-buffer-name-prefix* "WORK*"))
(setq *www-buffer-wget*
  (concat *www-buffer-name-prefix* "WGET:"))
(setq *www-buffer-form-textarea*
  (concat *www-buffer-name-prefix* "TEXTAREA*"))

wget 実行バッファから、M-Left で前のページの戻る

「www-mode 関係のバッファをバッファリストに出さないように」をしていると、 wget 実行バッファから前のページの戻るのが面倒なので、 無理矢理してみた。

初期化ファイルに追加するもの

(defvar *my-previous-buffer* nil)
(defun my-previous-buffer (&optional save)
  (interactive)
  (when (and *my-previous-buffer*
             (find-buffer *my-previous-buffer*))
    (switch-to-buffer *my-previous-buffer*)
    (unless save
      (setq *my-previous-buffer* nil))))
(define-key ed::*command-output-mode-map* #\M-Left 'my-previous-buffer)

.www に追加するもの

(defun my-www-wget-download ()
  (interactive)
  (setq user::*my-previous-buffer* (buffer-name (selected-buffer)))
  (www-wget-download))
(define-key *www-view-mode-map* #\w 'my-www-wget-download)

カーソル位置の URL を取得して www-mode で開く

文書中の URL 上にカーソルを置いた状態で実行すると、その URL を www-mode で開く。 browserex.l 中の右ボタンメニューにあるコードを使わせてもらいました。

(defun www-open-current-url ()
  (interactive)
  (let (url)
    (save-excursion
      (skip-chars-backward "-a-zA-Z0-9_/~.#@%?&=;+(),'$!*:")
      (when (looking-at ed::*url-scheme-regexp*)
        (setq url
              (buffer-substring (point)
                                (progn
                                  (goto-char (match-end 0))
                                  (skip-chars-forward "-a-zA-Z0-9_/~.#@%?&=;+(),'$!*:")
                                  (point))))))
    (if url (www-open-url url))))


(^_^)