Dokumentacja CLI

Składnia

snapper [OPTIONS] [FILE...]
snapper init [--dry-run]
snapper sdiff [--no-color] [-f FORMAT] <OLD> <NEW>
snapper git-diff [--no-color] [-f FORMAT] [REF] [FILE...]
snapper watch [-f FORMAT] <PATTERNS...>
snapper lsp

Jeśli nie podano plików, snapper czyta ze stdin i pisze na stdout.

Opcje

-f, --format <FORMAT>

Format wejściowy. Jeden z: org, latex, markdown, plaintext.

Wykrywany automatycznie na podstawie rozszerzenia pliku, gdy pominięty. Domyślnie plaintext dla stdin.

--stdin-filepath <ŚCIEŻKA>

Przyjmij tę nazwę pliku podczas czytania ze stdin, na potrzeby automatycznego wykrywania formatu. Przydatne dla integracji z edytorem, które przekazują zawartość bufora potokiem.

Przykład: cat paper.org | snapper --stdin-filepath paper.org

-o, --output <PLIK>

Zapisz wynik do pliku zamiast na stdout.

-i, --in-place

Modyfikuj pliki wejściowe w miejscu. Wymaga argumentów plikowych (nie stdin).

-w, --max-width <N>

Maksymalna szerokość linii. Zdania przekraczające tę szerokość są zawijane na granicach słów za pomocą textwrap. Domyślnie: 0 (bez limitu). Uwzględnia również max_line_length z .editorconfig, jeśli obecny.

--check

Tryb sprawdzania dla CI. Kończy działanie z kodem 1, jeśli jakikolwiek plik uległby zmianie, bez modyfikowania czegokolwiek. Wypisuje ścieżki plików wymagających przeformatowania na stderr.

--diff

Wyświetla ujednolicony diff planowanych zmian, bez modyfikowania czegokolwiek. Przydatne do przeglądu przed commitem. Kończy działanie z kodem 1, jeśli jakikolwiek plik uległby zmianie.

--range <START:END>

Formatuj tylko linie w podanym zakresie (indeksowanie od 1, włącznie). Linie poza zakresem przechodzą bez zmian. Przydatne dla integracji formatowania zaznaczenia w edytorze.

Przykład: snapper --range 10:20 paper.org

--output-format <text|json|sarif>

Format wyjściowy dla trybu --check. Domyślnie: text (wypisuje nazwy plików na stderr).

  • json : zwraca tablicę JSON ze ścieżkami plików i liczbą linii

  • sarif : zwraca SARIF v2.1.0 do integracji z GitHub Code Scanning

--neural

Użyj neuronowego wykrywania zdań przez nnsplit (LSTM na poziomie bajtów, backend tract). Pobiera i zapisuje model (~4MB) do ~/.cache/nnsplit/ przy pierwszym użyciu. Wykrywanie oparte na regułach pozostaje domyślne (szybsze, lepsza obsługa skrótów). Wykrywanie neuronowe sprawdza się najlepiej w tekście nieangielskim.

--lang <KOD>

Język dla neuronowego wykrywania zdań. Domyślnie: en. Dostępne: en, de, fr, no, sv, zh, tr, ru, uk.

--model-path <ŚCIEŻKA>

Ścieżka do niestandardowego pliku modelu ONNX dla wykrywania neuronowego. Nadpisuje --lang.

--config <ŚCIEŻKA>

Ścieżka do pliku konfiguracyjnego .snapperrc.toml. Gdy pominięta, snapper szuka od bieżącego katalogu w górę.

-h, --help

Wyświetl komunikat pomocy.

-V, --version

Wyświetl wersję.

Podkomendy

snapper init

Zainicjalizuj snappera dla projektu. Wykrywa, które formaty prozy istnieją w drzewie katalogów i generuje:

  • .snapperrc.toml z rozsądnymi wartościami domyślnymi

  • wpisy .gitattributes dla filtra git smudge/clean

  • fragment hooka pre-commit

  • fragment konfiguracji Apheleia (Emacs)

Użyj --dry-run, aby wyświetlić podgląd bez zapisywania plików.

snapper sdiff <OLD> <NEW>

Sentence-level diff between two files. Parses both files, extracts sentences, diffs at sentence granularity. Whitespace reflow produces zero diff. Colored output by default; use --no-color to disable. Exits with code 1 if differences found.

snapper git-diff [REF] [FILE...]

Sentence-level diff against a git ref. Default ref: HEAD. If no files specified, diffs all changed prose files (.org, .tex, .md). Uses git show REF:path to retrieve the old version.

snapper watch <PATTERNS...>

Watch files and auto-reformat on save. Accepts file paths or glob patterns. 200ms debounce to avoid reformatting during rapid saves. Press Ctrl+C to stop.

snapper lsp

Start the Language Server Protocol server on stdin/stdout. Provides document formatting, range formatting, and diagnostics (flags lines with multiple sentences). Works with any LSP-compatible editor (Neovim, Emacs eglot, VS Code, Helix).

Kody wyjścia

  • 0 : Sukces (lub --check / --diff gdy nie są potrzebne zmiany)

  • 1 : --check lub --diff znalazły pliki wymagające zmian, lub wystąpił błąd