[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
feature/android 1e6f957c0db 4/8: Update Android port
From: |
Po Lu |
Subject: |
feature/android 1e6f957c0db 4/8: Update Android port |
Date: |
Wed, 22 Feb 2023 08:34:30 -0500 (EST) |
branch: feature/android
commit 1e6f957c0dbb7e4a5e04c20fcb797be1d98df3d8
Author: Po Lu <luangruo@yahoo.com>
Commit: Po Lu <luangruo@yahoo.com>
Update Android port
* doc/emacs/input.texi (On-Screen Keyboards): Document changes
to text conversion.
* java/org/gnu/emacs/EmacsInputConnection.java (getExtractedText)
(EmacsInputConnection):
* src/keyboard.c (read_key_sequence): Disable text conversion
after reading prefix key.
* src/textconv.c (get_extracted_text): Fix returned value when
request length is zero.
---
doc/emacs/input.texi | 8 +++++---
java/org/gnu/emacs/EmacsInputConnection.java | 20 +++++++++++++++++++-
src/keyboard.c | 23 +++++++++++++++++++++++
src/textconv.c | 3 +++
4 files changed, 50 insertions(+), 4 deletions(-)
diff --git a/doc/emacs/input.texi b/doc/emacs/input.texi
index 37167f5a9e0..dc1acaedfcb 100644
--- a/doc/emacs/input.texi
+++ b/doc/emacs/input.texi
@@ -132,9 +132,11 @@ Emacs enables these input methods whenever the buffer
local value of
derivatives of @code{text-mode} and @code{prog-mode}.
Text conversion is performed asynchronously whenever Emacs receives
-a request to perform the conversion from the input method. After the
-conversion completes, a @code{text-conversion} event is sent.
-@xref{Misc Events,,, elisp, the Emacs Reference Manual}.
+a request to perform the conversion from the input method, and Emacs
+is not currently reading a key sequence for which one prefix key has
+already been read (@pxref{Keys}.) After the conversion completes, a
+@code{text-conversion} event is sent. @xref{Misc Events,,, elisp, the
+Emacs Reference Manual}.
@vindex text-conversion-face
If the input method needs to work on a region of the buffer, then
diff --git a/java/org/gnu/emacs/EmacsInputConnection.java
b/java/org/gnu/emacs/EmacsInputConnection.java
index e2a15894695..834c2226c82 100644
--- a/java/org/gnu/emacs/EmacsInputConnection.java
+++ b/java/org/gnu/emacs/EmacsInputConnection.java
@@ -207,11 +207,19 @@ public class EmacsInputConnection extends
BaseInputConnection
public ExtractedText
getExtractedText (ExtractedTextRequest request, int flags)
{
+ ExtractedText text;
+
if (EmacsService.DEBUG_IC)
Log.d (TAG, "getExtractedText: " + request + " " + flags);
- return EmacsNative.getExtractedText (windowHandle, request,
+ text = EmacsNative.getExtractedText (windowHandle, request,
flags);
+
+ if (EmacsService.DEBUG_IC)
+ Log.d (TAG, "getExtractedText: " + text.text + " @"
+ + text.startOffset + ":" + text.selectionStart);
+
+ return text;
}
@Override
@@ -225,6 +233,16 @@ public class EmacsInputConnection extends
BaseInputConnection
return true;
}
+ @Override
+ public boolean
+ sendKeyEvent (KeyEvent key)
+ {
+ if (EmacsService.DEBUG_IC)
+ Log.d (TAG, "sendKeyEvent: " + key);
+
+ return super.sendKeyEvent (key);
+ }
+
/* Override functions which are not implemented. */
diff --git a/src/keyboard.c b/src/keyboard.c
index 9532eb70f06..69fb8ae2797 100644
--- a/src/keyboard.c
+++ b/src/keyboard.c
@@ -10053,6 +10053,13 @@ read_key_sequence (Lisp_Object *keybuf, Lisp_Object
prompt,
/* Gets around Microsoft compiler limitations. */
bool dummyflag = false;
+#ifdef HAVE_TEXT_CONVERSION
+ bool disabled_conversion;
+
+ /* Whether or not text conversion has already been disabled. */
+ disabled_conversion = false;
+#endif
+
struct buffer *starting_buffer;
/* List of events for which a fake prefix key has been generated. */
@@ -10202,6 +10209,22 @@ read_key_sequence (Lisp_Object *keybuf, Lisp_Object
prompt,
echo_local_start = echo_length ();
keys_local_start = this_command_key_count;
+#ifdef HAVE_TEXT_CONVERSION
+ /* When reading a key sequence while text conversion is in
+ effect, turn it off after the first character read. This
+ makes input methods send actual key events instead.
+
+ Make sure only to do this once. */
+
+ if (!disabled_conversion && t)
+ {
+ disable_text_conversion ();
+ record_unwind_protect_void (resume_text_conversion);
+
+ disabled_conversion = true;
+ }
+#endif
+
replay_key:
/* These are no-ops, unless we throw away a keystroke below and
jumped back up to replay_key; in that case, these restore the
diff --git a/src/textconv.c b/src/textconv.c
index 1ca5f0488f8..4b5f9e01162 100644
--- a/src/textconv.c
+++ b/src/textconv.c
@@ -1462,6 +1462,9 @@ get_extracted_text (struct frame *f, ptrdiff_t n,
/* Figure out the bounds of the text to return. */
if (n != -1)
{
+ /* Make sure n is at least 2. */
+ n = max (2, n);
+
start = PT - n / 2;
end = PT + n - n / 2;
}
- feature/android updated (a892c0487a6 -> 1d84465236f), Po Lu, 2023/02/22
- feature/android 86f10534dcc 2/8: Add cross-compilation test for cleanup attribute, Po Lu, 2023/02/22
- feature/android 137bdaced6a 1/8: Update Android port, Po Lu, 2023/02/22
- feature/android 2222c7c3356 7/8: * src/image.c (imagemagick_load_image): Check HAVE_DECL_xxx., Po Lu, 2023/02/22
- feature/android 8356412d625 3/8: Merge remote-tracking branch 'origin/master' into feature/android, Po Lu, 2023/02/22
- feature/android 767da53fa3a 6/8: Update Android port, Po Lu, 2023/02/22
- feature/android 1e6f957c0db 4/8: Update Android port,
Po Lu <=
- feature/android f3b6cbb6755 5/8: ; * src/androidmenu.c (android_menu_show): Fix typo., Po Lu, 2023/02/22
- feature/android 1d84465236f 8/8: ; Fix typo, Po Lu, 2023/02/22