native Emacs Lisp

我这个好像就是smart-input-source的readme里面抄来的。没有什么特别的配置。还有个问题,最近smart-input-source不是又更新了嘛,这个配置可能不是最新的哦。你还要参照readme来看。

(use-package smart-input-source
    :after rime
    :init
    (progn
      (setq smart-input-source-english nil)
      (setq-default smart-input-source-other "rime")
      (setq smart-input-source-do-get (lambda() current-input-method))
      (setq smart-input-source-do-set (lambda(source) (set-input-method source)))
      (setq smart-input-source-inline-tighten-all t)
      (setq-default smart-input-source-inline-with-other t))
    :config
    (progn
      (smart-input-source-global-cursor-color-mode t)
      (smart-input-source-global-respect-mode t)
      (smart-input-source-global-follow-context-mode t)
      (smart-input-source-global-inline-mode t)))

应该是melpa上的smart-input-source版本低造成的问题,换用GitHub上的smart-input-source后一切正常了,感谢道友。

为什么我安装后启动没有效果啊,先找不到 comp-deferred-compilation 变量。 去源码里里找,找到这个。

(add-to-list 'load-path "/usr/share/emacs/28.0.50/lisp/emacs-lisp/")
(require 'comp)

报错 Debugger entered–Lisp error: (error “Unknown specializer byte-to-native-func-def”)

Update 10: gccemacs

  • 动态作用域代码支持

  • 其他优化

magit rebase -i 的时候会闪退

他实在是太厉害了,代码更新得真快。现在一般等他在blog中出个update后,看看有什么新东西再重新编译。

1 个赞

ubuntu 下的编译教程:https://www.masteringemacs.org/article/speed-up-emacs-libjansson-native-elisp-compilation

1 个赞

我在等他把 make install 弄出来后,准备试试

make install有什么问题?

主要是增加了一种 eln 格式,我想等官方决定 eln 放置位置之后,再考虑用,那时候估计稳定性就更好了。

我也准备再等等,现在用emacs-mac还挺爽,emacs-plus现在下载好慢

已经把 eln 文件移到 ~/.emacs.d/eln-cache/ 下面了。并且引入了 comp-eln-load-path 来设置文件夹的位置。

已经在编译。。。

用了之后,我倒是感觉 company-posframe 滚动速度更平滑了。。。。 :slight_smile:

最近的native compile版我更新之后服务启动不了了,service文件里改simple和forking都无效,重装非native compile的之后改simple就正常,不知道是否是个例。目前暂时卸载了native的版本,暂时退回了26.3,过段时间再看看。

Linux Plumbers Conference 2020 (24-28 August 2020): Kludging The editor with The compiler · Indico 一个ppt,讨论 gccemacs 的实现,有兴趣的可以看看

刚才手痒pull了最新的native-comp分支,注释了comp.c里MD5 gzip相关的函数,在windows编译过去后,试了一下。

helm没更新到最新的版本前,报错。

  1. 报错“minibuffer-local-must-match-filename-map”,在helm-global.el 注释掉。升级后ok。

  2. 报错“custom-add-choice: Not a choice type: nil”,升级后helm-mini也报错。注释掉helm-for-files.el里的(require 'helm-bookmark)。

  3. org-decrypt报错void function epa-passphrase-callback-funtion。配置中加上(require 'epa),不知道为什么不用native-comp的版本就是可以的。

很久没升 Emacs 了,今天闲着没事又升级了一下,发现新版似乎有些问题:

我构建的时候明明没有设定 FAST_BOOT,我也确认了全部文件都被编译成了 eln,但是实际运行的时候 Emacs 还是会默默把 /usr/share/emacs/28.0.50/lisp 里的东西全部编译一遍再塞到 ~/.emacs.d/eln-cache 下面……

不知道有没有人有相同的遭遇

make NATIVE_FAST_BOOT=1 好像还是大概会编译100多个eln吧。

我的意思是,我没有设定 NATIVE_FAST_BOOT,我期望它把所有该编译的都一次编译完。然而实际上虽然该编译的都编译完了,我运行 emacs 的时候它还会再编译一次……

折腾了半天始终没弄懂原因

已知:

  1. /usr/lib/emacs/28.0.50/native-lisp/ 下存在已经编译好的 eln
  2. emacs 启动时仍然会把这堆已经编译过的玩意儿再编译一次扔到 ~/.emacs.d/eln-cache
  3. 手动将 /usr/lib/emacs/28.0.50/native-lisp/ 中的文件复制到 ~/.emacs.d/eln-cache,能够被正常读取,不会再编译
  4. 这两个目录确认都在 comp-eln-load-path
  5. comp-eln-load-path 中去掉 ~/.emacs.d/eln-cache,emacs 仍然试图重新编译已存在的 eln 并覆盖掉 /usr/lib/emacs/28.0.50/native-lisp/ 中的

太累了,不想折腾了,滚回原版了。过几个月再看看……