来比比你们的 emacs 的启动速度

  1. terminal: (emacs-init-time) “0.018478 seconds” Screen Shot 2020-10-31 at 10.05.26 AM
  2. graphic: (emacs-init-time) “0.54878 seconds”

use-package自行定义了一套dsl,但是欠缺file orientied的灵活性和效率。 下面是另一思路:

1 个赞

这个对文件操作更细了 :+1: 高级用户肯定喜欢。不过,使用起来会不会更复杂了?

是的,文件导向是稍复杂点,use-package是声明式(declarative)的, 看起来非常直观。直观、控制、速度这3个因素所要权衡,我倾向控制和速度,对于直观因素采用粗线条的声明式。

wsl下面15秒,换回ubuntu同样的配置只要4.361932939 seconds :stuck_out_tongue:

image

我以为我的三十秒已经很逆天了, 没想到楼上还有几百秒的, tql


另外提一嘴, (emacs-init-time) 算出来的时间是严重偏小的, 建议用

(add-hook 'window-setup-hook
          (lambda ()
            ...
            (time-to-seconds (time-since before-init-time))
            ...))

追求更准确的数值, 可以放到 post-command-hook 里.

Benchmark results

╼►[benchmark-init/root nil 2802ms]
c:/Program Files/Emacs $ (emacs-init-time)
4.654654 seconds
(emacs-init-time)
"0.799631 seconds"

;; Emacs Startup Times: init:0.343 total:0.636 gc-done:2

“GNU Emacs 29.1.50 (build 1, aarch64-apple-darwin22.6.0, NS appkit-2299.70 Version 13.5.1 (Build 22G90)) of 2023-09-07”

使用emacs-init-time,是1.536

使用前面的window-setup-hook,是4.430

  1. 都在谈启动, 我想问下 退出
  2. 打开后, 什么都不做, 退出都卡死, 要再次手动 c-x c-c (终端中不会)
  3. 如果不再次 手动, 要 近 3分钟 才退出
  4. 这是升级 29后, 才出现的, 不知是那个的配置的原因

调试, 只会 简单的 emacs --debug-init, 退出? 怎么调试, 这就肯不会了

一直想要问, 中间也试过 去除几个配置, 但没用那位 高手 给个思路! 大部份是 抄这里的 配置

以前 emacs-rime 在 emacs29 的时候会出现类似问题,现在应该修复了。你可以看看 kill-emacs-hook 都挂了哪些东西

按照您说的, 现在是这样的, 确认是 rime

  1. 如果打开 emasc, 不调用 输入法, 做一些 删除保存动作, 就很 顺利的退出了
  2. 如果打开 emasc, 调用 输入法, 打几个字后, 再保存退出, 就会有卡死现象了

但不知道 是不是 那配错了, 能帮看看 配置?

(use-package rime
    :ensure t
    :init
    (setq rime-user-data-dir "~/.local/share/fcitx5/rime") ; 自用的五笔词库
    :custom
    (default-input-method "rime"))

;; 随着 输入法的 不同, 鼠标 会变成 不同的 顔色
(defun zzf-rime-current-status-of-chinese-or-english()
  (unless (string-equal major-mode "dired-mode")
    (if (string-equal  current-input-method "rime")
        (set-cursor-color "orange")
      (set-cursor-color "#21BDFF"))))

;; 切换 输入法
(defun zzf-toggle-input-method ()
  (interactive)
  (toggle-input-method)
  (zzf-rime-current-status-of-chinese-or-english))

;;只用单键, F12 笔计本, 来映射 左边的 alt 键
;; 只用单键 台式机, .Xmodmap 来映射 AppKey 键, 右手掌 约小鱼际 处
;; keycode 135 =  F12 NoSymbol NoSymbol NoSymbol

(global-set-key (kbd "<f12>") 'zzf-toggle-input-method)
(global-set-key (kbd "C-S-SPC") 'zzf-toggle-input-method)

;; emacs-china 抄的
(define-key rime-active-mode-map (kbd "RET") 'rime--return)

;; emacs-china 问的, 在 rime, 中文 输入时, 回车清屏, 必须做成 cmd 方式
(defun rime--return () (interactive) (rime--escape))

rime 也是 新的包啊?

1 个赞

忘记具体细节了,你可以试试下面这段代码:

(add-hook 'kill-emacs-hook (lambda ()
			       (ignore-errors (rime-lib-finalize))))
2 个赞

我用的是 archlinux, 当有次 pacman -Syu 后, emacs 就到 29了, 一直就有这个问题, 好像近 个把月了

非IT人, 怕描述不清楚, 不太好问, 开个贴子, 更不会写标题了, 这次看到这个 标题, 想着 来个

取反

真的解决了, 太好了, 就是这个问题, 多谢了!

大约 不到 3秒, 就可以关了

1 个赞

我用的也是 arch ,最近不需要这行代码就可以正常关闭,我以为这个 bug 已经修复了。

(emacs-init-time) image

康康termux里的启动时间:

-Q:

有配置的:

Windows上emacs的启动要20s

我也是在 0.45 秒上下