您可以尝试一下运行 `(pgtk-use-im-context nil)’ 后还会出现这个问题吗?我怀疑又是 GTK 输入法系统在捣鬼,真没法解决。
还有可能是 preedit text event 导致的问题,这种情况下需要教 key-chord 忽略 `pgtk-preedit-text’ 这种 event
您可以尝试一下运行 `(pgtk-use-im-context nil)’ 后还会出现这个问题吗?我怀疑又是 GTK 输入法系统在捣鬼,真没法解决。
还有可能是 preedit text event 导致的问题,这种情况下需要教 key-chord 忽略 `pgtk-preedit-text’ 这种 event
谢谢,好像直接没法使用输入法了
还可以尝试让 key-chord 的 input-method-function 忽略 pgtk-preedit-text 这种 event
请教一下,要怎么做呢?
read-event 可能 return 一个 event-basic-type 为 `pgtk-preedit-text’ 的事件,收到时需要重新 sit-for 和 read-event
同时也建议使用 `read-event’ 的 seconds 参数替代 `sit-for’
好的,谢谢,我试试。
没问题了,谢谢……
(setq input-method-function
(lambda (first-char)
(if (memq first-char '(?d ?f))
(let ((input-method-function nil)
(next-char (read-event nil nil 0.05)))
(if (and (memq next-char '(?d ?f))
(not (eq first-char next-char)))
(list 'key-chord ?d ?f)
(and next-char (push next-char unread-command-events))
(list first-char)))
(list first-char))))
代码放这给需要的人参考。
macOS (10.13.6) 下编译失败:
$ ./configure --prefix=$HOME/.local --disable-silent-rules --with-gnutls --with-json --with-mailutils --with-modules --with-ns --disable-ns-self-contained --with-rsvg --with-xml2 --with-cairo --without-dbus
...
config.status: creating src/config.h
config.status: src/config.h is unchanged
config.status: executing src/epaths.h commands
Makefile:1248: *** missing separator. Stop.
config.status: error: 'src/epaths.h' could not be made.
$ sed -n '1248p' Makefile
@GSETTINGS_RULES@
make extraclean之类先
make bootstrap (macos 也不能编译 pgtk,直接用 NS port 吧)
我当时 make 什么 clean 都不行,直接力大砖飞 git clean 了,如果都不是通过 git clone 的,直接重下一个就行。
运行了 make bootstrap 吗?
任何 make 指令都会报错,因为 Makefile 中的 @GSETTINGS_RULES@
没有展开,屏蔽这句就可以 make 了。
是不是应该在 Makefile.in 中加个条件判断?例如:
if HAVE_GSETTINGS
@GSETTINGS_RULES@
endif
这个我倒没试过,git clean 弄好之后也没机会试了。这个问题后来也在maillist上看到过 Re: Makefile:1248: *** missing separator. Stop. 。现在猜测应该是要autogen.sh要重新生成autoconf/automake那几个东西。
首先,makefile 是这样写 if 的: ifneq ($(HAVE_GSETTINGS),no)
而 GSETTINGS_RULES 会被 m4/gsettings.m4 展开,生成的 Makefile 一般看不到。 这些编译错误只需要通过 make bootstrap 重新生成 Makefile 就能解决。
@oldosfan 大佬,借这个帖请教一个Bug,可能和pgtk有关。
我用X11-forwarding运行远程的Emacs,本地配置是Windows 8和MobaXterm。Emacs是用Arch Linux上的emacs-native-comp-git-enhanced。每次切换窗口,Minibuffer里都显示dead-circumflex-
,再按键就必须取消掉这个前缀。用emacs -Q
也这样。编译细节如下:
Version of this emacs:
GNU Emacs 29.0.50 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.31, cairo version 1.17.4)
of 2022-01-03
Configuration options:
--prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib --localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games --with-modules --without-libotf --without-m17n-flt --without-gconf --without-gsettings --enable-autodepend --with-native-compilation --with-pgtk --without-xaw3d --with-sound=alsa --with-xwidgets --without-compress-install '--program-transform-name=s/\([ec]tags\)/\1.emacs/' CC=/usr/bin/clang 'CFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection' LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now 'CPP=/usr/bin/clang -E' CXX=/usr/bin/clang++ 'CXXFLAGS=-march=x86-64 -mtune=generic -O2 -pipe -fno-plt -fexceptions -Wp,-D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security -fstack-clash-protection -fcf-protection -Wp,-D_GLIBCXX_ASSERTIONS'
您能不能给个debug思路,谢谢
这可能是 mobaxterm 的 bug 吧,可以试试正常的 X port
说实话,如果没有用 Wayland 还是建议不使用 PGTK,用户体验会好很多
除了这个Bug,没有感觉其他的异常。
最新的版本在X下使用pgtk会弹出一个对话框警告,请问是否有选项可以关掉这个警告呢?