12 个版本 (3 个稳定版)

1.0.2 2023 年 4 月 25 日
1.0.1 2022 年 11 月 12 日
1.0.0 2022 年 7 月 17 日
0.8.1 2022 年 3 月 12 日
0.3.0 2021 年 6 月 12 日

#444文本处理

每月 38 次下载

BSD-3-ClauseLGPL-2.1-or-later

150KB
4K SLoC

skyspell

命令行的快速便捷拼写检查器。

特性

  • 便捷的命令行界面
  • 利用优秀的 enchant 库,因此与现有提供者和词典兼容
  • 手工制作的标记器,这意味着
    • 它可以解析 camelCasesnake_case 标识符
    • 它知道如何跳过 URL、sha1 等内容
    • 它可以处理类似于 HTTPError 的缩写
    • ... 更多功能!
  • 全局忽略列表
  • 按文件扩展名(例如,对于 fn.rs))为文件、项目或项目内的相对路径创建忽略列表
  • 按文件名创建忽略列表(例如,始终跳过名为 Cargo.lock 的文件)
  • 在项目内部按相对路径创建忽略列表(例如,image.svg
  • Kakoune 集成
  • 忽略规则存储在全局 sqlite3 数据库中(适用于个人文件等)或配置文件中(适用于 CI 等)

安装

您需要

  • 安装 C Enchant 库及其开发头文件
  • 安装 sqlite3 库及其开发头文件
  • Enchant 的其中一个后端(aspell、hunspell、nuspell)
  • 与上述后端匹配的您将要使用的语言的词典(例如 aspell-enhunspell-fr)。
  • cargo

然后运行

$ cargo install skyspell

并确保 skyspell 在您的 PATH 中。

检查设置

运行 skyspell suggest helllo,并检查单词 hello 是否被建议。

skyspell 在行动中

通常,您会运行 skyspell check 以启动一个交互式会话,在此会话中,您将告诉 skyspell 如何处理它在你项目文件中找到的所有错误。

$ skyspell check
LICENSE:9:2 Redistributions
What to do?
a : Add word to global ignore list
e : Add word to ignore list for this extension
p : Add word to ignore list for the current project
f : Add word to ignore list for the current file
x : Skip this error
q : Quit
> : g
=> Added 'Redistributions' to the global ignore list

foo.rs:32:2 fn
What to do?
a : Add word to global ignore list
e : Add word to ignore list for this extension
p : Add word to ignore list for the current project
f : Add word to ignore list for the current file
x : Skip this error
q : Quit
> : e
=> Added 'fn' to the ignore list for '.rs' files

请注意,默认情况下,skyspell 将尝试读取项目中的每个文件。为了防止 skyspell 尝试读取某些文件,请创建一个包含如下内容的 skyspell-ignore kdl 文件

patterns {
   Cargo.lock  // no point in checking auto-generated files
   logo.png    // no point in trying to read non-text files
}

默认情况下,忽略规则将在运行上述会话时自动添加到该文件中,结果文件如下所示

patterns {
  // same as above
}

global {
  // always ignored
  your-name
}


project {
  // ignored just for this project
  your-project-name
}

extension "rs" {
  // ignored for this extension
  fn
  impl
}

这样,您就可以与他人分享您的忽略规则。

顺便说一下,有一个 --non-interactive 选项可以将 skyspell check 作为持续集成的一部分运行。

使用 sqlite3 数据库代替

如果您不希望上述行为,可以使用以下方式告诉 skyspell 将忽略规则存储在全局 sqlite3 数据库中

patterns {
   // Same patterns as above
}

use_db

默认情况下,路径将是 ~/.local/share/skyspell/<lang>.db,但您可以使用 --db-path 来更改它。

与 scspell 的比较

我从 scspell 中借鉴了很多东西,包括实现和命令行行为。

请注意,scspell 不依赖于 Enchant,因此不能检查除英语以外的语言,也不能为拼写错误提供建议。

但它的实现更简单,不需要安装拼写提供程序。

另一方面,scspell 可以自动在文件中应用替换,这是 skyspell 没有的功能。

本地开发

为了更快地构建和运行测试,您可以使用

依赖关系

~32–43MB
~717K SLoC