               atom.config.set("linter-codeclimate.init", false)
           return []
 
+        # Construct the list of linters to be passed to the CLI by looking at
+        # the linters made available for our language grammar by the LinterMap,
+        # and whether or not the engines are enabled in a user's config file.
+        if (linterMap.hasOwnProperty(grammarName) == true)
+          linterNameArray.push(linter) for linter in linterMap[grammarName] when (linter not in linterNameArray)
         configEnabledEngines = getEnabledEngines(configurationFilePath)
         linterEnabledEngines = (linter for linter in linterNameArray when ((linter in configEnabledEngines) == true))
 
+        # Construct the command line invocation which runs the Code Climate CLI
         cmd = [@executablePath, "analyze",
                "-f json",
                makeEngineString(linter for linter in linterEnabledEngines when linter),
                "'" + atom.project.relativize(filePath) + "'",
                "< /dev/null"].join(" ")
 
+        # Debug the command executed to run the Code Climate CLI to the console
         console.log cmd
 
+        # Record time for the purposes of displaying total analysis run time
         analysisBeginTime = Date.now()
+
+        # Execute the Code Climate CLI, parse the results, and emit them to the
+        # Linter package as warnings. The Linter package handles the styling.
         return Helpers
           .exec("/bin/bash", ["-lc", cmd], {cwd: Path.dirname(configurationFilePath)})
           .then(JSON.parse)

    configurationFile = '.codeclimate.yml'
    linterMap = {
      '*': ['fixme'],
      'Ruby on Rails': ['rubocop'],
      'Ruby': ['rubocop'],
      'JavaScript': ['eslint'],
      'CoffeeScript': ['coffeelint'],
      'Python': ['pep8', 'radon'],
      'PHP': ['phpcodesniffer', 'phpmd']
    }
    provider =
      name: 'Code Climate'
      grammarScopes: ['*'] # Lint everything then filter with map
      scope: 'file'
      lint: (textEditor) =>
        filePath = textEditor.getPath()
        fileDir = Path.dirname(filePath)
        grammarName = textEditor.getGrammar().name
        linterNameArray = linterMap['*']

        if !FS.existsSync(@executablePath)
          try
            @executablePath = EX("/bin/bash -lc 'which codeclimate'").toString().trim()

                  range: [[locLine,locPosBeg], [locLine,locPosEnd]]
                })

            # Log the length of time it took to run analysis
            console.log("Code Climate analysis: " + (Date.now() - analysisBeginTime) + "ms")
            return linterResults
          )
