Index: Gruntfile.js
===================================================================
--- Gruntfile.js	(revision 26043)
+++ Gruntfile.js	(working copy)
@@ -7,6 +7,27 @@
 	// Load tasks. 
 	require('matchdep').filterDev('grunt-*').forEach( grunt.loadNpmTasks );
 
+	// Limit JSHint's run to a single specified file
+	//     grunt jshint --file=filename.js
+	function jshintFilter( filepath ) {
+		var file = grunt.option( 'file' );
+
+		// Don't filter when no target file is specified
+		if ( ! file ) {
+			return true;
+		}
+
+		// Normalize filepath for Windows
+		filepath = filepath.replace( /\\/g, '/' );
+
+		// Match only the filename passed from cli
+		if ( filepath.lastIndexOf( '/' + file ) === filepath.length - ( file.length + 1 ) ) {
+			return true;
+		}
+
+		return false;
+	}
+
 	// Project configuration.
 	grunt.initConfig({
 		clean: {
@@ -83,7 +104,8 @@
 		jshint: {
 			options: grunt.file.readJSON('.jshintrc'),
 			grunt: {
-				src: ['Gruntfile.js']
+				src: ['Gruntfile.js'],
+				filter: jshintFilter
 			},
 			tests: {
 				src: [
@@ -90,7 +112,8 @@
 					'tests/qunit/**/*.js',
 					'!tests/qunit/vendor/qunit.js'
 				],
-				options: grunt.file.readJSON('tests/qunit/.jshintrc')
+				options: grunt.file.readJSON('tests/qunit/.jshintrc'),
+				filter: jshintFilter
 			},
 			core: {
 				expand: true,
@@ -124,26 +147,7 @@
 					curly: false,
 					eqeqeq: false
 				},
-				// Limit JSHint's run to a single specified file
-				//     grunt jshint:core --file=filename.js
-				filter: function( filepath ) {
-					var file = grunt.option( 'file' );
-
-					// Don't filter when no target file is specified
-					if ( ! file ) {
-						return true;
-					}
-
-					// Normalize filepath for Windows
-					filepath = filepath.replace( /\\/g, '/' );
-
-					// Match only the filename passed from cli
-					if ( filepath.lastIndexOf( '/' + file ) === filepath.length - ( file.length + 1 ) ) {
-						return true;
-					}
-
-					return false;
-				}
+				filter: jshintFilter
 			}
 		},
 		qunit: {
