pulsar/CONTRIBUTING.md

95 lines
3.8 KiB
Markdown
Raw Normal View History

2013-12-04 20:50:43 +04:00
# :tada: Contributing to Atom :tada:
2013-12-04 20:55:19 +04:00
These are just guidelines, not rules, use your best judgement and feel free
to propose changes to this document in a pull request.
2013-01-31 02:25:36 +04:00
## Issues
* Include screenshots and animated GIFs whenever possible, they are immensely
2013-11-27 23:20:22 +04:00
helpful.
2013-01-31 02:25:36 +04:00
* Include the behavior you expected to happen and other places you've seen
that behavior such as Emacs, vi, Xcode, etc.
2013-11-27 23:20:22 +04:00
* Check the Console app for stack traces to include if reporting a crash.
* Check the Dev tools (`alt-cmd-i`) for errors and stack traces to include.
2014-03-10 22:13:08 +04:00
2013-12-05 20:50:13 +04:00
### Package Repositories
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 organization](https://github.com/atom) such as [tabs](https://github.com/atom/tabs),
2013-12-05 20:50:13 +04:00
[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).
If you think you know which package is causing the issue you are reporting, feel
free to open up the issue in that specific repository instead. When in doubt
just open the issue here but be aware that it may get closed here and reopened
in the proper package's repository.
2013-01-31 02:25:36 +04:00
2013-11-27 23:20:22 +04:00
## Pull Requests
* Include screenshots and animated GIFs whenever possible.
2013-12-12 02:34:51 +04:00
* Follow the [CoffeeScript](#coffeescript-styleguide),
[JavaScript](https://github.com/styleguide/javascript),
and [CSS](https://github.com/styleguide/css) styleguides
2014-02-07 02:38:14 +04:00
* Include thoughtfully worded [Jasmine](http://pivotal.github.com/jasmine)
2013-01-31 02:25:36 +04:00
specs
2013-11-27 23:20:22 +04:00
* Avoid placing files in `vendor`. 3rd-party packages should be added as a
`package.json` dependency.
* Files end with a newline.
* Requires should be in the following order:
* Built in Node Modules (such as `path`)
* Built in Atom and Atom Shell Modules (such as `atom`, `shell`)
* Local Modules (using relative paths)
2013-05-08 22:30:34 +04:00
* Class variables and methods should be in the following order:
* Class methods (methods starting with a `@`)
* Instance methods
2013-11-08 02:58:00 +04:00
* Beware of platform differences
* Use `require('atom').fs.getHomeDirectory()` to get the home directory.
2013-11-27 23:20:22 +04:00
* Use `path.join()` to concatenate filenames.
* Temporary directory is not `/tmp` on Windows, use `os.tmpdir()` when
possible
2013-12-04 20:53:24 +04:00
## Git Commit Messages
* Use the present tense
* Reference issues and pull requests liberally
* Consider starting the commit message with an applicable emoji:
* :lipstick: when improving the format/structure of the code
* :racehorse: when improving performance
* :non-potable_water: when plugging memory leaks
* :memo: when writing docs
2014-04-03 01:03:31 +04:00
* :penguin: when fixing something on Linux
2013-12-12 02:34:51 +04:00
## CoffeeScript Styleguide
* Set parameter defaults without spaces around the equal sign
* `clear = (count=1) ->` instead of `clear = (count = 1) ->`
## Documentation Styleguide
2014-02-07 02:38:14 +04:00
* Use [TomDoc](http://tomdoc.org).
* Use [Markdown](https://daringfireball.net/projects/markdown).
* 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.
2014-02-07 02:28:10 +04:00
### Example
```coffee
# Public: Disable the package with the given name.
#
# This method emits multiple events:
#
# * `package-will-be-disabled` - before the package is disabled.
# * `package-disabled` - after the package is disabled.
#
# name - The {String} name of the package to disable.
2014-02-07 03:55:13 +04:00
# options - The {Object} with disable options (default: {}):
# :trackTime - `true` to track the amount of time disabling took.
# :ignoreErrors - `true` to catch and ignore errors thrown.
2014-02-07 02:28:10 +04:00
# callback - The {Function} to call after the package has been disabled.
#
# Returns `undefined`.
2014-02-07 03:55:13 +04:00
disablePackage: (name, options, callback) ->
2014-02-07 02:28:10 +04:00
```