ctrl+shift+p filters: :st2 :st3 :win :osx :linux
浏览

Python语音编程插件

作者: mpourmpoulis ST3

Sublime Text 3插件,用于语音编码Python 3

详情

安装

  • 总数 2K
  • Win 1K
  • Mac 197
  • Linux 172
8月6日 8月5日 8月4日 8月3日 8月2日 8月1日 7月31日 7月30日 7月29日 7月28日 7月27日 7月26日 7月25日 7月24日 7月23日 7月22日 7月21日 7月20日 7月19日 7月18日 7月17日 7月16日 7月15日 7月14日 7月13日 7月12日 7月11日 7月10日 7月9日 7月8日 7月7日 7月6日 7月5日 7月4日 7月3日 7月2日 7月1日 6月30日 6月29日 6月28日 6月27日 6月26日 6月25日 6月24日 6月23日
Windows 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 3 0 0 0 0 0 3 0 0 0 0 1 0 2 2 0 0 0 1 1 0 0 0 0
Mac 1 1 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Linux 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

自述文件

源代码
raw.githubusercontent.com

PythonVoiceCodingPlugin

License

警告:该项目将很快被弃用,因为为了支持更多编辑器和通过语言服务器协议以及更多的语音编程框架来进行更多编程,项目已被重写。我预计十月份将有一个公开发布版。开发将继续在PythonVoiceCodingPlugin 组织下进行。

PythonVoiceCodingPlugin 是一个旨在与Caster 工具包 一起使用 的 Sublime Text 3 插件,旨在为那些通过语音 编程 的 Python 开发者提供 语法导航能力,重点关注需要由于 RSI/残疾而通过语音输入 的个体,但也面向那些仅仅希望 改善他们的工作流程 的用户。用户可以使用结构化但 自然语音命令 来描述他们想选择/操作的区域。

从而获得一个 更快、更便捷、更高效 的语音编码体验。安装说明和超过100个示例文档中的GIF应该帮助您开始,对于任何进一步的问题,请随时联系我的频道!衷心感谢@FichteFoll@LexiconCode

不言而喻,在编写PythonVoiceCodingPlugin的过程中,PythonVoiceCodingPlugin一直在被使用 :)

内容

文档

文档可在此处找到,您也可以在以下部分找到文档链接:

Preferences > Package Settings  > PythonVoiceCodingPlugin

动机

本项目受到Gustav Wengel关于语音编码状态的文章以及我在Caster中使用个人经验的启发。尽管这个基于dragonfly的真正出色的工具链做出了出色的努力,但我仍然觉得在某些方面我们可以做得更好:)

特别是,在代码中进行导航有时感觉有点过于机械。比如说你想要转到某个位置或选择一些文本。在大多数情况下,你实际上是在描述需要执行哪些操作才能到达那里。如果你可以简单地描述一下(在语法上)你要选择什么会怎么样呢?

PythonVoiceCodingPlugin试图让你做到这一点!为此,它提供了一组实现语法(希望足够表达性地描述感兴趣的区域)的工具包,同时在语音编码宏系统的一侧运行。这些工具包与运行在编辑器侧的核心插件合作,可以说是分析源代码和解析给定上下文中查询意义更适合的两个环境之一。

我想诚实。这并不是写得最好的代码。它远远不是。它离我想要提供的完整功能还非常遥远。尽管如此,我还是认为PythonVoiceCodingPlugin是一个工具,

  • 它将首次让你通过“智能if条件”或“下方第一个参数”等抽象来体验代码的AST导航

  • 易于使用和学习。大多数命令都维护了相对清晰的语法模式,听起来很自然。

  • 是朝着减少你对语音识别质量和无法说出的词的依赖的第一步,尽管这个步骤不可否认地很小。

  • 是基于灵活性至关重要的认识。我真的希望有大量的功能可以供你使用,而无需掌握这个工具。为此

    • 这个工具会尽力尝试解码你从或不足或模糊的描述中想要的意思,并提供有意义的、有颜色高亮的替代方案:)
    • 即使你没有得到你想要的主要结果,某些操作,如粘贴,也可以用这些替代方案执行,而不需要命令开销:)
    • 作为一个副作用,有时选择同一区域有多种方法,因此你可以使用你认为最直观的一种:)
  • 部分可定制。如果你发现自己在某些给定的参数中使用某些命令很频繁,并想要一个更简短的命令,你可以始终参考我的注释示例(香蕉示例):)

就像我说的,远非完美(真的远非完美),但仍然是一个开箱即用的解决方案,我希望它能有所帮助,尤其对初学者来说,是一个正确方向的步骤。我希望你使用它时像我喜欢编写它一样享受:)

发布和版本

代码可在github上找到

最新版本是0.1.2!

限制

当然,有一些限制,我从一开始就想清楚地说明。

  • 目前我并不完全支持 Python 3.3 以上版本(但仍然可以在包含异步 async 和 await 关键字、f-string 等新特性的代码上工作)。这是因为 Sublime 使用 Python 3.3.6,而我依赖于标准库的 ast 模块来解析代码。另一种可能性是使用 astroid,但它自己使用 typed_ast,其中包含了 C 语言代码,这是我想避免的。该插件可能会最终转变为客户端服务器架构,并简单地使用 Python 3.7 或新版本的 3.8 的最新 ast 模块。请注意,此限制仅涉及使用新语法特性的用户。如果使用新标准库函数则没有问题。

  • 此外,为了在实际中使用,它需要能够处理不完整的代码(缺少内容无法解析的代码)。它是通过“修复”各种常见情况来做到这一点。不幸的是,它不能处理所有你扔给它的东西,在这种情况下,大多数命令都无法运行。尽管如此,它可以处理像下面这样的代码:

安装

由于这是一个双部分系统,为了安装,您必须

  • 安装主插件

  • 安装您使用的 caster 版本的相应语法

  • 将使这两个组件可以进行通信的 subl 可执行文件放入 Windows 路径(从 0.1.2 版本及以上可选)

安装主插件

目前有 Packge Control 和 git 两种方法进行第一次安装,我强烈推荐使用 Package Control。

包控制

  • 首先确保您已安装 Packge Control。如果没有,请按照这里的说明操作

  • 打开命令面板(Ctrl+Shift+P)

  • 执行

Package Control:Install Package

然后简单地

PythonVoiceCodingPlugin
关于在0.0.4和0.0.5之间安装的用户注意

以前插件的安装包括运行

Package Control:Add Repository

然后输入我的仓库 URL

https://github.com/mpourmpoulis/PythonVoiceCodingPlugin

这使得您可以从主分支而不是我的发布版直接安装,您应该看到像 v2020.01.05.(等等)这样的适配版本,而不是 v0.0.4。

这只是一个临时解决方案,我建议您运行

Package Control:Remove Repository

因此,安装或升级版本。

目前提醒您,该插件尚未测试与 portable 版本的 sublime!

对于任何进一步的安装问题,请在这里提问

Git安装

或者您可以直接从 github 下载插件并将其放入 sublime 插件文件夹

对于 Windows 用户,应该是

C:\Users\Admin\AppData\Roaming\Sublime Text 3\Packages

在 Ubuntu 中是:“ ~/.config/sublime-text-3/Packages/”

Currently the Master Branch ships with its dependencies so you're good to go!

Just in case something is wrong and you want to manually install dependencies,using your installation of python (this worked for me with 3.7.4 and 3.5.2) run from inside the plug-in folder (PythonVoiceCodingPlugin):

```bash
python3 -m pip install --target third_party -r requirements.txt

安装语法

此外,为了使用该插件,您还必须安装语法!如果您打算通过Aenea 在 Linux 上使用它,您将需要一些额外的步骤,但简而言之

  • 确保您已安装Caster

  • 将语法文件复制到相应的用户目录,根据 caster 的版本,这些应该是 C:\Users\%USERNAME%\AppData\Local\caster\rulesC:\Users\%USERNAME%\.caster\rules

  • 重新启动/启动 Caster,并且如果您使用 1.0 及以上版本,请勿忘记通过说“enable python voice coding plugin”来启用规则

为了使此过程更容易,在 首选项 > 包设置 > PythonVoiceCodingPlugin 下,您可以找到一些工具

  • 用于检索这些语法文件并手动复制粘贴

  • 或者自动安装到相应的目录,如果您使用 Caster 1.x.x

子路径

主插件与语法之间的通信是通过 sublime 命令行界面通过 subl 可执行文件进行的。到包括 0.1.1 版本,预计该可执行文件应在 Windows 的路径中,但正如 LexiconCode 指出的,相应的说明文档缺失!这在我这边是一个大错误,可能阻止您使用该项目!

现在,您可以在这里找到更多有关如何将此可执行文件添加到 Windows 路径的信息,但是为了不为您添加额外的安装步骤,0.1.2 版本实现了以下方案

  • 如果 subl 已在路径中,它将正常使用

  • 否则,它将尝试回退到 C:\Program Files\Sublime Text 3\subl,如果您的 sublime 按照传统方式安装,它应该在那里!在这种情况下,您不需要做额外的工作!

如果 sublime 安装在其他目录中,您必须不幸地将其添加到路径中!

请注意,这不会影响 Linux!

支持语音编码框架

以下是对 Caster 0.5.11,0.6.11 以及 >=1.0.0 版本的可用语法,衷心感谢 LexiconCode

如果您正在使用 Caster 的旧版本,我强烈建议您升级到最新版本。迟早,插件将停止支持那些旧版本,而新的版本有很多改进!

关于操作系统支持,该插件已在 Windows 10 和 Ubuntu 16.04 上进行了测试,因为 0.0.4 版本引入了对 aenea 的支持!

请注意,如果您正在使用最新版本的 Caster,您还必须通过以下方式启用语法

enable python voice coding plugin

许可协议

所有代码(语法包和插件)均受 2 条款 BSD 许可证的许可。

BSD 2-Clause License

Copyright (c) 2019, Kitsios Panagiotis
All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
   list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
   this list of conditions and the following disclaimer in the documentation
   and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

依赖项

非常感谢以下 pypi 软件包的贡献者和维护者

对于特定版本,请确保检查 requirements.txt

有关其许可证,请参阅专门的 文件

致谢

有用的学习资源

以下资源对完成项目非常有帮助。衷心感谢所有作者!

开发工具

感谢所有投入时间和精力为以下项目作出贡献的开发者

以及其他一些我在这项项目开发中找到的有用的工具

  • TabNine

  • Quoda

  • 自动包重加载器

  • MarkdownTOC

  • ScreenToGif

  • Jedi

人员

最后但同样重要的是,要感谢

  • LexiconCode,将语法从 0.5 版本移植到 0.6 和 1.0 版本的 Caster,并指出将 subl 工具放入路径的缺失文档。

  • FichteFoll,在包审查过程中指出各种错误