对比 Android-native Emacs 和 Termux中安装的emacs

点击的是scratch 是不是要点GNU Emacs的欢迎页才行?

不是,你的设备有没有连接或自带硬件键盘?

在我看来,是以下这个问题没有彻底解决好,相比emacs下不够灵活,所以直接放弃

非常感谢!MPV的问题已经解决。

doom-emacs虽然还没有成功安装,但是至少开始执行,看上去是在正确的方向。目前git命令执行出错:

/data/data/org.gnu.emacs/files/.emacs.d.doom/bin/doom install
Installing Doom Emacs!

- Skipping /storage/4A21-0000/dotfiles/.doom.d/ (already exists)
  - Skipping init.el (already exists)
  - Skipping config.el (already exists)
  - Skipping packages.el (already exists)
- Envvar file already exists, skipping
Installing plugins
> Installing packages...
  > Updating recipe repos...

Error: error ("Failed to run \"git\"; see buffer *straight-process*")
  signal(error ("Failed to run \"git\"; see buffer *straight-process*"))
  error("Failed to run %S; see buffer %s" "git" "*straight-process*")
  (if success (let ((output (concat stdout stderr))) (if straight--process-trim (string-trim output) output)) (error "Failed to run %S; see buffer %s" program straight-process-buffer))

    x The package manager threw an error
    x Last 16 lines of straight's error log:
      $ cd /data/data/org.gnu.emacs/files/.emacs.d.doom/.local/straight/repos/melpa/
      $ git rev-parse HEAD
      [Return code: 127]
    ! Wrote extended straight log to ~/.emacs.d.doom/.local/state/logs/cli.doom.240126180427.17784.error
    ✓ Finished in 10.15682s
255|:/data/data/org.gnu.emacs/files $ 

试着在emacs shell中执行,没有问题。

      $ cd /data/data/org.gnu.emacs/files/.emacs.d.doom/.local/straight/repos/melpa/
      $ git rev-parse HEAD

看了下doom的env文件,termux bin加入到PATH变量了

 "LD_LIBRARY_PATH=/data/data/com.termux/files/usr/lib:/data/app/~~FOrmtXdz6CyU88YA-WPLlA==/org.gnu.emacs-DGEUkxV3UgrhX0UlLlMaAg==/lib/arm64"
 "PATH=/data/data/com.termux/files/usr/bin:/data/data/org.gnu.emacs/files/.emacs.d.doom/bin:/data/data/com.termux/files/usr/bin:/product/bin:/apex/com.android.runtime/bin:/apex/com.android.art/bin:/system_ext/bin:/system/bin:/system/xbin:/odm/bin:/vendor/bin:/vendor/xbin"
 "SHELL=/system/bin/sh"

尝试执行doom-call-process “git” 也是正常的

 (doom-call-process "git" "-C" "/data/data/org.gnu.emacs/files/.emacs.d.doom/.local/straight/repos/melpa/" "rev-parse" "HEAD")

还在研究doom的机制,但是说实话,doom这种方式在android emacs上没有Spacemacs友好啊

又学到了,才知道doom原来是可以编辑的,emacs原来也可以有这种类似python argparser的功能。

那确实,感谢指出问题所在,我不会为兼容orgzly去改现有的文件。

还是接着折腾android emacs吧,至少现在已经可以正常显示中文和图片了

再次感谢 @oldosfan 的工作!

把 android-use-exec-loader 设置为 nil 能解决吗?

好像eshell可以,shell会报错?我再跑跑

现在复现不了之前(“Failed to run "git"; see buffer straight-process”) 的错误,就算android-use-exec-loader 设置为 t,在eshell还是shell都能跑成功。没太搞明白原因。

在您的帮助下,doom-emacs已经成功安装在android emacs!非常感谢!

接下来就是优化调整了,处理一下字体、按键、package的兼容问题。等我整理一下在单独发一篇说明如何在android emacs中使用doom-emacs。

此外,发现加载lsp会报错:

debug-init 发现是因为lsp-mode中有调用:

(defvar lsp-json-rpc-mutex (make-mutex))

而make-mutex函数在android emacs中不存在。

这是否意味着在android emacs无法使用lsp?

是的,目前建议用 Eglot.

没有连接或自带硬件键盘

lsp-mode 应该可以使用了。

不知道是换了输入法还是换了emacs版本,又不需要控制evil-insert-state了,直接normal下能了 下面是原来的方案:

我是用evil的,evil情况下默认即使设置 touch-screen-display-keyboard 为t后 点scratch确实默认弹不出键盘,如果切换到其他页面后,最小化app重新进来就能弹出键盘了。我的解决方法是判断在android后,当前buffer是scrtach后,evil切换成insert,就能弹出键盘了

(defun android-insert()
  ;; 在这里添加您要执行的命令或配置
  (when (equal (buffer-name) "*scratch*")
    (evil-insert-state)
    (message "default insert in scratch")
    )
  )
(when (string-equal system-type "android")
    (add-hook 'emacs-startup-hook 'android-insert)
)

能麻烦分享一下你的evil配置吗?我的evil模式在termux 中的emacs正常,在安卓原生版本的Emacs不正常。 具体表现是:

  • 在文本编辑界面,Spc无法作为leader key,这个最要命
  • 删除变为向左一个字符 我用的是Unexpected keyboard,尝试了其他输入法之后可以确定不是输入法带来的问题。

另外也感谢你这个脚本。指出一个问题:最后括号应为英文括号而不是中文括号。

https://github.com/sherylynn/myemacs.d

配置在这里哈,给不同android或桌面版本适配的脚本在 lisp/init-system.el里

其他的init-evil里好像没特别配置吧,不过字体下载安装,我做了配置,在init-ui里

1 个赞

非常感谢!!