10000 Restore color rendering following Electron 2.0 update by jasonrudolph · Pull Request #17380 · atom/atom · GitHub
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content
This repository was archived by the owner on Mar 3, 2023. It is now read-only.

Restore color rendering following Electron 2.0 update #17380

Merged
merged 9 commits into from
Jun 4, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions src/config-schema.js
Original file line number Diff line number Diff line change
Expand Up @@ -355,6 +355,21 @@ const configSchema = {
type: 'boolean',
default: false,
description: 'Experimental: Use the new Tree-sitter parsing system for supported languages.'
},
colorProfile: {
description: "Specify whether Atom should use the operating system's color profile (recommended) or an alternative color profile.<br>Changing this setting will require a relaunch of Atom to take effect.",
type: 'string',
default: 'default',
enum: [
{
value: 'default',
description: 'Use color profile configured in the operating system'
},
{
value: 'srgb',
description: 'Use sRGB color profile'
}
]
}
}
},
Expand Down
27 changes: 27 additions & 0 deletions src/main-process/start.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ const temp = require('temp').track()
const parseCommandLine = require('./parse-command-line')
const startCrashReporter = require('../crash-reporter-start')
const atomPaths = require('../atom-paths')
const fs = require('fs')
const CSON = require('season')
const Config = require('../config')

module.exports = function start (resourcePath, startTime) {
global.shellStartTime = startTime
Expand Down Expand Up @@ -39,6 +42,12 @@ module.exports = function start (resourcePath, startTime) {
atomPaths.setUserData(app)
setupCompileCache()

const config = getConfig()
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It would be nice if we could reuse this Config and/or ConfigFile instance in AtomApplication, in order to avoid reading the config file twice on startup (and also to avoid duplicating the code for locating the config file). That said, I don't think it is necessarily important enough to block merging this PR.

const colorProfile = config.get('core.colorProfile')
if (colorProfile && colorProfile !== 'default') {
app.commandLine.appendSwitch('force-color-profile', colorProfile)
}

if (handleStartupEventWithSquirrel()) {
return
} else if (args.test && args.mainProcess) {
Expand Down Expand Up @@ -97,3 +106,21 @@ function setupCompileCache () {
CompileCache.setAtomHomeDirectory(process.env.ATOM_HOME)
CompileCache.install(process.resourcesPath, require)
}

function getConfig () {
const config = new Config()

let configFilePath
if (fs.existsSync(path.join(process.env.ATOM_HOME, 'config.json'))) {
configFilePath = path.join(process.env.ATOM_HOME, 'config.json')
} else if (fs.existsSync(path.join(process.env.ATOM_HOME, 'config.cson'))) {
configFilePath = path.join(process.env.ATOM_HOME, 'config.cson')
}

if (configFilePath) {
const configFileData = CSON.readFileSync(configFilePath)
config.resetUserSettings(configFileData)
}

return config
}
63 changes: 0 additions & 63 deletions src/scope-descriptor.coffee

This file was deleted.

80 changes: 80 additions & 0 deletions src/scope-descriptor.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
// Extended: Wraps an {Array} of `String`s. The Array describes a path from the
// root of the syntax tree to a token including _all_ scope names for the entire
// path.
//
// Methods that take a `ScopeDescriptor` will also accept an {Array} of {String}
// scope names e.g. `['.source.js']`.
//
// You can use `ScopeDescriptor`s to get language-specific config settings via
// {Config::get}.
//
// You should not need to create a `ScopeDescriptor` directly.
//
// * {TextEditor::getRootScopeDescriptor} to get the language's descriptor.
// * {TextEditor::scopeDescriptorForBufferPosition} to get the descriptor at a
// specific position in the buffer.
// * {Cursor::getScopeDescriptor} to get a cursor's descriptor based on position.
//
// See the [scopes and scope descriptor guide](http://flight-manual.atom.io/behind-atom/sections/scoped-settings-scopes-and-scope-descriptors/)
// for more information.
module.exports =
class ScopeDescriptor {
static fromObject (scopes) {
if (scopes instanceof ScopeDescriptor) {
return scopes
AFF9 } else {
return new ScopeDescriptor({scopes})
}
}

/*
Section: Construction and Destruction
*/

// Public: Create a {ScopeDescriptor} object.
//
// * `object` {Object}
// * `scopes` {Array} of {String}s
constructor ({scopes}) {
this.scopes = scopes
}

// Public: Returns an {Array} of {String}s
getScopesArray () {
return this.scopes
}

getScopeChain () {
// For backward compatibility, prefix TextMate-style scope names with
// leading dots (e.g. 'source.js' -> '.source.js').
if (this.scopes[0] != null && this.scopes[0].includes('.')) {
let result = ''
for (let i = 0; i < this.scopes.length; i++) {
const scope = this.scopes[i]
if (i > 0) { result += ' ' }
if (scope[0] !== '.') { result += '.' }
result += scope
}
return result
} else {
return this.scopes.join(' ')
}
}

toString () {
return this.getScopeChain()
}

isEqual (other) {
if (this.scopes.length !== other.scopes.length) {
return false
}
for (let i = 0; i < this.scopes.length; i++) {
const scope = this.scopes[i]
if (scope !== other.scopes[i]) {
return false
}
}
return true
}
}
0