{"action":"created","comment":{"url":"https://api.github.com/repos/rosshemsley/iOpener/pulls/comments/47452221","id":47452221,"diff_hunk":"@@ -323,17 +486,46 @@ def run(self, direction):\n         elif direction == \"down\": iOpenerCommand.input_panel.goto_next_history()\n \n \n+class iOpenerFolderListCommand(sublime_plugin.WindowCommand):\n+    \"\"\"\n+    Receive requests for folder list operations.\n+    \"\"\"\n+    def run(self, operation):\n+\n+        if operation == \"scroll_up\":\n+            iOpenerCommand.input_panel.goto_next_folder()\n+\n+        elif operation == \"scroll_down\":\n+            iOpenerCommand.input_panel.goto_prev_folder()\n+\n+        elif operation == \"show_home_folder\":\n+            iOpenerCommand.input_panel.show_home_folder()\n+\n+        elif operation == \"show_file_folder\":\n+            iOpenerCommand.input_panel.show_file_folder()\n+\n+        elif operation == \"show_project_folders\":\n+            iOpenerCommand.input_panel.show_project_folders()\n+\n+        elif operation == \"show_user_folders\":\n+            iOpenerCommand.input_panel.show_user_folders()\n+\n+        elif operation == \"show_folder_sequence_folders\":\n+            iOpenerCommand.input_panel.show_folder_sequence_folders()\n+\n+\n class iOpenerCommand(sublime_plugin.WindowCommand):\n     \"\"\"\n-    This is the command caled by the UI.\n-    input_panel contains an instance of the class iOpenerPathInput when the input is\n-    active, otherwise it contains None.\n+    This is the command called by the UI. input_panel contains an instance of\n+    the class iOpenerPathInput when the input is active, otherwise it contains\n+    None.\n     \"\"\"\n     input_panel  = None\n \n     def run(self):\n-        if not (is_sublime_text_2() or is_sublime_text_3()):\n-            print(\"iOpener plugin is only for Sublime Text v2 and v3.\")\n-        else:\n+\n+        if (is_sublime_text_2() or is_sublime_text_3()):","path":"i_opener.py","position":378,"original_position":378,"commit_id":"c3194b0f9a1f052079e7e0ea2b642c8490a395a0","original_commit_id":"c3194b0f9a1f052079e7e0ea2b642c8490a395a0","user":{"login":"rosshemsley","id":586434,"avatar_url":"https://avatars.githubusercontent.com/u/586434?v=3","gravatar_id":"","url":"https://api.github.com/users/rosshemsley","html_url":"https://github.com/rosshemsley","followers_url":"https://api.github.com/users/rosshemsley/followers","following_url":"https://api.github.com/users/rosshemsley/following{/other_user}","gists_url":"https://api.github.com/users/rosshemsley/gists{/gist_id}","starred_url":"https://api.github.com/users/rosshemsley/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rosshemsley/subscriptions","organizations_url":"https://api.github.com/users/rosshemsley/orgs","repos_url":"https://api.github.com/users/rosshemsley/repos","events_url":"https://api.github.com/users/rosshemsley/events{/privacy}","received_events_url":"https://api.github.com/users/rosshemsley/received_events","type":"User","site_admin":false},"body":"no need for braces","created_at":"2015-12-13T23:12:21Z","updated_at":"2015-12-13T23:12:21Z","html_url":"https://github.com/rosshemsley/iOpener/pull/26#discussion_r47452221","pull_request_url":"https://api.github.com/repos/rosshemsley/iOpener/pulls/26","_links":{"self":{"href":"https://api.github.com/repos/rosshemsley/iOpener/pulls/comments/47452221"},"html":{"href":"https://github.com/rosshemsley/iOpener/pull/26#discussion_r47452221"},"pull_request":{"href":"https://api.github.com/repos/rosshemsley/iOpener/pulls/26"}}},"pull_request":{"url":"https://api.github.com/repos/rosshemsley/iOpener/pulls/26","id":53480779,"html_url":"https://github.com/rosshemsley/iOpener/pull/26","diff_url":"https://github.com/rosshemsley/iOpener/pull/26.diff","patch_url":"https://github.com/rosshemsley/iOpener/pull/26.patch","issue_url":"https://api.github.com/repos/rosshemsley/iOpener/issues/26","number":26,"state":"open","locked":false,"title":"dev-mattst branch; ST2 support fixed and new folder list scrolling feature","user":{"login":"mattst","id":835623,"avatar_url":"https://avatars.githubusercontent.com/u/835623?v=3","gravatar_id":"","url":"https://api.github.com/users/mattst","html_url":"https://github.com/mattst","followers_url":"https://api.github.com/users/mattst/followers","following_url":"https://api.github.com/users/mattst/following{/other_user}","gists_url":"https://api.github.com/users/mattst/gists{/gist_id}","starred_url":"https://api.github.com/users/mattst/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/mattst/subscriptions","organizations_url":"https://api.github.com/users/mattst/orgs","repos_url":"https://api.github.com/users/mattst/repos","events_url":"https://api.github.com/users/mattst/events{/privacy}","received_events_url":"https://api.github.com/users/mattst/received_events","type":"User","site_admin":false},"body":"Hi there,\r\n\r\nThere is a minor change and a major change.\r\n\r\n- Minor: Fixed broken ST v2 support. It was broken by the switch to the more modular design and fixed by doing a version specific import of the `paths` and `matching` modules.\r\n- Major: New folder list scrolling feature.\r\n\r\nThe folder list scrolling is similar to the history scrolling feature. A folder list is created from the following possible locations: the user's home folder, the folder of the current file, the project folders, and additional user set folders which can be added in the settings file. The order the folders appear in can be controlled by the user in the `i_opener.sublime-settings` with the `folder_sequence` setting, and the user's additional folders can be set with the `folders` setting.\r\n\r\n    // `i_opener.sublime-settings`:\r\n\r\n    // User control of what order to add the folders in.\r\n    \"folder_sequence\": [\"home\", \"file\", \"project\", \"user\"],\r\n\r\n    // User set folders to add.\r\n    \"folders\":\r\n    [\r\n         \"~/Path/To/Folder/In/Home/\",\r\n         \"/Full/Path/To/Folder/\"\r\n    ]\r\n\r\nThe `i_opener.sublime-settings` file has detailed instructions.\r\n\r\nMoving up and down the folder list is almost identical to the history feature except that a modifier key is used. `ctrl+up/down` for Linux/Windows, `super+up/down` for OSX.\r\n\r\nIn addition users can change to different folders and folder lists using key bindings.\r\n\r\n- `ctrl+h` - display the home folder.\r\n- `ctrl+f` - display the folder of current file.\r\n- `ctrl+p` - load project folders, display the first one, and allow scrolling through them.\r\n- `ctrl+u` - load the user defined folders from the settings file, display the first one, and allow scrolling through them.\r\n- `ctrl+a` - load the folders list created using `folder_sequence` setting, display the first one, and allow scrolling through them. This is the initial folder list when the plugin starts.\r\n- OSX uses `super` in place of `ctrl`.\r\n\r\nThis feature has made both the `get_current_directory()` function and the `use_project_dir` setting redundant; both have been removed.\r\n\r\nTested and working with ST v3 and v2 on both Linux and Windows XP. Completely untested on OSX, you wouldn't happen to be an OSX user would you?\r\n\r\nA few other minor changes were made; e.g. a few typos, comments, a variable or two renamed, and the check for ST v2 or v3 in `iOpenerCommand` is now set to the positive rather than the negative, in keeping with good practice.\r\n\r\nI hope this meets with your approval.\r\n","created_at":"2015-12-12T17:22:28Z","updated_at":"2015-12-13T23:12:21Z","closed_at":null,"merged_at":null,"merge_commit_sha":"7191f8200f4655878d4cdddc84254d2b866bc77f","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/rosshemsley/iOpener/pulls/26/commits","review_comments_url":"https://api.github.com/repos/rosshemsley/iOpener/pulls/26/comments","review_comment_url":"https://api.github.com/repos/rosshemsley/iOpener/pulls/comments{/number}","comments_url":"https://api.github.com/repos/rosshemsley/iOpener/issues/26/comments","statuses_url":"https://api.github.com/repos/rosshemsley/iOpener/statuses/c3194b0f9a1f052079e7e0ea2b642c8490a395a0","head":{"label":"rosshemsley:dev-mattst","ref":"dev-mattst","sha":"c3194b0f9a1f052079e7e0ea2b642c8490a395a0","user":{"login":"rosshemsley","id":586434,"avatar_url":"https://avatars.githubusercontent.com/u/586434?v=3","gravatar_id":"","url":"https://api.github.com/users/rosshemsley","html_url":"https://github.com/rosshemsley","followers_url":"https://api.github.com/users/rosshemsley/followers","following_url":"https://api.github.com/users/rosshemsley/following{/other_user}","gists_url":"https://api.github.com/users/rosshemsley/gists{/gist_id}","starred_url":"https://api.github.com/users/rosshemsley/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rosshemsley/subscriptions","organizations_url":"https://api.github.com/users/rosshemsley/orgs","repos_url":"https://api.github.com/users/rosshemsley/repos","events_url":"https://api.github.com/users/rosshemsley/events{/privacy}","received_events_url":"https://api.github.com/users/rosshemsley/received_events","type":"User","site_admin":false},"repo":{"id":14908506,"name":"iOpener","full_name":"rosshemsley/iOpener","owner":{"login":"rosshemsley","id":586434,"avatar_url":"https://avatars.githubusercontent.com/u/586434?v=3","gravatar_id":"","url":"https://api.github.com/users/rosshemsley","html_url":"https://github.com/rosshemsley","followers_url":"https://api.github.com/users/rosshemsley/followers","following_url":"https://api.github.com/users/rosshemsley/following{/other_user}","gists_url":"https://api.github.com/users/rosshemsley/gists{/gist_id}","starred_url":"https://api.github.com/users/rosshemsley/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rosshemsley/subscriptions","organizations_url":"https://api.github.com/users/rosshemsley/orgs","repos_url":"https://api.github.com/users/rosshemsley/repos","events_url":"https://api.github.com/users/rosshemsley/events{/privacy}","received_events_url":"https://api.github.com/users/rosshemsley/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/rosshemsley/iOpener","description":"Open files from path, with completion, listings and history. Similar to Emacs find file.","fork":false,"url":"https://api.github.com/repos/rosshemsley/iOpener","forks_url":"https://api.github.com/repos/rosshemsley/iOpener/forks","keys_url":"https://api.github.com/repos/rosshemsley/iOpener/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rosshemsley/iOpener/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rosshemsley/iOpener/teams","hooks_url":"https://api.github.com/repos/rosshemsley/iOpener/hooks","issue_events_url":"https://api.github.com/repos/rosshemsley/iOpener/issues/events{/number}","events_url":"https://api.github.com/repos/rosshemsley/iOpener/events","assignees_url":"https://api.github.com/repos/rosshemsley/iOpener/assignees{/user}","branches_url":"https://api.github.com/repos/rosshemsley/iOpener/branches{/branch}","tags_url":"https://api.github.com/repos/rosshemsley/iOpener/tags","blobs_url":"https://api.github.com/repos/rosshemsley/iOpener/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rosshemsley/iOpener/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rosshemsley/iOpener/git/refs{/sha}","trees_url":"https://api.github.com/repos/rosshemsley/iOpener/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rosshemsley/iOpener/statuses/{sha}","languages_url":"https://api.github.com/repos/rosshemsley/iOpener/languages","stargazers_url":"https://api.github.com/repos/rosshemsley/iOpener/stargazers","contributors_url":"https://api.github.com/repos/rosshemsley/iOpener/contributors","subscribers_url":"https://api.github.com/repos/rosshemsley/iOpener/subscribers","subscription_url":"https://api.github.com/repos/rosshemsley/iOpener/subscription","commits_url":"https://api.github.com/repos/rosshemsley/iOpener/commits{/sha}","git_commits_url":"https://api.github.com/repos/rosshemsley/iOpener/git/commits{/sha}","comments_url":"https://api.github.com/repos/rosshemsley/iOpener/comments{/number}","issue_comment_url":"https://api.github.com/repos/rosshemsley/iOpener/issues/comments{/number}","contents_url":"https://api.github.com/repos/rosshemsley/iOpener/contents/{+path}","compare_url":"https://api.github.com/repos/rosshemsley/iOpener/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rosshemsley/iOpener/merges","archive_url":"https://api.github.com/repos/rosshemsley/iOpener/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rosshemsley/iOpener/downloads","issues_url":"https://api.github.com/repos/rosshemsley/iOpener/issues{/number}","pulls_url":"https://api.github.com/repos/rosshemsley/iOpener/pulls{/number}","milestones_url":"https://api.github.com/repos/rosshemsley/iOpener/milestones{/number}","notifications_url":"https://api.github.com/repos/rosshemsley/iOpener/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rosshemsley/iOpener/labels{/name}","releases_url":"https://api.github.com/repos/rosshemsley/iOpener/releases{/id}","created_at":"2013-12-03T23:08:35Z","updated_at":"2015-12-13T16:44:37Z","pushed_at":"2015-12-12T17:22:28Z","git_url":"git://github.com/rosshemsley/iOpener.git","ssh_url":"git@github.com:rosshemsley/iOpener.git","clone_url":"https://github.com/rosshemsley/iOpener.git","svn_url":"https://github.com/rosshemsley/iOpener","homepage":"","size":432,"stargazers_count":23,"watchers_count":23,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":8,"forks":4,"open_issues":8,"watchers":23,"default_branch":"master"}},"base":{"label":"rosshemsley:master","ref":"master","sha":"a35117a201290b63b53ba6372dbf8bbfc68f28b9","user":{"login":"rosshemsley","id":586434,"avatar_url":"https://avatars.githubusercontent.com/u/586434?v=3","gravatar_id":"","url":"https://api.github.com/users/rosshemsley","html_url":"https://github.com/rosshemsley","followers_url":"https://api.github.com/users/rosshemsley/followers","following_url":"https://api.github.com/users/rosshemsley/following{/other_user}","gists_url":"https://api.github.com/users/rosshemsley/gists{/gist_id}","starred_url":"https://api.github.com/users/rosshemsley/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rosshemsley/subscriptions","organizations_url":"https://api.github.com/users/rosshemsley/orgs","repos_url":"https://api.github.com/users/rosshemsley/repos","events_url":"https://api.github.com/users/rosshemsley/events{/privacy}","received_events_url":"https://api.github.com/users/rosshemsley/received_events","type":"User","site_admin":false},"repo":{"id":14908506,"name":"iOpener","full_name":"rosshemsley/iOpener","owner":{"login":"rosshemsley","id":586434,"avatar_url":"https://avatars.githubusercontent.com/u/586434?v=3","gravatar_id":"","url":"https://api.github.com/users/rosshemsley","html_url":"https://github.com/rosshemsley","followers_url":"https://api.github.com/users/rosshemsley/followers","following_url":"https://api.github.com/users/rosshemsley/following{/other_user}","gists_url":"https://api.github.com/users/rosshemsley/gists{/gist_id}","starred_url":"https://api.github.com/users/rosshemsley/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rosshemsley/subscriptions","organizations_url":"https://api.github.com/users/rosshemsley/orgs","repos_url":"https://api.github.com/users/rosshemsley/repos","events_url":"https://api.github.com/users/rosshemsley/events{/privacy}","received_events_url":"https://api.github.com/users/rosshemsley/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/rosshemsley/iOpener","description":"Open files from path, with completion, listings and history. Similar to Emacs find file.","fork":false,"url":"https://api.github.com/repos/rosshemsley/iOpener","forks_url":"https://api.github.com/repos/rosshemsley/iOpener/forks","keys_url":"https://api.github.com/repos/rosshemsley/iOpener/keys{/key_id}","collaborators_url":"https://api.github.com/repos/rosshemsley/iOpener/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/rosshemsley/iOpener/teams","hooks_url":"https://api.github.com/repos/rosshemsley/iOpener/hooks","issue_events_url":"https://api.github.com/repos/rosshemsley/iOpener/issues/events{/number}","events_url":"https://api.github.com/repos/rosshemsley/iOpener/events","assignees_url":"https://api.github.com/repos/rosshemsley/iOpener/assignees{/user}","branches_url":"https://api.github.com/repos/rosshemsley/iOpener/branches{/branch}","tags_url":"https://api.github.com/repos/rosshemsley/iOpener/tags","blobs_url":"https://api.github.com/repos/rosshemsley/iOpener/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/rosshemsley/iOpener/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/rosshemsley/iOpener/git/refs{/sha}","trees_url":"https://api.github.com/repos/rosshemsley/iOpener/git/trees{/sha}","statuses_url":"https://api.github.com/repos/rosshemsley/iOpener/statuses/{sha}","languages_url":"https://api.github.com/repos/rosshemsley/iOpener/languages","stargazers_url":"https://api.github.com/repos/rosshemsley/iOpener/stargazers","contributors_url":"https://api.github.com/repos/rosshemsley/iOpener/contributors","subscribers_url":"https://api.github.com/repos/rosshemsley/iOpener/subscribers","subscription_url":"https://api.github.com/repos/rosshemsley/iOpener/subscription","commits_url":"https://api.github.com/repos/rosshemsley/iOpener/commits{/sha}","git_commits_url":"https://api.github.com/repos/rosshemsley/iOpener/git/commits{/sha}","comments_url":"https://api.github.com/repos/rosshemsley/iOpener/comments{/number}","issue_comment_url":"https://api.github.com/repos/rosshemsley/iOpener/issues/comments{/number}","contents_url":"https://api.github.com/repos/rosshemsley/iOpener/contents/{+path}","compare_url":"https://api.github.com/repos/rosshemsley/iOpener/compare/{base}...{head}","merges_url":"https://api.github.com/repos/rosshemsley/iOpener/merges","archive_url":"https://api.github.com/repos/rosshemsley/iOpener/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/rosshemsley/iOpener/downloads","issues_url":"https://api.github.com/repos/rosshemsley/iOpener/issues{/number}","pulls_url":"https://api.github.com/repos/rosshemsley/iOpener/pulls{/number}","milestones_url":"https://api.github.com/repos/rosshemsley/iOpener/milestones{/number}","notifications_url":"https://api.github.com/repos/rosshemsley/iOpener/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/rosshemsley/iOpener/labels{/name}","releases_url":"https://api.github.com/repos/rosshemsley/iOpener/releases{/id}","created_at":"2013-12-03T23:08:35Z","updated_at":"2015-12-13T16:44:37Z","pushed_at":"2015-12-12T17:22:28Z","git_url":"git://github.com/rosshemsley/iOpener.git","ssh_url":"git@github.com:rosshemsley/iOpener.git","clone_url":"https://github.com/rosshemsley/iOpener.git","svn_url":"https://github.com/rosshemsley/iOpener","homepage":"","size":432,"stargazers_count":23,"watchers_count":23,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":4,"mirror_url":null,"open_issues_count":8,"forks":4,"open_issues":8,"watchers":23,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/rosshemsley/iOpener/pulls/26"},"html":{"href":"https://github.com/rosshemsley/iOpener/pull/26"},"issue":{"href":"https://api.github.com/repos/rosshemsley/iOpener/issues/26"},"comments":{"href":"https://api.github.com/repos/rosshemsley/iOpener/issues/26/comments"},"review_comments":{"href":"https://api.github.com/repos/rosshemsley/iOpener/pulls/26/comments"},"review_comment":{"href":"https://api.github.com/repos/rosshemsley/iOpener/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/rosshemsley/iOpener/pulls/26/commits"},"statuses":{"href":"https://api.github.com/repos/rosshemsley/iOpener/statuses/c3194b0f9a1f052079e7e0ea2b642c8490a395a0"}}}}