今天看到 Org-roam(v2) 以及 org-roam-ui 的使用姿势(已支持Emacs 29 内置的 sqlite) - #151,来自 aqua0210 提到,emacs 29内置sqlite,感觉有些心动。不过比起尝鲜,我更倾向稳定的工作环境。另外,我还带着组内的非技术小伙伴在用win版emacs,希望能保证版本的一致,以便我能协助解决一些奇奇怪怪的问题
所以想问下:
- mac和windows的Emacs 29是否足够稳定?
- 与28相比,有哪方面的重要提升或亮点功能?
- 29有没有一些兼容不好的情况?例如与EAF等的兼容? Emacs 29 中 Xinput2 与 EAF 的兼容性问题 (好像最后解决了,抱歉我还没细看)
- 29版本的哪个mac版本体验较好?emacs-mac 还是 emacs-plus?
- 29版本emacs推荐哪种安装方式?
3 个赞
我在天天在 macOS 和 windows 下用 emacs 29。很稳定,目前没遇到什么兼容性问题。
主要看重以下几点:
- 支持像素级滚动,可以像浏览器一样用触摸板滚动屏幕
- 内置支持 sqlite,可以用于 org-roam 和 epkg
- 支持双缓冲,Windows 下滚动屏幕不闪烁
- desktop.el 支持 utf-8 以外的编码
2 个赞
我前两个星期msys2下编译安装的29,从27.2到29.50速度的确提升很大。org-roam也快了好多,大多数工作正常,目前遇到个问题: elisp语法着色有问题,像这样(Emacs -Q)
另外,原来使用的 helpful 也有经常会出现这种错误:
font-lock-fontify-keywords-region: No match 2 in highlight (2 font-lock-function-name-face prepend)
tumashu 的 pyim.el这个文件,也不止这个。
你可以弄一个最简单的能重现的例子代码,大家试试。如果有问题,最好向上游反馈一下。
我截取下面这段:
(require 'cl-lib)
(require 'help-mode)
(require 'pyim-autoselector)
(require 'pyim-common)
(require 'pyim-cstring)
(require 'pyim-dhashcache)
;; NOTE: pyim 默认使用 dhashcache, 按理说不需要加载 dregcache, 但以前 pyim 支持
;; 动态加载后端,由于简化代码的原因,这个功能取消了,require dregcache 是为了向
;; 后兼容,未来也许会取消加载。
(require 'pyim-dregcache)
(require 'pyim-indicator)
(require 'pyim-page)
(require 'pyim-preview)
(require 'pyim-process)
(require 'pyim-scheme)
(require 'subr-x)
(defgroup pyim nil
"Pyim is a Chinese input method support quanpin, shuangpin, wubi and cangjie."
:group 'leim)
(defcustom pyim-convert-string-at-point-hook nil
"Hook of `pyim-convert-string-at-point'.
这个 hook 运行时机:
1. 获取并删除光标处 code 字符串之后。
2. code 转换得到的中文字符串插入之前。
Tip: 用户也可以利用 `pyim-outcome-trigger-function-default' 函数
来构建适合自己的 hook 函数。"
:type 'hook)
(defcustom pyim-select-word-by-number t
"使用数字键来选择词条.
如果设置为 nil, 将直接输入数字,适用于使用数字做为
编码的输入法。"
:type 'boolean)
;;;###autoload
(defvar pyim-title "PYIM ")
(defvar pyim-load-hook nil)
(defvar pyim-activate-hook nil)
(defvar pyim-deactivate-hook nil)
(defvar pyim-mode-map
(let ((map (make-sparse-keymap))
(i ?\ ))
(while (< i 127)
(define-key map (char-to-string i) #'pyim-self-insert-command)
(setq i (1+ i)))
(setq i 128)
(while (< i 256)
(define-key map (vector i) #'pyim-self-insert-command)
(setq i (1+ i)))
(dolist (i (number-sequence 0 9))
(define-key map (kbd (number-to-string i))
(lambda ()
(interactive)
(pyim-select-word-by-number i))))
(dolist (x '(("<f1>" . 1)
("<f2>" . 2)
("<f3>" . 3)
("<f4>" . 4)))
(define-key map (kbd (car x))
(lambda ()
(interactive)
(pyim-select-char-in-word-by-number (cdr x)))))
(define-key map " " #'pyim-select-word)
(define-key map (kbd "C-SPC") #'pyim-select-word-simple)
(define-key map [backspace] #'pyim-delete-backward-char)
(define-key map [delete] #'pyim-delete-forward-char)
(define-key map "\C-d" #'pyim-delete-forward-char)
(define-key map [M-backspace] #'pyim-delete-backward-imelem)
(define-key map [M-delete] #'pyim-delete-forward-imelem)
(define-key map [C-backspace] #'pyim-delete-backward-imelem)
(define-key map [C-delete] #'pyim-delete-forward-imelem)
(define-key map [?\t] #'pyim-toggle-assistant-scheme)
(define-key map (kbd "TAB") #'pyim-toggle-assistant-scheme)
(define-key map "\177" #'pyim-delete-backward-char)
(define-key map "\C-f" #'pyim-forward-point)
(define-key map "\C-b" #'pyim-backward-point)
(define-key map "\M-f" #'pyim-forward-imelem)
(define-key map "\M-b" #'pyim-backward-imelem)
(define-key map "\C-e" #'pyim-end-of-line)
(define-key map "\C-a" #'pyim-beginning-of-line)
(define-key map "=" #'pyim-next-page)
(define-key map "-" #'pyim-previous-page)
(define-key map "\C-n" #'pyim-next-word)
(define-key map "\C-p" #'pyim-previous-word)
(define-key map "\M-n" #'pyim-next-page)
(define-key map "\M-p" #'pyim-previous-page)
(define-key map "\C-m" #'pyim-quit-no-clear)
(define-key map [return] #'pyim-quit-no-clear)
(define-key map "\C-c" #'pyim-quit-clear)
(define-key map "\C-g" #'pyim-quit-clear)
map)
"Pyim 的 Keymap.")
着色出来是这样的:
论坛的 emacs-lisp不能着色了吗?(我使用 ```emacs-lisp)
直接使用 ```就可以了。
我这边可以,不用加 emacs-lisp,论坛默认就是 elisp,你可能是用了中文的 ```
那奇怪了,我当时是用 “e4611107e5 * master origin/master Fix dired drag and drop actions” 编译的。
我的也是msys2 下面编译 master分支。
29 滚动很顺畅,但是window下的emacs 似乎package载入多了就不太流畅,像spacemacs没办法用的。
我现在只装 evil evil-leader lsp-bridge doom-modeline 等十多个插件,用起来还可以流畅
看到这个帖子,我也尝试了下emacs-29,目前使用感觉还可以。
但是我的 restart-emacs不能正常工作,行为和save-buffers-kill-emacs一样,不能重启emacs。
@aqua0210 你那能正常工作吗?
用tab-bar 替代了awesome-tray.
mysys2下能用borg吗,我设置了home变量,但运行make bootstrap遇到了找不到目录的问题
可以的,但你要用 git-bash 启动 msys2 环境,只把 C:\msys64\mingw64\bin 加入 Path就行
Make 我是下载Eli 提供的 EZPort 版本,并加入 Path:
C:\opt\make-4.3-without-guile-w32-bin\bin
1 个赞
我试过,可以用。但因为我用了 Desktop.el,就不怎么喜欢用这个功能。
我近期切到 Emacs 29,遇到两个问题:
1、M-x run-python 提示 Process Python exited abnormally with code 49 的错误,在大佬帮助下已解决。
解决方法:(setq python-shell-interpreter “python”)
2、dired buffer中按W,无法外部打开中文目录和文件,参考以下链接解决,顺便get到了打开目标文件所在的文件夹、通过Windows Terminal打开、通过VSCode打开、通过浏览器打开等等一系列新技能
Emacs: Open File in External App (xahlee.info)
3 个赞