怎样知道用 backspace 删除的上一个字符是什么?

怎样才能知道用 backspace 删除的上一个字符是什么? last-command-eventlast-input-event 都只能看到是按了 backspace 而已,有没有办法知道被删除的字符呢?

有趣的问题,理论上不考虑evil时 emacs 的每种删除都可以通过 undo 来恢复,但某些删除并不添加字符到 kill-ring,还真没找到 undo 的信息能不能查看…… 目前只发现 undo-tree-visualize 能直观查看……但还没找到代码查看的方法,但可能是一个办法

如果是往前删除的话,可以用 (preceding-char),加在你调用删除的这个函数的 before advice

以我为例,DELETE 运行的是 paredit-backward-delete

(define-advice paredit-backward-delete (:before (&rest _) get-prev-char)
  (message "%s" (preceding-char)))

反正每次调用都能得到之前的char,至于删不删就不知道了。。。。

1 个赞

需要知道它做什么呢?或者说你的实际需求是什么?

本来想添加一个复杂的判断条件,用来改善 scimax 中 company backend 的一些行为,现在看来不值得,条件太复杂了,收益很小。

感谢各位的回复