MacOS 下 Emacs 内使用 rime 问题请教

最近在 MacOS 下 emacs 内使用 rime(mac下叫做 squirrel)时,一个屏幕的时候,候选框总是在屏幕的左下角(贴边);多个屏幕的时候,始终显示在 main display 的屏幕左下角(贴边)。

试过 emacs@31 emacs@30 以及 emacs -Q 都是这样,其他的 app 内均没有这种情况。

论坛发帖就是想看看是否有人遇到过相同的情况,是否有解决方案。

MacOS: Let EmacsView implement NSTextInputClient · emacs-mirror/emacs@ceb5a15 · GitHub 是这个 commit 导致的 rime 候选框的问题

diff --git a/src/nsterm.m b/src/nsterm.m
index b56c587bc69..b883e605a5b 100644
--- a/src/nsterm.m
+++ b/src/nsterm.m
@@ -7064,7 +7064,7 @@ - (void) setMarkedText: (id) string
 - (NSRect) firstRectForCharacterRange: (NSRange) range
 			  actualRange: (nullable NSRangePointer) actualRange
 {
-  return NSZeroRect;
+  return [self firstRectForCharacterRange: range];
 }
 
 #endif /* NS_IMPL_COCOA */

用这个 patch 可以修复这个问题

1 个赞

哇,原来是这个问题

就是因为这个,换成了 emacs-rime 了

还要不要换回去啊

已经 push 到 master 了,更新 emacs 就好了。