艺术家模式邪恶整合
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 次插入 .
字符。
我正在尝试通过在 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 次插入 .
字符。