{
  "coffee_autocomplete_plus_no_implicit_parens": true,
  // Map function names to types.
  "coffee_autocomplete_plus_function_return_types":
  [
    {
      "function_names": ["$", "jQuery"],
      "type_name": "$"
    },
    // HACK: need "class" + method name for correctness, prefer "return" in custom types
    // https://github.com/justinmahar/SublimeCSAutocompletePlus/issues/24
    {
      "function_names": ["$animation"],
      "type_name": "$animation"
    },
    {
      "function_names": ["$animator"],
      "type_name": "$animator"
    },
    {
      "function_names": ["$cacheFactory"],
      "type_name": "$cacheFactory"
    },
    {
      "function_names": ["$compile"],
      "type_name": "ngLinkFunction"
    },
    {
      "function_names": [
        "$controller",
        "controller", //Module.controller
        "register" //$controllerProvider.register
      ],
      "type_name": "$controller"
    },
    {
      "function_names": [
        "$exceptionHandler"
      ],
      "type_name": "$exceptionHandler"
    },
    {
      "function_names": [
        "$parse"
      ],
      "type_name": "ngParseFunction"
    },
    {
      "function_names": [
        "$http", // empty $http() is a special config fn
        "delete", // $http.delete
        "get", // $http.get
        "head", // $http.head
        "jsonp", // $http.jsonp
        "post", // $http.post
        "put" // $http.put
      ],
      "type_name": "ngHttpPromise"
    },
    {
      "function_names": [
        "expect", // $httpBackend.expect
        "expectDELETE", // $httpBackend.expectDELETE
        "expectGET", // $httpBackend.expectGET
        "expectHEAD", // $httpBackend.expectHEAD
        "expectJSONP", // $httpBackend.expectJSONP
        "expectPATCH", // $httpBackend.expectPATCH
        "expectPOST", // $httpBackend.expectPOST
        "expectPUT", // $httpBackend.expectPUT
        "when", // $httpBackend.when
        "whenDELETE", // $httpBackend.whenDELETE
        "whenGET", // $httpBackend.whenGET
        "whenHEAD", // $httpBackend.whenHEAD
        "whenJSONP", // $httpBackend.whenJSONP
        "whenPATCH", // $httpBackend.whenPATCH
        "whenPOST", // $httpBackend.whenPOST
        "whenPUT" // $httpBackend.whenPUT
      ],
      "type_name": "ngHttpBackendResponse"
    },
    {
      "function_names": [
        "all", // $q.all
        "reject", // $q.reject
        "promise", // deferred.promise
        "then" // promise.then
        //"when" // $q.when -- conflicts with above $httpBackend stuff
      ],
      "type_name": "ngPromise"
    },
    {
      "function_names": [
        "defer" // $q.defer
      ],
      "type_name": "ngDeferred"
    },
    {
      "function_names": [
        "element" // "angular.element"
      ],
      "type_name": "jqLite"
    },
    {
      "function_names": [
        "bootstrap", //angular.bootstrap
        "injector"  //angular.injector
        //"$rootElement.injector"
      ],
      "type_name": "$injector"
    },
    {
      "function_names": [
        "TzDate" //"angular.mock.TzDate"
      ],
      "type_name": "ngTzDate"
    },
    {
      "function_names": [
        "directive", //"Module.directive"
        "urlSanitizationWhitelist" // $compileProvider.urlSanitizationWhitelist(regexp)
      ],
      "type_name": "$compileProvider"
    },
    {
      "function_names": [
        "module" //"angular.module", "angular.mock.module"
      ],
      "type_name": "ngModule"
    },
    {
      "function_names": [
        "$broadcast" // Scope.$broadcast / $rootscope.$broadcast
      ],
      "type_name": "ngEvent"
    },
    {
      "function_names": [
        "scope", //jqLite.scope / $document.scope
        //"Scope",
        "$new" // Scope.$new / $rootscope.$new
      ],
      "type_name": "ngScope"
    },
    {
      "function_names": ["$resource"],
      "type_name": "$resource"
    },
    {
      "function_names": ["$timeout"],
      "type_name": "$timeout"
    }
  ]
}
