ucf

Crates.ioucf
lib.rsucf
version0.1.5
sourcesrc
created_at2023-01-22 05:47:09.881258
updated_at2023-07-18 08:04:59.203929
descriptionA universal code formatter
homepage
repositoryhttps://github.com/berinaniesh/ucf.git
max_upload_size
id764784
size27,618
Berin Aniesh (berinaniesh)

documentation

README

Universal Code Formatter

Latest Version

A code formatter that formats any code.

Install

With cargo

cargo install ucf

Arch linux

ucf is available in the aur here. With an aur helper like yay, it can be installed with

yay -S ucf

Usage

ucf <file_name>

Caution: ucf modifies the file in place and there is no option to output to stdout at the moment.

ucf --help

prints help.

Inner working

ucf is a simple program. It determines the file extension and calls a predetermined code formatter on the file as listed in the table below with necessary arguments to modify the file in place. The formatter called should be present in the system's PATH.

Currently used formatters

Formatter called File Extension
black .py
clang-format .c, .cpp, .cc, .cs, .cxx, .cp, .cs, .h, .hpp, .hxx .java, .json, .m (objective c, not matlab)
cmake-format .cmake
gofmt .go
ocamlformat .ocaml
prettier .css, .gfm, .graphql, .gql, .html, .js, .jsx, .less, .md, .mdx, .prettierrc, .sass, .scss, .svelte, .ts, .vue, .yaml
rustfmt .rs
shfmt .sh, .ebuild
stylua .lua
stylish-haskell .hs
taplo .toml
xmllint .xml
zig fmt .zig

Editor Integration

vim / neovim

After saving the file, run ucf on the file as a shell command.

:!ucf %

This can be automated in many ways, eg. To bind <F5> to save and format the file, add the following line in init.lua,

vim.keymap.set('n', '<F5>', ':w | :!ucf % <CR><CR>', {noremap=true, silent=true})

Config file

To ignore certain file extensions, add the extensions without the dot in the ignored_extensions array in $XDG_CONFIG_HOME/ucf/config.toml file. ucf formats code overriding the config file if a custom formatter is given.

Todo

  • Add option to read folders and run formatter on all files
  • Add option to format SQL
  • Display proper error messages (bug)

For packagers

If you would like to package ucf for any distro, make sure to add the packages which provide the binaries from the table above as optional dependencies.

Contribute

All patches are welcome. Fork the repo, make your changes and submit a pull request.

Commit count: 72

cargo fmt