如何使用 ibus-table 停止自动候选插入?

如何使用 ibus-table 停止自动候选插入?

我正在使用ibus-table(具体来说ibus-table-latex),并希望禁用以下行为:当我开始输入触发ibus-table候选列表的内容时(例如 的任何部分\rightarrow,如\rightar),候选列表将打开,并且最佳匹配候选已被“预先选定”以供插入。请参阅以下屏幕截图:

ibus-table-latex 输入示例

我的问题是,即使我按下“有效输入字符”列表中没有的键,例如%!,也会插入这个预先选定的最佳候选字符,而不是我输入的内容。因此,例如,输入\rightarr!会得到→!,但我希望在这种情况下显示的文本与输入的文本完全一致。

我尝试了几个不同的选择:

  • 我注意到按下Enter会执行与我想要的操作类似的操作(不确定这从何而来;首选项中的键绑定选项卡上没有该功能):它会保留迄今为止输入的文本并关闭候选列表。但是,我不想必须按下特殊键才能执行此操作。
  • “提交预编辑”键绑定(默认:Shift)有点类似,但它不使用迄今为止输入的字符,而是“自动完成”当前候选的文本,但不将其替换为相应的符号。这似乎不符合我的要求。
  • “取消”键绑定(默认Esc:)不会选择候选词,而是完全删除输入的文本,所以这没有帮助。
  • “提交”键绑定(默认值Space:)立即使用最佳候选。

我发现的另一个可能相关的事情是偏好设置中的“自动选择”设置:

ibus-table-latex 偏好设置

但是,它被设置为“否”,所以我不认为这会导致我的问题。

答案1

正如 Gunnar Hjalmarsson 所建议的,我在 GitHub 上打开了一个问题询问这个问题。目前看来,如果不修改代码,这是不可能的ibus-table,但必要的改变很少并且可以轻松地手动完成:

diff --git a/engine/table.py b/engine/table.py
index 6953e6f..4dcdc7a 100644
--- a/engine/table.py
+++ b/engine/table.py
@@ -4172,7 +4172,7 @@ class TabEngine(IBus.EngineSimple): # type: ignore
             if DEBUG_LEVEL > 0:
                 LOGGER.debug(
                     'trailing invalid input: keychar=%s', keychar)
-            if not self._candidates:
+            if not self._candidates or True:
                 self.commit_string(self.get_preedit_tabkeys_complete())
             else:
                 self.commit_to_preedit()

相关内容