|
| 1 | +# Contributing |
| 2 | + |
| 3 | +Everyone is welcome to contribute, in whatever form they are comfortable with. For example: |
| 4 | +- improve documentation, |
| 5 | +- test features, |
| 6 | +- fix bugs, |
| 7 | +- or add new features. |
| 8 | + |
| 9 | +## Getting Started |
| 10 | + |
| 11 | +Before diving into code or content overhaul, check if your idea isn't being work on, a quick look at issues and pull requests should do. If you are still unsure, open an issue with a brief description of what would you like to do. |
| 12 | + |
| 13 | +## Development |
| 14 | + |
| 15 | +To start working on a bug-fix, a feature, or a content update, follow these steps: |
| 16 | + |
| 17 | +1. Fork the repository. |
| 18 | + |
| 19 | +2. Link package as a dev package. |
| 20 | + |
| 21 | +To do that, when in package's directory, run `apm link --dev` in terminal. This way package will be available only in dev mode (Atom's menu bar: `View > Developer > Open in Dev Mode...`), over it's official version (if one is installed). |
| 22 | + |
| 23 | +3. Work on a problem in a dedicated branch. |
| 24 | + |
| 25 | +4. When done, submit a pull request to the main repository on GitHub. |
| 26 | + |
| 27 | +### Commit messages |
| 28 | + |
| 29 | +We are using [semantic-release], which (as part of continuous deployment) provides automatic versioning based on [conventional commits]. |
| 30 | + |
| 31 | +Detailed information about message format can be found on [conventional commits] website. It's also worth checking past commits and pull requests to get an idea about how and which types are used within the repository. |
| 32 | + |
| 33 | +Each commit is checked by [commitlint], run by [Husky], and will point out any issues with a commit message - no need to worry about accidental, incorrect commits. |
| 34 | + |
| 35 | +### Debugging |
| 36 | + |
| 37 | +For general information regarding debugging in Atom, take a look at [debugging][atom-debugging] section of the Atom Flight Manual. |
| 38 | + |
| 39 | +### Language Server Protocol (LSP) |
| 40 | + |
| 41 | +Atom IDE packages revolve around [language server protocol], for which integration base is provided by [atom-languageclient]. |
| 42 | + |
| 43 | +To log communication between Atom and a language server, dedicated debugging option needs to be set in Atom's configuration, `atom.config.set('core.debugLSP', true)` - e.g. through [init file]. Log entries should be visible in the console, in Developer Tools (`ctrl+shift+i`), e.g.: |
| 44 | + |
| 45 | +``` |
| 46 | +TypeScript (Theia) [Started] Starting Theia for some-project |
| 47 | +rpc.sendRequest textDocument/definition sending {textDocument: {…}, position: {…}} |
| 48 | +rpc.sendRequest textDocument/definition received (27ms) [{…}] |
| 49 | +``` |
| 50 | +*Note: "Verbose" log level is required for some entries* |
| 51 | + |
| 52 | +[semantic-release]: https://github.com/semantic-release/semantic-release |
| 53 | +[conventional commits]: https://www.conventionalcommits.org/en/v1.0.0 |
| 54 | +[commitlint]: https://commitlint.js.org |
| 55 | +[Husky]: https://github.com/typicode/husky |
| 56 | +[atom-debugging]: https://flight-manual.atom.io/hacking-atom/sections/debugging/ |
| 57 | +[atom-languageclient]: https://github.com/atom/atom-languageclient |
| 58 | +[language server protocol]: https://microsoft.github.io/language-server-protocol/ |
| 59 | +[init file]: https://flight-manual.atom.io/hacking-atom/sections/the-init-file/ |
0 commit comments