Emacs 里面移动文件如果是 relative symlink,移动后会造成连接失效,我用git-annex感觉很不方便,目前这样解决。本人菜鸟,各位大师帮忙检查一下:
(defun my-rename-file (file newname &optional ok-if-already-exists)
"fix path for relative symlink"
(let* ((file_name (file-name-nondirectory file))
(new_dir_name (file-name-directory newname))
(new_file_path (expand-file-name file_name new_dir_name))
(relative_symlink (file-symlink-p new_file_path)))
(if (and relative_symlink (string-equal system-type "gnu/linux"))
(dired-make-relative-symlink
(expand-file-name relative_symlink (file-name-directory file)) new_file_path t))))
(advice-add #'rename-file :after #'my-rename-file)