Merge branch 'master' into no-request

This commit is contained in:
confused_techie 2023-06-11 13:16:00 -07:00 committed by GitHub
commit bcf62e576d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
31 changed files with 6774 additions and 6064 deletions

2
.yarnrc Normal file
View File

@ -0,0 +1,2 @@
enableTelemetry false
ignore-engines true

View File

@ -6,6 +6,7 @@
## [Unreleased]
- Improved the Clojure language support by migrating it to tree-sitter and support block comments, quoting, and other advanced features on modern tree-sitter implementation
- Added a modern implementation of Tree-sitter grammars behind an experimental flag. Enable the “Use Modern Tree-Sitter Implementation” in the Core settings to try it out.
## 1.105.0

File diff suppressed because it is too large Load Diff

View File

@ -10,7 +10,8 @@
"license": "MIT",
"devDependencies": {
"@webref/css": "^6.3.4",
"content": "github:mdn/content"
"content": "github:mdn/content",
"superagent": "^8.0.9"
},
"engines": {
"atom": ">=0.174.0 <2.0.0"
@ -617,6 +618,12 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
"node_modules/asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
"integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
"dev": true
},
"node_modules/astral-regex": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
@ -632,6 +639,12 @@
"integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==",
"dev": true
},
"node_modules/asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
"dev": true
},
"node_modules/bail": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
@ -1658,6 +1671,12 @@
"node": ">= 6"
}
},
"node_modules/component-emitter": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
"integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
"dev": true
},
"node_modules/compressible": {
"version": "2.0.18",
"resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
@ -1787,6 +1806,12 @@
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
"dev": true
},
"node_modules/cookiejar": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz",
"integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==",
"dev": true
},
"node_modules/core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
@ -2200,6 +2225,16 @@
"node": ">=6.0"
}
},
"node_modules/dezalgo": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
"integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
"dev": true,
"dependencies": {
"asap": "^2.0.0",
"wrappy": "1"
}
},
"node_modules/diagnostics": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz",
@ -2848,6 +2883,12 @@
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
"dev": true
},
"node_modules/fast-safe-stringify": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
"integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==",
"dev": true
},
"node_modules/fast-xml-parser": {
"version": "3.21.1",
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.21.1.tgz",
@ -3056,6 +3097,20 @@
}
}
},
"node_modules/form-data": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"dev": true,
"dependencies": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
},
"engines": {
"node": ">= 6"
}
},
"node_modules/form-data-encoder": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz",
@ -3065,6 +3120,21 @@
"node": ">= 14.17"
}
},
"node_modules/formidable": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz",
"integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==",
"dev": true,
"dependencies": {
"dezalgo": "^1.0.4",
"hexoid": "^1.0.0",
"once": "^1.4.0",
"qs": "^6.11.0"
},
"funding": {
"url": "https://ko-fi.com/tunnckoCore/commissions"
}
},
"node_modules/forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@ -3639,6 +3709,15 @@
"url": "https://opencollective.com/unified"
}
},
"node_modules/hexoid": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz",
"integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==",
"dev": true,
"engines": {
"node": ">=8"
}
},
"node_modules/html-dom-parser": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/html-dom-parser/-/html-dom-parser-3.1.3.tgz",
@ -7279,6 +7358,21 @@
"node": ">=6"
}
},
"node_modules/qs": {
"version": "6.11.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
"integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
"dev": true,
"dependencies": {
"side-channel": "^1.0.4"
},
"engines": {
"node": ">=0.6"
},
"funding": {
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/query-string": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz",
@ -8257,6 +8351,95 @@
"inline-style-parser": "0.1.1"
}
},
"node_modules/superagent": {
"version": "8.0.9",
"resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.9.tgz",
"integrity": "sha512-4C7Bh5pyHTvU33KpZgwrNKh/VQnvgtCSqPRfJAUdmrtSYePVzVg4E4OzsrbkhJj9O7SO6Bnv75K/F8XVZT8YHA==",
"dev": true,
"dependencies": {
"component-emitter": "^1.3.0",
"cookiejar": "^2.1.4",
"debug": "^4.3.4",
"fast-safe-stringify": "^2.1.1",
"form-data": "^4.0.0",
"formidable": "^2.1.2",
"methods": "^1.1.2",
"mime": "2.6.0",
"qs": "^6.11.0",
"semver": "^7.3.8"
},
"engines": {
"node": ">=6.4.0 <13 || >=14"
}
},
"node_modules/superagent/node_modules/debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"dependencies": {
"ms": "2.1.2"
},
"engines": {
"node": ">=6.0"
},
"peerDependenciesMeta": {
"supports-color": {
"optional": true
}
}
},
"node_modules/superagent/node_modules/lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"dependencies": {
"yallist": "^4.0.0"
},
"engines": {
"node": ">=10"
}
},
"node_modules/superagent/node_modules/mime": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
"integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
"dev": true,
"bin": {
"mime": "cli.js"
},
"engines": {
"node": ">=4.0.0"
}
},
"node_modules/superagent/node_modules/ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"node_modules/superagent/node_modules/semver": {
"version": "7.5.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
"integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
"dev": true,
"dependencies": {
"lru-cache": "^6.0.0"
},
"bin": {
"semver": "bin/semver.js"
},
"engines": {
"node": ">=10"
}
},
"node_modules/superagent/node_modules/yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
},
"node_modules/supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",
@ -10106,6 +10289,12 @@
"integrity": "sha512-1OvF9IbWwaeiM9VhzYXVQacMibxpXOMYVNIvMtKRyX9SImBXpKcFr8XvFDeEslCyuH/t6KRt7HEO94AlP8Iatw==",
"dev": true
},
"asap": {
"version": "2.0.6",
"resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz",
"integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
"dev": true
},
"astral-regex": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz",
@ -10118,6 +10307,12 @@
"integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==",
"dev": true
},
"asynckit": {
"version": "0.4.0",
"resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
"dev": true
},
"bail": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz",
@ -10923,6 +11118,12 @@
"integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",
"dev": true
},
"component-emitter": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz",
"integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==",
"dev": true
},
"compressible": {
"version": "2.0.18",
"resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz",
@ -11031,6 +11232,12 @@
"integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==",
"dev": true
},
"cookiejar": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/cookiejar/-/cookiejar-2.1.4.tgz",
"integrity": "sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==",
"dev": true
},
"core-util-is": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
@ -11341,6 +11548,16 @@
"integrity": "sha512-iHayBd4UYryDCVUNa3PMsJMEnd8yjyh5p7a+RFeC8i8n476BC9wMhVvqiImq5zJZJf5Tuer+s4SSj+AA3x+ZbQ==",
"dev": true
},
"dezalgo": {
"version": "1.0.4",
"resolved": "https://registry.npmjs.org/dezalgo/-/dezalgo-1.0.4.tgz",
"integrity": "sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==",
"dev": true,
"requires": {
"asap": "^2.0.0",
"wrappy": "1"
}
},
"diagnostics": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/diagnostics/-/diagnostics-1.1.1.tgz",
@ -11843,6 +12060,12 @@
"integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
"dev": true
},
"fast-safe-stringify": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz",
"integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==",
"dev": true
},
"fast-xml-parser": {
"version": "3.21.1",
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-3.21.1.tgz",
@ -11995,12 +12218,35 @@
"integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==",
"dev": true
},
"form-data": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz",
"integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==",
"dev": true,
"requires": {
"asynckit": "^0.4.0",
"combined-stream": "^1.0.8",
"mime-types": "^2.1.12"
}
},
"form-data-encoder": {
"version": "2.1.4",
"resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz",
"integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==",
"dev": true
},
"formidable": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/formidable/-/formidable-2.1.2.tgz",
"integrity": "sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==",
"dev": true,
"requires": {
"dezalgo": "^1.0.4",
"hexoid": "^1.0.0",
"once": "^1.4.0",
"qs": "^6.11.0"
}
},
"forwarded": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz",
@ -12443,6 +12689,12 @@
"space-separated-tokens": "^2.0.0"
}
},
"hexoid": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/hexoid/-/hexoid-1.0.0.tgz",
"integrity": "sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==",
"dev": true
},
"html-dom-parser": {
"version": "3.1.3",
"resolved": "https://registry.npmjs.org/html-dom-parser/-/html-dom-parser-3.1.3.tgz",
@ -14937,6 +15189,15 @@
"integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
"dev": true
},
"qs": {
"version": "6.11.2",
"resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz",
"integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==",
"dev": true,
"requires": {
"side-channel": "^1.0.4"
}
},
"query-string": {
"version": "5.1.1",
"resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz",
@ -15662,6 +15923,71 @@
"inline-style-parser": "0.1.1"
}
},
"superagent": {
"version": "8.0.9",
"resolved": "https://registry.npmjs.org/superagent/-/superagent-8.0.9.tgz",
"integrity": "sha512-4C7Bh5pyHTvU33KpZgwrNKh/VQnvgtCSqPRfJAUdmrtSYePVzVg4E4OzsrbkhJj9O7SO6Bnv75K/F8XVZT8YHA==",
"dev": true,
"requires": {
"component-emitter": "^1.3.0",
"cookiejar": "^2.1.4",
"debug": "^4.3.4",
"fast-safe-stringify": "^2.1.1",
"form-data": "^4.0.0",
"formidable": "^2.1.2",
"methods": "^1.1.2",
"mime": "2.6.0",
"qs": "^6.11.0",
"semver": "^7.3.8"
},
"dependencies": {
"debug": {
"version": "4.3.4",
"resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz",
"integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==",
"dev": true,
"requires": {
"ms": "2.1.2"
}
},
"lru-cache": {
"version": "6.0.0",
"resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz",
"integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==",
"dev": true,
"requires": {
"yallist": "^4.0.0"
}
},
"mime": {
"version": "2.6.0",
"resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz",
"integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==",
"dev": true
},
"ms": {
"version": "2.1.2",
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
"integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==",
"dev": true
},
"semver": {
"version": "7.5.1",
"resolved": "https://registry.npmjs.org/semver/-/semver-7.5.1.tgz",
"integrity": "sha512-Wvss5ivl8TMRZXXESstBA4uR5iXgEN/VC5/sOcuXdVLzcdkz4HWetIoRfG5gb5X+ij/G9rw9YoGn3QoQ8OCSpw==",
"dev": true,
"requires": {
"lru-cache": "^6.0.0"
}
},
"yallist": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz",
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==",
"dev": true
}
}
},
"supports-color": {
"version": "7.2.0",
"resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz",

View File

@ -17,6 +17,7 @@
},
"devDependencies": {
"@webref/css": "^6.3.4",
"content": "github:mdn/content"
"content": "github:mdn/content",
"superagent": "^8.0.9"
}
}

View File

@ -87,6 +87,7 @@
const css = require("@webref/css");
const fs = require("fs");
const superagent = require("superagent");
const CSSParser = require("./cssValueDefinitionSyntaxExtractor.js");
const manualPropertyDesc = require("./manual-property-desc.json");
@ -103,8 +104,11 @@ async function update(params) {
pseudoSelectors: pseudoSelectors
};
completions.properties = sortByLength(completions.properties);
completions.properties = await sortByPopularity(completions.properties);
// Now to write out our updated file
fs.writeFileSync("completions.json", JSON.stringify(completions, null, 2));
fs.writeFileSync("./completions.json", JSON.stringify(completions, null, 2));
// Now to determine how many properties have empty descriptions.
@ -134,6 +138,65 @@ async function update(params) {
};
}
function sortByLength(obj) {
let keys = Object.keys(obj);
keys.sort((a, b) => {
if (a.length > b.length) {
return 1;
} else if (a.length < b.length) {
return -1;
} else {
return 0;
}
});
let newObj = {};
// Now rebuild the object according to our new keys
for (i in keys) {
newObj[keys[i]] = obj[keys[i]];
}
return newObj;
}
async function sortByPopularity(obj) {
try {
const res = await superagent.get("https://chromestatus.com/data/csspopularity");
if (res.status !== 200) {
console.error(res);
process.exit(1);
}
let newObj = {};
for (prop in res.body) {
let property = res.body[prop].property_name;
if (typeof obj[property] === "object") {
newObj[property] = obj[property];
}
}
if (Object.keys(obj).length === Object.keys(newObj).length) {
return newObj;
}
for (prop in obj) {
if (typeof newObj[prop] !== "object") {
newObj[prop] = obj[prop];
}
}
return newObj;
} catch(err) {
console.error(err);
process.exit(1);
}
}
async function buildProperties(css) {
// This function will take a CSS object of all values from @webref/css
// and will gather descriptions from mdn/content for these properties.
@ -346,7 +409,7 @@ async function getPseudoSelectors() {
// For now since there is no best determined way to collect all modern psudoselectors
// We will just grab the existing list for our existing `completions.json`
let existingCompletions = require("./completions.json");
let existingCompletions = require("../completions.json");
return existingCompletions.pseudoSelectors;
}

View File

@ -2806,9 +2806,9 @@
}
},
"node_modules/underscore": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz",
"integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg=="
"version": "1.13.6",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
"integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
},
"node_modules/underscore-plus": {
"version": "1.7.0",
@ -5102,9 +5102,9 @@
}
},
"underscore": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz",
"integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg=="
"version": "1.13.6",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
"integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A=="
},
"underscore-plus": {
"version": "1.7.0",

View File

@ -88,7 +88,7 @@
},
"useCoreMovementCommands": {
"title": "Use Core Movement Commands",
"description": "Disable this if you want to bind your own keystrokes to move around the suggestion list. You will also need to add definitions to your keymap. See: https://github.com/atom/autocomplete-plus#remapping-movement-commands",
"description": "Disable this if you want to bind your own keystrokes to move around the suggestion list. You will also need to add definitions to your keymap. See: https://github.com/pulsar-edit/pulsar/blob/master/packages/autocomplete-plus/README.md#remapping-movement-commands",
"type": "boolean",
"default": true,
"order": 5
@ -107,7 +107,7 @@
},
"scopeBlacklist": {
"title": "Scope Blacklist",
"description": "Suggestions will not be provided for scopes matching this list. See: http://flight-manual.atom.io/behind-atom/sections/scoped-settings-scopes-and-scope-descriptors/",
"description": "Suggestions will not be provided for scopes matching this list. See: https://pulsar-edit.dev/docs/launch-manual/sections/behind-pulsar/#scoped-settings-scopes-and-scope-descriptors",
"type": "array",
"default": [],
"items": {

View File

@ -16,31 +16,27 @@
}
},
"node_modules/underscore": {
"version": "1.8.3",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz",
"integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI="
"version": "1.12.1",
"integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw=="
},
"node_modules/underscore-plus": {
"version": "1.6.8",
"resolved": "https://registry.npmjs.org/underscore-plus/-/underscore-plus-1.6.8.tgz",
"integrity": "sha512-88PrCeMKeAAC1L4xjSiiZ3Fg6kZOYrLpLGVPPeqKq/662DfQe/KTSKdSR/Q/tucKNnfW2MNAUGSCkDf8HmXC5Q==",
"version": "1.7.0",
"integrity": "sha512-A3BEzkeicFLnr+U/Q3EyWwJAQPbA19mtZZ4h+lLq3ttm9kn8WC4R3YpuJZEXmWdLjYP47Zc8aLZm9kwdv+zzvA==",
"dependencies": {
"underscore": "~1.8.3"
"underscore": "^1.9.1"
}
}
},
"dependencies": {
"underscore": {
"version": "1.8.3",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz",
"integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI="
"version": "1.12.1",
"integrity": "sha512-hEQt0+ZLDVUMhebKxL4x1BTtDY7bavVofhZ9KZ4aI26X9SRaE+Y3m83XUL1UP2jn8ynjndwCCpEHdUG+9pP1Tw=="
},
"underscore-plus": {
"version": "1.6.8",
"resolved": "https://registry.npmjs.org/underscore-plus/-/underscore-plus-1.6.8.tgz",
"integrity": "sha512-88PrCeMKeAAC1L4xjSiiZ3Fg6kZOYrLpLGVPPeqKq/662DfQe/KTSKdSR/Q/tucKNnfW2MNAUGSCkDf8HmXC5Q==",
"version": "1.7.0",
"integrity": "sha512-A3BEzkeicFLnr+U/Q3EyWwJAQPbA19mtZZ4h+lLq3ttm9kn8WC4R3YpuJZEXmWdLjYP47Zc8aLZm9kwdv+zzvA==",
"requires": {
"underscore": "~1.8.3"
"underscore": "^1.9.1"
}
}
}

View File

@ -188,7 +188,7 @@
"node_modules/underscore": {
"version": "1.8.3",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.8.3.tgz",
"integrity": "sha1-Tz+1OxBuYJf8+ctBCfKl6b36UCI="
"integrity": "sha512-5WsVTFcH1ut/kkhAaHf4PVgI8c7++GiVcpCGxPouI6ZVjsqPnSDf8h/8HtVqc0t4fzRXwnMK70EcZeAs3PIddg=="
},
"node_modules/underscore-plus": {
"version": "1.6.8",

View File

@ -1 +0,0 @@
node_modules

View File

@ -126,7 +126,7 @@
'name': 'constant.numeric.octal.clojure'
}
{
# The decimal separator is optional only when followed by e, E or M!
# The decimal separator is optional only when followed by e, E or M!
'match': '([-+]?[0-9]+(?:(\\.|(?=[eEM]))[0-9]*([eE][-+]?[0-9]+)?)M?)'
'name': 'constant.numeric.double.clojure'
}

View File

@ -1,6 +1,9 @@
'name': 'Clojure'
'scopeName': 'source.clojure'
'type': 'modern-tree-sitter'
name: 'Clojure'
scopeName: 'source.clojure'
type: 'modern-tree-sitter'
injectionRegExp: '^source-clojure$'
parser: 'tree-sitter-clojure'
'fileTypes': [
'boot'
'clj'
@ -10,7 +13,6 @@
'cljs.hl'
'cljx'
'clojure'
'edn'
'org'
'bb'
'joke'

View File

@ -0,0 +1,15 @@
name: 'Clojure EDN'
scopeName: 'source.edn'
type: 'modern-tree-sitter'
injectionRegExp: '^source-edn$'
parser: 'tree-sitter-clojure'
fileTypes: [
'edn'
]
treeSitter:
grammar: 'ts/grammar.wasm'
highlightsQuery: 'ts/edn-highlights.scm'
# localsQuery: 'ts/locals.scm'
foldsQuery: 'ts/folds.scm'
indentsQuery: 'ts/indents.scm'

View File

@ -0,0 +1,11 @@
scopeName: 'source.quoted.clojure'
type: 'modern-tree-sitter'
injectionRegExp: '^source-quoted-clojure$'
parser: 'tree-sitter-clojure'
treeSitter:
grammar: 'ts/grammar.wasm'
highlightsQuery: 'ts/edn-highlights.scm'
# localsQuery: 'ts/locals.scm'
foldsQuery: 'ts/folds.scm'
indentsQuery: 'ts/indents.scm'

View File

@ -0,0 +1,36 @@
;; Collections
(list_lit
"(" @punctuation.section.list.begin (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag")
")" @punctuation.section.list.end)
@meta.list
(vec_lit
"[" @punctuation.section.vector.begin (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag")
"]" @punctuation.section.vector.end)
@meta.vector
(map_lit
"{" @punctuation.section.map.begin (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag")
"}" @punctuation.section.map.end)
@meta.map
(set_lit
("#" "{") @punctuation.section.set.begin (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag")
"}" @punctuation.section.set.end)
@meta.set
((regex_lit) @string.regexp (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag"))
((sym_lit) @meta.symbol (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag"))
((kwd_lit) @constant.keyword (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag"))
((str_lit) @string.quoted.double (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag"))
((num_lit) @constant.numeric (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag"))
((nil_lit) @constant.language (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag"))
((bool_lit) @constant.language (#set! test.onlyIfNotDescendantOfNodeWithData clojure.dismissTag))
(comment) @comment.line.semicolon
((dis_expr)
@comment.block.clojure
(#set! test.onlyIfConfig language-clojure.dismissTag)
(#set! clojure.dismissTag true)
(#set! test.final true))
("ERROR" @invalid.illegal)

View File

@ -1,58 +1,111 @@
(quoting_lit
value: (list_lit
"(" @punctuation.section.expression.begin
.
(sym_lit) @meta.symbol (#set! final "true")))
;; Function calls
(anon_fn_lit
"(" @punctuation.section.expression.begin (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag")
.
(sym_lit) @entity.name.function @meta.expression
")" @punctuation.section.expression.end)
(list_lit
"(" @punctuation.section.expression.begin (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag")
.
(sym_lit) @entity.name.function @meta.expression
")" @punctuation.section.expression.end)
; NS things like require
((sym_name) @meta.symbol (#eq? @meta.symbol "import") (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag")) @keyword.control
((sym_name) @meta.symbol (#eq? @meta.symbol "require") (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag")) @keyword.control
;; USE
((sym_name)
@meta.symbol
(#eq? @meta.symbol "use")
(#set! test.onlyIfConfig language-clojure.markDeprecations)
(#set! test.onlyIfNotDescendantOfNodeWithData clojure.dismissTag))
@invalid.deprecated
((sym_name)
@meta.symbol
(#eq? @meta.symbol "use")
(#set! test.onlyIfNotConfig language-clojure.markDeprecations)
(#set! test.onlyIfNotDescendantOfNodeWithData clojure.dismissTag))
@keyword.control
;; Namespace declaration
((list_lit
"(" @punctuation.section.expression.begin (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag")
.
(sym_lit) @meta.definition.global @keyword.control (#eq? @meta.definition.global "ns")
.
(sym_lit) @meta.definition.global @entity.global
")" @punctuation.section.expression.end)
@meta.namespace.clojure
(#set! isNamespace true))
(list_lit
"("
.
(kwd_lit) @invalid.deprecated (#eq? @invalid.deprecated ":use")
(#set! test.onlyIfDescendantOfNodeWithData isNamespace)
(#set! test.onlyIfConfig language-clojure.markDeprecations))
;; Definition
(list_lit
"(" @punctuation.section.expression.begin (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag")
.
(sym_lit) @keyword.control (#match? @keyword.control "^def")
.
(sym_lit) @meta.definition.global @entity.global
")" @punctuation.section.expression.end)
;; Comment form ("Rich" comments)
((list_lit
"(" @punctuation.section.expression.begin
.
(sym_lit) @meta.definition.global @keyword.control (#eq? @keyword.control "comment")
")" @punctuation.section.expression.end)
@comment.block.clojure
(#set! test.onlyIfConfig language-clojure.commentTag)
(#set! clojure.dismissTag true))
(list_lit
"(" @punctuation.section.expression.begin
.
(sym_lit) @keyword.control (#eq? @keyword.control "comment")
(#set! test.onlyIfNotConfig language-clojure.commentTag)
")" @punctuation.section.expression.end)
;;; COPY-PASTED from edn-highlights.
;; IF you need to add something here, add to edn-highlights
;; and then paste here, but DON'T PASTE the first `list_lit`
;; Collections
(anon_fn_lit
"(" @punctuation.section.expression.begin
.
(sym_lit) @entity.name.function @meta.expression
")" @punctuation.section.expression.end)
(list_lit
"(" @punctuation.section.expression.begin
.
(sym_lit) @entity.name.function @meta.expression
")" @punctuation.section.expression.end)
(vec_lit
"[" @punctuation.section.vector.begin
"]" @punctuation.section.vector.end) @meta.vector
"[" @punctuation.section.vector.begin (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag")
"]" @punctuation.section.vector.end)
@meta.vector
(map_lit
"{" @punctuation.section.map.begin
"}" @punctuation.section.map.end) @meta.map
"{" @punctuation.section.map.begin (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag")
"}" @punctuation.section.map.end)
@meta.map
(set_lit
("#" "{") @punctuation.section.set.begin
"}" @punctuation.section.set.end) @meta.map
("#" "{") @punctuation.section.set.begin (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag")
"}" @punctuation.section.set.end)
@meta.set
; Includes
((sym_name) @meta.symbol (#eq? @meta.symbol "import")) @keyword.control
((sym_name) @meta.symbol (#eq? @meta.symbol "require")) @keyword.control
((sym_name) @meta.symbol (#eq? @meta.symbol "use")) @keyword.control
(list_lit
"(" @punctuation.section.expression.begin
.
((sym_lit) @meta.symbol (#eq? @meta.symbol "ns")) @keyword.control @meta.definition.global
.
(sym_lit) @meta.definition.global @entity.global
")" @punctuation.section.expression.end)
(list_lit
"(" @punctuation.section.expression.begin
.
((sym_lit) @meta.symbol (#match? @meta.symbol "^def")) @keyword.control
.
(sym_lit) @meta.definition.global @entity.global
")" @punctuation.section.expression.end)
(sym_lit) @meta.symbol
(kwd_lit) @constant.keyword
(str_lit) @string.quoted.double
(num_lit) @constant.numeric
((regex_lit) @string.regexp (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag"))
((sym_lit) @meta.symbol (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag"))
((kwd_lit) @constant.keyword (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag"))
((str_lit) @string.quoted.double (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag"))
((num_lit) @constant.numeric (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag"))
((nil_lit) @constant.language (#set! test.onlyIfNotDescendantOfNodeWithData "clojure.dismissTag"))
((bool_lit) @constant.language (#set! test.onlyIfNotDescendantOfNodeWithData clojure.dismissTag))
(comment) @comment.line.semicolon
(dis_expr) @comment.block.clojure
((dis_expr)
@comment.block.clojure
(#set! test.onlyIfConfig language-clojure.dismissTag)
(#set! clojure.dismissTag true)
(#set! test.final true))
("ERROR" @invalid.illegal)

View File

@ -0,0 +1,39 @@
exports.activate = function() {
if (!atom.grammars.addInjectionPoint) return;
atom.grammars.addInjectionPoint('source.clojure', {
type: 'quoting_lit',
language: () => 'source-edn',
content: (node) => {
let parent = node.parent
while(parent) {
if(parent.type === 'dis_expr') return null
parent = parent.parent
}
return node
},
includeChildren: true,
languageScope: 'source.edn',
coverShallowerScopes: true
});
atom.grammars.addInjectionPoint('source.clojure', {
type: 'syn_quoting_lit',
language: () => 'source-quoted-clojure',
content: (node) => node,
includeChildren: true,
languageScope: 'source.quoted.clojure',
coverShallowerScopes: true
});
['unquoting_lit', 'unquote_splicing_lit'].forEach(scope => {
atom.grammars.addInjectionPoint('source.quoted.clojure', {
type: scope,
language: () => 'source-clojure',
content: (node) => node,
includeChildren: true,
languageScope: 'source.clojure',
coverShallowerScopes: true
});
})
}

View File

@ -2,10 +2,28 @@
"name": "language-clojure",
"version": "0.22.8",
"description": "Clojure language support in Atom",
"main": "lib/main",
"engines": {
"atom": "*",
"node": "*"
},
"repository": "https://github.com/pulsar-edit/pulsar",
"license": "MIT"
"license": "MIT",
"configSchema": {
"dismissTag": {
"type": "boolean",
"default": true,
"description": "Highlights forms after #_ as comments"
},
"commentTag": {
"type": "boolean",
"default": false,
"description": "Highlights forms like (comment ...) as comments"
},
"markDeprecations": {
"type": "boolean",
"default": true,
"description": "Marks deprecations like `use`"
}
}
}

View File

@ -2,6 +2,9 @@ describe "Clojure grammar", ->
grammar = null
beforeEach ->
atom.config.set('core.useTreeSitterParsers', false)
atom.config.set('core.useExperimentalModernTreeSitter', false)
waitsForPromise ->
atom.packages.activatePackage("language-clojure")

View File

@ -0,0 +1,20 @@
#_
(+ 1 2 3 (+ 4 5))
; ^ constant.numeric
; ^ entity.name.function
(comment 1 2 3)
; ^ keyword.control
; ^ comment.block
;; Deprecations
(use '[foo.bar])
; ^ keyword.control
; ^ !invalid.deprecation
(:use [foo.bar])
; ^ !invalid.deprecated
(ns other.namespace
(:use [foo.bar]))
; ^ !invalid.deprecated

View File

@ -0,0 +1,64 @@
(ns foobar)
; <- punctuation.section.expression.begin
; ^ meta.definition.global
; ^ entity.global
; ^ punctuation.section.expression.end
(defn foobar [a b]
; <- keyword.control
; ^ entity.global
; ^ meta.definition.global
; ^ punctuation.section.vector.begin
; ^ meta.vector
; ^ meta.symbol
; ^ punctuation.section.vector.end
(+ a b 10 20))
;^ meta.expression
;^ entity.name.function
; ^ !entity.name.function
; ^ constant.numeric
(def a "A STRING")
; <- keyword.control
; ^ entity.global
; ^ string.quoted.double
#{'foo}
; <- punctuation.section.set.begin
; ^ meta.symbol
; ^ punctuation.section.set.end
{:key "value"}
; <- punctuation.section.map.begin
; ^ constant.keyword
; ^ meta.map
; ^ punctuation.section.map.end
;; Primitives
10
; <- constant.numeric
10.2
; <- constant.numeric
10M
; <- constant.numeric
10N
; <- constant.numeric
10/2
; <- constant.numeric
:key
; ^ meta.symbol
symbol
; <- meta.symbol
"A string"
; <- string.quoted.double
#"A regular expression"
; <- string.regexp
nil
; <- constant.language
true
; <- constant.language
false
; <- constant.language
;; Comments
; ^ comment.line.semicolon

View File

@ -15,6 +15,7 @@
(+ a b 10 20))
;^ meta.expression
;^ entity.name.function
; ^ !entity.name.function
; ^ constant.numeric
(def a "A STRING")
@ -22,9 +23,9 @@
; ^ entity.global
; ^ string.quoted.double
#{'asd}
#{'foo}
; <- punctuation.section.set.begin
; ^ meta.symbol
; ^ meta.symbol
; ^ punctuation.section.set.end
{:key "value"}
@ -32,3 +33,79 @@
; ^ constant.keyword
; ^ meta.map
; ^ punctuation.section.map.end
;; Primitives
10
; <- constant.numeric
10.2
; <- constant.numeric
10M
; <- constant.numeric
10N
; <- constant.numeric
10/2
; <- constant.numeric
:key
; <- constant.keyword
symbol
; <- meta.symbol
"A string"
; <- string.quoted.double
#"A regular expression"
; <- string.regexp
nil
; <- constant.language
true
; <- constant.language
false
; <- constant.language
error/
; <- meta.symbol
; ^ invalid.illegal
;; Quoting
'(call param ~(call))
; ^ meta.symbol
; ^ !entity.name.function
; ^ meta.symbol
; ^ !entity.name.function
; ^ meta.symbol
; ^ !entity.name.function
`(call param ~(call))
; ^ meta.symbol
; ^ !entity.name.function
; ^ meta.symbol
; ^ !entity.name.function
; ^ entity.name.function
;; Comments
; ^ comment.line.semicolon
#_
(+ 1 2 3 (+ 4 5))
; ^ comment.block
; ^ comment.block
#_
(+ '1 '(:foo))
; ^ comment.block
; ^ !constant.numeric
; ^ comment.block
; ^ !constant.keyword
(comment 1 2 3)
; ^ keyword.control
; ^ constant.numeric
;; Deprecations
(use '[foo.bar])
; ^ invalid.deprecated
(:use [foo.bar])
; ^ !invalid.deprecated
(ns other.namespace
(:use [foo.bar]))
; ^ invalid.deprecated

View File

@ -1,6 +0,0 @@
#_
(+ 1 2)
; <- comment.block
'(a b 1 2)
; ^ !entity.name.function

View File

@ -3,7 +3,7 @@ const path = require('path');
function setConfigForLanguageMode(mode) {
let useTreeSitterParsers = mode !== 'textmate';
let useExperimentalModernTreeSitter = mode === 'wasm-tree-sitter';
let useExperimentalModernTreeSitter = mode === 'modern-tree-sitter';
atom.config.set('core.useTreeSitterParsers', useTreeSitterParsers);
atom.config.set('core.useExperimentalModernTreeSitter', useExperimentalModernTreeSitter);
}
@ -16,21 +16,27 @@ describe('Clojure grammars', () => {
it('tokenizes the editor using TextMate parser', async () => {
setConfigForLanguageMode('textmate');
await runGrammarTests(path.join(__dirname, 'fixtures', 'textmate-tokens.clj'), /;/)
});
it('tokenizes the editor using modern tree-sitter parser', async () => {
setConfigForLanguageMode('modern-tree-sitter');
atom.config.set('language-clojure.dismissTag', true);
atom.config.set('language-clojure.commentTag', false);
atom.config.set('language-clojure.markDeprecations', true);
await runGrammarTests(path.join(__dirname, 'fixtures', 'tokens.clj'), /;/)
});
it('tokenizes the editor using node tree-sitter parser the same as TextMate', async () => {
setConfigForLanguageMode('wasm-tree-sitter');
await runGrammarTests(path.join(__dirname, 'fixtures', 'tokens.clj'), /;/)
});
it('tokenizes the editor using node tree-sitter parser (specific rules)', async () => {
setConfigForLanguageMode('wasm-tree-sitter');
await runGrammarTests(path.join(__dirname, 'fixtures', 'tree-sitter-tokens.clj'), /;/)
it('tokenizes the editor using modern tree-sitter, but with all default configs toggled', async () => {
setConfigForLanguageMode('modern-tree-sitter');
atom.config.set('language-clojure.dismissTag', false);
atom.config.set('language-clojure.commentTag', true);
atom.config.set('language-clojure.markDeprecations', false);
await runGrammarTests(path.join(__dirname, 'fixtures', 'config-toggle.clj'), /;/)
});
it('folds Clojure code', async () => {
setConfigForLanguageMode('wasm-tree-sitter');
setConfigForLanguageMode('modern-tree-sitter');
await runFoldsTests(path.join(__dirname, 'fixtures', 'tree-sitter-folds.clj'), /;/)
});
});

View File

@ -188,9 +188,9 @@
}
},
"node_modules/underscore": {
"version": "1.9.1",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.9.1.tgz",
"integrity": "sha512-5/4etnCkd9c8gwgowi5/om/mYO5ajCaOgdzj/oW+0eQV9WxKBDZw5+ycmKmeaTXjInS/W0BzpGLo2xR2aBwZdg==",
"version": "1.13.6",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz",
"integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==",
"dev": true
},
"node_modules/underscore-plus": {

View File

@ -776,7 +776,7 @@
"node_modules/underscore": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz",
"integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag="
"integrity": "sha512-z4o1fvKUojIWh9XuaVLUDdf86RQiq13AC1dmHbTpoyuu+bquHms76v16CjycCbec87J7z0k//SiQVk0sMdFmpQ=="
},
"node_modules/underscore-plus": {
"version": "1.6.6",
@ -1464,7 +1464,7 @@
"underscore": {
"version": "1.6.0",
"resolved": "https://registry.npmjs.org/underscore/-/underscore-1.6.0.tgz",
"integrity": "sha1-izixDKze9jM3uLJOT/htRa6lKag="
"integrity": "sha512-z4o1fvKUojIWh9XuaVLUDdf86RQiq13AC1dmHbTpoyuu+bquHms76v16CjycCbec87J7z0k//SiQVk0sMdFmpQ=="
},
"underscore-plus": {
"version": "1.6.6",

View File

@ -227,6 +227,11 @@ let options = {
"runAfterFinish": true,
"createDesktopShortcut": true,
"createStartMenuShortcut": true,
"guid": "0949b555-c22c-56b7-873a-a960bdefa81f"
// The GUID is generated from Electron-Builder based on our AppID
// Hardcoding it here means it will always be used as generated from
// the AppID 'dev.pulsar-edit.pulsar'. If this value ever changes,
// A PR to GitHub Desktop must be made with the updated value
},
"extraMetadata": {
},

View File

@ -927,27 +927,6 @@ module.exports = class Package {
}
}
// a require function with both ES5 and ES6 default export support
_require(path) {
const modul = require(path);
if (modul === null || modul === undefined) {
// if null do not bother
return modul;
} else {
if (
modul.__esModule === true &&
typeof modul.default === 'object' &&
typeof modul.default.activate === 'function'
) {
// __esModule flag is true and the activate function exists inside it, which means
// an object containing the main functions (e.g. activate, etc) is default exported
return modul.default;
} else {
return modul;
}
}
}
getMainModulePath() {
if (this.resolvedMainModulePath) return this.mainModulePath;
this.resolvedMainModulePath = true;