diff --git a/better-code-editing.php b/better-code-editing.php index 72732d6..b614bb8 100644 --- a/better-code-editing.php +++ b/better-code-editing.php @@ -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 . + '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, + ), ), ), ); @@ -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 ); @@ -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; diff --git a/wp-admin/js/code-editor.js b/wp-admin/js/code-editor.js index 10d8177..84ec428 100644 --- a/wp-admin/js/code-editor.js +++ b/wp-admin/js/code-editor.js @@ -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 ] ); } } @@ -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 );