-;;; fuel-popup.el -- popup windows
+;;; fuel-popup.el -- popup windows -*- lexical-binding: t -*-
;; Copyright (C) 2008 Jose Antonio Ortega Ruiz
;; See http://factorcode.org/license.txt for BSD license.
;;; Code:
-(make-variable-buffer-local
- (defvar fuel-popup--created-window nil))
+(defvar-local fuel-popup--created-window nil)
-(make-variable-buffer-local
- (defvar fuel-popup--selected-window nil))
+(defvar-local fuel-popup--selected-window nil)
-(defun fuel-popup--display ()
+(defun fuel-popup--display (&optional buffer display-only)
+ (when buffer (set-buffer buffer))
(let ((selected-window (selected-window))
(buffer (current-buffer)))
(unless (eq selected-window (get-buffer-window buffer))
(let ((windows))
(walk-windows (lambda (w) (push w windows)) nil t)
- (prog1 (pop-to-buffer buffer)
- (set (make-local-variable 'fuel-popup--created-window)
+ (prog1 (if display-only
+ (display-buffer buffer)
+ (pop-to-buffer buffer))
+ (setq-local fuel-popup--created-window
(unless (memq (selected-window) windows) (selected-window)))
- (set (make-local-variable 'fuel-popup--selected-window)
- selected-window))))))
+ (setq-local fuel-popup--selected-window selected-window))))))
(defun fuel-popup--quit ()
(interactive)
(when (eq created (selected-window)) (delete-window created))
(when (window-live-p selected) (select-window selected))))
+;;;###autoload
(define-minor-mode fuel-popup-mode
"Mode for displaying read only stuff"
nil nil
- '(("q" . fuel-popup--quit)))
+ '(("q" . fuel-popup--quit))
+ (setq buffer-read-only t))
-(defmacro fuel-popup--define (fun name mode)
- `(defun ,fun ()
- (or (get-buffer ,name)
- (with-current-buffer (get-buffer-create ,name)
- (funcall ,mode)
- (fuel-popup-mode)
- (current-buffer)))))
-
-(put 'fuel-popup--define 'lisp-indent-function 1)
\f
(provide 'fuel-popup)
+
;;; fuel-popup.el ends here