Elscreen と skype.el

現在のskype.elはウインドウがいろいろ出てきて混乱するのですが、Elscreenと組み合わせることでかなり使いやすくなります。手元では以下のように連携させています。

新規チャットでスクリーンを開いたり、チャットを閉じるとスクリーンを終了するようになります。いくつもチャットを開いているときに便利ではないかと思います。

(autoload 'skype--anything-command "skype" "Skype")

(defun setup-elscreen-skype ()
  (when (and (featurep 'elscreen) (featurep 'skype))
  (defadvice skype--open-chat-buffer (before elscreen-skype-open-chat activate)
    (save-current-buffer (elscreen-create)))

  (defadvice skype--chat-mode-quit-command (after elscreen-skype-quit-chat activate)
    (unless (elscreen-one-screen-p)
      (elscreen-kill)))

  (defadvice skype--kill-chat-buffer-command (after elscreen-skype-kill-chat activate)
    (unless (elscreen-one-screen-p)
      (elscreen-kill)))

  (defun skype--elscreen-title-name-map (x)
   (if (string-match "Skype\\(Chat\\|Message\\):\\[\\(.*\\)\\]$" x)
       (let* ((title (match-string 2 x))
              (buf (get-buffer x))
              (missed (if buf (skype--chat-missed-p 
                               (buffer-local-value 'skype-chat-handle buf))
                        nil)))
         (concat (if missed "★" "☆") title))
     x))
  (add-to-list 'elscreen-my-title-maps 'skype--elscreen-title-name-map)
  ))

(eval-after-load "elscreen" '(setup-elscreen-skype))
(eval-after-load "skype" '(setup-elscreen-skype))

現在、skype.elは非同期関係とGUIの大幅書き直し中です。いろいろ中途半端なところがあってすみません。