summaryrefslogtreecommitdiff
path: root/share/emacs/site-lisp/w3m/w3m-fb.el
diff options
context:
space:
mode:
Diffstat (limited to 'share/emacs/site-lisp/w3m/w3m-fb.el')
-rw-r--r--share/emacs/site-lisp/w3m/w3m-fb.el208
1 files changed, 0 insertions, 208 deletions
diff --git a/share/emacs/site-lisp/w3m/w3m-fb.el b/share/emacs/site-lisp/w3m/w3m-fb.el
deleted file mode 100644
index 810bb212914..00000000000
--- a/share/emacs/site-lisp/w3m/w3m-fb.el
+++ /dev/null
@@ -1,208 +0,0 @@
-;;; w3m-fb.el --- frame-local buffers support for Emacs-w3m
-
-;;; Copyright (C) 2005, 2006 Matthew P. Hodges
-
-;; Author: Matthew P. Hodges <MPHodges@member.fsf.org>
-;; Version: $Id: w3m-fb.el,v 1.4 2006/09/20 09:26:42 yamaoka Exp $
-
-;; w3m-fb.el 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.
-
-;; w3m-fb.el 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.
-
-;;; Commentary:
-;;
-;; With this mode switched on, W3M buffers are associated with the
-;; frame on which they were created. Only tabs for the current
-;; frame's W3M buffers are shown (with non-nil w3m-use-tab); other
-;; affected commands are w3m-next-buffer w3m-previous-buffer,
-;; w3m-select-buffer and w3m-quit.
-;;
-;; Switch the mode on programmatically with:
-;;
-;; (w3m-fb-mode 1)
-;;
-;; or toggle interactively with M-x w3m-fb-mode RET.
-
-;;; Code:
-
-(defconst w3m-fb-version "1.0.0"
- "Version number of this package.")
-
-(eval-when-compile
- (autoload 'w3m-delete-buffer "w3m" nil t)
- (autoload 'w3m-list-buffers "w3m-util")
- (autoload 'w3m-next-buffer "w3m" nil t)
- (defvar w3m-pop-up-frames))
-
-(eval-and-compile
- (defalias 'w3m-fb-frame-parameter
- (cond
- ((fboundp 'frame-parameter)
- 'frame-parameter)
- ((fboundp 'frame-property)
- 'frame-property)
- (t
- (error "No frame parameter/property function")))))
-
-(defvar w3m-fb-delete-frame-functions
- (cond
- ((boundp 'delete-frame-functions)
- 'delete-frame-functions)
- ((boundp 'delete-frame-hook)
- 'delete-frame-hook)
- (t
- (error "No delete-frame hook/functions variable found")))
- "Symbol associated with `delete-frame' hooks.")
-
-(defvar w3m-fb-list-buffers-frame nil
- "Frame to list buffers for in `w3m-list-buffers'.
-Bind this if the buffers associated with a frame other than the
-selected frame are required.")
-
-;; Customizable variables
-
-(defgroup w3m-fb nil
- "Frame local buffers for Emacs-w3m."
- :group 'w3m)
-
-(defcustom w3m-fb-delete-frame-kill-buffers t
- "If non-nil, kill W3M buffers after deleting frames."
- :group 'w3m-fb
- :type 'boolean
- :set (lambda (sym val)
- (set sym val)
- (when (boundp 'w3m-fb-mode)
- (if w3m-fb-mode
- (add-hook w3m-fb-delete-frame-functions
- 'w3m-fb-delete-frame-buffers)
- (remove-hook w3m-fb-delete-frame-functions
- 'w3m-fb-delete-frame-buffers)))))
-
-;; Internal variables
-
-(defvar w3m-fb-buffer-list nil
- "List of w3m buffers associated with the selected frame.")
-
-(defvar w3m-fb-inhibit-buffer-selection nil
- "Non-nil to inhibit selecting a suitable w3m buffer.")
-
-;; Internal functions
-
-(defun w3m-fb-delete-frame-buffers (&optional frame)
- "Delete W3M buffers associated with frame FRAME."
- (let* ((w3m-fb-list-buffers-frame frame)
- (buffers (w3m-list-buffers))
- ;; Now bind w3m-fb-mode to nil so that w3m-delete-buffer
- ;; doesn't call w3m-quit when there are w3m buffers belonging
- ;; to other frames.
- (w3m-fb-mode nil)
- (w3m-fb-inhibit-buffer-selection t))
- (save-window-excursion
- (dolist (b buffers)
- (with-current-buffer b
- (w3m-delete-buffer))))))
-
-;; Could use set-frame-parameter here, but it isn't portable
-(defun w3m-fb-set-frame-parameter (frame parameter value)
- "Set for frame FRAME parameter PARAMETER to VALUE."
- (modify-frame-parameters frame (list (cons parameter value))))
-
-(defun w3m-fb-add ()
- "Add current buffer to `w3m-fb-buffer-list'."
- (let ((val (w3m-fb-frame-parameter nil 'w3m-fb-buffer-list)))
- (w3m-fb-set-frame-parameter
- nil 'w3m-fb-buffer-list (nconc val (list (current-buffer))))))
-
-(defun w3m-fb-remove ()
- "Remove current buffer from `w3m-fb-buffer-list'.
-Applies to all frames."
- (when (eq major-mode 'w3m-mode)
- (let (val)
- (dolist (f (frame-list))
- (setq val (w3m-fb-frame-parameter f 'w3m-fb-buffer-list))
- (w3m-fb-set-frame-parameter
- f 'w3m-fb-buffer-list (delq (current-buffer) val))))))
-
-(defun w3m-fb-associate ()
- "Associate all `w3m-mode' buffers with a frame."
- (let (buffers done rest)
- ;; Buffers displayed in windows
- (dolist (f (frame-list))
- (setq buffers nil)
- (dolist (w (window-list f nil (frame-selected-window f)))
- (when (with-current-buffer (window-buffer w)
- (eq major-mode 'w3m-mode))
- (setq buffers (nconc buffers (list (window-buffer w))))
- (setq done (nconc done (list (window-buffer w))))))
- (w3m-fb-set-frame-parameter
- f 'w3m-fb-buffer-list buffers))
- ;; Buffers not displayed in windows; add to selected frame
- (let ((w3m-fb-mode nil))
- (setq rest (w3m-list-buffers)))
- (dolist (b done)
- (setq rest (delq b rest)))
- (when rest
- (w3m-fb-set-frame-parameter
- nil 'w3m-fb-buffer-list
- (nconc (w3m-fb-frame-parameter nil 'w3m-fb-buffer-list) rest)))))
-
-(defun w3m-fb-dissociate ()
- "Disassociate `w3m-mode' buffers from frames."
- (dolist (f (frame-list))
- (w3m-fb-set-frame-parameter f 'w3m-fb-buffer-list nil)))
-
-(defun w3m-fb-select-buffer ()
- "Select an appropriate W3M buffer to display."
- ;; If there are w3m buffers belonging to this frame, ensure one is
- ;; selected; if not make sure that we're not displaying a w3m
- ;; buffer
- (cond
- ;; Select w3m buffer belonging to frame, if one is available
- ((w3m-list-buffers)
- (unless (memq (current-buffer) (w3m-list-buffers))
- (w3m-next-buffer -1)))
- (t
- ;; If no w3m buffers belong to frame, don't display any w3m buffer
- (while (eq major-mode 'w3m-mode)
-;; (assert (eq (current-buffer)
-;; (window-buffer (selected-window))))
- (bury-buffer)))))
-
-;; Minor mode setup
-
-;;;###autoload
-(define-minor-mode w3m-fb-mode
- "Toggle W3M Frame Buffer mode.
-This allows frame-local lists of buffers (tabs)."
- :init-value nil
- :group 'w3m-fb
- :global t
- (if (and w3m-fb-mode
- (if w3m-pop-up-frames
- (prog1
- (setq w3m-fb-mode nil)
- (message "\
-W3M Frame Buffer mode not activated (non-nil w3m-pop-up-frames)")
- (sit-for 2))
- t))
- (progn
- (add-hook 'w3m-mode-hook 'w3m-fb-add)
- (add-hook 'kill-buffer-hook 'w3m-fb-remove)
- (when w3m-fb-delete-frame-kill-buffers
- (add-hook w3m-fb-delete-frame-functions
- 'w3m-fb-delete-frame-buffers))
- (w3m-fb-associate))
- (remove-hook 'w3m-mode-hook 'w3m-fb-add)
- (remove-hook 'kill-buffer-hook 'w3m-fb-remove)
- (remove-hook w3m-fb-delete-frame-functions 'w3m-fb-delete-frame-buffers)
- (w3m-fb-dissociate)))
-
-(provide 'w3m-fb)
-
-;;; w3m-fb.el ends here