Sublime text 4 插件开发:内存复制问题

Sublime text 4 plugin development: memory copy problem

提问人:Jack Crowley 提问时间:10/13/2023 更新时间:10/13/2023 访问量:26

问:

我正在 Ubuntu 22.04 上为 sublime 4 创建一个插件。该插件使用 pyclip (https://pypi.org/project/pyclip/) 从“剪贴板”复制文本,并在将文本插入当前视图编辑缓冲区之前对文本执行某些格式化功能。

注意:要在 Ubuntu 上工作,您需要安装 xclip 或 xsel。我正在使用 xclip

标准用例是:

  1. 用户在浏览器中从网页复制文本块
  2. 在 sublime 中,用户运行调用插件的相应命令。
  3. 该插件调用 pyclip 函数来获取复制的文本: copied_text = pyclip.paste(文本=True)
  4. 该插件对文本执行一些格式化
  5. 该插件将结果粘贴到当前光标位置的当前崇高窗口中。

每当源程序是浏览器、另一个文本编辑器、电子表格等时,这都非常有效。 但是,如果在剪切和粘贴操作中复制到内存缓冲区的文本源是 sublime,那么在插件中调用以获取文本的函数 pyclip.paste(text=True) 永远不会返回,继续的唯一方法是重新启动 sublime。

如果有人对问题可能是什么有任何想法,将不胜感激!

我已经用 pyperclip 而不是 pyclip 和 xsel 而不是 xclip 干燥了它。问题完全相同。如果复制和粘贴操作的源程序是 sublime,那么 sublime 就会冻结。我也在 ubuntu 20.04 上尝试过这个,结果相同。

ubuntu sublime-text-plugin pyperclip xclip pyclips

评论

1赞 Keith Hall 10/13/2023
您是否考虑过仅使用 Sublime 的 API 来获取剪贴板文本而不是 Python 包?sublimetext.com/docs/......
0赞 OdatNurd 10/13/2023
正如@KeithHall提到的,我还想问这个库提供了哪些 API 无法实现的功能。您是否需要尝试获取非文本数据或其他东西?
0赞 Jack Crowley 10/20/2023
谢谢你的建议。崇高的 api 函数效果很好。

答: 暂无答案