├── .editorconfig ├── .gitignore ├── CHANGELOG.md ├── LICENSE.md ├── README.md ├── examples ├── .php-cs-fixer.php └── Foo.php ├── keymaps └── php-cs-fixer.cson ├── lib └── php-cs-fixer.coffee ├── menus └── php-cs-fixer.cson ├── package-lock.json ├── package.json └── php-cs-fixer.gif /.editorconfig: -------------------------------------------------------------------------------- 1 | # EditorConfig is awesome: http://EditorConfig.org 2 | 3 | # top-most EditorConfig file 4 | root = true 5 | 6 | [*] 7 | end_of_line = lf 8 | insert_final_newline = true 9 | indent_style = space 10 | indent_size = 2 11 | 12 | [*.php] 13 | indent_size = 4 14 | 15 | [.php_cs] 16 | indent_size = 4 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | npm-debug.log 3 | node_modules 4 | -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | ## 4.1.1 2 | 3 | * Fix when the text editor is not in focus (props to [@Azakur4](https://github.com/Azakur4)) 4 | 5 | ## 4.1.0 6 | 7 | * Added possibility to add PHP-CS-Fixer Args 8 | * Added Path-Mode setting 9 | * Added .php_cs.dist support 10 | 11 | ## 4.0.0 12 | 13 | * Added PHP-CS-Fixer 2.x support (props to [@kenntchan](https://github.com/kenntchan)) 14 | * Dropped PHP-CS-Fixer 1.x support 15 | 16 | ## 3.0.0 17 | 18 | * Added PHP args support 19 | * Fixed a notification bug 20 | * Updated readme (props to [@cyruseftos](https://github.com/cyruseftos)) 21 | 22 | ## 2.5.9 23 | 24 | * Adding the option to run php without a php.ini file (props to [@christopherrolfe198](https://github.com/christopherrolfe198)) 25 | 26 | ## 2.5.3 27 | 28 | * Changed default value of `php-cs-fixer` path 29 | * Show context-menu only for PHP files (props to [@joanhey](https://github.com/joanhey)) 30 | 31 | ## 2.5.2 32 | 33 | * Nicer notifications 34 | 35 | ## 2.5.1 36 | 37 | * Added nicer and more descriptive settings titles 38 | * Extended and restructured README.md 39 | 40 | ## 2.5.0 41 | 42 | * Some typo fixes (props to [@rugk](https://github.com/rugk)) 43 | * Notification system to display infos/errors/warnings (props to [@Marv51](https://github.com/Marv51)) 44 | 45 | ## 2.4.0 46 | 47 | * Added "on save" hook to automatically run the fixer on every save 48 | * Added `.php_cs` support 49 | 50 | ## 2.3.0 51 | 52 | * Added PHP-executable option (fixes #6) 53 | * Added some debug output 54 | 55 | ## 2.1.0 56 | 57 | * Changed `level` to an enum setting 58 | * Added settings-descriptions 59 | * Fixed some small typos 60 | 61 | ## 2.0.0 - First Release 62 | 63 | Functional first version 64 | -------------------------------------------------------------------------------- /LICENSE.md: -------------------------------------------------------------------------------- 1 | Copyright (c) 2015 Matthias Pfefferle 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining 4 | a copy of this software and associated documentation files (the 5 | "Software"), to deal in the Software without restriction, including 6 | without limitation the rights to use, copy, modify, merge, publish, 7 | distribute, sublicense, and/or sell copies of the Software, and to 8 | permit persons to whom the Software is furnished to do so, subject to 9 | the following conditions: 10 | 11 | The above copyright notice and this permission notice shall be 12 | included in all copies or substantial portions of the Software. 13 | 14 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 15 | EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 16 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 17 | NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 18 | LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 19 | OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 20 | WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 21 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | [![apm](https://img.shields.io/apm/v/php-cs-fixer.svg?maxAge=2592000)]() [![apm](https://img.shields.io/apm/l/php-cs-fixer.svg?maxAge=2592000)]() [![apm](https://img.shields.io/apm/dm/php-cs-fixer.svg?maxAge=2592000)]() 2 | 3 | # php-cs-fixer Atom-Package 4 | 5 | Run the "[PHP Coding Standards Fixer](http://cs.sensiolabs.org)" within your Atom Editor 6 | 7 | **This version [requires the PHP-CS-Fixer >= v2.0.0](#faq)!** 8 | 9 | ![A screenshot of your package](https://raw.github.com/pfefferle/atom-php-cs-fixer/master/php-cs-fixer.gif) 10 | 11 | ## Installation 12 | 13 | ```bash 14 | $ apm install php-cs-fixer 15 | ``` 16 | 17 | or find it in the Packages tab under settings 18 | 19 | ## Requirements 20 | 21 | The package requires the "[PHP Coding Standards Fixer](http://cs.sensiolabs.org)" Cli build by [SensioLabs](http://sensiolabs.com). Minimum version required is 2.0. 22 | 23 | Installation via Composer 24 | 25 | ```bash 26 | $ ./composer.phar global require friendsofphp/php-cs-fixer 27 | ``` 28 | 29 | For other installation methods, see 30 | 31 | ## Usage 32 | 33 | `ctrl-cmd-s` or `Php Cs Fixer: Fix` in the Command Palette. 34 | 35 | (The commands can also be found in the settings-menu of the Package) 36 | 37 | ## Settings 38 | 39 | You can configure **php-cs-fixer** from the Atom package manager or by editing `~/.atom/config.cson` (choose Open Your Config in Atom menu). 40 | 41 | Here's an example configuration: 42 | 43 | ```cson 44 | "php-cs-fixer": 45 | allowRisky: false # whether to run risky rules, false by default 46 | executablePath: "~/.composer/vendor/bin/php-cs-fixer" # the path to the `php-cs-fixer` executable 47 | executeOnSave: false # execute PHP CS fixer on save 48 | phpExecutablePath: "/usr/bin/php" # the path to the `php` executable 49 | rules: "-psr0,@PSR2,binary_operator_spaces,blank_line_before_return,..." # or null 50 | showInfoNotifications: true #show some status informations from the last "fix" 51 | ``` 52 | 53 | ## How-To 54 | 55 | ### Mac OS X + brew 56 | 57 | By [@gammamatrix](https://github.com/gammamatrix) 58 | 59 | To get it to work with brew, you need to `cat` the contents of the script installed with `brew install php-cs-fixer`: 60 | 61 | #### Check to see where it installed 62 | 63 | ```bash 64 | $ which php-cs-fixer 65 | /usr/local/bin/php-cs-fixer 66 | ``` 67 | 68 | #### Cat the script 69 | 70 | ```bash 71 | cat /usr/local/bin/php-cs-fixer 72 | #!/bin/sh 73 | 74 | /usr/bin/env php -d allow_url_fopen=On -d detect_unicode=Off /usr/local/Cellar/php-cs-fixer/2.13.0/libexec/php-cs-fixer.phar $* 75 | ``` 76 | 77 | #### Paste the path for php-cs-fixer.phar in *Executable Path* 78 | 79 | *Go back to settings in Atom for php-cs-fixer.* 80 | 81 | `/usr/local/Cellar/php-cs-fixer/2.13.0/libexec/php-cs-fixer.phar` 82 | 83 | **FYI:** "*PHP executable Path*" is empty for my set up. I also installed PHP with brew. 84 | 85 | Use the keystroke: `ctrl-cmd-s` 86 | 87 | I hope this helps 8) 88 | 89 | This works for me without errors. 90 | 91 | ## FAQ 92 | 93 | ### Support for PHP-CS-Fixer v1.x.x 94 | 95 | The latest version of this plugin requires *PHP-CS-Fixer >= v2.0.0*, to use it with *PHP-CS-Fixer v1.x.x*, install version 3.0.0 or lower. 96 | 97 | ```bash 98 | $ apm install php-cs-fixer@3.0.0 99 | ``` 100 | 101 | ### I have updated the plugin to 2.3.0 and it does not work any more 102 | 103 | I had to add a new settings-parameter "*PHP executable Path*" to get the plugin running on Windows, so be sure to check if the new setting is configured properly. 104 | 105 | ### On Windows this add-on does not work while running manually from the command line works 106 | 107 | You probably have to add the directory of the php.exe to the ```PATH``` environment variable. You can do this in the system properties. You should configure the php-cs-fixer executable path to point to the vendor directory (e.g. ```C:/Users/{username}/AppData/Roaming/Composer/vendor/friendsofphp/php-cs-fixer/php-cs-fixer```). For detailed information use the [Java guide](https://www.java.com/en/download/help/path.xml) or [this stackexchange answer](https://superuser.com/questions/284342/what-are-path-and-other-environment-variables-and-how-can-i-set-or-use-them). 108 | -------------------------------------------------------------------------------- /examples/.php-cs-fixer.php: -------------------------------------------------------------------------------- 1 | 5 | Dariusz Rumiński 6 | This source file is subject to the MIT license that is bundled 7 | with this source code in the file LICENSE. 8 | EOF; 9 | $config = new PhpCsFixer\Config(); 10 | return $config->setRiskyAllowed(true) 11 | ->setRules(array( 12 | '@Symfony' => true, 13 | '@Symfony:risky' => true, 14 | 'combine_consecutive_unsets' => true, 15 | 'header_comment' => ['header' => $header], 16 | 'array_syntax' => ['syntax' => 'long'], 17 | 'no_extra_blank_lines' => ['tokens' => ['break', 'continue', 'extra', 'return', 'throw', 'use', 'parenthesis_brace_block', 'square_brace_block', 'curly_brace_block']], 18 | 'no_useless_else' => true, 19 | 'no_useless_return' => true, 20 | 'ordered_class_elements' => true, 21 | 'ordered_imports' => true, 22 | 'php_unit_strict' => true, 23 | 'phpdoc_add_missing_param_annotation' => true, 24 | 'psr_autoloading' => true, 25 | 'strict_comparison' => true, 26 | 'strict_param' => true, 27 | )) 28 | ->setFinder( 29 | PhpCsFixer\Finder::create() 30 | ->exclude('tests/Fixtures') 31 | ->in(__DIR__) 32 | ) 33 | ; 34 | -------------------------------------------------------------------------------- /examples/Foo.php: -------------------------------------------------------------------------------- 1 | $b) { 13 | $foo->bar($arg1); 14 | } else { 15 | BazClass::bar($arg2, $arg3); 16 | } 17 | } 18 | 19 | final public static function bar() { 20 | // method body 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /keymaps/php-cs-fixer.cson: -------------------------------------------------------------------------------- 1 | # Keybindings require three things to be fully defined: A selector that is 2 | # matched against the focused element, the keystroke and the command to 3 | # execute. 4 | # 5 | # Below is a basic keybinding which registers on all platforms by applying to 6 | # the root workspace element. 7 | 8 | # For more detailed documentation see 9 | # https://atom.io/docs/latest/behind-atom-keymaps-in-depth 10 | 'atom-workspace': 11 | 'ctrl-cmd-s': 'php-cs-fixer:fix' 12 | -------------------------------------------------------------------------------- /lib/php-cs-fixer.coffee: -------------------------------------------------------------------------------- 1 | {CompositeDisposable} = require 'atom' 2 | {BufferedProcess} = require 'atom' 3 | fs = require 'fs' 4 | path = require 'path' 5 | 6 | module.exports = PhpCsFixer = 7 | subscriptions: null 8 | config: 9 | phpExecutablePath: 10 | title: 'PHP executable path' 11 | type: 'string' 12 | default: 'php' 13 | description: 'The path to the `php` executable.' 14 | order: 10 15 | phpArguments: 16 | title: 'Add PHP arguments' 17 | type: 'array' 18 | default: [] 19 | description: 'Add arguments, like for example `-n`, to the PHP executable.' 20 | order: 11 21 | executablePath: 22 | title: 'PHP-CS-fixer executable path' 23 | type: 'string' 24 | default: 'php-cs-fixer' 25 | description: 'The path to the `php-cs-fixer` executable.' 26 | order: 20 27 | rules: 28 | title: 'PHP-CS-Fixer Rules' 29 | type: 'string' 30 | default: '@PSR2' 31 | description: 'A list of rules (based on php-cs-fixer 2.0), for example: `@PSR2,no_short_echo_tag,indentation_type`. See for a complete list. Will be ignored if a config file is used.' 32 | order: 21 33 | allowRisky: 34 | title: 'Allow risky' 35 | type: 'boolean' 36 | default: false 37 | description: 'Option allows you to set whether risky rules may run. Will be ignored if a config file is used.' 38 | order: 22 39 | pathMode: 40 | title: 'PHP-CS-Fixer Path-Mode' 41 | type: 'string' 42 | default: 'override' 43 | enum: ['override', 'intersection'] 44 | description: 'Specify path mode (can be override or intersection).' 45 | order: 23 46 | fixerArguments: 47 | title: 'PHP-CS-Fixer arguments' 48 | type: 'array' 49 | default: ['--using-cache=no', '--no-interaction'] 50 | description: 'Add arguments, like for example `--using-cache=false`, to the PHP-CS-Fixer executable. Run `php-cs-fixer help fix` in your command line, to get a full list of all supported arguments.' 51 | order: 24 52 | configPath: 53 | title: 'PHP-CS-fixer config file path' 54 | type: 'string' 55 | default: '' 56 | description: 'Optionally provide the path to the `.php_cs` or `.php-cs-fixer.php` config file, if the path is not provided it will be loaded from the root path of the current project.' 57 | order: 25 58 | requireConfig: 59 | title: 'Require a PHP-CS-fixer config file' 60 | type: 'boolean' 61 | default: false 62 | description: 'Run only if a `.php_cs` or `.php-cs-fixer.php` config file is available' 63 | order: 26 64 | executeOnSave: 65 | title: 'Execute on save' 66 | type: 'boolean' 67 | default: false 68 | description: 'Execute PHP CS fixer on save' 69 | order: 30 70 | showInfoNotifications: 71 | title: 'Show notifications' 72 | type: 'boolean' 73 | default: false 74 | description: 'Show some status informations from the last "fix".' 75 | order: 31 76 | 77 | activate: (state) -> 78 | atom.config.observe 'php-cs-fixer.executeOnSave', => 79 | @executeOnSave = atom.config.get 'php-cs-fixer.executeOnSave' 80 | 81 | atom.config.observe 'php-cs-fixer.phpExecutablePath', => 82 | @phpExecutablePath = atom.config.get 'php-cs-fixer.phpExecutablePath' 83 | 84 | atom.config.observe 'php-cs-fixer.executablePath', => 85 | @executablePath = atom.config.get 'php-cs-fixer.executablePath' 86 | 87 | atom.config.observe 'php-cs-fixer.configPath', => 88 | @configPath = atom.config.get 'php-cs-fixer.configPath' 89 | 90 | atom.config.observe 'php-cs-fixer.requireConfig', => 91 | @requireConfig = atom.config.get 'php-cs-fixer.requireConfig' 92 | 93 | atom.config.observe 'php-cs-fixer.allowRisky', => 94 | @allowRisky = atom.config.get 'php-cs-fixer.allowRisky' 95 | 96 | atom.config.observe 'php-cs-fixer.rules', => 97 | @rules = atom.config.get 'php-cs-fixer.rules' 98 | 99 | atom.config.observe 'php-cs-fixer.showInfoNotifications', => 100 | @showInfoNotifications = atom.config.get 'php-cs-fixer.showInfoNotifications' 101 | 102 | atom.config.observe 'php-cs-fixer.phpArguments', => 103 | @phpArguments = atom.config.get 'php-cs-fixer.phpArguments' 104 | 105 | atom.config.observe 'php-cs-fixer.fixerArguments', => 106 | @fixerArguments = atom.config.get 'php-cs-fixer.fixerArguments' 107 | 108 | atom.config.observe 'php-cs-fixer.pathMode', => 109 | @pathMode = atom.config.get 'php-cs-fixer.pathMode' 110 | 111 | # Events subscribed to in atom's system can be easily cleaned up with a CompositeDisposable 112 | @subscriptions = new CompositeDisposable 113 | 114 | # Register command that toggles this view 115 | @subscriptions.add atom.commands.add 'atom-workspace', 'php-cs-fixer:fix': => @fix() 116 | 117 | # Add workspace observer and save handler 118 | @subscriptions.add atom.workspace.observeTextEditors (editor) => 119 | @subscriptions.add editor.getBuffer().onWillSave => 120 | if editor.getGrammar().name == "PHP" and @executeOnSave 121 | @fix() 122 | 123 | deactivate: -> 124 | @subscriptions.dispose() 125 | 126 | fix: -> 127 | editor = atom.workspace.getActiveTextEditor() 128 | 129 | filePath = editor.getPath() if editor && editor.getPath 130 | 131 | command = @phpExecutablePath 132 | 133 | args = [] 134 | 135 | if @phpArguments.length 136 | if @phpArguments.length > 1 137 | args = @phpArguments 138 | else 139 | args = @phpArguments[0].split(' ') 140 | 141 | args = args.concat [@executablePath, 'fix', filePath] 142 | 143 | if not @configPath and configPath = @findFile(path.dirname(filePath.toString()), ['.php_cs', '.php_cs.dist', '.php-cs-fixer.php', '.php-cs-fixer.dist.php']) 144 | @configPath = configPath 145 | console.log(configPath); 146 | 147 | if @requireConfig and not @configPath 148 | atom.notifications.addInfo('Skipped: No config file found') 149 | return null 150 | 151 | if @configPath 152 | args.push '--config=' + @configPath 153 | 154 | # add optional options 155 | if not @configPath 156 | args.push '--allow-risky=yes' if @allowRisky 157 | args.push '--rules=' + @rules if @rules 158 | 159 | args.push '--path-mode=' + @pathMode if @pathMode 160 | 161 | if @fixerArguments.length and not @configPath 162 | if @fixerArguments.length > 1 163 | fixerArgs = @fixerArguments 164 | else 165 | fixerArgs = @fixerArguments[0].split(' ') 166 | 167 | args = args.concat fixerArgs; 168 | 169 | stdout = (output) -> 170 | if PhpCsFixer.showInfoNotifications 171 | if (/^\s*\d*[)]/.test(output)) 172 | atom.notifications.addSuccess(output) 173 | else 174 | atom.notifications.addInfo(output) 175 | console.log(output) 176 | 177 | stderr = (output) -> 178 | if PhpCsFixer.showInfoNotifications 179 | if (output.replace(/\s/g,"") == "") 180 | # do nothing 181 | else if (/^Loaded config/.test(output)) # temporary fixing https://github.com/pfefferle/atom-php-cs-fixer/issues/35 182 | atom.notifications.addInfo(output) 183 | else 184 | atom.notifications.addError(output) 185 | console.error(output) 186 | 187 | exit = (code) -> console.log("#{command} exited with code: #{code}") 188 | 189 | process = new BufferedProcess({ 190 | command: command, 191 | args: args, 192 | stdout: stdout, 193 | stderr: stderr, 194 | exit: exit 195 | }) if filePath 196 | 197 | # copied from the AtomLinter lib 198 | # see: https://github.com/AtomLinter/atom-linter/blob/master/lib/helpers.coffee#L112 199 | # 200 | # The AtomLinter is licensed under "The MIT License (MIT)" 201 | # 202 | # Copyright (c) 2015 AtomLinter 203 | # 204 | # See the full license here: https://github.com/AtomLinter/atom-linter/blob/master/LICENSE 205 | findFile: (startDir, names) -> 206 | throw new Error "Specify a filename to find" unless arguments.length 207 | unless names instanceof Array 208 | names = [names] 209 | startDir = startDir.split(path.sep) 210 | while startDir.length 211 | currentDir = startDir.join(path.sep) 212 | for name in names 213 | filePath = path.join(currentDir, name) 214 | try 215 | fs.accessSync(filePath, fs.R_OK) 216 | return filePath 217 | startDir.pop() 218 | return null 219 | -------------------------------------------------------------------------------- /menus/php-cs-fixer.cson: -------------------------------------------------------------------------------- 1 | # See https://atom.io/docs/latest/hacking-atom-package-word-count#menus for more details 2 | 'context-menu': 3 | 'atom-text-editor[data-grammar="text html php"]': [ # or atom-text-editor[data-grammar*="php"] 4 | { 5 | 'label': 'Run php-cs-fixer' 6 | 'command': 'php-cs-fixer:fix' 7 | } 8 | ] 9 | 'menu': [ 10 | { 11 | 'label': 'Packages' 12 | 'submenu': [ 13 | 'label': 'php-cs-fixer' 14 | 'submenu': [ 15 | { 16 | 'label': 'Fix' 17 | 'command': 'php-cs-fixer:fix' 18 | } 19 | ] 20 | ] 21 | } 22 | ] 23 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "php-cs-fixer", 3 | "version": "4.3.0", 4 | "lockfileVersion": 1 5 | } 6 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "php-cs-fixer", 3 | "main": "./lib/php-cs-fixer", 4 | "version": "4.3.0", 5 | "description": "Run the 'PHP Coding Standards Fixer' within Atom", 6 | "author": { 7 | "name": "Matthias Pfefferle", 8 | "url": "http://pfefferle.org/" 9 | }, 10 | "repository": { 11 | "type": "git", 12 | "url": "https://github.com/pfefferle/atom-php-cs-fixer" 13 | }, 14 | "license": "MIT", 15 | "engines": { 16 | "atom": ">=0.174.0 <2.0.0", 17 | "php": ">=5.3.6", 18 | "php-cs-fixer": ">=2.0.0" 19 | }, 20 | "keywords": [ 21 | "phpcs", 22 | "php", 23 | "fixer", 24 | "psr", 25 | "php-cs" 26 | ], 27 | "dependencies": {}, 28 | "readme": "# php-cs-fixer Atom-Package\n\nRun the \"[PHP Coding Standards Fixer](http://cs.sensiolabs.org)\" within your Atom Editor\n\n![A screenshot of your package](https://raw.github.com/pfefferle/atom-php-cs-fixer/master/php-cs-fixer.gif)\n\n## Installation\n\n```sh\n$ apm install php-cs-fixer\n```\n\nor find it in the Packages tab under settings\n\n## Requirements\n\nThe package requires the \"[PHP Coding Standards Fixer](http://cs.sensiolabs.org)\" Cli build by [SensioLabs](http://sensiolabs.com).\n\nInstallation via Composer\n\n```sh\n$ ./composer.phar global require fabpot/php-cs-fixer\n```\n\nFor other installation methods, see \n\n## Usage\n\n`ctrl-cmd-s` or **Php Cs Fixer: Fix** in the Command Palette.\n\n(The commands can also be found in the settings-menu of the Package)\n\n## FAQ\n\n### I have updated the plugin to 2.2.0 and it does not work any more\n\nI had to add a new settings-parameter `Php Executable Path` to get the plugin running on Windows, so be sure to check if the new settings is configured properly.\n", 29 | "readmeFilename": "README.md", 30 | "bugs": { 31 | "url": "https://github.com/pfefferle/atom-php-cs-fixer/issues" 32 | }, 33 | "homepage": "https://github.com/pfefferle/atom-php-cs-fixer", 34 | "_id": "php-cs-fixer@2.3.0", 35 | "_shasum": "973bb476e5924666d6452812c64723f0950e30f1", 36 | "_resolved": "file:../d-115711-48042-12z60qb/package.tgz", 37 | "_from": "../d-115711-48042-12z60qb/package.tgz", 38 | "_atomModuleCache": { 39 | "version": 1, 40 | "dependencies": [], 41 | "extensions": { 42 | ".coffee": [ 43 | "lib/php-cs-fixer.coffee" 44 | ], 45 | ".json": [ 46 | "package.json" 47 | ] 48 | }, 49 | "folders": [] 50 | } 51 | } 52 | -------------------------------------------------------------------------------- /php-cs-fixer.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/pfefferle/atom-php-cs-fixer/0ae2a6714c44e0ebe80968ed6653b48d2be79101/php-cs-fixer.gif --------------------------------------------------------------------------------