Szybki start

Instalacja

Pre-built binary (fastest, no compilation):

cargo binstall snapper-fmt

Or compile from source:

cargo install snapper-fmt

Shell one-liner (Linux/macOS):

curl -LsSf https://github.com/TurtleTech-ehf/snapper/releases/latest/download/snapper-fmt-installer.sh | sh

Homebrew (macOS/Linux):

brew install TurtleTech-ehf/tap/snapper-fmt

pip:

pip install snapper-fmt

Nix:

nix build github:TurtleTech-ehf/snapper

The crate is snapper-fmt on all registries; the binary it installs is snapper.

Podstawowe użycie

Sformatuj plik, wypisz na stdout:

snapper paper.org

Sformatuj w miejscu:

snapper --in-place paper.org

Prześlij przez stdin (dla integracji z edytorem):

cat draft.org | snapper --format org

Co robi

Mając akapit taki jak ten:

This is the first sentence. It continues with more details about the topic. See Fig. 3 for the results.

snapper generuje:

This is the first sentence.
It continues with more details about the topic.
See Fig. 3 for the results.

Każde zdanie zajmuje osobną linię. Elementy strukturalne, takie jak bloki kodu, tabele, szuflady, środowiska matematyczne i front matter, przechodzą bez zmian.

Wykrywanie formatu

snapper automatycznie wykrywa format na podstawie rozszerzenia pliku:

  • .org – Org-mode

  • .tex, .latex – LaTeX

  • .md, .markdown – Markdown

  • Wszystko inne – zwykły tekst

Nadpisz za pomocą --format:

snapper --format latex draft.tex

Diff zdaniowy

Porównaj dwie wersje pliku na poziomie zdań, ignorując przeformatowanie białych znaków:

snapper sdiff paper_v1.org paper_v2.org

Wyświetlane są tylko rzeczywiste zmiany treści. Przeformatowanie (przełamanie wierszy) tego samego tekstu daje zerowy diff. Przydatne do przeglądania edycji współpracowników we wspólnych artykułach.

Tryb obserwacji

Automatyczne przeformatowanie plików przy zapisie:

snapper watch '*.org' 'sections/*.tex'

Monitoruje pliki i uruchamia --in-place przy zmianie (200ms opóźnienia). Naciśnij Ctrl+C, aby zatrzymać.

Konfiguracja projektu

Zainicjalizuj snapper dla nowego projektu:

snapper init

Wykrywa, które formaty istnieją, i generuje .snapperrc.toml, .gitattributes, konfigurację pre-commit oraz fragmenty Apheleia. Użyj --dry-run, aby wyświetlić podgląd.

Integracja z CI

Użyj trybu --check, aby zweryfikować formatowanie bez modyfikowania plików. Kończy działanie z kodem 1, jeśli jakikolwiek plik uległby zmianie:

snapper --check paper.org

Dla GitHub Code Scanning użyj wyjścia SARIF:

snapper --check --output-format sarif paper.org > snapper.sarif

Hook pre-commit

Dodaj do swojego .pre-commit-config.yaml:

- repo: https://github.com/TurtleTech-ehf/snapper
  rev: v0.2.1
  hooks:
    - id: snapper

Emacs (Apheleia)

Dodaj do swojej konfiguracji Emacsa:

(with-eval-after-load 'apheleia
  (push '(snapper . ("snapper" "--format" "org")) apheleia-formatters)
  (push '(org-mode . snapper) apheleia-mode-alist))

Uruchamia snapper przy zapisie buforów Org-mode.