@ -4,6 +4,7 @@
[](https://github.com/fredrikekre/Runic.jl/actions/workflows/Test.yml)
[](https://github.com/fredrikekre/Runic.jl/actions/workflows/Test.yml)
[](https://codecov.io/gh/fredrikekre/Runic.jl)
[](https://codecov.io/gh/fredrikekre/Runic.jl)
[](https://github.com/fredrikekre/Runic.jl)
Runic is a formatter for the [Julia programming language ](https://julialang.org/ ) built on
Runic is a formatter for the [Julia programming language ](https://julialang.org/ ) built on
top of [JuliaSyntax.jl ](https://github.com/JuliaLang/JuliaSyntax.jl ).
top of [JuliaSyntax.jl ](https://github.com/JuliaLang/JuliaSyntax.jl ).
@ -23,10 +24,12 @@ that is appreciated by most Go programmers, see for example the following
- [Usage ](#usage )
- [Usage ](#usage )
- [CLI ](#cli )
- [CLI ](#cli )
- [Editor integration ](#editor-integration )
- [Editor integration ](#editor-integration )
- [Adopting Runic formatting ](#adopting-runic-formatting )
- [Ignore formatting commits in git blame ](#ignore-formatting-commits-in-git-blame )
- [Badge ](#badge )
- [Checking formatting ](#checking-formatting )
- [Checking formatting ](#checking-formatting )
- [Github Actions ](#github-actions )
- [Github Actions ](#github-actions )
- [Git hooks ](#git-hooks )
- [Git hooks ](#git-hooks )
- [Ignore formatting commits in git blame ](#ignore-formatting-commits-in-git-blame )
- [Formatting specification ](#formatting-specification )
- [Formatting specification ](#formatting-specification )
## Installation
## Installation
@ -34,14 +37,14 @@ that is appreciated by most Go programmers, see for example the following
Runic can be installed with Julia's package manager:
Runic can be installed with Julia's package manager:
```sh
```sh
julia -e 'using Pkg; Pkg.add(url = "https://github.com/fredrikekre/ Runic.jl ")'
julia -e 'using Pkg; Pkg.add("Runic")'
```
```
For CLI usage and editor integration (see [Usage ](#usage )) it is recommended to install
For CLI usage and editor integration (see [Usage ](#usage )) it is recommended to install
Runic in a separate project such as e.g. the shared project `@runic` :
Runic in a separate project such as e.g. the shared project `@runic` :
```sh
```sh
julia --project=@runic -e 'using Pkg; Pkg.add(url = "https://github.com/fredrikekre/ Runic.jl ")'
julia --project=@runic -e 'using Pkg; Pkg.add("Runic")'
```
```
## Usage
## Usage
@ -73,7 +76,7 @@ alias runic="julia --project=@runic -m Runic"
> ```
> ```
```
```
$ julia -m R unic --help
$ r unic --help
NAME
NAME
Runic.main - format Julia source code
Runic.main - format Julia source code
@ -196,6 +199,55 @@ This assumes that Runic is installed in the `@runic` shared project as suggested
(push '(julia-mode . runic) apheleia-mode-alist)
(push '(julia-mode . runic) apheleia-mode-alist)
```
```
### Adopting Runic formatting
Here is a checklist for adopting Runic formatting in a project:
- Format all existing files with `runic -i <path>` and commit the changes in separate
commit. This commit can be ignored in `git blame` (see [Ignore formatting commits in git
blame](#ignore-formatting-commits-in-git-blame)).
- Configure automatic checks (see [Checking formatting ](#checking-formatting )) to ensure
future changes adhere to the formatting rules.
- Optionally add a badge to the repository README, see [Badge ](#badge ).
#### Ignore formatting commits in git blame
When setting up Runic formatting for a repository for the first time (or when upgrading to a
new version of Runic) the formatting commit will likely result in a large diff with mostly
non functional changes such as e.g. whitespace. Since the diff is large it is likely that it
will show up and interfere when using [`git-blame` ](https://git-scm.com/docs/git-blame ). To
ignore commits during `git-blame` you can i) add them to a file `.git-blame-ignore-revs` and
ii) tell git to use this file as ignore file by running
```
git config blame.ignoreRevsFile .git-blame-ignore-revs
```
See the [git-blame
documentation](https://git-scm.com/docs/git-blame#Documentation/git-blame.txt---ignore-revs-fileltfilegt)
for details.
For example, such a file may look like this:
```
# Adding Runic formatting
< commit hash of formatting commit >
# Upgrading Runic from 1.0 to 2.0
< commit hash of formatting commit >
```
#### Badge
If you want to show that your project is formatted with Runic you can add the following
badge in the repository README:
```markdown
[](https://github.com/fredrikekre/Runic.jl)
```
The badge looks like this:
[](https://github.com/fredrikekre/Runic.jl)
## Checking formatting
## Checking formatting
Runic has a check-mode that verifies whether files are correctly formatted or not. This mode
Runic has a check-mode that verifies whether files are correctly formatted or not. This mode
@ -282,32 +334,6 @@ git diff-index -z --name-only --diff-filter=AM master | \
xargs -0 --no-run-if-empty julia --project=@runic -m Runic --check --diff
xargs -0 --no-run-if-empty julia --project=@runic -m Runic --check --diff
```
```
### Ignore formatting commits in git blame
When setting up Runic formatting for a repository for the first time (or when upgrading to a
new version of Runic) the formatting commit will likely result in a large diff with mostly
non functional changes such as e.g. whitespace. Since the diff is large it is likely that it
will show up and interfere when using [`git-blame` ](https://git-scm.com/docs/git-blame ). To
ignore commits during `git-blame` you can i) add them to a file `.git-blame-ignore-revs` and
ii) tell git to use this file as ignore file by running
```
git config blame.ignoreRevsFile .git-blame-ignore-revs
```
See the [git-blame
documentation](https://git-scm.com/docs/git-blame#Documentation/git-blame.txt---ignore-revs-fileltfilegt)
for details.
For example, such a file may look like this:
```
# Adding Runic formatting
< commit hash of formatting commit >
# Upgrading Runic from 1.0 to 2.0
< commit hash of formatting commit >
```
## Formatting specification
## Formatting specification
This is a list of things that Runic currently is doing:
This is a list of things that Runic currently is doing: