■掲示板に戻る■ 全部 1- 101- 201- 301- 401- 501- 601- 701- 801- 901- 最新50

レス数が950を超えています。1000を超えると表示できなくなるよ。

2ch専用ブラウザ「Navi2ch」

895 :名無しさん@お腹いっぱい。 :01/12/13 23:20
N.I.C.H. Monaic という2ちゃんねるブラウザの
スクリーンショットに刺激を受けたんで真似してみた。
Emacs 21以外だとダメかも。
http://monaic.sourceforge.net/thread.png

;;;
;;; レス一覧の先頭にその板のロゴを貼りつける。
;;;
(defun navi2ch-board-display-logo ()
(interactive)
(overlay-put inline-logo 'before-string nil)
(when (eq major-mode 'navi2ch-board-mode)
(let* ((file (navi2ch-bm-get-logo))
(image (navi2ch-board-create-logo-image file
:margin '(0 . 10)))
(string " "))
(when image
(setq string (concat (propertize string 'display image) "\n"))
(let ((buffer-read-only nil))
(overlay-put inline-logo 'before-string string))))))

(defun navi2ch-board-init-logo ()
(if (boundp 'inline-logo)
(delete-overlay inline-logo))
(make-variable-frame-local 'inline-logo)
(setq inline-logo (make-overlay (point-min) (point-min))))

(defun navi2ch-board-create-logo-image (file &rest props)
(and file
(condition-case nil
(or (apply 'create-image (append (list file nil) props))
;; その画像フォーマットに Emacs が対応してないとき
(catch 'found
(let ((newfile))
(dolist (format '(png xpm xbm))
(setq newfile (concat (file-name-sans-extension file)
"." (symbol-name format)))
(when (file-newer-than-file-p file newfile)
(call-process "convert" nil nil nil file newfile)
(throw 'found
(create-image newfile format props)))))))
(error . nil))))

896 :名無しさん@お腹いっぱい。 :01/12/13 23:20
(add-hook 'navi2ch-board-select-board-hook
'navi2ch-board-init-logo)

(add-hook 'navi2ch-board-after-sync-hook
'navi2ch-board-display-logo)

(defun navi2ch-bm-get-logo ()
"そのロゴを替新する。返り値はキャッシュのフルパス。
ロゴを取得できなくて、キャッシュにもないときは、nil を返す。"
(interactive)
(let ((board (funcall navi2ch-bm-get-board-function
(funcall navi2ch-bm-get-property-function (point))))
(board-mode-p (eq major-mode 'navi2ch-board-mode))
file old-file)
(unless board-mode-p
(setq board (navi2ch-board-load-info board)))
(setq old-file (cdr (assq 'logo board)))
(if navi2ch-offline
(setq file old-file)
(setq file (file-name-nondirectory (navi2ch-net-download-logo board)))
(when file
(when (and old-file navi2ch-board-delete-old-logo
(not (string-equal file old-file)))
(delete-file (navi2ch-board-get-file-name board old-file)))
(if board-mode-p
(setq navi2ch-board-current-board board)
(navi2ch-board-save-info board))))
(if file
(navi2ch-board-get-file-name board file))))

(defun navi2ch-bm-view-logo ()
"その板のロゴを見る"
(interactive)
(let ((file (navi2ch-bm-get-logo)))
(if file
(apply 'start-process "navi2ch view logo"
nil navi2ch-board-view-logo-program
(append navi2ch-board-view-logo-args
(list file)))
(message "Can't find logo file"))))

897 :名無しさん@お腹いっぱい。 :01/12/13 23:29
あ、動かないや。しまった。変な行が残ってる。
さっきのやつ、一番始めの関数を

;;;
(defun navi2ch-board-display-logo ()
(interactive)
(overlay-put inline-logo 'before-string nil)
(when (eq major-mode 'navi2ch-board-mode)
(let* ((file (navi2ch-bm-get-logo))
(image (navi2ch-board-create-logo-image file
- :margin '(0 . 10)))
(string " "))
(when image

してちょ。


続きを読む

掲示板に戻る 全部 前100 次100 最新50
名前: E-mail (省略可) :

read.cgi ver5.26+ (01/10/21-)