emacs open win application
1. emacs 启动win应用
既然可以用emacs启动explore,那应该也可以启动应用,所以我找到了w32-shell-execute 写了个方法
1 2 3 4 5 6 7 8 9 10 11 12
| (defun open-win-application () "start my application with w32." (interactive) (require 'ivy) (let ((app-list (loop for (k v) on my-run-application-plist by (function cddr) collect k))) (ivy-read "Open-application: " app-list :action '(1 ("o" (lambda (name) (w32-shell-execute "open" (plist-get my-run-application-plist (intern name)))) "open") ("d" (lambda (name) (message "application path is: %s " (plist-get my-run-application-plist (intern name)))) "directory")))))
|
然后把需要启动的快捷方式传入
1 2 3 4
| ;;put the shortcut to `d:/Eapps/' (setq my-run-application-plist '(git-bash "d:/Eapps/git-bash.exe.lnk" chrome "d:/Eapps/chrome.exe.lnk"))
|
2. 自动路径
- 有prefix,可以自己输入路径,默认桌面
- 没有prefix,查看是否通过 custom-open-win-apps-dir 指定路径,如果没有,打开桌面
- 如果d:Eapps中的快捷方式如果有 git-bash,把属性中的起始位置去掉,可以打开当前文件所在的位置
1
| (setq custom-open-win-apps-dir "d:/Eapps")
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| (defun open-win-application () "start my application with w32, with prefix to input custom directory." (interactive) ;(setq debug-on-error t) (let* ((desktop (concat "c:/Users/" user-login-name "/desktop/")) (custom-app-dir (if (and custom-open-win-apps-dir (file-exists-p custom-open-win-apps-dir) (not current-prefix-arg)) custom-open-win-apps-dir desktop))) (ivy-read "Open application: " #'read-file-name-internal :matcher #'counsel--find-file-matcher :initial-input custom-app-dir :action (lambda (name) (w32-shell-execute "open" name )) :preselect (counsel--preselect-file) :require-match 'confirm-after-completion :history 'file-name-history :caller 'open-file-application )))
|