From 0eb1f4e57125117006f109a5549082008fc9fbb1 Mon Sep 17 00:00:00 2001 From: Po Lu Date: Fri, 26 May 2023 15:20:39 +0800 Subject: [PATCH] Allow starting Emacs --debug-init on Android * doc/emacs/android.texi (Android Troubleshooting): Document `debug-init' option. * java/AndroidManifest.xml.in (EmacsLauncherPreferencesActivity): New activity. Export on systems older than Android 7.0. * java/org/gnu/emacs/EmacsActivity.java (onCreate): Adjust for string startup argument. * java/org/gnu/emacs/EmacsLauncherPreferencesActivity.java: New file. * java/org/gnu/emacs/EmacsPreferencesActivity.java (EmacsPreferencesActivity): Don't make final. (startEmacsQ): Give start-up argument as an argument, not as a boolean. (startEmacsDebugInit): New function. (onCreate): Register new listener; make final. * java/org/gnu/emacs/EmacsService.java (onCreate): Pass extraStartupArgument. * java/org/gnu/emacs/EmacsThread.java (EmacsThread): Rename startDashQ to extraStartupArgument. (run): Adjust accordingly. * java/res/values-v24/bool.xml: * java/res/values/bool.xml: * java/res/values/strings.xml: New files. * java/res/xml/preferences.xml: Add new option. Move string resources around. --- doc/emacs/android.texi | 14 +++--- java/AndroidManifest.xml.in | 17 ++++++++ java/org/gnu/emacs/EmacsActivity.java | 8 ++-- .../EmacsLauncherPreferencesActivity.java | 31 +++++++++++++ .../gnu/emacs/EmacsPreferencesActivity.java | 41 +++++++++++++++--- java/org/gnu/emacs/EmacsService.java | 7 ++- java/org/gnu/emacs/EmacsThread.java | 19 ++++---- java/res/drawable/emacs_wrench.png | Bin 0 -> 24996 bytes java/res/values-v24/bool.xml | 22 ++++++++++ java/res/values/bool.xml | 1 + java/res/values/strings.xml | 39 +++++++++++++++++ java/res/xml/preferences.xml | 12 ++--- 12 files changed, 180 insertions(+), 31 deletions(-) create mode 100644 java/org/gnu/emacs/EmacsLauncherPreferencesActivity.java create mode 100644 java/res/drawable/emacs_wrench.png create mode 100644 java/res/values-v24/bool.xml create mode 100644 java/res/values/strings.xml diff --git a/doc/emacs/android.texi b/doc/emacs/android.texi index d7fadd69e4b..d94b91c7ab7 100644 --- a/doc/emacs/android.texi +++ b/doc/emacs/android.texi @@ -608,16 +608,20 @@ to provide that style. @cindex troubleshooting, android @cindex emacs -Q, android +@cindex emacs --debug-init, android Since Android has no command line, there is normally no way to specify command-line arguments when starting Emacs. This is very nasty when you make a mistake in your Emacs initialization files that prevents Emacs from starting up at all, as the system normally prevents other programs from accessing Emacs's home directory. - - However, Emacs can be started with the equivalent of the -@code{--quick} option (@pxref{Initial Options}) through a special -preferences screen, which can be accessed through the Emacs ``app -info'' page in the system settings application. +@xref{Initial Options}. + + However, Emacs can be started with the equivalent of either the +option @code{--quick}, or @code{--debug-init}, through a special +preferences screen. Under Android 7.0 and later, this can be accessed +through the Emacs ``app info'' page in the system settings program; on +older systems, this is displayed as a separate icon on the desktop +labeled ``Emacs options''. Consult the manufacturer of your device for more details, as how to do this varies by device. diff --git a/java/AndroidManifest.xml.in b/java/AndroidManifest.xml.in index f7f834e7582..082c4c9373e 100644 --- a/java/AndroidManifest.xml.in +++ b/java/AndroidManifest.xml.in @@ -180,6 +180,23 @@ along with GNU Emacs. If not, see . --> + + + + + + + + + + . */ + +package org.gnu.emacs; + +/* This class only exists because EmacsPreferencesActivity is already + defined as an activity, the system wants a new class in order to + define a new activity, and only activities can be enabled or + disabled per the API level of the host. */ + +public final class EmacsLauncherPreferencesActivity + extends EmacsPreferencesActivity +{ + +} diff --git a/java/org/gnu/emacs/EmacsPreferencesActivity.java b/java/org/gnu/emacs/EmacsPreferencesActivity.java index 70934fa4bd4..7e67cc3679b 100644 --- a/java/org/gnu/emacs/EmacsPreferencesActivity.java +++ b/java/org/gnu/emacs/EmacsPreferencesActivity.java @@ -42,10 +42,11 @@ import android.preference.*; Unfortunately, there is no alternative that looks the same way. */ @SuppressWarnings ("deprecation") -public final class EmacsPreferencesActivity extends PreferenceActivity +public class EmacsPreferencesActivity extends PreferenceActivity { - /* Restart Emacs with -Q. Call EmacsThread.exit to kill Emacs now, and - tell the system to EmacsActivity with some parameters later. */ + /* Restart Emacs with -Q. Call EmacsThread.exit to kill Emacs now, + and tell the system to start EmacsActivity with some parameters + later. */ private void startEmacsQ () @@ -55,7 +56,24 @@ public final class EmacsPreferencesActivity extends PreferenceActivity intent = new Intent (this, EmacsActivity.class); intent.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); - intent.putExtra ("org.gnu.emacs.START_DASH_Q", true); + intent.putExtra ("org.gnu.emacs.STARTUP_ARGUMENT", "--quick"); + startActivity (intent); + System.exit (0); + } + + /* Restart Emacs with `--debug-init'. Call EmacsThread.exit to kill + Emacs now, and tell the system to EmacsActivity with some + parameters later. */ + + private void + startEmacsDebugInit () + { + Intent intent; + + intent = new Intent (this, EmacsActivity.class); + intent.addFlags (Intent.FLAG_ACTIVITY_NEW_TASK + | Intent.FLAG_ACTIVITY_CLEAR_TASK); + intent.putExtra ("org.gnu.emacs.STARTUP_ARGUMENT", "--debug-init"); startActivity (intent); System.exit (0); } @@ -89,7 +107,7 @@ public final class EmacsPreferencesActivity extends PreferenceActivity } @Override - public void + public final void onCreate (Bundle savedInstanceState) { Preference tem; @@ -111,7 +129,6 @@ public final class EmacsPreferencesActivity extends PreferenceActivity items. */ tem = findPreference ("start_quick"); - listener = new Preference.OnPreferenceClickListener () { @Override public boolean @@ -123,9 +140,19 @@ public final class EmacsPreferencesActivity extends PreferenceActivity }; tem.setOnPreferenceClickListener (listener); + tem = findPreference ("start_debug_init"); + listener = new Preference.OnPreferenceClickListener () { + @Override + public boolean + onPreferenceClick (Preference preference) + { + startEmacsDebugInit (); + return true; + } + }; + tem.setOnPreferenceClickListener (listener); tem = findPreference ("erase_dump"); - listener = new Preference.OnPreferenceClickListener () { @Override public boolean diff --git a/java/org/gnu/emacs/EmacsService.java b/java/org/gnu/emacs/EmacsService.java index 30ef71540a9..bb17d27bcf8 100644 --- a/java/org/gnu/emacs/EmacsService.java +++ b/java/org/gnu/emacs/EmacsService.java @@ -79,7 +79,10 @@ public final class EmacsService extends Service { public static final String TAG = "EmacsService"; public static volatile EmacsService SERVICE; - public static boolean needDashQ; + + /* If non-NULL, an extra argument to pass to + `android_emacs_init'. */ + public static String extraStartupArgument; private EmacsThread thread; private Handler handler; @@ -231,7 +234,7 @@ public final class EmacsService extends Service (float) pixelDensityY, classPath, EmacsService.this); } - }, needDashQ, + }, extraStartupArgument, /* If any file needs to be opened, open it now. */ EmacsOpenActivity.fileToOpen); thread.start (); diff --git a/java/org/gnu/emacs/EmacsThread.java b/java/org/gnu/emacs/EmacsThread.java index d175fe332b5..468c6530af0 100644 --- a/java/org/gnu/emacs/EmacsThread.java +++ b/java/org/gnu/emacs/EmacsThread.java @@ -29,8 +29,9 @@ public class EmacsThread extends Thread { private static final String TAG = "EmacsThread"; - /* Whether or not Emacs should be started -Q. */ - private boolean startDashQ; + /* Whether or not Emacs should be started with an additional + argument, and that additional argument if non-NULL. */ + private String extraStartupArgument; /* Runnable run to initialize Emacs. */ private Runnable paramsClosure; @@ -40,10 +41,10 @@ public class EmacsThread extends Thread public EmacsThread (EmacsService service, Runnable paramsClosure, - boolean startDashQ, String fileToOpen) + String extraStartupArgument, String fileToOpen) { super ("Emacs main thread"); - this.startDashQ = startDashQ; + this.extraStartupArgument = extraStartupArgument; this.paramsClosure = paramsClosure; this.fileToOpen = fileToOpen; } @@ -56,18 +57,20 @@ public class EmacsThread extends Thread if (fileToOpen == null) { - if (!startDashQ) + if (extraStartupArgument == null) args = new String[] { "libandroid-emacs.so", }; else - args = new String[] { "libandroid-emacs.so", "-Q", }; + args = new String[] { "libandroid-emacs.so", + extraStartupArgument, }; } else { - if (!startDashQ) + if (extraStartupArgument != null) args = new String[] { "libandroid-emacs.so", fileToOpen, }; else - args = new String[] { "libandroid-emacs.so", "-Q", + args = new String[] { "libandroid-emacs.so", + extraStartupArgument, fileToOpen, }; } diff --git a/java/res/drawable/emacs_wrench.png b/java/res/drawable/emacs_wrench.png new file mode 100644 index 0000000000000000000000000000000000000000..50572d3bed1ed18fca671d48d4020aa0b29a71b5 GIT binary patch literal 24996 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. --> + + + false + diff --git a/java/res/values/bool.xml b/java/res/values/bool.xml index d37eab745c0..2b253824e29 100644 --- a/java/res/values/bool.xml +++ b/java/res/values/bool.xml @@ -19,4 +19,5 @@ along with GNU Emacs. If not, see . --> false + true diff --git a/java/res/values/strings.xml b/java/res/values/strings.xml new file mode 100644 index 00000000000..36a47be6c84 --- /dev/null +++ b/java/res/values/strings.xml @@ -0,0 +1,39 @@ + + + + + Restart Emacs with -Q + + + Restart Emacs, but do not load site lisp or init files. + + + Restart Emacs with --debug-init + + + Restart Emacs, and display the debugger should an error occur while loading initialization files. + + + Delete dump file + + + Remove the dumped state created when Emacs was installed. + + diff --git a/java/res/xml/preferences.xml b/java/res/xml/preferences.xml index f0c3abb52e7..d52d28816e5 100644 --- a/java/res/xml/preferences.xml +++ b/java/res/xml/preferences.xml @@ -19,10 +19,12 @@ along with GNU Emacs. If not, see . --> - + android:title="@string/start_quick_title" + android:summary="@string/start_quick_caption"/> + + android:title="@string/erase_dump_title" + android:summary="@string/erase_dump_caption"/> -- 2.39.2