通过 w32-shell-execute 打开文件夹会冻结 Emacs

我不用 treemacs,目前用下面这个方法是完全没问题的。

(w32-shell-execute nil "~/.emacs.d/")

所以我在 Windows 下用上面的方法重写了一下 embark的一个函数就可以愉快地在 dired 中打开Windows的资源管理器了。

(when (eq system-type 'windows-nt)
  (with-eval-after-load 'embark
    (defun embark-open-externally (file)
      "Open FILE or url using system's default application."
      (interactive "sOpen externally: ")
      (unless (string-match-p "\\`[a-z]+://" file)
        (setq file (expand-file-name file)))
      (message "Opening `%s' externally..." file)
      (w32-shell-execute nil file))))