hazychill
10/29/2013 - 1:56 AM

ffc.l

(provide "ffc")

(defvar *ffc-path*)

(defun get-win-path (path)
  (let (temp-buf path-factors)
	(setq temp-buf (create-new-buffer "*temp*"))
	(save-excursion
	  (set-buffer temp-buf)
	  (insert path)
	  (goto-char (point-min))
	  (while (scan-buffer "\\([^/]*\\)/" :tail t :regexp t)
		(push (match-string 1) path-factors)
		(and (< (point) (point-max))
			 (push "\\" path-factors)))
	  (push (buffer-substring (point) (point-max)) path-factors))
	(delete-buffer temp-buf)
	(reduce 'concat (reverse path-factors))))

(defun copy-with-ffc ()
  (interactive)
  (if (boundp '*ffc-path*)
	  (and
	   (filer-get-mark-files)
	   (call-process
		(format nil "\"~A\" ~A /to:\"~A\""
				*ffc-path*
				(reduce #'(lambda (a b) (concat a " " b))
						(mapcar #'(lambda (a) (format nil "\"~A\"" (get-win-path a)))
								(filer-get-mark-files)))
				(get-win-path (filer-get-directory t)))
		:exec-directory (directory-namestring *ffc-path*)))
	(msgbox "*ffc-path* が定義されていません")))