found at https://sourceforge.net/projects/android-ports-for-gnu-emacs.
They have only been tested on arm64 Android systems running Android
-5.0 or later, so your mileage may vary, especially if you are trying
-to build Emacs for another kind of machine.
+5.0 or later, and armv7l systems running Android 13 or later, so your
+mileage may vary, especially if you are trying to build Emacs for
+another kind of machine.
To build Emacs with GnuTLS, you must unpack each of the following tar
archives in that site:
p11-kit-0.24.1-emacs.tar.gz
nettle-3.8-emacs.tar.gz
-and add the resulting folders to ``--with-ndk-path''.
+and add the resulting folders to ``--with-ndk-path''. Note that you
+should not try to build these packages separately using any
+`configure' script or Makefiles inside.
\f
text_interface->notify_conversion (*(unsigned long *) token);
}
+/* Context for complete_edit_check. */
+
+struct complete_edit_check_context
+{
+ /* The window. */
+ struct window *w;
+
+ /* Whether or not editing was successful. */
+ bool check;
+};
+
+/* If CONTEXT->check is false, then update W's ephemeral last point
+ and give it to the input method, the assumption being that an
+ editing operation signalled. */
+
+static void
+complete_edit_check (void *ptr)
+{
+ struct complete_edit_check_context *context;
+ struct frame *f;
+
+ context = ptr;
+
+ if (!context->check)
+ {
+ /* Figure out the new position of point. */
+ context->w->ephemeral_last_point
+ = window_point (context->w);
+
+ /* See if the frame is still alive. */
+
+ f = WINDOW_XFRAME (context->w);
+
+ if (!FRAME_LIVE_P (f))
+ return;
+
+ if (text_interface && text_interface->point_changed)
+ {
+ if (f->conversion.batch_edit_count > 0)
+ f->conversion.batch_edit_flags |= PENDING_POINT_CHANGE;
+ else
+ text_interface->point_changed (f, context->w, NULL);
+ }
+ }
+}
+
/* Process and free the text conversion ACTION. F must be the frame
on which ACTION will be performed.
struct window *w;
specpdl_ref count;
unsigned long token;
+ struct complete_edit_check_context context;
/* Next, process this action and free it. */
if (conversion_disabled_p ())
return NULL;
+ /* check is a flag used by complete_edit_check to determine whether
+ or not the editing operation completed successfully. */
+ context.check = false;
+
/* Make sure completion is signalled. */
count = SPECPDL_INDEX ();
record_unwind_protect_ptr (complete_edit, &token);
{
w = XWINDOW (f->old_selected_window);
buffer = XBUFFER (WINDOW_BUFFER (w));
+ context.w = w;
+
+ /* Notify the input method of any editing failures. */
+ record_unwind_protect_ptr (complete_edit_check, &context);
}
switch (operation)
break;
}
+ /* Signal success. */
+ context.check = true;
unbind_to (count, Qnil);
return w;