Merge branch 'master' into master

This commit is contained in:
Christian Kjær 2018-02-26 18:08:09 +01:00 committed by GitHub
commit f4ec78b415
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
27 changed files with 453 additions and 592 deletions

View File

@ -11,53 +11,24 @@ notifications:
script: sh build-package.sh
language: generic
cache:
timeout: 1000
git:
depth: 10
depth: 1
php:
- '5.6'
python:
- '2.7'
go:
- release
matrix:
include:
- os: linux
dist: trusty
os:
- linux
- osx
sudo: required
services:
- docker
env:
- ATOM_CHANNEL=stable
- os: linux
dist: trusty
sudo: required
services:
- docker
env:
- ATOM_CHANNEL=beta
# - os: linux
# dist: trusty
# sudo: require
# env:
# - ATOM_CHANNEL=stable
# - os: linux
# dist: trusty
# sudo: require
# env:
# - ATOM_CHANNEL=beta
- os: osx
env:
- ATOM_CHANNEL=stable
# - os: osx
# env:
# - ATOM_CHANNEL=beta
env:
global:
- APM_TEST_PACKAGES="language-marko language-html-swig language-svg language-d mavensmate-atom language-lua language-puppet fuse"
- PATH="/home/travis/gopath/bin:$HOME/.linuxbrew/bin:$PATH"
matrix:
- ATOM_SCRIPT_NAME=atom-beta APM_SCRIPT_NAME=apm-beta
- ATOM_SCRIPT_NAME=atom APM_SCRIPT_NAME=apm
addons:
apt:
@ -71,9 +42,7 @@ addons:
- libgnome-keyring-dev
- fakeroot
- crystal
- ocaml
- camlp4
- opam
- php5-cli
- golang
@ -84,111 +53,38 @@ cache:
- vendor/bundle # gems are installed here, https://docs.travis-ci.com/user/languages/ruby/#Dependency-Management
- node_modules
- $HOME/.atom
- $HOME/.stack
- $HOME/.opam
before_install:
# Install Homebrew on Linux
# linux: Install Nix, Nix packages, upgrade pip, and install python packages
# osx: Update Homebrew, remove conflicting cask, brew bundle, symlink elm-format,
# upgrade pip, and install python packages
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
git clone --depth=1 https://github.com/Linuxbrew/brew.git ~/.linuxbrew || true;
curl https://nixos.org/nix/install | sh &&
. ~/.nix-profile/etc/profile.d/nix.sh &&
nix-env -i uncrustify R elm-format terraform atom atom-beta opam &&
pip install --upgrade pip &&
pip install --user -r requirements.txt;
elif [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
brew update && brew cask zap oclint && brew bundle &&
ln -s /usr/local/bin/elm-format-0.17 /usr/local/bin/elm-format &&
pip2 install --upgrade pip &&
pip2 install -r requirements.txt;
else
echo Error:TRAVIS_OS_NAME && exit 1;
fi
# Update Homebrew
- brew update
- brew tap homebrew/dupes
- brew tap homebrew/versions
# Ruby language support
# - gem install ruby-beautify --verbose
# - gem install rubocop
- gem install htmlbeautifier
- gem install puppet-lint
# Sass language support
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
gem install sass;
else
docker pull unibeautify/sass-convert;
fi
# Python language support
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
sudo chmod 777 -R /opt/python;
pip install --upgrade pip;
pip install --user --upgrade autopep8;
pip install --user --upgrade isort;
else
pip install --upgrade pip;
pip install --upgrade autopep8;
pip install --upgrade isort;
fi
# SQL language support
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
pip install --user --upgrade sqlparse;
else
pip install --upgrade sqlparse;
fi
# Java, C, C++, C#, Objective-C, D, Pawn, Vala
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
brew install uncrustify;
else
docker pull unibeautify/uncrustify;
fi
- bundle install
# R
- brew tap homebrew/science
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
brew install r;
rscript --version;
else
docker pull unibeautify/rscript;
fi
- Rscript --version
# PHP
- brew tap homebrew/homebrew-php
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
brew install php56 || true;
brew gist-logs php56 || true;
echo -e "\n[Phar]\nphar.readonly = Off\n" >> /usr/local/etc/php/5.6/php.ini;
brew install php-cs-fixer || true;
brew gist-logs php-cs-fixer || true;
fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
wget http://get.sensiolabs.org/php-cs-fixer.phar -O php-cs-fixer;
chmod a+x php-cs-fixer;
mv php-cs-fixer $HOME/.linuxbrew/bin/php-cs-fixer;
fi
- composer install
# CoffeeScript
- npm install coffee-formatter
# Haskell
# - brew install haskell-stack
# - stack setup
# - stack install stylish-haskell
# Elm
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
curl -L -o /tmp/elm-format.tgz
https://github.com/avh4/elm-format/releases/download/0.7.0-exp/elm-format-0.17-0.7.0-exp-mac-x64.tgz;
tar xvzf /tmp/elm-format.tgz -C /usr/local/bin;
fi
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
curl -L -o /tmp/elm-format.tgz https://github.com/avh4/elm-format/releases/download/0.7.0-exp/elm-format-0.17-0.7.0-exp-linux-x64.tgz;
tar xvzf /tmp/elm-format.tgz -C $HOME/.linuxbrew/bin;
fi
# OCaml
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
brew install ocaml;
brew install opam;
fi
- opam init --auto-setup
# - opam init --auto-setup
# Init environment variables for opam
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
eval `opam config env`;
fi
- opam install --yes ocp-indent
# Crystal
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then brew install crystal-lang; fi
# Bash
- if [[ "$TRAVIS_OS_NAME" == "linux" ]]; then
pip install --user beautysh;
else
pip install beautysh;
fi
# terraform
- if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
brew install terraform;
else
docker pull hashicorp/terraform;
fi
# - if [[ "$TRAVIS_OS_NAME" == "osx" ]]; then
# eval `opam config env`;
# fi
# - opam install --yes ocp-indent

11
Brewfile Normal file
View File

@ -0,0 +1,11 @@
tap 'homebrew/php'
tap 'caskroom/versions'
brew 'uncrustify'
brew 'r'
brew 'composer'
brew 'opam'
brew 'crystal-lang'
brew 'terraform'
brew 'elm-format'
cask 'atom'
cask 'atom-beta'

View File

@ -1,5 +1,16 @@
# Next
- Add hindent and brittany beautifiers for haskell
- Fix [#1862](https://github.com/Glavin001/atom-beautify/issues/1862) Add support for ocp-indent as an executable
- See [#601](https://github.com/Glavin001/atom-beautify/issues/1862) Add support for tsx files
# v0.30.9 (2017-11-22)
- Fix [#1949](https://github.com/Glavin001/atom-beautify/issues/1949): Fix beautify on save when text has not changed.
# v0.30.8 (2017-11-22)
- Fix [#1949](https://github.com/Glavin001/atom-beautify/issues/1949): Fix beautify on save when text has not changed.
# v0.30.7 (2017-11-21)
- Refactor handleSaveEvent to use onWillSave async ([#1924](https://github.com/Glavin001/atom-beautify/pull/1924), [#1895](https://github.com/Glavin001/atom-beautify/issues/1895))
# v0.30.6 (2017-10-30)
- See [#645](https://github.com/Glavin001/atom-beautify/issues/645). Add support for Terraform fmt.

6
Gemfile Normal file
View File

@ -0,0 +1,6 @@
source "https://rubygems.org"
gem "rubocop"
gem "htmlbeautifier"
gem "puppet-lint"
gem "sass"

View File

@ -6,6 +6,11 @@
[![Gitter](https://img.shields.io/gitter/room/Glavin001/atom-beautify.svg?style=flat-square)](https://gitter.im/Glavin001/atom-beautify)
[![Bountysource](https://img.shields.io/bountysource/team/atom-beautify/activity.svg?style=flat-square)](https://www.bountysource.com/teams/atom-beautify)
[![Paypal Donations](https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=X2RK5DKN6YXPJ&lc=CA&item_name=Atom%2dBeautify&item_number=atom%2dbeautify&currency_code=CAD&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted)
[![Twitter URL](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/unibeautify)
**Sign up for Unibeautify CI: [https://goo.gl/jmM4QN](https://goo.gl/jmM4QN)**
**Help improve Atom-Beautify by completing the quick questionnaire: [https://goo.gl/iEHBNr](https://goo.gl/iEHBNr)**
| Mac OS <img src="https://cloud.githubusercontent.com/assets/1885333/17059766/2530c9d8-4ffd-11e6-9529-3fa47dbff616.png" width="50px"> and <img src="https://cloud.githubusercontent.com/assets/1885333/17059750/11c4474e-4ffd-11e6-89e1-2486ca5b3234.png" width="100px"> | <img src="https://cloud.githubusercontent.com/assets/1885333/17059763/206a7d4a-4ffd-11e6-859e-7856902fb300.png" width="100px"> |
| --- | --- |
@ -65,6 +70,18 @@ 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).
### Poll: Improving installation of third-party beautifiers
Many users are experiencing issues when installing third party beautifiers (e.g. Uncrustify, PHP-CS-Fixer, and many more).
A possible solution is a "cloud" service which provides remote access to these beautifiers. Atom-Beautify would then communicate with these services, allowing for zero-installation beautification.
Please let us know what you think!
[![](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/Yes%2C%20cloud%20solution%20would%20be%20great!)](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/Yes%2C%20cloud%20solution%20would%20be%20great!/vote)
[![](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/No%2C%20I%20enjoy%20manually%20installing%20beautifiers)](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/No%2C%20I%20enjoy%20manually%20installing%20beautifiers/vote)
[![](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/No%2C%20I%20am%20happy%20using%20Docker)](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/No%2C%20I%20am%20happy%20using%20Docker/vote)
[![](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/No%2C%20I%20do%20not%20want%20to%20send%20me%20code%20over%20the%20Internet)](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/No%2C%20I%20do%20not%20want%20to%20send%20me%20code%20over%20the%20Internet/vote)
## 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.

View File

@ -6,6 +6,11 @@
[![Gitter](https://img.shields.io/gitter/room/Glavin001/atom-beautify.svg?style=flat-square)](https://gitter.im/Glavin001/atom-beautify)
[![Bountysource](https://img.shields.io/bountysource/team/atom-beautify/activity.svg?style=flat-square)](https://www.bountysource.com/teams/atom-beautify)
[![Paypal Donations](https://www.paypalobjects.com/en_US/i/btn/btn_donate_SM.gif)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=X2RK5DKN6YXPJ&lc=CA&item_name=Atom%2dBeautify&item_number=atom%2dbeautify&currency_code=CAD&bn=PP%2dDonationsBF%3abtn_donate_LG%2egif%3aNonHosted)
[![Twitter URL](https://img.shields.io/twitter/url/http/shields.io.svg?style=social)](https://twitter.com/unibeautify)
**Sign up for Unibeautify CI: [https://goo.gl/jmM4QN](https://goo.gl/jmM4QN)**
**Help improve Atom-Beautify by completing the quick questionnaire: [https://goo.gl/iEHBNr](https://goo.gl/iEHBNr)**
| Mac OS <img src="https://cloud.githubusercontent.com/assets/1885333/17059766/2530c9d8-4ffd-11e6-9529-3fa47dbff616.png" width="50px"> and <img src="https://cloud.githubusercontent.com/assets/1885333/17059750/11c4474e-4ffd-11e6-89e1-2486ca5b3234.png" width="100px"> | <img src="https://cloud.githubusercontent.com/assets/1885333/17059763/206a7d4a-4ffd-11e6-859e-7856902fb300.png" width="100px"> |
| --- | --- |
@ -65,6 +70,18 @@ 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).
### Poll: Improving installation of third-party beautifiers
Many users are experiencing issues when installing third party beautifiers (e.g. Uncrustify, PHP-CS-Fixer, and many more).
A possible solution is a "cloud" service which provides remote access to these beautifiers. Atom-Beautify would then communicate with these services, allowing for zero-installation beautification.
Please let us know what you think!
[![](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/Yes%2C%20cloud%20solution%20would%20be%20great!)](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/Yes%2C%20cloud%20solution%20would%20be%20great!/vote)
[![](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/No%2C%20I%20enjoy%20manually%20installing%20beautifiers)](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/No%2C%20I%20enjoy%20manually%20installing%20beautifiers/vote)
[![](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/No%2C%20I%20am%20happy%20using%20Docker)](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/No%2C%20I%20am%20happy%20using%20Docker/vote)
[![](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/No%2C%20I%20do%20not%20want%20to%20send%20me%20code%20over%20the%20Internet)](https://m131jyck4m.execute-api.us-west-2.amazonaws.com/prod/poll/01BY57P9ACSDQASVT7KYZKZESK/No%2C%20I%20do%20not%20want%20to%20send%20me%20code%20over%20the%20Internet/vote)
## 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.
@ -99,13 +116,13 @@ Some of the supported beautifiers are developed for Node.js and are automaticall
| Lua beautifier | :white_check_mark: | :ok_hand: Not necessary | :smiley: Nothing! |
| Marko Beautifier | :white_check_mark: | :ok_hand: Not necessary | :smiley: Nothing! |
| Nginx Beautify | :white_check_mark: | :ok_hand: Not necessary | :smiley: Nothing! |
| ocp-indent | :warning: Manual installation | :construction: Not an executable | :page_facing_up: Go to https://www.typerex.org/ocp-indent.html and follow the instructions. |
| ocp-indent | :warning: 1 executable | :white_check_mark: :100:% of executables | :whale: With [Docker](https://www.docker.com/):<br/>1. Install [ocp-indent (`ocp-indent`)](https://www.typerex.org/ocp-indent.html) with `docker pull unibeautify/ocp-indent`<br/><br/>:bookmark_tabs: Manually:<br/>1. Install [ocp-indent (`ocp-indent`)](https://www.typerex.org/ocp-indent.html) by following https://www.typerex.org/ocp-indent.html#installation<br/> |
| Perltidy | :warning: Manual installation | :construction: Not an executable | :page_facing_up: Go to http://perltidy.sourceforge.net/ and follow the instructions. |
| PHP-CS-Fixer | :warning: 2 executables | :warning: Only 1 of 2 executables | :whale: With [Docker](https://www.docker.com/):<br/>1. Install [PHP-CS-Fixer (`php-cs-fixer`)](https://github.com/FriendsOfPHP/PHP-CS-Fixer) with `docker pull unibeautify/php-cs-fixer`<br/><br/>:bookmark_tabs: Manually:<br/>1. Install [PHP (`php`)](http://php.net/) by following http://php.net/manual/en/install.php<br/>2. Install [PHP-CS-Fixer (`php-cs-fixer`)](https://github.com/FriendsOfPHP/PHP-CS-Fixer) by following https://github.com/FriendsOfPHP/PHP-CS-Fixer#installation<br/> |
| PHPCBF | :warning: 2 executables | :warning: Only 1 of 2 executables | :whale: With [Docker](https://www.docker.com/):<br/>1. Install [PHPCBF (`phpcbf`)](https://github.com/squizlabs/PHP_CodeSniffer) with `docker pull unibeautify/phpcbf`<br/><br/>:bookmark_tabs: Manually:<br/>1. Install [PHP (`php`)](http://php.net/) by following http://php.net/manual/en/install.php<br/>2. Install [PHPCBF (`phpcbf`)](https://github.com/squizlabs/PHP_CodeSniffer) by following https://github.com/squizlabs/PHP_CodeSniffer#installation<br/> |
| Pretty Diff | :white_check_mark: | :ok_hand: Not necessary | :smiley: Nothing! |
| Pug Beautify | :white_check_mark: | :ok_hand: Not necessary | :smiley: Nothing! |
| puppet-lint | :warning: Manual installation | :construction: Not an executable | :page_facing_up: Go to http://puppet-lint.com/ and follow the instructions. |
| puppet-lint | :warning: 1 executable | :white_check_mark: :100:% of executables | :whale: With [Docker](https://www.docker.com/):<br/>1. Install [puppet-lint (`puppet-lint`)](http://puppet-lint.com/) with `docker pull unibeautify/puppet-lint`<br/><br/>:bookmark_tabs: Manually:<br/>1. Install [puppet-lint (`puppet-lint`)](http://puppet-lint.com/) by following http://puppet-lint.com/<br/> |
| pybeautifier | :warning: Manual installation | :construction: Not an executable | :page_facing_up: Go to https://github.com/guyskk/pybeautifier and follow the instructions. |
| Remark | :white_check_mark: | :ok_hand: Not necessary | :smiley: Nothing! |
| Rubocop | :warning: Manual installation | :construction: Not an executable | :page_facing_up: Go to https://github.com/bbatsov/rubocop and follow the instructions. |
@ -184,6 +201,7 @@ See [all supported options in the documentation at `docs/options.md`](docs/opti
| Swig | `HTML (Swig)`, `SWIG` |`.swig` | **[`Pretty Diff`](https://github.com/prettydiff/prettydiff)** |
| Terraform | `Terraform` |`.tf` | **[`terraformfmt`](https://www.terraform.io/docs/commands/fmt.html)** |
| TSS | `TSS` |`.tss` | **[`Pretty Diff`](https://github.com/prettydiff/prettydiff)** |
| TSX | `TypeScriptReact` |`.tsx` | **[`TypeScript Formatter`](https://github.com/vvakame/typescript-formatter)** |
| Twig | `HTML (Twig)` |`.twig` | **[`Pretty Diff`](https://github.com/prettydiff/prettydiff)** |
| TypeScript | `TypeScript` |`.ts` | **[`TypeScript Formatter`](https://github.com/vvakame/typescript-formatter)** |
| UX Markup | `UX` |`.ux` | **[`Pretty Diff`](https://github.com/prettydiff/prettydiff)** |

View File

@ -10,136 +10,35 @@ environment:
# /E:ON and /V:ON options are not enabled in the batch script intepreter
# See: http://stackoverflow.com/a/13751649/163740
CMD_IN_ENV: "cmd /E:ON /V:ON /C .\\appveyor\\run_with_env.cmd"
matrix:
- PYTHON: "C:\\Python27"
PYTHON_VERSION: "2.7.8"
PYTHON_ARCH: "32"
RUBY_VERSION: 23
# - PYTHON: "C:\\Python27-x64"
# PYTHON_VERSION: "2.7.8"
# PYTHON_ARCH: "64"
#
# - PYTHON: "C:\\Python33"
# PYTHON_VERSION: "3.3.5"
# PYTHON_ARCH: "32"
#
# - PYTHON: "C:\\Python33-x64"
# PYTHON_VERSION: "3.3.5"
# PYTHON_ARCH: "64"
#
# - PYTHON: "C:\\Python34"
# PYTHON_VERSION: "3.4.1"
# PYTHON_ARCH: "32"
#
# - PYTHON: "C:\\Python34-x64"
# PYTHON_VERSION: "3.4.1"
# PYTHON_ARCH: "64"
PATH: C:\Ruby23\bin;C:\Ruby23-x64\DevKit\mingw\bin;C:\Python27;C:\Python27\Scripts;%PATH%
init:
- cmd: rd /s /q %CHOCOLATEYINSTALL%
- ps: iex ((new-object net.webclient).DownloadString('https://chocolatey.org/install.ps1'))
install:
- ECHO "Filesystem root:"
- ps: "ls \"C:/\""
- cinst atom -y
- cd %APPVEYOR_BUILD_FOLDER%
# Add Atom's bin (apm, etc) to PATH
- SET PATH=%LOCALAPPDATA%\atom\bin;%PATH%
- cinst packages.config -y
- refreshenv
- apm install
# Install CLI beautifiers
# https://packaging.python.org/guides/supporting-windows-using-appveyor/
- pip install -r requirements.txt
# Install Python (from the official .msi of http://python.org) and pip when
# not already installed.
- "powershell ./appveyor/install.ps1"
# Gemfile Install
- bundle install
# Prepend newly installed Python to the PATH of this build (this cannot be
# done from inside the powershell script as it would require to restart
# the parent CMD process).
- "SET PATH=%PYTHON%;%PYTHON%\\Scripts;%PATH%"
# Check that we have the expected version and architecture for Python
- "python --version"
- "python -c \"import struct; print(struct.calcsize('P') * 8)\""
# Install the build dependencies of the project. If some dependencies contain
# compiled extensions and are not provided as pre-built wheel packages,
# pip will build them from source using the MSVC compiler matching the
# target Python version and architecture
- "%CMD_IN_ENV% pip install --upgrade autopep8"
- where autopep8
- "%CMD_IN_ENV% pip install --upgrade isort"
- where isort
- "%CMD_IN_ENV% pip install --upgrade sqlparse"
# Ruby & Gem
- SET PATH=C:\Ruby%RUBY_VERSION%\bin;C:\Ruby23-x64\DevKit\mingw\bin;%PATH%
# Rubocop
- gem install rubocop
- where rubocop
# HTMLBeautifier
- gem install htmlbeautifier
- where htmlbeautifier
# Puppet-Lint
- gem install puppet-lint
- where puppet-lint
# Sass
- gem install sass
- where sass-convert
# emacs
- cinst emacs -y
- where emacs
# terraform
- cinst terraform -y
- where terraform
# 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\\php71\""
- "SET PATH=C:\\tools\\php71;%PATH%"
- where php
# PHP-CS-Fixer
- cinst curl -y # Use cURL to download file from URL
- curl http://get.sensiolabs.org/php-cs-fixer.phar -o php-cs-fixer
- "SET PATH=%cd%;%PATH%" # Add current working directory to PATH
- where php-cs-fixer
# Uncrustify
- curl -k -L https://sourceforge.net/projects/uncrustify/files/uncrustify/uncrustify-0.65/uncrustify-0.65-win32.zip/download -o uncrustify.zip
- cinst 7zip.commandline -y
- 7za e uncrustify.zip -ouncrustify-d
- "SET PATH=%cd%\\uncrustify-d;%PATH%"
- where uncrustify
- composer install
# elm-format
- curl -k -L https://github.com/avh4/elm-format/releases/download/0.7.0-exp/elm-format-0.18-0.7.0-exp-win-i386.zip -o elm-format.zip
- 7za e elm-format.zip -oelm-format-d
- "SET PATH=%cd%\\elm-format-d;%PATH%"
- where elm-format
# Beautysh
- pip install beautysh
- where beautysh
- npm install -g elm-format@exp
build_script:
- cd %APPVEYOR_BUILD_FOLDER%
# Install languages to Atom
- apm install language-marko language-html-swig language-svg language-elm language-d mavensmate-atom language-lua language-puppet fuse
# Show current PATH
- echo %PATH%
- apm install --packages-file atom-packages.txt
# Run tests on package
#- "%LOCALAPPDATA%\\atom\\bin\\atom.cmd --test spec"
- apm test --path %LOCALAPPDATA%/atom/bin/atom.cmd

View File

@ -1,180 +0,0 @@
# Sample script to install Python and pip under Windows
# Authors: Olivier Grisel, Jonathan Helmus and Kyle Kastner
# License: CC0 1.0 Universal: http://creativecommons.org/publicdomain/zero/1.0/
$MINICONDA_URL = "http://repo.continuum.io/miniconda/"
$BASE_URL = "https://www.python.org/ftp/python/"
$GET_PIP_URL = "https://bootstrap.pypa.io/get-pip.py"
$GET_PIP_PATH = "C:\get-pip.py"
function DownloadPython ($python_version, $platform_suffix) {
$webclient = New-Object System.Net.WebClient
$filename = "python-" + $python_version + $platform_suffix + ".msi"
$url = $BASE_URL + $python_version + "/" + $filename
$basedir = $pwd.Path + "\"
$filepath = $basedir + $filename
if (Test-Path $filename) {
Write-Host "Reusing" $filepath
return $filepath
}
# Download and retry up to 3 times in case of network transient errors.
Write-Host "Downloading" $filename "from" $url
$retry_attempts = 2
for($i=0; $i -lt $retry_attempts; $i++){
try {
$webclient.DownloadFile($url, $filepath)
break
}
Catch [Exception]{
Start-Sleep 1
}
}
if (Test-Path $filepath) {
Write-Host "File saved at" $filepath
} else {
# Retry once to get the error message if any at the last try
$webclient.DownloadFile($url, $filepath)
}
return $filepath
}
function InstallPython ($python_version, $architecture, $python_home) {
Write-Host "Installing Python" $python_version "for" $architecture "bit architecture to" $python_home
if (Test-Path $python_home) {
Write-Host $python_home "already exists, skipping."
return $false
}
if ($architecture -eq "32") {
$platform_suffix = ""
} else {
$platform_suffix = ".amd64"
}
$msipath = DownloadPython $python_version $platform_suffix
Write-Host "Installing" $msipath "to" $python_home
$install_log = $python_home + ".log"
$install_args = "/qn /log $install_log /i $msipath TARGETDIR=$python_home"
$uninstall_args = "/qn /x $msipath"
RunCommand "msiexec.exe" $install_args
if (-not(Test-Path $python_home)) {
Write-Host "Python seems to be installed else-where, reinstalling."
RunCommand "msiexec.exe" $uninstall_args
RunCommand "msiexec.exe" $install_args
}
if (Test-Path $python_home) {
Write-Host "Python $python_version ($architecture) installation complete"
} else {
Write-Host "Failed to install Python in $python_home"
Get-Content -Path $install_log
Exit 1
}
}
function RunCommand ($command, $command_args) {
Write-Host $command $command_args
Start-Process -FilePath $command -ArgumentList $command_args -Wait -Passthru
}
function InstallPip ($python_home) {
$pip_path = $python_home + "\Scripts\pip.exe"
$python_path = $python_home + "\python.exe"
if (-not(Test-Path $pip_path)) {
Write-Host "Installing pip..."
$webclient = New-Object System.Net.WebClient
$webclient.DownloadFile($GET_PIP_URL, $GET_PIP_PATH)
Write-Host "Executing:" $python_path $GET_PIP_PATH
Start-Process -FilePath "$python_path" -ArgumentList "$GET_PIP_PATH" -Wait -Passthru
} else {
Write-Host "pip already installed."
}
}
function DownloadMiniconda ($python_version, $platform_suffix) {
$webclient = New-Object System.Net.WebClient
if ($python_version -eq "3.4") {
$filename = "Miniconda3-3.5.5-Windows-" + $platform_suffix + ".exe"
} else {
$filename = "Miniconda-3.5.5-Windows-" + $platform_suffix + ".exe"
}
$url = $MINICONDA_URL + $filename
$basedir = $pwd.Path + "\"
$filepath = $basedir + $filename
if (Test-Path $filename) {
Write-Host "Reusing" $filepath
return $filepath
}
# Download and retry up to 3 times in case of network transient errors.
Write-Host "Downloading" $filename "from" $url
$retry_attempts = 2
for($i=0; $i -lt $retry_attempts; $i++){
try {
$webclient.DownloadFile($url, $filepath)
break
}
Catch [Exception]{
Start-Sleep 1
}
}
if (Test-Path $filepath) {
Write-Host "File saved at" $filepath
} else {
# Retry once to get the error message if any at the last try
$webclient.DownloadFile($url, $filepath)
}
return $filepath
}
function InstallMiniconda ($python_version, $architecture, $python_home) {
Write-Host "Installing Python" $python_version "for" $architecture "bit architecture to" $python_home
if (Test-Path $python_home) {
Write-Host $python_home "already exists, skipping."
return $false
}
if ($architecture -eq "32") {
$platform_suffix = "x86"
} else {
$platform_suffix = "x86_64"
}
$filepath = DownloadMiniconda $python_version $platform_suffix
Write-Host "Installing" $filepath "to" $python_home
$install_log = $python_home + ".log"
$args = "/S /D=$python_home"
Write-Host $filepath $args
Start-Process -FilePath $filepath -ArgumentList $args -Wait -Passthru
if (Test-Path $python_home) {
Write-Host "Python $python_version ($architecture) installation complete"
} else {
Write-Host "Failed to install Python in $python_home"
Get-Content -Path $install_log
Exit 1
}
}
function InstallMinicondaPip ($python_home) {
$pip_path = $python_home + "\Scripts\pip.exe"
$conda_path = $python_home + "\Scripts\conda.exe"
if (-not(Test-Path $pip_path)) {
Write-Host "Installing pip..."
$args = "install --yes pip"
Write-Host $conda_path $args
Start-Process -FilePath "$conda_path" -ArgumentList $args -Wait -Passthru
} else {
Write-Host "pip already installed."
}
}
function main () {
InstallPython $env:PYTHON_VERSION $env:PYTHON_ARCH $env:PYTHON
InstallPip $env:PYTHON
}
main

View File

@ -1,47 +0,0 @@
:: To build extensions for 64 bit Python 3, we need to configure environment
:: variables to use the MSVC 2010 C++ compilers from GRMSDKX_EN_DVD.iso of:
:: MS Windows SDK for Windows 7 and .NET Framework 4 (SDK v7.1)
::
:: To build extensions for 64 bit Python 2, we need to configure environment
:: variables to use the MSVC 2008 C++ compilers from GRMSDKX_EN_DVD.iso of:
:: MS Windows SDK for Windows 7 and .NET Framework 3.5 (SDK v7.0)
::
:: 32 bit builds do not require specific environment configurations.
::
:: Note: this script needs to be run with the /E:ON and /V:ON flags for the
:: cmd interpreter, at least for (SDK v7.0)
::
:: More details at:
:: https://github.com/cython/cython/wiki/64BitCythonExtensionsOnWindows
:: http://stackoverflow.com/a/13751649/163740
::
:: Author: Olivier Grisel
:: License: CC0 1.0 Universal: http://creativecommons.org/publicdomain/zero/1.0/
@ECHO OFF
SET COMMAND_TO_RUN=%*
SET WIN_SDK_ROOT=C:\Program Files\Microsoft SDKs\Windows
SET MAJOR_PYTHON_VERSION="%PYTHON_VERSION:~0,1%"
IF %MAJOR_PYTHON_VERSION% == "2" (
SET WINDOWS_SDK_VERSION="v7.0"
) ELSE IF %MAJOR_PYTHON_VERSION% == "3" (
SET WINDOWS_SDK_VERSION="v7.1"
) ELSE (
ECHO Unsupported Python version: "%MAJOR_PYTHON_VERSION%"
EXIT 1
)
IF "%PYTHON_ARCH%"=="64" (
ECHO Configuring Windows SDK %WINDOWS_SDK_VERSION% for Python %MAJOR_PYTHON_VERSION% on a 64 bit architecture
SET DISTUTILS_USE_SDK=1
SET MSSdk=1
"%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Setup\WindowsSdkVer.exe" -q -version:%WINDOWS_SDK_VERSION%
"%WIN_SDK_ROOT%\%WINDOWS_SDK_VERSION%\Bin\SetEnv.cmd" /x64 /release
ECHO Executing: %COMMAND_TO_RUN%
call %COMMAND_TO_RUN% || EXIT 1
) ELSE (
ECHO Using default MSVC build environment for 32 bit architecture
ECHO Executing: %COMMAND_TO_RUN%
call %COMMAND_TO_RUN% || EXIT 1
)

10
atom-packages.txt Normal file
View File

@ -0,0 +1,10 @@
language-marko
language-html-swig
language-svg
language-d
mavensmate-atom
language-lua
language-elm
language-puppet
fuse
react

View File

@ -1,63 +1,21 @@
#!/bin/sh
echo "Downloading latest Atom release..."
ATOM_CHANNEL="${ATOM_CHANNEL:=stable}"
if [ "$TRAVIS_OS_NAME" = "osx" ]; then
curl -s -L "https://atom.io/download/mac?channel=$ATOM_CHANNEL" \
-H 'Accept: application/octet-stream' \
-o "atom.zip"
mkdir atom
unzip -q atom.zip -d atom
if [ "$ATOM_CHANNEL" = "stable" ]; then
export ATOM_APP_NAME="Atom.app"
export ATOM_SCRIPT_NAME="atom.sh"
export ATOM_SCRIPT_PATH="./atom/${ATOM_APP_NAME}/Contents/Resources/app/atom.sh"
else
export ATOM_APP_NAME="Atom ${ATOM_CHANNEL}.app"
export ATOM_SCRIPT_NAME="atom-${ATOM_CHANNEL}"
export ATOM_SCRIPT_PATH="./atom-${ATOM_CHANNEL}"
ln -s "./atom/${ATOM_APP_NAME}/Contents/Resources/app/atom.sh" "${ATOM_SCRIPT_PATH}"
fi
export PATH="$PWD/atom/${ATOM_APP_NAME}/Contents/Resources/app/apm/bin:$PATH"
export ATOM_PATH="./atom"
export APM_SCRIPT_PATH="./atom/${ATOM_APP_NAME}/Contents/Resources/app/apm/node_modules/.bin/apm"
else
curl -s -L "https://atom.io/download/deb?channel=$ATOM_CHANNEL" \
-H 'Accept: application/octet-stream' \
-o "atom.deb"
if [ "$TRAVIS_OS_NAME" != "osx" ]; then
/sbin/start-stop-daemon --start --quiet --pidfile /tmp/custom_xvfb_99.pid --make-pidfile --background --exec /usr/bin/Xvfb -- :99 -ac -screen 0 1280x1024x16
export DISPLAY=":99"
dpkg-deb -x atom.deb "$HOME/atom"
if [ "$ATOM_CHANNEL" = "stable" ]; then
export ATOM_SCRIPT_NAME="atom"
export APM_SCRIPT_NAME="apm"
else
export ATOM_SCRIPT_NAME="atom-$ATOM_CHANNEL"
export APM_SCRIPT_NAME="apm-$ATOM_CHANNEL"
fi
export ATOM_SCRIPT_PATH="$HOME/atom/usr/bin/$ATOM_SCRIPT_NAME"
export APM_SCRIPT_PATH="$HOME/atom/usr/bin/$APM_SCRIPT_NAME"
fi
echo "Using Atom version:"
"$ATOM_SCRIPT_PATH" -v
"$ATOM_SCRIPT_NAME" -v
echo "Using APM version:"
"$APM_SCRIPT_PATH" -v
"$APM_SCRIPT_NAME" -v
echo "Downloading package dependencies..."
"$APM_SCRIPT_PATH" clean
"$APM_SCRIPT_PATH" install
"$APM_SCRIPT_NAME" clean
"$APM_SCRIPT_NAME" install
TEST_PACKAGES="${APM_TEST_PACKAGES:=none}"
if [ "$TEST_PACKAGES" != "none" ]; then
echo "Installing atom package dependencies..."
for pack in $TEST_PACKAGES ; do
"$APM_SCRIPT_PATH" install $pack
done
fi
"$APM_SCRIPT_NAME" install --packages-file atom-packages.txt
if [ -f ./node_modules/.bin/coffeelint ]; then
if [ -d ./src ]; then
@ -100,7 +58,7 @@ fi
if [ -d ./spec ]; then
echo "Running specs..."
"$ATOM_SCRIPT_PATH" --test spec
"$ATOM_SCRIPT_NAME" --test spec
else
echo "Missing spec folder! Please consider adding a test suite in `./spec`"
exit 1

5
composer.json Normal file
View File

@ -0,0 +1,5 @@
{
"require": {
"friendsofphp/php-cs-fixer": ">0"
}
}

View File

@ -283,6 +283,23 @@ Options for isort executable.
2. Go into *Packages* and search for "*Atom Beautify*" package.
3. Find the option "*isort*" and change it to your desired configuration.
##### [ocp-indent](#ocp-indent)
**Important**: This option is only configurable from within Atom Beautify's setting panel.
**Type**: `object`
**Description**:
Options for ocp-indent executable.
**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 "*ocp-indent*" and change it to your desired configuration.
##### [PHP](#php)
**Important**: This option is only configurable from within Atom Beautify's setting panel.
@ -334,6 +351,23 @@ Options for PHPCBF executable.
2. Go into *Packages* and search for "*Atom Beautify*" package.
3. Find the option "*PHPCBF*" and change it to your desired configuration.
##### [puppet-lint](#puppet-lint)
**Important**: This option is only configurable from within Atom Beautify's setting panel.
**Type**: `object`
**Description**:
Options for puppet-lint executable.
**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 "*puppet-lint*" and change it to your desired configuration.
##### [Rscript](#rscript)
**Important**: This option is only configurable from within Atom Beautify's setting panel.
@ -12588,6 +12622,75 @@ Maximum amount of characters per line (0 = disable) (Supported by Pretty Diff)
}
```
#### [TSX](#tsx)
**Supported Beautifiers**: [`TypeScript Formatter`](#typescript-formatter)
| Option | TypeScript Formatter |
| --- | --- |
| `disabled` | :white_check_mark: |
| `default_beautifier` | :white_check_mark: |
| `beautify_on_save` | :white_check_mark: |
**Description**:
Options for language TSX
##### [Disable Beautifying Language](#disable-beautifying-language)
**Important**: This option is only configurable from within Atom Beautify's setting panel.
**Type**: `boolean`
**Description**:
Disable TSX 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**: `TypeScript Formatter`
**Type**: `string`
**Enum**: `TypeScript Formatter`
**Description**:
Default Beautifier to be used for TSX
**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 TSX 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.
#### [Twig](#twig)
**Supported Beautifiers**: [`Pretty Diff`](#pretty-diff)

View File

@ -0,0 +1,12 @@
class Test extends React.Component<Foo> {
render() {
return (
<div className="class">
<h2 className="anotherClass">
{this.foo.bar}
</h2>
{this.foo.bar.children}
</div>
);
}
}

View File

@ -0,0 +1,12 @@
class Test extends React.Component<Foo> {
render() {
return (
<div className="class">
<h2 className= "anotherClass">
{this.foo.bar}
</h2>
{this.foo.bar.children}
</div>
);
}
}

View File

@ -1,12 +1,12 @@
{
"name": "atom-beautify",
"main": "./src/beautify",
"version": "0.30.6",
"version": "0.30.9",
"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": {
"type": "git",
"url": "https://github.com/Glavin001/atom-beautify"
"url": "git@github.com:Glavin001/atom-beautify.git"
},
"bugs": {
"url": "https://github.com/Glavin001/atom-beautify/issues"
@ -158,31 +158,31 @@
}
],
"engines": {
"atom": ">=1.6.0 <2.0.0"
"atom": ">=1.21.0 <2.0.0"
},
"dependencies": {
"align-yaml": "^0.1.8",
"async": "^2.4.1",
"async": "^2.6.0",
"atom-message-panel": "^1.3.0",
"atom-space-pen-views": "^2.2.0",
"bluebird": "^3.5.0",
"bluebird": "^3.5.1",
"coffee-fmt": "^0.12.0",
"coffee-formatter": "^0.1.2",
"coffee-script": "^1.12.6",
"csscomb": "^4.2.0",
"diff": "^3.2.0",
"editorconfig": "^0.13.2",
"eslint": "^4.0.0",
"event-kit": "^2.3.0",
"diff": "^3.4.0",
"editorconfig": "^0.15.0",
"eslint": "^4.16.0",
"event-kit": "^2.4.0",
"expand-home-dir": "0.0.3",
"extend": "^3.0.1",
"gherkin": "^2.12.2",
"handlebars": "^4.0.10",
"js-beautify": "^1.6.14",
"handlebars": "^4.0.11",
"js-beautify": "^1.7.5",
"jscs": "^3.0.7",
"lodash": "^4.17.4",
"loophole": "^1.1.0",
"marko-prettyprint": "^1.3.6",
"marko-prettyprint": "^1.4.0",
"nginxbeautify": "^2.0.1",
"node-cljfmt": "0.5.3",
"node-dir": "0.1.17",
@ -191,19 +191,19 @@
"prettydiff2": "^2.2.7",
"pug-beautify": "^0.1.1",
"remark": "6.0.1",
"season": "6.0.0",
"semver": "^5.3.0",
"season": "^6.0.2",
"semver": "^5.5.0",
"shell-env": "^0.3.0",
"space-pen": "5.1.2",
"strip-json-comments": "^2.0.1",
"temp": "^0.8.3",
"tidy-markdown": "2.0.3",
"typescript": "2.4.1",
"typescript-formatter": "5.2.0",
"tidy-markdown": "2.0.4",
"typescript": "^2.6.2",
"typescript-formatter": "^7.0.0",
"underscore-plus": "^1.6.6",
"universal-analytics": "0.4.13",
"which": "1.2.14",
"winston": "2.3.1",
"universal-analytics": "^0.4.16",
"which": "^1.3.0",
"winston": "^2.4.0",
"yaml-front-matter": "3.4.0"
},
"activationHooks": [
@ -282,7 +282,8 @@
"atom-beautify:beautify-language-xml",
"atom-beautify:beautify-language-xtemplate",
"atom-beautify:beautify-language-yaml",
"atom-beautify:beautify-language-terraform"
"atom-beautify:beautify-language-terraform",
"atom-beautify:beautify-language-tsx"
],
".tree-view .file .name": [
"atom-beautify:beautify-file"
@ -419,7 +420,8 @@
"align-yaml",
"goimports",
"terraform",
"terraformfmt"
"terraformfmt",
"tsx"
],
"devDependencies": {
"coffeelint": "1.16.0"

9
packages.config Normal file
View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<packages>
<package id="atom" />
<package id="emacs" />
<package id="terraform" />
<package id="composer" />
<!--package id="uncrustify" /-->
</packages>
</xml>

4
requirements.txt Normal file
View File

@ -0,0 +1,4 @@
autopep8
isort
sqlparse
beautysh

View File

@ -54,6 +54,7 @@ describe "BeautifyLanguages", ->
dependentPackages = [
'autocomplete-plus'
'fuse'
'react'
# 'linter'
# 'atom-typescript' # it logs too much...
]

View File

@ -8,7 +8,24 @@ Beautifier = require('./beautifier')
module.exports = class OCPIndent extends Beautifier
name: "ocp-indent"
link: "https://www.typerex.org/ocp-indent.html"
isPreInstalled: false
executables: [
{
name: "ocp-indent"
cmd: "ocp-indent"
homepage: "https://www.typerex.org/ocp-indent.html"
installation: "https://www.typerex.org/ocp-indent.html#installation"
version: {
parse: (text) ->
try
text.match(/(\d+\.\d+\.\d+)/)[1]
catch
text.match(/(\d+\.\d+)/)[1] + ".0"
}
docker: {
image: "unibeautify/ocp-indent"
}
}
]
options: {
OCaml: true

View File

@ -8,21 +8,28 @@ 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
}
cli: (options) ->
if not options.puppet_path?
return new Error("'puppet-lint' path is not set!" +
" Please set this in the Atom Beautify package settings.")
else
return options.puppet_path
executables: [
{
name: "puppet-lint"
cmd: "puppet-lint"
homepage: "http://puppet-lint.com/"
installation: "http://puppet-lint.com/"
version: {
parse: (text) -> text.match(/puppet-lint (\d+\.\d+\.\d+)/)[1]
}
docker: {
image: "unibeautify/puppet-lint"
}
}
]
beautify: (text, language, options) ->
@run("puppet-lint", [
@exe("puppet-lint").run([
'--fix'
tempFile = @tempFile("input", text)
], {

View File

@ -6,13 +6,14 @@ module.exports = class TypeScriptFormatter extends Beautifier
link: "https://github.com/vvakame/typescript-formatter"
options: {
TypeScript: true
TSX: true
}
beautify: (text, language, options) ->
return new @Promise((resolve, reject) =>
try
format = require("typescript-formatter/lib/formatter").default
format = require("typescript-formatter/lib/formatter").format
formatterUtils = require("typescript-formatter/lib/utils")
# @verbose('format', format, formatterUtils)
@ -25,8 +26,13 @@ module.exports = class TypeScriptFormatter extends Beautifier
opts.indentSize = options.indent_size
opts.indentStyle = 'space'
if language is "TSX"
fileName = 'test.tsx'
else
fileName = ''
@verbose('typescript', text, opts)
result = format('', text, opts)
result = format(fileName, text, opts)
@verbose(result)
resolve result
catch e

View File

@ -96,9 +96,10 @@ beautify = ({ editor, onSave, language }) ->
if not text?
# Do nothing, is undefined
# console.log 'beautifyCompleted'
return resolve(text)
else if text instanceof Error
showError(text)
return reject(text)
return resolve(text)
else if typeof text is "string"
if oldText isnt text
@ -127,15 +128,18 @@ beautify = ({ editor, onSave, language }) ->
# otherwise setScrollTop is not working, probably because the cursor
# addition happens asynchronously
setTimeout ( ->
# console.log "setScrollTop"
setScrollTop editor, origScrollTop
return resolve(text)
), 0
else
return setTimeout(() ->
resolve(text)
, 0)
else
error = new Error("Unsupported beautification result '#{text}'.")
showError(error)
return reject(error)
return resolve(text)
# else
# console.log "Already Beautiful!"
@ -506,20 +510,17 @@ debug = () ->
handleSaveEvent = ->
atom.workspace.observeTextEditors (editor) ->
pendingPaths = {}
beautifyOnSaveHandler = ({path: filePath}) ->
logger.verbose('Should beautify on this save?')
if pendingPaths[filePath]
logger.verbose("Editor with file path #{filePath} already beautified!")
return
buffer = editor.getBuffer()
path ?= require('path')
# Get Grammar
grammar = editor.getGrammar().name
# Get file extension
fileExtension = path.extname(filePath)
# Remove prefix "." (period) in fileExtension
fileExtension = fileExtension.substr(1)
# Set path of buffer for unsaved files
if editor.getPath() is undefined
editor.getBuffer().setPath(filePath)
# Get Grammar from the editor
grammar = editor.getGrammar().name
# Get language
languages = beautifier.languages.getLanguages({grammar, extension: fileExtension})
if languages.length < 1
@ -535,23 +536,11 @@ handleSaveEvent = ->
beautify({editor, onSave: true})
.then(() ->
logger.verbose('Done beautifying file', filePath)
if editor.isAlive() is true
logger.verbose('Saving TextEditor...')
# Store the filePath to prevent infinite looping
# When Whitespace package has option "Ensure Single Trailing Newline" enabled
# It will add a newline and keep the file from converging on a beautified form
# and saving without emitting onDidSave event, because there were no changes.
pendingPaths[filePath] = true
Promise.resolve(editor.save()).then(() ->
delete pendingPaths[filePath]
logger.verbose('Saved TextEditor.')
)
)
.catch((error) ->
return showError(error)
)
disposable = editor.onDidSave(({path : filePath}) ->
# TODO: Implement debouncing
disposable = editor.getBuffer().onWillSave(({path: filePath}) ->
beautifyOnSaveHandler({path: filePath})
)
plugin.subscriptions.add disposable

View File

@ -68,6 +68,7 @@ module.exports = class Languages
"svg"
"swig"
"tss"
"tsx"
"twig"
"typescript"
"ux_markup"

21
src/languages/tsx.coffee Normal file
View File

@ -0,0 +1,21 @@
module.exports = {
name: "TSX"
namespace: "tsx"
fallback: ['ts']
###
Supported Grammars
###
grammars: [
"TypeScriptReact"
]
###
Supported extensions
###
extensions: [
"tsx"
]
}

View File

@ -7369,6 +7369,47 @@
}
}
},
"tsx": {
"title": "TSX",
"type": "object",
"description": "Options for language TSX",
"collapsed": true,
"beautifiers": [
"TypeScript Formatter"
],
"grammars": [
"TypeScriptReact"
],
"extensions": [
"tsx"
],
"properties": {
"disabled": {
"title": "Disable Beautifying Language",
"order": -3,
"type": "boolean",
"default": false,
"description": "Disable TSX Beautification"
},
"default_beautifier": {
"title": "Default Beautifier",
"order": -2,
"type": "string",
"default": "TypeScript Formatter",
"description": "Default Beautifier to be used for TSX",
"enum": [
"TypeScript Formatter"
]
},
"beautify_on_save": {
"title": "Beautify On Save",
"order": -1,
"type": "boolean",
"default": false,
"description": "Automatically beautify TSX files on save"
}
}
},
"twig": {
"title": "Twig",
"type": "object",
@ -9324,6 +9365,22 @@
}
}
},
"ocp-indent": {
"key": "ocp-indent",
"title": "ocp-indent",
"type": "object",
"collapsed": true,
"description": "Options for ocp-indent executable.",
"properties": {
"path": {
"key": "path",
"title": "Binary/Script Path",
"type": "string",
"default": "",
"description": "Absolute path to the \"ocp-indent\" executable's binary/script."
}
}
},
"php": {
"key": "php",
"title": "PHP",
@ -9372,6 +9429,22 @@
}
}
},
"puppet-lint": {
"key": "puppet-lint",
"title": "puppet-lint",
"type": "object",
"collapsed": true,
"description": "Options for puppet-lint executable.",
"properties": {
"path": {
"key": "path",
"title": "Binary/Script Path",
"type": "string",
"default": "",
"description": "Absolute path to the \"puppet-lint\" executable's binary/script."
}
}
},
"sass-convert": {
"key": "sass-convert",
"title": "SassConvert",