mirror of
https://github.com/atom/atom.git
synced 2026-01-23 22:08:08 -05:00
Merge pull request #17380 from atom/fix-color-problems-using-electron-2.0
Restore color rendering following Electron 2.0 update
This commit is contained in:
@@ -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'
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
@@ -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
|
||||
@@ -39,6 +42,12 @@ module.exports = function start (resourcePath, startTime) {
|
||||
atomPaths.setUserData(app)
|
||||
setupCompileCache()
|
||||
|
||||
const config = getConfig()
|
||||
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) {
|
||||
@@ -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
|
||||
}
|
||||
|
||||
@@ -1,63 +0,0 @@
|
||||
# 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
|
||||
@fromObject: (scopes) ->
|
||||
if scopes instanceof ScopeDescriptor
|
||||
scopes
|
||||
else
|
||||
new ScopeDescriptor({scopes})
|
||||
|
||||
###
|
||||
Section: Construction and Destruction
|
||||
###
|
||||
|
||||
# Public: Create a {ScopeDescriptor} object.
|
||||
#
|
||||
# * `object` {Object}
|
||||
# * `scopes` {Array} of {String}s
|
||||
constructor: ({@scopes}) ->
|
||||
|
||||
# Public: Returns an {Array} of {String}s
|
||||
getScopesArray: -> @scopes
|
||||
|
||||
getScopeChain: ->
|
||||
# For backward compatibility, prefix TextMate-style scope names with
|
||||
# leading dots (e.g. 'source.js' -> '.source.js').
|
||||
if @scopes[0]?.includes('.')
|
||||
result = ''
|
||||
for scope, i in @scopes
|
||||
result += ' ' if i > 0
|
||||
result += '.' if scope[0] isnt '.'
|
||||
result += scope
|
||||
result
|
||||
else
|
||||
@scopes.join(' ')
|
||||
|
||||
toString: ->
|
||||
@getScopeChain()
|
||||
|
||||
isEqual: (other) ->
|
||||
if @scopes.length isnt other.scopes.length
|
||||
return false
|
||||
for scope, i in @scopes
|
||||
if scope isnt other.scopes[i]
|
||||
return false
|
||||
true
|
||||
80
src/scope-descriptor.js
Normal file
80
src/scope-descriptor.js
Normal file
@@ -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
|
||||
} 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
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user