{"action":"created","comment":{"url":"https://api.github.com/repos/spyder-ide/spyder/pulls/comments/29014298","id":29014298,"diff_hunk":"@@ -451,14 +334,14 @@ def __init__(self, parent, actions):\n \r\n         self.data = []\r\n \r\n-        filelist_action = create_action(self, _(\"File list management\"),\r\n+        fileswitcher_action = create_action(self, _(\"Fast file switcher...\"),\r","path":"spyderlib/widgets/editor.py","position":162,"original_position":162,"commit_id":"42ff5f1b8b1282343bef2795dfb32c1dd0bdf7ac","original_commit_id":"42ff5f1b8b1282343bef2795dfb32c1dd0bdf7ac","user":{"login":"ccordoba12","id":365293,"avatar_url":"https://avatars.githubusercontent.com/u/365293?v=3","gravatar_id":"","url":"https://api.github.com/users/ccordoba12","html_url":"https://github.com/ccordoba12","followers_url":"https://api.github.com/users/ccordoba12/followers","following_url":"https://api.github.com/users/ccordoba12/following{/other_user}","gists_url":"https://api.github.com/users/ccordoba12/gists{/gist_id}","starred_url":"https://api.github.com/users/ccordoba12/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ccordoba12/subscriptions","organizations_url":"https://api.github.com/users/ccordoba12/orgs","repos_url":"https://api.github.com/users/ccordoba12/repos","events_url":"https://api.github.com/users/ccordoba12/events{/privacy}","received_events_url":"https://api.github.com/users/ccordoba12/received_events","type":"User","site_admin":false},"body":"What about naming this action `File switcher` instead of `Fast file switcher`?","created_at":"2015-04-23T23:51:27Z","updated_at":"2015-04-23T23:51:27Z","html_url":"https://github.com/spyder-ide/spyder/pull/2343#discussion_r29014298","pull_request_url":"https://api.github.com/repos/spyder-ide/spyder/pulls/2343","_links":{"self":{"href":"https://api.github.com/repos/spyder-ide/spyder/pulls/comments/29014298"},"html":{"href":"https://github.com/spyder-ide/spyder/pull/2343#discussion_r29014298"},"pull_request":{"href":"https://api.github.com/repos/spyder-ide/spyder/pulls/2343"}}},"pull_request":{"url":"https://api.github.com/repos/spyder-ide/spyder/pulls/2343","id":33702543,"html_url":"https://github.com/spyder-ide/spyder/pull/2343","diff_url":"https://github.com/spyder-ide/spyder/pull/2343.diff","patch_url":"https://github.com/spyder-ide/spyder/pull/2343.patch","issue_url":"https://api.github.com/repos/spyder-ide/spyder/issues/2343","number":2343,"state":"open","locked":false,"title":"Fast file switcher like Sublime Text ","user":{"login":"d1manson","id":4244876,"avatar_url":"https://avatars.githubusercontent.com/u/4244876?v=3","gravatar_id":"","url":"https://api.github.com/users/d1manson","html_url":"https://github.com/d1manson","followers_url":"https://api.github.com/users/d1manson/followers","following_url":"https://api.github.com/users/d1manson/following{/other_user}","gists_url":"https://api.github.com/users/d1manson/gists{/gist_id}","starred_url":"https://api.github.com/users/d1manson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/d1manson/subscriptions","organizations_url":"https://api.github.com/users/d1manson/orgs","repos_url":"https://api.github.com/users/d1manson/repos","events_url":"https://api.github.com/users/d1manson/events{/privacy}","received_events_url":"https://api.github.com/users/d1manson/received_events","type":"User","site_admin":false},"body":"Fixes #2340 \r\nFixes #2141\r\n\r\nNote: @ccordoba12 will this close both issues automatically?\r\nAnswer: I think so ;-)\r\n\r\n---\r\n\r\nDiscussed earlier today: https://github.com/spyder-ide/spyder/issues/2340.\r\n\r\nI am totally new to Spyder development and Qt, but I've had a go at hacking in most of what I wanted.\r\n\r\nThe file switcher now looks like this: \r\n![image](https://cloud.githubusercontent.com/assets/4244876/7239369/53e98366-e7a1-11e4-9cc1-06a7c5303911.png)\r\n\r\n## Features\r\n- [x] matching text is highlighted in bold\r\n- [x] up/down keys can be used to navigate list when text field has focus\r\n- [x] navigating the list changes the active tab in the editor, but will revert if dialog is canceled\r\n- [x] text field has focus when opened\r\n- [x] the dialog is more compact and is positioned at the top, centre, of the editor\r\n- [x] global context shortcut - I couldn't work out how to change this and keep Spyder happy.  I'd suggest Ctrl-P as default, but the main thing is to make it global rather than Editor-specific.\r\n- [ ] fuzzy matching (@ccordoba12 suggests https://github.com/seatgeek/fuzzywuzzy).\r\n- [ ] sorting based on recent-usage bias (I didn't attempt this as I figured it required understanding a larger part of the editor's API)\r\n- [x] path info in the list in addition to file names (I think this is relatively easy now that there's an HTMLdelegate involved, but I could be wrong).\r\n- [x] goto line - there is currently a separate dialog for this, but it might be nice to combine the two as in Sublime.\r\n- [ ] goto symbol - this would basically use the same data as the Outline tool. Again, this is something provided by Sublime.\r\n\r\nI'm not promising to do any or all of the above, but I may have a shot at one or two of them.\r\n\r\n*(@d1manson I added some modifications to this description so that github closes the related issue automatically, and added some checkboxes for the progress att: @goanpeca)*","created_at":"2015-04-20T20:25:29Z","updated_at":"2015-04-23T23:51:27Z","closed_at":null,"merged_at":null,"merge_commit_sha":"561bd2cbe9f4da05a24233b1ce5ab738a4cd8590","assignee":null,"milestone":{"url":"https://api.github.com/repos/spyder-ide/spyder/milestones/5","html_url":"https://github.com/spyder-ide/spyder/milestones/v3.0","labels_url":"https://api.github.com/repos/spyder-ide/spyder/milestones/5/labels","id":982077,"number":5,"title":"v3.0","description":"","creator":{"login":"spyder-issues-migrator","id":11021581,"avatar_url":"https://avatars.githubusercontent.com/u/11021581?v=3","gravatar_id":"","url":"https://api.github.com/users/spyder-issues-migrator","html_url":"https://github.com/spyder-issues-migrator","followers_url":"https://api.github.com/users/spyder-issues-migrator/followers","following_url":"https://api.github.com/users/spyder-issues-migrator/following{/other_user}","gists_url":"https://api.github.com/users/spyder-issues-migrator/gists{/gist_id}","starred_url":"https://api.github.com/users/spyder-issues-migrator/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spyder-issues-migrator/subscriptions","organizations_url":"https://api.github.com/users/spyder-issues-migrator/orgs","repos_url":"https://api.github.com/users/spyder-issues-migrator/repos","events_url":"https://api.github.com/users/spyder-issues-migrator/events{/privacy}","received_events_url":"https://api.github.com/users/spyder-issues-migrator/received_events","type":"User","site_admin":false},"open_issues":253,"closed_issues":59,"state":"open","created_at":"2015-02-16T23:17:23Z","updated_at":"2015-04-23T17:10:44Z","due_on":null,"closed_at":null},"commits_url":"https://api.github.com/repos/spyder-ide/spyder/pulls/2343/commits","review_comments_url":"https://api.github.com/repos/spyder-ide/spyder/pulls/2343/comments","review_comment_url":"https://api.github.com/repos/spyder-ide/spyder/pulls/comments{/number}","comments_url":"https://api.github.com/repos/spyder-ide/spyder/issues/2343/comments","statuses_url":"https://api.github.com/repos/spyder-ide/spyder/statuses/42ff5f1b8b1282343bef2795dfb32c1dd0bdf7ac","head":{"label":"d1manson:file-switcher","ref":"file-switcher","sha":"42ff5f1b8b1282343bef2795dfb32c1dd0bdf7ac","user":{"login":"d1manson","id":4244876,"avatar_url":"https://avatars.githubusercontent.com/u/4244876?v=3","gravatar_id":"","url":"https://api.github.com/users/d1manson","html_url":"https://github.com/d1manson","followers_url":"https://api.github.com/users/d1manson/followers","following_url":"https://api.github.com/users/d1manson/following{/other_user}","gists_url":"https://api.github.com/users/d1manson/gists{/gist_id}","starred_url":"https://api.github.com/users/d1manson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/d1manson/subscriptions","organizations_url":"https://api.github.com/users/d1manson/orgs","repos_url":"https://api.github.com/users/d1manson/repos","events_url":"https://api.github.com/users/d1manson/events{/privacy}","received_events_url":"https://api.github.com/users/d1manson/received_events","type":"User","site_admin":false},"repo":{"id":34265336,"name":"spyder","full_name":"d1manson/spyder","owner":{"login":"d1manson","id":4244876,"avatar_url":"https://avatars.githubusercontent.com/u/4244876?v=3","gravatar_id":"","url":"https://api.github.com/users/d1manson","html_url":"https://github.com/d1manson","followers_url":"https://api.github.com/users/d1manson/followers","following_url":"https://api.github.com/users/d1manson/following{/other_user}","gists_url":"https://api.github.com/users/d1manson/gists{/gist_id}","starred_url":"https://api.github.com/users/d1manson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/d1manson/subscriptions","organizations_url":"https://api.github.com/users/d1manson/orgs","repos_url":"https://api.github.com/users/d1manson/repos","events_url":"https://api.github.com/users/d1manson/events{/privacy}","received_events_url":"https://api.github.com/users/d1manson/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/d1manson/spyder","description":"Official repository for Spyder - The Scientific PYthon Development EnviRonment","fork":true,"url":"https://api.github.com/repos/d1manson/spyder","forks_url":"https://api.github.com/repos/d1manson/spyder/forks","keys_url":"https://api.github.com/repos/d1manson/spyder/keys{/key_id}","collaborators_url":"https://api.github.com/repos/d1manson/spyder/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/d1manson/spyder/teams","hooks_url":"https://api.github.com/repos/d1manson/spyder/hooks","issue_events_url":"https://api.github.com/repos/d1manson/spyder/issues/events{/number}","events_url":"https://api.github.com/repos/d1manson/spyder/events","assignees_url":"https://api.github.com/repos/d1manson/spyder/assignees{/user}","branches_url":"https://api.github.com/repos/d1manson/spyder/branches{/branch}","tags_url":"https://api.github.com/repos/d1manson/spyder/tags","blobs_url":"https://api.github.com/repos/d1manson/spyder/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/d1manson/spyder/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/d1manson/spyder/git/refs{/sha}","trees_url":"https://api.github.com/repos/d1manson/spyder/git/trees{/sha}","statuses_url":"https://api.github.com/repos/d1manson/spyder/statuses/{sha}","languages_url":"https://api.github.com/repos/d1manson/spyder/languages","stargazers_url":"https://api.github.com/repos/d1manson/spyder/stargazers","contributors_url":"https://api.github.com/repos/d1manson/spyder/contributors","subscribers_url":"https://api.github.com/repos/d1manson/spyder/subscribers","subscription_url":"https://api.github.com/repos/d1manson/spyder/subscription","commits_url":"https://api.github.com/repos/d1manson/spyder/commits{/sha}","git_commits_url":"https://api.github.com/repos/d1manson/spyder/git/commits{/sha}","comments_url":"https://api.github.com/repos/d1manson/spyder/comments{/number}","issue_comment_url":"https://api.github.com/repos/d1manson/spyder/issues/comments{/number}","contents_url":"https://api.github.com/repos/d1manson/spyder/contents/{+path}","compare_url":"https://api.github.com/repos/d1manson/spyder/compare/{base}...{head}","merges_url":"https://api.github.com/repos/d1manson/spyder/merges","archive_url":"https://api.github.com/repos/d1manson/spyder/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/d1manson/spyder/downloads","issues_url":"https://api.github.com/repos/d1manson/spyder/issues{/number}","pulls_url":"https://api.github.com/repos/d1manson/spyder/pulls{/number}","milestones_url":"https://api.github.com/repos/d1manson/spyder/milestones{/number}","notifications_url":"https://api.github.com/repos/d1manson/spyder/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/d1manson/spyder/labels{/name}","releases_url":"https://api.github.com/repos/d1manson/spyder/releases{/id}","created_at":"2015-04-20T14:28:24Z","updated_at":"2015-04-20T14:28:28Z","pushed_at":"2015-04-23T21:37:04Z","git_url":"git://github.com/d1manson/spyder.git","ssh_url":"git@github.com:d1manson/spyder.git","clone_url":"https://github.com/d1manson/spyder.git","svn_url":"https://github.com/d1manson/spyder","homepage":"","size":21232,"stargazers_count":0,"watchers_count":0,"language":"Python","has_issues":false,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":0,"mirror_url":null,"open_issues_count":0,"forks":0,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"spyder-ide:master","ref":"master","sha":"471d0c9d4bb107dd8cec2a6befaec62f43ad660c","user":{"login":"spyder-ide","id":1284937,"avatar_url":"https://avatars.githubusercontent.com/u/1284937?v=3","gravatar_id":"","url":"https://api.github.com/users/spyder-ide","html_url":"https://github.com/spyder-ide","followers_url":"https://api.github.com/users/spyder-ide/followers","following_url":"https://api.github.com/users/spyder-ide/following{/other_user}","gists_url":"https://api.github.com/users/spyder-ide/gists{/gist_id}","starred_url":"https://api.github.com/users/spyder-ide/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spyder-ide/subscriptions","organizations_url":"https://api.github.com/users/spyder-ide/orgs","repos_url":"https://api.github.com/users/spyder-ide/repos","events_url":"https://api.github.com/users/spyder-ide/events{/privacy}","received_events_url":"https://api.github.com/users/spyder-ide/received_events","type":"Organization","site_admin":false},"repo":{"id":30892477,"name":"spyder","full_name":"spyder-ide/spyder","owner":{"login":"spyder-ide","id":1284937,"avatar_url":"https://avatars.githubusercontent.com/u/1284937?v=3","gravatar_id":"","url":"https://api.github.com/users/spyder-ide","html_url":"https://github.com/spyder-ide","followers_url":"https://api.github.com/users/spyder-ide/followers","following_url":"https://api.github.com/users/spyder-ide/following{/other_user}","gists_url":"https://api.github.com/users/spyder-ide/gists{/gist_id}","starred_url":"https://api.github.com/users/spyder-ide/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/spyder-ide/subscriptions","organizations_url":"https://api.github.com/users/spyder-ide/orgs","repos_url":"https://api.github.com/users/spyder-ide/repos","events_url":"https://api.github.com/users/spyder-ide/events{/privacy}","received_events_url":"https://api.github.com/users/spyder-ide/received_events","type":"Organization","site_admin":false},"private":false,"html_url":"https://github.com/spyder-ide/spyder","description":"Official repository for Spyder - The Scientific PYthon Development EnviRonment","fork":false,"url":"https://api.github.com/repos/spyder-ide/spyder","forks_url":"https://api.github.com/repos/spyder-ide/spyder/forks","keys_url":"https://api.github.com/repos/spyder-ide/spyder/keys{/key_id}","collaborators_url":"https://api.github.com/repos/spyder-ide/spyder/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/spyder-ide/spyder/teams","hooks_url":"https://api.github.com/repos/spyder-ide/spyder/hooks","issue_events_url":"https://api.github.com/repos/spyder-ide/spyder/issues/events{/number}","events_url":"https://api.github.com/repos/spyder-ide/spyder/events","assignees_url":"https://api.github.com/repos/spyder-ide/spyder/assignees{/user}","branches_url":"https://api.github.com/repos/spyder-ide/spyder/branches{/branch}","tags_url":"https://api.github.com/repos/spyder-ide/spyder/tags","blobs_url":"https://api.github.com/repos/spyder-ide/spyder/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/spyder-ide/spyder/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/spyder-ide/spyder/git/refs{/sha}","trees_url":"https://api.github.com/repos/spyder-ide/spyder/git/trees{/sha}","statuses_url":"https://api.github.com/repos/spyder-ide/spyder/statuses/{sha}","languages_url":"https://api.github.com/repos/spyder-ide/spyder/languages","stargazers_url":"https://api.github.com/repos/spyder-ide/spyder/stargazers","contributors_url":"https://api.github.com/repos/spyder-ide/spyder/contributors","subscribers_url":"https://api.github.com/repos/spyder-ide/spyder/subscribers","subscription_url":"https://api.github.com/repos/spyder-ide/spyder/subscription","commits_url":"https://api.github.com/repos/spyder-ide/spyder/commits{/sha}","git_commits_url":"https://api.github.com/repos/spyder-ide/spyder/git/commits{/sha}","comments_url":"https://api.github.com/repos/spyder-ide/spyder/comments{/number}","issue_comment_url":"https://api.github.com/repos/spyder-ide/spyder/issues/comments{/number}","contents_url":"https://api.github.com/repos/spyder-ide/spyder/contents/{+path}","compare_url":"https://api.github.com/repos/spyder-ide/spyder/compare/{base}...{head}","merges_url":"https://api.github.com/repos/spyder-ide/spyder/merges","archive_url":"https://api.github.com/repos/spyder-ide/spyder/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/spyder-ide/spyder/downloads","issues_url":"https://api.github.com/repos/spyder-ide/spyder/issues{/number}","pulls_url":"https://api.github.com/repos/spyder-ide/spyder/pulls{/number}","milestones_url":"https://api.github.com/repos/spyder-ide/spyder/milestones{/number}","notifications_url":"https://api.github.com/repos/spyder-ide/spyder/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/spyder-ide/spyder/labels{/name}","releases_url":"https://api.github.com/repos/spyder-ide/spyder/releases{/id}","created_at":"2015-02-16T22:49:48Z","updated_at":"2015-04-23T19:42:36Z","pushed_at":"2015-04-23T21:37:04Z","git_url":"git://github.com/spyder-ide/spyder.git","ssh_url":"git@github.com:spyder-ide/spyder.git","clone_url":"https://github.com/spyder-ide/spyder.git","svn_url":"https://github.com/spyder-ide/spyder","homepage":"","size":31132,"stargazers_count":217,"watchers_count":217,"language":"Python","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":64,"mirror_url":null,"open_issues_count":474,"forks":64,"open_issues":474,"watchers":217,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/spyder-ide/spyder/pulls/2343"},"html":{"href":"https://github.com/spyder-ide/spyder/pull/2343"},"issue":{"href":"https://api.github.com/repos/spyder-ide/spyder/issues/2343"},"comments":{"href":"https://api.github.com/repos/spyder-ide/spyder/issues/2343/comments"},"review_comments":{"href":"https://api.github.com/repos/spyder-ide/spyder/pulls/2343/comments"},"review_comment":{"href":"https://api.github.com/repos/spyder-ide/spyder/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/spyder-ide/spyder/pulls/2343/commits"},"statuses":{"href":"https://api.github.com/repos/spyder-ide/spyder/statuses/42ff5f1b8b1282343bef2795dfb32c1dd0bdf7ac"}}}}