Crates.io | ucf |
lib.rs | ucf |
version | 0.1.5 |
source | src |
created_at | 2023-01-22 05:47:09.881258 |
updated_at | 2023-07-18 08:04:59.203929 |
description | A universal code formatter |
homepage | |
repository | https://github.com/berinaniesh/ucf.git |
max_upload_size | |
id | 764784 |
size | 27,618 |
A code formatter that formats any code.
cargo install ucf
ucf
is available in the aur here. With an aur helper like yay
, it can be installed with
yay -S ucf
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.
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
.
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 |
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})
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.
SQL
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.
All patches are welcome. Fork the repo, make your changes and submit a pull request.