From df996695c8ee8ff9f8918cc0fbbeeea7cf41c69d Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 10:56:18 -0800 Subject: [PATCH 01/62] Upgrade to language-c@0.5.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3cd19c39e..cca7697d3 100644 --- a/package.json +++ b/package.json @@ -106,7 +106,7 @@ "welcome": "0.4.0", "whitespace": "0.13.0", "wrap-guide": "0.14.0", - "language-c": "0.4.0", + "language-c": "0.5.0", "language-clojure": "0.1.0", "language-coffee-script": "0.7.0", "language-css": "0.3.0", From 523460166fb4982ad1a928c8f618d26951996c9d Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 10:56:29 -0800 Subject: [PATCH 02/62] Upgrade to language-clojure@0.2.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cca7697d3..1c1be98d2 100644 --- a/package.json +++ b/package.json @@ -107,7 +107,7 @@ "whitespace": "0.13.0", "wrap-guide": "0.14.0", "language-c": "0.5.0", - "language-clojure": "0.1.0", + "language-clojure": "0.2.0", "language-coffee-script": "0.7.0", "language-css": "0.3.0", "language-gfm": "0.16.0", From ec6accbc8bc6d3cddb1634c5863899adac6282b9 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 10:58:03 -0800 Subject: [PATCH 03/62] Upgrade to language-coffee-script@0.8.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1c1be98d2..1d349352e 100644 --- a/package.json +++ b/package.json @@ -108,7 +108,7 @@ "wrap-guide": "0.14.0", "language-c": "0.5.0", "language-clojure": "0.2.0", - "language-coffee-script": "0.7.0", + "language-coffee-script": "0.8.0", "language-css": "0.3.0", "language-gfm": "0.16.0", "language-git": "0.4.0", From 408901360f8a57723295847eb6b898f5f1f242ae Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 10:59:13 -0800 Subject: [PATCH 04/62] Upgrade to language-css@0.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1d349352e..354e927f6 100644 --- a/package.json +++ b/package.json @@ -109,7 +109,7 @@ "language-c": "0.5.0", "language-clojure": "0.2.0", "language-coffee-script": "0.8.0", - "language-css": "0.3.0", + "language-css": "0.4.0", "language-gfm": "0.16.0", "language-git": "0.4.0", "language-go": "0.3.0", From 7f826dd005deeefe0b9477a4eff5f08d455ffab4 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:00:13 -0800 Subject: [PATCH 05/62] Upgrade to language-gfm@0.17.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 354e927f6..cd6fb3f66 100644 --- a/package.json +++ b/package.json @@ -110,7 +110,7 @@ "language-clojure": "0.2.0", "language-coffee-script": "0.8.0", "language-css": "0.4.0", - "language-gfm": "0.16.0", + "language-gfm": "0.17.0", "language-git": "0.4.0", "language-go": "0.3.0", "language-html": "0.3.0", From 415c871b8385a04eaf1c6e9f82d6ff4757d81f90 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:01:08 -0800 Subject: [PATCH 06/62] Upgrade to language-git@0.5.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index cd6fb3f66..a2f93b479 100644 --- a/package.json +++ b/package.json @@ -111,7 +111,7 @@ "language-coffee-script": "0.8.0", "language-css": "0.4.0", "language-gfm": "0.17.0", - "language-git": "0.4.0", + "language-git": "0.5.0", "language-go": "0.3.0", "language-html": "0.3.0", "language-hyperlink": "0.3.0", From de241280094a70919cd65ae9ac8a973b4d3e8c90 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:02:45 -0800 Subject: [PATCH 07/62] Upgrade to language-go@0.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a2f93b479..c1a4f00a1 100644 --- a/package.json +++ b/package.json @@ -112,7 +112,7 @@ "language-css": "0.4.0", "language-gfm": "0.17.0", "language-git": "0.5.0", - "language-go": "0.3.0", + "language-go": "0.4.0", "language-html": "0.3.0", "language-hyperlink": "0.3.0", "language-java": "0.3.0", From 4a36d2ee8980142b214036a296e894b7760473e7 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:03:23 -0800 Subject: [PATCH 08/62] Upgrade to language-html@0.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index c1a4f00a1..b56744b8b 100644 --- a/package.json +++ b/package.json @@ -113,7 +113,7 @@ "language-gfm": "0.17.0", "language-git": "0.5.0", "language-go": "0.4.0", - "language-html": "0.3.0", + "language-html": "0.4.0", "language-hyperlink": "0.3.0", "language-java": "0.3.0", "language-javascript": "0.6.0", From 74aceb02fcee449a1358792ae70c781c7d87b480 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:04:42 -0800 Subject: [PATCH 09/62] Upgrade to language-hyperlink@0.5.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b56744b8b..67629d2d9 100644 --- a/package.json +++ b/package.json @@ -114,7 +114,7 @@ "language-git": "0.5.0", "language-go": "0.4.0", "language-html": "0.4.0", - "language-hyperlink": "0.3.0", + "language-hyperlink": "0.5.0", "language-java": "0.3.0", "language-javascript": "0.6.0", "language-json": "0.3.0", From b3c3b551317ad1ec25ab3ef5293f6ffa8f2d0706 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:05:14 -0800 Subject: [PATCH 10/62] Upgrade to language-java@0.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 67629d2d9..b2e27add1 100644 --- a/package.json +++ b/package.json @@ -115,7 +115,7 @@ "language-go": "0.4.0", "language-html": "0.4.0", "language-hyperlink": "0.5.0", - "language-java": "0.3.0", + "language-java": "0.4.0", "language-javascript": "0.6.0", "language-json": "0.3.0", "language-less": "0.2.0", From 2af12a7b7a63011106bb66b4bc5d0b3d1fffdbef Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:06:01 -0800 Subject: [PATCH 11/62] Upgrade to language-javascript@0.7.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b2e27add1..0cfae29b0 100644 --- a/package.json +++ b/package.json @@ -116,7 +116,7 @@ "language-html": "0.4.0", "language-hyperlink": "0.5.0", "language-java": "0.4.0", - "language-javascript": "0.6.0", + "language-javascript": "0.7.0", "language-json": "0.3.0", "language-less": "0.2.0", "language-make": "0.2.0", From 3406b5ee1f69307afb050646fb4b4e5d71eb0801 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:07:33 -0800 Subject: [PATCH 12/62] Upgrade to language-json@0.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0cfae29b0..1ca82fd64 100644 --- a/package.json +++ b/package.json @@ -117,7 +117,7 @@ "language-hyperlink": "0.5.0", "language-java": "0.4.0", "language-javascript": "0.7.0", - "language-json": "0.3.0", + "language-json": "0.4.0", "language-less": "0.2.0", "language-make": "0.2.0", "language-mustache": "0.2.0", From 4c69abc7dbd0f120a403dc25bd53a204a1a2e0f8 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:08:02 -0800 Subject: [PATCH 13/62] Upgrade to language-less@0.3.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1ca82fd64..2a8c22ddc 100644 --- a/package.json +++ b/package.json @@ -118,7 +118,7 @@ "language-java": "0.4.0", "language-javascript": "0.7.0", "language-json": "0.4.0", - "language-less": "0.2.0", + "language-less": "0.3.0", "language-make": "0.2.0", "language-mustache": "0.2.0", "language-objective-c": "0.3.0", From 7f090fdac89e24a37a3622a89a986e7a9a3a2891 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:08:30 -0800 Subject: [PATCH 14/62] Upgrade to language-make@0.3.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 2a8c22ddc..7b84cd3b5 100644 --- a/package.json +++ b/package.json @@ -119,7 +119,7 @@ "language-javascript": "0.7.0", "language-json": "0.4.0", "language-less": "0.3.0", - "language-make": "0.2.0", + "language-make": "0.3.0", "language-mustache": "0.2.0", "language-objective-c": "0.3.0", "language-pegjs": "0.2.0", From 42320c52276490d42c5a9591220602f2a3e1229f Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:09:09 -0800 Subject: [PATCH 15/62] Upgrade to language-mustache@0.3.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 7b84cd3b5..812321f6f 100644 --- a/package.json +++ b/package.json @@ -120,7 +120,7 @@ "language-json": "0.4.0", "language-less": "0.3.0", "language-make": "0.3.0", - "language-mustache": "0.2.0", + "language-mustache": "0.3.0", "language-objective-c": "0.3.0", "language-pegjs": "0.2.0", "language-perl": "0.3.0", From f7ae2807605861be5714ee95269ae943835602a7 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:09:43 -0800 Subject: [PATCH 16/62] Upgrade to language-objective-c@0.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 812321f6f..97acac760 100644 --- a/package.json +++ b/package.json @@ -121,7 +121,7 @@ "language-less": "0.3.0", "language-make": "0.3.0", "language-mustache": "0.3.0", - "language-objective-c": "0.3.0", + "language-objective-c": "0.4.0", "language-pegjs": "0.2.0", "language-perl": "0.3.0", "language-php": "0.4.0", From 60b4554cb30f6a14db8e271baeb5ca46e7925dfa Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:10:26 -0800 Subject: [PATCH 17/62] Upgrade to language-pegjs@0.3.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 97acac760..550da34ff 100644 --- a/package.json +++ b/package.json @@ -122,7 +122,7 @@ "language-make": "0.3.0", "language-mustache": "0.3.0", "language-objective-c": "0.4.0", - "language-pegjs": "0.2.0", + "language-pegjs": "0.3.0", "language-perl": "0.3.0", "language-php": "0.4.0", "language-property-list": "0.3.0", From 67de3ceb5e9f86cd99216e19cc0d3a876e3aa733 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:13:11 -0800 Subject: [PATCH 18/62] Upgrade to language-perl@0.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 550da34ff..a749a30b5 100644 --- a/package.json +++ b/package.json @@ -123,7 +123,7 @@ "language-mustache": "0.3.0", "language-objective-c": "0.4.0", "language-pegjs": "0.3.0", - "language-perl": "0.3.0", + "language-perl": "0.4.0", "language-php": "0.4.0", "language-property-list": "0.3.0", "language-puppet": "0.3.0", From 87b7d9d5e350cd1198906f2c9a025258843f3518 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:13:33 -0800 Subject: [PATCH 19/62] Upgrade to language-php@0.5.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index a749a30b5..5b277a109 100644 --- a/package.json +++ b/package.json @@ -124,7 +124,7 @@ "language-objective-c": "0.4.0", "language-pegjs": "0.3.0", "language-perl": "0.4.0", - "language-php": "0.4.0", + "language-php": "0.5.0", "language-property-list": "0.3.0", "language-puppet": "0.3.0", "language-python": "0.3.0", From 8888de025626f56e10b9c017f7cd1149c3d55349 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:14:02 -0800 Subject: [PATCH 20/62] Upgrade to language-property-list@0.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 5b277a109..500db3c72 100644 --- a/package.json +++ b/package.json @@ -125,7 +125,7 @@ "language-pegjs": "0.3.0", "language-perl": "0.4.0", "language-php": "0.5.0", - "language-property-list": "0.3.0", + "language-property-list": "0.4.0", "language-puppet": "0.3.0", "language-python": "0.3.0", "language-ruby": "0.9.0", From 34732d059ea592008758f1d188fde3bed47fb97c Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:14:47 -0800 Subject: [PATCH 21/62] Upgrade to language-puppet@0.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 500db3c72..21a4dacb4 100644 --- a/package.json +++ b/package.json @@ -126,7 +126,7 @@ "language-perl": "0.4.0", "language-php": "0.5.0", "language-property-list": "0.4.0", - "language-puppet": "0.3.0", + "language-puppet": "0.4.0", "language-python": "0.3.0", "language-ruby": "0.9.0", "language-ruby-on-rails": "0.5.0", From db64dd5426f1f89a93eb915efcd271a26aa81979 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:15:24 -0800 Subject: [PATCH 22/62] Upgrade to language-python@0.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 21a4dacb4..9d03c13e4 100644 --- a/package.json +++ b/package.json @@ -127,7 +127,7 @@ "language-php": "0.5.0", "language-property-list": "0.4.0", "language-puppet": "0.4.0", - "language-python": "0.3.0", + "language-python": "0.4.0", "language-ruby": "0.9.0", "language-ruby-on-rails": "0.5.0", "language-sass": "0.4.0", From 85af8a2225b7803ea5b901e1eff081818ee23b2d Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:15:53 -0800 Subject: [PATCH 23/62] Upgrade to language-ruby@0.10.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 9d03c13e4..62969d50f 100644 --- a/package.json +++ b/package.json @@ -128,7 +128,7 @@ "language-property-list": "0.4.0", "language-puppet": "0.4.0", "language-python": "0.4.0", - "language-ruby": "0.9.0", + "language-ruby": "0.10.0", "language-ruby-on-rails": "0.5.0", "language-sass": "0.4.0", "language-shellscript": "0.3.0", From 4437255f6519d3920da7042c7cade46053b22eb5 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:16:27 -0800 Subject: [PATCH 24/62] Upgrade to language-ruby-on-rails@0.6.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 62969d50f..e1b23b159 100644 --- a/package.json +++ b/package.json @@ -129,7 +129,7 @@ "language-puppet": "0.4.0", "language-python": "0.4.0", "language-ruby": "0.10.0", - "language-ruby-on-rails": "0.5.0", + "language-ruby-on-rails": "0.6.0", "language-sass": "0.4.0", "language-shellscript": "0.3.0", "language-source": "0.3.0", From 0c267f35ef313d22e048d645b2c017ebc97590fc Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:17:03 -0800 Subject: [PATCH 25/62] Upgrade to language-sass@0.5.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e1b23b159..1f52a4852 100644 --- a/package.json +++ b/package.json @@ -130,7 +130,7 @@ "language-python": "0.4.0", "language-ruby": "0.10.0", "language-ruby-on-rails": "0.6.0", - "language-sass": "0.4.0", + "language-sass": "0.5.0", "language-shellscript": "0.3.0", "language-source": "0.3.0", "language-sql": "0.3.0", From bd050a817d177209ac02586f750fd5651577855b Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:17:36 -0800 Subject: [PATCH 26/62] Update to language-shellscript@0.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 1f52a4852..08edbd5fc 100644 --- a/package.json +++ b/package.json @@ -131,7 +131,7 @@ "language-ruby": "0.10.0", "language-ruby-on-rails": "0.6.0", "language-sass": "0.5.0", - "language-shellscript": "0.3.0", + "language-shellscript": "0.4.0", "language-source": "0.3.0", "language-sql": "0.3.0", "language-text": "0.3.0", From a7edf10f1f46a25235bdfa801431ec9d3904e60f Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:18:23 -0800 Subject: [PATCH 27/62] Upgrade to language-source@0.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 08edbd5fc..b74198978 100644 --- a/package.json +++ b/package.json @@ -132,7 +132,7 @@ "language-ruby-on-rails": "0.6.0", "language-sass": "0.5.0", "language-shellscript": "0.4.0", - "language-source": "0.3.0", + "language-source": "0.4.0", "language-sql": "0.3.0", "language-text": "0.3.0", "language-todo": "0.3.0", From 68f190ab9a1e071d7bf209aaebeef14ea87c7c7f Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:19:30 -0800 Subject: [PATCH 28/62] Upgrade to language-sql@0.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b74198978..e7252ba0a 100644 --- a/package.json +++ b/package.json @@ -133,7 +133,7 @@ "language-sass": "0.5.0", "language-shellscript": "0.4.0", "language-source": "0.4.0", - "language-sql": "0.3.0", + "language-sql": "0.4.0", "language-text": "0.3.0", "language-todo": "0.3.0", "language-toml": "0.8.0", From 97951e38ad9df609640b8b8f66a33e12b278cdeb Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:20:17 -0800 Subject: [PATCH 29/62] Upgrade to language-text@0.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index e7252ba0a..b3112fd28 100644 --- a/package.json +++ b/package.json @@ -134,7 +134,7 @@ "language-shellscript": "0.4.0", "language-source": "0.4.0", "language-sql": "0.4.0", - "language-text": "0.3.0", + "language-text": "0.4.0", "language-todo": "0.3.0", "language-toml": "0.8.0", "language-xml": "0.3.0", From 55eff7cd69bad4d3acfdc722e10391638e1db717 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:20:49 -0800 Subject: [PATCH 30/62] Upgrade to language-todo@0.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b3112fd28..614fe89f1 100644 --- a/package.json +++ b/package.json @@ -135,7 +135,7 @@ "language-source": "0.4.0", "language-sql": "0.4.0", "language-text": "0.4.0", - "language-todo": "0.3.0", + "language-todo": "0.4.0", "language-toml": "0.8.0", "language-xml": "0.3.0", "language-yaml": "0.2.0" From dbfcd0c4d142029683ef8e3dab79aa8563dbefe0 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:21:24 -0800 Subject: [PATCH 31/62] Upgrade to language-toml@0.9.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 614fe89f1..95ca70051 100644 --- a/package.json +++ b/package.json @@ -136,7 +136,7 @@ "language-sql": "0.4.0", "language-text": "0.4.0", "language-todo": "0.4.0", - "language-toml": "0.8.0", + "language-toml": "0.9.0", "language-xml": "0.3.0", "language-yaml": "0.2.0" }, From 7d725d55972933f10c895000eb7b699bd3d1d025 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:21:59 -0800 Subject: [PATCH 32/62] Upgrade to language-xml@0.4.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 95ca70051..0550380b3 100644 --- a/package.json +++ b/package.json @@ -137,7 +137,7 @@ "language-text": "0.4.0", "language-todo": "0.4.0", "language-toml": "0.9.0", - "language-xml": "0.3.0", + "language-xml": "0.4.0", "language-yaml": "0.2.0" }, "private": true, From 31480f92cef81b9cde94a8bbe33027d6d24523ae Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:22:24 -0800 Subject: [PATCH 33/62] Upgrade to language-yaml@0.3.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 0550380b3..89498ebf7 100644 --- a/package.json +++ b/package.json @@ -138,7 +138,7 @@ "language-todo": "0.4.0", "language-toml": "0.9.0", "language-xml": "0.4.0", - "language-yaml": "0.2.0" + "language-yaml": "0.3.0" }, "private": true, "scripts": { From fa376d9543026ee1d934644ba7e3b56b341f45a5 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:26:58 -0800 Subject: [PATCH 34/62] Remove TextMatePackage --- src/package.coffee | 20 +++--- src/text-mate-package.coffee | 135 ----------------------------------- 2 files changed, 8 insertions(+), 147 deletions(-) delete mode 100644 src/text-mate-package.coffee diff --git a/src/package.coffee b/src/package.coffee index 7618e80c5..6683872b1 100644 --- a/src/package.coffee +++ b/src/package.coffee @@ -4,21 +4,17 @@ CSON = require 'season' module.exports = class Package @build: (path) -> - TextMatePackage = require './text-mate-package' AtomPackage = require './atom-package' ThemePackage = require './theme-package' - if TextMatePackage.testName(path) - pack = new TextMatePackage(path) - else - try - metadata = @loadMetadata(path) - if metadata.theme - pack = new ThemePackage(path, {metadata}) - else - pack = new AtomPackage(path, {metadata}) - catch e - console.warn "Failed to load package.json '#{basename(path)}'", e.stack ? e + try + metadata = @loadMetadata(path) + if metadata.theme + pack = new ThemePackage(path, {metadata}) + else + pack = new AtomPackage(path, {metadata}) + catch e + console.warn "Failed to load package.json '#{basename(path)}'", e.stack ? e pack diff --git a/src/text-mate-package.coffee b/src/text-mate-package.coffee deleted file mode 100644 index 92bb98bab..000000000 --- a/src/text-mate-package.coffee +++ /dev/null @@ -1,135 +0,0 @@ -Package = require './package' -path = require 'path' -_ = require 'underscore-plus' -fs = require 'fs-plus' -Q = require 'q' - -module.exports = -class TextMatePackage extends Package - @testName: (packageName) -> - packageName = path.basename(packageName) - /(^language-.+)|((\.|_|-)tmbundle$)/.test(packageName) - - @addToActivationPromise = (pack) -> - @activationPromise ?= Q() - @activationPromise = @activationPromise.then => - pack.loadGrammars() - .then -> pack.loadScopedProperties() - .fail (error) -> console.log pack.name, error.stack ? error - - constructor: -> - super - @grammars = [] - @scopedProperties = [] - @metadata = {@name} - - getType: -> 'textmate' - - load: -> - @measure 'loadTime', => - @metadata = Package.loadMetadata(@path, true) - - activate: -> - @measure 'activateTime', => - TextMatePackage.addToActivationPromise(this) - - activateConfig: -> # noop - - deactivate: -> - grammar.deactivate() for grammar in @grammars - atom.syntax.removeProperties(@path) - - loadGrammars: -> - deferred = Q.defer() - fs.isDirectory @getSyntaxesPath(), (isDirectory) => - return deferred.resolve() unless isDirectory - - fs.list @getSyntaxesPath(), ['json', 'cson'], (error, paths) => - if error? - console.log("Error loading grammars of TextMate package '#{@path}':", error.stack, error) - deferred.resolve() - else - promises = paths.map (path) => @loadGrammarAtPath(path) - Q.all(promises).then -> deferred.resolve() - - deferred.promise - - loadGrammarAtPath: (grammarPath) -> - deferred = Q.defer() - atom.syntax.readGrammar grammarPath, (error, grammar) => - if error? - console.log("Error loading grammar at path '#{grammarPath}':", error.stack ? error) - else - @addGrammar(grammar) - deferred.resolve() - - deferred.promise - - addGrammar: (grammar) -> - @grammars.push(grammar) - grammar.activate() - - getGrammars: -> @grammars - - getSyntaxesPath: -> - path.join(@path, "syntaxes") - - getPreferencesPath: -> - path.join(@path, "preferences") - - loadScopedProperties: -> - scopedProperties = [] - - for grammar in @getGrammars() - if properties = @propertiesFromTextMateSettings(grammar) - selector = atom.syntax.cssSelectorFromScopeSelector(grammar.scopeName) - scopedProperties.push({selector, properties}) - - @loadTextMatePreferenceObjects().then (preferenceObjects=[]) => - for {scope, settings} in preferenceObjects - if properties = @propertiesFromTextMateSettings(settings) - selector = atom.syntax.cssSelectorFromScopeSelector(scope) if scope? - scopedProperties.push({selector, properties}) - - @scopedProperties = scopedProperties - for {selector, properties} in @scopedProperties - atom.syntax.addProperties(@path, selector, properties) - - loadTextMatePreferenceObjects: -> - deferred = Q.defer() - fs.isDirectory @getPreferencesPath(), (isDirectory) => - return deferred.resolve() unless isDirectory - fs.list @getPreferencesPath(), (error, paths) => - if error? - console.log("Error loading preferences of TextMate package '#{@path}':", error.stack, error) - deferred.resolve() - else - promises = paths.map (path) => @loadPreferencesAtPath(path) - Q.all(promises).then (preferenceObjects) -> deferred.resolve(preferenceObjects) - - deferred.promise - - loadPreferencesAtPath: (preferencePath) -> - deferred = Q.defer() - fs.readObject preferencePath, (error, preference) -> - if error? - console.warn("Failed to parse preference at path '#{preferencePath}'", error.stack, error) - deferred.resolve(preference) - deferred.promise - - propertiesFromTextMateSettings: (textMateSettings) -> - if textMateSettings.shellVariables - shellVariables = {} - for {name, value} in textMateSettings.shellVariables - shellVariables[name] = value - textMateSettings.shellVariables = shellVariables - - editorProperties = _.compactObject( - commentStart: _.valueForKeyPath(textMateSettings, 'shellVariables.TM_COMMENT_START') - commentEnd: _.valueForKeyPath(textMateSettings, 'shellVariables.TM_COMMENT_END') - increaseIndentPattern: textMateSettings.increaseIndentPattern - decreaseIndentPattern: textMateSettings.decreaseIndentPattern - foldEndPattern: textMateSettings.foldingStopMarker - completions: textMateSettings.completions - ) - { editor: editorProperties } if _.size(editorProperties) > 0 From 2d52f3deaca683cfee30846535a4560e9253bdcd Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:28:24 -0800 Subject: [PATCH 35/62] Rename path variables to packagePath --- src/package.coffee | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/src/package.coffee b/src/package.coffee index 6683872b1..d12fb7cc0 100644 --- a/src/package.coffee +++ b/src/package.coffee @@ -1,43 +1,40 @@ +path = require 'path' CSON = require 'season' -{basename, join} = require 'path' module.exports = class Package - @build: (path) -> + @build: (packagePath) -> AtomPackage = require './atom-package' ThemePackage = require './theme-package' try - metadata = @loadMetadata(path) + metadata = @loadMetadata(packagePath) if metadata.theme - pack = new ThemePackage(path, {metadata}) + pack = new ThemePackage(packagePath, {metadata}) else - pack = new AtomPackage(path, {metadata}) + pack = new AtomPackage(packagePath, {metadata}) catch e - console.warn "Failed to load package.json '#{basename(path)}'", e.stack ? e + console.warn "Failed to load package.json '#{path.basename(packagePath)}'", e.stack ? e pack - @load: (path) -> - pack = @build(path) + @load: (packagePath) -> + pack = @build(packagePath) pack?.load() pack - @loadMetadata: (path, ignoreErrors=false) -> - if metadataPath = CSON.resolve(join(path, 'package')) + @loadMetadata: (packagePath, ignoreErrors=false) -> + if metadataPath = CSON.resolve(path.join(packagePath, 'package')) try metadata = CSON.readFileSync(metadataPath) catch e throw e unless ignoreErrors metadata ?= {} - metadata.name = basename(path) + metadata.name = basename(packagePath) metadata - name: null - path: null - constructor: (@path) -> - @name = basename(@path) + @name = path.basename(@path) enable: -> atom.config.removeAtKeyPath('core.disabledPackages', @metadata.name) From d0dd0a988200dd34a7f406bdf01ccae74f38aa6d Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:29:11 -0800 Subject: [PATCH 36/62] Rename e variables to error --- src/package.coffee | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/package.coffee b/src/package.coffee index d12fb7cc0..9a4de961b 100644 --- a/src/package.coffee +++ b/src/package.coffee @@ -13,8 +13,8 @@ class Package pack = new ThemePackage(packagePath, {metadata}) else pack = new AtomPackage(packagePath, {metadata}) - catch e - console.warn "Failed to load package.json '#{path.basename(packagePath)}'", e.stack ? e + catch error + console.warn "Failed to load package.json '#{path.basename(packagePath)}'", error.stack ? error pack @@ -27,8 +27,8 @@ class Package if metadataPath = CSON.resolve(path.join(packagePath, 'package')) try metadata = CSON.readFileSync(metadataPath) - catch e - throw e unless ignoreErrors + catch error + throw error unless ignoreErrors metadata ?= {} metadata.name = basename(packagePath) metadata From 3f5cd19ddc0e188b6e34e0ca65e20b1e78688c18 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:29:25 -0800 Subject: [PATCH 37/62] Add missing path. prefix --- src/package.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/package.coffee b/src/package.coffee index 9a4de961b..775021cd6 100644 --- a/src/package.coffee +++ b/src/package.coffee @@ -30,7 +30,7 @@ class Package catch error throw error unless ignoreErrors metadata ?= {} - metadata.name = basename(packagePath) + metadata.name = path.basename(packagePath) metadata constructor: (@path) -> From 95e68c8c2b88bed7391238ee572fd539aa3896c2 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:31:20 -0800 Subject: [PATCH 38/62] Store metadata in Package constructor --- src/atom-package.coffee | 4 +--- src/package.coffee | 8 ++++---- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/src/atom-package.coffee b/src/atom-package.coffee index ea9358670..e10800788 100644 --- a/src/atom-package.coffee +++ b/src/atom-package.coffee @@ -15,7 +15,6 @@ class AtomPackage extends Package @stylesheetsDir: 'stylesheets' - metadata: null keymaps: null menus: null stylesheets: null @@ -25,8 +24,7 @@ class AtomPackage extends Package resolvedMainModulePath: false mainModule: null - constructor: (path, {@metadata}) -> - super(path) + constructor: -> @reset() getType: -> 'atom' diff --git a/src/package.coffee b/src/package.coffee index 775021cd6..b2b568cc6 100644 --- a/src/package.coffee +++ b/src/package.coffee @@ -10,9 +10,9 @@ class Package try metadata = @loadMetadata(packagePath) if metadata.theme - pack = new ThemePackage(packagePath, {metadata}) + pack = new ThemePackage(packagePath, metadata) else - pack = new AtomPackage(packagePath, {metadata}) + pack = new AtomPackage(packagePath, metadata) catch error console.warn "Failed to load package.json '#{path.basename(packagePath)}'", error.stack ? error @@ -33,8 +33,8 @@ class Package metadata.name = path.basename(packagePath) metadata - constructor: (@path) -> - @name = path.basename(@path) + constructor: (@path, @metadata) -> + @name = @metadata?.name ? path.basename(@path) enable: -> atom.config.removeAtKeyPath('core.disabledPackages', @metadata.name) From cec35ed7c888fb5764804d887abd0a29ea178451 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:31:44 -0800 Subject: [PATCH 39/62] Use name ivar instead of metadata.name --- src/theme-package.coffee | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/theme-package.coffee b/src/theme-package.coffee index 2d4f611a6..e83f7efcb 100644 --- a/src/theme-package.coffee +++ b/src/theme-package.coffee @@ -8,17 +8,17 @@ class ThemePackage extends AtomPackage getStylesheetType: -> 'theme' enable: -> - atom.config.unshiftAtKeyPath('core.themes', @metadata.name) + atom.config.unshiftAtKeyPath('core.themes', @name) disable: -> - atom.config.removeAtKeyPath('core.themes', @metadata.name) + atom.config.removeAtKeyPath('core.themes', @name) load: -> @measure 'loadTime', => try @metadata ?= Package.loadMetadata(@path) - catch e - console.warn "Failed to load theme named '#{@name}'", e.stack ? e + catch error + console.warn "Failed to load theme named '#{@name}'", error.stack ? error this activate: -> From bb0a31228d327fe491ff51467f733c9474636b4a Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:34:01 -0800 Subject: [PATCH 40/62] Call super from AtomPackage constructor --- src/atom-package.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/src/atom-package.coffee b/src/atom-package.coffee index e10800788..5850d4eed 100644 --- a/src/atom-package.coffee +++ b/src/atom-package.coffee @@ -25,6 +25,7 @@ class AtomPackage extends Package mainModule: null constructor: -> + super @reset() getType: -> 'atom' From 70d8777db60fea0926ab408ce19ba8b71e388384 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 11:43:55 -0800 Subject: [PATCH 41/62] Load grammars asynchronously --- src/atom-package.coffee | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/atom-package.coffee b/src/atom-package.coffee index 5850d4eed..1113cddfa 100644 --- a/src/atom-package.coffee +++ b/src/atom-package.coffee @@ -101,7 +101,10 @@ class AtomPackage extends Package atom.keymap.add(keymapPath, map) for [keymapPath, map] in @keymaps atom.contextMenu.add(menuPath, map['context-menu']) for [menuPath, map] in @menus atom.menu.add(map.menu) for [menuPath, map] in @menus when map.menu + grammar.activate() for grammar in @grammars + @grammarsActivated = true + for [scopedPropertiesPath, selector, properties] in @scopedProperties atom.syntax.addProperties(scopedPropertiesPath, selector, properties) @@ -147,8 +150,16 @@ class AtomPackage extends Package loadGrammars: -> @grammars = [] grammarsDirPath = path.join(@path, 'grammars') - for grammarPath in fs.listSync(grammarsDirPath, ['.json', '.cson']) - @grammars.push(atom.syntax.readGrammarSync(grammarPath)) + fs.list grammarsDirPath, ['.json', '.cson'], (error, grammarPaths=[]) => + @loadGrammar(grammarPath) for grammarPath in grammarPaths + + loadGrammar: (grammarPath) -> + atom.syntax.readGrammar grammarPath, (error, grammar) => + if error? + console.warn("Failed to load grammar: #{grammarPath}", error.stack ? error) + else + @grammars.push(grammar) + grammar.activate() if @grammarsActivated loadScopedProperties: -> @scopedProperties = [] @@ -183,6 +194,7 @@ class AtomPackage extends Package atom.keymap.remove(keymapPath) for [keymapPath] in @keymaps atom.themes.removeStylesheet(stylesheetPath) for [stylesheetPath] in @stylesheets @stylesheetsActivated = false + @grammarsActivated = false reloadStylesheets: -> oldSheets = _.clone(@stylesheets) From 0dd96a073240003f4a1fb39b0de8c519bb156549 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 12:01:37 -0800 Subject: [PATCH 42/62] Load scoped properties asynchronously --- src/atom-package.coffee | 46 +++++++++++++++++++++++------------- src/scoped-properties.coffee | 19 +++++++++++++++ 2 files changed, 48 insertions(+), 17 deletions(-) create mode 100644 src/scoped-properties.coffee diff --git a/src/atom-package.coffee b/src/atom-package.coffee index 1113cddfa..7fd3d5aea 100644 --- a/src/atom-package.coffee +++ b/src/atom-package.coffee @@ -6,6 +6,7 @@ Q = require 'q' {$} = require './space-pen-extensions' CSON = require 'season' {Emitter} = require 'emissary' +ScopedProperties = require './scoped-properties' # Loads and activates a package's main module and resources such as # stylesheets, keymaps, grammar, editor properties, and menus. @@ -105,8 +106,8 @@ class AtomPackage extends Package grammar.activate() for grammar in @grammars @grammarsActivated = true - for [scopedPropertiesPath, selector, properties] in @scopedProperties - atom.syntax.addProperties(scopedPropertiesPath, selector, properties) + scopedProperties.activate() for scopedProperties in @scopedProperties + @scopedPropertiesActivated = true loadKeymaps: -> @keymaps = @getKeymapPaths().map (keymapPath) -> [keymapPath, CSON.readFileSync(keymapPath)] @@ -149,24 +150,34 @@ class AtomPackage extends Package loadGrammars: -> @grammars = [] - grammarsDirPath = path.join(@path, 'grammars') - fs.list grammarsDirPath, ['.json', '.cson'], (error, grammarPaths=[]) => - @loadGrammar(grammarPath) for grammarPath in grammarPaths - loadGrammar: (grammarPath) -> - atom.syntax.readGrammar grammarPath, (error, grammar) => - if error? - console.warn("Failed to load grammar: #{grammarPath}", error.stack ? error) - else - @grammars.push(grammar) - grammar.activate() if @grammarsActivated + loadGrammar = (grammarPath) => + atom.syntax.readGrammar grammarPath, (error, grammar) => + if error? + console.warn("Failed to load grammar: #{grammarPath}", error.stack ? error) + else + @grammars.push(grammar) + grammar.activate() if @grammarsActivated + + grammarsDirPath = path.join(@path, 'grammars') + fs.list grammarsDirPath, ['.json', '.cson'], (error, grammarPaths=[]) -> + loadGrammar(grammarPath) for grammarPath in grammarPaths loadScopedProperties: -> @scopedProperties = [] - scopedPropertiessDirPath = path.join(@path, 'scoped-properties') - for scopedPropertiesPath in fs.listSync(scopedPropertiessDirPath, ['.json', '.cson']) - for selector, properties of fs.readObjectSync(scopedPropertiesPath) - @scopedProperties.push([scopedPropertiesPath, selector, properties]) + + loadScopedPropertiesFile = (scopedPropertiesPath) => + ScopedProperties.load scopedPropertiesPath, (error, scopedProperties) => + if error? + console.warn("Failed to load scoped properties: #{scopedPropertiesPath}", error.stack ? error) + else + @scopedProperties.push(scopedProperties) + scopedProperties.activate() if @scopedPropertiesActivated + + scopedPropertiesDirPath = path.join(@path, 'scoped-properties') + fs.list scopedPropertiesDirPath, ['.json', '.cson'], (error, scopedPropertiesPaths=[]) -> + for scopedPropertiesPath in scopedPropertiesPaths + loadScopedPropertiesFile(scopedPropertiesPath) serialize: -> if @mainActivated @@ -190,11 +201,12 @@ class AtomPackage extends Package deactivateResources: -> grammar.deactivate() for grammar in @grammars - atom.syntax.removeProperties(scopedPropertiesPath) for [scopedPropertiesPath] in @scopedProperties + scopedProperties.deactivate() for scopedProperties in @scopedProperties atom.keymap.remove(keymapPath) for [keymapPath] in @keymaps atom.themes.removeStylesheet(stylesheetPath) for [stylesheetPath] in @stylesheets @stylesheetsActivated = false @grammarsActivated = false + @scopedPropertiesActivated = false reloadStylesheets: -> oldSheets = _.clone(@stylesheets) diff --git a/src/scoped-properties.coffee b/src/scoped-properties.coffee new file mode 100644 index 000000000..57d875a3d --- /dev/null +++ b/src/scoped-properties.coffee @@ -0,0 +1,19 @@ +fs = require 'fs-plus' + +module.exports = +class ScopedProperties + @load: (scopedPropertiesPath, callback) -> + fs.readObject scopedPropertiesPath, (error, scopedProperties={}) -> + if error? + callback(error) + else + callback(null, new ScopedProperties(scopedPropertiesPath, scopedProperties)) + + constructor: (@path, @scopedProperties) -> + + activate: -> + for selector, properties of @scopedProperties + atom.syntax.addProperties(@path, selector, properties) + + deactivate: -> + atom.syntax.removeProperties(@path) From 39762081b1391b40bdcbc882d4b9c2f6243ba13f Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 12:07:21 -0800 Subject: [PATCH 43/62] Upgrade apm for init changes --- vendor/apm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/apm b/vendor/apm index af40a0ed5..cca2320f0 160000 --- a/vendor/apm +++ b/vendor/apm @@ -1 +1 @@ -Subproject commit af40a0ed55a5df3e8f7a7707e17ab2493edb94a3 +Subproject commit cca2320f059170490ee1d792f19361ae2d77f5c2 From 9b3463ef643c031831109c6aed91e49a52c33573 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 12:08:34 -0800 Subject: [PATCH 44/62] Organize requires --- src/atom-package.coffee | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/atom-package.coffee b/src/atom-package.coffee index 7fd3d5aea..425b9367f 100644 --- a/src/atom-package.coffee +++ b/src/atom-package.coffee @@ -1,11 +1,13 @@ -Package = require './package' -fs = require 'fs-plus' path = require 'path' + _ = require 'underscore-plus' -Q = require 'q' -{$} = require './space-pen-extensions' CSON = require 'season' +fs = require 'fs-plus' {Emitter} = require 'emissary' +Q = require 'q' + +{$} = require './space-pen-extensions' +Package = require './package' ScopedProperties = require './scoped-properties' # Loads and activates a package's main module and resources such as From eb885357e6a858b4535955413cf8817b85f56137 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 12:10:35 -0800 Subject: [PATCH 45/62] Memoize AtomPackage/ThemePackage --- src/package.coffee | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/package.coffee b/src/package.coffee index b2b568cc6..7c59219f0 100644 --- a/src/package.coffee +++ b/src/package.coffee @@ -1,11 +1,14 @@ path = require 'path' CSON = require 'season' +AtomPackage = null +ThemePackage = null + module.exports = class Package @build: (packagePath) -> - AtomPackage = require './atom-package' - ThemePackage = require './theme-package' + AtomPackage ?= require './atom-package' + ThemePackage ?= require './theme-package' try metadata = @loadMetadata(packagePath) From 50a27e99bb93d1b2c96249e144103ecee9c3da03 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 12:43:29 -0800 Subject: [PATCH 46/62] Chain activate promise with grammar/properties promises --- src/atom-package.coffee | 47 ++++++++++++++++++++++++----------------- 1 file changed, 28 insertions(+), 19 deletions(-) diff --git a/src/atom-package.coffee b/src/atom-package.coffee index 425b9367f..5d2f70f7c 100644 --- a/src/atom-package.coffee +++ b/src/atom-package.coffee @@ -1,6 +1,7 @@ path = require 'path' _ = require 'underscore-plus' +async = require 'async' CSON = require 'season' fs = require 'fs-plus' {Emitter} = require 'emissary' @@ -43,8 +44,8 @@ class AtomPackage extends Package @loadKeymaps() @loadMenus() @loadStylesheets() - @loadGrammars() - @loadScopedProperties() + @grammarsPromise = @loadGrammars() + @scopedPropertiesPromise = @loadScopedProperties() @requireMainModule() unless @metadata.activationEvents? catch e @@ -59,17 +60,16 @@ class AtomPackage extends Package @scopedProperties = [] activate: -> - return @activationDeferred.promise if @activationDeferred? + unless @activationDeferred? + @activationDeferred = Q.defer() + @measure 'activateTime', => + @activateResources() + if @metadata.activationEvents? + @subscribeToActivationEvents() + else + @activateNow() - @activationDeferred = Q.defer() - @measure 'activateTime', => - @activateResources() - if @metadata.activationEvents? - @subscribeToActivationEvents() - else - @activateNow() - - @activationDeferred.promise + @grammarsPromise.then(@scopedPropertiesPromise).then(@activationDeferred.promise) activateNow: -> try @@ -153,33 +153,38 @@ class AtomPackage extends Package loadGrammars: -> @grammars = [] - loadGrammar = (grammarPath) => + loadGrammar = (grammarPath, callback) => atom.syntax.readGrammar grammarPath, (error, grammar) => if error? console.warn("Failed to load grammar: #{grammarPath}", error.stack ? error) else @grammars.push(grammar) grammar.activate() if @grammarsActivated + callback() + deferred = Q.defer() grammarsDirPath = path.join(@path, 'grammars') - fs.list grammarsDirPath, ['.json', '.cson'], (error, grammarPaths=[]) -> - loadGrammar(grammarPath) for grammarPath in grammarPaths + fs.list grammarsDirPath, ['json', 'cson'], (error, grammarPaths=[]) -> + async.each grammarPaths, loadGrammar, -> deferred.resolve() + deferred.promise loadScopedProperties: -> @scopedProperties = [] - loadScopedPropertiesFile = (scopedPropertiesPath) => + loadScopedPropertiesFile = (scopedPropertiesPath, callback) => ScopedProperties.load scopedPropertiesPath, (error, scopedProperties) => if error? console.warn("Failed to load scoped properties: #{scopedPropertiesPath}", error.stack ? error) else @scopedProperties.push(scopedProperties) scopedProperties.activate() if @scopedPropertiesActivated + callback() + deferred = Q.defer() scopedPropertiesDirPath = path.join(@path, 'scoped-properties') - fs.list scopedPropertiesDirPath, ['.json', '.cson'], (error, scopedPropertiesPaths=[]) -> - for scopedPropertiesPath in scopedPropertiesPaths - loadScopedPropertiesFile(scopedPropertiesPath) + fs.list scopedPropertiesDirPath, ['json', 'cson'], (error, scopedPropertiesPaths=[]) -> + async.each scopedPropertiesPaths, loadScopedPropertiesFile, -> deferred.resolve() + deferred.promise serialize: -> if @mainActivated @@ -191,6 +196,10 @@ class AtomPackage extends Package deactivate: -> @activationDeferred?.reject() @activationDeferred = null + @grammarPromise?.reject() + @grammarPromise = null + @scopedPropertiesPromise?.reject() + @scopedPropertiesPromise = null @unsubscribeFromActivationEvents() @deactivateResources() @deactivateConfig() From 3f8d9a4c47e096069653459bf6fb6e5e1cb0f8ac Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 12:59:03 -0800 Subject: [PATCH 47/62] Combine AtomPackage and Package --- spec/atom-spec.coffee | 9 +- ...ackage-spec.coffee => package-spec.coffee} | 16 +- spec/theme-manager-spec.coffee | 2 +- src/atom-package.coffee | 288 ----------------- src/package-manager.coffee | 14 +- src/package.coffee | 300 ++++++++++++++++-- src/theme-manager.coffee | 4 +- src/theme-package.coffee | 4 +- 8 files changed, 306 insertions(+), 331 deletions(-) rename spec/{atom-package-spec.coffee => package-spec.coffee} (89%) delete mode 100644 src/atom-package.coffee diff --git a/spec/atom-spec.coffee b/spec/atom-spec.coffee index 038318b07..eae9cf83e 100644 --- a/spec/atom-spec.coffee +++ b/spec/atom-spec.coffee @@ -1,7 +1,7 @@ {$, $$, fs, WorkspaceView} = require 'atom' Exec = require('child_process').exec path = require 'path' -AtomPackage = require '../src/atom-package' +Package = require '../src/package' ThemeManager = require '../src/theme-manager' describe "the `atom` global", -> @@ -50,7 +50,7 @@ describe "the `atom` global", -> describe "atom packages", -> describe "when called multiple times", -> it "it only calls activate on the package once", -> - spyOn(AtomPackage.prototype, 'activateNow').andCallThrough() + spyOn(Package.prototype, 'activateNow').andCallThrough() atom.packages.activatePackage('package-with-index') atom.packages.activatePackage('package-with-index') @@ -58,7 +58,7 @@ describe "the `atom` global", -> atom.packages.activatePackage('package-with-index') runs -> - expect(AtomPackage.prototype.activateNow.callCount).toBe 1 + expect(Package.prototype.activateNow.callCount).toBe 1 describe "when the package has a main module", -> describe "when the metadata specifies a main module path˜", -> @@ -97,8 +97,7 @@ describe "the `atom` global", -> beforeEach -> mainModule = require './fixtures/packages/package-with-activation-events/index' spyOn(mainModule, 'activate').andCallThrough() - AtomPackage = require '../src/atom-package' - spyOn(AtomPackage.prototype, 'requireMainModule').andCallThrough() + spyOn(Package.prototype, 'requireMainModule').andCallThrough() promise = atom.packages.activatePackage('package-with-activation-events') diff --git a/spec/atom-package-spec.coffee b/spec/package-spec.coffee similarity index 89% rename from spec/atom-package-spec.coffee rename to spec/package-spec.coffee index 2057294e4..e5b473930 100644 --- a/spec/atom-package-spec.coffee +++ b/spec/package-spec.coffee @@ -1,8 +1,8 @@ {$} = require 'atom' path = require 'path' -Package = require '../src/package' +ThemePackage = require '../src/theme-package' -describe "AtomPackage", -> +describe "Package", -> describe "theme", -> theme = null @@ -16,14 +16,14 @@ describe "AtomPackage", -> it "loads and applies css", -> expect($(".editor").css("padding-bottom")).not.toBe "1234px" themePath = atom.project.resolve('packages/theme-with-index-css') - theme = Package.load(themePath) + theme = new ThemePackage(themePath) theme.activate() expect($(".editor").css("padding-top")).toBe "1234px" it "parses, loads and applies less", -> expect($(".editor").css("padding-bottom")).not.toBe "1234px" themePath = atom.project.resolve('packages/theme-with-index-less') - theme = Package.load(themePath) + theme = new ThemePackage(themePath) theme.activate() expect($(".editor").css("padding-top")).toBe "4321px" @@ -34,7 +34,7 @@ describe "AtomPackage", -> expect($(".editor").css("padding-bottom")).not.toBe("103px") themePath = atom.project.resolve('packages/theme-with-package-file') - theme = Package.load(themePath) + theme = new ThemePackage(themePath) theme.activate() expect($(".editor").css("padding-top")).toBe("101px") expect($(".editor").css("padding-right")).toBe("102px") @@ -47,7 +47,7 @@ describe "AtomPackage", -> expect($(".editor").css("padding-bottom")).not.toBe "30px" themePath = atom.project.resolve('packages/theme-without-package-file') - theme = Package.load(themePath) + theme = new ThemePackage(themePath) theme.activate() expect($(".editor").css("padding-top")).toBe "10px" expect($(".editor").css("padding-right")).toBe "20px" @@ -56,7 +56,7 @@ describe "AtomPackage", -> describe "reloading a theme", -> beforeEach -> themePath = atom.project.resolve('packages/theme-with-package-file') - theme = Package.load(themePath) + theme = new ThemePackage(themePath) theme.activate() it "reloads without readding to the stylesheets list", -> @@ -67,7 +67,7 @@ describe "AtomPackage", -> describe "events", -> beforeEach -> themePath = atom.project.resolve('packages/theme-with-package-file') - theme = Package.load(themePath) + theme = new ThemePackage(themePath) theme.activate() it "deactivated event fires on .deactivate()", -> diff --git a/spec/theme-manager-spec.coffee b/spec/theme-manager-spec.coffee index 384844e93..8bd6f1f89 100644 --- a/spec/theme-manager-spec.coffee +++ b/spec/theme-manager-spec.coffee @@ -4,7 +4,7 @@ path = require 'path' temp = require 'temp' ThemeManager = require '../src/theme-manager' -AtomPackage = require '../src/atom-package' +Package = require '../src/package' describe "ThemeManager", -> themeManager = null diff --git a/src/atom-package.coffee b/src/atom-package.coffee deleted file mode 100644 index 5d2f70f7c..000000000 --- a/src/atom-package.coffee +++ /dev/null @@ -1,288 +0,0 @@ -path = require 'path' - -_ = require 'underscore-plus' -async = require 'async' -CSON = require 'season' -fs = require 'fs-plus' -{Emitter} = require 'emissary' -Q = require 'q' - -{$} = require './space-pen-extensions' -Package = require './package' -ScopedProperties = require './scoped-properties' - -# Loads and activates a package's main module and resources such as -# stylesheets, keymaps, grammar, editor properties, and menus. -module.exports = -class AtomPackage extends Package - Emitter.includeInto(this) - - @stylesheetsDir: 'stylesheets' - - keymaps: null - menus: null - stylesheets: null - grammars: null - scopedProperties: null - mainModulePath: null - resolvedMainModulePath: false - mainModule: null - - constructor: -> - super - @reset() - - getType: -> 'atom' - - getStylesheetType: -> 'bundled' - - load: -> - @measure 'loadTime', => - try - @metadata ?= Package.loadMetadata(@path) - - @loadKeymaps() - @loadMenus() - @loadStylesheets() - @grammarsPromise = @loadGrammars() - @scopedPropertiesPromise = @loadScopedProperties() - @requireMainModule() unless @metadata.activationEvents? - - catch e - console.warn "Failed to load package named '#{@name}'", e.stack ? e - this - - reset: -> - @stylesheets = [] - @keymaps = [] - @menus = [] - @grammars = [] - @scopedProperties = [] - - activate: -> - unless @activationDeferred? - @activationDeferred = Q.defer() - @measure 'activateTime', => - @activateResources() - if @metadata.activationEvents? - @subscribeToActivationEvents() - else - @activateNow() - - @grammarsPromise.then(@scopedPropertiesPromise).then(@activationDeferred.promise) - - activateNow: -> - try - @activateConfig() - @activateStylesheets() - if @requireMainModule() - @mainModule.activate(atom.packages.getPackageState(@name) ? {}) - @mainActivated = true - catch e - console.warn "Failed to activate package named '#{@name}'", e.stack - - @activationDeferred.resolve() - - activateConfig: -> - return if @configActivated - - @requireMainModule() - if @mainModule? - atom.config.setDefaults(@name, @mainModule.configDefaults) - @mainModule.activateConfig?() - @configActivated = true - - activateStylesheets: -> - return if @stylesheetsActivated - - type = @getStylesheetType() - for [stylesheetPath, content] in @stylesheets - atom.themes.applyStylesheet(stylesheetPath, content, type) - @stylesheetsActivated = true - - activateResources: -> - atom.keymap.add(keymapPath, map) for [keymapPath, map] in @keymaps - atom.contextMenu.add(menuPath, map['context-menu']) for [menuPath, map] in @menus - atom.menu.add(map.menu) for [menuPath, map] in @menus when map.menu - - grammar.activate() for grammar in @grammars - @grammarsActivated = true - - scopedProperties.activate() for scopedProperties in @scopedProperties - @scopedPropertiesActivated = true - - loadKeymaps: -> - @keymaps = @getKeymapPaths().map (keymapPath) -> [keymapPath, CSON.readFileSync(keymapPath)] - - loadMenus: -> - @menus = @getMenuPaths().map (menuPath) -> [menuPath, CSON.readFileSync(menuPath)] - - getKeymapPaths: -> - keymapsDirPath = path.join(@path, 'keymaps') - if @metadata.keymaps - @metadata.keymaps.map (name) -> fs.resolve(keymapsDirPath, name, ['json', 'cson', '']) - else - fs.listSync(keymapsDirPath, ['cson', 'json']) - - getMenuPaths: -> - menusDirPath = path.join(@path, 'menus') - if @metadata.menus - @metadata.menus.map (name) -> fs.resolve(menusDirPath, name, ['json', 'cson', '']) - else - fs.listSync(menusDirPath, ['cson', 'json']) - - loadStylesheets: -> - @stylesheets = @getStylesheetPaths().map (stylesheetPath) -> - [stylesheetPath, atom.themes.loadStylesheet(stylesheetPath)] - - getStylesheetsPath: -> - path.join(@path, @constructor.stylesheetsDir) - - getStylesheetPaths: -> - stylesheetDirPath = @getStylesheetsPath() - - if @metadata.stylesheetMain - [fs.resolve(@path, @metadata.stylesheetMain)] - else if @metadata.stylesheets - @metadata.stylesheets.map (name) -> fs.resolve(stylesheetDirPath, name, ['css', 'less', '']) - else if indexStylesheet = fs.resolve(@path, 'index', ['css', 'less']) - [indexStylesheet] - else - fs.listSync(stylesheetDirPath, ['css', 'less']) - - loadGrammars: -> - @grammars = [] - - loadGrammar = (grammarPath, callback) => - atom.syntax.readGrammar grammarPath, (error, grammar) => - if error? - console.warn("Failed to load grammar: #{grammarPath}", error.stack ? error) - else - @grammars.push(grammar) - grammar.activate() if @grammarsActivated - callback() - - deferred = Q.defer() - grammarsDirPath = path.join(@path, 'grammars') - fs.list grammarsDirPath, ['json', 'cson'], (error, grammarPaths=[]) -> - async.each grammarPaths, loadGrammar, -> deferred.resolve() - deferred.promise - - loadScopedProperties: -> - @scopedProperties = [] - - loadScopedPropertiesFile = (scopedPropertiesPath, callback) => - ScopedProperties.load scopedPropertiesPath, (error, scopedProperties) => - if error? - console.warn("Failed to load scoped properties: #{scopedPropertiesPath}", error.stack ? error) - else - @scopedProperties.push(scopedProperties) - scopedProperties.activate() if @scopedPropertiesActivated - callback() - - deferred = Q.defer() - scopedPropertiesDirPath = path.join(@path, 'scoped-properties') - fs.list scopedPropertiesDirPath, ['json', 'cson'], (error, scopedPropertiesPaths=[]) -> - async.each scopedPropertiesPaths, loadScopedPropertiesFile, -> deferred.resolve() - deferred.promise - - serialize: -> - if @mainActivated - try - @mainModule?.serialize?() - catch e - console.error "Error serializing package '#{@name}'", e.stack - - deactivate: -> - @activationDeferred?.reject() - @activationDeferred = null - @grammarPromise?.reject() - @grammarPromise = null - @scopedPropertiesPromise?.reject() - @scopedPropertiesPromise = null - @unsubscribeFromActivationEvents() - @deactivateResources() - @deactivateConfig() - @mainModule?.deactivate?() if @mainActivated - @emit('deactivated') - - deactivateConfig: -> - @mainModule?.deactivateConfig?() - @configActivated = false - - deactivateResources: -> - grammar.deactivate() for grammar in @grammars - scopedProperties.deactivate() for scopedProperties in @scopedProperties - atom.keymap.remove(keymapPath) for [keymapPath] in @keymaps - atom.themes.removeStylesheet(stylesheetPath) for [stylesheetPath] in @stylesheets - @stylesheetsActivated = false - @grammarsActivated = false - @scopedPropertiesActivated = false - - reloadStylesheets: -> - oldSheets = _.clone(@stylesheets) - @loadStylesheets() - atom.themes.removeStylesheet(stylesheetPath) for [stylesheetPath] in oldSheets - @reloadStylesheet(stylesheetPath, content) for [stylesheetPath, content] in @stylesheets - - reloadStylesheet: (stylesheetPath, content) -> - atom.themes.applyStylesheet(stylesheetPath, content, @getStylesheetType()) - - requireMainModule: -> - return @mainModule if @mainModule? - mainModulePath = @getMainModulePath() - @mainModule = require(mainModulePath) if fs.isFileSync(mainModulePath) - - getMainModulePath: -> - return @mainModulePath if @resolvedMainModulePath - @resolvedMainModulePath = true - mainModulePath = - if @metadata.main - path.join(@path, @metadata.main) - else - path.join(@path, 'index') - @mainModulePath = fs.resolveExtension(mainModulePath, ["", _.keys(require.extensions)...]) - - subscribeToActivationEvents: -> - return unless @metadata.activationEvents? - if _.isArray(@metadata.activationEvents) - atom.workspaceView.command(event, @handleActivationEvent) for event in @metadata.activationEvents - else if _.isString(@metadata.activationEvents) - atom.workspaceView.command(@metadata.activationEvents, @handleActivationEvent) - else - atom.workspaceView.command(event, selector, @handleActivationEvent) for event, selector of @metadata.activationEvents - - handleActivationEvent: (event) => - bubblePathEventHandlers = @disableEventHandlersOnBubblePath(event) - @activateNow() - $(event.target).trigger(event) - @restoreEventHandlersOnBubblePath(bubblePathEventHandlers) - @unsubscribeFromActivationEvents() - - unsubscribeFromActivationEvents: -> - return unless atom.workspaceView? - - if _.isArray(@metadata.activationEvents) - atom.workspaceView.off(event, @handleActivationEvent) for event in @metadata.activationEvents - else if _.isString(@metadata.activationEvents) - atom.workspaceView.off(@metadata.activationEvents, @handleActivationEvent) - else - atom.workspaceView.off(event, selector, @handleActivationEvent) for event, selector of @metadata.activationEvents - - disableEventHandlersOnBubblePath: (event) -> - bubblePathEventHandlers = [] - disabledHandler = -> - element = $(event.target) - while element.length - if eventHandlers = element.handlers()?[event.type] - for eventHandler in eventHandlers - eventHandler.disabledHandler = eventHandler.handler - eventHandler.handler = disabledHandler - bubblePathEventHandlers.push(eventHandler) - element = element.parent() - bubblePathEventHandlers - - restoreEventHandlersOnBubblePath: (eventHandlers) -> - for eventHandler in eventHandlers - eventHandler.handler = eventHandler.disabledHandler - delete eventHandler.disabledHandler diff --git a/src/package-manager.coffee b/src/package-manager.coffee index 52ea5fedc..ac7b32fce 100644 --- a/src/package-manager.coffee +++ b/src/package-manager.coffee @@ -144,9 +144,17 @@ class PackageManager name = path.basename(nameOrPath) return pack if pack = @getLoadedPackage(name) - pack = Package.load(packagePath) - @loadedPackages[pack.name] = pack if pack? - pack + try + metadata = Package.loadMetadata(packagePath) + if metadata?.theme + pack = new ThemePackage(packagePath, metadata) + else + pack = new Package(packagePath, metadata) + @loadedPackages[pack.name] = pack + pack + catch error + console.warn "Failed to load package.json '#{path.basename(packagePath)}'", error.stack ? error + else throw new Error("Could not resolve '#{nameOrPath}' to a package path") diff --git a/src/package.coffee b/src/package.coffee index 7c59219f0..ba8d49d84 100644 --- a/src/package.coffee +++ b/src/package.coffee @@ -1,30 +1,22 @@ path = require 'path' + +_ = require 'underscore-plus' +async = require 'async' CSON = require 'season' +fs = require 'fs-plus' +{Emitter} = require 'emissary' +Q = require 'q' -AtomPackage = null -ThemePackage = null +{$} = require './space-pen-extensions' +ScopedProperties = require './scoped-properties' +# Loads and activates a package's main module and resources such as +# stylesheets, keymaps, grammar, editor properties, and menus. module.exports = class Package - @build: (packagePath) -> - AtomPackage ?= require './atom-package' - ThemePackage ?= require './theme-package' + Emitter.includeInto(this) - try - metadata = @loadMetadata(packagePath) - if metadata.theme - pack = new ThemePackage(packagePath, metadata) - else - pack = new AtomPackage(packagePath, metadata) - catch error - console.warn "Failed to load package.json '#{path.basename(packagePath)}'", error.stack ? error - - pack - - @load: (packagePath) -> - pack = @build(packagePath) - pack?.load() - pack + @stylesheetsDir: 'stylesheets' @loadMetadata: (packagePath, ignoreErrors=false) -> if metadataPath = CSON.resolve(path.join(packagePath, 'package')) @@ -36,14 +28,25 @@ class Package metadata.name = path.basename(packagePath) metadata + keymaps: null + menus: null + stylesheets: null + grammars: null + scopedProperties: null + mainModulePath: null + resolvedMainModulePath: false + mainModule: null + constructor: (@path, @metadata) -> + @metadata ?= Package.loadMetadata(@path) @name = @metadata?.name ? path.basename(@path) + @reset() enable: -> - atom.config.removeAtKeyPath('core.disabledPackages', @metadata.name) + atom.config.removeAtKeyPath('core.disabledPackages', @name) disable: -> - atom.config.pushAtKeyPath('core.disabledPackages', @metadata.name) + atom.config.pushAtKeyPath('core.disabledPackages', @name) isTheme: -> @metadata?.theme? @@ -53,3 +56,256 @@ class Package value = fn() @[key] = Date.now() - startTime value + + getType: -> 'atom' + + getStylesheetType: -> 'bundled' + + load: -> + @measure 'loadTime', => + try + @loadKeymaps() + @loadMenus() + @loadStylesheets() + @grammarsPromise = @loadGrammars() + @scopedPropertiesPromise = @loadScopedProperties() + @requireMainModule() unless @metadata.activationEvents? + + catch error + console.warn "Failed to load package named '#{@name}'", error.stack ? error + this + + reset: -> + @stylesheets = [] + @keymaps = [] + @menus = [] + @grammars = [] + @scopedProperties = [] + + activate: -> + unless @activationDeferred? + @activationDeferred = Q.defer() + @measure 'activateTime', => + @activateResources() + if @metadata.activationEvents? + @subscribeToActivationEvents() + else + @activateNow() + + @grammarsPromise.then(@scopedPropertiesPromise).then(@activationDeferred.promise) + + activateNow: -> + try + @activateConfig() + @activateStylesheets() + if @requireMainModule() + @mainModule.activate(atom.packages.getPackageState(@name) ? {}) + @mainActivated = true + catch e + console.warn "Failed to activate package named '#{@name}'", e.stack + + @activationDeferred.resolve() + + activateConfig: -> + return if @configActivated + + @requireMainModule() + if @mainModule? + atom.config.setDefaults(@name, @mainModule.configDefaults) + @mainModule.activateConfig?() + @configActivated = true + + activateStylesheets: -> + return if @stylesheetsActivated + + type = @getStylesheetType() + for [stylesheetPath, content] in @stylesheets + atom.themes.applyStylesheet(stylesheetPath, content, type) + @stylesheetsActivated = true + + activateResources: -> + atom.keymap.add(keymapPath, map) for [keymapPath, map] in @keymaps + atom.contextMenu.add(menuPath, map['context-menu']) for [menuPath, map] in @menus + atom.menu.add(map.menu) for [menuPath, map] in @menus when map.menu + + grammar.activate() for grammar in @grammars + @grammarsActivated = true + + scopedProperties.activate() for scopedProperties in @scopedProperties + @scopedPropertiesActivated = true + + loadKeymaps: -> + @keymaps = @getKeymapPaths().map (keymapPath) -> [keymapPath, CSON.readFileSync(keymapPath)] + + loadMenus: -> + @menus = @getMenuPaths().map (menuPath) -> [menuPath, CSON.readFileSync(menuPath)] + + getKeymapPaths: -> + keymapsDirPath = path.join(@path, 'keymaps') + if @metadata.keymaps + @metadata.keymaps.map (name) -> fs.resolve(keymapsDirPath, name, ['json', 'cson', '']) + else + fs.listSync(keymapsDirPath, ['cson', 'json']) + + getMenuPaths: -> + menusDirPath = path.join(@path, 'menus') + if @metadata.menus + @metadata.menus.map (name) -> fs.resolve(menusDirPath, name, ['json', 'cson', '']) + else + fs.listSync(menusDirPath, ['cson', 'json']) + + loadStylesheets: -> + @stylesheets = @getStylesheetPaths().map (stylesheetPath) -> + [stylesheetPath, atom.themes.loadStylesheet(stylesheetPath)] + + getStylesheetsPath: -> + path.join(@path, @constructor.stylesheetsDir) + + getStylesheetPaths: -> + stylesheetDirPath = @getStylesheetsPath() + + if @metadata.stylesheetMain + [fs.resolve(@path, @metadata.stylesheetMain)] + else if @metadata.stylesheets + @metadata.stylesheets.map (name) -> fs.resolve(stylesheetDirPath, name, ['css', 'less', '']) + else if indexStylesheet = fs.resolve(@path, 'index', ['css', 'less']) + [indexStylesheet] + else + fs.listSync(stylesheetDirPath, ['css', 'less']) + + loadGrammars: -> + @grammars = [] + + loadGrammar = (grammarPath, callback) => + atom.syntax.readGrammar grammarPath, (error, grammar) => + if error? + console.warn("Failed to load grammar: #{grammarPath}", error.stack ? error) + else + @grammars.push(grammar) + grammar.activate() if @grammarsActivated + callback() + + deferred = Q.defer() + grammarsDirPath = path.join(@path, 'grammars') + fs.list grammarsDirPath, ['json', 'cson'], (error, grammarPaths=[]) -> + async.each grammarPaths, loadGrammar, -> deferred.resolve() + deferred.promise + + loadScopedProperties: -> + @scopedProperties = [] + + loadScopedPropertiesFile = (scopedPropertiesPath, callback) => + ScopedProperties.load scopedPropertiesPath, (error, scopedProperties) => + if error? + console.warn("Failed to load scoped properties: #{scopedPropertiesPath}", error.stack ? error) + else + @scopedProperties.push(scopedProperties) + scopedProperties.activate() if @scopedPropertiesActivated + callback() + + deferred = Q.defer() + scopedPropertiesDirPath = path.join(@path, 'scoped-properties') + fs.list scopedPropertiesDirPath, ['json', 'cson'], (error, scopedPropertiesPaths=[]) -> + async.each scopedPropertiesPaths, loadScopedPropertiesFile, -> deferred.resolve() + deferred.promise + + serialize: -> + if @mainActivated + try + @mainModule?.serialize?() + catch e + console.error "Error serializing package '#{@name}'", e.stack + + deactivate: -> + @activationDeferred?.reject() + @activationDeferred = null + @grammarPromise?.reject() + @grammarPromise = null + @scopedPropertiesPromise?.reject() + @scopedPropertiesPromise = null + @unsubscribeFromActivationEvents() + @deactivateResources() + @deactivateConfig() + @mainModule?.deactivate?() if @mainActivated + @emit('deactivated') + + deactivateConfig: -> + @mainModule?.deactivateConfig?() + @configActivated = false + + deactivateResources: -> + grammar.deactivate() for grammar in @grammars + scopedProperties.deactivate() for scopedProperties in @scopedProperties + atom.keymap.remove(keymapPath) for [keymapPath] in @keymaps + atom.themes.removeStylesheet(stylesheetPath) for [stylesheetPath] in @stylesheets + @stylesheetsActivated = false + @grammarsActivated = false + @scopedPropertiesActivated = false + + reloadStylesheets: -> + oldSheets = _.clone(@stylesheets) + @loadStylesheets() + atom.themes.removeStylesheet(stylesheetPath) for [stylesheetPath] in oldSheets + @reloadStylesheet(stylesheetPath, content) for [stylesheetPath, content] in @stylesheets + + reloadStylesheet: (stylesheetPath, content) -> + atom.themes.applyStylesheet(stylesheetPath, content, @getStylesheetType()) + + requireMainModule: -> + return @mainModule if @mainModule? + mainModulePath = @getMainModulePath() + @mainModule = require(mainModulePath) if fs.isFileSync(mainModulePath) + + getMainModulePath: -> + return @mainModulePath if @resolvedMainModulePath + @resolvedMainModulePath = true + mainModulePath = + if @metadata.main + path.join(@path, @metadata.main) + else + path.join(@path, 'index') + @mainModulePath = fs.resolveExtension(mainModulePath, ["", _.keys(require.extensions)...]) + + subscribeToActivationEvents: -> + return unless @metadata.activationEvents? + if _.isArray(@metadata.activationEvents) + atom.workspaceView.command(event, @handleActivationEvent) for event in @metadata.activationEvents + else if _.isString(@metadata.activationEvents) + atom.workspaceView.command(@metadata.activationEvents, @handleActivationEvent) + else + atom.workspaceView.command(event, selector, @handleActivationEvent) for event, selector of @metadata.activationEvents + + handleActivationEvent: (event) => + bubblePathEventHandlers = @disableEventHandlersOnBubblePath(event) + @activateNow() + $(event.target).trigger(event) + @restoreEventHandlersOnBubblePath(bubblePathEventHandlers) + @unsubscribeFromActivationEvents() + + unsubscribeFromActivationEvents: -> + return unless atom.workspaceView? + + if _.isArray(@metadata.activationEvents) + atom.workspaceView.off(event, @handleActivationEvent) for event in @metadata.activationEvents + else if _.isString(@metadata.activationEvents) + atom.workspaceView.off(@metadata.activationEvents, @handleActivationEvent) + else + atom.workspaceView.off(event, selector, @handleActivationEvent) for event, selector of @metadata.activationEvents + + disableEventHandlersOnBubblePath: (event) -> + bubblePathEventHandlers = [] + disabledHandler = -> + element = $(event.target) + while element.length + if eventHandlers = element.handlers()?[event.type] + for eventHandler in eventHandlers + eventHandler.disabledHandler = eventHandler.handler + eventHandler.handler = disabledHandler + bubblePathEventHandlers.push(eventHandler) + element = element.parent() + bubblePathEventHandlers + + restoreEventHandlersOnBubblePath: (eventHandlers) -> + for eventHandler in eventHandlers + eventHandler.handler = eventHandler.disabledHandler + delete eventHandler.disabledHandler diff --git a/src/theme-manager.coffee b/src/theme-manager.coffee index 08ecc0d47..eb4c5a3b3 100644 --- a/src/theme-manager.coffee +++ b/src/theme-manager.coffee @@ -6,7 +6,7 @@ fs = require 'fs-plus' Q = require 'q' {$} = require './space-pen-extensions' -AtomPackage = require './atom-package' +Package = require './package' File = require './file' # Public: Handles loading and activating available themes. @@ -93,7 +93,7 @@ class ThemeManager themePaths = [] for themeName in @getEnabledThemeNames() if themePath = @packageManager.resolvePackagePath(themeName) - themePaths.push(path.join(themePath, AtomPackage.stylesheetsDir)) + themePaths.push(path.join(themePath, Package.stylesheetsDir)) themePaths.filter (themePath) -> fs.isDirectorySync(themePath) diff --git a/src/theme-package.coffee b/src/theme-package.coffee index e83f7efcb..3c03d818f 100644 --- a/src/theme-package.coffee +++ b/src/theme-package.coffee @@ -1,8 +1,8 @@ Q = require 'q' -AtomPackage = require './atom-package' +Package = require './package' module.exports = -class ThemePackage extends AtomPackage +class ThemePackage extends Package getType: -> 'theme' getStylesheetType: -> 'theme' From 94f26b99cca76796c182691b8ef76db18667b638 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 13:00:29 -0800 Subject: [PATCH 48/62] grammarsPromise not grammarPromise --- src/package.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/package.coffee b/src/package.coffee index ba8d49d84..2d52efaa1 100644 --- a/src/package.coffee +++ b/src/package.coffee @@ -219,8 +219,8 @@ class Package deactivate: -> @activationDeferred?.reject() @activationDeferred = null - @grammarPromise?.reject() - @grammarPromise = null + @grammarsPromise?.reject() + @grammarsPromise = null @scopedPropertiesPromise?.reject() @scopedPropertiesPromise = null @unsubscribeFromActivationEvents() From fb60a3189a9ce64b299ff6d23c29eb81e76e64e4 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 13:10:19 -0800 Subject: [PATCH 49/62] Call load on package --- src/package-manager.coffee | 1 + 1 file changed, 1 insertion(+) diff --git a/src/package-manager.coffee b/src/package-manager.coffee index ac7b32fce..2ee5e1702 100644 --- a/src/package-manager.coffee +++ b/src/package-manager.coffee @@ -150,6 +150,7 @@ class PackageManager pack = new ThemePackage(packagePath, metadata) else pack = new Package(packagePath, metadata) + pack.load() @loadedPackages[pack.name] = pack pack catch error From a149056408f0541e5b440e095a1b6de3996803ec Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 13:12:35 -0800 Subject: [PATCH 50/62] Remove unnecessary rejection --- src/package.coffee | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/package.coffee b/src/package.coffee index 2d52efaa1..ac8d2a983 100644 --- a/src/package.coffee +++ b/src/package.coffee @@ -219,10 +219,6 @@ class Package deactivate: -> @activationDeferred?.reject() @activationDeferred = null - @grammarsPromise?.reject() - @grammarsPromise = null - @scopedPropertiesPromise?.reject() - @scopedPropertiesPromise = null @unsubscribeFromActivationEvents() @deactivateResources() @deactivateConfig() From 5f9549e27968903ec0344c67025567a5759079c3 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 13:16:00 -0800 Subject: [PATCH 51/62] Default metadata to empty hash --- src/package-manager.coffee | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/package-manager.coffee b/src/package-manager.coffee index 2ee5e1702..0e6d444d9 100644 --- a/src/package-manager.coffee +++ b/src/package-manager.coffee @@ -145,8 +145,8 @@ class PackageManager return pack if pack = @getLoadedPackage(name) try - metadata = Package.loadMetadata(packagePath) - if metadata?.theme + metadata = Package.loadMetadata(packagePath) ? {} + if metadata.theme pack = new ThemePackage(packagePath, metadata) else pack = new Package(packagePath, metadata) From 366684f3d733ba39bbeffc79f22080c8562eaa2e Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 13:23:21 -0800 Subject: [PATCH 52/62] Add missing ThemePackage require --- src/package-manager.coffee | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/package-manager.coffee b/src/package-manager.coffee index 0e6d444d9..2ace669b6 100644 --- a/src/package-manager.coffee +++ b/src/package-manager.coffee @@ -1,9 +1,12 @@ +path = require 'path' + +_ = require 'underscore-plus' {Emitter} = require 'emissary' fs = require 'fs-plus' -_ = require 'underscore-plus' Q = require 'q' + Package = require './package' -path = require 'path' +ThemePackage = require './theme-package' # Public: Package manager for coordinating the lifecycle of Atom packages. # From 04290ebbbbd93bbf84d26b833faa549f5048bd3a Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 14:06:59 -0800 Subject: [PATCH 53/62] Wait for package to be activated --- spec/atom-spec.coffee | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/spec/atom-spec.coffee b/spec/atom-spec.coffee index eae9cf83e..ac70d52c2 100644 --- a/spec/atom-spec.coffee +++ b/spec/atom-spec.coffee @@ -87,9 +87,13 @@ describe "the `atom` global", -> it "assigns config defaults from the module", -> expect(atom.config.get('package-with-config-defaults.numbers.one')).toBeUndefined() - atom.packages.activatePackage('package-with-config-defaults') - expect(atom.config.get('package-with-config-defaults.numbers.one')).toBe 1 - expect(atom.config.get('package-with-config-defaults.numbers.two')).toBe 2 + + waitsForPromise -> + atom.packages.activatePackage('package-with-config-defaults') + + runs -> + expect(atom.config.get('package-with-config-defaults.numbers.one')).toBe 1 + expect(atom.config.get('package-with-config-defaults.numbers.two')).toBe 2 describe "when the package metadata includes activation events", -> [mainModule, promise] = [] @@ -258,9 +262,12 @@ describe "the `atom` global", -> describe "grammar loading", -> it "loads the package's grammars", -> - atom.packages.activatePackage('package-with-grammars') - expect(atom.syntax.selectGrammar('a.alot').name).toBe 'Alot' - expect(atom.syntax.selectGrammar('a.alittle').name).toBe 'Alittle' + waitsForPromise -> + atom.packages.activatePackage('package-with-grammars') + + runs -> + expect(atom.syntax.selectGrammar('a.alot').name).toBe 'Alot' + expect(atom.syntax.selectGrammar('a.alittle').name).toBe 'Alittle' describe "scoped-property loading", -> it "loads the scoped properties", -> From b4e8d5480cca3a45b837ee09e7d9141aa720eaef Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 14:07:18 -0800 Subject: [PATCH 54/62] Use Q.all --- src/package.coffee | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/package.coffee b/src/package.coffee index ac8d2a983..f08e5b4f0 100644 --- a/src/package.coffee +++ b/src/package.coffee @@ -92,7 +92,7 @@ class Package else @activateNow() - @grammarsPromise.then(@scopedPropertiesPromise).then(@activationDeferred.promise) + Q.all([@grammarsPromise, @scopedPropertiesPromise, @activationDeferred.promise]) activateNow: -> try From ce6d5b3b2aa7e67fa893e6feefe1bb385c21497c Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 14:21:54 -0800 Subject: [PATCH 55/62] Upgrade to language-ruby@0.11.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 89498ebf7..4a4b5e09d 100644 --- a/package.json +++ b/package.json @@ -128,7 +128,7 @@ "language-property-list": "0.4.0", "language-puppet": "0.4.0", "language-python": "0.4.0", - "language-ruby": "0.10.0", + "language-ruby": "0.11.0", "language-ruby-on-rails": "0.6.0", "language-sass": "0.5.0", "language-shellscript": "0.4.0", From e439847b59516c87260f5fb5f41def054f4a115c Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 14:24:26 -0800 Subject: [PATCH 56/62] Remove preferences folder spec --- spec/atom-spec.coffee | 15 ++------------- .../preferences/misc.json | 7 ------- 2 files changed, 2 insertions(+), 20 deletions(-) delete mode 100644 spec/fixtures/packages/package-with-preferences-tmbundle/preferences/misc.json diff --git a/spec/atom-spec.coffee b/spec/atom-spec.coffee index ac70d52c2..fcd6cf6a2 100644 --- a/spec/atom-spec.coffee +++ b/spec/atom-spec.coffee @@ -277,7 +277,7 @@ describe "the `atom` global", -> runs -> expect(atom.syntax.getProperty ['.source.omg'], 'editor.increaseIndentPattern').toBe '^a' - describe "textmate packages", -> + describe "converted textmate packages", -> it "loads the package's grammars", -> expect(atom.syntax.selectGrammar("file.rb").name).toBe "Null Grammar" @@ -287,7 +287,7 @@ describe "the `atom` global", -> runs -> expect(atom.syntax.selectGrammar("file.rb").name).toBe "Ruby" - it "translates the package's scoped properties to Atom terms", -> + it "loads the translated scoped properties", -> expect(atom.syntax.getProperty(['.source.ruby'], 'editor.commentStart')).toBeUndefined() waitsForPromise -> @@ -296,17 +296,6 @@ describe "the `atom` global", -> runs -> expect(atom.syntax.getProperty(['.source.ruby'], 'editor.commentStart')).toBe '# ' - describe "when the package has no grammars but does have preferences", -> - it "loads the package's preferences as scoped properties", -> - jasmine.unspy(window, 'setTimeout') - spyOn(atom.syntax, 'addProperties').andCallThrough() - - waitsForPromise -> - atom.packages.activatePackage('package-with-preferences-tmbundle') - - runs -> - expect(atom.syntax.getProperty(['.source.pref'], 'editor.increaseIndentPattern')).toBe '^abc$' - describe ".deactivatePackage(id)", -> describe "atom packages", -> it "calls `deactivate` on the package's main module if activate was successful", -> diff --git a/spec/fixtures/packages/package-with-preferences-tmbundle/preferences/misc.json b/spec/fixtures/packages/package-with-preferences-tmbundle/preferences/misc.json deleted file mode 100644 index 784dd0cbc..000000000 --- a/spec/fixtures/packages/package-with-preferences-tmbundle/preferences/misc.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "name": "my preferences", - "scope": "source.pref", - "settings": { - "increaseIndentPattern": "^abc$" - } -} From 9e19f62b479df24041127c6de99b3391e495b14e Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 14:34:38 -0800 Subject: [PATCH 57/62] Update packages for CSS selectors in scoped properties --- package.json | 44 ++++++++++++++++++++++---------------------- 1 file changed, 22 insertions(+), 22 deletions(-) diff --git a/package.json b/package.json index 4a4b5e09d..3318b0ae7 100644 --- a/package.json +++ b/package.json @@ -106,39 +106,39 @@ "welcome": "0.4.0", "whitespace": "0.13.0", "wrap-guide": "0.14.0", - "language-c": "0.5.0", + "language-c": "0.8.0", "language-clojure": "0.2.0", - "language-coffee-script": "0.8.0", - "language-css": "0.4.0", + "language-coffee-script": "0.9.0", + "language-css": "0.7.0", "language-gfm": "0.17.0", - "language-git": "0.5.0", + "language-git": "0.6.0", "language-go": "0.4.0", - "language-html": "0.4.0", + "language-html": "0.5.0", "language-hyperlink": "0.5.0", - "language-java": "0.4.0", - "language-javascript": "0.7.0", - "language-json": "0.4.0", - "language-less": "0.3.0", - "language-make": "0.3.0", + "language-java": "0.5.0", + "language-javascript": "0.8.0", + "language-json": "0.5.0", + "language-less": "0.4.0", + "language-make": "0.4.0", "language-mustache": "0.3.0", - "language-objective-c": "0.4.0", + "language-objective-c": "0.5.0", "language-pegjs": "0.3.0", - "language-perl": "0.4.0", - "language-php": "0.5.0", - "language-property-list": "0.4.0", - "language-puppet": "0.4.0", - "language-python": "0.4.0", + "language-perl": "0.5.0", + "language-php": "0.6.0", + "language-property-list": "0.5.0", + "language-puppet": "0.5.0", + "language-python": "0.5.0", "language-ruby": "0.11.0", "language-ruby-on-rails": "0.6.0", - "language-sass": "0.5.0", - "language-shellscript": "0.4.0", - "language-source": "0.4.0", - "language-sql": "0.4.0", + "language-sass": "0.6.0", + "language-shellscript": "0.5.0", + "language-source": "0.5c.0", + "language-sql": "0.5.0", "language-text": "0.4.0", "language-todo": "0.4.0", "language-toml": "0.9.0", - "language-xml": "0.4.0", - "language-yaml": "0.3.0" + "language-xml": "0.5.0", + "language-yaml": "0.4.0" }, "private": true, "scripts": { From 3d89f76abfc086826ec69a851b031d08f6152317 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 14:36:45 -0800 Subject: [PATCH 58/62] Upgrade apm for init fix --- vendor/apm | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/vendor/apm b/vendor/apm index cca2320f0..be0c1fb77 160000 --- a/vendor/apm +++ b/vendor/apm @@ -1 +1 @@ -Subproject commit cca2320f059170490ee1d792f19361ae2d77f5c2 +Subproject commit be0c1fb771f0e9cba1708ef773c6183b292225e4 From 3571d1e60e897041f285ca2b4bfddfa4336829b6 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 14:47:05 -0800 Subject: [PATCH 59/62] Remove unused .tmbundle fixture --- .../package-with-broken-snippets.tmbundle/Snippets/.hidden-file | 1 - .../package-with-broken-snippets.tmbundle/Snippets/invalid.plist | 1 - 2 files changed, 2 deletions(-) delete mode 100644 spec/fixtures/packages/package-with-broken-snippets.tmbundle/Snippets/.hidden-file delete mode 100644 spec/fixtures/packages/package-with-broken-snippets.tmbundle/Snippets/invalid.plist diff --git a/spec/fixtures/packages/package-with-broken-snippets.tmbundle/Snippets/.hidden-file b/spec/fixtures/packages/package-with-broken-snippets.tmbundle/Snippets/.hidden-file deleted file mode 100644 index 35b867918..000000000 --- a/spec/fixtures/packages/package-with-broken-snippets.tmbundle/Snippets/.hidden-file +++ /dev/null @@ -1 +0,0 @@ -I am hidden so I shouldn't be loaded diff --git a/spec/fixtures/packages/package-with-broken-snippets.tmbundle/Snippets/invalid.plist b/spec/fixtures/packages/package-with-broken-snippets.tmbundle/Snippets/invalid.plist deleted file mode 100644 index d6970c8b7..000000000 --- a/spec/fixtures/packages/package-with-broken-snippets.tmbundle/Snippets/invalid.plist +++ /dev/null @@ -1 +0,0 @@ -I am not a valid plist but that shouldn't cause a crisis From 313fb79fdca536ae4006ff5c34ad3b82146826cf Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 14:50:34 -0800 Subject: [PATCH 60/62] Remove stray c --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 3318b0ae7..ceadb220b 100644 --- a/package.json +++ b/package.json @@ -132,7 +132,7 @@ "language-ruby-on-rails": "0.6.0", "language-sass": "0.6.0", "language-shellscript": "0.5.0", - "language-source": "0.5c.0", + "language-source": "0.5.0", "language-sql": "0.5.0", "language-text": "0.4.0", "language-todo": "0.4.0", From a91285c754a188cb5c80cb1525f25a975471d6de Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 14:57:52 -0800 Subject: [PATCH 61/62] Upgrade to settings-view@0.73.0 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index ceadb220b..ea0f6d177 100644 --- a/package.json +++ b/package.json @@ -90,7 +90,7 @@ "metrics": "0.26.0", "package-generator": "0.26.0", "release-notes": "0.20.0", - "settings-view": "0.72.0", + "settings-view": "0.73.0", "snippets": "0.27.0", "spell-check": "0.25.0", "status-bar": "0.32.0", From 320acab1260194c2bb99e2ced7ceb6bffae9dfb5 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Mon, 17 Feb 2014 14:58:55 -0800 Subject: [PATCH 62/62] Wait for activation promise --- spec/editor-spec.coffee | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/spec/editor-spec.coffee b/spec/editor-spec.coffee index 821299f8c..4de1a2e25 100644 --- a/spec/editor-spec.coffee +++ b/spec/editor-spec.coffee @@ -2782,12 +2782,13 @@ describe "Editor", -> expect(tokens[1].value).toBe " SELECT * FROM OCTOCATS" expect(tokens[1].scopes).toEqual ["source.js", "comment.line.double-slash.js"] + waitsForPromise -> + atom.packages.activatePackage('package-with-injection-selector') - atom.packages.activatePackage('package-with-injection-selector') - - {tokens} = editor.lineForScreenRow(0) - expect(tokens[1].value).toBe " SELECT * FROM OCTOCATS" - expect(tokens[1].scopes).toEqual ["source.js", "comment.line.double-slash.js"] + runs -> + {tokens} = editor.lineForScreenRow(0) + expect(tokens[1].value).toBe " SELECT * FROM OCTOCATS" + expect(tokens[1].scopes).toEqual ["source.js", "comment.line.double-slash.js"] waitsForPromise -> atom.packages.activatePackage('language-sql')