pgtk分支被合并了

您可以尝试一下运行 `(pgtk-use-im-context nil)’ 后还会出现这个问题吗?我怀疑又是 GTK 输入法系统在捣鬼,真没法解决。

还有可能是 preedit text event 导致的问题,这种情况下需要教 key-chord 忽略 `pgtk-preedit-text’ 这种 event

1 个赞

谢谢,好像直接没法使用输入法了

还可以尝试让 key-chord 的 input-method-function 忽略 pgtk-preedit-text 这种 event

请教一下,要怎么做呢?

read-event 可能 return 一个 event-basic-type 为 `pgtk-preedit-text’ 的事件,收到时需要重新 sit-for 和 read-event

2 个赞

同时也建议使用 `read-event’ 的 seconds 参数替代 `sit-for’

2 个赞

好的,谢谢,我试试。


没问题了,谢谢……

(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))))

代码放这给需要的人参考。

2 个赞

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@

@oldosfan

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 就能解决。

1 个赞

@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思路,谢谢 :innocent:

这可能是 mobaxterm 的 bug 吧,可以试试正常的 X port

说实话,如果没有用 Wayland 还是建议不使用 PGTK,用户体验会好很多

除了这个Bug,没有感觉其他的异常。

最新的版本在X下使用pgtk会弹出一个对话框警告,请问是否有选项可以关掉这个警告呢?