我正在为Atom编辑器创建一个程序包。每当用户剪切,复制或粘贴文本时,我都想调用一个函数。理想情况下,atom.clipboard
将具有三个我可以订阅的事件,但事实并非如此。
我尝试使用copy
事件,如:
atom.views.getView(atom.workspace).addEventListener("copy", console.log);
...但是这不起作用。该事件永远不会触发。
我得到的最接近的是通过重写atom.clipboard.write
方法:
const clipboard = atom.clipboard;
const write = clipboard.write;
clipboard.write = (text, metadata = {}) => {
console.log(text);
write.call(clipboard, text, metadata);
};
此代码基于atom-clipboard-plus软件包中的某些代码。基本上是在更改clipboard.write
,以便在用户复制任何内容时都运行我的一些代码。可以,但是有两个问题:
clipboard.write
,但我只关心用户剪切,复制和粘贴。我可以通过订阅文档中的更改来尝试解决剪切与复制问题,但这似乎更加复杂且容易出错,我宁愿不这样做。有更好的解决方案吗?