めも帖

「めも帖」代わりにダラダラと書いていったり、めもしたりしているだけです。

Meadow 3 でelscreen。Drag&Dropと、自動的に開く

正直、コピペ。意味がもうすでに不明。でも、動作しております。

;;; elscreen + 自動的にスクリーンを作る
(defmacro elscreen-create-automatically (ad-do-it)
  (` (if (not (elscreen-one-screen-p))
	 (, ad-do-it)
       (elscreen-create)
       (elscreen-notify-screen-modification 'force-immediately)
       (elscreen-message "New screen is automatically created"))))
(defadvice elscreen-next (around elscreen-create-automatically activate)
  (elscreen-create-automatically ad-do-it))
(defadvice elscreen-previous (around elscreen-create-automatically activate)
  (elscreen-create-automatically ad-do-it))
(defadvice elscreen-toggle (around elscreen-create-automatically activate)
  (elscreen-create-automatically ad-do-it))

;;; elscreen-dnd.elを入れておく
(defvar elscreen-dnd-buffers nil)
  
  (defadvice x-dnd-handle-drag-n-drop-event (around elscreen-dnd-buffers activate)
    (setq elscreen-dnd-buffers nil)
    (save-window-excursion ad-do-it)
    (when elscreen-dnd-buffers
      (elscreen-goto (car (mapcar
                           (lambda (buffer)
                             (elscreen-find-screen-by-buffer buffer 'create))
                           elscreen-dnd-buffers)))
      (setq elscreen-dnd-buffers nil)
      (elscreen-notify-screen-modification 'force-immediately)))
  
  (defadvice w32-drag-n-drop (around elscreen-dnd-buffers activate)
    (setq elscreen-dnd-buffers nil)
    (save-window-excursion ad-do-it)
    (when elscreen-dnd-buffers
      (elscreen-goto (car (mapcar
                           (lambda (buffer)
                             (elscreen-find-screen-by-buffer buffer 'create))
                           elscreen-dnd-buffers)))
      (setq elscreen-dnd-buffers nil)
      (elscreen-notify-screen-modification 'force-immediately)))
  
  (defadvice dnd-handle-one-url (after elscreen-get-dnd-buffers activate)
    (setq elscreen-dnd-buffers
          (cons (current-buffer) elscreen-dnd-buffers)))