点击Spacemacs的Update Spacemacs后,被提示 directory not clean而无法更新

类似问题在Spacemacs的github上后很多用户提到,但是那些用户的情况都是由一些临时生成的文件造成的(如 recentf),而且在master的0.200系列版本中已经被解决了。

但我在尝试Update Spacemacs时遇到的反馈如下

Your Emacs directory is not clean. git status M init.el ?? kite.el

所提示的这两个文件都并非临时文件,其中的kite.el是在我安装了基于AI的Python编程插件 - Kite之后出现的一个el文件,可以参看此网站了解Kite https://kite.com/

以上这种类型的directory not clean问题造成的无法自动Update Spacemacs,应该如何解决最好?

是否把kite.el添加到 .gitignore 还是应该考虑其它的解决方案呢?

谢谢。

追加,我的系统环境为

Master [email protected] macOS 10.12.6

我只在需要对 spacemacs 自有文件进行修改时才使用 rebase。

楼主这种情况,完全可以将外部的包放到 private layer 的 local 文件夹中作为 local package 来用

1 个赞

顺便问一下楼主,kite 支持 linux 吗?

根据目前kite官网的信息,明确指出支持macOS和Window,没有提及Linux(好像官网也确实没有提供Linux的安装方式)。所以我这边目前没有测试过Linux。

但官网同时表明,kite支持几乎所有主流editor和IDE,如Atom,Sublime Text 3,Visual Studio Code,以及对Emacs,Vim,Neovim的部分功能支持。

以上这些editor和IDE多是跨平台的,所以我觉得理论上说,kite支持Linux应该是相对容易的事。而且从后台来看,kite几乎是每周一次升级的节奏。

关注kite的官方twitter看看。

刚看了,说是8月初发布 linux 版本。现在不就是 8 月初吗?看来得再等等了。

你用的spacemacs的话把kite的配置加到.spacemacs.d里面。 问题是kite目前只有一个kite文件,(load-file "~/.spacemacs.d/layers/kite/kite.el")是能解决,但我想把它添加到python-mode-hook里面。但是这个文件需要cl库,于是挂了,报错如下。

Warning (bytecomp): function ‘find-if’ from cl package called at runtime
Warning (bytecomp): the following functions are not known to be defined: kite-request-url,
    kite-session-requests-by-id, kite--url-expand-file-name, post-initialize,
    kite-script-info-id, kite-request-mime-type,
    kite-source-map-generated-position-for
Warning (bytecomp): cl package required at runtime [6 times]
Error (bytecomp): Wrong number of arguments: setf, 1

不知道对于这种情况如何解决呢。用use-package肿么添加呢?

这个不是因为用到 CL 库报错,而是这个包似乎不符合规范,而且有个严重错误: setf 参数数量不对。

而且 load-file 是会加载源代码而不是编译后的字节码,不适合于 用 cl 库的包。应该编译以后用 require 试试。同理用 use-package 是可以的。

他好像没有写成一个包,就是一个简单的文件,编译后,use-package load local 的kite,还是同样的报错诶。。 我试了目前只能在init file里面load-file,才能正常使用。不太懂这些库之类的。。:joy: kite文件链接在这里

https://github.com/ztlevi/spacemacs-config/blob/master/layers/kite/kite.el

这写得的确有欠规范……然而我现在没有 Emacs 用……

@tumashu 有兴趣修改一下到符合一个包的标准吗吗?

也许我们可以直接联系kite团队,让他们官方发布一个符合Spacemacs layer标准的kite.el。

毕竟现在Spacemacs在Emacs用户中占比不小了。

稍后我个人也会直接联系一下kite,提交这个request。

大家更多人各自联系kite关于这个问题的话,也许会加速kite团队的响应速度。:slight_smile:

1 个赞

可能因为kite现在只支持python,然后它为了方便用户安装,直接在.emacs.d里面添加kite.el并且在init.el里面load file。文件也确实很小啦,对读取速度也没太大影响。 要是打算改成包规范的话可以参考Dash.app为了连接Emacs写的dashxxx.el。