]> gitweb.factorcode.org Git - factor.git/blobdiff - misc/fuel/fuel-popup.el
Use lexical scoping in all fuel sources
[factor.git] / misc / fuel / fuel-popup.el
index f18e77b321c67c012885365b387f3adfff0b091c..cefefa85eefcf300836b620a9c6b431b4fa4fc77 100644 (file)
@@ -1,4 +1,4 @@
-;;; 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 (&optional buffer)
+(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