Merge pull request #2 from sharedprophet/master

update
This commit is contained in:
sharedprophet
2020-06-15 10:24:42 -05:00
committed by GitHub
38 changed files with 7808 additions and 3576 deletions

View File

@@ -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

File diff suppressed because it is too large Load Diff

View File

@@ -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

File diff suppressed because it is too large Load Diff

View File

@@ -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

File diff suppressed because it is too large Load Diff

View File

@@ -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

View File

@@ -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"

View File

@@ -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

View File

@@ -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

View 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>

View File

@@ -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 {

View File

@@ -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.`
);
}
};

View File

@@ -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}`);

View File

@@ -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
});
}

View File

@@ -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()

View File

@@ -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(
'..',

View File

@@ -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(

View 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

File diff suppressed because it is too large Load Diff

View File

@@ -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"
}
}

View 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'
);
}

View File

@@ -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)
})

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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.

View File

@@ -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}`;

View File

@@ -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');

View File

@@ -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',

View File

@@ -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.'
}
}
}

View File

@@ -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 = [];

View File

@@ -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
}
};

View File

@@ -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

View File

@@ -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:

View File

@@ -344,6 +344,7 @@ module.exports = class TextEditor {
get languageMode() {
return this.buffer.getLanguageMode();
}
get tokenizedBuffer() {
return this.buffer.getLanguageMode();
}

View File

@@ -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;
}
}