我使用的是WSL2的Ubuntu搭配X410,已经安装了fcitx与fcitx-sunpinyin,并且在fcitx-configtool中配置好了相关的设置。
在gedit中,我可以正常利用我设置的Ctrl+Shift快捷键切出输入法,并输入中文:
但emacs下,可以切出中文输入法,但无论如何都无法上屏,下面是emacs -q下的效果:
空格或是数字键都无法使文字上屏(输入的拼音也是消失不上屏)
请问有没有好的解决方案?
另,spacemacs的chinese layer,fcitx功能似乎存在问题,我按照文档的要求添加了chinese-enable-fcitx t
之后总会报错Error (use-package): fcitx/:config: Unknown ‘M-x’ binding command. Only original M-x, ‘smex’, ‘helm-M-x’ and ‘counsel-M-x’ are supported.
是我的问题吗?
尝试了一下,emacs-rime需要动态支持,而ubuntu官方源的最新版本是没有动态支持的;添加kelleyk/emacs源后一番折腾装上了emacs27,但由于wsl没有systemd,一启动spacemacs就会报一个错误
File error: Creating directory, Permission denied, /run/user/1000
不知道为什么,官方源的emacs26.3就没这个问题
yqu212
2020 年12 月 10 日 06:43
6
spacemacs不需要systemd支持。这是权限问题,你再查查是不是哪里没装对。
X410设置为Full desktop并配置环境变量试试。
不过个人也建议使用Emacs-rime。
楼主遇到的权限错误不了解,没有遇到过。
下面是我emacs --debug-init 显示的error,我不太清楚是怎么回事
Debugger entered--Lisp error: (file-error "Creating directory" "Permission denied" "/run/user/1000")
signal(file-error ("Creating directory" "Permission denied" "/run/user/1000"))
files--ensure-directory("/run/user/1000")
make-directory("/run/user/1000/emacs" t)
server-ensure-safe-dir("/run/user/1000/emacs")
server-start()
(if (server-running-p) nil (message "Starting a server...") (server-start))
(progn (require 'server) (if dotspacemacs-server-socket-dir (progn (setq server-socket-dir dotspacemacs-server-socket-dir))) (if (server-running-p) nil (message "Starting a server...") (server-start)))
(if (and dotspacemacs-enable-server (not (spacemacs-is-dumping-p))) (progn (require 'server) (if dotspacemacs-server-socket-dir (progn (setq server-socket-dir dotspacemacs-server-socket-dir))) (if (server-running-p) nil (message "Starting a server...") (server-start))))
(let ((file-name-handler-alist nil)) (require 'core-spacemacs) (spacemacs/dump-restore-load-path) (configuration-layer/load-lock-file) (spacemacs/init) (configuration-layer/stable-elpa-init) (configuration-layer/load) (spacemacs-buffer/display-startup-note) (spacemacs/setup-startup-hook) (spacemacs/dump-eval-delayed-functions) (if (and dotspacemacs-enable-server (not (spacemacs-is-dumping-p))) (progn (require 'server) (if dotspacemacs-server-socket-dir (progn (setq server-socket-dir dotspacemacs-server-socket-dir))) (if (server-running-p) nil (message "Starting a server...") (server-start)))))
(if (not (version<= spacemacs-emacs-min-version emacs-version)) (error (concat "Your version of Emacs (%s) is too old. " "Spacemacs requires Emacs version %s or above.") emacs-version spacemacs-emacs-min-version) (let ((file-name-handler-alist nil)) (require 'core-spacemacs) (spacemacs/dump-restore-load-path) (configuration-layer/load-lock-file) (spacemacs/init) (configuration-layer/stable-elpa-init) (configuration-layer/load) (spacemacs-buffer/display-startup-note) (spacemacs/setup-startup-hook) (spacemacs/dump-eval-delayed-functions) (if (and dotspacemacs-enable-server (not (spacemacs-is-dumping-p))) (progn (require 'server) (if dotspacemacs-server-socket-dir (progn (setq server-socket-dir dotspacemacs-server-socket-dir))) (if (server-running-p) nil (message "Starting a server...") (server-start))))))
eval-buffer(#<buffer *load*> nil "/home/wang1zhen/.emacs.d/init.el" nil t) ; Reading at buffer position 1880
load-with-code-conversion("/home/wang1zhen/.emacs.d/init.el" "/home/wang1zhen/.emacs.d/init.el" t t)
load("/home/wang1zhen/.emacs.d/init" noerror nomessage)
startup--load-user-init-file(#f(compiled-function () #<bytecode 0x57fd85>) #f(compiled-function () #<bytecode 0x489add>) t)
command-line()
normal-top-level()
非要在wsl下用emacs,建议使用scoop安装archlwsl
archwsl 下emacs和emacs-rime的安装什么的都比较容易找到符合往上大部分教程的版本
不太了解,scoop安装的archwsl也是https://github.com/yuk7/ArchWSL 这个版本吗?我尝试过这个版本的archwsl上的emacs,应该也存在systemd的问题,https://github.com/yuk7/ArchWSL/issues/170 就是我提的类似issue。
WSL 之前因为技术原因,一直都无法使用 systemd ,现在不知道怎么了。你的报错是因为 emacs 在 26.x 到 现在的版本默认在 /run/user/1000/emacs 文件夹下创建服务端,解决方法:
不使用 emacs server, 在 spacemacs 中也许只需要更改 dotspaceemacs-enable-server 为 nil。
修改 server-socket-dir 值, 在 spacemacs 中也许是修改 dotspacemacs-server-socket-dir 的值。
PS: 我不使用 spacemacs