Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/Koihik/LuaFormatter
Code formatter for Lua
https://github.com/Koihik/LuaFormatter
codeformatter formatter lua
Last synced: 17 days ago
JSON representation
Code formatter for Lua
- Host: GitHub
- URL: https://github.com/Koihik/LuaFormatter
- Owner: Koihik
- License: apache-2.0
- Created: 2018-10-26T13:16:03.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2023-08-25T16:37:49.000Z (about 1 year ago)
- Last Synced: 2024-08-01T03:33:01.549Z (3 months ago)
- Topics: codeformatter, formatter, lua
- Language: C++
- Size: 2.74 MB
- Stars: 677
- Watchers: 16
- Forks: 85
- Open Issues: 100
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# LuaFormatter
Reformats your Lua source code.
![codecov](https://codecov.io/gh/Koihik/LuaFormatter/branch/master/graph/badge.svg)
![build](https://github.com/Koihik/LuaFormatter/actions/workflows/build.yml/badge.svg)## Editor support
* VS Code: https://github.com/Koihik/vscode-lua-format
* Sublime: https://github.com/Koihik/sublime-lua-format
* Vim: https://github.com/andrejlevkovitch/vim-lua-format## Install
### LuaRocks
#### Requirements
* c++ 17 compiler
* luarocks 3.3.0+The easiest way to install is to use [LuaRocks](https://github.com/luarocks/luarocks).
```bash
luarocks install --server=https://luarocks.org/dev luaformatter
```### Build from source
#### Requirements
* cmake 3.9+
* c++ 17 compiler#### Steps
```bash
git clone --recurse-submodules https://github.com/Koihik/LuaFormatter.git
cd LuaFormatter
cmake .
make
make install
```## Usage
```
./lua-format [Lua scripts...] {OPTIONS}Reformats your Lua source code.
OPTIONS:
-h, --help Display this help menu
-v, --verbose Turn on verbose mode
-i Reformats in-place
--dump-config Dumps the default style used to stdout
-c[file], --config=[file] Style config file
--column-limit=[column limit] Column limit of one line
--indent-width=[indentation
width] Number of spaces used for indentation
--tab-width=[tab width] Number of spaces used per tab
--continuation-indent-width=[Continuation
indentation width] Indent width for continuations line
--spaces-before-call=[spaces
before call] Space on function calls
--column-table-limit=[column
table limit] Column limit of each line of a table
--table-sep=[table separator] Character to separate table fields
--use-tab Use tab for indentation
--no-use-tab Do not use tab for indentation
--keep-simple-control-block-one-line
keep block in one line
--no-keep-simple-control-block-one-line
Do not keep block in one line
--keep-simple-function-one-line keep function in one line
--no-keep-simple-function-one-line
Do not keep function in one line
--align-args Align the arguments
--no-align-args Do not align the arguments
--break-after-functioncall-lp Break after '(' of function call
--no-break-after-functioncall-lp Do not break after '(' of function call
--break-before-functioncall-rp Break before ')' of function call
--no-break-before-functioncall-rp Do not break before ')' of function call
--align-parameter Align the parameters
--no-align-parameter Do not align the parameters
--chop-down-parameter Chop down all parameters
--no-chop-down-parameter Do not chop down all parameters
--break-after-functiondef-lp Break after '(' of function def
--no-break-after-functiondef-lp Do not break after '(' of function def
--break-before-functiondef-rp Break before ')' of function def
--no-break-before-functiondef-rp Do not break before ')' of function def
--align-table-field Align fields of table
--no-align-table-field Do not align fields of table
--break-after-table-lb Break after '{' of table
--no-break-after-table-lb Do not break after '{' of table
--break-before-table-rb Break before '}' of table
--no-break-before-table-rb Do not break before '}' of table
--chop-down-table Chop down any table
--no-chop-down-table Do not chop down any table
--chop-down-kv-table Chop down table if table contains key
--no-chop-down-kv-table Do not chop down table if table contains
key
--extra-sep-at-table-end Add extra field separator at end of
table
--no-extra-sep-at-table-end Do not add extra field separator at end
of table
--break-after-operator Put break after operators
--no-break-after-operator Do not put break after operators
--double-quote-to-single-quote Transform string literals to use single
quote
--no-double-quote-to-single-quote Do not transform string literals to use
single quote
--single-quote-to-double-quote Transform string literals to use double
quote
--no-single-quote-to-double-quote Do not transform string literals to use
double quote
--spaces-inside-functiondef-parens
Put spaces on the inside of parens in
function headers
--no-spaces-inside-functiondef-parens
Do not put spaces on the inside of
parens in function headers
--spaces-inside-functioncall-parens
Put spaces on the inside of parens in
function calls
--no-spaces-inside-functioncall-parens
Do not put spaces on the inside of
parens in function calls
--spaces-inside-table-braces Put spaces on the inside of braces in
table constructors
--no-spaces-inside-table-braces Do not put spaces on the inside of
braces in table constructors
--spaces-around-equals-in-field Put spaces around the equal sign in
key/value fields
--no-spaces-around-equals-in-field
Do not put spaces around the equal sign
in key/value fields
--line-breaks-after-function-body
Line breakes after function body
--line-separator=[line separator] input(determined by the input content),
os(Use line ending of the current
Operating system), lf(Unix style "\n"),
crlf(Windows style "\r\n"), cr(classic
Max style "\r")
Lua scripts... Lua scripts to format
"--" can be used to terminate flag options and force all following
arguments to be treated as positional options
```The program will attempt to automatically use the current directory's `.lua-format` file if no config file is passed in the command line. If none is found, it will try to locate a `.lua-format` file in a parent directory recursively. On Linux it will use `$XDG_CONFIG_HOME/luaformatter/config.yaml` if `.lua-format` does not exist.
In case there's no file, it will fallback to the default configuration.
The program will give the top priority to the configuration values given in the command-line, then to the configuration files and finally to the hard-coded default values.### Style configure file
Configuration parameters not specified fallback to their default values.
See [this file](https://github.com/Koihik/LuaFormatter/blob/master/docs/Style-Config.md)
### Default configuration
```yaml
column_limit: 80
indent_width: 4
use_tab: false
tab_width: 4
continuation_indent_width: 4
spaces_before_call: 1
keep_simple_control_block_one_line: true
keep_simple_function_one_line: true
align_args: true
break_after_functioncall_lp: false
break_before_functioncall_rp: false
spaces_inside_functioncall_parens: false
spaces_inside_functiondef_parens: false
align_parameter: true
chop_down_parameter: false
break_after_functiondef_lp: false
break_before_functiondef_rp: false
align_table_field: true
break_after_table_lb: true
break_before_table_rb: true
chop_down_table: false
chop_down_kv_table: true
table_sep: ","
column_table_limit: 0
extra_sep_at_table_end: false
spaces_inside_table_braces: false
break_after_operator: true
double_quote_to_single_quote: false
single_quote_to_double_quote: false
spaces_around_equals_in_field: true
line_breaks_after_function_body: 1
line_separator: input
```
### Disable formatting for a line or block
Sometimes it may be useful to disable automatic formatting. This is done be putting the code between `LuaFormatter off` and `LuaFormatter on` tags:```lua
-- LuaFormatter off
matrix = {
{1, 0, 0, 0},
{1, 1, 0, 0},
{1, 1, 1, 0},
{1, 1, 1, 1}
}
-- LuaFormatter on
```## Limitations
* Do not work when source file contains syntax error
* Do not support 'Format selection'