{"action":"closed","number":129,"pull_request":{"url":"https://api.github.com/repos/enjalot/tributary/pulls/129","id":30235266,"html_url":"https://github.com/enjalot/tributary/pull/129","diff_url":"https://github.com/enjalot/tributary/pull/129.diff","patch_url":"https://github.com/enjalot/tributary/pull/129.patch","issue_url":"https://api.github.com/repos/enjalot/tributary/issues/129","number":129,"state":"closed","locked":false,"title":"Improvements to Tributary for CoffeeScript, Workflow, Error handling","user":{"login":"EmbeddedMike","id":687225,"avatar_url":"https://avatars.githubusercontent.com/u/687225?v=3","gravatar_id":"","url":"https://api.github.com/users/EmbeddedMike","html_url":"https://github.com/EmbeddedMike","followers_url":"https://api.github.com/users/EmbeddedMike/followers","following_url":"https://api.github.com/users/EmbeddedMike/following{/other_user}","gists_url":"https://api.github.com/users/EmbeddedMike/gists{/gist_id}","starred_url":"https://api.github.com/users/EmbeddedMike/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EmbeddedMike/subscriptions","organizations_url":"https://api.github.com/users/EmbeddedMike/orgs","repos_url":"https://api.github.com/users/EmbeddedMike/repos","events_url":"https://api.github.com/users/EmbeddedMike/events{/privacy}","received_events_url":"https://api.github.com/users/EmbeddedMike/received_events","type":"User","site_admin":false},"body":"There are a lot of changes in this pull request, and I apologize for not making this more granular. But here's the package:\r\n\r\n1. The \"execute\" event is triggered many times during startup which can cause problem, for example when you self-reference the editor or reference a plugin before it's loaded. \r\nI set a flag __pluginsLoaded__ in inlet_handlebars to set this flag after the plugins are loaded, and guards in CoffeeContext for these two conditions. I think that loading plugins is the last initialization activity. If there was a way to suppress \"execute\" events until __pluginsLoaded__ is true, that would be better.\r\n\r\n2. Fixed a bug in the inline-console plugin. It assumes that all widgets come from the same context (and thus same editor). Changed the plugin so that the clearLine function matches on line number and on cm editor. The call to clear all widgets was in the \"onrender\" callback. But that is nowhere in the code. I changed it to \"pre:execute\" \r\n\r\n3. Upgraded CoffeeScript to 1.9 both in package.json by copying the browser version into static/lib/coffee-script.js. This permits source maps and generators (with a browser that supports generators) among other things.\r\n\r\n4. CoffeeScript compile error messages now appear in the CoffeeScript inlet editor. Originally done using inline-console's logJack function, but I changed it because error feedback wants to be in two parts a ^ under the starting token column, and the message itself.  __Plan to add CoffeeLint like you have done on JSLint__\r\n\r\n5. Third argument (persist) added to console.logJack so you can have it add a line, rather than replace the current line.\r\n\r\n6. Added console.logHTML so I could write two lines as a unit with arbitrary innerHTML, and a log-html CSS class with different coloring (error-like, for now) and without the indent and \">\" __ I will remove the indent and \">\" properties from the inline-console class CSS__\r\n\r\n7. CoffeeScript runtime error messages now appear in the CoffeeScript inlet editor. The code for this has a bug which I will fix shortly. If the error is in a line in the inlet script, then the error is displayed at the right place. If the error is in a called routine, it is displayed on the first line in the inlet. It should display the error at the line where the call was done.\r\n\r\n7. When using the CoffeeScript editor, If the word 'debugger' appears on its own line in the JS then sourceMaps are added to the compiled coffeescript. This lets you debug in coffeescript rather than JS. __This should really be done by messing with the tree, as you are doing with console.log in the plugin. __ Note: the reason I do it only when debugger is in the code is that the name of the file has to be changed each time, because Chrome (at least) treats each instance separately and does not get rid of old instances. \r\n\r\n8. `context` argument added to evaluated CoffeeScript function. This lets me modify some of the extension methods that I've created from within Tributary.\r\n\r\n8. Improved workflow. Created shell script `runtributary` to watch the server and monitor files. If the server.js file or settings.js are changed, then the server is restarted. If any of the src files are changed then the current page is reloaded. More complete documentation is in `static/reload/README.md` I will add this information to the Wiki later.\r\n\r\n   ","created_at":"2015-03-01T02:11:00Z","updated_at":"2015-03-13T04:40:15Z","closed_at":"2015-03-13T04:40:15Z","merged_at":"2015-03-13T04:40:15Z","merge_commit_sha":"107ac6376807af8eaf34630b201112b13a52f6f6","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/enjalot/tributary/pulls/129/commits","review_comments_url":"https://api.github.com/repos/enjalot/tributary/pulls/129/comments","review_comment_url":"https://api.github.com/repos/enjalot/tributary/pulls/comments{/number}","comments_url":"https://api.github.com/repos/enjalot/tributary/issues/129/comments","statuses_url":"https://api.github.com/repos/enjalot/tributary/statuses/a8868b16cf91e7870dbbbfb16ab3b6f1917fa196","head":{"label":"EmbeddedMike:master","ref":"master","sha":"a8868b16cf91e7870dbbbfb16ab3b6f1917fa196","user":{"login":"EmbeddedMike","id":687225,"avatar_url":"https://avatars.githubusercontent.com/u/687225?v=3","gravatar_id":"","url":"https://api.github.com/users/EmbeddedMike","html_url":"https://github.com/EmbeddedMike","followers_url":"https://api.github.com/users/EmbeddedMike/followers","following_url":"https://api.github.com/users/EmbeddedMike/following{/other_user}","gists_url":"https://api.github.com/users/EmbeddedMike/gists{/gist_id}","starred_url":"https://api.github.com/users/EmbeddedMike/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EmbeddedMike/subscriptions","organizations_url":"https://api.github.com/users/EmbeddedMike/orgs","repos_url":"https://api.github.com/users/EmbeddedMike/repos","events_url":"https://api.github.com/users/EmbeddedMike/events{/privacy}","received_events_url":"https://api.github.com/users/EmbeddedMike/received_events","type":"User","site_admin":false},"repo":{"id":29551752,"name":"tributary","full_name":"EmbeddedMike/tributary","owner":{"login":"EmbeddedMike","id":687225,"avatar_url":"https://avatars.githubusercontent.com/u/687225?v=3","gravatar_id":"","url":"https://api.github.com/users/EmbeddedMike","html_url":"https://github.com/EmbeddedMike","followers_url":"https://api.github.com/users/EmbeddedMike/followers","following_url":"https://api.github.com/users/EmbeddedMike/following{/other_user}","gists_url":"https://api.github.com/users/EmbeddedMike/gists{/gist_id}","starred_url":"https://api.github.com/users/EmbeddedMike/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/EmbeddedMike/subscriptions","organizations_url":"https://api.github.com/users/EmbeddedMike/orgs","repos_url":"https://api.github.com/users/EmbeddedMike/repos","events_url":"https://api.github.com/users/EmbeddedMike/events{/privacy}","received_events_url":"https://api.github.com/users/EmbeddedMike/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/EmbeddedMike/tributary","description":"rapid prototyping with d3.js","fork":true,"url":"https://api.github.com/repos/EmbeddedMike/tributary","forks_url":"https://api.github.com/repos/EmbeddedMike/tributary/forks","keys_url":"https://api.github.com/repos/EmbeddedMike/tributary/keys{/key_id}","collaborators_url":"https://api.github.com/repos/EmbeddedMike/tributary/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/EmbeddedMike/tributary/teams","hooks_url":"https://api.github.com/repos/EmbeddedMike/tributary/hooks","issue_events_url":"https://api.github.com/repos/EmbeddedMike/tributary/issues/events{/number}","events_url":"https://api.github.com/repos/EmbeddedMike/tributary/events","assignees_url":"https://api.github.com/repos/EmbeddedMike/tributary/assignees{/user}","branches_url":"https://api.github.com/repos/EmbeddedMike/tributary/branches{/branch}","tags_url":"https://api.github.com/repos/EmbeddedMike/tributary/tags","blobs_url":"https://api.github.com/repos/EmbeddedMike/tributary/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/EmbeddedMike/tributary/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/EmbeddedMike/tributary/git/refs{/sha}","trees_url":"https://api.github.com/repos/EmbeddedMike/tributary/git/trees{/sha}","statuses_url":"https://api.github.com/repos/EmbeddedMike/tributary/statuses/{sha}","languages_url":"https://api.github.com/repos/EmbeddedMike/tributary/languages","stargazers_url":"https://api.github.com/repos/EmbeddedMike/tributary/stargazers","contributors_url":"https://api.github.com/repos/EmbeddedMike/tributary/contributors","subscribers_url":"https://api.github.com/repos/EmbeddedMike/tributary/subscribers","subscription_url":"https://api.github.com/repos/EmbeddedMike/tributary/subscription","commits_url":"https://api.github.com/repos/EmbeddedMike/tributary/commits{/sha}","git_commits_url":"https://api.github.com/repos/EmbeddedMike/tributary/git/commits{/sha}","comments_url":"https://api.github.com/repos/EmbeddedMike/tributary/comments{/number}","issue_comment_url":"https://api.github.com/repos/EmbeddedMike/tributary/issues/comments{/number}","contents_url":"https://api.github.com/repos/EmbeddedMike/tributary/contents/{+path}","compare_url":"https://api.github.com/repos/EmbeddedMike/tributary/compare/{base}...{head}","merges_url":"https://api.github.com/repos/EmbeddedMike/tributary/merges","archive_url":"https://api.github.com/repos/EmbeddedMike/tributary/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/EmbeddedMike/tributary/downloads","issues_url":"https://api.github.com/repos/EmbeddedMike/tributary/issues{/number}","pulls_url":"https://api.github.com/repos/EmbeddedMike/tributary/pulls{/number}","milestones_url":"https://api.github.com/repos/EmbeddedMike/tributary/milestones{/number}","notifications_url":"https://api.github.com/repos/EmbeddedMike/tributary/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/EmbeddedMike/tributary/labels{/name}","releases_url":"https://api.github.com/repos/EmbeddedMike/tributary/releases{/id}","created_at":"2015-01-20T20:59:17Z","updated_at":"2015-03-01T01:41:28Z","pushed_at":"2015-03-01T01:41:28Z","git_url":"git://github.com/EmbeddedMike/tributary.git","ssh_url":"git@github.com:EmbeddedMike/tributary.git","clone_url":"https://github.com/EmbeddedMike/tributary.git","svn_url":"https://github.com/EmbeddedMike/tributary","homepage":"http://tributary.io","size":10812,"stargazers_count":0,"watchers_count":0,"language":"JavaScript","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":"enjalot:master","ref":"master","sha":"0a54a1a628b959914b57411f2e7012fa2a926406","user":{"login":"enjalot","id":96189,"avatar_url":"https://avatars.githubusercontent.com/u/96189?v=3","gravatar_id":"","url":"https://api.github.com/users/enjalot","html_url":"https://github.com/enjalot","followers_url":"https://api.github.com/users/enjalot/followers","following_url":"https://api.github.com/users/enjalot/following{/other_user}","gists_url":"https://api.github.com/users/enjalot/gists{/gist_id}","starred_url":"https://api.github.com/users/enjalot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/enjalot/subscriptions","organizations_url":"https://api.github.com/users/enjalot/orgs","repos_url":"https://api.github.com/users/enjalot/repos","events_url":"https://api.github.com/users/enjalot/events{/privacy}","received_events_url":"https://api.github.com/users/enjalot/received_events","type":"User","site_admin":false},"repo":{"id":3745075,"name":"tributary","full_name":"enjalot/tributary","owner":{"login":"enjalot","id":96189,"avatar_url":"https://avatars.githubusercontent.com/u/96189?v=3","gravatar_id":"","url":"https://api.github.com/users/enjalot","html_url":"https://github.com/enjalot","followers_url":"https://api.github.com/users/enjalot/followers","following_url":"https://api.github.com/users/enjalot/following{/other_user}","gists_url":"https://api.github.com/users/enjalot/gists{/gist_id}","starred_url":"https://api.github.com/users/enjalot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/enjalot/subscriptions","organizations_url":"https://api.github.com/users/enjalot/orgs","repos_url":"https://api.github.com/users/enjalot/repos","events_url":"https://api.github.com/users/enjalot/events{/privacy}","received_events_url":"https://api.github.com/users/enjalot/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/enjalot/tributary","description":"rapid prototyping with d3.js","fork":false,"url":"https://api.github.com/repos/enjalot/tributary","forks_url":"https://api.github.com/repos/enjalot/tributary/forks","keys_url":"https://api.github.com/repos/enjalot/tributary/keys{/key_id}","collaborators_url":"https://api.github.com/repos/enjalot/tributary/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/enjalot/tributary/teams","hooks_url":"https://api.github.com/repos/enjalot/tributary/hooks","issue_events_url":"https://api.github.com/repos/enjalot/tributary/issues/events{/number}","events_url":"https://api.github.com/repos/enjalot/tributary/events","assignees_url":"https://api.github.com/repos/enjalot/tributary/assignees{/user}","branches_url":"https://api.github.com/repos/enjalot/tributary/branches{/branch}","tags_url":"https://api.github.com/repos/enjalot/tributary/tags","blobs_url":"https://api.github.com/repos/enjalot/tributary/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/enjalot/tributary/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/enjalot/tributary/git/refs{/sha}","trees_url":"https://api.github.com/repos/enjalot/tributary/git/trees{/sha}","statuses_url":"https://api.github.com/repos/enjalot/tributary/statuses/{sha}","languages_url":"https://api.github.com/repos/enjalot/tributary/languages","stargazers_url":"https://api.github.com/repos/enjalot/tributary/stargazers","contributors_url":"https://api.github.com/repos/enjalot/tributary/contributors","subscribers_url":"https://api.github.com/repos/enjalot/tributary/subscribers","subscription_url":"https://api.github.com/repos/enjalot/tributary/subscription","commits_url":"https://api.github.com/repos/enjalot/tributary/commits{/sha}","git_commits_url":"https://api.github.com/repos/enjalot/tributary/git/commits{/sha}","comments_url":"https://api.github.com/repos/enjalot/tributary/comments{/number}","issue_comment_url":"https://api.github.com/repos/enjalot/tributary/issues/comments{/number}","contents_url":"https://api.github.com/repos/enjalot/tributary/contents/{+path}","compare_url":"https://api.github.com/repos/enjalot/tributary/compare/{base}...{head}","merges_url":"https://api.github.com/repos/enjalot/tributary/merges","archive_url":"https://api.github.com/repos/enjalot/tributary/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/enjalot/tributary/downloads","issues_url":"https://api.github.com/repos/enjalot/tributary/issues{/number}","pulls_url":"https://api.github.com/repos/enjalot/tributary/pulls{/number}","milestones_url":"https://api.github.com/repos/enjalot/tributary/milestones{/number}","notifications_url":"https://api.github.com/repos/enjalot/tributary/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/enjalot/tributary/labels{/name}","releases_url":"https://api.github.com/repos/enjalot/tributary/releases{/id}","created_at":"2012-03-17T02:42:38Z","updated_at":"2015-03-08T22:57:03Z","pushed_at":"2015-03-13T04:40:15Z","git_url":"git://github.com/enjalot/tributary.git","ssh_url":"git@github.com:enjalot/tributary.git","clone_url":"https://github.com/enjalot/tributary.git","svn_url":"https://github.com/enjalot/tributary","homepage":"http://tributary.io","size":11910,"stargazers_count":506,"watchers_count":506,"language":"JavaScript","has_issues":true,"has_downloads":true,"has_wiki":true,"has_pages":false,"forks_count":61,"mirror_url":null,"open_issues_count":44,"forks":61,"open_issues":44,"watchers":506,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/enjalot/tributary/pulls/129"},"html":{"href":"https://github.com/enjalot/tributary/pull/129"},"issue":{"href":"https://api.github.com/repos/enjalot/tributary/issues/129"},"comments":{"href":"https://api.github.com/repos/enjalot/tributary/issues/129/comments"},"review_comments":{"href":"https://api.github.com/repos/enjalot/tributary/pulls/129/comments"},"review_comment":{"href":"https://api.github.com/repos/enjalot/tributary/pulls/comments{/number}"},"commits":{"href":"https://api.github.com/repos/enjalot/tributary/pulls/129/commits"},"statuses":{"href":"https://api.github.com/repos/enjalot/tributary/statuses/a8868b16cf91e7870dbbbfb16ab3b6f1917fa196"}},"merged":true,"mergeable":null,"mergeable_state":"unknown","merged_by":{"login":"enjalot","id":96189,"avatar_url":"https://avatars.githubusercontent.com/u/96189?v=3","gravatar_id":"","url":"https://api.github.com/users/enjalot","html_url":"https://github.com/enjalot","followers_url":"https://api.github.com/users/enjalot/followers","following_url":"https://api.github.com/users/enjalot/following{/other_user}","gists_url":"https://api.github.com/users/enjalot/gists{/gist_id}","starred_url":"https://api.github.com/users/enjalot/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/enjalot/subscriptions","organizations_url":"https://api.github.com/users/enjalot/orgs","repos_url":"https://api.github.com/users/enjalot/repos","events_url":"https://api.github.com/users/enjalot/events{/privacy}","received_events_url":"https://api.github.com/users/enjalot/received_events","type":"User","site_admin":false},"comments":4,"review_comments":0,"commits":4,"additions":308,"deletions":79,"changed_files":14}}