艺术家模式邪恶整合

Artist Mode Evil Integration

我正在尝试通过在 evil-normal-mode 中使用 j,h,k,l 键向左、向下、向上和向右移动来在 emacs picture-mode 中绘制 ascii 艺术。

为此,我使用了这些绑定:

(nmap :keymaps 'picture-mode-map "k" (lambda () (picture-movement-up) (picture-self-insert (string-to-char "."))) "j" (lambda () (picture-movement-down) (picture-self-insert (string-to-char "."))) "h" (lambda () (picture-movement-left) (picture-self-insert (string-to-char "."))) "l" (lambda () (picture-movement-right) (picture-self-insert (string-to-char "."))))

我期望的是 . 的单次插入,并使用相应的 picture-movement 函数更改动作。

然而,当我尝试这些绑定时,插入文本的方向是正确的,但一次插入了 46 个字符。字符是我按的键,而不是句点。

例如,当我按下 l 时,我会立即得到 llllllllllllllllllllllllllllllllllllllllllllll 而不是随着我继续按下 l.

而只是逐渐连续的句号

为什么我会出现这种行为,我该如何实现预期的行为?

ASCII 字符 . 的整数值为 46。picture-self-insert 函数将其参数作为计数与 last-command-event 变量的值一起传递给 picture-insert 函数。对于您的情况,这会导致 last-command-event 的值插入 46 次,这恰好是您按下的任何键。

在您的 lambda 函数中,将 (picture-self-insert (string-to-char ".")) 替换为:

(picture-insert ?. 1)

这将执行 1 次插入 . 字符。