Comparar commits

...

366 Commits

Autor SHA1 Mensagem Data
Nathan Sobo 9d56392cbc Merge pull request #1657 from atom/ns-multiple-unsaved-buffers
Allow multiple unsaved buffers
2014-03-02 00:50:12 +02:00
Nathan Sobo 7cc68f59a7 Allow multiple unsaved empty buffers to be opened
Fixes #1600
2014-03-01 14:40:48 -08:00
Nathan Sobo d6a9a0b15f Remove Editor::isEqual
An editor is such a stateful concept that comparing different instances
for "equality" doesn't make much sense. This was interfering with the
ability to distinguish successive editors assigned as active pane items.
2014-03-01 14:39:32 -08:00
Kevin Sawicki 766471f4b9 Upgrade to image-view@0.27.0 2014-03-01 14:24:08 -08:00
Kevin Sawicki 143a6a9cca Upgrade to image-view@0.26.0 2014-03-01 14:24:08 -08:00
Nathan Sobo 7ad41a3ff2 Upgrade text-buffer to 1.2.0 for ::backwardsScan 2014-03-01 13:28:11 -08:00
Kevin Sawicki 12fadffb00 Upgrade to language-gfm@0.19.0 2014-03-01 13:27:45 -08:00
Kevin Sawicki ef97128fe6 Upgrade to language-xml@0.8.0 2014-03-01 13:17:25 -08:00
Kevin Sawicki 1b0bc366e4 Upgrade to language-javascript@0.13.0 2014-03-01 13:15:28 -08:00
Kevin Sawicki 89c87f99e8 Upgrade to markdown-preview@0.43.0 2014-03-01 13:11:24 -08:00
Cheng Zhao 7fe3caf841 Merge pull request #1618 from atom/cz-build-symbols
Provide breakpad symbols of native modules
2014-03-01 11:31:59 +00:00
Kevin Sawicki 58f4e5bf76 Upgrade to open-on-github@0.23.0 2014-02-28 16:29:37 -08:00
Kevin Sawicki 2095c7546a Upgrade to fuzzy-finder@0.38.0 2014-02-28 16:19:45 -08:00
Kevin Sawicki 6005444fda Upgrade to markdown-preview@0.42.0 2014-02-28 16:12:47 -08:00
Kevin Sawicki 658ccaf78f Bump apm for screenshots in README templates 2014-02-28 15:43:46 -08:00
Kevin Sawicki 3112b2b071 Upgrade to bracket-matcher@0.23.0 2014-02-28 15:38:46 -08:00
Kevin Sawicki 32f746b918 Upgrade to open-on-github@0.22.0 2014-02-28 15:31:45 -08:00
Kevin Sawicki 5145a0260d Upgrade apm for publish doc fix 2014-02-28 14:47:28 -08:00
Kevin Sawicki acc782b754 Upgrade to language-python@0.9.0 2014-02-28 14:43:04 -08:00
Kevin Sawicki e6508e6978 Upgrade to markdown-preview@0.41.0 2014-02-28 14:42:50 -08:00
Nathan Sobo 4e45fbbc04 Merge pull request #1617 from atom/fix-keybinding-docs
Fix CSON syntax for keybinding example in docs
2014-03-01 00:10:41 +02:00
Ben Ogle 81c2d70fbb Update find-and-replace@0.87.0 2014-02-28 13:28:33 -08:00
Kevin Sawicki d2ec20bd10 Upgrade to archive-view@0.26.0 2014-02-28 12:31:41 -08:00
Nathan Sobo 6e3a7f8fa0 Fix licenses task, list "All Rights Reserved" in package.json for now. 2014-02-28 11:27:08 -08:00
Nathan Sobo 8e83acbafd Remove apache license from package.json 2014-02-28 11:20:50 -08:00
Nathan Sobo 40a8522460 Merge pull request #1623 from atom/ns-fix-editor-width-related-freezes
Fix freezes related to the editor's width in characters being assigned to non-positive integers
2014-02-28 20:38:07 +02:00
Nathan Sobo dfa9ca733e Merge pull request #1622 from atom/ns-fix-row-map-corruption
Fix row map corruption
2014-02-28 20:33:10 +02:00
Nathan Sobo 4681098e8c Only allow positive widths in characters to be assigned
Fixes #1574
2014-02-28 10:31:02 -08:00
Kevin Sawicki 4f81d53d11 Prepare 0.63.0 2014-02-28 10:27:33 -08:00
Nathan Sobo dc5dc608ba Avoid row map corruption when replacing a subset of a fold's buffer rows
Fixes #1576

When splicing regions into the row map, we always express the starting
buffer row, then the number of buffer rows covered by the regions we're
inserting. When we're inserting regions representing folds, they always
extend to the end of a fold, so we need to ensure the endBufferRow also
extends to the end of the fold.

For example, say rows [5…10] are folded, and we handle a replacement of
rows [5…8]. We will still insert a region for the fold covering 1 screen
row and 5 buffer rows, so we need to update the endBufferRow to extend
to the end of the fold as well (10).
2014-02-28 10:11:57 -08:00
Nathan Sobo 83dc1c76ef Add a spec that corrupts the row map by partially editing a fold 2014-02-28 10:11:57 -08:00
Kevin Sawicki d660e9a066 Go back to strict-ssl false 2014-02-28 10:01:54 -08:00
Kevin Sawicki abcaaa3264 Try single quotes for empty ca arg 2014-02-28 09:53:39 -08:00
Kevin Sawicki 7f2b871885 Use known list of registrars 2014-02-28 09:43:38 -08:00
Kevin Sawicki e51dd05989 Disable strict-ssl for now on janky machines
This is until we can get npm upgraded there.
2014-02-28 09:33:18 -08:00
Kevin Sawicki 51da7732f4 Upgrade apm for npm 1.4.4 upgrade 2014-02-28 08:49:50 -08:00
Cheng Zhao 1b7dc2f147 Make publish-build support multiple assets. 2014-02-28 16:49:03 +08:00
Garen Torikian 63aedb65d9 Fix CSON syntax for keybinding example 2014-02-28 00:01:12 -08:00
Cheng Zhao 9c503fe8d6 💄 2014-02-28 13:45:53 +08:00
Cheng Zhao 83e59bf5b0 Dump symbols when in CI. 2014-02-28 13:34:49 +08:00
Cheng Zhao 4ef5c374ef Upload symbols when publishing build. 2014-02-28 13:30:55 +08:00
Cheng Zhao 764b31fdcd Add dump-symbols task. 2014-02-28 13:09:03 +08:00
probablycorey 7fe2b41209 Upgrade to welcome@0.11.0 2014-02-27 20:45:12 -08:00
Cheng Zhao 25a14bf44f Add minidump as build dependency. 2014-02-28 10:56:57 +08:00
Kevin Sawicki bde3606757 Upgrade to link@0.19.0 2014-02-27 17:59:12 -08:00
Kevin Sawicki 84f7af7e58 Upgrade to tree-view@0.72.0 2014-02-27 17:45:10 -08:00
Ben Ogle bf0a448bff Upgrade package-generator@0.29.0 2014-02-27 17:18:18 -08:00
Ben Ogle be148574e3 Merge pull request #1611 from atom/bo-theme-doc-update
Theme doc update
2014-02-27 17:13:52 -08:00
Nathan Sobo 235e00c19a Merge pull request #1583 from atom/ns-improve-editor-api-docs
Improve generated editor docs
2014-02-28 03:12:49 +02:00
Kevin Sawicki 87035eb4a9 Upgrade to grammar-selector@0.22.0 2014-02-27 17:09:46 -08:00
Ben Ogle e67a9c9664 Changes for kevin 2014-02-27 17:05:10 -08:00
Kevin Sawicki 719dfd91ab Upgrade to find-and-replace@0.86.0 2014-02-27 16:47:47 -08:00
Kevin Sawicki 5f97c46e5f Upgrade to underscore-plus@1.0.2 2014-02-27 16:34:29 -08:00
Ben Ogle 739d171462 Add naming convention for -ui themes 2014-02-27 16:32:04 -08:00
Kevin Sawicki f105602da5 Upgrade to symbols-view@0.40.0 2014-02-27 16:31:08 -08:00
Ben Ogle 01f4ebde54 Add a bit about naming a syntax theme 2014-02-27 16:29:35 -08:00
Ben Ogle 97f3d1662e Add tip 2014-02-27 16:29:04 -08:00
Nathan Sobo aa04589dd2 Rename Editor::joinLine to ::joinLines
It acts on multiple lines, and in a quick survey of the literature I see
Sublime docs referring to it as "join lines" as well.
2014-02-27 16:16:01 -08:00
Nathan Sobo 9473039a0b Publicize Editor::foldBufferRow 2014-02-27 16:16:01 -08:00
Nathan Sobo 574cc098c6 Remove unused methods 2014-02-27 16:16:01 -08:00
Nathan Sobo f17c490768 Make Editor::unfoldBufferRow destroy all folds containing the buffer row
Also, remove ::destroyAllFoldsContainingBufferRow as it is now redundant
2014-02-27 16:16:01 -08:00
Nathan Sobo 6d246f5244 Rename Editor::foldSelection to Editor::foldSelectedLines and publicize 2014-02-27 16:16:01 -08:00
Nathan Sobo bec30ae833 Remove self references from Editor overview 2014-02-27 16:16:01 -08:00
Nathan Sobo feb501c76f Add a common tasks section to the Editor class overview 2014-02-27 16:16:00 -08:00
Nathan Sobo b32f4ad80a Kill example heading 2014-02-27 16:16:00 -08:00
Nathan Sobo 4b12228b15 Fix broken method links 2014-02-27 16:16:00 -08:00
Nathan Sobo afd576697e Remove some metaprogrammed delegators and add docs 2014-02-27 16:16:00 -08:00
Nathan Sobo 6a24360ffd Revise Editor class overview; add coordinate system explanation 2014-02-27 16:16:00 -08:00
Nathan Sobo 5faa69b66c Update Editor API docs 2014-02-27 16:16:00 -08:00
Nathan Sobo 833498011c Privatize ::bufferRangeForBufferRow 2014-02-27 16:16:00 -08:00
Nathan Sobo 4f6cc659c4 Make Editor::setVisible private 2014-02-27 16:16:00 -08:00
Nathan Sobo 5cef77e52c Clean up Editor class overview 2014-02-27 16:16:00 -08:00
Nathan Sobo 712ab734dd Privatize methods on Editor
- ::isEqual
- ::destroyFoldsIntersectingBufferRange
- ::destroyMarker
- ::addCursor
- ::addSelection
2014-02-27 16:16:00 -08:00
Kevin Sawicki 0f0a57af1c Prepare 0.62.0 2014-02-27 16:02:06 -08:00
Nathan Sobo ce5eef2605 Remove outdated section of the creating-a-package docs 2014-02-27 15:59:06 -08:00
Nathan Sobo 6d6960badb Merge pull request #1610 from atom/ns-better-error-reporting
Improve reporting of display buffer errors
2014-02-28 01:50:47 +02:00
Corey Johnson 54269aa92a Upgrade to fuzzaldrin@1.1.0 2014-02-27 15:39:17 -08:00
Kevin Sawicki ec65a71d6d Merge pull request #1607 from atom/ks-bump-max-size-to-two-mb
Bump max size to 2MB
2014-02-27 15:39:10 -08:00
Nathan Sobo 761fcde654 💄 2014-02-27 15:34:19 -08:00
Kevin Sawicki 3346ddac38 Bump max size to 2MB 2014-02-27 15:32:19 -08:00
Nathan Sobo f20c55f849 Use error constructor's name explicitly rather than arguments.callee 2014-02-27 15:29:47 -08:00
Kevin Sawicki 37c5c35a12 Upgrade to language-less@0.6.0 2014-02-27 15:28:29 -08:00
Nathan Sobo e541ccb197 Update exception-reporting to 0.16.0 for metadata, custom error names 2014-02-27 15:07:08 -08:00
Nathan Sobo 1f7027d825 Throw a custom BufferToScreenConversion error with metadata 2014-02-27 15:07:08 -08:00
Kevin Sawicki 0d9e7a5e08 Only scan dirty buffers that are inside the project 2014-02-27 14:44:34 -08:00
Kevin Sawicki c4ac96e669 Upgrade to markdown-preview@0.40.0 2014-02-27 13:48:48 -08:00
Kevin Sawicki 74f65b978e Bump minimum version to 10.8
Closes #1598
2014-02-27 13:35:00 -08:00
Kevin Sawicki eab874b3ef Upgrade to symbols-view@0.39.0 2014-02-27 13:27:12 -08:00
Kevin Sawicki 54d9361dad Upgrade to release-notes@0.25.0 2014-02-27 13:06:09 -08:00
Kevin Sawicki e8cd130ad6 Upgrade to markdown-preview@0.39.0 2014-02-27 13:02:30 -08:00
Kevin Sawicki 2f70f4ba25 📝 publishing not publish in links 2014-02-27 12:07:13 -08:00
Kevin Sawicki 1548167b94 Upgrade to language-make@0.9.0 2014-02-27 11:45:05 -08:00
Kevin Sawicki 91a320127a Upgrade to settings-view@0.85.0 2014-02-27 11:27:51 -08:00
Kevin Sawicki 7a0a4dc3b3 Upgrade to go-to-line@0.18.0 2014-02-27 11:11:36 -08:00
Kevin Sawicki ba9c006cb4 Update to wrap-guide@0.16.0 2014-02-27 11:06:01 -08:00
Kevin Sawicki 2f92160e9c Upgrade to styleguide@0.26.0 2014-02-27 11:01:38 -08:00
Kevin Sawicki 8f0063465c Update apm for 2fa sms fix 2014-02-27 10:55:12 -08:00
Nathan Sobo 0c8bb089b9 Reduce variation of buffer row to screen row conversion error message 2014-02-27 10:34:57 -08:00
Kevin Sawicki 746b99508b Upgrade to language-coffee-script@0.14.0 2014-02-27 09:32:48 -08:00
Kevin Sawicki 05ce497f29 Upgrade to language-javascript@0.12.0 2014-02-27 09:32:09 -08:00
Kevin Sawicki 5bfb382209 Upgrade to settings-view@0.84.0 2014-02-27 09:31:26 -08:00
Cheng Zhao 32efa7b112 Merge pull request #1599 from atom/atom-shell-v0.10.2
Upgrade to atom-shell@0.10.2
2014-02-27 17:18:32 +00:00
Cheng Zhao e4fcd589db Upgrade to atom-shell@0.10.3 2014-02-28 01:07:35 +08:00
Kevin Sawicki 8da5a99196 Upgrade to markdown-preview@0.38.0 2014-02-27 09:02:42 -08:00
Kevin Sawicki d5cb79027a Link to creating-a-package doc 2014-02-27 08:00:43 -08:00
Kevin Sawicki fea1a001ee Link to proper theme doc 2014-02-27 08:00:43 -08:00
Cheng Zhao 3ae6f0a93d Upgrade to atom-shell@0.10.2 2014-02-27 19:05:56 +08:00
Nathan Sobo 28d7db2371 Set overflow to 'hidden' on panes. I'm pretty sure this fixes #1594. 2014-02-26 18:19:07 -08:00
Kevin Sawicki 02b582a60d Prepare 0.61.0 release 2014-02-26 17:27:37 -08:00
Kevin Sawicki 83a40e1b33 Upgrade to settings-view@0.83.0 2014-02-26 17:16:41 -08:00
Corey Johnson ca0a875e6b Upgrade to welcome@0.10.0 2014-02-26 17:15:20 -08:00
Kevin Sawicki 9932d4789e Upgrade apm for init/clean arg checking 2014-02-26 15:44:32 -08:00
Kevin Sawicki 2c68dfd8cf Upgrade apm for relaxed publish repo check 2014-02-26 15:11:59 -08:00
Kevin Sawicki 64f66fad4d 📝 Update tests section 2014-02-26 13:30:41 -08:00
Kevin Sawicki 5a8e3100b9 Link to conversion guides 2014-02-26 13:18:38 -08:00
probablycorey 87dedc3dd2 Prepare 0.60.0 release 2014-02-26 12:23:37 -08:00
probablycorey 69b442c2a9 Prepare 0.59.0 release 2014-02-26 12:00:43 -08:00
probablycorey 77bf358d7a Upgrade to welcome@0.9.0 2014-02-26 11:55:43 -08:00
Kevin Sawicki 9ed7254277 Use 16 as font size default 2014-02-26 11:46:07 -08:00
Kevin Sawicki 1a08d99079 Prepare 0.58.0 release 2014-02-26 11:38:41 -08:00
Kevin Sawicki f852dcfd20 Upgrade apm for search command auth fix 2014-02-26 11:23:03 -08:00
Kevin Sawicki 04a4f4d5bb Upgrade apm for removed travis command 2014-02-26 11:17:46 -08:00
Kevin Sawicki 2e42dd3308 Upgrade apm version package.json version bump 2014-02-26 10:44:56 -08:00
Kevin Sawicki e9cf8d4647 Remove internal docs for beta
These can come back, just don't want them searchable for beta.
2014-02-26 10:30:15 -08:00
Kevin Sawicki 216351803b Upgrade to metrics@0.30.0 2014-02-26 10:17:40 -08:00
Kevin Sawicki d3eb969095 Upgrade to metrics@0.29.0 2014-02-26 10:14:26 -08:00
Kevin Sawicki 77c405626f Prepare 0.57.0 release 2014-02-26 09:55:28 -08:00
Kevin Sawicki e0af2122d2 📝 Add missing comma 2014-02-26 09:22:02 -08:00
Kevin Sawicki 1bd1121d50 📝 when instead of with 2014-02-26 09:20:57 -08:00
Kevin Sawicki 54e2a2af9d Upgrade to language-coffee-script@0.13.0 2014-02-26 08:37:46 -08:00
Kevin Sawicki 90a0b31cf8 Upgrade to feedback@0.27.0 2014-02-26 08:36:18 -08:00
Kevin Sawicki 1b257df5cf Upgrade to welcome@0.8.0 2014-02-25 21:34:33 -08:00
probablycorey b73acc88a7 Send release notes along with releaseName 2014-02-25 20:40:14 -08:00
Kevin Sawicki c6bb6b48b6 Upgrade to welcome@0.7.0 2014-02-25 20:32:52 -08:00
Kevin Sawicki cb95c3050d Prepare 0.56.0 release 2014-02-25 20:11:20 -08:00
Kevin Sawicki 3434a68ac0 Only use token to download grunt-download-atom-shell 2014-02-25 19:55:19 -08:00
Kevin Sawicki 9a941b97cb Use new atom-bot token 2014-02-25 19:52:59 -08:00
Kevin Sawicki 9074219145 Bump biscotto to 2.1.1 2014-02-25 19:41:45 -08:00
Kevin Sawicki e8d9512f02 Set stability level to 1 2014-02-25 19:34:24 -08:00
Kevin Sawicki 764e4ac7dd Upgrade apm for auth changes 2014-02-25 19:23:26 -08:00
Kevin Sawicki 9350b9dc7b Upgrade apm for template tweaks 2014-02-25 18:19:26 -08:00
Kevin Sawicki fb4e16250a Upgrade to markdown-preview@0.37.0 2014-02-25 18:19:26 -08:00
Corey Johnson 32a1d0c134 Prepare 0.55.0 release 2014-02-25 17:36:23 -08:00
Kevin Sawicki d471d60bfa Upgrade to markdown-preview@0.36.0 2014-02-25 16:41:15 -08:00
Corey Johnson 75d6aab811 🔥 logs 2014-02-25 16:27:39 -08:00
Corey Johnson a80fcff81c Upgrade to release-notes@0.24.0 2014-02-25 16:26:09 -08:00
Kevin Sawicki 42bce0d438 Upgrade ui themes 2014-02-25 16:25:29 -08:00
Corey Johnson 168e1d7c58 Prepare 0.54.0 release 2014-02-25 16:21:31 -08:00
Kevin Sawicki bdf0f7d10a Upgrade tomorrow theme 2014-02-25 16:09:13 -08:00
Kevin Sawicki d21060fd87 Upgrade solarized themes 2014-02-25 16:01:59 -08:00
Corey Johnson ddc7ebb576 Revert "Make master ci output verbose"
This reverts commit b1492037d5.
2014-02-25 15:59:20 -08:00
Kevin Sawicki 4ad45a1955 Upgrade syntax themes to 0.14.0 2014-02-25 15:38:41 -08:00
Kevin Sawicki 6c5b7cbd1e Downloaded instead of downloading 2014-02-25 15:21:09 -08:00
Corey Johnson b1492037d5 Make master ci output verbose 2014-02-25 14:45:26 -08:00
Kevin Sawicki 7a5537d01e Update icon 2014-02-25 13:26:42 -08:00
Kevin Sawicki 91fbb10fd3 Upgrade to biscotto@2.1 2014-02-25 11:47:10 -08:00
Corey Johnson 684687e412 Upgrade to welcome@0.6.0 2014-02-25 10:30:27 -08:00
Kevin Sawicki 4612d42fb3 Remove github-sign-in package from bundled packages 2014-02-25 10:22:20 -08:00
Kevin Sawicki 026a0672df Remove github-sign-in package from bundled packages 2014-02-25 10:19:52 -08:00
Kevin Sawicki fe4b60d6b0 Prepare 0.53.0 release 2014-02-25 10:17:08 -08:00
Cheng Zhao 040d76e3bf Merge pull request #1581 from atom/atom-shell-v0.10.1
Upgrade to atom-shell@0.10.1
2014-02-25 14:19:42 +00:00
Cheng Zhao 1885d50374 Upgrade to atom-shell@0.10.1 2014-02-25 20:14:14 +08:00
Kevin Sawicki f9e508e958 Upgrade apm for link tweaks 2014-02-24 17:40:13 -08:00
Kevin Sawicki de695e31d2 Drop www in atom.io links 2014-02-24 17:38:49 -08:00
Kevin Sawicki 4eabb5bec6 Upgrade to settings-view@0.82.0 2014-02-24 17:37:01 -08:00
Kevin Sawicki f3ec868af6 Remove Report an Issue menu 2014-02-24 17:34:02 -08:00
Kevin Sawicki 4e96d24d78 Upgrade to tree-view@0.71.0 2014-02-24 17:27:29 -08:00
Kevin Sawicki b5c3c01cc1 Upgrade to fuzzy-finder@0.37.0 2014-02-24 17:22:09 -08:00
Kevin Sawicki 13aa29b485 :memo TomDoc BufferedNodeProcess 2014-02-24 17:09:22 -08:00
Kevin Sawicki be5342fb51 Assign all ivars in constructor 2014-02-24 16:59:58 -08:00
Kevin Sawicki 50dc82d074 Add example to overview 2014-02-24 16:59:15 -08:00
Kevin Sawicki 4358ff9183 Add Editor to usage message 2014-02-24 16:41:34 -08:00
Kevin Sawicki 336f0382b5 Don't require ~/github/atom for dev mode windows
Use ~/github/atom when available but keep the dev mode flag
on the window's load settings even when it does not exist.

Changes both cmd-shift-o and `atom --dev`
2014-02-24 16:38:17 -08:00
Kevin Sawicki 0307c0e6c9 Rename ~/.atom/styles.css to ~/.atom/styles.less 2014-02-24 16:14:05 -08:00
Kevin Sawicki fc1e62471f Upgrade to feedback@0.26.0 2014-02-24 16:00:47 -08:00
Kevin Sawicki 137e9aacab Implement ::serialize in example 2014-02-24 15:26:04 -08:00
Kevin Sawicki 4ddc6c1c1d Don't bundle gists package
It will come back better than ever
2014-02-24 15:22:14 -08:00
Kevin Sawicki ef12913422 Upgrade apm for login fix and template updates 2014-02-24 15:21:24 -08:00
Kevin Sawicki 29c36836fe Upgrade to jasmine-tagged 1.1.1 2014-02-24 10:29:29 -08:00
Nathan Sobo 5c2614544d Update tabs to 0.24.0 for undefined underscore fix 2014-02-24 11:08:12 -07:00
Nathan Sobo 4c1d85e2bf 💄 A few grammar tweaks to creating-a-theme.md 2014-02-24 10:42:41 -07:00
Kevin Sawicki 2dd04c449c Merge pull request #1578 from atom/ks-dont-export-fs-and-_
Don't export fs and _
2014-02-23 17:35:37 -08:00
Kevin Sawicki 55f4a7b63e Remove unneeded exists checks 2014-02-23 17:26:49 -08:00
Kevin Sawicki a651254e38 Require fs-plus directly in specs 2014-02-23 17:19:00 -08:00
Kevin Sawicki 1131952a54 Remove stray unicode char 2014-02-23 17:11:38 -08:00
Kevin Sawicki 189ebc4476 Remove _/fs from modules directly 2014-02-23 17:09:05 -08:00
Kevin Sawicki 0688ddf083 Remove _ and fs from exports 2014-02-23 17:05:26 -08:00
Kevin Sawicki de2e59ddcb Upgrade to find-and-replace@0.85.0 2014-02-23 17:04:23 -08:00
Kevin Sawicki 41632f2d95 Upgrade to tabs@0.23.0 2014-02-23 17:03:26 -08:00
Kevin Sawicki d21e8f0aa8 Upgrade to spell-check@0.26.0 2014-02-23 16:57:25 -08:00
Kevin Sawicki 5521d3765a Upgrade to wrap-guide@0.15.0 2014-02-23 16:55:35 -08:00
Kevin Sawicki d8b4e00fa8 Upgrade to whitespace@0.15.0 2014-02-23 16:50:18 -08:00
Kevin Sawicki e1906ec9ba Upgrade to welcome@0.5.0 2014-02-23 16:45:53 -08:00
Kevin Sawicki 35fce94025 Upgrade to update-package-dependencies@0.4.0 2014-02-23 16:41:49 -08:00
Kevin Sawicki 4708ffa8f6 Upgrade to tree-view@0.70.0 2014-02-23 16:36:15 -08:00
Kevin Sawicki 8a858a1836 Upgrade to to timecop@0.15.0 2014-02-23 16:27:23 -08:00
Kevin Sawicki f8ce0be095 Upgrade to tabs@0.22.0 2014-02-23 16:20:44 -08:00
Kevin Sawicki cb17078c48 Upgrade to symbols-view@0.38.0 2014-02-23 16:14:32 -08:00
Kevin Sawicki 28ed117db8 Upgrade to styleguide@0.25.0 2014-02-23 16:05:05 -08:00
Kevin Sawicki 67d505fc7e Upgrade to status-bar@0.33.0 2014-02-23 15:59:01 -08:00
Kevin Sawicki dba2ab55e0 Upgrade to snippets@0.32.0 2014-02-23 15:52:58 -08:00
Kevin Sawicki 119bf1a879 Upgrade to settings-view@0.81.0 2014-02-23 15:48:11 -08:00
Kevin Sawicki 30dd202f33 Upgrade to release-notes@0.23.0 2014-02-23 15:43:42 -08:00
Kevin Sawicki 4a4285b18f Upgrade to package-generator@0.28.0 2014-02-23 15:38:35 -08:00
Kevin Sawicki 37b5a00df3 Upgrade to open-on-github@0.21.0 2014-02-23 15:30:55 -08:00
Kevin Sawicki 45fff99967 Upgrade to metrics@0.28.0 2014-02-23 15:26:53 -08:00
Kevin Sawicki c319329b23 Upgrade to markdown-preview@0.35.0 2014-02-23 15:12:57 -08:00
Kevin Sawicki e280aa7f40 Update to link@0.18.0 2014-02-23 15:11:51 -08:00
Kevin Sawicki f06a976052 Upgrade to keybinding-resolver@0.11.0 2014-02-23 15:02:26 -08:00
Kevin Sawicki 77b8b51c16 Upgrade to image-view@0.25.0 2014-02-23 14:52:29 -08:00
Kevin Sawicki 3b86bb528c Upgrade to grammar-selector@0.21.0 2014-02-23 14:28:30 -08:00
Kevin Sawicki d55acdd67b Upgrade to go-to-line@0.17.0 2014-02-23 14:23:51 -08:00
Kevin Sawicki de8d0197ff Upgrade to github-sign-in@0.20.0 2014-02-23 14:17:50 -08:00
Kevin Sawicki 1fb9697229 Upgrade to git-diff@0.25.0 2014-02-23 14:09:30 -08:00
Kevin Sawicki 5f8fe698ba Upgrade to gists@0.18.0 2014-02-23 13:56:13 -08:00
Kevin Sawicki ed41ba49f9 Upgrade to fuzzy-finder@0.36.0 2014-02-23 13:51:56 -08:00
Kevin Sawicki b500b23a69 Upgrade to find-and-replace@0.84.0 2014-02-23 13:35:36 -08:00
Kevin Sawicki 27099392f4 Upgrade to feedback@0.25.0 2014-02-23 13:26:16 -08:00
Kevin Sawicki 19e63996ac Upgrade to exception-reporting@0.15.0 2014-02-23 13:17:09 -08:00
Kevin Sawicki 87a4f3fc20 Upgrade to dev-live-reload@0.28.0 2014-02-23 13:13:01 -08:00
Kevin Sawicki 1dfed85f37 Upgrade to command-palette@0.18.0 2014-02-23 12:58:49 -08:00
Kevin Sawicki cac2599b55 Upgrade to bracket-matcher@0.22.0 2014-02-23 12:53:47 -08:00
Kevin Sawicki d765e7f115 Upgrade to bookmarks@0.21.0 2014-02-23 12:48:20 -08:00
Kevin Sawicki 552af032f4 Upgrade to background-tips@0.8.0 2014-02-23 12:40:51 -08:00
Kevin Sawicki 9bd82b201c Upgrade to autosave@0.12.0 2014-02-23 12:34:40 -08:00
Kevin Sawicki 662e8b8a11 Upgrade to autoflow@0.15.0 2014-02-23 12:29:21 -08:00
Kevin Sawicki eda4e53b2c Upgrade to autocomplete@0.24.0 2014-02-23 12:24:47 -08:00
Kevin Sawicki b8cbc3b5af Upgrade to archive-view@0.24.0 2014-02-23 12:09:49 -08:00
Kevin Sawicki f6309ec489 Mention menus for opening ~/.atom files 2014-02-23 11:57:20 -08:00
Kevin Sawicki be30cce41a Upgrade to settings-view@0.79.0 2014-02-23 10:30:52 -08:00
Daniel Hengeveld a6efeb7a19 Merge pull request #1575 from atom/organization-over-org
Prefer 'organization' over 'org'
2014-02-22 22:18:00 -08:00
Kevin Sawicki bc3791f738 Make it more obvious that example argument is a folder 2014-02-22 18:50:56 -08:00
Kevin Sawicki a8cc73c5e6 📝 Add deeper instructions on project tags 2014-02-22 18:45:53 -08:00
Kevin Sawicki 2a8dce75cd 📝 Tweak add/move/delete intro sentence 2014-02-22 18:31:52 -08:00
Kevin Sawicki e7200fb938 📝 Mention cmd-shift-b 2014-02-22 18:29:31 -08:00
Kevin Sawicki 8c60207fde 📝 on instead of at 2014-02-22 18:27:53 -08:00
Kevin Sawicki 1ca86d36fd Use .ctags file from symbols view 2014-02-22 18:27:07 -08:00
Kevin Sawicki 6f971901d7 📝 Settings view not preferences pane 2014-02-22 18:25:50 -08:00
Kevin Sawicki 6f353b6c54 Upgrade apm for init/view fixes 2014-02-22 18:23:27 -08:00
Kevin Sawicki a7ebdbb361 Update customizing doc for new settings view UI 2014-02-22 18:23:10 -08:00
Kevin Sawicki d84a0337b4 Merge pull request #1572 from atom/ks-review-theme-doc
Review theme doc
2014-02-22 17:41:10 -08:00
Kevin Sawicki 0d1f980940 Correct grammar in clone step 2014-02-22 17:26:52 -08:00
Kevin Sawicki cf382ea2f8 style instead of styles 2014-02-22 17:26:52 -08:00
Kevin Sawicki a674950ce1 Your instead of you 2014-02-22 17:26:52 -08:00
Kevin Sawicki 2b7bd8a9d7 📝 Document theme key in package.json 2014-02-22 17:26:52 -08:00
Kevin Sawicki d98fef52f2 📝 Update create a theme doc 2014-02-22 17:26:52 -08:00
Kevin Sawicki c2d1a10684 Upgrade to package-generator@0.27.0 2014-02-22 17:26:52 -08:00
Kevin Sawicki 2580c3e29f Upgrade to settings-view@0.78.0 2014-02-22 17:04:35 -08:00
Kevin Sawicki d2a340c8d0 Upgrade to snippets@0.31.0 2014-02-22 16:53:59 -08:00
Kevin Sawicki 8ec01b1583 Upgrade to language-make@0.8.0 2014-02-22 16:50:20 -08:00
Kevin Sawicki 1e3dc14729 Upgrade to language-yaml@0.6.0 2014-02-22 16:47:04 -08:00
Kevin Sawicki 253593431d Upgrade to language-xml@0.7.0 2014-02-22 16:38:49 -08:00
Kevin Sawicki 730fbec9ce Upgrade to language-gfm@0.18.0 2014-02-22 16:36:09 -08:00
Kevin Sawicki ec70b71511 Upgrade to language-toml@0.11.0 2014-02-22 16:35:04 -08:00
Kevin Sawicki 0b33709c69 Upgrade to language-toml@0.10.0 2014-02-22 16:33:04 -08:00
Kevin Sawicki 7db3f7fefb Upgrade to language-todo@0.6.0 2014-02-22 16:30:15 -08:00
Kevin Sawicki 9bb81b3db9 Upgrade to language-text@0.6.0 2014-02-22 16:27:27 -08:00
Kevin Sawicki dc1ee10aa4 Upgrade to language-sql@0.7.0 2014-02-22 16:15:15 -08:00
Kevin Sawicki 18214be4f7 Upgrade to language-source@0.7.0 2014-02-22 16:13:34 -08:00
Kevin Sawicki 1dd4e5bb87 Upgrade to language-shellscript@0.7.0 2014-02-22 16:07:29 -08:00
Kevin Sawicki 5c17e20a23 Upgrade to language-sass@0.8.0 2014-02-22 16:04:35 -08:00
Kevin Sawicki b040aed702 Upgrade to language-sass@0.7.0 2014-02-22 16:03:37 -08:00
Kevin Sawicki b68b075b1e Upgrade to language-ruby-on-rails@0.7.0 2014-02-22 15:46:43 -08:00
Kevin Sawicki df5f2c4f81 Upgrade to language-ruby@0.13.0 2014-02-22 15:35:36 -08:00
Kevin Sawicki 281eb99d88 Upgrade to language-python@0.8.0 2014-02-22 15:09:49 -08:00
Kevin Sawicki b03694efff Upgrade to language-property-list@0.7.0 2014-02-22 15:05:38 -08:00
Kevin Sawicki 2d9a805d8f Upgrade to language-php@0.8.0 2014-02-22 15:03:03 -08:00
Kevin Sawicki ee110dfd91 Upgrade to language-perl@0.8.0 2014-02-22 14:54:28 -08:00
Kevin Sawicki 6a0fee406e Upgrade to language-objective-c@0.9.0 2014-02-22 14:50:32 -08:00
Kevin Sawicki b8d2473c6a Upgrade to language-make@0.7.0 2014-02-22 14:23:18 -08:00
Kevin Sawicki ec4469aebb Upgrade to language-less@0.5.0 2014-02-22 14:20:22 -08:00
Kevin Sawicki 209adda958 Upgrade to language-json@0.8.0 2014-02-22 14:15:30 -08:00
Kevin Sawicki 1f74ae1206 Upgrade to language-javascript@0.11.0 2014-02-22 13:59:24 -08:00
Kevin Sawicki 04b0d6d930 Upgrade to language-java@0.8.0 2014-02-22 13:53:25 -08:00
Kevin Sawicki 5b6fcca58a Upgrade to language-hyperlink@0.8.0 2014-02-22 13:48:19 -08:00
Kevin Sawicki cfb785705b Upgrade to language-coffee-script@0.12.0 2014-02-22 13:45:42 -08:00
Kevin Sawicki 80460850d4 Upgrade to language-go@0.6.0 2014-02-22 13:45:16 -08:00
Kevin Sawicki 116b920703 Upgrade to language-html@0.8.0 2014-02-22 13:37:31 -08:00
Kevin Sawicki 89b683d9d3 Upgrade to language-go@0.5.0 2014-02-22 13:27:27 -08:00
Kevin Sawicki 5ac8611a2c Upgrade to language-css@0.10.0 2014-02-22 13:24:08 -08:00
Kevin Sawicki 52051837c9 Upgrade to language-git@0.9.0 2014-02-22 13:21:08 -08:00
Kevin Sawicki 1ed3767f0c Upgrade to language-css@0.9.0 2014-02-22 13:15:32 -08:00
Kevin Sawicki 7f0e6fd86c Upgrade to language-coffee-script@0.11.0 2014-02-22 13:01:45 -08:00
Kevin Sawicki 03610f01d4 Upgrade to language-c 0.12.0 2014-02-22 11:53:57 -08:00
Kevin Sawicki 5f548627b3 Add contributing guide 2014-02-22 11:50:45 -08:00
Kevin Sawicki 80497be71b Upgrade to language-c@0.11.0 2014-02-22 11:47:10 -08:00
Kevin Sawicki 952b5e84f7 Upgrade to season 1.0.2 2014-02-22 11:38:41 -08:00
Lee Reilly 25eb38ff60 Prefer 'organization' over 'org'
Per the Style Guide @ https://github.com/styleguide/words
2014-02-21 22:55:02 -08:00
Kevin Sawicki b4517c5393 Upgrade to biscotto 2.x
Closes #1571
2014-02-21 17:24:42 -08:00
Nathan Sobo 67a1112ced Don't destroy empty panes in specs 2014-02-21 16:08:35 -07:00
Nathan Sobo 6f38a40b94 Destroy empty panes by default. Closes #1569 2014-02-21 16:08:35 -07:00
Nathan Sobo 5a20066d2e Merge pull request #1551 from atom/ns-licenses
Check that all bundled modules have permissive licenses during CI build
2014-02-22 00:57:51 +02:00
Kevin Sawicki 37be8fab30 Upgrade to settings-view@0.37.0 2014-02-21 14:34:30 -08:00
Nathan Sobo 91fffc08b9 Upgrade release-notes and markdown-preview for fully-licensed roaster 2014-02-21 14:38:43 -07:00
Nathan Sobo 458dea9780 Allow language-coffee-script without a license for now 2014-02-21 14:22:40 -07:00
Nathan Sobo ea43384244 Remove mustache, pegs, and clojure because they aren't licensed 2014-02-21 14:17:41 -07:00
Nathan Sobo 65a8c8d946 Override license for promzard@0.2.0
It's a dependency of npm which makes it difficult to upgrade
2014-02-21 14:16:45 -07:00
Nathan Sobo 0e93a11850 Upgrade to legal-eagle 0.3.0 to check LICENSE file first 2014-02-21 13:30:07 -07:00
Nathan Sobo ce34f758bd Add "View License" item to the application menu 2014-02-21 13:11:30 -07:00
Nathan Sobo 0eaf3b6336 Add an 'application:open-license' command
It just opens the LICENSE file in a buffer
2014-02-21 13:08:26 -07:00
Nathan Sobo 4700eeb7e2 Remove Apache license and use plain-text, copyright-only license instead 2014-02-21 12:49:17 -07:00
Nathan Sobo d7d2a6f1f0 Merge branch 'master' into ns-licenses
Conflicts:
	package.json
2014-02-21 12:38:41 -07:00
Nathan Sobo 878831bfc7 Write LICENSE to the appDir during build task 2014-02-21 12:35:05 -07:00
Nathan Sobo 324ae3fe3a Replace report-licenses with generate-license task. Output plain text. 2014-02-21 11:54:04 -07:00
Kevin Sawicki bc22130938 Add publish doc to index 2014-02-21 09:51:44 -08:00
Kevin Sawicki 461b95b1ac Upgrade apm for publish fix 2014-02-20 18:29:29 -08:00
Kevin Sawicki d14396e2d3 Upgrade to language-coffee-script@0.10.0 2014-02-20 17:39:35 -08:00
Kevin Sawicki 1e0fd948a5 Upgrade to settings-view@0.77.0 2014-02-20 16:14:38 -08:00
Nathan Sobo 9d9e33f245 Merge pull request #1561 from atom/ns-modernize-doc-links
Use CoffeeScript literal syntax to reference methods in docs
2014-02-21 02:09:47 +02:00
Nathan Sobo f612a85599 Merge remote-tracking branch 'origin/master' into ns-modernize-doc-links 2014-02-20 16:35:16 -07:00
Nathan Sobo 136e7d3491 Update reference syntax in contributing docs 2014-02-20 16:34:53 -07:00
Nathan Sobo 00b913d363 Upgrade to biscotto 1.x for new method reference syntax 2014-02-20 16:30:01 -07:00
Nathan Sobo 3fd11b7aaf Merge branch 'master' into ns-modernize-doc-links 2014-02-20 16:26:34 -07:00
Nathan Sobo c1cf4efb31 Merge branch 'master' into ns-licenses
Conflicts:
	package.json
2014-02-20 16:16:01 -07:00
Kevin Sawicki 4c65d711b0 Log warning when ~/.atom/keymap.cson can't be parsed
Previously an uncaught error would be thrown and the file
would no longer be watched
2014-02-20 14:31:27 -08:00
Corey Johnson 090f737647 Upgrade to markdown-preview@0.33.0 2014-02-20 14:30:31 -08:00
Corey Johnson 224294d00f Merge pull request #1555 from atom/cj-ns-markdown-preview-pane-fixes
Changes needed by markdown preview refactoring
2014-02-20 14:10:13 -08:00
Corey Johnson 8c145168ef Merge pull request #1554 from atom/cj-ns-rename-workspace-view-pane-methods
Rename workspace view pane methods
2014-02-20 14:00:05 -08:00
Corey Johnson 4660ed5745 Prepare 0.52.0 release 2014-02-20 13:57:05 -08:00
Nathan Sobo b5a799c997 Point at biscotto branch on github until atom/biscotto#27 lands 2014-02-20 12:01:12 -07:00
Nathan Sobo 53fb36d0e2 Switch all documentation links to match CoffeeScript literal notation
Foo::bar for instance methods
Foo.bar for class methods
2014-02-19 17:23:47 -07:00
Nathan Sobo 99f6b89b6e Upgrade language-css to 0.8.0 for update license and readme 2014-02-19 11:58:25 -07:00
Nathan Sobo ff42526199 Upgrade language-yaml to 0.5.0 for included license 2014-02-19 11:58:25 -07:00
Nathan Sobo dea7fafee7 Upgrade language-xml to 0.6.0 for included license 2014-02-19 11:58:25 -07:00
Nathan Sobo 357f158f8a Upgrade language-todo to 0.5.0 for included license 2014-02-19 11:58:25 -07:00
Nathan Sobo c18fa805f9 Upgrade language-text to 0.5.0 for included license 2014-02-19 11:58:25 -07:00
Nathan Sobo 5fd0850f5b Upgrade language-sql to 0.6.0 for included license 2014-02-19 11:58:25 -07:00
Nathan Sobo 66225736fe Upgrade language-source to 0.6.0 for included license 2014-02-19 11:58:25 -07:00
Nathan Sobo a87036b538 Upgrade language-shellscript to 0.6.0 for included license 2014-02-19 11:58:25 -07:00
Nathan Sobo 62b8ef7bb3 Upgrade language-ruby to 0.12.0 for included license 2014-02-19 11:58:25 -07:00
Nathan Sobo 546351dd46 Upgrade language-python to 0.6.0 for included license 2014-02-19 11:58:25 -07:00
Nathan Sobo 69f0572f2a Upgrade language-property-list to 0.6.0 for included license 2014-02-19 11:58:25 -07:00
Nathan Sobo a6ffaff2a2 Upgrade language-php to 0.7.0 for included license 2014-02-19 11:58:24 -07:00
Nathan Sobo 4e62540a9b Upgrade language-perl to 0.7.0 for included license 2014-02-19 11:58:24 -07:00
Nathan Sobo bb03d6b83d Upgrade language-objective-c to 0.8.0 for included license 2014-02-19 11:58:24 -07:00
Nathan Sobo 8aaa34b8fa Upgrade language-make to 0.6.0 for included license 2014-02-19 11:58:24 -07:00
Nathan Sobo 03a60561b7 Upgrade language-json to 0.7.0 for included license 2014-02-19 11:57:21 -07:00
Nathan Sobo 761e96429d Upgrade language-javascript to 0.10.0 for included license 2014-02-19 11:53:59 -07:00
Nathan Sobo 3e685d91a5 Upgrade language-java to 0.7.0 for included license 2014-02-19 11:44:03 -07:00
Nathan Sobo 668d3d3672 Upgrade language-hyperlink to 0.7.0 for included license 2014-02-19 11:42:05 -07:00
Nathan Sobo 23308625f6 Upgrade language-html to 0.7.0 for included license 2014-02-19 11:39:50 -07:00
Nathan Sobo 91a1ce84d0 Upgrade language-git to 0.8.0 for included license 2014-02-19 11:36:47 -07:00
Nathan Sobo a8f57ed276 Upgrade language-c to 0.10.0 for included license 2014-02-19 11:00:52 -07:00
Nathan Sobo 76903a0b91 Upgrade release-notes to 0.21.0 for licensed roaster dependency 2014-02-19 09:25:30 -07:00
Nathan Sobo d316b14c4d Add license override for specificity@0.1.3
The author added a license to the repository
2014-02-19 09:24:58 -07:00
Nathan Sobo 523f965791 Remove language-puppet because the source TextMate bundle is GPL'd 2014-02-19 09:24:58 -07:00
Nathan Sobo 9f2d6fd8b5 Upgrade scandal to 0.15.0 for isbinaryfile license 2014-02-19 09:23:25 -07:00
Nathan Sobo b176a246b3 Upgrade to clear-cut 0.4.0 for included license 2014-02-19 09:23:25 -07:00
Nathan Sobo fac844c255 Add license override for buffers@0.1.1 2014-02-19 09:23:25 -07:00
Nathan Sobo 59bd424e89 Note that content is omitted from aws-sign 2014-02-19 09:23:25 -07:00
Nathan Sobo 12bc2a0a39 Add license-check step to CI grunt task 2014-02-19 09:23:25 -07:00
Nathan Sobo dca5fadeec Upgrade legal-eagle to 0.2.0 2014-02-19 09:23:25 -07:00
Nathan Sobo 0872db3780 Fix exit call in check licenses task 2014-02-19 09:23:25 -07:00
Nathan Sobo 6134d95bfd WIP 2014-02-19 09:23:25 -07:00
Nathan Sobo 1bf98f5b8d Add check-licenses task and break license-overrides into their own file 2014-02-19 09:23:24 -07:00
Nathan Sobo f468420a29 Add report-licenses task
It logs a report about the licenses of all dependencies to standard out,
including the license type, the source of the information, and the text
of the source if it's not just an entry in the `package.json`.

There are still some licenses that couldn't be automatically harvested
that will need to be covered in the overrides.
2014-02-19 09:23:24 -07:00
probablycorey 6f8cb24e5a Add Workspace::paneForUri 2014-02-18 15:40:36 -08:00
probablycorey b8d8ae68a3 Add Workspace::getActivePane 2014-02-18 15:40:36 -08:00
probablycorey 63eb032472 Give precedence to searchAllPanes option in Workspace::open 2014-02-18 15:40:36 -08:00
probablycorey 69396922db Remove WorkspaceView::indexOfPane 2014-02-18 15:39:06 -08:00
probablycorey 99774d7417 Add comment to PaneContainer::indexOfPane 2014-02-18 15:39:06 -08:00
probablycorey e67fb86084 Remove Workspace::getFocusedPane 2014-02-18 15:39:05 -08:00
probablycorey 98a25ca5e3 💄 2014-02-18 15:39:05 -08:00
probablycorey 245ad7a356 Rename pane focusing methods on Workspace 2014-02-18 15:39:05 -08:00
probablycorey b042dffc2c Rename Workspace::getPanes to Workspace::getPaneViews 2014-02-18 15:39:05 -08:00
probablycorey ef263580df Replace WorkspaceView:eachPane with WorkspaceView:eachPaneView 2014-02-18 15:39:05 -08:00
80 arquivos alterados com 1536 adições e 976 exclusões
+4 -3
Ver Arquivo
@@ -15,7 +15,7 @@ to propose changes to this document in a pull request.
This is the repository for the core Atom editor only. Atom comes bundled with
many packages and themes that are stored in other repos under the
[atom org](https://github.com/atom) such as [tabs](https://github.com/atom/tabs),
[atom organization](https://github.com/atom) such as [tabs](https://github.com/atom/tabs),
[find-and-replace](https://github.com/atom/find-and-replace),
[language-javascript](https://github.com/atom/language-javascript),
and [atom-light-ui](http://github.com/atom/atom-light-ui).
@@ -66,8 +66,9 @@ in the proper package's repository.
* Use [TomDoc](http://tomdoc.org).
* Use [Markdown](https://daringfireball.net/projects/markdown).
* Reference classes with `{ClassName}` style notation.
* Reference methods with `{ClassName.methodName}` style notation.
* Reference classes with `{ClassName}`.
* Reference instance methods with `{ClassName::methodName}`.
* Reference class methods with `{ClassName.methodName}`.
* Delegate to comments elsewhere with `{Delegates to: ClassName.methodName}`
style notation.
+1
Ver Arquivo
@@ -0,0 +1 @@
Copyright 2014 GitHub, Inc.
-13
Ver Arquivo
@@ -1,13 +0,0 @@
Copyright 2013 GitHub Inc.
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
+1 -1
Ver Arquivo
@@ -2,7 +2,7 @@
![Atom](http://i.imgur.com/OrTvUAD.png)
Check out our [guides and API documentation](https://www.atom.io/docs/latest/).
Check out our [guides and API documentation](https://atom.io/docs/latest).
## Installing
+4 -6
Ver Arquivo
@@ -11,10 +11,6 @@ _ = require 'underscore-plus'
packageJson = require '../package.json'
# OAuth token for atom-bot
# TODO Remove once all repositories are public
process.env.ATOM_ACCESS_TOKEN ?= '362295be4c5258d3f7b967bbabae662a455ca2a7'
# Shim harmony collections in case grunt was invoked without harmony
# collections enabled
_.extend(global, require('harmony-collections')) unless global.WeakMap?
@@ -45,6 +41,7 @@ module.exports = (grunt) ->
tmpDir = os.tmpdir()
installRoot = process.env.ProgramFiles
buildDir = grunt.option('build-dir') ? path.join(tmpDir, 'atom-build')
symbolsDir = path.join(buildDir, 'Atom.breakpad.syms')
shellAppDir = path.join(buildDir, appName)
contentsDir = shellAppDir
appDir = path.join(shellAppDir, 'resources', 'app')
@@ -54,6 +51,7 @@ module.exports = (grunt) ->
tmpDir = '/tmp'
installRoot = '/Applications'
buildDir = grunt.option('build-dir') ? path.join(tmpDir, 'atom-build')
symbolsDir = path.join(buildDir, 'Atom.breakpad.syms')
shellAppDir = path.join(buildDir, appName)
contentsDir = path.join(shellAppDir, 'Contents')
appDir = path.join(contentsDir, 'Resources', 'app')
@@ -127,7 +125,7 @@ module.exports = (grunt) ->
grunt.initConfig
pkg: grunt.file.readJSON('package.json')
atom: {appDir, appName, buildDir, contentsDir, installDir, shellAppDir}
atom: {appDir, appName, symbolsDir, buildDir, contentsDir, installDir, shellAppDir}
coffee: coffeeConfig
@@ -227,6 +225,6 @@ module.exports = (grunt) ->
grunt.registerTask('compile', ['coffee', 'prebuild-less', 'cson', 'peg'])
grunt.registerTask('lint', ['coffeelint', 'csslint', 'lesslint'])
grunt.registerTask('test', ['shell:kill-atom', 'run-specs'])
grunt.registerTask('ci', ['output-disk-space', 'download-atom-shell', 'build', 'set-version', 'lint', 'test', 'codesign', 'publish-build'])
grunt.registerTask('ci', ['output-disk-space', 'download-atom-shell', 'build', 'dump-symbols', 'set-version', 'check-licenses', 'lint', 'test', 'codesign', 'publish-build'])
grunt.registerTask('docs', ['markdown:guides', 'build-docs'])
grunt.registerTask('default', ['download-atom-shell', 'build', 'set-version', 'install'])
+4 -2
Ver Arquivo
@@ -7,7 +7,7 @@
},
"dependencies": {
"async": "~0.2.9",
"biscotto": "0.6.0",
"biscotto": ">=2.1.1 <3.0",
"formidable": "~1.0.14",
"fs-plus": "2.x",
"github-releases": "~0.2.0",
@@ -18,13 +18,15 @@
"grunt-contrib-coffee": "~0.9.0",
"grunt-contrib-less": "~0.8.0",
"grunt-cson": "0.6.0",
"grunt-download-atom-shell": "git+https://atom-bot:362295be4c5258d3f7b967bbabae662a455ca2a7@github.com/atom/grunt-download-atom-shell#v0.6.0",
"grunt-download-atom-shell": "git+https://atom-bot:467bac80a0017b96fb5be5cfc686f5e0cc607b10@github.com/atom/grunt-download-atom-shell#v0.6.0",
"grunt-lesslint": "0.13.0",
"grunt-markdown": "~0.4.0",
"grunt-peg": "~1.1.0",
"grunt-shell": "~0.3.1",
"harmony-collections": "~0.3.8",
"json-front-matter": "~0.1.3",
"legal-eagle": "~0.3.0",
"minidump": "0.4.x",
"rcedit": "~0.1.2",
"request": "~2.27.0",
"rimraf": "~2.2.2",
+1 -1
Ver Arquivo
@@ -74,7 +74,7 @@ module.exports = (grunt) ->
unless /.+\.plist/.test(sourcePath)
grunt.file.copy(sourcePath, path.resolve(appDir, '..', subDirectory, filename))
dependencies = ['compile']
dependencies = ['compile', "generate-license:save"]
dependencies.push('copy-info-plist') if process.platform is 'darwin'
dependencies.push('set-exe-icon') if process.platform is 'win32'
grunt.task.run(dependencies...)
+28
Ver Arquivo
@@ -0,0 +1,28 @@
module.exports = (grunt) ->
grunt.registerTask 'check-licenses', 'Report the licenses of all dependencies', ->
legalEagle = require 'legal-eagle'
{size, keys} = require 'underscore-plus'
done = @async()
options =
path: process.cwd()
omitPermissive: true
overrides: require './license-overrides'
legalEagle options, (err, summary) ->
if err?
console.error(err)
exit 1
for key of summary
delete summary[key] if key.match /^atom@/
if size(summary)
console.error "Found dependencies without permissive licenses:"
for name in keys(summary).sort()
console.error "#{name}"
console.error " License: #{summary[name].license}"
console.error " Repository: #{summary[name].repository}"
process.exit 1
done()
+1
Ver Arquivo
@@ -25,6 +25,7 @@ module.exports = (grunt) ->
'--title', 'Atom API Documentation'
'-o', 'docs/output/api'
'-r', 'docs/README.md'
'--stability', '1'
'src/'
includePaths...
]
+39
Ver Arquivo
@@ -0,0 +1,39 @@
async = require 'async'
fs = require 'fs-plus'
path = require 'path'
minidump = require 'minidump'
module.exports = (grunt) ->
{mkdir, rm} = require('./task-helpers')(grunt)
dumpSymbolTo = (binaryPath, targetDirectory, callback) ->
minidump.dumpSymbol binaryPath, (error, content) ->
return callback(error) if error?
moduleLine = /MODULE [^ ]+ [^ ]+ ([0-9A-F]+) (.*)\n/.exec(content)
if moduleLine.length isnt 3
return callback("Invalid output when dumping symbol for #{binaryPath}")
filename = moduleLine[2]
targetPathDirname = path.join(targetDirectory, filename, moduleLine[1])
mkdir targetPathDirname
targetPath = path.join(targetPathDirname, "#{filename}.sym")
fs.writeFile(targetPath, content, callback)
grunt.registerTask 'dump-symbols', 'Dump symbols for native modules', ->
done = @async()
symbolsDir = grunt.config.get('atom.symbolsDir')
rm symbolsDir
mkdir symbolsDir
tasks = []
onFile = (binaryPath) ->
if /.*\.node$/.test(binaryPath)
tasks.push(dumpSymbolTo.bind(this, binaryPath, symbolsDir))
onDirectory = ->
true
fs.traverseTreeSync 'node_modules', onFile, onDirectory
async.parallel tasks, done
+46
Ver Arquivo
@@ -0,0 +1,46 @@
fs = require 'fs'
path = require 'path'
module.exports = (grunt) ->
grunt.registerTask 'generate-license', 'Generate the license, including the licenses of all dependencies', (mode) ->
legalEagle = require 'legal-eagle'
done = @async()
options =
path: process.cwd()
overrides: require './license-overrides'
legalEagle options, (err, dependencyLicenses) ->
if err?
console.error(err)
exit 1
licenseText = getLicenseText(dependencyLicenses)
if mode is 'save'
targetPath = path.join(grunt.config.get('atom.appDir'), 'LICENSE')
fs.writeFileSync(targetPath, licenseText)
else
console.log licenseText
done()
getLicenseText = (dependencyLicenses) ->
{keys} = require 'underscore-plus'
text = """
Copyright 2014 GitHub, Inc.
This application bundles the following third-party packages in accordance
with the following licenses:\n\n
"""
names = keys(dependencyLicenses).sort()
for name in names
{license, source, sourceText} = dependencyLicenses[name]
text += "-------------------------------------------------------------------------\n\n"
text += "Package: #{name}\n"
text += "License: #{license}\n"
text += "License Source: #{source}\n" if source?
if sourceText?
text += "Source Text:\n\n"
text += sourceText
text += '\n'
text
+62
Ver Arquivo
@@ -0,0 +1,62 @@
module.exports =
'aws-sign@0.3.0':
repository: 'https://github.com/mikeal/aws-sign'
license: 'MIT'
source: 'index.js'
sourceText: """
/*!
* knox - auth
* Copyright(c) 2010 LearnBoost <dev@learnboost.com>
* MIT Licensed
*/
<content omitted>
"""
'bufferjs@2.0.0':
repository: 'https://github.com/coolaj86/node-bufferjs'
license: 'MIT'
source: 'LICENSE.MIT'
sourceText: """
Copyright (c) 2010 AJ ONeal (and Contributors)
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
"""
'buffers@0.1.1':
repository: "http://github.com/substack/node-buffers"
license: 'MIT'
source: 'README.markdown'
sourceText: """
<content omitted>
license
=======
MIT/X11
"""
'specificity@0.1.3':
repository: 'https://github.com/keeganstreet/specificity'
license: 'MIT'
source: 'package.json in repository'
'promzard@0.2.0':
license: 'ISC'
source: 'LICENSE in the repository'
sourceText: """
The ISC License
Copyright (c) Isaac Z. Schlueter
Permission to use, copy, modify, and/or distribute this software for any
purpose with or without fee is hereby granted, provided that the above
copyright notice and this permission notice appear in all copies.
THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR
IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
"""
+57 -35
Ver Arquivo
@@ -2,14 +2,17 @@ child_process = require 'child_process'
path = require 'path'
_ = require 'underscore-plus'
async = require 'async'
fs = require 'fs-plus'
GitHub = require 'github-releases'
request = require 'request'
grunt = null
maxReleases = 10
assetName = 'atom-mac.zip'
assetPath = "/tmp/atom-build/#{assetName}"
assets = [
{assetName: 'atom-mac.zip', sourceName: 'Atom.app'}
{assetName: 'atom-mac-symbols.zip', sourceName: 'Atom.breakpad.syms'}
]
commitSha = process.env.JANKY_SHA1
token = process.env.ATOM_ACCESS_TOKEN
defaultHeaders =
@@ -18,39 +21,48 @@ defaultHeaders =
module.exports = (gruntObject) ->
grunt = gruntObject
grunt.registerTask 'publish-build', 'Publish the built app', ->
return unless process.platform is 'darwin'
return if process.env.JANKY_SHA1 and process.env.JANKY_BRANCH isnt 'master'
done = @async()
buildDir = grunt.config.get('atom.buildDir')
createBuildRelease (error, release) ->
return done(error) if error?
zipApp (error) ->
zipApps buildDir, assets, (error) ->
return done(error) if error?
uploadAsset release, (error) ->
uploadAssets release, buildDir, assets, (error) ->
return done(error) if error?
publishRelease release, (error) ->
return done(error) if error?
getAtomDraftRelease (error, release) ->
return done(error) if error?
deleteExistingAsset release, (error) ->
assetNames = (asset.assetName for asset in assets)
deleteExistingAssets release, assetNames, (error) ->
return done(error) if error?
uploadAsset(release, done)
uploadAssets(release, buildDir, assets, done)
logError = (message, error, details) ->
grunt.log.error(message)
grunt.log.error(error.message ? error) if error?
grunt.log.error(details) if details
zipApp = (callback) ->
fs.removeSync(assetPath)
zipApps = (buildDir, assets, callback) ->
zip = (directory, sourceName, assetName, callback) ->
options = {cwd: directory, maxBuffer: Infinity}
child_process.exec "zip -r --symlinks #{assetName} #{sourceName}", options, (error, stdout, stderr) ->
if error?
logError("Zipping #{sourceName} failed", error, stderr)
callback(error)
options = {cwd: path.dirname(assetPath), maxBuffer: Infinity}
child_process.exec "zip -r --symlinks #{assetName} Atom.app", options, (error, stdout, stderr) ->
if error?
logError('Zipping Atom.app failed', error, stderr)
callback(error)
tasks = []
for {assetName, sourceName} in assets
fs.removeSync(path.join(buildDir, assetName))
tasks.push(zip.bind(this, buildDir, sourceName, assetName))
async.parallel(tasks, callback)
getRelease = (callback) ->
options =
@@ -93,10 +105,12 @@ deleteRelease = (release) ->
if error? or response.statusCode isnt 204
logError('Deleting release failed', error, body)
deleteExistingAsset = (release, callback) ->
for asset in release.assets when asset.name is assetName
deleteExistingAssets = (release, assetNames, callback) ->
[callback, assetNames] = [assetNames, callback] if not callback?
deleteAsset = (url, callback) ->
options =
uri: asset.url
uri: url
method: 'DELETE'
headers: defaultHeaders
request options, (error, response, body='') ->
@@ -106,9 +120,10 @@ deleteExistingAsset = (release, callback) ->
else
callback()
return
callback()
tasks = []
for asset in release.assets when not assetNames? or asset.name in assetNames
tasks.push(deleteAsset.bind(this, asset.url))
async.parallel(tasks, callback)
createBuildRelease = (callback) ->
getRelease (error, release) ->
@@ -117,7 +132,7 @@ createBuildRelease = (callback) ->
return
if release?
deleteExistingAsset release, (error) ->
deleteExistingAssets release, (error) ->
callback(error, release)
return
@@ -139,23 +154,30 @@ createBuildRelease = (callback) ->
else
callback(null, release)
uploadAsset = (release, callback) ->
options =
uri: release.upload_url.replace(/\{.*$/, "?name=#{assetName}")
method: 'POST'
headers: _.extend({
'Content-Type': 'application/zip'
'Content-Length': fs.getSizeSync(assetPath)
}, defaultHeaders)
uploadAssets = (release, buildDir, assets, callback) ->
upload = (release, assetName, assetPath, callback) ->
options =
uri: release.upload_url.replace(/\{.*$/, "?name=#{assetName}")
method: 'POST'
headers: _.extend({
'Content-Type': 'application/zip'
'Content-Length': fs.getSizeSync(assetPath)
}, defaultHeaders)
assetRequest = request options, (error, response, body='') ->
if error? or response.statusCode >= 400
logError('Upload release asset failed', error, body)
callback(error ? new Error(response.statusCode))
else
callback(null, release)
assetRequest = request options, (error, response, body='') ->
if error? or response.statusCode >= 400
logError("Upload release asset #{assetName} failed", error, body)
callback(error ? new Error(response.statusCode))
else
callback(null, release)
fs.createReadStream(assetPath).pipe(assetRequest)
fs.createReadStream(assetPath).pipe(assetRequest)
tasks = []
for {assetName, sourceName} in assets
assetPath = path.join(buildDir, assetName)
tasks.push(upload.bind(this, release, assetName, assetPath))
async.parallel(tasks, callback)
publishRelease = (release, callback) ->
options =
+1 -1
Ver Arquivo
@@ -8,7 +8,7 @@ request = require 'request'
module.exports = (grunt) ->
{spawn} = require('./task-helpers')(grunt)
baseUrl = "https://www.atom.io/api/packages"
baseUrl = "https://atom.io/api/packages"
packageExists = (packageName, token, callback) ->
requestSettings =
+1 -1
Ver Arquivo
@@ -54,5 +54,5 @@ Atom ships with node 0.11.10 and the comprehensive node API docs are available
[SelectListView]: ../classes/SelectListView.html
[View]: ../classes/View.html
[WorkspaceView]: ../classes/WorkspaceView.html
[creating-a-package]: https://www.atom.io/docs/latest/creating-a-package
[creating-a-package]: https://atom.io/docs/latest/creating-a-package
[node-docs]: http://nodejs.org/docs/v0.11.10/api
-34
Ver Arquivo
@@ -1,34 +0,0 @@
## Building Atom
These guide is meant only for users who wish to help develop atom core,
if you're just interested in using atom you should just [download
atom][download].
## OSX
* Use OS X 10.8 or later
* Install the latest node 0.10.x release (32bit preferable)
* Clone [atom][atom-git] to `~/github/atom`
* Run `~/github/atom/script/build`
## Windows
* Install [Visual C++ 2010 Express][win-vs2010]
* Install the [latest 32bit Node 0.10.x][win-node]
* Install the [latest Python 2.7.x][win-python]
* Install [GitHub for Windows][win-github]
* Clone [atom/atom][atom-git] to `C:\Users\<user>\github\atom\`
* Add `C:\Python27;C:\Program Files\nodejs;C:\Users\<user>\github\atom\node_modules\`
to your PATH
* Set ATOM_ACCESS_TOKEN to your oauth2 credentials (run `security -q
find-generic-password -ws 'GitHub API Token'` on OSX to get your
credentials).
* Use the Windows GitHub shell and cd into `C:\Users\<user>\github\atom`
* Run `script\bootstrap`
[download]: https://github.com/atom/atom/releases/latest
[win-node]: http://nodejs.org/download/
[win-python]: http://www.python.org/download/
[win-github]: http://windows.github.com/
[win-vs2010]: http://www.microsoft.com/visualstudio/eng/products/visual-studio-2010-express
[atom-git]: https://github.com/atom/atom/
+4 -2
Ver Arquivo
@@ -116,8 +116,10 @@ dependencies up to date by running `apm update` after pulling upstream changes.
* Use [TomDoc](http://tomdoc.org).
* Use [Markdown](https://daringfireball.net/projects/markdown).
* Reference classes with the custom `{ClassName}` notation.
* Reference methods with the custom `{ClassName.methodName}` notation.
* Reference methods and classes in markdown with the custom `{}` notation:
* Reference classes with `{ClassName}`
* Reference instance methods with `{ClassName::methodName}`
* Reference class methods with `{ClassName.methodName}`
### Example
+1 -1
Ver Arquivo
@@ -40,7 +40,7 @@ the editor to see it in action!
### Further Reading
* Check out [Publishing a Package](publish-a-package.html) for more information
* Check out [Publishing a Package](publishing-a-package.html) for more information
on publishing the package you just created to [atom.io][atomio].
[atomio]: https://atom.io
+1 -1
Ver Arquivo
@@ -57,7 +57,7 @@ __Syntax Theme__ dropdown menu to enable your new theme.
### Further Reading
* Check out [Publishing a Package](publish-a-package.html) for more information
* Check out [Publishing a Package](publishing-a-package.html) for more information
on publishing the theme you just created to [atom.io][atomio].
[atomio]: https://atom.io
+9 -47
Ver Arquivo
@@ -24,6 +24,9 @@ Not every package will have (or need) all of these directories.
We have [a tutorial on creating your first package][first-package].
There are also guides for converting [TextMate bundles][convert-bundle] and
[TextMate themes][convert-theme] so they work in Atom.
## package.json
Similar to [npm packages][npm], Atom packages contain a _package.json_ file
@@ -322,23 +325,16 @@ Your package **should** have tests, and if they're placed in the _spec_
directory, they can be run by Atom.
Under the hood, [Jasmine] executes your tests, so you can assume that any DSL
available there is available to your package as well.
**FIXME: Explain the following**
* jasmine
* jasmine-focused
* `spec/fixtures` and global.project
* setTimeout
* whatever else is different in spec-helper
available there is also available to your package.
## Running Tests
TODO: Probably use the menu option now.
Once you've got your test suite written, you can run it by pressing
`cmd-alt-ctrl-p` or via the _Developer > Run Package Specs_ menu.
Once you've got your test suite written, the recommended way to run it is `apm
test`. `apm test` prints its output to the console and returns the proper status
code depending on whether tests passed or failed.
You can also use the `apm test` command to run them from the command line. It
prints the test output and results to the console and returns the proper status
code depending on whether the tests passed or failed.
## Publishing
@@ -359,37 +355,3 @@ registry.
Run `apm help publish` to see all the available options and `apm help` to see
all the other available commands.
## Included Libraries
FIXME: Describe `require 'atom'
In addition to core node.js modules, all packages can `require` the following
popular libraries into their packages:
* [SpacePen] (as `require 'space-pen'`)
* [jQuery] (as `require 'jquery'`)
* [Underscore] (as `require 'underscore'`)
Additional libraries can be found by browsing Atom's *node_modules* folder.
[file-tree]: https://github.com/atom/tree-view
[status-bar]: https://github.com/atom/status-bar
[cs-syntax]: https://github.com/atom/language-coffee-script
[npm]: http://en.wikipedia.org/wiki/Npm_(software)
[npm-keys]: https://npmjs.org/doc/json.html
[apm]: https://github.com/atom/apm
[git-tag]: http://git-scm.com/book/en/Git-Basics-Tagging
[wrap-guide]: https://github.com/atom/wrap-guide/
[keymaps]: advanced/keymaps.md
[theme-variables]: theme-variables.md
[tm-tokens]: http://manual.macromates.com/en/language_grammars.html
[spacepen]: https://github.com/nathansobo/space-pen
[path]: http://nodejs.org/docs/latest/api/path.html
[jquery]: http://jquery.com/
[underscore]: http://underscorejs.org/
[jasmine]: https://github.com/pivotal/jasmine
[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
[first-package]: your-first-package.html
+65 -55
Ver Arquivo
@@ -1,124 +1,134 @@
# 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.
of CSS). Don't worry if you haven't heard of LESS before; it's just like CSS,
but with a few handy extensions.
Since CSS is the basis of the theming system, we can load multiple themes within
Atom, and the themes behave just as they would on a website. Themes loaded first
are overridden by themes which are loaded later. The order of theme loading is
controlled within the Settings/Themes pane.
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.
Syntax themes style the code inside the editor.
This flexibility is helpful for users that prefer a light interface with a dark
syntax theme. Atom currently has only interface and syntax themes, but it is
possible to create a theme to style something specific &mdash; say, changing
the colors in the tree view or creating a language specific syntax theme.
Themes can be installed and changed from the settings view which you can open
by selecting the _Atom > Preferences..._ menu and navigating to the _Themes_
section on the left hand side.
## Getting Started
Themes are pretty straight forward but it's still helpful to be familiar with
Themes are pretty straightforward but it's still helpful to be familiar with
a few things before starting:
* LESS is a superset of CSS, but it has some really handy features like
variables. If you aren't familiar with its syntax take a few minutes
variables. If you aren't familiar with its syntax, take a few minutes
to [familiarize yourself][less-tutorial].
* You may also want to review the concept of a _[package.json]_, too. This file
is used to help distribute your theme to Atom users.
There are two types of themes you can create: syntax themes and interface themes.
The differences between them are simply a matter of what they target and what
they provide. Syntax themes focus on the entire editor pane, while interface themes
target elements which are outside of the editor.
is used to help distribute your theme to Atom users.
* Your theme's _package.json_ must contain a `"theme"` key with a value
of `"ui"` or `"syntax"` for Atom to recognize and load it as a theme.
* You can find existing themes to install or fork on [atom.io](atomio).
## Creating a Syntax Theme
Let's create your first theme.
To get started, hit `cmd-shift-P`, and start typing "Generate Theme" to generate
a package. Select "Generate Theme," and you'll be asked for a theme name. Let's
call ours _motif_.
To get started, hit `cmd-shift-P`, and start typing "Generate Syntax Theme" to
generate a new theme package. Select "Generate Syntax Theme," and you'll be
asked for the path where your theme will be created. Let's call ours
_motif-syntax_. __Tip:__ syntax themes should end with _-syntax_.
Atom will pop open a new window, showing the _motif_ theme, with a default set of
folders and files created for us. If you hit `cmd-,` and navigate to the Themes
menu option, you'll see the `motif` theme already available. Drag it over from
"Enabled Themes" to "Available Themes."
Atom will pop open a new window, showing the _motif-syntax_ theme, with a
default set of folders and files created for us. If you open the settings view
(`cmd-,`) and navigate to the _Themes_ section on the left, you'll see the
_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
have been already been defined. For example, turn `@red` into `#f4c2c1`.
Then, open _stylesheets/base.less_, and modify the various syntax CSS selectors
that have been already been defined. Each of these selectors represents a different
part of the Atom window. Themes that don't need to modify a particular region
can simply remove the selectors they don't need.
Then open _stylesheets/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.
As an example, let's make the `.gutter` `background-color` into `@red`.
Reload Atom by hitting `cmd-r` to see the changes you made reflected in your Atom
window. Pretty neat!
Reload Atom by pressing `cmd-alt-option-L` to see the changes you made reflected
in your Atom window. Pretty neat!
__Tip:__ You can avoid reloading to see changes you make by opening an atom
window in dev mode. To open a Dev Mode Atom window run `atom --dev .` in the
terminal, use `cmd-shift-o` or use the _View > Developer > Open in Dev Mode_
menu. When you edit your theme, changes will instantly be reflected!
## Creating an Interface Theme
Interface themes **must** provide a `ui-variables.less` file which contains all
Interface themes **must** provide a `ui-variables.less` file which contains all
of the variables provided by the [core themes][ui-variables].
To create an interface UI theme, do the following:
1. Fork one of the following repos
1. [atom-dark-ui]
1. [atom-light-ui]
1. Open a terminal in the forked theme's directory
1. Open your new theme in a Dev Mode Atom window (run `atom -d .` in the terminal or use the __View > Developer > Open in Dev Mode__ menu)
1. Change the name of the theme in the theme's `package.json` file
1. Run `apm link` to tell Atom about your new theme
1. Reload Atom (`cmd-r`)
1. Enable the theme via the themes panel in settings
1. Make changes! Since you opened the theme in a Dev Mode window, changes will
1. Fork one of the following repositories:
* [atom-dark-ui]
* [atom-light-ui]
2. Clone the forked repository to the local filesystem
3. Open a terminal in the forked theme's directory
4. Open your new theme in a Dev Mode Atom window run `atom --dev .` in the
terminal or use the _View > Developer > Open in Dev Mode_ menu
5. Change the name of the theme in the theme's `package.json` file
6. Name your theme end with a `-ui`. i.e. `super-white-ui`
7. Run `apm link` to symlink your repository to `~/.atom/packages`
8. Reload Atom using `cmd-alt-ctrl-L`
9. Enable the theme via _UI Theme_ drop-down in the _Themes_ section of the
settings view
10. Make changes! Since you opened the theme in a Dev Mode window, changes will
be instantly reflected in the editor without having to reload.
## Development workflow
There are a few of tools to help make theme development faster.
There are a few of tools to help make theme development faster and easier.
### Live Reload
Reloading by hitting `cmd-r` after you make changes to your theme is less than ideal.
Atom supports [live updating][livereload] of styles on Dev Mode Atom windows.
Reloading by hitting `cmd-alt-ctrl-L` after you make changes to your theme is
less than ideal. Atom supports [live updating][livereload] of styles on Dev Mode
Atom windows.
To enable a Dev Mode window:
1. Open your theme directory in a dev window by either going to the
__View > Developer > Open in Dev Mode__ menu or by hitting the `cmd-shift-o`
shortcut
1. Make a change to your theme file and save it. Your change should be
immediately applied!
__View > Developer > Open in Dev Mode__ menu or by hitting the `cmd-shift-o`
shortcut
2. Make a change to your theme file and save it. Your change should be
immediately applied!
If you'd like to reload all the styles at any time, you can use the shortcut
`cmd-ctrl-R`.
`cmd-ctrl-shift-r`.
### Developer Tools
Atom is based on the Chrome browser, and supports Chrome's Developer Tools. You
can open them by selecting the __View > Toggle Developer Tools__ menu, or by using
the `cmd-option-i` shortcut.
can open them by selecting the _View > Toggle Developer Tools_ menu, or by
using the `cmd-alt-i` shortcut.
The dev tools allow you to inspect elements and take a look at their CSS
properties.
![devtools-img]
Check out Google's [extensive tutorial][devtools-tutorial] for a short introduction.
Check out Google's [extensive tutorial][devtools-tutorial] for a short
introduction.
### Atom Styleguide
If you are creating an interface theme, you'll want a way to see how your theme
changes affect all the components in the system. The [styleguide] is a page with
every component Atom supports rendered.
changes affect all the components in the system. The [styleguide] is a page that
renders every component Atom supports.
To open the styleguide, open the command palette (`cmd-shift-P`) and search for
_styleguide_, or use the shortcut `cmd-ctrl-shift-g`.
![styleguide-img]
[atomio]: http://atom.io/packages
[less]: http://lesscss.org/
[git]: http://git-scm.com/
[atom]: https://atom.io/
+66 -35
Ver Arquivo
@@ -1,34 +1,57 @@
# Customizing Atom
To change a setting, configure a theme, or install a package just open the
Settings pane in the current window by pressing `cmd+,`.
Settings view in the current window by pressing `cmd+,`.
## Changing The Theme
Because Atom themes are based on CSS, it's possible (and encouraged) to have
multiple themes active at the same time. Atom comes with both light and dark
interface themes as well as several syntax themes (you can also [create your
own][create-theme]).
Atom comes with both light and dark UI themes as well as several syntax themes.
You are also encouraged to [create or fork][create-theme] your own theme.
To change the active themes just open the Settings pane (`cmd-,`) and select the
`Themes` tab. You can install non-bundled themes by going to the `Available
Themes` section on the `Packages` tab within the Settings panel.
To change the active theme just open the Settings view (`cmd-,`) and select the
`Themes` section from the left hand side. You will see a drop-down menu to
change the active _Syntax_ and _UI_ themes.
You can also install more themes from here by browsing the featured themes or
searching for a specific theme.
## Installing Packages
You can install non-bundled packages by going to the `Available Packages`
section on the `Packages` tab within the Settings panel (`cmd-,`).
You can install non-bundled packages by going to the `Packages` section on left
hand side of the Settings view (`cmd-,`). You will see several featured packages
and you can also search for packages from here. The packages listed here have
been published to [atom.io](http://atom.io/packages) which is the official
registry for Atom packages.
You can also install packages from the command line using the
[apm](https://github.com/atom/apm) command:
You can also install packages from the command line using `apm`.
`apm install <package_name>` to install the latest version.
Check that you have `apm` installed by running the following command in your
terminal:
`apm install <package_name>@<package_version>` to install a specific version.
```sh
apm help install
```
You should see a message print out with details about the `apm install` command.
If you do not, launch Atom and run the _Atom > Install Shell Commmands_ menu
to install the `apm` and `atom` commands.
You can also install packages by using the `apm install` command:
* `apm install <package_name>` to install the latest version.
* `apm install <package_name>@<package_version>` to install a specific version.
For example `apm install emmet@0.1.5` installs the `0.1.5` release of the
[Emmet](https://github.com/atom/emmet) package into `~/.atom/packages`.
You can also use `apm` to find new packages to install:
* `apm search coffee` to search for CoffeeScript packages.
* `apm view emmet` to see more information about a specific package.
## Customizing Key Bindings
Atom keymaps work similarly to stylesheets. Just as stylesheets use selectors
@@ -36,13 +59,12 @@ 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:
```coffee-script
```coffee
'.editor':
'enter': 'editor:newline'
'body':
'ctrl-P': 'core:move-up'
'ctrl-p': 'core:move-down'
'.mini.editor input':
'enter': 'core:confirm'
```
This keymap defines the meaning of `enter` in two different contexts. In a
@@ -55,6 +77,8 @@ By default, `~/.atom/keymap.cson` is loaded when Atom is started. It will always
be loaded last, giving you the chance to override bindings that are defined by
Atom's core keymaps or third-party packages.
You can open this file in an editor from the _Atom > Open Your Keymap_ menu.
You'll want to know all the commands available to you. Open the Settings panel
(`cmd-,`) and select the _Keybindings_ tab. It will show you all the keybindings
currently in use.
@@ -64,16 +88,18 @@ currently in use.
Atom loads configuration settings from the `config.cson` file in your _~/.atom_
directory, which contains CoffeeScript-style JSON:
```coffeescript
core:
excludeVcsIgnoredPaths: true
editor:
fontSize: 18
```coffee
'core':
'excludeVcsIgnoredPaths': true
'editor':
'fontSize': 18
```
The configuration itself is grouped by the package name or one of the two core
namespaces: `core` and `editor`.
You can open this file in an editor from the _Atom > Open Your Config_ menu.
### Configuration Key Reference
- `core`
@@ -108,7 +134,7 @@ namespaces: `core` and `editor`.
- `removeTrailingWhitespace`: Enable/disable striping of whitespace at the end of lines (defaults to `true`)
- `wrap-guide`
- `columns`: Array of hashes with a `pattern` and `column` key to match the
the path of the current editor to a column position.
the path of the current editor to a column position.
### Quick Personal Hacks
@@ -117,29 +143,34 @@ namespaces: `core` and `editor`.
When Atom finishes loading, it will evaluate _init.coffee_ in your _~/.atom_
directory, giving you a chance to run arbitrary personal CoffeeScript code to
make customizations. You have full access to Atom's API from code in this file.
If customizations become extensive, consider [creating a
package][create-a-package].
If customizations become extensive, consider [creating a package][creating-a-package].
You can open this file in an editor from the _Atom > Open Your Init Script_
menu.
This file can also be named _init.js_ and contain JavaScript code.
### styles.css
### styles.less
If you want to apply quick-and-dirty personal styling changes without creating
an entire theme that you intend to distribute, you can add styles to
_styles.css_ in your _~/.atom_ directory.
an entire theme that you intend to publish, you can add styles to the
_styles.less_ file in your _~/.atom_ directory.
For example, to change the color of the highlighted line number for the line
that contains the cursor, you could add the following style to _styles.css_:
You can open this file in an editor from the _Atom > Open Your Stylesheet_ menu.
```css
For example, to change the color of the cursor, you could add the following
rule to your _~/.atom/styles.less_ file:
```less
.editor .cursor {
border-color: pink;
}
```
You can also name the file _styles.less_ if you want to style Atom using
[LESS][LESS].
Unfamiliar with LESS? Read more about it [here][LESS].
[create-a-package]: creating-packages.md
This file can also be named _styles.css_ and contain CSS.
[creating-a-package]: creating-a-package.md
[create-theme]: creating-a-theme.md
[LESS]: http://www.lesscss.org
+20 -15
Ver Arquivo
@@ -22,7 +22,7 @@ bindings][key-bindings] section.
Atom windows are scoped to a single directory on disk. If you launch Atom from
the command line via the `atom` command and don't specify a path, Atom opens a
window for the current working directory. The current window's directory will be
visible as the root of the tree view at the left, and also serve as the context
visible as the root of the tree view on the left, and also serve as the context
for all file-related operations.
#### Finding Files
@@ -30,7 +30,8 @@ for all file-related operations.
The fastest way to find a file is to use the fuzzy finder. Press `cmd-t` and
begin typing the name of the file you're looking for. If you are looking for a
file that is already open press `cmd-b` to bring up a searchable list of open
files.
files. If you are using Git you can use `cmd-shift-b` to search the list of
files modified and untracked in your project's repository.
You can also use the tree view to navigate to a file. To open and focus the
the tree view, press `ctrl-0`. The tree view can be toggled open and closed with
@@ -38,11 +39,10 @@ the tree view, press `ctrl-0`. The tree view can be toggled open and closed with
#### Adding, Moving, Deleting Files
Currently, all file modification is performed via the tree view. Add, move, or
delete a file by right-clicking in the tree view and selecting the desired
operation from the context menu. You can also perform these operations from the
keyboard by selecting a file or directory and using `a` to add, `m` to move, and
`delete` to delete.
You can add, move, and delete files and folders by right-clicking them in the
tree view and selecting the desired operation from the context menu. You can
also perform these operations from the keyboard by selecting a file or folder
and using `a` to add, `m` to move, and `delete` to delete.
### Searching
@@ -58,9 +58,15 @@ list of all symbols in the current file, which you can fuzzy filter similarly to
`cmd-t`.
To search for symbols across your project, use `cmd-shift-r`. First you'll need
to make sure you have ctags installed and a tags file generated for your
project. Also, if you're editing CoffeeScript, it's a good idea to update your
`~/.ctags` file to understand the language. Here is [a good example][ctags].
to make sure you have `tags` (or `TAGS`) file generated for your project.
This can be done by installing [ctags](http://ctags.sourceforge.net/) and
running a command such as `ctags -R src/` from the command line in your
project's root directory. Using [Homebrew](http://brew.sh/)? Just run
`brew install ctags`.
You can customize how tags are generated by creating your own `.ctags` file
in your home directory (`~/.ctags`). Here is [a good example][ctags] to start
from.
### Split Panes
@@ -68,7 +74,7 @@ You can split any editor pane horizontally or vertically by using `cmd-k right`
or `cmd-k down`. Once you have a split pane, you can move focus between them
with `cmd-k cmd-right` or `cmd-k cmd-down`. To close a pane, close all its
editors with `meta-w`, then press `meta-w` one more time to close the pane. You
can configure panes to auto-close with empty in the preferences.
can configure panes to auto-close when empty in the Settings view.
### Folding
@@ -89,9 +95,8 @@ in preferences.
## Configuration
Press `cmd-,` to display the preferences pane. This serves as the primary
interface for adjusting config settings, installing packages and changing
themes.
Press `cmd-,` to open the Settings view. This is the place to change settings,
install packages, and change the theme.
For more advanced configuration see the [customization guide][customization].
@@ -101,4 +106,4 @@ For more advanced configuration see the [customization guide][customization].
[customization]: customizing-atom.md
[key-bindings]: customizing-atom.md#customizing-key-bindings
[command palette]: https://f.cloud.github.com/assets/1424/1091618/ee7c3554-166a-11e3-9955-aaa61bb5509c.png
[ctags]: https://github.com/kevinsawicki/dotfiles/blob/master/.ctags
[ctags]: https://github.com/atom/symbols-view/blob/master/lib/.ctags
+4
Ver Arquivo
@@ -4,6 +4,10 @@
* [Customizing Atom](customizing-atom.md)
* [Creating a Package](creating-a-package.md)
* [Creating a Theme](creating-a-theme.md)
* [Publishing a Package](publishing-a-package.md)
* [Converting a TextMate Bundle](converting-a-text-mate-bundle.md)
* [Converting a TextMate Theme](converting-a-text-mate-theme.md)
* [Contributing](contributing.md)
### Advanced Topics
-39
Ver Arquivo
@@ -1,39 +0,0 @@
# Setting up Travis CI
Packages under the [atom org][atom-org] should use [Travis CI][travis-ci] for
builds.
Currently we have a [Travis Pro][travis-pro] account since the repositories
are private. This process will be simpler and have fewer steps once the
package repos are made public.
Each package builds using the [build-package][build-package] script, any
changes to the build should be made in that script and will affect all
package builds immediately.
Each package builds against the latest successful build of atom@master. The
master builds are stored in the [atom-master-builds][atom-master-builds] repo
as releases named by the SHA-1 built.
## Configuring a package
* Run `cd ~/github/my-package` to navigate to the package repo locally
* Run `apm test` to verify that the package currently builds via [apm][apm]
* Add the package repo to the [Travis CI team][travis-ci-team]
* Run `gem install travis` to install the [travis gem][travis-gem]
* Run `travis login --pro` and log in using the [atom-build][atom-build] user
and the password from the *Shared-Developers* folder in LastPass
* Run `apm ci` to add a `.travis.yml` file to the repo and to configure Travis
* Log into [Travis][travis-ci] as the `atom-build` user and you should now see
the package listed and building
[apm]: https://github.com/atom/apm
[build-package]: https://github.com/atom/apm/blob/master/script/build-package
[atom-build]: https://github.com/atom-build
[atom-master-builds]: https://github.com/atom/atom-master-builds/releases
[atom-org]: https://github.com/atom
[travis-ci]: https://magnum.travis-ci.com
[travis-ci-team]: https://github.com/organizations/atom/teams/596636
[travis-gem]: https://rubygems.org/gems/travis
[travis-pro]: http://about.travis-ci.org/docs/user/travis-pro
@@ -3,6 +3,9 @@
*
* This stylesheet is loaded when Atom starts up and is reloaded automatically
* when it is changed.
*
* If you are unfamiliar with LESS, you can read more about it here:
* http://www.lesscss.org
*/
.tree-view {
-2
Ver Arquivo
@@ -1,10 +1,8 @@
{Point, Range} = require 'text-buffer'
module.exports =
_: require 'underscore-plus'
BufferedNodeProcess: require '../src/buffered-node-process'
BufferedProcess: require '../src/buffered-process'
fs: require 'fs-plus'
Git: require '../src/git'
Point: Point
Range: Range
+1 -1
Ver Arquivo
@@ -133,7 +133,7 @@
'ctrl-cmd-up': 'editor:move-line-up'
'ctrl-cmd-down': 'editor:move-line-down'
'cmd-/': 'editor:toggle-line-comments'
'cmd-j': 'editor:join-line'
'cmd-j': 'editor:join-lines'
'cmd-D': 'editor:duplicate-line'
'cmd-L': 'editor:split-selections-into-lines'
+1 -1
Ver Arquivo
@@ -80,7 +80,7 @@
'ctrl-up': 'editor:move-line-up'
'ctrl-down': 'editor:move-line-down'
'ctrl-/': 'editor:toggle-line-comments'
'ctrl-j': 'editor:join-line'
'ctrl-j': 'editor:join-lines'
'ctrl-D': 'editor:duplicate-line'
'ctrl-alt-[': 'editor:fold-current-row'
+2 -2
Ver Arquivo
@@ -3,6 +3,7 @@
label: 'Atom'
submenu: [
{ label: 'About Atom', command: 'application:about' }
{ label: 'View License', command: 'application:open-license' }
{ label: "VERSION", enabled: false }
{ label: "Restart and Install Update", command: 'application:install-update', visible: false}
{ label: "Check for Update", command: 'application:check-for-update', visible: false}
@@ -65,7 +66,7 @@
{ label: 'Move Line Down', command: 'editor:move-line-down' }
{ label: 'Duplicate Line', command: 'editor:duplicate-line' }
{ label: 'Delete Line', command: 'editor:delete-line' }
{ label: 'Join Lines', command: 'editor:join-line' }
{ label: 'Join Lines', command: 'editor:join-lines' }
]
}
{
@@ -165,7 +166,6 @@
label: 'Help'
submenu: [
{ label: 'Documentation', command: 'application:open-documentation' }
{ label: 'Report an Issue', command: 'application:report-issue' }
{ type: 'separator' }
]
}
+2 -1
Ver Arquivo
@@ -45,7 +45,7 @@
{ label: 'Move Line &Down', command: 'editor:move-line-down' }
{ label: 'Du&plicate Line', command: 'editor:duplicate-line' }
{ label: 'D&elete Line', command: 'editor:delete-line' }
{ label: '&Join Lines', command: 'editor:join-line' }
{ label: '&Join Lines', command: 'editor:join-lines' }
]
}
{
@@ -145,6 +145,7 @@
label: '&Help'
submenu: [
{ label: '&About Atom...', command: 'application:about' }
{ label: 'View &License', command: 'application:open-license' }
{ label: "VERSION", enabled: false }
{ label: "Install &update", command: 'application:install-update', visible: false }
{ type: 'separator' }
+83 -94
Ver Arquivo
@@ -1,7 +1,7 @@
{
"name": "atom",
"productName": "Atom",
"version": "0.51.0",
"version": "0.63.0",
"main": "./src/browser/main.js",
"repository": {
"type": "git",
@@ -10,17 +10,12 @@
"bugs": {
"url": "https://github.com/atom/atom/issues"
},
"licenses": [
{
"type": "Apache",
"url": "http://github.com/atom/atom/raw/master/LICENSE.md"
}
],
"atomShellVersion": "0.9.2",
"license": "All Rights Reserved",
"atomShellVersion": "0.10.3",
"dependencies": {
"async": "0.2.6",
"bootstrap": "git://github.com/atom/bootstrap.git#6af81906189f1747fd6c93479e3d998ebe041372",
"clear-cut": "0.2.0",
"clear-cut": "0.4.0",
"coffee-script": "1.7.0",
"coffeestack": "0.7.0",
"delegato": "1.x",
@@ -28,10 +23,10 @@
"first-mate": ">=1.1.5 <2.0",
"fs-plus": "2.x",
"fstream": "0.1.24",
"fuzzaldrin": "1.x",
"fuzzaldrin": "~1.1",
"git-utils": "1.x",
"guid": "0.0.10",
"jasmine-tagged": "1.x",
"jasmine-tagged": ">=1.1.1 <2.0",
"mkdirp": "0.3.5",
"keytar": "0.15.1",
"less-cache": "0.12.0",
@@ -45,97 +40,91 @@
"q": "1.0.x",
"random-words": "0.0.1",
"runas": "0.5.x",
"scandal": "0.14.0",
"season": "1.x",
"scandal": "0.15.0",
"season": ">=1.0.2 <2.0",
"semver": "1.1.4",
"serializable": "1.x",
"space-pen": "3.1.1",
"temp": "0.5.0",
"text-buffer": ">=1.1.2 <2.0",
"text-buffer": "^1.2.0",
"theorist": "1.x",
"underscore-plus": "1.x",
"underscore-plus": ">=1.0.2 <2.0",
"vm-compatibility-layer": "0.1.0"
},
"packageDependencies": {
"atom-dark-syntax": "0.13.0",
"atom-dark-ui": "0.22.0",
"atom-light-syntax": "0.13.0",
"atom-light-ui": "0.21.0",
"base16-tomorrow-dark-theme": "0.11.0",
"solarized-dark-syntax": "0.9.0",
"solarized-light-syntax": "0.5.0",
"archive-view": "0.23.0",
"autocomplete": "0.23.0",
"autoflow": "0.14.0",
"autosave": "0.11.0",
"background-tips": "0.7.0",
"bookmarks": "0.20.0",
"bracket-matcher": "0.20.0",
"command-palette": "0.17.0",
"dev-live-reload": "0.26.0",
"exception-reporting": "0.13.0",
"feedback": "0.24.0",
"find-and-replace": "0.83.0",
"fuzzy-finder": "0.35.0",
"gists": "0.17.0",
"git-diff": "0.24.0",
"github-sign-in": "0.19.0",
"go-to-line": "0.16.0",
"grammar-selector": "0.20.0",
"image-view": "0.24.0",
"keybinding-resolver": "0.10.0",
"link": "0.17.0",
"markdown-preview": "0.32.0",
"metrics": "0.26.0",
"open-on-github": "0.20.0",
"package-generator": "0.26.0",
"release-notes": "0.20.0",
"settings-view": "0.76.0",
"snippets": "0.30.0",
"spell-check": "0.25.0",
"status-bar": "0.32.0",
"styleguide": "0.24.0",
"symbols-view": "0.36.0",
"tabs": "0.19.0",
"timecop": "0.13.0",
"tree-view": "0.69.0",
"update-package-dependencies": "0.3.0",
"welcome": "0.4.0",
"whitespace": "0.14.0",
"wrap-guide": "0.14.0",
"language-c": "0.8.0",
"language-clojure": "0.2.0",
"language-coffee-script": "0.9.0",
"language-css": "0.7.0",
"language-gfm": "0.17.0",
"language-git": "0.6.0",
"language-go": "0.4.0",
"language-html": "0.5.0",
"language-hyperlink": "0.5.0",
"language-java": "0.5.0",
"language-javascript": "0.8.0",
"language-json": "0.5.0",
"language-less": "0.4.0",
"language-make": "0.4.0",
"language-mustache": "0.3.0",
"language-objective-c": "0.5.0",
"language-pegjs": "0.3.0",
"language-perl": "0.5.0",
"language-php": "0.6.0",
"language-property-list": "0.5.0",
"language-puppet": "0.5.0",
"language-python": "0.5.0",
"language-ruby": "0.11.0",
"language-ruby-on-rails": "0.6.0",
"language-sass": "0.6.0",
"language-shellscript": "0.5.0",
"language-source": "0.5.0",
"language-sql": "0.5.0",
"language-text": "0.4.0",
"language-todo": "0.4.0",
"language-toml": "0.9.0",
"language-xml": "0.5.0",
"language-yaml": "0.4.0"
"atom-dark-syntax": "0.14.0",
"atom-dark-ui": "0.23.0",
"atom-light-syntax": "0.14.0",
"atom-light-ui": "0.22.0",
"base16-tomorrow-dark-theme": "0.12.0",
"solarized-dark-syntax": "0.10.0",
"solarized-light-syntax": "0.6.0",
"archive-view": "0.26.0",
"autocomplete": "0.24.0",
"autoflow": "0.15.0",
"autosave": "0.12.0",
"background-tips": "0.8.0",
"bookmarks": "0.21.0",
"bracket-matcher": "0.23.0",
"command-palette": "0.18.0",
"dev-live-reload": "0.28.0",
"exception-reporting": "0.16.0",
"feedback": "0.27.0",
"find-and-replace": "0.87.0",
"fuzzy-finder": "0.38.0",
"git-diff": "0.25.0",
"go-to-line": "0.18.0",
"grammar-selector": "0.22.0",
"image-view": "0.27.0",
"keybinding-resolver": "0.11.0",
"link": "0.19.0",
"markdown-preview": "0.43.0",
"metrics": "0.30.0",
"open-on-github": "0.23.0",
"package-generator": "0.29.0",
"release-notes": "0.25.0",
"settings-view": "0.85.0",
"snippets": "0.32.0",
"spell-check": "0.26.0",
"status-bar": "0.33.0",
"styleguide": "0.26.0",
"symbols-view": "0.40.0",
"tabs": "0.24.0",
"timecop": "0.15.0",
"tree-view": "0.72.0",
"update-package-dependencies": "0.4.0",
"welcome": "0.11.0",
"whitespace": "0.15.0",
"wrap-guide": "0.16.0",
"language-c": "0.12.0",
"language-coffee-script": "0.14.0",
"language-css": "0.10.0",
"language-gfm": "0.19.0",
"language-git": "0.9.0",
"language-go": "0.6.0",
"language-html": "0.8.0",
"language-hyperlink": "0.8.0",
"language-java": "0.8.0",
"language-javascript": "0.13.0",
"language-json": "0.8.0",
"language-less": "0.6.0",
"language-make": "0.9.0",
"language-objective-c": "0.9.0",
"language-perl": "0.8.0",
"language-php": "0.8.0",
"language-property-list": "0.7.0",
"language-python": "0.9.0",
"language-ruby": "0.13.0",
"language-ruby-on-rails": "0.7.0",
"language-sass": "0.8.0",
"language-shellscript": "0.7.0",
"language-source": "0.7.0",
"language-sql": "0.7.0",
"language-text": "0.6.0",
"language-todo": "0.6.0",
"language-toml": "0.11.0",
"language-xml": "0.8.0",
"language-yaml": "0.6.0"
},
"private": true,
"scripts": {
+1 -1
Ver Arquivo
@@ -25,7 +25,7 @@
<key>LSApplicationCategoryType</key>
<string>public.app-category.developer-tools</string>
<key>LSMinimumSystemVersion</key>
<string>10.7</string>
<string>10.8</string>
<key>NSAppleScriptEnabled</key>
<string>YES</string>
<key>NSMainNibFile</key>
Arquivo binário não exibido.
Arquivo binário não exibido.
+4 -9
Ver Arquivo
@@ -3,11 +3,6 @@ var safeExec = require('./utils/child-process-wrapper.js').safeExec;
var fs = require('fs');
var path = require('path');
// OAuth token for atom-bot
// TODO Remove once all repositories are public
if (!process.env.ATOM_ACCESS_TOKEN)
process.env.ATOM_ACCESS_TOKEN = '362295be4c5258d3f7b967bbabae662a455ca2a7';
// Executes an array of commands one by one.
function executeCommands(commands, done, index) {
index = (index == undefined ? 0 : index);
@@ -36,10 +31,10 @@ var echoNewLine = process.platform == 'win32' ? 'echo.' : 'echo';
var commands = [
'git submodule --quiet sync',
'git submodule --quiet update --recursive --init',
{command: 'npm install --quiet', options: {cwd: path.resolve(__dirname, '..', 'build'), ignoreStdout: true}},
{command: 'npm install --quiet', options: {cwd: apmVendorPath, ignoreStdout: true}},
{command: 'npm install --quiet ' + apmVendorPath, options: {cwd: apmInstallPath, ignoreStdout: true}},
{command: 'npm install --quiet ' + apmVendorPath, options: {ignoreStdout: true}},
{command: 'npm --strict-ssl=false install --quiet', options: {cwd: path.resolve(__dirname, '..', 'build'), ignoreStdout: true}},
{command: 'npm --strict-ssl=false install --quiet', options: {cwd: apmVendorPath, ignoreStdout: true}},
{command: 'npm --strict-ssl=false install --quiet ' + apmVendorPath, options: {cwd: apmInstallPath, ignoreStdout: true}},
{command: 'npm --strict-ssl=false install --quiet ' + apmVendorPath, options: {ignoreStdout: true}},
{command: 'node ../../apm/node_modules/atom-package-manager/bin/apm rebuild', options: {cwd: path.resolve('node_modules', 'atom-package-manager'), ignoreStdout: true}},
echoNewLine,
'node apm/node_modules/atom-package-manager/bin/apm clean ' + apmFlags,
+1 -1
Ver Arquivo
@@ -1,4 +1,4 @@
{$, $$, fs, WorkspaceView} = require 'atom'
{$, $$, WorkspaceView} = require 'atom'
Exec = require('child_process').exec
path = require 'path'
Package = require '../src/package'
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
{fs} = require 'atom'
path = require 'path'
fs = require 'fs-plus'
temp = require 'temp'
installer = require '../src/command-installer'
+5 -5
Ver Arquivo
@@ -1,7 +1,7 @@
{fs} = require 'atom'
path = require 'path'
temp = require 'temp'
CSON = require 'season'
fs = require 'fs-plus'
describe "Config", ->
dotAtomPath = path.join(temp.dir, 'dot-atom-dir')
@@ -217,7 +217,7 @@ describe "Config", ->
expect(fs.existsSync(atom.config.configDirPath)).toBeFalsy()
afterEach ->
fs.removeSync(dotAtomPath) if fs.existsSync(dotAtomPath)
fs.removeSync(dotAtomPath)
describe "when the configDirPath doesn't exist", ->
it "copies the contents of dot-atom to ~/.atom", ->
@@ -234,7 +234,7 @@ describe "Config", ->
expect(fs.isFileSync(path.join(atom.config.configDirPath, 'snippets.cson'))).toBeTruthy()
expect(fs.isFileSync(path.join(atom.config.configDirPath, 'config.cson'))).toBeTruthy()
expect(fs.isFileSync(path.join(atom.config.configDirPath, 'init.coffee'))).toBeTruthy()
expect(fs.isFileSync(path.join(atom.config.configDirPath, 'styles.css'))).toBeTruthy()
expect(fs.isFileSync(path.join(atom.config.configDirPath, 'styles.less'))).toBeTruthy()
describe ".loadUserConfig()", ->
beforeEach ->
@@ -243,7 +243,7 @@ describe "Config", ->
expect(fs.existsSync(atom.config.configDirPath)).toBeFalsy()
afterEach ->
fs.removeSync(dotAtomPath) if fs.existsSync(dotAtomPath)
fs.removeSync(dotAtomPath)
describe "when the config file contains valid cson", ->
beforeEach ->
@@ -286,7 +286,7 @@ describe "Config", ->
afterEach ->
atom.config.unobserveUserConfig()
fs.removeSync(dotAtomPath) if fs.existsSync(dotAtomPath)
fs.removeSync(dotAtomPath)
describe "when the config file changes to contain valid cson", ->
it "updates the config data", ->
+18 -6
Ver Arquivo
@@ -1,5 +1,5 @@
DisplayBuffer = require '../src/display-buffer'
{_} = require 'atom'
_ = require 'underscore-plus'
describe "DisplayBuffer", ->
[displayBuffer, buffer, changeHandler, tabLength] = []
@@ -37,7 +37,7 @@ describe "DisplayBuffer", ->
expect(displayBuffer2.isFoldedAtBufferRow(3)).toBeTruthy()
# can diverge from origin
displayBuffer2.destroyFoldsContainingBufferRow(3)
displayBuffer2.unfoldBufferRow(3)
expect(displayBuffer2.isFoldedAtBufferRow(3)).not.toBe displayBuffer.isFoldedAtBufferRow(3)
describe "when the buffer changes", ->
@@ -200,6 +200,12 @@ describe "DisplayBuffer", ->
expect(tokensText displayBuffer.lineForRow(12).tokens).toBe 'sort(left).concat(pivot).concat(sort(rig'
expect(changeHandler).toHaveBeenCalledWith(start: 0, end: 15, screenDelta: 3, bufferDelta: 0)
it "only allows positive widths to be assigned", ->
displayBuffer.setEditorWidthInChars(0)
expect(displayBuffer.editorWidthInChars).not.toBe 0
displayBuffer.setEditorWidthInChars(-1)
expect(displayBuffer.editorWidthInChars).not.toBe -1
describe "primitive folding", ->
beforeEach ->
displayBuffer.destroy()
@@ -460,6 +466,12 @@ describe "DisplayBuffer", ->
expect(changeHandler).toHaveBeenCalledWith(start: 3, end: 3, screenDelta: 1, bufferDelta: 1)
describe "when the change starts at the beginning of a fold but does not extend to the end (regression)", ->
it "preserves a proper mapping between buffer and screen coordinates", ->
expect(displayBuffer.screenPositionForBufferPosition([8, 0])).toEqual [4, 0]
buffer.setTextInRange([[2, 0], [3, 0]], "\n")
expect(displayBuffer.screenPositionForBufferPosition([8, 0])).toEqual [4, 0]
describe "position translation", ->
it "translates positions to account for folded lines and characters and the placeholder", ->
fold = displayBuffer.createFold(4, 7)
@@ -495,7 +507,7 @@ describe "DisplayBuffer", ->
expect(displayBuffer.bufferPositionForScreenPosition([5, 0])).toEqual [5, 0]
expect(displayBuffer.bufferPositionForScreenPosition([9, 2])).toEqual [9, 2]
describe ".destroyFoldsContainingBufferRow(row)", ->
describe ".unfoldBufferRow(row)", ->
it "destroys all folds containing the given row", ->
displayBuffer.createFold(2, 4)
displayBuffer.createFold(2, 6)
@@ -506,7 +518,7 @@ describe "DisplayBuffer", ->
expect(displayBuffer.lineForRow(1).text).toBe '1'
expect(displayBuffer.lineForRow(2).text).toBe '10'
displayBuffer.destroyFoldsContainingBufferRow(2)
displayBuffer.unfoldBufferRow(2)
expect(displayBuffer.lineForRow(1).text).toBe '1'
expect(displayBuffer.lineForRow(2).text).toBe '2'
expect(displayBuffer.lineForRow(7).fold).toBeDefined()
@@ -684,7 +696,7 @@ describe "DisplayBuffer", ->
}
markerChangedHandler.reset()
displayBuffer.destroyFoldsContainingBufferRow(4)
displayBuffer.unfoldBufferRow(4)
expect(markerChangedHandler).toHaveBeenCalled()
expect(markerChangedHandler.argsForCall[0][0]).toEqual {
oldHeadScreenPosition: [8, 23]
@@ -867,7 +879,7 @@ describe "DisplayBuffer", ->
expect(marker.getHeadScreenPosition()).toEqual [8, 10]
expect(marker.getTailScreenPosition()).toEqual [8, 4]
displayBuffer.destroyFoldsContainingBufferRow(4)
displayBuffer.unfoldBufferRow(4)
expect(changeHandler).toHaveBeenCalled()
expect(markerChangedHandler).toHaveBeenCalled()
+6 -6
Ver Arquivo
@@ -2635,18 +2635,18 @@ describe "Editor", ->
editor.destroy()
expect(buffer.getMarkerCount()).toBe 0
describe ".joinLine()", ->
describe ".joinLines()", ->
describe "when no text is selected", ->
describe "when the line below isn't empty", ->
it "joins the line below with the current line separated by a space and moves the cursor to the start of line that was moved up", ->
editor.joinLine()
editor.joinLines()
expect(editor.lineForBufferRow(0)).toBe 'var quicksort = function () { var sort = function(items) {'
expect(editor.getCursorBufferPosition()).toEqual [0, 30]
describe "when the line below is empty", ->
it "deletes the line below and moves the cursor to the end of the line", ->
editor.setCursorBufferPosition([9])
editor.joinLine()
editor.joinLines()
expect(editor.lineForBufferRow(9)).toBe ' };'
expect(editor.lineForBufferRow(10)).toBe ' return sort(Array.apply(this, arguments));'
expect(editor.getCursorBufferPosition()).toEqual [9, 4]
@@ -2654,21 +2654,21 @@ describe "Editor", ->
describe "when the cursor is on the last row", ->
it "does nothing", ->
editor.setCursorBufferPosition([Infinity, Infinity])
editor.joinLine()
editor.joinLines()
expect(editor.lineForBufferRow(12)).toBe '};'
describe "when text is selected", ->
describe "when the selection does not span multiple lines", ->
it "joins the line below with the current line separated by a space and retains the selected text", ->
editor.setSelectedBufferRange([[0, 1], [0, 3]])
editor.joinLine()
editor.joinLines()
expect(editor.lineForBufferRow(0)).toBe 'var quicksort = function () { var sort = function(items) {'
expect(editor.getSelectedBufferRange()).toEqual [[0, 1], [0, 3]]
describe "when the selection spans multiple lines", ->
it "joins all selected lines separated by a space and retains the selected text", ->
editor.setSelectedBufferRange([[9, 3], [12, 1]])
editor.joinLine()
editor.joinLines()
expect(editor.lineForBufferRow(9)).toBe ' }; return sort(Array.apply(this, arguments)); };'
expect(editor.getSelectedBufferRange()).toEqual [[9, 3], [9, 49]]
+1 -1
Ver Arquivo
@@ -1,6 +1,6 @@
temp = require 'temp'
Git = require '../src/git'
{fs} = require 'atom'
fs = require 'fs-plus'
path = require 'path'
Task = require '../src/task'
+16
Ver Arquivo
@@ -400,6 +400,22 @@ describe "Keymap", ->
keyBinding = keymap.keyBindingsForKeystroke('ctrl-l')[0]
expect(keyBinding).toBeUndefined()
it "logs a warning when it can't be parsed", ->
keymapFilePath = path.join(configDirPath, "keymap.json")
fs.writeFileSync(keymapFilePath, '')
keymap.loadUserKeymap()
spyOn(keymap, 'loadUserKeymap').andCallThrough()
fs.writeFileSync(keymapFilePath, '}{')
spyOn(console, 'warn')
waitsFor ->
keymap.loadUserKeymap.callCount > 0
runs ->
expect(console.warn.callCount).toBe 1
expect(console.warn.argsForCall[0][0].length).toBeGreaterThan 0
describe "when adding a binding with an invalid selector", ->
it "logs a warning and does not add it", ->
spyOn(console, 'warn')
-15
Ver Arquivo
@@ -285,21 +285,6 @@ describe "LanguageMode", ->
expect(fold.getStartRow()).toBe 0
expect(fold.getEndRow()).toBe 13
describe ".unfoldBufferRow(bufferRow)", ->
describe "when bufferRow can be unfolded", ->
it "destroys a fold based on the syntactic region starting at the given row", ->
languageMode.foldBufferRow(1)
expect(editor.lineForScreenRow(1).fold).toBeDefined()
languageMode.unfoldBufferRow(1)
expect(editor.lineForScreenRow(1).fold).toBeUndefined()
describe "when bufferRow can't be unfolded", ->
it "does not throw an error", ->
expect(editor.lineForScreenRow(1).fold).toBeUndefined()
languageMode.unfoldBufferRow(1)
expect(editor.lineForScreenRow(1).fold).toBeUndefined()
describe ".isFoldableAtBufferRow(bufferRow)", ->
it "returns true if the line starts a foldable row range", ->
expect(languageMode.isFoldableAtBufferRow(0)).toBe true
+27 -27
Ver Arquivo
@@ -2,7 +2,7 @@ path = require 'path'
temp = require 'temp'
PaneContainerView = require '../src/pane-container-view'
PaneView = require '../src/pane-view'
{_, $, View, $$} = require 'atom'
{$, View, $$} = require 'atom'
describe "PaneContainerView", ->
[TestView, container, pane1, pane2, pane3] = []
@@ -45,10 +45,10 @@ describe "PaneContainerView", ->
expect(container.getFocusedPane()).toBe pane3
expect(container.getActivePane()).toBe pane3
describe ".eachPane(callback)", ->
describe ".eachPaneView(callback)", ->
it "runs the callback with all current and future panes until the subscription is cancelled", ->
panes = []
subscription = container.eachPane (pane) -> panes.push(pane)
subscription = container.eachPaneView (pane) -> panes.push(pane)
expect(panes).toEqual [pane1, pane2, pane3]
panes = []
@@ -66,7 +66,7 @@ describe "PaneContainerView", ->
container.saveAll()
for pane in container.getPanes()
for pane in container.getPaneViews()
for item in pane.getItems()
expect(item.saved).toBeTruthy()
@@ -240,30 +240,30 @@ describe "PaneContainerView", ->
pane2.remove()
expect(activeItemChangedHandler).not.toHaveBeenCalled()
describe ".focusNextPane()", ->
describe ".focusNextPaneView()", ->
it "focuses the pane following the focused pane or the first pane if no pane has focus", ->
container.attachToDom()
container.focusNextPane()
container.focusNextPaneView()
expect(pane1.activeItem).toMatchSelector ':focus'
container.focusNextPane()
container.focusNextPaneView()
expect(pane2.activeItem).toMatchSelector ':focus'
container.focusNextPane()
container.focusNextPaneView()
expect(pane3.activeItem).toMatchSelector ':focus'
container.focusNextPane()
container.focusNextPaneView()
expect(pane1.activeItem).toMatchSelector ':focus'
describe ".focusPreviousPane()", ->
describe ".focusPreviousPaneView()", ->
it "focuses the pane preceding the focused pane or the last pane if no pane has focus", ->
container.attachToDom()
container.getPanes()[0].focus() # activate first pane
container.getPaneViews()[0].focus() # activate first pane
container.focusPreviousPane()
container.focusPreviousPaneView()
expect(pane3.activeItem).toMatchSelector ':focus'
container.focusPreviousPane()
container.focusPreviousPaneView()
expect(pane2.activeItem).toMatchSelector ':focus'
container.focusPreviousPane()
container.focusPreviousPaneView()
expect(pane1.activeItem).toMatchSelector ':focus'
container.focusPreviousPane()
container.focusPreviousPaneView()
expect(pane3.activeItem).toMatchSelector ':focus'
describe "changing focus directionally between panes", ->
@@ -300,54 +300,54 @@ describe "PaneContainerView", ->
container.width(400)
container.attachToDom()
describe ".focusPaneAbove()", ->
describe ".focusPaneViewAbove()", ->
describe "when there are multiple rows above the focused pane", ->
it "focuses up to the adjacent row", ->
pane8.focus()
container.focusPaneAbove()
container.focusPaneViewAbove()
expect(pane5.activeItem).toMatchSelector ':focus'
describe "when there are no rows above the focused pane", ->
it "keeps the current pane focused", ->
pane2.focus()
container.focusPaneAbove()
container.focusPaneViewAbove()
expect(pane2.activeItem).toMatchSelector ':focus'
describe ".focusPaneBelow()", ->
describe ".focusPaneViewBelow()", ->
describe "when there are multiple rows below the focused pane", ->
it "focuses down to the adjacent row", ->
pane2.focus()
container.focusPaneBelow()
container.focusPaneViewBelow()
expect(pane5.activeItem).toMatchSelector ':focus'
describe "when there are no rows below the focused pane", ->
it "keeps the current pane focused", ->
pane8.focus()
container.focusPaneBelow()
container.focusPaneViewBelow()
expect(pane8.activeItem).toMatchSelector ':focus'
describe ".focusPaneOnLeft()", ->
describe ".focusPaneViewOnLeft()", ->
describe "when there are multiple columns to the left of the focused pane", ->
it "focuses left to the adjacent column", ->
pane6.focus()
container.focusPaneOnLeft()
container.focusPaneViewOnLeft()
expect(pane5.activeItem).toMatchSelector ':focus'
describe "when there are no columns to the left of the focused pane", ->
it "keeps the current pane focused", ->
pane4.focus()
container.focusPaneOnLeft()
container.focusPaneViewOnLeft()
expect(pane4.activeItem).toMatchSelector ':focus'
describe ".focusPaneOnRight()", ->
describe ".focusPaneViewOnRight()", ->
describe "when there are multiple columns to the right of the focused pane", ->
it "focuses right to the adjacent column", ->
pane4.focus()
container.focusPaneOnRight()
container.focusPaneViewOnRight()
expect(pane5.activeItem).toMatchSelector ':focus'
describe "when there are no columns to the right of the focused pane", ->
it "keeps the current pane focused", ->
pane6.focus()
container.focusPaneOnRight()
container.focusPaneViewOnRight()
expect(pane6.activeItem).toMatchSelector ':focus'
+2 -1
Ver Arquivo
@@ -1,6 +1,7 @@
PaneContainerView = require '../src/pane-container-view'
PaneView = require '../src/pane-view'
{fs, $, View} = require 'atom'
fs = require 'fs-plus'
{$, View} = require 'atom'
path = require 'path'
temp = require 'temp'
+12 -1
Ver Arquivo
@@ -1,7 +1,8 @@
temp = require 'temp'
fstream = require 'fstream'
Project = require '../src/project'
{_, fs} = require 'atom'
_ = require 'underscore-plus'
fs = require 'fs-plus'
path = require 'path'
platform = require './spec-helper-platform'
BufferedProcess = require '../src/buffered-process'
@@ -490,6 +491,16 @@ describe "Project", ->
expect(resultForA.matches).toHaveLength 1
expect(resultForA.matches[0].matchText).toBe 'Elephant'
it "ignores buffers outside the project", ->
editor = atom.project.openSync(temp.openSync().path)
editor.setText("Elephant")
results = []
waitsForPromise ->
atom.project.scan /Elephant/, (result) -> results.push result
runs ->
expect(results).toHaveLength 0
describe ".eachBuffer(callback)", ->
beforeEach ->
atom.project.bufferForPathSync('a')
+4 -1
Ver Arquivo
@@ -4,7 +4,9 @@ atom.restoreWindowDimensions()
require '../vendor/jasmine-jquery'
path = require 'path'
{_, $, WorkspaceView, fs} = require 'atom'
_ = require 'underscore-plus'
fs = require 'fs-plus'
{$, WorkspaceView} = require 'atom'
Keymap = require '../src/keymap'
Config = require '../src/config'
{Point} = require 'text-buffer'
@@ -75,6 +77,7 @@ beforeEach ->
spyOn(config, 'save')
config.setDefaults('core', WorkspaceView.configDefaults)
config.setDefaults('editor', EditorView.configDefaults)
config.set "core.destroyEmptyPanes", false
config.set "editor.fontFamily", "Courier"
config.set "editor.fontSize", 16
config.set "editor.autoIndent", false
+3 -1
Ver Arquivo
@@ -1,4 +1,6 @@
{_, fs, Git} = require 'atom'
_ = require 'underscore-plus'
fs = require 'fs-plus'
{Git} = require 'atom'
path = require 'path'
require './spec-helper'
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
{fs} = require 'atom'
path = require 'path'
fs = require 'fs-plus'
temp = require 'temp'
describe "the `syntax` global", ->
+3 -2
Ver Arquivo
@@ -1,6 +1,7 @@
path = require 'path'
{$, $$, fs, WorkspaceView} = require 'atom'
{$, $$, WorkspaceView} = require 'atom'
fs = require 'fs-plus'
temp = require 'temp'
ThemeManager = require '../src/theme-manager'
@@ -199,7 +200,7 @@ describe "ThemeManager", ->
describe "when the user stylesheet changes", ->
it "reloads it", ->
userStylesheetPath = path.join(temp.mkdirSync("atom"), 'styles.css')
userStylesheetPath = path.join(temp.mkdirSync("atom"), 'styles.less')
fs.writeFileSync(userStylesheetPath, 'body {border-style: dotted !important;}')
spyOn(themeManager, 'getUserStylesheetPath').andReturn userStylesheetPath
+1 -1
Ver Arquivo
@@ -1,4 +1,4 @@
{_} = require 'atom'
_ = require 'underscore-plus'
module.exports =
class TimeReporter extends jasmine.Reporter
+1 -1
Ver Arquivo
@@ -1,5 +1,5 @@
TokenizedBuffer = require '../src/tokenized-buffer'
{_} = require 'atom'
_ = require 'underscore-plus'
describe "TokenizedBuffer", ->
[tokenizedBuffer, buffer, changeHandler] = []
+1 -1
Ver Arquivo
@@ -1,4 +1,4 @@
{$, $$, fs} = require 'atom'
{$, $$} = require 'atom'
path = require 'path'
Editor = require '../src/editor'
WindowEventHandler = require '../src/window-event-handler'
+20 -5
Ver Arquivo
@@ -14,14 +14,24 @@ describe "Workspace", ->
describe "when the 'searchAllPanes' option is false (default)", ->
describe "when called without a uri", ->
it "adds and activates an empty editor on the active pane", ->
editor = null
[editor1, editor2] = []
waitsForPromise ->
workspace.open().then (o) -> editor = o
workspace.open().then (editor) -> editor1 = editor
runs ->
expect(editor.getPath()).toBeUndefined()
expect(workspace.activePane.items).toEqual [editor]
expect(workspace.activePaneItem).toBe editor
expect(editor1.getPath()).toBeUndefined()
expect(workspace.activePane.items).toEqual [editor1]
expect(workspace.activePaneItem).toBe editor1
expect(workspace.activePane.activate).toHaveBeenCalled()
waitsForPromise ->
workspace.open().then (editor) -> editor2 = editor
runs ->
expect(editor2.getPath()).toBeUndefined()
expect(workspace.activePane.items).toEqual [editor1, editor2]
expect(workspace.activePaneItem).toBe editor2
expect(workspace.activePane.activate).toHaveBeenCalled()
describe "when called with a uri", ->
@@ -230,3 +240,8 @@ describe "Workspace", ->
expect(atom.config.get('editor.fontSize')).toBe 1
workspace.decreaseFontSize()
expect(atom.config.get('editor.fontSize')).toBe 1
describe "::openLicense()", ->
it "opens the license as plain-text in a buffer", ->
waitsForPromise -> workspace.openLicense()
runs -> expect(workspace.activePaneItem.getText()).toMatch /Copyright/
+3 -3
Ver Arquivo
@@ -1,4 +1,4 @@
{$, $$, fs, WorkspaceView, View} = require 'atom'
{$, $$, WorkspaceView, View} = require 'atom'
Q = require 'q'
path = require 'path'
temp = require 'temp'
@@ -36,12 +36,12 @@ describe "WorkspaceView", ->
editorView1 = atom.workspaceView.getActiveView()
buffer = editorView1.getEditor().getBuffer()
editorView1.splitRight()
expect(atom.workspaceView.getActivePane()).toBe atom.workspaceView.getPanes()[1]
expect(atom.workspaceView.getActivePane()).toBe atom.workspaceView.getPaneViews()[1]
simulateReload()
expect(atom.workspaceView.getEditorViews().length).toBe 2
expect(atom.workspaceView.getActivePane()).toBe atom.workspaceView.getPanes()[1]
expect(atom.workspaceView.getActivePane()).toBe atom.workspaceView.getPaneViews()[1]
expect(atom.workspaceView.title).toBe "untitled - #{atom.project.getPath()}"
describe "when there are open editors", ->
+9 -17
Ver Arquivo
@@ -141,7 +141,7 @@ class AtomApplication
@applicationMenu.showCheckForUpdateItem(true)
autoUpdater.on 'update-downloaded', (event, releaseNotes, releaseName, releaseDate, releaseURL) =>
atomWindow.sendCommand('window:update-available', releaseName) for atomWindow in @windows
atomWindow.sendCommand('window:update-available', [releaseName, releaseNotes]) for atomWindow in @windows
@applicationMenu.showInstallUpdateItem(true)
@applicationMenu.showCheckForUpdateItem(false)
@updateVersion = releaseName
@@ -159,7 +159,7 @@ class AtomApplication
type: 'info'
buttons: ['OK']
message: 'Update available.'
detail: 'A new update is being downloading.'
detail: 'A new update is being downloaded.'
autoUpdater.once 'update-not-available', =>
dialog.showMessageBox
@@ -194,8 +194,7 @@ class AtomApplication
@on 'application:zoom', -> Menu.sendActionToFirstResponder('zoom:')
@on 'application:bring-all-windows-to-front', -> Menu.sendActionToFirstResponder('arrangeInFront:')
@on 'application:inspect', ({x,y}) -> @focusedWindow().browserWindow.inspectElement(x, y)
@on 'application:open-documentation', -> shell.openExternal('https://www.atom.io/docs/latest/?app')
@on 'application:report-issue', -> shell.openExternal('https://github.com/atom/atom/issues/new')
@on 'application:open-documentation', -> shell.openExternal('https://atom.io/docs/latest/?app')
@on 'application:install-update', -> autoUpdater.quitAndInstall()
@on 'application:check-for-update', => @checkForUpdate()
@@ -321,14 +320,6 @@ class AtomApplication
# + initialSize:
# Object with height and width keys.
openPath: ({pathToOpen, pidToKillWhenClosed, newWindow, devMode, initialSize}={}) ->
if devMode and not fs.existsSync(global.devResourcePath)
dialog.showMessageBox
type: 'warning'
buttons: ['OK']
message: 'Atom source directory not found.'
detail: 'To run a window in dev mode you need to have the atom/atom repo cloned to ~/github/atom'
return
if pathToOpen
[basename, initialLine] = path.basename(pathToOpen).split(':')
if initialLine
@@ -342,11 +333,12 @@ class AtomApplication
openedWindow.openPath(pathToOpen, initialLine)
else
if devMode
resourcePath = global.devResourcePath
bootstrapScript = require.resolve(path.join(global.devResourcePath, 'src', 'window-bootstrap'))
else
resourcePath = @resourcePath
bootstrapScript = require.resolve('../window-bootstrap')
try
bootstrapScript = require.resolve(path.join(global.devResourcePath, 'src', 'window-bootstrap'))
resourcePath = global.devResourcePath
bootstrapScript ?= require.resolve('../window-bootstrap')
resourcePath ?= @resourcePath
openedWindow = new AtomWindow({pathToOpen, initialLine, bootstrapScript, resourcePath, devMode, initialSize})
if pidToKillWhenClosed?
+2 -3
Ver Arquivo
@@ -68,7 +68,7 @@ parseCommandLine = ->
version = app.getVersion()
options = optimist(process.argv[1..])
options.usage """
Atom #{version}
Atom Editor v#{version}
Usage: atom [options] [file ...]
"""
@@ -109,8 +109,7 @@ parseCommandLine = ->
try
fs.statSync resourcePath
catch e
devMode = false
catch
resourcePath = path.dirname(path.dirname(__dirname))
{resourcePath, pathsToOpen, executedFrom, test, version, pidToKillWhenClosed, devMode, newWindow, specDirectory, logFile}
+24 -28
Ver Arquivo
@@ -1,43 +1,39 @@
BufferedProcess = require './buffered-process'
path = require 'path'
# Public: Like {BufferedProcess}, but accepts a Node script instead of an
# executable.
# Public: Like {BufferedProcess}, but accepts a Node script as the command
# to run.
#
# This may seem unnecessary but on Windows we have to have separate executables
# for each script without this since Windows doesn't support shebang strings.
# This is necessary on Windows since it doesn't support shebang `#!` lines.
#
# ## Requiring in packages
#
# ```coffee
# {BufferedNodeProcess} = require 'atom'
# {BufferedNodeProcess} = require 'atom'
# ```
module.exports =
class BufferedNodeProcess extends BufferedProcess
# Executes the given Node script.
# Public: Runs the given Node script by spawning a new child process.
#
# * options
# + command:
# The path to the Javascript script to execute.
# + args:
# The array of arguments to pass to the script (optional).
# + options:
# The options Object to pass to Node's `ChildProcess.spawn` (optional).
# + stdout:
# The callback that receives a single argument which contains the
# standard output of the script. The callback is called as data is
# received but it's buffered to ensure only complete lines are passed
# until the source stream closes. After the source stream has closed
# all remaining data is sent in a final call (optional).
# + stderr:
# The callback that receives a single argument which contains the
# standard error of the script. The callback is called as data is
# received but it's buffered to ensure only complete lines are passed
# until the source stream closes. After the source stream has closed
# all remaining data is sent in a final call (optional).
# + exit:
# The callback which receives a single argument containing the exit
# status (optional).
# options - An {Object} with the following keys:
# :command - The {String} path to the JavaScript script to execute.
# :args - The {Array} of arguments to pass to the script (optional).
# :options - The options {Object} to pass to Node's `ChildProcess.spawn`
# method (optional).
# :stdout - The callback {Function} that receives a single argument which
# contains the standard output from the command. The callback is
# called as data is received but it's buffered to ensure only
# complete lines are passed until the source stream closes. After
# the source stream has closed all remaining data is sent in a
# final call (optional).
# :stderr - The callback {Function} that receives a single argument which
# contains the standard error output from the command. The
# callback is called as data is received but it's buffered to
# ensure only complete lines are passed until the source stream
# closes. After the source stream has closed all remaining data
# is sent in a final call (optional).
# :exit - The callback {Function} which receives a single argument
# containing the exit status (optional).
constructor: ({command, args, options, stdout, stderr, exit}) ->
node =
if process.platform is 'darwin'
+30 -28
Ver Arquivo
@@ -1,41 +1,46 @@
ChildProcess = require 'child_process'
# Public: A wrapper which provides line buffering for Node's ChildProcess.
# Public: A wrapper which provides standard error/output line buffering for
# Node's ChildProcess.
#
# ## Requiring in packages
#
# ```coffee
# {BufferedProcess} = require 'atom'
# {BufferedProcess} = require 'atom'
#
# command = 'ps'
# args = ['-ef']
# stdout = (output) -> console.log(output)
# exit = (code) -> console.log("ps -ef exited with #{code}")
# process = new BufferredProcess({command, args, stdout, exit})
# ```
module.exports =
class BufferedProcess
process: null
killed: false
# Public: Executes the given executable.
# Public: Runs the given command by spawning a new child process.
#
# options - An {Object} with the following keys:
# :command - The {String} command to execute.
# :args - The {String}} of arguments to pass to the script (optional).
# :args - The {Array} of arguments to pass to the command (optional).
# :options - The options {Object} to pass to Node's `ChildProcess.spawn`
# (optional).
# :stdout - The callback that receives a single argument which contains the
# standard output of the script. The callback is called as data is
# received but it's buffered to ensure only complete lines are
# passed until the source stream closes. After the source stream
# has closed all remaining data is sent in a final call
# (optional).
# :stderr - The callback that receives a single argument which contains the
# standard error of the script. The callback is called as data is
# received but it's buffered to ensure only complete lines are
# passed until the source stream closes. After the source stream
# has closed all remaining data is sent in a final call
# (optional).
# :exit - The callback which receives a single argument containing the exit
# status (optional).
# method (optional).
# :stdout - The callback {Function} that receives a single argument which
# contains the standard output from the command. The callback is
# called as data is received but it's buffered to ensure only
# complete lines are passed until the source stream closes. After
# the source stream has closed all remaining data is sent in a
# final call (optional).
# :stderr - The callback {Function} that receives a single argument which
# contains the standard error output from the command. The
# callback is called as data is received but it's buffered to
# ensure only complete lines are passed until the source stream
# closes. After the source stream has closed all remaining data
# is sent in a final call (optional).
# :exit - The callback {Function} which receives a single argument
# containing the exit status (optional).
constructor: ({command, args, options, stdout, stderr, exit}={}) ->
options ?= {}
@process = ChildProcess.spawn(command, args, options)
@killed = false
stdoutClosed = true
stderrClosed = true
@@ -67,12 +72,9 @@ class BufferedProcess
# Helper method to pass data line by line.
#
# * stream:
# The Stream to read from.
# * onLines:
# The callback to call with each line of data.
# * onDone:
# The callback to call when the stream has closed.
# stream - The Stream to read from.
# onLines - The callback to call with each line of data.
# onDone - The callback to call when the stream has closed.
bufferStream: (stream, onLines, onDone) ->
stream.setEncoding('utf8')
buffered = ''
+2 -2
Ver Arquivo
@@ -20,7 +20,7 @@ class Clipboard
# Public: Write the given text to the clipboard.
#
# The metadata associated with the text is available by calling
# {.readWithMetadata}.
# {::readWithMetadata}.
#
# text - The {String} to store.
# metadata - The additional info to associate with the text.
@@ -40,7 +40,7 @@ class Clipboard
#
# Returns an {Object} with the following keys:
# :text - The {String} clipboard text.
# :metadata - The metadata stored by an earlier call to {.write}.
# :metadata - The metadata stored by an earlier call to {::write}.
readWithMetadata: ->
text = @read()
if @signatureForMetadata is @md5(text)
+4 -4
Ver Arquivo
@@ -311,7 +311,7 @@ class Cursor
#
# options - An {Object} with the following keys:
# :wordRegex - A {RegExp} indicating what constitutes a "word"
# (default: {.wordRegExp}).
# (default: {::wordRegExp}).
# :includeNonWordCharacters - A {Boolean} indicating whether to include
# non-word characters in the default word regex.
# Has no effect if wordRegex is set.
@@ -379,7 +379,7 @@ class Cursor
#
# options - An {Object} with the following keys:
# :wordRegex - A {RegExp} indicating what constitutes a "word"
# (default: {.wordRegExp})
# (default: {::wordRegExp})
# :includeNonWordCharacters - A Boolean indicating whether to include
# non-word characters in the default word regex.
# Has no effect if wordRegex is set.
@@ -403,7 +403,7 @@ class Cursor
#
# options -
# :wordRegex - A {RegExp} indicating what constitutes a "word"
# (default: {.wordRegExp}).
# (default: {::wordRegExp}).
#
# Returns a {Range}.
getBeginningOfNextWordBufferPosition: (options = {}) ->
@@ -422,7 +422,7 @@ class Cursor
#
# options -
# :wordRegex - A {RegExp} indicating what constitutes a "word"
# (default: {.wordRegExp}).
# (default: {::wordRegExp}).
getCurrentWordBufferRange: (options={}) ->
startOptions = _.extend(_.clone(options), allowPrevious: false)
endOptions = _.extend(_.clone(options), allowNext: false)
+5
Ver Arquivo
@@ -11,6 +11,11 @@
#
# @deserialize: (state) ->
# new MyPackageView(state)
#
# constructor: (@state) ->
#
# serialize: ->
# @state
# ```
module.exports =
class DeserializerManager
+7 -7
Ver Arquivo
@@ -37,7 +37,7 @@ class DisplayBufferMarker
# Modifies the screen range of the display marker.
#
# screenRange - The new {Range} to use
# options - A hash of options matching those found in {Marker.setRange}
# options - A hash of options matching those found in {Marker::setRange}
setScreenRange: (screenRange, options) ->
@setBufferRange(@displayBuffer.bufferRangeForScreenRange(screenRange), options)
@@ -50,7 +50,7 @@ class DisplayBufferMarker
# Modifies the buffer range of the display marker.
#
# screenRange - The new {Range} to use
# options - A hash of options matching those found in {Marker.setRange}
# options - A hash of options matching those found in {Marker::setRange}
setBufferRange: (bufferRange, options) ->
@bufferMarker.setRange(bufferRange, options)
@@ -63,7 +63,7 @@ class DisplayBufferMarker
# Sets the screen position of the marker's head.
#
# screenRange - The new {Point} to use
# options - A hash of options matching those found in {DisplayBuffer.bufferPositionForScreenPosition}
# options - A hash of options matching those found in {DisplayBuffer::bufferPositionForScreenPosition}
setHeadScreenPosition: (screenPosition, options) ->
screenPosition = @displayBuffer.clipScreenPosition(screenPosition, options)
@setHeadBufferPosition(@displayBuffer.bufferPositionForScreenPosition(screenPosition, options))
@@ -77,7 +77,7 @@ class DisplayBufferMarker
# Sets the buffer position of the marker's head.
#
# screenRange - The new {Point} to use
# options - A hash of options matching those found in {DisplayBuffer.bufferPositionForScreenPosition}
# options - A hash of options matching those found in {DisplayBuffer::bufferPositionForScreenPosition}
setHeadBufferPosition: (bufferPosition) ->
@bufferMarker.setHeadPosition(bufferPosition)
@@ -90,7 +90,7 @@ class DisplayBufferMarker
# Sets the screen position of the marker's tail.
#
# screenRange - The new {Point} to use
# options - A hash of options matching those found in {DisplayBuffer.bufferPositionForScreenPosition}
# options - A hash of options matching those found in {DisplayBuffer::bufferPositionForScreenPosition}
setTailScreenPosition: (screenPosition, options) ->
screenPosition = @displayBuffer.clipScreenPosition(screenPosition, options)
@setTailBufferPosition(@displayBuffer.bufferPositionForScreenPosition(screenPosition, options))
@@ -104,7 +104,7 @@ class DisplayBufferMarker
# Sets the buffer position of the marker's tail.
#
# screenRange - The new {Point} to use
# options - A hash of options matching those found in {DisplayBuffer.bufferPositionForScreenPosition}
# options - A hash of options matching those found in {DisplayBuffer::bufferPositionForScreenPosition}
setTailBufferPosition: (bufferPosition) ->
@bufferMarker.setTailPosition(bufferPosition)
@@ -135,7 +135,7 @@ class DisplayBufferMarker
# Returns a {Boolean} indicating whether the marker has been destroyed. A marker
# can be invalid without being destroyed, in which case undoing the invalidating
# operation would restore the marker. Once a marker is destroyed by calling
# {Marker.destroy}, no undo/redo operation can ever bring it back.
# {Marker::destroy}, no undo/redo operation can ever bring it back.
isDestroyed: ->
@bufferMarker.isDestroyed()
+22 -13
Ver Arquivo
@@ -10,6 +10,11 @@ Fold = require './fold'
Token = require './token'
DisplayBufferMarker = require './display-buffer-marker'
class BufferToScreenConversionError extends Error
constructor: (@message, @metadata) ->
super
Error.captureStackTrace(this, BufferToScreenConversionError)
module.exports =
class DisplayBuffer extends Model
Serializable.includeInto(this)
@@ -94,10 +99,11 @@ class DisplayBuffer extends Model
#
# editorWidthInChars - A {Number} of characters.
setEditorWidthInChars: (editorWidthInChars) ->
previousWidthInChars = @editorWidthInChars
@editorWidthInChars = editorWidthInChars
if editorWidthInChars isnt previousWidthInChars and @softWrap
@updateWrappedScreenLines()
if editorWidthInChars > 0
previousWidthInChars = @editorWidthInChars
@editorWidthInChars = editorWidthInChars
if editorWidthInChars isnt previousWidthInChars and @softWrap
@updateWrappedScreenLines()
getSoftWrapColumn: ->
if atom.config.get('editor.softWrapAtPreferredLineLength')
@@ -164,7 +170,7 @@ class DisplayBuffer extends Model
# Removes any folds found that contain the given buffer row.
#
# bufferRow - The buffer row {Number} to check against
destroyFoldsContainingBufferRow: (bufferRow) ->
unfoldBufferRow: (bufferRow) ->
fold.destroy() for fold in @foldsContainingBufferRow(bufferRow)
# Given a buffer row, this returns the largest fold that starts there.
@@ -291,13 +297,15 @@ class DisplayBuffer extends Model
{ row, column } = @buffer.clipPosition(bufferPosition)
[startScreenRow, endScreenRow] = @rowMap.screenRowRangeForBufferRow(row)
for screenRow in [startScreenRow...endScreenRow]
unless screenLine = @screenLines[screenRow]
throw new Error """
No screen line exists for screen row #{screenRow}, converted from buffer position (#{row}, #{column})
Soft wrap enabled: #{@getSoftWrap()}
Fold count: #{@findFoldMarkers().length}
Last buffer row: #{@getLastRow()}
"""
screenLine = @screenLines[screenRow]
unless screenLine?
throw new BufferToScreenConversionError "No screen line exists when converting buffer row to screen row",
softWrapEnabled: @getSoftWrap()
foldCount: @findFoldMarkers().length
lastBufferRow: @buffer.getLastRow()
lastScreenRow: @getLastRow()
maxBufferColumn = screenLine.getMaxBufferColumn()
if screenLine.isSoftWrapped() and column > maxBufferColumn
continue
@@ -508,7 +516,7 @@ class DisplayBuffer extends Model
# Finds the first marker satisfying the given attributes
#
# Refer to {DisplayBuffer.findMarkers} for details.
# Refer to {DisplayBuffer::findMarkers} for details.
#
# Returns a {DisplayBufferMarker} or null
findMarker: (attributes) ->
@@ -577,6 +585,7 @@ class DisplayBuffer extends Model
updateScreenLines: (startBufferRow, endBufferRow, bufferDelta=0, options={}) ->
startBufferRow = @rowMap.bufferRowRangeForBufferRow(startBufferRow)[0]
endBufferRow = @rowMap.bufferRowRangeForBufferRow(endBufferRow - 1)[1]
startScreenRow = @rowMap.screenRowRangeForBufferRow(startBufferRow)[0]
endScreenRow = @rowMap.screenRowRangeForBufferRow(endBufferRow - 1)[1]
+5 -5
Ver Arquivo
@@ -27,7 +27,7 @@ class EditorView extends View
@characterWidthCache: {}
@configDefaults:
fontFamily: ''
fontSize: 20
fontSize: 16
showInvisibles: false
showIndentGuide: false
showLineNumbers: true
@@ -193,7 +193,7 @@ class EditorView extends View
'editor:unfold-all': => @editor.unfoldAll()
'editor:fold-current-row': => @editor.foldCurrentRow()
'editor:unfold-current-row': => @editor.unfoldCurrentRow()
'editor:fold-selection': => @editor.foldSelection()
'editor:fold-selection': => @editor.foldSelectedLines()
'editor:fold-at-indent-level-1': => @editor.foldAllAtIndentLevel(0)
'editor:fold-at-indent-level-2': => @editor.foldAllAtIndentLevel(1)
'editor:fold-at-indent-level-3': => @editor.foldAllAtIndentLevel(2)
@@ -210,7 +210,7 @@ class EditorView extends View
'editor:move-line-up': => @editor.moveLineUp()
'editor:move-line-down': => @editor.moveLineDown()
'editor:duplicate-line': => @editor.duplicateLine()
'editor:join-line': => @editor.joinLine()
'editor:join-lines': => @editor.joinLines()
'editor:toggle-indent-guide': => atom.config.toggle('editor.showIndentGuide')
'editor:toggle-line-numbers': => atom.config.toggle('editor.showLineNumbers')
'editor:scroll-to-cursor': => @scrollToCursorPosition()
@@ -609,7 +609,7 @@ class EditorView extends View
#
# bufferPosition - An object that represents a buffer position. It can be either
# an {Object} (`{row, column}`), {Array} (`[row, column]`), or {Point}
# options - A hash matching the options available to {.scrollToPixelPosition}
# options - A hash matching the options available to {::scrollToPixelPosition}
scrollToBufferPosition: (bufferPosition, options) ->
@scrollToPixelPosition(@pixelPositionForBufferPosition(bufferPosition), options)
@@ -617,7 +617,7 @@ class EditorView extends View
#
# screenPosition - An object that represents a buffer position. It can be either
# an {Object} (`{row, column}`), {Array} (`[row, column]`), or {Point}
# options - A hash matching the options available to {.scrollToPixelPosition}
# options - A hash matching the options available to {::scrollToPixelPosition}
scrollToScreenPosition: (screenPosition, options) ->
@scrollToPixelPosition(@pixelPositionForScreenPosition(screenPosition), options)
+678 -303
Ver Arquivo
Diferenças do arquivo suprimidas por serem muito extensas Carregar Diff
+2 -2
Ver Arquivo
@@ -110,7 +110,7 @@ class Git
# path - A {String} repository-relative path.
#
# Returns a {Number} representing the status. This value can be passed to
# {.isStatusModified} or {.isStatusNew} to get more information.
# {::isStatusModified} or {::isStatusNew} to get more information.
getPathStatus: (path) ->
currentPathStatus = @statuses[path] ? 0
pathStatus = @getRepo().getStatus(@relativize(path)) ? 0
@@ -208,7 +208,7 @@ class Git
# path - The {String} path to check.
#
# Returns a {Number} representing the status. This value can be passed to
# {.isStatusModified} or {.isStatusNew} to get more information.
# {::isStatusModified} or {::isStatusNew} to get more information.
getDirectoryStatus: (directoryPath) ->
{sep} = require 'path'
directoryPath = "#{directoryPath}#{sep}"
+8 -1
Ver Arquivo
@@ -135,9 +135,16 @@ class Keymap
userKeymapPath = @getUserKeymapPath()
if fs.isFileSync(userKeymapPath)
@userKeymapPath = userKeymapPath
@load(userKeymapPath)
@userKeymapFile = new File(userKeymapPath)
@userKeymapFile.on 'contents-changed moved removed', => @loadUserKeymap()
@add(@userKeymapPath, @readUserKeymap())
readUserKeymap: ->
try
CSON.readFileSync(@userKeymapPath) ? {}
catch error
console.warn("Failed to load your keymap file: #{@userKeymapPath}", error.stack ? error)
{}
loadDirectory: (directoryPath) ->
platforms = ['darwin', 'freebsd', 'linux', 'sunos', 'win32']
-6
Ver Arquivo
@@ -121,12 +121,6 @@ class LanguageMode
fold = @editor.displayBuffer.largestFoldStartingAtBufferRow(startRow)
return @editor.createFold(startRow, endRow) unless fold
# Given a buffer row, this unfolds it.
#
# bufferRow - A {Number} indicating the buffer row
unfoldBufferRow: (bufferRow) ->
@editor.displayBuffer.largestFoldContainingBufferRow(bufferRow)?.destroy()
# Find the row range for a fold at a given bufferRow. Will handle comments
# and code.
#
+17 -13
Ver Arquivo
@@ -54,24 +54,24 @@ class PaneContainerView extends View
confirmClose: ->
saved = true
for pane in @getPanes()
for pane in @getPaneViews()
for item in pane.getItems()
if not pane.promptToSaveItem(item)
saved = false
break
saved
getPanes: ->
getPaneViews: ->
@find('.pane').views()
indexOfPane: (pane) ->
@getPanes().indexOf(pane.view())
@getPaneViews().indexOf(pane.view())
paneAtIndex: (index) ->
@getPanes()[index]
@getPaneViews()[index]
eachPane: (callback) ->
callback(pane) for pane in @getPanes()
eachPaneView: (callback) ->
callback(pane) for pane in @getPaneViews()
paneAttached = (e) -> callback($(e.target).view())
@on 'pane:attached', paneAttached
off: => @off 'pane:attached', paneAttached
@@ -91,22 +91,22 @@ class PaneContainerView extends View
paneForUri: (uri) ->
@viewForModel(@model.paneForUri(uri))
focusNextPane: ->
focusNextPaneView: ->
@model.activateNextPane()
focusPreviousPane: ->
focusPreviousPaneView: ->
@model.activatePreviousPane()
focusPaneAbove: ->
focusPaneViewAbove: ->
@nearestPaneInDirection('above')?.focus()
focusPaneBelow: ->
focusPaneViewBelow: ->
@nearestPaneInDirection('below')?.focus()
focusPaneOnLeft: ->
focusPaneViewOnLeft: ->
@nearestPaneInDirection('left')?.focus()
focusPaneOnRight: ->
focusPaneViewOnRight: ->
@nearestPaneInDirection('right')?.focus()
nearestPaneInDirection: (direction) ->
@@ -117,7 +117,7 @@ class PaneContainerView extends View
pane = @getActivePane()
box = @boundingBoxForPane(pane)
panes = @getPanes()
panes = @getPaneViews()
.filter (otherPane) =>
otherBox = @boundingBoxForPane(otherPane)
switch direction
@@ -143,3 +143,7 @@ class PaneContainerView extends View
right: {x: boundingBox.right, y: boundingBox.top}
top: {x: boundingBox.left, y: boundingBox.top}
bottom: {x: boundingBox.left, y: boundingBox.bottom}
# Deprecated
getPanes: ->
@getPaneViews()
+1 -1
Ver Arquivo
@@ -117,7 +117,7 @@ class PaneView extends View
# Public: Returns the next pane, ordered by creation.
getNextPane: ->
panes = @container?.getPanes()
panes = @container?.getPaneViews()
return unless panes.length > 1
nextIndex = (panes.indexOf(this) + 1) % panes.length
panes[nextIndex]
+3 -2
Ver Arquivo
@@ -189,8 +189,8 @@ class Project extends Model
#
# Returns a promise that resolves to the {TextBuffer}.
buildBuffer: (absoluteFilePath) ->
if fs.getSizeSync(absoluteFilePath) >= 1048576 # 1MB
throw new Error("Atom can only handle files < 1MB, for now.")
if fs.getSizeSync(absoluteFilePath) >= 2 * 1048576 # 2MB
throw new Error("Atom can only handle files < 2MB, for now.")
buffer = new TextBuffer({filePath: absoluteFilePath})
@addBuffer(buffer)
@@ -251,6 +251,7 @@ class Project extends Model
for buffer in @getBuffers() when buffer.isModified()
filePath = buffer.getPath()
continue unless @contains(filePath)
matches = []
buffer.scan regex, (match) -> matches.push match
iterator {filePath, matches} if matches.length > 0
+10 -10
Ver Arquivo
@@ -8,8 +8,8 @@ fuzzyFilter = require('fuzzaldrin').filter
#
# Subclasses must implement the following methods:
#
# * {.viewForItem}
# * {.confirmed}
# * {::viewForItem}
# * {::confirmed}
#
# ## Requiring in packages
#
@@ -88,7 +88,7 @@ class SelectListView extends View
# Public: Set the array of items to display in the list.
#
# This should be model items not actual views. {.viewForItem} will be
# This should be model items not actual views. {::viewForItem} will be
# called to render the item when it is being appended to the list view.
#
# items - The {Array} of model items to display in the list (default: []).
@@ -130,7 +130,7 @@ class SelectListView extends View
@filterEditorView.getEditor().getText()
# Public: Populate the list view with the model items previously set by
# calling {.setItems}.
# calling {::setItems}.
#
# Subclasses may override this method but should always call `super`.
populateList: ->
@@ -160,7 +160,7 @@ class SelectListView extends View
#
# Subclasses may override this method to customize the message.
#
# itemCount - The {Number} of items in the array specified to {.setItems}
# itemCount - The {Number} of items in the array specified to {::setItems}
# filteredItemCount - The {Number} of items that pass the fuzzy filter test.
#
# Returns a {String} message (default: 'No matches found').
@@ -220,7 +220,7 @@ class SelectListView extends View
# This is called when the item is about to appended to the list view.
#
# item - The model item being rendered. This will always be one of the items
# previously passed to {.setItems}.
# previously passed to {::setItems}.
#
# Returns a String of HTML, DOM element, jQuery object, or View.
viewForItem: (item) ->
@@ -231,7 +231,7 @@ class SelectListView extends View
# This method must be overridden by subclasses.
#
# item - The selected model item. This will always be one of the items
# previously passed to {.setItems}.
# previously passed to {::setItems}.
#
# Returns a DOM element, jQuery object, or {View}.
confirmed: (item) ->
@@ -242,7 +242,7 @@ class SelectListView extends View
# This method may be overridden by classes to allow fuzzy filtering based
# on a specific property of the item objects.
#
# For example if the objects you pass to {.setItems} are of the type
# For example if the objects you pass to {::setItems} are of the type
# `{"id": 3, "name": "Atom"}` then you would return `"name"` from this method
# to fuzzy filter by that property when text is entered into this view's
# editor.
@@ -255,7 +255,7 @@ class SelectListView extends View
@filterEditorView.focus()
# Public: Store the currently focused element. This element will be given
# back focus when {.cancel} is called.
# back focus when {::cancel} is called.
storeFocusedElement: ->
@previouslyFocusedElement = $(':focus')
@@ -272,7 +272,7 @@ class SelectListView extends View
# Public: Cancel and close this select list view.
#
# This restores focus to the previously focused element if
# {.storeFocusedElement} was called prior to this view being attached.
# {::storeFocusedElement} was called prior to this view being attached.
cancel: ->
@list.empty()
@cancelling = true
+12 -8
Ver Arquivo
@@ -56,7 +56,7 @@ class Selection
# Public: Modifies the screen range for the selection.
#
# screenRange - The new {Range} to use.
# options - A hash of options matching those found in {.setBufferRange}.
# options - A hash of options matching those found in {::setBufferRange}.
setScreenRange: (screenRange, options) ->
@setBufferRange(@editor.bufferRangeForScreenRange(screenRange), options)
@@ -282,7 +282,7 @@ class Selection
# :undo - if `skip`, skips the undo stack for this operation.
insertText: (text, options={}) ->
oldBufferRange = @getBufferRange()
@editor.destroyFoldsContainingBufferRow(oldBufferRange.end.row)
@editor.unfoldBufferRow(oldBufferRange.end.row)
wasReversed = @isReversed()
@clear()
@cursor.needsAutoscroll = @cursor.isLastCursor()
@@ -334,11 +334,15 @@ class Selection
normalizedLines.join('\n')
# Public: Indents the selection.
# Indent the current line(s).
#
# If the selection is empty, indents the current line if the cursor precedes
# non-whitespace characters, and otherwise inserts a tab. If the selection is
# non empty, calls {::indentSelectedRows}.
#
# options - A {Object} with the keys:
# :autoIndent - If `true`, the indentation is performed appropriately.
# Otherwise, {Editor.getTabText} is used.
# :autoIndent - If `true`, the line is indented to an automatically-inferred
# level. Otherwise, {Editor::getTabText} is inserted.
indent: ({ autoIndent }={})->
{ row, column } = @cursor.getBufferPosition()
@@ -433,7 +437,7 @@ class Selection
# Public: Joins the current line with the one below it.
#
# If there selection spans more than one line, all the lines are joined together.
joinLine: ->
joinLines: ->
selectedRange = @getBufferRange()
if selectedRange.isEmpty()
return if selectedRange.start.row is @editor.buffer.getLastRow()
@@ -543,7 +547,7 @@ class Selection
# the given selection.
#
# otherSelection - A {Selection} to merge with.
# options - A hash of options matching those found in {.setBufferRange}.
# options - A hash of options matching those found in {::setBufferRange}.
merge: (otherSelection, options) ->
myGoalBufferRange = @getGoalBufferRange()
otherGoalBufferRange = otherSelection.getGoalBufferRange()
@@ -557,7 +561,7 @@ class Selection
# Public: Compare this selection's buffer range to another selection's buffer
# range.
#
# See {Range.compare} for more details.
# See {Range::compare} for more details.
#
# otherSelection - A {Selection} to compare against.
compare: (otherSelection) ->
+1 -1
Ver Arquivo
@@ -37,7 +37,7 @@ class Task
#
# It receives the same arguments that were passed to the task.
#
# If subclassed, this is intended to be overridden. However if {.start}
# If subclassed, this is intended to be overridden. However if {::start}
# receives a completion callback, this is overridden.
callback: null
+30 -30
Ver Arquivo
@@ -64,7 +64,7 @@ class WorkspaceView extends View
themes: ['atom-dark-ui', 'atom-dark-syntax']
projectHome: path.join(fs.getHomeDirectory(), 'github')
audioBeep: true
destroyEmptyPanes: false
destroyEmptyPanes: true
@content: ->
@div class: 'workspace', tabindex: -1, =>
@@ -111,6 +111,7 @@ class WorkspaceView extends View
@command 'application:open-your-keymap', -> ipc.sendChannel('command', 'application:open-your-keymap')
@command 'application:open-your-snippets', -> ipc.sendChannel('command', 'application:open-your-snippets')
@command 'application:open-your-stylesheet', -> ipc.sendChannel('command', 'application:open-your-stylesheet')
@command 'application:open-license', => @model.openLicense()
@command 'window:install-shell-commands', => @installShellCommands()
@@ -119,12 +120,12 @@ class WorkspaceView extends View
@command 'window:decrease-font-size', => @decreaseFontSize()
@command 'window:reset-font-size', => @model.resetFontSize()
@command 'window:focus-next-pane', => @focusNextPane()
@command 'window:focus-previous-pane', => @focusPreviousPane()
@command 'window:focus-pane-above', => @focusPaneAbove()
@command 'window:focus-pane-below', => @focusPaneBelow()
@command 'window:focus-pane-on-left', => @focusPaneOnLeft()
@command 'window:focus-pane-on-right', => @focusPaneOnRight()
@command 'window:focus-next-pane', => @focusNextPaneView()
@command 'window:focus-previous-pane', => @focusPreviousPaneView()
@command 'window:focus-pane-above', => @focusPaneViewAbove()
@command 'window:focus-pane-below', => @focusPaneViewBelow()
@command 'window:focus-pane-on-left', => @focusPaneViewOnLeft()
@command 'window:focus-pane-on-right', => @focusPaneViewOnRight()
@command 'window:save-all', => @saveAll()
@command 'window:toggle-invisibles', =>
atom.config.toggle("editor.showInvisibles")
@@ -233,10 +234,6 @@ class WorkspaceView extends View
getActivePaneView: ->
@panes.getActivePane()
# Deprecated: Returns the currently focused {PaneView}.
getActivePane: ->
@getActivePaneView()
# Public: Returns the currently focused item from within the focused {PaneView}
getActivePaneItem: ->
@model.activePaneItem
@@ -246,40 +243,31 @@ class WorkspaceView extends View
@panes.getActiveView()
# Public: Focuses the previous pane by id.
focusPreviousPane: -> @model.activatePreviousPane()
focusPreviousPaneView: -> @model.activatePreviousPane()
# Public: Focuses the next pane by id.
focusNextPane: -> @model.activateNextPane()
focusNextPaneView: -> @model.activateNextPane()
# Public: Focuses the pane directly above the active pane.
focusPaneAbove: -> @panes.focusPaneAbove()
focusPaneViewAbove: -> @panes.focusPaneViewAbove()
# Public: Focuses the pane directly below the active pane.
focusPaneBelow: -> @panes.focusPaneBelow()
focusPaneViewBelow: -> @panes.focusPaneViewBelow()
# Public: Focuses the pane directly to the left of the active pane.
focusPaneOnLeft: -> @panes.focusPaneOnLeft()
focusPaneViewOnLeft: -> @panes.focusPaneViewOnLeft()
# Public: Focuses the pane directly to the right of the active pane.
focusPaneOnRight: -> @panes.focusPaneOnRight()
# Public:
#
# FIXME: Difference between active and focused pane?
getFocusedPane: -> @panes.getFocusedPane()
focusPaneViewOnRight: -> @panes.focusPaneViewOnRight()
# Public: Fires a callback on each open {PaneView}.
eachPane: (callback) ->
@panes.eachPane(callback)
eachPaneView: (callback) ->
@panes.eachPaneView(callback)
# Public: Returns an Array of all open {PaneView}s.
getPanes: ->
# Returns an Array of all open {PaneView}s.
getPaneViews: ->
@panes.getPanes()
# Public: Return the id of the given a {PaneView}
indexOfPane: (pane) ->
@panes.indexOfPane(pane)
# Public: Fires a callback on each open {EditorView}.
eachEditorView: (callback) ->
callback(editor) for editor in @getEditorViews()
@@ -290,3 +278,15 @@ class WorkspaceView extends View
# Called by SpacePen
beforeRemove: ->
@model.destroy()
# Deprecated
eachPane: (callback) ->
@eachPaneView(callback)
# Deprecated
getPanes: ->
@getPaneViews()
# Deprecated
getActivePane: ->
@getActivePaneView()
+19 -8
Ver Arquivo
@@ -1,4 +1,5 @@
{remove, last} = require 'underscore-plus'
{join} = require 'path'
{Model} = require 'theorist'
Q = require 'q'
Serializable = require 'serializable'
@@ -72,24 +73,25 @@ class Workspace extends Model
# if the uri is already open (default: false)
#
# Returns a promise that resolves to the {Editor} for the file URI.
open: (uri='', options={}) ->
open: (uri, options={}) ->
searchAllPanes = options.searchAllPanes
split = options.split
uri = atom.project.resolve(uri)
pane = switch split
pane = @paneContainer.paneForUri(uri) if searchAllPanes
pane ?= switch split
when 'left'
@activePane.findLeftmostSibling()
when 'right'
@activePane.findOrCreateRightmostSibling()
else
if searchAllPanes
@paneContainer.paneForUri(uri) ? @activePane
else
@activePane
@activePane
@openUriInPane(uri, pane, options)
openLicense: ->
@open(join(atom.getLoadSettings().resourcePath, 'LICENSE'))
# Only used in specs
openSync: (uri='', options={}) ->
{initialLine} = options
@@ -110,8 +112,8 @@ class Workspace extends Model
openUriInPane: (uri, pane, options={}) ->
changeFocus = options.changeFocus ? true
item = pane.itemForUri(uri)
if uri
if uri?
item = pane.itemForUri(uri)
item ?= opener(atom.project.resolve(uri), options) for opener in @getOpeners() when !item
item ?= atom.project.open(uri, options)
@@ -155,6 +157,15 @@ class Workspace extends Model
getOpeners: ->
atom.project.openers
# Public: Returns the active {Pane}.
getActivePane: ->
@paneContainer.activePane
# Public: Returns the first pane {Pane} with an item for the given uri or
# undefined if none exists.
paneForUri: (uri) ->
@paneContainer.paneForUri(uri)
# Public: save the active item.
saveActivePaneItem: ->
@activePane?.saveActiveItem()
+1
Ver Arquivo
@@ -24,6 +24,7 @@
display: -webkit-flex;
-webkit-flex: 1;
-webkit-flex-direction: column;
overflow: hidden;
.item-views {
-webkit-flex: 1;
externo
+1 -1
Submodule vendor/apm updated: 97d281afec...90cd546860