Skip to content

Nim code formatter / linter / style checker

License

Notifications You must be signed in to change notification settings

shampee/nimfmt

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Nim code formatter / style checker

Features
  • ✓ Add/remove whitespaces and commas in function calls

  • ❏ Sort imports

  • ✓ Detect inconsistent variable/function naming

  • ✓ Fix inconsistent variable/function naming

  • ❏ Enforce variable/function naming style

  • Enforce whitelines (in fixed number or a range):

    • ❏ before functions

    • ❏ on closing blocks

    • ❏ end of file

    • ❏ around imports

  • ❏ Optional # to close blocks

One of the main features is to detect and correct inconsistent variable and function naming.

Using proc_naming_style = most_popular, if the same identifier appears within a file as myName more frequently and my_name and myname less frequently, nimfmt will pick the first one. This is the recommended setting to ensure consistency without having to explicitly configure nimfmt with a preferred style.

Using proc_naming_style = snake_case, if the same identifier appears as myName, my_name and myname, nimfmt will pick the second one.

Configuration

nimfmt looks for configuration files is the following order:
  • current directory

  • ~/.config/nimfmt.cfg

  • ~/.nimfmt.cfg

  • /etc/nimfmt.cfg

Configuration example:

# Fix inconsistent naming
# auto     - fix automatically
# no       - print warning only
fix_naming_style = "auto"

# Choose the correct naming
# most_popular  - pick the most frequently used naming style for a given identifier
# snake_case    - prefer snake_case naming if possible
proc_naming_style = most_popular

Examples

Input:

proc my_foo( a: string,  b:string,c:int, ): string  =
  raise newException ( Exception ,
    "foo" )
  foo ( a , b , c )
  d [ a ]  =  3
  discard    "string to discard"

  break
  return   "string to return"

Output:

proc my_foo(a: string; b: string; c: int): string =
  raise newException(Exception, "foo")
  foo(a, b, c)
  d[a] = 3
  discard "string to discard"
  break
  return "string to return"

Usage

  nimfmt <filename.nim> [<filename.nim> ... ]
  [ -p <prefix> ]     output file prefix
  [ -s <suffix> ]     output file suffix
  [ -c <filename>, ]  configuration file location(s) (default: ./.nimfmt.cfg ~/.nimfmt.cfg)
  [ -i ]              update files in-place (dangerous!)
  [ -w ]              overwrite existing files (automatically enabled when using -i)
  [-v]                version
  [-h]                this help

  If any of -p ..., -s ... or -i are specified the output will be written to disk,
  otherwise to stdout

Installation

nimble install compiler@#head

About

Nim code formatter / linter / style checker

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Nim 100.0%