win → unix の path 変換ですが
cygwin-mount.el の cygwin-mount-substitute-longest-mount-name を
少し変更するだけでうまくいきました

(defun windows-path-substitute-longest-mount-name (name)
"Substitute NAME with mount device or return NAME."
(and name
(save-match-data
(let ((mounts cygwin-mount-table--internal)
(len (length (file-name-as-directory name)))
match)
(while mounts
(let ((mount (file-name-as-directory (caar mounts))))
(and (>= len (length mount))
(string= mount
(file-name-as-directory
(substring (file-name-as-directory name)
0 (length mount))))
(or (null match)
(> (length (caar mounts)) (length (car match))))
(setq match (car mounts))))
(setq mounts (cdr mounts)))
(if match
(concat (file-name-as-directory (cdr match))
(if (>= (length (file-name-as-directory (car match))) len)
""
(substring name (length (file-name-as-directory (car match))))))
name)))))