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

Scuggest

作者: ssanj ST3

Sublime Text 用于最小化 Scala 导入的插件

标签 导入, Scala

详细信息

  • 0.0.2
  • github.​com
  • github.​com
  • 8年前
  • 2小时前
  • 8年前

安装次数

  • 总计 557
  • Win 440
  • Mac 45
  • Linux 72
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 1 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
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 1 0 0 0 0 0 0 0

自述文件

源文件
raw.​githubusercontent.​com

Build Status

Scuggest

Scsuggest(发音为"Suggest")是一个 Sublime Text 插件,用于自动向 Scala 文件中添加导入语句。它通过扫描提供的 jar 文件和类目录来解决导入。

Scsuggest 初始基于 JavaImports,但现在采用完全不同的方式工作。

安装

以下是一些在您的系统上安装 Scsuggest 的方法。

  1. 直接通过 包管理器 安装。

  2. 将 Scsuggest 仓库克隆到您的 Packages 目录中

    git clone [email protected]:ssanj/Scuggest.git

  3. 下载最新发布的源代码并将其提取到 Packages 目录中。

_packets 目录位于

  • OS X: ~/Library/Application Support/Sublime Text 3/Packages
  • Linux: ~/.config/sublime-text-3/Packages
  • Windows: %APPDATA%\Sublime Text 3\Packages

配置

使用 SBT

运行 sbt-scuggest 以生成所有基本配置并更新(或生成)您的项目文件。

手动

要使用 Scsuggest,您需要为 Scala 项目创建一个项目文件(.sublime-project)。您可以通过点击 项目 > 另存为项目… 菜单项执行此操作,并将项目保存到 Scala 项目目录的根目录(通常是 build.sbt 文件所在的目录)。

创建项目后,使用以下设置元素,并自定义 scuggest_import_pathscuggest_filtered_path 以满足您的需求。

"settings": {
        "scuggest_import_path":
        [
            "/Library/Java/JavaVirtualMachines/jdk1.8.0_65.jdk/Contents/Home/jre/lib/rt.jar",
            "/Users/sanj/.ivy2/cache/org.scala-lang/scala-library/jars/scala-library-2.11.8.jar",
            "/Volumes/Work/projects/code/scala/toy/dabble/target/scala-2.11/classes",
            "/Users/sanj/.ivy2/cache/com.lihaoyi/ammonite-ops_2.11/jars/ammonite-ops_2.11-0.5.7.jar",
            "/Users/sanj/.ivy2/cache/com.github.scopt/scopt_2.11/jars/scopt_2.11-3.4.0.jar",
            "/Users/sanj/.ivy2/cache/org.scalaz/scalaz-core_2.11/jars/scalaz-core_2.11-7.2.2.jar"
        ],
        "scuggest_filtered_path":
        [
            "com/sun",
            "sun",
            "javax/swing",
            "org/omg",
            "com/apple",
            "java/awt"
        ]
}

scuggest_import_path 列出了 Scsuggest 搜索类的 jar 文件。这可以包括 Java 或 Scala jar 文件。一些常见的 jar 文件包括 Java rt.jar 文件和 scala-library-scala-version.jar 文件。您可以在此处添加任何想要搜索的库。

scsuggest_filtered_path列出了在扫描目标类时跳过的前缀路径。一个典型的例子可能是com/sun包下的任何内容。注意,这些是文件路径,而不是包(或点分隔)路径。

用法

您可以使用以下方式使用Scuggest

  1. 点击您想要将其导入Scala源文件中的类名,并按下CMD + ALT + I。这将选中光标下的单词并尝试显示任何匹配的类。

Scuggest importing a class

  1. 如果您在空白行上按下CMD + ALT + I,则将显示一个搜索框,允许您输入类名或通配符以进行匹配。

Scuggest wildcard suffix importing a class

  1. 如果您在任何位置(甚至是选择中)按下SHIFT+CMD + ALT + I,则会显示一个搜索框,允许您输入类名或通配符以进行匹配。

Scuggest wildcard prefix

导入源类

Scuggest通过检查您的scuggest_import_path中的jar文件和您的target目录中的类文件来工作。这意味着为了使Scuggest能够与您的源类一起工作,它们必须已经被编译。一个推荐的流程是使用带上文编译的SBT,以确保所有源都已被编译并且可以通过Scuggest访问。

sbt ~test:compile

选择匹配器

Scuggest使用各种匹配策略来查找所选的类。

1. 类名

这是尝试对选择使用的第一个匹配器。它试图找到以提供的搜索词结尾的类。注意 选择被转换为搜索词。实际匹配是针对搜索词进行的。

# example class: net.ssanj.dabble.ResolverParser
# search term: ResolverParser
# matched: true
# example class: net.ssanj.dabble.DabbleWorkPath
# search term: ResolverParser
# matched: false
# example class: net.ssanj.dabble.ResolverParser
# search term: ResolverPars
# matched: false

2. 对象名

这与类名匹配器类似,但仅匹配以提供的搜索词结尾的对象。对象类名以$结尾。

# example: net.ssanj.dabble.DabblePathTypes$DabbleWorkPath$
# search term: DabbleWorkPath
# match: true

3. 具有子型的对象

匹配搜索词与定义其他类型(类、特质或其他对象)的对象

# example: net.ssanj.dabble.DabblePathTypes.DabbleWorkPath.NestedDabbleWorkPath.MoreNestedDabbleWorkPath
# search term: DabbleWorkPath
# matches:
#  net.ssanj.dabble.DabblePathTypes.DabbleWorkPath
#  net.ssanj.dabble.DabblePathTypes.DabbleWorkPath.NestedDabbleWorkPath
#  net.ssanj.dabble.DabblePathTypes.DabbleWorkPath.NestedDabbleWorkPath.MoreNestedDabbleWorkPath
#  net.ssanj.dabble.DabblePathTypes.DabbleWorkPath._

通配符匹配

这些匹配器通常通过搜索框使用。

1. 通过前缀

匹配以给定搜索词开头的类名。搜索词应以*结尾。

# search term: Future*
# matches:
#   java.util.concurrent.Future
#   java.util.concurrent.FutureTask
#   scala.concurrent.Future
#   scala.concurrent.FutureTaskRunner

2. 通过后缀

匹配以给定搜索词结尾的类名。搜索词应以*结尾。

# search *DateTime
# matches:
#  java.time.LocalDateTime
#  java.time.OffsetDateTime
#  java.time.ZonedDateTime
#  java.time.chrono.ChroLocalDateTime
#  java.time.chrono.ChroZonedDateTime
#  java.util.Formatter.DateTime

3. 任何位置

匹配搜索词在类名中的任何位置。搜索词应开始和结束于*

# search: *Work*
# matches:
#  java.util.concurrent.ForkJoinWorkerThread
#  java.util.concurrent.ForkJoinPool.WorkQueue
#  java.util.concurrent.ForkJoinPool.InnocuousForkJoinWorkerThreadFactory
#  java.util.concurrent.ForkJoinPool.ForkJoinWorkerThreadFactory
#  java.util.concurrent.ForkJoinPool.DefaultForkJoinWorkerThreadFactory

缓存

Scuggest试图尽可能不干扰地缓存您的文件。在scsuggest_import_path中指定的任何jar文件的内容都会被缓存,直到scsuggest_import_path通过添加、删除或修改jar路径被修改。在scsuggest_import_path中指定的目录路径每次都会被读取,以便索引可能添加的新文件。

您可以通过运行命令面板中的“Scuggest: Show Cache”命令来显示缓存(CMD + P)。这将输出项目位置以及为该项目缓存的类数量到控制台(CTRL + )。

Scuggest cache:
/Volumes/Work/projects/code/scala/toy/dabble/dabble.sublime-project : 9992

您还可以通过从命令面板运行“Scuggest: Clear Cache”命令来清除所有项目的完整缓存。这意味着下次导入调用时必须重建缓存。