Comparar commits

...

79 Commits

Autor SHA1 Mensagem Data
Kevin Sawicki b39cee3997 ⬆️ language-python@0.30 2015-01-12 09:18:15 -08:00
Kevin Sawicki 8c6e782bd4 ⬆️ language-javascript@0.54 2015-01-12 09:17:13 -08:00
Kevin Sawicki 31106874ed ⬆️ language-xml@0.27 2015-01-12 09:16:23 -08:00
Max Brunsfeld ee73d2cf2a 📝 fix ::onDidChangeActivePaneItem docs
Refs #4946
2015-01-12 08:24:44 -08:00
Kevin Sawicki 29f95b88db deprecatedStart is an index 2015-01-09 18:40:57 -08:00
Ben Ogle 48e6cd533d Add wasDisplayed to Notification 2015-01-09 17:35:26 -08:00
Max Brunsfeld 6cc1ffa793 ⬆️ atom-keymap@2.5.0 2015-01-09 17:11:52 -08:00
Max Brunsfeld ee7587e024 Update task docs 2015-01-09 16:59:13 -08:00
Max Brunsfeld fb0769783f Don't use Emitter::off in Task
Signed-off-by: Nathan Sobo <nathan@github.com>
2015-01-09 16:59:13 -08:00
Max Brunsfeld 174b7072b7 Add specs for Task events
Signed-off-by: Nathan Sobo <nathan@github.com>
2015-01-09 16:59:13 -08:00
Kevin Sawicki f5cd8d107f Merge pull request #4973 from atom/ld-scope-notification
Log scopes to notification instead of console
2015-01-09 16:43:50 -08:00
Lee Dohm ef97197681 Use list.map instead of _.map list 2015-01-09 16:42:16 -08:00
Lee Dohm acb19c1fe1 Log scopes to notification instead of console
Fixes #4969
2015-01-09 16:33:48 -08:00
Kevin Sawicki 495a45e723 ⬆️ language-gfm@0.61 2015-01-09 15:48:17 -08:00
Max Brunsfeld 02a6ed554d Make ContextMenuManager::showForEvent private
Signed-off-by: Nathan Sobo <nathan@github.com>
2015-01-09 15:47:30 -08:00
Max Brunsfeld dde5e6123c Make Cursor::updateVisibility private 2015-01-09 15:41:08 -08:00
Nathan Sobo d26c19a0ec Deprecate Project::resolve
It’s not something that will make sense once we add the ability to have
multiple directories in a project. This adds a new private method on
Project, ::resolvePath, with the original implementation for convenience
until we actually implement multi-folder projects.
2015-01-09 15:03:07 -08:00
Max Brunsfeld f9bde050b4 Handle TextEditorElement::focus() while parent is being attached
Fixes atom/autocomplete#61
2015-01-09 15:00:35 -08:00
Nathan Sobo 19bf64f3cd Revert "Deprecate Project::resolve"
This reverts commit 3c5bd9f10a.
2015-01-09 13:58:01 -08:00
Nathan Sobo 3c5bd9f10a Deprecate Project::resolve
It’s not something that will make sense once we add the ability to have
multiple directories in a project.
2015-01-09 13:40:35 -08:00
Ben Ogle a47782ddd8 Fix context menu docs Closes #4963 2015-01-09 13:28:57 -08:00
Nathan Sobo f21dc22803 Merge pull request #4955 from atom/ns-style-sheet-is-2-words
"Style sheet" is two words – Treat it that way in the API
2015-01-09 11:36:16 -08:00
Kevin Sawicki efe9102060 ⬆️ apm@0.118 2015-01-09 11:16:18 -08:00
Nathan Sobo 2c72c1522a ⬆️ open-on-github 2015-01-09 09:28:15 -08:00
Nathan Sobo 0a5b4f9b33 Make “style sheet” two words in package.json metadata
Rename `stylesheets` -> `styleSheets`
Rename `stylesheetsMain` -> `mainStyleSheet`
2015-01-09 09:04:04 -08:00
Nathan Sobo 932d3755ce Rename stylesheets/ directory in fixture packages 2015-01-09 08:56:12 -08:00
Nathan Sobo a2e855f087 Update docs to refer to styles/ instead of stylesheets/ 2015-01-09 08:42:28 -08:00
Nathan Sobo c078f64293 Rename package stylesheets/ directory to styles/ 2015-01-09 08:42:15 -08:00
Nathan Sobo 37ba67728b Fix core deprecations 2015-01-09 08:24:48 -08:00
Nathan Sobo 7f9d06f55b Move TextEditor::pixelPositionForScreen/BufferPosition to view layer
It doesn’t make sense to talk about pixels at the model layer long-term,
even though we currently store view dimension information in the model
so we don’t have to read from the DOM for optimization purposes. This
information is only available if the view is attached, however, making
these methods a liability on the model layer.
2015-01-09 08:22:45 -08:00
Nathan Sobo f151697c4c ⬆️ packages to remove deprecations 2015-01-08 18:29:38 -08:00
Max Brunsfeld d47efdb2f1 Merge pull request #4937 from atom/ns-clean-up-package-manager
Address issues with PackageManager
2015-01-08 18:21:51 -08:00
Nathan Sobo c3efed0a2c Update deprecation messages 2015-01-08 18:21:07 -08:00
Nathan Sobo a945725a2f Add shims for tests that manually dispatch deprecated events 2015-01-08 17:51:11 -08:00
Nathan Sobo 723b4d2787 Fix undefined Grim references 2015-01-08 17:51:11 -08:00
Nathan Sobo 4ab33890fc Add PackageManager::onDidLoad/UnloadPackage
Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
2015-01-08 17:51:11 -08:00
Nathan Sobo 7acf3d4d6b Add PackageManager::onDidDeactivatePackage 2015-01-08 17:51:11 -08:00
Nathan Sobo 6dd9834ae1 Remove defunct text-mate package specs 2015-01-08 17:51:11 -08:00
Nathan Sobo a6c9244c77 Add PackageManager::onDidActivatePackage
Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
2015-01-08 17:51:11 -08:00
Nathan Sobo dbc88bde18 Remove special case in spec for packages converted from text-mate
Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
2015-01-08 17:51:11 -08:00
Nathan Sobo 18ac0091a8 Don’t call onDidActivateInitialPackages listeners until the right time
We wait until all packages without activation commands actually
activate.

Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
2015-01-08 17:51:11 -08:00
Nathan Sobo 010bd643c0 Rename onDidActivateAll -> onDidActivateInitialPackages
Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
2015-01-08 17:51:11 -08:00
Nathan Sobo 15fa19efa3 Rename onDidLoadAll -> onDidLoadInitialPackages
Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
2015-01-08 17:51:11 -08:00
Nathan Sobo 30513cfde0 Rename ThemeManager methods for clarity/consistency
Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
2015-01-08 17:51:09 -08:00
Nathan Sobo d999b4eca0 Deprecate ThemeManager::setEnabledThemes
Suggest direct config write instead.

Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
2015-01-08 17:48:32 -08:00
Nathan Sobo 4ebd9bc775 ⬆️ deprecation-cop
Closes atom/deprecation-cop#16

Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
2015-01-08 17:46:14 -08:00
Nathan Sobo caf613e7c8 Associate packageName metadata with scoped-properties/ deprecation
Signed-off-by: Max Brunsfeld <maxbrunsfeld@gmail.com>
2015-01-08 17:41:50 -08:00
Kevin Sawicki c2da368463 ⬆️ atom-light-ui@0.37 2015-01-08 15:36:47 -08:00
Kevin Sawicki 61f44c9399 ⬆️ language-gfm@0.60 2015-01-08 13:25:07 -08:00
Kevin Sawicki 0a249f776b ⬆️ settings-view@0.167 2015-01-08 13:20:18 -08:00
Kevin Sawicki 00831775dd Merge pull request #4907 from atom/ks-use-different-sudo-compile-cache
Use special compile cache when sudo-ing as root
2015-01-08 11:09:19 -08:00
Ben Ogle 72743235fb Upgrade toatom-dark-ui@0.43.0 2015-01-08 10:47:09 -08:00
Kevin Sawicki 453a44dde3 Use special compile cache when sudo-ing as root 2015-01-08 10:18:54 -08:00
Kevin Sawicki d7158a2ced ⬆️ language-sass@0.31 2015-01-08 10:18:18 -08:00
Kevin Sawicki 4e7a9edefd Prepare 0.170 release 2015-01-08 09:55:06 -08:00
Kevin Sawicki 8fa6fdb90c Merge pull request #4807 from atom/sm-icons
Icon refresh
2015-01-08 09:42:08 -08:00
Kevin Sawicki a57df59cb8 Merge pull request #4911 from postcasio/patch-3
📝 Fix PackageManager::onDidLoadAll description
2015-01-08 09:32:57 -08:00
Kevin Sawicki 99d01b5d0e ⬆️ settings-view@0.166 2015-01-08 09:22:06 -08:00
dominic c806fcf9e7 📝 Fix PackageManager::onDidLoadAll description 2015-01-08 09:42:49 +00:00
Cheng Zhao 1bc9c2eb4b ⬆️ atom-shell@0.20.5 2015-01-08 00:11:59 -08:00
simurai bd08e36d2d Replace Win icons 2015-01-08 14:14:12 +09:00
Kevin Sawicki 76a2b8c54a Add sample list item 2015-01-07 17:57:11 -08:00
Kevin Sawicki 131d2ab3ad 📝 Drop the parens 2015-01-07 17:35:25 -08:00
Kevin Sawicki 0e0c508756 Merge pull request #4901 from danfuzz/fix-url-markdown
📝 Fix URL references for LESS.
2015-01-07 17:34:33 -08:00
Dan Bornstein 325d95ed35 📝 Un-parenthesize the recommendation about LESS.
Per suggestion from @kevinsawicki.
2015-01-07 17:32:07 -08:00
Kevin Sawicki 081fc0e1ae Use icon from resources directory 2015-01-07 16:22:11 -08:00
Kevin Sawicki a6cc6afb16 Don't bundle resources/linux 2015-01-07 16:20:57 -08:00
Nathan Sobo f330e58b4f Prepare 0.169.0 release 2015-01-07 16:35:29 -07:00
Nathan Sobo a406322748 Revert "Remove .pane-item selector from core"
This reverts commit ced66d920d.
2015-01-07 16:12:22 -07:00
Nathan Sobo 8ee428f9dc ⬆️ language-gfm 2015-01-07 15:56:28 -07:00
Nathan Sobo 437873411e ⬆️ base16-tomorrow-light-theme 2015-01-07 15:54:30 -07:00
Nathan Sobo 00eecd4802 ⬆️ settings-view 2015-01-07 15:49:49 -07:00
Kevin Sawicki 2cb13e1a66 Remove lint warning 2015-01-07 14:33:18 -08:00
Kevin Sawicki 8f7f1cef23 Prepare 0.168 2015-01-07 14:25:22 -08:00
Dan Bornstein 34d41efd9a 📝 Fix URL references for LESS. 2015-01-07 14:17:23 -08:00
simurai 13cf51f835 Replace file icon 2015-01-07 23:06:08 +09:00
simurai dc06173f2f Replace main icon 2015-01-07 17:13:34 +09:00
simurai 358799285e Increse icon line thickness 2015-01-07 16:49:31 +09:00
simurai 6b34a18bd9 Replace Mac icons
with Yosemite version
2014-12-30 23:04:49 +09:00
68 arquivos alterados com 860 adições e 719 exclusões
+1 -1
Ver Arquivo
@@ -6,6 +6,6 @@
"url": "https://github.com/atom/atom.git"
},
"dependencies": {
"atom-package-manager": "0.117.0"
"atom-package-manager": "0.118.0"
}
}
+1 -1
Ver Arquivo
@@ -25,7 +25,6 @@ module.exports = (grunt) ->
cp 'atom.sh', path.join(appDir, 'atom.sh')
cp 'package.json', path.join(appDir, 'package.json')
cp path.join('resources', 'atom.png'), path.join(appDir, 'atom.png')
packageDirectories = []
nonPackageDirectories = [
@@ -72,6 +71,7 @@ module.exports = (grunt) ->
path.join('build', 'Release', 'obj')
path.join('build', 'Release', '.deps')
path.join('vendor', 'apm')
path.join('resources', 'linux')
path.join('resources', 'mac')
path.join('resources', 'win')
+1 -1
Ver Arquivo
@@ -157,7 +157,7 @@ createAtomDraftRelease = (callback) ->
body: """
### Notable Changes
*
* Something new
"""
request options, (error, response, body='') ->
+1 -1
Ver Arquivo
@@ -15,7 +15,7 @@ module.exports = (grunt) ->
return unless process.env.JANKY_SHA1
stderr ?= ''
deprecatedStart = stderr.indexOf('Calls to deprecated functions')
return if deprecatedStart.length is -1
return if deprecatedStart is -1
grunt.log.error(label)
stderr = stderr.substring(deprecatedStart)
+1 -1
Ver Arquivo
@@ -3,7 +3,7 @@
## Structure of a Keymap File
Keymap files are encoded as JSON or CSON files containing nested hashes. They
work much like stylesheets, but instead of applying style properties to elements
work much like style sheets, but instead of applying style properties to elements
matching the selector, they specify the meaning of keystrokes on elements
matching the selector. Here is an example of some bindings that apply when
keystrokes pass through `atom-text-editor` elements:
+9 -9
Ver Arquivo
@@ -15,7 +15,7 @@ my-package/
menus/
spec/
snippets/
stylesheets/
styles/
index.coffee
package.json
```
@@ -39,9 +39,9 @@ package.json files have their own additions.
- `main` (**Required**): the path to the CoffeeScript file that's the entry point
to your package
- `stylesheets` (**Optional**): an Array of Strings identifying the order of the
- `styles` (**Optional**): an Array of Strings identifying the order of the
style sheets your package needs to load. If not specified, style sheets in the
_stylesheets_ directory are added alphabetically.
_styles_ directory are added alphabetically.
- `keymaps`(**Optional**): an Array of Strings identifying the order of the
key mappings your package needs to load. If not specified, mappings in the
_keymaps_ directory are added alphabetically.
@@ -121,10 +121,10 @@ like you.
## Style Sheets
Style sheets for your package should be placed in the _stylesheets_ directory.
Style sheets for your package should be placed in the _styles_ directory.
Any style sheets in this directory will be loaded and attached to the DOM when
your package is activated. Style sheets can be written as CSS or [LESS] (but
LESS is recommended).
your package is activated. Style sheets can be written as CSS or [LESS], but
LESS is recommended.
Ideally, you won't need much in the way of styling. We've provided a standard
set of components which define both the colors and UI elements for any package
@@ -138,7 +138,7 @@ taken from the active theme's [ui-variables.less][ui-variables]. For more
information, see the [theme variables docs][theme-variables]. If you follow this
guideline, your package will look good out of the box with any theme!
An optional `stylesheets` array in your _package.json_ can list the style sheets
An optional `styleSheets` array in your _package.json_ can list the style sheets
by name to specify a loading order; otherwise, style sheets are loaded
alphabetically.
@@ -418,8 +418,8 @@ all the other available commands.
[underscore]: http://underscorejs.org/
[jasmine]: http://jasmine.github.io
[cson]: https://github.com/atom/season
[less]: http://lesscss.org
[ui-variables]: https://github.com/atom/atom-dark-ui/blob/master/stylesheets/ui-variables.less
[LESS]: http://lesscss.org
[ui-variables]: https://github.com/atom/atom-dark-ui/blob/master/styles/ui-variables.less
[first-package]: your-first-package.html
[convert-bundle]: converting-a-text-mate-bundle.html
[convert-theme]: converting-a-text-mate-theme.html
+6 -6
Ver Arquivo
@@ -1,8 +1,8 @@
# Creating a Theme
Atom's interface is rendered using HTML, and it's styled via [LESS] (a superset
of CSS). Don't worry if you haven't heard of LESS before; it's just like CSS,
but with a few handy extensions.
Atom's interface is rendered using HTML, and it's styled via [LESS] which is a
superset of CSS. Don't worry if you haven't heard of LESS before; it's just like
CSS, but with a few handy extensions.
Atom supports two types of themes: _UI_ and _syntax_. UI themes style
elements such as the tree view, the tabs, drop-down lists, and the status bar.
@@ -42,10 +42,10 @@ _Motif_ theme listed in the _Syntax Theme_ drop-down. Select it from the menu to
activate it, now when you open an editor you should see that your new
_motif-syntax_ theme in action.
Open up _stylesheets/colors.less_ to change the various colors variables which
Open up _styles/colors.less_ to change the various colors variables which
have been already been defined. For example, turn `@red` into `#f4c2c1`.
Then open _stylesheets/base.less_ and modify the various selectors that have
Then open _styles/base.less_ and modify the various selectors that have
been already been defined. These selectors style different parts of code in the
editor such as comments, strings and the line numbers in the gutter.
@@ -131,7 +131,7 @@ _styleguide_, or use the shortcut `cmd-ctrl-shift-g`.
![styleguide-img]
[atomio]: http://atom.io/packages
[less]: http://lesscss.org/
[LESS]: http://lesscss.org/
[git]: http://git-scm.com/
[atom]: https://atom.io/
[package.json]: ./creating-a-package.html#package-json
+1 -1
Ver Arquivo
@@ -54,7 +54,7 @@ You can also use `apm` to find new packages to install:
## Customizing Key Bindings
Atom keymaps work similarly to stylesheets. Just as stylesheets use selectors
Atom keymaps work similarly to style sheets. Just as style sheets use selectors
to apply styles to elements, Atom keymaps use selectors to associate keystrokes
with events in specific contexts. Here's a small example, excerpted from Atom's
built-in keymaps:
+4 -4
Ver Arquivo
@@ -1,6 +1,6 @@
# Upgrading Your UI Theme Or Package Selectors
In addition to changes in Atom's scripting API, we'll also be making some breaking changes to Atom's DOM structure, requiring stylesheets and keymaps in both packages and themes to be updated.
In addition to changes in Atom's scripting API, we'll also be making some breaking changes to Atom's DOM structure, requiring style sheets and keymaps in both packages and themes to be updated.
## Deprecation Cop
@@ -121,12 +121,12 @@ The selector features discussed above allow you to target shadow DOM content wit
```
my-ui-theme/
stylesheets/
styles/
index.less # loaded globally
index.atom-text-editor.less # loaded in the text editor shadow DOM
```
Check out this [style sheet](https://github.com/atom/decoration-example/blob/master/stylesheets/decoration-example.atom-text-editor.less) from the decoration-example package for an example of context-targeting.
Check out this [style sheet](https://github.com/atom/decoration-example/blob/master/styles/decoration-example.atom-text-editor.less) from the decoration-example package for an example of context-targeting.
Inside a context-targeted style sheet, there's no need to use the `::shadow` or `/deep/` expressions. If you want to refer to the element containing the shadow root, you can use the `::host` pseudo-element.
@@ -134,4 +134,4 @@ During the transition phase, style sheets targeting the `atom-text-editor` conte
[shadow-dom-101]: http://www.html5rocks.com/en/tutorials/webcomponents/shadowdom
[shadow-dom-201]: http://www.html5rocks.com/en/tutorials/webcomponents/shadowdom-201#toc-style-cat-hat
[find-and-replace]: https://github.com/atom/find-and-replace/blob/95351f261bc384960a69b66bf12eae8002da63f9/stylesheets/find-and-replace.less#L10
[find-and-replace]: https://github.com/atom/find-and-replace/blob/95351f261bc384960a69b66bf12eae8002da63f9/styles/find-and-replace.less#L10
+2 -2
Ver Arquivo
@@ -1,7 +1,7 @@
# Your keymap
#
# Atom keymaps work similarly to stylesheets. Just as stylesheets use selectors
# to apply styles to elements, Atom keymaps use selectors to associate
# Atom keymaps work similarly to style sheets. Just as style sheets use
# selectors to apply styles to elements, Atom keymaps use selectors to associate
# keystrokes with events in specific contexts.
#
# You can create a new keybinding in this file by typing "key" and then hitting
+18 -18
Ver Arquivo
@@ -1,7 +1,7 @@
{
"name": "atom",
"productName": "Atom",
"version": "0.167.0",
"version": "0.170.0",
"description": "A hackable text editor for the 21st Century.",
"main": "./src/browser/main.js",
"repository": {
@@ -17,10 +17,10 @@
"url": "http://github.com/atom/atom/raw/master/LICENSE.md"
}
],
"atomShellVersion": "0.20.4",
"atomShellVersion": "0.20.5",
"dependencies": {
"async": "0.2.6",
"atom-keymap": "^2.3.3",
"atom-keymap": "^2.5.0",
"bootstrap": "git+https://github.com/atom/bootstrap.git#6af81906189f1747fd6c93479e3d998ebe041372",
"clear-cut": "0.4.0",
"coffee-script": "1.7.0",
@@ -33,7 +33,7 @@
"fstream": "0.1.24",
"fuzzaldrin": "^2.1",
"git-utils": "^2.2",
"grim": "1.0.0",
"grim": "1.1.0",
"guid": "0.0.10",
"jasmine-json": "~0.0",
"jasmine-tagged": "^1.1.2",
@@ -45,7 +45,7 @@
"nslog": "^1.0.1",
"oniguruma": "^3.0.4",
"optimist": "0.4.0",
"pathwatcher": "^2.3.7",
"pathwatcher": "^2.5.0",
"property-accessors": "^1",
"q": "^1.0.1",
"random-words": "0.0.1",
@@ -68,22 +68,22 @@
},
"packageDependencies": {
"atom-dark-syntax": "0.23.0",
"atom-dark-ui": "0.42.0",
"atom-dark-ui": "0.43.0",
"atom-light-syntax": "0.24.0",
"atom-light-ui": "0.36.0",
"atom-light-ui": "0.37.0",
"base16-tomorrow-dark-theme": "0.23.0",
"base16-tomorrow-light-theme": "0.5.0",
"base16-tomorrow-light-theme": "0.6.0",
"solarized-dark-syntax": "0.30.0",
"solarized-light-syntax": "0.17.0",
"archive-view": "0.43.0",
"autocomplete": "0.40.0",
"autocomplete": "0.41.0",
"autoflow": "0.20.0",
"autosave": "0.19.0",
"background-tips": "0.20.0",
"bookmarks": "0.33.0",
"bracket-matcher": "0.67.0",
"command-palette": "0.32.0",
"deprecation-cop": "0.22.0",
"deprecation-cop": "0.25.0",
"dev-live-reload": "0.36.0",
"encoding-selector": "0.14.0",
"exception-reporting": "0.21.0",
@@ -95,14 +95,14 @@
"image-view": "0.46.0",
"incompatible-packages": "0.19.0",
"keybinding-resolver": "0.25.0",
"link": "0.28.0",
"link": "0.29.0",
"markdown-preview": "0.116.0",
"metrics": "0.40.0",
"notifications": "0.23.0",
"open-on-github": "0.31.0",
"open-on-github": "0.32.0",
"package-generator": "0.36.0",
"release-notes": "0.45.0",
"settings-view": "0.164.0",
"settings-view": "0.167.0",
"snippets": "0.66.0",
"spell-check": "0.49.0",
"status-bar": "0.56.0",
@@ -119,13 +119,13 @@
"language-clojure": "0.10.0",
"language-coffee-script": "0.39.0",
"language-css": "0.26.0",
"language-gfm": "0.58.0",
"language-gfm": "0.61.0",
"language-git": "0.10.0",
"language-go": "0.20.0",
"language-html": "0.28.0",
"language-hyperlink": "0.12.2",
"language-java": "0.14.0",
"language-javascript": "0.53.0",
"language-javascript": "0.54.0",
"language-json": "0.11.0",
"language-less": "0.24.0",
"language-make": "0.13.0",
@@ -134,17 +134,17 @@
"language-perl": "0.10.0",
"language-php": "0.20.0",
"language-property-list": "0.8.0",
"language-python": "0.29.0",
"language-python": "0.30.0",
"language-ruby": "0.47.0",
"language-ruby-on-rails": "0.18.0",
"language-sass": "0.30.0",
"language-sass": "0.31.0",
"language-shellscript": "0.12.0",
"language-source": "0.9.0",
"language-sql": "0.13.0",
"language-text": "0.6.0",
"language-todo": "0.15.0",
"language-toml": "0.15.0",
"language-xml": "0.26.0",
"language-xml": "0.27.0",
"language-yaml": "0.22.0"
},
"private": true,
Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 284 KiB

Depois

Largura:  |  Altura:  |  Tamanho: 628 KiB

Arquivo binário não exibido.
Arquivo binário não exibido.
Arquivo binário não exibido.

Antes

Largura:  |  Altura:  |  Tamanho: 141 KiB

Depois

Largura:  |  Altura:  |  Tamanho: 182 KiB

@@ -0,0 +1 @@
styleSheets: ['2', '1']
@@ -1 +1 @@
stylesheets: ['2', '1']
styleSheets: ['2', '1']
+1 -1
Ver Arquivo
@@ -1,4 +1,4 @@
{
"theme": "ui",
"stylesheets": ["first.css", "second.less", "last.css"]
"styleSheets": ["first.css", "second.less", "last.css"]
}
+1
Ver Arquivo
@@ -1,2 +1,3 @@
module.exports = ->
emit("some-event", 1, 2, 3)
'hello'
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+8 -8
Ver Arquivo
@@ -9,14 +9,14 @@ describe "Package", ->
spyOn(atom, 'inDevMode').andReturn(false)
it "does not activate it", ->
packagePath = atom.project.resolve('packages/package-with-incompatible-native-module')
packagePath = atom.project.getDirectories()[0]?.resolve('packages/package-with-incompatible-native-module')
pack = new Package(packagePath)
expect(pack.isCompatible()).toBe false
expect(pack.incompatibleModules[0].name).toBe 'native-module'
expect(pack.incompatibleModules[0].path).toBe path.join(packagePath, 'node_modules', 'native-module')
it "caches the incompatible native modules in local storage", ->
packagePath = atom.project.resolve('packages/package-with-incompatible-native-module')
packagePath = atom.project.getDirectories()[0]?.resolve('packages/package-with-incompatible-native-module')
cacheKey = null
cacheItem = null
@@ -46,14 +46,14 @@ describe "Package", ->
describe "when the theme contains a single style file", ->
it "loads and applies css", ->
expect($("atom-text-editor").css("padding-bottom")).not.toBe "1234px"
themePath = atom.project.resolve('packages/theme-with-index-css')
themePath = atom.project.getDirectories()[0]?.resolve('packages/theme-with-index-css')
theme = new ThemePackage(themePath)
theme.activate()
expect($("atom-text-editor").css("padding-top")).toBe "1234px"
it "parses, loads and applies less", ->
expect($("atom-text-editor").css("padding-bottom")).not.toBe "1234px"
themePath = atom.project.resolve('packages/theme-with-index-less')
themePath = atom.project.getDirectories()[0]?.resolve('packages/theme-with-index-less')
theme = new ThemePackage(themePath)
theme.activate()
expect($("atom-text-editor").css("padding-top")).toBe "4321px"
@@ -64,7 +64,7 @@ describe "Package", ->
expect($("atom-text-editor").css("padding-right")).not.toBe("102px")
expect($("atom-text-editor").css("padding-bottom")).not.toBe("103px")
themePath = atom.project.resolve('packages/theme-with-package-file')
themePath = atom.project.getDirectories()[0]?.resolve('packages/theme-with-package-file')
theme = new ThemePackage(themePath)
theme.activate()
expect($("atom-text-editor").css("padding-top")).toBe("101px")
@@ -77,7 +77,7 @@ describe "Package", ->
expect($("atom-text-editor").css("padding-right")).not.toBe "20px"
expect($("atom-text-editor").css("padding-bottom")).not.toBe "30px"
themePath = atom.project.resolve('packages/theme-without-package-file')
themePath = atom.project.getDirectories()[0]?.resolve('packages/theme-without-package-file')
theme = new ThemePackage(themePath)
theme.activate()
expect($("atom-text-editor").css("padding-top")).toBe "10px"
@@ -86,7 +86,7 @@ describe "Package", ->
describe "reloading a theme", ->
beforeEach ->
themePath = atom.project.resolve('packages/theme-with-package-file')
themePath = atom.project.getDirectories()[0]?.resolve('packages/theme-with-package-file')
theme = new ThemePackage(themePath)
theme.activate()
@@ -97,7 +97,7 @@ describe "Package", ->
describe "events", ->
beforeEach ->
themePath = atom.project.resolve('packages/theme-with-package-file')
themePath = atom.project.getDirectories()[0]?.resolve('packages/theme-with-package-file')
theme = new ThemePackage(themePath)
theme.activate()
+2 -23
Ver Arquivo
@@ -8,7 +8,7 @@ BufferedProcess = require '../src/buffered-process'
describe "Project", ->
beforeEach ->
atom.project.setPaths([atom.project.resolve('dir')])
atom.project.setPaths([atom.project.getDirectories()[0]?.resolve('dir')])
describe "serialization", ->
deserializedProject = null
@@ -109,7 +109,7 @@ describe "Project", ->
expect(newBufferHandler).toHaveBeenCalledWith(editor.buffer)
it "returns number of read bytes as progress indicator", ->
filePath = atom.project.resolve 'a'
filePath = atom.project.getDirectories()[0]?.resolve 'a'
totalBytes = 0
promise = atom.project.open(filePath)
promise.progress (bytesRead) -> totalBytes = bytesRead
@@ -148,27 +148,6 @@ describe "Project", ->
atom.project.bufferForPath("b").then (anotherBuffer) ->
expect(anotherBuffer).not.toBe buffer
describe ".resolve(uri)", ->
describe "when passed an absolute or relative path", ->
it "returns an absolute path based on the atom.project's root", ->
absolutePath = require.resolve('./fixtures/dir/a')
expect(atom.project.resolve('a')).toBe absolutePath
expect(atom.project.resolve(absolutePath + '/../a')).toBe absolutePath
expect(atom.project.resolve('a/../a')).toBe absolutePath
expect(atom.project.resolve()).toBeUndefined()
describe "when passed a uri with a scheme", ->
it "does not modify uris that begin with a scheme", ->
expect(atom.project.resolve('http://zombo.com')).toBe 'http://zombo.com'
describe "when the project has no path", ->
it "returns undefined for relative URIs", ->
atom.project.setPaths([])
expect(atom.project.resolve('test.txt')).toBeUndefined()
expect(atom.project.resolve('http://github.com')).toBe 'http://github.com'
absolutePath = fs.absolute(__dirname)
expect(atom.project.resolve(absolutePath)).toBe absolutePath
describe ".setPaths(path)", ->
describe "when path is a file", ->
it "sets its path to the files parent directory and updates the root directory", ->
+23
Ver Arquivo
@@ -20,3 +20,26 @@ describe "Task", ->
expect(handlerResult).toBe 'hello'
expect(childProcess.kill).toHaveBeenCalled()
expect(processErrored).toBe false
it "calls listeners registered with ::on when events are emitted in the task", ->
task = new Task(require.resolve('./fixtures/task-spec-handler'))
eventSpy = jasmine.createSpy('eventSpy')
task.on("some-event", eventSpy)
waitsFor (done) -> task.start(done)
runs ->
expect(eventSpy).toHaveBeenCalledWith(1, 2, 3)
it "unregisters listeners when the Disposable returned by ::on is disposed", ->
task = new Task(require.resolve('./fixtures/task-spec-handler'))
eventSpy = jasmine.createSpy('eventSpy')
disposable = task.on("some-event", eventSpy)
disposable.dispose()
waitsFor (done) -> task.start(done)
runs ->
expect(eventSpy).not.toHaveBeenCalled()
+22 -22
Ver Arquivo
@@ -429,7 +429,7 @@ describe "TextEditorComponent", ->
it "excludes the null byte from character measurement", ->
editor.setText("a\0b")
nextAnimationFrame()
expect(editor.pixelPositionForScreenPosition([0, Infinity]).left).toEqual 2 * charWidth
expect(wrapperNode.pixelPositionForScreenPosition([0, Infinity]).left).toEqual 2 * charWidth
describe "when there is a fold", ->
it "renders a fold marker on the folded line", ->
@@ -801,7 +801,7 @@ describe "TextEditorComponent", ->
nextAnimationFrame()
cursorNode = componentNode.querySelector('.cursor')
{left} = editor.pixelPositionForScreenPosition([1, 10])
{left} = wrapperNode.pixelPositionForScreenPosition([1, 10])
expect(cursorNode.style['-webkit-transform']).toBe "translate(#{left}px, #{editor.getLineHeightInPixels()}px)"
describe "selection rendering", ->
@@ -895,7 +895,7 @@ describe "TextEditorComponent", ->
nextAnimationFrame()
selectionNode = componentNode.querySelector('.region')
expect(selectionNode.offsetTop).toBe editor.getLineHeightInPixels()
expect(selectionNode.offsetLeft).toBe editor.pixelPositionForScreenPosition([1, 6]).left
expect(selectionNode.offsetLeft).toBe wrapperNode.pixelPositionForScreenPosition([1, 6]).left
it "will flash the selection when flash:true is passed to editor::setSelectedBufferRange", ->
editor.setSelectedBufferRange([[1, 6], [1, 10]], flash: true)
@@ -1230,7 +1230,7 @@ describe "TextEditorComponent", ->
decoration = editor.decorateMarker(marker, {type: 'overlay', item})
nextAnimationFrame()
position = editor.pixelPositionForBufferPosition([2, 5])
position = wrapperNode.pixelPositionForBufferPosition([2, 5])
overlay = component.getTopmostDOMNode().querySelector('atom-overlay')
expect(overlay.style.left).toBe position.left + 'px'
@@ -1240,7 +1240,7 @@ describe "TextEditorComponent", ->
editor.moveRight()
nextAnimationFrame()
position = editor.pixelPositionForBufferPosition([2, 7])
position = wrapperNode.pixelPositionForBufferPosition([2, 7])
expect(overlay.style.left).toBe position.left + 'px'
expect(overlay.style.top).toBe position.top + editor.getLineHeightInPixels() + 'px'
@@ -1251,7 +1251,7 @@ describe "TextEditorComponent", ->
decoration = editor.decorateMarker(marker, {type: 'overlay', item})
nextAnimationFrame()
position = editor.pixelPositionForBufferPosition([2, 10])
position = wrapperNode.pixelPositionForBufferPosition([2, 10])
overlay = component.getTopmostDOMNode().querySelector('atom-overlay')
expect(overlay.style.left).toBe position.left + 'px'
@@ -1262,7 +1262,7 @@ describe "TextEditorComponent", ->
decoration = editor.decorateMarker(marker, {type: 'overlay', item})
nextAnimationFrame()
position = editor.pixelPositionForBufferPosition([2, 5])
position = wrapperNode.pixelPositionForBufferPosition([2, 5])
overlay = component.getTopmostDOMNode().querySelector('atom-overlay')
expect(overlay.style.left).toBe position.left + 'px'
@@ -1273,7 +1273,7 @@ describe "TextEditorComponent", ->
decoration = editor.decorateMarker(marker, {type: 'overlay', position: 'tail', item})
nextAnimationFrame()
position = editor.pixelPositionForBufferPosition([2, 5])
position = wrapperNode.pixelPositionForBufferPosition([2, 5])
overlay = component.getTopmostDOMNode().querySelector('atom-overlay')
expect(overlay.style.left).toBe position.left + 'px'
@@ -1303,7 +1303,7 @@ describe "TextEditorComponent", ->
decoration = editor.decorateMarker(marker, {type: 'overlay', item})
nextAnimationFrame()
position = editor.pixelPositionForBufferPosition([0, 26])
position = wrapperNode.pixelPositionForBufferPosition([0, 26])
overlay = component.getTopmostDOMNode().querySelector('atom-overlay')
expect(overlay.style.left).toBe position.left + 'px'
@@ -1312,7 +1312,7 @@ describe "TextEditorComponent", ->
editor.insertText('a')
nextAnimationFrame()
position = editor.pixelPositionForBufferPosition([0, 27])
position = wrapperNode.pixelPositionForBufferPosition([0, 27])
expect(overlay.style.left).toBe position.left - itemWidth + 'px'
expect(overlay.style.top).toBe position.top + editor.getLineHeightInPixels() + 'px'
@@ -1322,7 +1322,7 @@ describe "TextEditorComponent", ->
decoration = editor.decorateMarker(marker, {type: 'overlay', item})
nextAnimationFrame()
position = editor.pixelPositionForBufferPosition([4, 0])
position = wrapperNode.pixelPositionForBufferPosition([4, 0])
overlay = component.getTopmostDOMNode().querySelector('atom-overlay')
expect(overlay.style.left).toBe position.left + 'px'
@@ -1331,7 +1331,7 @@ describe "TextEditorComponent", ->
editor.insertNewline()
nextAnimationFrame()
position = editor.pixelPositionForBufferPosition([5, 0])
position = wrapperNode.pixelPositionForBufferPosition([5, 0])
expect(overlay.style.left).toBe position.left + 'px'
expect(overlay.style.top).toBe position.top - itemHeight + 'px'
@@ -1353,7 +1353,7 @@ describe "TextEditorComponent", ->
decoration = editor.decorateMarker(marker, {type: 'overlay', item})
nextAnimationFrame()
position = editor.pixelPositionForBufferPosition([0, 2])
position = wrapperNode.pixelPositionForBufferPosition([0, 2])
overlay = component.getTopmostDOMNode().querySelector('atom-overlay')
expect(overlay.style.left).toBe position.left + 'px'
@@ -1362,7 +1362,7 @@ describe "TextEditorComponent", ->
editor.insertText('a')
nextAnimationFrame()
position = editor.pixelPositionForBufferPosition([0, 3])
position = wrapperNode.pixelPositionForBufferPosition([0, 3])
expect(overlay.style.left).toBe position.left + 'px'
expect(overlay.style.top).toBe position.top + editor.getLineHeightInPixels() + 'px'
@@ -1372,7 +1372,7 @@ describe "TextEditorComponent", ->
decoration = editor.decorateMarker(marker, {type: 'overlay', item})
nextAnimationFrame()
position = editor.pixelPositionForBufferPosition([1, 0])
position = wrapperNode.pixelPositionForBufferPosition([1, 0])
overlay = component.getTopmostDOMNode().querySelector('atom-overlay')
expect(overlay.style.left).toBe position.left + 'px'
@@ -1381,7 +1381,7 @@ describe "TextEditorComponent", ->
editor.insertNewline()
nextAnimationFrame()
position = editor.pixelPositionForBufferPosition([2, 0])
position = wrapperNode.pixelPositionForBufferPosition([2, 0])
expect(overlay.style.left).toBe position.left + 'px'
expect(overlay.style.top).toBe position.top + editor.getLineHeightInPixels() + 'px'
@@ -1394,7 +1394,7 @@ describe "TextEditorComponent", ->
decoration = editor.decorateMarker(marker, {type: 'overlay', item})
nextAnimationFrame()
position = editor.pixelPositionForBufferPosition([0, 28])
position = wrapperNode.pixelPositionForBufferPosition([0, 28])
overlay = component.getTopmostDOMNode().querySelector('atom-overlay')
expect(overlay.style.left).toBe position.left + 'px'
@@ -1403,7 +1403,7 @@ describe "TextEditorComponent", ->
editor.insertText('a')
nextAnimationFrame()
position = editor.pixelPositionForBufferPosition([0, 29])
position = wrapperNode.pixelPositionForBufferPosition([0, 29])
expect(overlay.style.left).toBe position.left - itemWidth + 'px'
expect(overlay.style.top).toBe position.top + editor.getLineHeightInPixels() + 'px'
@@ -1414,7 +1414,7 @@ describe "TextEditorComponent", ->
decoration = editor.decorateMarker(marker, {type: 'overlay', item})
nextAnimationFrame()
position = editor.pixelPositionForBufferPosition([6, 0])
position = wrapperNode.pixelPositionForBufferPosition([6, 0])
overlay = component.getTopmostDOMNode().querySelector('atom-overlay')
expect(overlay.style.left).toBe position.left + 'px'
@@ -1423,7 +1423,7 @@ describe "TextEditorComponent", ->
editor.insertNewline()
nextAnimationFrame()
position = editor.pixelPositionForBufferPosition([7, 0])
position = wrapperNode.pixelPositionForBufferPosition([7, 0])
expect(overlay.style.left).toBe position.left + 'px'
expect(overlay.style.top).toBe position.top - itemHeight + 'px'
@@ -2751,14 +2751,14 @@ describe "TextEditorComponent", ->
event
clientCoordinatesForScreenPosition = (screenPosition) ->
positionOffset = editor.pixelPositionForScreenPosition(screenPosition)
positionOffset = wrapperNode.pixelPositionForScreenPosition(screenPosition)
scrollViewClientRect = componentNode.querySelector('.scroll-view').getBoundingClientRect()
clientX = scrollViewClientRect.left + positionOffset.left - editor.getScrollLeft()
clientY = scrollViewClientRect.top + positionOffset.top - editor.getScrollTop()
{clientX, clientY}
clientCoordinatesForScreenRowInGutter = (screenRow) ->
positionOffset = editor.pixelPositionForScreenPosition([screenRow, 1])
positionOffset = wrapperNode.pixelPositionForScreenPosition([screenRow, 1])
gutterClientRect = componentNode.querySelector('.gutter').getBoundingClientRect()
clientX = gutterClientRect.left + positionOffset.left - editor.getScrollLeft()
clientY = gutterClientRect.top + positionOffset.top - editor.getScrollTop()
+17 -1
Ver Arquivo
@@ -98,6 +98,22 @@ describe "TextEditorElement", ->
document.body.focus()
expect(blurCalled).toBe true
describe "when focused while a parent node is being attached to the DOM", ->
class ElementThatFocusesChild extends HTMLDivElement
attachedCallback: ->
@firstChild.focus()
document.registerElement("element-that-focuses-child",
prototype: ElementThatFocusesChild.prototype
)
it "proxies the focus event to the hidden input", ->
element = new TextEditorElement
parentElement = document.createElement("element-that-focuses-child")
parentElement.appendChild(element)
jasmineContent.appendChild(parentElement)
expect(element.shadowRoot.activeElement).toBe element.shadowRoot.querySelector('input')
describe "when the themes finish loading", ->
[themeReloadCallback, initialThemeLoadComplete, element] = []
@@ -107,7 +123,7 @@ describe "TextEditorElement", ->
spyOn(atom.themes, 'isInitialLoadComplete').andCallFake ->
initialThemeLoadComplete
spyOn(atom.themes, 'onDidReloadAll').andCallFake (fn) ->
spyOn(atom.themes, 'onDidChangeActiveThemes').andCallFake (fn) ->
themeReloadCallback = fn
atom.config.set("editor.useShadowDOM", false)
+9
Ver Arquivo
@@ -944,6 +944,15 @@ describe "TextEditor", ->
editor.undo()
expect(editor.getScrollTop()).toBe 0
describe '.logCursorScope()', ->
beforeEach ->
spyOn(atom.notifications, 'addInfo')
it 'opens a notification', ->
editor.logCursorScope()
expect(atom.notifications.addInfo).toHaveBeenCalled()
describe "selection", ->
selection = null
+27 -27
Ver Arquivo
@@ -73,54 +73,54 @@ describe "ThemeManager", ->
describe "when the core.themes config value changes", ->
it "add/removes stylesheets to reflect the new config value", ->
themeManager.onDidReloadAll reloadHandler = jasmine.createSpy()
themeManager.onDidChangeActiveThemes didChangeActiveThemesHandler = jasmine.createSpy()
spyOn(atom.styles, 'getUserStyleSheetPath').andCallFake -> null
waitsForPromise ->
themeManager.activateThemes()
runs ->
reloadHandler.reset()
didChangeActiveThemesHandler.reset()
atom.config.set('core.themes', [])
waitsFor ->
reloadHandler.callCount == 1
didChangeActiveThemesHandler.callCount == 1
runs ->
reloadHandler.reset()
didChangeActiveThemesHandler.reset()
expect($('style.theme')).toHaveLength 0
atom.config.set('core.themes', ['atom-dark-ui'])
waitsFor ->
reloadHandler.callCount == 1
didChangeActiveThemesHandler.callCount == 1
runs ->
reloadHandler.reset()
didChangeActiveThemesHandler.reset()
expect($('style[priority=1]')).toHaveLength 2
expect($('style[priority=1]:eq(0)').attr('source-path')).toMatch /atom-dark-ui/
atom.config.set('core.themes', ['atom-light-ui', 'atom-dark-ui'])
waitsFor ->
reloadHandler.callCount == 1
didChangeActiveThemesHandler.callCount == 1
runs ->
reloadHandler.reset()
didChangeActiveThemesHandler.reset()
expect($('style[priority=1]')).toHaveLength 2
expect($('style[priority=1]:eq(0)').attr('source-path')).toMatch /atom-dark-ui/
expect($('style[priority=1]:eq(1)').attr('source-path')).toMatch /atom-light-ui/
atom.config.set('core.themes', [])
waitsFor ->
reloadHandler.callCount == 1
didChangeActiveThemesHandler.callCount == 1
runs ->
reloadHandler.reset()
didChangeActiveThemesHandler.reset()
expect($('style[priority=1]')).toHaveLength 2
# atom-dark-ui has an directory path, the syntax one doesn't
atom.config.set('core.themes', ['theme-with-index-less', 'atom-dark-ui'])
waitsFor ->
reloadHandler.callCount == 1
didChangeActiveThemesHandler.callCount == 1
runs ->
expect($('style[priority=1]')).toHaveLength 2
@@ -130,7 +130,7 @@ describe "ThemeManager", ->
it 'adds theme-* classes to the workspace for each active theme', ->
workspaceElement = atom.views.getView(atom.workspace)
themeManager.onDidReloadAll reloadHandler = jasmine.createSpy()
themeManager.onDidChangeActiveThemes didChangeActiveThemesHandler = jasmine.createSpy()
waitsForPromise ->
themeManager.activateThemes()
@@ -138,11 +138,11 @@ describe "ThemeManager", ->
runs ->
expect(workspaceElement).toHaveClass 'theme-atom-dark-ui'
themeManager.onDidReloadAll reloadHandler = jasmine.createSpy()
themeManager.onDidChangeActiveThemes didChangeActiveThemesHandler = jasmine.createSpy()
atom.config.set('core.themes', ['theme-with-ui-variables', 'theme-with-syntax-variables'])
waitsFor ->
reloadHandler.callCount > 0
didChangeActiveThemesHandler.callCount > 0
runs ->
# `theme-` twice as it prefixes the name with `theme-`
@@ -170,7 +170,7 @@ describe "ThemeManager", ->
themeManager.onDidChangeStylesheets stylesheetsChangedHandler = jasmine.createSpy("stylesheetsChangedHandler")
themeManager.onDidAddStylesheet stylesheetAddedHandler = jasmine.createSpy("stylesheetAddedHandler")
cssPath = atom.project.resolve('css.css')
cssPath = atom.project.getDirectories()[0]?.resolve('css.css')
lengthBefore = $('head style').length
themeManager.requireStylesheet(cssPath)
@@ -194,7 +194,7 @@ describe "ThemeManager", ->
$('head style[id*="css.css"]').remove()
it "synchronously loads and parses less files at the given path and installs a style tag for it in the head", ->
lessPath = atom.project.resolve('sample.less')
lessPath = atom.project.getDirectories()[0]?.resolve('sample.less')
lengthBefore = $('head style').length
themeManager.requireStylesheet(lessPath)
expect($('head style').length).toBe lengthBefore + 1
@@ -218,9 +218,9 @@ describe "ThemeManager", ->
it "supports requiring css and less stylesheets without an explicit extension", ->
themeManager.requireStylesheet path.join(__dirname, 'fixtures', 'css')
expect($('head style[source-path*="css.css"]').attr('source-path')).toBe themeManager.stringToId(atom.project.resolve('css.css'))
expect($('head style[source-path*="css.css"]').attr('source-path')).toBe themeManager.stringToId(atom.project.getDirectories()[0]?.resolve('css.css'))
themeManager.requireStylesheet path.join(__dirname, 'fixtures', 'sample')
expect($('head style[source-path*="sample.less"]').attr('source-path')).toBe themeManager.stringToId(atom.project.resolve('sample.less'))
expect($('head style[source-path*="sample.less"]').attr('source-path')).toBe themeManager.stringToId(atom.project.getDirectories()[0]?.resolve('sample.less'))
$('head style[id*="css.css"]').remove()
$('head style[id*="sample.less"]').remove()
@@ -259,11 +259,11 @@ describe "ThemeManager", ->
themeManager.activateThemes()
it "loads the correct values from the theme's ui-variables file", ->
themeManager.onDidReloadAll reloadHandler = jasmine.createSpy()
themeManager.onDidChangeActiveThemes didChangeActiveThemesHandler = jasmine.createSpy()
atom.config.set('core.themes', ['theme-with-ui-variables', 'theme-with-syntax-variables'])
waitsFor ->
reloadHandler.callCount > 0
didChangeActiveThemesHandler.callCount > 0
runs ->
# an override loaded in the base css
@@ -276,11 +276,11 @@ describe "ThemeManager", ->
describe "when there is a theme with incomplete variables", ->
it "loads the correct values from the fallback ui-variables", ->
themeManager.onDidReloadAll reloadHandler = jasmine.createSpy()
themeManager.onDidChangeActiveThemes didChangeActiveThemesHandler = jasmine.createSpy()
atom.config.set('core.themes', ['theme-with-incomplete-ui-variables', 'theme-with-syntax-variables'])
waitsFor ->
reloadHandler.callCount > 0
didChangeActiveThemesHandler.callCount > 0
runs ->
# an override loaded in the base css
@@ -362,7 +362,7 @@ describe "ThemeManager", ->
themeManager.activateThemes()
it 'uses the default dark UI and syntax themes and logs a warning', ->
activeThemeNames = themeManager.getActiveNames()
activeThemeNames = themeManager.getActiveThemeNames()
expect(console.warn.callCount).toBe 2
expect(activeThemeNames.length).toBe(2)
expect(activeThemeNames).toContain('atom-dark-ui')
@@ -380,7 +380,7 @@ describe "ThemeManager", ->
themeManager.activateThemes()
it 'uses the enabled themes', ->
activeThemeNames = themeManager.getActiveNames()
activeThemeNames = themeManager.getActiveThemeNames()
expect(activeThemeNames.length).toBe(2)
expect(activeThemeNames).toContain('atom-light-ui')
expect(activeThemeNames).toContain('atom-dark-syntax')
@@ -393,7 +393,7 @@ describe "ThemeManager", ->
themeManager.activateThemes()
it 'uses the default dark UI and syntax themes', ->
activeThemeNames = themeManager.getActiveNames()
activeThemeNames = themeManager.getActiveThemeNames()
expect(activeThemeNames.length).toBe(2)
expect(activeThemeNames).toContain('atom-dark-ui')
expect(activeThemeNames).toContain('atom-dark-syntax')
@@ -406,7 +406,7 @@ describe "ThemeManager", ->
themeManager.activateThemes()
it 'uses the default dark UI theme', ->
activeThemeNames = themeManager.getActiveNames()
activeThemeNames = themeManager.getActiveThemeNames()
expect(activeThemeNames.length).toBe(2)
expect(activeThemeNames).toContain('atom-dark-ui')
expect(activeThemeNames).toContain('atom-light-syntax')
@@ -419,7 +419,7 @@ describe "ThemeManager", ->
themeManager.activateThemes()
it 'uses the default dark syntax theme', ->
activeThemeNames = themeManager.getActiveNames()
activeThemeNames = themeManager.getActiveThemeNames()
expect(activeThemeNames.length).toBe(2)
expect(activeThemeNames).toContain('atom-light-ui')
expect(activeThemeNames).toContain('atom-dark-syntax')
+17 -17
Ver Arquivo
@@ -11,7 +11,7 @@ describe "Workspace", ->
workspace = null
beforeEach ->
atom.project.setPaths([atom.project.resolve('dir')])
atom.project.setPaths([atom.project.getDirectories()[0]?.resolve('dir')])
atom.workspace = workspace = new Workspace
describe "::open(uri, options)", ->
@@ -70,19 +70,19 @@ describe "Workspace", ->
expect(openEvents).toEqual [
{
uri: atom.project.resolve('a')
uri: atom.project.getDirectories()[0]?.resolve('a')
item: editor1
pane: atom.workspace.getActivePane()
index: 0
}
{
uri: atom.project.resolve('b')
uri: atom.project.getDirectories()[0]?.resolve('b')
item: editor2
pane: atom.workspace.getActivePane()
index: 1
}
{
uri: atom.project.resolve('a')
uri: atom.project.getDirectories()[0]?.resolve('a')
item: editor1
pane: atom.workspace.getActivePane()
index: 0
@@ -96,7 +96,7 @@ describe "Workspace", ->
workspace.open('a').then (o) -> editor = o
runs ->
expect(editor.getUri()).toBe atom.project.resolve('a')
expect(editor.getUri()).toBe atom.project.getDirectories()[0]?.resolve('a')
expect(workspace.getActivePaneItem()).toBe editor
expect(workspace.getActivePane().items).toEqual [editor]
expect(workspace.getActivePane().activate).toHaveBeenCalled()
@@ -230,7 +230,7 @@ describe "Workspace", ->
workspace.addOpener(barOpener)
waitsForPromise ->
pathToOpen = atom.project.resolve('a.foo')
pathToOpen = atom.project.getDirectories()[0]?.resolve('a.foo')
workspace.open(pathToOpen, hey: "there").then (item) ->
expect(item).toEqual { foo: pathToOpen, options: {hey: "there"} }
@@ -271,11 +271,11 @@ describe "Workspace", ->
expect(workspace.getActivePaneItem().getUri()).not.toBeUndefined()
# destroy all items
expect(workspace.getActivePaneItem().getUri()).toBe atom.project.resolve('file1')
expect(workspace.getActivePaneItem().getUri()).toBe atom.project.getDirectories()[0]?.resolve('file1')
pane.destroyActiveItem()
expect(workspace.getActivePaneItem().getUri()).toBe atom.project.resolve('b')
expect(workspace.getActivePaneItem().getUri()).toBe atom.project.getDirectories()[0]?.resolve('b')
pane.destroyActiveItem()
expect(workspace.getActivePaneItem().getUri()).toBe atom.project.resolve('a')
expect(workspace.getActivePaneItem().getUri()).toBe atom.project.getDirectories()[0]?.resolve('a')
pane.destroyActiveItem()
# reopens items with uris
@@ -285,20 +285,20 @@ describe "Workspace", ->
workspace.reopenItem()
runs ->
expect(workspace.getActivePaneItem().getUri()).toBe atom.project.resolve('a')
expect(workspace.getActivePaneItem().getUri()).toBe atom.project.getDirectories()[0]?.resolve('a')
# does not reopen items that are already open
waitsForPromise ->
workspace.open('b')
runs ->
expect(workspace.getActivePaneItem().getUri()).toBe atom.project.resolve('b')
expect(workspace.getActivePaneItem().getUri()).toBe atom.project.getDirectories()[0]?.resolve('b')
waitsForPromise ->
workspace.reopenItem()
runs ->
expect(workspace.getActivePaneItem().getUri()).toBe atom.project.resolve('file1')
expect(workspace.getActivePaneItem().getUri()).toBe atom.project.getDirectories()[0]?.resolve('file1')
describe "::increase/decreaseFontSize()", ->
it "increases/decreases the font size without going below 1", ->
@@ -568,7 +568,7 @@ describe "Workspace", ->
runs ->
expect(results).toHaveLength(3)
expect(results[0].filePath).toBe atom.project.resolve('a')
expect(results[0].filePath).toBe atom.project.getDirectories()[0]?.resolve('a')
expect(results[0].matches).toHaveLength(3)
expect(results[0].matches[0]).toEqual
matchText: 'aaa'
@@ -585,7 +585,7 @@ describe "Workspace", ->
expect(results.length).toBe 1
{filePath, matches} = results[0]
expect(filePath).toBe atom.project.resolve('a')
expect(filePath).toBe atom.project.getDirectories()[0]?.resolve('a')
expect(matches).toHaveLength 1
expect(matches[0]).toEqual
matchText: '$bill'
@@ -746,10 +746,10 @@ describe "Workspace", ->
[filePath, commentFilePath, sampleContent, sampleCommentContent] = []
beforeEach ->
atom.project.setPaths([atom.project.resolve('../')])
atom.project.setPaths([atom.project.getDirectories()[0]?.resolve('../')])
filePath = atom.project.resolve('sample.js')
commentFilePath = atom.project.resolve('sample-with-comments.js')
filePath = atom.project.getDirectories()[0]?.resolve('sample.js')
commentFilePath = atom.project.getDirectories()[0]?.resolve('sample-with-comments.js')
sampleContent = fs.readFileSync(filePath).toString()
sampleCommentContent = fs.readFileSync(commentFilePath).toString()
+6 -6
Ver Arquivo
@@ -13,8 +13,8 @@ describe "WorkspaceView", ->
beforeEach ->
jasmine.snapshotDeprecations()
atom.project.setPaths([atom.project.resolve('dir')])
pathToOpen = atom.project.resolve('a')
atom.project.setPaths([atom.project.getDirectories()[0]?.resolve('dir')])
pathToOpen = atom.project.getDirectories()[0]?.resolve('a')
atom.workspace = new Workspace
atom.workspaceView = atom.views.getView(atom.workspace).__spacePenView
atom.workspaceView.enableKeymap()
@@ -93,11 +93,11 @@ describe "WorkspaceView", ->
editorView2 = atom.workspaceView.panes.find('atom-pane-axis.horizontal > atom-pane-axis.vertical > atom-pane atom-text-editor:eq(0)').view()
editorView4 = atom.workspaceView.panes.find('atom-pane-axis.horizontal > atom-pane-axis.vertical > atom-pane atom-text-editor:eq(1)').view()
expect(editorView1.getEditor().getPath()).toBe atom.project.resolve('a')
expect(editorView2.getEditor().getPath()).toBe atom.project.resolve('b')
expect(editorView3.getEditor().getPath()).toBe atom.project.resolve('../sample.js')
expect(editorView1.getEditor().getPath()).toBe atom.project.getDirectories()[0]?.resolve('a')
expect(editorView2.getEditor().getPath()).toBe atom.project.getDirectories()[0]?.resolve('b')
expect(editorView3.getEditor().getPath()).toBe atom.project.getDirectories()[0]?.resolve('../sample.js')
expect(editorView3.getEditor().getCursorScreenPosition()).toEqual [2, 4]
expect(editorView4.getEditor().getPath()).toBe atom.project.resolve('../sample.txt')
expect(editorView4.getEditor().getPath()).toBe atom.project.getDirectories()[0]?.resolve('../sample.txt')
expect(editorView4.getEditor().getCursorScreenPosition()).toEqual [0, 2]
# ensure adjust pane dimensions is called
+2 -2
Ver Arquivo
@@ -280,7 +280,7 @@ class Atom extends Model
deprecate "The atom.syntax global is deprecated. Use atom.grammars instead."
@grammars
@subscribe @packages.onDidActivateAll => @watchThemes()
@subscribe @packages.onDidActivateInitialPackages => @watchThemes()
Project = require './project'
TextBuffer = require 'text-buffer'
@@ -721,7 +721,7 @@ class Atom extends Model
@themes.load()
watchThemes: ->
@themes.onDidReloadAll =>
@themes.onDidChangeActiveThemes =>
# Only reload stylesheets from non-theme packages
for pack in @packages.getActivePackages() when pack.getType() isnt 'theme'
pack.reloadStylesheets?()
+2 -2
Ver Arquivo
@@ -89,7 +89,7 @@ class AutoUpdateManager
dialog.showMessageBox
type: 'info'
buttons: ['OK']
icon: path.join(process.resourcesPath, 'app', 'atom.png')
icon: path.resolve(__dirname, '..', '..', 'resources', 'atom.png')
message: 'No update available.'
title: 'No Update Available'
detail: "Version #{@version} is the latest version."
@@ -100,7 +100,7 @@ class AutoUpdateManager
dialog.showMessageBox
type: 'warning'
buttons: ['OK']
icon: path.join(process.resourcesPath, 'app', 'atom.png')
icon: path.resolve(__dirname, '..', '..', 'resources', 'atom.png')
message: 'There was an error checking for updates.'
title: 'Update Error'
detail: message
+7
Ver Arquivo
@@ -6,6 +6,11 @@ CSON = require 'season'
fs = require 'fs-plus'
cacheDir = path.join(fs.absolute('~/.atom'), 'compile-cache')
# Use separate compile cache when sudo'ing as root to avoid permission issues
if process.env.USER is 'root' and process.env.SUDO_USER and process.env.SUDO_USER isnt process.env.USER
cacheDir = path.join(cacheDir, 'root')
coffeeCacheDir = path.join(cacheDir, 'coffee')
CSON.setCacheDir(path.join(cacheDir, 'cson'))
@@ -40,11 +45,13 @@ requireCoffeeScript = (module, filePath) ->
module.exports =
cacheDir: cacheDir
register: ->
Object.defineProperty(require.extensions, '.coffee', {
writable: false
value: requireCoffeeScript
})
addPathToCache: (filePath) ->
extension = path.extname(filePath)
if extension is '.coffee'
+1 -4
Ver Arquivo
@@ -19,7 +19,7 @@ SpecificityCache = {}
#
# ## Context Menu CSON Format
#
# # ```coffee
# ```coffee
# 'atom-workspace': [{label: 'Help', command: 'application:open-documentation'}]
# 'atom-text-editor': [{
# label: 'History',
@@ -180,9 +180,6 @@ class ContextMenuManager
items
# Public: Request a context menu to be displayed.
#
# * `event` A DOM event.
showForEvent: (event) ->
@activeElement = event.target
menuTemplate = @templateForEvent(event)
+3 -4
Ver Arquivo
@@ -594,10 +594,6 @@ class Cursor extends Model
Section: Visibility
###
# Public: If the marker range is empty, the cursor is marked as being visible.
updateVisibility: ->
@setVisible(@marker.getBufferRange().isEmpty())
# Public: Sets whether the cursor is visible.
setVisible: (visible) ->
if @visible != visible
@@ -609,6 +605,9 @@ class Cursor extends Model
# Public: Returns the visibility of the cursor.
isVisible: -> @visible
updateVisibility: ->
@setVisible(@marker.getBufferRange().isEmpty())
###
Section: Comparing to another cursor
###
+1 -1
Ver Arquivo
@@ -8,7 +8,7 @@ module.exports =
class LessCompileCache
Subscriber.includeInto(this)
@cacheDir: path.join(atom.getConfigDirPath(), 'compile-cache', 'less')
@cacheDir: path.join(require('./coffee-cache').cacheDir, 'less')
constructor: ({resourcePath, importPaths}) ->
@lessSearchPaths = [
+1 -1
Ver Arquivo
@@ -61,7 +61,7 @@ class MenuManager
@pendingUpdateOperation = null
@template = []
atom.keymaps.onDidLoadBundledKeymaps => @loadPlatformItems()
atom.packages.onDidActivateAll => @sortPackagesMenu()
atom.packages.onDidActivateInitialPackages => @sortPackagesMenu()
# Public: Adds the given items to the application menu.
#
+7
Ver Arquivo
@@ -48,3 +48,10 @@ class NotificationManager
###
getNotifications: -> @notifications
###
Section: Managing Notifications
###
clear: ->
@notifications = []
+10 -1
Ver Arquivo
@@ -8,10 +8,14 @@ class Notification
@timestamp = new Date()
@dismissed = true
@dismissed = false if @isDismissable()
@displayed = false
onDidDismiss: (callback) ->
@emitter.on 'did-dismiss', callback
onDidDisplay: (callback) ->
@emitter.on 'did-display', callback
getOptions: -> @options
getType: -> @type
@@ -30,12 +34,17 @@ class Notification
dismiss: ->
return unless @isDismissable() and not @isDismissed()
@dismissed = true
@emitter.emit 'did-dismiss'
@emitter.emit 'did-dismiss', this
isDismissed: -> @dismissed
isDismissable: -> !!@options.dismissable
wasDisplayed: -> @displayed
setDisplayed: (@displayed) ->
@emitter.emit 'did-display', this
getIcon: ->
return @options.icon if @options.icon?
switch @type
+68 -12
Ver Arquivo
@@ -5,7 +5,7 @@ EmitterMixin = require('emissary').Emitter
{Emitter} = require 'event-kit'
fs = require 'fs-plus'
Q = require 'q'
{deprecate} = require 'grim'
Grim = require 'grim'
Package = require './package'
ThemePackage = require './theme-package'
@@ -48,30 +48,76 @@ class PackageManager
Section: Event Subscription
###
# Public: Invoke the given callback when all packages have been activated.
# Public: Invoke the given callback when all packages have been loaded.
#
# * `callback` {Function}
#
# Returns a {Disposable} on which `.dispose()` can be called to unsubscribe.
onDidLoadInitialPackages: (callback) ->
@emitter.on 'did-load-initial-packages', callback
@emitter.on 'did-load-all', callback # TODO: Remove once deprecated pre-1.0 APIs are gone
onDidLoadAll: (callback) ->
@emitter.on 'did-load-all', callback
Grim.deprecate("Use `::onDidLoadInitialPackages` instead.")
@onDidLoadInitialPackages(callback)
# Public: Invoke the given callback when all packages have been activated.
#
# * `callback` {Function}
#
# Returns a {Disposable} on which `.dispose()` can be called to unsubscribe.
onDidActivateInitialPackages: (callback) ->
@emitter.on 'did-activate-initial-packages', callback
@emitter.on 'did-activate-all', callback # TODO: Remove once deprecated pre-1.0 APIs are gone
onDidActivateAll: (callback) ->
@emitter.on 'did-activate-all', callback
Grim.deprecate("Use `::onDidActivateInitialPackages` instead.")
@onDidActivateInitialPackages(callback)
# Public: Invoke the given callback when a package is activated.
#
# * `callback` A {Function} to be invoked when a package is activated.
# * `package` The {Package} that was activated.
#
# Returns a {Disposable} on which `.dispose()` can be called to unsubscribe.
onDidActivatePackage: (callback) ->
@emitter.on 'did-activate-package', callback
# Public: Invoke the given callback when a package is deactivated.
#
# * `callback` A {Function} to be invoked when a package is deactivated.
# * `package` The {Package} that was deactivated.
#
# Returns a {Disposable} on which `.dispose()` can be called to unsubscribe.
onDidDeactivatePackage: (callback) ->
@emitter.on 'did-deactivate-package', callback
# Public: Invoke the given callback when a package is loaded.
#
# * `callback` A {Function} to be invoked when a package is loaded.
# * `package` The {Package} that was loaded.
#
# Returns a {Disposable} on which `.dispose()` can be called to unsubscribe.
onDidLoadPackage: (callback) ->
@emitter.on 'did-load-package', callback
# Public: Invoke the given callback when a package is unloaded.
#
# * `callback` A {Function} to be invoked when a package is unloaded.
# * `package` The {Package} that was unloaded.
#
# Returns a {Disposable} on which `.dispose()` can be called to unsubscribe.
onDidUnloadPackage: (callback) ->
@emitter.on 'did-unload-package', callback
on: (eventName) ->
switch eventName
when 'loaded'
deprecate 'Use PackageManager::onDidLoadAll instead'
Grim.deprecate 'Use PackageManager::onDidLoadInitialPackages instead'
when 'activated'
deprecate 'Use PackageManager::onDidActivateAll instead'
Grim.deprecate 'Use PackageManager::onDidActivateInitialPackages instead'
else
deprecate 'PackageManager::on is deprecated. Use event subscription methods instead.'
Grim.deprecate 'PackageManager::on is deprecated. Use event subscription methods instead.'
EmitterMixin::on.apply(this, arguments)
###
@@ -278,7 +324,7 @@ class PackageManager
packagePaths = _.uniq packagePaths, (packagePath) -> path.basename(packagePath)
@loadPackage(packagePath) for packagePath in packagePaths
@emit 'loaded'
@emitter.emit 'did-load-all'
@emitter.emit 'did-load-initial-packages'
loadPackage: (nameOrPath) ->
return pack if pack = @getLoadedPackage(nameOrPath)
@@ -295,6 +341,7 @@ class PackageManager
pack = new Package(packagePath, metadata)
pack.load()
@loadedPackages[pack.name] = pack
@emitter.emit 'did-load-package', pack
return pack
catch error
console.warn "Failed to load package.json '#{path.basename(packagePath)}'", error.stack ? error
@@ -312,16 +359,19 @@ class PackageManager
if pack = @getLoadedPackage(name)
delete @loadedPackages[pack.name]
@emitter.emit 'did-unload-package', pack
else
throw new Error("No loaded package for name '#{name}'")
# Activate all the packages that should be activated.
activate: ->
promises = []
for [activator, types] in @packageActivators
packages = @getLoadedPackagesForTypes(types)
activator.activatePackages(packages)
@emit 'activated'
@emitter.emit 'did-activate-all'
promises = promises.concat(activator.activatePackages(packages))
Q.all(promises).then =>
@emit 'activated'
@emitter.emit 'did-activate-initial-packages'
# another type of package manager can handle other package types.
# See ThemeManager
@@ -329,9 +379,13 @@ class PackageManager
@packageActivators.push([activator, types])
activatePackages: (packages) ->
promises = []
atom.config.transact =>
@activatePackage(pack.name) for pack in packages
for pack in packages
promise = @activatePackage(pack.name)
promises.push(promise) unless pack.hasActivationCommands()
@observeDisabledPackages()
promises
# Activate a single package by name
activatePackage: (name) ->
@@ -340,6 +394,7 @@ class PackageManager
else if pack = @loadPackage(name)
pack.activate().then =>
@activePackages[pack.name] = pack
@emitter.emit 'did-activate-package', pack
pack
else
Q.reject(new Error("Failed to load package '#{name}'"))
@@ -357,3 +412,4 @@ class PackageManager
@setPackageState(pack.name, state) if state = pack.serialize?()
pack.deactivate()
delete @activePackages[pack.name]
@emitter.emit 'did-deactivate-package', pack
+19 -9
Ver Arquivo
@@ -23,8 +23,6 @@ module.exports =
class Package
EmitterMixin.includeInto(this)
@stylesheetsDir: 'stylesheets'
@isBundledPackagePath: (packagePath) ->
if atom.packages.devMode
return false unless atom.packages.resourcePath.startsWith("#{process.resourcesPath}#{path.sep}")
@@ -44,6 +42,15 @@ class Package
throw error unless ignoreErrors
metadata ?= {}
metadata.name = packageName
if metadata.stylesheetMain?
deprecate("Use the `mainStyleSheet` key instead of `stylesheetMain` in your `package.json`", {packageName})
metadata.mainStyleSheet = metadata.stylesheetMain
if metadata.stylesheets?
deprecate("Use the `styleSheets` key instead of `stylesheets` in your `package.json`", {packageName})
metadata.styleSheets = metadata.stylesheets
metadata
keymaps: null
@@ -233,15 +240,18 @@ class Package
[stylesheetPath, atom.themes.loadStylesheet(stylesheetPath, true)]
getStylesheetsPath: ->
path.join(@path, @constructor.stylesheetsDir)
if fs.isDirectorySync(path.join(@path, 'stylesheets'))
deprecate("Store package style sheets in the `styles/` directory instead of `stylesheets/`", packageName: @name)
path.join(@path, 'stylesheets')
else
path.join(@path, 'styles')
getStylesheetPaths: ->
stylesheetDirPath = @getStylesheetsPath()
if @metadata.stylesheetMain
[fs.resolve(@path, @metadata.stylesheetMain)]
else if @metadata.stylesheets
@metadata.stylesheets.map (name) -> fs.resolve(stylesheetDirPath, name, ['css', 'less', ''])
if @metadata.mainStyleSheet
[fs.resolve(@path, @metadata.mainStyleSheet)]
else if @metadata.styleSheets
@metadata.styleSheets.map (name) -> fs.resolve(stylesheetDirPath, name, ['css', 'less', ''])
else if indexStylesheet = fs.resolve(@path, 'index', ['css', 'less'])
[indexStylesheet]
else
@@ -299,7 +309,7 @@ class Package
if fs.isDirectorySync(path.join(@path, 'scoped-properties'))
settingsDirPath = path.join(@path, 'scoped-properties')
deprecate("Store package settings files in the `settings` directory instead of `scoped-properties`")
deprecate("Store package settings files in the `settings/` directory instead of `scoped-properties/`", packageName: @name)
else
settingsDirPath = path.join(@path, 'settings')
+9 -12
Ver Arquivo
@@ -139,14 +139,11 @@ class Project extends Model
Grim.deprecate("Use ::getDirectories instead")
@rootDirectory
# Public: Given a uri, this resolves it relative to the project directory. If
# the path is already absolute or if it is prefixed with a scheme, it is
# returned unchanged.
#
# * `uri` The {String} name of the path to convert.
#
# Returns a {String} or undefined if the uri is not missing or empty.
resolve: (uri) ->
Grim.deprecate("Use `Project::getDirectories()[0]?.resolve()` instead")
@resolvePath(uri)
resolvePath: (uri) ->
return unless uri
if uri?.match(/[A-Za-z0-9+-.]+:\/\//) # leave path alone if it has a scheme
@@ -220,14 +217,14 @@ class Project extends Model
#
# Returns a promise that resolves to an {TextEditor}.
open: (filePath, options={}) ->
filePath = @resolve(filePath)
filePath = @resolvePath(filePath)
@bufferForPath(filePath).then (buffer) =>
@buildEditorForBuffer(buffer, options)
# Deprecated
openSync: (filePath, options={}) ->
deprecate("Use Project::open instead")
filePath = @resolve(filePath)
filePath = @resolvePath(filePath)
@buildEditorForBuffer(@bufferForPathSync(filePath), options)
# Retrieves all the {TextBuffer}s in the project; that is, the
@@ -239,14 +236,14 @@ class Project extends Model
# Is the buffer for the given path modified?
isPathModified: (filePath) ->
@findBufferForPath(@resolve(filePath))?.isModified()
@findBufferForPath(@resolvePath(filePath))?.isModified()
findBufferForPath: (filePath) ->
_.find @buffers, (buffer) -> buffer.getPath() == filePath
# Only to be used in specs
bufferForPathSync: (filePath) ->
absoluteFilePath = @resolve(filePath)
absoluteFilePath = @resolvePath(filePath)
existingBuffer = @findBufferForPath(absoluteFilePath) if filePath
existingBuffer ? @buildBufferSync(absoluteFilePath)
@@ -259,7 +256,7 @@ class Project extends Model
#
# Returns a promise that resolves to the {TextBuffer}.
bufferForPath: (filePath) ->
absoluteFilePath = @resolve(filePath)
absoluteFilePath = @resolvePath(filePath)
existingBuffer = @findBufferForPath(absoluteFilePath) if absoluteFilePath
Q(existingBuffer ? @buildBuffer(absoluteFilePath))
+9 -21
Ver Arquivo
@@ -35,25 +35,6 @@ _ = require 'underscore-plus'
#
# callback()
# ```
#
# ## Events
#
# ### task:log
#
# Emitted when console.log is called within the task.
#
# ### task:warn
#
# Emitted when console.warn is called within the task.
#
# ### task:error
#
# Emitted when console.error is called within the task.
#
# ### task:completed
#
# Emitted when the task has succeeded or failed.
#
module.exports =
class Task
Emitter.includeInto(this)
@@ -111,7 +92,7 @@ class Task
handleEvents: ->
@childProcess.removeAllListeners()
@childProcess.on 'message', ({event, args}) =>
@emit(event, args...)
@emit(event, args...) if @childProcess?
# Public: Starts the task.
#
@@ -144,6 +125,14 @@ class Task
throw new Error('Cannot send message to terminated process')
undefined
# Public: Call a function when an event is emitted by the child process
#
# * `eventName` The {String} name of the event to handle.
# * `callback` The {Function} to call when the event is emitted.
#
# Returns a {Disposable} that can be used to stop listening for the event.
on: (eventName, callback) -> Emitter::on.call(this, eventName, callback)
# Public: Forcefully stop the running task.
#
# No more events are emitted once this method is called.
@@ -154,5 +143,4 @@ class Task
@childProcess.kill()
@childProcess = null
@off()
undefined
+5 -5
Ver Arquivo
@@ -185,7 +185,7 @@ TextEditorComponent = React.createClass
@subscribe stylesElement.onDidUpdateStyleElement @onStylesheetsChanged
@subscribe stylesElement.onDidRemoveStyleElement @onStylesheetsChanged
unless atom.themes.isInitialLoadComplete()
@subscribe atom.themes.onDidReloadAll @onAllThemesLoaded
@subscribe atom.themes.onDidChangeActiveThemes @onAllThemesLoaded
@subscribe scrollbarStyle.changes, @refreshScrollbars
@domPollingIntervalId = setInterval(@pollDOM, @domPollingInterval)
@@ -349,8 +349,8 @@ TextEditorComponent = React.createClass
decorationParams = decoration.getProperties()
filteredDecorations[markerId] ?=
id: markerId
startPixelPosition: editor.pixelPositionForScreenPosition(screenRange.start)
endPixelPosition: editor.pixelPositionForScreenPosition(screenRange.end)
startPixelPosition: editor.pixelPositionForScreenPosition(screenRange.start, true)
endPixelPosition: editor.pixelPositionForScreenPosition(screenRange.end, true)
decorations: []
filteredDecorations[markerId].decorations.push decorationParams
filteredDecorations
@@ -368,8 +368,8 @@ TextEditorComponent = React.createClass
decorationParams = decoration.getProperties()
filteredDecorations[markerId] ?=
id: markerId
headPixelPosition: editor.pixelPositionForScreenPosition(headScreenPosition)
tailPixelPosition: editor.pixelPositionForScreenPosition(tailScreenPosition)
headPixelPosition: editor.pixelPositionForScreenPosition(headScreenPosition, true)
tailPixelPosition: editor.pixelPositionForScreenPosition(tailScreenPosition, true)
decorations: []
filteredDecorations[markerId].decorations.push decorationParams
filteredDecorations
+21 -5
Ver Arquivo
@@ -63,7 +63,8 @@ class TextEditorElement extends HTMLElement
@buildModel() unless @getModel()?
@mountComponent() unless @component?.isMounted()
@component.checkForVisibilityChange()
@focus() if @focusOnAttach
if this is document.activeElement
@focused()
@emitter.emit("did-attach")
detachedCallback: ->
@@ -128,10 +129,7 @@ class TextEditorElement extends HTMLElement
@component = null
focused: ->
if @component?
@component.focused()
else
@focusOnAttach = true
@component?.focused()
blurred: (event) ->
unless @useShadowDOM
@@ -174,6 +172,24 @@ class TextEditorElement extends HTMLElement
getDefaultCharacterWidth: ->
@getModel().getDefaultCharWidth()
# Extended: Converts a buffer position to a pixel position.
#
# * `bufferPosition` An object that represents a buffer position. It can be either
# an {Object} (`{row, column}`), {Array} (`[row, column]`), or {Point}
#
# Returns an {Object} with two values: `top` and `left`, representing the pixel position.
pixelPositionForBufferPosition: (bufferPosition) ->
@getModel().pixelPositionForBufferPosition(bufferPosition, true)
# Extended: Converts a screen position to a pixel position.
#
# * `screenPosition` An object that represents a screen position. It can be either
# an {Object} (`{row, column}`), {Array} (`[row, column]`), or {Point}
#
# Returns an {Object} with two values: `top` and `left`, representing the pixel positions.
pixelPositionForScreenPosition: (screenPosition) ->
@getModel().pixelPositionForScreenPosition(screenPosition, true)
# Extended: call the given `callback` when the editor is attached to the DOM.
#
# * `callback` {Function}
+4 -4
Ver Arquivo
@@ -174,12 +174,12 @@ class TextEditorView extends View
@model.scrollToCursorPosition()
pixelPositionForBufferPosition: (bufferPosition) ->
deprecate 'Use TextEditor::pixelPositionForBufferPosition instead. You can get the editor via editorView.getModel()'
@model.pixelPositionForBufferPosition(bufferPosition)
deprecate 'Use TextEditorElement::pixelPositionForBufferPosition instead. You can get the editor via editorView.getModel()'
@model.pixelPositionForBufferPosition(bufferPosition, true)
pixelPositionForScreenPosition: (screenPosition) ->
deprecate 'Use TextEditor::pixelPositionForScreenPosition instead. You can get the editor via editorView.getModel()'
@model.pixelPositionForScreenPosition(screenPosition)
deprecate 'Use TextEditorElement::pixelPositionForScreenPosition instead. You can get the editor via editorView.getModel()'
@model.pixelPositionForScreenPosition(screenPosition, true)
appendToLinesView: (view) ->
view.css('position', 'absolute')
+13 -15
Ver Arquivo
@@ -2522,7 +2522,11 @@ class TextEditor extends Model
logCursorScope: ->
scopeDescriptor = @getLastCursor().getScopeDescriptor()
console.log scopeDescriptor.scopes, scopeDescriptor
list = scopeDescriptor.scopes.toString().split(',')
list = list.map (item) -> "* #{item}"
content = "Scopes at Cursor\n#{list.join('\n')}"
atom.notifications.addInfo(content, dismissable: true)
# {Delegates to: DisplayBuffer.tokenForBufferPosition}
tokenForBufferPosition: (bufferPosition) -> @displayBuffer.tokenForBufferPosition(bufferPosition)
@@ -2875,21 +2879,15 @@ class TextEditor extends Model
getLastVisibleScreenRow: ->
@getVisibleRowRange()[1]
# Extended: Converts a buffer position to a pixel position.
#
# * `bufferPosition` An object that represents a buffer position. It can be either
# an {Object} (`{row, column}`), {Array} (`[row, column]`), or {Point}
#
# Returns an {Object} with two values: `top` and `left`, representing the pixel positions.
pixelPositionForBufferPosition: (bufferPosition) -> @displayBuffer.pixelPositionForBufferPosition(bufferPosition)
pixelPositionForBufferPosition: (bufferPosition, suppressDeprecation) ->
unless suppressDeprecation
deprecate("This method is deprecated on the model layer. Use `TextEditorElement::pixelPositionForBufferPosition` instead")
@displayBuffer.pixelPositionForBufferPosition(bufferPosition)
# Extended: Converts a screen position to a pixel position.
#
# * `screenPosition` An object that represents a screen position. It can be either
# an {Object} (`{row, column}`), {Array} (`[row, column]`), or {Point}
#
# Returns an {Object} with two values: `top` and `left`, representing the pixel positions.
pixelPositionForScreenPosition: (screenPosition) -> @displayBuffer.pixelPositionForScreenPosition(screenPosition)
pixelPositionForScreenPosition: (screenPosition, suppressDeprecation) ->
unless suppressDeprecation
deprecate("This method is deprecated on the model layer. Use `TextEditorElement::pixelPositionForScreenPosition` instead")
@displayBuffer.pixelPositionForScreenPosition(screenPosition)
getSelectionMarkerAttributes: ->
type: 'selection', editorId: @id, invalidate: 'never'
+25 -7
Ver Arquivo
@@ -61,8 +61,13 @@ class ThemeManager
# updating the list of active themes have completed.
#
# * `callback` {Function}
onDidChangeActiveThemes: (callback) ->
@emitter.on 'did-change-active-themes', callback
@emitter.on 'did-reload-all', callback # TODO: Remove once deprecated pre-1.0 APIs are gone
onDidReloadAll: (callback) ->
@emitter.on 'did-reload-all', callback
Grim.deprecate("Use `::onDidChangeActiveThemes` instead.")
@onDidChangeActiveThemes(callback)
# Deprecated: Invoke `callback` when a stylesheet has been added to the dom.
#
@@ -106,7 +111,7 @@ class ThemeManager
on: (eventName) ->
switch eventName
when 'reloaded'
Grim.deprecate 'Use ThemeManager::onDidReloadAll instead'
Grim.deprecate 'Use ThemeManager::onDidChangeActiveThemes instead'
when 'stylesheet-added'
Grim.deprecate 'Use ThemeManager::onDidAddStylesheet instead'
when 'stylesheet-removed'
@@ -132,9 +137,13 @@ class ThemeManager
###
# Public: Get an array of all the loaded theme names.
getLoadedNames: ->
getLoadedThemeNames: ->
theme.name for theme in @getLoadedThemes()
getLoadedNames: ->
Grim.deprecate("Use `::getLoadedThemeNames` instead.")
@getLoadedThemeNames()
# Public: Get an array of all the loaded themes.
getLoadedThemes: ->
pack for pack in @packageManager.getLoadedPackages() when pack.isTheme()
@@ -144,9 +153,13 @@ class ThemeManager
###
# Public: Get an array of all the active theme names.
getActiveNames: ->
getActiveThemeNames: ->
theme.name for theme in @getActiveThemes()
getActiveNames: ->
Grim.deprecate("Use `::getActiveThemeNames` instead.")
@getActiveThemeNames()
# Public: Get an array of all the active themes.
getActiveThemes: ->
pack for pack in @packageManager.getActivePackages() when pack.isTheme()
@@ -195,10 +208,11 @@ class ThemeManager
# the first/top theme to override later themes in the stack.
themeNames.reverse()
# Public: Set the list of enabled themes.
# Set the list of enabled themes.
#
# * `enabledThemeNames` An {Array} of {String} theme names.
setEnabledThemes: (enabledThemeNames) ->
Grim.deprecate("Use `atom.config.set('core.themes', arrayOfThemeNames)` instead")
atom.config.set('core.themes', enabledThemeNames)
###
@@ -322,7 +336,7 @@ class ThemeManager
@reloadBaseStylesheets()
@initialLoadComplete = true
@emit 'reloaded'
@emitter.emit 'did-reload-all'
@emitter.emit 'did-change-active-themes'
deferred.resolve()
deferred.promise
@@ -358,6 +372,10 @@ class ThemeManager
themePaths = []
for themeName in @getEnabledThemeNames()
if themePath = @packageManager.resolvePackagePath(themeName)
themePaths.push(path.join(themePath, Package.stylesheetsDir))
deprecatedPath = path.join(themePath, 'stylesheets')
if fs.isDirectorySync(deprecatedPath)
themePaths.push(deprecatedPath)
else
themePaths.push(path.join(themePath, 'styles'))
themePaths.filter (themePath) -> fs.isDirectorySync(themePath)
+6 -7
Ver Arquivo
@@ -6,6 +6,7 @@ Q = require 'q'
Serializable = require 'serializable'
{Emitter, Disposable, CompositeDisposable} = require 'event-kit'
Grim = require 'grim'
fs = require 'fs-plus'
TextEditor = require './text-editor'
PaneContainer = require './pane-container'
Pane = require './pane'
@@ -202,8 +203,7 @@ class Workspace extends Model
# Essential: Invoke the given callback when the active pane item changes.
#
# * `callback` {Function} to be called when the active pane item changes.
# * `event` {Object} with the following keys:
# * `activeItem` The active pane item.
# * `item` The active pane item.
#
# Returns a {Disposable} on which `.dispose()` can be called to unsubscribe.
onDidChangeActivePaneItem: (callback) -> @paneContainer.onDidChangeActivePaneItem(callback)
@@ -383,7 +383,7 @@ class Workspace extends Model
open: (uri, options={}) ->
searchAllPanes = options.searchAllPanes
split = options.split
uri = atom.project.resolve(uri)
uri = atom.project.resolvePath(uri)
pane = @paneContainer.paneForUri(uri) if searchAllPanes
pane ?= switch split
@@ -422,8 +422,7 @@ class Workspace extends Model
{initialLine, initialColumn} = options
activatePane = options.activatePane ? true
uri = atom.project.resolve(uri)
uri = atom.project.resolvePath(uri)
item = @getActivePane().itemForUri(uri)
if uri
item ?= opener(uri, options) for opener in @getOpeners() when !item
@@ -445,7 +444,7 @@ class Workspace extends Model
if uri?
item = pane.itemForUri(uri)
item ?= opener(atom.project.resolve(uri), options) for opener in @getOpeners() when !item
item ?= opener(uri, options) for opener in @getOpeners() when !item
item ?= atom.project.open(uri, options)
Q(item)
@@ -823,7 +822,7 @@ class Workspace extends Model
task = Task.once require.resolve('./scan-handler'), atom.project.getPaths()[0], regex.source, searchOptions, ->
deferred.resolve()
task.on 'scan:result-found', (result) =>
task.on 'scan:result-found', (result) ->
iterator(result) unless atom.project.isPathModified(result.filePath)
task.on 'scan:file-error', (error) ->
+5 -2
Ver Arquivo
@@ -33,14 +33,17 @@ atom-pane-container {
min-width: 0;
position: relative;
.pane-item {
color: @text-color;
background-color: @pane-item-background-color;
}
> *, > atom-text-editor.react > * {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
color: @text-color;
background-color: @pane-item-background-color;
}
}
}