{"action":"created","comment":{"url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/pulls/comments/28285371","id":28285371,"diff_hunk":"@@ -0,0 +1,209 @@\n+import sublime\r\n+from logger import log\r\n+from workscheduler import work_scheduler\r\n+from servicedefs import Location\r\n+\r\n+\r\n+class PopupManager():\r\n+\r\n+    \"\"\" PopupManager manages the state and interaction with the popup window\r\n+\r\n+    It uses the WorkScheduler class to handle sending requests to the server to\r\n+    ensure good performance.\r\n+    \"\"\"\r\n+\r\n+    html_template = ''\r\n+\r\n+    def __init__(self, proxy):\r\n+        self.scheduler = work_scheduler()\r\n+        self.proxy = proxy\r\n+\r\n+        # Maintains the latest set of signature data and rendering info\r\n+        self.current_view = None\r\n+        self.signature_help = None\r\n+\r\n+        # Maintains the index of the current signature selected\r\n+        self.signature_index = 0\r\n+        self.current_parameter = 0\r\n+\r\n+    def queue_signature_popup(self, view):\r\n+        cursor = view.rowcol(view.sel()[0].begin())\r\n+        point = Location(cursor[0] + 1,  cursor[1] + 1)\r\n+        filename = view.file_name()\r\n+\r\n+        # Define a function to do the request and notify on completion\r\n+        def get_signature_data(on_done):\r\n+            self.proxy.asyncSignatureHelp(filename, point, '', on_done)\r\n+\r\n+        # Schedule the request\r\n+        self.scheduler.queue_request(get_signature_data,\r\n+                                     lambda resp: self.on_response(resp, view))\r\n+\r\n+    def on_response(self, responseJson, view):\r\n+        # Needs to be set even if failed for on_close_popup to clear regions\r\n+        self.current_view = view\r\n+        if not responseJson[\"success\"] or not responseJson[\"body\"]:\r\n+            log.debug('No results for signature request')\r\n+            self.on_close_popup()\r\n+            return\r\n+\r\n+        log.debug('Setting signature help data')\r\n+        self.current_view = view\r\n+        self.signature_help = responseJson[\"body\"]\r\n+        self.signature_index = responseJson[\"body\"][\"selectedItemIndex\"]\r\n+        self.current_parameter = responseJson[\"body\"][\"argumentIndex\"]\r\n+\r\n+        # Add a region to track the arg list as the user types\r\n+        # Needs to be ajusted to 0-based indexing\r\n+        arg_span = self.signature_help[\"applicableSpan\"]\r\n+        span_start = view.text_point(\r\n+                                    arg_span[\"start\"][\"line\"] - 1,\r\n+                                    arg_span[\"start\"][\"offset\"] - 2)\r\n+        span_end = view.text_point(\r\n+                                    arg_span[\"end\"][\"line\"] - 1,\r\n+                                    arg_span[\"end\"][\"offset\"] - 1)\r\n+        arg_region = sublime.Region(span_start, span_end)\r\n+        view.add_regions('argSpan', [arg_region],\r\n+                         flags=sublime.HIDDEN)\r\n+        # To view region, set to: scope='comments', flags=sublime.DRAW_EMPTY)\r\n+\r\n+        self.display()\r\n+\r\n+    def display(self):\r\n+        popup_parts = self.get_current_signature_template()\r\n+        popup_text = PopupManager.html_template.substitute(popup_parts)\r\n+\r\n+        log.debug('Displaying signature popup')\r\n+        if not self.current_view.is_popup_visible():\r\n+            self.current_view.show_popup(\r\n+                popup_text,\r\n+                sublime.COOPERATE_WITH_AUTO_COMPLETE,\r\n+                on_navigate=self.on_navigate,\r\n+                on_hide=self.on_hidden,\r\n+                max_width=800)\r\n+        else:\r\n+            self.current_view.update_popup(popup_text)\r\n+\r\n+    def move_next(self):\r\n+        if not self.signature_help:\r\n+            return\r\n+        self.signature_index += 1\r\n+        if self.signature_index >= len(self.signature_help[\"items\"]):\r\n+            self.signature_index = len(self.signature_help[\"items\"]) - 1\r\n+        self.display()\r\n+\r\n+    def move_prev(self):\r\n+        if not self.signature_help:\r\n+            return\r\n+        self.signature_index -= 1\r\n+        if self.signature_index < 0:\r\n+            self.signature_index = 0\r\n+        self.display()\r\n+\r\n+    def on_navigate(self, loc):\r\n+        # Clicked the overloads link.  Dismiss this popup and show the panel\r\n+        view = self.current_view\r\n+        self.on_close_popup()\r\n+        view.run_command('typescript_signature_panel')\r\n+\r\n+    def on_hidden(self):\r\n+        log.debug('In popup on_hidden handler')\r\n+        if not self.current_view:\r\n+            return\r\n+\r\n+        cursor_region = self.current_view.sel()[0]\r\n+        arg_regions = self.current_view.get_regions('argSpan')\r\n+        if len(arg_regions):\r\n+            argSpan = self.current_view.get_regions('argSpan')[0]\r\n+            if argSpan.contains(cursor_region):\r\n+                log.debug('Was hidden while in region.  Redisplaying')\r\n+                # Occurs on left/right movement.  Rerun to redisplay popup.\r\n+                self.display()\r\n+        else:\r\n+            # Cleanup\r\n+            self.on_close_popup()\r\n+\r\n+    def on_close_popup(self):\r\n+        \"\"\" Call whenever the view loses focus, of the region is exited \"\"\"\r\n+        if self.current_view:\r\n+            self.current_view.erase_regions('argSpan')\r\n+            self.current_view.hide_popup()\r\n+            self.current_view = None\r\n+        self.signature_help = None\r\n+\r\n+    def is_active(self):\r","path":"libs/popupmanager.py","position":134,"original_position":134,"commit_id":"24fceaefccb5b83a5ffd9832f5333a6c9daee0f8","original_commit_id":"24fceaefccb5b83a5ffd9832f5333a6c9daee0f8","user":{"login":"billti","id":993909,"avatar_url":"https://avatars.githubusercontent.com/u/993909?v=3","gravatar_id":"","url":"https://api.github.com/users/billti","html_url":"https://github.com/billti","followers_url":"https://api.github.com/users/billti/followers","following_url":"https://api.github.com/users/billti/following{/other_user}","gists_url":"https://api.github.com/users/billti/gists{/gist_id}","starred_url":"https://api.github.com/users/billti/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/billti/subscriptions","organizations_url":"https://api.github.com/users/billti/orgs","repos_url":"https://api.github.com/users/billti/repos","events_url":"https://api.github.com/users/billti/events{/privacy}","received_events_url":"https://api.github.com/users/billti/received_events","type":"User","site_admin":false},"body":"Comment this.  Just means a session is currently active.  current_view is set iff this is true.","created_at":"2015-04-13T22:23:16Z","updated_at":"2015-04-13T22:23:16Z","html_url":"https://github.com/Microsoft/TypeScript-Sublime-Plugin/pull/128#discussion_r28285371","pull_request_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/pulls/128","_links":{"self":{"href":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/pulls/comments/28285371"},"html":{"href":"https://github.com/Microsoft/TypeScript-Sublime-Plugin/pull/128#discussion_r28285371"},"pull_request":{"href":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/pulls/128"}}},"pull_request":{"url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/pulls/128","id":32831605,"html_url":"https://github.com/Microsoft/TypeScript-Sublime-Plugin/pull/128","diff_url":"https://github.com/Microsoft/TypeScript-Sublime-Plugin/pull/128.diff","patch_url":"https://github.com/Microsoft/TypeScript-Sublime-Plugin/pull/128.patch","issue_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/issues/128","number":128,"state":"open","locked":false,"title":"Added signature popup support on ST3","user":{"login":"billti","id":993909,"avatar_url":"https://avatars.githubusercontent.com/u/993909?v=3","gravatar_id":"","url":"https://api.github.com/users/billti","html_url":"https://github.com/billti","followers_url":"https://api.github.com/users/billti/followers","following_url":"https://api.github.com/users/billti/following{/other_user}","gists_url":"https://api.github.com/users/billti/gists{/gist_id}","starred_url":"https://api.github.com/users/billti/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/billti/subscriptions","organizations_url":"https://api.github.com/users/billti/orgs","repos_url":"https://api.github.com/users/billti/repos","events_url":"https://api.github.com/users/billti/events{/privacy}","received_events_url":"https://api.github.com/users/billti/received_events","type":"User","site_admin":false},"body":"Getting this up in early form for folks to play with.  I've only tested on ST3 on OS X so far.  I will verify nothing has broken on ST2 and other platforms tomorrow.\r\n\r\nOn ST3, I hijack the Quick Info trigger ( ctrl-t, ctrl-q ) and show a signature popup instead.  There is also convenience shortcut; by just pressing a period '.' char inside the opening paren of the arg list the popup will also trigger (open to feedback on this one).  A popup will then appear with signature help as shown below.\r\n\r\nAs you type, the arg list will update.  You can also scroll through the signatures by pressing alt+up/alt+down, and if you click on the count link (i.e. \"1/6\" below) it will open the quick panel with all signatures so they can be fuzzy searched quickly.\r\n\r\nI'll do some more cleanup, validation, and integration with Steve's changes tomorrow, but this should be good enough to get a feel for now.\r\n\r\n![screen shot 2015-04-07 at 11 18 43 pm](https://cloud.githubusercontent.com/assets/993909/7039918/b3bd434c-dd7c-11e4-93b5-83d731bd82d5.png)\r\n\r\n\r\n","created_at":"2015-04-08T06:22:35Z","updated_at":"2015-04-13T22:23:16Z","closed_at":null,"merged_at":null,"merge_commit_sha":"45534ec8b8f3684b528b7d3c637ae100396c1ad8","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/pulls/128/commits","review_comments_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/pulls/128/comments","review_comment_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/pulls/comments{/number}","comments_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/issues/128/comments","statuses_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/statuses/24fceaefccb5b83a5ffd9832f5333a6c9daee0f8","head":{"label":"Microsoft:tooltips","ref":"tooltips","sha":"24fceaefccb5b83a5ffd9832f5333a6c9daee0f8","user":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars.githubusercontent.com/u/6154722?v=3","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"repo":{"id":28059353,"name":"TypeScript-Sublime-Plugin","full_name":"Microsoft/TypeScript-Sublime-Plugin","owner":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars.githubusercontent.com/u/6154722?v=3","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Microsoft/TypeScript-Sublime-Plugin","description":"IO wrapper around TypeScript language services, allowing for easy consumption by editor plugins","fork":false,"url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin","forks_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/forks","keys_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/teams","hooks_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/hooks","issue_events_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/issues/events{/number}","events_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/events","assignees_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/assignees{/user}","branches_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/branches{/branch}","tags_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/tags","blobs_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/git/refs{/sha}","trees_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/statuses/{sha}","languages_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/languages","stargazers_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/stargazers","contributors_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/contributors","subscribers_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/subscribers","subscription_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/subscription","commits_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/commits{/sha}","git_commits_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/git/commits{/sha}","comments_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/comments{/number}","issue_comment_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/issues/comments{/number}","contents_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/contents/{+path}","compare_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/merges","archive_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/downloads","issues_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/issues{/number}","pulls_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/pulls{/number}","milestones_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/milestones{/number}","notifications_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/labels{/name}","releases_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/releases{/id}","created_at":"2014-12-15T22:30:20Z","updated_at":"2015-04-13T20:00:05Z","pushed_at":"2015-04-13T01:01:13Z","git_url":"git://github.com/Microsoft/TypeScript-Sublime-Plugin.git","ssh_url":"git@github.com:Microsoft/TypeScript-Sublime-Plugin.git","clone_url":"https://github.com/Microsoft/TypeScript-Sublime-Plugin.git","svn_url":"https://github.com/Microsoft/TypeScript-Sublime-Plugin","homepage":null,"size":30273,"stargazers_count":158,"watchers_count":158,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":7,"mirror_url":null,"open_issues_count":30,"forks":7,"open_issues":30,"watchers":158,"default_branch":"master"}},"base":{"label":"Microsoft:master","ref":"master","sha":"143ebe450d526f12e94168e6d6b251720d11b729","user":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars.githubusercontent.com/u/6154722?v=3","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"repo":{"id":28059353,"name":"TypeScript-Sublime-Plugin","full_name":"Microsoft/TypeScript-Sublime-Plugin","owner":{"login":"Microsoft","id":6154722,"avatar_url":"https://avatars.githubusercontent.com/u/6154722?v=3","gravatar_id":"","url":"https://api.github.com/users/Microsoft","html_url":"https://github.com/Microsoft","followers_url":"https://api.github.com/users/Microsoft/followers","following_url":"https://api.github.com/users/Microsoft/following{/other_user}","gists_url":"https://api.github.com/users/Microsoft/gists{/gist_id}","starred_url":"https://api.github.com/users/Microsoft/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Microsoft/subscriptions","organizations_url":"https://api.github.com/users/Microsoft/orgs","repos_url":"https://api.github.com/users/Microsoft/repos","events_url":"https://api.github.com/users/Microsoft/events{/privacy}","received_events_url":"https://api.github.com/users/Microsoft/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/Microsoft/TypeScript-Sublime-Plugin","description":"IO wrapper around TypeScript language services, allowing for easy consumption by editor plugins","fork":false,"url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin","forks_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/forks","keys_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/keys{/key_id}","collaborators_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/teams","hooks_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/hooks","issue_events_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/issues/events{/number}","events_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/events","assignees_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/assignees{/user}","branches_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/branches{/branch}","tags_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/tags","blobs_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/git/refs{/sha}","trees_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/git/trees{/sha}","statuses_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/statuses/{sha}","languages_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/languages","stargazers_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/stargazers","contributors_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/contributors","subscribers_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/subscribers","subscription_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/subscription","commits_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/commits{/sha}","git_commits_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/git/commits{/sha}","comments_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/comments{/number}","issue_comment_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/issues/comments{/number}","contents_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/contents/{+path}","compare_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/compare/{base}...{head}","merges_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/merges","archive_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/downloads","issues_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/issues{/number}","pulls_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/pulls{/number}","milestones_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/milestones{/number}","notifications_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/labels{/name}","releases_url":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/releases{/id}","created_at":"2014-12-15T22:30:20Z","updated_at":"2015-04-13T20:00:05Z","pushed_at":"2015-04-13T01:01:13Z","git_url":"git://github.com/Microsoft/TypeScript-Sublime-Plugin.git","ssh_url":"git@github.com:Microsoft/TypeScript-Sublime-Plugin.git","clone_url":"https://github.com/Microsoft/TypeScript-Sublime-Plugin.git","svn_url":"https://github.com/Microsoft/TypeScript-Sublime-Plugin","homepage":null,"size":30273,"stargazers_count":158,"watchers_count":158,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":7,"mirror_url":null,"open_issues_count":30,"forks":7,"open_issues":30,"watchers":158,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/pulls/128"},"html":{"href":"https://github.com/Microsoft/TypeScript-Sublime-Plugin/pull/128"},"issue":{"href":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/issues/128"},"comments":{"href":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/issues/128/comments"},"review_comments":{"href":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/pulls/128/comments"},"review_comment":{"href":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/pulls/128/commits"},"statuses":{"href":"https://api.github.com/repos/Microsoft/TypeScript-Sublime-Plugin/statuses/24fceaefccb5b83a5ffd9832f5333a6c9daee0f8"}}}}