大家有没有觉得Elisp无法承载一个现代化的Emacs?

Emacs好长时间都没有一个像样的包管理器是什么原因? 另外 package.el 和 melpa 没有办法安装指定版本的包吗? https://emacs-china.org/t/topic/4167

由于 melpa 滚动更新的性质,与 spacemacs 提供一个稳定版的努力(master branch)完全相悖


不知道为什么收到很多像「不用就完事了/Emacs是给高手用的/Emacs就是用来折腾的」之类的回复,我提出这个问题是想让大家讨论思考一下这些BUG的根源在哪。我VIM和Emacs都用了很长时间,自以为不算小白,我不知道Emacs/VIM有什么高级的,各位都会编程,写几行编辑器的配置代码有什么高级的?当一个开发框架需要折腾时、写一堆面条配置代码而不懂CoC时、配置文件冲突时、抛一些莫名其妙的BUG时,你们还会继续吹捧这个框架吗?


题外话:

已经基本搞清楚问题,根本问题出在Emacs25身上,不是Spacemacs的BUG,虽然Spacemacs也有问题,它没有检查package-install 是否成功,没有提供对应的错误信息。Spacemacs开发人员对于一堆类似的issues都当成elpa暂时挂了处理

下面是原文: 安装Spacemacs问题太多,搞了一天都没搞成功。比如下载失败它就不知道回滚吗?Github上好多Issues都是「Cannot open load file, No such file or directory」,重启100次都不行,开发人员不管,都说elpa挂了直接Close。 我设置了代理也不行。我已经设置过SOCKS5代理了,我的设置不对吗?

(setq url-proxy-services
         '(("no_proxy" . "^\\(localhost\\|10.*\\)")
            ("http" . "127.0.0.1:1081")
            ("https" . "127.0.0.1:1081")))

我已经设置过代理了

肯定不只是因为墙:Github 上面一大堆外国人反映类似的问题

我删过好几次缓存,都没能成功下载,而且它下载没成功,不应该先提示下载网络错误吗?为什么直接说Cannot open load file?这说明程序设计有问题,根本没有考虑过网络错误。一旦出现网络错误,它无法自动恢复重试。另外这并不只是因为墙,Github issues里有很多外国人反映这样的问题,开发人员回复都说是melpa不稳定挂了,可见开发人员根本不懂怎么设计一个robust程序

我怀疑是Elisp太烂,程序写不好,基本的IO错误都不知道处理。

烂语言会引诱程序员写出烂代码。

1 个赞

:face_with_raised_eyebrow: 你的问题论坛里已经有人反映过

我更新 Spacemacs 也遇到相同的问题,重新编译 Emacs 就行了。

  • 你这图片完全是天朝防火墙的锅,emacs和MELPA不背

  • melpa的确有问题,主要在版本管理太弱,其他倒也没啥

  • emacs之所以存在就是因为elisp, 换了elisp就不可能存在emacs了

  • 可以挂个代理,可以用国内源,可以人肉下载包,可以找机油复制elpa文件夹

  • 如果你是用git安装的spacemace,进入目录,git status 如果显示为 nothing to commit, working tree clean 则说明你spacemacs本身是安装准确无误的,只不过是第三方包的问题

  • elpa文件夹莫动,删了就要重新下载所有包,如果有关于MEPLA之类的错误,不包括由网络产生安装失败,可以先去把包缓存删了试试,master分支在elpa/archives, develop分支在elpa/develop/archives

  • emacs是用来折腾的,而不是用来享受的

1 个赞

只看题目不看内容,我可以这么反驳:有了其他的语言,就能有一个现代化的Emacs了?Emacs的现代化需要有现代化的开发者 :fearful:

有啊。但是 30 年来没人搞成过啊。所以我不觉得今年能搞成。uemacs 扩展能力有限,要做出 Spacemacs 类似的东西是不可能的。有个用 Java 写的完全兼容 Emacs Lisp 和 Scheme,然而都没什么人用,我猜是用 Emacs 的没几个同时精通 Lisp 和 Java 的。Guile 开发基本停滞了。最接近成功的应该是 Common Lisp 的 McCLIM 图形库,真的是一个良好的图形界面系统(等价于 macOS 的 Cocoa),就差个编辑器了(Evil 用户都知道这个梗吧)。然而现在用 CL 的人少到连语言标准都没人更新,CL Emacs 也是基本挂了。嗯,现在说自己用 Lisp 的都在用 Racket 和 Clojure 了,不算 Emacs Lisp 的话。Quiche Eaters。

Elisp 不好吗?目前是不好,作为胶水语言还差了些,作为编程语言不太合格。然而现在 Emacs 连 Dynamic Modulus 和 FFI 都有了,也看到没几个在用。我相信用 Ruby 给 Emacs 写个包管理器也不难,但为什么没有呢? Elisp 虽然有很重的历史包袱,但是近几年来一直有革新,词法绑定和多线程都在这几年加了进来,优化也一直在做。

要说垃圾语言,只有一句话:语言只分两种,被人骂的和没人用的

1 个赞

不好意思,“现代化”的开发者都干不动。现在的Emacs 就和 TeX 差不多,用户基本只会用现成的,顶多写宏包,底层实现都没有几个人搞,搞出来几个也多半死不活,LaTeX 一直成主流。

:star_struck: racket7 用 chez-scheme 来编译,不过现在正式本版是 6.12。 目前的进展 Racket-on-Chez Status: January 2018

只要哪天 RMS 想开了,把 Emacs-lisp 替换成 Racket,或者用 chez-scheme 来自举。反正 Racket 和 Emacs-lisp 都是 scheme 方言。

现在 RMS 不怎么管了。而且他本人早说过如果能重来会用 Scheme 写 Emacs。

另外不要乱讲,Emacs Lisp 跟 Scheme 没关系。Emacs 没有用 Scheme 是因为那时候还没有 Scheme 。然后说 Racket 是 Scheme 会被两边的人打的,Racket 是一门脱胎于 Scheme 的新语言。

另外你看看 Guile Emacs 挂成什么样了就知道 Racket Emacs 是不太可能的。没人开发。

然后从我个人体验看 Racket 和现在的 Emacs 比跨平台能力太差。而且不知道为啥在我 macOS 和 Linux 还有 NetBSD 上都没能编译成功,只能用 Binary。怀疑里面有黑科技。

Emacs 有些语法和 Common-lisp 也很像,至于是不是 Scheme 的方言,我看知乎上很多人都说 Emacs lisp 是 Scheme 的方言,我也就当真了。

我之前用 Racket 和 chez-scheme 做 SICP 上的习题,语法都一模一样~~~嗯,大概我还没深入研究吧。

Lisp 语言太多了,每次写完 Scheme 再转换到 Clojure 或者 Emacs-lisp,脑子就一团浆糊。还是统一 Lisp 的写法,降低门槛。

只要有人想做就行了,比如 Remacs。

1 个赞

不了解 Spacemacs。你遇到的问题跟你标题中的猜测没有关联。

关于逼乎的事不做评价,不过我还要多提醒你一句不要把 Lisp 和函数式编程划等号

统一语法这事,Common Lisp 当初做的就是这事,可惜还有一些余孽没能消灭(说的就是你,Scheme! 结果现在出来了 Racket 这神物)。之后 Common Lisp 的总纲成了“比 Scheme 更多(特性丰富),比 Scheme 更少(语法简洁)”。但是到目前为止,Commom Lisp 仍然是特性最丰富的 Lisp 方言。

Clojure, Hy,Arc 和 Newlisp 我认为只是“聪明的”语法糖罢了,只能算是一种 DSL。

4 个赞

大多数语言都是二进制的语法糖。。。

我是指,這些 Lisp 方言所宣传的特性,在 Common Lisp 上是都能轻松实現的。另外,我也用 Stack Machine 的。

这很大程度上,是因为你对Emacs不太了解而已,或者emacs不适合你, emacs是贡献者用手敲出来的,不是抱怨出来的。

另外你这不要把spacemacs当成官方emacs,spacemacs说白了是别人的配置,你用别人的配置出问题,只能怪你自己不了解这一份配置或者怪这份配置写的太烂。

1 个赞

语言的事我不太懂,不过看起来还是很有希望的。大过年的,一大早就开始技术讨论了了👍

其实 guile-emacs 也基本上能用了,不过启动速度比较慢,可能因为默认包都是以纯粹的文本文件加载的吧。

guile-emacs 用的 guile 是 2.0, guile 2.2.3 宣称对 elisp 完全兼容,速度也有很大提升,如果 guile emacs 的 guile 能换成 2.2.3, emacs 的版本能换成 26 就好了。可惜, guile emacs 的开发已经停滞很长时间了。

不太同一最后一点,emacs应该对于普通用户是享受的,对于高手是折腾的,不然一直让人折腾很多人会放弃使用的

重新编译 Emacs ?无语,所以说这不是Spacemacs的问题,而是Emacs本身的问题?为什么重新编译一下就OK了?

既然入了emacs的门,就没有普通人,emacs配置性给了用户太多的欲望了。。。用emacs的只有三种人,高手,正在成为高手,放弃的人

1 个赞