Skip to content

Instantly share code, notes, and snippets.

@mattly
Created April 21, 2018 12:40
Show Gist options
  • Save mattly/56acdf55a0145fff6113f1202de1b480 to your computer and use it in GitHub Desktop.
Save mattly/56acdf55a0145fff6113f1202de1b480 to your computer and use it in GitHub Desktop.
atom theme settings example
fs = require 'fs'
{CompositeDisposable} = require 'atom'
class SectorOne
config:
comments:
title: 'Comment brightness'
description: 'Choose between bright dim comments'
type: 'string'
default: 'Bright'
enum: ["Bright", "Dim"]
activate: ->
@disposables = new CompositeDisposable
@packageName = require('../package.json').name
@settings = Object.keys(@config)
for setting in @settings
oName = "#{@packageName}.#{setting}"
o = atom.config.observe oName, => @enableConfigTheme()
@disposables.add o
deactivate: ->
@disposables.dispose()
enableConfigTheme: ->
mySettings = {}
for setting in @settings
mySettings[setting] = atom.config.get "#{@packageName}.#{setting}"
@enableTheme mySettings
enableTheme: (settings) ->
settingsPath = "#{__dirname}/../styles/settings.less"
fileContents = for setting in @settings
"@import 'settings/#{setting}-#{@getNormalizedName(settings[setting])}';"
fs.writeFileSync settingsPath, fileContents.join("\n")
atom.packages.getLoadedPackage("#{@packageName}").reloadStylesheets()
getNormalizedName: (name) ->
"#{name}"
.replace /\ /g, '-'
.toLowerCase()
module.exports = new SectorOne
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment