emacs 安卓版使用后的一些想法

Emacs 最近出了安卓版【这里点击下载】【相关的说明文档,faq】,我稍微用了一下,一些想法跟问题记录一下……

  1. 首先是文件权限的问题,Android 11 及以上你可能需要进入(设置→特殊应用权限)里为 Emacs 开启 All Files Access 这个权限……

    如果你跟我一样,手机特殊应用权限里没有文件相关的权限的话,可以通过在 Emacs 里输入 M-x android-request-directory-access 来为你需要操作的文件赋予权限。成功之后,你可以在 /content/storage/ 目录下找到你需要的文件,这里感谢 @oldosfan

  2. 同样另一问题下面的问题,即关于字体的位置,同样感谢 @oldosfan 的回答,路径为: /data/data/org.gnu.emacs/files/fonts

    默认字体的颜色有点淡,我尝试换了其他字体,包括直接在手机主题里换字体……英文字体基本上没什么问题了,中文字体还是太淡,我尝试更换了 Emacs 主题也没用……

  3. 输入法问题,我用的是外接键盘,这里涉及到手机自带的小键盘的问题。 可以通过按 Alt+> (end-of-buffer)的方式,让键盘呈现如下状态……

    而不是下面这个令人讨厌的状态……下面这个状态在手机横屏的时候尤其的讨厌……

    不知道有没有办法让输入法的状态默认保持上面的这个状态,只有当手指点击屏幕的时候再变成下面这张图状态的方法,如果有的话,欢迎分享。

  4. C-SPC 貌似无效,使用 C-@set-mark 吧……

  5. 输入法跟键盘冲突的问题,应该是两者冲突造成的吧?在 dired 下,一些操作的会失效,比如按 pn来移动光标,并不是每时每刻都能生效,偶尔会被输入法给截取了(应该吧)

  6. 不知道有没有好的办法把外接键盘的 CapsLock 映射成 Ctrl ?

手机上键盘导致的很多问题确实很难受,目前我发现的就是悬浮键盘体验最佳 Android上玩emacs, 可太舒适了 - #36,来自 wsug

2 个赞

如果能开启 All Files Access 这个权限,还是建议避开 android-request-directory-access,SAF 主要用于访问 samba/CIFS/Nextcloud 客户端之类的 document provider。

Droid Sans Mono 淡可能是字体本身的问题,我个人使用的是 Noto Sans Mono VF,需要自己下载安装。

最后一个问题应该是输入法本身的毛病,安卓输入法各种毛病太多了,最好还是使用 LatinIME、GBoard 这种成熟的输入法。C-SPC 是安卓系统的问题。

3 个赞

顺便说一下

Android ports for GNU Emacs - Browse Files at SourceForge.net

的 README 中有比较详细的 FAQ,使用前最好参考一下。

3 个赞

谢谢,我手机上好像开启不了 All Files Access 这个权限(特殊应用权限里也找不到相关的选项),估计被屏蔽掉了……

Noto Sans Mono VF 我下载了,不知道具体的字体名应该填什么,试了几个好像都不太对…… 现在用的是 Source Sans Pro。 其实英文字体还好,比较要命的是中文字体,更加的淡……

其他的我再多试试……

中文字淡可能是因为字体太细了, 有的字体分细,中,粗, 可以选中或粗试试.

android系统什么时候能运行在pc上就好了, 成熟度和生态丰富度已经能媲美windows了.

安卓有 x86 版本的……

这个我知道,就是没啥人用,维护也不太积极了,版本也比较老。另外,android生态大部分都是arm的,不知道x86能否跟苹果一样做转译。

这东西如果这么小众的话,体验不会太好,还不如直接安装linux桌面。

1 个赞

Emacs 支持一切安卓支持的架构,包括 x86_64

1 个赞

请问一下,我把字体文件复制到/data/data/org.gnu.emacs/files/fonts下面,重启并没有找到该字体,是不是还要用类似mkfontscale,mkfontdir的命令来安装

字体已经解决,文档里面有说明,抱歉了,使用set-frame-font来设置,然后想拓展问一下,如果想单独给某个模式设定字体,需要如何定义呢

还有一个问题就是在termux中安装的一些命令在emacs里面运行报错,termux下运行正常,包括但不限于ffmpeg,mpv-x,报错信息如下:

cannot link executable: "/data/data/com.termux/files/usr/bin/mpv"
cannot locate symbol "_z17createheifdecoderv" referenced by "/system/lib64/libhwui.so"

补充一个问题,我把emacs锁定后台运行,但是隔一段时间之后会自动被结束,还是同样的,termux却是保持运行,不知道能不能让emacs同样正常在后台运行

后台无法稳定运行可能是 OEM “优化”造成的,参考一下 General | Don’t kill my app! 吧。 HEIF 哪个问题不清楚,LD_LIBRARY_PATH 是什么?

后台出问题可能是某些app过度占用资源导致的,我开了termux和emacs待机一个晚上是正常在后台运行的

更新:后台问题是我修改了Androidmanifest.xml里面,在activity: org.gnu.emacs.EmacsActivity添加了android:excludefromrecents=“true”,目的是防止他人把emacs从后台运行列表划掉,去掉这个就锁定正常了,有没有办法解决呢,因为总有不自觉的人乱搞

关于字体目录,能不能改成用setenv来设置或者把fonts变成隐藏目录.fonts

关于LD_LIBRARY_PATH,可能需要把/system/lib64添加到环境变量里面,我在eshell里面执行export LD_LIBRARY_PATH=/system/lib64然后启动mpv就正常了,跟着修改readme里面的相关设置如下:

(setenv "PATH" (format "%s:%s" "/data/data/com.termux/files/usr/bin" "/system/lib64"
                                      (getenv "PATH")))
(setenv "LD_LIBRARY_PATH" (format "%s:%s" "/data/data/com.termux/files/usr/bin" "/system/lib64"
                                      (getenv "LD_LIBRARY_PATH")))
(push "/data/data/com.termux/files/usr/bin" exec-path)

但是仍然报错,这个环境变量要怎么写才对

更新:已经解决了,环境变量和exec-path都要加/system/lib64就可以正常使用了

另外出现一个新问题,请教一下看是mpv的问题还是emacs的问题,好去报issue

播放视频报错,使用命令:mpv test.mp4,该命令等同于mpv --vo=mediacodec_embed test.mp4,报错信息:

../src/video/out/vo_mediacodec_embed.c:40: AVBufferRef *create_mediacodec_device_ref(struct vo *): assertion "vo->opts->WinID !=0 && vo->opts->WinID != -1" failed
aborted

LD_LIBRARY_PATH 不应该包括 /bin,应该设置为:

(setenv "LD_LIBRARY_PATH" (format "%s:%s" "/data/data/com.termux/files/usr/lib" "/system/lib64"
                                      (getenv "LD_LIBRARY_PATH")))

3 这个问题,可以关掉屏幕键盘吧

关掉后还是会时不时跳出来……一般插上键盘的时候就会弹出按钮来让你关闭了,不关闭的话,第一张截图弄不出来的吧……