Emacsは、ソースコードやパッケージマネージャー経由でAndroidデバイスにインストールされるわけではありません。代わりに、別のオペレーティングシステム上でAndroid向けにコンパイルされ、生成されたバイナリがアーカイブにまとめられた後、それがシステムに転送されてインストールされます。
インストール後、システムはデスクトップ(いわゆる「ホーム画面」)にアプリケーションアイコンを配置します。その後、そのアプリケーションアイコンをクリックするとEmacsが起動します。
起動時、Emacsはシステムログバッファにメッセージを表示します。起動時にそのバッファを読み取るには、別のコンピュータにAndroid Debug
Bridge (adb) ユーティリティがインストールされている必要があります。
Androidシステムで「USBデバッグ」機能を有効にし、adbユーティリティがインストールされた別のシステムにUSBで接続すると、その別のシステムで以下のコマンドを実行することでログを確認できます。
$ adb logcat | grep -E "(android_run_debug_thread|[Ee]macs)"
GNU/LinuxまたはUnixシステムにadbユーティリティがインストールされていることを前提に、以下の手順に従ってデバイスに接続してください。
adb shell
を実行してください。接続済みデバイスへのアクセス権限がまだ付与されていないため、実行に失敗するかフリーズします。
インストールされている Android や adb
のバージョンによっては、他にも接続を確立する方法があるかもしれません。詳細については、公式ドキュメント https://developer.android.com/studio/command-line/adb
を参照してください。
Emacs が起動したら、非同期シェルコマンドとして logcat
コマンドを実行するだけで(Emacs からシェルコマンドを実行する
を参照)、ログバッファが表示されます。
他のAndroidプログラムからemacsclientプログラム(Emacsをサーバーとして使用するを参照)を起動する方法はないため、Emacsはemacsclientプログラムのラッパーを提供しており、これは任意のファイルを開くことができるアプリケーションとしてシステムに登録されています。
そのラッパーがファイルを開くプログラムとして選択されると、オプション --reuse-frame、--timeout=10、--no-wait
および開くファイルの名前を指定して emacsclient
を呼び出します。その後、正常に終了すると、フォーカスは開いている任意の Emacs フレームに移動します。
ただし、ラッパーを開いた時点で Emacs が起動していない場合は、Emacs を起動し、開くべきファイルを引数として渡します。なお、その Emacs がさらに Emacs サーバーを起動しなかった場合、その後ラッパーでファイルを開こうとしても失敗します。
一部のファイルは、通常のファイルシステムAPIとは独立してシステムがアクセスを提供する「コンテンツ識別子」としてEmacsに渡されます。Emacsは、/content/by-authority および /content/by-authority-named という名前の擬似ディレクトリを使用してこれらのファイルにアクセスします。これらのディレクトリの内容についていかなる想定もせず、また、自身でファイルを開けようとしないでください。
この機能は Android 4.3 以前では提供されておらず、その場合はこうしたファイルは開く前に一時ディレクトリにコピーされます。
Emacsは、通常のテキストファイルを開くだけでなく、emacsclientラッパーを「org-protocol」リンクを開くことができるプログラムとしても登録しています(The Org ManualのProtocolsを参照してください)。
さらに、ラッパーは mailto URI
にメールを送信できるプログラムとしても登録されており、そのような URL を開くために呼び出された際は、その URI を第1引数として関数 message-mailto を呼び出します。 この機能は、Emacs
サーバーが既に起動していない場合には動作しません。