noita.el: 面向键盘编程

几天前,我在看LdBeth(键盘领域大神)关于如何使用Emacs进行Teco编程的动态的时候,突然想到了一个糖分超标的点子。这个点子大致可以用下面的话描述:

诶,要是我们把作为不变量的key嵌入到“editor映射”的像空间会发生什么呢?

大概是下面这种意义不明的效果了(不要对高亮算法抱有期望,它们是按哈希随机上色的)。

我们在像空间里录制key,这样每一个key都变成了可以自由组合的泛函。当你觉得某个记不住但是又不想kmacro edit写命令流的时候,只需要跳到noita buffer里面找一找,找到你想调用的键序列,然后按下C-c C-c,魔法就会生效了。

诶,那么这个功能和kmacro-edit-lossage有什么不同呢?

  • 连续,持续录制,不需要手动显式定义kmacro
  • 紧,只有在你进行一次noita-project的动作后才会发生换行,但可以自由换行
  • 无穷,没有上下文长度限制
  • buffer local

这就是editor映射在buffer上的解析延拓,全局lossage变成局部的distribution。

我最初的计划是利用oboe-lift实现快照和帧映射机制。当前的实现里是通过buffer local vairable识别buffer的,因此noita buffer不像oboe buffer一样有唯一的buffer名字引用。令人伤心的是,如果没有一个oboe这样的buffer管理框架提供服务,我们无法识别buffer,也就无法全局追踪每个buffer window上的key。比如说,按下C-x 8 RET,此时会通过minibuffer window读取key,这时的输入无法通过原来的image buffer追踪到。所以当前能够的记录的键很有限,对于需要通过minibuffer读取参数的命令一般是不行的。所以在实用性这方面其实表现目前还不如kmacro。

5 个赞