gpt4 book ai didi

python - 在 Sublime Text 2 插件中访问快速面板

转载 作者:太空狗 更新时间:2023-10-29 22:13:46 24 4
gpt4 key购买 nike

我正在学习如何创建 Sublime Text 2 插件。我想做的一件事是获取任何突出显示的文本,检查网站是否会在该地址返回 200,然后将一些信息放入快速面板(是的,我知道我应该做 url在线程中查找,这样它就不会阻塞主 UI)。目前我有:

import sublime
import sublime_plugin
import urllib2

class CheckUrlPanel(sublime_plugin.WindowCommand):

def quick_panel(self, messages, flags):
self.window.show_quick_panel(messages, None, flags)

class CheckUrlsCommand(sublime_plugin.TextCommand):

def run(self, edit):
urls = []
selections = self.view.sel()
for selection in selections:
urls.append(self.view.substr(selection))

messages = self.validate_urls(urls)
panel = CheckUrlPanel()
panel.quick_panel(messages, sublime.MONOSPACE_FONT)

def validate_urls(self, urls):
messages = []
for url in urls:
try:
request = urllib2.Request(url, headers={ "User-Agent" : "Sublime URL Checker" })
response = urllib2.urlopen(request, timeout=3)
message = '"%s" is a valid URL.' % url
except Exception as (e):
message = '"%s" is an invalid URL.' % url

messages.append(message)

return messages

我得到的错误是:

Traceback (most recent call last):
File "./sublime_plugin.py", line 362, in run_
File "./CheckUrls.py", line 19, in run
panel = CheckUrlPanel()
TypeError: __init__() takes exactly 2 arguments (1 given)

问题是我不知道如何正确初始化 WindowCommand 类,而且我似乎找不到任何关于它的文档。非常感谢此处的任何帮助或提示。

最佳答案

您不需要创建另一个 WindowCommand 实例来完成此操作。顺便说一句,您通常会编写命令但不会在您的插件中创建它们的实例。它们通过键绑定(bind)或 View/Window/sublime 的 run_command 方法实例化和调用。

您可以在 check_urls 命令处理程序中获取当前事件窗口并显示一个快速面板。

window = sublime.active_window()
window.show_quick_panel(messages, None, sublime.MONOSPACE_FONT)

这是一个完整的来源:

import sublime
import sublime_plugin
import urllib
from urllib.request import urlopen

class CheckUrlsCommand(sublime_plugin.TextCommand):

def run(self, edit):
urls = []
selections = self.view.sel()
for selection in selections:
urls.append(self.view.substr(selection))

messages = self.validate_urls(urls)
window = sublime.active_window()
window.show_quick_panel(messages, None, sublime.MONOSPACE_FONT)

def validate_urls(self, urls):
messages = []
for url in urls:
try:
response = urlopen(request, timeout=3)
message = '"%s" is a valid URL.' % url
except Exception as e:
message = '"%s" is an invalid URL.' % url

messages.append(message)

return messages

关于python - 在 Sublime Text 2 插件中访问快速面板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12976008/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com