从今天开始,Emacs里面可以运行任何你想要的程序 (Linux & Windows & Mac & BSD)

Windows下如下就可以的,不需要加’.exe‘。

(use-package eaf
      :straight (:host github :repo "manateelazycat/emacs-application-framework" :files ("*"))
      :init
      (setq eaf-python-command "python")
      :commands (eaf-open-browser))

Windows 10下有个问题就是,它自带一个python3.exe,且在PATH里,但是其实只是个启动器,运行它会引导到Windows Store里去安装。

PS C:\Users\wsw> which -a python
C:\Users\wsw\scoop\apps\python\current\python.EXE
C:\Users\wsw\AppData\Local\Microsoft\WindowsApps\python.EXE
C:\Users\wsw\AppData\Local\Microsoft\WindowsApps\python.EXE
PS C:\Users\wsw> which -a python3
C:\Users\wsw\AppData\Local\Microsoft\WindowsApps\python3.EXE
C:\Users\wsw\AppData\Local\Microsoft\WindowsApps\python3.EXE

为啥有些人直接就可以,有些人必须设置 python.exe ?

我已经很多年没有使用Windows了,只能靠大家远程测试了。

不清楚了,可能与PATHEXT这个环境变量有关吧。但是如果PATHEXT里连.EXE都没有,那应该是exe程序都不能运行了吧。

好像还是找不到python的路径。我昨天在另一部电脑上也遇到找不到python的提示。找不到原因就卸载了原来的python3.6,然后再从win10的商店安装了个python3.9,然后又可以识别了。 这个有点迷。现在这台机的python好像是安装vs的时候,自动安装的。

老哥 你的doom是怎么配置eaf的?能分享下配置吗?

试试直接设置为python的完整路径?类似(setq eaf-python-command “C:/python39/python.exe”)这样。

我是msys里和windows下都装了python,eaf有些依赖在msys里面装不上,所以设置成这样直接用另外单独安装的python。

我没有用doom的,不过我觉得wiki上配置应该是可以的。

Spacemacs 用户

(require 'eaf-evil)

(setq eaf-evil-leader-keymap  spacemacs-cmds) 

(define-key key-translation-map (kbd "SPC")
    (lambda (prompt)
      (if (derived-mode-p 'eaf-mode)
          (pcase eaf--buffer-app-name
            ("browser" (if (eaf-call "call_function" eaf--buffer-id "is_focus")
                           (kbd "SPC")
                         (kbd eaf-evil-leader-key)))
            ("pdf-viewer" (kbd eaf-evil-leader-key))
            ("image-viewer" (kbd eaf-evil-leader-key))
            (_  (kbd "SPC")))
        (kbd "SPC"))))

Doom-emacs 用户

(require 'eaf-evil)

(define-key key-translation-map (kbd "SPC")
    (lambda (prompt)
      (if (derived-mode-p 'eaf-mode)
          (pcase eaf--buffer-app-name
            ("browser" (if (eaf-call "call_function" eaf--buffer-id "is_focus")
                           (kbd "SPC")
                         (kbd eaf-evil-leader-key)))
            ("pdf-viewer" (kbd eaf-evil-leader-key))
            ("image-viewer" (kbd eaf-evil-leader-key))
            (_  (kbd "SPC")))
        (kbd "SPC"))))

设置为 (setq eaf-python-command "python.exe"),我这边可以。 大神叫我测试一下不设置行不行,我这边一部电脑可以,另一部电脑不行。

windows 可能有很多 python.exe ,要看具体用的哪一个。

那个 WindowsApps 下的就是个假的,打开直接到微软商店

推荐大家用scoop安装。省心省力。

我个我是有设置了,可以打开网页,但操作还是有点问题,没有光标

你看看快捷键里有进入caret模式,就可以有光标。我在emacs-state下是有的。

或者直接把 scoop 作为 install-eaf-w32.js 的内容? 这样免的大家安装阶段就出问题

这样当然是好事。国外用户用起来会很方便。

不过Scoop受网络影响,很多时候包下不下来,国内用户要自己解决网络问题。

要不然就在安装步骤里面明确要求国内用户自行解决网络问题再安装?这样最简单。

当然,也可以写个指南,把安装python和nodejs的方式规定死,比如去官网下载python和nodejs的安装包,并配置好国内镜像。

但是这种方式并不简洁。还不如让用户只解决网络问题。

确实,Scoop 对国内用户一点都不友好。我试过几次都没成功。安装依赖部分还是交给用户来选

这倒不怪scoop,它只负责下载安装。安装包都在各家开发商的服务器上面,只要想下载就是那么慢。现在国内大家用python和nodejs不都是靠镜像嘛。

我还是赞成eaf把依赖的安装管理起来。这样大家都可以少很多麻烦,毕竟eaf有那么多依赖,如果还不统一管理,找bug会很麻烦。Windows下面装软件太自由了,装哪里、装什么版本都有可能,为了路径、环境变量等奇奇怪怪的问题折腾不值得。

使用scoop安装的代价是用户必须自己解决网络问题,就算用chocolatey和Winget都是一样的。只要用户解决了网络问题,安装起来就很省事。这么做的结果是,和在Linux下面一样,大家的依赖就肯定能够统一。

我其实就不太喜欢scoop那个环境 变量。

针对doom 下的配置,可能有遗漏

Linux下通过脚本已经统一起来了,安装依赖很方便,其实我比较关心Windows怎么弄会最快用起来EAF, 自定义的事情用户开心就好。

:joy:唉。windows下面大家都自由惯了,各有各的爱好。我以前也倾向于这做各种自定义。可是真得很折腾啊,出了问题花的可是自己的时间,很多时间没意义的嘛。

eaf做为一个项目,不排除安装依赖带来的各种不确定因素,会带来很多麻烦。