Merge remote-tracking branch 'origin/dev' into markers

This commit is contained in:
Nathan Sobo
2013-02-04 20:04:01 -07:00
71 changed files with 763 additions and 1231 deletions

View File

@@ -22,17 +22,36 @@ describe "Config", ->
spyOn(fs, 'write')
jasmine.unspy config, 'save'
it "writes any non-default properties to the config.json in the user's .atom directory", ->
config.set("a.b.c", 1)
config.set("a.b.d", 2)
config.set("x.y.z", 3)
config.setDefaults("a.b", e: 4, f: 5)
describe "when ~/.atom/config.json exists", ->
it "writes any non-default properties to ~/.atom/config.json", ->
config.configFilePath = fs.join(config.configDirPath, "config.json")
config.set("a.b.c", 1)
config.set("a.b.d", 2)
config.set("x.y.z", 3)
config.setDefaults("a.b", e: 4, f: 5)
fs.write.reset()
config.save()
fs.write.reset()
config.save()
writtenConfig = JSON.parse(fs.write.argsForCall[0][1])
expect(writtenConfig).toEqual config.settings
expect(fs.write.argsForCall[0][0]).toBe(fs.join(config.configDirPath, "config.json"))
writtenConfig = JSON.parse(fs.write.argsForCall[0][1])
expect(writtenConfig).toEqual config.settings
describe "when ~/.atom/config.json doesn't exist", ->
it "writes any non-default properties to ~/.atom/config.cson", ->
config.configFilePath = fs.join(config.configDirPath, "config.cson")
config.set("a.b.c", 1)
config.set("a.b.d", 2)
config.set("x.y.z", 3)
config.setDefaults("a.b", e: 4, f: 5)
fs.write.reset()
config.save()
expect(fs.write.argsForCall[0][0]).toBe(fs.join(config.configDirPath, "config.cson"))
{CoffeeScript} = require 'coffee-script'
writtenConfig = CoffeeScript.eval(fs.write.argsForCall[0][1], bare: true)
expect(writtenConfig).toEqual config.settings
describe ".setDefaults(keyPath, defaults)", ->
it "assigns any previously-unassigned keys to the object at the key path", ->

View File

@@ -605,7 +605,7 @@ describe "Editor", ->
rootView.attachToDom()
config.set("editor.fontSize", 16 * 4)
expect(editor.gutter.css('font-size')).toBe "#{16 * 4}px"
expect(editor.gutter.width()).toBe(64)
expect(editor.gutter.width()).toBe(64 + editor.gutter.calculateLineNumberPadding())
it "updates lines if there are unrendered lines", ->
editor.attachToDom(heightInLines: 5)

View File

@@ -17,8 +17,8 @@ describe "Window", ->
it "has .is-focused on the body tag", ->
expect($("body").hasClass("is-focused")).toBe true
it "doesn't have .is-focused on the window focousout event", ->
$(window).focusout()
it "doesn't have .is-focused on the window blur event", ->
$(window).blur()
expect($("body").hasClass("is-focused")).toBe false
describe ".close()", ->

View File

@@ -0,0 +1,4 @@
module.exports =
load: ->
$ = require 'jquery'
callTaskMethod('loaded', $?)

View File

@@ -18,10 +18,6 @@ describe "CSON", ->
it "does not include the key in the formatted CSON", ->
expect(CSON.stringify(b: 1, c: undefined)).toBe "'b': 1"
describe "when formatting an empty object", ->
it "returns the empty string", ->
expect(CSON.stringify({})).toBe ""
describe "when formatting a string", ->
it "returns formatted CSON", ->
expect(CSON.stringify(a: 'b')).toBe "'a': 'b'"
@@ -32,18 +28,25 @@ describe "CSON", ->
it "doesn't escape double quotes", ->
expect(CSON.stringify(a: '"b"')).toBe "'a': '\"b\"'"
it "escapes newlines", ->
expect(CSON.stringify("a\nb")).toBe "'a\\nb'"
describe "when formatting a boolean", ->
it "returns formatted CSON", ->
expect(CSON.stringify(true)).toBe 'true'
expect(CSON.stringify(false)).toBe 'false'
expect(CSON.stringify(a: true)).toBe "'a': true"
expect(CSON.stringify(a: false)).toBe "'a': false"
describe "when formatting a number", ->
it "returns formatted CSON", ->
expect(CSON.stringify(54321.012345)).toBe '54321.012345'
expect(CSON.stringify(a: 14)).toBe "'a': 14"
expect(CSON.stringify(a: 1.23)).toBe "'a': 1.23"
describe "when formatting null", ->
it "returns formatted CSON", ->
expect(CSON.stringify(null)).toBe 'null'
expect(CSON.stringify(a: null)).toBe "'a': null"
describe "when formatting an array", ->
@@ -55,6 +58,29 @@ describe "CSON", ->
expect(CSON.stringify(a: ['b'])).toBe "'a': [\n 'b'\n]"
expect(CSON.stringify(a: ['b', 4])).toBe "'a': [\n 'b'\n 4\n]"
describe "when the array has an undefined value", ->
it "formats the undefined value as null", ->
expect(CSON.stringify(['a', undefined, 'b'])).toBe "[\n 'a'\n null\n 'b'\n]"
describe "when formatting an object", ->
describe "when the object is empty", ->
it "returns the empty string", ->
expect(CSON.stringify({})).toBe ""
it "returns formatted CSON", ->
expect(CSON.stringify(a: {b: 'c'})).toBe "'a':\n 'b': 'c'"
describe "when converting back to an object", ->
it "produces the original object", ->
object =
showInvisibles: true
fontSize: 20
core:
themes: ['a', 'b']
stripTrailingWhitespace:
singleTrailingNewline: true
cson = CSON.stringify(object)
{CoffeeScript} = require 'coffee-script'
evaledObject = CoffeeScript.eval(cson, bare: true)
expect(evaledObject).toEqual object

View File

@@ -0,0 +1,23 @@
Task = require 'task'
describe "Task shell", ->
describe "populating the window with fake properties", ->
describe "when jQuery is loaded in a web worker", ->
it "doesn't log to the console", ->
spyOn(console, 'log')
spyOn(console, 'error')
spyOn(console, 'warn')
class JQueryTask extends Task
constructor: -> super('fixtures/jquery-task-handler.coffee')
started: -> @callWorkerMethod('load')
loaded: (@jqueryLoaded) ->
task = new JQueryTask()
task.start()
waitsFor "web worker to start and jquery to be required", 5000, ->
task.jqueryLoaded
runs ->
expect(task.jqueryLoaded).toBeTruthy()
expect(console.log).not.toHaveBeenCalled()
expect(console.error).not.toHaveBeenCalled()
expect(console.warn).not.toHaveBeenCalled()

View File

@@ -3,7 +3,6 @@ _ = require 'underscore'
EventEmitter = require 'event-emitter'
configDirPath = fs.absolute("~/.atom")
configJsonPath = fs.join(configDirPath, "config.json")
userInitScriptPath = fs.join(configDirPath, "user.coffee")
bundledPackagesDirPath = fs.join(resourcePath, "src/packages")
bundledThemesDirPath = fs.join(resourcePath, "themes")
@@ -27,6 +26,8 @@ class Config
core: _.clone(require('root-view').configDefaults)
editor: _.clone(require('editor').configDefaults)
@settings = {}
@configFilePath = fs.resolve(configDirPath, 'config', ['json', 'cson'])
@configFilePath ?= fs.join(configDirPath, 'config.cson')
load: ->
@loadUserConfig()
@@ -35,8 +36,8 @@ class Config
atom.loadPackages()
loadUserConfig: ->
if fs.exists(configJsonPath)
userConfig = JSON.parse(fs.read(configJsonPath))
if fs.exists(@configFilePath)
userConfig = fs.readObject(@configFilePath)
_.extend(@settings, userConfig)
get: (keyPath) ->
@@ -77,7 +78,7 @@ class Config
@trigger 'updated'
save: ->
fs.write(configJsonPath, JSON.stringify(@settings, undefined, 2) + "\n")
fs.writeObject(@configFilePath, @settings)
requireUserInitScript: ->
try

View File

@@ -4,7 +4,7 @@ SelectList = require 'select-list'
module.exports =
class GrammarView extends SelectList
@viewClass: -> "#{super} grammar-view"
@viewClass: -> "#{super} grammar-view from-top overlay"
filterKey: 'name'
@@ -12,7 +12,6 @@ class GrammarView extends SelectList
@currentGrammar = @editor.getGrammar()
@path = @editor.getPath()
@autoDetect = name: 'Auto Detect'
requireStylesheet 'grammar-view.css'
@command 'editor:select-grammar', =>
@cancel()
false

View File

@@ -109,7 +109,7 @@ class SelectList extends View
scrollToItem: (item) ->
scrollTop = @list.scrollTop()
desiredTop = item.position().top + scrollTop
desiredBottom = desiredTop + item.height()
desiredBottom = desiredTop + item.outerHeight()
if desiredTop < scrollTop
@list.scrollTop(desiredTop)

View File

@@ -29,7 +29,7 @@ windowAdditions =
$(window).on 'core:close', => @close()
$(window).command 'window:close', => @close()
$(window).on 'focus', => $("body").addClass("is-focused")
$(window).on 'focusout', => $("body").removeClass("is-focused")
$(window).on 'blur', => $("body").removeClass("is-focused")
# This method is intended only to be run when starting a normal application
# Note: RootView assigns itself on window on initialization so that
@@ -114,6 +114,14 @@ window.startup()
requireStylesheet 'reset.css'
requireStylesheet 'atom.css'
requireStylesheet 'tabs.css'
requireStylesheet 'tree-view.css'
requireStylesheet 'status-bar.css'
requireStylesheet 'command-panel.css'
requireStylesheet 'fuzzy-finder.css'
requireStylesheet 'overlay.css'
requireStylesheet 'popover-list.css'
requireStylesheet 'notification.css'
if nativeStylesheetPath = require.resolve("#{platform}.css")
requireStylesheet(nativeStylesheetPath)

View File

@@ -8,7 +8,7 @@ class AutocompleteView extends SelectList
rootView.eachEditor (editor) ->
new AutocompleteView(editor) if editor.attached and not editor.mini
@viewClass: -> "autocomplete #{super}"
@viewClass: -> "autocomplete #{super} popover-list"
editor: null
currentBuffer: null
@@ -106,7 +106,6 @@ class AutocompleteView extends SelectList
setPosition: ->
{ left, top } = @editor.pixelPositionForScreenPosition(@originalCursorPosition)
height = @outerHeight()
potentialTop = top + @editor.lineHeight
potentialBottom = potentialTop - @editor.scrollTop() + height

View File

@@ -23,8 +23,8 @@ describe "CommandPalette", ->
eventLi = palette.list.children("[data-event-name='#{eventName}']")
if description
expect(eventLi).toExist()
expect(eventLi.find('.event-name')).toHaveText(eventName)
expect(eventLi.find('.event-description')).toHaveText(description)
expect(eventLi.find('.label')).toHaveText(description)
expect(eventLi.find('.label').attr('title')).toBe(eventName)
for binding in keyBindings[eventName] ? []
expect(eventLi.find(".key-binding:contains(#{binding})")).toExist()
else
@@ -39,8 +39,8 @@ describe "CommandPalette", ->
description = editorEvents[eventName] unless description
if description
expect(eventLi).toExist()
expect(eventLi.find('.event-name')).toHaveText(eventName)
expect(eventLi.find('.event-description')).toHaveText(description)
expect(eventLi.find('.label')).toHaveText(description)
expect(eventLi.find('.label').attr('title')).toBe(eventName)
else
expect(eventLi).not.toExist()

View File

@@ -9,7 +9,7 @@ class CommandPaletteView extends SelectList
@instance = new CommandPaletteView(rootView)
@viewClass: ->
"#{super} command-palette"
"#{super} command-palette overlay from-top"
filterKey: 'eventDescription'
@@ -41,12 +41,10 @@ class CommandPaletteView extends SelectList
keyBindings = @keyBindings
$$ ->
@li class: 'event', 'data-event-name': eventName, =>
@div eventDescription, class: 'event-description'
@span eventDescription, class: 'label', title: eventName
@div class: 'right', =>
@div eventName, class: 'event-name'
for binding in keyBindings[eventName] ? []
@div binding, class: 'key-binding'
@div class: 'clear-float'
@kbd binding, class: 'key-binding'
confirmed: ({eventName}) ->
@cancel()

View File

@@ -408,7 +408,7 @@ describe "CommandPanel", ->
expect(previewList.scrollBottom()).toBeCloseTo previewList.prop('scrollHeight'), -1
previewList.trigger 'core:move-down'
_.times previewList.getOperations().length, -> previewList.trigger 'core:move-up'
expect(previewList.scrollTop()).toBe 0
it "doesn't bubble up the event and the command panel text doesn't change", ->

View File

@@ -19,9 +19,9 @@ class FuzzyFinder extends DeferredAtomPackage
new LoadPathsTask(rootView, callback).start()
onLoadEvent: (event, instance) ->
if @projectPaths? and not @instance.projectPaths?
@instance.projectPaths = @projectPaths
@instance.reloadProjectPaths = false
if @projectPaths? and not instance.projectPaths?
instance.projectPaths = @projectPaths
instance.reloadProjectPaths = false
switch event.type
when 'fuzzy-finder:toggle-file-finder'

View File

@@ -13,7 +13,7 @@ class FuzzyFinderView extends SelectList
@instance = new FuzzyFinderView(rootView)
@viewClass: ->
[super, 'fuzzy-finder'].join(' ')
[super, 'fuzzy-finder', 'overlay', 'from-top'].join(' ')
allowActiveEditorChange: null
maxItems: 10
@@ -47,9 +47,9 @@ class FuzzyFinderView extends SelectList
typeClass = 'pdf-name'
else
typeClass = 'text-name'
@span fs.base(path), class: "file #{typeClass}"
@span fs.base(path), class: "file label #{typeClass}"
if folder = fs.directory(path)
@span "- #{folder}/", class: 'directory'
@span " - #{folder}/", class: 'directory'
openPath: (path) ->
@rootView.open(path, {@allowActiveEditorChange}) if path

View File

@@ -3,14 +3,13 @@ _ = require 'underscore'
Git = require 'git'
module.exports =
loadPaths: (rootPath, ignoredNames, ignoreGitIgnoredFiles) ->
loadPaths: (rootPath, ignoredNames, excludeGitIgnoredPaths) ->
paths = []
repo = Git.open(rootPath, refreshIndexOnFocus: false) if ignoreGitIgnoredFiles
repo = Git.open(rootPath, refreshIndexOnFocus: false) if excludeGitIgnoredPaths
isIgnored = (path) ->
for segment in path.split('/')
return true if _.contains(ignoredNames, segment)
return true if repo?.isPathIgnored(fs.join(rootPath, path))
false
repo?.isPathIgnored(fs.join(rootPath, path))
onFile = (path) ->
paths.push(path) unless isIgnored(path)
onDirectory = (path) ->

View File

@@ -6,11 +6,11 @@ class LoadPathsTask extends Task
super('fuzzy-finder/src/load-paths-handler')
started: ->
ignoredNames = config.get("fuzzyFinder.ignoredNames") ? []
ignoredNames = ignoredNames.concat(config.get("core.ignoredNames") ? [])
ignoreGitIgnoredFiles = config.get("core.hideGitIgnoredFiles")
ignoredNames = config.get('fuzzyFinder.ignoredNames') ? []
ignoredNames = ignoredNames.concat(config.get('core.ignoredNames') ? [])
excludeGitIgnoredPaths = config.get('core.hideGitIgnoredFiles')
rootPath = @rootView.project.getPath()
@callWorkerMethod('loadPaths', rootPath, ignoredNames, ignoreGitIgnoredFiles)
@callWorkerMethod('loadPaths', rootPath, ignoredNames, excludeGitIgnoredPaths)
pathsLoaded: (paths) ->
@terminate()

View File

@@ -22,10 +22,10 @@ class Gists
success: (response) =>
pasteboard.write(response.html_url)
notification = $$ ->
@div class: 'gist-notification', =>
@div class: 'message-area', =>
@span "Gist #{response.id} created", class: 'message'
@br()
@span "The url is on your clipboard", class: 'clipboard'
@div class: 'notification', =>
@span class: 'icon icon-gist mega-icon'
@div class: 'content', =>
@h3 "Gist #{response.id} created", class: 'title'
@p "The url is on your clipboard", class: 'message'
@rootView.append(notification.hide())
notification.fadeIn().delay(2000).fadeOut(complete: -> $(this).remove())

View File

@@ -44,8 +44,8 @@ describe "Gists package", ->
expect(pasteboard.read()[0]).toBe 'https://gist.github.com/1'
it "flashes that the Gist was created", ->
expect(rootView.find('.gist-notification')).toExist()
expect(rootView.find('.gist-notification .message').text()).toBe 'Gist 1 created'
expect(rootView.find('.notification')).toExist()
expect(rootView.find('.notification .title').text()).toBe 'Gist 1 created'
advanceClock(2000)
expect(rootView.find('.gist-notification')).not.toExist()

View File

@@ -9,7 +9,7 @@ class GoToLineView extends View
@activate: (rootView) -> new GoToLineView(rootView)
@content: ->
@div class: 'go-to-line', =>
@div class: 'go-to-line overlay from-top mini', =>
@subview 'miniEditor', new Editor(mini: true)
@div class: 'message', outlet: 'message'

View File

@@ -30,9 +30,9 @@ describe "SymbolsView", ->
expect(symbolsView.find('.loading')).toBeEmpty()
expect(rootView.find('.symbols-view')).toExist()
expect(symbolsView.list.children('li').length).toBe 2
expect(symbolsView.list.children('li:first').find('.function-name')).toHaveText 'quicksort'
expect(symbolsView.list.children('li:first').find('.label')).toHaveText 'quicksort'
expect(symbolsView.list.children('li:first').find('.function-details')).toHaveText 'Line 1'
expect(symbolsView.list.children('li:last').find('.function-name')).toHaveText 'quicksort.sort'
expect(symbolsView.list.children('li:last').find('.label')).toHaveText 'quicksort.sort'
expect(symbolsView.list.children('li:last').find('.function-details')).toHaveText 'Line 2'
expect(symbolsView).not.toHaveClass "error"
expect(symbolsView.error).not.toBeVisible()
@@ -165,7 +165,7 @@ describe "SymbolsView", ->
editor.setCursorBufferPosition([8,14])
editor.trigger 'symbols-view:go-to-declaration'
expect(symbolsView.list.children('li').length).toBe 1
expect(symbolsView.list.children('li:first').find('.function-name')).toHaveText 'tagged.js'
expect(symbolsView.list.children('li:first').find('.label')).toHaveText 'tagged.js'
describe "project symbols", ->
it "displays all tags", ->
@@ -181,9 +181,9 @@ describe "SymbolsView", ->
expect(symbolsView.find('.loading')).toBeEmpty()
expect(rootView.find('.symbols-view')).toExist()
expect(symbolsView.list.children('li').length).toBe 4
expect(symbolsView.list.children('li:first').find('.function-name')).toHaveText 'callMeMaybe'
expect(symbolsView.list.children('li:first').find('.label')).toHaveText 'callMeMaybe'
expect(symbolsView.list.children('li:first').find('.function-details')).toHaveText 'tagged.js'
expect(symbolsView.list.children('li:last').find('.function-name')).toHaveText 'thisIsCrazy'
expect(symbolsView.list.children('li:last').find('.label')).toHaveText 'thisIsCrazy'
expect(symbolsView.list.children('li:last').find('.function-details')).toHaveText 'tagged.js'
expect(symbolsView).not.toHaveClass "error"
expect(symbolsView.error).not.toBeVisible()

View File

@@ -12,7 +12,7 @@ class SymbolsView extends SelectList
@activate: (rootView) ->
@instance = new SymbolsView(rootView)
@viewClass: -> "#{super} symbols-view"
@viewClass: -> "#{super} symbols-view overlay from-top"
filterKey: 'name'
@@ -22,14 +22,13 @@ class SymbolsView extends SelectList
itemForElement: ({position, name, file}) ->
$$ ->
@li =>
@div name, class: 'function-name'
@div name, class: 'label'
@div class: 'right', =>
if position
text = "Line #{position.row + 1}"
else
text = fs.base(file)
@div text, class: 'function-details'
@div class: 'clear-float'
toggleFileSymbols: ->
if @hasParent()

View File

@@ -38,6 +38,10 @@ describe "Tabs", ->
expect(editor.getActiveEditSessionIndex()).toBe 1
expect(tabs.find('.tab:eq(1)')).toHaveClass 'active'
it "sets the title on each tab to be the full path of the edit session", ->
expect(tabs.find('.tab:eq(0) .file-name').attr('title')).toBe editor.editSessions[0].getPath()
expect(tabs.find('.tab:eq(1) .file-name').attr('title')).toBe editor.editSessions[1].getPath()
describe "when the active edit session changes", ->
it "highlights the tab for the newly-active edit session", ->
editor.setActiveEditSessionIndex(0)
@@ -60,6 +64,11 @@ describe "Tabs", ->
expect(tabs.find('.tab').length).toBe 3
expect(tabs.find('.tab:eq(2) .file-name').text()).toBe 'untitled'
it "removes the tab's title", ->
rootView.open()
expect(tabs.find('.tab').length).toBe 3
expect(tabs.find('.tab:eq(2) .file-name').attr('title')).toBeUndefined()
describe "when an edit session is removed", ->
it "removes the tab for the removed edit session", ->
editor.setActiveEditSessionIndex(0)

View File

@@ -28,7 +28,7 @@ module.exports =
cson += @stringifyBoolean(value)
else if _.isNumber(value)
cson += @stringifyNumber(value)
else if _.isNull(value)
else if _.isNull(value) or value is undefined
cson += @stringifyNull(value)
else if _.isArray(value)
cson += @stringifyArray(value, indentLevel + 2)

View File

@@ -152,35 +152,33 @@ module.exports =
undefined
isCompressedExtension: (ext) ->
_.contains([
_.indexOf([
'.gz'
'.jar'
'.tar'
'.zip'
], ext)
], ext, true) >= 0
isImageExtension: (ext) ->
_.contains([
_.indexOf([
'.gif'
'.jpeg'
'.jpg'
'.png'
'.tiff'
], ext)
], ext, true) >= 0
isPdfExtension: (ext) ->
_.contains([
'.pdf'
], ext)
ext is '.pdf'
isMarkdownExtension: (ext) ->
_.contains([
_.indexOf([
'.markdown'
'.md'
'.mkd'
'.mkdown'
'.ron'
], ext)
], ext, true) >= 0
readObject: (path) ->
contents = @read(path)
@@ -190,6 +188,14 @@ module.exports =
else
JSON.parse(contents)
writeObject: (path, object) ->
if @extension(path) is '.cson'
CSON = require 'cson'
content = CSON.stringify(object)
else
content = JSON.stringify(object, undefined, 2)
@write(path, "#{content}\n")
readPlist: (path) ->
plist = require 'plist'
object = null

View File

@@ -12,6 +12,19 @@ self.console =
log: -> callTaskMethod 'log', arguments...
error: -> callTaskMethod 'error', arguments...
window.document =
createElement: ->
setAttribute: ->
getElementsByTagName: -> []
appendChild: ->
documentElement:
insertBefore: ->
removeChild: ->
getElementById: -> {}
createComment: -> {}
createDocumentFragment: -> {}
self.document = window.document
# `callTaskMethod` can be used to invoke method's on the parent `Task` object
# back in the window thread.
self.callTaskMethod = (method, args...) ->
@@ -19,9 +32,10 @@ self.callTaskMethod = (method, args...) ->
# The worker's initial handler replaces itself when `start` is invoked
self.handler =
start: ({resourcePath, requirePath, handlerPath}) ->
self.resourcePath = resourcePath
window.resourcePath = resourcePath
start: ({resourcePath, globals, requirePath, handlerPath}) ->
for key, value of globals
self[key] = value
window[key] = value
importScripts(requirePath)
require 'config'
self.handler = require(handlerPath)

View File

@@ -17,7 +17,10 @@ class Task
startWorker: ->
@callWorkerMethod 'start'
resourcePath: window.resourcePath
globals:
resourcePath: window.resourcePath
navigator:
userAgent: navigator.userAgent
requirePath: require.getPath('require')
handlerPath: @path

View File

@@ -53,4 +53,11 @@ html, body {
left: 0;
right: 0;
box-sizing: border-box;
}
@font-face {
font-family: 'Octicons Regular';
src: url("octicons-regular-webfont.woff") format("woff");
font-weight: normal;
font-style: normal;
}

83
static/command-panel.css Normal file
View File

@@ -0,0 +1,83 @@
.command-panel {
padding: 5px;
}
.command-panel .preview-list {
max-height: 300px;
overflow: auto;
margin: 0 1px 5px 10px;
position: relative;
cursor: default;
}
.command-panel .preview-count {
font-size: 11px;
text-align: right;
padding-bottom: 1px;
}
.command-panel .preview-list .path {
padding-left: 5px;
}
.command-panel .preview-list .path:before {
font-family: 'Octicons Regular';
font-size: 16px;
width: 16px;
height: 16px;
margin-right: 5px;
-webkit-font-smoothing: antialiased;
content: "\f011";
position: relative;
top: 1px;
}
.command-panel .preview-list .operation {
padding-top: 2px;
padding-bottom: 2px;
}
.command-panel .preview-list .line-number {
padding-left: 3px;
margin-right: 1ex;
text-align: right;
display: inline-block;
}
.command-panel .preview-list .path-match-number {
padding-left: 8px;
}
.command-panel .preview-list .preview {
word-break: break-all;
}
.command-panel .preview-list .preview .match {
-webkit-border-radius: 2px;
padding: 1px;
}
.command-panel .prompt-and-editor .prompt:before {
color: #969696;
content: '\f078';
font-family: 'Octicons Regular';
position: relative;
top: 0;
left: -5px;
-webkit-font-smoothing: antialiased;
}
.command-panel .prompt-and-editor .editor {
position: relative;
left: -4px;
margin-right: -4px;
}
.command-panel .prompt-and-editor {
display: -webkit-box;
}
.error-messages {
padding: 5px 1em;
color: white;
}

View File

@@ -6,10 +6,23 @@
-webkit-box-flex: 1;
position: relative;
z-index: 0;
font-family: Inconsolata, Monaco, Courier;
line-height: 1.3;
}
.editor.mini {
height: auto;
line-height: 25px;
}
.editor.mini .cursor {
width: 2px;
line-height: 20px;
margin-top: 2px;
}
.editor .gutter .line-number.cursor-line {
opacity: 1;
}
.editor .gutter {
@@ -19,14 +32,54 @@
text-align: right;
}
.editor .gutter .line-number {
padding-right: .5em;
min-width: 35px;
box-sizing: border-box;
text-align: right;
opacity: 0.6;
}
.editor .gutter .line-numbers {
position: relative;
}
.editor .gutter .line-number.fold.cursor-line {
opacity: 1;
}
.editor .gutter .line-number.fold:after {
visibility: visible;
}
.editor.mini .gutter {
display: none;
}
.editor .gutter .line-number:after {
font-size: 0.8em;
content: '\f078';
font-family: 'Octicons Regular';
-webkit-font-smoothing: antialiased;
color: #fba0e3;
visibility: hidden;
}
.editor .fold-marker:after {
content: '\2026';
opacity: .8;
color: #fba0e3;
padding-left: .2em;
}
.editor .line.cursor-line .fold-marker {
opacity: 1;
}
.editor .invisible {
opacity: 0.2;
}
.editor .vertical-scrollbar {
position: absolute;
right: 0;

View File

@@ -1,17 +1,8 @@
.fuzzy-finder ol {
overflow: hidden;
-webkit-user-select: none;
cursor: default;
}
.fuzzy-finder ol:empty {
margin-bottom: 0;
border: none;
}
.fuzzy-finder .directory {
color: #b2b2b2;
padding-left: .5em;
color: rgba(0, 0, 0, 0.5);
word-break: break-word;
margin-left: 5px;
line-height: 150%;
}
.fuzzy-finder .file:before {

View File

@@ -1,8 +0,0 @@
.grammar-view {
width: 50%;
margin-left: -25%;
}
.grammar-view ol {
max-height: 300px;
}

57
static/notification.css Normal file
View File

@@ -0,0 +1,57 @@
.notification {
position: absolute;
top: 40px;
left: 50%;
margin-left: -5%;
z-index: 9999;
border: 2px solid rgba(0, 0, 0, 0.2);
border-radius: 5px;
box-shadow:
inset 1px 1px 0 rgba(255, 255, 255, 0.05),
0 0 5px rgba(0, 0, 0, 0.5);
background: -webkit-linear-gradient(
rgba(20, 20, 20, 0.5),
rgba(0, 0, 0, 0.5));
color: #eee;
width: 300px;
}
.notification .content {
padding: 10px;
margin-left: 42px;
box-sizing: border-box;
}
.notification .content:after {
content: ".";
display: block;
clear: both;
visibility: hidden;
}
.notification .title {
font-size: 12px;
font-weight: bold;
margin-bottom: 3px;
}
.notification .message {
font-size: 12px;
color: #777;
}
.notification .icon {
display: inline-block;
float: left;
font-family: 'Octicons Regular';
font-size: 32px;
width: 32px;
height: 32px;
margin-right: 5px;
-webkit-font-smoothing: antialiased;
}
/* TODO: Full Octicon Support */
.icon-gist {
content: "\f20e";
}

35
static/overlay.css Normal file
View File

@@ -0,0 +1,35 @@
.overlay {
position: absolute;
top: 0;
left: 50%;
width: 500px;
margin-left: -250px;
background: #303030;
color: #eee;
padding: 10px;
z-index: 9999;
box-sizing: border-box;
border: 1px solid rgba(255, 255, 255, 0.1);
box-shadow: 0 0 10px rgba(0, 0, 0, 0.5);
border-radius: 3px;
}
.overlay .editor.mini {
margin-bottom: 10px;
}
.overlay .message {
padding-top: 5px;
font-size: 11px;
}
.overlay.mini {
width: 200px;
margin-left: -100px;
}
.overlay.from-top {
border-top: none;
border-top-left-radius: 0;
border-top-right-radius: 0;
}

17
static/popover-list.css Normal file
View File

@@ -0,0 +1,17 @@
.select-list.popover-list {
width: 200px;
border: 2px solid #222;
-webkit-box-shadow: 0 0 3px 3px rgba(0, 0, 0, .5);
margin-left: 0px;
position: relative;
}
.select-list.popover-list ol {
position: relative;
overflow-y: scroll;
max-height: 200px;
}
.select-list.popover-list ol li {
padding: 5px;
}

View File

@@ -1,19 +1,45 @@
.select-list {
position: absolute;
width: 600px;
top: 0;
left: 50%;
margin-left: -300px;
box-sizing: border-box;
z-index: 99;
}
.select-list .editor {
box-sizing: border-box;
padding: 5px;
}
.select-list ol {
border: 1px solid #212121;
position: relative;
overflow-y: auto;
max-height: 312px;
margin: 0;
background: red;
padding: 0;
line-height: 100%;
}
.select-list ol:empty {
border: none;
}
.select-list ol li {
padding: 10px;
box-sizing: border-box;
display: block;
}
.select-list li .label {
display: inline-block;
}
.select-list li .right {
float: right;
}
.select-list .key-binding {
border-radius: 2px;
margin-left: 5px;
padding: 3px;
font-size: 11px;
}
.select-list ol li:last-child {
border-bottom: none;
}
.select-list .error {
font-weight: bold;
color: white;
text-shadow: 0 1px 0 #4E0000;
}

48
static/status-bar.css Normal file
View File

@@ -0,0 +1,48 @@
.status-bar {
padding: 4px 10px 3px;
font-size: 11px;
line-height: 14px;
}
.status-bar .cursor-position,
.status-bar .grammar-name {
padding-left: 10px;
}
.status-bar .grammar-name {
cursor: pointer;
}
.status-bar .branch-label {
vertical-align: baseline;
}
.status-bar .git-status.octicons {
display: none;
padding-left: 10px;
margin-top:-2px;
}
.status-bar .octicons:before {
font-family: 'Octicons Regular';
font-size: 14px;
width: 14px;
height: 14px;
line-height: 14px;
-webkit-font-smoothing: antialiased;
display: inline-block;
vertical-align: middle;
margin-right: 5px;
}
.status-bar .branch-icon:before {
content: "\f020";
}
.status-bar .modified-status-icon:before {
content: "\f26d";
}
.status-bar .new-status-icon:before {
content: "\f26b";
}

66
static/tabs.css Normal file
View File

@@ -0,0 +1,66 @@
.tabs {
font: caption;
margin-bottom: 1px;
}
.tab {
cursor: default;
padding: 2px 21px 2px 9px;
}
.tab.file-modified .close-icon {
border-radius: 10px;
}
.tab.file-modified .close-icon:before {
content: "";
}
.tab.active:before,
.tab.active:after {
position: absolute;
bottom: -1px;
width: 4px;
height: 4px;
content: " ";
z-index: 3;
}
.tab.active:before {
left: -4px;
}
.tab.active:after {
right: -4px;
border-width: 0 0 1px 1px;
}
.tab.active:first-child:before {
display: none;
}
.tab .file-name {
font-size: 11px;
text-shadow: 0 -1px 1px black;
}
.tab .close-icon {
font-family: 'Octicons Regular';
font-size: 14px;
width: 14px;
height: 14px;
display: block;
cursor: pointer;
position: absolute;
right: 4px;
top: -1px;
-webkit-font-smoothing: antialiased;
}
.tab .close-icon:before {
content: "\f081";
}
.tab .close-icon:hover {
color: white;
}

121
static/tree-view.css Normal file
View File

@@ -0,0 +1,121 @@
.tree-view .entries {
margin-left: 12px;
}
.tree-view .entries .file .name {
margin-left: 20px;
}
.tree-view .file .name,
.tree-view .directory .header {
padding-top: 4px;
padding-bottom: 4px;
padding-right: 10px;
}
.tree-view .directory .header {
padding-left: 5px;
}
.tree-view-dialog {
padding: 5px;
}
.tree-view-dialog .prompt {
padding-bottom: 3px;
font-size: 12px;
line-height: 16px;
}
.tree-view-dialog .prompt span {
position: relative;
top: -1px;
}
.tree-view-dialog .prompt:before {
font-family: 'Octicons Regular';
font-size: 16px;
width: 16px;
height: 16px;
margin-right: 3px;
-webkit-font-smoothing: antialiased;
}
.tree-view-dialog .prompt.add:before {
content: "\f086";
}
.tree-view-dialog .prompt.move:before {
content: "\f03e";
}
.tree-view .directory .header .name,
.tree-view .file .name {
position: relative;
padding-left: 21px;
}
.tree-view .directory .header .name:before,
.tree-view .file .name:before {
font-family: 'Octicons Regular';
font-size: 16px;
width: 16px;
height: 16px;
margin-right: 5px;
-webkit-font-smoothing: antialiased;
position: absolute;
left: 0;
}
.tree-view .disclosure-arrow:before {
font-family: 'Octicons Regular';
font-size: 12px;
width: 12px;
height: 12px;
line-height: 16px;
margin-right: 3px;
-webkit-font-smoothing: antialiased;
}
.tree-view .directory .header .directory-icon:before {
content: "\f016";
top: -5px;
}
.tree-view .directory .header .repository-icon:before {
content: "\f001";
top: -4px;
}
.tree-view .directory .header .submodule-icon:before {
content: "\f017";
top: -5px;
}
.tree-view .file .text-icon:before {
content: "\f011";
top: -2px;
}
.tree-view .file .image-icon:before {
content: "\f012";
top: -2px;
}
.tree-view .file .compressed-icon:before {
content: "\f013";
top: -2px;
}
.tree-view .file .pdf-icon:before {
content: "\f014";
top: -2px;
}
.tree-view .directory > .header .disclosure-arrow:before {
content: "\f05a";
}
.tree-view .directory.expanded > .header .disclosure-arrow:before {
content: "\f05b";
}

View File

@@ -21,13 +21,6 @@ html, body,
-webkit-transition: background 300ms ease-out;
}
.clear-float {
clear: both;
}
@font-face {
font-family: 'Octicons Regular';
src: url("octicons-regular-webfont.woff") format("woff");
font-weight: normal;
font-style: normal;
}
.wrap-guide {
background: rgba(150, 150, 150, 0.1);
}

View File

@@ -1,17 +0,0 @@
.select-list.autocomplete {
min-width: 150px;
border: 2px solid #222;
webkit-box-shadow: 0 0 3px 3px rgba(0, 0, 0, .5);
margin-left: 0px;
width: auto;
}
.autocomplete ol {
position: relative;
overflow-y: scroll;
max-height: 200px;
}
.autocomplete ol li {
padding: 0.1em 0.2em;
}

View File

@@ -1,37 +0,0 @@
.command-palette {
width: 50%;
margin-left: -25%;
}
.command-palette ol {
max-height: 300px;
}
.command-palette ol .event-description {
float: left;
display: inline-block;
margin-right: .5em;
margin: 4px 0;
}
.command-palette li .right {
float: right;
}
.command-palette ol .event-name, .command-palette ol .key-binding {
display: inline-block;
margin: 4px 0;
margin-right: .5em;
font-size: 90%;
color: #ddd;
-webkit-border-radius: 3px;
padding: 0 4px;
}
.command-palette ol .event-name {
background: rgba(0, 0, 0, .2);
}
.command-palette ol .key-binding {
background: rgba(255, 255, 255, .1);
}

View File

@@ -2,27 +2,18 @@
background-color: #303030;
border: 1px solid #252525;
color: #dedede;
padding: 5px;
}
.command-panel .preview-list {
max-height: 300px;
overflow: auto;
margin: 0 1px 5px 10px;
position: relative;
background-color: #1e1e1e;
color: #C5C8C6;
cursor: default;
border: 1px solid rgba(0, 0, 0, 0.5);
border-bottom: 1px solid rgba(180, 180, 180, 0.2);
border-right: 1px solid rgba(180, 180, 180, 0.2);
}
.command-panel .preview-count {
font-size: 11px;
color: #969696;
text-align: right;
padding-bottom: 1px;
}
.command-panel .preview-list li.selected, .command-panel .preview-list li.operation:hover {
@@ -34,37 +25,14 @@
}
.command-panel .preview-list .path {
padding-left: 5px;
color: #fff;
}
.command-panel .preview-list .path:before {
font-family: 'Octicons Regular';
font-size: 16px;
width: 16px;
height: 16px;
margin-right: 5px;
-webkit-font-smoothing: antialiased;
content: "\f011";
position: relative;
top: 1px;
}
.command-panel .preview-list .operation {
padding-top: 2px;
padding-bottom: 2px;
}
.command-panel .preview-list .line-number {
padding-left: 3px;
color: rgba(255, 255, 255, .3);
margin-right: 1ex;
text-align: right;
display: inline-block;
}
.command-panel .preview-list .path-match-number {
padding-left: 8px;
color: rgba(255, 255, 255, .3);
}
@@ -74,32 +42,5 @@
.command-panel .preview-list .preview .match {
background-color: rgba(255, 255, 255, .2);
-webkit-border-radius: 2px;
padding: 1px;
color: yellow;
}
.command-panel .prompt-and-editor {
display: -webkit-box;
}
.command-panel .prompt-and-editor .prompt:before {
color: #969696;
content: '\f078';
font-family: 'Octicons Regular';
position: relative;
top: 0;
left: -5px;
-webkit-font-smoothing: antialiased;
}
.command-panel .prompt-and-editor .editor {
position: relative;
left: -4px;
margin-right: -4px;
}
.error-messages {
padding: 5px 1em;
color: white;
}

View File

@@ -1,34 +1,9 @@
.editor {
font-family: Inconsolata, Monaco, Courier;
line-height: 1.3;
}
.editor.mini {
height: auto;
line-height: 25px;
border: 1px solid rgba(0, 0, 0, 0.2);
border-bottom: 1px solid rgba(180, 180, 180, 0.2);
border-right: 1px solid rgba(180, 180, 180, 0.2);
}
.editor.mini .cursor {
width: 2px;
line-height: 20px;
margin-top: 2px;
}
.editor .gutter .line-number {
padding-right: .5em;
min-width: 35px;
box-sizing: border-box;
text-align: right;
opacity: 0.6;
}
.editor .gutter .line-number.cursor-line {
opacity: 1;
}
.editor .gutter.drop-shadow {
-webkit-box-shadow: -2px 0px 10px 2px #222;
}
@@ -48,35 +23,3 @@
color: #fba0e3;
opacity: .8;
}
.editor .gutter .line-number.fold.cursor-line {
opacity: 1;
}
.editor .gutter .line-number:after {
font-size: 0.8em;
content: '\f078';
font-family: 'Octicons Regular';
-webkit-font-smoothing: antialiased;
color: #fba0e3;
visibility: hidden;
}
.editor .gutter .line-number.fold:after {
visibility: visible;
}
.editor .fold-marker:after {
content: '\2026';
opacity: .8;
color: #fba0e3;
padding-left: .2em;
}
.editor .line.cursor-line .fold-marker {
opacity: 1;
}
.editor .invisible {
opacity: 0.2;
}

View File

@@ -1,42 +0,0 @@
.fuzzy-finder ol {
overflow: hidden;
-webkit-user-select: none;
cursor: default;
}
.fuzzy-finder ol:empty {
margin-bottom: 0;
border: none;
}
.fuzzy-finder .directory {
color: #b2b2b2;
padding-left: .5em;
}
.fuzzy-finder .file:before {
font-family: 'Octicons Regular';
font-size: 16px;
width: 16px;
height: 16px;
margin-right: 5px;
margin-left: 5px;
-webkit-font-smoothing: antialiased;
color: #ccc;
}
.fuzzy-finder .file.text-name:before {
content: "\f011";
}
.fuzzy-finder .file.image-name:before {
content: "\f012";
}
.fuzzy-finder .file.compressed-name:before {
content: "\f013";
}
.fuzzy-finder .file.pdf-name:before {
content: "\f014";
}

View File

@@ -1,35 +0,0 @@
.gist-notification {
position: absolute;
top: 6px;
left: 50%;
margin-left: -5%;
z-index: 99;
padding-left: 5px;
padding-right: 10px;
-webkit-box-shadow: 0px 0px 5px 5px #222;
color: #BBB;
background-color: #333;
}
.gist-notification .message-area {
float: right;
padding-top: 11px;
}
.gist-notification .message {
font-size: 13px;
}
.gist-notification .clipboard {
font-size: 11px;
}
.gist-notification:before {
font-family: 'Octicons Regular';
font-size: 32px;
width: 32px;
height: 32px;
margin-right: 5px;
-webkit-font-smoothing: antialiased;
content: "\f08c";
}

View File

@@ -1,27 +0,0 @@
.go-to-line {
position: absolute;
width: 200px;
top: 0;
left: 50%;
margin-left: -100px;
box-sizing: border-box;
z-index: 99;
background-color: #484848;
border: 1px solid #444;
color: #d2d2d2;
box-shadow: 0 0 10px #000;
border-bottom-left-radius: 3px;
border-bottom-right-radius: 3px;
padding: 5px;
cursor: pointer;
}
.go-to-line .editor {
box-sizing: border-box;
padding: 5px;
}
.go-to-line .message {
padding-top: 2px;
font-size: 11px;
}

View File

@@ -1,17 +0,0 @@
.grammar-view ol li {
line-height: 16px;
}
.grammar-view ol li.grammar {
padding-left: 21px;
}
.grammar-view ol li.current-grammar:before {
font-family: 'Octicons Regular';
width: 16px;
height: 16px;
margin-right: 5px;
-webkit-font-smoothing: antialiased;
color: #ccc;
content: '\f03a';
}

View File

@@ -2,20 +2,12 @@
"stylesheets":[
"atom.css",
"editor.css",
"grammar-view.css",
"select-list.css",
"tree-view.css",
"tabs.css",
"wrap-guide.css",
"status-bar.css",
"symbols-view.css",
"markdown-preview.css",
"fuzzy-finder.css",
"command-panel.css",
"command-palette.css",
"command-logger.css",
"autocomplete.css",
"gists.css",
"go-to-line.css"
"command-logger.css"
]
}

View File

@@ -1,30 +1,26 @@
.select-list {
background-color: #303030;
border: 1px solid #404040;
color: #d2d2d2;
box-shadow: 0 0 10px #000;
border-bottom-left-radius: 3px;
border-bottom-right-radius: 3px;
padding: 5px;
cursor: pointer;
}
.select-list ol {
border: 1px solid #212121;
}
.select-list ol li {
background-color: #292929;
border-bottom: 1px solid #1e1e1e;
padding: 5px;
}
.select-list ol li:last-child {
border-bottom: none;
.select-list li .label {
color: #ddd;
}
.select-list .editor {
margin-bottom: 5px;
.select-list li .right {
color: #999;
display: inline-block;
margin-top: -3px;
}
.select-list .key-binding {
background: -webkit-linear-gradient(
rgba(100, 100, 100, 0.5),
rgba(70,70,70, 0.5));
color: #ccc;
-webkit-box-shadow: inset 1px 1px 0 rgba(255, 255, 255, 0.1);
display: inline-block;
line-height: 100%;
}
.select-list li:hover {
@@ -35,8 +31,14 @@
background-image: -webkit-linear-gradient(#7e7e7e, #737373);
}
.select-list .error {
font-weight: bold;
color: white;
text-shadow: 0 1px 0 #4E0000;
.select-list .directory {
color: #777;
}
.select-list ol .selected .label {
color: #fff;
}
.select-list ol .selected .directory {
color: #ccc;
}

View File

@@ -1,61 +1,15 @@
.status-bar {
background-color: #303030;
border-top: 1px solid #454545;
padding: 4px 10px 3px;
font-size: 11px;
line-height: 14px;
color: #969696;
}
.status-bar .cursor-position,
.status-bar .grammar-name {
padding-left: 10px;
}
.status-bar .grammar-name {
cursor: pointer;
}
.status-bar .branch-label {
vertical-align: baseline;
}
.status-bar .git-status.octicons {
display: none;
padding-left: 10px;
margin-top:-2px;
}
.status-bar .octicons:before {
font-family: 'Octicons Regular';
font-size: 14px;
width: 14px;
height: 14px;
line-height: 14px;
-webkit-font-smoothing: antialiased;
display: inline-block;
vertical-align: middle;
margin-right: 5px;
}
.status-bar .branch-icon:before {
content: "\f020";
}
.status-bar .git-status.octicons.modified-status-icon {
color: #f78a46;
display: inline-block;
}
.status-bar .modified-status-icon:before {
content: "\f26d";
}
.status-bar .git-status.octicons.new-status-icon {
color: #5293d8;
display: inline-block;
}
.status-bar .new-status-icon:before {
content: "\f26b";
}

View File

@@ -1,35 +0,0 @@
.symbols-view {
width: 50%;
margin-left: -25%;
}
.symbols-view ol {
max-height: 300px;
}
.symbols-view ol li {
padding: 2px;
border-bottom: 1px solid rgba(255, 255, 255, .05);
}
.symbols-view ol .function-name {
float: left;
display: inline-block;
margin-right: .5em;
margin: 4px 0;
}
.symbols-view li .right {
float: right;
}
.symbols-view ol .function-details {
display: inline-block;
margin: 4px 0;
margin-right: .5em;
font-size: 90%;
color: #ddd;
-webkit-border-radius: 3px;
padding: 0 4px;
background: rgba(0, 0, 0, .2);
}

View File

@@ -1,14 +1,10 @@
.tabs {
background: #333333;
border-bottom: 4px solid #424242;
font: caption;
box-shadow: inset 0 -1px 0 #2e2e2e, 0 1px 0 #191919;
margin-bottom: 1px;
}
.is-focused .tab {
cursor: default;
padding: 2px 21px 2px 9px;
background-image: -webkit-linear-gradient(#444, #3d3d3d);
border-top: 1px solid #383838;
border-right: 1px solid #2e2e2e;
@@ -29,8 +25,6 @@
}
.tab {
cursor: default;
padding: 2px 21px 2px 9px;
background-color: #555;
background-image: none;
border-top: 1px solid #383838;
@@ -78,11 +72,6 @@
.tab.file-modified .close-icon {
border: 3px solid #777;
border-radius: 10px;
}
.tab.file-modified .close-icon:before {
content: "";
}
.is-focused .tab.active:first-child,
@@ -92,12 +81,6 @@
.tab.active:before,
.tab.active:after {
position: absolute;
bottom: -1px;
width: 4px;
height: 4px;
content: " ";
z-index: 3;
border: 1px solid #595959;
}
@@ -105,57 +88,26 @@
border-bottom-right-radius: 4px;
border-width: 0 1px 1px 0;
box-shadow: 2px 2px 0 #424242;
left: -4px;
}
.is-focused .tab.active:after {
right: -4px;
border-bottom-left-radius: 4px;
border-width: 0 0 1px 1px;
box-shadow: -2px 2px 0 #424242;
}
.tab.active:before {
border-bottom-right-radius: 4px;
border-width: 0 1px 1px 0;
box-shadow: 2px 2px 0 #424242;
left: -4px;
}
.tab.active:after {
right: -4px;
border-bottom-left-radius: 4px;
border-width: 0 0 1px 1px;
box-shadow: -2px 2px 0 #424242;
}
.is-focused .tab.active:first-child:before {
display: none;
}
.tab:hover {
color: #c8c8c8;
background-image: -webkit-linear-gradient(#474747, #444444);
}
.tab .file-name {
font-size: 11px;
text-shadow: 0 -1px 1px black;
}
.tab .close-icon {
font-family: 'Octicons Regular';
font-size: 14px;
width: 14px;
height: 14px;
display: block;
cursor: pointer;
position: absolute;
right: 4px;
top: -1px;
-webkit-font-smoothing: antialiased;
}
.tab .close-icon:before {
content: "\f081";
}
.tab .close-icon:hover {
color: white;
}

View File

@@ -12,14 +12,6 @@
text-shadow: 0 -1px 0 #000;
}
.tree-view .entries {
margin-left: 12px;
}
.tree-view .entries .file .name {
margin-left: 20px;
}
.tree-view .directory.selected > .header > .name,
.tree-view .selected > .name {
color: #d2d2d2;
@@ -58,17 +50,6 @@
color: #ebebeb;
}
.tree-view .file .name,
.tree-view .directory .header {
padding-top: 4px;
padding-bottom: 4px;
padding-right: 10px;
}
.tree-view .directory .header {
padding-left: 5px;
}
.tree-view .ignored {
color: #555;
}
@@ -85,105 +66,8 @@
background-color: #333;
border-top: 1px solid #555;
-webkit-box-shadow: 0 0 3px 3px rgba(0, 0, 0, .5);
padding: 5px;
}
.tree-view-dialog .prompt {
padding-bottom: 3px;
font-size: 12px;
line-height: 16px;
color: #aaa;
}
.tree-view-dialog .prompt span {
position: relative;
top: -1px;
}
.tree-view-dialog .prompt:before {
font-family: 'Octicons Regular';
font-size: 16px;
width: 16px;
height: 16px;
margin-right: 3px;
-webkit-font-smoothing: antialiased;
}
.tree-view-dialog .prompt.add:before {
content: "\f086";
}
.tree-view-dialog .prompt.move:before {
content: "\f03e";
}
.tree-view .directory .header .name,
.tree-view .file .name {
position: relative;
padding-left: 21px;
}
.tree-view .directory .header .name:before,
.tree-view .file .name:before {
font-family: 'Octicons Regular';
font-size: 16px;
width: 16px;
height: 16px;
margin-right: 5px;
-webkit-font-smoothing: antialiased;
position: absolute;
left: 0;
}
.tree-view .disclosure-arrow:before {
font-family: 'Octicons Regular';
font-size: 12px;
width: 12px;
height: 12px;
line-height: 16px;
margin-right: 3px;
-webkit-font-smoothing: antialiased;
}
.tree-view .directory .header .directory-icon:before {
content: "\f016";
top: -5px;
}
.tree-view .directory .header .repository-icon:before {
content: "\f001";
top: -4px;
}
.tree-view .directory .header .submodule-icon:before {
content: "\f017";
top: -5px;
}
.tree-view .file .text-icon:before {
content: "\f011";
top: -2px;
}
.tree-view .file .image-icon:before {
content: "\f012";
top: -2px;
}
.tree-view .file .compressed-icon:before {
content: "\f013";
top: -2px;
}
.tree-view .file .pdf-icon:before {
content: "\f014";
top: -2px;
}
.tree-view .directory > .header .disclosure-arrow:before {
content: "\f05a";
}
.tree-view .directory.expanded > .header .disclosure-arrow:before {
content: "\f05b";
}

View File

@@ -1,3 +0,0 @@
.wrap-guide {
background: rgba(150, 150, 150, 0.1);
}

View File

@@ -21,13 +21,6 @@ html, body,
-webkit-transition: background 300ms ease-out;
}
.clear-float {
clear: both;
}
@font-face {
font-family: 'Octicons Regular';
src: url("octicons-regular-webfont.woff") format("woff");
font-weight: normal;
font-style: normal;
}
.wrap-guide {
background: rgba(150, 150, 150, 0.1);
}

View File

@@ -1,16 +0,0 @@
.select-list.autocomplete {
min-width: 150px;
webkit-box-shadow: 0 0 3px rgba(0, 0, 0, .5);
margin-left: 0px;
width: auto;
}
.autocomplete ol {
position: relative;
overflow-y: scroll;
max-height: 200px;
}
.autocomplete ol li {
padding: 0.1em 0.2em;
}

View File

@@ -1,38 +0,0 @@
.command-palette {
width: 50%;
margin-left: -25%;
}
.command-palette ol {
max-height: 300px;
}
.command-palette ol .event-description {
float: left;
display: inline-block;
margin-right: .5em;
margin: 4px 0;
}
.command-palette li .right {
float: right;
}
.command-palette ol .event-name, .command-palette ol .key-binding {
display: inline-block;
margin: 4px 0;
margin-right: .5em;
font-size: 90%;
color: #969696;
-webkit-border-radius: 3px;
padding: 0 4px;
}
.command-palette ol .event-name {
background: rgba(0, 0, 0, .3);
color: #fff;
}
.command-palette ol .key-binding {
background: #fff;
}

View File

@@ -2,25 +2,16 @@
background-color: #f4f4f4;
border-top: 1px solid #979797;
color: #ededed;
padding: 10px;
}
.command-panel .preview-list {
max-height: 300px;
overflow: auto;
margin-bottom: 10px;
position: relative;
background-color: #e7e7e7;
color: #222;
cursor: default;
border: 1px solid #989898;
}
.command-panel .preview-count {
font-size: 11px;
color: #333;
text-align: right;
padding-bottom: 1px;
}
.command-panel .preview-list li.selected, .command-panel .preview-list li.operation:hover {
@@ -28,71 +19,17 @@
}
.command-panel .preview-list .path {
padding-left: 5px;
color: #3D5075;
}
.command-panel .preview-list .path:before {
font-family: 'Octicons Regular';
font-size: 16px;
width: 16px;
height: 16px;
margin-right: 5px;
-webkit-font-smoothing: antialiased;
content: "\f011";
position: relative;
top: 1px;
}
.command-panel .preview-list .operation {
padding-top: 2px;
padding-bottom: 2px;
}
.command-panel .preview-list .line-number {
padding-left: 3px;
color: #3D5075;
margin-right: 1ex;
text-align: right;
display: inline-block;
}
.command-panel .preview-list .path-match-number {
padding-left: 8px;
color: #3D5075;
}
.command-panel .preview-list .preview {
word-break: break-all;
}
.command-panel .preview-list .preview .match {
background-color: #c8d4d7;
-webkit-border-radius: 2px;
padding: 1px;
}
.command-panel .prompt-and-editor {
display: -webkit-box;
}
.command-panel .prompt-and-editor .prompt:before {
color: #969696;
content: '\f078';
font-family: 'Octicons Regular';
position: relative;
top: -4px;
left: -5px;
-webkit-font-smoothing: antialiased;
}
.command-panel .prompt-and-editor .editor {
position: relative;
left: -4px;
margin-right: -4px;
}
.error-messages {
padding: 5px 1em;
color: white;
}
}

View File

@@ -1,11 +1,4 @@
.editor {
font-family: Inconsolata, Monaco, Courier;
line-height: 1.3;
}
.editor.mini {
height: auto;
line-height: 25px;
border: 1px solid rgba(0, 0, 0, 0.2);
border-bottom: 1px solid rgba(180, 180, 180, 0.3);
border-right: 1px solid rgba(180, 180, 180, 0.3);
@@ -15,21 +8,6 @@
.editor.mini .cursor {
background: #333;
width: 2px;
line-height: 20px;
margin-top: 2px;
}
.editor .gutter .line-number {
padding-right: .5em;
min-width: 35px;
box-sizing: border-box;
text-align: right;
opacity: 0.5;
}
.editor .gutter .line-number.cursor-line {
opacity: 1;
}
.editor .gutter.drop-shadow {
@@ -50,36 +28,4 @@
.editor .gutter .line-number.fold {
color: #fba0e3;
opacity: .8;
}
.editor .gutter .line-number.fold.cursor-line {
opacity: 1;
}
.editor .gutter .line-number:after {
font-size: 0.8em;
content: '\f078';
font-family: 'Octicons Regular';
-webkit-font-smoothing: antialiased;
color: #fba0e3;
visibility: hidden;
}
.editor .gutter .line-number.fold:after {
visibility: visible;
}
.editor .fold-marker:after {
content: '\2026';
opacity: .8;
color: #fba0e3;
padding-left: .2em;
}
.editor .line.cursor-line .fold-marker {
opacity: 1;
}
.editor .invisible {
opacity: 0.2;
}
}

View File

@@ -1,35 +0,0 @@
.gist-notification {
position: absolute;
top: 6px;
left: 50%;
margin-left: -5%;
z-index: 99;
padding-left: 5px;
padding-right: 10px;
-webkit-box-shadow: 0px 0px 5px 5px #222;
color: #BBB;
background-color: #444;
}
.gist-notification .message-area {
float: right;
padding-top: 11px;
}
.gist-notification .message {
font-size: 13px;
}
.gist-notification .clipboard {
font-size: 11px;
}
.gist-notification:before {
font-family: 'Octicons Regular';
font-size: 32px;
width: 32px;
height: 32px;
margin-right: 5px;
-webkit-font-smoothing: antialiased;
content: "\f08c";
}

View File

@@ -1,27 +0,0 @@
.go-to-line {
position: absolute;
width: 200px;
top: 0;
left: 50%;
margin-left: -100px;
box-sizing: border-box;
z-index: 99;
background-color: #eeeeee;
border: 1px solid #c6c6c6;
color: #323232;
box-shadow: 0 0 10px #555;
border-bottom-left-radius: 3px;
border-bottom-right-radius: 3px;
padding: 5px;
cursor: pointer;
}
.go-to-line .editor {
box-sizing: border-box;
padding: 5px;
}
.go-to-line .message {
padding-top: 2px;
font-size: 11px;
}

View File

@@ -1,17 +0,0 @@
.grammar-view ol li {
line-height: 16px;
}
.grammar-view ol li.grammar {
padding-left: 21px;
}
.grammar-view ol li.current-grammar:before {
font-family: 'Octicons Regular';
width: 16px;
height: 16px;
margin-right: 5px;
-webkit-font-smoothing: antialiased;
color: #ccc;
content: '\f03a';
}

View File

@@ -2,20 +2,12 @@
"stylesheets":[
"atom.css",
"editor.css",
"grammar-view.css",
"select-list.css",
"tree-view.css",
"tabs.css",
"wrap-guide.css",
"status-bar.css",
"symbols-view.css",
"markdown-preview.css",
"fuzzy-finder.css",
"command-panel.css",
"command-palette.css",
"command-logger.css",
"autocomplete.css",
"gists.css",
"go-to-line.css"
"command-logger.css"
]
}

View File

@@ -3,10 +3,6 @@
border: 1px solid #c6c6c6;
color: #323232;
box-shadow: 0 0 10px #555;
border-bottom-left-radius: 3px;
border-bottom-right-radius: 3px;
padding: 5px;
cursor: pointer;
}
.select-list ol {
@@ -16,15 +12,6 @@
.select-list ol li {
background-color: #f5f5f5;
border-bottom: 1px solid #ccc;
padding: 5px;
}
.select-list ol li:last-child {
border-bottom: none;
}
.select-list .editor {
margin-bottom: 5px;
}
.select-list li:hover {
@@ -33,10 +20,4 @@
.select-list ol .selected {
background-color: #e0e0e0;
}
.select-list .error {
font-weight: bold;
color: white;
text-shadow: 0 1px 0 #4E0000;
}

View File

@@ -1,61 +1,15 @@
.status-bar {
background-color: #e5e5e5;
border-top: 1px solid #959595;
padding: 4px 10px 3px;
font-size: 11px;
line-height: 14px;
color: #333;
}
.status-bar .cursor-position,
.status-bar .grammar-name {
padding-left: 10px;
}
.status-bar .grammar-name {
cursor: pointer;
}
.status-bar .branch-label {
vertical-align: baseline;
}
.status-bar .git-status.octicons {
display: none;
padding-left: 10px;
margin-top:-2px;
}
.status-bar .octicons:before {
font-family: 'Octicons Regular';
font-size: 14px;
width: 14px;
height: 14px;
line-height: 14px;
-webkit-font-smoothing: antialiased;
display: inline-block;
vertical-align: middle;
margin-right: 5px;
}
.status-bar .branch-icon:before {
content: "\f020";
}
.status-bar .git-status.octicons.modified-status-icon {
color: #f78a46;
display: inline-block;
}
.status-bar .modified-status-icon:before {
content: "\f26d";
}
.status-bar .git-status.octicons.new-status-icon {
color: #5293d8;
display: inline-block;
}
.status-bar .new-status-icon:before {
content: "\f26b";
}
}

View File

@@ -1,35 +0,0 @@
.symbols-view {
width: 50%;
margin-left: -25%;
}
.symbols-view ol {
max-height: 300px;
}
.symbols-view ol li {
padding: 2px;
border-bottom: 1px solid rgba(255, 255, 255, .05);
}
.symbols-view ol .function-name {
float: left;
display: inline-block;
margin-right: .5em;
margin: 4px 0;
}
.symbols-view li .right {
float: right;
}
.symbols-view ol .function-details {
display: inline-block;
margin: 4px 0;
margin-right: .5em;
font-size: 90%;
color: #ddd;
-webkit-border-radius: 3px;
padding: 0 4px;
background: rgba(0, 0, 0, .2);
}

View File

@@ -1,14 +1,10 @@
.tabs {
background: #e3e3e3;
border-bottom: 4px solid #e5e5e5;
font: caption;
box-shadow: inset 0 -1px 0 #959595, 0 1px 0 #989898;
margin-bottom: 1px;
}
.is-focused .tab {
cursor: default;
padding: 2px 21px 2px 9px;
background-image: -webkit-linear-gradient(#e0e0e0, #bfbfbf);
border-top: none;
border-right: 1px solid #959595;
@@ -18,8 +14,6 @@
}
.tab {
cursor: default;
padding: 2px 21px 2px 9px;
background-image: none;
background-color: #e0e0e0);
border-top: none;
@@ -61,10 +55,6 @@
border-radius: 10px;
}
.tab.file-modified .close-icon:before {
content: "";
}
.tab.active,
.tab.active:hover {
border-bottom-color: #e5e5e5;
@@ -74,56 +64,31 @@
.tab.active:before,
.tab.active:after {
position: absolute;
bottom: -1px;
width: 4px;
height: 4px;
content: " ";
z-index: 3;
border: 1px solid #959595;
}
.tab.active:before {
left: -5px;
border-bottom-right-radius: 4px;
border-width: 0 1px 1px 0;
box-shadow: 2px 2px 0 #e5e5e5;
left: -5px;
}
.tab.active:after {
right: -5px;
border-bottom-left-radius: 4px;
border-width: 0 0 1px 1px;
box-shadow: -2px 2px 0 #e5e5e5;
}
.tab.active:first-child:before {
display: none;
}
.tab:hover {
background-image: -webkit-linear-gradient(#e2e2e2, #e0e0e0);
}
.tab .file-name {
font-size: 11px;
text-shadow: 0 1px 0 #e0e0e0;
}
.tab .close-icon {
font-family: 'Octicons Regular';
font-size: 14px;
width: 14px;
height: 14px;
display: block;
cursor: pointer;
position: absolute;
right: 4px;
top: -1px;
-webkit-font-smoothing: antialiased;
}
.tab .close-icon:before {
content: "\f081";
}
.tab .close-icon:hover {
color: #aaa;
}

View File

@@ -12,14 +12,6 @@
text-shadow: 0 1px 0 #fff;
}
.tree-view .entries {
margin-left: 12px;
}
.tree-view .entries .file .name {
margin-left: 20px;
}
.tree-view .directory.selected > .header > .name,
.tree-view .selected > .name {
color: #262626;
@@ -95,17 +87,6 @@
color: #3D4552;
}
.tree-view .file .name,
.tree-view .directory .header {
padding-top: 4px;
padding-bottom: 4px;
padding-right: 10px;
}
.tree-view .directory .header {
padding-left: 5px;
}
.tree-view .ignored {
color: #555;
}
@@ -121,105 +102,8 @@
.tree-view-dialog {
background-color: #e7e7e7;
border-top: 1px solid #989898;
padding: 5px;
}
.tree-view-dialog .prompt {
padding-bottom: 3px;
font-size: 12px;
line-height: 16px;
color: #333;
}
.tree-view-dialog .prompt span {
position: relative;
top: -1px;
}
.tree-view-dialog .prompt:before {
font-family: 'Octicons Regular';
font-size: 16px;
width: 16px;
height: 16px;
margin-right: 3px;
-webkit-font-smoothing: antialiased;
}
.tree-view-dialog .prompt.add:before {
content: "\f086";
}
.tree-view-dialog .prompt.move:before {
content: "\f03e";
}
.tree-view .directory .header .name,
.tree-view .file .name {
position: relative;
padding-left: 21px;
}
.tree-view .directory .header .name:before,
.tree-view .file .name:before {
font-family: 'Octicons Regular';
font-size: 16px;
width: 16px;
height: 16px;
margin-right: 5px;
-webkit-font-smoothing: antialiased;
position: absolute;
left: 0;
}
.tree-view .disclosure-arrow:before {
font-family: 'Octicons Regular';
font-size: 12px;
width: 12px;
height: 12px;
line-height: 16px;
margin-right: 3px;
-webkit-font-smoothing: antialiased;
}
.tree-view .directory .header .directory-icon:before {
content: "\f016";
top: -5px;
}
.tree-view .directory .header .repository-icon:before {
content: "\f001";
top: -4px;
}
.tree-view .directory .header .submodule-icon:before {
content: "\f017";
top: -5px;
}
.tree-view .file .text-icon:before {
content: "\f011";
top: -2px;
}
.tree-view .file .image-icon:before {
content: "\f012";
top: -2px;
}
.tree-view .file .compressed-icon:before {
content: "\f013";
top: -2px;
}
.tree-view .file .pdf-icon:before {
content: "\f014";
top: -2px;
}
.tree-view .directory > .header .disclosure-arrow:before {
content: "\f05a";
}
.tree-view .directory.expanded > .header .disclosure-arrow:before {
content: "\f05b";
}
}

View File

@@ -1,3 +0,0 @@
.wrap-guide {
background: rgba(150, 150, 150, 0.3);
}