Open zhishi opened 1 year ago
Btw, I don't have enough knowledge about elisp details, but when I try to execute the partial code in (defun kkp--terminal-setup (), it actually works now. the part I tried run is from here:
(let ((terminal (kkp--selected-terminal)))
(set-terminal-parameter terminal 'kkp--setup-started nil)
(unless (member terminal kkp--active-terminal-list)
(let ((enhancement-flag (kkp--calculate-flags-integer)))
(unless (eq enhancement-flag 0)
(send-string-to-terminal (kkp--csi-escape (format ">%su" enhancement-flag)) terminal)
(push terminal kkp--active-terminal-list)
(set-terminal-parameter terminal 'kkp--previous-normal-erase-is-backspace-val (terminal-parameter terminal 'normal-erase-is-backspace))
(normal-erase-is-backspace-mode 1)
;; we register functions for each prefix to not interfere with e.g., M-[ I
(with-selected-frame (car (frames-on-display-list terminal))
(dolist (prefix kkp--key-prefixes)
(define-key input-decode-map (kkp--csi-escape (string prefix))
(lambda (_prompt) (kkp--process-keys prefix)))))))
So I guess there is some condition checking logic failed before that line for some reason.
Hi, thanks for opening the issue! Which versions of Emacs and wezterm are you running so I can try to reproduce it?
the emacs version is 29.1.50 (I built from 29.1 branch). the wezterm version is WezTerm-windows-20230712-072601-f4abf8fd. I'm not sure if it's easy to repro, since the emacs server need run as daemon. but I can also repro it in local mode. which maybe easier for you debug: the wezterm still same version, and I directly run emacs 29.1 in wsl, emacs -nw
and after startup it always print 0u after current cursor position,
then I run kpp-status got this result: KKP supported in this terminal. KKP not active in this terminal.
I suspect this might by a timing issue. To test this theory, please increase the value of kkp-terminal-query-timeout
to a larger number, perhaps 1 or even more, and then see if this resolves the problem.
In my own tests, I managed to occasionally replicate your kkp-status
output by setting kkp-terminal-query-timeout
to an very low value, though this wasn't consistent.
I tried increase it to 2 seconds, still same issue, and when I run kkp-status it indeed waited 2 seconds to show the result, but still:
and when emacs started it still print that 0u on cursor position.
I'm sorry, I tried but I still cannot reproduce your issue. Could you maybe once again detail the steps you use to reproduce it? For example:
And could you maybe report back what (kkp--query-terminal-sync "c")
returns when you evaluate it inside Emacs in a terminal?
I've got what seems to be a similar issue. I'm running Wezterm in Windows with Kitty keyboard enabled. I've narrowed it down to:
config = wezterm.config_builder(); config.enable_kitty_keyboard = true
)emacs -Q -nw kkp.el
(load-file "kkp.el")
M-x kkp-status
confirms kkp supported, not activeM-x kkp-enable-in-terminal
0u
is inserted at point, and (at least) \e[?
is interpreted by emacs because it brings up a list of input map translations starting with M-[kkp-terminal-query-timeout
.My Emacs replies "GNU Emacs 29.2 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.37, cairo version 1.16.0)" to M-x version
. Wezterm says it is "wezterm 20240203-110809-5046fc22".
Thanks for your attention to this issue already. I'm going to try to keep digging to see if I can resolve this myself and will let you know if I get closure.
If it helps at all, setting kkp-terminal-query-timeout
to something high like 5 also shows that kkp-enable-in-terminal
performs its steps instantly (inserting 0u
, opening the help window) but kkp-status
returns only after the timeout.
(kkp--query-terminal-sync "c")
returns (27 91 63 54 49 59 54 59 55 59 50 50 ...)
which my rusty ascii skills broke down to CSI c ? 6 1 ; 6 ; 7 ; 2 2
.
Thank you @Hajitorus for your help! I can reproduce the issue now reliably and will investigate further.
Hi, @Hajitorus @zhishi , could you maybe check if branch https://github.com/benjaminor/kkp/tree/fix-issue9 fixes the issue with your setup? I have introduced a workaround which solves the issue for me, but would like to confirm it also helps you.
doesn't work for me, maybe because I load lots of other packages? but thanks for continuing on investigation and fix.
I'm seeing the same issue. Your fix in your branch does not make a difference for me, nor does increasing the timeout. As with @zhishi , I can enable kkp by skipping this test in kkp--terminal-setup
:
(string-match-p (rx line-start
(+ digit) ;; <flags>
"u\e[?"
(+ anychar)
eol) terminal-input)
In other words, if I delete or short-circuit that test, allowing the rest of the code in that function to run, then kkp mode is enabled and appears to work.
Edit to add: I'm using Alacritty 0.13.2, but I'd happily switch to WezTerm if we could get this to work cleanly there. GNU Emacs 29.2 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.33, cairo version 1.16.0)
I'm experiencing the same issue, and the work-around proposed by @zhishi and @ark3 works for me as well. I'm also using Alacritty 0.13.2.
I'm using Alacritty 0.13.2 as well, but the workaround posted above didn't work for me. I'm using emacs 29.3 and NixOS unstable.
Update: it actually works by following @ark3's workaround. The key is that I need to run kkp--terminal-setup
directly instead of kkp-enable-in-terminal
to make it work.
I can reproduce the same behavior when kitty keyboard extension is already activated before running emacs.
printf "\e[>5u"
emacs
Hi,
I'm running emacs in a remote server, the emacs is running as daemon server, and I use wezterm terminal with ssh to login the server, then use emacsclient to start a new frame. the wezterm already set "config.enable_kitty_keyboard = true", but when I run the command kkp-status in the emacs, I got below output: KKP supported in this terminal. KKP not active in this terminal.
So looks like wezterm is recognized as support kpp, but I can't enable emacs use the enhancement features. I wonder what could be wrong here? the config I used to enable kpp: (use-package kkp :ensure t :config (global-kkp-mode +1)))