editor — 用于编辑Pythonista文本编辑器的功能函数
editor
模块提供对您当前正在编辑的脚本的访问。您可以获取并设置所选范围,并替换给定范围内的文本。
请注意:到目前为止,无效的选择和文本操作函数的输入值(例如,超出范围的输入值)将被默认忽略。这可能会在将来的版本中更改。
与可定制操作菜单(v1.1中的新增功能)结合使用时,该模块特别有用。您可以将库中的任何脚本添加到菜单中,无论当前正在编辑哪个脚本,都可以直接从编辑器中快速运行它。该菜单可通过设置进行编辑(编辑器>操作菜单)。
这为扩展Pythonista应用本身的功能提供了很多非常有趣的可能性。为了给您一些启发,以下几段代码可以用作操作:
1 | # 在StackOverflow中搜索所选文本 |
此示例在弹出的问答网站StackOverflow中搜索所选文本。如果未选择任何文本,则会弹出一个对话框,询问是否应打开主页。
顺便说一句,该webbrowser
模块同样可以运行自定义应用程序的URL方案。例如,这样你就可以用webbrowser.open('tweetbot:///post?text=Hello)
打开TweetBot。
以下示例显示了如何使用get_line_selection()
便捷功能注释/取消注释选定的行。它不需要您全选所需要注释掉的整行,它可以在您当前选中的所有行上起作用。
1 | # 注释/取消注释选定的行 |
editor
模块提供以下功能:
editor.get_path()
返回编辑器中当前打开的脚本的绝对文件路径。
如果当前没有打开任何脚本,则返回None
。
editor.get_text()
返回当前正在编辑的脚本的整个文本。
请注意,这可能与从get_path()
返回的文件读取有所不同,因为可能尚未保存所有更改。
editor.get_selection()
将选定的范围以(start,end)
形式的元组返回。
如果当前在编辑器中没有打开文件,则返回None
。
editor.get_line_selection()
以形式(start,end)
的元组返回属于当前选择的所有行的范围
如果当前在编辑器中没有打开文件,则返回None
。
editor.set_selection(start, end=None, scroll=False)
在编辑器中设置所选范围。
开始和结束必须是整数。如果end
为None
,则插入光标将定位在开始位置而不选择任何文本。
editor.replace_text(start, end, replacement)
使用replacement
替换给定范围内的文本。
要插入/追加文本,可以将范围长度设为0(即start==end
)。
用户可以使用常规撤消键撤消所有更改。每个单独的调用都是单个撤消步骤,无论受影响的字符数是多少。
editor.make_new_file([name, content])
创建一个新文件,然后在编辑器中将其打开。
如果已经存在具有给定名称的文件,则会自动给文件名添加数字后缀。 content
是包含新文件内容的字符串。如果省略,将创建一个空文件。
当前文件将在打开新文件之前自动保存。
editor.open_file(name, new_tab=False)
在编辑器中打开具有给定名称的文件。
名称可以是相对于脚本库的根目录的路径文件名,也可以是绝对路径。
.py
扩展名可以省略。当前在编辑器中已打开的文件将被自动保存。
editor.apply_ui_theme(ui_view, theme_name=None)
使用给定的UI主题设置ui.View
(及其后代)的样式。
如果theme_name
为None
(默认值),则使用当前选择的主题。否则,它应该是设置中显示的主题名称。
editor.present_themed(ui_view, theme_name=None, **kwargs)
使用给定的UI主题设置ui.View
(及其后代)的样式(通过 apply_ui_theme()
),并显示视图。
除了title_bar_color
和title_color
基于主题自动设置的之外,kwargs
参数都传递给ui.View.present()
。
editor.annotate_line(lineno, text=’’, style=’warning’, expanded=True, filename=None, scroll=False)
在标签中用标签注释代码行。
lineno
是文件中从1开始计算的行号。
样式可以是‘success
’, ‘warning
’ 或 ‘error
’。
如果expanded
为False
,则仅显示一个图标;点击图标可显示注释文本。否则,文本将立即显示。
如果filename
为None
,则在编辑器中当前打开的文件中注释该行。
无效的文件名和行号将被忽略。
editor.clear_annotations(filename=None)
删除所有通过annotate_line()
添加的注释。