Skip to content
This repository has been archived by the owner on Dec 11, 2017. It is now read-only.

Commit

Permalink
Merge pull request #46 from WordPress/add/jshint-config
Browse files Browse the repository at this point in the history
Configure JSHint with same rules as core
  • Loading branch information
westonruter authored Aug 26, 2017
2 parents 533bd7a + 951aa0d commit 608cbd8
Show file tree
Hide file tree
Showing 2 changed files with 52 additions and 13 deletions.
49 changes: 39 additions & 10 deletions better-code-editing.php
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,42 @@ class Better_Code_Editing_Plugin {
),
'csslint' => array(
'rules' => array(
'errors', // Parsing errors.
'box-model',
'display-property-grouping',
'duplicate-properties',
'empty-rules',
'known-properties',
'outline-none',
'errors' => true, // Parsing errors.
'box-model' => true,
'display-property-grouping' => true,
'duplicate-properties' => true,
'empty-rules' => true,
'known-properties' => true,
'outline-none' => true,
),
),
'jshint' => array(
'rules' => array(
// The following are copied from <https://github.com/WordPress/wordpress-develop/blob/4.8.1/.jshintrc>.
'boss' => true,
'curly' => true,
'eqeqeq' => true,
'eqnull' => true,
'es3' => true,
'expr' => true,
'immed' => true,
'noarg' => true,
'nonbsp' => true,
'onevar' => true,
'quotmark' => 'single',
'trailing' => true,
'undef' => true,
'unused' => true,

'browser' => true,

'globals' => array(
'_' => false,
'Backbone' => false,
'jQuery' => false,
'JSON' => false,
'wp' => false,
),
),
),
);
Expand Down Expand Up @@ -84,8 +113,8 @@ public static function register_scripts( WP_Scripts $scripts ) {
$scripts->add( 'codemirror-addon-hint-xml', plugins_url( 'wp-includes/js/codemirror/addon/hint/xml-hint.js', __FILE__ ), array( 'codemirror-addon-hint-show', 'codemirror-mode-xml' ), self::CODEMIRROR_VERSION );

// The linting engines for the lint addons...
$scripts->add( 'csslint', plugins_url( 'wp-includes/js/csslint.js', __FILE__ ), array(), self::VERSION );
$scripts->add( 'htmlhint', plugins_url( 'wp-includes/js/htmlhint.js', __FILE__ ), array(), self::VERSION );
$scripts->add( 'csslint', plugins_url( 'wp-includes/js/csslint.js', __FILE__ ), array(), self::VERSION ); // @todo Version like '1.0.3'.
$scripts->add( 'htmlhint', plugins_url( 'wp-includes/js/htmlhint.js', __FILE__ ), array(), self::VERSION ); // @todo Version like '0.9.13'.
$scripts->add( 'jshint', plugins_url( 'wp-includes/js/jshint.js', __FILE__ ), array(), self::VERSION );
$scripts->add( 'jsonlint', plugins_url( 'wp-includes/js/jsonlint.js', __FILE__ ), array(), self::VERSION );

Expand Down Expand Up @@ -258,10 +287,10 @@ public static function enqueue_assets( $settings ) {
}
break;
case 'text/javascript':
wp_enqueue_script( 'jshint' );
wp_enqueue_script( 'codemirror-mode-javascript' );

if ( ! empty( $settings['codemirror']['lint'] ) ) {
wp_enqueue_script( 'jshint' );
wp_enqueue_script( 'codemirror-addon-lint-javascript' );
}
break;
Expand Down
16 changes: 13 additions & 3 deletions wp-admin/js/code-editor.js
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,7 @@ if ( 'undefined' === typeof window.wp.codeEditor ) {
var allRules = CSSLint.getRules(), i;
CSSLint.clearRules();
for ( i = 0; i < allRules.length; i++ ) {
if ( -1 !== rules.indexOf( allRules[ i ].id ) ) {
if ( rules[ allRules[ i ].id ] ) {
CSSLint.addRule( allRules[ i ] );
}
}
Expand All @@ -64,9 +64,19 @@ if ( 'undefined' === typeof window.wp.codeEditor ) {
}

instanceSettings = $.extend( {}, wp.codeEditor.defaultSettings, settings );
instanceSettings.codemirror = $.extend( {}, instanceSettings.codemirror );

if ( 'undefined' !== typeof CSSLint && instanceSettings.csslint && instanceSettings.csslint.rules ) {
updateCSSLintRules( instanceSettings.csslint.rules );
if ( true === instanceSettings.codemirror.lint ) {

// Configure JSHint.
if ( 'text/javascript' === instanceSettings.codemirror.mode && true === instanceSettings.codemirror.lint && instanceSettings.jshint && instanceSettings.jshint.rules ) {
instanceSettings.codemirror.lint = instanceSettings.jshint.rules;
}

// Configure CSSLint.
if ( 'undefined' !== typeof CSSLint && instanceSettings.csslint && instanceSettings.csslint.rules ) {
updateCSSLintRules( instanceSettings.csslint.rules );
}
}

editor = CodeMirror.fromTextArea( $textarea[0], instanceSettings.codemirror );
Expand Down

0 comments on commit 608cbd8

Please sign in to comment.