mirror of
https://github.com/atom/atom.git
synced 2026-04-28 03:01:47 -04:00
@@ -1,4 +1,4 @@
|
||||
Copyright (c) 2011-2019 GitHub Inc.
|
||||
Copyright (c) 2011-2020 GitHub Inc.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
|
||||
1955
apm/package-lock.json
generated
1955
apm/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -6,6 +6,6 @@
|
||||
"url": "https://github.com/atom/atom.git"
|
||||
},
|
||||
"dependencies": {
|
||||
"atom-package-manager": "2.4.3"
|
||||
"atom-package-manager": "2.5.0"
|
||||
}
|
||||
}
|
||||
|
||||
3988
package-lock.json
generated
3988
package-lock.json
generated
File diff suppressed because it is too large
Load Diff
97
package.json
97
package.json
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "atom",
|
||||
"productName": "Atom",
|
||||
"version": "1.43.0-dev",
|
||||
"version": "1.50.0-dev",
|
||||
"description": "A hackable text editor for the 21st Century.",
|
||||
"main": "./src/main-process/main.js",
|
||||
"repository": {
|
||||
@@ -12,13 +12,13 @@
|
||||
"url": "https://github.com/atom/atom/issues"
|
||||
},
|
||||
"license": "MIT",
|
||||
"electronVersion": "4.2.7",
|
||||
"electronVersion": "5.0.13",
|
||||
"dependencies": {
|
||||
"@atom/nsfw": "1.0.25",
|
||||
"@atom/nsfw": "1.0.26",
|
||||
"@atom/source-map-support": "^0.3.4",
|
||||
"@atom/watcher": "1.3.1",
|
||||
"about": "file:packages/about",
|
||||
"archive-view": "https://www.atom.io/api/packages/archive-view/versions/0.65.1/tarball",
|
||||
"archive-view": "https://www.atom.io/api/packages/archive-view/versions/0.65.2/tarball",
|
||||
"async": "0.2.6",
|
||||
"atom-dark-syntax": "file:packages/atom-dark-syntax",
|
||||
"atom-dark-ui": "file:packages/atom-dark-ui",
|
||||
@@ -50,22 +50,24 @@
|
||||
"deprecation-cop": "file:packages/deprecation-cop",
|
||||
"dev-live-reload": "file:packages/dev-live-reload",
|
||||
"devtron": "1.3.0",
|
||||
"electron-notarize": "0.2.1",
|
||||
"electron-osx-sign": "0.4.15",
|
||||
"encoding-selector": "https://www.atom.io/api/packages/encoding-selector/versions/0.23.9/tarball",
|
||||
"etch": "^0.12.6",
|
||||
"event-kit": "^2.5.3",
|
||||
"exception-reporting": "file:packages/exception-reporting",
|
||||
"find-and-replace": "https://www.atom.io/api/packages/find-and-replace/versions/0.219.1/tarball",
|
||||
"find-and-replace": "https://www.atom.io/api/packages/find-and-replace/versions/0.219.3/tarball",
|
||||
"find-parent-dir": "^0.3.0",
|
||||
"first-mate": "7.4.1",
|
||||
"focus-trap": "2.4.5",
|
||||
"fs-admin": "^0.5.0",
|
||||
"fs-admin": "^0.12.0",
|
||||
"fs-plus": "^3.1.1",
|
||||
"fstream": "1.0.12",
|
||||
"fuzzaldrin": "^2.1",
|
||||
"fuzzy-finder": "https://www.atom.io/api/packages/fuzzy-finder/versions/1.14.1/tarball",
|
||||
"fuzzy-finder": "https://www.atom.io/api/packages/fuzzy-finder/versions/1.14.2/tarball",
|
||||
"git-diff": "file:packages/git-diff",
|
||||
"git-utils": "5.6.1",
|
||||
"github": "https://www.atom.io/api/packages/github/versions/0.31.1/tarball",
|
||||
"git-utils": "5.6.2",
|
||||
"github": "https://www.atom.io/api/packages/github/versions/0.34.2/tarball",
|
||||
"glob": "^7.1.1",
|
||||
"go-to-line": "file:packages/go-to-line",
|
||||
"grammar-selector": "file:packages/grammar-selector",
|
||||
@@ -77,19 +79,19 @@
|
||||
"jasmine-tagged": "^1.1.4",
|
||||
"key-path-helpers": "^0.4.0",
|
||||
"keybinding-resolver": "https://www.atom.io/api/packages/keybinding-resolver/versions/0.39.0/tarball",
|
||||
"language-c": "https://www.atom.io/api/packages/language-c/versions/0.60.18/tarball",
|
||||
"language-c": "https://www.atom.io/api/packages/language-c/versions/0.60.19/tarball",
|
||||
"language-clojure": "https://www.atom.io/api/packages/language-clojure/versions/0.22.8/tarball",
|
||||
"language-coffee-script": "https://www.atom.io/api/packages/language-coffee-script/versions/0.50.0/tarball",
|
||||
"language-csharp": "https://www.atom.io/api/packages/language-csharp/versions/1.1.0/tarball",
|
||||
"language-css": "https://www.atom.io/api/packages/language-css/versions/0.44.2/tarball",
|
||||
"language-gfm": "https://www.atom.io/api/packages/language-gfm/versions/0.90.7/tarball",
|
||||
"language-css": "https://www.atom.io/api/packages/language-css/versions/0.44.4/tarball",
|
||||
"language-gfm": "https://www.atom.io/api/packages/language-gfm/versions/0.90.8/tarball",
|
||||
"language-git": "https://www.atom.io/api/packages/language-git/versions/0.19.1/tarball",
|
||||
"language-go": "https://www.atom.io/api/packages/language-go/versions/0.47.1/tarball",
|
||||
"language-html": "https://www.atom.io/api/packages/language-html/versions/0.53.0/tarball",
|
||||
"language-go": "https://www.atom.io/api/packages/language-go/versions/0.47.2/tarball",
|
||||
"language-html": "https://www.atom.io/api/packages/language-html/versions/0.53.1/tarball",
|
||||
"language-hyperlink": "https://www.atom.io/api/packages/language-hyperlink/versions/0.17.1/tarball",
|
||||
"language-java": "https://www.atom.io/api/packages/language-java/versions/0.31.3/tarball",
|
||||
"language-javascript": "https://www.atom.io/api/packages/language-javascript/versions/0.134.0/tarball",
|
||||
"language-json": "https://www.atom.io/api/packages/language-json/versions/1.0.4/tarball",
|
||||
"language-java": "https://www.atom.io/api/packages/language-java/versions/0.31.5/tarball",
|
||||
"language-javascript": "https://www.atom.io/api/packages/language-javascript/versions/0.134.1/tarball",
|
||||
"language-json": "https://www.atom.io/api/packages/language-json/versions/1.0.5/tarball",
|
||||
"language-less": "https://www.atom.io/api/packages/language-less/versions/0.34.3/tarball",
|
||||
"language-make": "https://www.atom.io/api/packages/language-make/versions/0.23.0/tarball",
|
||||
"language-mustache": "https://www.atom.io/api/packages/language-mustache/versions/0.14.5/tarball",
|
||||
@@ -97,18 +99,18 @@
|
||||
"language-perl": "https://www.atom.io/api/packages/language-perl/versions/0.38.1/tarball",
|
||||
"language-php": "https://www.atom.io/api/packages/language-php/versions/0.44.4/tarball",
|
||||
"language-property-list": "https://www.atom.io/api/packages/language-property-list/versions/0.9.1/tarball",
|
||||
"language-python": "https://www.atom.io/api/packages/language-python/versions/0.53.3/tarball",
|
||||
"language-ruby": "https://www.atom.io/api/packages/language-ruby/versions/0.72.22/tarball",
|
||||
"language-python": "https://www.atom.io/api/packages/language-python/versions/0.53.4/tarball",
|
||||
"language-ruby": "https://www.atom.io/api/packages/language-ruby/versions/0.72.23/tarball",
|
||||
"language-ruby-on-rails": "https://www.atom.io/api/packages/language-ruby-on-rails/versions/0.25.3/tarball",
|
||||
"language-rust-bundled": "file:packages/language-rust-bundled",
|
||||
"language-sass": "https://www.atom.io/api/packages/language-sass/versions/0.62.1/tarball",
|
||||
"language-shellscript": "https://www.atom.io/api/packages/language-shellscript/versions/0.28.0/tarball",
|
||||
"language-shellscript": "https://www.atom.io/api/packages/language-shellscript/versions/0.28.2/tarball",
|
||||
"language-source": "https://www.atom.io/api/packages/language-source/versions/0.9.0/tarball",
|
||||
"language-sql": "https://www.atom.io/api/packages/language-sql/versions/0.25.10/tarball",
|
||||
"language-text": "https://www.atom.io/api/packages/language-text/versions/0.7.4/tarball",
|
||||
"language-todo": "https://www.atom.io/api/packages/language-todo/versions/0.29.4/tarball",
|
||||
"language-toml": "https://www.atom.io/api/packages/language-toml/versions/0.20.0/tarball",
|
||||
"language-typescript": "https://www.atom.io/api/packages/language-typescript/versions/0.5.3/tarball",
|
||||
"language-typescript": "https://www.atom.io/api/packages/language-typescript/versions/0.6.2/tarball",
|
||||
"language-xml": "https://www.atom.io/api/packages/language-xml/versions/0.35.3/tarball",
|
||||
"language-yaml": "https://www.atom.io/api/packages/language-yaml/versions/0.32.0/tarball",
|
||||
"less-cache": "1.1.0",
|
||||
@@ -135,6 +137,7 @@
|
||||
"pathwatcher": "8.1.0",
|
||||
"postcss": "5.2.4",
|
||||
"postcss-selector-parser": "2.2.1",
|
||||
"prebuild-install": "^5.3.3",
|
||||
"property-accessors": "^1.1.3",
|
||||
"random-words": "0.0.1",
|
||||
"resolve": "^1.1.6",
|
||||
@@ -144,20 +147,20 @@
|
||||
"season": "^6.0.2",
|
||||
"semver": "^4.3.3",
|
||||
"service-hub": "^0.7.4",
|
||||
"settings-view": "https://www.atom.io/api/packages/settings-view/versions/0.261.3/tarball",
|
||||
"settings-view": "https://www.atom.io/api/packages/settings-view/versions/0.261.4/tarball",
|
||||
"sinon": "1.17.4",
|
||||
"snippets": "https://www.atom.io/api/packages/snippets/versions/1.5.0/tarball",
|
||||
"snippets": "https://www.atom.io/api/packages/snippets/versions/1.5.1/tarball",
|
||||
"solarized-dark-syntax": "file:packages/solarized-dark-syntax",
|
||||
"solarized-light-syntax": "file:packages/solarized-light-syntax",
|
||||
"spell-check": "https://www.atom.io/api/packages/spell-check/versions/0.75.0/tarball",
|
||||
"spell-check": "https://www.atom.io/api/packages/spell-check/versions/0.76.1/tarball",
|
||||
"status-bar": "https://www.atom.io/api/packages/status-bar/versions/1.8.17/tarball",
|
||||
"styleguide": "https://www.atom.io/api/packages/styleguide/versions/0.49.12/tarball",
|
||||
"symbols-view": "https://www.atom.io/api/packages/symbols-view/versions/0.118.2/tarball",
|
||||
"symbols-view": "https://www.atom.io/api/packages/symbols-view/versions/0.118.4/tarball",
|
||||
"tabs": "https://www.atom.io/api/packages/tabs/versions/0.110.0/tarball",
|
||||
"temp": "^0.9.0",
|
||||
"text-buffer": "13.17.1",
|
||||
"text-buffer": "13.17.3",
|
||||
"timecop": "https://www.atom.io/api/packages/timecop/versions/0.36.2/tarball",
|
||||
"tree-sitter": "0.15.14",
|
||||
"tree-sitter": "0.16.0",
|
||||
"tree-view": "https://www.atom.io/api/packages/tree-view/versions/0.228.0/tarball",
|
||||
"typescript-simple": "1.0.0",
|
||||
"update-package-dependencies": "file:./packages/update-package-dependencies",
|
||||
@@ -182,7 +185,7 @@
|
||||
"solarized-dark-syntax": "file:./packages/solarized-dark-syntax",
|
||||
"solarized-light-syntax": "file:./packages/solarized-light-syntax",
|
||||
"about": "file:./packages/about",
|
||||
"archive-view": "0.65.1",
|
||||
"archive-view": "0.65.2",
|
||||
"autocomplete-atom-api": "0.10.7",
|
||||
"autocomplete-css": "0.17.5",
|
||||
"autocomplete-html": "0.8.8",
|
||||
@@ -199,9 +202,9 @@
|
||||
"dev-live-reload": "file:./packages/dev-live-reload",
|
||||
"encoding-selector": "0.23.9",
|
||||
"exception-reporting": "file:./packages/exception-reporting",
|
||||
"find-and-replace": "0.219.1",
|
||||
"fuzzy-finder": "1.14.1",
|
||||
"github": "0.31.1",
|
||||
"find-and-replace": "0.219.3",
|
||||
"fuzzy-finder": "1.14.2",
|
||||
"github": "0.34.2",
|
||||
"git-diff": "file:./packages/git-diff",
|
||||
"go-to-line": "file:./packages/go-to-line",
|
||||
"grammar-selector": "file:./packages/grammar-selector",
|
||||
@@ -215,12 +218,12 @@
|
||||
"notifications": "0.71.0",
|
||||
"open-on-github": "1.3.2",
|
||||
"package-generator": "1.3.0",
|
||||
"settings-view": "0.261.3",
|
||||
"snippets": "1.5.0",
|
||||
"spell-check": "0.75.0",
|
||||
"settings-view": "0.261.4",
|
||||
"snippets": "1.5.1",
|
||||
"spell-check": "0.76.1",
|
||||
"status-bar": "1.8.17",
|
||||
"styleguide": "0.49.12",
|
||||
"symbols-view": "0.118.2",
|
||||
"symbols-view": "0.118.4",
|
||||
"tabs": "0.110.0",
|
||||
"timecop": "0.36.2",
|
||||
"tree-view": "0.228.0",
|
||||
@@ -228,19 +231,19 @@
|
||||
"welcome": "file:./packages/welcome",
|
||||
"whitespace": "0.37.7",
|
||||
"wrap-guide": "0.41.0",
|
||||
"language-c": "0.60.18",
|
||||
"language-c": "0.60.19",
|
||||
"language-clojure": "0.22.8",
|
||||
"language-coffee-script": "0.50.0",
|
||||
"language-csharp": "1.1.0",
|
||||
"language-css": "0.44.2",
|
||||
"language-gfm": "0.90.7",
|
||||
"language-css": "0.44.4",
|
||||
"language-gfm": "0.90.8",
|
||||
"language-git": "0.19.1",
|
||||
"language-go": "0.47.1",
|
||||
"language-html": "0.53.0",
|
||||
"language-go": "0.47.2",
|
||||
"language-html": "0.53.1",
|
||||
"language-hyperlink": "0.17.1",
|
||||
"language-java": "0.31.3",
|
||||
"language-javascript": "0.134.0",
|
||||
"language-json": "1.0.4",
|
||||
"language-java": "0.31.5",
|
||||
"language-javascript": "0.134.1",
|
||||
"language-json": "1.0.5",
|
||||
"language-less": "0.34.3",
|
||||
"language-make": "0.23.0",
|
||||
"language-mustache": "0.14.5",
|
||||
@@ -248,18 +251,18 @@
|
||||
"language-perl": "0.38.1",
|
||||
"language-php": "0.44.4",
|
||||
"language-property-list": "0.9.1",
|
||||
"language-python": "0.53.3",
|
||||
"language-ruby": "0.72.22",
|
||||
"language-python": "0.53.4",
|
||||
"language-ruby": "0.72.23",
|
||||
"language-ruby-on-rails": "0.25.3",
|
||||
"language-rust-bundled": "file:./packages/language-rust-bundled",
|
||||
"language-sass": "0.62.1",
|
||||
"language-shellscript": "0.28.0",
|
||||
"language-shellscript": "0.28.2",
|
||||
"language-source": "0.9.0",
|
||||
"language-sql": "0.25.10",
|
||||
"language-text": "0.7.4",
|
||||
"language-todo": "0.29.4",
|
||||
"language-toml": "0.20.0",
|
||||
"language-typescript": "0.5.3",
|
||||
"language-typescript": "0.6.2",
|
||||
"language-xml": "0.35.3",
|
||||
"language-yaml": "0.32.0"
|
||||
},
|
||||
|
||||
2213
packages/dalek/package-lock.json
generated
Normal file
2213
packages/dalek/package-lock.json
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -89,8 +89,8 @@ describe('Reporter', () => {
|
||||
stacktrace: [
|
||||
{
|
||||
method: semver.gt(process.versions.electron, '1.6.0')
|
||||
? 'Spec.it'
|
||||
: 'it',
|
||||
? 'Spec.<anonymous>'
|
||||
: '<anonymous>',
|
||||
file: 'spec/reporter-spec.js',
|
||||
lineNumber: lineNumber,
|
||||
columnNumber: columnNumber
|
||||
@@ -150,8 +150,8 @@ describe('Reporter', () => {
|
||||
stacktrace: [
|
||||
{
|
||||
method: semver.gt(process.versions.electron, '1.6.0')
|
||||
? 'Spec.it'
|
||||
: 'it',
|
||||
? 'Spec.<anonymous>'
|
||||
: '<anonymous>',
|
||||
file: '~/exception-reporting/spec/reporter-spec.js',
|
||||
lineNumber: lineNumber,
|
||||
columnNumber: columnNumber
|
||||
@@ -356,8 +356,8 @@ describe('Reporter', () => {
|
||||
stacktrace: [
|
||||
{
|
||||
method: semver.gt(process.versions.electron, '1.6.0')
|
||||
? 'Spec.it'
|
||||
: 'it',
|
||||
? 'Spec.<anonymous>'
|
||||
: '<anonymous>',
|
||||
file: '~/exception-reporting/spec/reporter-spec.js',
|
||||
lineNumber: lineNumber,
|
||||
columnNumber: columnNumber
|
||||
|
||||
@@ -11,7 +11,7 @@
|
||||
"repository": "https://github.com/atom/atom",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"tree-sitter-rust": "^0.15.1"
|
||||
"tree-sitter-rust": "^0.16.0"
|
||||
},
|
||||
"engines": {
|
||||
"atom": ">=1.0.0 <2.0.0"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
Package: <%= appFileName %>
|
||||
Version: <%= version %>
|
||||
Depends: git, libgconf-2-4 (>= 3.2.5) | libgconf2-4, libgtk-3-0 (>= 3.9.10), libgcrypt11 | libgcrypt20, libnotify4, libxtst6, libnss3 (>= 2:3.22), python, gvfs-bin, xdg-utils, libx11-xcb1, libxss1, libasound2 (>= 1.0.16), libxkbfile1, libcurl3 | libcurl4, policykit-1
|
||||
Depends: git, libgconf-2-4 (>= 3.2.5) | libgconf2-4, libgtk-3-0 (>= 3.9.10), libgcrypt11 | libgcrypt20, libnotify4, libxtst6, libnss3 (>= 2:3.22), gvfs-bin, xdg-utils, libx11-xcb1, libxss1, libasound2 (>= 1.0.16), libxkbfile1, libcurl3 | libcurl4, policykit-1
|
||||
Recommends: lsb-release
|
||||
Suggests: libsecret-1-0, gir1.2-gnomekeyring-1.0
|
||||
Section: devel
|
||||
|
||||
@@ -54,3 +54,4 @@ cp "icons/16.png" "%{buildroot}/<%= installDir %>/share/icons/hicolor/16x16/apps
|
||||
<%= installDir %>/share/applications/<%= appFileName %>.desktop
|
||||
<%= installDir %>/share/polkit-1/actions/<%= policyFileName %>
|
||||
<%= installDir %>/share/icons/hicolor/
|
||||
%attr(4755, root, root) <%= installDir %>/share/<%= appFileName %>/chrome-sandbox
|
||||
|
||||
10
resources/mac/entitlements.plist
Normal file
10
resources/mac/entitlements.plist
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||
<plist version="1.0">
|
||||
<dict>
|
||||
<key>com.apple.security.cs.allow-unsigned-executable-memory</key>
|
||||
<true/>
|
||||
<key>com.apple.security.cs.disable-library-validation</key>
|
||||
<true/>
|
||||
</dict>
|
||||
</plist>
|
||||
@@ -48,6 +48,7 @@ const generateMetadata = require('./lib/generate-metadata')
|
||||
const generateModuleCache = require('./lib/generate-module-cache')
|
||||
const generateStartupSnapshot = require('./lib/generate-startup-snapshot')
|
||||
const installApplication = require('./lib/install-application')
|
||||
const notarizeOnMac = require('./lib/notarize-on-mac')
|
||||
const packageApplication = require('./lib/package-application')
|
||||
const prebuildLessCache = require('./lib/prebuild-less-cache')
|
||||
const testSignOnMac = require('./lib/test-sign-on-mac')
|
||||
@@ -89,11 +90,12 @@ if (!argv.generateApiDocs) {
|
||||
binariesPromise
|
||||
.then(packageApplication)
|
||||
.then(packagedAppPath => generateStartupSnapshot(packagedAppPath).then(() => packagedAppPath))
|
||||
.then(packagedAppPath => {
|
||||
.then(async packagedAppPath => {
|
||||
switch (process.platform) {
|
||||
case 'darwin': {
|
||||
if (argv.codeSign) {
|
||||
codeSignOnMac(packagedAppPath)
|
||||
await codeSignOnMac(packagedAppPath)
|
||||
await notarizeOnMac(packagedAppPath)
|
||||
} else if (argv.testSign) {
|
||||
testSignOnMac(packagedAppPath)
|
||||
} else {
|
||||
|
||||
@@ -1,13 +1,17 @@
|
||||
'use strict';
|
||||
|
||||
const buildMetadata = require('../package.json');
|
||||
const CONFIG = require('../config');
|
||||
const semver = require('semver');
|
||||
const chromedriverMetadataPath = require('electron-chromedriver/package.json');
|
||||
const mksnapshotMetadataPath = require('electron-mksnapshot/package.json');
|
||||
|
||||
module.exports = function() {
|
||||
// Chromedriver should be specified as ^n.x where n matches the Electron major version
|
||||
// Chromedriver should be at least v9.0.0
|
||||
// Mksnapshot should be at least v9.0.2
|
||||
const chromedriverVer = buildMetadata.dependencies['electron-chromedriver'];
|
||||
const mksnapshotVer = buildMetadata.dependencies['electron-mksnapshot'];
|
||||
const chromedriverActualVer = chromedriverMetadataPath.version;
|
||||
const mksnapshotActualVer = mksnapshotMetadataPath.version;
|
||||
|
||||
// Always use caret on electron-chromedriver so that it can pick up the best minor/patch versions
|
||||
if (!chromedriverVer.startsWith('^')) {
|
||||
@@ -22,24 +26,15 @@ module.exports = function() {
|
||||
);
|
||||
}
|
||||
|
||||
const electronVer = CONFIG.appMetadata.electronVersion;
|
||||
if (!semver.satisfies(electronVer, chromedriverVer)) {
|
||||
if (!semver.satisfies(chromedriverActualVer, '>=9.0.0')) {
|
||||
throw new Error(
|
||||
`electron-chromedriver ${chromedriverVer} incompatible with electron ${electronVer}.\n` +
|
||||
'Did you upgrade electron in package.json and forget to upgrade electron-chromedriver in ' +
|
||||
`script/package.json to '~${semver.major(electronVer)}.${semver.minor(
|
||||
electronVer
|
||||
)}' ?`
|
||||
`electron-chromedriver should be at least v9.0.0 to support the ELECTRON_CUSTOM_VERSION environment variable.`
|
||||
);
|
||||
}
|
||||
|
||||
if (!semver.satisfies(electronVer, mksnapshotVer)) {
|
||||
if (!semver.satisfies(mksnapshotActualVer, '>=9.0.2')) {
|
||||
throw new Error(
|
||||
`electron-mksnapshot ${mksnapshotVer} incompatible with electron ${electronVer}.\n` +
|
||||
'Did you upgrade electron in package.json and forget to upgrade electron-mksnapshot in ' +
|
||||
`script/package.json to '~${semver.major(electronVer)}.${semver.minor(
|
||||
electronVer
|
||||
)}' ?`
|
||||
`electron-mksnapshot should be at least v9.0.2 to support the ELECTRON_CUSTOM_VERSION environment variable.`
|
||||
);
|
||||
}
|
||||
};
|
||||
|
||||
@@ -1,10 +1,18 @@
|
||||
const downloadFileFromGithub = require('./download-file-from-github');
|
||||
const CONFIG = require('../config');
|
||||
const fs = require('fs-extra');
|
||||
const os = require('os');
|
||||
const path = require('path');
|
||||
const spawnSync = require('./spawn-sync');
|
||||
const osxSign = require('electron-osx-sign');
|
||||
const macEntitlementsPath = path.join(
|
||||
CONFIG.repositoryRootPath,
|
||||
'resources',
|
||||
'mac',
|
||||
'entitlements.plist'
|
||||
);
|
||||
|
||||
module.exports = function(packagedAppPath) {
|
||||
module.exports = async function(packagedAppPath) {
|
||||
if (
|
||||
!process.env.ATOM_MAC_CODE_SIGNING_CERT_DOWNLOAD_URL &&
|
||||
!process.env.ATOM_MAC_CODE_SIGNING_CERT_PATH
|
||||
@@ -120,20 +128,22 @@ module.exports = function(packagedAppPath) {
|
||||
}
|
||||
|
||||
console.log(`Code-signing application at ${packagedAppPath}`);
|
||||
spawnSync(
|
||||
'codesign',
|
||||
[
|
||||
'--deep',
|
||||
'--force',
|
||||
'--verbose',
|
||||
'--keychain',
|
||||
process.env.ATOM_MAC_CODE_SIGNING_KEYCHAIN,
|
||||
'--sign',
|
||||
'Developer ID Application: GitHub',
|
||||
packagedAppPath
|
||||
],
|
||||
{ stdio: 'inherit' }
|
||||
);
|
||||
|
||||
try {
|
||||
await osxSign.signAsync({
|
||||
app: packagedAppPath,
|
||||
entitlements: macEntitlementsPath,
|
||||
'entitlements-inherit': macEntitlementsPath,
|
||||
identity: 'Developer ID Application: GitHub',
|
||||
keychain: process.env.ATOM_MAC_CODE_SIGNING_KEYCHAIN,
|
||||
platform: 'darwin',
|
||||
hardenedRuntime: true
|
||||
});
|
||||
console.info('Application signing complete');
|
||||
} catch (err) {
|
||||
console.error('Applicaiton singing failed');
|
||||
console.error(err);
|
||||
}
|
||||
} finally {
|
||||
if (!process.env.ATOM_MAC_CODE_SIGNING_CERT_PATH) {
|
||||
console.log(`Deleting certificate at ${certPath}`);
|
||||
|
||||
@@ -62,6 +62,7 @@ function compress(inputDirPath, outputArchivePath) {
|
||||
}
|
||||
compressArguments.push(outputArchivePath, path.basename(inputDirPath));
|
||||
spawnSync(compressCommand, compressArguments, {
|
||||
cwd: path.dirname(inputDirPath)
|
||||
cwd: path.dirname(inputDirPath),
|
||||
maxBuffer: 2024 * 2024
|
||||
});
|
||||
}
|
||||
|
||||
@@ -121,6 +121,8 @@ module.exports = function(packagedAppPath) {
|
||||
path.join(debianPackageBinDirPath, apmExecutableName)
|
||||
);
|
||||
|
||||
fs.chmodSync(path.join(debianPackageAtomDirPath, 'chrome-sandbox'), '4755');
|
||||
|
||||
console.log(`Writing control file into "${debianPackageConfigPath}"`);
|
||||
const packageSizeInKilobytes = spawnSync('du', ['-sk', packagedAppPath])
|
||||
.stdout.toString()
|
||||
|
||||
@@ -118,6 +118,9 @@ module.exports = function(packagedAppPath) {
|
||||
requiredModuleRelativePath.endsWith(
|
||||
path.join('node_modules', 'temp', 'lib', 'temp.js')
|
||||
) ||
|
||||
requiredModuleRelativePath.endsWith(
|
||||
path.join('node_modules', 'parse5', 'lib', 'index.js')
|
||||
) ||
|
||||
requiredModuleRelativePath === path.join('..', 'exports', 'atom.js') ||
|
||||
requiredModuleRelativePath ===
|
||||
path.join('..', 'src', 'electron-shims.js') ||
|
||||
@@ -177,6 +180,22 @@ module.exports = function(packagedAppPath) {
|
||||
'glob',
|
||||
'glob.js'
|
||||
) ||
|
||||
requiredModuleRelativePath ===
|
||||
path.join(
|
||||
'..',
|
||||
'node_modules',
|
||||
'spell-check',
|
||||
'lib',
|
||||
'locale-checker.js'
|
||||
) ||
|
||||
requiredModuleRelativePath ===
|
||||
path.join(
|
||||
'..',
|
||||
'node_modules',
|
||||
'spell-check',
|
||||
'lib',
|
||||
'system-checker.js'
|
||||
) ||
|
||||
requiredModuleRelativePath ===
|
||||
path.join(
|
||||
'..',
|
||||
@@ -215,6 +234,8 @@ module.exports = function(packagedAppPath) {
|
||||
path.join('..', 'node_modules', 'yauzl', 'index.js') ||
|
||||
requiredModuleRelativePath ===
|
||||
path.join('..', 'node_modules', 'winreg', 'lib', 'registry.js') ||
|
||||
requiredModuleRelativePath ===
|
||||
path.join('..', 'node_modules', 'scandal', 'lib', 'scandal.js') ||
|
||||
requiredModuleRelativePath ===
|
||||
path.join(
|
||||
'..',
|
||||
|
||||
@@ -4,6 +4,8 @@ const childProcess = require('child_process');
|
||||
|
||||
const CONFIG = require('../config');
|
||||
|
||||
process.env.ELECTRON_CUSTOM_VERSION = CONFIG.appMetadata.electronVersion;
|
||||
|
||||
module.exports = function(ci) {
|
||||
console.log('Installing script dependencies');
|
||||
childProcess.execFileSync(
|
||||
|
||||
18
script/lib/notarize-on-mac.js
Normal file
18
script/lib/notarize-on-mac.js
Normal file
@@ -0,0 +1,18 @@
|
||||
const notarize = require('electron-notarize').notarize;
|
||||
|
||||
module.exports = async function(packagedAppPath) {
|
||||
const appBundleId = 'com.github.atom';
|
||||
const appleId = process.env.AC_USER;
|
||||
const appleIdPassword = process.env.AC_PASSWORD;
|
||||
console.log(`Notarizing application at ${packagedAppPath}`);
|
||||
try {
|
||||
await notarize({
|
||||
appBundleId: appBundleId,
|
||||
appPath: packagedAppPath,
|
||||
appleId: appleId,
|
||||
appleIdPassword: appleIdPassword
|
||||
});
|
||||
} catch (e) {
|
||||
throw new Error(e);
|
||||
}
|
||||
};
|
||||
2602
script/package-lock.json
generated
2602
script/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -10,9 +10,9 @@
|
||||
"coffeelint": "1.15.7",
|
||||
"colors": "1.1.2",
|
||||
"donna": "1.0.16",
|
||||
"electron-chromedriver": "^4.2.0",
|
||||
"electron-link": "0.4.0",
|
||||
"electron-mksnapshot": "^4.2.0",
|
||||
"electron-chromedriver": "^9.0.0",
|
||||
"electron-link": "0.4.1",
|
||||
"electron-mksnapshot": "^9.0.2",
|
||||
"electron-packager": "12.2.0",
|
||||
"@atom/electron-winstaller": "0.0.1",
|
||||
"eslint": "^5.16.0",
|
||||
@@ -23,7 +23,7 @@
|
||||
"eslint-plugin-prettier": "^3.0.1",
|
||||
"eslint-plugin-promise": "^4.1.1",
|
||||
"eslint-plugin-standard": "^4.0.0",
|
||||
"fs-admin": "^0.5.0",
|
||||
"fs-admin": "^0.12.0",
|
||||
"fs-extra": "0.30.0",
|
||||
"glob": "7.0.3",
|
||||
"joanna": "0.0.10",
|
||||
@@ -34,7 +34,7 @@
|
||||
"minidump": "0.9.0",
|
||||
"mkdirp": "0.5.1",
|
||||
"normalize-package-data": "2.3.5",
|
||||
"npm": "6.2.0",
|
||||
"npm": "6.14.4",
|
||||
"passwd-user": "2.1.0",
|
||||
"pegjs": "0.9.0",
|
||||
"prettier": "^1.17.0",
|
||||
@@ -48,5 +48,8 @@
|
||||
"terser": "^3.8.1",
|
||||
"webdriverio": "^5.9.2",
|
||||
"yargs": "4.8.1"
|
||||
},
|
||||
"scripts": {
|
||||
"postinstall": "node ./redownload-electron-bins.js"
|
||||
}
|
||||
}
|
||||
|
||||
50
script/redownload-electron-bins.js
Normal file
50
script/redownload-electron-bins.js
Normal file
@@ -0,0 +1,50 @@
|
||||
const { spawn } = require('child_process');
|
||||
|
||||
const electronVersion = require('./config').appMetadata.electronVersion;
|
||||
|
||||
if (process.env.ELECTRON_CUSTOM_VERSION !== electronVersion) {
|
||||
const electronEnv = process.env.ELECTRON_CUSTOM_VERSION;
|
||||
console.info(
|
||||
`env var ELECTRON_CUSTOM_VERSION is not set,\n` +
|
||||
`or doesn't match electronVersion in ../package.json.\n` +
|
||||
`(is: "${electronEnv}", wanted: "${electronVersion}").\n` +
|
||||
`Setting, and re-downloading chromedriver and mksnapshot.\n`
|
||||
);
|
||||
|
||||
process.env.ELECTRON_CUSTOM_VERSION = electronVersion;
|
||||
const downloadChromedriverPath = require.resolve(
|
||||
'electron-chromedriver/download-chromedriver.js'
|
||||
);
|
||||
const downloadMksnapshotPath = require.resolve(
|
||||
'electron-mksnapshot/download-mksnapshot.js'
|
||||
);
|
||||
const downloadChromedriver = spawn('node', [downloadChromedriverPath]);
|
||||
const downloadMksnapshot = spawn('node', [downloadMksnapshotPath]);
|
||||
var exitStatus;
|
||||
|
||||
downloadChromedriver.on('close', code => {
|
||||
if (code === 0) {
|
||||
exitStatus = 'success';
|
||||
} else {
|
||||
exitStatus = 'error';
|
||||
}
|
||||
|
||||
console.info(
|
||||
`info: Done re-downloading chromedriver. Status: ${exitStatus}`
|
||||
);
|
||||
});
|
||||
|
||||
downloadMksnapshot.on('close', code => {
|
||||
if (code === 0) {
|
||||
exitStatus = 'success';
|
||||
} else {
|
||||
exitStatus = 'error';
|
||||
}
|
||||
|
||||
console.info(`info: Done re-downloading mksnapshot. Status: ${exitStatus}`);
|
||||
});
|
||||
} else {
|
||||
console.info(
|
||||
'info: env var "ELECTRON_CUSTOM_VERSION" is already set correctly.\n(No need to re-download chromedriver or mksnapshot). Skipping.\n'
|
||||
);
|
||||
}
|
||||
@@ -84,6 +84,11 @@ function runCoreMainProcessTests (callback) {
|
||||
'--resource-path', resourcePath,
|
||||
'--test', '--main-process', testPath
|
||||
]
|
||||
|
||||
if(process.env.CI && process.platform === 'linux') {
|
||||
testArguments.push('--no-sandbox')
|
||||
}
|
||||
|
||||
const testEnv = Object.assign({}, prepareEnv('core-main-process'), {ATOM_GITHUB_INLINE_GIT_EXEC: 'true'})
|
||||
|
||||
console.log('Executing core main process tests'.bold.green)
|
||||
@@ -148,10 +153,12 @@ for (let packageName in CONFIG.appMetadata.packageDependencies) {
|
||||
console.log(`Executing ${packageName} tests`.bold.green)
|
||||
}
|
||||
const cp = childProcess.spawn(executablePath, testArguments, {env: testEnv})
|
||||
|
||||
let stderrOutput = ''
|
||||
cp.stderr.on('data', data => { stderrOutput += data })
|
||||
cp.stdout.on('data', data => { stderrOutput += data })
|
||||
cp.on('error', error => {
|
||||
console.log(error, "error")
|
||||
finalize()
|
||||
callback(error)
|
||||
})
|
||||
|
||||
@@ -15,9 +15,10 @@ jobs:
|
||||
- template: platforms/macos.yml
|
||||
- template: platforms/linux.yml
|
||||
|
||||
|
||||
- job: Release
|
||||
pool:
|
||||
vmImage: vs2015-win2012r2 # needed for Python 2.7 and gyp
|
||||
vmImage: vs2017-win2016
|
||||
|
||||
dependsOn:
|
||||
- GetReleaseVersion
|
||||
@@ -31,11 +32,11 @@ jobs:
|
||||
steps:
|
||||
- task: NodeTool@0
|
||||
inputs:
|
||||
versionSpec: 10.2.1
|
||||
displayName: Install Node.js 10.2.1
|
||||
versionSpec: 12.13.1
|
||||
displayName: Install Node.js 12.13.1
|
||||
|
||||
# This has to be done separately because VSTS inexplicably
|
||||
# exits the script block after `npm install` completes.
|
||||
#This has to be done separately because VSTS inexplicably
|
||||
#exits the script block after `npm install` completes.
|
||||
- script: |
|
||||
cd script\vsts
|
||||
npm install
|
||||
|
||||
@@ -24,10 +24,10 @@ jobs:
|
||||
|
||||
- task: NodeTool@0
|
||||
inputs:
|
||||
versionSpec: 10.2.1
|
||||
displayName: Install Node.js 10.2.1
|
||||
versionSpec: 12.13.1
|
||||
displayName: Install Node.js 12.13.1
|
||||
|
||||
- script: npm install --global npm@6.2.0
|
||||
- script: npm install --global npm@6.12.1
|
||||
displayName: Update npm
|
||||
|
||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
||||
@@ -56,7 +56,7 @@ jobs:
|
||||
|
||||
- script: script/lint
|
||||
displayName: Run linter
|
||||
|
||||
|
||||
- script: script/build --no-bootstrap --create-debian-package --create-rpm-package --compress-artifacts
|
||||
env:
|
||||
GITHUB_TOKEN: $(GITHUB_TOKEN)
|
||||
@@ -66,6 +66,11 @@ jobs:
|
||||
npm_config_clang: 1
|
||||
displayName: Build Atom
|
||||
|
||||
- script: |
|
||||
sudo chown root ./out/atom*-amd64/chrome-sandbox
|
||||
sudo chmod 4755 ./out/atom*-amd64/chrome-sandbox
|
||||
displayName: Tweaking chrome-sandbox binary
|
||||
|
||||
- script: script/test
|
||||
env:
|
||||
CI: true
|
||||
|
||||
@@ -9,15 +9,15 @@ jobs:
|
||||
IsReleaseBranch: $[ dependencies.GetReleaseVersion.outputs['Version.IsReleaseBranch'] ]
|
||||
IsSignedZipBranch: $[ dependencies.GetReleaseVersion.outputs['Version.IsSignedZipBranch'] ]
|
||||
pool:
|
||||
vmImage: macos-10.13
|
||||
vmImage: macos-10.14
|
||||
|
||||
steps:
|
||||
- task: NodeTool@0
|
||||
inputs:
|
||||
versionSpec: 10.2.1
|
||||
displayName: Install Node.js 10.2.1
|
||||
versionSpec: 12.13.1
|
||||
displayName: Install Node.js 12.13.1
|
||||
|
||||
- script: npm install --global npm@6.2.0
|
||||
- script: npm install --global npm@6.12.1
|
||||
displayName: Update npm
|
||||
|
||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
||||
@@ -33,6 +33,7 @@ jobs:
|
||||
CI: true
|
||||
CI_PROVIDER: VSTS
|
||||
NPM_BIN_PATH: /usr/local/bin/npm
|
||||
npm_config_build_from_source: true
|
||||
condition: ne(variables['CacheRestored'], 'true')
|
||||
|
||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.SaveCacheV1.SaveCache@1
|
||||
@@ -61,6 +62,8 @@ jobs:
|
||||
ATOM_MAC_CODE_SIGNING_CERT_PASSWORD: $(ATOM_MAC_CODE_SIGNING_CERT_PASSWORD)
|
||||
ATOM_MAC_CODE_SIGNING_KEYCHAIN: $(ATOM_MAC_CODE_SIGNING_KEYCHAIN)
|
||||
ATOM_MAC_CODE_SIGNING_KEYCHAIN_PASSWORD: $(ATOM_MAC_CODE_SIGNING_KEYCHAIN_PASSWORD)
|
||||
AC_USER: $(AC_USER)
|
||||
AC_PASSWORD: $(AC_PASSWORD)
|
||||
|
||||
- script: |
|
||||
cp $(Build.SourcesDirectory)/out/*.zip $(Build.ArtifactStagingDirectory)
|
||||
@@ -95,7 +98,7 @@ jobs:
|
||||
dependsOn: macOS_build
|
||||
timeoutInMinutes: 180
|
||||
pool:
|
||||
vmImage: macos-10.13
|
||||
vmImage: macos-10.14
|
||||
strategy:
|
||||
maxParallel: 3
|
||||
matrix:
|
||||
@@ -112,10 +115,10 @@ jobs:
|
||||
steps:
|
||||
- task: NodeTool@0
|
||||
inputs:
|
||||
versionSpec: 10.2.1
|
||||
displayName: Install Node.js 10.2.1
|
||||
versionSpec: 12.13.1
|
||||
displayName: Install Node.js 12.13.1
|
||||
|
||||
- script: npm install --global npm@6.2.0
|
||||
- script: npm install --global npm@6.12.1
|
||||
displayName: Update npm
|
||||
|
||||
- task: 1ESLighthouseEng.PipelineArtifactCaching.RestoreCacheV1.RestoreCache@1
|
||||
@@ -133,6 +136,8 @@ jobs:
|
||||
CI: true
|
||||
CI_PROVIDER: VSTS
|
||||
NPM_BIN_PATH: /usr/local/bin/npm
|
||||
npm_config_build_from_source: true
|
||||
|
||||
condition: ne(variables['CacheRestored'], 'true')
|
||||
|
||||
- task: DownloadBuildArtifacts@0
|
||||
|
||||
@@ -11,7 +11,7 @@ jobs:
|
||||
buildArch: x86
|
||||
|
||||
pool:
|
||||
vmImage: vs2015-win2012r2 # needed for python 2.7 and gyp
|
||||
vmImage: vs2017-win2016
|
||||
|
||||
variables:
|
||||
AppName: $[ dependencies.GetReleaseVersion.outputs['Version.AppName'] ]
|
||||
@@ -20,10 +20,14 @@ jobs:
|
||||
IsSignedZipBranch: $[ dependencies.GetReleaseVersion.outputs['Version.IsSignedZipBranch'] ]
|
||||
|
||||
steps:
|
||||
- task: UsePythonVersion@0
|
||||
inputs:
|
||||
versionSpec: '2.7'
|
||||
|
||||
- task: NodeTool@0
|
||||
inputs:
|
||||
versionSpec: 10.2.1
|
||||
displayName: Install Node.js 10.2.1
|
||||
versionSpec: 12.13.1
|
||||
displayName: Install Node.js 12.13.1
|
||||
|
||||
- script: |
|
||||
ECHO Installing npm-windows-upgrade
|
||||
@@ -32,8 +36,12 @@ jobs:
|
||||
|
||||
- script: |
|
||||
ECHO Upgrading npm
|
||||
npm-windows-upgrade --no-spinner --no-prompt --npm-version 6.2.0
|
||||
displayName: Install npm 6.2.0
|
||||
npm-windows-upgrade --no-spinner --no-prompt --npm-version 6.12.1
|
||||
displayName: Install npm 6.12.1
|
||||
|
||||
- script: |
|
||||
npm install --global --production windows-build-tools@4.0
|
||||
displayName: Install windows build tools
|
||||
|
||||
- script: |
|
||||
cd script\vsts
|
||||
@@ -62,7 +70,8 @@ jobs:
|
||||
BUILD_ARCH: $(buildArch)
|
||||
CI: true
|
||||
CI_PROVIDER: VSTS
|
||||
NPM_BIN_PATH: "D:\\a\\_tool\\node\\10.2.1\\x64\\npm.cmd"
|
||||
NPM_BIN_PATH: "C:\\hostedtoolcache\\windows\\node\\12.13.1\\x64\\npm.cmd"
|
||||
npm_config_build_from_source: true
|
||||
displayName: Bootstrap build environment
|
||||
condition: ne(variables['CacheRestored'], 'true')
|
||||
|
||||
@@ -110,6 +119,7 @@ jobs:
|
||||
ATOM_WIN_CODE_SIGNING_CERT_PASSWORD: $(ATOM_WIN_CODE_SIGNING_CERT_PASSWORD)
|
||||
IS_RELEASE_BRANCH: $(IsReleaseBranch)
|
||||
IS_SIGNED_ZIP_BRANCH: $(IsSignedZipBranch)
|
||||
npm_config_build_from_source: true
|
||||
displayName: Build Atom
|
||||
|
||||
- script: node script\vsts\windows-run.js script\test.cmd
|
||||
|
||||
@@ -22,7 +22,7 @@ jobs:
|
||||
|
||||
- job: UploadArtifacts
|
||||
pool:
|
||||
vmImage: vs2015-win2012r2 # needed for python 2.7 and gyp
|
||||
vmImage: vs2017-win2016
|
||||
|
||||
dependsOn:
|
||||
- GetReleaseVersion
|
||||
@@ -38,8 +38,8 @@ jobs:
|
||||
steps:
|
||||
- task: NodeTool@0
|
||||
inputs:
|
||||
versionSpec: 10.2.1
|
||||
displayName: Install Node.js 10.2.1
|
||||
versionSpec: 12.13.1
|
||||
displayName: Install Node.js 12.13.1
|
||||
|
||||
# This has to be done separately because VSTS inexplicably
|
||||
# exits the script block after `npm install` completes.
|
||||
|
||||
@@ -5,7 +5,7 @@ const path = require('path');
|
||||
const download = require('download');
|
||||
const childProcess = require('child_process');
|
||||
|
||||
const nodeVersion = '10.2.1';
|
||||
const nodeVersion = '12.13.1';
|
||||
const nodeFileName = `node-v${nodeVersion}-win-x86`;
|
||||
const extractedNodePath = `c:\\tmp\\${nodeFileName}`;
|
||||
|
||||
|
||||
@@ -1680,11 +1680,17 @@ describe('TextEditorComponent', () => {
|
||||
width: 50,
|
||||
scrollSensitivity
|
||||
});
|
||||
// stub in place for Event.preventDefault()
|
||||
const eventPreventDefaultStub = function() {};
|
||||
|
||||
{
|
||||
const expectedScrollTop = 20 * (scrollSensitivity / 100);
|
||||
const expectedScrollLeft = component.getScrollLeft();
|
||||
component.didMouseWheel({ wheelDeltaX: -5, wheelDeltaY: -20 });
|
||||
component.didMouseWheel({
|
||||
wheelDeltaX: -5,
|
||||
wheelDeltaY: -20,
|
||||
preventDefault: eventPreventDefaultStub
|
||||
});
|
||||
expect(component.getScrollTop()).toBe(expectedScrollTop);
|
||||
expect(component.getScrollLeft()).toBe(expectedScrollLeft);
|
||||
expect(component.refs.content.style.transform).toBe(
|
||||
@@ -1696,7 +1702,11 @@ describe('TextEditorComponent', () => {
|
||||
const expectedScrollTop =
|
||||
component.getScrollTop() - 10 * (scrollSensitivity / 100);
|
||||
const expectedScrollLeft = component.getScrollLeft();
|
||||
component.didMouseWheel({ wheelDeltaX: -5, wheelDeltaY: 10 });
|
||||
component.didMouseWheel({
|
||||
wheelDeltaX: -5,
|
||||
wheelDeltaY: 10,
|
||||
preventDefault: eventPreventDefaultStub
|
||||
});
|
||||
expect(component.getScrollTop()).toBe(expectedScrollTop);
|
||||
expect(component.getScrollLeft()).toBe(expectedScrollLeft);
|
||||
expect(component.refs.content.style.transform).toBe(
|
||||
@@ -1707,7 +1717,11 @@ describe('TextEditorComponent', () => {
|
||||
{
|
||||
const expectedScrollTop = component.getScrollTop();
|
||||
const expectedScrollLeft = 20 * (scrollSensitivity / 100);
|
||||
component.didMouseWheel({ wheelDeltaX: -20, wheelDeltaY: 10 });
|
||||
component.didMouseWheel({
|
||||
wheelDeltaX: -20,
|
||||
wheelDeltaY: 10,
|
||||
preventDefault: eventPreventDefaultStub
|
||||
});
|
||||
expect(component.getScrollTop()).toBe(expectedScrollTop);
|
||||
expect(component.getScrollLeft()).toBe(expectedScrollLeft);
|
||||
expect(component.refs.content.style.transform).toBe(
|
||||
@@ -1719,7 +1733,11 @@ describe('TextEditorComponent', () => {
|
||||
const expectedScrollTop = component.getScrollTop();
|
||||
const expectedScrollLeft =
|
||||
component.getScrollLeft() - 10 * (scrollSensitivity / 100);
|
||||
component.didMouseWheel({ wheelDeltaX: 10, wheelDeltaY: -8 });
|
||||
component.didMouseWheel({
|
||||
wheelDeltaX: 10,
|
||||
wheelDeltaY: -8,
|
||||
preventDefault: eventPreventDefaultStub
|
||||
});
|
||||
expect(component.getScrollTop()).toBe(expectedScrollTop);
|
||||
expect(component.getScrollLeft()).toBe(expectedScrollLeft);
|
||||
expect(component.refs.content.style.transform).toBe(
|
||||
@@ -1735,11 +1753,17 @@ describe('TextEditorComponent', () => {
|
||||
width: 50,
|
||||
scrollSensitivity
|
||||
});
|
||||
// stub in place for Event.preventDefault()
|
||||
const eventPreventDefaultStub = function() {};
|
||||
|
||||
component.props.platform = 'linux';
|
||||
{
|
||||
const expectedScrollTop = 20 * (scrollSensitivity / 100);
|
||||
component.didMouseWheel({ wheelDeltaX: 0, wheelDeltaY: -20 });
|
||||
component.didMouseWheel({
|
||||
wheelDeltaX: 0,
|
||||
wheelDeltaY: -20,
|
||||
preventDefault: eventPreventDefaultStub
|
||||
});
|
||||
expect(component.getScrollTop()).toBe(expectedScrollTop);
|
||||
expect(component.refs.content.style.transform).toBe(
|
||||
`translate(0px, -${expectedScrollTop}px)`
|
||||
@@ -1752,7 +1776,8 @@ describe('TextEditorComponent', () => {
|
||||
component.didMouseWheel({
|
||||
wheelDeltaX: 0,
|
||||
wheelDeltaY: -20,
|
||||
shiftKey: true
|
||||
shiftKey: true,
|
||||
preventDefault: eventPreventDefaultStub
|
||||
});
|
||||
expect(component.getScrollLeft()).toBe(expectedScrollLeft);
|
||||
expect(component.refs.content.style.transform).toBe(
|
||||
@@ -1766,7 +1791,8 @@ describe('TextEditorComponent', () => {
|
||||
component.didMouseWheel({
|
||||
wheelDeltaX: -20,
|
||||
wheelDeltaY: 0,
|
||||
shiftKey: true
|
||||
shiftKey: true,
|
||||
preventDefault: eventPreventDefaultStub
|
||||
});
|
||||
expect(component.getScrollTop()).toBe(expectedScrollTop);
|
||||
expect(component.refs.content.style.transform).toBe(
|
||||
@@ -1778,7 +1804,11 @@ describe('TextEditorComponent', () => {
|
||||
component.props.platform = 'win32';
|
||||
{
|
||||
const expectedScrollTop = 20 * (scrollSensitivity / 100);
|
||||
component.didMouseWheel({ wheelDeltaX: 0, wheelDeltaY: -20 });
|
||||
component.didMouseWheel({
|
||||
wheelDeltaX: 0,
|
||||
wheelDeltaY: -20,
|
||||
preventDefault: eventPreventDefaultStub
|
||||
});
|
||||
expect(component.getScrollTop()).toBe(expectedScrollTop);
|
||||
expect(component.refs.content.style.transform).toBe(
|
||||
`translate(0px, -${expectedScrollTop}px)`
|
||||
@@ -1791,7 +1821,8 @@ describe('TextEditorComponent', () => {
|
||||
component.didMouseWheel({
|
||||
wheelDeltaX: 0,
|
||||
wheelDeltaY: -20,
|
||||
shiftKey: true
|
||||
shiftKey: true,
|
||||
preventDefault: eventPreventDefaultStub
|
||||
});
|
||||
expect(component.getScrollLeft()).toBe(expectedScrollLeft);
|
||||
expect(component.refs.content.style.transform).toBe(
|
||||
@@ -1805,7 +1836,8 @@ describe('TextEditorComponent', () => {
|
||||
component.didMouseWheel({
|
||||
wheelDeltaX: -20,
|
||||
wheelDeltaY: 0,
|
||||
shiftKey: true
|
||||
shiftKey: true,
|
||||
preventDefault: eventPreventDefaultStub
|
||||
});
|
||||
expect(component.getScrollTop()).toBe(expectedScrollTop);
|
||||
expect(component.refs.content.style.transform).toBe(
|
||||
@@ -1817,7 +1849,11 @@ describe('TextEditorComponent', () => {
|
||||
component.props.platform = 'darwin';
|
||||
{
|
||||
const expectedScrollTop = 20 * (scrollSensitivity / 100);
|
||||
component.didMouseWheel({ wheelDeltaX: 0, wheelDeltaY: -20 });
|
||||
component.didMouseWheel({
|
||||
wheelDeltaX: 0,
|
||||
wheelDeltaY: -20,
|
||||
preventDefault: eventPreventDefaultStub
|
||||
});
|
||||
expect(component.getScrollTop()).toBe(expectedScrollTop);
|
||||
expect(component.refs.content.style.transform).toBe(
|
||||
`translate(0px, -${expectedScrollTop}px)`
|
||||
@@ -1830,7 +1866,8 @@ describe('TextEditorComponent', () => {
|
||||
component.didMouseWheel({
|
||||
wheelDeltaX: 0,
|
||||
wheelDeltaY: -20,
|
||||
shiftKey: true
|
||||
shiftKey: true,
|
||||
preventDefault: eventPreventDefaultStub
|
||||
});
|
||||
expect(component.getScrollTop()).toBe(expectedScrollTop);
|
||||
expect(component.refs.content.style.transform).toBe(
|
||||
@@ -1844,7 +1881,8 @@ describe('TextEditorComponent', () => {
|
||||
component.didMouseWheel({
|
||||
wheelDeltaX: -20,
|
||||
wheelDeltaY: 0,
|
||||
shiftKey: true
|
||||
shiftKey: true,
|
||||
preventDefault: eventPreventDefaultStub
|
||||
});
|
||||
expect(component.getScrollLeft()).toBe(expectedScrollLeft);
|
||||
expect(component.refs.content.style.transform).toBe(
|
||||
@@ -4183,6 +4221,7 @@ describe('TextEditorComponent', () => {
|
||||
});
|
||||
|
||||
it('adds or removes cursors when holding cmd or ctrl when single-clicking', () => {
|
||||
atom.config.set('editor.multiCursorOnClick', true);
|
||||
const { component, editor } = buildComponent({ platform: 'darwin' });
|
||||
expect(editor.getCursorScreenPositions()).toEqual([[0, 0]]);
|
||||
|
||||
@@ -4263,6 +4302,7 @@ describe('TextEditorComponent', () => {
|
||||
});
|
||||
|
||||
it('adds word selections when holding cmd or ctrl when double-clicking', () => {
|
||||
atom.config.set('editor.multiCursorOnClick', true);
|
||||
const { component, editor } = buildComponent();
|
||||
editor.addCursorAtScreenPosition([1, 16], { autoscroll: false });
|
||||
expect(editor.getCursorScreenPositions()).toEqual([[0, 0], [1, 16]]);
|
||||
@@ -4289,6 +4329,7 @@ describe('TextEditorComponent', () => {
|
||||
});
|
||||
|
||||
it('adds line selections when holding cmd or ctrl when triple-clicking', () => {
|
||||
atom.config.set('editor.multiCursorOnClick', true);
|
||||
const { component, editor } = buildComponent();
|
||||
editor.addCursorAtScreenPosition([1, 16], { autoscroll: false });
|
||||
expect(editor.getCursorScreenPositions()).toEqual([[0, 0], [1, 16]]);
|
||||
@@ -4327,6 +4368,107 @@ describe('TextEditorComponent', () => {
|
||||
expect(editor.testAutoscrollRequests).toEqual([]);
|
||||
});
|
||||
|
||||
it('does not add cursors when holding cmd or ctrl when single-clicking', () => {
|
||||
atom.config.set('editor.multiCursorOnClick', false);
|
||||
const { component, editor } = buildComponent({ platform: 'darwin' });
|
||||
expect(editor.getCursorScreenPositions()).toEqual([[0, 0]]);
|
||||
|
||||
// moves cursor to 1, 16
|
||||
component.didMouseDownOnContent(
|
||||
Object.assign(clientPositionForCharacter(component, 1, 16), {
|
||||
detail: 1,
|
||||
button: 0,
|
||||
metaKey: true
|
||||
})
|
||||
);
|
||||
expect(editor.getCursorScreenPositions()).toEqual([[1, 16]]);
|
||||
|
||||
// ctrl-click does not add cursors on macOS, nor does it move the cursor
|
||||
component.didMouseDownOnContent(
|
||||
Object.assign(clientPositionForCharacter(component, 1, 4), {
|
||||
detail: 1,
|
||||
button: 0,
|
||||
ctrlKey: true
|
||||
})
|
||||
);
|
||||
expect(editor.getSelectedScreenRanges()).toEqual([
|
||||
[[1, 16], [1, 16]]
|
||||
]);
|
||||
|
||||
// ctrl-click does not add cursors on platforms *other* than macOS
|
||||
component.props.platform = 'win32';
|
||||
editor.setCursorScreenPosition([1, 4], { autoscroll: false });
|
||||
component.didMouseDownOnContent(
|
||||
Object.assign(clientPositionForCharacter(component, 1, 16), {
|
||||
detail: 1,
|
||||
button: 0,
|
||||
ctrlKey: true
|
||||
})
|
||||
);
|
||||
expect(editor.getCursorScreenPositions()).toEqual([[1, 16]]);
|
||||
|
||||
expect(editor.testAutoscrollRequests).toEqual([]);
|
||||
});
|
||||
|
||||
it('does not add word selections when holding cmd or ctrl when double-clicking', () => {
|
||||
atom.config.set('editor.multiCursorOnClick', false);
|
||||
const { component, editor } = buildComponent();
|
||||
|
||||
component.didMouseDownOnContent(
|
||||
Object.assign(clientPositionForCharacter(component, 1, 16), {
|
||||
detail: 1,
|
||||
button: 0,
|
||||
metaKey: true
|
||||
})
|
||||
);
|
||||
component.didMouseDownOnContent(
|
||||
Object.assign(clientPositionForCharacter(component, 1, 16), {
|
||||
detail: 2,
|
||||
button: 0,
|
||||
metaKey: true
|
||||
})
|
||||
);
|
||||
expect(editor.getSelectedScreenRanges()).toEqual([
|
||||
[[1, 13], [1, 21]]
|
||||
]);
|
||||
expect(editor.testAutoscrollRequests).toEqual([]);
|
||||
});
|
||||
|
||||
it('does not add line selections when holding cmd or ctrl when triple-clicking', () => {
|
||||
atom.config.set('editor.multiCursorOnClick', false);
|
||||
const { component, editor } = buildComponent();
|
||||
|
||||
const { clientX, clientY } = clientPositionForCharacter(
|
||||
component,
|
||||
1,
|
||||
16
|
||||
);
|
||||
component.didMouseDownOnContent({
|
||||
detail: 1,
|
||||
button: 0,
|
||||
metaKey: true,
|
||||
clientX,
|
||||
clientY
|
||||
});
|
||||
component.didMouseDownOnContent({
|
||||
detail: 2,
|
||||
button: 0,
|
||||
metaKey: true,
|
||||
clientX,
|
||||
clientY
|
||||
});
|
||||
component.didMouseDownOnContent({
|
||||
detail: 3,
|
||||
button: 0,
|
||||
metaKey: true,
|
||||
clientX,
|
||||
clientY
|
||||
});
|
||||
|
||||
expect(editor.getSelectedScreenRanges()).toEqual([[[1, 0], [2, 0]]]);
|
||||
expect(editor.testAutoscrollRequests).toEqual([]);
|
||||
});
|
||||
|
||||
it('expands the last selection on shift-click', () => {
|
||||
const { component, editor } = buildComponent();
|
||||
|
||||
@@ -4415,6 +4557,7 @@ describe('TextEditorComponent', () => {
|
||||
});
|
||||
|
||||
it('expands the last selection on drag', () => {
|
||||
atom.config.set('editor.multiCursorOnClick', true);
|
||||
const { component, editor } = buildComponent();
|
||||
spyOn(component, 'handleMouseDragUntilMouseUp');
|
||||
|
||||
|
||||
@@ -149,7 +149,10 @@ describe('TreeSitterLanguageMode', () => {
|
||||
languageMode.tree.rootNode
|
||||
.descendantForPosition(Point(1, 2), Point(1, 6))
|
||||
.toString()
|
||||
).toBe('(declaration (primitive_type) (identifier) (MISSING ";"))');
|
||||
).toBe(
|
||||
'(declaration type: (primitive_type)' +
|
||||
' declarator: (identifier) (MISSING ";"))'
|
||||
);
|
||||
|
||||
expectTokensToEqual(editor, [
|
||||
[
|
||||
@@ -1513,11 +1516,11 @@ describe('TreeSitterLanguageMode', () => {
|
||||
buffer.setLanguageMode(languageMode);
|
||||
|
||||
expect(languageMode.tree.rootNode.toString()).toBe(
|
||||
'(program (if (identifier) (then ' +
|
||||
'(program (if condition: (identifier) consequence: (then ' +
|
||||
'(identifier)) ' +
|
||||
'(elsif (identifier) (then ' +
|
||||
'alternative: (elsif condition: (identifier) consequence: (then ' +
|
||||
'(identifier)) ' +
|
||||
'(else ' +
|
||||
'alternative: (else ' +
|
||||
'(identifier)))))'
|
||||
);
|
||||
|
||||
@@ -1931,8 +1934,8 @@ describe('TreeSitterLanguageMode', () => {
|
||||
'fragment',
|
||||
'element',
|
||||
'script_element',
|
||||
'raw_text',
|
||||
'program',
|
||||
'raw_text',
|
||||
'expression_statement',
|
||||
'call_expression',
|
||||
'template_string',
|
||||
|
||||
@@ -609,6 +609,12 @@ const configSchema = {
|
||||
default: process.platform !== 'darwin',
|
||||
description:
|
||||
'Change the editor font size when pressing the Ctrl key and scrolling the mouse up/down.'
|
||||
},
|
||||
multiCursorOnClick: {
|
||||
type: 'boolean',
|
||||
default: true,
|
||||
description:
|
||||
'Add multiple cursors when pressing the Ctrl key (Command key on MacOS) and clicking the editor.'
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -319,12 +319,7 @@ module.exports = class AtomApplication extends EventEmitter {
|
||||
this.promptForRestart()
|
||||
);
|
||||
});
|
||||
|
||||
// TodoElectronIssue: In electron v2 awaiting the watcher causes some delay
|
||||
// in Windows machines, which affects directly the startup time.
|
||||
if (process.platform !== 'win32') {
|
||||
await this.configFilePromise;
|
||||
}
|
||||
await this.configFilePromise;
|
||||
}
|
||||
|
||||
let optionsForWindowsToOpen = [];
|
||||
|
||||
@@ -47,7 +47,9 @@ module.exports = class AtomWindow extends EventEmitter {
|
||||
// Disable the `auxclick` feature so that `click` events are triggered in
|
||||
// response to a middle-click.
|
||||
// (Ref: https://github.com/atom/atom/pull/12696#issuecomment-290496960)
|
||||
disableBlinkFeatures: 'Auxclick'
|
||||
disableBlinkFeatures: 'Auxclick',
|
||||
nodeIntegration: true,
|
||||
webviewTag: true
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -26,12 +26,20 @@ class PaneResizeHandleElement extends HTMLElement
|
||||
|
||||
resizeStarted: (e) ->
|
||||
e.stopPropagation()
|
||||
if not @overlay
|
||||
@overlay = document.createElement('div')
|
||||
@overlay.classList.add('atom-pane-cursor-overlay')
|
||||
@overlay.classList.add(if @isHorizontal then 'horizontal' else 'vertical')
|
||||
@appendChild @overlay
|
||||
document.addEventListener 'mousemove', @resizePane
|
||||
document.addEventListener 'mouseup', @resizeStopped
|
||||
|
||||
resizeStopped: ->
|
||||
document.removeEventListener 'mousemove', @resizePane
|
||||
document.removeEventListener 'mouseup', @resizeStopped
|
||||
if @overlay
|
||||
@removeChild @overlay
|
||||
@overlay = undefined
|
||||
|
||||
calcRatio: (ratio1, ratio2, total) ->
|
||||
allRatio = ratio1 + ratio2
|
||||
|
||||
@@ -1736,7 +1736,10 @@ module.exports = class TextEditorComponent {
|
||||
const scrollTopChanged =
|
||||
wheelDeltaY !== 0 && this.setScrollTop(this.getScrollTop() - wheelDeltaY);
|
||||
|
||||
if (scrollLeftChanged || scrollTopChanged) this.updateSync();
|
||||
if (scrollLeftChanged || scrollTopChanged) {
|
||||
event.preventDefault();
|
||||
this.updateSync();
|
||||
}
|
||||
}
|
||||
|
||||
didResize() {
|
||||
@@ -1991,7 +1994,9 @@ module.exports = class TextEditorComponent {
|
||||
return;
|
||||
}
|
||||
|
||||
const addOrRemoveSelection = metaKey || (ctrlKey && platform !== 'darwin');
|
||||
const allowMultiCursor = atom.config.get('editor.multiCursorOnClick');
|
||||
const addOrRemoveSelection =
|
||||
allowMultiCursor && (metaKey || (ctrlKey && platform !== 'darwin'));
|
||||
|
||||
switch (detail) {
|
||||
case 1:
|
||||
|
||||
@@ -344,6 +344,7 @@ module.exports = class TextEditor {
|
||||
get languageMode() {
|
||||
return this.buffer.getLanguageMode();
|
||||
}
|
||||
|
||||
get tokenizedBuffer() {
|
||||
return this.buffer.getLanguageMode();
|
||||
}
|
||||
|
||||
@@ -22,7 +22,7 @@ atom-pane-container {
|
||||
&:before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
z-index: 3;
|
||||
z-index: 11;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -105,3 +105,20 @@ atom-pane-container {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.atom-pane-cursor-overlay {
|
||||
position: fixed;
|
||||
top: 0;
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
z-index: 4;
|
||||
|
||||
&.horizontal {
|
||||
cursor: col-resize;
|
||||
}
|
||||
|
||||
&.vertical {
|
||||
cursor: row-resize;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user