Merge branch 'master' into master

This commit is contained in:
Glavin Wiechert 2017-04-15 01:57:31 -03:00 committed by GitHub
commit 0066451ff5
50 changed files with 787 additions and 231 deletions

12
.codeclimate.yml Normal file
View File

@ -0,0 +1,12 @@
engines:
coffeelint:
enabled: true
eslint:
enabled: true
ratings:
paths:
- "**.coffee"
- "**.js"
exclude_paths:

View File

@ -1,10 +1,12 @@
# dev
- Add support for additional wrap attribute options of js-beautify (html): force-aligned and force-expand-multiline.
- Update to `remark`'s new API and fix [#1196](https://github.com/Glavin001/atom-beautify/issues/1196)
- Add beautifier for the Lua language.
- Add [ocp-indent](https://github.com/OCamlPro/ocp-indent) beautifier for the OCaml language.
- Add [elm-format](https://github.com/avh4/elm-format) beautifier for the Elm language.
- Add [clang-format](http://clang.llvm.org/docs/ClangFormat.html) beautifier for C/C++/Obj-C languages.
- Add [yapf](http://github.com/google/yapf) beautifier for Python.
- Add [ESLint](https://github.com/eslint/eslint) beautifier for Javascript
- Closes [#776] (https://github.com/Glavin001/atom-beautify/issues/776) Add support for `collapse-preserve-inline` brace_style for javascript.
- Closes [#786](https://github.com/Glavin001/atom-beautify/issues/786) YAPF configuration files are ignored.
- Fix phpcbf hanging issue by closing stdin. See [#893](https://github.com/Glavin001/atom-beautify/issues/893)

View File

@ -20,6 +20,7 @@
## Table of Contents
- [Installation](#installation)
- [Beautifiers](#beautifiers)
- [Language Support](#language-support)
- [Usage](#usage)
- [Selection of Code](#selection-of-code)
@ -54,6 +55,11 @@ Thank you.
Atom-Beautify is going to be completely rewritten with [Unibeautify](https://github.com/Unibeautify/unibeautify) at its core!
See [`unibeautify` branch](../../tree/unibeautify) for work in progress and [Issue #1174](https://github.com/Glavin001/atom-beautify/issues/1174).
## Beautifiers
Some of the supported beautifiers are developed for Node.js and are automatically installed when Atom-Beautify is installed. However, other beautifiers are command-line interface (CLI) applications and require you to manually install them.
{{beautifiers-info beautifiers}}
## Language Support

View File

@ -20,6 +20,7 @@
## Table of Contents
- [Installation](#installation)
- [Beautifiers](#beautifiers)
- [Language Support](#language-support)
- [Usage](#usage)
- [Selection of Code](#selection-of-code)
@ -54,6 +55,54 @@ Thank you.
Atom-Beautify is going to be completely rewritten with [Unibeautify](https://github.com/Unibeautify/unibeautify) at its core!
See [`unibeautify` branch](../../tree/unibeautify) for work in progress and [Issue #1174](https://github.com/Glavin001/atom-beautify/issues/1174).
## Beautifiers
Some of the supported beautifiers are developed for Node.js and are automatically installed when Atom-Beautify is installed. However, other beautifiers are command-line interface (CLI) applications and require you to manually install them.
| Beautifier | Is Pre-Installed? | Installation Instructions |
| --- | --- | --- |
| autopep8 | :x: | Go to https://github.com/hhatto/autopep8 and follow the instructions. |
| beautysh | :x: | Go to https://github.com/bemeurer/beautysh and follow the instructions. |
| clang-format | :x: | Go to https://clang.llvm.org/docs/ClangFormat.html and follow the instructions. |
| cljfmt | :white_check_mark: | Nothing! |
| Coffee Formatter | :white_check_mark: | Nothing! |
| coffee-fmt | :white_check_mark: | Nothing! |
| Crystal | :x: | Go to http://crystal-lang.org and follow the instructions. |
| CSScomb | :white_check_mark: | Nothing! |
| dfmt | :x: | Go to https://github.com/Hackerpilot/dfmt and follow the instructions. |
| elm-format | :x: | Go to https://github.com/avh4/elm-format and follow the instructions. |
| erl_tidy | :x: | Go to http://erlang.org/doc/man/erl_tidy.html and follow the instructions. |
| ESLint Fixer | :white_check_mark: | Nothing! |
| formatR | :x: | Go to https://github.com/yihui/formatR and follow the instructions. |
| Fortran Beautifier | :x: | Go to https://www.gnu.org/software/emacs/ and follow the instructions. |
| Gherkin formatter | :white_check_mark: | Nothing! |
| gofmt | :x: | Go to https://golang.org/cmd/gofmt/ and follow the instructions. |
| hh_format | :x: | Go to http://hhvm.com/ and follow the instructions. |
| HTML Beautifier | :x: | Go to https://github.com/threedaymonk/htmlbeautifier and follow the instructions. |
| JS Beautify | :white_check_mark: | Nothing! |
| JSCS Fixer | :white_check_mark: | Nothing! |
| Latex Beautify | :x: | Go to https://github.com/cmhughes/latexindent.pl and follow the instructions. |
| Lua beautifier | :x: | Go to https://www.perl.org/ and follow the instructions. |
| Marko Beautifier | :white_check_mark: | Nothing! |
| ocp-indent | :x: | Go to https://www.typerex.org/ocp-indent.html and follow the instructions. |
| Perltidy | :x: | Go to http://perltidy.sourceforge.net/ and follow the instructions. |
| PHP-CS-Fixer | :x: | Go to https://github.com/FriendsOfPHP/PHP-CS-Fixer and follow the instructions. |
| PHPCBF | :x: | Go to http://php.net/manual/en/install.php and follow the instructions. |
| Pretty Diff | :white_check_mark: | Nothing! |
| Pug Beautify | :white_check_mark: | Nothing! |
| puppet-lint | :x: | Go to http://puppet-lint.com/ and follow the instructions. |
| Remark | :white_check_mark: | Nothing! |
| Rubocop | :x: | Go to https://github.com/bbatsov/rubocop and follow the instructions. |
| Ruby Beautify | :x: | Go to https://github.com/erniebrodeur/ruby-beautify and follow the instructions. |
| rustfmt | :x: | Go to https://github.com/nrc/rustfmt and follow the instructions. |
| SassConvert | :x: | Go to http://sass-lang.com/documentation/file.SASS_REFERENCE.html#syntax and follow the instructions. |
| sqlformat | :x: | Go to https://github.com/andialbrecht/sqlparse and follow the instructions. |
| stylish-haskell | :x: | Go to https://github.com/jaspervdj/stylish-haskell and follow the instructions. |
| Tidy Markdown | :white_check_mark: | Nothing! |
| TypeScript Formatter | :white_check_mark: | Nothing! |
| Uncrustify | :x: | Go to https://github.com/uncrustify/uncrustify and follow the instructions. |
| Vue Beautifier | :white_check_mark: | Nothing! |
| yapf | :x: | Go to https://github.com/google/yapf and follow the instructions. |
## Language Support
@ -68,7 +117,7 @@ See [all supported options in the documentation at `docs/options.md`](docs/opti
| Coldfusion | `html` |`.cfm`, `.cfml`, `.cfc` | [`Pretty Diff`](https://github.com/prettydiff/prettydiff) (Default) |
| Clojure | `Clojure` |`.clj`, `.cljs`, `.edn` | [`cljfmt`](https://github.com/snoe/node-cljfmt) (Default) |
| CoffeeScript | `CoffeeScript` |`.coffee` | [`Coffee Formatter`](https://github.com/Glavin001/Coffee-Formatter), [`coffee-fmt`](https://github.com/sterpe/coffee-fmt) (Default) |
| C++ | `C++` |`.h`, `.hh`, `.cc`, `.cpp`, `.cxx`, `.C`, `.c++`, `.hpp`, `.hxx`, `.h++` | [`Uncrustify`](https://github.com/uncrustify/uncrustify) (Default), [`clang-format`](https://clang.llvm.org/docs/ClangFormat.html) |
| C++ | `C++` |`.h`, `.hh`, `.cc`, `.cpp`, `.cxx`, `.C`, `.cu`, `.c++`, `.hpp`, `.hxx`, `.h++`, `.cuh` | [`Uncrustify`](https://github.com/uncrustify/uncrustify) (Default), [`clang-format`](https://clang.llvm.org/docs/ClangFormat.html) |
| Crystal | `Crystal` |`.cr` | [`Crystal`](http://crystal-lang.org) (Default) |
| C# | `C#` |`.cs` | [`Uncrustify`](https://github.com/uncrustify/uncrustify) (Default) |
| CSS | `CSS` |`.css` | [`CSScomb`](https://github.com/csscomb/csscomb.js), [`JS Beautify`](https://github.com/beautify-web/js-beautify) (Default), [`Pretty Diff`](https://github.com/prettydiff/prettydiff), [`SassConvert`](http://sass-lang.com/documentation/file.SASS_REFERENCE.html#syntax) |
@ -78,25 +127,26 @@ See [all supported options in the documentation at `docs/options.md`](docs/opti
| Elm | `Elm` |`.elm` | [`elm-format`](https://github.com/avh4/elm-format) (Default) |
| ERB | `HTML (Ruby - ERB)`, `HTML (Rails)` |`.erb` | [`HTML Beautifier`](https://github.com/threedaymonk/htmlbeautifier), [`Pretty Diff`](https://github.com/prettydiff/prettydiff) (Default) |
| Erlang | `Erlang` |`.erl` | [`erl_tidy`](http://erlang.org/doc/man/erl_tidy.html) (Default) |
| Fortran | `Fortran - Modern` |`.f90`, `.F90`, `.f95`, `.F95` | [`Fortran Beautifier`](https://github.com/Glavin001/atom-beautify/blob/master/src/beautifiers/fortran-beautifier/emacs-fortran-formating-script.lisp) (Default) |
| Fortran | `Fortran - Modern` |`.f90`, `.F90`, `.f95`, `.F95` | [`Fortran Beautifier`](https://www.gnu.org/software/emacs/) (Default) |
| gherkin | `Gherkin` |`.feature` | [`Gherkin formatter`](https://github.com/Glavin001/atom-beautify/blob/master/src/beautifiers/gherkin.coffee) (Default) |
| GLSL | `C`, `opencl`, `GLSL` |`.vert`, `.frag` | [`clang-format`](https://clang.llvm.org/docs/ClangFormat.html) (Default) |
| Go | `Go` |`.go` | [`gofmt`](https://golang.org/cmd/gofmt/) (Default) |
| Golang Template | `HTML (Go)`, `Go Template` |`.gohtml` | [`Pretty Diff`](https://github.com/prettydiff/prettydiff) (Default) |
| Handlebars | `Handlebars`, `HTML (Handlebars)` |`.hbs`, `.handlebars` | [`JS Beautify`](https://github.com/beautify-web/js-beautify) (Default), [`Pretty Diff`](https://github.com/prettydiff/prettydiff) |
| Haskell | `Haskell` |`.hs` | [`stylish-haskell`](https://github.com/jaspervdj/stylish-haskell) (Default) |
| HTML | `HTML` |`.html` | [`JS Beautify`](https://github.com/beautify-web/js-beautify) (Default), [`Pretty Diff`](https://github.com/prettydiff/prettydiff) |
| Jade | `Jade`, `Pug` |`.jade`, `.pug` | [`Pug Beautify`](https://github.com/vingorius/pug-beautify) (Default) |
| Java | `Java` |`.java` | [`Uncrustify`](https://github.com/uncrustify/uncrustify) (Default) |
| JavaScript | `JavaScript` |`.js` | [`JS Beautify`](https://github.com/beautify-web/js-beautify) (Default), [`JSCS Fixer`](https://github.com/jscs-dev/node-jscs/), [`Pretty Diff`](https://github.com/prettydiff/prettydiff) |
| JavaScript | `JavaScript` |`.js` | [`ESLint Fixer`](https://github.com/eslint/eslint), [`JS Beautify`](https://github.com/beautify-web/js-beautify) (Default), [`JSCS Fixer`](https://github.com/jscs-dev/node-jscs/), [`Pretty Diff`](https://github.com/prettydiff/prettydiff) |
| JSON | `JSON` |`.json` | [`JS Beautify`](https://github.com/beautify-web/js-beautify) (Default), [`Pretty Diff`](https://github.com/prettydiff/prettydiff) |
| JSX | `JSX`, `JavaScript (JSX)`, `Babel ES6 JavaScript`, `JavaScript with JSX` |`.jsx`, `.js` | [`JS Beautify`](https://github.com/beautify-web/js-beautify), [`Pretty Diff`](https://github.com/prettydiff/prettydiff) (Default) |
| LaTeX | `LaTeX` |`.tex` | [`Latex Beautify`](https://github.com/cmhughes/latexindent.pl) (Default) |
| LESS | `LESS` |`.less` | [`CSScomb`](https://github.com/csscomb/csscomb.js), [`Pretty Diff`](https://github.com/prettydiff/prettydiff) (Default) |
| Lua | `Lua` |`.lua` | [`Lua beautifier`](https://github.com/Glavin001/atom-beautify/blob/master/src/beautifiers/lua-beautifier/beautifier.pl) (Default) |
| Lua | `Lua` |`.lua` | [`Lua beautifier`](https://www.perl.org/) (Default) |
| Markdown | `GitHub Markdown` |`.markdown`, `.md` | [`Remark`](https://github.com/wooorm/remark), [`Tidy Markdown`](https://github.com/slang800/tidy-markdown) (Default) |
| Marko | `Marko` |`.marko` | [`Marko Beautifier`](https://github.com/marko-js/marko-prettyprint) (Default) |
| Mustache | `HTML (Mustache)` |`.mustache` | [`JS Beautify`](https://github.com/beautify-web/js-beautify) (Default) |
| Nginx | `nginx` |`.conf` | [`Nginx Beautify`](https://github.com/denysvitali/nginxbeautify) (Default) |
| Mustache | `HTML (Mustache)` |`.mustache` | [`JS Beautify`](https://github.com/beautify-web/js-beautify) (Default), [`Pretty Diff`](https://github.com/prettydiff/prettydiff) |
| Nunjucks | `Nunjucks`, `Nunjucks Templates`, `HTML (Nunjucks Templates)` |`.njk`, `.nunjucks` | [`Pretty Diff`](https://github.com/prettydiff/prettydiff) (Default) |
| Objective-C | `Objective-C`, `Objective-C++` |`.m`, `.mm`, `.h` | [`Uncrustify`](https://github.com/uncrustify/uncrustify) (Default), [`clang-format`](https://clang.llvm.org/docs/ClangFormat.html) |
| OCaml | `OCaml` |`.ml` | [`ocp-indent`](https://www.typerex.org/ocp-indent.html) (Default) |
@ -121,7 +171,7 @@ See [all supported options in the documentation at `docs/options.md`](docs/opti
| UX Markup | `UX` |`.ux` | [`Pretty Diff`](https://github.com/prettydiff/prettydiff) (Default) |
| Vala | `Vala` |`.vala`, `.vapi` | [`Uncrustify`](https://github.com/uncrustify/uncrustify) (Default) |
| Visualforce | `Visualforce` |`.page` | [`Pretty Diff`](https://github.com/prettydiff/prettydiff) (Default) |
| Vue | `Vue Component` |`.vue` | `Vue Beautifier` (Default) |
| Vue | `Vue Component` |`.vue` | [`Vue Beautifier`](https://github.com/Glavin001/atom-beautify/blob/master/src/beautifiers/vue-beautifier.coffee) (Default) |
| XML | `SLD`, `XML`, `XHTML`, `XSD`, `XSL`, `JSP`, `GSP` |`.sld`, `.xml`, `.xhtml`, `.xsd`, `.xsl`, `.jsp`, `.gsp`, `.plist`, `.recipe` | [`JS Beautify`](https://github.com/beautify-web/js-beautify), [`Pretty Diff`](https://github.com/prettydiff/prettydiff) (Default) |
| XTemplate | `XTemplate` |`.xtemplate` | [`Pretty Diff`](https://github.com/prettydiff/prettydiff) (Default) |

View File

@ -15,6 +15,7 @@ environment:
- PYTHON: "C:\\Python27"
PYTHON_VERSION: "2.7.8"
PYTHON_ARCH: "32"
RUBY_VERSION: 23
# - PYTHON: "C:\\Python27-x64"
# PYTHON_VERSION: "2.7.8"
@ -82,8 +83,7 @@ install:
- "%CMD_IN_ENV% pip install --upgrade sqlparse"
# Ruby & Gem
- cinst ruby -y
- "SET PATH=C:\\tools\\ruby23\\bin;%PATH%"
- SET PATH=C:\Ruby%RUBY_VERSION%\bin;C:\Ruby23-x64\DevKit\mingw\bin;%PATH%
# Rubocop
- gem install rubocop
- where rubocop
@ -104,9 +104,10 @@ install:
# FIXME: Enable allowEmptyChecksums, until someone fixes the checksum issue of php
- choco feature enable -n allowEmptyChecksums
# PHP
- ps: Set-Service wuauserv -StartupType Manual
- cinst php -y
- ps: "ls \"C:\\tools\\php\""
- "SET PATH=C:\\tools\\php;%PATH%"
- ps: "ls \"C:\\tools\\php71\""
- "SET PATH=C:\\tools\\php71;%PATH%"
- where php
# PHP-CS-Fixer
- cinst curl -y # Use cURL to download file from URL

View File

@ -150,6 +150,31 @@ Handlebars.registerHelper('language-options-support', (languageOptions, options)
return new Handlebars.SafeString(results)
)
Handlebars.registerHelper('beautifiers-info', (beautifiers, options) ->
###
| Beautifier | Is Pre-Installed? | Installation Instructions |
| --- | ---- |
| Pretty Diff | :white_check_mark: | N/A |
| AutoPEP8 | :x: | LINK |
###
rows = _.map(beautifiers, (beautifier, k) ->
name = beautifier.name
isPreInstalled = beautifier.isPreInstalled
link = beautifier.link
installationInstructions = if isPreInstalled then "Nothing!" else "Go to #{link} and follow the instructions."
return "| #{name} | #{if isPreInstalled then ':white_check_mark:' else ':x:'} | #{installationInstructions} |"
)
results = """
| Beautifier | Is Pre-Installed? | Installation Instructions |
| --- | --- | --- |
#{rows.join('\n')}
"""
return new Handlebars.SafeString(results)
)
sortKeysBy = (obj, comparator) ->
keys = _.sortBy(_.keys(obj), (key) ->
return if comparator then comparator(obj[key], key) else key
@ -176,6 +201,7 @@ context = {
packageOptions: sortSettings(packageOptions)
languageOptions: sortSettings(languageOptions)
beautifierOptions: sortSettings(beautifierOptions)
beautifiers: _.sortBy(beautifier.beautifiers, (beautifier) -> beautifier.name.toLowerCase())
}
result = template(context)
readmeResult = readmeTemplate(context)

View File

@ -2895,13 +2895,13 @@ List of tags (defaults to inline) that should not be reformatted (Supported by J
**Type**: `string`
**Enum**: `auto` `force`
**Enum**: `auto` `force` `force-aligned` `force-expand-multiline`
**Supported Beautifiers**: [`JS Beautify`](#js-beautify)
**Description**:
Wrap attributes to new lines [auto|force] (Supported by JS Beautify)
Wrap attributes to new lines [auto|force|force-aligned|force-expand-multiline] (Supported by JS Beautify)
**Example `.jsbeautifyrc` Configuration**
@ -3685,6 +3685,183 @@ Automatically beautify Go files on save
2. Go into *Packages* and search for "*Atom Beautify*" package.
3. Find the option "*Beautify On Save*" and change it to your desired configuration.
#### [Golang Template](#golang-template)
**Supported Beautifiers**: [`Pretty Diff`](#pretty-diff)
| Option | Pretty Diff |
| --- | --- |
| `disabled` | :white_check_mark: |
| `default_beautifier` | :white_check_mark: |
| `beautify_on_save` | :white_check_mark: |
| `indent_char` | :white_check_mark: |
| `indent_size` | :white_check_mark: |
| `preserve_newlines` | :white_check_mark: |
| `wrap_line_length` | :white_check_mark: |
**Description**:
Options for language Golang Template
##### [Disable Beautifying Language](#disable-beautifying-language)
**Important**: This option is only configurable from within Atom Beautify's setting panel.
**Type**: `boolean`
**Description**:
Disable Golang Template Beautification
**How to Configure**
1. You can open the [Settings View](https://github.com/atom/settings-view) by navigating to
*Edit > Preferences (Linux)*, *Atom > Preferences (OS X)*, or *File > Preferences (Windows)*.
2. Go into *Packages* and search for "*Atom Beautify*" package.
3. Find the option "*Disable Beautifying Language*" and change it to your desired configuration.
##### [Default Beautifier](#default-beautifier)
**Important**: This option is only configurable from within Atom Beautify's setting panel.
**Default**: `Pretty Diff`
**Type**: `string`
**Enum**: `Pretty Diff`
**Description**:
Default Beautifier to be used for Golang Template
**How to Configure**
1. You can open the [Settings View](https://github.com/atom/settings-view) by navigating to
*Edit > Preferences (Linux)*, *Atom > Preferences (OS X)*, or *File > Preferences (Windows)*.
2. Go into *Packages* and search for "*Atom Beautify*" package.
3. Find the option "*Default Beautifier*" and change it to your desired configuration.
##### [Beautify On Save](#beautify-on-save)
**Important**: This option is only configurable from within Atom Beautify's setting panel.
**Type**: `boolean`
**Description**:
Automatically beautify Golang Template files on save
**How to Configure**
1. You can open the [Settings View](https://github.com/atom/settings-view) by navigating to
*Edit > Preferences (Linux)*, *Atom > Preferences (OS X)*, or *File > Preferences (Windows)*.
2. Go into *Packages* and search for "*Atom Beautify*" package.
3. Find the option "*Beautify On Save*" and change it to your desired configuration.
##### [Indent char](#indent-char)
**Namespace**: `html`
**Key**: `indent_char`
**Default**: ` `
**Type**: `string`
**Supported Beautifiers**: [`Pretty Diff`](#pretty-diff)
**Description**:
Indentation character (Supported by Pretty Diff)
**Example `.jsbeautifyrc` Configuration**
```json
{
"html": {
"indent_char": " "
}
}
```
##### [Indent size](#indent-size)
**Namespace**: `html`
**Key**: `indent_size`
**Default**: `4`
**Type**: `integer`
**Supported Beautifiers**: [`Pretty Diff`](#pretty-diff)
**Description**:
Indentation size/length (Supported by Pretty Diff)
**Example `.jsbeautifyrc` Configuration**
```json
{
"html": {
"indent_size": 4
}
}
```
##### [Preserve newlines](#preserve-newlines)
**Namespace**: `html`
**Key**: `preserve_newlines`
**Default**: `true`
**Type**: `boolean`
**Supported Beautifiers**: [`Pretty Diff`](#pretty-diff)
**Description**:
Preserve line-breaks (Supported by Pretty Diff)
**Example `.jsbeautifyrc` Configuration**
```json
{
"html": {
"preserve_newlines": true
}
}
```
##### [Wrap line length](#wrap-line-length)
**Namespace**: `html`
**Key**: `wrap_line_length`
**Default**: `250`
**Type**: `integer`
**Supported Beautifiers**: [`Pretty Diff`](#pretty-diff)
**Description**:
Maximum characters per line (0 disables) (Supported by Pretty Diff)
**Example `.jsbeautifyrc` Configuration**
```json
{
"html": {
"wrap_line_length": 250
}
}
```
#### [Handlebars](#handlebars)
**Supported Beautifiers**: [`JS Beautify`](#js-beautify) [`Pretty Diff`](#pretty-diff)
@ -4110,13 +4287,13 @@ List of tags (defaults to inline) that should not be reformatted (Supported by J
**Type**: `string`
**Enum**: `auto` `force`
**Enum**: `auto` `force` `force-aligned` `force-expand-multiline`
**Supported Beautifiers**: [`JS Beautify`](#js-beautify)
**Description**:
Wrap attributes to new lines [auto|force] (Supported by JS Beautify)
Wrap attributes to new lines [auto|force|force-aligned|force-expand-multiline] (Supported by JS Beautify)
**Example `.jsbeautifyrc` Configuration**
@ -4674,13 +4851,13 @@ List of tags (defaults to inline) that should not be reformatted (Supported by J
**Type**: `string`
**Enum**: `auto` `force`
**Enum**: `auto` `force` `force-aligned` `force-expand-multiline`
**Supported Beautifiers**: [`JS Beautify`](#js-beautify)
**Description**:
Wrap attributes to new lines [auto|force] (Supported by JS Beautify)
Wrap attributes to new lines [auto|force|force-aligned|force-expand-multiline] (Supported by JS Beautify)
**Example `.jsbeautifyrc` Configuration**
@ -4963,32 +5140,32 @@ Path to uncrustify config file. i.e. uncrustify.cfg (Supported by Uncrustify)
#### [JavaScript](#javascript)
**Supported Beautifiers**: [`JS Beautify`](#js-beautify) [`JSCS Fixer`](#jscs-fixer) [`Pretty Diff`](#pretty-diff)
**Supported Beautifiers**: [`JS Beautify`](#js-beautify) [`JSCS Fixer`](#jscs-fixer) [`ESLint Fixer`](#eslint-fixer) [`Pretty Diff`](#pretty-diff)
| Option | JS Beautify | JSCS Fixer | Pretty Diff |
| --- | --- | --- | --- |
| `disabled` | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| `default_beautifier` | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| `beautify_on_save` | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| `brace_style` | :white_check_mark: | :x: | :x: |
| `break_chained_methods` | :white_check_mark: | :x: | :white_check_mark: |
| `end_with_comma` | :white_check_mark: | :x: | :white_check_mark: |
| `end_with_newline` | :white_check_mark: | :x: | :x: |
| `eval_code` | :white_check_mark: | :x: | :x: |
| `indent_char` | :white_check_mark: | :x: | :white_check_mark: |
| `indent_level` | :white_check_mark: | :x: | :x: |
| `indent_size` | :white_check_mark: | :x: | :white_check_mark: |
| `indent_with_tabs` | :white_check_mark: | :x: | :white_check_mark: |
| `jslint_happy` | :white_check_mark: | :x: | :x: |
| `keep_array_indentation` | :white_check_mark: | :x: | :x: |
| `keep_function_indentation` | :white_check_mark: | :x: | :x: |
| `max_preserve_newlines` | :white_check_mark: | :x: | :x: |
| `preserve_newlines` | :white_check_mark: | :x: | :white_check_mark: |
| `space_after_anon_function` | :white_check_mark: | :x: | :white_check_mark: |
| `space_before_conditional` | :white_check_mark: | :x: | :x: |
| `space_in_paren` | :white_check_mark: | :x: | :white_check_mark: |
| `unescape_strings` | :white_check_mark: | :x: | :x: |
| `wrap_line_length` | :white_check_mark: | :x: | :white_check_mark: |
| Option | ESLint Fixer | JS Beautify | JSCS Fixer | Pretty Diff |
| --- | --- | --- | --- | --- |
| `disabled` | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| `default_beautifier` | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| `beautify_on_save` | :white_check_mark: | :white_check_mark: | :white_check_mark: | :white_check_mark: |
| `brace_style` | :x: | :white_check_mark: | :x: | :x: |
| `break_chained_methods` | :x: | :white_check_mark: | :x: | :white_check_mark: |
| `end_with_comma` | :x: | :white_check_mark: | :x: | :white_check_mark: |
| `end_with_newline` | :x: | :white_check_mark: | :x: | :x: |
| `eval_code` | :x: | :white_check_mark: | :x: | :x: |
| `indent_char` | :x: | :white_check_mark: | :x: | :white_check_mark: |
| `indent_level` | :x: | :white_check_mark: | :x: | :x: |
| `indent_size` | :x: | :white_check_mark: | :x: | :white_check_mark: |
| `indent_with_tabs` | :x: | :white_check_mark: | :x: | :white_check_mark: |
| `jslint_happy` | :x: | :white_check_mark: | :x: | :x: |
| `keep_array_indentation` | :x: | :white_check_mark: | :x: | :x: |
| `keep_function_indentation` | :x: | :white_check_mark: | :x: | :x: |
| `max_preserve_newlines` | :x: | :white_check_mark: | :x: | :x: |
| `preserve_newlines` | :x: | :white_check_mark: | :x: | :white_check_mark: |
| `space_after_anon_function` | :x: | :white_check_mark: | :x: | :white_check_mark: |
| `space_before_conditional` | :x: | :white_check_mark: | :x: | :x: |
| `space_in_paren` | :x: | :white_check_mark: | :x: | :white_check_mark: |
| `unescape_strings` | :x: | :white_check_mark: | :x: | :x: |
| `wrap_line_length` | :x: | :white_check_mark: | :x: | :white_check_mark: |
**Description**:
@ -5019,7 +5196,7 @@ Disable JavaScript Beautification
**Type**: `string`
**Enum**: `JS Beautify` `JSCS Fixer` `Pretty Diff`
**Enum**: `JS Beautify` `JSCS Fixer` `ESLint Fixer` `Pretty Diff`
**Description**:
@ -6088,6 +6265,7 @@ Wrap lines at next opportunity after N characters (Supported by JS Beautify, Pre
| `beautify_on_save` | :white_check_mark: | :white_check_mark: |
| `brace_style` | :white_check_mark: | :x: |
| `break_chained_methods` | :white_check_mark: | :white_check_mark: |
| `e4x` | :white_check_mark: | :x: |
| `end_with_comma` | :white_check_mark: | :white_check_mark: |
| `end_with_newline` | :white_check_mark: | :x: |
| `eval_code` | :white_check_mark: | :x: |
@ -6217,6 +6395,32 @@ Break chained method calls across subsequent lines (Supported by JS Beautify, Pr
}
```
##### [E4x](#e4x)
**Namespace**: `jsx`
**Key**: `e4x`
**Default**: `true`
**Type**: `boolean`
**Supported Beautifiers**: [`JS Beautify`](#js-beautify)
**Description**:
Support e4x/jsx syntax (Supported by JS Beautify)
**Example `.jsbeautifyrc` Configuration**
```json
{
"jsx": {
"e4x": true
}
}
```
##### [End with comma](#end-with-comma)
**Namespace**: `js`
@ -7948,13 +8152,13 @@ List of tags (defaults to inline) that should not be reformatted (Supported by M
**Type**: `string`
**Enum**: `auto` `force`
**Enum**: `auto` `force` `force-aligned` `force-expand-multiline`
**Supported Beautifiers**: [`Marko Beautifier`](#marko-beautifier)
**Description**:
Wrap attributes to new lines [auto|force] (Supported by Marko Beautifier)
Wrap attributes to new lines [auto|force|force-aligned|force-expand-multiline] (Supported by Marko Beautifier)
**Example `.jsbeautifyrc` Configuration**
@ -8020,26 +8224,26 @@ Maximum characters per line (0 disables) (Supported by Marko Beautifier)
#### [Mustache](#mustache)
**Supported Beautifiers**: [`JS Beautify`](#js-beautify)
**Supported Beautifiers**: [`JS Beautify`](#js-beautify) [`Pretty Diff`](#pretty-diff)
| Option | JS Beautify |
| --- | --- |
| `disabled` | :white_check_mark: |
| `default_beautifier` | :white_check_mark: |
| `beautify_on_save` | :white_check_mark: |
| `brace_style` | :white_check_mark: |
| `end_with_newline` | :white_check_mark: |
| `extra_liners` | :white_check_mark: |
| `indent_char` | :white_check_mark: |
| `indent_inner_html` | :white_check_mark: |
| `indent_scripts` | :white_check_mark: |
| `indent_size` | :white_check_mark: |
| `max_preserve_newlines` | :white_check_mark: |
| `preserve_newlines` | :white_check_mark: |
| `unformatted` | :white_check_mark: |
| `wrap_attributes` | :white_check_mark: |
| `wrap_attributes_indent_size` | :white_check_mark: |
| `wrap_line_length` | :white_check_mark: |
| Option | JS Beautify | Pretty Diff |
| --- | --- | --- |
| `disabled` | :white_check_mark: | :white_check_mark: |
| `default_beautifier` | :white_check_mark: | :white_check_mark: |
| `beautify_on_save` | :white_check_mark: | :white_check_mark: |
| `brace_style` | :white_check_mark: | :x: |
| `end_with_newline` | :white_check_mark: | :x: |
| `extra_liners` | :white_check_mark: | :x: |
| `indent_char` | :white_check_mark: | :white_check_mark: |
| `indent_inner_html` | :white_check_mark: | :x: |
| `indent_scripts` | :white_check_mark: | :x: |
| `indent_size` | :white_check_mark: | :white_check_mark: |
| `max_preserve_newlines` | :white_check_mark: | :x: |
| `preserve_newlines` | :white_check_mark: | :white_check_mark: |
| `unformatted` | :white_check_mark: | :x: |
| `wrap_attributes` | :white_check_mark: | :x: |
| `wrap_attributes_indent_size` | :white_check_mark: | :x: |
| `wrap_line_length` | :white_check_mark: | :white_check_mark: |
**Description**:
@ -8070,7 +8274,7 @@ Disable Mustache Beautification
**Type**: `string`
**Enum**: `JS Beautify`
**Enum**: `JS Beautify` `Pretty Diff`
**Description**:
@ -8192,11 +8396,11 @@ List of tags (defaults to [head,body,/html] that should have an extra newline be
**Type**: `string`
**Supported Beautifiers**: [`JS Beautify`](#js-beautify)
**Supported Beautifiers**: [`JS Beautify`](#js-beautify) [`Pretty Diff`](#pretty-diff)
**Description**:
Indentation character (Supported by JS Beautify)
Indentation character (Supported by JS Beautify, Pretty Diff)
**Example `.jsbeautifyrc` Configuration**
@ -8270,11 +8474,11 @@ Indent <head> and <body> sections. (Supported by JS Beautify)
**Type**: `integer`
**Supported Beautifiers**: [`JS Beautify`](#js-beautify)
**Supported Beautifiers**: [`JS Beautify`](#js-beautify) [`Pretty Diff`](#pretty-diff)
**Description**:
Indentation size/length (Supported by JS Beautify)
Indentation size/length (Supported by JS Beautify, Pretty Diff)
**Example `.jsbeautifyrc` Configuration**
@ -8322,11 +8526,11 @@ Number of line-breaks to be preserved in one chunk (Supported by JS Beautify)
**Type**: `boolean`
**Supported Beautifiers**: [`JS Beautify`](#js-beautify)
**Supported Beautifiers**: [`JS Beautify`](#js-beautify) [`Pretty Diff`](#pretty-diff)
**Description**:
Preserve line-breaks (Supported by JS Beautify)
Preserve line-breaks (Supported by JS Beautify, Pretty Diff)
**Example `.jsbeautifyrc` Configuration**
@ -8441,13 +8645,13 @@ List of tags (defaults to inline) that should not be reformatted (Supported by J
**Type**: `string`
**Enum**: `auto` `force`
**Enum**: `auto` `force` `force-aligned` `force-expand-multiline`
**Supported Beautifiers**: [`JS Beautify`](#js-beautify)
**Description**:
Wrap attributes to new lines [auto|force] (Supported by JS Beautify)
Wrap attributes to new lines [auto|force|force-aligned|force-expand-multiline] (Supported by JS Beautify)
**Example `.jsbeautifyrc` Configuration**
@ -8495,11 +8699,11 @@ Indent wrapped attributes to after N characters (Supported by JS Beautify)
**Type**: `integer`
**Supported Beautifiers**: [`JS Beautify`](#js-beautify)
**Supported Beautifiers**: [`JS Beautify`](#js-beautify) [`Pretty Diff`](#pretty-diff)
**Description**:
Maximum characters per line (0 disables) (Supported by JS Beautify)
Maximum characters per line (0 disables) (Supported by JS Beautify, Pretty Diff)
**Example `.jsbeautifyrc` Configuration**
@ -13649,13 +13853,13 @@ List of tags (defaults to inline) that should not be reformatted (Supported by V
**Type**: `string`
**Enum**: `auto` `force`
**Enum**: `auto` `force` `force-aligned` `force-expand-multiline`
**Supported Beautifiers**: [`Vue Beautifier`](#vue-beautifier)
**Description**:
Wrap attributes to new lines [auto|force] (Supported by Vue Beautifier)
Wrap attributes to new lines [auto|force|force-aligned|force-expand-multiline] (Supported by Vue Beautifier)
**Example `.jsbeautifyrc` Configuration**
@ -14144,13 +14348,13 @@ List of tags (defaults to inline) that should not be reformatted (Supported by J
**Type**: `string`
**Enum**: `auto` `force`
**Enum**: `auto` `force` `force-aligned` `force-expand-multiline`
**Supported Beautifiers**: [`JS Beautify`](#js-beautify)
**Description**:
Wrap attributes to new lines [auto|force] (Supported by JS Beautify)
Wrap attributes to new lines [auto|force|force-aligned|force-expand-multiline] (Supported by JS Beautify)
**Example `.jsbeautifyrc` Configuration**
@ -15647,13 +15851,13 @@ Indent <head> and <body> sections. (Supported by JS Beautify)
**Type**: `string`
**Enum**: `auto` `force`
**Enum**: `auto` `force` `force-aligned` `force-expand-multiline`
**Supported Beautifiers**: [`JS Beautify`](#js-beautify)
**Description**:
Wrap attributes to new lines [auto|force] (Supported by JS Beautify)
Wrap attributes to new lines [auto|force|force-aligned|force-expand-multiline] (Supported by JS Beautify)
**Example `.jsbeautifyrc` Configuration**
@ -15816,6 +16020,32 @@ List of tags (defaults to [head,body,/html] that should have an extra newline be
}
```
##### [E4x](#e4x)
**Namespace**: `jsx`
**Key**: `e4x`
**Default**: `true`
**Type**: `boolean`
**Supported Beautifiers**: [`JS Beautify`](#js-beautify)
**Description**:
Support e4x/jsx syntax (Supported by JS Beautify)
**Example `.jsbeautifyrc` Configuration**
```json
{
"jsx": {
"e4x": true
}
}
```
### Latex Beautify
@ -16199,13 +16429,13 @@ Maximum characters per line (0 disables) (Supported by Marko Beautifier)
**Type**: `string`
**Enum**: `auto` `force`
**Enum**: `auto` `force` `force-aligned` `force-expand-multiline`
**Supported Beautifiers**: [`Marko Beautifier`](#marko-beautifier)
**Description**:
Wrap attributes to new lines [auto|force] (Supported by Marko Beautifier)
Wrap attributes to new lines [auto|force|force-aligned|force-expand-multiline] (Supported by Marko Beautifier)
**Example `.jsbeautifyrc` Configuration**
@ -18360,13 +18590,13 @@ Indent <head> and <body> sections. (Supported by Vue Beautifier)
**Type**: `string`
**Enum**: `auto` `force`
**Enum**: `auto` `force` `force-aligned` `force-expand-multiline`
**Supported Beautifiers**: [`Vue Beautifier`](#vue-beautifier)
**Description**:
Wrap attributes to new lines [auto|force] (Supported by Vue Beautifier)
Wrap attributes to new lines [auto|force|force-aligned|force-expand-multiline] (Supported by Vue Beautifier)
**Example `.jsbeautifyrc` Configuration**

View File

@ -1,5 +1,34 @@
-- Ensure that that the element at i is in the right position,
-- and return a closure which can be used for continuing the sort.
local a = 'a b c'
local b = '12345678'
local c = 'a b c' + 'a b c'
local t = {
a = 1,
b = 2,
c = 3,
}
if a ~= 'a' then
local b = a
end
local e = {a = 1, b = 2}
function aaa(a, b, c)
-- comment 1
-- comment 2 1231
-- comment 1 123 123 123123 12
-- [[ comment 1 ]]
--[[
muli comments
ssss
@asdasd sad
]]
local a = -1
return a + b - c
end
local b = {a = 1, b = [[this is two space ;
]], c = 2}
function quicksorter(i, vec, low, high)
if low >= high then
return quicksorter
@ -11,10 +40,10 @@ function quicksorter(i, vec, low, high)
-- Create the promise
local function self(i, vec, low, high)
if i < middle then
left = left(i, vec, low, middle-1)
left = left(i, vec, low, middle - 1)
return self
elseif i > middle then
right = right(i, vec, middle+1, high)
right = right(i, vec, middle + 1, high)
return self
end
end

View File

@ -1,5 +1,34 @@
-- Ensure that that the element at i is in the right position,
-- and return a closure which can be used for continuing the sort.
local a= 'a b c'
local b ='12345678'
local c = 'a b c' +'a b c'
local t = {
a = 1,
b =2 ,
c= 3,
}
if a~='a' then
local b=a
end
local e={a=1,b=2}
function aaa(a,b,c)
-- comment 1
-- comment 2 1231
-- comment 1 123 123 123123 12
-- [[ comment 1 ]]
--[[
muli comments
ssss
@asdasd sad
]]
local a = -1
return a+b-c
end
local b = {a=1,b=[[this is two space ;
]],c=2}
function quicksorter(i, vec, low, high)
if low >= high then
return quicksorter
@ -18,7 +47,7 @@ right = right(i, vec, middle+1, high)
return self
end
end
-- Force the promise until i is in the right position
return self(i, vec, low, high)
end

View File

@ -1,7 +1,7 @@
{
"name": "atom-beautify",
"main": "./src/beautify",
"version": "0.29.17",
"version": "0.29.18",
"private": true,
"description": "Beautify HTML, CSS, JavaScript, PHP, Python, Ruby, Java, C, C++, C#, Objective-C, CoffeeScript, TypeScript, Coldfusion, SQL, and more in Atom",
"repository": {
@ -118,6 +118,18 @@
{
"name": "Denys Vitali",
"url": "https://github.com/denysvitali"
},
{
"name": "Daniel Brodin",
"url": "https://github.com/danielbrodin"
},
{
"name": "Anton Brok-Volchansky",
"url": "https://github.com/re6exp"
},
{
"name": "Taylon Silmer",
"url": "https://github.com/taylon"
}
],
"engines": {
@ -134,6 +146,7 @@
"csscomb": "^3.1.7",
"diff": "3.0.0",
"editorconfig": "^0.13.2",
"eslint": "^3.13.1",
"event-kit": "^2.1.0",
"expand-home-dir": "0.0.3",
"extend": "^3.0.0",
@ -156,7 +169,7 @@
"space-pen": "^5.1.1",
"strip-json-comments": "^2.0.1",
"temp": "^0.8.3",
"tidy-markdown": "^2.0.3",
"tidy-markdown": "2.0.3",
"typescript": "^1.8.10",
"typescript-formatter": "^2.3.0",
"underscore-plus": "^1.6.6",
@ -264,6 +277,8 @@
"fortran beautifier",
"js beautify",
"jscs fixer",
"eslint",
"eslint fixer",
"lua beautifier",
"ocp-indent",
"perltidy",
@ -298,7 +313,8 @@
"glsl",
"hh_format",
"nginx",
"nginx beautify"
"nginx beautify",
"golang template"
],
"devDependencies": {
"coffeelint": "^1.10.1",

View File

@ -9,6 +9,7 @@ module.exports = class Autopep8 extends Beautifier
name: "autopep8"
link: "https://github.com/hhatto/autopep8"
isPreInstalled: false
options: {
Python: true

View File

@ -31,6 +31,11 @@ module.exports = class Beautifier
###
options: {}
###
Is the beautifier a command-line interface beautifier?
###
isPreInstalled: true
###
Supported languages by this Beautifier

View File

@ -4,6 +4,8 @@ Beautifier = require('./beautifier')
module.exports = class BashBeautify extends Beautifier
name: "beautysh"
link: "https://github.com/bemeurer/beautysh"
isPreInstalled: false
options: {
Bash:
indent_size: true

View File

@ -11,6 +11,7 @@ module.exports = class ClangFormat extends Beautifier
name: "clang-format"
link: "https://clang.llvm.org/docs/ClangFormat.html"
isPreInstalled: false
options: {
"C++": false

View File

@ -8,6 +8,7 @@ Beautifier = require('./beautifier')
module.exports = class Crystal extends Beautifier
name: "Crystal"
link: "http://crystal-lang.org"
isPreInstalled: false
options: {
Crystal: false

View File

@ -7,6 +7,7 @@ Beautifier = require('./beautifier')
module.exports = class Dfmt extends Beautifier
name: "dfmt"
link: "https://github.com/Hackerpilot/dfmt"
isPreInstalled: false
options: {
D: false

View File

@ -7,6 +7,7 @@ Beautifier = require('./beautifier')
module.exports = class ElmFormat extends Beautifier
name: "elm-format"
link: "https://github.com/avh4/elm-format"
isPreInstalled: false
options: {
Elm: true

View File

@ -9,6 +9,7 @@ module.exports = class ErlTidy extends Beautifier
name: "erl_tidy"
link: "http://erlang.org/doc/man/erl_tidy.html"
isPreInstalled: false
options: {
Erlang: true

View File

@ -0,0 +1,33 @@
"use strict"
Beautifier = require('./beautifier')
Path = require('path')
{allowUnsafeNewFunction} = require 'loophole'
module.exports = class ESLintFixer extends Beautifier
name: "ESLint Fixer"
link: "https://github.com/eslint/eslint"
options: {
JavaScript: false
}
beautify: (text, language, options) ->
return new @Promise((resolve, reject) ->
editor = atom.workspace.getActiveTextEditor()
filePath = editor.getPath()
projectPath = atom.project.relativizePath(filePath)[0]
result = null
allowUnsafeNewFunction ->
importPath = Path.join(projectPath, 'node_modules', 'eslint')
try
CLIEngine = require(importPath).CLIEngine
cli = new CLIEngine(fix: true, cwd: projectPath)
result = cli.executeOnText(text).results[0]
resolve result.output
catch err
reject(err)
)

View File

@ -9,6 +9,7 @@ Beautifier = require('../beautifier')
module.exports = class R extends Beautifier
name: "formatR"
link: "https://github.com/yihui/formatR"
isPreInstalled: false
options: {
R: true

View File

@ -8,7 +8,8 @@ path = require("path")
module.exports = class FortranBeautifier extends Beautifier
name: "Fortran Beautifier"
link: "https://github.com/Glavin001/atom-beautify/blob/master/src/beautifiers/fortran-beautifier/emacs-fortran-formating-script.lisp"
link: "https://www.gnu.org/software/emacs/"
isPreInstalled: false
options: {
Fortran: true

View File

@ -8,6 +8,7 @@ Beautifier = require('./beautifier')
module.exports = class Gofmt extends Beautifier
name: "gofmt"
link: "https://golang.org/cmd/gofmt/"
isPreInstalled: false
options: {
Go: true

View File

@ -8,6 +8,7 @@ Beautifier = require('./beautifier')
module.exports = class HhFormat extends Beautifier
name: "hh_format"
link: "http://hhvm.com/"
isPreInstalled: false
options:
PHP: false

View File

@ -8,6 +8,8 @@ Beautifier = require('./beautifier')
module.exports = class HTMLBeautifier extends Beautifier
name: "HTML Beautifier"
link: "https://github.com/threedaymonk/htmlbeautifier"
isPreInstalled: false
options: {
ERB:
indent_size: true

View File

@ -52,6 +52,7 @@ module.exports = class Beautifiers extends EventEmitter
'fortran-beautifier'
'js-beautify'
'jscs'
'eslint'
'lua-beautifier'
'nginx-beautify'
'ocp-indent'
@ -141,20 +142,32 @@ module.exports = class Beautifiers extends EventEmitter
) or beautifiers[0]
return beautifier
getLanguage : (grammar, filePath) ->
getExtension : (filePath) ->
if filePath
return path.extname(filePath).substr(1)
getLanguages : (grammar, filePath) ->
# Get language
fileExtension = path.extname(filePath)
# Remove prefix "." (period) in fileExtension
fileExtension = fileExtension.substr(1)
languages = @languages.getLanguages({grammar, extension: fileExtension})
logger.verbose(languages, grammar, fileExtension)
# Check if unsupported language
if languages.length < 1
return null
fileExtension = @getExtension(filePath)
if fileExtension
languages = @languages.getLanguages({grammar, extension: fileExtension})
else
# TODO: select appropriate language
languages = @languages.getLanguages({grammar})
logger.verbose(languages, grammar, fileExtension)
return languages
getLanguage : (grammar, filePath) ->
languages = @getLanguages(grammar, filePath)
# Check if unsupported language
if languages.length > 0
language = languages[0]
return language
getOptionsForLanguage : (allOptions, language) ->
# Options for Language
selections = (language.fallback or []).concat([language.namespace])
@ -242,15 +255,10 @@ module.exports = class Beautifiers extends EventEmitter
logger.info('beautify', text, allOptions, grammar, filePath, onSave)
logger.verbose(allOptions)
# Get language
fileExtension = path.extname(filePath)
# Remove prefix "." (period) in fileExtension
fileExtension = fileExtension.substr(1)
languages = @languages.getLanguages({grammar, extension: fileExtension})
logger.verbose(languages, grammar, fileExtension)
language = @getLanguage(grammar, filePath)
# Check if unsupported language
if languages.length < 1
if !language
unsupportedGrammar = true
logger.verbose('Unsupported language')
@ -261,19 +269,14 @@ module.exports = class Beautifiers extends EventEmitter
# not intended to be beautified
return resolve( null )
else
# TODO: select appropriate language
language = languages[0]
logger.verbose("Language #{language.name} supported")
# Get language config
langDisabled = atom.config.get("atom-beautify.#{language.namespace}.disabled")
# Beautify!
unsupportedGrammar = false
# Check if Language is disabled
if langDisabled
logger.verbose("Language #{language.name} is disabled")
@ -371,6 +374,7 @@ module.exports = class Beautifiers extends EventEmitter
if atom.config.get("atom-beautify.general.muteUnsupportedLanguageErrors")
return resolve( null )
else
fileExtension = @getExtension(filePath)
repoBugsUrl = pkg.bugs.url
title = "Atom Beautify could not find a supported beautifier for this file"
detail = """

View File

@ -8,6 +8,7 @@ temp = require("temp").track()
module.exports = class LatexBeautify extends Beautifier
name: "Latex Beautify"
link: "https://github.com/cmhughes/latexindent.pl"
isPreInstalled: false
options: {
LaTeX: true

View File

@ -0,0 +1,103 @@
DEFAULT_INDENT = ' '
adjust_space = (line) ->
string_list = line.match /(['"])[^\1]*?\1/g
muli_string = line.match /\[(=*)\[([^\]\1\]]*)/
comment = line.match /\-{2}[^\[].*$/
line = line.replace /\s+/g, ' '
# replace all whitespaces inside the string with one space, WARNING: the whitespaces in string will be replace too!
line = line.replace /\s?(==|>=|<=|~=|[=><\+\*\/])\s?/g, ' $1 '
# add whitespace around the operator
line = line.replace /([^=|\-|(|\s])\s?\-\s?([^\-|\[])/g, '$1 - $2'
# just format minus, not for -- or negative number or commentary.
line = line.replace /,([^\s])/g, ', $1'
# adjust ','
line = line.replace /\s+,/g, ','
# recover the whitespaces in string.
line = line.replace /(['"])[^\1]*?\1/g, ->
string_list.shift()
if muli_string and muli_string[0]
line = line.replace /\[(=*)\[([^\]\1\]]*)/, muli_string[0]
if comment and comment[0]
line = line.replace /\-{2}[^\[].*$/, comment[0]
line
DEFAULT_WARN_FN = (msg) ->
console.log('WARNING:', msg)
module.exports = (str, indent, warn_fn) ->
indent = indent or DEFAULT_INDENT
warn_fn = if typeof warn_fn == 'function' then warn_fn else DEFAULT_WARN_FN
indent = ' '.repeat(indent) if Number.isInteger(indent)
$currIndent = 0
$nextIndent = 0
$prevLength = 0
$extIndent = 0
$lastIndent = 0
$template = 0
new_code = str.split(/\r?\n/g).map (line, line_number) ->
$template_flag = false
if $template
res2 = line.match(/\](=*)\]/)
if res2 and $template == res2[1].length + 1
$template_flag = true
if $template and !/]=*]$/.test(line)
arr = line.split(/\]=*\]/, 2)
comment = arr[0]
code = arr[1]
line = comment + ']' + '='.repeat($template - 1) + ']' + adjust_space(code)
$template = 0
$template = 0
else
return line
res1 = line.match(/\[(=*)\[/)
if res1
$template = res1[1].length + 1
if !$template_flag
line = line.trim()
# remote all spaces on both ends
line = adjust_space(line)
if !line.length
return ''
raw_line = line
line = line.replace(/(['"])[^\1]*?\1/, '')
# remove all quoted fragments for proper bracket processing
line = line.replace(/\s*--.+/, '')
# remove all comments; this ignores long bracket style comments
if /^((local )?function|repeat|while)\b/.test(line) and !/\bend\s*[\),;]*$/.test(line) or /\b(then|do)$/.test(line) and !/^elseif\b/.test(line) or /^if\b/.test(line) and /\bthen\b/.test(line) and !/\bend$/.test(line) or /\bfunction ?(?:\w+ )?\([^\)]*\)$/.test(line) and !/\bend$/.test(line)
$nextIndent = $currIndent + 1
else if /^until\b/.test(line) or /^end\s*[\),;]*$/.test(line) or /^end\s*\)\s*\.\./.test(line) or /^else(if)?\b/.test(line) and /\bend$/.test(line)
$nextIndent = --$currIndent
else if /^else\b/.test(line) or /^elseif\b/.test(line)
$nextIndent = $currIndent
$currIndent = $currIndent - 1
$brackets = (line.match(/\(/g) or []).length - ((line.match(/\)/g) or []).length)
# capture unbalanced brackets
$curly = (line.match(/\{/g) or []).length - ((line.match(/\}/g) or []).length)
# capture unbalanced curly brackets
# close (curly) brackets if needed
if $curly < 0
$currIndent += $curly
if $brackets < 0
$currIndent += $brackets
$nextIndent += $brackets + $curly
# console.log({last: $lastIndent, curr: $currIndent, next: $nextIndent, ext: $extIndent})
if $currIndent - $lastIndent > 1
$extIndent += $nextIndent - $lastIndent - 1
$nextIndent = $currIndent = 1 + $lastIndent
if $currIndent - $lastIndent < -1 and $extIndent > 0
$extIndent += $currIndent - $lastIndent + 1
$currIndent = -1 + $lastIndent
if $nextIndent < $currIndent
$nextIndent = $currIndent
# console.log({last: $lastIndent, curr: $currIndent, next: $nextIndent, ext: $extIndent})
warn_fn """negative indentation at line #{line_number}: #{raw_line}""" if $currIndent < 0
new_line = (if raw_line.length and $currIndent > 0 and !$template_flag then indent.repeat($currIndent) else '') + raw_line
$useful = $prevLength > 0 or raw_line.length > 0
$lastIndent = $currIndent
$currIndent = $nextIndent
$prevLength = raw_line.length
new_line or undefined
warn_fn 'positive indentation at the end' if $currIndent > 0
new_code.join '\n'

View File

@ -1,57 +0,0 @@
# Copyright 2011 Paul Kulchenko
# Credits: http://notebook.kulchenko.com/programming/lua-beautifier-in-55-lines-of-perl
use strict;
use warnings;
use constant INDENT => ' ';
my($currIndent, $nextIndent, $prevLength) = (0, 0, 0);
while (<>) {
chomp;
s/^\s+|\s+$//g; # remote all spaces on both ends
s/\s+/ /g; # replace all whitespaces inside the string with one space
my $orig = $_;
s/(['"])[^\1]*?\1//g; # remove all quoted fragments for proper bracket processing
s/\s*--.+//; # remove all comments; this ignores long bracket style comments
# open a level; increase next indentation; don't change current one
if (/^((local )?function|repeat|while)\b/ && !/\bend\s*[\),;]*$/
|| /\b(then|do)$/ && !/^elseif\b/ # only open on 'then' if there is no 'elseif'
|| /^if\b/ && /\bthen\b/ && !/\bend$/ # only open on 'if' if there is no 'end' at the end
|| /\bfunction\s*\([^\)]*\)$/) {
$nextIndent = $currIndent + 1;
}
# close the level; change both current and next indentation
elsif (/^until\b/
|| /^end\s*[\),;]*$/
|| /^end\s*\)\s*\.\./ # this is a special case of 'end).."some string"'
|| /^else(if)?\b/ && /\bend$/) {
$nextIndent = $currIndent = $currIndent - 1;
}
# keep the level; decrease the current indentation; keep the next one
elsif (/^else\b/
|| /^elseif\b/) {
($nextIndent, $currIndent) = ($currIndent, $currIndent-1);
}
my $brackets = y/(// - y/)//; # capture unbalanced brackets
my $curly = y/{// - y/}//; # capture unbalanced curly brackets
# close (curly) brackets if needed
$currIndent += $curly if $curly < 0 && /^\}/;
$currIndent += $brackets if $brackets < 0 && /^\)/;
warn "WARNING: negative indentation at line $.: $orig\n" if $currIndent < 0;
print((length($orig) ? (INDENT x $currIndent) : ''), $orig, "\n")
if $prevLength > 0 || length($orig) > 0; # this is to collapse empty lines
$nextIndent += $brackets + $curly;
$currIndent = $nextIndent;
$prevLength = length($orig);
}
warn "WARNING: positive indentation at the end\n" if $nextIndent > 0;

View File

@ -4,19 +4,20 @@ path = require("path")
"use strict"
Beautifier = require('../beautifier')
format = require './beautifier'
module.exports = class Lua extends Beautifier
name: "Lua beautifier"
link: "https://github.com/Glavin001/atom-beautify/blob/master/src/beautifiers/lua-beautifier/beautifier.pl"
link: "https://www.perl.org/"
isPreInstalled: false
options: {
Lua: true
}
beautify: (text, language, options) ->
lua_beautifier = path.resolve(__dirname, "beautifier.pl")
@run("perl", [
lua_beautifier,
'<',
@tempFile("input", text)
])
new @Promise (resolve, reject) ->
try
resolve format text, options.indent_char.repeat options.indent_size
catch error
reject error

View File

@ -8,6 +8,7 @@ Beautifier = require('./beautifier')
module.exports = class OCPIndent extends Beautifier
name: "ocp-indent"
link: "https://www.typerex.org/ocp-indent.html"
isPreInstalled: false
options: {
OCaml: true

View File

@ -7,6 +7,7 @@ Beautifier = require('./beautifier')
module.exports = class PerlTidy extends Beautifier
name: "Perltidy"
link: "http://perltidy.sourceforge.net/"
isPreInstalled: false
options: {
Perl: true

View File

@ -10,6 +10,7 @@ module.exports = class PHPCSFixer extends Beautifier
name: 'PHP-CS-Fixer'
link: "https://github.com/FriendsOfPHP/PHP-CS-Fixer"
isPreInstalled: false
options:
PHP: true
@ -18,63 +19,55 @@ module.exports = class PHPCSFixer extends Beautifier
@debug('php-cs-fixer', options)
configFile = if context? and context.filePath? then @findFile(path.dirname(context.filePath), '.php_cs')
phpCsFixerOptions = [
"fix"
"--level=#{options.level}" if options.level
"--fixers=#{options.fixers}" if options.fixers
"--config-file=#{configFile}" if configFile
]
runOptions = {
ignoreReturnCode: true
help: {
link: "https://github.com/FriendsOfPHP/PHP-CS-Fixer"
}
}
if @isWindows
# Find php-cs-fixer.phar script
@Promise.all([
@which(options.cs_fixer_path) if options.cs_fixer_path
@which('php-cs-fixer')
]).then((paths) =>
@debug('php-cs-fixer paths', paths)
_ = require 'lodash'
# Get first valid, absolute path
phpCSFixerPath = _.find(paths, (p) -> p and path.isAbsolute(p) )
@verbose('phpCSFixerPath', phpCSFixerPath)
@debug('phpCSFixerPath', phpCSFixerPath, paths)
# Check if PHP-CS-Fixer path was found
if phpCSFixerPath?
# Found PHP-CS-Fixer path
@run("php", [
phpCSFixerPath
"fix"
"--level=#{options.level}" if options.level
"--fixers=#{options.fixers}" if options.fixers
"--config-file=#{configFile}" if configFile
tempFile = @tempFile("temp", text)
], {
ignoreReturnCode: true
help: {
link: "https://github.com/FriendsOfPHP/PHP-CS-Fixer"
}
})
# Find php-cs-fixer.phar script
@Promise.all([
@which(options.cs_fixer_path) if options.cs_fixer_path
@which('php-cs-fixer')
]).then((paths) =>
@debug('php-cs-fixer paths', paths)
_ = require 'lodash'
# Get first valid, absolute path
phpCSFixerPath = _.find(paths, (p) -> p and path.isAbsolute(p) )
@verbose('phpCSFixerPath', phpCSFixerPath)
@debug('phpCSFixerPath', phpCSFixerPath, paths)
# Check if PHP-CS-Fixer path was found
if phpCSFixerPath?
# Found PHP-CS-Fixer path
tempFile = @tempFile("temp", text)
if @isWindows
@run("php", [phpCSFixerPath, phpCsFixerOptions, tempFile], runOptions)
.then(=>
@readFile(tempFile)
)
else
@verbose('php-cs-fixer not found!')
# Could not find PHP-CS-Fixer path
@Promise.reject(@commandNotFoundError(
'php-cs-fixer'
{
@run(phpCSFixerPath, [phpCsFixerOptions, tempFile], runOptions)
.then(=>
@readFile(tempFile)
)
else
@verbose('php-cs-fixer not found!')
# Could not find PHP-CS-Fixer path
@Promise.reject(@commandNotFoundError(
'php-cs-fixer'
{
link: "https://github.com/FriendsOfPHP/PHP-CS-Fixer"
program: "php-cs-fixer.phar"
pathOption: "PHP - CS Fixer Path"
})
)
)
else
@run("php-cs-fixer", [
"fix"
"--level=#{options.level}" if options.level
"--fixers=#{options.fixers}" if options.fixers
"--config-file=#{configFile}" if configFile
tempFile = @tempFile("temp", text)
], {
ignoreReturnCode: true
help: {
link: "https://github.com/FriendsOfPHP/PHP-CS-Fixer"
}
})
.then(=>
@readFile(tempFile)
})
)
)

View File

@ -8,6 +8,7 @@ Beautifier = require('./beautifier')
module.exports = class PHPCBF extends Beautifier
name: "PHPCBF"
link: "http://php.net/manual/en/install.php"
isPreInstalled: false
options: {
_:
@ -20,6 +21,10 @@ module.exports = class PHPCBF extends Beautifier
beautify: (text, language, options) ->
@debug('phpcbf', options)
standardFiles = ['phpcs.xml', 'phpcs.xml.dist', 'phpcs.ruleset.xml', 'ruleset.xml']
standardFile = @findFile(atom.project.getPaths()[0], standardFiles);
options.standard = standardFile if standardFile
isWin = @isWindows
if isWin

View File

@ -49,6 +49,7 @@ module.exports = class PrettyDiff extends Beautifier
EJS: true
HTML: true
Handlebars: true
Mustache: true
Nunjucks: true
XML: true
SVG: true
@ -66,6 +67,7 @@ module.exports = class PrettyDiff extends Beautifier
Visualforce: true
"Riot.js": true
XTemplate: true
"Golang Template": true
}
beautify: (text, language, options) ->
@ -109,6 +111,8 @@ module.exports = class PrettyDiff extends Beautifier
lang = "scss"
when "TSS"
lang = "tss"
when "Golang Template"
lang = "go"
else
lang = "auto"

View File

@ -8,6 +8,7 @@ module.exports = class PuppetFix extends Beautifier
# this is what displays as your Default Beautifier in Language Config
name: "puppet-lint"
link: "http://puppet-lint.com/"
isPreInstalled: false
options: {
Puppet: true

View File

@ -8,6 +8,7 @@ Beautifier = require('./beautifier')
module.exports = class Rubocop extends Beautifier
name: "Rubocop"
link: "https://github.com/bbatsov/rubocop"
isPreInstalled: false
options: {
Ruby:

View File

@ -8,6 +8,7 @@ Beautifier = require('./beautifier')
module.exports = class RubyBeautify extends Beautifier
name: "Ruby Beautify"
link: "https://github.com/erniebrodeur/ruby-beautify"
isPreInstalled: false
options: {
Ruby:

View File

@ -11,6 +11,7 @@ versionCheckState = false
module.exports = class Rustfmt extends Beautifier
name: "rustfmt"
link: "https://github.com/nrc/rustfmt"
isPreInstalled: false
options: {
Rust: true

View File

@ -4,6 +4,7 @@ Beautifier = require('./beautifier')
module.exports = class SassConvert extends Beautifier
name: "SassConvert"
link: "http://sass-lang.com/documentation/file.SASS_REFERENCE.html#syntax"
isPreInstalled: false
options:
# TODO: Add support for options

View File

@ -8,6 +8,7 @@ Beautifier = require('./beautifier')
module.exports = class Sqlformat extends Beautifier
name: "sqlformat"
link: "https://github.com/andialbrecht/sqlparse"
isPreInstalled: false
options: {
SQL: true

View File

@ -8,6 +8,7 @@ Beautifier = require('./beautifier')
module.exports = class StylishHaskell extends Beautifier
name: "stylish-haskell"
link: "https://github.com/jaspervdj/stylish-haskell"
isPreInstalled: false
options: {
Haskell: true

View File

@ -11,6 +11,8 @@ _ = require('lodash')
module.exports = class Uncrustify extends Beautifier
name: "Uncrustify"
link: "https://github.com/uncrustify/uncrustify"
isPreInstalled: false
options: {
Apex: true
C: true

View File

@ -5,6 +5,7 @@ _ = require('lodash')
module.exports = class VueBeautifier extends Beautifier
name: "Vue Beautifier"
link: "https://github.com/Glavin001/atom-beautify/blob/master/src/beautifiers/vue-beautifier.coffee"
options:
Vue: true

View File

@ -9,6 +9,7 @@ module.exports = class Yapf extends Beautifier
name: "yapf"
link: "https://github.com/google/yapf"
isPreInstalled: false
options: {
Python: false

View File

@ -20,10 +20,12 @@ module.exports = {
"cpp"
"cxx"
"C"
"cu"
"c++"
"hpp"
"hxx"
"h++"
"cuh"
]
options:

View File

@ -0,0 +1,27 @@
module.exports = {
name: "Golang Template"
description: "Comma-Separated Values"
namespace: "gohtml"
fallback: ["html"]
###
Supported Grammars
###
grammars: [
"HTML (Go)",
"Go Template"
]
###
Supported extensions
###
extensions: [
'gohtml'
]
defaultBeautifier: "Pretty Diff"
options: []
}

View File

@ -56,8 +56,8 @@ module.exports = {
wrap_attributes:
type: 'string'
default: "auto"
enum: ["auto", "force"]
description: "Wrap attributes to new lines [auto|force]"
enum: ["auto", "force", "force-aligned", "force-expand-multiline"]
description: "Wrap attributes to new lines [auto|force|force-aligned|force-expand-multiline]"
wrap_attributes_indent_size:
type: 'integer'
default: defaultIndentSize

View File

@ -32,6 +32,7 @@ module.exports = class Languages
"gherkin"
"glsl"
"go"
"gohtml"
"fortran"
"handlebars"
"haskell"

View File

@ -24,4 +24,10 @@ module.exports = {
defaultBeautifier: "Pretty Diff"
options:
e4x:
type: 'boolean'
default: true
description: "Support e4x/jsx syntax"
}

View File

@ -44,6 +44,6 @@ module.exports = {
title: "PHPCBF Standard"
type: 'string'
default: "",
description: "Standard name Squiz, PSR2, PSR1, PHPCS, PEAR, Zend, MySource... or path to CS rules"
description: "Standard name Squiz, PSR2, PSR1, PHPCS, PEAR, Zend, MySource... or path to CS rules. Will use local `phpcs.xml`, `phpcs.xml.dist`, `phpcs.ruleset.xml` or `ruleset.xml` if found in the project root."
}