(o (directory-file-name o))
(o (file-name-nondirectory o)))
(setq filename (eww-decode-url-file-name o))))
`(,status ,(if redirect redirect url) ,@rest))))))
(advice-add 'eww-render :filter-args aux)
(advice-add 'eww-download-callback :filter-args aux))
(setq eww-download-directory "~")
(advice-add 'eww-make-unique-file-name :filter-args
(lambda (args)
(let ((file (car args)))
`(,(if (zerop (length file)) "index.html" file)
,(funcall dir-or-pwd)))))
(advice-add 'my/eww-save-binary-file :override
(lambda ()
(goto-char (point-min))
(unwind-protect
(let ((file (read-file-name
"Filename to save as: "
(funcall dir-or-pwd) filename))
(require-final-newline nil))
(write-region (point-min) (point-max) file))
(kill-buffer (current-buffer)))))
(setq mailcap-user-mime-data
'(((viewer . my/eww-save-binary-file) (type . "application/.+")))))
上面的代码在 eww-download 和直接进入下载链接时产生作用。下载的目录我的习惯是如果 eww-download-directory 不存在,就下到当前文件夹下。
当然,目前的还有点小问题:如果要下载的 xxx.pdf 已存在, eww-download 应该是想要把新文件保存为 xxx(2).pdf 。但实际上,新的文件被保存成了 xxx(2)200 。。。我觉得这不是我的锅。。。
还有,涉及 content-disposition 的部分,我没测过。