Hindent 项目教程
hindent Haskell pretty printer 项目地址: https://gitcode.com/gh_mirrors/hi/hindent
1. 项目的目录结构及介绍
Hindent 是一个 Haskell 代码格式化工具,其目录结构如下:
hindent/
├── app/
├── benchmarks/
├── elisp/
├── hooks/
├── internal/
│ └── HIndent/
│ └── Internal/
│ └── Test/
├── scripts/
├── src/
├── tests/
├── ghcid
├── .gitignore
├── hindent.yaml
├── BENCHMARKS.md
├── CHANGELOG.md
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE.md
├── README.md
├── SECURITY.md
├── Setup.hs
├── TESTS.md
├── hie.yaml
├── hindent.cabal
├── package.yaml
├── shell.nix
├── stack.yaml
└── stack.yaml.lock
目录介绍
- app/: 包含应用程序的入口文件。
- benchmarks/: 包含性能测试相关的文件。
- elisp/: 包含 Emacs 相关的配置文件。
- hooks/: 包含 Git 钩子文件。
- internal/: 包含内部模块和测试文件。
- scripts/: 包含项目使用的脚本文件。
- src/: 包含项目的源代码文件。
- tests/: 包含项目的测试文件。
- ghcid: 一个用于 Haskell 开发的工具。
- .gitignore: Git 忽略文件列表。
- hindent.yaml: Hindent 的配置文件。
- BENCHMARKS.md: 性能测试的说明文档。
- CHANGELOG.md: 项目变更日志。
- CONTRIBUTING.md: 贡献指南。
- Dockerfile: Docker 构建文件。
- LICENSE.md: 项目许可证。
- README.md: 项目介绍和使用说明。
- SECURITY.md: 安全相关的说明文档。
- Setup.hs: 项目设置文件。
- TESTS.md: 测试相关的说明文档。
- hie.yaml: Haskell IDE 引擎配置文件。
- hindent.cabal: Cabal 构建文件。
- package.yaml: Hpack 配置文件。
- shell.nix: Nix 配置文件。
- stack.yaml: Stack 配置文件。
- stack.yaml.lock: Stack 锁定文件。
2. 项目的启动文件介绍
Hindent 的启动文件位于 app/Main.hs
,该文件是 Hindent 应用程序的入口点。它负责解析命令行参数并调用相应的格式化逻辑。
-- app/Main.hs
module Main where
import HIndent
import Options.Applicative
main :: IO ()
main = do
-- 解析命令行参数
args <- execParser opts
-- 调用格式化逻辑
format args
opts :: ParserInfo Args
opts = info (argsParser <**> helper)
( fullDesc
<> progDesc "Haskell pretty printer"
<> header "hindent - Reformat Haskell source code" )
3. 项目的配置文件介绍
Hindent 的配置文件是 hindent.yaml
,该文件允许用户自定义格式化选项。以下是配置文件的示例内容:
indent-size: 2
line-length: 80
force-trailing-newline: true
sort-imports: true
line-breaks: []
extensions:
- "GHC2021"
- "ListTuplePuns"
配置项介绍
- indent-size: 缩进大小,默认为 2 个空格。
- line-length: 每行的最大长度,默认为 80 个字符。
- force-trailing-newline: 是否强制在文件末尾添加换行符,默认为
true
。 - sort-imports: 是否对导入语句进行排序,默认为
true
。 - line-breaks: 指定在哪些操作符或标记前插入换行符。
- extensions: 指定 Haskell 编译器扩展,以确保 Hindent 能够正确处理这些扩展的语法。
通过修改 hindent.yaml
文件,用户可以根据自己的需求定制 Hindent 的格式化行为。
hindent Haskell pretty printer 项目地址: https://gitcode.com/gh_mirrors/hi/hindent
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考