如何从Atom程序包中检测剪贴板事件?

时间:2018-12-09 22:06:45

标签: javascript atom-editor

我正在为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,但我只关心用户剪切,复制和粘贴。

我可以通过订阅文档中的更改来尝试解决剪切与复制问题,但这似乎更加复杂且容易出错,我宁愿不这样做。有更好的解决方案吗?

0 个答案:

没有答案