まぁ正直ランチャーとわざわざ連携するメリットがなんなのかと言われるとなんともいえない心境になるのだけれど、秀丸にませCLがあるようにxyzzyにもCraftLaunchEXと連携する機能があってもいいじゃないかと思うわけで。とりあえずlisp初心者丸出しながらもCraftLaunchEXに文字列を送れるようにしてみたので公開してみる。

(setf *craft-path* "C:\\tools\\Launchers\\craftware\\clnchex\\clnch.exe")
(defun send-craftlaunchex ()
  (interactive)
  (progn
    (setf tmp-file (make-temp-file-name))
    (setf sel-str "")
    (setf result
          (ed::map-selection #'(lambda (start end)
                                 (setf sel-str (buffer-substring start end)))))
    (if (string= "" sel-str)
      (save-excursion
        (setf sel-str (buffer-substring 
                (progn
                  (goto-bol) (point))
                (progn
                  (goto-eol) (point))))))

    (setf result (call-process (concat *craft-path* " --caret=left --value=;" "\"" sel-str "\"")
                               :output tmp-file))
    )
)

なんとなくprognの使い方とかdefunの使い方とかその辺がイマイチ飲み込めていない気がして気持ちが悪いというかすっきりしない。