讨论一下straight.el

Info 是支持的,只是由于一些无法避免的原因可能会失败,比如用户电脑上没装 texinfo、texinfo 版本不匹配、安装 info 的命令比较复杂(straight.el 不支持自定义命令)。

package.el / ELPA 可以看成从「二进制包」安装,straight.el 可以看成从 「源代码包」安装。

1 个赞

我以为我会喜欢Gentoo

后来发现原来我喜欢Arch

Linux 太弱,像 Pentium 4 + 512MB 这种情况 Arch 完全没用,反而 BSD 都能支持。

我觉得应该定一些标准宏,利用 eval-when 实现在加载包的时候自动编译 el 文件和安装其它相关组件。而且 straight.el 这种用软链接的方式我觉得缺少灵活性。

现在的包管理策略都是默认给单用户安装的,对于我这样习惯做不同事切换不同用户账号的策略并不方便。

很早就吐槽 straight.el 不支持浅克隆(导致慢和占空间)了: 如何对正在使用的elisp包进行编写调试? - #16,来自 twlz0ne 它现在还没计划要改善吗?

浅克隆是指什么?我刚开始接触从源安装包没什么概念。

不全部复制下来的话不会缺少文件吗?

正常克隆会把文件修改记录也下载下来

2 个赞

你的发行版不对而已。slackware就能支持,debian更不用说吧。老旧机器有专用发行版的

我觉得任何供最终用户使用的git clone命令都应该加上--depth 1参数……

3 个赞

shallow clone的issue,说是放进了milestone,但是里面却没有它,我没搞清楚现在实现了没。反正至少是在路上了……


然后我想问,怎么把melpa之类的仓库换成emacs-china源?straight-recipe-repositories

straight 不支持 ELPA,只能从 Git 安装包,部分包的 Git 信息来自于 Melpa,如 Magit

1 个赞

想尝试一下,感觉git submodule 安装爽,删除起来特别让人头秃

我给magit写了个magit-submodule-remove

很好用

刚体验了一下straight,有以下感想:

  1. 我完全不需要自动build的功能。

  2. 文档虽然很多,但我觉得其实不如给实际配置的例子。比如我想禁用build,找到参数:no-build,但这个参数怎么用呢? 文档说了一大推,我看了半天还是一头雾水,直到在issue中搜到了这样的代码:

    (straight-override-recipe
       '(org :type git :host github :repo "emacsmirror/org" :no-build t))
    (use-package org)
    

    这不就清楚了吗。。。

  3. 因为straight默认只把package的build文件夹加入 load-path,所以如果build的过程出了问题,导致build文件夹是空,那么就会找不到这个package。

  4. 我用straight配置aweshell,就碰到了3中的bug,然后我至今都不知道它为什么没有build(是因为没有Makefile吗?但没必要为了使用straight特地为没有Makefile的package特地写一个吧。。。)

所以最终我禁用了straight的build功能,然后另写了代码把straight下载的package加入到load-path里。

总结:比我想象的要难用 :sweat:

5 个赞

我今天还在想要不要转到straight,看来还是再观望一会比较好吧……

1 个赞

昨天采用straight设定–depth=1的新特性clone magit, 但第一次安装时这个参数没起作用(还是全的log), 第二次安装直接在clone阶段卡住了(大概30分钟都没反应)…

我还没搞清楚到底是什么问题…

还有, straight的recipe概念我一直没弄懂, readme中的描述太抽象了…

是不是没有用 develop 分支呢?这个改动还没进 master

更新了develop, 试了几个其它的包都成功了, 就这个莫名其妙的不行.

先mark一下, 等有时间了我找一下原因.

找到原因了.

场景如下:如果指定了package的fork参数, 那么straight会执行git fetch fork, 而这条指令是不会使用depth参数的, 所以会把magit所有history都下载下来.

我已经给作者报了issue.