Scoggle
Sublime Text 3 插件,用于在 Scala 和测试代码之间切换
详细信息
安装
- 总数 69
- Win 26
- Mac 32
- Linux 11
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 | 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 | 0 | 0 | 0 | 0 | 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 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
读我
Scoggle
Scoggle 是一个 Sublime Text ¾ 插件,可以让您在生成代码和测试代码之间进行切换。它将允许您以多种可配置的方式完成此操作。
安装
以下是一些在您的系统上安装 Scoggle 的方法。
- 安装 Scoggle 最简单的方法是通过 包控制。
将 Scoggle 存储库克隆到您的 软件包 目录中
git clone [email protected]:ssanj/Scoggle.git
下载最新版本源代码并提取到 软件包 目录中。
“软件包”目录位于
- OS X: ~/Library/Application Support/Sublime Text 3/Packages
- Linux: ~/.config/sublime-text-3/Packages
配置
以下为默认的 Scoggle.sublime-settings 文件
{
"production_srcs" :
[
"/src/main/scala"
],
"test_srcs" :
[
"/src/test/scala",
],
"test_suffixes" :
[
"Spec.scala",
"IntSpec.scala",
"Suite.scala",
"Test.scala",
"Specification.scala"
],
"log" : false,
"display_errors_in" : "dialog",
"default_test_suffix": "Spec.scala"
}
- production_src 列出要搜索的生成源目录,当切换到生成文件时。
- test_srcs 列出要搜索的测试源目录,当切换到测试文件时。
- test_suffixes 列出切换到测试文件时搜索的后缀。
- log 指定是否开启调试日志。
- display_errors_in 指定显示错误消息的位置。默认情况下,这些消息在模态对话框(“对话框”)中显示,但这可能会很烦人。为了克服这一点,我们还有另外两个选项:“status_bar”和“dont_display”。
- default_test_suffix 指定创建测试文件时使用的默认测试文件名后缀。
插件设置文件可以在每个项目的基础上进行覆盖。配置与上述相同,但它与“Scoggle”相关联的命名空间。
以下是一个包含 Scoggle 设置的示例 .sublime-project 文件
{
"folders":
[
{
"path": "."
}
],
"settings": {
"Scoggle" : {
"production_srcs" :
[
"/app"
],
"test_srcs" :
[
"/test"
],
"test_suffixes" :
[
"Spec.scala"
]
}
}
}
注意:任何在项目设置中未提到的设置都将从默认设置或用户设置中获取(如果已覆盖)。
小心:请注意,只有通过将源目录以“项目”的形式通过 项目 > 打开项目...
打开时,项目设置才会生效,而不是通过 文件 > 打开
打开。
当为 Windows 自定义设置时,请记住将正斜杠替换为双反斜杠。
如果您不想手动编写自定义设置,可以使用 scoggle-gen 为大多数设置生成自定义配置。
匹配策略
Scoggle 内置了三种主要匹配策略。您也可以轻松地编写自己的匹配器。捆绑的匹配器从非常具体的匹配到更模糊的匹配。
前缀后缀
[CMD + SHIFT + E]
将生产源文件名与提供的 test_suffixes 结合使用,以找到匹配的测试源。
使用最大的匹配 test_suffixes 减去测试源文件名,以找到匹配的生产源。
示例
假设有一个名为 Contrast.scala 的生产文件位于 production_srcs 路径之一,test_suffixes 为 [“Spec.scala”, “Suite.scala”, “IntSpec.scala”],将在 test_srcs 路径之一中找到以下测试文件
- Contrast Spec.scala
- Contrast Suite.scala
- Contrast IntSpec.scala
当从测试源切换回生产源时,它执行以下操作
- 从测试文件名中移除最大的匹配 test_suffixes。
- 在 production_srcs 中搜索与 (1) 匹配的文件名。
示例
假设有一个名为 ContrastIntSpec.scala 的测试文件位于 test_srcs 路径之一,test_suffixes 为 [“Spec.scala”, “Suite.scala”, “IntSpec.scala”],它将在 production_srcs 路径之一中找到以下生产文件
- Contrast.scala (Contrast
IntSpec)
注意尽管 Spec 后缀也会与测试文件名匹配,但我们移除了最大的匹配后缀。在这种情况下,这将是以 IntSpec 为结尾。如果我们有一个名为 ContrastSpec.scala 的测试文件,我们仍然会到达相同的匹配生产文件:Constrast.scala。这一次,我们会移除 Spec 作为最大的匹配后缀。
前缀通配符后缀
[CMD + CTRL + SHIFT + E]
将生产源文件名与通配符和提供的 test_suffixes 结合使用,以找到匹配的测试源。
使用最大的匹配 test_suffixes 减去测试源文件名,以找到与匹配开始部分匹配的生产源。
示例
假设有一个名为 Contrast.scala 的生产文件位于 production_srcs 路径之一,test_suffixes 为 [“Spec.scala”, “Suite.scala”, “IntSpec.scala”],将在 test_srcs 路径之一中找到以下测试文件
- Contrast WithinSomeContext Spec.scala
- Contrast WithinAnotherContext IntSpec.scala
- Contrast ThrowingAnException Suite.scala
当从测试源切换回生产源时,它执行以下操作
- 从测试文件名中移除最大的匹配 test_suffixes。
- 在 production_srcs 中搜索与 (1) 开始匹配的文件名。
示例
假设有一个名为 ContrastThrowingAnExceptionSuite.scala 的测试文件位于 test_srcs 路径之一,test_suffixes 为 [“Spec.scala”, “Suite.scala”, “IntSpec.scala”],它将在 production_srcs 路径之一中找到以下生产文件
- Contrast.scala (Contrast ThrowingAnException
Suite) - ContrastThrowing.scala (ContrastThrowing AnException
Suite) - ContrastThrowingAn.scala (ContrastThrowingAn Exception
Suite) - ContrastThrowingAnException.scala (ContrastThrowingAnException
Suite)
通配符前缀通配符后缀
[CMD + CTRL + SHIFT + X]
使用通配符结合生产源文件名以及提供的 test_suffixes 来找到匹配的测试源。
使用最大的匹配 test_suffixes 减去测试源文件名,以找到与匹配的任何部分匹配的生产源。
示例
假设有一个名为 Contrast.scala 的生产文件位于 production_srcs 路径之一,test_suffixes 为 [“Spec.scala”, “Suite.scala”, “IntSpec.scala”],将在 test_srcs 路径之一中找到以下测试文件
- 在 SomeContext 上下文中的 对比 Spec.scala
- 美丽的 对比 上下文 IntSpec.scala
- 某个 对比 上下文 Suite.scala
- 这个名字可能包含对比。例如:ThisCouldBeAnythingHavingContrastInItsName Spec.scala
当从测试源切换回生产源时,它执行以下操作
- 从测试文件名中移除最大的匹配 test_suffixes。
- 通过首字母大写将剩余的名称拆分为单词。例如:ABeautifulContrastContext 拆分为 [“A”, “Beautiful”, “Contrast”, “Context”]。
- 从左到右,在 production_srcs 中搜索包含(2)中单词组合的文件名。例如:匹配 ABeautifulContrast 和 Context 但不匹配 AContrastContext。
假设有一个测试文件名为 ABeautifulContrastContextIntSpec.scala 位于 test_srcs 之一的路径中,且 test_suffixes 为 [“Spec.scala”, “Suite.scala”, “IntSpec.scala”],它将与 production_srcs 之一的路径中的以下产品文件匹配
- Contrast.scala (ABeautiful 对比 上下文
IntSpec) - ABeautiful.scala (ABeautiful ContrastContext
IntSpec) - ABeautifulContrast.scala (ABeautifulContrast Context
IntSpec) - ABeautifulContrastContext.scala (ABeautifulContrastContext
IntSpec) - BeautifulContrast.scala (BeautifulContrast Context
IntSpec) - BeautifulContrastContext.scala (A BeautifulContrastContext
IntSpec) - Context.scala (ABeautifulContrast 对比
IntSpec) - A.scala (A BeautifulContrastContext
IntSpec)
编写自己的 Matcher
在介绍如何编写您的 matcher 之前,让我们看看当前的 matcher 如何工作。Matcher 快捷键在 .sublime-keymap 文件中定义。以 前缀后缀匹配器 为例
{ "keys": ["super+shift+e"], "command": "scoggle", "args": {"matcher": "prefix_suffix_matcher"}, "context" : [{"key": "selector", "operator": "equal", "operand": "source.scala", "match_all": true}]}
请注意 args 参数提供了 matcher 参数?matcher 的值映射到要使用的 matcher。映射如下
- 给定一个 prefix_suffix_matcher matcher,在 matchers 目录中查找具有相同名称的 python 文件:prefix_suffix_matcher.py。
- 加载该文件中名为 PrefixSuffixMatcher 的类。基本上将 snake_case 转换为 CamelCase。每个 matcher 类扩展 scoggle_types.BaseMatcher 并提供三个方法的定义
- 构造函数 (_init_) - 接收一个 scoggle_types.MatcherParam 实例。
- match_test_file - 当生产文件需要找到匹配的测试文件时被调用。
- match_prod_file - 当测试文件需要找到匹配的生产文件时被调用。
上述两种方法都提供一个文件名及其相关路径。这些方法仅需返回 True 将文件作为匹配项包含,返回 False 将文件排除。
matcher 类使用以下六种字段提供 MatcherParam 构造函数参数
- root_dir - 存含目标文件的 production_srcs 或 test_srcs 列表中第一个匹配的目录。
- test_dirs - 在 test_srcs (Scoggle.sublime-settings) 中定义的测试目录列表。
- prefix - 目标文件(产品或测试)不带扩展名。
- suffixes - 在 test_suffixes (Scoggle.sublime-settings) 中定义的测试后缀列表。
- scoggle - 对 scoggle 模块的引用。
- logger:用于日志记录的日志记录器。
定义您自己的 matcher
- 在 __matchers_ 模块(目录)中创建一个名为 your_matcher_name.py 的 matcher python 文件。
- 在其中定义一个具有以下属性 YourMatcherName 类
- 扩展 scoggle_types.BaseMatcher 类
- 一个接受 MatcherParam 的构造函数
- 重新实现 match_test_file
- 重新实现 match_prod_file
- 在与 matcher 参数为 your_matcher_name 的 .sublime-keymap 文件中添加键绑定
{ "keys": ["your_shortcuts"], "command": "scoggle", "args": {"matcher": "your_matcher_name"}, "context" : [{"key": "selector", "operator": "equal", "operand": "source.scala", "match_all": true}]},
如果您想将其添加到命令面板,请在 .sublime-commads 文件中添加条目
{ "caption": "Scoggle: Your matcher description", "command": "scoggle", "args": {"matcher": "your_matcher_name"} }
如果您想将其添加到上下文菜单,请在 Context.sublime-menu 文件中添加条目
{
"id" : "scoggle",
"caption" : "Scoggle: Your matcher description",
"command" : "scoggle",
"args": {"matcher": "your_matcher_name"}
}
要调试您的 matcher,请将 .sublime-settings 或 .sublime-project 中的调试日志打开
"log" : true
使用 (CTRL + ) 打开控制台以查看调试日志。
此外,请查看现有匹配器,以了解一切是如何联系起来的。
附加功能
插入包
[快捷键:CMD + SHIFT + G]
将包声明插入Scala文件顶部。当前文件的包由生产源路径或测试源路径推导而出,取决于文件所在的位置。
package your.awesome.packagename
折叠包
[快捷键:CMD + SHIFT + H]
当给出前缀时,将当前文件的包声明折叠到子包中。包将被插入Scala文件顶部。当前文件的包由生产源路径或测试源路径推导而出,取决于文件所在的位置。
给定一个包
your.awesome.packagename.project.feature
和一个前缀
your.awesome.packagename
插入
package your.awesome.packagename
package project
package feature
创建测试文件
[快捷键:CMD + CTRL + SHIFT + T]
在所需测试源目录中创建一个与生产源目录中的文件匹配的测试文件。创建的测试文件名可以通过以下方式选择:
- 将光标放在构成测试文件名的单词内并启动测试文件创建功能(选择光标下的单词)
- 选择一个单词并启动测试文件创建功能(选择高亮的单词)
- 将光标放在空行内并启动测试文件创建功能(选择当前文件名)
在下面的示例中,光标位于《 EitherValidations》对象名称内。
如果只有一个测试源目录,则会显示要创建的测试文件名及其路径。如果需要对测试文件名进行修改,可以在此处进行。注意,使用了default_test_suffix
来创建文件名。
按enter
键将创建路径(如果需要)和测试文件。测试文件将包含包路径和类名。
如果指定的路径上已经存在同名测试文件,您将被提供选择新文件名的选项。
使用的默认测试文件后缀(如上例中的Spec.scala
)是从设置文件中的default_test_suffix
键检索的。
显示当前模块
[快捷键:CMD + CTRL + SHIFT + M]
在使用多模块项目时,可能会弄不清楚你当前正在哪个模块中工作。运行此命令将显示当前模块,无论位于任何生产或测试文件中。