Showing preview only (6,221K chars total). Download the full file or copy to clipboard to get everything.
Repository: jacob-lcs/atom
Branch: master
Commit: 8b7ea9aa2230
Files: 1292
Total size: 5.7 MB
Directory structure:
gitextract_ehm8a0w4/
├── .coffeelintignore
├── .eslintignore
├── .eslintrc.json
├── .gitattributes
├── .github/
│ ├── lock.yml
│ ├── move.yml
│ ├── no-response.yml
│ └── stale.yml
├── .gitignore
├── .prettierrc
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE.md
├── PULL_REQUEST_TEMPLATE.md
├── README.md
├── SUPPORT.md
├── apm/
│ ├── README.md
│ └── package.json
├── atom.sh
├── benchmarks/
│ ├── benchmark-runner.js
│ ├── text-editor-large-file-construction.bench.js
│ └── text-editor-long-lines.bench.js
├── coffeelint.json
├── docs/
│ ├── README.md
│ ├── apm-rest-api.md
│ ├── build-instructions/
│ │ ├── build-status.md
│ │ ├── linux.md
│ │ ├── macOS.md
│ │ └── windows.md
│ ├── contributing-to-packages.md
│ ├── native-profiling.md
│ └── rfcs/
│ ├── 000-template.md
│ ├── 001-updatable-bundled-packages.md
│ ├── 002-atom-nightly-releases.md
│ ├── 003-consolidate-core-packages.md
│ ├── 004-decoration-ordering.md
│ ├── 005-grammar-comment-delims.md
│ ├── 005-pretranspile.md
│ └── 005-scope-naming.md
├── dot-atom/
│ ├── .gitignore
│ ├── init.coffee
│ ├── keymap.cson
│ ├── packages/
│ │ └── README.md
│ ├── snippets.cson
│ └── styles.less
├── exports/
│ ├── atom.js
│ ├── clipboard.js
│ ├── ipc.js
│ ├── remote.js
│ ├── shell.js
│ └── web-frame.js
├── keymaps/
│ ├── base.cson
│ ├── darwin.cson
│ ├── linux.cson
│ └── win32.cson
├── menus/
│ ├── darwin.cson
│ ├── linux.cson
│ └── win32.cson
├── package.json
├── packages/
│ ├── README.md
│ ├── about/
│ │ ├── .gitignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── about.js
│ │ │ ├── components/
│ │ │ │ ├── about-status-bar.js
│ │ │ │ ├── about-view.js
│ │ │ │ ├── atom-logo.js
│ │ │ │ └── update-view.js
│ │ │ ├── etch-component.js
│ │ │ ├── main.js
│ │ │ └── update-manager.js
│ │ ├── package.json
│ │ ├── spec/
│ │ │ ├── about-spec.js
│ │ │ ├── about-status-bar-spec.js
│ │ │ ├── helpers/
│ │ │ │ └── async-spec-helpers.js
│ │ │ ├── mocks/
│ │ │ │ └── updater.js
│ │ │ ├── update-manager-spec.js
│ │ │ └── update-view-spec.js
│ │ └── styles/
│ │ ├── about.less
│ │ └── variables.less
│ ├── atom-dark-syntax/
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.less
│ │ ├── package.json
│ │ └── styles/
│ │ ├── editor.less
│ │ ├── syntax/
│ │ │ ├── base.less
│ │ │ ├── css.less
│ │ │ └── html.less
│ │ ├── syntax-legacy/
│ │ │ └── _base.less
│ │ └── syntax-variables.less
│ ├── atom-dark-ui/
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.less
│ │ ├── package.json
│ │ └── styles/
│ │ ├── atom.less
│ │ ├── buttons.less
│ │ ├── dropdowns.less
│ │ ├── editor.less
│ │ ├── git.less
│ │ ├── lists.less
│ │ ├── messages.less
│ │ ├── nav.less
│ │ ├── overlays.less
│ │ ├── panels.less
│ │ ├── panes.less
│ │ ├── progress.less
│ │ ├── sites.less
│ │ ├── tabs.less
│ │ ├── text.less
│ │ ├── tooltips.less
│ │ ├── tree-view.less
│ │ ├── ui-mixins.less
│ │ ├── ui-variables.less
│ │ └── utilities.less
│ ├── atom-light-syntax/
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.less
│ │ ├── package.json
│ │ └── styles/
│ │ ├── editor.less
│ │ ├── syntax/
│ │ │ ├── base.less
│ │ │ └── css.less
│ │ ├── syntax-legacy/
│ │ │ └── _base.less
│ │ └── syntax-variables.less
│ ├── atom-light-ui/
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.less
│ │ ├── package.json
│ │ └── styles/
│ │ ├── atom.less
│ │ ├── buttons.less
│ │ ├── editor.less
│ │ ├── git.less
│ │ ├── lists.less
│ │ ├── messages.less
│ │ ├── overlays.less
│ │ ├── panels.less
│ │ ├── panes.less
│ │ ├── progress.less
│ │ ├── sites.less
│ │ ├── tabs.less
│ │ ├── text.less
│ │ ├── tooltips.less
│ │ ├── tree-view.less
│ │ ├── ui-mixins.less
│ │ ├── ui-variables.less
│ │ └── utilities.less
│ ├── autoflow/
│ │ ├── .coffeelintignore
│ │ ├── .gitignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── coffeelint.json
│ │ ├── keymaps/
│ │ │ └── autoflow.cson
│ │ ├── lib/
│ │ │ └── autoflow.coffee
│ │ ├── menus/
│ │ │ └── autoflow.cson
│ │ ├── package.json
│ │ └── spec/
│ │ └── autoflow-spec.coffee
│ ├── base16-tomorrow-dark-theme/
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.less
│ │ ├── package.json
│ │ └── styles/
│ │ ├── colors.less
│ │ ├── editor.less
│ │ ├── syntax/
│ │ │ ├── base.less
│ │ │ └── css.less
│ │ ├── syntax-legacy/
│ │ │ ├── _base.less
│ │ │ ├── cs.less
│ │ │ └── json.less
│ │ └── syntax-variables.less
│ ├── base16-tomorrow-light-theme/
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.less
│ │ ├── package.json
│ │ └── styles/
│ │ ├── colors.less
│ │ ├── editor.less
│ │ ├── syntax/
│ │ │ ├── base.less
│ │ │ └── css.less
│ │ ├── syntax-legacy/
│ │ │ ├── _base.less
│ │ │ ├── cs.less
│ │ │ └── json.less
│ │ └── syntax-variables.less
│ ├── dalek/
│ │ ├── .gitignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── dalek.js
│ │ │ └── main.js
│ │ ├── package.json
│ │ └── test/
│ │ ├── dalek.test.js
│ │ └── runner.js
│ ├── deprecation-cop/
│ │ ├── .coffeelintignore
│ │ ├── .gitignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── coffeelint.json
│ │ ├── lib/
│ │ │ ├── deprecation-cop-status-bar-view.coffee
│ │ │ ├── deprecation-cop-view.js
│ │ │ └── main.js
│ │ ├── package.json
│ │ ├── spec/
│ │ │ ├── deprecation-cop-spec.coffee
│ │ │ ├── deprecation-cop-status-bar-view-spec.coffee
│ │ │ └── deprecation-cop-view-spec.coffee
│ │ └── styles/
│ │ └── deprecation-cop.less
│ ├── dev-live-reload/
│ │ ├── .gitignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── keymaps/
│ │ │ └── dev-live-reload.cson
│ │ ├── lib/
│ │ │ ├── base-theme-watcher.js
│ │ │ ├── main.js
│ │ │ ├── package-watcher.js
│ │ │ ├── ui-watcher.js
│ │ │ └── watcher.js
│ │ ├── menus/
│ │ │ └── dev-live-reload.cson
│ │ ├── package.json
│ │ └── spec/
│ │ ├── async-spec-helpers.js
│ │ ├── dev-live-reload-spec.js
│ │ ├── fixtures/
│ │ │ ├── package-with-index/
│ │ │ │ └── index.coffee
│ │ │ ├── package-with-styles-folder/
│ │ │ │ ├── package.cson
│ │ │ │ └── styles/
│ │ │ │ ├── 3.css
│ │ │ │ └── sub/
│ │ │ │ ├── 1.css
│ │ │ │ └── 2.less
│ │ │ ├── package-with-styles-manifest/
│ │ │ │ ├── package.cson
│ │ │ │ └── styles/
│ │ │ │ ├── 1.css
│ │ │ │ ├── 2.less
│ │ │ │ └── 3.css
│ │ │ ├── packages/
│ │ │ │ ├── index.less
│ │ │ │ ├── package.cson
│ │ │ │ ├── package.json
│ │ │ │ └── styles/
│ │ │ │ ├── 1.css
│ │ │ │ ├── 2.less
│ │ │ │ ├── 3.css
│ │ │ │ ├── first.less
│ │ │ │ ├── last.less
│ │ │ │ ├── second.less
│ │ │ │ └── ui-variables.less
│ │ │ ├── static/
│ │ │ │ └── atom.less
│ │ │ ├── theme-with-index-less/
│ │ │ │ ├── index.less
│ │ │ │ └── package.json
│ │ │ ├── theme-with-multiple-imported-files/
│ │ │ │ ├── index.less
│ │ │ │ ├── package.json
│ │ │ │ └── styles/
│ │ │ │ ├── first.less
│ │ │ │ ├── last.less
│ │ │ │ ├── second.less
│ │ │ │ └── ui-variables.less
│ │ │ ├── theme-with-package-file/
│ │ │ │ ├── package.json
│ │ │ │ └── styles/
│ │ │ │ ├── first.css
│ │ │ │ ├── last.css
│ │ │ │ └── second.less
│ │ │ ├── theme-with-syntax-variables/
│ │ │ │ ├── package.json
│ │ │ │ └── styles/
│ │ │ │ └── editor.less
│ │ │ └── theme-with-ui-variables/
│ │ │ ├── package.json
│ │ │ └── styles/
│ │ │ ├── editor.less
│ │ │ └── ui-variables.less
│ │ └── ui-watcher-spec.js
│ ├── exception-reporting/
│ │ ├── .gitignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── main.js
│ │ │ └── reporter.js
│ │ ├── package.json
│ │ └── spec/
│ │ └── reporter-spec.js
│ ├── git-diff/
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── keymaps/
│ │ │ └── git-diff.cson
│ │ ├── lib/
│ │ │ ├── diff-list-view.js
│ │ │ ├── git-diff-view.js
│ │ │ ├── helpers.js
│ │ │ └── main.js
│ │ ├── menus/
│ │ │ └── git-diff.cson
│ │ ├── package.json
│ │ ├── spec/
│ │ │ ├── diff-list-view-spec.js
│ │ │ ├── fixtures/
│ │ │ │ └── working-dir/
│ │ │ │ ├── git.git/
│ │ │ │ │ ├── HEAD
│ │ │ │ │ ├── config
│ │ │ │ │ ├── index
│ │ │ │ │ ├── objects/
│ │ │ │ │ │ ├── 06/
│ │ │ │ │ │ │ └── 5a272b55ec2ee84530dffd60b6869f7bf5d99c
│ │ │ │ │ │ ├── 3e/
│ │ │ │ │ │ │ └── 715502b971d4f8282d1e05a8ccfad6f7037910
│ │ │ │ │ │ ├── 8e/
│ │ │ │ │ │ │ └── ab2e81eb8dea81ad08694c7b30ae165af89c8e
│ │ │ │ │ │ ├── 90/
│ │ │ │ │ │ │ └── 820108a054b6f49c0d21031313244b6f7d69dc
│ │ │ │ │ │ ├── e7/
│ │ │ │ │ │ │ └── fd5b055dcdaa93ad8f9d63ca8db5330537105f
│ │ │ │ │ │ ├── f1/
│ │ │ │ │ │ │ └── 4149b7b38a0a972c46557877caff6c9fe76476
│ │ │ │ │ │ └── fb/
│ │ │ │ │ │ └── 33b0b43b20b7f9de1bca79e192fa2e30dbeb6b
│ │ │ │ │ └── refs/
│ │ │ │ │ └── heads/
│ │ │ │ │ └── master
│ │ │ │ ├── sample.js
│ │ │ │ └── sample.txt
│ │ │ ├── git-diff-spec.js
│ │ │ ├── git-diff-subfolder-spec.js
│ │ │ └── init-spec.js
│ │ └── styles/
│ │ └── git-diff.less
│ ├── go-to-line/
│ │ ├── .gitignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── keymaps/
│ │ │ └── go-to-line.cson
│ │ ├── lib/
│ │ │ └── go-to-line-view.js
│ │ ├── menus/
│ │ │ └── go-to-line.cson
│ │ ├── package.json
│ │ └── spec/
│ │ ├── fixtures/
│ │ │ └── sample.js
│ │ └── go-to-line-spec.js
│ ├── grammar-selector/
│ │ ├── README.md
│ │ ├── keymaps/
│ │ │ └── grammar-selector.cson
│ │ ├── lib/
│ │ │ ├── grammar-list-view.js
│ │ │ ├── grammar-status-view.js
│ │ │ └── main.js
│ │ ├── menus/
│ │ │ └── grammar-selector.cson
│ │ ├── package.json
│ │ ├── spec/
│ │ │ ├── fixtures/
│ │ │ │ └── language-with-no-name/
│ │ │ │ ├── grammars/
│ │ │ │ │ └── a.json
│ │ │ │ └── package.json
│ │ │ └── grammar-selector-spec.js
│ │ └── styles/
│ │ └── grammar-selector.less
│ ├── incompatible-packages/
│ │ ├── .gitignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── incompatible-packages-component.js
│ │ │ ├── main.js
│ │ │ ├── status-icon-component.js
│ │ │ └── view-uri.js
│ │ ├── package.json
│ │ ├── spec/
│ │ │ ├── fixtures/
│ │ │ │ └── incompatible-package/
│ │ │ │ ├── bad.js
│ │ │ │ └── package.json
│ │ │ ├── incompatible-packages-component-spec.js
│ │ │ └── incompatible-packages-spec.js
│ │ └── styles/
│ │ └── incompatible-packages.less
│ ├── language-rust-bundled/
│ │ ├── README.md
│ │ ├── grammars/
│ │ │ └── tree-sitter-rust.cson
│ │ ├── lib/
│ │ │ └── main.js
│ │ ├── package.json
│ │ └── settings/
│ │ └── rust.cson
│ ├── line-ending-selector/
│ │ ├── .gitattributes
│ │ ├── .gitignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── helpers.js
│ │ │ ├── main.js
│ │ │ ├── selector.js
│ │ │ └── status-bar-item.js
│ │ ├── package.json
│ │ └── spec/
│ │ ├── fixtures/
│ │ │ ├── mixed-endings.md
│ │ │ ├── unix-endings.md
│ │ │ └── windows-endings.md
│ │ └── line-ending-selector-spec.js
│ ├── link/
│ │ ├── .gitignore
│ │ ├── .npmignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── keymaps/
│ │ │ └── links.cson
│ │ ├── lib/
│ │ │ └── link.js
│ │ ├── menus/
│ │ │ └── link.cson
│ │ ├── package.json
│ │ └── spec/
│ │ └── link-spec.js
│ ├── one-dark-syntax/
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.less
│ │ ├── package.json
│ │ └── styles/
│ │ ├── colors.less
│ │ ├── editor.less
│ │ ├── syntax/
│ │ │ ├── base.less
│ │ │ └── css.less
│ │ ├── syntax-legacy/
│ │ │ ├── _base.less
│ │ │ ├── c.less
│ │ │ ├── cpp.less
│ │ │ ├── cs.less
│ │ │ ├── css.less
│ │ │ ├── elixir.less
│ │ │ ├── gfm.less
│ │ │ ├── go.less
│ │ │ ├── ini.less
│ │ │ ├── java.less
│ │ │ ├── javascript.less
│ │ │ ├── json.less
│ │ │ ├── ng.less
│ │ │ ├── php.less
│ │ │ ├── python.less
│ │ │ ├── ruby.less
│ │ │ └── typescript.less
│ │ └── syntax-variables.less
│ ├── one-dark-ui/
│ │ ├── .gitignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.less
│ │ ├── lib/
│ │ │ └── main.js
│ │ ├── package.json
│ │ ├── spec/
│ │ │ └── theme-spec.js
│ │ └── styles/
│ │ ├── atom.less
│ │ ├── badges.less
│ │ ├── buttons.less
│ │ ├── config.less
│ │ ├── core.less
│ │ ├── docks.less
│ │ ├── dropdowns.less
│ │ ├── editor.less
│ │ ├── git.less
│ │ ├── inputs.less
│ │ ├── key-binding.less
│ │ ├── lists.less
│ │ ├── messages.less
│ │ ├── modal.less
│ │ ├── nav.less
│ │ ├── notifications.less
│ │ ├── packages.less
│ │ ├── panels.less
│ │ ├── panes.less
│ │ ├── progress.less
│ │ ├── settings.less
│ │ ├── sites.less
│ │ ├── status-bar.less
│ │ ├── tabs.less
│ │ ├── text.less
│ │ ├── title-bar.less
│ │ ├── tooltips.less
│ │ ├── tree-view.less
│ │ ├── ui-mixins.less
│ │ ├── ui-variables-custom.less
│ │ └── ui-variables.less
│ ├── one-light-syntax/
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.less
│ │ ├── package.json
│ │ └── styles/
│ │ ├── colors.less
│ │ ├── editor.less
│ │ ├── syntax/
│ │ │ ├── base.less
│ │ │ └── css.less
│ │ ├── syntax-legacy/
│ │ │ ├── _base.less
│ │ │ ├── c.less
│ │ │ ├── cpp.less
│ │ │ ├── cs.less
│ │ │ ├── css.less
│ │ │ ├── elixir.less
│ │ │ ├── gfm.less
│ │ │ ├── go.less
│ │ │ ├── ini.less
│ │ │ ├── java.less
│ │ │ ├── javascript.less
│ │ │ ├── json.less
│ │ │ ├── ng.less
│ │ │ ├── php.less
│ │ │ ├── python.less
│ │ │ ├── ruby.less
│ │ │ └── typescript.less
│ │ └── syntax-variables.less
│ ├── one-light-ui/
│ │ ├── .gitignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.less
│ │ ├── lib/
│ │ │ └── main.js
│ │ ├── package.json
│ │ ├── spec/
│ │ │ └── theme-spec.js
│ │ └── styles/
│ │ ├── atom.less
│ │ ├── badges.less
│ │ ├── buttons.less
│ │ ├── config.less
│ │ ├── core.less
│ │ ├── docks.less
│ │ ├── dropdowns.less
│ │ ├── editor.less
│ │ ├── git.less
│ │ ├── inputs.less
│ │ ├── key-binding.less
│ │ ├── lists.less
│ │ ├── messages.less
│ │ ├── modal.less
│ │ ├── nav.less
│ │ ├── notifications.less
│ │ ├── packages.less
│ │ ├── panels.less
│ │ ├── panes.less
│ │ ├── progress.less
│ │ ├── settings.less
│ │ ├── sites.less
│ │ ├── status-bar.less
│ │ ├── tabs.less
│ │ ├── text.less
│ │ ├── title-bar.less
│ │ ├── tooltips.less
│ │ ├── tree-view.less
│ │ ├── ui-mixins.less
│ │ ├── ui-variables-custom.less
│ │ └── ui-variables.less
│ ├── solarized-dark-syntax/
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.less
│ │ ├── package.json
│ │ └── styles/
│ │ ├── colors.less
│ │ ├── editor.less
│ │ ├── syntax/
│ │ │ ├── base.less
│ │ │ ├── css.less
│ │ │ ├── html.less
│ │ │ └── js.less
│ │ ├── syntax-legacy/
│ │ │ ├── _base.less
│ │ │ ├── c.less
│ │ │ ├── coffee.less
│ │ │ ├── css.less
│ │ │ ├── go.less
│ │ │ ├── java.less
│ │ │ ├── javascript.less
│ │ │ ├── markdown.less
│ │ │ ├── markup.less
│ │ │ ├── php.less
│ │ │ ├── python.less
│ │ │ ├── ruby.less
│ │ │ ├── scala.less
│ │ │ └── typescript.less
│ │ └── syntax-variables.less
│ ├── solarized-light-syntax/
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.less
│ │ ├── package.json
│ │ └── styles/
│ │ ├── colors.less
│ │ ├── editor.less
│ │ ├── syntax/
│ │ │ ├── base.less
│ │ │ ├── css.less
│ │ │ ├── html.less
│ │ │ └── js.less
│ │ ├── syntax-legacy/
│ │ │ ├── _base.less
│ │ │ ├── c.less
│ │ │ ├── coffee.less
│ │ │ ├── css.less
│ │ │ ├── go.less
│ │ │ ├── java.less
│ │ │ ├── javascript.less
│ │ │ ├── markdown.less
│ │ │ ├── markup.less
│ │ │ ├── php.less
│ │ │ ├── python.less
│ │ │ ├── ruby.less
│ │ │ ├── scala.less
│ │ │ └── typescript.less
│ │ └── syntax-variables.less
│ ├── update-package-dependencies/
│ │ ├── .gitignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── update-package-dependencies-status-view.js
│ │ │ └── update-package-dependencies.js
│ │ ├── package.json
│ │ ├── spec/
│ │ │ └── update-package-dependencies-spec.js
│ │ └── styles/
│ │ └── update-package-dependencies.less
│ └── welcome/
│ ├── .gitignore
│ ├── LICENSE.md
│ ├── README.md
│ ├── docs/
│ │ └── events.md
│ ├── lib/
│ │ ├── consent-view.js
│ │ ├── guide-view.js
│ │ ├── main.js
│ │ ├── reporter-proxy.js
│ │ ├── welcome-package.js
│ │ └── welcome-view.js
│ ├── menus/
│ │ └── welcome.cson
│ ├── package.json
│ ├── styles/
│ │ └── welcome.less
│ └── test/
│ ├── helpers.js
│ └── welcome.test.js
├── resources/
│ ├── app-icons/
│ │ ├── beta/
│ │ │ └── atom.icns
│ │ ├── dev/
│ │ │ └── atom.icns
│ │ ├── nightly/
│ │ │ └── atom.icns
│ │ └── stable/
│ │ └── atom.icns
│ ├── linux/
│ │ ├── atom.desktop.in
│ │ ├── atom.policy
│ │ ├── debian/
│ │ │ └── control.in
│ │ ├── desktopenviroment/
│ │ │ └── cinnamon/
│ │ │ └── atom.nemo_action
│ │ └── redhat/
│ │ └── atom.spec.in
│ ├── mac/
│ │ ├── atom-Info.plist
│ │ ├── entitlements.plist
│ │ ├── file.icns
│ │ └── helper-Info.plist
│ └── win/
│ ├── apm.cmd
│ ├── apm.sh
│ ├── atom.cmd
│ ├── atom.js
│ ├── atom.sh
│ └── atom.visualElementsManifest.xml
├── script/
│ ├── bootstrap
│ ├── bootstrap.cmd
│ ├── build
│ ├── build.cmd
│ ├── cibuild
│ ├── clean
│ ├── clean.cmd
│ ├── config.js
│ ├── deprecated-packages.json
│ ├── lib/
│ │ ├── backup-node-modules.js
│ │ ├── check-chromedriver-version.js
│ │ ├── clean-caches.js
│ │ ├── clean-dependencies.js
│ │ ├── clean-output-directory.js
│ │ ├── code-sign-on-mac.js
│ │ ├── code-sign-on-windows.js
│ │ ├── compress-artifacts.js
│ │ ├── copy-assets.js
│ │ ├── create-debian-package.js
│ │ ├── create-rpm-package.js
│ │ ├── create-windows-installer.js
│ │ ├── delete-msbuild-from-path.js
│ │ ├── dependencies-fingerprint.js
│ │ ├── download-file-from-github.js
│ │ ├── dump-symbols.js
│ │ ├── expand-glob-paths.js
│ │ ├── generate-api-docs.js
│ │ ├── generate-metadata.js
│ │ ├── generate-module-cache.js
│ │ ├── generate-startup-snapshot.js
│ │ ├── get-license-text.js
│ │ ├── handle-tilde.js
│ │ ├── include-path-in-packaged-app.js
│ │ ├── install-apm.js
│ │ ├── install-application.js
│ │ ├── install-script-dependencies.js
│ │ ├── kill-running-atom-instances.js
│ │ ├── lint-coffee-script-paths.js
│ │ ├── lint-java-script-paths.js
│ │ ├── lint-less-paths.js
│ │ ├── notarize-on-mac.js
│ │ ├── package-application.js
│ │ ├── prebuild-less-cache.js
│ │ ├── read-files.js
│ │ ├── run-apm-install.js
│ │ ├── spawn-sync.js
│ │ ├── test-sign-on-mac.js
│ │ ├── transpile-babel-paths.js
│ │ ├── transpile-coffee-script-paths.js
│ │ ├── transpile-cson-paths.js
│ │ ├── transpile-packages-with-custom-transpiler-paths.js
│ │ ├── transpile-peg-js-paths.js
│ │ ├── update-dependency/
│ │ │ ├── fetch-outdated-dependencies.js
│ │ │ ├── git.js
│ │ │ ├── index.js
│ │ │ ├── main.js
│ │ │ ├── pull-request.js
│ │ │ ├── spec/
│ │ │ │ ├── fetch-outdated-dependencies-spec.js
│ │ │ │ ├── fixtures/
│ │ │ │ │ ├── create-pr-response.json
│ │ │ │ │ ├── latest-package.json
│ │ │ │ │ └── search-response.json
│ │ │ │ ├── git-spec.js
│ │ │ │ ├── helpers.js
│ │ │ │ ├── pull-request-spec.js
│ │ │ │ └── util-spec.js
│ │ │ └── util.js
│ │ └── verify-machine-requirements.js
│ ├── license-overrides.js
│ ├── lint
│ ├── lint.cmd
│ ├── package.json
│ ├── postprocess-junit-results
│ ├── postprocess-junit-results.cmd
│ ├── redownload-electron-bins.js
│ ├── test
│ ├── test.cmd
│ ├── update-server/
│ │ ├── README.md
│ │ ├── package.json
│ │ └── run-server.js
│ ├── verify-snapshot-script
│ └── vsts/
│ ├── README.md
│ ├── get-release-version.js
│ ├── lib/
│ │ ├── release-notes.js
│ │ ├── upload-linux-packages.js
│ │ └── upload-to-azure-blob.js
│ ├── lint.yml
│ ├── nightly-release.yml
│ ├── package.json
│ ├── platforms/
│ │ ├── linux.yml
│ │ ├── macos.yml
│ │ ├── templates/
│ │ │ ├── bootstrap.yml
│ │ │ ├── build.yml
│ │ │ ├── cache.yml
│ │ │ ├── download-unzip.yml
│ │ │ ├── get-release-version.yml
│ │ │ ├── preparation.yml
│ │ │ ├── publish.yml
│ │ │ └── test.yml
│ │ └── windows.yml
│ ├── pull-requests.yml
│ ├── release-branch-build.yml
│ ├── upload-artifacts.js
│ ├── upload-crash-reports.js
│ ├── x64-cache-key
│ └── x86-cache-key
├── spec/
│ ├── application-delegate-spec.js
│ ├── async-spec-helpers.js
│ ├── atom-environment-spec.js
│ ├── atom-paths-spec.js
│ ├── atom-protocol-handler-spec.js
│ ├── atom-reporter.coffee
│ ├── auto-update-manager-spec.js
│ ├── babel-spec.js
│ ├── buffered-node-process-spec.js
│ ├── buffered-process-spec.js
│ ├── clipboard-spec.js
│ ├── command-installer-spec.js
│ ├── command-registry-spec.js
│ ├── compile-cache-spec.coffee
│ ├── config-file-spec.js
│ ├── config-spec.js
│ ├── context-menu-manager-spec.js
│ ├── decoration-manager-spec.js
│ ├── default-directory-provider-spec.js
│ ├── default-directory-searcher-spec.js
│ ├── deserializer-manager-spec.js
│ ├── dock-spec.js
│ ├── file-system-blob-store-spec.js
│ ├── fixtures/
│ │ ├── babel/
│ │ │ ├── babel-comment.js
│ │ │ ├── babel-double-quotes.js
│ │ │ ├── babel-single-quotes.js
│ │ │ ├── flow-comment.js
│ │ │ ├── flow-slash-comment.js
│ │ │ └── invalid.js
│ │ ├── coffee.coffee
│ │ ├── cson.cson
│ │ ├── css.css
│ │ ├── dir/
│ │ │ ├── a
│ │ │ ├── a-dir/
│ │ │ │ └── oh-git
│ │ │ ├── b
│ │ │ ├── c
│ │ │ ├── file-detected-as-binary
│ │ │ ├── file-with-newline-literal
│ │ │ ├── file-with-unicode
│ │ │ └── file1
│ │ ├── git/
│ │ │ ├── ignore.git/
│ │ │ │ ├── HEAD
│ │ │ │ ├── config
│ │ │ │ ├── index
│ │ │ │ ├── info/
│ │ │ │ │ └── exclude
│ │ │ │ ├── objects/
│ │ │ │ │ ├── 65/
│ │ │ │ │ │ └── a457425a679cbe9adf0d2741785d3ceabb44a7
│ │ │ │ │ ├── e6/
│ │ │ │ │ │ └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
│ │ │ │ │ └── ef/
│ │ │ │ │ └── 046e9eecaa5255ea5e9817132d4001724d6ae1
│ │ │ │ └── refs/
│ │ │ │ └── heads/
│ │ │ │ └── master
│ │ │ ├── master.git/
│ │ │ │ ├── HEAD
│ │ │ │ ├── config
│ │ │ │ ├── index
│ │ │ │ ├── objects/
│ │ │ │ │ ├── 65/
│ │ │ │ │ │ └── a457425a679cbe9adf0d2741785d3ceabb44a7
│ │ │ │ │ ├── e6/
│ │ │ │ │ │ └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
│ │ │ │ │ └── ef/
│ │ │ │ │ └── 046e9eecaa5255ea5e9817132d4001724d6ae1
│ │ │ │ ├── refs/
│ │ │ │ │ └── heads/
│ │ │ │ │ └── master
│ │ │ │ └── worktrees/
│ │ │ │ └── worktree-dir/
│ │ │ │ ├── HEAD
│ │ │ │ ├── commondir
│ │ │ │ └── index
│ │ │ ├── repo-with-submodules/
│ │ │ │ ├── .gitmodules
│ │ │ │ ├── README
│ │ │ │ ├── You-Dont-Need-jQuery/
│ │ │ │ │ ├── .babelrc
│ │ │ │ │ ├── .eslintrc
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── .travis.yml
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── README-es.md
│ │ │ │ │ ├── README-id.md
│ │ │ │ │ ├── README-it.md
│ │ │ │ │ ├── README-my.md
│ │ │ │ │ ├── README-ru.md
│ │ │ │ │ ├── README-tr.md
│ │ │ │ │ ├── README-vi.md
│ │ │ │ │ ├── README.ko-KR.md
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── README.pt-BR.md
│ │ │ │ │ ├── README.zh-CN.md
│ │ │ │ │ ├── git.git
│ │ │ │ │ ├── karma.conf.js
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── test/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── css.spec.js
│ │ │ │ │ ├── dom.spec.js
│ │ │ │ │ ├── query.spec.js
│ │ │ │ │ └── utilities.spec.js
│ │ │ │ ├── git.git/
│ │ │ │ │ ├── COMMIT_EDITMSG
│ │ │ │ │ ├── HEAD
│ │ │ │ │ ├── config
│ │ │ │ │ ├── description
│ │ │ │ │ ├── hooks/
│ │ │ │ │ │ ├── applypatch-msg.sample
│ │ │ │ │ │ ├── commit-msg.sample
│ │ │ │ │ │ ├── post-update.sample
│ │ │ │ │ │ ├── pre-applypatch.sample
│ │ │ │ │ │ ├── pre-commit.sample
│ │ │ │ │ │ ├── pre-push.sample
│ │ │ │ │ │ ├── pre-rebase.sample
│ │ │ │ │ │ ├── prepare-commit-msg.sample
│ │ │ │ │ │ └── update.sample
│ │ │ │ │ ├── index
│ │ │ │ │ ├── info/
│ │ │ │ │ │ └── exclude
│ │ │ │ │ ├── logs/
│ │ │ │ │ │ ├── HEAD
│ │ │ │ │ │ └── refs/
│ │ │ │ │ │ └── heads/
│ │ │ │ │ │ └── master
│ │ │ │ │ ├── modules/
│ │ │ │ │ │ ├── You-Dont-Need-jQuery/
│ │ │ │ │ │ │ ├── COMMIT_EDITMSG
│ │ │ │ │ │ │ ├── HEAD
│ │ │ │ │ │ │ ├── ORIG_HEAD
│ │ │ │ │ │ │ ├── config
│ │ │ │ │ │ │ ├── description
│ │ │ │ │ │ │ ├── gitdir
│ │ │ │ │ │ │ ├── hooks/
│ │ │ │ │ │ │ │ ├── applypatch-msg.sample
│ │ │ │ │ │ │ │ ├── commit-msg.sample
│ │ │ │ │ │ │ │ ├── post-update.sample
│ │ │ │ │ │ │ │ ├── pre-applypatch.sample
│ │ │ │ │ │ │ │ ├── pre-commit.sample
│ │ │ │ │ │ │ │ ├── pre-push.sample
│ │ │ │ │ │ │ │ ├── pre-rebase.sample
│ │ │ │ │ │ │ │ ├── prepare-commit-msg.sample
│ │ │ │ │ │ │ │ └── update.sample
│ │ │ │ │ │ │ ├── index
│ │ │ │ │ │ │ ├── info/
│ │ │ │ │ │ │ │ └── exclude
│ │ │ │ │ │ │ ├── logs/
│ │ │ │ │ │ │ │ ├── HEAD
│ │ │ │ │ │ │ │ └── refs/
│ │ │ │ │ │ │ │ ├── heads/
│ │ │ │ │ │ │ │ │ └── master
│ │ │ │ │ │ │ │ └── remotes/
│ │ │ │ │ │ │ │ └── origin/
│ │ │ │ │ │ │ │ └── HEAD
│ │ │ │ │ │ │ ├── objects/
│ │ │ │ │ │ │ │ ├── a7/
│ │ │ │ │ │ │ │ │ └── 8b35a896b890f0a2a4f1f924c5739776415250
│ │ │ │ │ │ │ │ ├── ae/
│ │ │ │ │ │ │ │ │ └── 897dce6e0590f08dddfe9a5152e237e955ca57
│ │ │ │ │ │ │ │ ├── be/
│ │ │ │ │ │ │ │ │ └── 8ed228c0a080145d28ed625a5f487caae6a3f9
│ │ │ │ │ │ │ │ └── pack/
│ │ │ │ │ │ │ │ ├── pack-d38b3bc339acd655e8dae9c0dcea8bb2ec174d16.idx
│ │ │ │ │ │ │ │ └── pack-d38b3bc339acd655e8dae9c0dcea8bb2ec174d16.pack
│ │ │ │ │ │ │ ├── packed-refs
│ │ │ │ │ │ │ └── refs/
│ │ │ │ │ │ │ ├── heads/
│ │ │ │ │ │ │ │ └── master
│ │ │ │ │ │ │ └── remotes/
│ │ │ │ │ │ │ └── origin/
│ │ │ │ │ │ │ └── HEAD
│ │ │ │ │ │ └── jstips/
│ │ │ │ │ │ ├── COMMIT_EDITMSG
│ │ │ │ │ │ ├── HEAD
│ │ │ │ │ │ ├── ORIG_HEAD
│ │ │ │ │ │ ├── config
│ │ │ │ │ │ ├── description
│ │ │ │ │ │ ├── gitdir
│ │ │ │ │ │ ├── hooks/
│ │ │ │ │ │ │ ├── applypatch-msg.sample
│ │ │ │ │ │ │ ├── commit-msg.sample
│ │ │ │ │ │ │ ├── post-update.sample
│ │ │ │ │ │ │ ├── pre-applypatch.sample
│ │ │ │ │ │ │ ├── pre-commit.sample
│ │ │ │ │ │ │ ├── pre-push.sample
│ │ │ │ │ │ │ ├── pre-rebase.sample
│ │ │ │ │ │ │ ├── prepare-commit-msg.sample
│ │ │ │ │ │ │ └── update.sample
│ │ │ │ │ │ ├── index
│ │ │ │ │ │ ├── info/
│ │ │ │ │ │ │ └── exclude
│ │ │ │ │ │ ├── logs/
│ │ │ │ │ │ │ ├── HEAD
│ │ │ │ │ │ │ └── refs/
│ │ │ │ │ │ │ ├── heads/
│ │ │ │ │ │ │ │ ├── master
│ │ │ │ │ │ │ │ └── test
│ │ │ │ │ │ │ └── remotes/
│ │ │ │ │ │ │ └── origin/
│ │ │ │ │ │ │ └── HEAD
│ │ │ │ │ │ ├── objects/
│ │ │ │ │ │ │ ├── 05/
│ │ │ │ │ │ │ │ └── 25ef667328cb1f86b1ddf523db4a064e1590fa
│ │ │ │ │ │ │ ├── 1a/
│ │ │ │ │ │ │ │ └── dd860234dad4a8bf59340363e9c88bb0457cb7
│ │ │ │ │ │ │ ├── 5b/
│ │ │ │ │ │ │ │ └── 35953562dbb4f2debe88fcc9ac1805064e1e5a
│ │ │ │ │ │ │ └── pack/
│ │ │ │ │ │ │ ├── pack-e568a55e02b6b7b75582924204669e4f3ed5276f.idx
│ │ │ │ │ │ │ └── pack-e568a55e02b6b7b75582924204669e4f3ed5276f.pack
│ │ │ │ │ │ ├── packed-refs
│ │ │ │ │ │ └── refs/
│ │ │ │ │ │ ├── heads/
│ │ │ │ │ │ │ ├── master
│ │ │ │ │ │ │ └── test
│ │ │ │ │ │ └── remotes/
│ │ │ │ │ │ └── origin/
│ │ │ │ │ │ └── HEAD
│ │ │ │ │ ├── objects/
│ │ │ │ │ │ ├── 3e/
│ │ │ │ │ │ │ └── 2fe2f8226faab789f70d6d8a7231e4f2bd54df
│ │ │ │ │ │ ├── 40/
│ │ │ │ │ │ │ └── f4e79926a85134d4c905d04e70573b6616f3bc
│ │ │ │ │ │ ├── 50/
│ │ │ │ │ │ │ └── b89367d8f0acd312ef5aa012eac20a75c91351
│ │ │ │ │ │ ├── 54/
│ │ │ │ │ │ │ └── 3b9bebdc6bd5c4b22136034a95dd097a57d3dd
│ │ │ │ │ │ ├── d2/
│ │ │ │ │ │ │ └── b0ad9cbc6f6c4372e8956e5cc5af771b2342e5
│ │ │ │ │ │ ├── d3/
│ │ │ │ │ │ │ └── e073baf592c56614c68ead9e2cd0a3880140cd
│ │ │ │ │ │ └── e6/
│ │ │ │ │ │ └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
│ │ │ │ │ └── refs/
│ │ │ │ │ ├── heads/
│ │ │ │ │ │ └── master
│ │ │ │ │ └── remotes/
│ │ │ │ │ └── origin/
│ │ │ │ │ └── master
│ │ │ │ └── jstips/
│ │ │ │ ├── CONTRIBUTING.md
│ │ │ │ ├── README.md
│ │ │ │ ├── git.git
│ │ │ │ └── resources/
│ │ │ │ └── log.js
│ │ │ └── working-dir/
│ │ │ ├── .gitignore
│ │ │ ├── a.txt
│ │ │ └── git.git/
│ │ │ ├── HEAD
│ │ │ ├── config
│ │ │ ├── index
│ │ │ ├── objects/
│ │ │ │ ├── 06/
│ │ │ │ │ └── 15f9a45968b3515e0a202530ef9f61aba26b6c
│ │ │ │ ├── 16/
│ │ │ │ │ └── 735fb793d7b038818219c4b8c6295346e20eef
│ │ │ │ ├── 52/
│ │ │ │ │ └── f56457b6fca045ce41bb9d32e6ca79d23192af
│ │ │ │ ├── 5b/
│ │ │ │ │ └── 24ab4c3baadf534242b1acc220c8fa051b9b20
│ │ │ │ ├── 65/
│ │ │ │ │ └── a457425a679cbe9adf0d2741785d3ceabb44a7
│ │ │ │ ├── 66/
│ │ │ │ │ └── dc9051da651c15d98d017a88658263cab28f02
│ │ │ │ ├── 8a/
│ │ │ │ │ └── 9c86f1cb1f14b8f436eb91f4b052c8802ca99e
│ │ │ │ ├── e6/
│ │ │ │ │ └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
│ │ │ │ ├── ec/
│ │ │ │ │ └── 5e386905ff2d36e291086a1207f2585aaa8920
│ │ │ │ ├── ef/
│ │ │ │ │ └── 046e9eecaa5255ea5e9817132d4001724d6ae1
│ │ │ │ ├── fe/
│ │ │ │ │ └── bde178cdf35e9df6279d87aa27590c6d92e354
│ │ │ │ └── ff/
│ │ │ │ └── c8218bd2240a0cb92f6f02548d45784428349b
│ │ │ └── refs/
│ │ │ └── heads/
│ │ │ └── master
│ │ ├── indentation/
│ │ │ ├── classes.js
│ │ │ ├── expressions.js
│ │ │ ├── function_call.js
│ │ │ ├── if_then_else.js
│ │ │ ├── jsx.jsx
│ │ │ ├── objects_and_array.js
│ │ │ ├── switch.js
│ │ │ └── while.js
│ │ ├── lorem.txt
│ │ ├── module-cache/
│ │ │ └── file.json
│ │ ├── native-cache/
│ │ │ ├── file-1.js
│ │ │ ├── file-2.js
│ │ │ ├── file-3.js
│ │ │ └── file-4.js
│ │ ├── packages/
│ │ │ ├── folder/
│ │ │ │ └── package-symlinked/
│ │ │ │ └── package.json
│ │ │ ├── package-that-throws-an-exception/
│ │ │ │ └── index.coffee
│ │ │ ├── package-that-throws-on-activate/
│ │ │ │ └── index.coffee
│ │ │ ├── package-that-throws-on-deactivate/
│ │ │ │ └── index.coffee
│ │ │ ├── package-with-activation-commands/
│ │ │ │ ├── index.coffee
│ │ │ │ └── package.cson
│ │ │ ├── package-with-activation-commands-and-deserializers/
│ │ │ │ ├── index.js
│ │ │ │ └── package.json
│ │ │ ├── package-with-activation-hooks/
│ │ │ │ ├── index.coffee
│ │ │ │ └── package.cson
│ │ │ ├── package-with-broken-keymap/
│ │ │ │ └── keymaps/
│ │ │ │ └── broken.json
│ │ │ ├── package-with-broken-package-json/
│ │ │ │ └── package.json
│ │ │ ├── package-with-cached-incompatible-native-module/
│ │ │ │ ├── main.js
│ │ │ │ └── package.json
│ │ │ ├── package-with-config-defaults/
│ │ │ │ └── index.coffee
│ │ │ ├── package-with-config-schema/
│ │ │ │ └── index.coffee
│ │ │ ├── package-with-consumed-services/
│ │ │ │ ├── index.coffee
│ │ │ │ └── package.json
│ │ │ ├── package-with-deactivate/
│ │ │ │ └── index.coffee
│ │ │ ├── package-with-deprecated-pane-item-method/
│ │ │ │ └── index.coffee
│ │ │ ├── package-with-deserializers/
│ │ │ │ ├── index.js
│ │ │ │ └── package.json
│ │ │ ├── package-with-different-directory-name/
│ │ │ │ └── package.json
│ │ │ ├── package-with-directory-provider/
│ │ │ │ ├── index.js
│ │ │ │ └── package.json
│ │ │ ├── package-with-empty-activation-commands/
│ │ │ │ ├── index.coffee
│ │ │ │ └── package.json
│ │ │ ├── package-with-empty-activation-hooks/
│ │ │ │ ├── index.coffee
│ │ │ │ └── package.json
│ │ │ ├── package-with-empty-keymap/
│ │ │ │ ├── keymaps/
│ │ │ │ │ └── keymap.cson
│ │ │ │ └── package.json
│ │ │ ├── package-with-empty-menu/
│ │ │ │ ├── menus/
│ │ │ │ │ └── menu.cson
│ │ │ │ └── package.json
│ │ │ ├── package-with-empty-workspace-openers/
│ │ │ │ ├── index.coffee
│ │ │ │ └── package.json
│ │ │ ├── package-with-eval-time-api-calls/
│ │ │ │ ├── index.js
│ │ │ │ └── package.json
│ │ │ ├── package-with-grammars/
│ │ │ │ └── grammars/
│ │ │ │ ├── alittle.cson
│ │ │ │ └── alot.cson
│ │ │ ├── package-with-ignored-incompatible-native-module/
│ │ │ │ ├── main.js
│ │ │ │ └── package.json
│ │ │ ├── package-with-incompatible-native-module/
│ │ │ │ ├── main.js
│ │ │ │ └── package.json
│ │ │ ├── package-with-incompatible-native-module-loaded-conditionally/
│ │ │ │ ├── main.js
│ │ │ │ └── package.json
│ │ │ ├── package-with-index/
│ │ │ │ └── index.coffee
│ │ │ ├── package-with-injection-selector/
│ │ │ │ └── grammars/
│ │ │ │ └── grammar.cson
│ │ │ ├── package-with-invalid-activation-commands/
│ │ │ │ └── package.json
│ │ │ ├── package-with-invalid-context-menu/
│ │ │ │ ├── menus/
│ │ │ │ │ └── menu.json
│ │ │ │ └── package.json
│ │ │ ├── package-with-invalid-grammar/
│ │ │ │ ├── grammars/
│ │ │ │ │ └── grammar.json
│ │ │ │ └── package.json
│ │ │ ├── package-with-invalid-settings/
│ │ │ │ ├── package.json
│ │ │ │ └── settings/
│ │ │ │ └── settings.json
│ │ │ ├── package-with-invalid-styles/
│ │ │ │ ├── package.json
│ │ │ │ └── styles/
│ │ │ │ └── index.less
│ │ │ ├── package-with-invalid-url-package-json/
│ │ │ │ └── package.json
│ │ │ ├── package-with-json-config-schema/
│ │ │ │ └── package.json
│ │ │ ├── package-with-keymaps/
│ │ │ │ └── keymaps/
│ │ │ │ ├── keymap-1.cson
│ │ │ │ ├── keymap-2.cson
│ │ │ │ └── keymap-3.cjson
│ │ │ ├── package-with-keymaps-manifest/
│ │ │ │ ├── keymaps/
│ │ │ │ │ ├── keymap-1.json
│ │ │ │ │ ├── keymap-2.cson
│ │ │ │ │ └── keymap-3.cson
│ │ │ │ └── package.cson
│ │ │ ├── package-with-main/
│ │ │ │ ├── main-module.coffee
│ │ │ │ └── package.cson
│ │ │ ├── package-with-menus/
│ │ │ │ └── menus/
│ │ │ │ ├── menu-1.cson
│ │ │ │ ├── menu-2.cson
│ │ │ │ └── menu-3.cson
│ │ │ ├── package-with-menus-manifest/
│ │ │ │ ├── menus/
│ │ │ │ │ ├── menu-1.cson
│ │ │ │ │ ├── menu-2.cson
│ │ │ │ │ └── menu-3.cson
│ │ │ │ └── package.cson
│ │ │ ├── package-with-missing-consumed-services/
│ │ │ │ ├── index.coffee
│ │ │ │ └── package.json
│ │ │ ├── package-with-missing-provided-services/
│ │ │ │ ├── index.coffee
│ │ │ │ └── package.json
│ │ │ ├── package-with-no-activate/
│ │ │ │ ├── index.js
│ │ │ │ └── package.json
│ │ │ ├── package-with-prefixed-and-suffixed-repo-url/
│ │ │ │ └── package.json
│ │ │ ├── package-with-provided-services/
│ │ │ │ ├── index.coffee
│ │ │ │ └── package.json
│ │ │ ├── package-with-rb-filetype/
│ │ │ │ ├── grammars/
│ │ │ │ │ └── rb.cson
│ │ │ │ └── package.json
│ │ │ ├── package-with-serialization/
│ │ │ │ └── index.coffee
│ │ │ ├── package-with-serialize-error/
│ │ │ │ ├── index.coffee
│ │ │ │ └── package.cson
│ │ │ ├── package-with-settings/
│ │ │ │ └── settings/
│ │ │ │ └── omg.cson
│ │ │ ├── package-with-short-url-package-json/
│ │ │ │ └── package.json
│ │ │ ├── package-with-style-sheets-manifest/
│ │ │ │ ├── package.cson
│ │ │ │ └── styles/
│ │ │ │ ├── 1.css
│ │ │ │ ├── 2.less
│ │ │ │ └── 3.css
│ │ │ ├── package-with-styles/
│ │ │ │ └── styles/
│ │ │ │ ├── 1.css
│ │ │ │ ├── 2.less
│ │ │ │ ├── 3.test-context.css
│ │ │ │ └── 4.css
│ │ │ ├── package-with-stylesheets-manifest/
│ │ │ │ └── package.cson
│ │ │ ├── package-with-tree-sitter-grammar/
│ │ │ │ └── grammars/
│ │ │ │ ├── fake-parser.js
│ │ │ │ └── some-language.cson
│ │ │ ├── package-with-uri-handler/
│ │ │ │ ├── index.js
│ │ │ │ └── package.json
│ │ │ ├── package-with-url-main/
│ │ │ │ ├── index.js
│ │ │ │ └── package.json
│ │ │ ├── package-with-view-providers/
│ │ │ │ ├── index.js
│ │ │ │ └── package.json
│ │ │ ├── package-with-workspace-openers/
│ │ │ │ ├── index.coffee
│ │ │ │ └── package.cson
│ │ │ ├── package-without-module/
│ │ │ │ └── package.cson
│ │ │ ├── sublime-tabs/
│ │ │ │ └── package.json
│ │ │ ├── theme-with-incomplete-ui-variables/
│ │ │ │ ├── package.json
│ │ │ │ └── styles/
│ │ │ │ ├── editor.less
│ │ │ │ └── ui-variables.less
│ │ │ ├── theme-with-index-css/
│ │ │ │ ├── index.css
│ │ │ │ └── package.json
│ │ │ ├── theme-with-index-less/
│ │ │ │ ├── index.less
│ │ │ │ └── package.json
│ │ │ ├── theme-with-invalid-styles/
│ │ │ │ ├── index.less
│ │ │ │ └── package.json
│ │ │ ├── theme-with-package-file/
│ │ │ │ ├── package.json
│ │ │ │ └── styles/
│ │ │ │ ├── first.css
│ │ │ │ ├── last.css
│ │ │ │ └── second.less
│ │ │ ├── theme-with-syntax-variables/
│ │ │ │ ├── package.json
│ │ │ │ └── styles/
│ │ │ │ └── editor.less
│ │ │ ├── theme-with-ui-variables/
│ │ │ │ ├── package.json
│ │ │ │ └── styles/
│ │ │ │ ├── editor.less
│ │ │ │ └── ui-variables.less
│ │ │ ├── theme-without-package-file/
│ │ │ │ └── styles/
│ │ │ │ ├── a.css
│ │ │ │ ├── b.css
│ │ │ │ ├── c.less
│ │ │ │ └── d.csv
│ │ │ └── wordcount/
│ │ │ └── package.json
│ │ ├── sample-with-comments.js
│ │ ├── sample-with-many-folds.js
│ │ ├── sample-with-tabs-and-leading-comment.coffee
│ │ ├── sample-with-tabs.coffee
│ │ ├── sample.js
│ │ ├── sample.less
│ │ ├── sample.txt
│ │ ├── script-with-deprecations.js
│ │ ├── script.js
│ │ ├── shebang
│ │ ├── task-handler-with-deprecations.coffee
│ │ ├── task-spec-handler.coffee
│ │ ├── testdir/
│ │ │ ├── sample-theme-1/
│ │ │ │ ├── readme
│ │ │ │ └── src/
│ │ │ │ └── js/
│ │ │ │ └── main.js
│ │ │ └── sample-theme-2/
│ │ │ ├── readme
│ │ │ └── src/
│ │ │ └── js/
│ │ │ ├── main.js
│ │ │ └── plugin/
│ │ │ └── main.js
│ │ ├── two-hundred.txt
│ │ └── typescript/
│ │ ├── invalid.ts
│ │ └── valid.ts
│ ├── git-repository-provider-spec.js
│ ├── git-repository-spec.js
│ ├── grammar-registry-spec.js
│ ├── gutter-container-spec.js
│ ├── gutter-spec.js
│ ├── helpers/
│ │ ├── random.js
│ │ └── words.js
│ ├── history-manager-spec.js
│ ├── integration/
│ │ ├── helpers/
│ │ │ ├── atom-launcher.sh
│ │ │ └── start-atom.js
│ │ └── smoke-spec.js
│ ├── jasmine-junit-reporter.js
│ ├── jasmine-list-reporter.js
│ ├── jasmine-test-runner.coffee
│ ├── keymap-extensions-spec.js
│ ├── main-process/
│ │ ├── atom-application.test.js
│ │ ├── atom-window.test.js
│ │ ├── file-recovery-service.test.js
│ │ ├── mocha-test-runner.js
│ │ └── parse-command-line.test.js
│ ├── menu-manager-spec.js
│ ├── menu-sort-helpers-spec.js
│ ├── module-cache-spec.js
│ ├── native-compile-cache-spec.coffee
│ ├── native-watcher-registry-spec.js
│ ├── notification-manager-spec.js
│ ├── notification-spec.js
│ ├── package-manager-spec.js
│ ├── package-spec.js
│ ├── package-transpilation-registry-spec.js
│ ├── pane-axis-element-spec.js
│ ├── pane-container-element-spec.js
│ ├── pane-container-spec.js
│ ├── pane-element-spec.js
│ ├── pane-spec.js
│ ├── panel-container-element-spec.js
│ ├── panel-container-spec.js
│ ├── panel-spec.js
│ ├── path-watcher-spec.js
│ ├── project-spec.js
│ ├── reopen-project-menu-manager-spec.js
│ ├── selection-spec.js
│ ├── spec-helper-platform.js
│ ├── spec-helper.coffee
│ ├── squirrel-update-spec.js
│ ├── state-store-spec.js
│ ├── style-manager-spec.js
│ ├── styles-element-spec.js
│ ├── syntax-scope-map-spec.js
│ ├── task-spec.js
│ ├── text-editor-component-spec.js
│ ├── text-editor-element-spec.js
│ ├── text-editor-registry-spec.js
│ ├── text-editor-spec.js
│ ├── text-mate-language-mode-spec.js
│ ├── text-utils-spec.js
│ ├── theme-manager-spec.js
│ ├── title-bar-spec.js
│ ├── tooltip-manager-spec.js
│ ├── tree-indenter-spec.js
│ ├── tree-sitter-language-mode-spec.js
│ ├── typescript-spec.js
│ ├── update-process-env-spec.js
│ ├── uri-handler-registry-spec.js
│ ├── view-registry-spec.js
│ ├── window-event-handler-spec.js
│ ├── workspace-center-spec.js
│ ├── workspace-element-spec.js
│ └── workspace-spec.js
├── src/
│ ├── application-delegate.js
│ ├── atom-environment.js
│ ├── atom-paths.js
│ ├── auto-update-manager.js
│ ├── babel.js
│ ├── buffered-node-process.js
│ ├── buffered-process.js
│ ├── clipboard.js
│ ├── coffee-script.js
│ ├── color.js
│ ├── command-installer.js
│ ├── command-registry.js
│ ├── compile-cache.js
│ ├── config-file.js
│ ├── config-schema.js
│ ├── config.js
│ ├── context-menu-manager.coffee
│ ├── core-uri-handlers.js
│ ├── crash-reporter-start.js
│ ├── cursor.js
│ ├── decoration-manager.js
│ ├── decoration.js
│ ├── default-directory-provider.coffee
│ ├── default-directory-searcher.js
│ ├── delegated-listener.js
│ ├── deprecated-syntax-selectors.js
│ ├── deserializer-manager.js
│ ├── dock.js
│ ├── electron-shims.js
│ ├── file-system-blob-store.js
│ ├── first-mate-helpers.js
│ ├── get-app-name.js
│ ├── get-release-channel.js
│ ├── get-window-load-settings.js
│ ├── git-repository-provider.js
│ ├── git-repository.js
│ ├── grammar-registry.js
│ ├── gutter-container.js
│ ├── gutter.js
│ ├── history-manager.js
│ ├── initialize-application-window.js
│ ├── initialize-benchmark-window.js
│ ├── initialize-test-window.js
│ ├── ipc-helpers.js
│ ├── item-registry.js
│ ├── keymap-extensions.coffee
│ ├── layer-decoration.coffee
│ ├── less-compile-cache.coffee
│ ├── main-process/
│ │ ├── application-menu.js
│ │ ├── atom-application.js
│ │ ├── atom-protocol-handler.js
│ │ ├── atom-window.js
│ │ ├── auto-update-manager.js
│ │ ├── auto-updater-win32.js
│ │ ├── context-menu.js
│ │ ├── file-recovery-service.js
│ │ ├── main.js
│ │ ├── parse-command-line.js
│ │ ├── spawner.js
│ │ ├── squirrel-update.js
│ │ ├── start.js
│ │ ├── win-powershell.js
│ │ └── win-shell.js
│ ├── menu-helpers.js
│ ├── menu-manager.coffee
│ ├── menu-sort-helpers.js
│ ├── model.coffee
│ ├── module-cache.js
│ ├── module-utils.js
│ ├── native-compile-cache.js
│ ├── native-watcher-registry.js
│ ├── notification-manager.js
│ ├── notification.js
│ ├── null-grammar.js
│ ├── overlay-manager.coffee
│ ├── package-manager.js
│ ├── package-transpilation-registry.js
│ ├── package.js
│ ├── pane-axis-element.js
│ ├── pane-axis.js
│ ├── pane-container-element.js
│ ├── pane-container.js
│ ├── pane-element.js
│ ├── pane-resize-handle-element.js
│ ├── pane.js
│ ├── panel-container-element.js
│ ├── panel-container.js
│ ├── panel.js
│ ├── path-watcher.js
│ ├── project.js
│ ├── protocol-handler-installer.js
│ ├── register-default-commands.coffee
│ ├── reopen-project-list-view.js
│ ├── reopen-project-menu-manager.js
│ ├── replace-handler.coffee
│ ├── ripgrep-directory-searcher.js
│ ├── scan-handler.coffee
│ ├── scope-descriptor.js
│ ├── selection.js
│ ├── selectors.js
│ ├── special-token-symbols.coffee
│ ├── startup-time.js
│ ├── state-store.js
│ ├── storage-folder.js
│ ├── style-manager.js
│ ├── styles-element.js
│ ├── syntax-scope-map.js
│ ├── task-bootstrap.js
│ ├── task.coffee
│ ├── test.ejs
│ ├── text-editor-component.js
│ ├── text-editor-element.js
│ ├── text-editor-registry.js
│ ├── text-editor.js
│ ├── text-mate-language-mode.js
│ ├── text-utils.js
│ ├── theme-manager.js
│ ├── theme-package.js
│ ├── title-bar.js
│ ├── token-iterator.js
│ ├── token.coffee
│ ├── tokenized-line.coffee
│ ├── tooltip-manager.js
│ ├── tooltip.js
│ ├── tree-indenter.js
│ ├── tree-sitter-grammar.js
│ ├── tree-sitter-language-mode.js
│ ├── typescript.js
│ ├── update-process-env.js
│ ├── uri-handler-registry.js
│ ├── view-registry.js
│ ├── window-event-handler.js
│ ├── window.js
│ ├── workspace-center.js
│ ├── workspace-element.js
│ └── workspace.js
├── static/
│ ├── atom-ui/
│ │ ├── README.md
│ │ ├── _index.less
│ │ └── styles/
│ │ ├── badges.less
│ │ ├── button-groups.less
│ │ ├── buttons.less
│ │ ├── git-status.less
│ │ ├── icons.less
│ │ ├── inputs.less
│ │ ├── layout.less
│ │ ├── lists.less
│ │ ├── loading.less
│ │ ├── messages.less
│ │ ├── mixins/
│ │ │ └── mixins.less
│ │ ├── modals.less
│ │ ├── panels.less
│ │ ├── private/
│ │ │ ├── README.md
│ │ │ ├── alerts.less
│ │ │ ├── close.less
│ │ │ ├── code.less
│ │ │ ├── forms.less
│ │ │ ├── links.less
│ │ │ ├── navs.less
│ │ │ ├── scaffolding.less
│ │ │ ├── sections.less
│ │ │ ├── tables.less
│ │ │ └── utilities.less
│ │ ├── select-list.less
│ │ ├── site-colors.less
│ │ ├── text.less
│ │ ├── tooltip.less
│ │ └── variables/
│ │ └── variables.less
│ ├── atom.less
│ ├── babelrc.json
│ ├── core-ui/
│ │ ├── _index.less
│ │ ├── cursors.less
│ │ ├── docks.less
│ │ ├── panels.less
│ │ ├── panes.less
│ │ ├── syntax.less
│ │ ├── text-editor.less
│ │ ├── title-bar.less
│ │ ├── utils.less
│ │ └── workspace-view.less
│ ├── icons/
│ │ └── octicons.less
│ ├── index.html
│ ├── index.js
│ ├── jasmine.less
│ ├── linux.less
│ ├── normalize.less
│ ├── scaffolding.less
│ └── variables/
│ ├── octicon-mixins.less
│ ├── octicon-utf-codes.less
│ ├── syntax-variables.less
│ └── ui-variables.less
├── stylelint.config.js
└── vendor/
├── jasmine-jquery.js
└── jasmine.js
================================================
FILE CONTENTS
================================================
================================================
FILE: .coffeelintignore
================================================
spec/fixtures
================================================
FILE: .eslintignore
================================================
**/spec/fixtures/**/*.js
node_modules
/vendor/
/out/
================================================
FILE: .eslintrc.json
================================================
{
"extends": [
"./script/node_modules/eslint-config-standard/eslintrc.json",
"./script/node_modules/eslint-config-prettier/index.js",
"./script/node_modules/eslint-config-prettier/standard.js"
],
"plugins": [
"prettier"
],
"env": {
"browser": true,
"node": true
},
"parser": "babel-eslint",
"parserOptions": {
"ecmaVersion": 8,
"ecmaFeatures": {
"jsx": true
}
},
"globals": {
"atom": true,
"snapshotResult": true
},
"rules": {
"standard/no-callback-literal": ["off"],
"node/no-deprecated-api": ["off"],
"prettier/prettier": ["error"]
},
"overrides": [
{
"files": ["spec/**", "**-spec.js", "**.test.js"],
"env": {
"jasmine": true
},
"globals": {
"advanceClock": true,
"fakeClearInterval": true,
"fakeSetInterval": true,
"waitsForPromise": true
}
}
]
}
================================================
FILE: .gitattributes
================================================
# Specs depend on character counts, if we don't specify the line endings the
# fixtures will vary depending on platform
spec/fixtures/**/*.js text eol=lf
spec/fixtures/**/*.coffee text eol=lf
spec/fixtures/**/*.less text eol=lf
spec/fixtures/**/*.css text eol=lf
spec/fixtures/**/*.txt text eol=lf
spec/fixtures/dir/**/* text eol=lf
# Git 1.7 does not support **/* patterns
spec/fixtures/css.css text eol=lf
spec/fixtures/sample.js text eol=lf
spec/fixtures/sample.less text eol=lf
spec/fixtures/sample.txt text eol=lf
# Windows bash scripts are also Unix LF endings
*.sh eol=lf
# The script executables should be LF so they can be edited on Windows
script/bootstrap text eol=lf
script/build text eol=lf
script/cibuild text eol=lf
script/clean text eol=lf
script/lint text eol=lf
script/postprocess-junit-results text eol=lf
script/test text eol=lf
script/verify-snapshot-script text eol=lf
================================================
FILE: .github/lock.yml
================================================
# Configuration for lock-threads - https://github.com/dessant/lock-threads
# Number of days of inactivity before a closed issue or pull request is locked
daysUntilLock: 180
# Comment to post before locking. Set to `false` to disable
lockComment: >
This issue has been automatically locked since there has not been
any recent activity after it was closed. If you can still reproduce this issue in
[Safe Mode](https://flight-manual.atom.io/hacking-atom/sections/debugging/#using-safe-mode)
then please open a new issue and fill out
[the entire issue template](https://github.com/atom/.github/blob/master/.github/ISSUE_TEMPLATE/bug_report.md)
to ensure that we have enough information to address your issue. Thanks!
# Issues or pull requests with these labels will not be locked
exemptLabels:
- help-wanted
# Limit to only `issues` or `pulls`
only: issues
================================================
FILE: .github/move.yml
================================================
================================================
FILE: .github/no-response.yml
================================================
# Configuration for probot-no-response - https://github.com/probot/no-response
# Number of days of inactivity before an issue is closed for lack of response
daysUntilClose: 28
# Label requiring a response
responseRequiredLabel: more-information-needed
# Comment to post when closing an issue for lack of response. Set to `false` to disable.
closeComment: >
This issue has been automatically closed because there has been no response
to our request for more information from the original author. With only the
information that is currently in the issue, we don't have enough information
to take action. Please reach out if you have or find the answers we need so
that we can investigate further.
================================================
FILE: .github/stale.yml
================================================
# Configuration for probot-stale - https://github.com/probot/stale
# Number of days of inactivity before an Issue or Pull Request becomes stale
daysUntilStale: 365
# Number of days of inactivity before a stale Issue or Pull Request is closed
daysUntilClose: 14
# Issues or Pull Requests with these labels will never be considered stale
exemptLabels:
- regression
- security
- triaged
# Label to use when marking as stale
staleLabel: stale
# Comment to post when marking as stale. Set to `false` to disable
markComment: >
Thanks for your contribution!
This issue has been automatically marked as stale because it has not had
recent activity. Because the Atom team treats their issues
[as their backlog](https://en.wikipedia.org/wiki/Scrum_(software_development)#Product_backlog), stale issues
are closed. If you would like this issue to remain open:
1. Verify that you can still reproduce the issue in the latest version of Atom
1. Comment that the issue is still reproducible and include:
* What version of Atom you reproduced the issue on
* What OS and version you reproduced the issue on
* What steps you followed to reproduce the issue
Issues that are labeled as triaged will not be automatically marked as stale.
# Comment to post when removing the stale label. Set to `false` to disable
unmarkComment: false
# Comment to post when closing a stale Issue or Pull Request. Set to `false` to disable
closeComment: false
# Limit to only `issues` or `pulls`
only: issues
================================================
FILE: .gitignore
================================================
*.swp
*~
.DS_Store
.eslintcache
Thumbs.db
.project
.svn
.nvm-version
.vscode
.python-version
node_modules
*.log
/tags
/atom-shell/
/out/
docs/output
docs/includes
spec/fixtures/evil-files/
!spec/fixtures/packages/package-with-incompatible-native-module-loaded-conditionally/node_modules/
out/
/electron/
================================================
FILE: .prettierrc
================================================
{
"singleQuote": true
}
================================================
FILE: CHANGELOG.md
================================================
See https://atom.io/releases
================================================
FILE: CODE_OF_CONDUCT.md
================================================
# Contributor Covenant Code of Conduct
## Our Pledge
In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to make participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience, nationality, personal appearance, race, religion, or sexual identity and orientation.
## Our Standards
Examples of behavior that contributes to creating a positive environment include:
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others' private information, such as a physical or electronic address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a professional setting
## Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful.
## Scope
This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers.
## Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team at [atom@github.com](mailto:atom@github.com). All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership.
## Attribution
This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, available at [https://contributor-covenant.org/version/1/4][version]
[homepage]: https://contributor-covenant.org
[version]: https://contributor-covenant.org/version/1/4/
================================================
FILE: CONTRIBUTING.md
================================================
# Contributing to Atom
:+1::tada: First off, thanks for taking the time to contribute! :tada::+1:
The following is a set of guidelines for contributing to Atom and its packages, which are hosted in the [Atom Organization](https://github.com/atom) on GitHub. These are mostly guidelines, not rules. Use your best judgment, and feel free to propose changes to this document in a pull request.
#### Table Of Contents
[Code of Conduct](#code-of-conduct)
[I don't want to read this whole thing, I just have a question!!!](#i-dont-want-to-read-this-whole-thing-i-just-have-a-question)
[What should I know before I get started?](#what-should-i-know-before-i-get-started)
* [Atom and Packages](#atom-and-packages)
* [Atom Design Decisions](#design-decisions)
[How Can I Contribute?](#how-can-i-contribute)
* [Reporting Bugs](#reporting-bugs)
* [Suggesting Enhancements](#suggesting-enhancements)
* [Your First Code Contribution](#your-first-code-contribution)
* [Pull Requests](#pull-requests)
[Styleguides](#styleguides)
* [Git Commit Messages](#git-commit-messages)
* [JavaScript Styleguide](#javascript-styleguide)
* [CoffeeScript Styleguide](#coffeescript-styleguide)
* [Specs Styleguide](#specs-styleguide)
* [Documentation Styleguide](#documentation-styleguide)
[Additional Notes](#additional-notes)
* [Issue and Pull Request Labels](#issue-and-pull-request-labels)
## Code of Conduct
This project and everyone participating in it is governed by the [Atom Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code. Please report unacceptable behavior to [atom@github.com](mailto:atom@github.com).
## I don't want to read this whole thing I just have a question!!!
> **Note:** [Please don't file an issue to ask a question.](https://blog.atom.io/2016/04/19/managing-the-deluge-of-atom-issues.html) You'll get faster results by using the resources below.
We have an official message board with a detailed FAQ and where the community chimes in with helpful advice if you have questions.
* [Github Discussions, the official Atom](https://github.com/atom/atom/discussions)
* [Atom FAQ](https://github.com/atom/atom/discussions)
## What should I know before I get started?
### Atom and Packages
Atom is a large open source project — it's made up of over [200 repositories](https://github.com/atom). When you initially consider contributing to Atom, you might be unsure about which of those 200 repositories implements the functionality you want to change or report a bug for. This section should help you with that.
Atom is intentionally very modular. Nearly every non-editor UI element you interact with comes from a package, even fundamental things like tabs and the status-bar. These packages are packages in the same way that packages in the [Atom package repository](https://atom.io/packages) are packages, with one difference: they are bundled into the [default distribution](https://github.com/atom/atom/blob/10b8de6fc499a7def9b072739486e68530d67ab4/package.json#L58).
<a id="atom-packages-image"/>

To get a sense for the packages that are bundled with Atom, you can go to `Settings` > `Packages` within Atom and take a look at the Core Packages section.
Here's a list of the big ones:
* [atom/atom](https://github.com/atom/atom) - Atom Core! The core editor component is responsible for basic text editing (e.g. cursors, selections, scrolling), text indentation, wrapping, and folding, text rendering, editor rendering, file system operations (e.g. saving), and installation and auto-updating. You should also use this repository for feedback related to the [Atom API](https://atom.io/docs/api/latest) and for large, overarching design proposals.
* [tree-view](https://github.com/atom/tree-view) - file and directory listing on the left of the UI.
* [fuzzy-finder](https://github.com/atom/fuzzy-finder) - the quick file opener.
* [find-and-replace](https://github.com/atom/find-and-replace) - all search and replace functionality.
* [tabs](https://github.com/atom/tabs) - the tabs for open editors at the top of the UI.
* [status-bar](https://github.com/atom/status-bar) - the status bar at the bottom of the UI.
* [markdown-preview](https://github.com/atom/markdown-preview) - the rendered markdown pane item.
* [settings-view](https://github.com/atom/settings-view) - the settings UI pane item.
* [autocomplete-plus](https://github.com/atom/autocomplete-plus) - autocompletions shown while typing. Some languages have additional packages for autocompletion functionality, such as [autocomplete-html](https://github.com/atom/autocomplete-html).
* [git-diff](https://github.com/atom/git-diff) - Git change indicators shown in the editor's gutter.
* [language-javascript](https://github.com/atom/language-javascript) - all bundled languages are packages too, and each one has a separate package `language-[name]`. Use these for feedback on syntax highlighting issues that only appear for a specific language.
* [one-dark-ui](https://github.com/atom/one-dark-ui) - the default UI styling for anything but the text editor. UI theme packages (i.e. packages with a `-ui` suffix) provide only styling and it's possible that a bundled package is responsible for a UI issue. There are other bundled UI themes, such as [one-light-ui](https://github.com/atom/one-light-ui).
* [one-dark-syntax](https://github.com/atom/one-dark-syntax) - the default syntax highlighting styles applied for all languages. There are other bundled syntax themes, such as [solarized-dark-syntax](https://github.com/atom/solarized-dark-syntax). You should use these packages for reporting issues that appear in many languages, but disappear if you change to another syntax theme.
* [apm](https://github.com/atom/apm) - the `apm` command line tool (Atom Package Manager). You should use this repository for any contributions related to the `apm` tool and for publishing packages.
* [atom.io](https://github.com/atom/atom.io) - the repository for feedback on the [Atom.io website](https://atom.io) and the [Atom.io package API](https://github.com/atom/atom/blob/master/docs/apm-rest-api.md) used by [apm](https://github.com/atom/apm).
There are many more, but this list should be a good starting point. For more information on how to work with Atom's official packages, see [Contributing to Atom Packages][contributing-to-official-atom-packages].
Also, because Atom is so extensible, it's possible that a feature you've become accustomed to in Atom or an issue you're encountering isn't coming from a bundled package at all, but rather a [community package](https://atom.io/packages) you've installed. Each community package has its own repository too.
#### Package Conventions
There are a few conventions that have developed over time around packages:
* Packages that add one or more syntax highlighting grammars are named `language-[language-name]`
* Language packages can add other things besides just a grammar. Many offer commonly-used snippets. Try not to add too much though.
* Theme packages are split into two categories: UI and Syntax themes
* UI themes are named `[theme-name]-ui`
* Syntax themes are named `[theme-name]-syntax`
* Often themes that are designed to work together are given the same root name, for example: `one-dark-ui` and `one-dark-syntax`
* UI themes style everything outside of the editor pane — all of the green areas in the [packages image above](#atom-packages-image)
* Syntax themes style just the items inside the editor pane, mostly syntax highlighting
* Packages that add [autocomplete providers](https://github.com/atom/autocomplete-plus/wiki/Autocomplete-Providers) are named `autocomplete-[what-they-autocomplete]` — ex: [autocomplete-css](https://github.com/atom/autocomplete-css)
### Design Decisions
When we make a significant decision in how we maintain the project and what we can or cannot support, we will document it in the [atom/design-decisions repository](https://github.com/atom/design-decisions). If you have a question around how we do things, check to see if it is documented there. If it is *not* documented there, please open a new topic on [Github Discussions, the official Atom message board](https://github.com/atom/atom/discussions) and ask your question.
## How Can I Contribute?
### Reporting Bugs
This section guides you through submitting a bug report for Atom. Following these guidelines helps maintainers and the community understand your report :pencil:, reproduce the behavior :computer: :computer:, and find related reports :mag_right:.
Before creating bug reports, please check [this list](#before-submitting-a-bug-report) as you might find out that you don't need to create one. When you are creating a bug report, please [include as many details as possible](#how-do-i-submit-a-good-bug-report). Fill out [the required template](https://github.com/atom/.github/blob/master/.github/ISSUE_TEMPLATE/bug_report.md), the information it asks for helps us resolve issues faster.
> **Note:** If you find a **Closed** issue that seems like it is the same thing that you're experiencing, open a new issue and include a link to the original issue in the body of your new one.
#### Before Submitting A Bug Report
* **Check the [debugging guide](https://flight-manual.atom.io/hacking-atom/sections/debugging/).** You might be able to find the cause of the problem and fix things yourself. Most importantly, check if you can reproduce the problem [in the latest version of Atom](https://flight-manual.atom.io/hacking-atom/sections/debugging/#update-to-the-latest-version), if the problem happens when you run Atom in [safe mode](https://flight-manual.atom.io/hacking-atom/sections/debugging/#check-if-the-problem-shows-up-in-safe-mode), and if you can get the desired behavior by changing [Atom's or packages' config settings](https://flight-manual.atom.io/hacking-atom/sections/debugging/#check-atom-and-package-settings).
* **Check the [discussions](https://github.com/atom/atom/discussions)** for a list of common questions and problems.
* **Determine [which repository the problem should be reported in](#atom-and-packages)**.
* **Perform a [cursory search](https://github.com/search?q=+is%3Aissue+user%3Aatom)** to see if the problem has already been reported. If it has **and the issue is still open**, add a comment to the existing issue instead of opening a new one.
#### How Do I Submit A (Good) Bug Report?
Bugs are tracked as [GitHub issues](https://guides.github.com/features/issues/). After you've determined [which repository](#atom-and-packages) your bug is related to, create an issue on that repository and provide the following information by filling in [the template](https://github.com/atom/.github/blob/master/.github/ISSUE_TEMPLATE/bug_report.md).
Explain the problem and include additional details to help maintainers reproduce the problem:
* **Use a clear and descriptive title** for the issue to identify the problem.
* **Describe the exact steps which reproduce the problem** in as many details as possible. For example, start by explaining how you started Atom, e.g. which command exactly you used in the terminal, or how you started Atom otherwise. When listing steps, **don't just say what you did, but explain how you did it**. For example, if you moved the cursor to the end of a line, explain if you used the mouse, or a keyboard shortcut or an Atom command, and if so which one?
* **Provide specific examples to demonstrate the steps**. Include links to files or GitHub projects, or copy/pasteable snippets, which you use in those examples. If you're providing snippets in the issue, use [Markdown code blocks](https://help.github.com/articles/markdown-basics/#multiple-lines).
* **Describe the behavior you observed after following the steps** and point out what exactly is the problem with that behavior.
* **Explain which behavior you expected to see instead and why.**
* **Include screenshots and animated GIFs** which show you following the described steps and clearly demonstrate the problem. If you use the keyboard while following the steps, **record the GIF with the [Keybinding Resolver](https://github.com/atom/keybinding-resolver) shown**. You can use [this tool](https://www.cockos.com/licecap/) to record GIFs on macOS and Windows, and [this tool](https://github.com/colinkeenan/silentcast) or [this tool](https://github.com/GNOME/byzanz) on Linux.
* **If you're reporting that Atom crashed**, include a crash report with a stack trace from the operating system. On macOS, the crash report will be available in `Console.app` under "Diagnostic and usage information" > "User diagnostic reports". Include the crash report in the issue in a [code block](https://help.github.com/articles/markdown-basics/#multiple-lines), a [file attachment](https://help.github.com/articles/file-attachments-on-issues-and-pull-requests/), or put it in a [gist](https://gist.github.com/) and provide link to that gist.
* **If the problem is related to performance or memory**, include a [CPU profile capture](https://flight-manual.atom.io/hacking-atom/sections/debugging/#diagnose-runtime-performance) with your report.
* **If Chrome's developer tools pane is shown without you triggering it**, that normally means that you have a syntax error in one of your themes or in your `styles.less`. Try running in [Safe Mode](https://flight-manual.atom.io/hacking-atom/sections/debugging/#using-safe-mode) and using a different theme or comment out the contents of your `styles.less` to see if that fixes the problem.
* **If the problem wasn't triggered by a specific action**, describe what you were doing before the problem happened and share more information using the guidelines below.
Provide more context by answering these questions:
* **Can you reproduce the problem in [safe mode](https://flight-manual.atom.io/hacking-atom/sections/debugging/#diagnose-runtime-performance-problems-with-the-dev-tools-cpu-profiler)?**
* **Did the problem start happening recently** (e.g. after updating to a new version of Atom) or was this always a problem?
* If the problem started happening recently, **can you reproduce the problem in an older version of Atom?** What's the most recent version in which the problem doesn't happen? You can download older versions of Atom from [the releases page](https://github.com/atom/atom/releases).
* **Can you reliably reproduce the issue?** If not, provide details about how often the problem happens and under which conditions it normally happens.
* If the problem is related to working with files (e.g. opening and editing files), **does the problem happen for all files and projects or only some?** Does the problem happen only when working with local or remote files (e.g. on network drives), with files of a specific type (e.g. only JavaScript or Python files), with large files or files with very long lines, or with files in a specific encoding? Is there anything else special about the files you are using?
Include details about your configuration and environment:
* **Which version of Atom are you using?** You can get the exact version by running `atom -v` in your terminal, or by starting Atom and running the `Application: About` command from the [Command Palette](https://github.com/atom/command-palette).
* **What's the name and version of the OS you're using**?
* **Are you running Atom in a virtual machine?** If so, which VM software are you using and which operating systems and versions are used for the host and the guest?
* **Which [packages](#atom-and-packages) do you have installed?** You can get that list by running `apm list --installed`.
* **Are you using [local configuration files](https://flight-manual.atom.io/using-atom/sections/basic-customization/)** `config.cson`, `keymap.cson`, `snippets.cson`, `styles.less` and `init.coffee` to customize Atom? If so, provide the contents of those files, preferably in a [code block](https://help.github.com/articles/markdown-basics/#multiple-lines) or with a link to a [gist](https://gist.github.com/).
* **Are you using Atom with multiple monitors?** If so, can you reproduce the problem when you use a single monitor?
* **Which keyboard layout are you using?** Are you using a US layout or some other layout?
### Suggesting Enhancements
This section guides you through submitting an enhancement suggestion for Atom, including completely new features and minor improvements to existing functionality. Following these guidelines helps maintainers and the community understand your suggestion :pencil: and find related suggestions :mag_right:.
Before creating enhancement suggestions, please check [this list](#before-submitting-an-enhancement-suggestion) as you might find out that you don't need to create one. When you are creating an enhancement suggestion, please [include as many details as possible](#how-do-i-submit-a-good-enhancement-suggestion). Fill in [the template](https://github.com/atom/.github/blob/master/.github/ISSUE_TEMPLATE/feature_request.md), including the steps that you imagine you would take if the feature you're requesting existed.
#### Before Submitting An Enhancement Suggestion
* **Check the [debugging guide](https://flight-manual.atom.io/hacking-atom/sections/debugging/)** for tips — you might discover that the enhancement is already available. Most importantly, check if you're using [the latest version of Atom](https://flight-manual.atom.io/hacking-atom/sections/debugging/#update-to-the-latest-version) and if you can get the desired behavior by changing [Atom's or packages' config settings](https://flight-manual.atom.io/hacking-atom/sections/debugging/#check-atom-and-package-settings).
* **Check if there's already [a package](https://atom.io/packages) which provides that enhancement.**
* **Determine [which repository the enhancement should be suggested in](#atom-and-packages).**
* **Perform a [cursory search](https://github.com/search?q=+is%3Aissue+user%3Aatom)** to see if the enhancement has already been suggested. If it has, add a comment to the existing issue instead of opening a new one.
#### How Do I Submit A (Good) Enhancement Suggestion?
Enhancement suggestions are tracked as [GitHub issues](https://guides.github.com/features/issues/). After you've determined [which repository](#atom-and-packages) your enhancement suggestion is related to, create an issue on that repository and provide the following information:
* **Use a clear and descriptive title** for the issue to identify the suggestion.
* **Provide a step-by-step description of the suggested enhancement** in as many details as possible.
* **Provide specific examples to demonstrate the steps**. Include copy/pasteable snippets which you use in those examples, as [Markdown code blocks](https://help.github.com/articles/markdown-basics/#multiple-lines).
* **Describe the current behavior** and **explain which behavior you expected to see instead** and why.
* **Include screenshots and animated GIFs** which help you demonstrate the steps or point out the part of Atom which the suggestion is related to. You can use [this tool](https://www.cockos.com/licecap/) to record GIFs on macOS and Windows, and [this tool](https://github.com/colinkeenan/silentcast) or [this tool](https://github.com/GNOME/byzanz) on Linux.
* **Explain why this enhancement would be useful** to most Atom users and isn't something that can or should be implemented as a [community package](#atom-and-packages).
* **List some other text editors or applications where this enhancement exists.**
* **Specify which version of Atom you're using.** You can get the exact version by running `atom -v` in your terminal, or by starting Atom and running the `Application: About` command from the [Command Palette](https://github.com/atom/command-palette).
* **Specify the name and version of the OS you're using.**
### Your First Code Contribution
Unsure where to begin contributing to Atom? You can start by looking through these `beginner` and `help-wanted` issues:
* [Beginner issues][beginner] - issues which should only require a few lines of code, and a test or two.
* [Help wanted issues][help-wanted] - issues which should be a bit more involved than `beginner` issues.
Both issue lists are sorted by total number of comments. While not perfect, number of comments is a reasonable proxy for impact a given change will have.
If you want to read about using Atom or developing packages in Atom, the [Atom Flight Manual](https://flight-manual.atom.io) is free and available online. You can find the source to the manual in [atom/flight-manual.atom.io](https://github.com/atom/flight-manual.atom.io).
#### Local development
Atom Core and all packages can be developed locally. For instructions on how to do this, see the following sections in the [Atom Flight Manual](https://flight-manual.atom.io):
* [Hacking on Atom Core][hacking-on-atom-core]
* [Contributing to Official Atom Packages][contributing-to-official-atom-packages]
### Pull Requests
The process described here has several goals:
- Maintain Atom's quality
- Fix problems that are important to users
- Engage the community in working toward the best possible Atom
- Enable a sustainable system for Atom's maintainers to review contributions
Please follow these steps to have your contribution considered by the maintainers:
1. Follow all instructions in [the template](PULL_REQUEST_TEMPLATE.md)
2. Follow the [styleguides](#styleguides)
3. After you submit your pull request, verify that all [status checks](https://help.github.com/articles/about-status-checks/) are passing <details><summary>What if the status checks are failing?</summary>If a status check is failing, and you believe that the failure is unrelated to your change, please leave a comment on the pull request explaining why you believe the failure is unrelated. A maintainer will re-run the status check for you. If we conclude that the failure was a false positive, then we will open an issue to track that problem with our status check suite.</details>
While the prerequisites above must be satisfied prior to having your pull request reviewed, the reviewer(s) may ask you to complete additional design work, tests, or other changes before your pull request can be ultimately accepted.
## Styleguides
### Git Commit Messages
* Use the present tense ("Add feature" not "Added feature")
* Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
* Limit the first line to 72 characters or less
* Reference issues and pull requests liberally after the first line
* When only changing documentation, include `[ci skip]` in the commit title
* Consider starting the commit message with an applicable emoji:
* :art: `:art:` when improving the format/structure of the code
* :racehorse: `:racehorse:` when improving performance
* :non-potable_water: `:non-potable_water:` when plugging memory leaks
* :memo: `:memo:` when writing docs
* :penguin: `:penguin:` when fixing something on Linux
* :apple: `:apple:` when fixing something on macOS
* :checkered_flag: `:checkered_flag:` when fixing something on Windows
* :bug: `:bug:` when fixing a bug
* :fire: `:fire:` when removing code or files
* :green_heart: `:green_heart:` when fixing the CI build
* :white_check_mark: `:white_check_mark:` when adding tests
* :lock: `:lock:` when dealing with security
* :arrow_up: `:arrow_up:` when upgrading dependencies
* :arrow_down: `:arrow_down:` when downgrading dependencies
* :shirt: `:shirt:` when removing linter warnings
### JavaScript Styleguide
All JavaScript code is linted with [Prettier](https://prettier.io/).
* Prefer the object spread operator (`{...anotherObj}`) to `Object.assign()`
* Inline `export`s with expressions whenever possible
```js
// Use this:
export default class ClassName {
}
// Instead of:
class ClassName {
}
export default ClassName
```
* Place requires in the following order:
* Built in Node Modules (such as `path`)
* Built in Atom and Electron Modules (such as `atom`, `remote`)
* Local Modules (using relative paths)
* Place class properties in the following order:
* Class methods and properties (methods starting with `static`)
* Instance methods and properties
* [Avoid platform-dependent code](https://flight-manual.atom.io/hacking-atom/sections/cross-platform-compatibility/)
### CoffeeScript Styleguide
* Set parameter defaults without spaces around the equal sign
* `clear = (count=1) ->` instead of `clear = (count = 1) ->`
* Use spaces around operators
* `count + 1` instead of `count+1`
* Use spaces after commas (unless separated by newlines)
* Use parentheses if it improves code clarity.
* Prefer alphabetic keywords to symbolic keywords:
* `a is b` instead of `a == b`
* Avoid spaces inside the curly-braces of hash literals:
* `{a: 1, b: 2}` instead of `{ a: 1, b: 2 }`
* Include a single line of whitespace between methods.
* Capitalize initialisms and acronyms in names, except for the first word, which
should be lower-case:
* `getURI` instead of `getUri`
* `uriToOpen` instead of `URIToOpen`
* Use `slice()` to copy an array
* Add an explicit `return` when your function ends with a `for`/`while` loop and
you don't want it to return a collected array.
* Use `this` instead of a standalone `@`
* `return this` instead of `return @`
* Place requires in the following order:
* Built in Node Modules (such as `path`)
* Built in Atom and Electron Modules (such as `atom`, `remote`)
* Local Modules (using relative paths)
* Place class properties in the following order:
* Class methods and properties (methods starting with a `@`)
* Instance methods and properties
* [Avoid platform-dependent code](https://flight-manual.atom.io/hacking-atom/sections/cross-platform-compatibility/)
### Specs Styleguide
- Include thoughtfully-worded, well-structured [Jasmine](https://jasmine.github.io/) specs in the `./spec` folder.
- Treat `describe` as a noun or situation.
- Treat `it` as a statement about state or how an operation changes state.
#### Example
```coffee
describe 'a dog', ->
it 'barks', ->
# spec here
describe 'when the dog is happy', ->
it 'wags its tail', ->
# spec here
```
### Documentation Styleguide
* Use [AtomDoc](https://github.com/atom/atomdoc).
* Use [Markdown](https://daringfireball.net/projects/markdown).
* 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
```coffee
# Public: Disable the package with the given name.
#
# * `name` The {String} name of the package to disable.
# * `options` (optional) The {Object} with disable options (default: {}):
# * `trackTime` A {Boolean}, `true` to track the amount of time taken.
# * `ignoreErrors` A {Boolean}, `true` to catch and ignore errors thrown.
# * `callback` The {Function} to call after the package has been disabled.
#
# Returns `undefined`.
disablePackage: (name, options, callback) ->
```
## Additional Notes
### Issue and Pull Request Labels
This section lists the labels we use to help us track and manage issues and pull requests. Most labels are used across all Atom repositories, but some are specific to `atom/atom`.
[GitHub search](https://help.github.com/articles/searching-issues/) makes it easy to use labels for finding groups of issues or pull requests you're interested in. For example, you might be interested in [open issues across `atom/atom` and all Atom-owned packages which are labeled as bugs, but still need to be reliably reproduced](https://github.com/search?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Abug+label%3Aneeds-reproduction) or perhaps [open pull requests in `atom/atom` which haven't been reviewed yet](https://github.com/search?utf8=%E2%9C%93&q=is%3Aopen+is%3Apr+repo%3Aatom%2Fatom+comments%3A0). To help you find issues and pull requests, each label is listed with search links for finding open items with that label in `atom/atom` only and also across all Atom repositories. We encourage you to read about [other search filters](https://help.github.com/articles/searching-issues/) which will help you write more focused queries.
The labels are loosely grouped by their purpose, but it's not required that every issue has a label from every group or that an issue can't have more than one label from the same group.
Please open an issue on `atom/atom` if you have suggestions for new labels, and if you notice some labels are missing on some repositories, then please open an issue on that repository.
#### Type of Issue and Issue State
| Label name | `atom/atom` :mag_right: | `atom`‑org :mag_right: | Description |
| --- | --- | --- | --- |
| `enhancement` | [search][search-atom-repo-label-enhancement] | [search][search-atom-org-label-enhancement] | Feature requests. |
| `bug` | [search][search-atom-repo-label-bug] | [search][search-atom-org-label-bug] | Confirmed bugs or reports that are very likely to be bugs. |
| `question` | [search][search-atom-repo-label-question] | [search][search-atom-org-label-question] | Questions more than bug reports or feature requests (e.g. how do I do X). |
| `feedback` | [search][search-atom-repo-label-feedback] | [search][search-atom-org-label-feedback] | General feedback more than bug reports or feature requests. |
| `help-wanted` | [search][search-atom-repo-label-help-wanted] | [search][search-atom-org-label-help-wanted] | The Atom core team would appreciate help from the community in resolving these issues. |
| `beginner` | [search][search-atom-repo-label-beginner] | [search][search-atom-org-label-beginner] | Less complex issues which would be good first issues to work on for users who want to contribute to Atom. |
| `more-information-needed` | [search][search-atom-repo-label-more-information-needed] | [search][search-atom-org-label-more-information-needed] | More information needs to be collected about these problems or feature requests (e.g. steps to reproduce). |
| `needs-reproduction` | [search][search-atom-repo-label-needs-reproduction] | [search][search-atom-org-label-needs-reproduction] | Likely bugs, but haven't been reliably reproduced. |
| `blocked` | [search][search-atom-repo-label-blocked] | [search][search-atom-org-label-blocked] | Issues blocked on other issues. |
| `duplicate` | [search][search-atom-repo-label-duplicate] | [search][search-atom-org-label-duplicate] | Issues which are duplicates of other issues, i.e. they have been reported before. |
| `wontfix` | [search][search-atom-repo-label-wontfix] | [search][search-atom-org-label-wontfix] | The Atom core team has decided not to fix these issues for now, either because they're working as intended or for some other reason. |
| `invalid` | [search][search-atom-repo-label-invalid] | [search][search-atom-org-label-invalid] | Issues which aren't valid (e.g. user errors). |
| `package-idea` | [search][search-atom-repo-label-package-idea] | [search][search-atom-org-label-package-idea] | Feature request which might be good candidates for new packages, instead of extending Atom or core Atom packages. |
| `wrong-repo` | [search][search-atom-repo-label-wrong-repo] | [search][search-atom-org-label-wrong-repo] | Issues reported on the wrong repository (e.g. a bug related to the [Settings View package](https://github.com/atom/settings-view) was reported on [Atom core](https://github.com/atom/atom)). |
#### Topic Categories
| Label name | `atom/atom` :mag_right: | `atom`‑org :mag_right: | Description |
| --- | --- | --- | --- |
| `windows` | [search][search-atom-repo-label-windows] | [search][search-atom-org-label-windows] | Related to Atom running on Windows. |
| `linux` | [search][search-atom-repo-label-linux] | [search][search-atom-org-label-linux] | Related to Atom running on Linux. |
| `mac` | [search][search-atom-repo-label-mac] | [search][search-atom-org-label-mac] | Related to Atom running on macOS. |
| `documentation` | [search][search-atom-repo-label-documentation] | [search][search-atom-org-label-documentation] | Related to any type of documentation (e.g. [API documentation](https://atom.io/docs/api/latest/) and the [flight manual](https://flight-manual.atom.io/)). |
| `performance` | [search][search-atom-repo-label-performance] | [search][search-atom-org-label-performance] | Related to performance. |
| `security` | [search][search-atom-repo-label-security] | [search][search-atom-org-label-security] | Related to security. |
| `ui` | [search][search-atom-repo-label-ui] | [search][search-atom-org-label-ui] | Related to visual design. |
| `api` | [search][search-atom-repo-label-api] | [search][search-atom-org-label-api] | Related to Atom's public APIs. |
| `uncaught-exception` | [search][search-atom-repo-label-uncaught-exception] | [search][search-atom-org-label-uncaught-exception] | Issues about uncaught exceptions, normally created from the [Notifications package](https://github.com/atom/notifications). |
| `crash` | [search][search-atom-repo-label-crash] | [search][search-atom-org-label-crash] | Reports of Atom completely crashing. |
| `auto-indent` | [search][search-atom-repo-label-auto-indent] | [search][search-atom-org-label-auto-indent] | Related to auto-indenting text. |
| `encoding` | [search][search-atom-repo-label-encoding] | [search][search-atom-org-label-encoding] | Related to character encoding. |
| `network` | [search][search-atom-repo-label-network] | [search][search-atom-org-label-network] | Related to network problems or working with remote files (e.g. on network drives). |
| `git` | [search][search-atom-repo-label-git] | [search][search-atom-org-label-git] | Related to Git functionality (e.g. problems with gitignore files or with showing the correct file status). |
#### `atom/atom` Topic Categories
| Label name | `atom/atom` :mag_right: | `atom`‑org :mag_right: | Description |
| --- | --- | --- | --- |
| `editor-rendering` | [search][search-atom-repo-label-editor-rendering] | [search][search-atom-org-label-editor-rendering] | Related to language-independent aspects of rendering text (e.g. scrolling, soft wrap, and font rendering). |
| `build-error` | [search][search-atom-repo-label-build-error] | [search][search-atom-org-label-build-error] | Related to problems with building Atom from source. |
| `error-from-pathwatcher` | [search][search-atom-repo-label-error-from-pathwatcher] | [search][search-atom-org-label-error-from-pathwatcher] | Related to errors thrown by the [pathwatcher library](https://github.com/atom/node-pathwatcher). |
| `error-from-save` | [search][search-atom-repo-label-error-from-save] | [search][search-atom-org-label-error-from-save] | Related to errors thrown when saving files. |
| `error-from-open` | [search][search-atom-repo-label-error-from-open] | [search][search-atom-org-label-error-from-open] | Related to errors thrown when opening files. |
| `installer` | [search][search-atom-repo-label-installer] | [search][search-atom-org-label-installer] | Related to the Atom installers for different OSes. |
| `auto-updater` | [search][search-atom-repo-label-auto-updater] | [search][search-atom-org-label-auto-updater] | Related to the auto-updater for different OSes. |
| `deprecation-help` | [search][search-atom-repo-label-deprecation-help] | [search][search-atom-org-label-deprecation-help] | Issues for helping package authors remove usage of deprecated APIs in packages. |
| `electron` | [search][search-atom-repo-label-electron] | [search][search-atom-org-label-electron] | Issues that require changes to [Electron](https://electron.atom.io) to fix or implement. |
#### Pull Request Labels
| Label name | `atom/atom` :mag_right: | `atom`‑org :mag_right: | Description
| --- | --- | --- | --- |
| `work-in-progress` | [search][search-atom-repo-label-work-in-progress] | [search][search-atom-org-label-work-in-progress] | Pull requests which are still being worked on, more changes will follow. |
| `needs-review` | [search][search-atom-repo-label-needs-review] | [search][search-atom-org-label-needs-review] | Pull requests which need code review, and approval from maintainers or Atom core team. |
| `under-review` | [search][search-atom-repo-label-under-review] | [search][search-atom-org-label-under-review] | Pull requests being reviewed by maintainers or Atom core team. |
| `requires-changes` | [search][search-atom-repo-label-requires-changes] | [search][search-atom-org-label-requires-changes] | Pull requests which need to be updated based on review comments and then reviewed again. |
| `needs-testing` | [search][search-atom-repo-label-needs-testing] | [search][search-atom-org-label-needs-testing] | Pull requests which need manual testing. |
[search-atom-repo-label-enhancement]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Aenhancement
[search-atom-org-label-enhancement]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Aenhancement
[search-atom-repo-label-bug]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Abug
[search-atom-org-label-bug]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Abug
[search-atom-repo-label-question]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Aquestion
[search-atom-org-label-question]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Aquestion
[search-atom-repo-label-feedback]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Afeedback
[search-atom-org-label-feedback]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Afeedback
[search-atom-repo-label-help-wanted]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Ahelp-wanted
[search-atom-org-label-help-wanted]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Ahelp-wanted
[search-atom-repo-label-beginner]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Abeginner
[search-atom-org-label-beginner]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Abeginner
[search-atom-repo-label-more-information-needed]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Amore-information-needed
[search-atom-org-label-more-information-needed]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Amore-information-needed
[search-atom-repo-label-needs-reproduction]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Aneeds-reproduction
[search-atom-org-label-needs-reproduction]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Aneeds-reproduction
[search-atom-repo-label-triage-help-needed]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Atriage-help-needed
[search-atom-org-label-triage-help-needed]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Atriage-help-needed
[search-atom-repo-label-windows]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Awindows
[search-atom-org-label-windows]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Awindows
[search-atom-repo-label-linux]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Alinux
[search-atom-org-label-linux]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Alinux
[search-atom-repo-label-mac]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Amac
[search-atom-org-label-mac]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Amac
[search-atom-repo-label-documentation]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Adocumentation
[search-atom-org-label-documentation]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Adocumentation
[search-atom-repo-label-performance]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Aperformance
[search-atom-org-label-performance]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Aperformance
[search-atom-repo-label-security]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Asecurity
[search-atom-org-label-security]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Asecurity
[search-atom-repo-label-ui]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Aui
[search-atom-org-label-ui]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Aui
[search-atom-repo-label-api]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Aapi
[search-atom-org-label-api]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Aapi
[search-atom-repo-label-crash]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Acrash
[search-atom-org-label-crash]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Acrash
[search-atom-repo-label-auto-indent]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Aauto-indent
[search-atom-org-label-auto-indent]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Aauto-indent
[search-atom-repo-label-encoding]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Aencoding
[search-atom-org-label-encoding]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Aencoding
[search-atom-repo-label-network]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Anetwork
[search-atom-org-label-network]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Anetwork
[search-atom-repo-label-uncaught-exception]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Auncaught-exception
[search-atom-org-label-uncaught-exception]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Auncaught-exception
[search-atom-repo-label-git]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Agit
[search-atom-org-label-git]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Agit
[search-atom-repo-label-blocked]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Ablocked
[search-atom-org-label-blocked]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Ablocked
[search-atom-repo-label-duplicate]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Aduplicate
[search-atom-org-label-duplicate]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Aduplicate
[search-atom-repo-label-wontfix]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Awontfix
[search-atom-org-label-wontfix]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Awontfix
[search-atom-repo-label-invalid]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Ainvalid
[search-atom-org-label-invalid]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Ainvalid
[search-atom-repo-label-package-idea]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Apackage-idea
[search-atom-org-label-package-idea]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Apackage-idea
[search-atom-repo-label-wrong-repo]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Awrong-repo
[search-atom-org-label-wrong-repo]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Awrong-repo
[search-atom-repo-label-editor-rendering]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Aeditor-rendering
[search-atom-org-label-editor-rendering]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Aeditor-rendering
[search-atom-repo-label-build-error]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Abuild-error
[search-atom-org-label-build-error]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Abuild-error
[search-atom-repo-label-error-from-pathwatcher]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Aerror-from-pathwatcher
[search-atom-org-label-error-from-pathwatcher]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Aerror-from-pathwatcher
[search-atom-repo-label-error-from-save]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Aerror-from-save
[search-atom-org-label-error-from-save]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Aerror-from-save
[search-atom-repo-label-error-from-open]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Aerror-from-open
[search-atom-org-label-error-from-open]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Aerror-from-open
[search-atom-repo-label-installer]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Ainstaller
[search-atom-org-label-installer]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Ainstaller
[search-atom-repo-label-auto-updater]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Aauto-updater
[search-atom-org-label-auto-updater]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Aauto-updater
[search-atom-repo-label-deprecation-help]: https://github.com/search?q=is%3Aopen+is%3Aissue+repo%3Aatom%2Fatom+label%3Adeprecation-help
[search-atom-org-label-deprecation-help]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Adeprecation-help
[search-atom-repo-label-electron]: https://github.com/search?q=is%3Aissue+repo%3Aatom%2Fatom+is%3Aopen+label%3Aelectron
[search-atom-org-label-electron]: https://github.com/search?q=is%3Aopen+is%3Aissue+user%3Aatom+label%3Aelectron
[search-atom-repo-label-work-in-progress]: https://github.com/search?q=is%3Aopen+is%3Apr+repo%3Aatom%2Fatom+label%3Awork-in-progress
[search-atom-org-label-work-in-progress]: https://github.com/search?q=is%3Aopen+is%3Apr+user%3Aatom+label%3Awork-in-progress
[search-atom-repo-label-needs-review]: https://github.com/search?q=is%3Aopen+is%3Apr+repo%3Aatom%2Fatom+label%3Aneeds-review
[search-atom-org-label-needs-review]: https://github.com/search?q=is%3Aopen+is%3Apr+user%3Aatom+label%3Aneeds-review
[search-atom-repo-label-under-review]: https://github.com/search?q=is%3Aopen+is%3Apr+repo%3Aatom%2Fatom+label%3Aunder-review
[search-atom-org-label-under-review]: https://github.com/search?q=is%3Aopen+is%3Apr+user%3Aatom+label%3Aunder-review
[search-atom-repo-label-requires-changes]: https://github.com/search?q=is%3Aopen+is%3Apr+repo%3Aatom%2Fatom+label%3Arequires-changes
[search-atom-org-label-requires-changes]: https://github.com/search?q=is%3Aopen+is%3Apr+user%3Aatom+label%3Arequires-changes
[search-atom-repo-label-needs-testing]: https://github.com/search?q=is%3Aopen+is%3Apr+repo%3Aatom%2Fatom+label%3Aneeds-testing
[search-atom-org-label-needs-testing]: https://github.com/search?q=is%3Aopen+is%3Apr+user%3Aatom+label%3Aneeds-testing
[beginner]:https://github.com/search?utf8=%E2%9C%93&q=is%3Aopen+is%3Aissue+label%3Abeginner+label%3Ahelp-wanted+user%3Aatom+sort%3Acomments-desc
[help-wanted]:https://github.com/search?q=is%3Aopen+is%3Aissue+label%3Ahelp-wanted+user%3Aatom+sort%3Acomments-desc+-label%3Abeginner
[contributing-to-official-atom-packages]:https://flight-manual.atom.io/hacking-atom/sections/contributing-to-official-atom-packages/
[hacking-on-atom-core]: https://flight-manual.atom.io/hacking-atom/sections/hacking-on-atom-core/
================================================
FILE: Dockerfile
================================================
# VERSION: 0.2
# DESCRIPTION: Image to build Atom
FROM ubuntu:20.04
# Install dependencies
RUN apt-get update && \
DEBIAN_FRONTEND="noninteractive" \
apt-get install -y \
build-essential \
git \
libsecret-1-dev \
fakeroot \
rpm \
libx11-dev \
libxkbfile-dev \
libgdk-pixbuf2.0-dev \
libgtk-3-dev \
libxss-dev \
libasound2-dev \
npm && \
rm -rf /var/lib/apt/lists/*
# Update npm and dependencies
RUN npm install -g npm --loglevel error
# Use python2 by default
RUN npm config set python /usr/bin/python2 -g
ENTRYPOINT ["/usr/bin/env", "sh", "-c"]
CMD ["bash"]
================================================
FILE: LICENSE.md
================================================
Copyright (c) 2011-2021 GitHub Inc.
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.
================================================
FILE: PULL_REQUEST_TEMPLATE.md
================================================
⚛👋 Hello there! Welcome. Please follow the steps below to tell us about your contribution.
1. Copy the correct template for your contribution
- 🐛 Are you fixing a bug? Copy the template from <https://bit.ly/atom-bugfix-pr>
- 📈 Are you improving performance? Copy the template from <https://bit.ly/atom-perf-pr>
- 📝 Are you updating documentation? Copy the template from <https://bit.ly/atom-docs-pr>
- 💻 Are you changing functionality? Copy the template from <https://bit.ly/atom-behavior-pr>
2. Replace this text with the contents of the template
3. Fill in all sections of the template
4. Click "Create pull request"
================================================
FILE: README.md
================================================
# Atom
[](https://dev.azure.com/github/Atom/_build/latest?definitionId=32&branchName=master)
Atom is a hackable text editor for the 21st century, built on [Electron](https://github.com/electron/electron), and based on everything we love about our favorite editors. We designed it to be deeply customizable, but still approachable using the default configuration.


Visit [atom.io](https://atom.io) to learn more or visit the [Atom forum](https://github.com/atom/atom/discussions).
Follow [@AtomEditor](https://twitter.com/atomeditor) on Twitter for important
announcements.
This project adheres to the Contributor Covenant [code of conduct](CODE_OF_CONDUCT.md).
By participating, you are expected to uphold this code. Please report unacceptable behavior to atom@github.com.
## Documentation
If you want to read about using Atom or developing packages in Atom, the [Atom Flight Manual](https://flight-manual.atom.io) is free and available online. You can find the source to the manual in [atom/flight-manual.atom.io](https://github.com/atom/flight-manual.atom.io).
The [API reference](https://atom.io/docs/api) for developing packages is also documented on Atom.io.
## Installing
### Prerequisites
- [Git](https://git-scm.com)
### macOS
Download the latest [Atom release](https://github.com/atom/atom/releases/latest).
Atom will automatically update when a new release is available.
### Windows
Download the latest [Atom installer](https://github.com/atom/atom/releases/latest). `AtomSetup.exe` is 32-bit. For 64-bit systems, download `AtomSetup-x64.exe`.
Atom will automatically update when a new release is available.
You can also download `atom-windows.zip` (32-bit) or `atom-x64-windows.zip` (64-bit) from the [releases page](https://github.com/atom/atom/releases/latest).
The `.zip` version will not automatically update.
Using [Chocolatey](https://chocolatey.org)? Run `cinst Atom` to install the latest version of Atom.
### Linux
Atom is only available for 64-bit Linux systems.
Configure your distribution's package manager to install and update Atom by following the [Linux installation instructions](https://flight-manual.atom.io/getting-started/sections/installing-atom/#platform-linux) in the Flight Manual. You will also find instructions on how to install Atom's official Linux packages without using a package repository, though you will not get automatic updates after installing Atom this way.
#### Archive extraction
An archive is available for people who don't want to install `atom` as root.
This version enables you to install multiple Atom versions in parallel. It has been built on Ubuntu 64-bit,
but should be compatible with other Linux distributions.
1. Install dependencies (on Ubuntu):
```sh
sudo apt install git libasound2 libcurl4 libgbm1 libgcrypt20 libgtk-3-0 libnotify4 libnss3 libglib2.0-bin xdg-utils libx11-xcb1 libxcb-dri3-0 libxss1 libxtst6 libxkbfile1
```
2. Download `atom-amd64.tar.gz` from the [Atom releases page](https://github.com/atom/atom/releases/latest).
3. Run `tar xf atom-amd64.tar.gz` in the directory where you want to extract the Atom folder.
4. Launch Atom using the installed `atom` command from the newly extracted directory.
The Linux version does not currently automatically update so you will need to
repeat these steps to upgrade to future releases.
## Building
* [Linux](https://flight-manual.atom.io/hacking-atom/sections/hacking-on-atom-core/#platform-linux)
* [macOS](https://flight-manual.atom.io/hacking-atom/sections/hacking-on-atom-core/#platform-mac)
* [Windows](https://flight-manual.atom.io/hacking-atom/sections/hacking-on-atom-core/#platform-windows)
## Discussion
* Discuss Atom on [GitHub Discussions](https://github.com/atom/atom/discussions)
## License
[MIT](https://github.com/atom/atom/blob/master/LICENSE.md)
When using the Atom or other GitHub logos, be sure to follow the [GitHub logo guidelines](https://github.com/logos).
================================================
FILE: SUPPORT.md
================================================
# Atom Support
If you're looking for support for Atom there are a lot of options, check out:
* User Documentation — [The Atom Flight Manual](https://flight-manual.atom.io)
* Developer Documentation — [Atom API Documentation](https://atom.io/docs/api/latest)
* Message Board — [Github Discussions, the official Atom message board](https://github.com/atom/atom/discussions)
On Atoms Github Discussions board, there are a bunch of helpful community members that should be willing to point you in the right direction.
================================================
FILE: apm/README.md
================================================
This folder is where [apm](https://github.com/atom/apm) is installed to so that
it is bundled with Atom.
================================================
FILE: apm/package.json
================================================
{
"name": "atom-bundled-apm",
"description": "Atom's bundled apm",
"repository": {
"type": "git",
"url": "https://github.com/atom/atom.git"
},
"dependencies": {
"atom-package-manager": "2.6.2"
}
}
================================================
FILE: atom.sh
================================================
#!/bin/bash
if [ "$(uname)" == 'Darwin' ]; then
OS='Mac'
elif [ "$(expr substr $(uname -s) 1 5)" == 'Linux' ]; then
OS='Linux'
else
echo "Your platform ($(uname -a)) is not supported."
exit 1
fi
case $(basename $0) in
atom-beta)
CHANNEL=beta
;;
atom-nightly)
CHANNEL=nightly
;;
atom-dev)
CHANNEL=dev
;;
*)
CHANNEL=stable
;;
esac
# Only set the ATOM_DISABLE_SHELLING_OUT_FOR_ENVIRONMENT env var if it hasn't been set.
if [ -z "$ATOM_DISABLE_SHELLING_OUT_FOR_ENVIRONMENT" ]
then
export ATOM_DISABLE_SHELLING_OUT_FOR_ENVIRONMENT=true
fi
ATOM_ADD=false
ATOM_NEW_WINDOW=false
EXIT_CODE_OVERRIDE=
while getopts ":anwtfvh-:" opt; do
case "$opt" in
-)
case "${OPTARG}" in
add)
ATOM_ADD=true
;;
new-window)
ATOM_NEW_WINDOW=true
;;
wait)
WAIT=1
;;
help|version)
REDIRECT_STDERR=1
EXPECT_OUTPUT=1
;;
foreground|benchmark|benchmark-test|test)
EXPECT_OUTPUT=1
;;
enable-electron-logging)
export ELECTRON_ENABLE_LOGGING=1
;;
esac
;;
a)
ATOM_ADD=true
;;
n)
ATOM_NEW_WINDOW=true
;;
w)
WAIT=1
;;
h|v)
REDIRECT_STDERR=1
EXPECT_OUTPUT=1
;;
f|t)
EXPECT_OUTPUT=1
;;
esac
done
if [ "${ATOM_ADD}" = "true" ] && [ "${ATOM_NEW_WINDOW}" = "true" ]; then
EXPECT_OUTPUT=1
EXIT_CODE_OVERRIDE=1
fi
if [ $REDIRECT_STDERR ]; then
exec 2> /dev/null
fi
ATOM_HOME="${ATOM_HOME:-$HOME/.atom}"
mkdir -p "$ATOM_HOME"
if [ $OS == 'Mac' ]; then
if [ -L "$0" ]; then
SCRIPT="$(readlink "$0")"
else
SCRIPT="$0"
fi
ATOM_APP="$(dirname "$(dirname "$(dirname "$(dirname "$SCRIPT")")")")"
if [ "$ATOM_APP" == . ]; then
unset ATOM_APP
else
ATOM_PATH="$(dirname "$ATOM_APP")"
ATOM_APP_NAME="$(basename "$ATOM_APP")"
fi
if [ ! -z "${ATOM_APP_NAME}" ]; then
# If ATOM_APP_NAME is known, use it as the executable name
ATOM_EXECUTABLE_NAME="${ATOM_APP_NAME%.*}"
else
# Else choose it from the inferred channel name
if [ "$CHANNEL" == 'beta' ]; then
ATOM_EXECUTABLE_NAME="Atom Beta"
elif [ "$CHANNEL" == 'nightly' ]; then
ATOM_EXECUTABLE_NAME="Atom Nightly"
elif [ "$CHANNEL" == 'dev' ]; then
ATOM_EXECUTABLE_NAME="Atom Dev"
else
ATOM_EXECUTABLE_NAME="Atom"
fi
fi
if [ -z "${ATOM_PATH}" ]; then
# If ATOM_PATH isn't set, check /Applications and then ~/Applications for Atom.app
if [ -x "/Applications/$ATOM_APP_NAME" ]; then
ATOM_PATH="/Applications"
elif [ -x "$HOME/Applications/$ATOM_APP_NAME" ]; then
ATOM_PATH="$HOME/Applications"
else
# We haven't found an Atom.app, use spotlight to search for Atom
ATOM_PATH="$(mdfind "kMDItemCFBundleIdentifier == 'com.github.atom'" | grep -v ShipIt | head -1 | xargs -0 dirname)"
# Exit if Atom can't be found
if [ ! -x "$ATOM_PATH/$ATOM_APP_NAME" ]; then
echo "Cannot locate ${ATOM_APP_NAME}, it is usually located in /Applications. Set the ATOM_PATH environment variable to the directory containing ${ATOM_APP_NAME}."
exit 1
fi
fi
fi
if [ $EXPECT_OUTPUT ]; then
"$ATOM_PATH/$ATOM_APP_NAME/Contents/MacOS/$ATOM_EXECUTABLE_NAME" --executed-from="$(pwd)" --pid=$$ "$@"
ATOM_EXIT=$?
if [ ${ATOM_EXIT} -eq 0 ] && [ -n "${EXIT_CODE_OVERRIDE}" ]; then
exit "${EXIT_CODE_OVERRIDE}"
else
exit ${ATOM_EXIT}
fi
else
open -a "$ATOM_PATH/$ATOM_APP_NAME" -n --args --executed-from="$(pwd)" --pid=$$ --path-environment="$PATH" "$@"
fi
elif [ $OS == 'Linux' ]; then
SCRIPT=$(readlink -f "$0")
USR_DIRECTORY=$(readlink -f $(dirname $SCRIPT)/..)
case $CHANNEL in
beta)
ATOM_PATH="$USR_DIRECTORY/share/atom-beta/atom"
;;
nightly)
ATOM_PATH="$USR_DIRECTORY/share/atom-nightly/atom"
;;
dev)
ATOM_PATH="$USR_DIRECTORY/share/atom-dev/atom"
;;
*)
ATOM_PATH="$USR_DIRECTORY/share/atom/atom"
;;
esac
#Will allow user to get context menu on cinnamon desktop enviroment
if [[ "$(expr substr $(printenv | grep "DESKTOP_SESSION=") 17 8)" == "cinnamon" ]]; then
cp "resources/linux/desktopenviroment/cinnamon/atom.nemo_action" "/usr/share/nemo/actions/atom.nemo_action"
fi
: ${TMPDIR:=/tmp}
[ -x "$ATOM_PATH" ] || ATOM_PATH="$TMPDIR/atom-build/Atom/atom"
if [ $EXPECT_OUTPUT ]; then
"$ATOM_PATH" --executed-from="$(pwd)" --pid=$$ "$@"
ATOM_EXIT=$?
if [ ${ATOM_EXIT} -eq 0 ] && [ -n "${EXIT_CODE_OVERRIDE}" ]; then
exit "${EXIT_CODE_OVERRIDE}"
else
exit ${ATOM_EXIT}
fi
else
(
nohup "$ATOM_PATH" --executed-from="$(pwd)" --pid=$$ "$@" > "$ATOM_HOME/nohup.out" 2>&1
if [ $? -ne 0 ]; then
cat "$ATOM_HOME/nohup.out"
exit $?
fi
) &
fi
fi
# Exits this process when Atom is used as $EDITOR
on_die() {
exit 0
}
trap 'on_die' SIGQUIT SIGTERM
# If the wait flag is set, don't exit this process until Atom kills it.
if [ $WAIT ]; then
WAIT_FIFO="$ATOM_HOME/.wait_fifo"
if [ ! -p "$WAIT_FIFO" ]; then
rm -f "$WAIT_FIFO"
mkfifo "$WAIT_FIFO"
fi
# Block endlessly by reading from a named pipe.
exec 2>/dev/null
read < "$WAIT_FIFO"
# If the read completes for some reason, fall back to sleeping in a loop.
while true; do
sleep 1
done
fi
================================================
FILE: benchmarks/benchmark-runner.js
================================================
const Chart = require('chart.js');
const glob = require('glob');
const fs = require('fs-plus');
const path = require('path');
module.exports = async ({ test, benchmarkPaths }) => {
document.body.style.backgroundColor = '#ffffff';
document.body.style.overflow = 'auto';
let paths = [];
for (const benchmarkPath of benchmarkPaths) {
if (fs.isDirectorySync(benchmarkPath)) {
paths = paths.concat(
glob.sync(path.join(benchmarkPath, '**', '*.bench.js'))
);
} else {
paths.push(benchmarkPath);
}
}
while (paths.length > 0) {
const benchmark = require(paths.shift())({ test });
let results;
if (benchmark instanceof Promise) {
results = await benchmark;
} else {
results = benchmark;
}
const dataByBenchmarkName = {};
for (const { name, duration, x } of results) {
dataByBenchmarkName[name] = dataByBenchmarkName[name] || { points: [] };
dataByBenchmarkName[name].points.push({ x, y: duration });
}
const benchmarkContainer = document.createElement('div');
document.body.appendChild(benchmarkContainer);
for (const key in dataByBenchmarkName) {
const data = dataByBenchmarkName[key];
if (data.points.length > 1) {
const canvas = document.createElement('canvas');
benchmarkContainer.appendChild(canvas);
// eslint-disable-next-line no-new
new Chart(canvas, {
type: 'line',
data: {
datasets: [{ label: key, fill: false, data: data.points }]
},
options: {
showLines: false,
scales: { xAxes: [{ type: 'linear', position: 'bottom' }] }
}
});
const textualOutput =
`${key}:\n\n` + data.points.map(p => `${p.x}\t${p.y}`).join('\n');
console.log(textualOutput);
} else {
const title = document.createElement('h2');
title.textContent = key;
benchmarkContainer.appendChild(title);
const duration = document.createElement('p');
duration.textContent = `${data.points[0].y}ms`;
benchmarkContainer.appendChild(duration);
const textualOutput = `${key}: ${data.points[0].y}`;
console.log(textualOutput);
}
await global.atom.reset();
}
}
return 0;
};
================================================
FILE: benchmarks/text-editor-large-file-construction.bench.js
================================================
const { TextEditor, TextBuffer } = require('atom');
const MIN_SIZE_IN_KB = 0 * 1024;
const MAX_SIZE_IN_KB = 10 * 1024;
const SIZE_STEP_IN_KB = 1024;
const LINE_TEXT = 'Lorem ipsum dolor sit amet\n';
const TEXT = LINE_TEXT.repeat(
Math.ceil((MAX_SIZE_IN_KB * 1024) / LINE_TEXT.length)
);
module.exports = async ({ test }) => {
const data = [];
document.body.appendChild(atom.workspace.getElement());
atom.packages.loadPackages();
await atom.packages.activate();
for (let pane of atom.workspace.getPanes()) {
pane.destroy();
}
for (
let sizeInKB = MIN_SIZE_IN_KB;
sizeInKB < MAX_SIZE_IN_KB;
sizeInKB += SIZE_STEP_IN_KB
) {
const text = TEXT.slice(0, sizeInKB * 1024);
console.log(text.length / 1024);
let t0 = window.performance.now();
const buffer = new TextBuffer({ text });
const editor = new TextEditor({
buffer,
autoHeight: false,
largeFileMode: true
});
atom.grammars.autoAssignLanguageMode(buffer);
atom.workspace.getActivePane().activateItem(editor);
let t1 = window.performance.now();
data.push({
name: 'Opening a large file',
x: sizeInKB,
duration: t1 - t0
});
const tickDurations = [];
for (let i = 0; i < 20; i++) {
await timeout(50);
t0 = window.performance.now();
await timeout(0);
t1 = window.performance.now();
tickDurations[i] = t1 - t0;
}
data.push({
name: 'Max time event loop was blocked after opening a large file',
x: sizeInKB,
duration: Math.max(...tickDurations)
});
t0 = window.performance.now();
editor.setCursorScreenPosition(
editor.element.screenPositionForPixelPosition({
top: 100,
left: 30
})
);
t1 = window.performance.now();
data.push({
name: 'Clicking the editor after opening a large file',
x: sizeInKB,
duration: t1 - t0
});
t0 = window.performance.now();
editor.element.setScrollTop(editor.element.getScrollTop() + 100);
t1 = window.performance.now();
data.push({
name: 'Scrolling down after opening a large file',
x: sizeInKB,
duration: t1 - t0
});
editor.destroy();
buffer.destroy();
await timeout(10000);
}
atom.workspace.getElement().remove();
return data;
};
function timeout(duration) {
return new Promise(resolve => setTimeout(resolve, duration));
}
================================================
FILE: benchmarks/text-editor-long-lines.bench.js
================================================
const path = require('path');
const fs = require('fs');
const { TextEditor, TextBuffer } = require('atom');
const SIZES_IN_KB = [512, 1024, 2048];
const REPEATED_TEXT = fs
.readFileSync(
path.join(__dirname, '..', 'spec', 'fixtures', 'sample.js'),
'utf8'
)
.replace(/\n/g, '');
const TEXT = REPEATED_TEXT.repeat(
Math.ceil((SIZES_IN_KB[SIZES_IN_KB.length - 1] * 1024) / REPEATED_TEXT.length)
);
module.exports = async ({ test }) => {
const data = [];
const workspaceElement = atom.workspace.getElement();
document.body.appendChild(workspaceElement);
atom.packages.loadPackages();
await atom.packages.activate();
console.log(atom.getLoadSettings().resourcePath);
for (let pane of atom.workspace.getPanes()) {
pane.destroy();
}
for (const sizeInKB of SIZES_IN_KB) {
const text = TEXT.slice(0, sizeInKB * 1024);
console.log(text.length / 1024);
let t0 = window.performance.now();
const buffer = new TextBuffer({ text });
const editor = new TextEditor({
buffer,
autoHeight: false,
largeFileMode: true
});
atom.grammars.assignLanguageMode(buffer, 'source.js');
atom.workspace.getActivePane().activateItem(editor);
let t1 = window.performance.now();
data.push({
name: 'Opening a large single-line file',
x: sizeInKB,
duration: t1 - t0
});
const tickDurations = [];
for (let i = 0; i < 20; i++) {
await timeout(50);
t0 = window.performance.now();
await timeout(0);
t1 = window.performance.now();
tickDurations[i] = t1 - t0;
}
data.push({
name:
'Max time event loop was blocked after opening a large single-line file',
x: sizeInKB,
duration: Math.max(...tickDurations)
});
t0 = window.performance.now();
editor.setCursorScreenPosition(
editor.element.screenPositionForPixelPosition({
top: 100,
left: 30
})
);
t1 = window.performance.now();
data.push({
name: 'Clicking the editor after opening a large single-line file',
x: sizeInKB,
duration: t1 - t0
});
t0 = window.performance.now();
editor.element.setScrollTop(editor.element.getScrollTop() + 100);
t1 = window.performance.now();
data.push({
name: 'Scrolling down after opening a large single-line file',
x: sizeInKB,
duration: t1 - t0
});
editor.destroy();
buffer.destroy();
await timeout(10000);
}
workspaceElement.remove();
return data;
};
function timeout(duration) {
return new Promise(resolve => setTimeout(resolve, duration));
}
================================================
FILE: coffeelint.json
================================================
{
"max_line_length": {
"level": "ignore"
},
"no_empty_param_list": {
"level": "error"
},
"arrow_spacing": {
"level": "error"
},
"no_interpolation_in_single_quotes": {
"level": "error"
},
"no_debugger": {
"level": "error"
},
"prefer_english_operator": {
"level": "error"
},
"colon_assignment_spacing": {
"spacing": {
"left": 0,
"right": 1
},
"level": "error"
},
"braces_spacing": {
"spaces": 0,
"level": "error"
},
"spacing_after_comma": {
"level": "error"
},
"no_stand_alone_at": {
"level": "error"
}
}
================================================
FILE: docs/README.md
================================================
# Atom Docs

Most of the Atom user and developer documentation is contained in the [Atom Flight Manual](https://github.com/atom/flight-manual.atom.io).
## Build documentation
Instructions for building Atom on various platforms from source.
* Moved to [the Flight Manual](https://flight-manual.atom.io/hacking-atom/sections/hacking-on-atom-core/)
* Linux
* macOS
* Windows
## Other documentation
[Native Profiling on macOS](./native-profiling.md)
The other documentation that was listed here previously has been moved to [the Flight Manual](https://flight-manual.atom.io).
================================================
FILE: docs/apm-rest-api.md
================================================
# Atom.io package and update API
The information that was here has been moved to [a permanent home inside Atom's Flight Manual.](https://flight-manual.atom.io/atom-server-side-apis/)
================================================
FILE: docs/build-instructions/build-status.md
================================================
# Atom build status
> **Note**: Since Atom's electron version is outdated, the electron badges are from old versions.
| System | Azure Pipelines | CircleCI | AppVeyor/Win | Dependencies |
|--------|--------|--------------|------------|--------------|
| [Atom](https://github.com/atom/atom) | [](https://github.visualstudio.com/Atom/_build/latest?definitionId=32&branch=master) | | | [](https://david-dm.org/atom/atom) |
| [APM](https://github.com/atom/apm) | [](https://dev.azure.com/github/Atom/_build/latest?definitionId=32&branchName=master) | |
| [Electron](https://github.com/electron/electron) | | [](https://circleci.com/gh/electron/electron/tree/master) | [](https://ci.appveyor.com/project/electron-bot/electron-ljo26/branch/master) | [](https://david-dm.org/electron/electron)
> **Note**: Some repositories have been merged with Atom.
> See <https://github.com/atom/atom/blob/master/packages/README.md> for details.
>
> Here are the packages, libraries, tools, and languages tested along with Atom, and so have no testing badges:
>
> - [about](https://github.com/atom/atom/tree/master/packages/about)
> - [autoflow](https://github.com/atom/atom/tree/master/packages/autoflow)
> - [deprecation-cop](https://github.com/atom/atom/tree/master/packages/deprecation-cop)
> - [dev-live-reload](https://github.com/atom/atom/tree/master/packages/dev-live-reload)
> - [exception-reporting](https://github.com/atom/atom/tree/master/packages/exception-reporting)
> - [git-diff](https://github.com/atom/atom/tree/master/packages/git-diff)
> - [go-to-line](https://github.com/atom/atom/tree/master/packages/go-to-line)
> - [grammar-selector](https://github.com/atom/atom/tree/master/packages/grammar-selector)
> - [line-ending-selector](https://github.com/atom/atom/tree/master/packages/line-ending-selector)
> - [link](https://github.com/atom/atom/tree/master/packages/link)
> - [ruby-on-rails](https://github.com/atom/atom/tree/master/packages/ruby-on-rails)
> - [update-package-dependencies](https://github.com/atom/atom/tree/master/packages/update-package-dependencies)
> - [welcome](https://github.com/atom/atom/tree/master/packages/welcome)
>
> The dependency badges might be irrelevant, so take them with a grain of salt (e.g. not very seriously).
## Packages
| Package | Github Actions | Dependencies |
|---|---|---|
| [About](https://github.com/atom/atom/tree/master/packages/about) | | [](https://david-dm.org/atom/about) |
| [Archive View](https://github.com/atom/archive-view) | [](https://github.com/atom/archive-view/actions) | [](https://david-dm.org/atom/archive-view) |
| [AutoComplete Atom API](https://github.com/atom/autocomplete-atom-api) | [](https://github.com/atom/autocomplete-atom-api/actions) | [](https://david-dm.org/atom/autocomplete-atom-api) |
| [AutoComplete CSS](https://github.com/atom/autocomplete-css) | [](https://github.com/atom/autocomplete-css/actions) | [](https://david-dm.org/atom/autocomplete-css) |
| [AutoComplete HTML](https://github.com/atom/autocomplete-html) | [](https://github.com/atom/autocomplete-html/actions) | [](https://david-dm.org/atom/autocomplete-html) |
| [AutoComplete+](https://github.com/atom/autocomplete-plus) | [](https://github.com/atom/autocomplete-plus/actions) | [](https://david-dm.org/atom/autocomplete-plus) |
| [AutoComplete Snippets](https://github.com/atom/autocomplete-snippets) | [](https://github.com/atom/autocomplete-snippets/actions) | [](https://david-dm.org/atom/autocomplete-snippets) |
| [AutoFlow](https://github.com/atom/atom/tree/master/packages/autoflow) | | [](https://david-dm.org/atom/autoflow) |
| [AutoSave](https://github.com/atom/autosave) | [](https://github.com/atom/autosave/actions) | [](https://david-dm.org/atom/autosave) |
| [Background Tips](https://github.com/atom/background-tips) | [](https://github.com/atom/background-tips/actions) | [](https://david-dm.org/atom/background-tips) |
| [Bookmarks](https://github.com/atom/bookmarks) | [](https://github.com/atom/bookmarks/actions) | [](https://david-dm.org/atom/bookmarks) |
| [Bracket Matcher](https://github.com/atom/bracket-matcher) | [](https://github.com/atom/bracket-matcher/actions) | [](https://david-dm.org/atom/bracket-matcher) |
| [Command Palette](https://github.com/atom/command-palette) | [](https://github.com/atom/command-palette/actions) | [](https://david-dm.org/atom/command-palette) |
| [Deprecation Cop](https://github.com/atom/atom/tree/master/packages/deprecation-cop) | | [](https://david-dm.org/atom/deprecation-cop) |
| [Dev Live Reload](https://github.com/atom/atom/tree/master/packages/dev-live-reload) | | [](https://david-dm.org/atom/dev-live-reload) |
| [Encoding Selector](https://github.com/atom/encoding-selector) | [](https://github.com/atom/encoding-selector/actions) | [](https://david-dm.org/atom/encoding-selector) |
| [Exception Reporting](https://github.com/atom/atom/tree/master/packages/exception-reporting) | | [](https://david-dm.org/atom/exception-reporting) |
| [Find and Replace](https://github.com/atom/find-and-replace) | [](https://github.com/atom/find-and-replace/actions) | [](https://david-dm.org/atom/find-and-replace) |
| [Fuzzy Finder](https://github.com/atom/fuzzy-finder) | [](https://github.com/atom/fuzzy-finder/actions) | [](https://david-dm.org/atom/fuzzy-finder) |
| [GitHub](https://github.com/atom/github) | [](https://github.com/atom/github/actions?query=workflow%3Aci+branch%3Amaster) | [](https://david-dm.org/atom/github) |
| [Git Diff](https://github.com/atom/atom/tree/master/packages/) | | [](https://david-dm.org/atom/git-diff) |
| [Go to Line](https://github.com/atom/atom/tree/master/packages/) | | [](https://david-dm.org/atom/go-to-line) |
| [Grammar Selector](https://github.com/atom/atom/tree/master/packages/grammar-selector) | | [](https://david-dm.org/atom/grammar-selector) |
| [Image View](https://github.com/atom/image-view) | [](https://github.com/atom/image-view/actions) | [](https://david-dm.org/atom/image-view) |
| [Incompatible Packages](https://github.com/atom/incompatible-packages) | | [](https://david-dm.org/atom/incompatible-packages) |
| [Keybinding Resolver](https://github.com/atom/keybinding-resolver) | [](https://github.com/atom/keybinding-resolver/actions) | [](https://david-dm.org/atom/keybinding-resolver) |
| [Line Ending Selector](https://github.com/atom/atom/tree/master/packages/line-ending-selector) | | [](https://david-dm.org/atom/line-ending-selector) |
| [Link](https://github.com/atom/atom/tree/master/packages/link) | | [](https://david-dm.org/atom/link) |
| [Markdown Preview](https://github.com/atom/markdown-preview) | [](https://github.com/atom/markdown-preview/actions) | [](https://david-dm.org/atom/markdown-preview) |
| [Metrics](https://github.com/atom/metrics) | [](https://github.com/atom/metrics/actions) | [](https://david-dm.org/atom/metrics) |
| [Notifications](https://github.com/atom/notifications) | [](https://github.com/atom/notifications/actions) | [](https://david-dm.org/atom/notifications) |
| [Open on GitHub](https://github.com/atom/open-on-github) | [](https://github.com/atom/open-on-github/actions) | [](https://david-dm.org/atom/open-on-github) |
| [Package Generator](https://github.com/atom/package-generator) | [](https://github.com/atom/package-generator/actions) | [](https://david-dm.org/atom/package-generator) |
| [Settings View](https://github.com/atom/settings-view) | [](https://github.com/atom/settings-view/actions) | [](https://david-dm.org/atom/settings-view) |
| [Snippets](https://github.com/atom/snippets) | [](https://github.com/atom/snippets/actions) | [](https://david-dm.org/atom/snippets) |
| [Spell Check](https://github.com/atom/spell-check) | [](https://github.com/atom/spell-check/actions) | [](https://david-dm.org/atom/spell-check) |
| [Status Bar](https://github.com/atom/status-bar) | [](https://github.com/atom/status-bar/actions) | [](https://david-dm.org/atom/status-bar) |
| [Styleguide](https://github.com/atom/styleguide) | [](https://github.com/atom/styleguide/actions) | [](https://david-dm.org/atom/styleguide) |
| [Symbols View](https://github.com/atom/symbols-view) | [](https://github.com/atom/symbols-view/actions) | [](https://david-dm.org/atom/symbols-view) |
| [Tabs](https://github.com/atom/tabs) | [](https://github.com/atom/tabs/actions) | [](https://david-dm.org/atom/tabs) |
| [Timecop](https://github.com/atom/timecop) | [](https://github.com/atom/timecop/actions) | [](https://david-dm.org/atom/timecop) |
| [Tree View](https://github.com/atom/tree-view) | [](https://github.com/atom/tree-view/actions) | [](https://david-dm.org/atom/tree-view) |
| [Update Package Dependencies](https://github.com/atom/atom/tree/master/packages/update-package-dependencies) | | [](https://david-dm.org/atom/update-package-dependencies) |
| [Welcome](https://github.com/atom/atom/tree/master/packages/welcome) | | [](https://david-dm.org/atom/welcome) |
| [Whitespace](https://github.com/atom/whitespace) | [](https://github.com/atom/whitespace/actions) | [](https://david-dm.org/atom/whitespace) |
| [Wrap Guide](https://github.com/atom/wrap-guide) | [](https://github.com/atom/wrap-guide/actions) | [](https://david-dm.org/atom/wrap-guide) |
## Libraries
| Library | Github Actions | Dependencies |
|---------|----------------|--------------|
| [Clear Cut](https://github.com/atom/clear-cut) | | [](https://david-dm.org/atom/clear-cut) |
| [Event Kit](https://github.com/atom/event-kit) | [](https://github.com/atom/event-kit/actions) | [](https://david-dm.org/atom/event-kit) |
| [First Mate](https://github.com/atom/first-mate) | [](https://github.com/atom/first-mate/actions) | [](https://david-dm.org/atom/first-mate) |
| [Fs Plus](https://github.com/atom/fs-plus) | [](https://github.com/atom/fs-plus/actions) | [](https://david-dm.org/atom/fs-plus) |
| [Grim](https://github.com/atom/grim) | [](https://github.com/atom/grim/actions) | [](https://david-dm.org/atom/grim) |
| [Jasmine Focused](https://github.com/atom/jasmine-focused) | | [](https://david-dm.org/atom/jasmine-focused) |
| [Keyboard Layout](https://github.com/atom/keyboard-layout) | [](https://github.com/atom/keyboard-layout/actions) | [](https://david-dm.org/atom/keyboard-layout) |
| [Oniguruma](https://github.com/atom/node-oniguruma) | [](https://github.com/atom/node-oniguruma/actions) | [](https://david-dm.org/atom/node-oniguruma) |
| [PathWatcher](https://github.com/atom/node-pathwatcher) | [](https://github.com/atom/node-pathwatcher/actions) | [](https://david-dm.org/atom/node-pathwatcher) |
| [Property Accessors](https://github.com/atom/property-accessors) | | [](https://david-dm.org/atom/property-accessors) |
| [Season](https://github.com/atom/season) | | [](https://david-dm.org/atom/season) |
| [Superstring](https://github.com/atom/superstring) | [](https://github.com/atom/superstring/actions) | [](https://david-dm.org/atom/superstring) |
| [TextBuffer](https://github.com/atom/text-buffer) | [](https://github.com/atom/text-buffer/actions) | [](https://david-dm.org/atom/text-buffer) |
| [Underscore-Plus](https://github.com/atom/underscore-plus) | [](https://github.com/atom/underscore-plus/actions) | [](https://david-dm.org/atom/underscore-plus) |
## Tools
| Language | Github Actions | Dependencies |
|----------|----------------|--------------|
| [AtomDoc](https://github.com/atom/atomdoc) | [](https://github.com/atom/atomdoc/actions) | [](https://david-dm.org/atom/atomdoc)
## Languages
| Language | Github Actions |
|----------|----------------|
| [C/C++](https://github.com/atom/language-c) | [](https://github.com/atom/language-c/actions) |
| [C#](https://github.com/atom/language-csharp) | [](https://github.com/atom/language-csharp/actions) |
| [Clojure](https://github.com/atom/language-clojure) | [](https://github.com/atom/language-clojure/actions) |
| [CoffeeScript](https://github.com/atom/language-coffee-script) | [](https://github.com/atom/language-coffee-script/actions) |
| [CSS](https://github.com/atom/language-css) | [](https://github.com/atom/language-css/actions) |
| [Git](https://github.com/atom/language-git) | [](https://github.com/atom/language-git/actions) |
| [GitHub Flavored Markdown](https://github.com/atom/language-gfm) | [](https://github.com/atom/language-gfm/actions) |
| [Go](https://github.com/atom/language-go) | [](https://github.com/atom/language-go/actions) |
| [HTML](https://github.com/atom/language-html) | [](https://github.com/atom/language-html/actions) |
| [Hyperlink](https://github.com/atom/language-hyperlink) | [](https://github.com/atom/language-hyperlink/actions) |
| [Java](https://github.com/atom/language-java) | [](https://github.com/atom/language-java/actions) |
| [JavaScript](https://github.com/atom/language-javascript) | [](https://github.com/atom/language-javascript/actions) |
| [JSON](https://github.com/atom/language-json) | [](https://github.com/atom/language-json/actions) |
| [Less](https://github.com/atom/language-less) | [](https://github.com/atom/language-less/actions) |
| [Make](https://github.com/atom/language-make) | [](https://github.com/atom/language-make/actions) |
| [Mustache](https://github.com/atom/language-mustache) | [](https://github.com/atom/language-mustache/actions) |
| [Objective-C](https://github.com/atom/language-objective-c) | [](https://github.com/atom/language-objective-c/actions) |
| [Pegjs](https://github.com/atom/language-pegjs) | |
| [Perl](https://github.com/atom/language-perl) | [](https://github.com/atom/language-perl/actions) |
| [PHP](https://github.com/atom/language-php) | [](https://github.com/atom/language-php/actions) |
| [Property-List](https://github.com/atom/language-property-list) | [](https://github.com/atom/language-property-list/actions) |
| [Puppet](https://github.com/atom/language-puppet) | [](https://github.com/atom/language-puppet/actions) |
| [Python](https://github.com/atom/language-python) | [](https://github.com/atom/language-python/actions) |
| [Ruby](https://github.com/atom/language-ruby) | [](https://github.com/atom/language-ruby/actions) |
| [Ruby on Rails](https://github.com/atom/atom/tree/master/packages/ruby-on-rails) | |
| [Sass](https://github.com/atom/language-sass) | [](https://github.com/atom/language-sass/actions) |
| [Shellscript](https://github.com/atom/language-shellscript) | [](https://github.com/atom/language-shellscript/actions) |
| [Source](https://github.com/atom/language-source) | [](https://github.com/atom/language-source/actions) |
| [SQL](https://github.com/atom/language-sql) | [](https://github.com/atom/language-sql/actions) |
| [Text](https://github.com/atom/language-text) | [](https://github.com/atom/language-text/actions) |
| [TODO](https://github.com/atom/language-todo) | [](https://github.com/atom/language-todo/actions) |
| [TOML](https://github.com/atom/language-toml) | [](https://github.com/atom/language-toml/actions) |
| [TypeScript](https://github.com/atom/language-typescript) | [](https://github.com/atom/language-typescript/actions) |
| [XML](https://github.com/atom/language-xml) | [](https://github.com/atom/language-xml/actions) |
| [YAML](https://github.com/atom/language-yaml) | [](https://github.com/atom/language-yaml/actions) |
================================================
FILE: docs/build-instructions/linux.md
================================================
See the [Hacking on Atom Core](https://flight-manual.atom.io/hacking-atom/sections/hacking-on-atom-core/#platform-linux) section in the [Atom Flight Manual](https://flight-manual.atom.io).
================================================
FILE: docs/build-instructions/macOS.md
================================================
See the [Hacking on Atom Core](https://flight-manual.atom.io/hacking-atom/sections/hacking-on-atom-core/#platform-mac) section in the [Atom Flight Manual](https://flight-manual.atom.io).
================================================
FILE: docs/build-instructions/windows.md
================================================
See the [Hacking on Atom Core](https://flight-manual.atom.io/hacking-atom/sections/hacking-on-atom-core/#platform-windows) section in the [Atom Flight Manual](https://flight-manual.atom.io).
================================================
FILE: docs/contributing-to-packages.md
================================================
See https://flight-manual.atom.io/hacking-atom/sections/contributing-to-official-atom-packages/
================================================
FILE: docs/native-profiling.md
================================================
# Profiling the Atom Render Process on macOS with Instruments

* Determine the version of Electron for your version of Atom.
* Open the dev tools with `alt-cmd-i`
* Evaluate `process.versions.electron` in the console.
* Based on this version, download the appropriate Electron symbols from the [releases](https://github.com/atom/electron/releases) page.
* The file name should look like `electron-v1.X.Y-darwin-x64-dsym.zip`.
* Decompress these symbols in your `~/Downloads` directory.
* Now create a time profile in Instruments.
* Open `Instruments.app`.
* Select `Time Profiler`
* In Atom, determine the pid to attach to by evaluating `process.pid` in the dev tools console.
* Attach to this pid via the menu at the upper left corner of the Instruments profiler.
* Click record, do your thing.
* Click stop.
* The symbols should have been automatically located by Instruments (via Spotlight or something?), giving you a readable profile.
================================================
FILE: docs/rfcs/000-template.md
================================================
# Feature title
## Status
Proposed
## Summary
One paragraph explanation of the feature.
## Motivation
Why are we doing this? What use cases does it support? What is the expected outcome?
## Explanation
Explain the proposal as if it was already implemented and you were describing it to an Atom user. That generally means:
- Introducing new named concepts.
- Explaining the feature largely in terms of examples.
- Explaining any changes to existing workflows.
## Drawbacks
Why should we *not* do this?
## Rationale and alternatives
- Why is this approach the best in the space of possible approaches?
- What other approaches have been considered and what is the rationale for not choosing them?
- What is the impact of not doing this?
## Unresolved questions
- What unresolved questions do you expect to resolve through the RFC process before this gets merged?
- What unresolved questions do you expect to resolve through the implementation of this feature before it is released in a new version of Atom?
- What related issues do you consider out of scope for this RFC that could be addressed in the future independently of the solution that comes out of this RFC?
================================================
FILE: docs/rfcs/001-updatable-bundled-packages.md
================================================
# Updatable Bundled Packages
## Status
Proposed
## Summary
This feature will enable an opt-in subset of bundled Atom packages to be updated with `apm` outside of the Atom release cycle. This will enable users to receive new functionality and bug fixes for some bundled packages as regularly as needed without waiting for them to be included in a new Atom release. This is especially important for packages like [GitHub](https://github.com/atom/github/) and [Teletype](https://github.com/atom/teletype/) which provide essential Atom functionality and could be improved independently of Atom.
## Motivation
Atom currently uses a monthly release cycle with staged Stable and Beta releases so that major issues get caught early in Beta before reaching the Stable release. Because Atom releases updates monthly, this means that a new feature merged into `master` right after a new Atom release could take one month to reach the next Beta and then another month to reach Stable.
Since a large part of Atom's built-in functionality is provided by bundled packages, it makes sense to allow some of those packages to be updated independently of Atom's monthly release cycle so that users can receive new features and fixes whenever they become available.
Bundled packages are treated differently than community packages that you can install using `apm`:
- You are not prompted to update them when new versions are released on `apm`
- `apm` will warn you at the command line when you try to install or update a bundled package
- If a user intentionally installs a bundled package from `apm` the [dalek package](https://github.com/atom/dalek/) will show a warning in the "deprecations" view asking the user to remove the offending package
Despite all this, if the user *does* manually install an update to a bundled package using `apm`, it will be loaded into the editor and updated dutifully as new releases occur. The only new functionality needed is to enable `apm` to check bundled packages for updates when those packages haven't yet been installed in the user's `~/.atom/packages` folder.
The primary use case for this improvement is enabling the GitHub package to ship improvements more frequently than Atom's release cycle since many of its improvements can be done without changes to Atom itself. If this approach is proven to work well for the GitHub package, we might also consider using it to ship Teletype as a bundled Atom package.
## Explanation
Any bundled Atom package can opt in to new updates released via `apm` by adding `"coreUpdatable": true` to its `package.json` file. This causes `apm` to consider it as part of the list of packages it checks for updates. If a community (non-bundled) package sets this field to `true` or `false` it will be ignored as it's only relevant to bundled packages.
Atom shows update notifications for Updatable bundled packages whenever they are available so long as those updates support the engine version of the current Atom build. Bundled package updates can also be found and installed in the Settings view's *Updates* tab.
The `dalek` package is aware of the new "Updatable" metadata and excludes updated bundled packages from its deprecation warnings.
### User Experience Examples
1. The user downloads and installs Atom 1.28.0 which includes GitHub package version 0.15.0. Two weeks later, GitHub package 0.16.0 is released with a few new features. The user is prompted to update to the new version and gets the new features even though Atom 1.29.0 hasn't been released yet.
2. The user downloads and installs Atom 1.28.0, including GitHub package 0.15.0, which was released two weeks prior. Since that release the GitHub package has been updated to version 0.15.1 on `apm`. When the user starts Atom for the first time they are prompted to update the GitHub package.
3. In the future, a user has an old install of Atom 1.28.0 and waits a long time between installing Atom updates. The GitHub package releases version 0.25.0 but the user is not prompted to install it because the GitHub package has set `engines` in `package.json` to restrict to Atom 1.32.0 and above.
### Rules for Updatable Bundled Packages
Any package that opts into this behavior must adhere to these rules:
1. **Each release must ensure that its `engines` field in `package.json` reflects the necessary Atom version for the Atom, Electron, and Node.js APIs used in the package**. This field defines the range of Atom versions in which the package is expected to work. The field should always be set to the lowest possible Atom version that the package supports.
2. **Any new update to a bundled package *must* support current Stable *and* Beta releases**. This enables the user to upgrade the package and continue to use it in side-by-side Stable and Beta installs on their machine. If a package wants to use API features of a newer version of Atom while still supporting older Atom versions, it must do so in a way that is aware of the user's version and adjust itself accordingly.
3. **Atom's `package.json` *must* stay up to date with the latest supported version of the package** in the `master` and Beta release branches. This ensures that the user always gets the latest version of the package in a new release and also benefits from its inclusion in Atom's snapshot.
For rule #3, it will be important to have automation to ensure that current Beta release and `master` are kept up to date with the latest compatible version of any updatable bundled package as it will be difficult for maintainers to do that manually. This could be accomplished by a nightly CI run which is focused explicitly on bumping package dependencies in this manner.
## Drawbacks
### Possible API incompatibility
The primary drawback of this approach is that Updatable bundled packages might exhibit problems on older Atom versions due to missing or changed APIs in Atom, Electron, or Node.js. The solution for these packages is to keep their `engines` field updated appropriately, but there's still a chance that some updates will slip through without the necessary engine version changes. If this does occur and users are affected by it, the solution is to publish a new update which rolls back the package to the functionality of its previous release and then publish another new update with the new functionality restored and the proper `engines` version in place.
### Increased Atom startup time
Another major drawback is that the snapshotted code for the bundled package will no longer be used since a newer version has been installed. This updated version of the package cannot be easily added back into Atom's snapshot so it could cause a noticeable drag on Atom's startup time. Some quick measurements with Timecop show a 10x increase in GitHub package load time for bundled (snapshot) vs updated (non-snapshot) package code:
| GitHub Package Code | Load Time |
|----------------------------------|-----------|
| **Bundled** | 52 ms |
| **Updated (first load)** | 5026 ms |
| **Updated (subsequent loads)** | 591 ms |
There was no measurable effect on shell or window startup time, only package load time. It seems that the transpilation phase of the first load of the package incurs a 100x increase in load time. Pre-transpilation of the package code (either when shipped or when installed using `apm`) will be useful in mitigating this cost. Further investigation into snapshotting package code will be needed to understand if the load time increase can be mitigated.
There is a possibility that the GitHub package could load parts of its codebase on demand to mitigate the increased startup time when not loaded as part of Atom's snapshot. This approach is discussed in more detail at [atom/github#1522](https://github.com/atom/github/issues/1522).
### Incompatibility across Atom release channels
One other possible drawback is that an updated version of a bundled package might not be compatible across two different Atom channels. For example, if the user installs a new update to a bundled package that only supports the current Atom Beta release or higher, the user will no longer have access to that package if they open Atom Stable. However, this drawback is no different than what the user would face today installing a community package under the same circumstances, so this could be considered a general problem in the Atom package ecosystem.
Finally, one risk of this approach is that the Atom team forgets to update a bundled package to its latest appropriate version on `apm` just before a new release. If this happens, the user will install a new Atom update and then be prompted to update a package that should have been snapshotted and shipped in-box. To avoid this problem we could add some build automation that checks for the latest version of a bundled package to see if the current Atom build would be supported by it.
## Rationale and alternatives
This is the best approach for updating bundled packages because it allows those packages to take control of their own release cycle so long as they manage their Atom engine version correctly. It also does so in a way that allows us to decide which packages can be updated independently, reducing the likelihood of problems for users.
The primary alternative to this approach is to speed up the Atom release cycle so that bundled Atom package updates will reach users more frequently. This approach will be investigated independently of this RFC as it may still be valuable even with Updatable bundled packages.
## Unresolved questions
> - What unresolved questions do you expect to resolve through the RFC process before this gets merged?
Is it enough to just depend on the `engines` field of `package.json` to protect users from installing a package update that doesn't work with their version of Atom?
> - What unresolved questions do you expect to resolve through the implementation of this feature before it is released in a new version of Atom?
Is there any optimization we can use to reduce the performance hit of loading updated bundled packages?
> - What related issues do you consider out of scope for this RFC that could be addressed in the future independently of the solution that comes out of this RFC?
One issue that's out of scope for this RFC is how we ship new features and fixes to the core components of Atom (not its bundled packages) more frequently. There are two options we can investigate to accomplish this:
- **Ship Atom updates more frequently, possibly every two weeks**
- **Introduce a channel for nightly builds which surface the latest changes every day**
Both of these possibilities will be covered in future RFCs as they could be implemented independently of the feature described in this RFC.
================================================
FILE: docs/rfcs/002-atom-nightly-releases.md
================================================
# Atom Nightly Releases
## Status
Implemented in PR [#17538](https://github.com/atom/atom/pull/17538)
## Summary
This RFC proposes that Atom add a third official release channel which delivers new builds of Atom nightly from the `master` branch. Nightly releases will allow new improvements to reach users long before a new Stable or Beta release is shipped. This effort will also give us the opportunity to experiment with new release automation strategies that could eventually be used to speed up the Stable and Beta release cadence.
## Motivation
Atom currently uses a monthly release cycle with staged Stable and Beta releases so that major issues get caught early in Beta before reaching the Stable release. Because Atom releases updates monthly, this means that a new feature merged into `master` right after a new Atom release could take one month to reach the next Beta and then another month to reach Stable.
This release process works well for delivering stable improvements to users on a regular basis but it results in friction for users who want to try out the latest Atom improvements and provide feedback. If we deliver a nightly release channel, it will be possible to deliver new features and bug fixes on a regular basis and get valuable feedback to guide our work.
Today, a bleeding-edge user must manually pull Atom's `master` branch and compile their own build. There is a source of `dev` builds from `master` across our CI services but those aren't made available to users as an official distribution.
## Explanation
A user who wants to use the latest improvements to Atom each day can go to atom.io, download the Atom Nightly release, and install it on their machine. This release can be installed alongside Atom Stable and Atom Beta.
Each night when there are new commits to Atom's `master` branch, a scheduled CI build creates a new Atom Nightly release with packages for Windows, macOS, and Linux. These packages are automatically uploaded to a new GitHub release on the `atom/atom-nightly-releases` repository using a monotonically-increasing nightly version based off of the version in `master` (e.g. `v1.29.0-nightly1`).
Every 4 hours, an Atom Nightly release installed on Windows or macOS checks for a new update by consulting Electron's [update.electronjs.org](update-electron) service. If a new update is available, it is downloaded in the background and the user is notified to restart Atom once it's complete. This update flow is the same as what users experience in Atom Stable or Beta releases but updates occur more frequently.
Linux users must manually download nightly releases for now as there isn't an easy way to automatically install new updates across the various Linux distributions. We may consider providing updatable [AppImage](http://appimage.org/) packages in the future; this will be proposed in a separate RFC.
## Drawbacks
There isn't a major downside to this effort since it would run in parallel to the existing Atom release process without affecting it.
## Rationale and alternatives
This is a useful approach because it allows us to achieve a much more rapid feedback loop with highly engaged users to ensure that Atom is improving regularly. It's the best approach because it allows us to get rapid feedback without sacrificing the stability of the Stable and Beta releases.
Another option is to speed up Atom's release cadence to ship Stable and Beta every two weeks (or more regularly). This approach could shorten our feedback loop but at the expense of greater instability since new improvements would not have as much time to be polished before release.
The impact of not taking this approach is that we continue to have to wait 1-2 months to get feedback from users about new features or bugs in Stable and Beta releases.
## Unresolved questions
- **What should we call this release channel?**
Some ideas:
- Atom Nightly
- Atom Reactor
- Atom Dev - Currently the name of dev builds but it might make sense to leave that for "normal" builds from `master`
According to a [Twitter poll](https://twitter.com/daviwil/status/1006545552987701248) with about 1,600 responses, 50% of the voters chose "Atom Nightly". The final name will be determined before launch.
- **Will Electron's new autoUpdate service work for all Atom releases?**
One outcome of this effort is to use the new [update.electronjs.org](update-electron) service for Atom's update checks so that we can deprecate on our own custom update service. Building the Nightly channel on this service will allow us to evaluate it to see if it meets the needs of the Stable and Beta channels.
[update-electron]: https://github.com/electron/update.electronjs.org
================================================
FILE: docs/rfcs/003-consolidate-core-packages.md
================================================
# Consolidate Core Atom Packages
## Status
Accepted
## Summary
Atom's official distribution is comprised of 92 core packages which provide its built-in functionality. These packages currently live in their own independent repositories in the Atom organization, all with their own separate issues, PRs, releases, and CI configurations. This RFC proposes that by consolidating most, if not all, of these core packages back into the `atom/atom` repo, we will see the following benefits:
- Less confusion for new contributors
- Simpler core package contribution experience
- Greatly reduced burden for maintainers
## Motivation
Let's cover each of the bullet points mentioned above:
### Less confusion for contributors
Imagine that a new contributor wants to add a small new feature to the `tree-view` package. The first place they are likely to look is the `atom/atom` repository. Scanning through the folders will lead to a dead end as nothing that looks like `tree-view` code can be found. They might take one of the following steps next:
- By reading README.md, maybe they will decide to click the link to the Atom Flight Manual and _maybe_ find the [Contributing to Official Atom Packages](https://flight-manual.atom.io/hacking-atom/sections/contributing-to-official-atom-packages/) page there
- They could read the CONTRIBUTING.md file which [has a section](https://github.com/atom/atom/blob/master/CONTRIBUTING.md#atom-and-packages) that explains where to find the repos for core packages and how to contribute, but we don't really have a clear pointer to that in our README.md
- If they don't happen to find that page, they might use Google to search for "atom tree view" and find the atom/tree-view repo and _maybe_ read the CONTRIBUTING.md file which sends them to Atom's overall contribution documentation
- They might go to the Atom Forum or Slack community to ask how to contribute to a particular part of Atom and *hopefully* get a helpful response that points them in the right direction
Having all of the core Atom packages represented in a top-level `packages` folder, even if they all don't actually live in the repo, will go a long way to making the core package code more discoverable.
### Simpler core package contribution experience
Separating core Atom features out into individual repositories and delivering them to Atom builds via `apm` is a great idea in theory because it validates the Atom package ecosystem and gives developers many examples of how to develop an Atom package. It also gives Atom developers real-world experience working with Atom's APIs so that we ensure community package authors have the same hackability that Atom developers enjoy.
On the other hand, having these packages live in separate repositories and released "independently" introduces a great deal of overhead when adding new features. Here is a comparison of the current package development workflow contrasted to what we could achieve with consolidated packages:
#### Current Package Development Workflow
For example, to add a single feature to the `tree-view` package, one must:
1. Fork and clone the `tree-view` repository to their computer (making sure to pull the commit relevant to the version of Atom they are working with)
1. Run `apm install` and `apm link` inside of the repo folder
1. Make their desired changes to the code
1. Open a PR to the `tree-view` repo and wait for CI to pass and a maintainer to review it
1. Work with maintainers to get the PR approved and merged
After this is finished, an Atom maintainer must take the following steps:
1. Clone the `tree-view` repo
2. Run `apm publish` to publish a new release of the package
3. Edit `package.json` in the Atom repo to reflect the new version of `tree-view`
4. Commit and push the changes to the relevant branch where the change belongs (`master` or `1.nn-releases`)
#### Simplified Package Development
If we were to move `tree-view` (or any other core Atom package) back into `atom/atom`, the development workflow would look more like this:
1. Fork and clone `atom/atom` and switch to a release branch if necessary
1. Build Atom and launch it in dev mode
1. Make desired changes to the code in `packages/tree-view`
1. Open a PR on `atom/atom` and wait for CI to pass and a maintainer to review it
1. Work with maintainers to get the PR approved and merged
At this point, the change is merged into Atom and ready for inclusion in the next release.
### Greatly reduced burden for maintainers
Since packages all have their own repositories, this means that we have to watch 91 different repos for issues and pull requests. This also means that we have to redirect issues filed on `atom/atom` to the appropriate repository when a user doesn't know where it belongs. Even more importantly, there's not an easy way to prioritize and track issues across the Atom organization without using GitHub Projects.
Also, as mentioned above, there's the added duty of doing the package "version dance" when we merge any new PRs to a package repository: publish the package update, update `package.json` in Atom. It's very easy to forget to do this and not have community contributions included in the next Atom release!
The more core packages live in `atom/atom`, the less work Atom maintainers have to do overall.
## Explanation
Many of Atom's core packages now live in the core `atom/atom` repository. To the Atom user, this change will be imperceptible as these packages still show up in the list of Core Packages in the Settings View. Users can still optionally disable these packages.
For maintainers and contributors, there will be less juggling of repositories and no more publishing of updates to these packages with `apm`:
Contributors now clone and build `atom/atom` to work on improvements to core packages. They will no longer have to use `apm link` in dev mode to test changes they make to packages in the repo's `packages` folder. Core packages that aren't consolidated still have folders under `packages` with README.md files that point to the home repository for that package.
When a contributor sends a PR to `atom/atom` that only affects files in a folder under `packages`, only the specs for the relevant package folders will be executed using Atom's CI scripts. This means that a full Atom build will not be required when no Atom Core code is changed in a PR. Package specs are also now run against all 3 OSes on Atom `master` and release builds.
Atom maintainers no longer have to publish new versions to consolidated core packages and then edit `package.json` to bump the package version in a particular Atom release branch (Stable, Beta, or `master`). When a PR against a consolidated core package in `atom/atom` is merged, no version number change is required and the changes will immediately be a part of the next release from that branch.
## Drawbacks
One possible drawback of this approach is that there might be some initial confusion where core Atom packages live, especially if some are consolidated into `atom/atom` and others still live in their own repositories. We will manage this confusion by doing the following:
- Include a `README.md` file in the `packages` folder which lists core packages that are not consolidated in the Atom repo. This will enable users to find the home repositories of those packages.
- Archive the repositories for consolidated core packages, but only after migrating existing issues, merging or closing existing PRs, and updating the README.md to point to the new home of the package code.
Also, contributors will now have to fork, clone, and build `atom/atom` to contribute to core packages where they would previously just need to clone the package repository. This might put added burden on them such as installing necessary build dependencies on their machine that they wouldn't otherwise need. It is very likely we could simplify this process for them, though.
One final drawback is that it will now be harder to have single-package maintainers. We currently have 7 core packages where there is a maintainer who isn't a part of the core Atom maintainers team. These maintainers generally are able to merge community PRs and make commits to those packages with their own judgement. If we get rid of individual package repositories, do we now make those maintainers full Atom maintainers?
## Rationale and alternatives
The Motivation section explains most of the rationale, so this section will focus on the process of consolidating packages back into `atom/atom`. The set of packages we've chosen to consolidate were evaluated based on a few factors:
- Number of open issues and PRs (exclude any with > 10 open PRs)
- Time since last update (longer duration since last update is prioritized)
- Number of package-only maintainers on the repo (exclude any with package maintainers for now)
Using this criteria, all 91 packages have been evaluated and categorized to determine whether they are good candidates for consolidation:
#### Initial Consolidation Candidates
| Package | Open Issues | Open PRs | Outside Maintainers | Last Updated |
|---------|-------------|----------|---------------------| -------------|
| **[about]** | 2 | 0 | 0 | 7/11/18 |
| **[archive-view]** | 10 | 0 | 0 | 6/3/18 |
| **[atom-dark-syntax]** | 5 | 0 | 0 | 12/6/17 |
| **[atom-dark-ui]** | 1 | 2 | 0 | 2/13/18 |
| **[atom-light-syntax]** | 1 | 0 | 0 | 10/17/16 |
| **[atom-light-ui]** | 1 | 0 | 0 | 2/13/18 |
| **[autoflow]** | 17 | 4 | 0 | 4/17/18 |
| **[autosave]** | 13 | 0 | 0 | 9/16/17 |
| **[background-tips]** | 3 | 2 | 0 | 2/17/18 |
| **[base16-tomorrow-dark-theme]** | 5 | 0 | 0 | 1/10/17 |
| **[base16-tomorrow-light-theme]** | 1 | 0 | 0 | 1/10/17 |
| **[bookmarks]** | 19 | 4 | 0 | 12/10/17 |
| **[bracket-matcher]** | 74 | 8 | 0 | 3/20/18 |
| **[command-palette]** | 18 | 6 | 0 | 2/27/18 |
| **[dalek]** | 2 | 0 | 0 | 2/28/18 |
| **[deprecation-cop]** | 5 | 0 | 0 | 9/7/17 |
| **[dev-live-reload]** | 4 | 0 | 0 | 11/14/17 |
| **[encoding-selector]** | 11 | 2 | 0 | 4/19/18 |
| **[exception-reporting]** | 5 | 0 | 0 | 2/6/18 |
| **[git-diff]** | 38 | 1 | 0 | 1/18/18 |
| **[go-to-line]** | 5 | 2 | 0 | 1/25/18 |
| **[grammar-selector]** | 3 | 1 | 0 | 4/12/18 |
| **[image-view]** | 4 | 4 | 0 | 7/9/18 |
| **[incompatible-packages]** | 1 | 0 | 0 | 4/25/17 |
| **[keybinding-resolver]** | 11 | 3 | 0 | 7/6/18 |
| **[language-clojure]** | 13 | 3 | 0 | 1/26/18 |
| **[language-coffee-script]** | 9 | 2 | 0 | 11/1/17 |
| **[language-csharp]** | 1 | 1 | 0 | 4/27/18 |
| **[language-css]** | 6 | 7 | 0 | 6/11/18 |
| **[language-gfm]** | 52 | 9 | 0 | 6/15/18 |
| **[language-git]** | 4 | 2 | 0 | 4/18/17 |
| **[language-html]** | 11 | 4 | 0 | 7/5/18 |
| **[language-hyperlink]** | 2 | 3 | 0 | 10/25/17 |
| **[language-json]** | 1 | 0 | 0 | 5/11/18 |
| **[language-less]** | 5 | 1 | 0 | 6/11/18 |
| **[language-make]** | 7 | 3 | 0 | 11/26/16 |
| **[language-mustache]** | 0 | 0 | 0 | 2/5/18 |
| **[language-objective-c]** | 2 | 0 | 0 | 12/1/15 |
| **[language-php]** | 25 | 7 | 0 | 6/11/18 |
| **[language-property-list]** | 1 | 0 | 0 | 3/11/17 |
| **[language-python]** | 33 | 4 | 0 | 6/18/18 |
| **[language-ruby]** | 38 | 10 | 0 | 10/25/17 |
| **[language-ruby-on-rails]** | 9 | 6 | 0 | 12/7/17 |
| **[language-sass]** | 12 | 5 | 0 | 5/2/18 |
| **[language-shellscript]** | 12 | 3 | 0 | 6/18/18 |
| **[language-source]** | 0 | 0 | 0 | 1/6/15 |
| **[language-sql]** | 6 | 4 | 0 | 1/26/18 |
| **[language-text]** | 1 | 0 | 0 | 3/9/18 |
| **[language-todo]** | 10 | 6 | 0 | 1/26/18 |
| **[language-toml]** | 1 | 0 | 0 | 1/6/18 |
| **[language-typescript]** | 6 | 0 | 0 | 6/18/18 |
| **[language-xml]** | 2 | 1 | 0 | 6/12/17 |
| **[language-yaml]** | 8 | 2 | 0 | 3/9/18 |
| **[line-ending-selector]** | 10 | 0 | 0 | 5/18/18 |
| **[link]** | 0 | 1 | 0 | 11/14/17 |
| **[metrics]** | 1 | 2 | 0 | 7/5/18 |
| **[notifications]** | 29 | 8 | 0 | 3/22/18 |
| **[one-dark-syntax]** | 4 | 0 | 0 | 5/27/18 |
| **[one-dark-ui]** | 13 | 1 | 0 | 5/1/18 |
| **[one-light-syntax]** | 2 | 1 | 0 | 5/27/18 |
| **[one-light-ui]** | 2 | 0 | 0 | 5/1/18 |
| **[open-on-github]** | 8 | 3 | 0 | 11/21/17 |
| **[package-generator]** | 10 | 2 | 0 | 11/16/17 |
| **[status-bar]** | 25 | 3 | 0 | 11/6/17 |
| **[styleguide]** | 12 | 2 | 0 | 4/12/18 |
| **[tabs]** | 66 | 7 | 0 | 5/13/18 |
| **[timecop]** | 5 | 0 | 0 | 11/4/17 |
| **[update-package-dependencies]** | 0 | 0 | 0 | 12/10/17 |
| **[welcome]** | 0 | 0 | 0 | 11/21/17 |
| **[whitespace]** | 31 | 6 | 0 | 5/30/18 |
| **[wrap-guide]** | 3 | 4 | 0 | 11/27/17 |
#### Packages to be Consolidated Later
The following packages will not be consolidated until the stated reasons can be resolved or we decide on a consolidation strategy for them:
| Package | Open Issues | Open PRs | Outside Maintainers | Last Updated | Reason |
|---------|-------------|----------|---------------------|--------------|-------|
| **[find-and-replace]** | 219 | 17 | 0 | 6/4/18 | Too many open PRs |
| **[fuzzy-finder]** | 89 | 22 | 0 | 5/17/18 | Too many open PRs |
| **[github]** | | | | | Independent project |
| **[language-c]** | 53 | 15 | 0 | 7/10/18 | Too many open PRs |
| **[language-go]** | 12 | 2 | **1** | 6/18/18 | Package maintainer, possibly inactive? |
| **[language-java]** | 8 | 2 | **1** | 6/11/18 | Package maintainer |
| **[language-javascript]** | 66 | 12 | 0 | 7/6/18 | Too many open PRs |
| **[language-perl]** | 17 | 1 | **1** | 10/30/17 | Package maintainer, possibly inactive? |
| **[markdown-preview]** | 139 | 12 | 0 | 1/8/18 | Too many open PRs |
| **[settings-view]** | 137 | 18 | 0 | 5/17/18 | Too many open PRs |
| **[snippets]** | 57 | 4 | **1** | 4/17/18 | Package maintainer |
| **[solarized-dark-syntax]** | 8 | 3 | **1** | 5/27/18 | Package maintainer |
| **[solarized-light-syntax]** | 2 | 3 | **1** | 5/27/18 | Package maintainer |
| **[spell-check]** | 68 | 14 | **1** | 5/25/18 | Too many open PRs, package maintainer |
| **[symbols-view]** | 86 | 13 | 0 | 12/10/17 | Too many open PRs |
| **[tree-view]** | 210 | 36 | 0 | 3/21/18 | Too many open PRs |
#### Packages to Never Consolidate
These packages will not be consolidated because they would inhibit contributions from our friends in the Nuclide team at Facebook:
- **[autocomplete-atom-api]**
- **[autocomplete-css]**
- **[autocomplete-html]**
- **[autocomplete-plus]**
- **[autocomplete-snippets]**
### Consolidation Process
To consolidate a single core package repository back into `atom/atom`, the following steps will be taken:
1. All open pull requests on the package's repository must either be closed or merged before consolidation can proceed
1. The package repository's code in `master` will be copied over to Atom's `packages` folder in a subfolder bearing that package's name.
1. Atom's `package.json` file will be updated to change the package's `packageDependencies` entry to reference its local path with the following syntax: `"tree-view": "file:./packages/tree-view"`
1. A test build will be created locally to manually verify that the package loads and works correctly at first glance
1. The package specs for the newly-consolidated package will be run against the local Atom build
1. A PR will be sent to `atom/atom` to verify that CI passes with the introduction of the consolidated package
1. Once CI is clean and the PR is approved, the PR will be merged
1. The package's original repository will have all of its existing issues moved over to `atom/atom` using a bulk issue mover tool, assigning a label to those issues relative to the package name, like `packages/tree-view`
1. The package's original repository will have its README.md updated to point contributors to the code's new home in `atom/atom`
1. The package's original repository will now be archived on GitHub
### Alternative Approaches
One alternative approach would be to break this core Atom functionality out of packages and put it directly in the Atom codebase without treating them as packages. This would simplify the development process even further but with the following drawbacks:
- The Atom team would have less regular exposure to Atom package development
- Users would no longer be able to disable core packages to replace their behavior with other packages (different tree views, etc)
## Unresolved questions
- Is there a good reason to not move the `language-*` packages into `atom/atom`?
One concern here is that there exist projects which depend directly on these repositories for the TextMate syntax grammars they contain. Moving the code into `atom/atom` would require that we notify the consumers of the grammars so that they can redirect their requests to the `atom/atom` repo.
- Should we use `git subtree` to migrate the entire commit history of these packages over or just depend on the history from a package's original repository?
For now, we won't use `git subtree` due to the possibility that bringing over thousands of commits could cause unknown problems in the Atom repo. We may try this for newly consolidated packages in the future if we decide that not having the package commit history is a sufficient impediment to problem investigations.
- What are the criteria we might use to eventually decide to move larger packages like `tree-view`, `settings-view`, and `find-and-replace` back into `atom/atom`?
- Will we be losing any useful data about these packages if we don't have standalone repositories anymore?
- Should we use this as an opportunity to remove any unnecessary packages from the core Atom distribution?
[about]: https://github.com/atom/about
[archive-view]: https://github.com/atom/archive-view
[atom-dark-syntax]: https://github.com/atom/atom-dark-syntax
[atom-dark-ui]: https://github.com/atom/atom-dark-ui
[atom-light-syntax]: https://github.com/atom/atom-light-syntax
[atom-light-ui]: https://github.com/atom/atom-light-ui
[autocomplete-atom-api]: https://github.com/atom/autocomplete-atom-api
[autocomplete-css]: https://github.com/atom/autocomplete-css
[autocomplete-html]: https://github.com/atom/autocomplete-html
[autocomplete-plus]: https://github.com/atom/autocomplete-plus
[autocomplete-snippets]: https://github.com/atom/autocomplete-snippets
[autoflow]: https://github.com/atom/autoflow
[autosave]: https://github.com/atom/autosave
[background-tips]: https://github.com/atom/background-tips
[base16-tomorrow-dark-theme]: https://github.com/atom/base16-tomorrow-dark-theme
[base16-tomorrow-light-theme]: https://github.com/atom/base16-tomorrow-light-theme
[bookmarks]: https://github.com/atom/bookmarks
[bracket-matcher]: https://github.com/atom/bracket-matcher
[command-palette]: https://github.com/atom/command-palette
[dalek]: https://github.com/atom/dalek
[deprecation-cop]: https://github.com/atom/deprecation-cop
[dev-live-reload]: https://github.com/atom/dev-live-reload
[encoding-selector]: https://github.com/atom/encoding-selector
[exception-reporting]: https://github.com/atom/exception-reporting
[find-and-replace]: https://github.com/atom/find-and-replace
[fuzzy-finder]: https://github.com/atom/fuzzy-finder
[git-diff]: https://github.com/atom/git-diff
[github]: https://github.com/atom/github
[go-to-line]: https://github.com/atom/go-to-line
[grammar-selector]: https://github.com/atom/grammar-selector
[image-view]: https://github.com/atom/image-view
[incompatible-packages]: https://github.com/atom/incompatible-packages
[keybinding-resolver]: https://github.com/atom/keybinding-resolver
[language-c]: https://github.com/atom/language-c
[language-clojure]: https://github.com/atom/language-clojure
[language-coffee-script]: https://github.com/atom/language-coffee-script
[language-csharp]: https://github.com/atom/language-csharp
[language-css]: https://github.com/atom/language-css
[language-gfm]: https://github.com/atom/language-gfm
[language-git]: https://github.com/atom/language-git
[language-go]: https://github.com/atom/language-go
[language-html]: https://github.com/atom/language-html
[language-hyperlink]: https://github.com/atom/language-hyperlink
[language-java]: https://github.com/atom/language-java
[language-javascript]: https://github.com/atom/language-javascript
[language-json]: https://github.com/atom/language-json
[language-less]: https://github.com/atom/language-less
[language-make]: https://github.com/atom/language-make
[language-mustache]: https://github.com/atom/language-mustache
[language-objective-c]: https://github.com/atom/language-objective-c
[language-perl]: https://github.com/atom/language-perl
[language-php]: https://github.com/atom/language-php
[language-property-list]: https://github.com/atom/language-property-list
[language-python]: https://github.com/atom/language-python
[language-ruby]: https://github.com/atom/language-ruby
[language-ruby-on-rails]: https://github.com/atom/language-ruby-on-rails
[language-sass]: https://github.com/atom/language-sass
[language-shellscript]: https://github.com/atom/language-shellscript
[language-source]: https://github.com/atom/language-source
[language-sql]: https://github.com/atom/language-sql
[language-text]: https://github.com/atom/language-text
[language-todo]: https://github.com/atom/language-todo
[language-toml]: https://github.com/atom/language-toml
[language-typescript]: https://github.com/atom/language-typescript
[language-xml]: https://github.com/atom/language-xml
[language-yaml]: https://github.com/atom/language-yaml
[line-ending-selector]: https://github.com/atom/line-ending-selector
[link]: https://github.com/atom/link
[markdown-preview]: https://github.com/atom/markdown-preview
[metrics]: https://github.com/atom/metrics
[notifications]: https://github.com/atom/notifications
[one-dark-syntax]: https://github.com/atom/one-dark-syntax
[one-dark-ui]: https://github.com/atom/one-dark-ui
[one-light-syntax]: https://github.com/atom/one-light-syntax
[one-light-ui]: https://github.com/atom/one-light-ui
[open-on-github]: https://github.com/atom/open-on-github
[package-generator]: https://github.com/atom/package-generator
[settings-view]: https://github.com/atom/settings-view
[snippets]: https://github.com/atom/snippets
[solarized-dark-syntax]: https://github.com/atom/solarized-dark-syntax
[solarized-light-syntax]: https://github.com/atom/solarized-light-syntax
[spell-check]: https://github.com/atom/spell-check
[status-bar]: https://github.com/atom/status-bar
[styleguide]: https://github.com/atom/styleguide
[symbols-view]: https://github.com/atom/symbols-view
[tabs]: https://github.com/atom/tabs
[timecop]: https://github.com/atom/timecop
[tree-view]: https://github.com/atom/tree-view
[update-package-dependencies]: https://github.com/atom/update-package-dependencies
[welcome]: https://github.com/atom/welcome
[whitespace]: https://github.com/atom/whitespace
[wrap-guide]: https://github.com/atom/wrap-guide
================================================
FILE: docs/rfcs/004-decoration-ordering.md
================================================
# Decoration ordering
## Status
Accepted
## Summary
Order block decoration items in the DOM in a deterministic and controllable way.
## Motivation
When multiple block decorations are created at the same screen line, they are inserted into the DOM in an order determined by the sequence of their creation; from oldest to newest when `position` is set to `"before"`, from newest to oldest when `position` is set to `"after"`. While this is deterministic, it is limited: it isn't possible to insert decorations within a sequence of existing ones, and it's difficult to control the order of decorations when creating and destroying and moving markers around an editor.
We hit the need for this in [atom/github#1913](https://github.com/atom/github/pull/1913) when we have a block decoration for multiple consecutive collapsed file patches.
## Explanation
[TextEditor::decorateMarker()](https://atom.io/docs/api/v1.34.0/TextEditor#instance-decorateMarker) accepts an additional `order` parameter in its `decorationParams` argument when `type` is "block". When multiple block or overlay decorations occur at the same screen line, they are ordered within the DOM in increasing "order" value.
Block decorations with the same `order` property are rendered in the order they were created, oldest to newest. Block decorations with no `order` property are rendered after those with one, in the order in which they were created, oldest to newest.
## Drawbacks
This is a breaking change for co-located block decorations created with an "after" position - they'll now appear in the reverse order.
When multiple packages create block decorations at the same screen line, they'll need to coordinate their `order` values to have expected behavior. There may not even be a clear, universal answer about how block decorations from distinct packages _should_ be ordered.
This adds another situational parameter to `TextEditor::decorationMarker()`, which already has complicated arguments.
## Rationale and alternatives
Originally I wanted to address the package coordination problem with a similar approach to [the way context menu items are ordered](https://github.com/atom/atom/pull/16661), by allowing individual decorations to specify constraints: "before this block," "after this block," "next to this block" and so forth. I ultimately chose to write up the simpler proposal because:
* Block decoration collisions among packages seem much less likely than context menu collisions.
* Constraint satisfaction problems are complex. There would be a relatively high chance of introducing bugs and performance regressions.
* The order number approach is similar to the APIs already offered to order status bar tiles and custom gutters.
The alternative to having an explicit API for this is at all is to create and destroy decorations to achieve the desired order. That's possible, but requires a great deal of bookkeeping on the package's side to accomplish, especially as decorations are added and removed and text is edited.
## Unresolved questions
- Should overlay decorations respect an `order` parameter in a similar fashion?
- Should screen column effect decoration ordering at all?
================================================
FILE: docs/rfcs/005-grammar-comment-delims.md
================================================
# Add comment delims to grammar declaration
## Status
Proposed
## Summary
Grammars currently only sort of declare their comment delims. E.g., TextMate JavaScript will say `'commentStart': '// '` (and not even in the same file as the grammar), and Tree-sitter says `comments: start: '// '` (in the same file; better). However, it is impossible to tell that `/* */` delimits JS block comments. This RFC is to request a grammar property to declare all comment delims a language supports.
## Motivation
It can be useful for a package to be able to treat comment characters abstractly.
My specific need is for the resolution of `BLOCK_COMMENT_START` and similar variables for LSP snippets. There is currently no way I know of to resolve this without hardcoding it for each language.
## Explanation
This RFC is to have both line and block delims a property of the grammar. E.g.,
```cson
# javascript.cson
comments:
line: '//'
start: '/*'
end: '*/'
```
The lack of a property would indicate the grammar does not have it (e.g., HTML would omit the `line` property), or that a grammar has not been updated to comply with this spec. If the latter, it may be possible to partially extract this information from the existing implementations (e.g., even now we can tell that JS has `//` for line comment and HTML has `<!-- -->` for block comments).
This is similar to the current Tree-sitter grammars, but they currently mix line and block in the `start` key depending on if the language has line comments (so HTML has `start: '<!--', end: '-->'`, but JS has `start: '//'`).
## Drawbacks
Many community grammars would not get this property added to them. However, this feature can be considered a strict enhancement of the current status, and non compliant grammars can be accounted for. E.g., if a grammar still declares `start: '//'` but doesn't have an `end` property, then it can be reinterpreted as a line delim. Additionally, users would be quick to raise an issue here (:frowning_face:) or on the language repo (:slightly_smiling_face:) if they are trying to use a feature that relies on this and it doesn't work.
## Rationale and alternatives
#### Why is this approach the best in the space of possible approaches?
Tying all language specific data to the language file makes intuitive sense. This is stuff that will not change based on what the user wants (and already is tied directly to Tree-sitter language files).
#### What other approaches have been considered and what is the rationale for not choosing them?
It's possible to use the settings approach like for TextMate grammars. I find this unnecessarily separated though, especially for something like comment delims which shouldn't rely on what the user fancies.
However, I'm not set on requiring the TextMate grammars to have it in the file (doing so would require an update on the First mate side too*). It can still work in the settings file. This would also support the possible language that has multiple delim characters (if it exists), letting the user set their choice.
\* Maybe First mate should just add all properties from the file to the grammar it constructs, instead of a whitelist? It would save headaches around enhancing future grammar features.
#### What is the impact of not doing this?
Getting the snippet variables working would require hard coding them for each language, which is impossible to do completely.
## Unresolved questions
#### What unresolved questions do you expect to resolve through the RFC process before this gets merged?
#### What unresolved questions do you expect to resolve through the implementation of this feature before it is released in a new version of Atom?
#### What related issues do you consider out of scope for this RFC that could be addressed in the future independently of the solution that comes out of this RFC?
What I would like is then for public TextEditor methods `getCommentDelims` and `getCommentDelimsForPoint`, which returns all the correct delims for the root grammar, or the one at the given point (accounting for embedded grammars ... though could be weird when the embedded grammar is only something like TODO or SQL syntax).
However, this future enhancement is not necessary for the current RFC. This RFC is about getting comment delim information tied to the Grammar object and is independant of any attempt to handle this information.
================================================
FILE: docs/rfcs/005-pretranspile.md
================================================
# Pre-transpiled Atom packages
## Status
Proposed
## Summary
This feature will enable package authors to use conventional npm tooling and package.json conventions to take advantage of JavaScript transpilers like Babel or TypeScript.
## Motivation
Transpiling packages on _publish_ rather than _load_ will have great benefits for package authors:
* Standard `npm` tooling like `prepare` scripts will work for apm packages exactly as they work for npm packages. This will remove the need for custom transpiler pipeline modules like [atom-babel6-transpiler](https://github.com/atom/atom-babel6-transpiler) or [atom-typescript-transpiler](https://github.com/smhxx/atom-ts-transpiler) with their own, independent documentation, configuration and setup.
* Packages can move transpiler-related dependencies to `devDependencies` and trim installation bloat substantially. (as a data point, the TypeScript compiler is 30MB.)
* First-time package load will no longer take a hit from transpiling all of the source into the cache.
## Explanation
### Package publishing
During the `apm publish` call, apm will invoke [`npm pack`](https://docs.npmjs.com/cli/pack) to run all standard npm lifecycle hooks and prepare a `.tar.gz` file. apm then uploads the `.tar.gz` file to atom.io, which uploads it to an S3 bucket.
The `npm version` call will still be skipped if the `--tag` is provided, so manual publishing with `apm publish --tag` will still work as it does today.
### Package installation
When a user installs a package from atom.io, atom.io first checks to see if it has a precompiled tarball in its S3 bucket. If one is found, the artifact's public URL is returned as the `dist` field in the [API response](https://flight-manual.atom.io/atom-server-side-apis/sections/atom-package-server-api/#get-apipackagespackage_nameversionsversion_name). Otherwise, the existing logic is used to return the GitHub tag tarball URL that's returned now.
## Drawbacks
Doing this makes installing a package in production more different than loading it during development. This increases the number of variables that can cause issues between local development and the production of an `apm publish` artifact, like tweaking your `.npmignore` file properly.
## Rationale and alternatives
_Alternative: publish packages to Actual Npm.org._ We could identify Atom packages in the npm registry by the `engine` field we already use, which should keep regular npm from installing it by mistake. The downsides here are:
* It becomes harder to search for _just_ Atom packages; we'd have to hack npm search a bit.
* "Starring" would likely break.
* The transition path for existing users of apm and atom.io is not as smooth.
* Easier to typo `apm` and `npm` commands and have an undesirable outcome.
## Unresolved questions
Do we want to deprecate transpilation-on-demand for local development, as well? It may add a bit of friction for package development, but transpilers like TypeScript tend to offer a `--watch` option to transpile live, and it would let us eliminate a lot of complexity in the way Atom loads JavaScript.
================================================
FILE: docs/rfcs/005-scope-naming.md
================================================
# Semantic scope naming
## Status
Proposed
## Summary
When deciding which scopes to apply, built-in grammars should be guided only by what would be useful to annotate. A suggested scope addition should be assessed by the semantic value it adds. It not be rejected if its _only_ drawback is that it would result in undesirable syntax highlighting for one of Atom’s built-in syntax themes.
## Motivation
Tree-sitter grammars are a unique opportunity to deliver more accurate scoping. They can identify constructs that would’ve been too ambiguous for a TM-style grammar.
Scopes themselves are immensely powerful; they’re hooks that allow weirdos like myself to customize Atom to my exact specifications. Not only for syntax themes, either; I’ve got lots of commands that behave in different ways based on the surrounding scope. The richer the scope descriptor, the better. (Within reasonable bounds, of course.)
## Explanation
I think this is best illustrated by example. [Here’s a ticket](https://github.com/atom/language-javascript/issues/615) from `language-javascript` about syntax highlighting of imports. For example:
```js
import { foo } from "thing";
```
For reference, the `language-babel` grammar scopes `foo` as `variable.other.readwrite.js`. I’d probably opt for something like `variable.import`; others may want to put it into the `support` namespace. There’s actually little cross-language consensus here.
But right now, that `foo` doesn’t have _any_ scope name applied in the tree-sitter JavaScript grammar, and this is by design. The explanation, as stated in the ticket, is that Atom wants to avoid marking a variable with a certain color if it doesn’t have the capability of making it the same color _throughout_ the document, across its various usages.
This is a fine design goal; I don’t think @maxbrunsfeld is wrong to argue for it. But I’d suggest that it isn’t a design goal for `language-javascript` or any other grammar; it’s a design goal for a _syntax theme_, and a grammar should not refrain from applying scopes in order to satisfy the design goals of a specific syntax theme.
This isn’t just a beard-stroking nitpick on my part. I can think of a handful of reasons why someone might want to be able to spot import names at a glance. It’s reasonable for someone to want `foo` in the example above to remain the same color throughout the file. It’s also reasonable, I think, to want `foo` to have a special color on the line where it’s introduced. Or to communicate that this token has special behavior — as it would if you have the [js-hyperclick](https://atom.io/packages/js-hyperclick) package installed and are in the habit of cmd-clicking package names to jump to the files where they’re defined.
I don’t mind that the One Dark syntax theme doesn’t want to give `foo` a special color; I mind that its decision is also binding on _all possible_ syntax themes. If that scope name is present, and it’s undesirable to a syntax theme, that theme can apply the overrides necessary to ignore it. But if that scope name is missing altogether, that constrains _all_ syntax themes, and I’m unable to write a syntax theme that behaves differently.
Thus, here’s what I propose:
If an issue or PR proposes adding a scope and can justify its presence somehow — including the goal of parity with its non-tree-sitter predecessor — an answer of “no, because the built-in syntax themes don’t want to highlight it that way” should become “OK, but only if someone does the associated work to ensure no visual regressions in the built-in syntax themes.” That someone could be the PR’s author or anyone else who has an interest in getting it landed.
This is tricky, of course — not only the coordination of PRs across packages, but also the need to apply overrides to all six (is it six? I think it’s six) of the built-in syntax themes. If all built-in themes are going to share an austere philosophy ([and it seems like that’s the plan](https://github.com/atom/atom/pull/18383#issuecomment-435460854)), then perhaps it makes sense for them to start sharing a core set of contextual rules. The only difference between them would be the specific color choices that they make.
## Drawbacks
The drawback is that what I’m suggesting is a lot of work. I don’t propose it lightly; I propose it because it strikes me as the least bad of all available choices.
## Rationale and alternatives
And what are those other choices?
1. The status quo, in which built-in grammars (like `language-javascript`’s tree-sitter grammar) are developed with goals that are tightly coupled to the goals of syntax themes. I think this would be a tragic lost opportunity. The fact that the `tree-sitter-javascript` parser groks ES6 and JSX means that lots of people no longer have to rely on a third-party grammar like `language-babel`. If I can’t get my syntax highlighting the way I want it because the built-in grammar applies scopes too sparsely, then my only recourse is to write my own tree-sitter grammar that adds in the mappings I want. That’s easier than writing a TM-style grammar, but it still involves some portion of the community dedicating their efforts to an effective fork of `language-javascript`, and for far more mundane reasons than the fork that produced `language-babel` in the first place.
2. A suggestion made by @Ben3eeE in [the issue that inspired this RFC](https://github.com/atom/language-javascript/issues/649): intentionally picking ornery scope names that don’t have implicit highlighting in the built-in syntax themes. That’s at least a way forward, but I think it abandons a hard-won lesson. TextMate’s attempt to devise a system of semantic scope names has borne quite a bit of fruit. It’s the reason why three major successor editors have signed on to the same conventions. Semantic naming acts as a kind of “middleware” that allows syntax themes and grammars to be unaware of each others’ implementation details. I _could_ write a PR that scopes our `foo` import from above with something like `import-specifier.identifier`, and I still might, but in choosing an arbitrary name I’m once again obligating syntax themes to care about a grammar’s implementation details.
3. Some sort of grand compromise that I don’t have the breadth of experience to envision on my own. I’m hoping for this one, actually. For instance, it occurs to me that the “variables shouldn’t ever be highlighted with different colors across different usages” problem is only a problem in languages where there’s no sigil to mark variables. PHP, Perl, and Less don’t have this problem because all variables begin with a symbol. Maybe the solution is to include some token like `without-sigil` in the scope name, and then the built-in themes can write a rule like `.syntax--without-sigil { color: @mono-1 !important }`.
## Unresolved questions
- Ideally, I’d love to have some sort of canonical scope document like [TextMate](https://macromates.com/manual/en/language_grammars#naming_conventions) and [Sublime Text](https://www.sublimetext.com/docs/3/scope_naming.html) have. But the future of TM-style scope naming seems to be up in the air. I think that they’re no less relevant in the era of tree-sitter grammars, but I bet others disagree.
- To what extent should tree-sitter grammars be expected to scope documents identically to their TM-style predecessors? Obviously not 100%, or else there’d be no gains. What’s the right balancing test?
- Atom has made some infrastructural choices that can complicate how scopes get applied and consumed. Are these permanent? For instance, if I wanted to implement Alternative 2 (as described above), I could choose a scope name like `meta.variable.import`, on the assumption that `meta.`-prefixed scope names won’t have syntax highlighting. But `meta.variable` gets caught by a `.syntax--variable` CSS selector just as much as it would if the scope name began with `variable`. The order and hierarchy implied in the scope name is not actually present. Syntax themes could write selectors more creatively to get around this — e.g., `*[class^="syntax--variable "]` instead of `.syntax--variable` — but I don’t think many do, and I can hardly blame them. Is this a limitation that Atom can evolve its way out of without breaking anything? Or are we stuck with it?
================================================
FILE: dot-atom/.gitignore
================================================
blob-store
compile-cache
dev
storage
.apm
.node-gyp
.npm
.atom-socket-secret-*
================================================
FILE: dot-atom/init.coffee
================================================
# Your init script
#
# Atom will evaluate this file each time a new window is opened. It is run
# after packages are loaded/activated and after the previous editor state
# has been restored.
#
# An example hack to log to the console when each text editor is saved.
#
# atom.workspace.observeTextEditors (editor) ->
# editor.onDidSave ->
# console.log "Saved! #{editor.getPath()}"
================================================
FILE: dot-atom/keymap.cson
================================================
# Your keymap
#
# Atom keymaps work similarly to style sheets. Just as style sheets use
# selectors to apply styles to elements, Atom keymaps use selectors to associate
# keystrokes with events in specific contexts. Unlike style sheets however,
# each selector can only be declared once.
#
# You can create a new keybinding in this file by typing "key" and then hitting
# tab.
#
# Here's an example taken from Atom's built-in keymap:
#
# 'atom-text-editor':
# 'enter': 'editor:newline'
#
# 'atom-workspace':
# 'ctrl-shift-p': 'core:move-up'
# 'ctrl-p': 'core:move-down'
#
# You can find more information about keymaps in these guides:
# * http://flight-manual.atom.io/using-atom/sections/basic-customization/#customizing-keybindings
# * http://flight-manual.atom.io/behind-atom/sections/keymaps-in-depth/
#
# If you're having trouble with your keybindings not working, try the
# Keybinding Resolver: `Cmd+.` on macOS and `Ctrl+.` on other platforms. See the
# Debugging Guide for more information:
# * http://flight-manual.atom.io/hacking-atom/sections/debugging/#check-the-keybindings
#
# This file uses CoffeeScript Object Notation (CSON).
# If you are unfamiliar with CSON, you can read more about it in the
# Atom Flight Manual:
# http://flight-manual.atom.io/using-atom/sections/basic-customization/#configuring-with-cson
================================================
FILE: dot-atom/packages/README.md
================================================
All packages in this directory will be automatically loaded
================================================
FILE: dot-atom/snippets.cson
================================================
# Your snippets
#
# Atom snippets allow you to enter a simple prefix in the editor and hit tab to
# expand the prefix into a larger code block with templated values.
#
# You can create a new snippet in this file by typing "snip" and then hitting
# tab.
#
# An example CoffeeScript snippet to expand log to console.log:
#
# '.source.coffee':
# 'Console log':
# 'prefix': 'log'
# 'body': 'console.log $1'
#
# Each scope (e.g. '.source.coffee' above) can only be declared once.
#
# This file uses CoffeeScript Object Notation (CSON).
# If you are unfamiliar with CSON, you can read more about it in the
# Atom Flight Manual:
# http://flight-manual.atom.io/using-atom/sections/basic-customization/#_cson
================================================
FILE: dot-atom/styles.less
================================================
/*
* Your Stylesheet
*
* This stylesheet is loaded when Atom starts up and is reloaded automatically
* when it is changed and saved.
*
* Add your own CSS or Less to fully customize Atom.
* If you are unfamiliar with Less, you can read more about it here:
* http://lesscss.org
*/
/*
* Examples
* (To see them, uncomment and save)
*/
// style the background color of the tree view
.tree-view {
// background-color: whitesmoke;
}
// style the background and foreground colors on the atom-text-editor-element itself
atom-text-editor {
// color: white;
// background-color: hsl(180, 24%, 12%);
}
// style UI elements inside atom-text-editor
atom-text-editor .cursor {
// border-color: red;
}
================================================
FILE: exports/atom.js
================================================
const TextBuffer = require('text-buffer');
const { Point, Range } = TextBuffer;
const { File, Directory } = require('pathwatcher');
const { Emitter, Disposable, CompositeDisposable } = require('event-kit');
const BufferedNodeProcess = require('../src/buffered-node-process');
const BufferedProcess = require('../src/buffered-process');
const GitRepository = require('../src/git-repository');
const Notification = require('../src/notification');
const { watchPath } = require('../src/path-watcher');
const atomExport = {
BufferedNodeProcess,
BufferedProcess,
GitRepository,
Notification,
TextBuffer,
Point,
Range,
File,
Directory,
Emitter,
Disposable,
CompositeDisposable,
watchPath
};
// Shell integration is required by both Squirrel and Settings-View
if (process.platform === 'win32') {
Object.defineProperty(atomExport, 'WinShell', {
enumerable: true,
get() {
return require('../src/main-process/win-shell');
}
});
}
// The following classes can't be used from a Task handler and should therefore
// only be exported when not running as a child node process
if (process.type === 'renderer') {
atomExport.Task = require('../src/task');
atomExport.TextEditor = require('../src/text-editor');
}
module.exports = atomExport;
================================================
FILE: exports/clipboard.js
================================================
module.exports = require('electron').clipboard;
const Grim = require('grim');
Grim.deprecate(
'Use `require("electron").clipboard` instead of `require("clipboard")`'
);
// Ensure each package that requires this shim causes a deprecation warning
delete require.cache[__filename];
================================================
FILE: exports/ipc.js
================================================
module.exports = require('electron').ipcRenderer;
const Grim = require('grim');
Grim.deprecate(
'Use `require("electron").ipcRenderer` instead of `require("ipc")`'
);
// Ensure each package that requires this shim causes a deprecation warning
delete require.cache[__filename];
================================================
FILE: exports/remote.js
================================================
module.exports = require('electron').remote;
const Grim = require('grim');
Grim.deprecate(
'Use `require("electron").remote` instead of `require("remote")`'
);
// Ensure each package that requires this shim causes a deprecation warning
delete require.cache[__filename];
================================================
FILE: exports/shell.js
================================================
module.exports = require('electron').shell;
const Grim = require('grim');
Grim.deprecate('Use `require("electron").shell` instead of `require("shell")`');
// Ensure each package that requires this shim causes a deprecation warning
delete require.cache[__filename];
================================================
FILE: exports/web-frame.js
================================================
module.exports = require('electron').webFrame;
const Grim = require('grim');
Grim.deprecate(
'Use `require("electron").webFrame` instead of `require("web-frame")`'
);
// Ensure each package that requires this shim causes a deprecation warning
delete require.cache[__filename];
================================================
FILE: keymaps/base.cson
================================================
'atom-text-editor':
# Platform Bindings
'home': 'editor:move-to-first-character-of-line'
'end': 'editor:move-to-end-of-screen-line'
'shift-home': 'editor:select-to-first-character-of-line'
'shift-end': 'editor:select-to-end-of-line'
'atom-text-editor:not([mini])':
# Atom Specific
'ctrl-shift-c': 'editor:copy-path'
'alt-up': 'editor:select-larger-syntax-node'
'alt-down': 'editor:select-smaller-syntax-node'
# Sublime Parity
'tab': 'editor:indent'
'enter': 'editor:newline'
'shift-tab': 'editor:outdent-selected-rows'
'ctrl-shift-k': 'editor:delete-line'
'.select-list atom-text-editor[mini]':
'enter': 'core:confirm'
'.tool-panel.panel-left, .tool-panel.panel-right':
'escape': 'tool-panel:unfocus'
'atom-text-editor !important, atom-text-editor[mini] !important':
'escape': 'editor:consolidate-selections'
# Allow standard input fields to work correctly
'body .native-key-bindings':
'tab': 'core:focus-next'
'shift-tab': 'core:focus-previous'
'enter': 'native!'
'backspace': 'native!'
'shift-backspace': 'native!'
'delete': 'native!'
'up': 'native!'
'down': 'native!'
'shift-up': 'native!'
'shift-down': 'native!'
'alt-up': 'native!'
'alt-down': 'native!'
'alt-shift-up': 'native!'
'alt-shift-down': 'native!'
'cmd-up': 'native!'
'cmd-down': 'native!'
'cmd-shift-up': 'native!'
'cmd-shift-down': 'native!'
'ctrl-up': 'native!'
'ctrl-down': 'native!'
'ctrl-shift-up': 'native!'
'ctrl-shift-down': 'native!'
'left': 'native!'
'right': 'native!'
'shift-left': 'native!'
'shift-right': 'native!'
'alt-left': 'native!'
'alt-right': 'native!'
'alt-shift-left': 'native!'
'alt-shift-right': 'native!'
'cmd-left': 'native!'
'cmd-right': 'native!'
'cmd-shift-left': 'native!'
'cmd-shift-right': 'native!'
'ctrl-left': 'native!'
'ctrl-right': 'native!'
'ctrl-shift-left': 'native!'
'ctrl-shift-right': 'native!'
'ctrl-b': 'native!'
'ctrl-f': 'native!'
'ctrl-shift-f': 'native!'
'ctrl-shift-b': 'native!'
'ctrl-h': 'native!'
'ctrl-d': 'native!'
================================================
FILE: keymaps/darwin.cson
================================================
'body':
# Apple specific
'cmd-q': 'application:quit'
'cmd-h': 'application:hide'
'cmd-alt-h': 'application:hide-other-applications'
'cmd-m': 'application:minimize'
'alt-cmd-ctrl-m': 'application:zoom'
'ctrl-p': 'core:move-up'
'ctrl-n': 'core:move-down'
'ctrl-b': 'core:move-left'
'ctrl-f': 'core:move-right'
'ctrl-shift-p': 'core:select-up'
'ctrl-shift-n': 'core:select-down'
'ctrl-shift-f': 'core:select-right'
'ctrl-shift-b': 'core:select-left'
'ctrl-h': 'core:backspace'
'ctrl-d': 'core:delete'
# Atom Specific
'enter': 'core:confirm'
'escape': 'core:cancel'
'up': 'core:move-up'
'down': 'core:move-down'
'ctrl-up': 'core:move-up'
'ctrl-down': 'core:move-down'
'left': 'core:move-left'
'right': 'core:move-right'
'ctrl-alt-cmd-l': 'window:reload'
'alt-cmd-i': 'window:toggle-dev-tools'
'cmd-alt-ctrl-p': 'window:run-package-specs'
'ctrl-shift-left': 'pane:move-item-left'
'ctrl-shift-right': 'pane:move-item-right'
# Sublime Parity
'cmd-,': 'application:show-settings'
'cmd-shift-n': 'application:new-window'
'cmd-shift-w': 'window:close'
'cmd-o': 'application:open'
'cmd-shift-o': 'application:add-project-folder'
'cmd-shift-t': 'pane:reopen-closed-item'
'cmd-n': 'application:new-file'
'cmd-s': 'core:save'
'cmd-shift-s': 'core:save-as'
'cmd-alt-s': 'window:save-all'
'cmd-w': 'core:close'
'cmd-ctrl-f': 'window:toggle-full-screen'
'cmd-z': 'core:undo'
'cmd-shift-z': 'core:redo'
'cmd-y': 'core:redo'
'cmd-x': 'core:cut'
'cmd-c': 'core:copy'
'cmd-v': 'core:paste'
'shift-up': 'core:select-up'
'shift-down': 'core:select-down'
'shift-left': 'core:select-left'
'shift-right': 'core:select-right'
'shift-pageup': 'core:select-page-up'
'shift-pagedown': 'core:select-page-down'
'delete': 'core:delete'
'shift-delete': 'core:delete'
'pageup': 'core:page-up'
'pagedown': 'core:page-down'
'backspace': 'core:backspace'
'shift-backspace': 'core:backspace'
'cmd-up': 'core:move-to-top'
'cmd-down': 'core:move-to-bottom'
'cmd-shift-up': 'core:select-to-top'
'cmd-shift-down': 'core:select-to-bottom'
'cmd-{': 'pane:show-previous-item'
'cmd-}': 'pane:show-next-item'
'cmd-alt-left': 'pane:show-previous-item'
'cmd-alt-right': 'pane:show-next-item'
'ctrl-pageup': 'pane:show-previous-item'
'ctrl-pagedown': 'pane:show-next-item'
'ctrl-tab': 'pane:show-next-recently-used-item'
'ctrl-tab ^ctrl': 'pane:move-active-item-to-top-of-stack'
'ctrl-shift-tab': 'pane:show-previous-recently-used-item'
'ctrl-shift-tab ^ctrl': 'pane:move-active-item-to-top-of-stack'
'cmd-=': 'window:increase-font-size'
'cmd-+': 'window:increase-font-size'
'cmd-_': 'window:decrease-font-size'
'cmd--': 'window:decrease-font-size'
'cmd-0': 'window:reset-font-size'
'cmd-k up': 'pane:split-up-and-copy-active-item' # Atom Specific
'cmd-k down': 'pane:split-down-and-copy-active-item' # Atom Specific
'cmd-k left': 'pane:split-left-and-copy-active-item' # Atom Specific
'cmd-k right': 'pane:split-right-and-copy-active-item' # Atom Specific
'cmd-k cmd-w': 'pane:close' # Atom Specific
'cmd-k alt-cmd-w': 'pane:close-other-items' # Atom Specific
'cmd-k cmd-p': 'window:focus-previous-pane'
'cmd-k cmd-n': 'window:focus-next-pane'
'cmd-k cmd-up': 'window:focus-pane-above'
'cmd-k cmd-down': 'window:focus-pane-below'
'cmd-k cmd-left': 'window:focus-pane-on-left'
'cmd-k cmd-right': 'window:focus-pane-on-right'
'cmd-1': 'pane:show-item-1'
'cmd-2': 'pane:show-item-2'
'cmd-3': 'pane:show-item-3'
'cmd-4': 'pane:show-item-4'
'cmd-5': 'pane:show-item-5'
'cmd-6': 'pane:show-item-6'
'cmd-7': 'pane:show-item-7'
'cmd-8': 'pane:show-item-8'
'cmd-9': 'pane:show-item-9'
'atom-text-editor':
# Platform Bindings
'alt-left': 'editor:move-to-beginning-of-word'
'alt-right': 'editor:move-to-end-of-word'
'alt-shift-left': 'editor:select-to-beginning-of-word'
'alt-shift-right': 'editor:select-to-end-of-word'
# Apple Specific
'cmd-backspace': 'editor:delete-to-beginning-of-line'
'cmd-shift-backspace': 'editor:delete-to-beginning-of-line'
'cmd-delete': 'editor:delete-to-end-of-line'
'ctrl-shift-a': 'editor:select-to-first-character-of-line'
'ctrl-shift-e': 'editor:select-to-end-of-line'
'cmd-left': 'editor:move-to-first-character-of-line'
'cmd-right': 'editor:move-to-end-of-screen-line'
'cmd-shift-left': 'editor:select-to-first-character-of-line'
'cmd-shift-right': 'editor:select-to-end-of-line'
'alt-backspace': 'editor:delete-to-beginning-of-word'
'alt-delete': 'editor:delete-to-end-of-word'
'ctrl-a': 'editor:move-to-first-character-of-line'
'ctrl-e': 'editor:move-to-end-of-line'
'ctrl-k': 'editor:cut-to-end-of-line'
# Atom Specific
'ctrl-shift-w': 'editor:select-word'
'cmd-ctrl-left': 'editor:move-selection-left'
'cmd-ctrl-right': 'editor:move-selection-right'
'cmd-shift-V': 'editor:paste-without-reformatting'
# Emacs
'alt-f': 'editor:move-to-end-of-word'
'alt-ctrl-f': 'editor:move-to-next-subword-boundary'
'alt-shift-f': 'editor:select-to-end-of-word'
'alt-ctrl-shift-f': 'editor:select-to-next-subword-boundary'
'alt-b': 'editor:move-to-beginning-of-word'
'alt-ctrl-b': 'editor:move-to-previous-subword-boundary'
'alt-shift-b': 'editor:select-to-beginning-of-word'
'alt-ctrl-shift-b': 'editor:select-to-previous-subword-boundary'
'alt-h': 'editor:delete-to-beginning-of-word'
'alt-ctrl-h': 'editor:delete-to-beginning-of-subword'
'alt-d': 'editor:delete-to-end-of-word'
'alt-ctrl-d': 'editor:delete-to-end-of-subword'
# Sublime Parity
'cmd-a': 'core:select-all'
'cmd-alt-p': 'editor:log-cursor-scope'
'cmd-k cmd-u': 'editor:upper-case'
'cmd-k cmd-l': 'editor:lower-case'
'cmd-l': 'editor:select-line'
'ctrl-t': 'editor:transpose'
'ctrl-alt-left': 'editor:move-to-previous-subword-boundary'
'ctrl-alt-right': 'editor:move-to-next-subword-boundary'
'ctrl-alt-shift-left': 'editor:select-to-previous-subword-boundary'
'ctrl-alt-shift-right': 'editor:select-to-next-subword-boundary'
'ctrl-alt-backspace': 'editor:delete-to-beginning-of-subword'
'ctrl-alt-delete': 'editor:delete-to-end-of-subword'
'atom-workspace atom-text-editor:not([mini])':
# Atom specific
'alt-cmd-z': 'editor:checkout-head-revision'
'cmd-<': 'editor:scroll-to-cursor'
'alt-cmd-ctrl-f': 'editor:fold-selection'
# Sublime Parity
'cmd-enter': 'editor:newline-below'
'cmd-shift-enter': 'editor:newline-above'
'alt-enter': 'editor:newline'
'shift-enter': 'editor:newline'
'cmd-]': 'editor:indent-selected-rows'
'cmd-[': 'editor:outdent-selected-rows'
'ctrl-cmd-up': 'editor:move-line-up'
'ctrl-cmd-down': 'editor:move-line-down'
'cmd-/': 'editor:toggle-line-comments'
'cmd-j': 'editor:join-lines'
'cmd-shift-d': 'editor:duplicate-lines'
'cmd-shift-l': 'editor:split-selections-into-lines'
'ctrl-shift-up': 'editor:add-selection-above'
'ctrl-shift-down': 'editor:add-selection-below'
'cmd-alt-[': 'editor:fold-current-row'
'cmd-alt-]': 'editor:unfold-current-row'
'cmd-alt-{': 'editor:fold-all' # Atom Specific
'cmd-alt-}': 'editor:unfold-all' # Atom Specific
'cmd-k cmd-0': 'editor:unfold-all'
'cmd-k cmd-1': 'editor:fold-at-indent-level-1'
'cmd-k cmd-2': 'editor:fold-at-indent-level-2'
'cmd-k cmd-3': 'editor:fold-at-indent-level-3'
'cmd-k cmd-4': 'editor:fold-at-indent-level-4'
'cmd-k cmd-5': 'editor:fold-at-indent-level-5'
'cmd-k cmd-6': 'editor:fold-at-indent-level-6'
'cmd-k cmd-7': 'editor:fold-at-indent-level-7'
'cmd-k cmd-8': 'editor:fold-at-indent-level-8'
'cmd-k cmd-9': 'editor:fold-at-indent-level-9'
'atom-workspace atom-pane':
'cmd-alt-=': 'pane:increase-size'
'cmd-alt--': 'pane:decrease-size'
# Allow standard input fields to work correctly
'body .native-key-bindings':
'cmd-z': 'native!'
'cmd-shift-z': 'native!'
'cmd-x': 'native!'
'cmd-c': 'native!'
'cmd-v': 'native!'
================================================
FILE: keymaps/linux.cson
================================================
'body':
# Atom Specific
'enter': 'core:confirm'
'escape': 'core:cancel'
'up': 'core:move-up'
'down': 'core:move-down'
'left': 'core:move-left'
'right': 'core:move-right'
'ctrl-shift-f5': 'window:reload'
'ctrl-shift-i': 'window:toggle-dev-tools'
'ctrl-shift-y': 'window:run-package-specs'
'ctrl-shift-o': 'application:open-folder'
'ctrl-shift-a': 'application:add-project-folder'
'ctrl-shift-pageup': 'pane:move-item-left'
'ctrl-shift-pagedown': 'pane:move-item-right'
'f11': 'window:toggle-full-screen'
'alt-shift-left': 'editor:move-selection-left'
'alt-shift-right': 'editor:move-selection-right'
# Sublime Parity
'ctrl-,': 'application:show-settings'
'ctrl-shift-n': 'application:new-window'
'ctrl-shift-w': 'window:close'
'ctrl-o': 'application:open-file'
'ctrl-q': 'application:quit'
'ctrl-shift-t': 'pane:reopen-closed-item'
'ctrl-n': 'application:new-file'
'ctrl-s': 'core:save'
'ctrl-shift-s': 'core:save-as'
'ctrl-f4': 'core:close'
'ctrl-w': 'core:close'
'ctrl-z': 'core:undo'
'ctrl-y': 'core:redo'
'ctrl-shift-z': 'core:redo'
'ctrl-x': 'core:cut'
'ctrl-c': 'core:copy'
'ctrl-v': 'core:paste'
'ctrl-insert': 'core:copy'
'shift-insert': 'core:paste'
'shift-up': 'core:select-up'
'shift-down': 'core:select-down'
'shift-left': 'core:select-left'
'shift-right': 'core:select-right'
'shift-pageup': 'core:select-page-up'
'shift-pagedown': 'core:select-page-down'
'delete': 'core:delete'
'shift-delete': 'core:cut'
'pageup': 'core:page-up'
'pagedown': 'core:page-down'
'backspace': 'core:backspace'
'shift-backspace': 'core:backspace'
'ctrl-tab': 'pane:show-next-recently-used-item'
'ctrl-tab ^ctrl': 'pane:move-active-item-to-top-of-stack'
'ctrl-shift-tab': 'pane:show-previous-recently-used-item'
'ctrl-shift-tab ^ctrl': 'pane:move-active-item-to-top-of-stack'
'ctrl-pageup': 'pane:show-previous-item'
'ctrl-pagedown': 'pane:show-next-item'
'ctrl-up': 'core:move-up'
'ctrl-down': 'core:move-down'
'ctrl-shift-up': 'core:move-up'
'ctrl-shift-down': 'core:move-down'
'ctrl-=': 'window:increase-font-size'
'ctrl-+': 'window:increase-font-size'
'ctrl--': 'window:decrease-font-size'
'ctrl-_': 'window:decrease-font-size'
'ctrl-0': 'window:reset-font-size'
'ctrl-k up': 'pane:split-up-and-copy-active-item' # Atom Specific
'ctrl-k down': 'pane:split-down-and-copy-active-item' # Atom Specific
'ctrl-k left': 'pane:split-left-and-copy-active-item' # Atom Specific
'ctrl-k right': 'pane:split-right-and-copy-active-item' # Atom Specific
'ctrl-k ctrl-w': 'pane:close' # Atom Specific
'ctrl-k ctrl-alt-w': 'pane:close-other-items' # Atom Specific
'ctrl-k ctrl-p': 'window:focus-previous-pane'
'ctrl-k ctrl-n': 'window:focus-next-pane'
'ctrl-k ctrl-up': 'window:focus-pane-above'
'ctrl-k ctrl-down': 'window:focus-pane-below'
'ctrl-k ctrl-left': 'window:focus-pane-on-left'
'ctrl-k ctrl-right': 'window:focus-pane-on-right'
'alt-1': 'pane:show-item-1'
'alt-2': 'pane:show-item-2'
'alt-3': 'pane:show-item-3'
'alt-4': 'pane:show-item-4'
'alt-5': 'pane:show-item-5'
'alt-6': 'pane:show-item-6'
'alt-7': 'pane:show-item-7'
'alt-8': 'pane:show-item-8'
'alt-9': 'pane:show-item-9'
'atom-text-editor':
# Platform Bindings
'ctrl-left': 'editor:move-to-beginning-of-word'
'ctrl-right': 'editor:move-to-end-of-word'
'ctrl-shift-left': 'editor:select-to-beginning-of-word'
'ctrl-shift-right': 'editor:select-to-end-of-word'
'ctrl-backspace': 'editor:delete-to-beginning-of-word'
'ctrl-delete': 'editor:delete-to-end-of-word'
'ctrl-home': 'core:move-to-top'
'ctrl-end': 'core:move-to-bottom'
'ctrl-shift-home': 'core:select-to-top'
'ctrl-shift-end': 'core:select-to-bottom'
'alt-left': 'editor:move-to-previous-subword-boundary'
'alt-right': 'editor:move-to-next-subword-boundary'
'alt-shift-left': 'editor:select-to-previous-subword-boundary'
'alt-shift-right': 'editor:select-to-next-subword-boundary'
'alt-backspace': 'editor:delete-to-beginning-of-subword'
'alt-delete': 'editor:delete-to-end-of-subword'
'ctrl-shift-V': 'editor:paste-without-reformatting'
# Sublime Parity
'ctrl-a': 'core:select-all'
'ctrl-k ctrl-u': 'editor:upper-case'
'ctrl-k ctrl-l': 'editor:lower-case'
'ctrl-l': 'editor:select-line'
'atom-workspace atom-text-editor:not([mini])':
# Atom specific
'ctrl-<': 'editor:scroll-to-cursor'
'ctrl-alt-shift-[': 'editor:fold-selection'
# Sublime Parity
'ctrl-enter': 'editor:newline-below'
'ctrl-shift-enter': 'editor:newline-above'
'ctrl-]': 'editor:indent-selected-rows'
'ctrl-[': 'editor:outdent-selected-rows'
'ctrl-up': 'editor:move-line-up'
'ctrl-down': 'editor:move-line-down'
'ctrl-/': 'editor:toggle-line-comments'
'ctrl-j': 'editor:join-lines'
'ctrl-shift-d': 'editor:duplicate-lines'
'alt-shift-up': 'editor:add-selection-above'
'alt-shift-down': 'editor:add-selection-below'
'ctrl-alt-[': 'editor:fold-current-row'
'ctrl-alt-]': 'editor:unfold-current-row'
'ctrl-alt-{': 'editor:fold-all' # Atom Specific
'ctrl-alt-}': 'editor:unfold-all' # Atom Specific
'ctrl-k ctrl-0': 'editor:unfold-all'
'ctrl-k ctrl-1': 'editor:fold-at-indent-level-1'
'ctrl-k ctrl-2': 'editor:fold-at-indent-level-2'
'ctrl-k ctrl-3': 'editor:fold-at-indent-level-3'
'ctrl-k ctrl-4': 'editor:fold-at-indent-level-4'
'ctrl-k ctrl-5': 'editor:fold-at-indent-level-5'
'ctrl-k ctrl-6': 'editor:fold-at-indent-level-6'
'ctrl-k ctrl-7': 'editor:fold-at-indent-level-7'
'ctrl-k ctrl-8': 'editor:fold-at-indent-level-8'
'ctrl-k ctrl-9': 'editor:fold-at-indent-level-9'
'atom-workspace atom-pane':
'ctrl-alt-=': 'pane:increase-size'
'ctrl-alt--': 'pane:decrease-size'
# Allow standard input fields to work correctly
'body .native-key-bindings':
'ctrl-z': 'native!'
'ctrl-shift-z': 'native!'
'ctrl-x': 'native!'
'ctrl-c': 'native!'
'ctrl-v': 'native!'
================================================
FILE: keymaps/win32.cson
================================================
'body':
# Platform Bindings
'ctrl-pageup': 'pane:show-previous-item'
'ctrl-pagedown': 'pane:show-next-item'
# Atom Specific
'enter': 'core:confirm'
'escape': 'core:cancel'
'up': 'core:move-up'
'down': 'core:move-down'
'ctrl-up': 'core:move-up'
'ctrl-down': 'core:move-down'
'left': 'core:move-left'
'right': 'core:move-right'
'ctrl-shift-f5': 'window:reload'
'ctrl-shift-i': 'window:toggle-dev-tools'
'ctrl-shift-y': 'window:run-package-specs'
'ctrl-shift-o': 'application:open-folder'
'ctrl-shift-a': 'application:add-project-folder'
'ctrl-shift-left': 'pane:move-item-left'
'ctrl-shift-right': 'pane:move-item-right'
'f11': 'window:toggle-full-screen'
'alt-shift-left': 'editor:move-selection-left'
'alt-shift-right': 'editor:move-selection-right'
# Sublime Parity
'ctrl-,': 'application:show-settings'
'ctrl-shift-n': 'application:new-window'
'ctrl-shift-w': 'window:close'
'ctrl-o': 'application:open-file'
'ctrl-shift-t': 'pane:reopen-closed-item'
'ctrl-n': 'application:new-file'
'ctrl-s': 'core:save'
'ctrl-shift-s': 'core:save-as'
'ctrl-f4': 'core:close'
'ctrl-w': 'core:close'
'ctrl-z': 'core:undo'
'ctrl-shift-z': 'core:redo'
'ctrl-y': 'core:redo'
'shift-delete': 'core:cut'
'ctrl-insert': 'core:copy'
'shift-insert': 'core:paste'
'ctrl-x': 'core:cut'
'ctrl-c': 'core:copy'
'ctrl-v': 'core:paste'
'shift-up': 'core:select-up'
'shift-down': 'core:select-down'
'shift-left': 'core:select-left'
'shift-right': 'core:select-right'
'shift-pageup': 'core:select-page-up'
'shift-pagedown': 'core:select-page-down'
'delete': 'core:delete'
'pageup': 'core:page-up'
'pagedown': 'core:page-down'
'backspace': 'core:backspace'
'shift-backspace': 'core:backspace'
'ctrl-tab': 'pane:show-next-recently-used-item'
'ctrl-tab ^ctrl': 'pane:move-active-item-to-top-of-stack'
'ctrl-shift-tab': 'pane:show-previous-recently-used-item'
'ctrl-shift-tab ^ctrl': 'pane:move-active-item-to-top-of-stack'
'ctrl-pageup': 'pane:show-previous-item'
'ctrl-pagedown': 'pane:show-next-item'
'ctrl-shift-up': 'core:move-up'
'ctrl-shift-down': 'core:move-down'
'ctrl-alt-up': 'editor:add-selection-above'
'ctrl-alt-down': 'editor:add-selection-below'
'ctrl-=': 'window:increase-font-size'
'ctrl-+': 'window:increase-font-size'
'ctrl--': 'window:decrease-font-size'
'ctrl-_': 'window:decrease-font-size'
'ctrl-0': 'window:reset-font-size'
'ctrl-k up': 'pane:split-up-and-copy-active-item' # Atom Specific
'ctrl-k down': 'pane:split-down-and-copy-active-item' # Atom Specific
'ctrl-k left': 'pane:split-left-and-copy-active-item' # Atom Specific
'ctrl-k right': 'pane:split-right-and-copy-active-item' # Atom Specific
'ctrl-k ctrl-w': 'pane:close' # Atom Specific
'ctrl-k ctrl-alt-w': 'pane:close-other-items' # Atom Specific
'ctrl-k ctrl-p': 'window:focus-previous-pane'
'ctrl-k ctrl-n': 'window:focus-next-pane'
'ctrl-k ctrl-up': 'window:focus-pane-above'
'ctrl-k ctrl-down': 'window:focus-pane-below'
'ctrl-k ctrl-left': 'window:focus-pane-on-left'
'ctrl-k ctrl-right': 'window:focus-pane-on-right'
'alt-1': 'pane:show-item-1'
'alt-2': 'pane:show-item-2'
'alt-3': 'pane:show-item-3'
'alt-4': 'pane:show-item-4'
'alt-5': 'pane:show-item-5'
'alt-6': 'pane:show-item-6'
'alt-7': 'pane:show-item-7'
'alt-8': 'pane:show-item-8'
'alt-9': 'pane:show-item-9'
'atom-text-editor':
# Platform Bindings
'ctrl-left': 'editor:move-to-beginning-of-word'
'ctrl-right': 'editor:move-to-end-of-word'
'ctrl-shift-left': 'editor:select-to-beginning-of-word'
'ctrl-shift-right': 'editor:select-to-end-of-word'
'ctrl-backspace': 'editor:delete-to-beginning-of-word'
'ctrl-delete': 'editor:delete-to-end-of-word'
'ctrl-home': 'core:move-to-top'
'ctrl-end': 'core:move-to-bottom'
'ctrl-shift-home': 'core:select-to-top'
'ctrl-shift-end': 'core:select-to-bottom'
'alt-left': 'editor:move-to-previous-subword-boundary'
'alt-right': 'editor:move-to-next-subword-boundary'
'alt-shift-left': 'editor:select-to-previous-subword-boundary'
'alt-shift-right': 'editor:select-to-next-subword-boundary'
'alt-backspace': 'editor:delete-to-beginning-of-subword'
'alt-delete': 'editor:delete-to-end-of-subword'
'ctrl-shift-V': 'editor:paste-without-reformatting'
# Sublime Parity
'ctrl-a': 'core:select-all'
'ctrl-k ctrl-u': 'editor:upper-case'
'ctrl-k ctrl-l': 'editor:lower-case'
'ctrl-l': 'editor:select-line'
'atom-workspace atom-text-editor:not([mini])':
# Atom specific
'ctrl-<': 'editor:scroll-to-cursor'
'ctrl-alt-shift-[': 'editor:fold-selection'
# Sublime Parity
'ctrl-enter': 'editor:newline-below'
'ctrl-shift-enter': 'editor:newline-above'
'ctrl-]': 'editor:indent-selected-rows'
'ctrl-[': 'editor:outdent-selected-rows'
'ctrl-up': 'editor:move-line-up'
'ctrl-down': 'editor:move-line-down'
'ctrl-/': 'editor:toggle-line-comments'
'ctrl-j': 'editor:join-lines'
'ctrl-shift-d': 'editor:duplicate-lines'
'ctrl-alt-[': 'editor:fold-current-row'
'ctrl-alt-]': 'editor:unfold-current-row'
'ctrl-alt-{': 'editor:fold-all' # Atom Specific
'ctrl-alt-}': 'editor:unfold-all' # Atom Specific
'ctrl-k ctrl-0': 'editor:unfold-all'
'ctrl-k ctrl-1': 'editor:fold-at-indent-level-1'
'ctrl-k ctrl-2': 'editor:fold-at-indent-level-2'
'ctrl-k ctrl-3': 'editor:fold-at-indent-level-3'
'ctrl-k ctrl-4': 'editor:fold-at-indent-level-4'
'ctrl-k ctrl-5': 'editor:fold-at-indent-level-5'
'ctrl-k ctrl-6': 'editor:fold-at-indent-level-6'
'ctrl-k ctrl-7': 'editor:fold-at-indent-level-7'
'ctrl-k ctrl-8': 'editor:fold-at-indent-level-8'
'ctrl-k ctrl-9': 'editor:fold-at-indent-level-9'
'atom-workspace atom-pane':
'ctrl-alt-=': 'pane:increase-size'
'ctrl-alt--': 'pane:decrease-size'
# Allow standard input fields to work correctly
'body .native-key-bindings':
'ctrl-z': 'native!'
'ctrl-shift-z': 'native!'
'ctrl-x': 'native!'
'ctrl-c': 'native!'
'ctrl-v': 'native!'
================================================
FILE: menus/darwin.cson
================================================
'menu': [
{
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}
{ label: 'Checking for Update', enabled: false, visible: false}
{ label: 'Downloading Update', enabled: false, visible: false}
{ type: 'separator' }
{ label: 'Preferences…', command: 'application:show-settings' }
{ type: 'separator' }
{ label: 'Config…', command: 'application:open-your-config' }
{ label: 'Init Script…', command: 'application:open-your-init-script' }
{ label: '
gitextract_ehm8a0w4/
├── .coffeelintignore
├── .eslintignore
├── .eslintrc.json
├── .gitattributes
├── .github/
│ ├── lock.yml
│ ├── move.yml
│ ├── no-response.yml
│ └── stale.yml
├── .gitignore
├── .prettierrc
├── CHANGELOG.md
├── CODE_OF_CONDUCT.md
├── CONTRIBUTING.md
├── Dockerfile
├── LICENSE.md
├── PULL_REQUEST_TEMPLATE.md
├── README.md
├── SUPPORT.md
├── apm/
│ ├── README.md
│ └── package.json
├── atom.sh
├── benchmarks/
│ ├── benchmark-runner.js
│ ├── text-editor-large-file-construction.bench.js
│ └── text-editor-long-lines.bench.js
├── coffeelint.json
├── docs/
│ ├── README.md
│ ├── apm-rest-api.md
│ ├── build-instructions/
│ │ ├── build-status.md
│ │ ├── linux.md
│ │ ├── macOS.md
│ │ └── windows.md
│ ├── contributing-to-packages.md
│ ├── native-profiling.md
│ └── rfcs/
│ ├── 000-template.md
│ ├── 001-updatable-bundled-packages.md
│ ├── 002-atom-nightly-releases.md
│ ├── 003-consolidate-core-packages.md
│ ├── 004-decoration-ordering.md
│ ├── 005-grammar-comment-delims.md
│ ├── 005-pretranspile.md
│ └── 005-scope-naming.md
├── dot-atom/
│ ├── .gitignore
│ ├── init.coffee
│ ├── keymap.cson
│ ├── packages/
│ │ └── README.md
│ ├── snippets.cson
│ └── styles.less
├── exports/
│ ├── atom.js
│ ├── clipboard.js
│ ├── ipc.js
│ ├── remote.js
│ ├── shell.js
│ └── web-frame.js
├── keymaps/
│ ├── base.cson
│ ├── darwin.cson
│ ├── linux.cson
│ └── win32.cson
├── menus/
│ ├── darwin.cson
│ ├── linux.cson
│ └── win32.cson
├── package.json
├── packages/
│ ├── README.md
│ ├── about/
│ │ ├── .gitignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── about.js
│ │ │ ├── components/
│ │ │ │ ├── about-status-bar.js
│ │ │ │ ├── about-view.js
│ │ │ │ ├── atom-logo.js
│ │ │ │ └── update-view.js
│ │ │ ├── etch-component.js
│ │ │ ├── main.js
│ │ │ └── update-manager.js
│ │ ├── package.json
│ │ ├── spec/
│ │ │ ├── about-spec.js
│ │ │ ├── about-status-bar-spec.js
│ │ │ ├── helpers/
│ │ │ │ └── async-spec-helpers.js
│ │ │ ├── mocks/
│ │ │ │ └── updater.js
│ │ │ ├── update-manager-spec.js
│ │ │ └── update-view-spec.js
│ │ └── styles/
│ │ ├── about.less
│ │ └── variables.less
│ ├── atom-dark-syntax/
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.less
│ │ ├── package.json
│ │ └── styles/
│ │ ├── editor.less
│ │ ├── syntax/
│ │ │ ├── base.less
│ │ │ ├── css.less
│ │ │ └── html.less
│ │ ├── syntax-legacy/
│ │ │ └── _base.less
│ │ └── syntax-variables.less
│ ├── atom-dark-ui/
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.less
│ │ ├── package.json
│ │ └── styles/
│ │ ├── atom.less
│ │ ├── buttons.less
│ │ ├── dropdowns.less
│ │ ├── editor.less
│ │ ├── git.less
│ │ ├── lists.less
│ │ ├── messages.less
│ │ ├── nav.less
│ │ ├── overlays.less
│ │ ├── panels.less
│ │ ├── panes.less
│ │ ├── progress.less
│ │ ├── sites.less
│ │ ├── tabs.less
│ │ ├── text.less
│ │ ├── tooltips.less
│ │ ├── tree-view.less
│ │ ├── ui-mixins.less
│ │ ├── ui-variables.less
│ │ └── utilities.less
│ ├── atom-light-syntax/
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.less
│ │ ├── package.json
│ │ └── styles/
│ │ ├── editor.less
│ │ ├── syntax/
│ │ │ ├── base.less
│ │ │ └── css.less
│ │ ├── syntax-legacy/
│ │ │ └── _base.less
│ │ └── syntax-variables.less
│ ├── atom-light-ui/
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.less
│ │ ├── package.json
│ │ └── styles/
│ │ ├── atom.less
│ │ ├── buttons.less
│ │ ├── editor.less
│ │ ├── git.less
│ │ ├── lists.less
│ │ ├── messages.less
│ │ ├── overlays.less
│ │ ├── panels.less
│ │ ├── panes.less
│ │ ├── progress.less
│ │ ├── sites.less
│ │ ├── tabs.less
│ │ ├── text.less
│ │ ├── tooltips.less
│ │ ├── tree-view.less
│ │ ├── ui-mixins.less
│ │ ├── ui-variables.less
│ │ └── utilities.less
│ ├── autoflow/
│ │ ├── .coffeelintignore
│ │ ├── .gitignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── coffeelint.json
│ │ ├── keymaps/
│ │ │ └── autoflow.cson
│ │ ├── lib/
│ │ │ └── autoflow.coffee
│ │ ├── menus/
│ │ │ └── autoflow.cson
│ │ ├── package.json
│ │ └── spec/
│ │ └── autoflow-spec.coffee
│ ├── base16-tomorrow-dark-theme/
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.less
│ │ ├── package.json
│ │ └── styles/
│ │ ├── colors.less
│ │ ├── editor.less
│ │ ├── syntax/
│ │ │ ├── base.less
│ │ │ └── css.less
│ │ ├── syntax-legacy/
│ │ │ ├── _base.less
│ │ │ ├── cs.less
│ │ │ └── json.less
│ │ └── syntax-variables.less
│ ├── base16-tomorrow-light-theme/
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.less
│ │ ├── package.json
│ │ └── styles/
│ │ ├── colors.less
│ │ ├── editor.less
│ │ ├── syntax/
│ │ │ ├── base.less
│ │ │ └── css.less
│ │ ├── syntax-legacy/
│ │ │ ├── _base.less
│ │ │ ├── cs.less
│ │ │ └── json.less
│ │ └── syntax-variables.less
│ ├── dalek/
│ │ ├── .gitignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── dalek.js
│ │ │ └── main.js
│ │ ├── package.json
│ │ └── test/
│ │ ├── dalek.test.js
│ │ └── runner.js
│ ├── deprecation-cop/
│ │ ├── .coffeelintignore
│ │ ├── .gitignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── coffeelint.json
│ │ ├── lib/
│ │ │ ├── deprecation-cop-status-bar-view.coffee
│ │ │ ├── deprecation-cop-view.js
│ │ │ └── main.js
│ │ ├── package.json
│ │ ├── spec/
│ │ │ ├── deprecation-cop-spec.coffee
│ │ │ ├── deprecation-cop-status-bar-view-spec.coffee
│ │ │ └── deprecation-cop-view-spec.coffee
│ │ └── styles/
│ │ └── deprecation-cop.less
│ ├── dev-live-reload/
│ │ ├── .gitignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── keymaps/
│ │ │ └── dev-live-reload.cson
│ │ ├── lib/
│ │ │ ├── base-theme-watcher.js
│ │ │ ├── main.js
│ │ │ ├── package-watcher.js
│ │ │ ├── ui-watcher.js
│ │ │ └── watcher.js
│ │ ├── menus/
│ │ │ └── dev-live-reload.cson
│ │ ├── package.json
│ │ └── spec/
│ │ ├── async-spec-helpers.js
│ │ ├── dev-live-reload-spec.js
│ │ ├── fixtures/
│ │ │ ├── package-with-index/
│ │ │ │ └── index.coffee
│ │ │ ├── package-with-styles-folder/
│ │ │ │ ├── package.cson
│ │ │ │ └── styles/
│ │ │ │ ├── 3.css
│ │ │ │ └── sub/
│ │ │ │ ├── 1.css
│ │ │ │ └── 2.less
│ │ │ ├── package-with-styles-manifest/
│ │ │ │ ├── package.cson
│ │ │ │ └── styles/
│ │ │ │ ├── 1.css
│ │ │ │ ├── 2.less
│ │ │ │ └── 3.css
│ │ │ ├── packages/
│ │ │ │ ├── index.less
│ │ │ │ ├── package.cson
│ │ │ │ ├── package.json
│ │ │ │ └── styles/
│ │ │ │ ├── 1.css
│ │ │ │ ├── 2.less
│ │ │ │ ├── 3.css
│ │ │ │ ├── first.less
│ │ │ │ ├── last.less
│ │ │ │ ├── second.less
│ │ │ │ └── ui-variables.less
│ │ │ ├── static/
│ │ │ │ └── atom.less
│ │ │ ├── theme-with-index-less/
│ │ │ │ ├── index.less
│ │ │ │ └── package.json
│ │ │ ├── theme-with-multiple-imported-files/
│ │ │ │ ├── index.less
│ │ │ │ ├── package.json
│ │ │ │ └── styles/
│ │ │ │ ├── first.less
│ │ │ │ ├── last.less
│ │ │ │ ├── second.less
│ │ │ │ └── ui-variables.less
│ │ │ ├── theme-with-package-file/
│ │ │ │ ├── package.json
│ │ │ │ └── styles/
│ │ │ │ ├── first.css
│ │ │ │ ├── last.css
│ │ │ │ └── second.less
│ │ │ ├── theme-with-syntax-variables/
│ │ │ │ ├── package.json
│ │ │ │ └── styles/
│ │ │ │ └── editor.less
│ │ │ └── theme-with-ui-variables/
│ │ │ ├── package.json
│ │ │ └── styles/
│ │ │ ├── editor.less
│ │ │ └── ui-variables.less
│ │ └── ui-watcher-spec.js
│ ├── exception-reporting/
│ │ ├── .gitignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── main.js
│ │ │ └── reporter.js
│ │ ├── package.json
│ │ └── spec/
│ │ └── reporter-spec.js
│ ├── git-diff/
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── keymaps/
│ │ │ └── git-diff.cson
│ │ ├── lib/
│ │ │ ├── diff-list-view.js
│ │ │ ├── git-diff-view.js
│ │ │ ├── helpers.js
│ │ │ └── main.js
│ │ ├── menus/
│ │ │ └── git-diff.cson
│ │ ├── package.json
│ │ ├── spec/
│ │ │ ├── diff-list-view-spec.js
│ │ │ ├── fixtures/
│ │ │ │ └── working-dir/
│ │ │ │ ├── git.git/
│ │ │ │ │ ├── HEAD
│ │ │ │ │ ├── config
│ │ │ │ │ ├── index
│ │ │ │ │ ├── objects/
│ │ │ │ │ │ ├── 06/
│ │ │ │ │ │ │ └── 5a272b55ec2ee84530dffd60b6869f7bf5d99c
│ │ │ │ │ │ ├── 3e/
│ │ │ │ │ │ │ └── 715502b971d4f8282d1e05a8ccfad6f7037910
│ │ │ │ │ │ ├── 8e/
│ │ │ │ │ │ │ └── ab2e81eb8dea81ad08694c7b30ae165af89c8e
│ │ │ │ │ │ ├── 90/
│ │ │ │ │ │ │ └── 820108a054b6f49c0d21031313244b6f7d69dc
│ │ │ │ │ │ ├── e7/
│ │ │ │ │ │ │ └── fd5b055dcdaa93ad8f9d63ca8db5330537105f
│ │ │ │ │ │ ├── f1/
│ │ │ │ │ │ │ └── 4149b7b38a0a972c46557877caff6c9fe76476
│ │ │ │ │ │ └── fb/
│ │ │ │ │ │ └── 33b0b43b20b7f9de1bca79e192fa2e30dbeb6b
│ │ │ │ │ └── refs/
│ │ │ │ │ └── heads/
│ │ │ │ │ └── master
│ │ │ │ ├── sample.js
│ │ │ │ └── sample.txt
│ │ │ ├── git-diff-spec.js
│ │ │ ├── git-diff-subfolder-spec.js
│ │ │ └── init-spec.js
│ │ └── styles/
│ │ └── git-diff.less
│ ├── go-to-line/
│ │ ├── .gitignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── keymaps/
│ │ │ └── go-to-line.cson
│ │ ├── lib/
│ │ │ └── go-to-line-view.js
│ │ ├── menus/
│ │ │ └── go-to-line.cson
│ │ ├── package.json
│ │ └── spec/
│ │ ├── fixtures/
│ │ │ └── sample.js
│ │ └── go-to-line-spec.js
│ ├── grammar-selector/
│ │ ├── README.md
│ │ ├── keymaps/
│ │ │ └── grammar-selector.cson
│ │ ├── lib/
│ │ │ ├── grammar-list-view.js
│ │ │ ├── grammar-status-view.js
│ │ │ └── main.js
│ │ ├── menus/
│ │ │ └── grammar-selector.cson
│ │ ├── package.json
│ │ ├── spec/
│ │ │ ├── fixtures/
│ │ │ │ └── language-with-no-name/
│ │ │ │ ├── grammars/
│ │ │ │ │ └── a.json
│ │ │ │ └── package.json
│ │ │ └── grammar-selector-spec.js
│ │ └── styles/
│ │ └── grammar-selector.less
│ ├── incompatible-packages/
│ │ ├── .gitignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── incompatible-packages-component.js
│ │ │ ├── main.js
│ │ │ ├── status-icon-component.js
│ │ │ └── view-uri.js
│ │ ├── package.json
│ │ ├── spec/
│ │ │ ├── fixtures/
│ │ │ │ └── incompatible-package/
│ │ │ │ ├── bad.js
│ │ │ │ └── package.json
│ │ │ ├── incompatible-packages-component-spec.js
│ │ │ └── incompatible-packages-spec.js
│ │ └── styles/
│ │ └── incompatible-packages.less
│ ├── language-rust-bundled/
│ │ ├── README.md
│ │ ├── grammars/
│ │ │ └── tree-sitter-rust.cson
│ │ ├── lib/
│ │ │ └── main.js
│ │ ├── package.json
│ │ └── settings/
│ │ └── rust.cson
│ ├── line-ending-selector/
│ │ ├── .gitattributes
│ │ ├── .gitignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── helpers.js
│ │ │ ├── main.js
│ │ │ ├── selector.js
│ │ │ └── status-bar-item.js
│ │ ├── package.json
│ │ └── spec/
│ │ ├── fixtures/
│ │ │ ├── mixed-endings.md
│ │ │ ├── unix-endings.md
│ │ │ └── windows-endings.md
│ │ └── line-ending-selector-spec.js
│ ├── link/
│ │ ├── .gitignore
│ │ ├── .npmignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── keymaps/
│ │ │ └── links.cson
│ │ ├── lib/
│ │ │ └── link.js
│ │ ├── menus/
│ │ │ └── link.cson
│ │ ├── package.json
│ │ └── spec/
│ │ └── link-spec.js
│ ├── one-dark-syntax/
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.less
│ │ ├── package.json
│ │ └── styles/
│ │ ├── colors.less
│ │ ├── editor.less
│ │ ├── syntax/
│ │ │ ├── base.less
│ │ │ └── css.less
│ │ ├── syntax-legacy/
│ │ │ ├── _base.less
│ │ │ ├── c.less
│ │ │ ├── cpp.less
│ │ │ ├── cs.less
│ │ │ ├── css.less
│ │ │ ├── elixir.less
│ │ │ ├── gfm.less
│ │ │ ├── go.less
│ │ │ ├── ini.less
│ │ │ ├── java.less
│ │ │ ├── javascript.less
│ │ │ ├── json.less
│ │ │ ├── ng.less
│ │ │ ├── php.less
│ │ │ ├── python.less
│ │ │ ├── ruby.less
│ │ │ └── typescript.less
│ │ └── syntax-variables.less
│ ├── one-dark-ui/
│ │ ├── .gitignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.less
│ │ ├── lib/
│ │ │ └── main.js
│ │ ├── package.json
│ │ ├── spec/
│ │ │ └── theme-spec.js
│ │ └── styles/
│ │ ├── atom.less
│ │ ├── badges.less
│ │ ├── buttons.less
│ │ ├── config.less
│ │ ├── core.less
│ │ ├── docks.less
│ │ ├── dropdowns.less
│ │ ├── editor.less
│ │ ├── git.less
│ │ ├── inputs.less
│ │ ├── key-binding.less
│ │ ├── lists.less
│ │ ├── messages.less
│ │ ├── modal.less
│ │ ├── nav.less
│ │ ├── notifications.less
│ │ ├── packages.less
│ │ ├── panels.less
│ │ ├── panes.less
│ │ ├── progress.less
│ │ ├── settings.less
│ │ ├── sites.less
│ │ ├── status-bar.less
│ │ ├── tabs.less
│ │ ├── text.less
│ │ ├── title-bar.less
│ │ ├── tooltips.less
│ │ ├── tree-view.less
│ │ ├── ui-mixins.less
│ │ ├── ui-variables-custom.less
│ │ └── ui-variables.less
│ ├── one-light-syntax/
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.less
│ │ ├── package.json
│ │ └── styles/
│ │ ├── colors.less
│ │ ├── editor.less
│ │ ├── syntax/
│ │ │ ├── base.less
│ │ │ └── css.less
│ │ ├── syntax-legacy/
│ │ │ ├── _base.less
│ │ │ ├── c.less
│ │ │ ├── cpp.less
│ │ │ ├── cs.less
│ │ │ ├── css.less
│ │ │ ├── elixir.less
│ │ │ ├── gfm.less
│ │ │ ├── go.less
│ │ │ ├── ini.less
│ │ │ ├── java.less
│ │ │ ├── javascript.less
│ │ │ ├── json.less
│ │ │ ├── ng.less
│ │ │ ├── php.less
│ │ │ ├── python.less
│ │ │ ├── ruby.less
│ │ │ └── typescript.less
│ │ └── syntax-variables.less
│ ├── one-light-ui/
│ │ ├── .gitignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.less
│ │ ├── lib/
│ │ │ └── main.js
│ │ ├── package.json
│ │ ├── spec/
│ │ │ └── theme-spec.js
│ │ └── styles/
│ │ ├── atom.less
│ │ ├── badges.less
│ │ ├── buttons.less
│ │ ├── config.less
│ │ ├── core.less
│ │ ├── docks.less
│ │ ├── dropdowns.less
│ │ ├── editor.less
│ │ ├── git.less
│ │ ├── inputs.less
│ │ ├── key-binding.less
│ │ ├── lists.less
│ │ ├── messages.less
│ │ ├── modal.less
│ │ ├── nav.less
│ │ ├── notifications.less
│ │ ├── packages.less
│ │ ├── panels.less
│ │ ├── panes.less
│ │ ├── progress.less
│ │ ├── settings.less
│ │ ├── sites.less
│ │ ├── status-bar.less
│ │ ├── tabs.less
│ │ ├── text.less
│ │ ├── title-bar.less
│ │ ├── tooltips.less
│ │ ├── tree-view.less
│ │ ├── ui-mixins.less
│ │ ├── ui-variables-custom.less
│ │ └── ui-variables.less
│ ├── solarized-dark-syntax/
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.less
│ │ ├── package.json
│ │ └── styles/
│ │ ├── colors.less
│ │ ├── editor.less
│ │ ├── syntax/
│ │ │ ├── base.less
│ │ │ ├── css.less
│ │ │ ├── html.less
│ │ │ └── js.less
│ │ ├── syntax-legacy/
│ │ │ ├── _base.less
│ │ │ ├── c.less
│ │ │ ├── coffee.less
│ │ │ ├── css.less
│ │ │ ├── go.less
│ │ │ ├── java.less
│ │ │ ├── javascript.less
│ │ │ ├── markdown.less
│ │ │ ├── markup.less
│ │ │ ├── php.less
│ │ │ ├── python.less
│ │ │ ├── ruby.less
│ │ │ ├── scala.less
│ │ │ └── typescript.less
│ │ └── syntax-variables.less
│ ├── solarized-light-syntax/
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── index.less
│ │ ├── package.json
│ │ └── styles/
│ │ ├── colors.less
│ │ ├── editor.less
│ │ ├── syntax/
│ │ │ ├── base.less
│ │ │ ├── css.less
│ │ │ ├── html.less
│ │ │ └── js.less
│ │ ├── syntax-legacy/
│ │ │ ├── _base.less
│ │ │ ├── c.less
│ │ │ ├── coffee.less
│ │ │ ├── css.less
│ │ │ ├── go.less
│ │ │ ├── java.less
│ │ │ ├── javascript.less
│ │ │ ├── markdown.less
│ │ │ ├── markup.less
│ │ │ ├── php.less
│ │ │ ├── python.less
│ │ │ ├── ruby.less
│ │ │ ├── scala.less
│ │ │ └── typescript.less
│ │ └── syntax-variables.less
│ ├── update-package-dependencies/
│ │ ├── .gitignore
│ │ ├── LICENSE.md
│ │ ├── README.md
│ │ ├── lib/
│ │ │ ├── update-package-dependencies-status-view.js
│ │ │ └── update-package-dependencies.js
│ │ ├── package.json
│ │ ├── spec/
│ │ │ └── update-package-dependencies-spec.js
│ │ └── styles/
│ │ └── update-package-dependencies.less
│ └── welcome/
│ ├── .gitignore
│ ├── LICENSE.md
│ ├── README.md
│ ├── docs/
│ │ └── events.md
│ ├── lib/
│ │ ├── consent-view.js
│ │ ├── guide-view.js
│ │ ├── main.js
│ │ ├── reporter-proxy.js
│ │ ├── welcome-package.js
│ │ └── welcome-view.js
│ ├── menus/
│ │ └── welcome.cson
│ ├── package.json
│ ├── styles/
│ │ └── welcome.less
│ └── test/
│ ├── helpers.js
│ └── welcome.test.js
├── resources/
│ ├── app-icons/
│ │ ├── beta/
│ │ │ └── atom.icns
│ │ ├── dev/
│ │ │ └── atom.icns
│ │ ├── nightly/
│ │ │ └── atom.icns
│ │ └── stable/
│ │ └── atom.icns
│ ├── linux/
│ │ ├── atom.desktop.in
│ │ ├── atom.policy
│ │ ├── debian/
│ │ │ └── control.in
│ │ ├── desktopenviroment/
│ │ │ └── cinnamon/
│ │ │ └── atom.nemo_action
│ │ └── redhat/
│ │ └── atom.spec.in
│ ├── mac/
│ │ ├── atom-Info.plist
│ │ ├── entitlements.plist
│ │ ├── file.icns
│ │ └── helper-Info.plist
│ └── win/
│ ├── apm.cmd
│ ├── apm.sh
│ ├── atom.cmd
│ ├── atom.js
│ ├── atom.sh
│ └── atom.visualElementsManifest.xml
├── script/
│ ├── bootstrap
│ ├── bootstrap.cmd
│ ├── build
│ ├── build.cmd
│ ├── cibuild
│ ├── clean
│ ├── clean.cmd
│ ├── config.js
│ ├── deprecated-packages.json
│ ├── lib/
│ │ ├── backup-node-modules.js
│ │ ├── check-chromedriver-version.js
│ │ ├── clean-caches.js
│ │ ├── clean-dependencies.js
│ │ ├── clean-output-directory.js
│ │ ├── code-sign-on-mac.js
│ │ ├── code-sign-on-windows.js
│ │ ├── compress-artifacts.js
│ │ ├── copy-assets.js
│ │ ├── create-debian-package.js
│ │ ├── create-rpm-package.js
│ │ ├── create-windows-installer.js
│ │ ├── delete-msbuild-from-path.js
│ │ ├── dependencies-fingerprint.js
│ │ ├── download-file-from-github.js
│ │ ├── dump-symbols.js
│ │ ├── expand-glob-paths.js
│ │ ├── generate-api-docs.js
│ │ ├── generate-metadata.js
│ │ ├── generate-module-cache.js
│ │ ├── generate-startup-snapshot.js
│ │ ├── get-license-text.js
│ │ ├── handle-tilde.js
│ │ ├── include-path-in-packaged-app.js
│ │ ├── install-apm.js
│ │ ├── install-application.js
│ │ ├── install-script-dependencies.js
│ │ ├── kill-running-atom-instances.js
│ │ ├── lint-coffee-script-paths.js
│ │ ├── lint-java-script-paths.js
│ │ ├── lint-less-paths.js
│ │ ├── notarize-on-mac.js
│ │ ├── package-application.js
│ │ ├── prebuild-less-cache.js
│ │ ├── read-files.js
│ │ ├── run-apm-install.js
│ │ ├── spawn-sync.js
│ │ ├── test-sign-on-mac.js
│ │ ├── transpile-babel-paths.js
│ │ ├── transpile-coffee-script-paths.js
│ │ ├── transpile-cson-paths.js
│ │ ├── transpile-packages-with-custom-transpiler-paths.js
│ │ ├── transpile-peg-js-paths.js
│ │ ├── update-dependency/
│ │ │ ├── fetch-outdated-dependencies.js
│ │ │ ├── git.js
│ │ │ ├── index.js
│ │ │ ├── main.js
│ │ │ ├── pull-request.js
│ │ │ ├── spec/
│ │ │ │ ├── fetch-outdated-dependencies-spec.js
│ │ │ │ ├── fixtures/
│ │ │ │ │ ├── create-pr-response.json
│ │ │ │ │ ├── latest-package.json
│ │ │ │ │ └── search-response.json
│ │ │ │ ├── git-spec.js
│ │ │ │ ├── helpers.js
│ │ │ │ ├── pull-request-spec.js
│ │ │ │ └── util-spec.js
│ │ │ └── util.js
│ │ └── verify-machine-requirements.js
│ ├── license-overrides.js
│ ├── lint
│ ├── lint.cmd
│ ├── package.json
│ ├── postprocess-junit-results
│ ├── postprocess-junit-results.cmd
│ ├── redownload-electron-bins.js
│ ├── test
│ ├── test.cmd
│ ├── update-server/
│ │ ├── README.md
│ │ ├── package.json
│ │ └── run-server.js
│ ├── verify-snapshot-script
│ └── vsts/
│ ├── README.md
│ ├── get-release-version.js
│ ├── lib/
│ │ ├── release-notes.js
│ │ ├── upload-linux-packages.js
│ │ └── upload-to-azure-blob.js
│ ├── lint.yml
│ ├── nightly-release.yml
│ ├── package.json
│ ├── platforms/
│ │ ├── linux.yml
│ │ ├── macos.yml
│ │ ├── templates/
│ │ │ ├── bootstrap.yml
│ │ │ ├── build.yml
│ │ │ ├── cache.yml
│ │ │ ├── download-unzip.yml
│ │ │ ├── get-release-version.yml
│ │ │ ├── preparation.yml
│ │ │ ├── publish.yml
│ │ │ └── test.yml
│ │ └── windows.yml
│ ├── pull-requests.yml
│ ├── release-branch-build.yml
│ ├── upload-artifacts.js
│ ├── upload-crash-reports.js
│ ├── x64-cache-key
│ └── x86-cache-key
├── spec/
│ ├── application-delegate-spec.js
│ ├── async-spec-helpers.js
│ ├── atom-environment-spec.js
│ ├── atom-paths-spec.js
│ ├── atom-protocol-handler-spec.js
│ ├── atom-reporter.coffee
│ ├── auto-update-manager-spec.js
│ ├── babel-spec.js
│ ├── buffered-node-process-spec.js
│ ├── buffered-process-spec.js
│ ├── clipboard-spec.js
│ ├── command-installer-spec.js
│ ├── command-registry-spec.js
│ ├── compile-cache-spec.coffee
│ ├── config-file-spec.js
│ ├── config-spec.js
│ ├── context-menu-manager-spec.js
│ ├── decoration-manager-spec.js
│ ├── default-directory-provider-spec.js
│ ├── default-directory-searcher-spec.js
│ ├── deserializer-manager-spec.js
│ ├── dock-spec.js
│ ├── file-system-blob-store-spec.js
│ ├── fixtures/
│ │ ├── babel/
│ │ │ ├── babel-comment.js
│ │ │ ├── babel-double-quotes.js
│ │ │ ├── babel-single-quotes.js
│ │ │ ├── flow-comment.js
│ │ │ ├── flow-slash-comment.js
│ │ │ └── invalid.js
│ │ ├── coffee.coffee
│ │ ├── cson.cson
│ │ ├── css.css
│ │ ├── dir/
│ │ │ ├── a
│ │ │ ├── a-dir/
│ │ │ │ └── oh-git
│ │ │ ├── b
│ │ │ ├── c
│ │ │ ├── file-detected-as-binary
│ │ │ ├── file-with-newline-literal
│ │ │ ├── file-with-unicode
│ │ │ └── file1
│ │ ├── git/
│ │ │ ├── ignore.git/
│ │ │ │ ├── HEAD
│ │ │ │ ├── config
│ │ │ │ ├── index
│ │ │ │ ├── info/
│ │ │ │ │ └── exclude
│ │ │ │ ├── objects/
│ │ │ │ │ ├── 65/
│ │ │ │ │ │ └── a457425a679cbe9adf0d2741785d3ceabb44a7
│ │ │ │ │ ├── e6/
│ │ │ │ │ │ └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
│ │ │ │ │ └── ef/
│ │ │ │ │ └── 046e9eecaa5255ea5e9817132d4001724d6ae1
│ │ │ │ └── refs/
│ │ │ │ └── heads/
│ │ │ │ └── master
│ │ │ ├── master.git/
│ │ │ │ ├── HEAD
│ │ │ │ ├── config
│ │ │ │ ├── index
│ │ │ │ ├── objects/
│ │ │ │ │ ├── 65/
│ │ │ │ │ │ └── a457425a679cbe9adf0d2741785d3ceabb44a7
│ │ │ │ │ ├── e6/
│ │ │ │ │ │ └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
│ │ │ │ │ └── ef/
│ │ │ │ │ └── 046e9eecaa5255ea5e9817132d4001724d6ae1
│ │ │ │ ├── refs/
│ │ │ │ │ └── heads/
│ │ │ │ │ └── master
│ │ │ │ └── worktrees/
│ │ │ │ └── worktree-dir/
│ │ │ │ ├── HEAD
│ │ │ │ ├── commondir
│ │ │ │ └── index
│ │ │ ├── repo-with-submodules/
│ │ │ │ ├── .gitmodules
│ │ │ │ ├── README
│ │ │ │ ├── You-Dont-Need-jQuery/
│ │ │ │ │ ├── .babelrc
│ │ │ │ │ ├── .eslintrc
│ │ │ │ │ ├── .gitignore
│ │ │ │ │ ├── .travis.yml
│ │ │ │ │ ├── LICENSE
│ │ │ │ │ ├── README-es.md
│ │ │ │ │ ├── README-id.md
│ │ │ │ │ ├── README-it.md
│ │ │ │ │ ├── README-my.md
│ │ │ │ │ ├── README-ru.md
│ │ │ │ │ ├── README-tr.md
│ │ │ │ │ ├── README-vi.md
│ │ │ │ │ ├── README.ko-KR.md
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── README.pt-BR.md
│ │ │ │ │ ├── README.zh-CN.md
│ │ │ │ │ ├── git.git
│ │ │ │ │ ├── karma.conf.js
│ │ │ │ │ ├── package.json
│ │ │ │ │ └── test/
│ │ │ │ │ ├── README.md
│ │ │ │ │ ├── css.spec.js
│ │ │ │ │ ├── dom.spec.js
│ │ │ │ │ ├── query.spec.js
│ │ │ │ │ └── utilities.spec.js
│ │ │ │ ├── git.git/
│ │ │ │ │ ├── COMMIT_EDITMSG
│ │ │ │ │ ├── HEAD
│ │ │ │ │ ├── config
│ │ │ │ │ ├── description
│ │ │ │ │ ├── hooks/
│ │ │ │ │ │ ├── applypatch-msg.sample
│ │ │ │ │ │ ├── commit-msg.sample
│ │ │ │ │ │ ├── post-update.sample
│ │ │ │ │ │ ├── pre-applypatch.sample
│ │ │ │ │ │ ├── pre-commit.sample
│ │ │ │ │ │ ├── pre-push.sample
│ │ │ │ │ │ ├── pre-rebase.sample
│ │ │ │ │ │ ├── prepare-commit-msg.sample
│ │ │ │ │ │ └── update.sample
│ │ │ │ │ ├── index
│ │ │ │ │ ├── info/
│ │ │ │ │ │ └── exclude
│ │ │ │ │ ├── logs/
│ │ │ │ │ │ ├── HEAD
│ │ │ │ │ │ └── refs/
│ │ │ │ │ │ └── heads/
│ │ │ │ │ │ └── master
│ │ │ │ │ ├── modules/
│ │ │ │ │ │ ├── You-Dont-Need-jQuery/
│ │ │ │ │ │ │ ├── COMMIT_EDITMSG
│ │ │ │ │ │ │ ├── HEAD
│ │ │ │ │ │ │ ├── ORIG_HEAD
│ │ │ │ │ │ │ ├── config
│ │ │ │ │ │ │ ├── description
│ │ │ │ │ │ │ ├── gitdir
│ │ │ │ │ │ │ ├── hooks/
│ │ │ │ │ │ │ │ ├── applypatch-msg.sample
│ │ │ │ │ │ │ │ ├── commit-msg.sample
│ │ │ │ │ │ │ │ ├── post-update.sample
│ │ │ │ │ │ │ │ ├── pre-applypatch.sample
│ │ │ │ │ │ │ │ ├── pre-commit.sample
│ │ │ │ │ │ │ │ ├── pre-push.sample
│ │ │ │ │ │ │ │ ├── pre-rebase.sample
│ │ │ │ │ │ │ │ ├── prepare-commit-msg.sample
│ │ │ │ │ │ │ │ └── update.sample
│ │ │ │ │ │ │ ├── index
│ │ │ │ │ │ │ ├── info/
│ │ │ │ │ │ │ │ └── exclude
│ │ │ │ │ │ │ ├── logs/
│ │ │ │ │ │ │ │ ├── HEAD
│ │ │ │ │ │ │ │ └── refs/
│ │ │ │ │ │ │ │ ├── heads/
│ │ │ │ │ │ │ │ │ └── master
│ │ │ │ │ │ │ │ └── remotes/
│ │ │ │ │ │ │ │ └── origin/
│ │ │ │ │ │ │ │ └── HEAD
│ │ │ │ │ │ │ ├── objects/
│ │ │ │ │ │ │ │ ├── a7/
│ │ │ │ │ │ │ │ │ └── 8b35a896b890f0a2a4f1f924c5739776415250
│ │ │ │ │ │ │ │ ├── ae/
│ │ │ │ │ │ │ │ │ └── 897dce6e0590f08dddfe9a5152e237e955ca57
│ │ │ │ │ │ │ │ ├── be/
│ │ │ │ │ │ │ │ │ └── 8ed228c0a080145d28ed625a5f487caae6a3f9
│ │ │ │ │ │ │ │ └── pack/
│ │ │ │ │ │ │ │ ├── pack-d38b3bc339acd655e8dae9c0dcea8bb2ec174d16.idx
│ │ │ │ │ │ │ │ └── pack-d38b3bc339acd655e8dae9c0dcea8bb2ec174d16.pack
│ │ │ │ │ │ │ ├── packed-refs
│ │ │ │ │ │ │ └── refs/
│ │ │ │ │ │ │ ├── heads/
│ │ │ │ │ │ │ │ └── master
│ │ │ │ │ │ │ └── remotes/
│ │ │ │ │ │ │ └── origin/
│ │ │ │ │ │ │ └── HEAD
│ │ │ │ │ │ └── jstips/
│ │ │ │ │ │ ├── COMMIT_EDITMSG
│ │ │ │ │ │ ├── HEAD
│ │ │ │ │ │ ├── ORIG_HEAD
│ │ │ │ │ │ ├── config
│ │ │ │ │ │ ├── description
│ │ │ │ │ │ ├── gitdir
│ │ │ │ │ │ ├── hooks/
│ │ │ │ │ │ │ ├── applypatch-msg.sample
│ │ │ │ │ │ │ ├── commit-msg.sample
│ │ │ │ │ │ │ ├── post-update.sample
│ │ │ │ │ │ │ ├── pre-applypatch.sample
│ │ │ │ │ │ │ ├── pre-commit.sample
│ │ │ │ │ │ │ ├── pre-push.sample
│ │ │ │ │ │ │ ├── pre-rebase.sample
│ │ │ │ │ │ │ ├── prepare-commit-msg.sample
│ │ │ │ │ │ │ └── update.sample
│ │ │ │ │ │ ├── index
│ │ │ │ │ │ ├── info/
│ │ │ │ │ │ │ └── exclude
│ │ │ │ │ │ ├── logs/
│ │ │ │ │ │ │ ├── HEAD
│ │ │ │ │ │ │ └── refs/
│ │ │ │ │ │ │ ├── heads/
│ │ │ │ │ │ │ │ ├── master
│ │ │ │ │ │ │ │ └── test
│ │ │ │ │ │ │ └── remotes/
│ │ │ │ │ │ │ └── origin/
│ │ │ │ │ │ │ └── HEAD
│ │ │ │ │ │ ├── objects/
│ │ │ │ │ │ │ ├── 05/
│ │ │ │ │ │ │ │ └── 25ef667328cb1f86b1ddf523db4a064e1590fa
│ │ │ │ │ │ │ ├── 1a/
│ │ │ │ │ │ │ │ └── dd860234dad4a8bf59340363e9c88bb0457cb7
│ │ │ │ │ │ │ ├── 5b/
│ │ │ │ │ │ │ │ └── 35953562dbb4f2debe88fcc9ac1805064e1e5a
│ │ │ │ │ │ │ └── pack/
│ │ │ │ │ │ │ ├── pack-e568a55e02b6b7b75582924204669e4f3ed5276f.idx
│ │ │ │ │ │ │ └── pack-e568a55e02b6b7b75582924204669e4f3ed5276f.pack
│ │ │ │ │ │ ├── packed-refs
│ │ │ │ │ │ └── refs/
│ │ │ │ │ │ ├── heads/
│ │ │ │ │ │ │ ├── master
│ │ │ │ │ │ │ └── test
│ │ │ │ │ │ └── remotes/
│ │ │ │ │ │ └── origin/
│ │ │ │ │ │ └── HEAD
│ │ │ │ │ ├── objects/
│ │ │ │ │ │ ├── 3e/
│ │ │ │ │ │ │ └── 2fe2f8226faab789f70d6d8a7231e4f2bd54df
│ │ │ │ │ │ ├── 40/
│ │ │ │ │ │ │ └── f4e79926a85134d4c905d04e70573b6616f3bc
│ │ │ │ │ │ ├── 50/
│ │ │ │ │ │ │ └── b89367d8f0acd312ef5aa012eac20a75c91351
│ │ │ │ │ │ ├── 54/
│ │ │ │ │ │ │ └── 3b9bebdc6bd5c4b22136034a95dd097a57d3dd
│ │ │ │ │ │ ├── d2/
│ │ │ │ │ │ │ └── b0ad9cbc6f6c4372e8956e5cc5af771b2342e5
│ │ │ │ │ │ ├── d3/
│ │ │ │ │ │ │ └── e073baf592c56614c68ead9e2cd0a3880140cd
│ │ │ │ │ │ └── e6/
│ │ │ │ │ │ └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
│ │ │ │ │ └── refs/
│ │ │ │ │ ├── heads/
│ │ │ │ │ │ └── master
│ │ │ │ │ └── remotes/
│ │ │ │ │ └── origin/
│ │ │ │ │ └── master
│ │ │ │ └── jstips/
│ │ │ │ ├── CONTRIBUTING.md
│ │ │ │ ├── README.md
│ │ │ │ ├── git.git
│ │ │ │ └── resources/
│ │ │ │ └── log.js
│ │ │ └── working-dir/
│ │ │ ├── .gitignore
│ │ │ ├── a.txt
│ │ │ └── git.git/
│ │ │ ├── HEAD
│ │ │ ├── config
│ │ │ ├── index
│ │ │ ├── objects/
│ │ │ │ ├── 06/
│ │ │ │ │ └── 15f9a45968b3515e0a202530ef9f61aba26b6c
│ │ │ │ ├── 16/
│ │ │ │ │ └── 735fb793d7b038818219c4b8c6295346e20eef
│ │ │ │ ├── 52/
│ │ │ │ │ └── f56457b6fca045ce41bb9d32e6ca79d23192af
│ │ │ │ ├── 5b/
│ │ │ │ │ └── 24ab4c3baadf534242b1acc220c8fa051b9b20
│ │ │ │ ├── 65/
│ │ │ │ │ └── a457425a679cbe9adf0d2741785d3ceabb44a7
│ │ │ │ ├── 66/
│ │ │ │ │ └── dc9051da651c15d98d017a88658263cab28f02
│ │ │ │ ├── 8a/
│ │ │ │ │ └── 9c86f1cb1f14b8f436eb91f4b052c8802ca99e
│ │ │ │ ├── e6/
│ │ │ │ │ └── 9de29bb2d1d6434b8b29ae775ad8c2e48c5391
│ │ │ │ ├── ec/
│ │ │ │ │ └── 5e386905ff2d36e291086a1207f2585aaa8920
│ │ │ │ ├── ef/
│ │ │ │ │ └── 046e9eecaa5255ea5e9817132d4001724d6ae1
│ │ │ │ ├── fe/
│ │ │ │ │ └── bde178cdf35e9df6279d87aa27590c6d92e354
│ │ │ │ └── ff/
│ │ │ │ └── c8218bd2240a0cb92f6f02548d45784428349b
│ │ │ └── refs/
│ │ │ └── heads/
│ │ │ └── master
│ │ ├── indentation/
│ │ │ ├── classes.js
│ │ │ ├── expressions.js
│ │ │ ├── function_call.js
│ │ │ ├── if_then_else.js
│ │ │ ├── jsx.jsx
│ │ │ ├── objects_and_array.js
│ │ │ ├── switch.js
│ │ │ └── while.js
│ │ ├── lorem.txt
│ │ ├── module-cache/
│ │ │ └── file.json
│ │ ├── native-cache/
│ │ │ ├── file-1.js
│ │ │ ├── file-2.js
│ │ │ ├── file-3.js
│ │ │ └── file-4.js
│ │ ├── packages/
│ │ │ ├── folder/
│ │ │ │ └── package-symlinked/
│ │ │ │ └── package.json
│ │ │ ├── package-that-throws-an-exception/
│ │ │ │ └── index.coffee
│ │ │ ├── package-that-throws-on-activate/
│ │ │ │ └── index.coffee
│ │ │ ├── package-that-throws-on-deactivate/
│ │ │ │ └── index.coffee
│ │ │ ├── package-with-activation-commands/
│ │ │ │ ├── index.coffee
│ │ │ │ └── package.cson
│ │ │ ├── package-with-activation-commands-and-deserializers/
│ │ │ │ ├── index.js
│ │ │ │ └── package.json
│ │ │ ├── package-with-activation-hooks/
│ │ │ │ ├── index.coffee
│ │ │ │ └── package.cson
│ │ │ ├── package-with-broken-keymap/
│ │ │ │ └── keymaps/
│ │ │ │ └── broken.json
│ │ │ ├── package-with-broken-package-json/
│ │ │ │ └── package.json
│ │ │ ├── package-with-cached-incompatible-native-module/
│ │ │ │ ├── main.js
│ │ │ │ └── package.json
│ │ │ ├── package-with-config-defaults/
│ │ │ │ └── index.coffee
│ │ │ ├── package-with-config-schema/
│ │ │ │ └── index.coffee
│ │ │ ├── package-with-consumed-services/
│ │ │ │ ├── index.coffee
│ │ │ │ └── package.json
│ │ │ ├── package-with-deactivate/
│ │ │ │ └── index.coffee
│ │ │ ├── package-with-deprecated-pane-item-method/
│ │ │ │ └── index.coffee
│ │ │ ├── package-with-deserializers/
│ │ │ │ ├── index.js
│ │ │ │ └── package.json
│ │ │ ├── package-with-different-directory-name/
│ │ │ │ └── package.json
│ │ │ ├── package-with-directory-provider/
│ │ │ │ ├── index.js
│ │ │ │ └── package.json
│ │ │ ├── package-with-empty-activation-commands/
│ │ │ │ ├── index.coffee
│ │ │ │ └── package.json
│ │ │ ├── package-with-empty-activation-hooks/
│ │ │ │ ├── index.coffee
│ │ │ │ └── package.json
│ │ │ ├── package-with-empty-keymap/
│ │ │ │ ├── keymaps/
│ │ │ │ │ └── keymap.cson
│ │ │ │ └── package.json
│ │ │ ├── package-with-empty-menu/
│ │ │ │ ├── menus/
│ │ │ │ │ └── menu.cson
│ │ │ │ └── package.json
│ │ │ ├── package-with-empty-workspace-openers/
│ │ │ │ ├── index.coffee
│ │ │ │ └── package.json
│ │ │ ├── package-with-eval-time-api-calls/
│ │ │ │ ├── index.js
│ │ │ │ └── package.json
│ │ │ ├── package-with-grammars/
│ │ │ │ └── grammars/
│ │ │ │ ├── alittle.cson
│ │ │ │ └── alot.cson
│ │ │ ├── package-with-ignored-incompatible-native-module/
│ │ │ │ ├── main.js
│ │ │ │ └── package.json
│ │ │ ├── package-with-incompatible-native-module/
│ │ │ │ ├── main.js
│ │ │ │ └── package.json
│ │ │ ├── package-with-incompatible-native-module-loaded-conditionally/
│ │ │ │ ├── main.js
│ │ │ │ └── package.json
│ │ │ ├── package-with-index/
│ │ │ │ └── index.coffee
│ │ │ ├── package-with-injection-selector/
│ │ │ │ └── grammars/
│ │ │ │ └── grammar.cson
│ │ │ ├── package-with-invalid-activation-commands/
│ │ │ │ └── package.json
│ │ │ ├── package-with-invalid-context-menu/
│ │ │ │ ├── menus/
│ │ │ │ │ └── menu.json
│ │ │ │ └── package.json
│ │ │ ├── package-with-invalid-grammar/
│ │ │ │ ├── grammars/
│ │ │ │ │ └── grammar.json
│ │ │ │ └── package.json
│ │ │ ├── package-with-invalid-settings/
│ │ │ │ ├── package.json
│ │ │ │ └── settings/
│ │ │ │ └── settings.json
│ │ │ ├── package-with-invalid-styles/
│ │ │ │ ├── package.json
│ │ │ │ └── styles/
│ │ │ │ └── index.less
│ │ │ ├── package-with-invalid-url-package-json/
│ │ │ │ └── package.json
│ │ │ ├── package-with-json-config-schema/
│ │ │ │ └── package.json
│ │ │ ├── package-with-keymaps/
│ │ │ │ └── keymaps/
│ │ │ │ ├── keymap-1.cson
│ │ │ │ ├── keymap-2.cson
│ │ │ │ └── keymap-3.cjson
│ │ │ ├── package-with-keymaps-manifest/
│ │ │ │ ├── keymaps/
│ │ │ │ │ ├── keymap-1.json
│ │ │ │ │ ├── keymap-2.cson
│ │ │ │ │ └── keymap-3.cson
│ │ │ │ └── package.cson
│ │ │ ├── package-with-main/
│ │ │ │ ├── main-module.coffee
│ │ │ │ └── package.cson
│ │ │ ├── package-with-menus/
│ │ │ │ └── menus/
│ │ │ │ ├── menu-1.cson
│ │ │ │ ├── menu-2.cson
│ │ │ │ └── menu-3.cson
│ │ │ ├── package-with-menus-manifest/
│ │ │ │ ├── menus/
│ │ │ │ │ ├── menu-1.cson
│ │ │ │ │ ├── menu-2.cson
│ │ │ │ │ └── menu-3.cson
│ │ │ │ └── package.cson
│ │ │ ├── package-with-missing-consumed-services/
│ │ │ │ ├── index.coffee
│ │ │ │ └── package.json
│ │ │ ├── package-with-missing-provided-services/
│ │ │ │ ├── index.coffee
│ │ │ │ └── package.json
│ │ │ ├── package-with-no-activate/
│ │ │ │ ├── index.js
│ │ │ │ └── package.json
│ │ │ ├── package-with-prefixed-and-suffixed-repo-url/
│ │ │ │ └── package.json
│ │ │ ├── package-with-provided-services/
│ │ │ │ ├── index.coffee
│ │ │ │ └── package.json
│ │ │ ├── package-with-rb-filetype/
│ │ │ │ ├── grammars/
│ │ │ │ │ └── rb.cson
│ │ │ │ └── package.json
│ │ │ ├── package-with-serialization/
│ │ │ │ └── index.coffee
│ │ │ ├── package-with-serialize-error/
│ │ │ │ ├── index.coffee
│ │ │ │ └── package.cson
│ │ │ ├── package-with-settings/
│ │ │ │ └── settings/
│ │ │ │ └── omg.cson
│ │ │ ├── package-with-short-url-package-json/
│ │ │ │ └── package.json
│ │ │ ├── package-with-style-sheets-manifest/
│ │ │ │ ├── package.cson
│ │ │ │ └── styles/
│ │ │ │ ├── 1.css
│ │ │ │ ├── 2.less
│ │ │ │ └── 3.css
│ │ │ ├── package-with-styles/
│ │ │ │ └── styles/
│ │ │ │ ├── 1.css
│ │ │ │ ├── 2.less
│ │ │ │ ├── 3.test-context.css
│ │ │ │ └── 4.css
│ │ │ ├── package-with-stylesheets-manifest/
│ │ │ │ └── package.cson
│ │ │ ├── package-with-tree-sitter-grammar/
│ │ │ │ └── grammars/
│ │ │ │ ├── fake-parser.js
│ │ │ │ └── some-language.cson
│ │ │ ├── package-with-uri-handler/
│ │ │ │ ├── index.js
│ │ │ │ └── package.json
│ │ │ ├── package-with-url-main/
│ │ │ │ ├── index.js
│ │ │ │ └── package.json
│ │ │ ├── package-with-view-providers/
│ │ │ │ ├── index.js
│ │ │ │ └── package.json
│ │ │ ├── package-with-workspace-openers/
│ │ │ │ ├── index.coffee
│ │ │ │ └── package.cson
│ │ │ ├── package-without-module/
│ │ │ │ └── package.cson
│ │ │ ├── sublime-tabs/
│ │ │ │ └── package.json
│ │ │ ├── theme-with-incomplete-ui-variables/
│ │ │ │ ├── package.json
│ │ │ │ └── styles/
│ │ │ │ ├── editor.less
│ │ │ │ └── ui-variables.less
│ │ │ ├── theme-with-index-css/
│ │ │ │ ├── index.css
│ │ │ │ └── package.json
│ │ │ ├── theme-with-index-less/
│ │ │ │ ├── index.less
│ │ │ │ └── package.json
│ │ │ ├── theme-with-invalid-styles/
│ │ │ │ ├── index.less
│ │ │ │ └── package.json
│ │ │ ├── theme-with-package-file/
│ │ │ │ ├── package.json
│ │ │ │ └── styles/
│ │ │ │ ├── first.css
│ │ │ │ ├── last.css
│ │ │ │ └── second.less
│ │ │ ├── theme-with-syntax-variables/
│ │ │ │ ├── package.json
│ │ │ │ └── styles/
│ │ │ │ └── editor.less
│ │ │ ├── theme-with-ui-variables/
│ │ │ │ ├── package.json
│ │ │ │ └── styles/
│ │ │ │ ├── editor.less
│ │ │ │ └── ui-variables.less
│ │ │ ├── theme-without-package-file/
│ │ │ │ └── styles/
│ │ │ │ ├── a.css
│ │ │ │ ├── b.css
│ │ │ │ ├── c.less
│ │ │ │ └── d.csv
│ │ │ └── wordcount/
│ │ │ └── package.json
│ │ ├── sample-with-comments.js
│ │ ├── sample-with-many-folds.js
│ │ ├── sample-with-tabs-and-leading-comment.coffee
│ │ ├── sample-with-tabs.coffee
│ │ ├── sample.js
│ │ ├── sample.less
│ │ ├── sample.txt
│ │ ├── script-with-deprecations.js
│ │ ├── script.js
│ │ ├── shebang
│ │ ├── task-handler-with-deprecations.coffee
│ │ ├── task-spec-handler.coffee
│ │ ├── testdir/
│ │ │ ├── sample-theme-1/
│ │ │ │ ├── readme
│ │ │ │ └── src/
│ │ │ │ └── js/
│ │ │ │ └── main.js
│ │ │ └── sample-theme-2/
│ │ │ ├── readme
│ │ │ └── src/
│ │ │ └── js/
│ │ │ ├── main.js
│ │ │ └── plugin/
│ │ │ └── main.js
│ │ ├── two-hundred.txt
│ │ └── typescript/
│ │ ├── invalid.ts
│ │ └── valid.ts
│ ├── git-repository-provider-spec.js
│ ├── git-repository-spec.js
│ ├── grammar-registry-spec.js
│ ├── gutter-container-spec.js
│ ├── gutter-spec.js
│ ├── helpers/
│ │ ├── random.js
│ │ └── words.js
│ ├── history-manager-spec.js
│ ├── integration/
│ │ ├── helpers/
│ │ │ ├── atom-launcher.sh
│ │ │ └── start-atom.js
│ │ └── smoke-spec.js
│ ├── jasmine-junit-reporter.js
│ ├── jasmine-list-reporter.js
│ ├── jasmine-test-runner.coffee
│ ├── keymap-extensions-spec.js
│ ├── main-process/
│ │ ├── atom-application.test.js
│ │ ├── atom-window.test.js
│ │ ├── file-recovery-service.test.js
│ │ ├── mocha-test-runner.js
│ │ └── parse-command-line.test.js
│ ├── menu-manager-spec.js
│ ├── menu-sort-helpers-spec.js
│ ├── module-cache-spec.js
│ ├── native-compile-cache-spec.coffee
│ ├── native-watcher-registry-spec.js
│ ├── notification-manager-spec.js
│ ├── notification-spec.js
│ ├── package-manager-spec.js
│ ├── package-spec.js
│ ├── package-transpilation-registry-spec.js
│ ├── pane-axis-element-spec.js
│ ├── pane-container-element-spec.js
│ ├── pane-container-spec.js
│ ├── pane-element-spec.js
│ ├── pane-spec.js
│ ├── panel-container-element-spec.js
│ ├── panel-container-spec.js
│ ├── panel-spec.js
│ ├── path-watcher-spec.js
│ ├── project-spec.js
│ ├── reopen-project-menu-manager-spec.js
│ ├── selection-spec.js
│ ├── spec-helper-platform.js
│ ├── spec-helper.coffee
│ ├── squirrel-update-spec.js
│ ├── state-store-spec.js
│ ├── style-manager-spec.js
│ ├── styles-element-spec.js
│ ├── syntax-scope-map-spec.js
│ ├── task-spec.js
│ ├── text-editor-component-spec.js
│ ├── text-editor-element-spec.js
│ ├── text-editor-registry-spec.js
│ ├── text-editor-spec.js
│ ├── text-mate-language-mode-spec.js
│ ├── text-utils-spec.js
│ ├── theme-manager-spec.js
│ ├── title-bar-spec.js
│ ├── tooltip-manager-spec.js
│ ├── tree-indenter-spec.js
│ ├── tree-sitter-language-mode-spec.js
│ ├── typescript-spec.js
│ ├── update-process-env-spec.js
│ ├── uri-handler-registry-spec.js
│ ├── view-registry-spec.js
│ ├── window-event-handler-spec.js
│ ├── workspace-center-spec.js
│ ├── workspace-element-spec.js
│ └── workspace-spec.js
├── src/
│ ├── application-delegate.js
│ ├── atom-environment.js
│ ├── atom-paths.js
│ ├── auto-update-manager.js
│ ├── babel.js
│ ├── buffered-node-process.js
│ ├── buffered-process.js
│ ├── clipboard.js
│ ├── coffee-script.js
│ ├── color.js
│ ├── command-installer.js
│ ├── command-registry.js
│ ├── compile-cache.js
│ ├── config-file.js
│ ├── config-schema.js
│ ├── config.js
│ ├── context-menu-manager.coffee
│ ├── core-uri-handlers.js
│ ├── crash-reporter-start.js
│ ├── cursor.js
│ ├── decoration-manager.js
│ ├── decoration.js
│ ├── default-directory-provider.coffee
│ ├── default-directory-searcher.js
│ ├── delegated-listener.js
│ ├── deprecated-syntax-selectors.js
│ ├── deserializer-manager.js
│ ├── dock.js
│ ├── electron-shims.js
│ ├── file-system-blob-store.js
│ ├── first-mate-helpers.js
│ ├── get-app-name.js
│ ├── get-release-channel.js
│ ├── get-window-load-settings.js
│ ├── git-repository-provider.js
│ ├── git-repository.js
│ ├── grammar-registry.js
│ ├── gutter-container.js
│ ├── gutter.js
│ ├── history-manager.js
│ ├── initialize-application-window.js
│ ├── initialize-benchmark-window.js
│ ├── initialize-test-window.js
│ ├── ipc-helpers.js
│ ├── item-registry.js
│ ├── keymap-extensions.coffee
│ ├── layer-decoration.coffee
│ ├── less-compile-cache.coffee
│ ├── main-process/
│ │ ├── application-menu.js
│ │ ├── atom-application.js
│ │ ├── atom-protocol-handler.js
│ │ ├── atom-window.js
│ │ ├── auto-update-manager.js
│ │ ├── auto-updater-win32.js
│ │ ├── context-menu.js
│ │ ├── file-recovery-service.js
│ │ ├── main.js
│ │ ├── parse-command-line.js
│ │ ├── spawner.js
│ │ ├── squirrel-update.js
│ │ ├── start.js
│ │ ├── win-powershell.js
│ │ └── win-shell.js
│ ├── menu-helpers.js
│ ├── menu-manager.coffee
│ ├── menu-sort-helpers.js
│ ├── model.coffee
│ ├── module-cache.js
│ ├── module-utils.js
│ ├── native-compile-cache.js
│ ├── native-watcher-registry.js
│ ├── notification-manager.js
│ ├── notification.js
│ ├── null-grammar.js
│ ├── overlay-manager.coffee
│ ├── package-manager.js
│ ├── package-transpilation-registry.js
│ ├── package.js
│ ├── pane-axis-element.js
│ ├── pane-axis.js
│ ├── pane-container-element.js
│ ├── pane-container.js
│ ├── pane-element.js
│ ├── pane-resize-handle-element.js
│ ├── pane.js
│ ├── panel-container-element.js
│ ├── panel-container.js
│ ├── panel.js
│ ├── path-watcher.js
│ ├── project.js
│ ├── protocol-handler-installer.js
│ ├── register-default-commands.coffee
│ ├── reopen-project-list-view.js
│ ├── reopen-project-menu-manager.js
│ ├── replace-handler.coffee
│ ├── ripgrep-directory-searcher.js
│ ├── scan-handler.coffee
│ ├── scope-descriptor.js
│ ├── selection.js
│ ├── selectors.js
│ ├── special-token-symbols.coffee
│ ├── startup-time.js
│ ├── state-store.js
│ ├── storage-folder.js
│ ├── style-manager.js
│ ├── styles-element.js
│ ├── syntax-scope-map.js
│ ├── task-bootstrap.js
│ ├── task.coffee
│ ├── test.ejs
│ ├── text-editor-component.js
│ ├── text-editor-element.js
│ ├── text-editor-registry.js
│ ├── text-editor.js
│ ├── text-mate-language-mode.js
│ ├── text-utils.js
│ ├── theme-manager.js
│ ├── theme-package.js
│ ├── title-bar.js
│ ├── token-iterator.js
│ ├── token.coffee
│ ├── tokenized-line.coffee
│ ├── tooltip-manager.js
│ ├── tooltip.js
│ ├── tree-indenter.js
│ ├── tree-sitter-grammar.js
│ ├── tree-sitter-language-mode.js
│ ├── typescript.js
│ ├── update-process-env.js
│ ├── uri-handler-registry.js
│ ├── view-registry.js
│ ├── window-event-handler.js
│ ├── window.js
│ ├── workspace-center.js
│ ├── workspace-element.js
│ └── workspace.js
├── static/
│ ├── atom-ui/
│ │ ├── README.md
│ │ ├── _index.less
│ │ └── styles/
│ │ ├── badges.less
│ │ ├── button-groups.less
│ │ ├── buttons.less
│ │ ├── git-status.less
│ │ ├── icons.less
│ │ ├── inputs.less
│ │ ├── layout.less
│ │ ├── lists.less
│ │ ├── loading.less
│ │ ├── messages.less
│ │ ├── mixins/
│ │ │ └── mixins.less
│ │ ├── modals.less
│ │ ├── panels.less
│ │ ├── private/
│ │ │ ├── README.md
│ │ │ ├── alerts.less
│ │ │ ├── close.less
│ │ │ ├── code.less
│ │ │ ├── forms.less
│ │ │ ├── links.less
│ │ │ ├── navs.less
│ │ │ ├── scaffolding.less
│ │ │ ├── sections.less
│ │ │ ├── tables.less
│ │ │ └── utilities.less
│ │ ├── select-list.less
│ │ ├── site-colors.less
│ │ ├── text.less
│ │ ├── tooltip.less
│ │ └── variables/
│ │ └── variables.less
│ ├── atom.less
│ ├── babelrc.json
│ ├── core-ui/
│ │ ├── _index.less
│ │ ├── cursors.less
│ │ ├── docks.less
│ │ ├── panels.less
│ │ ├── panes.less
│ │ ├── syntax.less
│ │ ├── text-editor.less
│ │ ├── title-bar.less
│ │ ├── utils.less
│ │ └── workspace-view.less
│ ├── icons/
│ │ └── octicons.less
│ ├── index.html
│ ├── index.js
│ ├── jasmine.less
│ ├── linux.less
│ ├── normalize.less
│ ├── scaffolding.less
│ └── variables/
│ ├── octicon-mixins.less
│ ├── octicon-utf-codes.less
│ ├── syntax-variables.less
│ └── ui-variables.less
├── stylelint.config.js
└── vendor/
├── jasmine-jquery.js
└── jasmine.js
Showing preview only (274K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (3886 symbols across 258 files)
FILE: benchmarks/text-editor-large-file-construction.bench.js
constant MIN_SIZE_IN_KB (line 3) | const MIN_SIZE_IN_KB = 0 * 1024;
constant MAX_SIZE_IN_KB (line 4) | const MAX_SIZE_IN_KB = 10 * 1024;
constant SIZE_STEP_IN_KB (line 5) | const SIZE_STEP_IN_KB = 1024;
constant LINE_TEXT (line 6) | const LINE_TEXT = 'Lorem ipsum dolor sit amet\n';
constant TEXT (line 7) | const TEXT = LINE_TEXT.repeat(
function timeout (line 98) | function timeout(duration) {
FILE: benchmarks/text-editor-long-lines.bench.js
constant SIZES_IN_KB (line 5) | const SIZES_IN_KB = [512, 1024, 2048];
constant REPEATED_TEXT (line 6) | const REPEATED_TEXT = fs
constant TEXT (line 12) | const TEXT = REPEATED_TEXT.repeat(
function timeout (line 103) | function timeout(duration) {
FILE: exports/atom.js
method get (line 31) | get() {
FILE: packages/about/lib/about.js
method constructor (line 8) | constructor(initialState) {
method destroy (line 35) | destroy() {
method setState (line 45) | setState(newState) {
method didChange (line 54) | didChange() {
method onDidChange (line 58) | onDidChange(callback) {
method deserialize (line 62) | deserialize(state) {
method handleStateChanges (line 81) | handleStateChanges() {
FILE: packages/about/lib/components/about-status-bar.js
method constructor (line 8) | constructor() {
method handleClick (line 20) | handleClick() {
method render (line 24) | render() {
method destroy (line 34) | destroy() {
FILE: packages/about/lib/components/about-view.js
method handleAtomVersionClick (line 11) | handleAtomVersionClick(e) {
method handleElectronVersionClick (line 16) | handleElectronVersionClick(e) {
method handleChromeVersionClick (line 21) | handleChromeVersionClick(e) {
method handleNodeVersionClick (line 26) | handleNodeVersionClick(e) {
method handleReleaseNotesClick (line 31) | handleReleaseNotesClick(e) {
method handleLicenseClick (line 38) | handleLicenseClick(e) {
method handleTermsOfUseClick (line 46) | handleTermsOfUseClick(e) {
method handleHowToUpdateClick (line 51) | handleHowToUpdateClick(e) {
method handleShowMoreClick (line 58) | handleShowMoreClick(e) {
method render (line 74) | render() {
method serialize (line 210) | serialize() {
method onDidChangeTitle (line 217) | onDidChangeTitle() {
method onDidChangeModified (line 221) | onDidChangeModified() {
method getTitle (line 225) | getTitle() {
method getIconName (line 229) | getIconName() {
FILE: packages/about/lib/components/atom-logo.js
method render (line 7) | render() {
FILE: packages/about/lib/components/update-view.js
method constructor (line 8) | constructor(props) {
method handleAutoUpdateCheckbox (line 19) | handleAutoUpdateCheckbox(e) {
method shouldUpdateActionButtonBeDisabled (line 23) | shouldUpdateActionButtonBeDisabled() {
method executeUpdateAction (line 31) | executeUpdateAction() {
method renderUpdateStatus (line 42) | renderUpdateStatus() {
method render (line 134) | render() {
FILE: packages/about/lib/etch-component.js
method constructor (line 8) | constructor(props) {
method getScheduler (line 20) | static getScheduler() {
method setScheduler (line 29) | static setScheduler(scheduler) {
method update (line 40) | update(props) {
method destroy (line 49) | destroy() {
method render (line 53) | render() {
FILE: packages/about/lib/main.js
method activate (line 13) | activate() {
method deactivate (line 48) | deactivate() {
method clearUpdateState (line 58) | clearUpdateState() {
method consumeStatusBar (line 62) | consumeStatusBar(statusBar) {
method deserializeAboutView (line 67) | deserializeAboutView(state) {
method createModel (line 75) | createModel() {
method isUpdateAvailable (line 88) | isUpdateAvailable() {
method showStatusBarIfNeeded (line 93) | showStatusBarIfNeeded() {
FILE: packages/about/lib/update-manager.js
method constructor (line 12) | constructor() {
method listenForAtomEvents (line 20) | listenForAtomEvents() {
method dispose (line 51) | dispose() {
method onDidChange (line 55) | onDidChange(callback) {
method emitDidChange (line 59) | emitDidChange() {
method getAutoUpdatesEnabled (line 63) | getAutoUpdatesEnabled() {
method setAutoUpdatesEnabled (line 69) | setAutoUpdatesEnabled(enabled) {
method getErrorMessage (line 73) | getErrorMessage() {
method getState (line 77) | getState() {
method setState (line 81) | setState(state) {
method resetState (line 86) | resetState() {
method getAvailableVersion (line 93) | getAvailableVersion() {
method setAvailableVersion (line 97) | setAvailableVersion(version) {
method checkForUpdate (line 109) | checkForUpdate() {
method restartAndInstallUpdate (line 113) | restartAndInstallUpdate() {
method getReleaseNotesURLForCurrentVersion (line 117) | getReleaseNotesURLForCurrentVersion() {
method getReleaseNotesURLForAvailableVersion (line 121) | getReleaseNotesURLForAvailableVersion() {
method getReleaseNotesURLForVersion (line 125) | getReleaseNotesURLForVersion(appVersion) {
FILE: packages/about/spec/helpers/async-spec-helpers.js
function conditionPromise (line 6) | async function conditionPromise(condition) {
function timeoutPromise (line 22) | function timeoutPromise(timeout) {
FILE: packages/about/spec/mocks/updater.js
method updateError (line 2) | updateError() {
method checkForUpdate (line 6) | checkForUpdate() {
method updateNotAvailable (line 10) | updateNotAvailable() {
method downloadUpdate (line 14) | downloadUpdate() {
method finishDownloadingUpdate (line 18) | finishDownloadingUpdate(releaseVersion) {
FILE: packages/dalek/lib/dalek.js
method enumerate (line 7) | async enumerate() {
method isInstalledAsCommunityPackage (line 28) | async isInstalledAsCommunityPackage(name) {
method realpath (line 45) | realpath(path) {
FILE: packages/dalek/lib/main.js
method activate (line 7) | activate() {
FILE: packages/deprecation-cop/lib/deprecation-cop-view.js
class DeprecationCopView (line 13) | class DeprecationCopView {
method constructor (line 14) | constructor({ uri }) {
method serialize (line 55) | serialize() {
method destroy (line 63) | destroy() {
method update (line 68) | update() {
method render (line 72) | render() {
method renderDeprecatedCalls (line 111) | renderDeprecatedCalls() {
method renderDeprecatedSelectors (line 174) | renderDeprecatedSelectors() {
method renderPackageActionsIfNeeded (line 239) | renderPackageActionsIfNeeded(packageName) {
method encodeURI (line 271) | encodeURI(str) {
method renderSelectorIssueURLIfNeeded (line 278) | renderSelectorIssueURLIfNeeded(packageName, issueTitle, issueBody) {
method renderIssueURLIfNeeded (line 305) | renderIssueURLIfNeeded(packageName, deprecation, issueURL) {
method buildIssueURL (line 330) | buildIssueURL(packageName, deprecation, stack) {
method openIssueURL (line 346) | async openIssueURL(repoURL, issueURL, issueTitle) {
method findSimilarIssue (line 358) | async findSimilarIssue(repoURL, issueTitle) {
method shortenURL (line 388) | async shortenURL(url) {
method getRepoURL (line 408) | getRepoURL(packageName) {
method getDeprecatedCallsByPackageName (line 424) | getDeprecatedCallsByPackageName() {
method getDeprecatedSelectorsByPackageName (line 447) | getDeprecatedSelectorsByPackageName() {
method getPackageName (line 480) | getPackageName(stack) {
method getPackagePathsByPackageName (line 519) | getPackagePathsByPackageName() {
method checkForUpdates (line 531) | checkForUpdates() {
method disablePackage (line 535) | disablePackage(packageName) {
method openLocation (line 541) | openLocation(location) {
method getURI (line 549) | getURI() {
method getTitle (line 553) | getTitle() {
method getIconName (line 557) | getIconName() {
method scrollUp (line 561) | scrollUp() {
method scrollDown (line 565) | scrollDown() {
method pageUp (line 569) | pageUp() {
method pageDown (line 573) | pageDown() {
method scrollToTop (line 577) | scrollToTop() {
method scrollToBottom (line 581) | scrollToBottom() {
FILE: packages/deprecation-cop/lib/main.js
class DeprecationCopPackage (line 6) | class DeprecationCopPackage {
method activate (line 7) | activate() {
method deactivate (line 23) | deactivate() {
method deserializeDeprecationCopView (line 31) | deserializeDeprecationCopView(state) {
method consumeStatusBar (line 35) | consumeStatusBar(statusBar) {
FILE: packages/dev-live-reload/lib/base-theme-watcher.js
method constructor (line 6) | constructor() {
method watch (line 14) | watch() {
method loadStylesheet (line 24) | loadStylesheet() {
method loadAllStylesheets (line 28) | loadAllStylesheets() {
FILE: packages/dev-live-reload/lib/main.js
method activate (line 2) | activate(state) {
method deactivate (line 14) | deactivate() {
method startWatching (line 20) | startWatching() {
FILE: packages/dev-live-reload/lib/package-watcher.js
method supportsPackage (line 6) | static supportsPackage(pack, type) {
method constructor (line 12) | constructor(pack) {
method watch (line 18) | watch() {
method loadStylesheet (line 41) | loadStylesheet(pathName) {
method loadAllStylesheets (line 46) | loadAllStylesheets() {
FILE: packages/dev-live-reload/lib/ui-watcher.js
method constructor (line 7) | constructor() {
method watchPackages (line 15) | watchPackages() {
method watchForPackageChanges (line 27) | watchForPackageChanges() {
method watchTheme (line 59) | watchTheme(theme) {
method watchPackage (line 68) | watchPackage(pack) {
method createWatcher (line 77) | createWatcher(watcher) {
method reloadAll (line 89) | reloadAll() {
method destroy (line 104) | destroy() {
FILE: packages/dev-live-reload/lib/watcher.js
method constructor (line 5) | constructor() {
method onDidDestroy (line 12) | onDidDestroy(callback) {
method onDidChangeGlobals (line 16) | onDidChangeGlobals(callback) {
method destroy (line 20) | destroy() {
method watch (line 27) | watch() {
method loadStylesheet (line 31) | loadStylesheet(stylesheetPath) {
method loadAllStylesheets (line 35) | loadAllStylesheets() {
method emitGlobalsChanged (line 39) | emitGlobalsChanged() {
method watchDirectory (line 43) | watchDirectory(directoryPath) {
method watchGlobalFile (line 50) | watchGlobalFile(filePath) {
method watchFile (line 56) | watchFile(filePath) {
method isInAsarArchive (line 67) | isInAsarArchive(pathToCheck) {
FILE: packages/dev-live-reload/spec/async-spec-helpers.js
function conditionPromise (line 3) | async function conditionPromise(
function timeoutPromise (line 22) | function timeoutPromise(timeout) {
FILE: packages/exception-reporting/lib/main.js
function getReporter (line 7) | function getReporter() {
method activate (line 16) | activate() {
FILE: packages/exception-reporting/lib/reporter.js
constant API_KEY (line 8) | const API_KEY = '7ddca14cb60cbd1cd12d1b252473b076';
constant LIB_VERSION (line 9) | const LIB_VERSION = require('../package.json')['version'];
class Reporter (line 12) | class Reporter {
method constructor (line 13) | constructor(params = {}) {
method buildNotificationJSON (line 28) | buildNotificationJSON(error, params) {
method buildExceptionJSON (line 57) | buildExceptionJSON(error, projectRoot) {
method buildStackTraceJSON (line 65) | buildStackTraceJSON(error, projectRoot) {
method normalizePath (line 78) | normalizePath(pathToNormalize) {
method scrubPath (line 84) | scrubPath(pathToScrub) {
method getDefaultNotificationParams (line 96) | getDefaultNotificationParams() {
method getReleaseChannel (line 106) | getReleaseChannel(version) {
method performRequest (line 114) | performRequest(json) {
method shouldReport (line 122) | shouldReport(error) {
method parseStackTrace (line 135) | parseStackTrace(error) {
method requestPrivateMetadataConsent (line 146) | requestPrivateMetadataConsent(error, message, reportFn) {
method addPackageMetadata (line 203) | addPackageMetadata(error) {
method addPreviousErrorsMetadata (line 225) | addPreviousErrorsMetadata(error) {
method reportUncaughtException (line 236) | reportUncaughtException(error) {
method reportFailedAssertion (line 260) | reportFailedAssertion(error) {
method setRequestFunction (line 285) | setRequestFunction(requestFunction) {
method isBundledFile (line 289) | isBundledFile(fileName) {
method isTeletypeFile (line 293) | isTeletypeFile(fileName) {
FILE: packages/git-diff/lib/diff-list-view.js
class DiffListView (line 6) | class DiffListView {
method constructor (line 7) | constructor() {
method attach (line 49) | attach() {
method cancel (line 56) | cancel() {
method destroy (line 64) | destroy() {
method toggle (line 70) | async toggle() {
FILE: packages/git-diff/lib/git-diff-view.js
constant MAX_BUFFER_LENGTH_TO_DIFF (line 6) | const MAX_BUFFER_LENGTH_TO_DIFF = 2 * 1024 * 1024;
class GitDiffView (line 12) | class GitDiffView {
method constructor (line 13) | constructor(editor, editorElement) {
method destroy (line 44) | destroy() {
method destroyChildren (line 58) | destroyChildren() {
method releaseChildren (line 70) | releaseChildren() {
method subscribeToRepository (line 81) | async subscribeToRepository() {
method moveToNextDiff (line 140) | moveToNextDiff() {
method moveToPreviousDiff (line 168) | moveToPreviousDiff() {
method updateIconDecoration (line 190) | updateIconDecoration() {
method moveToLineNumber (line 204) | moveToLineNumber(lineNumber) {
method scheduleUpdate (line 211) | scheduleUpdate() {
method updateDiffs (line 224) | updateDiffs() {
method markRange (line 260) | markRange(startRow, endRow, klass) {
FILE: packages/git-diff/lib/main.js
method activate (line 12) | activate(state) {
method deactivate (line 42) | deactivate() {
FILE: packages/go-to-line/lib/go-to-line-view.js
class GoToLineView (line 5) | class GoToLineView {
method constructor (line 6) | constructor() {
method toggle (line 42) | toggle() {
method close (line 46) | close() {
method navigate (line 55) | navigate(options = {}) {
method storeFocusedElement (line 82) | storeFocusedElement() {
method restoreFocus (line 87) | restoreFocus() {
method open (line 97) | open() {
method activate (line 108) | activate() {
FILE: packages/grammar-selector/lib/grammar-list-view.js
method constructor (line 4) | constructor() {
method destroy (line 62) | destroy() {
method cancel (line 67) | cancel() {
method attach (line 79) | attach() {
method toggle (line 88) | async toggle() {
function isTreeSitter (line 137) | function isTreeSitter(grammar) {
function compareGrammarType (line 141) | function compareGrammarType(a, b) {
FILE: packages/grammar-selector/lib/grammar-status-view.js
method constructor (line 4) | constructor(statusBar) {
method attach (line 33) | attach() {
method destroy (line 43) | destroy() {
method subscribeToActiveTextEditor (line 69) | subscribeToActiveTextEditor() {
method updateGrammarText (line 84) | updateGrammarText() {
FILE: packages/grammar-selector/lib/main.js
method activate (line 9) | activate() {
method deactivate (line 20) | deactivate() {
method consumeStatusBar (line 31) | consumeStatusBar(statusBar) {
FILE: packages/grammar-selector/spec/grammar-selector-spec.js
function getTooltipText (line 271) | function getTooltipText(element) {
function getGrammarView (line 276) | async function getGrammarView(editor) {
FILE: packages/incompatible-packages/lib/incompatible-packages-component.js
constant REBUILDING (line 7) | const REBUILDING = 'rebuilding';
constant REBUILD_FAILED (line 8) | const REBUILD_FAILED = 'rebuild-failed';
constant REBUILD_SUCCEEDED (line 9) | const REBUILD_SUCCEEDED = 'rebuild-succeeded';
class IncompatiblePackagesComponent (line 11) | class IncompatiblePackagesComponent {
method constructor (line 12) | constructor(packageManager) {
method update (line 40) | update() {}
method render (line 42) | render() {
method renderHeading (line 58) | renderHeading() {
method renderIncompatiblePackageList (line 99) | renderIncompatiblePackageList() {
method renderIncompatiblePackage (line 109) | renderIncompatiblePackage(pack) {
method renderRebuildStatusIndicator (line 131) | renderRebuildStatusIndicator(rebuildStatus) {
method renderRebuildOutput (line 155) | renderRebuildOutput(pack) {
method renderIncompatibleModules (line 163) | renderIncompatibleModules(pack) {
method populateIncompatiblePackages (line 178) | populateIncompatiblePackages() {
method rebuildIncompatiblePackages (line 195) | async rebuildIncompatiblePackages() {
method setPackageStatus (line 214) | setPackageStatus(pack, status) {
method setRebuildFailureOutput (line 219) | setRebuildFailureOutput(pack, output) {
method getTitle (line 224) | getTitle() {
method getURI (line 228) | getURI() {
method getIconName (line 232) | getIconName() {
method serialize (line 236) | serialize() {
FILE: packages/incompatible-packages/lib/main.js
function activate (line 8) | function activate() {
function deactivate (line 28) | function deactivate() {
function consumeStatusBar (line 32) | function consumeStatusBar(statusBar) {
function deserializeIncompatiblePackagesComponent (line 48) | function deserializeIncompatiblePackagesComponent() {
function createIcon (line 53) | function createIcon(count) {
FILE: packages/incompatible-packages/lib/status-icon-component.js
class StatusIconComponent (line 6) | class StatusIconComponent {
method constructor (line 7) | constructor({ count }) {
method update (line 12) | update() {}
method render (line 14) | render() {
FILE: packages/incompatible-packages/spec/incompatible-packages-component-spec.js
method isCompatible (line 15) | isCompatible() {
method getBuildFailureOutput (line 21) | getBuildFailureOutput() {
method isCompatible (line 36) | isCompatible() {
method rebuild (line 39) | rebuild() {
method getBuildFailureOutput (line 42) | getBuildFailureOutput() {
method isCompatible (line 56) | isCompatible() {
method rebuild (line 59) | rebuild() {
method getBuildFailureOutput (line 62) | getBuildFailureOutput() {
FILE: packages/incompatible-packages/spec/incompatible-packages-spec.js
function findStatusBar (line 8) | function findStatusBar() {
FILE: packages/language-rust-bundled/lib/main.js
method language (line 5) | language() {
method content (line 8) | content(node) {
FILE: packages/line-ending-selector/lib/helpers.js
method getProcessPlatform (line 4) | getProcessPlatform() {
FILE: packages/line-ending-selector/lib/main.js
function activate (line 20) | function activate() {
function deactivate (line 56) | function deactivate() {
function consumeStatusBar (line 60) | function consumeStatusBar(statusBar) {
function getDefaultLineEnding (line 132) | function getDefaultLineEnding() {
function getLineEndings (line 144) | function getLineEndings(buffer) {
function setLineEnding (line 165) | function setLineEnding(item, lineEnding) {
FILE: packages/line-ending-selector/lib/selector.js
class Selector (line 8) | class Selector {
method constructor (line 14) | constructor(selectorItems) {
method show (line 54) | show() {
method hide (line 64) | hide() {
method dispose (line 72) | dispose() {
FILE: packages/line-ending-selector/lib/status-bar-item.js
method constructor (line 4) | constructor() {
method setLineEndings (line 11) | setLineEndings(lineEndings) {
method onDidChange (line 17) | onDidChange(callback) {
method hasLineEnding (line 21) | hasLineEnding(lineEnding) {
method description (line 25) | description() {
method onClick (line 29) | onClick(callback) {
function lineEndingName (line 34) | function lineEndingName(lineEndings) {
function lineEndingDescription (line 46) | function lineEndingDescription(lineEndings) {
FILE: packages/line-ending-selector/spec/line-ending-selector-spec.js
method get (line 301) | get() {
method set (line 305) | set(text) {
function getTooltipText (line 375) | function getTooltipText(element) {
FILE: packages/link/lib/link.js
constant LINK_SCOPE_REGEX (line 5) | const LINK_SCOPE_REGEX = /markup\.underline\.link/;
method activate (line 8) | activate() {
method deactivate (line 16) | deactivate() {
method openLink (line 20) | openLink() {
method linkUnderCursor (line 40) | linkUnderCursor(editor) {
method linkAtPosition (line 54) | linkAtPosition(editor, bufferPosition) {
method linkForName (line 76) | linkForName(editor, linkName) {
FILE: packages/one-dark-ui/lib/main.js
method activate (line 5) | activate(state) {
method deactivate (line 13) | deactivate() {
function setFontSize (line 24) | function setFontSize(currentFontSize) {
function unsetFontSize (line 28) | function unsetFontSize() {
function setTabSizing (line 34) | function setTabSizing(tabSizing) {
function unsetTabSizing (line 38) | function unsetTabSizing() {
function setTabCloseButton (line 44) | function setTabCloseButton(tabCloseButton) {
function unsetTabCloseButton (line 52) | function unsetTabCloseButton() {
function setHideDockButtons (line 58) | function setHideDockButtons(hideDockButtons) {
function unsetHideDockButtons (line 66) | function unsetHideDockButtons() {
function setStickyHeaders (line 72) | function setStickyHeaders(stickyHeaders) {
function unsetStickyHeaders (line 80) | function unsetStickyHeaders() {
FILE: packages/one-light-ui/lib/main.js
method activate (line 5) | activate(state) {
method deactivate (line 13) | deactivate() {
function setFontSize (line 24) | function setFontSize(currentFontSize) {
function unsetFontSize (line 28) | function unsetFontSize() {
function setTabSizing (line 34) | function setTabSizing(tabSizing) {
function unsetTabSizing (line 38) | function unsetTabSizing() {
function setTabCloseButton (line 44) | function setTabCloseButton(tabCloseButton) {
function unsetTabCloseButton (line 52) | function unsetTabCloseButton() {
function setHideDockButtons (line 58) | function setHideDockButtons(hideDockButtons) {
function unsetHideDockButtons (line 66) | function unsetHideDockButtons() {
function setStickyHeaders (line 72) | function setStickyHeaders(stickyHeaders) {
function unsetStickyHeaders (line 80) | function unsetStickyHeaders() {
FILE: packages/update-package-dependencies/lib/update-package-dependencies-status-view.js
method constructor (line 2) | constructor(statusBar) {
method attach (line 19) | attach() {
method detach (line 26) | detach() {
FILE: packages/update-package-dependencies/lib/update-package-dependencies.js
method activate (line 5) | activate() {
method deactivate (line 13) | deactivate() {
method consumeStatusBar (line 21) | consumeStatusBar(statusBar) {
method update (line 27) | update() {
method runBufferedProcess (line 69) | runBufferedProcess(params) {
method getActiveProjectPath (line 73) | getActiveProjectPath() {
FILE: packages/welcome/lib/consent-view.js
class ConsentView (line 6) | class ConsentView {
method constructor (line 7) | constructor() {
method render (line 11) | render() {
method update (line 125) | update() {
method consent (line 129) | consent() {
method decline (line 134) | decline() {
method openMetricsPackage (line 139) | openMetricsPackage() {
method getTitle (line 143) | getTitle() {
method destroy (line 147) | async destroy() {
FILE: packages/welcome/lib/guide-view.js
class GuideView (line 6) | class GuideView {
method constructor (line 7) | constructor(props) {
method update (line 24) | update() {}
method render (line 26) | render() {
method getSectionProps (line 358) | getSectionProps(sectionName) {
method getCommandPaletteKeyBinding (line 372) | getCommandPaletteKeyBinding() {
method getApplicationMenuName (line 380) | getApplicationMenuName() {
method serialize (line 390) | serialize() {
method getURI (line 398) | getURI() {
method getTitle (line 402) | getTitle() {
method isEqual (line 406) | isEqual(other) {
method getOpenSections (line 410) | getOpenSections() {
method didClickProjectButton (line 416) | didClickProjectButton() {
method didClickGitButton (line 424) | didClickGitButton() {
method didClickGitHubButton (line 432) | didClickGitHubButton() {
method didClickPackagesButton (line 440) | didClickPackagesButton() {
method didClickThemesButton (line 445) | didClickThemesButton() {
method didClickStylingButton (line 450) | didClickStylingButton() {
method didClickInitScriptButton (line 455) | didClickInitScriptButton() {
method didClickSnippetsButton (line 460) | didClickSnippetsButton() {
method didClickTeletypeButton (line 465) | didClickTeletypeButton() {
method didExpandOrCollapseSection (line 470) | didExpandOrCollapseSection(event) {
FILE: packages/welcome/lib/reporter-proxy.js
class ReporterProxy (line 3) | class ReporterProxy {
method constructor (line 4) | constructor() {
method setReporter (line 10) | setReporter(reporter) {
method sendEvent (line 19) | sendEvent(action, label, value) {
FILE: packages/welcome/lib/welcome-package.js
constant WELCOME_URI (line 8) | const WELCOME_URI = 'atom://welcome/welcome';
constant GUIDE_URI (line 9) | const GUIDE_URI = 'atom://welcome/guide';
constant CONSENT_URI (line 10) | const CONSENT_URI = 'atom://welcome/consent';
class WelcomePackage (line 12) | class WelcomePackage {
method constructor (line 13) | constructor() {
method activate (line 17) | async activate() {
method show (line 58) | show() {
method consumeReporter (line 65) | consumeReporter(reporter) {
method deactivate (line 69) | deactivate() {
method createWelcomeView (line 73) | createWelcomeView(state) {
method createGuideView (line 78) | createGuideView(state) {
method createConsentView (line 83) | createConsentView(state) {
FILE: packages/welcome/lib/welcome-view.js
class WelcomeView (line 6) | class WelcomeView {
method constructor (line 7) | constructor(props) {
method didChangeShowOnStartup (line 21) | didChangeShowOnStartup() {
method update (line 25) | update() {}
method serialize (line 27) | serialize() {
method render (line 34) | render() {
method getURI (line 159) | getURI() {
method getTitle (line 163) | getTitle() {
method isEqual (line 167) | isEqual(other) {
FILE: packages/welcome/test/helpers.js
function conditionPromise (line 3) | function conditionPromise(predicate) {
FILE: packages/welcome/test/welcome.test.js
method addCustomEvent (line 159) | addCustomEvent(category, event) {
method addCustomEvent (line 165) | addCustomEvent(category, event) {
FILE: script/config.js
function getChannelName (line 60) | function getChannelName(channel) {
function getChannel (line 64) | function getChannel(version) {
function getAppName (line 75) | function getAppName(channel) {
function getExecutableName (line 82) | function getExecutableName(channel, appName) {
function computeAppVersion (line 92) | function computeAppVersion(version) {
function getApmBinPath (line 103) | function getApmBinPath() {
function getNpmBinPath (line 114) | function getNpmBinPath(external = false) {
FILE: script/lib/clean-caches.js
constant CONFIG (line 7) | const CONFIG = require('../config');
FILE: script/lib/clean-dependencies.js
constant CONFIG (line 3) | const CONFIG = require('../config');
FILE: script/lib/clean-output-directory.js
constant CONFIG (line 2) | const CONFIG = require('../config');
FILE: script/lib/code-sign-on-mac.js
constant CONFIG (line 2) | const CONFIG = require('../config');
FILE: script/lib/code-sign-on-windows.js
function signFile (line 38) | function signFile(fileToSign) {
FILE: script/lib/compress-artifacts.js
constant CONFIG (line 8) | const CONFIG = require('../config');
function getArchiveName (line 23) | function getArchiveName() {
function getLinuxArchiveArch (line 34) | function getLinuxArchiveArch() {
function compress (line 45) | function compress(inputDirPath, outputArchivePath) {
FILE: script/lib/copy-assets.js
constant CONFIG (line 8) | const CONFIG = require('../config');
function computeDestinationPath (line 69) | function computeDestinationPath(srcPath) {
FILE: script/lib/create-debian-package.js
constant CONFIG (line 9) | const CONFIG = require('../config');
FILE: script/lib/create-rpm-package.js
constant CONFIG (line 9) | const CONFIG = require('../config');
FILE: script/lib/create-windows-installer.js
constant CONFIG (line 8) | const CONFIG = require('../config');
FILE: script/lib/dependencies-fingerprint.js
constant CONFIG (line 5) | const CONFIG = require('../config');
constant FINGERPRINT_PATH (line 6) | const FINGERPRINT_PATH = path.join(
FILE: script/lib/dump-symbols.js
constant CONFIG (line 7) | const CONFIG = require('../config');
function dumpSymbol (line 24) | function dumpSymbol(binaryPath) {
FILE: script/lib/expand-glob-paths.js
function expandGlobPath (line 11) | function expandGlobPath(globPath) {
FILE: script/lib/generate-api-docs.js
constant CONFIG (line 10) | const CONFIG = require('../config');
function getAPIDocsForDependencies (line 39) | function getAPIDocsForDependencies() {
function sortObjectByKey (line 49) | function sortObjectByKey(object) {
FILE: script/lib/generate-metadata.js
constant CSON (line 3) | const CSON = require('season');
constant CONFIG (line 10) | const CONFIG = require('../config');
function buildBundledPackagesMetadata (line 59) | function buildBundledPackagesMetadata() {
function buildPlatformMenuMetadata (line 241) | function buildPlatformMenuMetadata() {
function buildPlatformKeymapsMetadata (line 254) | function buildPlatformKeymapsMetadata() {
function checkDeprecatedPackagesMetadata (line 279) | function checkDeprecatedPackagesMetadata() {
FILE: script/lib/generate-module-cache.js
constant CONFIG (line 7) | const CONFIG = require('../config');
FILE: script/lib/generate-startup-snapshot.js
constant CONFIG (line 6) | const CONFIG = require('../config');
FILE: script/lib/get-license-text.js
constant CONFIG (line 8) | const CONFIG = require('../config');
FILE: script/lib/include-path-in-packaged-app.js
constant CONFIG (line 4) | const CONFIG = require('../config');
constant EXCLUDE_REGEXPS_SOURCES (line 13) | const EXCLUDE_REGEXPS_SOURCES = [
constant EXCLUDED_PATHS_REGEXP (line 147) | const EXCLUDED_PATHS_REGEXP = new RegExp(
constant INCLUDED_PATHS_REGEXP (line 151) | const INCLUDED_PATHS_REGEXP = new RegExp(
function escapeRegExp (line 157) | function escapeRegExp(string) {
FILE: script/lib/install-apm.js
constant CONFIG (line 5) | const CONFIG = require('../config');
FILE: script/lib/install-application.js
constant CONFIG (line 10) | const CONFIG = require('../config');
function install (line 12) | function install(installationDirPath, packagedAppFileName, packagedAppPa...
function findBaseIconThemeDirPath (line 33) | function findBaseIconThemeDirPath() {
FILE: script/lib/install-script-dependencies.js
constant CONFIG (line 5) | const CONFIG = require('../config');
FILE: script/lib/kill-running-atom-instances.js
constant CONFIG (line 3) | const CONFIG = require('../config.js');
FILE: script/lib/lint-coffee-script-paths.js
constant CONFIG (line 8) | const CONFIG = require('../config');
FILE: script/lib/lint-java-script-paths.js
constant CONFIG (line 7) | const CONFIG = require('../config');
FILE: script/lib/lint-less-paths.js
constant CONFIG (line 6) | const CONFIG = require('../config');
FILE: script/lib/package-application.js
constant CONFIG (line 14) | const CONFIG = require('../config');
constant HOST_ARCH (line 15) | const HOST_ARCH = hostArch();
function copyNonASARResources (line 85) | function copyNonASARResources(packagedAppPath, bundledResourcesPath) {
function setAtomHelperVersion (line 161) | function setAtomHelperVersion(packagedAppPath) {
function chmodNodeFiles (line 182) | function chmodNodeFiles(packagedAppPath) {
function buildAsarUnpackGlobExpression (line 189) | function buildAsarUnpackGlobExpression() {
function getAppName (line 206) | function getAppName() {
function runPackager (line 216) | async function runPackager(options) {
function renamePackagedAppDir (line 227) | function renamePackagedAppDir(packageOutputDirPath) {
function generateAtomCmdForChannel (line 265) | function generateAtomCmdForChannel(bundledResourcesPath) {
FILE: script/lib/prebuild-less-cache.js
constant CONFIG (line 9) | const CONFIG = require('../config');
constant LESS_CACHE_VERSION (line 10) | const LESS_CACHE_VERSION = require('less-cache/package.json').version;
constant FALLBACK_VARIABLE_IMPORTS (line 11) | const FALLBACK_VARIABLE_IMPORTS =
function saveIntoSnapshotAuxiliaryData (line 42) | function saveIntoSnapshotAuxiliaryData(absoluteFilePath, content) {
function cacheCompiledCSS (line 210) | function cacheCompiledCSS(lessCache, lessFilePath, importFallbackVariabl...
FILE: script/lib/read-files.js
function readFile (line 9) | function readFile(path) {
FILE: script/lib/run-apm-install.js
constant CONFIG (line 5) | const CONFIG = require('../config');
FILE: script/lib/transpile-babel-paths.js
constant CONFIG (line 8) | const CONFIG = require('../config');
function getPathsToTranspile (line 17) | function getPathsToTranspile() {
function transpileBabelPath (line 46) | function transpileBabelPath(path) {
FILE: script/lib/transpile-coffee-script-paths.js
constant CONFIG (line 8) | const CONFIG = require('../config');
function getPathsToTranspile (line 19) | function getPathsToTranspile() {
function transpileCoffeeScriptPath (line 58) | function transpileCoffeeScriptPath(coffeePath) {
FILE: script/lib/transpile-cson-paths.js
constant CONFIG (line 8) | const CONFIG = require('../config');
function getPathsToTranspile (line 17) | function getPathsToTranspile() {
function transpileCsonPath (line 46) | function transpileCsonPath(csonPath) {
FILE: script/lib/transpile-packages-with-custom-transpiler-paths.js
constant CONFIG (line 8) | const CONFIG = require('../config');
function transpilePath (line 83) | function transpilePath(path) {
FILE: script/lib/transpile-peg-js-paths.js
constant CONFIG (line 8) | const CONFIG = require('../config');
function getPathsToTranspile (line 17) | function getPathsToTranspile() {
function transpilePegJsPath (line 36) | function transpilePegJsPath(pegJsPath) {
FILE: script/lib/update-dependency/git.js
function createOrCheckoutBranch (line 21) | async function createOrCheckoutBranch(newBranch) {
FILE: script/lib/update-dependency/spec/git-spec.js
function findBranch (line 15) | async function findBranch(branch) {
FILE: script/lib/verify-machine-requirements.js
function verifyNode (line 11) | function verifyNode() {
function verifyPython (line 24) | function verifyPython() {
FILE: script/update-server/run-server.js
function getMacZip (line 39) | function getMacZip(req, res) {
function getMacUpdates (line 44) | function getMacUpdates(req, res) {
function getReleasesFile (line 70) | function getReleasesFile(fileName) {
function getNupkgFile (line 95) | function getNupkgFile(is64bit) {
FILE: script/vsts/get-release-version.js
function getAppName (line 14) | function getAppName(version) {
function getReleaseVersion (line 25) | async function getReleaseVersion() {
FILE: script/vsts/lib/release-notes.js
function extractWrittenReleaseNotes (line 156) | function extractWrittenReleaseNotes(oldReleaseNotes) {
function getPreviousRelease (line 169) | function getPreviousRelease(version, allReleases) {
function getBranchForVersion (line 188) | function getBranchForVersion(version) {
FILE: script/vsts/lib/upload-linux-packages.js
function uploadDebPackage (line 20) | async function uploadDebPackage(version, filePath) {
function uploadRpmPackage (line 37) | async function uploadRpmPackage(version, filePath) {
function uploadPackage (line 50) | async function uploadPackage(packageDetails) {
function uploadToPackageCloud (line 62) | function uploadToPackageCloud(packageDetails) {
function removePackageIfExists (line 93) | async function removePackageIfExists({
FILE: script/vsts/lib/upload-to-azure-blob.js
function listExistingAssetsForDirectory (line 11) | async function listExistingAssetsForDirectory() {
function deleteExistingAssets (line 15) | async function deleteExistingAssets(existingAssets = []) {
function uploadAssets (line 27) | function uploadAssets(assets) {
function uploadAsset (line 33) | function uploadAsset(assetPath) {
FILE: script/vsts/upload-artifacts.js
constant CONFIG (line 13) | const CONFIG = require('../config');
function uploadArtifacts (line 50) | async function uploadArtifacts() {
function publishReleaseAsync (line 153) | async function publishReleaseAsync(options) {
FILE: script/vsts/upload-crash-reports.js
function uploadCrashReports (line 20) | async function uploadCrashReports() {
FILE: spec/async-spec-helpers.js
function conditionPromise (line 1) | async function conditionPromise(
function timeoutPromise (line 25) | function timeoutPromise(timeout) {
function emitterEventPromise (line 31) | function emitterEventPromise(emitter, event, timeout = 15000) {
FILE: spec/atom-environment-spec.js
method requestIdleCallback (line 235) | requestIdleCallback(callback) {
method addEventListener (line 238) | addEventListener() {}
method removeEventListener (line 239) | removeEventListener() {}
method requestIdleCallback (line 271) | requestIdleCallback(callback) {
method addEventListener (line 274) | addEventListener() {}
method removeEventListener (line 275) | removeEventListener() {}
method getTitle (line 524) | getTitle() {
method addEventListener (line 635) | addEventListener() {}
method removeEventListener (line 636) | removeEventListener() {}
method updateProcessEnv (line 669) | updateProcessEnv() {
method directoryForURISync (line 771) | directoryForURISync(uri) {
FILE: spec/buffered-process-spec.js
method stdout (line 105) | stdout(lines) {
method stderr (line 108) | stderr(lines) {
method stdout (line 133) | stdout(lines) {
method stderr (line 136) | stderr(lines) {
method stdout (line 160) | stdout(lines) {
FILE: spec/command-registry-spec.js
method 'command-1' (line 178) | 'command-1'() {
method 'command-2' (line 181) | 'command-2'() {
method didDispatch (line 304) | didDispatch() {}
method didDispatch (line 313) | didDispatch() {}
function listener (line 342) | function listener() {}
FILE: spec/config-file-spec.js
function writeFileSync (line 127) | function writeFileSync(filePath, content, seconds = 2) {
FILE: spec/context-menu-manager-spec.js
method created (line 165) | created(event) {
method shouldDisplay (line 188) | shouldDisplay(event) {
method created (line 289) | created(event) {
FILE: spec/default-directory-searcher-spec.js
method didMatch (line 21) | didMatch() {}
method didError (line 22) | didError() {}
method didSearchPaths (line 23) | didSearchPaths() {}
method getPath (line 31) | getPath() {
FILE: spec/deserializer-manager-spec.js
class Foo (line 6) | class Foo {
method deserialize (line 7) | static deserialize({ name }) {
method constructor (line 10) | constructor(name) {
FILE: spec/dock-spec.js
method getDefaultLocation (line 85) | getDefaultLocation() {
method getDefaultLocation (line 172) | getDefaultLocation() {
method getPreferredWidth (line 175) | getPreferredWidth() {
method getPreferredHeight (line 178) | getPreferredHeight() {
method getDefaultLocation (line 203) | getDefaultLocation() {
method getPreferredWidth (line 206) | getPreferredWidth() {
method getPreferredHeight (line 209) | getPreferredHeight() {
method getDefaultLocation (line 236) | getDefaultLocation() {
method getPreferredWidth (line 239) | getPreferredWidth() {
method getPreferredHeight (line 242) | getPreferredHeight() {
method getDefaultLocation (line 272) | getDefaultLocation() {
method getPreferredWidth (line 275) | getPreferredWidth() {
method getDefaultLocation (line 311) | getDefaultLocation() {
method getDefaultLocation (line 331) | getDefaultLocation() {
method getPreferredWidth (line 334) | getPreferredWidth() {
method getDefaultLocation (line 362) | getDefaultLocation() {
method getPreferredWidth (line 365) | getPreferredWidth() {
method getDefaultLocation (line 388) | getDefaultLocation() {
method getPreferredWidth (line 391) | getPreferredWidth() {
FILE: spec/fixtures/indentation/classes.js
class MyClass (line 1) | class MyClass extends OtherComponent {
method constructor (line 7) | constructor() {
FILE: spec/fixtures/packages/package-with-activation-commands-and-deserializers/index.js
method initialize (line 5) | initialize() {}
method activate (line 6) | activate () {
method deserializeMethod1 (line 12) | deserializeMethod1 (state) {
method deserializeMethod2 (line 19) | deserializeMethod2 (state) {
FILE: spec/fixtures/packages/package-with-deserializers/index.js
method initialize (line 2) | initialize() {}
method activate (line 3) | activate () {}
method deserializeMethod1 (line 5) | deserializeMethod1 (state) {
method deserializeMethod2 (line 12) | deserializeMethod2 (state) {
FILE: spec/fixtures/packages/package-with-directory-provider/index.js
class FakeRemoteDirectory (line 3) | class FakeRemoteDirectory {
method constructor (line 4) | constructor (uri) {
method relativize (line 8) | relativize (uri) {
method getPath (line 12) | getPath () {
method isRoot (line 16) | isRoot () {
method getSubdirectory (line 20) | getSubdirectory () {
method existsSync (line 28) | existsSync () {
method contains (line 32) | contains () {
method directoryForURISync (line 41) | directoryForURISync (uri) {
FILE: spec/fixtures/packages/package-with-view-providers/index.js
method activate (line 4) | activate () {}
method theDeserializerMethod (line 6) | theDeserializerMethod (state) {
method viewProviderMethod1 (line 10) | viewProviderMethod1 (model) {
method viewProviderMethod2 (line 18) | viewProviderMethod2 (model) {
FILE: spec/fixtures/sample-with-many-folds.js
function f3 (line 3) | function f3() {
function f8 (line 8) | function f8() {
FILE: spec/git-repository-provider-spec.js
method getSubdirectory (line 126) | getSubdirectory() {}
method isRoot (line 127) | isRoot() {
method getSubdirectory (line 241) | getSubdirectory() {}
method isRoot (line 242) | isRoot() {
FILE: spec/git-repository-spec.js
function copyRepository (line 436) | function copyRepository() {
FILE: spec/grammar-registry-spec.js
method language (line 800) | language() {
method content (line 803) | content(node) {
function retainedBufferCount (line 904) | function retainedBufferCount(grammarRegistry) {
function subscriptionCount (line 908) | function subscriptionCount(grammarRegistry) {
FILE: spec/gutter-container-spec.js
method scheduleComponentUpdate (line 7) | scheduleComponentUpdate() {}
FILE: spec/gutter-spec.js
method scheduleComponentUpdate (line 5) | scheduleComponentUpdate() {}
method removeGutter (line 55) | removeGutter(destroyedGutter) {
FILE: spec/helpers/random.js
constant WORDS (line 1) | const WORDS = require('./words');
function buildRandomLine (line 22) | function buildRandomLine(random) {
FILE: spec/jasmine-junit-reporter.js
class JasmineJUnitReporter (line 3) | class JasmineJUnitReporter extends jasmine.JUnitXmlReporter {
method fullDescription (line 4) | fullDescription(spec) {
method reportSpecResults (line 15) | reportSpecResults(spec) {
FILE: spec/jasmine-list-reporter.js
class JasmineListReporter (line 3) | class JasmineListReporter extends TerminalReporter {
method fullDescription (line 4) | fullDescription(spec) {
method reportSpecStarting (line 14) | reportSpecStarting(spec) {
method reportSpecResults (line 18) | reportSpecResults(spec) {
FILE: spec/main-process/atom-application.test.js
method getActiveTextEditor (line 799) | getActiveTextEditor() {}
method preventDefault (line 1201) | preventDefault() {}
class StubWindow (line 1216) | class StubWindow extends EventEmitter {
method constructor (line 1217) | constructor(sinon, loadSettings, options) {
method openPath (line 1283) | openPath(pathToOpen, initialLine, initialColumn) {
method openLocations (line 1287) | openLocations(locations) {
method setSize (line 1305) | setSize(x, y) {
method setPosition (line 1309) | setPosition(x, y) {
method isSpecWindow (line 1313) | isSpecWindow() {
method hasProjectPaths (line 1317) | hasProjectPaths() {
method containsLocations (line 1321) | containsLocations(locations) {
method containsLocation (line 1325) | containsLocation(location) {
method getDimensions (line 1338) | getDimensions() {
class LaunchScenario (line 1343) | class LaunchScenario {
method create (line 1344) | static async create(sandbox) {
method constructor (line 1350) | constructor(sandbox) {
method init (line 1364) | async init() {
method preconditions (line 1435) | async preconditions(source) {
method launch (line 1457) | launch(options) {
method open (line 1468) | open(options) {
method assert (line 1489) | async assert(source) {
method destroy (line 1614) | async destroy() {
method addApplication (line 1622) | addApplication(options = {}) {
method getApplication (line 1651) | getApplication(index) {
method getWindow (line 1659) | getWindow(index) {
method compareSets (line 1667) | compareSets(expected, actual) {
method convertRootPath (line 1685) | convertRootPath(shortRootPath) {
method convertEditorPath (line 1700) | convertEditorPath(shortEditorPath) {
method convertPaths (line 1709) | convertPaths(paths) {
method parseWindowSpecs (line 1733) | parseWindowSpecs(source) {
FILE: spec/main-process/atom-window.test.js
class StubApplication (line 479) | class StubApplication {
method constructor (line 480) | constructor(sinon) {
class StubRecoveryService (line 496) | class StubRecoveryService {
method constructor (line 497) | constructor(sinon) {
class StubBrowserWindow (line 503) | class StubBrowserWindow extends EventEmitter {
method constructor (line 504) | constructor(options) {
method loadURL (line 519) | loadURL() {}
method focusOnWebView (line 521) | focusOnWebView() {
FILE: spec/native-watcher-registry-spec.js
function findRootDirectory (line 8) | function findRootDirectory() {
constant ROOT (line 19) | const ROOT = findRootDirectory();
function absolute (line 21) | function absolute(...parts) {
function parts (line 26) | function parts(fullPath) {
class MockWatcher (line 30) | class MockWatcher {
method constructor (line 31) | constructor(normalizedPath) {
method getNormalizedPathPromise (line 36) | getNormalizedPathPromise() {
method attachToNative (line 40) | attachToNative(native, nativePath) {
class MockNative (line 53) | class MockNative {
method constructor (line 54) | constructor(name) {
method reattachTo (line 63) | reattachTo(newNative, nativePath) {
method onWillStop (line 69) | onWillStop(callback) {
method dispose (line 73) | dispose() {
method stop (line 77) | stop() {
FILE: spec/package-manager-spec.js
function createTestElement (line 13) | function createTestElement(className) {
FILE: spec/package-spec.js
function __guard__ (line 352) | function __guard__(value, transform) {
FILE: spec/pane-container-spec.js
class Item (line 24) | class Item {
method deserialize (line 25) | static deserialize() {
method serialize (line 28) | serialize() {
class TestItem (line 272) | class TestItem {
method shouldPromptToSave (line 273) | shouldPromptToSave() {
method getURI (line 276) | getURI() {
method constructor (line 323) | constructor() {
method destroy (line 326) | destroy() {
method isDestroyed (line 329) | isDestroyed() {
method constructor (line 505) | constructor(id) {
method copy (line 508) | copy() {
class TestItem (line 322) | class TestItem {
method shouldPromptToSave (line 273) | shouldPromptToSave() {
method getURI (line 276) | getURI() {
method constructor (line 323) | constructor() {
method destroy (line 326) | destroy() {
method isDestroyed (line 329) | isDestroyed() {
method constructor (line 505) | constructor(id) {
method copy (line 508) | copy() {
method getURI (line 454) | getURI() {
method isModified (line 457) | isModified() {
method save (line 460) | save() {
method getURI (line 466) | getURI() {
method isModified (line 469) | isModified() {
method save (line 472) | save() {
method getURI (line 478) | getURI() {
method isModified (line 481) | isModified() {
method save (line 484) | save() {
class TestItem (line 504) | class TestItem {
method shouldPromptToSave (line 273) | shouldPromptToSave() {
method getURI (line 276) | getURI() {
method constructor (line 323) | constructor() {
method destroy (line 326) | destroy() {
method isDestroyed (line 329) | isDestroyed() {
method constructor (line 505) | constructor(id) {
method copy (line 508) | copy() {
FILE: spec/pane-element-spec.js
class TestModel (line 78) | class TestModel {}
class TestModel (line 204) | class TestModel {}
method setData (line 284) | setData(key, value) {
method getData (line 287) | getData(key) {
FILE: spec/pane-spec.js
class Item (line 11) | class Item {
method deserialize (line 12) | static deserialize({ name, uri }) {
method constructor (line 16) | constructor(name, uri) {
method getURI (line 23) | getURI() {
method getPath (line 26) | getPath() {
method isEqual (line 29) | isEqual(other) {
method isPermanentDockItem (line 32) | isPermanentDockItem() {
method isDestroyed (line 35) | isDestroyed() {
method serialize (line 39) | serialize() {
method copy (line 43) | copy() {
method destroy (line 47) | destroy() {
method onDidDestroy (line 52) | onDidDestroy(fn) {
method onDidTerminatePendingState (line 56) | onDidTerminatePendingState(callback) {
method terminatePendingState (line 60) | terminatePendingState() {
function paneParams (line 75) | function paneParams(params) {
FILE: spec/panel-container-element-spec.js
class TestPanelContainerItem (line 9) | class TestPanelContainerItem {}
class TestPanelContainerItemElement_ (line 11) | class TestPanelContainerItemElement_ extends HTMLElement {
method connectedCallback (line 12) | connectedCallback() {
method initialize (line 15) | initialize(model) {
method focus (line 19) | focus() {}
function createPanel (line 205) | function createPanel(autoFocus = true) {
FILE: spec/panel-container-spec.js
class TestPanelItem (line 9) | class TestPanelItem {}
FILE: spec/panel-spec.js
class TestPanelItem (line 4) | class TestPanelItem {
method getElement (line 5) | getElement() {
FILE: spec/path-watcher-spec.js
function waitForChanges (line 32) | function waitForChanges(watcher, ...fileNames) {
FILE: spec/project-spec.js
method destroy (line 459) | destroy() {
method repositoryForDirectory (line 464) | repositoryForDirectory(directory) {
method repositoryForDirectorySync (line 467) | repositoryForDirectorySync(directory) {
class DummyDirectory (line 519) | class DummyDirectory {
method constructor (line 520) | constructor(aPath) {
method getPath (line 523) | getPath() {
method getFile (line 526) | getFile() {
method getSubdirectory (line 533) | getSubdirectory() {
method isRoot (line 540) | isRoot() {
method existsSync (line 543) | existsSync() {
method contains (line 546) | contains(filePath) {
method onDidChangeFiles (line 549) | onDidChangeFiles(callback) {
method directoryForURISync (line 563) | directoryForURISync(uri) {
method directoryForURISync (line 1015) | directoryForURISync(uri) {
FILE: spec/reopen-project-menu-manager-spec.js
function numberRange (line 7) | function numberRange(low, high) {
FILE: spec/spec-helper-platform.js
method isWindows (line 7) | isWindows() {
method generateEvilFiles (line 15) | generateEvilFiles() {
FILE: spec/squirrel-update-spec.js
method getName (line 7) | getName() {
method getVersion (line 10) | getVersion() {
method getPath (line 13) | getPath() {
class FakeShellOption (line 45) | class FakeShellOption {
method isRegistered (line 46) | isRegistered(callback) {
method register (line 49) | register(callback) {
method deregister (line 52) | deregister(callback) {
method update (line 55) | update(callback) {
FILE: spec/text-editor-component-spec.js
constant SAMPLE_TEXT (line 16) | const SAMPLE_TEXT = fs.readFileSync(
class DummyElement (line 21) | class DummyElement extends HTMLElement {
method connectedCallback (line 22) | connectedCallback() {
function checkScrollContainerLeft (line 859) | function checkScrollContainerLeft(component) {
function attachFakeWindow (line 2560) | function attachFakeWindow(component) {
function checkScrollContainerLeft (line 2731) | function checkScrollContainerLeft() {
function createBlockDecorationAtScreenRow (line 3812) | function createBlockDecorationAtScreenRow(
function assertTilesAreSizedAndPositionedCorrectly (line 3835) | function assertTilesAreSizedAndPositionedCorrectly(component, tiles) {
function assertLinesAreAlignedWithLineNumbers (line 3858) | function assertLinesAreAlignedWithLineNumbers(component) {
function textContentOnRowMatchingSelector (line 4049) | function textContentOnRowMatchingSelector(component, row, selector) {
function assertScrolledDownAndRight (line 4726) | function assertScrolledDownAndRight() {
function assertScrolledUpAndLeft (line 4735) | function assertScrolledUpAndLeft() {
function assertScrolledDown (line 5098) | function assertScrolledDown() {
function assertScrolledUp (line 5105) | function assertScrolledUp() {
function startDragging (line 6095) | function startDragging() {
function getNextAnimationFramePromise (line 6135) | function getNextAnimationFramePromise() {
function buildEditor (line 6141) | function buildEditor(params = {}) {
function buildComponent (line 6168) | function buildComponent(params = {}) {
function getEditorWidthInBaseCharacters (line 6188) | function getEditorWidthInBaseCharacters(component) {
function setEditorHeightInLines (line 6194) | async function setEditorHeightInLines(component, heightInLines) {
function setEditorWidthInCharacters (line 6200) | async function setEditorWidthInCharacters(component, widthInCharacters) {
function verifyCursorPosition (line 6209) | function verifyCursorPosition(component, cursorNode, row, column) {
function clientTopForLine (line 6217) | function clientTopForLine(component, row) {
function clientLeftForCharacter (line 6221) | function clientLeftForCharacter(component, row, column) {
function clientPositionForCharacter (line 6242) | function clientPositionForCharacter(component, row, column) {
function lineNumberNodeForScreenRow (line 6249) | function lineNumberNodeForScreenRow(component, row) {
function lineNodeForScreenRow (line 6257) | function lineNodeForScreenRow(component, row) {
function textNodesForScreenRow (line 6263) | function textNodesForScreenRow(component, row) {
function setScrollTop (line 6268) | function setScrollTop(component, scrollTop) {
function setScrollLeft (line 6274) | function setScrollLeft(component, scrollLeft) {
function getHorizontalScrollbarHeight (line 6280) | function getHorizontalScrollbarHeight(component) {
function getVerticalScrollbarWidth (line 6285) | function getVerticalScrollbarWidth(component) {
function assertDocumentFocused (line 6290) | function assertDocumentFocused() {
function getElementHeight (line 6296) | function getElementHeight(element) {
function queryOnScreenLineNumberElements (line 6317) | function queryOnScreenLineNumberElements(element) {
function queryOnScreenLineElements (line 6321) | function queryOnScreenLineElements(element) {
FILE: spec/text-editor-element-spec.js
function buildTextEditorElement (line 16) | function buildTextEditorElement(options = {}) {
class ElementThatFocusesChild (line 221) | class ElementThatFocusesChild extends HTMLElement {
method connectedCallback (line 222) | connectedCallback() {
FILE: spec/text-editor-registry-spec.js
method getActivatePromise (line 19) | getActivatePromise() {
function getSubscriptionCount (line 634) | function getSubscriptionCount(editor) {
function retainedEditorCount (line 643) | function retainedEditorCount(registry) {
FILE: spec/text-editor-spec.js
method bufferForIdSync (line 46) | bufferForIdSync() {
method bufferForIdSync (line 83) | bufferForIdSync() {
method bufferForIdSync (line 111) | bufferForIdSync() {
function paragraphBufferRangeForRow (line 1460) | function paragraphBufferRangeForRow(row) {
function convertToHardTabs (line 8895) | function convertToHardTabs(buffer) {
FILE: spec/text-mate-language-mode-spec.js
method tokenizedLineForRow (line 895) | tokenizedLineForRow(row) {
method tokenizedLineForRow (line 969) | tokenizedLineForRow() {
function simulateFold (line 1480) | function simulateFold(ranges) {
function fullyTokenize (line 1491) | function fullyTokenize(languageMode) {
FILE: spec/theme-manager-spec.js
function getAbsolutePath (line 647) | function getAbsolutePath(directory, relativePath) {
FILE: spec/title-bar-spec.js
class FakePaneItem (line 45) | class FakePaneItem {
method constructor (line 46) | constructor(title) {
method getTitle (line 50) | getTitle() {
method onDidChangeTitle (line 54) | onDidChangeTitle(callback) {
method setTitle (line 63) | setTitle(title) {
FILE: spec/tooltip-manager-spec.js
function createElement (line 302) | function createElement(className) {
function mouseEnter (line 309) | function mouseEnter(element) {
function mouseLeave (line 314) | function mouseLeave(element) {
FILE: spec/tree-indenter-spec.js
constant TAB_LENGTH (line 11) | const TAB_LENGTH = 2;
function compareFile (line 64) | function compareFile(filename) {
FILE: spec/tree-sitter-language-mode-spec.js
method language (line 769) | language(node) {
method content (line 772) | content(node) {
method language (line 778) | language(node) {
method content (line 781) | content(node) {
method language (line 905) | language(node) {
method content (line 908) | content(node) {
method language (line 915) | language(node) {
method content (line 918) | content(node) {
method language (line 1038) | language() {
method content (line 1041) | content(node) {
function nextHighlightingUpdate (line 2517) | function nextHighlightingUpdate(languageMode) {
function getDisplayText (line 2526) | function getDisplayText(editor) {
function expectTokensToEqual (line 2530) | function expectTokensToEqual(editor, expectedTokenLines) {
constant HTML_TEMPLATE_LITERAL_INJECTION_POINT (line 2579) | const HTML_TEMPLATE_LITERAL_INJECTION_POINT = {
method language (line 2581) | language(node) {
method content (line 2589) | content(node) {
constant SCRIPT_TAG_INJECTION_POINT (line 2594) | const SCRIPT_TAG_INJECTION_POINT = {
method language (line 2596) | language() {
method content (line 2599) | content(node) {
constant JSDOC_INJECTION_POINT (line 2604) | const JSDOC_INJECTION_POINT = {
method language (line 2606) | language(comment) {
method content (line 2609) | content(comment) {
FILE: spec/view-registry-spec.js
class TestComponent (line 29) | class TestComponent {
method constructor (line 30) | constructor() {
method getElement (line 42) | getElement() {
class TestComponent (line 41) | class TestComponent {
method constructor (line 30) | constructor() {
method getElement (line 42) | getElement() {
class TestModel (line 57) | class TestModel {}
class TestModelSubclass (line 59) | class TestModelSubclass extends TestModel {}
class TestView (line 61) | class TestView {
method initialize (line 62) | initialize(model) {
method initialize (line 111) | initialize(model) {
class TestModel (line 109) | class TestModel {}
class TestView (line 110) | class TestView {
method initialize (line 62) | initialize(model) {
method initialize (line 111) | initialize(model) {
FILE: spec/workspace-element-spec.js
method getDefaultLocation (line 624) | getDefaultLocation() {
method getPreferredWidth (line 627) | getPreferredWidth() {
method getDefaultLocation (line 633) | getDefaultLocation() {
method getPreferredWidth (line 636) | getPreferredWidth() {
method getDefaultLocation (line 642) | getDefaultLocation() {
method getPreferredHeight (line 645) | getPreferredHeight() {
function moveMouse (line 792) | function moveMouse(coordinates) {
function expectToggleButtonHidden (line 801) | function expectToggleButtonHidden(dock) {
function expectToggleButtonVisible (line 807) | function expectToggleButtonVisible(dock, iconClass) {
FILE: spec/workspace-spec.js
function simulateReload (line 41) | function simulateReload() {
method getURI (line 1249) | getURI() {
method getDefaultLocation (line 1346) | getDefaultLocation() {
method getElement (line 1349) | getElement() {
method getDefaultLocation (line 1355) | getDefaultLocation() {
method getElement (line 1358) | getElement() {
method getDefaultLocation (line 1391) | getDefaultLocation() {
method getElement (line 1394) | getElement() {
method getDefaultLocation (line 1400) | getDefaultLocation() {
method getElement (line 1403) | getElement() {
function clearEvents (line 1464) | function clearEvents() {
class TestItem (line 2234) | class TestItem {}
function TestItemElement (line 2238) | function TestItemElement() {
function Ctor (line 2241) | function Ctor() {
function scan (line 2430) | function scan(regex, options, iterator) {
class FakeSearch (line 3103) | class FakeSearch {
method constructor (line 3104) | constructor(options) {
method then (line 3115) | then(...args) {
method cancel (line 3118) | cancel() {
method canSearchDirectory (line 3133) | canSearchDirectory(directory) {
method search (line 3136) | search(directory, regex, options) {
method canSearchDirectory (line 3218) | canSearchDirectory(directory) {
method search (line 3221) | search(directory, regex, options) {
function search (line 3252) | async function search({
function escapeStringRegex (line 3992) | function escapeStringRegex(string) {
FILE: src/application-delegate.js
method constructor (line 7) | constructor() {
method ipcMessageEmitter (line 12) | ipcMessageEmitter() {
method getWindowLoadSettings (line 22) | getWindowLoadSettings() {
method open (line 26) | open(params) {
method pickFolder (line 30) | pickFolder(callback) {
method getCurrentWindow (line 39) | getCurrentWindow() {
method closeWindow (line 43) | closeWindow() {
method getTemporaryWindowState (line 47) | async getTemporaryWindowState() {
method setTemporaryWindowState (line 52) | setTemporaryWindowState(state) {
method getWindowSize (line 56) | getWindowSize() {
method setWindowSize (line 61) | setWindowSize(width, height) {
method getWindowPosition (line 65) | getWindowPosition() {
method setWindowPosition (line 70) | setWindowPosition(x, y) {
method centerWindow (line 74) | centerWindow() {
method focusWindow (line 78) | focusWindow() {
method showWindow (line 82) | showWindow() {
method hideWindow (line 86) | hideWindow() {
method reloadWindow (line 90) | reloadWindow() {
method restartApplication (line 94) | restartApplication() {
method minimizeWindow (line 98) | minimizeWindow() {
method isWindowMaximized (line 102) | isWindowMaximized() {
method maximizeWindow (line 106) | maximizeWindow() {
method unmaximizeWindow (line 110) | unmaximizeWindow() {
method isWindowFullScreen (line 114) | isWindowFullScreen() {
method setWindowFullScreen (line 118) | setWindowFullScreen(fullScreen = false) {
method onDidEnterFullScreen (line 122) | onDidEnterFullScreen(callback) {
method onDidLeaveFullScreen (line 126) | onDidLeaveFullScreen(callback) {
method openWindowDevTools (line 130) | async openWindowDevTools() {
method closeWindowDevTools (line 138) | async closeWindowDevTools() {
method toggleWindowDevTools (line 146) | async toggleWindowDevTools() {
method executeJavaScriptInWindowDevTools (line 154) | executeJavaScriptInWindowDevTools(code) {
method didClosePathWithWaitSession (line 158) | didClosePathWithWaitSession(path) {
method setWindowDocumentEdited (line 166) | setWindowDocumentEdited(edited) {
method setRepresentedFilename (line 170) | setRepresentedFilename(filename) {
method addRecentDocument (line 174) | addRecentDocument(filename) {
method setProjectRoots (line 178) | setProjectRoots(paths) {
method setAutoHideWindowMenuBar (line 182) | setAutoHideWindowMenuBar(autoHide) {
method setWindowMenuBarVisibility (line 186) | setWindowMenuBarVisibility(visible) {
method getPrimaryDisplayWorkAreaSize (line 190) | getPrimaryDisplayWorkAreaSize() {
method getUserDefault (line 194) | getUserDefault(key, type) {
method setUserSettings (line 198) | async setUserSettings(config, configFilePath) {
method onDidChangeUserSettings (line 211) | onDidChangeUserSettings(callback) {
method onDidFailToReadUserSettings (line 217) | onDidFailToReadUserSettings(callback) {
method confirm (line 224) | confirm(options, callback) {
method showMessageDialog (line 269) | showMessageDialog(params) {}
method showSaveDialog (line 271) | showSaveDialog(options, callback) {
method playBeepSound (line 284) | playBeepSound() {
method onDidOpenLocations (line 288) | onDidOpenLocations(callback) {
method onUpdateAvailable (line 292) | onUpdateAvailable(callback) {
method onDidBeginDownloadingUpdate (line 302) | onDidBeginDownloadingUpdate(callback) {
method onDidBeginCheckingForUpdate (line 306) | onDidBeginCheckingForUpdate(callback) {
method onDidCompleteDownloadingUpdate (line 310) | onDidCompleteDownloadingUpdate(callback) {
method onUpdateNotAvailable (line 314) | onUpdateNotAvailable(callback) {
method onUpdateError (line 318) | onUpdateError(callback) {
method onApplicationMenuCommand (line 322) | onApplicationMenuCommand(handler) {
method onContextMenuCommand (line 331) | onContextMenuCommand(handler) {
method onURIMessage (line 340) | onURIMessage(handler) {
method onDidRequestUnload (line 349) | onDidRequestUnload(callback) {
method onDidChangeHistoryManager (line 361) | onDidChangeHistoryManager(callback) {
method didChangeHistoryManager (line 370) | didChangeHistoryManager() {
method openExternal (line 374) | openExternal(url) {
method checkForUpdate (line 378) | checkForUpdate() {
method restartAndInstallUpdate (line 382) | restartAndInstallUpdate() {
method getAutoUpdateManagerState (line 386) | getAutoUpdateManagerState() {
method getAutoUpdateManagerErrorMessage (line 390) | getAutoUpdateManagerErrorMessage() {
method emitWillSavePath (line 394) | emitWillSavePath(path) {
method emitDidSavePath (line 398) | emitDidSavePath(path) {
method resolveProxy (line 402) | resolveProxy(requestId, url) {
method onDidResolveProxy (line 406) | onDidResolveProxy(callback) {
FILE: src/atom-environment.js
class AtomEnvironment (line 57) | class AtomEnvironment {
method constructor (line 62) | constructor(params = {}) {
method initialize (line 231) | initialize(params = {}) {
method preloadPackages (line 333) | preloadPackages() {
method attachSaveStateListeners (line 337) | attachSaveStateListeners() {
method registerDefaultDeserializers (line 357) | registerDefaultDeserializers() {
method registerDefaultCommands (line 368) | registerDefaultCommands() {
method registerDefaultOpeners (line 379) | registerDefaultOpeners() {
method registerDefaultTargetForKeymaps (line 396) | registerDefaultTargetForKeymaps() {
method observeAutoHideMenuBar (line 400) | observeAutoHideMenuBar() {
method reset (line 409) | async reset() {
method destroy (line 446) | destroy() {
method onDidBeep (line 472) | onDidBeep(callback) {
method onWillThrowError (line 489) | onWillThrowError(callback) {
method onDidThrowError (line 504) | onDidThrowError(callback) {
method onDidFailAssertion (line 511) | onDidFailAssertion(callback) {
method whenShellEnvironmentLoaded (line 519) | whenShellEnvironmentLoaded(callback) {
method inDevMode (line 533) | inDevMode() {
method inSafeMode (line 539) | inSafeMode() {
method inSpecMode (line 545) | inSpecMode() {
method isFirstLoad (line 552) | isFirstLoad() {
method getAppName (line 561) | getAppName() {
method getVersion (line 569) | getVersion() {
method getReleaseChannel (line 580) | getReleaseChannel() {
method isReleasedVersion (line 585) | isReleasedVersion() {
method getWindowLoadTime (line 596) | getWindowLoadTime() {
method getStartupMarkers (line 606) | getStartupMarkers() {
method getLoadSettings (line 615) | getLoadSettings() {
method open (line 637) | open(params) {
method pickFolder (line 646) | pickFolder(callback) {
method close (line 651) | close() {
method getSize (line 658) | getSize() {
method setSize (line 666) | setSize(width, height) {
method getPosition (line 673) | getPosition() {
method setPosition (line 681) | setPosition(x, y) {
method getCurrentWindow (line 686) | getCurrentWindow() {
method center (line 691) | center() {
method focus (line 696) | focus() {
method show (line 702) | show() {
method hide (line 707) | hide() {
method reload (line 712) | reload() {
method restartApplication (line 717) | restartApplication() {
method isMaximized (line 722) | isMaximized() {
method maximize (line 726) | maximize() {
method isFullScreen (line 731) | isFullScreen() {
method setFullScreen (line 736) | setFullScreen(fullScreen = false) {
method toggleFullScreen (line 741) | toggleFullScreen() {
method displayWindow (line 749) | async displayWindow() {
method getWindowDimensions (line 772) | getWindowDimensions() {
method setWindowDimensions (line 791) | setWindowDimensions({ x, y, width, height }) {
method isValidDimensions (line 806) | isValidDimensions({ x, y, width, height } = {}) {
method storeWindowDimensions (line 810) | storeWindowDimensions() {
method getDefaultWindowDimensions (line 820) | getDefaultWindowDimensions() {
method restoreWindowDimensions (line 843) | async restoreWindowDimensions() {
method restoreWindowBackground (line 854) | restoreWindowBackground() {
method storeWindowBackground (line 866) | storeWindowBackground() {
method startEditorWindow (line 879) | async startEditorWindow() {
method serialize (line 1060) | serialize(options) {
method prepareToUnloadEditorWindow (line 1072) | async prepareToUnloadEditorWindow() {
method unloadEditorWindow (line 1093) | unloadEditorWindow() {
method saveBlobStoreSync (line 1100) | saveBlobStoreSync() {
method openInitialEmptyEditorIfNecessary (line 1106) | openInitialEmptyEditorIfNecessary() {
method installUncaughtErrorHandler (line 1114) | installUncaughtErrorHandler() {
method uninstallUncaughtErrorHandler (line 1147) | uninstallUncaughtErrorHandler() {
method installWindowEventHandler (line 1151) | installWindowEventHandler() {
method uninstallWindowEventHandler (line 1159) | uninstallWindowEventHandler() {
method didChangeStyles (line 1166) | didChangeStyles(styleElement) {
method updateProcessEnvAndTriggerHooks (line 1173) | async updateProcessEnvAndTriggerHooks() {
method beep (line 1185) | beep() {
method confirm (line 1244) | confirm(options = {}, callback) {
method openDevTools (line 1260) | openDevTools() {
method toggleDevTools (line 1268) | toggleDevTools() {
method executeJavaScriptInDevTools (line 1273) | executeJavaScriptInDevTools(code) {
method assert (line 1281) | assert(condition, message, callbackOrMetadata) {
method loadThemes (line 1301) | loadThemes() {
method setDocumentEdited (line 1305) | setDocumentEdited(edited) {
method setRepresentedFilename (line 1313) | setRepresentedFilename(filename) {
method addProjectFolder (line 1322) | addProjectFolder() {
method addToProject (line 1330) | async addToProject(projectPaths) {
method attemptRestoreProjectStateForPaths (line 1339) | async attemptRestoreProjectStateForPaths(
method restoreStateIntoThisEnvironment (line 1403) | restoreStateIntoThisEnvironment(state) {
method showSaveDialogSync (line 1411) | showSaveDialogSync(options = {}) {
method saveState (line 1418) | async saveState(options, storageKey) {
method loadState (line 1431) | loadState(stateKey) {
method deserialize (line 1445) | async deserialize(state) {
method getStateKey (line 1508) | getStateKey(paths) {
method getConfigDirPath (line 1525) | getConfigDirPath() {
method getUserInitScriptPath (line 1530) | getUserInitScriptPath() {
method requireUserInitScript (line 1538) | requireUserInitScript() {
method onUpdateAvailable (line 1556) | onUpdateAvailable(callback) {
method updateAvailable (line 1560) | updateAvailable(details) {
method listenForUpdates (line 1564) | listenForUpdates() {
method setBodyPlatformClass (line 1573) | setBodyPlatformClass() {
method setAutoHideMenuBar (line 1577) | setAutoHideMenuBar(autoHide) {
method dispatchApplicationMenuCommand (line 1582) | dispatchApplicationMenuCommand(command, arg) {
method dispatchContextMenuCommand (line 1591) | dispatchContextMenuCommand(command, ...args) {
method dispatchURIMessage (line 1595) | dispatchURIMessage(uri) {
method openLocations (line 1606) | async openLocations(locations) {
method resolveProxy (line 1743) | resolveProxy(url) {
FILE: src/auto-update-manager.js
method constructor (line 4) | constructor({ applicationDelegate }) {
method initialize (line 10) | initialize() {
method destroy (line 30) | destroy() {
method checkForUpdate (line 35) | checkForUpdate() {
method restartAndInstallUpdate (line 39) | restartAndInstallUpdate() {
method getState (line 43) | getState() {
method getErrorMessage (line 47) | getErrorMessage() {
method platformSupportsUpdates (line 51) | platformSupportsUpdates() {
method onDidBeginCheckingForUpdate (line 57) | onDidBeginCheckingForUpdate(callback) {
method onDidBeginDownloadingUpdate (line 61) | onDidBeginDownloadingUpdate(callback) {
method onDidCompleteDownloadingUpdate (line 65) | onDidCompleteDownloadingUpdate(callback) {
method onUpdateNotAvailable (line 75) | onUpdateNotAvailable(callback) {
method onUpdateError (line 79) | onUpdateError(callback) {
method getPlatform (line 83) | getPlatform() {
FILE: src/babel.js
constant PREFIXES (line 10) | const PREFIXES = [
constant PREFIX_LENGTH (line 18) | const PREFIX_LENGTH = Math.max.apply(
function createVersionAndOptionsDigest (line 71) | function createVersionAndOptionsDigest(version, options) {
FILE: src/buffered-node-process.js
method constructor (line 35) | constructor({ command, args, options = {}, stdout, stderr, exit }) {
FILE: src/buffered-process.js
method constructor (line 50) | constructor({
method start (line 72) | start() {
method spawnWithEscapedWindowsArgs (line 86) | spawnWithEscapedWindowsArgs(command, args, options) {
method onWillThrowError (line 135) | onWillThrowError(callback) {
method bufferStream (line 148) | bufferStream(stream, onLines, onDone) {
method killOnWindows (line 177) | killOnWindows() {
method killProcess (line 221) | killProcess() {
method isExplorerCommand (line 226) | isExplorerCommand(command) {
method getCmdPath (line 239) | getCmdPath() {
method kill (line 250) | kill() {
method spawn (line 261) | spawn(command, args, options) {
method handleEvents (line 269) | handleEvents(stdout, stderr, exit) {
method handleError (line 319) | handleError(error) {
FILE: src/clipboard.js
method constructor (line 16) | constructor() {
method reset (line 20) | reset() {
method md5 (line 30) | md5(text) {
method write (line 44) | write(text, metadata) {
method read (line 55) | read() {
method writeFindText (line 60) | writeFindText(text) {
method readFindText (line 67) | readFindText() {
method readWithMetadata (line 77) | readWithMetadata() {
FILE: src/color.js
method parse (line 13) | static parse(value) {
method constructor (line 45) | constructor(red, green, blue, alpha) {
method red (line 52) | set red(red) {
method green (line 56) | set green(green) {
method blue (line 60) | set blue(blue) {
method alpha (line 64) | set alpha(alpha) {
method red (line 68) | get red() {
method green (line 72) | get green() {
method blue (line 76) | get blue() {
method alpha (line 80) | get alpha() {
method toHexString (line 85) | toHexString() {
method toRGBAString (line 92) | toRGBAString() {
method toJSON (line 96) | toJSON() {
method toString (line 100) | toString() {
method isEqual (line 104) | isEqual(color) {
method clone (line 125) | clone() {
function parseColor (line 130) | function parseColor(colorString) {
function parseAlpha (line 135) | function parseAlpha(alphaString) {
function numberToHexString (line 140) | function numberToHexString(number) {
FILE: src/command-installer.js
method constructor (line 5) | constructor(applicationDelegate) {
method initialize (line 9) | initialize(appVersion) {
method getInstallDirectory (line 13) | getInstallDirectory() {
method getResourcesDirectory (line 17) | getResourcesDirectory() {
method installShellCommandsInteractively (line 21) | installShellCommandsInteractively() {
method getCommandNameForChannel (line 47) | getCommandNameForChannel(commandName) {
method installAtomCommand (line 61) | installAtomCommand(askForPrivilege, callback) {
method installApmCommand (line 70) | installApmCommand(askForPrivilege, callback) {
method installCommand (line 86) | installCommand(commandPath, commandName, askForPrivilege, callback) {
method createSymlink (line 107) | createSymlink(fs, sourcePath, destinationPath, callback) {
FILE: src/command-registry.js
method constructor (line 48) | constructor() {
method clear (line 54) | clear() {
method attach (line 61) | attach(rootNode) {
method destroy (line 72) | destroy() {
method add (line 130) | add(target, commandName, listener, throwOnInvalidSelector = true) {
method addSelectorBasedListener (line 172) | addSelectorBasedListener(selector, commandName, listener) {
method addInlineListener (line 199) | addInlineListener(element, commandName, listener) {
method findCommands (line 242) | findCommands({ target }) {
method dispatch (line 289) | dispatch(target, commandName, detail) {
method onWillDispatch (line 299) | onWillDispatch(callback) {
method onDidDispatch (line 307) | onDidDispatch(callback) {
method getSnapshot (line 311) | getSnapshot() {
method restoreSnapshot (line 320) | restoreSnapshot(snapshot) {
method handleCommandEvent (line 328) | handleCommandEvent(event) {
method commandRegistered (line 422) | commandRegistered(commandName) {
class SelectorBasedListener (line 436) | class SelectorBasedListener {
method constructor (line 437) | constructor(selector, commandName, listener) {
method compare (line 445) | compare(other) {
method matchesTarget (line 452) | matchesTarget(target) {
class InlineListener (line 460) | class InlineListener {
method constructor (line 461) | constructor(commandName, listener) {
function extractDescriptor (line 471) | function extractDescriptor(name, listener) {
function extractDidDispatch (line 480) | function extractDidDispatch(listener) {
FILE: src/compile-cache.js
constant CSON (line 10) | let CSON = null;
constant COMPILERS (line 14) | const COMPILERS = {
function compileFileAtPath (line 97) | function compileFileAtPath(compiler, filePath, extension) {
function readCachedJavaScript (line 114) | function readCachedJavaScript(relativeCachePath) {
function writeCachedJavaScript (line 124) | function writeCachedJavaScript(relativeCachePath, code) {
constant INLINE_SOURCE_MAP_REGEXP (line 129) | const INLINE_SOURCE_MAP_REGEXP = /\/\/[#@]\s*sourceMappingURL=([^'"\n]+)...
method originalPositionFor (line 133) | originalPositionFor({ line, column }) {
function prepareStackTraceWithRawStackAssignment (line 211) | function prepareStackTraceWithRawStackAssignment(error, frames) {
FILE: src/config-file.js
constant CSON (line 6) | const CSON = require('season');
constant EVENT_TYPES (line 10) | const EVENT_TYPES = new Set(['created', 'modified', 'renamed']);
method at (line 13) | static at(path) {
method constructor (line 28) | constructor(path) {
method get (line 55) | get() {
method update (line 59) | update(value) {
method watch (line 66) | async watch(callback) {
method onDidChange (line 96) | onDidChange(callback) {
method onDidError (line 100) | onDidError(callback) {
method reload (line 104) | reload() {
FILE: src/config.js
class Config (line 383) | class Config {
method addSchemaEnforcer (line 384) | static addSchemaEnforcer(typeName, enforcerFunction) {
method addSchemaEnforcers (line 391) | static addSchemaEnforcers(filters) {
method executeSchemaEnforcers (line 401) | static executeSchemaEnforcers(keyPath, value, schema) {
method constructor (line 430) | constructor(params = {}) {
method initialize (line 435) | initialize({ saveCallback, mainSource, projectHomeSchema }) {
method clear (line 446) | clear() {
method observe (line 497) | observe(...args) {
method onDidChange (line 543) | onDidChange(...args) {
method get (line 621) | get(...args) {
method getAll (line 649) | getAll(keyPath, options) {
method set (line 731) | set(...args) {
method unset (line 779) | unset(keyPath, options) {
method getSources (line 840) | getSources() {
method getSchema (line 855) | getSchema(keyPath) {
method getUserConfigPath (line 880) | getUserConfigPath() {
method transact (line 889) | transact(callback) {
method getLegacyScopeDescriptorForNewScopeDescriptor (line 898) | getLegacyScopeDescriptorForNewScopeDescriptor(scopeDescriptor) {
method transactAsync (line 917) | transactAsync(callback) {
method beginTransaction (line 937) | beginTransaction() {
method endTransaction (line 941) | endTransaction() {
method pushAtKeyPath (line 946) | pushAtKeyPath(keyPath, value) {
method unshiftAtKeyPath (line 954) | unshiftAtKeyPath(keyPath, value) {
method removeAtKeyPath (line 962) | removeAtKeyPath(keyPath, value) {
method setSchema (line 970) | setSchema(keyPath, schema) {
method save (line 1006) | save() {
method resetUserSettings (line 1022) | resetUserSettings(newSettings, options = {}) {
method _resetSettings (line 1026) | _resetSettings(newSettings, options = {}) {
method _clearUnscopedSettingsForSource (line 1057) | _clearUnscopedSettingsForSource(source) {
method resetProjectSettings (line 1065) | resetProjectSettings(newSettings, projectFile) {
method clearProjectSettings (line 1078) | clearProjectSettings() {
method getRawValue (line 1082) | getRawValue(keyPath, options = {}) {
method setRawValue (line 1111) | setRawValue(keyPath, value, options = {}) {
method observeKeyPath (line 1133) | observeKeyPath(keyPath, options, callback) {
method onDidChangeKeyPath (line 1138) | onDidChangeKeyPath(keyPath, callback) {
method isSubKeyPath (line 1150) | isSubKeyPath(keyPath, subKeyPath) {
method setRawDefault (line 1159) | setRawDefault(keyPath, value) {
method setDefaults (line 1164) | setDefaults(keyPath, defaults) {
method deepClone (line 1194) | deepClone(object) {
method deepDefaults (line 1206) | deepDefaults(target) {
method setScopedDefaultsFromSchema (line 1233) | setScopedDefaultsFromSchema(keyPath, schema) {
method extractDefaultsFromSchema (line 1266) | extractDefaultsFromSchema(schema) {
method makeValueConformToSchema (line 1284) | makeValueConformToSchema(keyPath, value, options) {
method resetSettingsForSchemaChange (line 1304) | resetSettingsForSchemaChange(source) {
method priorityForSource (line 1330) | priorityForSource(source) {
method emitChangeEvent (line 1341) | emitChangeEvent() {
method resetScopedSettings (line 1347) | resetScopedSettings(newScopedSettings, options = {}) {
method setRawScopedValue (line 1369) | setRawScopedValue(keyPath, value, source, selector, options) {
method getRawScopedValue (line 1384) | getRawScopedValue(scopeDescriptor, keyPath, options) {
method observeScopedKeyPath (line 1406) | observeScopedKeyPath(scope, keyPath, callback) {
method onDidChangeScopedKeyPath (line 1413) | onDidChangeScopedKeyPath(scope, keyPath, callback) {
method coerce (line 1436) | coerce(keyPath, value, schema) {
method coerce (line 1442) | coerce(keyPath, value, schema) {
method coerce (line 1456) | coerce(keyPath, value, schema) {
method coerce (line 1470) | coerce(keyPath, value, schema) {
method validate (line 1497) | validate(keyPath, value, schema) {
method validateMaximumLength (line 1508) | validateMaximumLength(keyPath, value, schema) {
method coerce (line 1522) | coerce(keyPath, value, schema) {
method coerce (line 1535) | coerce(keyPath, value, schema) {
method coerce (line 1586) | coerce(keyPath, value, schema) {
method coerce (line 1614) | coerce(keyPath, value, schema) {
method coerceMinimumAndMaximum (line 1628) | coerceMinimumAndMaximum(keyPath, value, schema) {
method validateEnum (line 1641) | validateEnum(keyPath, value, schema) {
FILE: src/core-uri-handlers.js
function getLineColNumber (line 5) | function getLineColNumber(numStr) {
function openFile (line 10) | function openFile(atom, { query }) {
function windowShouldOpenFile (line 20) | function windowShouldOpenFile({ query }) {
constant ROUTER (line 33) | const ROUTER = {
method create (line 38) | create(atomEnv) {
method windowPredicate (line 47) | windowPredicate(parsed) {
FILE: src/cursor.js
method constructor (line 15) | constructor(params) {
method destroy (line 22) | destroy() {
method onDidChangePosition (line 42) | onDidChangePosition(callback) {
method onDidDestroy (line 51) | onDidDestroy(callback) {
method setScreenPosition (line 65) | setScreenPosition(screenPosition, options = {}) {
method getScreenPosition (line 72) | getScreenPosition() {
method setBufferPosition (line 83) | setBufferPosition(bufferPosition, options = {}) {
method getBufferPosition (line 90) | getBufferPosition() {
method getScreenRow (line 95) | getScreenRow() {
method getScreenColumn (line 100) | getScreenColumn() {
method getBufferRow (line 105) | getBufferRow() {
method getBufferColumn (line 110) | getBufferColumn() {
method getCurrentBufferLine (line 116) | getCurrentBufferLine() {
method isAtBeginningOfLine (line 121) | isAtBeginningOfLine() {
method isAtEndOfLine (line 126) | isAtEndOfLine() {
method getMarker (line 138) | getMarker() {
method isSurroundedByWhitespace (line 148) | isSurroundedByWhitespace() {
method isBetweenWordAndNonWord (line 162) | isBetweenWordAndNonWord() {
method isInsideWord (line 184) | isInsideWord(options) {
method getIndentLevel (line 194) | getIndentLevel() {
method getScopeDescriptor (line 205) | getScopeDescriptor() {
method getSyntaxTreeScopeDescriptor (line 214) | getSyntaxTreeScopeDescriptor() {
method hasPrecedingCharactersOnLine (line 222) | hasPrecedingCharactersOnLine() {
method isLastCursor (line 239) | isLastCursor() {
method moveUp (line 253) | moveUp(rowCount = 1, { moveToEndOfSelection } = {}) {
method moveDown (line 276) | moveDown(rowCount = 1, { moveToEndOfSelection } = {}) {
method moveLeft (line 299) | moveLeft(columnCount = 1, { moveToEndOfSelection } = {}) {
method moveRight (line 323) | moveRight(columnCount = 1, { moveToEndOfSelection } = {}) {
method moveToTop (line 348) | moveToTop() {
method moveToBottom (line 353) | moveToBottom() {
method moveToBeginningOfScreenLine (line 360) | moveToBeginningOfScreenLine() {
method moveToBeginningOfLine (line 365) | moveToBeginningOfLine() {
method moveToFirstCharacterOfLine (line 371) | moveToFirstCharacterOfLine() {
method moveToEndOfScreenLine (line 409) | moveToEndOfScreenLine() {
method moveToEndOfLine (line 414) | moveToEndOfLine() {
method moveToBeginningOfWord (line 419) | moveToBeginningOfWord() {
method moveToEndOfWord (line 424) | moveToEndOfWord() {
method moveToBeginningOfNextWord (line 430) | moveToBeginningOfNextWord() {
method moveToPreviousWordBoundary (line 436) | moveToPreviousWordBoundary() {
method moveToNextWordBoundary (line 442) | moveToNextWordBoundary() {
method moveToPreviousSubwordBoundary (line 448) | moveToPreviousSubwordBoundary() {
method moveToNextSubwordBoundary (line 455) | moveToNextSubwordBoundary() {
method skipLeadingWhitespace (line 463) | skipLeadingWhitespace() {
method moveToBeginningOfNextParagraph (line 476) | moveToBeginningOfNextParagraph() {
method moveToBeginningOfPreviousParagraph (line 482) | moveToBeginningOfPreviousParagraph() {
method getPreviousWordBoundaryBufferPosition (line 497) | getPreviousWordBoundaryBufferPosition(options = {}) {
method getNextWordBoundaryBufferPosition (line 535) | getNextWordBoundaryBufferPosition(options = {}) {
method getBeginningOfCurrentWordBufferPosition (line 572) | getBeginningOfCurrentWordBufferPosition(options = {}) {
method getEndOfCurrentWordBufferPosition (line 605) | getEndOfCurrentWordBufferPosition(options = {}) {
method getBeginningOfNextWordBufferPosition (line 633) | getBeginningOfNextWordBufferPosition(options = {}) {
method getCurrentWordBufferRange (line 658) | getCurrentWordBufferRange(options = {}) {
method getCurrentLineBufferRange (line 677) | getCurrentLineBufferRange(options) {
method getCurrentParagraphBufferRange (line 686) | getCurrentParagraphBufferRange() {
method getCurrentWordPrefix (line 691) | getCurrentWordPrefix() {
method compare (line 711) | compare(otherCursor) {
method clearSelection (line 720) | clearSelection(options) {
method wordRegExp (line 731) | wordRegExp(options) {
method subwordRegExp (line 747) | subwordRegExp(options = {}) {
method getNonWordCharacters (line 773) | getNonWordCharacters() {
method changePosition (line 777) | changePosition(options, fn) {
method getScreenRange (line 788) | getScreenRange() {
method autoscroll (line 793) | autoscroll(options = {}) {
method getBeginningOfNextParagraphBufferPosition (line 798) | getBeginningOfNextParagraphBufferPosition() {
method getBeginningOfPreviousParagraphBufferPosition (line 817) | getBeginningOfPreviousParagraphBufferPosition() {
FILE: src/decoration-manager.js
method constructor (line 6) | constructor(editor) {
method observeDecorations (line 19) | observeDecorations(callback) {
method onDidAddDecoration (line 27) | onDidAddDecoration(callback) {
method onDidRemoveDecoration (line 31) | onDidRemoveDecoration(callback) {
method onDidUpdateDecorations (line 35) | onDidUpdateDecorations(callback) {
method getDecorations (line 39) | getDecorations(propertyFilter) {
method getLineDecorations (line 57) | getLineDecorations(propertyFilter) {
method getLineNumberDecorations (line 63) | getLineNumberDecorations(propertyFilter) {
method getHighlightDecorations (line 69) | getHighlightDecorations(propertyFilter) {
method getOverlayDecorations (line 75) | getOverlayDecorations(propertyFilter) {
method decorationPropertiesByMarkerForScreenRowRange (line 93) | decorationPropertiesByMarkerForScreenRowRange(startScreenRow, endScreenR...
method decorationsForScreenRowRange (line 144) | decorationsForScreenRowRange(startScreenRow, endScreenRow) {
method decorationsStateForScreenRowRange (line 159) | decorationsStateForScreenRowRange(startScreenRow, endScreenRow) {
method decorateMarker (line 206) | decorateMarker(marker, decorationParams) {
method decorateMarkerLayer (line 240) | decorateMarkerLayer(markerLayer, decorationParams) {
method emitDidUpdateDecorations (line 257) | emitDidUpdateDecorations() {
method decorationDidChangeType (line 262) | decorationDidChangeType(decoration) {
method didDestroyMarkerDecoration (line 270) | didDestroyMarkerDecoration(decoration) {
method didDestroyLayerDecoration (line 283) | didDestroyLayerDecoration(decoration) {
method observeDecoratedLayer (line 297) | observeDecoratedLayer(layer, isMarkerDecoration) {
method unobserveDecoratedLayer (line 314) | unobserveDecoratedLayer(layer, isMarkerDecoration) {
FILE: src/decoration.js
method isType (line 56) | static isType(decorationProperties, type) {
method constructor (line 84) | constructor(marker, decorationManager, properties) {
method destroy (line 100) | destroy() {
method isDestroyed (line 112) | isDestroyed() {
method onDidChangeProperties (line 128) | onDidChangeProperties(callback) {
method onDidDestroy (line 137) | onDidDestroy(callback) {
method getId (line 146) | getId() {
method getMarker (line 151) | getMarker() {
method isType (line 162) | isType(type) {
method getProperties (line 171) | getProperties() {
method setProperties (line 184) | setProperties(newProperties) {
method inspect (line 204) | inspect() {
method matchesPattern (line 212) | matchesPattern(decorationPattern) {
method flash (line 225) | flash(klass, duration) {
FILE: src/default-directory-searcher.js
class DirectorySearch (line 5) | class DirectorySearch {
method constructor (line 6) | constructor(rootPaths, regex, options) {
method then (line 38) | then(...args) {
method cancel (line 42) | cancel() {
method canSearchDirectory (line 55) | canSearchDirectory(directory) {
method search (line 92) | search(directories, regex, options) {
FILE: src/deserializer-manager.js
method constructor (line 23) | constructor(atomEnvironment) {
method add (line 37) | add(...deserializers) {
method getDeserializerCount (line 51) | getDeserializerCount() {
method deserialize (line 58) | deserialize(state) {
method get (line 84) | get(state) {
method clear (line 96) | clear() {
FILE: src/dock.js
constant MINIMUM_SIZE (line 9) | const MINIMUM_SIZE = 100;
constant DEFAULT_INITIAL_SIZE (line 10) | const DEFAULT_INITIAL_SIZE = 300;
constant SHOULD_ANIMATE_CLASS (line 11) | const SHOULD_ANIMATE_CLASS = 'atom-dock-should-animate';
constant VISIBLE_CLASS (line 12) | const VISIBLE_CLASS = 'atom-dock-open';
constant RESIZE_HANDLE_RESIZABLE_CLASS (line 13) | const RESIZE_HANDLE_RESIZABLE_CLASS = 'atom-dock-resize-handle-resizable';
constant TOGGLE_BUTTON_VISIBLE_CLASS (line 14) | const TOGGLE_BUTTON_VISIBLE_CLASS = 'atom-dock-toggle-button-visible';
constant CURSOR_OVERLAY_VISIBLE_CLASS (line 15) | const CURSOR_OVERLAY_VISIBLE_CLASS = 'atom-dock-cursor-overlay-visible';
method constructor (line 22) | constructor(params) {
method elementAttached (line 85) | elementAttached() {
method getElement (line 90) | getElement() {
method getLocation (line 100) | getLocation() {
method destroy (line 104) | destroy() {
method setHovered (line 113) | setHovered(hovered) {
method setDraggingItem (line 118) | setDraggingItem(draggingItem) {
method activate (line 124) | activate() {
method show (line 129) | show() {
method hide (line 135) | hide() {
method toggle (line 141) | toggle() {
method isVisible (line 150) | isVisible() {
method setState (line 154) | setState(newState) {
method render (line 194) | render() {
method update (line 272) | update(props) {
method handleDidAddPaneItem (line 277) | handleDidAddPaneItem() {
method handleDidRemovePaneItem (line 283) | handleDidRemovePaneItem() {
method handleResizeHandleDragStart (line 290) | handleResizeHandleDragStart() {
method handleResizeToFit (line 296) | handleResizeToFit() {
method handleMouseMove (line 304) | handleMouseMove(event) {
method handleMouseUp (line 326) | handleMouseUp(event) {
method handleToggleButtonDragEnter (line 332) | handleToggleButtonDragEnter() {
method handleDrag (line 338) | handleDrag(event) {
method handleDragEnd (line 344) | handleDragEnd() {
method draggedOut (line 348) | draggedOut() {
method pointWithinHoverArea (line 360) | pointWithinHoverArea(point, detectingExit) {
method getInitialSize (line 437) | getInitialSize() {
method serialize (line 448) | serialize() {
method deserialize (line 457) | deserialize(serialized, deserializerManager) {
method onDidChangeVisible (line 480) | onDidChangeVisible(callback) {
method observeVisible (line 490) | observeVisible(callback) {
method observePaneItems (line 503) | observePaneItems(callback) {
method onDidChangeActivePaneItem (line 518) | onDidChangeActivePaneItem(callback) {
method onDidStopChangingActivePaneItem (line 536) | onDidStopChangingActivePaneItem(callback) {
method observeActivePaneItem (line 547) | observeActivePaneItem(callback) {
method onDidAddPane (line 558) | onDidAddPane(callback) {
method onWillDestroyPane (line 570) | onWillDestroyPane(callback) {
method onDidDestroyPane (line 581) | onDidDestroyPane(callback) {
method observePanes (line 593) | observePanes(callback) {
method onDidChangeActivePane (line 603) | onDidChangeActivePane(callback) {
method observeActivePane (line 615) | observeActivePane(callback) {
method onDidAddPaneItem (line 628) | onDidAddPaneItem(callback) {
method onWillDestroyPaneItem (line 643) | onWillDestroyPaneItem(callback) {
method onDidDestroyPaneItem (line 657) | onDidDestroyPaneItem(callback) {
method onDidChangeHovered (line 667) | onDidChangeHovered(callback) {
method getPaneItems (line 678) | getPaneItems() {
method getActivePaneItem (line 685) | getActivePaneItem() {
method getActiveTextEditor (line 693) | getActiveTextEditor() {
method saveAll (line 705) | saveAll() {
method confirmClose (line 709) | confirmClose(options) {
method getPanes (line 720) | getPanes() {
method getActivePane (line 727) | getActivePane() {
method activateNextPane (line 732) | activateNextPane() {
method activatePreviousPane (line 737) | activatePreviousPane() {
method paneForURI (line 741) | paneForURI(uri) {
method paneForItem (line 745) | paneForItem(item) {
method destroyActivePane (line 750) | destroyActivePane() {
class DockResizeHandle (line 758) | class DockResizeHandle {
method constructor (line 759) | constructor(props) {
method render (line 764) | render() {
method getElement (line 774) | getElement() {
method getSize (line 778) | getSize() {
method update (line 787) | update(newProps) {
method handleMouseDown (line 792) | handleMouseDown(event) {
class DockToggleButton (line 801) | class DockToggleButton {
method constructor (line 802) | constructor(props) {
method render (line 807) | render() {
method getElement (line 833) | getElement() {
method getBounds (line 837) | getBounds() {
method update (line 841) | update(newProps) {
method handleClick (line 846) | handleClick() {
class ElementComponent (line 853) | class ElementComponent {
method constructor (line 854) | constructor(props) {
method update (line 858) | update(props) {
function getWidthOrHeight (line 863) | function getWidthOrHeight(location) {
function getPreferredSize (line 867) | function getPreferredSize(item, location) {
function getIconName (line 881) | function getIconName(location, visible) {
function rectContainsPoint (line 894) | function rectContainsPoint(rect, point) {
function isItemAllowed (line 904) | function isItemAllowed(item, location) {
FILE: src/file-system-blob-store.js
method load (line 7) | static load(directory) {
method constructor (line 13) | constructor(directory) {
method reset (line 20) | reset() {
method load (line 27) | load() {
method save (line 43) | save() {
method has (line 67) | has(key) {
method get (line 73) | get(key) {
method set (line 80) | set(key, buffer) {
method delete (line 85) | delete(key) {
method getFromMemory (line 90) | getFromMemory(key) {
method getFromStorage (line 94) | getFromStorage(key) {
method getDump (line 105) | getDump() {
FILE: src/first-mate-helpers.js
method fromFirstMateScopeId (line 2) | fromFirstMateScopeId(firstMateScopeId) {
method toFirstMateScopeId (line 8) | toFirstMateScopeId(atomScopeId) {
FILE: src/git-repository-provider.js
constant GIT_FILE_REGEX (line 5) | const GIT_FILE_REGEX = RegExp('^gitdir: (.+)');
function pathFromGitFileSync (line 11) | function pathFromGitFileSync(gitFile) {
function pathFromGitFile (line 22) | function pathFromGitFile(gitFile) {
function findGitDirectorySync (line 40) | function findGitDirectorySync(directory) {
function findGitDirectory (line 70) | async function findGitDirectory(directory) {
function isValidGitDirectorySync (line 98) | function isValidGitDirectorySync(directory) {
function isValidGitDirectory (line 125) | async function isValidGitDirectory(directory) {
class GitRepositoryProvider (line 149) | class GitRepositoryProvider {
method constructor (line 150) | constructor(project, config) {
method repositoryForDirectory (line 161) | async repositoryForDirectory(directory) {
method repositoryForDirectorySync (line 172) | repositoryForDirectorySync(directory) {
method repositoryForGitDirectory (line 183) | repositoryForGitDirectory(gitDir) {
FILE: src/git-repository.js
method exists (line 42) | static exists(path) {
method open (line 64) | static open(path, options) {
method constructor (line 75) | constructor(path, options = {}) {
method destroy (line 121) | destroy() {
method isDestroyed (line 137) | isDestroyed() {
method onDidDestroy (line 147) | onDidDestroy(callback) {
method onDidChangeStatus (line 166) | onDidChangeStatus(callback) {
method onDidChangeStatuses (line 178) | onDidChangeStatuses(callback) {
method getType (line 190) | getType() {
method getPath (line 195) | getPath() {
method getWorkingDirectory (line 203) | getWorkingDirectory() {
method isProjectAtRoot (line 209) | isProjectAtRoot() {
method relativize (line 219) | relativize(path) {
method hasBranch (line 224) | hasBranch(branch) {
method getShortHead (line 238) | getShortHead(path) {
method isSubmodule (line 247) | isSubmodule(filePath) {
method getAheadBehindCount (line 268) | getAheadBehindCount(reference, path) {
method getCachedUpstreamAheadBehindCount (line 281) | getCachedUpstreamAheadBehindCount(path) {
method getConfigValue (line 290) | getConfigValue(key, path) {
method getOriginURL (line 298) | getOriginURL(path) {
method getUpstreamBranch (line 309) | getUpstreamBranch(path) {
method getReferences (line 322) | getReferences(path) {
method getReferenceTarget (line 331) | getReferenceTarget(reference, path) {
method isPathModified (line 344) | isPathModified(path) {
method isPathNew (line 353) | isPathNew(path) {
method isPathIgnored (line 362) | isPathIgnored(path) {
method getDirectoryStatus (line 372) | getDirectoryStatus(directoryPath) {
method getPathStatus (line 388) | getPathStatus(path) {
method getCachedPathStatus (line 411) | getCachedPathStatus(path) {
method isStatusModified (line 420) | isStatusModified(status) {
method isStatusNew (line 429) | isStatusNew(status) {
method getDiffStats (line 447) | getDiffStats(path) {
method getLineDiffs (line 463) | getLineDiffs(path, text) {
method checkoutHead (line 488) | checkoutHead(path) {
method checkoutReference (line 502) | checkoutReference(reference, create) {
method subscribeToBuffer (line 511) | subscribeToBuffer(buffer) {
method checkoutHeadForEditor (line 532) | checkoutHeadForEditor(editor) {
method getRepo (line 542) | getRepo(path) {
method refreshIndex (line 552) | refreshIndex() {
method refreshStatus (line 558) | async refreshStatus() {
FILE: src/grammar-registry.js
constant CSON (line 3) | const CSON = require('season');
constant PATH_SPLIT_REGEX (line 14) | const PATH_SPLIT_REGEX = new RegExp('[/.]');
method constructor (line 20) | constructor({ config } = {}) {
method clear (line 30) | clear() {
method serialize (line 55) | serialize() {
method deserialize (line 63) | deserialize(params) {
method createToken (line 72) | createToken(value, scopes) {
method maintainLanguageMode (line 84) | maintainLanguageMode(buffer) {
method assignLanguageMode (line 128) | assignLanguageMode(buffer, languageId) {
method assignGrammar (line 158) | assignGrammar(buffer, grammar) {
method getAssignedLanguageId (line 175) | getAssignedLanguageId(buffer) {
method autoAssignLanguageMode (line 184) | autoAssignLanguageMode(buffer) {
method languageModeForGrammarAndBuffer (line 198) | languageModeForGrammarAndBuffer(grammar, buffer) {
method selectGrammar (line 220) | selectGrammar(filePath, fileContents) {
method selectGrammarWithScore (line 224) | selectGrammarWithScore(filePath, fileContents) {
method getGrammarScore (line 239) | getGrammarScore(grammar, filePath, contents) {
method getGrammarPathScore (line 282) | getGrammarPathScore(grammar, filePath) {
method grammarMatchesPrefix (line 318) | grammarMatchesPrefix(grammar, contents) {
method forEachGrammar (line 352) | forEachGrammar(callback) {
method grammarForId (line 356) | grammarForId(languageId) {
method grammarOverrideForPath (line 376) | grammarOverrideForPath(filePath) {
method setGrammarOverrideForPath (line 388) | setGrammarOverrideForPath(filePath, languageId) {
method clearGrammarOverrideForPath (line 405) | clearGrammarOverrideForPath(filePath) {
method grammarAddedOrUpdated (line 411) | grammarAddedOrUpdated(grammar) {
method onDidAddGrammar (line 452) | onDidAddGrammar(callback) {
method onDidUpdateGrammar (line 463) | onDidUpdateGrammar(callback) {
method addInjectionPoint (line 477) | addInjectionPoint(grammarId, injectionPoint) {
method nullGrammar (line 496) | get nullGrammar() {
method grammars (line 500) | get grammars() {
method decodeTokens (line 504) | decodeTokens() {
method grammarForScopeName (line 511) | grammarForScopeName(scopeName) {
method addGrammar (line 515) | addGrammar(grammar) {
method removeGrammar (line 533) | removeGrammar(grammar) {
method removeGrammarForScopeName (line 541) | removeGrammarForScopeName(scopeName) {
method loadGrammar (line 551) | loadGrammar(grammarPath, callback) {
method loadGrammarSync (line 564) | loadGrammarSync(grammarPath) {
method readGrammar (line 578) | readGrammar(grammarPath, callback) {
method readGrammarSync (line 595) | readGrammarSync(grammarPath) {
method createGrammar (line 602) | createGrammar(grammarPath, params) {
method getGrammars (line 625) | getGrammars(params) {
method scopeForId (line 635) | scopeForId(id) {
method treeSitterGrammarForLanguageString (line 639) | treeSitterGrammarForLanguageString(languageString) {
method shouldUseTreeSitterParser (line 658) | shouldUseTreeSitterParser(languageId) {
function getGrammarSelectionContent (line 665) | function getGrammarSelectionContent(buffer) {
FILE: src/gutter-container.js
method constructor (line 5) | constructor(textEditor) {
method scheduleComponentUpdate (line 11) | scheduleComponentUpdate() {
method destroy (line 15) | destroy() {
method addGutter (line 28) | addGutter(options) {
method getGutters (line 59) | getGutters() {
method gutterWithName (line 63) | gutterWithName(name) {
method observeGutters (line 72) | observeGutters(callback) {
method onDidAddGutter (line 79) | onDidAddGutter(callback) {
method onDidRemoveGutter (line 83) | onDidRemoveGutter(callback) {
method removeGutter (line 93) | removeGutter(gutter) {
method addGutterDecoration (line 108) | addGutterDecoration(gutter, marker, options) {
FILE: src/gutter.js
method constructor (line 9) | constructor(gutterContainer, options) {
method destroy (line 30) | destroy() {
method onDidChangeVisible (line 50) | onDidChangeVisible(callback) {
method onDidDestroy (line 59) | onDidDestroy(callback) {
method hide (line 68) | hide() {
method show (line 77) | show() {
method isVisible (line 88) | isVisible() {
method decorateMarker (line 106) | decorateMarker(marker, options) {
method getElement (line 110) | getElement() {
FILE: src/history-manager.js
class HistoryManager (line 8) | class HistoryManager {
method constructor (line 9) | constructor({ project, commands, stateStore }) {
method destroy (line 26) | destroy() {
method getProjects (line 33) | getProjects() {
method clearProjects (line 44) | async clearProjects() {
method onDidChangeProjects (line 55) | onDidChangeProjects(callback) {
method didChangeProjects (line 59) | didChangeProjects(args = { reloaded: false }) {
method addProject (line 63) | async addProject(paths, lastOpened) {
method removeProject (line 78) | async removeProject(paths) {
method getProject (line 91) | getProject(paths) {
method loadState (line 101) | async loadState() {
method saveState (line 113) | async saveState() {
function arrayEquivalent (line 122) | function arrayEquivalent(a, b) {
class HistoryProject (line 130) | class HistoryProject {
method constructor (line 131) | constructor(paths, lastOpened) {
method paths (line 136) | set paths(paths) {
method paths (line 139) | get paths() {
method lastOpened (line 143) | set lastOpened(lastOpened) {
method lastOpened (line 146) | get lastOpened() {
FILE: src/initialize-benchmark-window.js
method get (line 29) | get() {
method set (line 32) | set(title) {
function exitWithStatusCode (line 126) | function exitWithStatusCode(statusCode) {
FILE: src/initialize-test-window.js
function cloneObject (line 4) | function cloneObject(object) {
FILE: src/item-registry.js
method constructor (line 2) | constructor() {
method addItem (line 6) | addItem(item) {
method removeItem (line 15) | removeItem(item) {
method hasItem (line 19) | hasItem(item) {
FILE: src/main-process/application-menu.js
method constructor (line 10) | constructor(version, autoUpdateManager) {
method update (line 26) | update(window, template, keystrokesByCommand) {
method setActiveTemplate (line 34) | setActiveTemplate(template) {
method addWindow (line 45) | addWindow(window) {
method flattenMenuItems (line 69) | flattenMenuItems(menu) {
method flattenMenuTemplate (line 86) | flattenMenuTemplate(template) {
method enableWindowSpecificItems (line 100) | enableWindowSpecificItems(enable) {
method substituteVersion (line 107) | substituteVersion(template) {
method showUpdateMenuItem (line 115) | showUpdateMenuItem(state) {
method getDefaultTemplate (line 164) | getDefaultTemplate() {
method focusedWindow (line 213) | focusedWindow() {
method translateTemplate (line 227) | translateTemplate(template, keystrokesByCommand) {
FILE: src/main-process/atom-application.js
constant APPLICATION_STATE_VERSION (line 40) | const APPLICATION_STATE_VERSION = '1';
method open (line 150) | static open(options) {
method exit (line 190) | exit(status) {
method constructor (line 194) | constructor(options) {
method initialize (line 254) | async initialize(options) {
method destroy (line 286) | async destroy() {
method launch (line 295) | async launch(options) {
method openWithOptions (line 345) | openWithOptions(options) {
method createWindow (line 432) | createWindow(settings) {
method removeWindow (line 437) | removeWindow(window) {
method addWindow (line 447) | addWindow(window) {
method getAllWindows (line 472) | getAllWindows() {
method getLastFocusedWindow (line 476) | getLastFocusedWindow(predicate) {
method listenForArgumentsFromNewProcess (line 485) | async listenForArgumentsFromNewProcess() {
method deleteSocketFile (line 516) | async deleteSocketFile() {
method deleteSocketSecretFile (line 536) | async deleteSocketSecretFile() {
method handleEvents (line 556) | handleEvents() {
method setupDockMenu (line 1065) | setupDockMenu() {
method initializeAtomHome (line 1078) | initializeAtomHome(configDirPath) {
method sendCommand (line 1091) | sendCommand(command, ...args) {
method sendCommandToWindow (line 1107) | sendCommandToWindow(command, atomWindow, ...args) {
method sendCommandToFirstResponder (line 1119) | sendCommandToFirstResponder(command) {
method openPathOnEvent (line 1154) | openPathOnEvent(eventName, pathToOpen) {
method windowForLocations (line 1166) | windowForLocations(locationsToOpen, devMode, safeMode) {
method atomWindowForEvent (line 1177) | atomWindowForEvent({ sender }) {
method atomWindowForBrowserWindow (line 1183) | atomWindowForBrowserWindow(browserWindow) {
method focusedWindow (line 1190) | focusedWindow() {
method getWindowOffsetForCurrentPlatform (line 1195) | getWindowOffsetForCurrentPlatform() {
method getDimensionsForNewWindow (line 1205) | getDimensionsForNewWindow() {
method openPath (line 1228) | openPath({
method openPaths (line 1266) | async openPaths({
method killAllProcesses (line 1437) | killAllProcesses() {
method killProcessesForWindow (line 1443) | killProcessesForWindow(window) {
method windowDidClosePathWithWaitSession (line 1452) | windowDidClosePathWithWaitSession(window, initialPath) {
method killProcess (line 1466) | killProcess(pid) {
method saveCurrentWindowOptions (line 1481) | async saveCurrentWindowOptions(allowEmpty = false) {
method loadPreviousWindowOptions (line 1503) | async loadPreviousWindowOptions() {
method openUrl (line 1562) | openUrl({ urlToOpen, devMode, safeMode, env }) {
method openPackageUriHandler (line 1587) | openPackageUriHandler(url, parsedUrl, devMode, safeMode, env) {
method findPackageWithName (line 1643) | findPackageWithName(packageName, devMode) {
method openPackageUrlMain (line 1649) | openPackageUrlMain(
method getPackageManager (line 1678) | getPackageManager(devMode) {
method runTests (line 1701) | runTests({
method runBenchmarks (line 1774) | runBenchmarks({
method resolveTestRunnerPath (line 1835) | resolveTestRunnerPath(testPath) {
method resolveLegacyTestRunnerPath (line 1869) | resolveLegacyTestRunnerPath() {
method parsePathToOpen (line 1881) | async parsePathToOpen(pathToOpen, executedFrom, extra) {
method promptForPathToOpen (line 1955) | promptForPathToOpen(type, { devMode, safeMode, window }, path = null) {
method promptForPath (line 1990) | promptForPath(type, callback, path) {
method promptForRestart (line 2034) | async promptForRestart() {
method restart (line 2048) | restart() {
method disableZoomOnDisplayChange (line 2062) | disableZoomOnDisplayChange() {
class WindowStack (line 2079) | class WindowStack {
method constructor (line 2080) | constructor(windows = []) {
method addWindow (line 2089) | addWindow(window) {
method touch (line 2094) | touch(window) {
method removeWindow (line 2098) | removeWindow(window) {
method getLastFocusedWindow (line 2105) | getLastFocusedWindow(predicate) {
method all (line 2112) | all() {
FILE: src/main-process/atom-protocol-handler.js
method constructor (line 17) | constructor(resourcePath, safeMode) {
method registerAtomProtocol (line 32) | registerAtomProtocol() {
FILE: src/main-process/atom-window.js
constant ICON_PATH (line 14) | const ICON_PATH = path.resolve(__dirname, '..', '..', 'resources', 'atom...
method constructor (line 20) | constructor(atomApplication, fileRecoveryService, settings = {}) {
method hasProjectPaths (line 177) | hasProjectPaths() {
method setupContextMenu (line 181) | setupContextMenu() {
method containsLocations (line 189) | containsLocations(locations) {
method containsLocation (line 193) | containsLocation(location) {
method handleEvents (line 206) | handleEvents() {
method prepareToUnload (line 278) | async prepareToUnload() {
method openPath (line 301) | openPath(pathToOpen, initialLine, initialColumn) {
method openLocations (line 305) | async openLocations(locationsToOpen) {
method didChangeUserSettings (line 311) | didChangeUserSettings(settings) {
method didFailToReadUserSettings (line 315) | didFailToReadUserSettings(message) {
method addLocationsToOpen (line 319) | addLocationsToOpen(locationsToOpen) {
method replaceEnvironment (line 331) | replaceEnvironment(env) {
method sendMessage (line 347) | sendMessage(message, detail) {
method sendCommand (line 351) | sendCommand(command, ...args) {
method sendURIMessage (line 370) | sendURIMessage(uri) {
method sendCommandToBrowserWindow (line 374) | sendCommandToBrowserWindow(command, ...args) {
method getDimensions (line 380) | getDimensions() {
method getSimpleFullscreen (line 386) | getSimpleFullscreen() {
method shouldAddCustomTitleBar (line 390) | shouldAddCustomTitleBar() {
method shouldAddCustomInsetTitleBar (line 398) | shouldAddCustomInsetTitleBar() {
method shouldHideTitleBar (line 406) | shouldHideTitleBar() {
method close (line 413) | close() {
method focus (line 417) | focus() {
method minimize (line 421) | minimize() {
method maximize (line 425) | maximize() {
method unmaximize (line 429) | unmaximize() {
method restore (line 433) | restore() {
method setFullScreen (line 437) | setFullScreen(fullScreen) {
method setAutoHideMenuBar (line 441) | setAutoHideMenuBar(autoHideMenuBar) {
method handlesAtomCommands (line 445) | handlesAtomCommands() {
method isFocused (line 449) | isFocused() {
method isMaximized (line 453) | isMaximized() {
method isMinimized (line 457) | isMinimized() {
method isWebViewFocused (line 461) | isWebViewFocused() {
method isSpecWindow (line 465) | isSpecWindow() {
method reload (line 469) | reload() {
method showSaveDialog (line 479) | showSaveDialog(options, callback) {
method toggleDevTools (line 497) | toggleDevTools() {
method openDevTools (line 501) | openDevTools() {
method closeDevTools (line 505) | closeDevTools() {
method setDocumentEdited (line 509) | setDocumentEdited(documentEdited) {
method setRepresentedFilename (line 513) | setRepresentedFilename(representedFilename) {
method setProjectRoots (line 517) | setProjectRoots(projectRootPaths) {
method didClosePathWithWaitSession (line 524) | didClosePathWithWaitSession(path) {
method copy (line 528) | copy() {
method disableZoom (line 532) | disableZoom() {
method getLoadedPromise (line 536) | getLoadedPromise() {
FILE: src/main-process/auto-update-manager.js
method constructor (line 16) | constructor(version, testMode, config) {
method initialize (line 35) | initialize() {
method emitUpdateAvailableEvent (line 109) | emitUpdateAvailableEvent() {
method emitWindowEvent (line 116) | emitWindowEvent(eventName, payload) {
method setState (line 122) | setState(state, errorMessage) {
method getState (line 129) | getState() {
method getErrorMessage (line 133) | getErrorMessage() {
method scheduleUpdateCheck (line 137) | scheduleUpdateCheck() {
method cancelScheduledUpdateCheck (line 148) | cancelScheduledUpdateCheck() {
method check (line 155) | check({ hidePopups } = {}) {
method install (line 164) | install() {
method onUpdateNotAvailable (line 168) | onUpdateNotAvailable() {
method onUpdateError (line 181) | onUpdateError(event, message) {
method getWindows (line 197) | getWindows() {
FILE: src/main-process/auto-updater-win32.js
class AutoUpdater (line 4) | class AutoUpdater extends EventEmitter {
method setFeedURL (line 5) | setFeedURL(updateUrl) {
method quitAndInstall (line 9) | quitAndInstall() {
method downloadUpdate (line 17) | downloadUpdate(callback) {
method installUpdate (line 43) | installUpdate(callback) {
method supportsUpdates (line 47) | supportsUpdates() {
method checkForUpdates (line 51) | checkForUpdates() {
FILE: src/main-process/context-menu.js
method constructor (line 4) | constructor(template, atomWindow) {
method createClickHandlers (line 14) | createClickHandlers(template) {
FILE: src/main-process/file-recovery-service.js
method constructor (line 8) | constructor(recoveryDirectory) {
method willSavePath (line 15) | async willSavePath(window, path) {
method didSavePath (line 50) | async didSavePath(window, path) {
method didCrashWindow (line 68) | async didCrashWindow(window) {
method didCloseWindow (line 106) | didCloseWindow(window) {
class RecoveryFile (line 116) | class RecoveryFile {
method fileNameForPath (line 117) | static fileNameForPath(path) {
method constructor (line 124) | constructor(originalPath, fileMode, recoveryPath) {
method store (line 131) | async store() {
method recover (line 135) | async recover() {
method remove (line 140) | async remove() {
method retain (line 148) | async retain() {
method release (line 153) | async release() {
method isReleased (line 158) | isReleased() {
function tryStatFile (line 163) | async function tryStatFile(path) {
function copyFile (line 169) | async function copyFile(source, destination, mode) {
FILE: src/main-process/main.js
constant CSON (line 11) | const CSON = require('season');
function isAtomRepoPath (line 27) | function isAtomRepoPath(repoPath) {
FILE: src/main-process/start.js
constant CSON (line 10) | const CSON = require('season');
function addPathToOpen (line 91) | function addPathToOpen(event, pathToOpen) {
function addUrlToOpen (line 96) | function addUrlToOpen(event, urlToOpen) {
function handleStartupEventWithSquirrel (line 131) | function handleStartupEventWithSquirrel() {
function getConfig (line 141) | function getConfig() {
function normalizeDriveLetterName (line 159) | function normalizeDriveLetterName(filePath) {
FILE: src/main-process/win-shell.js
class ShellOption (line 16) | class ShellOption {
method constructor (line 17) | constructor(key, parts) {
method isRegistered (line 26) | isRegistered(callback) {
method register (line 35) | register(callback) {
method deregister (line 50) | deregister(callback) {
method update (line 62) | update(callback) {
FILE: src/menu-helpers.js
function addItemToMenu (line 6) | function addItemToMenu(item, menu) {
function merge (line 15) | function merge(menu, item, itemSpecificity = Infinity) {
function unmerge (line 38) | function unmerge(menu, item) {
function findMatchingItemIndex (line 57) | function findMatchingItemIndex(menu, { type, id, submenu }) {
function normalizeLabel (line 70) | function normalizeLabel(label) {
function cloneMenuItem (line 77) | function cloneMenuItem(item) {
function acceleratorForKeystroke (line 110) | function acceleratorForKeystroke(keystroke) {
FILE: src/menu-sort-helpers.js
function splitArray (line 3) | function splitArray(arr, predicate) {
function joinArrays (line 19) | function joinArrays(arrays, joiner) {
function indexOfGroupContainingCommand (line 37) | function indexOfGroupContainingCommand(groups, command, ignoreGroup) {
function sortTopologically (line 47) | function sortTopologically(originalOrder, edgesById) {
function attemptToMergeAGroup (line 69) | function attemptToMergeAGroup(groups) {
function mergeGroups (line 93) | function mergeGroups(groups) {
function sortItemsInGroup (line 101) | function sortItemsInGroup(group) {
function findEdgesInGroup (line 130) | function findEdgesInGroup(groups, i, edges) {
function sortGroups (line 154) | function sortGroups(groups) {
function isSeparator (line 166) | function isSeparator(item) {
function sortMenuItems (line 170) | function sortMenuItems(menuItems) {
FILE: src/module-cache.js
class Range (line 6) | class Range extends semver.Range {
method constructor (line 7) | constructor() {
method test (line 13) | test(version) {
function loadDependencies (line 56) | function loadDependencies(modulePath, rootPath, rootMetadata, moduleCach...
function loadFolderCompatibility (line 96) | function loadFolderCompatibility(
function loadExtensions (line 149) | function loadExtensions(modulePath, rootPath, rootMetadata, moduleCache) {
function satisfies (line 199) | function satisfies(version, rawRange) {
function resolveFilePath (line 208) | function resolveFilePath(relativePath, parentModule) {
function resolveModulePath (line 237) | function resolveModulePath(relativePath, parentModule) {
function registerBuiltins (line 270) | function registerBuiltins(devMode) {
FILE: src/module-utils.js
function requireModule (line 2) | function requireModule(path) {
FILE: src/native-compile-cache.js
function computeHash (line 6) | function computeHash(contents) {
class NativeCompileCache (line 13) | class NativeCompileCache {
method constructor (line 14) | constructor() {
method setCacheStore (line 19) | setCacheStore(store) {
method setV8Version (line 23) | setV8Version(v8Version) {
method install (line 27) | install() {
method uninstall (line 32) | uninstall() {
method savePreviousModuleCompile (line 36) | savePreviousModuleCompile() {
method runInThisContext (line 40) | runInThisContext(code, filename) {
method runInThisContextCached (line 49) | runInThisContextCached(code, filename, cachedData) {
method overrideModuleCompile (line 57) | overrideModuleCompile() {
method restorePreviousModuleCompile (line 124) | restorePreviousModuleCompile() {
FILE: src/native-watcher-registry.js
function absolute (line 4) | function absolute(...parts) {
class RegistryTree (line 20) | class RegistryTree {
method constructor (line 27) | constructor(basePathSegments, createNative) {
method add (line 39) | add(pathSegments, attachToNative) {
method getRoot (line 89) | getRoot() {
method print (line 94) | print() {
class RegistryNode (line 102) | class RegistryNode {
method constructor (line 104) | constructor() {
method lookup (line 115) | lookup(pathSegments) {
method insert (line 136) | insert(pathSegments, leaf) {
method remove (line 158) | remove(pathSegments, createSplitNative) {
method leaves (line 190) | leaves(prefix) {
method print (line 199) | print(indent = 0) {
class RegistryWatcherNode (line 215) | class RegistryWatcherNode {
method constructor (line 224) | constructor(nativeWatcher, absolutePathSegments, childPaths) {
method addChildPath (line 240) | addChildPath(childPathSegments) {
method removeChildPath (line 249) | removeChildPath(childPathSegments) {
method getNativeWatcher (line 254) | getNativeWatcher() {
method getAbsolutePathSegments (line 259) | getAbsolutePathSegments() {
method lookup (line 268) | lookup(pathSegments) {
method remove (line 283) | remove(pathSegments, createSplitNative) {
method leaves (line 310) | leaves(prefix) {
method print (line 316) | print(indent = 0) {
class MissingResult (line 333) | class MissingResult {
method constructor (line 337) | constructor(lastParent) {
method when (line 348) | when(actions) {
class ParentResult (line 355) | class ParentResult {
method constructor (line 361) | constructor(parent, remainingPathSegments) {
method when (line 374) | when(actions) {
class ChildrenResult (line 381) | class ChildrenResult {
method constructor (line 385) | constructor(children) {
method when (line 396) | when(actions) {
class NativeWatcherRegistry (line 408) | class NativeWatcherRegistry {
method constructor (line 413) | constructor(createNative) {
method attach (line 427) | async attach(watcher) {
method print (line 442) | print() {
FILE: src/notification-manager.js
method constructor (line 10) | constructor() {
method onDidAddNotification (line 25) | onDidAddNotification(callback) {
method onDidClearNotifications (line 34) | onDidClearNotifications(callback) {
method addSuccess (line 66) | addSuccess(message, options) {
method addInfo (line 94) | addInfo(message, options) {
method addWarning (line 122) | addWarning(message, options) {
method addError (line 153) | addError(message, options) {
method addFatalError (line 184) | addFatalError(message, options) {
method add (line 188) | add(type, message, options) {
method addNotification (line 192) | addNotification(notification) {
method getNotifications (line 205) | getNotifications() {
method clear (line 214) | clear() {
FILE: src/notification.js
method constructor (line 6) | constructor(type, message, options = {}) {
method validate (line 18) | validate() {
method onDidDismiss (line 41) | onDidDismiss(callback) {
method onDidDisplay (line 50) | onDidDisplay(callback) {
method getOptions (line 54) | getOptions() {
method getType (line 63) | getType() {
method getMessage (line 68) | getMessage() {
method getTimestamp (line 72) | getTimestamp() {
method getDetail (line 76) | getDetail() {
method isEqual (line 80) | isEqual(other) {
method dismiss (line 90) | dismiss() {
method isDismissed (line 96) | isDismissed() {
method isDismissable (line 100) | isDismissable() {
method wasDisplayed (line 104) | wasDisplayed() {
method setDisplayed (line 108) | setDisplayed(displayed) {
method getIcon (line 113) | getIcon() {
FILE: src/null-grammar.js
method scopeForId (line 6) | scopeForId(id) {
method startIdForScope (line 13) | startIdForScope(scopeName) {
method endIdForScope (line 20) | endIdForScope(scopeName) {
method tokenizeLine (line 27) | tokenizeLine(text) {
method onDidUpdate (line 37) | onDidUpdate(callback) {
function noop (line 42) | function noop() {}
FILE: src/package-manager.js
constant CSON (line 7) | const CSON = require('season');
method constructor (line 31) | constructor(params) {
method initialize (line 70) | initialize(params) {
method setContextMenuManager (line 84) | setContextMenuManager(contextMenuManager) {
method setMenuManager (line 88) | setMenuManager(menuManager) {
method setThemeManager (line 92) | setThemeManager(themeManager) {
method reset (line 96) | async reset() {
method onDidLoadInitialPackages (line 121) | onDidLoadInitialPackages(callback) {
method onDidActivateInitialPackages (line 130) | onDidActivateInitialPackages(callback) {
method getActivatePromise (line 134) | getActivatePromise() {
method onDidActivatePackage (line 148) | onDidActivatePackage(callback) {
method onDidDeactivatePackage (line 158) | onDidDeactivatePackage(callback) {
method onDidLoadPackage (line 168) | onDidLoadPackage(callback) {
method onDidUnloadPackage (line 178) | onDidUnloadPackage(callback) {
method getApmPath (line 191) | getApmPath() {
method getPackageDirPaths (line 215) | getPackageDirPaths() {
method resolvePackagePath (line 228) | resolvePackagePath(name) {
method isBundledPackage (line 251) | isBundledPackage(name) {
method isDeprecatedPackage (line 255) | isDeprecatedPackage(name, version) {
method getDeprecatedPackageMetadata (line 272) | getDeprecatedPackageMetadata(name) {
method enablePackage (line 287) | enablePackage(name) {
method disablePackage (line 300) | disablePackage(name) {
method isPackageDisabled (line 313) | isPackageDisabled(name) {
method getActivePackages (line 322) | getActivePackages() {
method getActivePackage (line 331) | getActivePackage(name) {
method isPackageActive (line 340) | isPackageActive(name) {
method hasActivatedInitialPackages (line 345) | hasActivatedInitialPackages() {
method getLoadedPackages (line 354) | getLoadedPackages() {
method getLoadedPackagesForTypes (line 361) | getLoadedPackagesForTypes(types) {
method getLoadedPackage (line 370) | getLoadedPackage(name) {
method isPackageLoaded (line 379) | isPackageLoaded(name) {
method hasLoadedInitialPackages (line 384) | hasLoadedInitialPackages() {
method getAvailablePackagePaths (line 393) | getAvailablePackagePaths() {
method getAvailablePackageNames (line 398) | getAvailablePackageNames() {
method getAvailablePackageMetadata (line 403) | getAvailablePackageMetadata() {
method getAvailablePackages (line 416) | getAvailablePackages() {
method getPackageState (line 468) | getPackageState(name) {
method setPackageState (line 472) | setPackageState(name, state) {
method getPackageDependencies (line 476) | getPackageDependencies() {
method hasAtomEngine (line 480) | hasAtomEngine(packagePath) {
method unobserveDisabledPackages (line 489) | unobserveDisabledPackages() {
method observeDisabledPackages (line 496) | observeDisabledPackages() {
method unobservePackagesWithKeymapsDisabled (line 515) | unobservePackagesWithKeymapsDisabled() {
method observePackagesWithKeymapsDisabled (line 522) | observePackagesWithKeymapsDisabled() {
method preloadPackages (line 566) | preloadPackages() {
method preloadPackage (line 576) | preloadPackage(packageName, pack) {
method loadPackages (line 619) | loadPackages() {
method loadPackage (line 636) | loadPackage(nameOrPath) {
method loadAvailablePackage (line 661) | loadAvailablePackage(availablePackage, disabledPackageNames) {
method unloadPackages (line 739) | unloadPackages() {
method unloadPackage (line 743) | unloadPackage(name) {
method activate (line 758) | activate() {
method registerURIHandlerForPackage (line 773) | registerURIHandlerForPackage(packageName, handler) {
method registerPackageActivator (line 779) | registerPackageActivator(activator, types) {
method activatePackages (line 783) | activatePackages(packages) {
method activatePackage (line 800) | activatePackage(name) {
method triggerDeferredActivationHooks (line 830) | triggerDeferredActivationHooks() {
method triggerActivationHook (line 842) | triggerActivationHook(hook) {
method onDidTriggerActivationHook (line 855) | onDidTriggerActivationHook(hook, callback) {
method serialize (line 862) | serialize() {
method serializePackage (line 869) | serializePackage(pack) {
method deactivatePackages (line 876) | async deactivatePackages() {
method deactivatePackage (line 889) | async deactivatePackage(name, suppressSerialization) {
method handleMetadataError (line 909) | handleMetadataError(error, packagePath) {
method uninstallDirectory (line 922) | uninstallDirectory(directory) {
method reloadActivePackageStyleSheets (line 938) | reloadActivePackageStyleSheets() {
method isBundledPackagePath (line 949) | isBundledPackagePath(packagePath) {
method loadPackageMetadata (line 967) | loadPackageMetadata(packagePathOrAvailablePackage, ignoreErrors = false) {
method normalizePackageMetadata (line 1021) | normalizePackageMetadata(metadata) {
method test (line 1031) | test() {
FILE: src/package-transpilation-registry.js
class PackageTranspilationRegistry (line 14) | class PackageTranspilationRegistry {
method constructor (line 15) | constructor() {
method addTranspilerConfigForPath (line 21) | addTranspilerConfigForPath(packagePath, packageName, packageMeta, conf...
method removeTranspilerConfigForPath (line 30) | removeTranspilerConfigForPath(packagePath) {
method wrapTranspiler (line 45) | wrapTranspiler(transpiler) {
method getPackageTranspilerSpecForFilePath (line 83) | getPackageTranspilerSpecForFilePath(filePath) {
method getCachePath (line 122) | getCachePath(sourceCode, filePath, spec) {
method transpileWithPackageTranspiler (line 153) | transpileWithPackageTranspiler(sourceCode, filePath, spec) {
method getMetadata (line 186) | getMetadata(spec) {
method getTranspilerPath (line 194) | getTranspilerPath(spec) {
method getTranspiler (line 202) | getTranspiler(spec) {
FILE: src/package.js
constant CSON (line 3) | const CSON = require('season');
method constructor (line 20) | constructor(params) {
method onDidDeactivate (line 60) | onDidDeactivate(callback) {
method enable (line 68) | enable() {
method disable (line 72) | disable() {
method isTheme (line 76) | isTheme() {
method measure (line 80) | measure(key, fn) {
method getType (line 87) | getType() {
method getStyleSheetPriority (line 91) | getStyleSheetPriority() {
method preload (line 95) | preload() {
method finishLoading (line 114) | finishLoading() {
method load (line 126) | load() {
method unload (line 150) | unload() {
method shouldRequireMainModuleOnLoad (line 154) | shouldRequireMainModuleOnLoad() {
method reset (line 165) | reset() {
method initializeIfNeeded (line 176) | initializeIfNeeded() {
method activate (line 200) | activate() {
method activateNow (line 230) | activateNow() {
method registerConfigSchemaFromMetadata (line 263) | registerConfigSchemaFromMetadata() {
method registerConfigSchemaFromMainModule (line 276) | registerConfigSchemaFromMainModule() {
method activateConfig (line 290) | activateConfig() {
method activateStylesheets (line 296) | activateStylesheets() {
method activateResources (line 325) | activateResources() {
method activateKeymaps (line 360) | activateKeymaps() {
method deactivateKeymaps (line 376) | deactivateKeymaps() {
method hasKeymaps (line 385) | hasKeymaps() {
method activateMenus (line 392) | activateMenus() {
method activateServices (line 419) | activateServices() {
method registerURIHandler (line 452) | registerURIHandler() {
method unregisterURIHandler (line 463) | unregisterURIHandler() {
method handleURI (line 467) | handleURI(methodName, args) {
method registerTranspilerConfig (line 475) | registerTranspilerConfig() {
method unregisterTranspilerConfig (line 486) | unregisterTranspilerConfig() {
method loadKeymaps (line 492) | loadKeymaps() {
method loadMenus (line 509) | loadMenus() {
method getKeymapPaths (line 527) | getKeymapPaths() {
method getMenuPaths (line 538) | getMenuPaths() {
method loadStylesheets (line 549) | loadStylesheets() {
method registerDeserializerMethods (line 556) | registerDeserializerMethods() {
method activateCoreStartupServices (line 586) | activateCoreStartupServices() {
method registerViewProviders (line 606) | registerViewProviders() {
method getStylesheetsPath (line 619) | getStylesheetsPath() {
method getStylesheetPaths (line 623) | getStylesheetPaths() {
method loadGrammarsSync (line 652) | loadGrammarsSync() {
method loadGrammars (line 694) | loadGrammars() {
method loadSettings (line 743) | loadSettings() {
method serialize (line 789) | serialize() {
method deactivate (line 804) | async deactivate() {
method deactivateResources (line 848) | deactivateResources() {
method reloadStylesheets (line 866) | reloadStylesheets() {
method requireMainModule (line 882) | requireMainModule() {
method getMainModulePath (line 930) | getMainModulePath() {
method activationShouldBeDeferred (line 956) | activationShouldBeDeferred() {
method hasActivationHooks (line 966) | hasActivationHooks() {
method hasWorkspaceOpeners (line 971) | hasWorkspaceOpeners() {
method hasActivationCommands (line 976) | hasActivationCommands() {
method hasDeferredURIHandler (line 985) | hasDeferredURIHandler() {
method subscribeToDeferredActivation (line 990) | subscribeToDeferredActivation() {
method subscribeToActivationCommands (line 996) | subscribeToActivationCommands() {
method getActivationCommands (line 1037) | getActivationCommands() {
method subscribeToActivationHooks (line 1058) | subscribeToActivationHooks() {
method getActivationHooks (line 1071) | getActivationHooks() {
method subscribeToWorkspaceOpeners (line 1091) | subscribeToWorkspaceOpeners() {
method getWorkspaceOpeners (line 1106) | getWorkspaceOpeners() {
method getURIHandler (line 1126) | getURIHandler() {
method isNativeModule (line 1131) | isNativeModule(modulePath) {
method getModulePathNodeFiles (line 1140) | getModulePathNodeFiles(modulePath) {
method getNativeModuleDependencyPathsMap (line 1157) | getNativeModuleDependencyPathsMap() {
method getNativeModuleDependencyPaths (line 1199) | getNativeModuleDependencyPaths() {
method isCompatible (line 1213) | isCompatible() {
method rebuild (line 1235) | rebuild() {
method getBuildFailureOutput (line 1261) | getBuildFailureOutput() {
method runRebuildProcess (line 1265) | runRebuildProcess(done) {
method getBuildFailureOutputStorageKey (line 1284) | getBuildFailureOutputStorageKey() {
method getIncompatibleNativeModulesStorageKey (line 1290) | getIncompatibleNativeModulesStorageKey() {
method getCanDeferMainModuleRequireStorageKey (line 1297) | getCanDeferMainModuleRequireStorageKey() {
method getIncompatibleNativeModules (line 1308) | getIncompatibleNativeModules() {
method handleError (line 1348) | handleError(message, error) {
class SettingsFile (line 1380) | class SettingsFile {
method load (line 1381) | static load(path, callback) {
method constructor (line 1391) | constructor(path, properties) {
method activate (line 1396) | activate(config) {
method deactivate (line 1405) | deactivate(config) {
FILE: src/pane-axis-element.js
class PaneAxisElement (line 4) | class PaneAxisElement extends HTMLElement {
method connectedCallback (line 5) | connectedCallback() {
method disconnectedCallback (line 14) | disconnectedCallback() {
method initialize (line 20) | initialize(model, viewRegistry) {
method subscribeToModel (line 43) | subscribeToModel() {
method isPaneResizeHandleElement (line 58) | isPaneResizeHandleElement(element) {
method childAdded (line 65) | childAdded({ child, index }) {
method childRemoved (line 85) | childRemoved({ child }) {
method childReplaced (line 95) | childReplaced({ index, oldChild, newChild }) {
method flexScaleChanged (line 107) | flexScaleChanged(flexScale) {
method hasFocus (line 111) | hasFocus() {
function createPaneAxisElement (line 120) | function createPaneAxisElement() {
FILE: src/pane-axis.js
class PaneAxis (line 6) | class PaneAxis extends Model {
method deserialize (line 7) | static deserialize(state, { deserializers, views }) {
method constructor (line 14) | constructor({ orientation, children, flexScale }, viewRegistry) {
method serialize (line 32) | serialize() {
method getElement (line 41) | getElement() {
method getFlexScale (line 51) | getFlexScale() {
method setFlexScale (line 55) | setFlexScale(flexScale) {
method getParent (line 61) | getParent() {
method setParent (line 65) | setParent(parent) {
method getContainer (line 70) | getContainer() {
method setContainer (line 74) | setContainer(container) {
method getOrientation (line 81) | getOrientation() {
method getChildren (line 85) | getChildren() {
method getPanes (line 89) | getPanes() {
method getItems (line 93) | getItems() {
method onDidAddChild (line 97) | onDidAddChild(fn) {
method onDidRemoveChild (line 101) | onDidRemoveChild(fn) {
method onDidReplaceChild (line 105) | onDidReplaceChild(fn) {
method onDidDestroy (line 109) | onDidDestroy(fn) {
method onDidChangeFlexScale (line 113) | onDidChangeFlexScale(fn) {
method observeFlexScale (line 117) | observeFlexScale(fn) {
method addChild (line 122) | addChild(child, index = this.children.length) {
method adjustFlexScale (line 130) | adjustFlexScale() {
method removeChild (line 144) | removeChild(child, replacing = false) {
method replaceChild (line 160) | replaceChild(oldChild, newChild) {
method insertChildBefore (line 172) | insertChildBefore(currentChild, newChild) {
method insertChildAfter (line 177) | insertChildAfter(currentChild, newChild) {
method reparentLastChild (line 182) | reparentLastChild() {
method subscribeToChild (line 189) | subscribeToChild(child) {
method unsubscribeFromChild (line 195) | unsubscribeFromChild(child) {
method destroyed (line 201) | destroyed() {
FILE: src/pane-container-element.js
class PaneContainerElement (line 3) | class PaneContainerElement extends HTMLElement {
method constructor (line 4) | constructor() {
method initialize (line 9) | initialize(model, { views }) {
method connectedCallback (line 21) | connectedCallback() {
method rootChanged (line 25) | rootChanged(root) {
method hasFocus (line 39) | hasFocus() {
function createPaneContainerElement (line 48) | function createPaneContainerElement() {
FILE: src/pane-container.js
constant SERIALIZATION_VERSION (line 7) | const SERIALIZATION_VERSION = 1;
constant STOPPED_CHANGING_ACTIVE_PANE_ITEM_DELAY (line 8) | const STOPPED_CHANGING_ACTIVE_PANE_ITEM_DELAY = 100;
method constructor (line 11) | constructor(params) {
method getLocation (line 40) | getLocation() {
method getElement (line 44) | getElement() {
method destroy (line 52) | destroy() {
method isAlive (line 62) | isAlive() {
method isDestroyed (line 66) | isDestroyed() {
method serialize (line 70) | serialize(params) {
method deserialize (line 79) | deserialize(state, deserializerManager) {
method onDidChangeRoot (line 89) | onDidChangeRoot(fn) {
method observeRoot (line 93) | observeRoot(fn) {
method onDidAddPane (line 98) | onDidAddPane(fn) {
method observePanes (line 102) | observePanes(fn) {
method onDidDestroyPane (line 109) | onDidDestroyPane(fn) {
method onWillDestroyPane (line 113) | onWillDestroyPane(fn) {
method onDidChangeActivePane (line 117) | onDidChangeActivePane(fn) {
method onDidActivatePane (line 121) | onDidActivatePane(fn) {
method observeActivePane (line 125) | observeActivePane(fn) {
method onDidAddPaneItem (line 130) | onDidAddPaneItem(fn) {
method observePaneItems (line 134) | observePaneItems(fn) {
method onDidChangeActivePaneItem (line 141) | onDidChangeActivePaneItem(fn) {
method onDidStopChangingActivePaneItem (line 145) | onDidStopChangingActivePaneItem(fn) {
method observeActivePaneItem (line 149) | observeActivePaneItem(fn) {
method onWillDestroyPaneItem (line 154) | onWillDestroyPaneItem(fn) {
method onDidDestroyPaneItem (line 158) | onDidDestroyPaneItem(fn) {
method getRoot (line 162) | getRoot() {
method setRoot (line 166) | setRoot(root) {
method replaceChild (line 176) | replaceChild(oldChild, newChild) {
method getPanes (line 183) | getPanes() {
method getPaneItems (line 191) | getPaneItems() {
method getActivePane (line 195) | getActivePane() {
method getActivePaneItem (line 199) | getActivePaneItem() {
method paneForURI (line 203) | paneForURI(uri) {
method paneForItem (line 207) | paneForItem(item) {
method saveAll (line 211) | saveAll() {
method confirmClose (line 217) | confirmClose(options) {
method activateNextPane (line 227) | activateNextPane() {
method activatePreviousPane (line 239) | activatePreviousPane() {
method moveActiveItemToPane (line 254) | moveActiveItemToPane(destPane) {
method copyActiveItemToPane (line 265) | copyActiveItemToPane(destPane) {
method destroyEmptyPanes (line 273) | destroyEmptyPanes() {
method didAddPane (line 281) | didAddPane(event) {
method willDestroyPane (line 290) | willDestroyPane(event) {
method didDestroyPane (line 294) | didDestroyPane(event) {
method didActivatePane (line 298) | didActivatePane(activePane) {
method didAddPaneItem (line 317) | didAddPaneItem(item, pane, index) {
method willDestroyPaneItem (line 322) | willDestroyPaneItem(event) {
method didDestroyPaneItem (line 326) | didDestroyPaneItem(event) {
method didChangeActiveItemOnPane (line 331) | didChangeActiveItemOnPane(pane, activeItem) {
method cancelStoppedChangingActivePaneItemTimeout (line 346) | cancelStoppedChangingActivePaneItemTimeout() {
FILE: src/pane-element.js
class PaneElement (line 4) | class PaneElement extends HTMLElement {
method constructor (line 5) | constructor() {
method connectedCallback (line 14) | connectedCallback() {
method detachedCallback (line 22) | detachedCallback() {
method initializeContent (line 26) | initializeContent() {
method subscribeToDOMEvents (line 33) | subscribeToDOMEvents() {
method initialize (line 75) | initialize(model, { views, applicationDelegate }) {
method getModel (line 108) | getModel() {
method activated (line 112) | activated() {
method activeStatusChanged (line 121) | activeStatusChanged(active) {
method activeItemChanged (line 129) | activeItemChanged(item) {
method showItemView (line 170) | showItemView(itemView) {
method hideItemView (line 179) | hideItemView(itemView) {
method itemRemoved (line 189) | itemRemoved({ item, index, destroyed }) {
method paneDestroyed (line 196) | paneDestroyed() {
method flexScaleChanged (line 203) | flexScaleChanged(flexScale) {
method getActiveView (line 207) | getActiveView() {
method hasFocus (line 211) | hasFocus() {
function createPaneElement (line 218) | function createPaneElement() {
FILE: src/pane-resize-handle-element.js
class PaneResizeHandleElement (line 1) | class PaneResizeHandleElement extends HTMLElement {
method constructor (line 2) | constructor() {
method subscribeToDOMEvents (line 9) | subscribeToDOMEvents() {
method connectedCallback (line 14) | connectedCallback() {
method disconnectedCallback (line 24) | disconnectedCallback() {
method resizeToFitContent (line 28) | resizeToFitContent() {
method resizeStarted (line 38) | resizeStarted(e) {
method resizeStopped (line 50) | resizeStopped() {
method calcRatio (line 59) | calcRatio(ratio1, ratio2, total) {
method setFlexGrow (line 64) | setFlexGrow(prevSize, nextSize) {
method fixInRange (line 74) | fixInRange(val, minValue, maxValue) {
method resizePane (line 78) | resizePane({ clientX, clientY, which }) {
function createPaneResizeHandleElement (line 114) | function createPaneResizeHandleElement() {
FILE: src/pane.js
class SaveCancelledError (line 9) | class SaveCancelledError extends Error {}
method inspect (line 21) | inspect() {
method deserialize (line 25) | static deserialize(
method constructor (line 61) | constructor(params = {}) {
method getElement (line 99) | getElement() {
method serialize (line 109) | serialize() {
method getParent (line 134) | getParent() {
method setParent (line 138) | setParent(parent) {
method getContainer (line 142) | getContainer() {
method setContainer (line 146) | setContainer(container) {
method isItemAllowed (line 158) | isItemAllowed(item) {
method setFlexScale (line 168) | setFlexScale(flexScale) {
method getFlexScale (line 174) | getFlexScale() {
method increaseSize (line 178) | increaseSize() {
method decreaseSize (line 184) | decreaseSize() {
method onDidChangeFlexScale (line 204) | onDidChangeFlexScale(callback) {
method observeFlexScale (line 217) | observeFlexScale(callback) {
method onDidActivate (line 230) | onDidActivate(callback) {
method onWillDestroy (line 239) | onWillDestroy(callback) {
method onDidDestroy (line 248) | onDidDestroy(callback) {
method onDidChangeActive (line 260) | onDidChangeActive(callback) {
method observeActive (line 275) | observeActive(callback) {
method onDidAddItem (line 288) | onDidAddItem(callback) {
method onDidRemoveItem (line 300) | onDidRemoveItem(callback) {
method onWillRemoveItem (line 310) | onWillRemoveItem(callback) {
method onDidMoveItem (line 323) | onDidMoveItem(callback) {
method observeItems (line 334) | observeItems(callback) {
method onDidChangeActiveItem (line 348) | onDidChangeActiveItem(callback) {
method onChooseNextMRUItem (line 360) | onChooseNextMRUItem(callback) {
method onChooseLastMRUItem (line 372) | onChooseLastMRUItem(callback) {
method onDoneChoosingMRUItem (line 384) | onDoneChoosingMRUItem(callback) {
method observeActiveItem (line 396) | observeActiveItem(callback) {
method onWillDestroyItem (line 410) | onWillDestroyItem(callback) {
method focus (line 415) | focus() {
method blur (line 420) | blur() {
method isFocused (line 425) | isFocused() {
method getPanes (line 429) | getPanes() {
method unsubscribeFromItem (line 433) | unsubscribeFromItem(item) {
method getItems (line 448) | getItems() {
method getActiveItem (line 455) | getActiveItem() {
method setActiveItem (line 459) | setActiveItem(activeItem, options) {
method addItemsToStack (line 472) | addItemsToStack(itemStackIndices) {
method addItemToStack (line 488) | addItemToStack(newItem) {
method getActiveEditor (line 498) | getActiveEditor() {
method itemAtIndex (line 507) | itemAtIndex(index) {
method activateNextRecentlyUsedItem (line 512) | activateNextRecentlyUsedItem() {
method activatePreviousRecentlyUsedItem (line 526) | activatePreviousRecentlyUsedItem() {
method moveActiveItemToTopOfStack (line 542) | moveActiveItemToTopOfStack() {
method activateNextItem (line 549) | activateNextItem() {
method activatePreviousItem (line 559) | activatePreviousItem() {
method activateLastItem (line 568) | activateLastItem() {
method moveItemRight (line 573) | moveItemRight() {
method moveItemLeft (line 581) | moveItemLeft() {
method getActiveItemIndex (line 591) | getActiveItemIndex() {
method activateItemAtIndex (line 598) | activateItemAtIndex(index) {
method activateItem (line 611) | activateItem(item, options = {}) {
method addItem (line 634) | addItem(item, options = {}) {
method setPendingItem (line 695) | setPendingItem(item) {
method getPendingItem (line 708) | getPendingItem() {
method clearPendingItem (line 712) | clearPendingItem() {
method onItemDidTerminatePendingState (line 716) | onItemDidTerminatePendingState(callback) {
method addItems (line 729) | addItems(items, index = this.getActiveItemIndex() + 1) {
method removeItem (line 738) | removeItem(item, moved) {
method removeItemFromStack (line 777) | removeItemFromStack(item) {
method moveItem (line 786) | moveItem(item, newIndex) {
method moveItemToPane (line 799) | moveItemToPane(item, pane, index) {
method destroyActiveItem (line 807) | destroyActiveItem() {
method destroyItem (line 826) | async destroyItem(item, force) {
method destroyItems (line 875) | destroyItems() {
method destroyInactiveItems (line 880) | destroyInactiveItems() {
method promptToSaveItem (line 888) | promptToSaveItem(item, options = {}) {
method saveActiveItem (line 953) | saveActiveItem(nextAction) {
method saveActiveItemAs (line 964) | saveActiveItemAs(nextAction) {
method saveItem (line 977) | saveItem(item, nextAction) {
method saveItemAs (line 1017) | async saveItemAs(item, nextAction) {
method saveItems (line 1065) | saveItems() {
method itemForURI (line 1077) | itemForURI(uri) {
method activateItemForURI (line 1092) | activateItemForURI(uri) {
method copyActiveItem (line 1102) | copyActiveItem() {
method isActive (line 1115) | isActive() {
method activate (line 1120) | activate() {
method destroy (line 1132) | destroy() {
method isAlive (line 1155) | isAlive() {
method isDestroyed (line 1162) | isDestroyed() {
method splitLeft (line 1177) | splitLeft(params) {
method splitRight (line 1188) | splitRight(params) {
method splitUp (line 1199) | splitUp(params) {
method splitDown (line 1210) | splitDown(params) {
method split (line 1214) | split(orientation, side, params) {
method findLeftmostSibling (line 1267) | findLeftmostSibling() {
method findRightmostSibling (line 1280) | findRightmostSibling() {
method findOrCreateRightmostSibling (line 1297) | findOrCreateRightmostSibling() {
method findTopmostSibling (line 1308) | findTopmostSibling() {
method findBottommostSibling (line 1321) | findBottommostSibling() {
method findOrCreateBottommostSibling (line 1338) | findOrCreateBottommostSibling() {
method close (line 1351) | close() {
method handleSaveError (line 1359) | handleSaveError(error, item) {
method getMessageForErrorCode (line 1398) | getMessageForErrorCode(errorCode) {
function promisify (line 1424) | function promisify(callback) {
FILE: src/panel-container-element.js
class PanelContainerElement (line 6) | class PanelContainerElement extends HTMLElement {
method constructor (line 7) | constructor() {
method connectedCallback (line 12) | connectedCallback() {
method initialize (line 18) | initialize(model, viewRegistry) {
method getModel (line 36) | getModel() {
method panelAdded (line 40) | panelAdded({ panel, index }) {
method destroyed (line 99) | destroyed() {
method hideAllPanelsExcept (line 106) | hideAllPanelsExcept(excludedPanel) {
function createPanelContainerElement (line 117) | function createPanelContainerElement() {
FILE: src/panel-container.js
method constructor (line 7) | constructor({ location, dock, viewRegistry } = {}) {
method destroy (line 16) | destroy() {
method getElement (line 25) | getElement() {
method onDidAddPanel (line 39) | onDidAddPanel(callback) {
method onDidRemovePanel (line 43) | onDidRemovePanel(callback) {
method onDidDestroy (line 47) | onDidDestroy(callback) {
method getLocation (line 55) | getLocation() {
method isModal (line 59) | isModal() {
method getPanels (line 63) | getPanels() {
method addPanel (line 67) | addPanel(panel) {
method panelForItem (line 81) | panelForItem(item) {
method panelDestroyed (line 90) | panelDestroyed(panel) {
method getPanelIndex (line 98) | getPanelIndex(panel) {
FILE: src/panel.js
method constructor (line 15) | constructor({ item, autoFocus, visible, priority, className }, viewRegis...
method destroy (line 27) | destroy() {
method getElement (line 36) | getElement() {
method onDidChangeVisible (line 57) | onDidChangeVisible(callback) {
method onDidDestroy (line 67) | onDidDestroy(callback) {
method getItem (line 76) | getItem() {
method getPriority (line 81) | getPriority() {
method getClassName (line 85) | getClassName() {
method isVisible (line 90) | isVisible() {
method hide (line 95) | hide() {
method show (line 103) | show() {
FILE: src/path-watcher.js
constant ACTION_MAP (line 10) | const ACTION_MAP = new Map([
constant WATCHER_STATE (line 18) | const WATCHER_STATE = {
class NativeWatcher (line 26) | class NativeWatcher {
method constructor (line 30) | constructor(normalizedPath) {
method start (line 44) | async start() {
method doStart (line 56) | doStart() {
method isRunning (line 61) | isRunning() {
method onDidStart (line 68) | onDidStart(callback) {
method onDidChange (line 77) | onDidChange(callback) {
method onShouldDetach (line 92) | onShouldDetach(callback) {
method onWillStop (line 99) | onWillStop(callback) {
method onDidStop (line 106) | onDidStop(callback) {
method onDidError (line 113) | onDidError(callback) {
method reattachTo (line 122) | reattachTo(replacement, watchedPath, options) {
method stop (line 129) | async stop() {
method doStop (line 143) | doStop() {
method dispose (line 148) | dispose() {
method onEvents (line 156) | onEvents(events) {
method onError (line 163) | onError(err) {
class AtomNativeWatcher (line 170) | class AtomNativeWatcher extends NativeWatcher {
method doStart (line 171) | async doStart() {
class NSFWNativeWatcher (line 285) | class NSFWNativeWatcher extends NativeWatcher {
method doStart (line 286) | async doStart(rootPath, eventCallback, errorCallback) {
method doStop (line 320) | doStop() {
class PathWatcher (line 369) | class PathWatcher {
method constructor (line 376) | constructor(nativeWatcherRegistry, watchedPath, options) {
method getNormalizedPathPromise (line 411) | getNormalizedPathPromise() {
method getAttachedPromise (line 416) | getAttachedPromise() {
method getStartPromise (line 443) | getStartPromise() {
method onDidChange (line 453) | onDidChange(callback) {
method onDidError (line 481) | onDidError(callback) {
method attachToNative (line 486) | attachToNative(native) {
method onNativeEvents (line 542) | onNativeEvents(events, callback) {
method dispose (line 583) | dispose() {
class PathWatcherManager (line 595) | class PathWatcherManager {
method active (line 597) | static active() {
method transitionTo (line 614) | static async transitionTo(setting) {
method constructor (line 648) | constructor(setting) {
method useExperimentalWatcher (line 679) | useExperimentalWatcher() {
method createWatcher (line 684) | async createWatcher(rootPath, options, eventCallback) {
method getRegistry (line 711) | getRegistry() {
method status (line 720) | status() {
method print (line 729) | print() {
method stopAllWatchers (line 740) | stopAllWatchers() {
function watchPath (line 788) | function watchPath(rootPath, options, eventCallback) {
function stopAllWatchers (line 798) | function stopAllWatchers() {
FILE: src/project.js
method constructor (line 21) | constructor({
method destroyed (line 49) | destroyed() {
method reset (line 65) | reset(packageManager) {
method destroyUnretainedBuffers (line 83) | destroyUnretainedBuffers() {
method replace (line 91) | replace(projectSpecification) {
method onDidReplace (line 115) | onDidReplace(callback) {
method deserialize (line 123) | deserialize(state) {
method serialize (line 160) | serialize(options = {}) {
method onDidChangePaths (line 188) | onDidChangePaths(callback) {
method onDidAddBuffer (line 199) | onDidAddBuffer(callback) {
method observeBuffers (line 210) | observeBuffers(callback) {
method onDidChangeFiles (line 255) | onDidChangeFiles(callback) {
method observeRepositories (line 269) | observeRepositories(callback) {
method onDidAddRepository (line 287) | onDidAddRepository(callback) {
method getRepositories (line 305) | getRepositories() {
method repositoryForDirectory (line 316) | repositoryForDirectory(directory) {
method getPaths (line 352) | getPaths() {
method setPaths (line 370) | setPaths(projectPaths, options = {}) {
method addPath (line 418) | addPath(projectPath, options = {}) {
method getProvidedDirectoryForProjectPath (line 487) | getProvidedDirectoryForProjectPath(projectPath) {
method getDirectoryForProjectPath (line 499) | getDirectoryForProjectPath(projectPath) {
method getWatcherPromise (line 520) | getWatcherPromise(projectPath) {
method removePath (line 530) | removePath(projectPath) {
method getDirectories (line 563) | getDirectories() {
method resolvePath (line 567) | resolvePath(uri) {
method relativize (line 590) | relativize(fullPath) {
method relativizePath (line 604) | relativizePath(fullPath) {
method contains (line 644) | contains(pathToCheck) {
method consumeServices (line 652) | consumeServices({ serviceHub }) {
method getBuffers (line 685) | getBuffers() {
method isPathModified (line 690) | isPathModified(filePath) {
method findBufferForPath (line 695) | findBufferForPath(filePath) {
method findBufferForId (line 699) | findBufferForId(id) {
method bufferForPathSync (line 704) | bufferForPathSync(filePath) {
method bufferForIdSync (line 720) | bufferForIdSync(id) {
method bufferForPath (line 740) | bufferForPath(absoluteFilePath) {
method shouldDestroyBufferOnFileDelete (line 752) | shouldDestroyBufferOnFileDelete() {
method buildBufferSync (line 757) | buildBufferSync(absoluteFilePath) {
method buildBuffer (line 778) | async buildBuffer(absoluteFilePath) {
method addBuffer (line 810) | addBuffer(buffer, options = {}) {
method removeBuffer (line 821) | removeBuffer(buffer) {
method removeBufferAtIndex (line 828) | removeBufferAtIndex(index, options = {}) {
method eachBuffer (line 833) | eachBuffer(...args) {
method subscribeToBuffer (line 852) | subscribeToBuffer(buffer) {
FILE: src/protocol-handler-installer.js
constant SETTING (line 3) | const SETTING = 'core.uriHandlerRegistration';
constant PROMPT (line 4) | const PROMPT = 'prompt';
constant ALWAYS (line 5) | const ALWAYS = 'always';
constant NEVER (line 6) | const NEVER = 'never';
method isSupported (line 9) | isSupported() {
method isDefaultProtocolClient (line 13) | async isDefaultProtocolClient() {
method setAsDefaultProtocolClient (line 21) | async setAsDefaultProtocolClient() {
method initialize (line 34) | async initialize(config, notifications) {
method promptToBecomeProtocolClient (line 66) | promptToBecomeProtocolClient(config, notifications) {
FILE: src/reopen-project-list-view.js
method constructor (line 4) | constructor(callback) {
method element (line 30) | get element() {
method dispose (line 34) | dispose() {
method cancel (line 39) | cancel() {
method attach (line 51) | attach() {
method toggle (line 60) | async toggle() {
method makeName (line 74) | makeName(paths) {
FILE: src/reopen-project-menu-manager.js
method constructor (line 5) | constructor({ menu, commands, history, config, open }) {
method reopenProjectCommand (line 29) | reopenProjectCommand(e) {
method createReopenProjectListView (line 37) | createReopenProjectListView() {
method update (line 49) | update() {
method taskDescription (line 59) | static taskDescription(paths) {
method applyWindowsJumpListRemovals (line 68) | async applyWindowsJumpListRemovals() {
method updateWindowsJumpList (line 89) | updateWindowsJumpList() {
method dispose (line 131) | dispose() {
method disposeProjectMenu (line 139) | disposeProjectMenu() {
method createProjectsMenu (line 146) | static createProjectsMenu(projects) {
method createLabel (line 164) | static createLabel(project) {
method betterBaseName (line 170) | static betterBaseName(directory) {
FILE: src/ripgrep-directory-searcher.js
function updateLeadingContext (line 47) | function updateLeadingContext(message, pendingLeadingContext, options) {
function updateTrailingContexts (line 61) | function updateTrailingContexts(message, pendingTrailingContexts, option...
function cleanResultLine (line 77) | function cleanResultLine(resultLine) {
function getPositionFromColumn (line 85) | function getPositionFromColumn(lines, column) {
function processUnicodeMatch (line 99) | function processUnicodeMatch(match) {
function processSubmatch (line 134) | function processSubmatch(submatch, lineText, offsetRow) {
function getText (line 159) | function getText(input) {
method canSearchDirectory (line 166) | canSearchDirectory() {
method search (line 203) | search(directories, regexp, options) {
method searchInDirectory (line 221) | searchInDirectory(directory, regexp, options, numPathsFound) {
method prepareGlobs (line 369) | prepareGlobs(globs, projectRootPath) {
method prepareRegexp (line 405) | prepareRegexp(regexpStr) {
method isMultilineRegexp (line 419) | isMultilineRegexp(regexpStr) {
FILE: src/scope-descriptor.js
method fromObject (line 21) | static fromObject(scopes) {
method constructor (line 37) | constructor({ scopes }) {
method getScopesArray (line 42) | getScopesArray() {
method getScopeChain (line 46) | getScopeChain() {
method toString (line 67) | toString() {
method isEqual (line 71) | isEqual(other) {
FILE: src/selection.js
method constructor (line 10) | constructor({ cursor, marker, editor, id }) {
method destroy (line 27) | destroy() {
method isLastSelection (line 31) | isLastSelection() {
method onDidChangeRange (line 50) | onDidChangeRange(callback) {
method onDidDestroy (line 59) | onDidDestroy(callback) {
method getScreenRange (line 68) | getScreenRange() {
method setScreenRange (line 76) | setScreenRange(screenRange, options) {
method getBufferRange (line 84) | getBufferRange() {
method setBufferRange (line 99) | setBufferRange(bufferRange, options = {}) {
method getBufferRowRange (line 125) | getBufferRowRange() {
method getTailScreenPosition (line 133) | getTailScreenPosition() {
method getTailBufferPosition (line 137) | getTailBufferPosition() {
method getHeadScreenPosition (line 141) | getHeadScreenPosition() {
method getHeadBufferPosition (line 145) | getHeadBufferPosition() {
method isEmpty (line 154) | isEmpty() {
method isReversed (line 162) | isReversed() {
method isSingleScreenLine (line 167) | isSingleScreenLine() {
method getText (line 172) | getText() {
method intersectsBufferRange (line 181) | intersectsBufferRange(bufferRange) {
method intersectsScreenRowRange (line 185) | intersectsScreenRowRange(startRow, endRow) {
method intersectsScreenRow (line 189) | intersectsScreenRow(screenRow) {
method intersectsWith (line 198) | intersectsWith(otherSelection, exclusive) {
method clear (line 215) | clear(options) {
method selectToScreenPosition (line 230) | selectToScreenPosition(position, options) {
method selectToBufferPosition (line 261) | selectToBufferPosition(position) {
method selectRight (line 268) | selectRight(columnCount) {
method selectLeft (line 275) | selectLeft(columnCount) {
method selectUp (line 282) | selectUp(rowCount) {
method selectDown (line 289) | selectDown(rowCount) {
method selectToTop (line 295) | selectToTop() {
method selectToBottom (line 301) | selectToBottom() {
method selectAll (line 306) | selectAll() {
method selectToBeginningOfLine (line 312) | selectToBeginningOfLine() {
method selectToFirstCharacterOfLine (line 318) | selectToFirstCharacterOfLine() {
method selectToEndOfLine (line 324) | selectToEndOfLine() {
method selectToEndOfBufferLine (line 330) | selectToEndOfBufferLine() {
method selectToBeginningOfWord (line 336) | selectToBeginningOfWord() {
method selectToEndOfWord (line 342) | selectToEndOfWord() {
method selectToBeginningOfNextWord (line 348) | selectToBeginningOfNextWord() {
method selectToPreviousWordBoundary (line 353) | selectToPreviousWordBoundary() {
method selectToNextWordBoundary (line 358) | selectToNextWordBoundary() {
method selectToPreviousSubwordBoundary (line 363) | selectToPreviousSubwordBoundary() {
method selectToNextSubwordBoundary (line 368) | selectToNextSubwordBoundary() {
method selectToBeginningOfNextParagraph (line 374) | selectToBeginningOfNextParagraph() {
method selectToBeginningOfPreviousParagraph (line 380) | selectToBeginningOfPreviousParagraph() {
method selectWord (line 389) | selectWord(options = {}) {
method expandOverWord (line 405) | expandOverWord(options) {
method selectLine (line 420) | selectLine(row, options) {
method expandOverLine (line 446) | expandOverLine(options) {
method ensureWritable (line 460) | ensureWritable(methodName, opts) {
method insertText (line 501) | insertText(text, options = {}) {
method backspace (line 594) | backspace(options = {}) {
method deleteToPreviousWordBoundary (line 606) | deleteToPreviousWordBoundary(options = {}) {
method deleteToNextWordBoundary (line 618) | deleteToNextWordBoundary(options = {}) {
method deleteToBeginningOfWord (line 629) | deleteToBeginningOfWord(options = {}) {
method deleteToBeginningOfLine (line 640) | deleteToBeginningOfLine(options = {}) {
method delete (line 655) | delete(options = {}) {
method deleteToEndOfLine (line 668) | deleteToEndOfLine(options = {}) {
method deleteToEndOfWord (line 685) | deleteToEndOfWord(options = {}) {
method deleteToBeginningOfSubword (line 696) | deleteToBeginningOfSubword(options = {}) {
method deleteToEndOfSubword (line 707) | deleteToEndOfSubword(options = {}) {
method deleteSelectedText (line 717) | deleteSelectedText(options = {}) {
method deleteLine (line 730) | deleteLine(options = {}) {
method joinLines (line 761) | joinLines(options = {}) {
method outdentSelectedRows (line 820) | outdentSelectedRows(options = {}) {
method autoIndentSelectedRows (line 840) | autoIndentSelectedRows(options = {}) {
method toggleLineComments (line 853) | toggleLineComments(options = {}) {
method cutToEndOfLine (line 867) | cutToEndOfLine(maintainClipboard, options = {}) {
method cutToEndOfBufferLine (line 878) | cutToEndOfBufferLine(maintainClipboard, options = {}) {
method cut (line 889) | cut(maintainClipboard = false, fullLine = false, bypassReadOnly = false) {
method copy (line 904) | copy(maintainClipboard = false, fullLine = false) {
method fold (line 944) | fold() {
method adjustIndent (line 954) | adjustIndent(lines, indentAdjustment) {
method indent (line 982) | indent({ autoIndent, bypassReadOnly } = {}) {
method indentSelectedRows (line 1011) | indentSelectedRows(options = {}) {
method addSelectionBelow (line 1026) | addSelectionBelow() {
method addSelectionAbove (line 1060) | addSelectionAbove() {
method merge (line 1094) | merge(otherSelection, options = {}) {
method compare (line 1124) | compare(otherSelection) {
method setGoalScreenRange (line 1132) | setGoalScreenRange(range) {
method getGoalScreenRange (line 1136) | getGoalScreenRange() {
method markerDidChange (line 1140) | markerDidChange(e) {
method markerDidDestroy (line 1178) | markerDidDestroy() {
method finalize (line 1193) | finalize() {
method autoscroll (line 1206) | autoscroll(options) {
method clearAutoscroll (line 1217) | clearAutoscroll() {}
method modifySelection (line 1219) | modifySelection(fn) {
method plantTail (line 1231) | plantTail() {
FILE: src/selectors.js
function parse (line 10) | function parse(selector) {
function matcherForSelector (line 23) | function matcherForSelector(selector) {
function selectorMatchesAnyScope (line 34) | function selectorMatchesAnyScope(selector, scopes) {
FILE: src/startup-time.js
method setStartTime (line 5) | setStartTime() {
method addMarker (line 10) | addMarker(label, dateTime) {
method importData (line 18) | importData(data) {
method exportData (line 22) | exportData() {
method deleteData (line 29) | deleteData() {
FILE: src/state-store.js
method constructor (line 4) | constructor(databaseName, version) {
method dbPromise (line 10) | get dbPromise() {
method isConnected (line 44) | isConnected() {
method connect (line 48) | connect() {
method save (line 52) | save(key, value) {
method load (line 68) | load(key) {
method delete (line 92) | delete(key) {
method clear (line 108) | clear() {
method count (line 124) | count() {
FILE: src/storage-folder.js
method constructor (line 5) | constructor(containingPath) {
method store (line 11) | store(name, object) {
method load (line 23) | load(name) {
method pathForKey (line 52) | pathForKey(name) {
method getPath (line 56) | getPath() {
FILE: src/style-manager.js
constant DEPRECATED_SYNTAX_SELECTORS (line 8) | const DEPRECATED_SYNTAX_SELECTORS = require('./deprecated-syntax-selecto...
method constructor (line 16) | constructor() {
method initialize (line 23) | initialize({ configDirPath }) {
method observeStyleElements (line 53) | observeStyleElements(callback) {
method onDidAddStyleElement (line 76) | onDidAddStyleElement(callback) {
method onDidRemoveStyleElement (line 87) | onDidRemoveStyleElement(callback) {
method onDidUpdateStyleElement (line 104) | onDidUpdateStyleElement(callback) {
method onDidUpdateDeprecations (line 108) | onDidUpdateDeprecations(callback) {
method getStyleElements (line 117) | getStyleElements() {
method addStyleSheet (line 121) | addStyleSheet(source, params = {}) {
method addStyleElement (line 173) | addStyleElement(styleElement) {
method removeStyleElement (line 195) | removeStyleElement(styleElement) {
method upgradeDeprecatedSelectorsForStyleSheet (line 206) | upgradeDeprecatedSelectorsForStyleSheet(styleSheet, context) {
method getDeprecations (line 229) | getDeprecations() {
method clearDeprecations (line 233) | clearDeprecations() {
method getSnapshot (line 237) | getSnapshot() {
method restoreSnapshot (line 241) | restoreSnapshot(styleElementsToRestore) {
method buildStylesElement (line 256) | buildStylesElement() {
method getUserStyleSheetPath (line 269) | getUserStyleSheetPath() {
function transformDeprecatedShadowDOMSelectors (line 286) | function transformDeprecatedShadowDOMSelectors(css, context) {
FILE: src/styles-element.js
class StylesElement (line 3) | class StylesElement extends HTMLElement {
method constructor (line 4) | constructor() {
method onDidAddStyleElement (line 12) | onDidAddStyleElement(callback) {
method onDidRemoveStyleElement (line 16) | onDidRemoveStyleElement(callback) {
method onDidUpdateStyleElement (line 20) | onDidUpdateStyleElement(callback) {
method connectedCallback (line 24) | connectedCallback() {
method disconnectedCallback (line 30) | disconnectedCallback() {
method observedAttributes (line 35) | static get observedAttributes() {
method attributeChangedCallback (line 39) | attributeChangedCallback(attrName) {
method initialize (line 45) | initialize(styleManager) {
method contextChanged (line 68) | contextChanged() {
method styleElementAdded (line 82) | styleElementAdded(styleElement) {
method styleElementRemoved (line 111) | styleElementRemoved(styleElement) {
method styleElementUpdated (line 126) | styleElementUpdated(styleElement) {
method styleElementMatchesContext (line 138) | styleElementMatchesContext(styleElement) {
function createStylesElement (line 145) | function createStylesElement() {
FILE: src/syntax-scope-map.js
method constructor (line 4) | constructor(resultsBySelector) {
method addSelector (line 14) | addSelector(selector, result) {
method get (line 104) | get(nodeTypes, childIndices, leafIsNamed = true) {
function setTableDefaults (line 133) | function setTableDefaults(table, allowWildcardSelector) {
function mergeTable (line 158) | function mergeTable(table, defaultTable, mergeIndices = true) {
function rejectSelector (line 180) | function rejectSelector(selector) {
FILE: src/task-bootstrap.js
method warn (line 11) | warn() {
method log (line 14) | log() {
method error (line 17) | error() {
method trace (line 20) | trace() {}
method createElement (line 25) | createElement() {
method insertBefore (line 35) | insertBefore() {}
method removeChild (line 36) | removeChild() {}
method getElementById (line 38) | getElementById() {
method createComment (line 41) | createComment() {
method createDocumentFragment (line 44) | createDocumentFragment() {
FILE: src/text-editor-component.js
constant DEFAULT_ROWS_PER_TILE (line 14) | const DEFAULT_ROWS_PER_TILE = 6;
constant NORMAL_WIDTH_CHARACTER (line 15) | const NORMAL_WIDTH_CHARACTER = 'x';
constant DOUBLE_WIDTH_CHARACTER (line 16) | const DOUBLE_WIDTH_CHARACTER = '我';
constant HALF_WIDTH_CHARACTER (line 17) | const HALF_WIDTH_CHARACTER = 'ハ';
constant KOREAN_CHARACTER (line 18) | const KOREAN_CHARACTER = '세';
constant NBSP_CHARACTER (line 19) | const NBSP_CHARACTER = '\u00a0';
constant ZERO_WIDTH_NBSP_CHARACTER (line 20) | const ZERO_WIDTH_NBSP_CHARACTER = '\ufeff';
constant MOUSE_DRAG_AUTOSCROLL_MARGIN (line 21) | const MOUSE_DRAG_AUTOSCROLL_MARGIN = 40;
constant CURSOR_BLINK_RESUME_DELAY (line 22) | const CURSOR_BLINK_RESUME_DELAY = 300;
constant CURSOR_BLINK_PERIOD (line 23) | const CURSOR_BLINK_PERIOD = 800;
function scaleMouseDragAutoscrollDelta (line 25) | function scaleMouseDragAutoscrollDelta(delta) {
method setScheduler (line 30) | static setScheduler(scheduler) {
method getScheduler (line 34) | static getScheduler() {
method didUpdateStyles (line 38) | static didUpdateStyles() {
method didUpdateScrollbarStyles (line 46) | static didUpdateScrollbarStyles() {
method constructor (line 54) | constructor(props) {
method update (line 192) | update(props) {
method pixelPositionForScreenPosition (line 201) | pixelPositionForScreenPosition({ row, column }) {
method scheduleUpdate (line 212) | scheduleUpdate(nextUpdateOnlyBlinksCursors = false) {
method updateSync (line 230) | updateSync(useScheduler = false) {
method measureBlockDecorations (line 304) | measureBlockDecorations() {
method updateSyncBeforeMeasuringContent (line 384) | updateSyncBeforeMeasuringContent() {
method measureContentDuringUpdateSync (line 415) | measureContentDuringUpdateSync() {
method updateSyncAfterMeasuringContent (line 451) | updateSyncAfterMeasuringContent() {
method render (line 476) | render() {
method renderGutterContainer (line 547) | renderGutterContainer() {
method renderScrollContainer (line 574) | renderScrollContainer() {
method renderContent (line 601) | renderContent() {
method renderHighlightDecorations (line 628) | renderHighlightDecorations() {
method renderLineTiles (line 638) | renderLineTiles() {
method renderCursorsAndInput (line 723) | renderCursorsAndInput() {
method renderPlaceholderText (line 748) | renderPlaceholderText() {
method renderCharacterMeasurementLine (line 759) | renderCharacterMeasurementLine() {
method renderBlockDecorationMeasurementArea (line 774) | renderBlockDecorationMeasurementArea() {
method renderDummyScrollbars (line 787) | renderDummyScrollbars() {
method renderOverlayDecorations (line 853) | renderOverlayDecorations() {
method updateClassList (line 874) | updateClassList() {
method queryScreenLinesToRender (line 904) | queryScreenLinesToRender() {
method queryLongestLine (line 913) | queryLongestLine() {
method queryExtraScreenLinesToRender (line 928) | queryExtraScreenLinesToRender() {
method queryLineNumbersToRender (line 937) | queryLineNumbersToRender() {
method queryMaxLineNumberDigits (line 994) | queryMaxLineNumberDigits() {
method renderedScreenLineForRow (line 1005) | renderedScreenLineForRow(row) {
method queryGuttersToRender (line 1012) | queryGuttersToRender() {
method queryDecorationsToRender (line 1036) | queryDecorationsToRender() {
method addDecorationToRender (line 1071) | addDecorationToRender(type, decoration, marker, screenRange, reversed) {
method addLineDecorationToRender (line 1124) | addLineDecorationToRender(type, decoration, screenRange, reversed) {
method addHighlightDecorationToMeasure (line 1177) | addHighlightDecorationToMeasure(decoration, screenRange, key) {
method addCursorDecorationToMeasure (line 1210) | addCursorDecorationToMeasure(decoration, marker, screenRange, reversed) {
method addOverlayDecorationToRender (line 1250) | addOverlayDecorationToRender(decoration, marker) {
method addCustomGutterDecorationToRender (line 1270) | addCustomGutterDecorationToRender(decoration, screenRange) {
method addBlockDecorationToRender (line 1294) | addBlockDecorationToRender(decoration, screenRange, reversed) {
method addTextDecorationToRender (line 1329) | addTextDecorationToRender(decoration, screenRange, marker) {
method populateTextDecorationsToRender (line 1348) | populateTextDecorationsToRender() {
method addTextDecorationStart (line 1463) | addTextDecorationStart(row, column, className, style) {
method updateAbsolutePositionedDecorations (line 1475) | updateAbsolutePositionedDecorations() {
method updateHighlightsToRender (line 1481) | updateHighlightsToRender() {
method updateCursorsToRender (line 1501) | updateCursorsToRender() {
method updateOverlayToRender (line 1529) | updateOverlayToRender(decoration) {
method updateOverlaysToRender (line 1570) | updateOverlaysToRender() {
method didAttach (line 1580) | didAttach() {
method didDetach (line 1624) | didDetach() {
method didShow (line 1638) | didShow() {
method didHide (line 1649) | didHide() {
method didFocus (line 1658) | didFocus() {
method didBlur (line 1673) | didBlur(event) {
method didBlurHiddenInput (line 1679) | didBlurHiddenInput(event) {
method didFocusHiddenInput (line 1691) | didFocusHiddenInput() {
method didMouseWheel (line 1699) | didMouseWheel(event) {
method didResize (line 1730) | didResize() {
method didResizeGutterContainer (line 1750) | didResizeGutterContainer() {
method didScrollDummyScrollbar (line 1764) | didScrollDummyScrollbar() {
method didUpdateStyles (line 1780) | didUpdateStyles() {
method didUpdateScrollbarStyles (line 1786) | didUpdateScrollbarStyles() {
method didPaste (line 1793) | didPaste(event) {
method didTextInput (line 1803) | didTextInput(event) {
method didKeydown (line 1858) | didKeydown(event) {
method didKeypress (line 1884) | didKeypress(event) {
method didKeyup (line 1892) | didKeyup(event) {
method didCompositionStart (line 1911) | didCompositionStart() {
method didCompositionUpdate (line 1931) | didCompositionUpdate(event) {
method didCompositionEnd (line 1935) | didCompositionEnd(event) {
method didMouseDownOnContent (line 1939) | didMouseDownOnContent(event) {
method didMouseDownOnLineNumberGutter (line 2047) | didMouseDownOnLineNumberGutter(event) {
method handleMouseDragUntilMouseUp (line 2135) | handleMouseDragUntilMouseUp({ didDrag, didStopDragging }) {
method autoscrollOnMouseDrag (line 2171) | autoscrollOnMouseDrag({ clientX, clientY }, verticalOnly = false) {
method screenPositionForMouseEvent (line 2215) | screenPositionForMouseEvent(event) {
method pixelPositionForMouseEvent (line 2221) | pixelPositionForMouseEvent({ clientX, clientY }) {
method didUpdateSelections (line 2238) | didUpdateSelections() {
method pauseCursorBlinking (line 2243) | pauseCursorBlinking() {
method resumeCursorBlinking (line 2248) | resumeCursorBlinking() {
method stopCursorBlinking (line 2253) | stopCursorBlinking() {
method startCursorBlinking (line 2263) | startCursorBlinking() {
method didRequestAutoscroll (line 2274) | didRequestAutoscroll(autoscroll) {
method flushPendingLogicalScrollPosition (line 2279) | flushPendingLogicalScrollPosition() {
method autoscrollVertically (line 2300) | autoscrollVertically(screenRange, options) {
method autoscrollHorizontally (line 2340) | autoscrollHorizontally(screenRange, options) {
method getVerticalAutoscrollMargin (line 2380) | getVerticalAutoscrollMargin() {
method getHorizontalAutoscrollMargin (line 2391) | getHorizontalAutoscrollMargin() {
method updateModelSoftWrapColumn (line 2406) | updateModelSoftWrapColumn() {
method measureDimensions (line 2436) | measureDimensions() {
method measureCharacterDimensions (line 2445) | measureCharacterDimensions() {
method measureGutterDimensions (line 2465) | measureGutterDimensions() {
method measureClientContainerHeight (line 2496) | measureClientContainerHeight() {
method measureClientContainerWidth (line 2506) | measureClientContainerWidth() {
method measureScrollbarDimensions (line 2516) | measureScrollbarDimensions() {
method measureLongestLineWidth (line 2526) | measureLongestLineWidth() {
method requestLineToMeasure (line 2537) | requestLineToMeasure(row, screenLine) {
method requestHorizontalMeasurement (line 2541) | requestHorizontalMeasurement(row, column) {
method measureHorizontalPositions (line 2557) | measureHorizontalPositions() {
method measureHorizontalPositionsOnLine (line 2610) | measureHorizontalPositionsOnLine(
method rowForPixelPosition (line 2686) | rowForPixelPosition(pixelPosition) {
method heightForBlockDecorationsBeforeRow (line 2690) | heightForBlockDecorationsBeforeRow(row) {
method heightForBlockDecorationsAfterRow (line 2697) | heightForBlockDecorationsAfterRow(row) {
method pixelPositionBeforeBlocksForRow (line 2704) | pixelPositionBeforeBlocksForRow(row) {
method pixelPositionAfterBlocksForRow (line 2708) | pixelPositionAfterBlocksForRow(row) {
method pixelLeftForRowAndColumn (line 2712) | pixelLeftForRowAndColumn(row, column) {
method screenPositionForPixelPosition (line 2725) | screenPositionForPixelPosition({ top, left }) {
method didResetDisplayLayer (line 2814) | didResetDisplayLayer() {
method didChangeDisplayLayer (line 2819) | didChangeDisplayLayer(changes) {
method didChangeSelectionRange (line 2832) | didChangeSelectionRange() {
method observeBlockDecorations (line 2859) | observeBlockDecorations() {
method addBlockDecoration (line 2867) | addBlockDecoration(decoration, subscribeToChanges = true) {
method didResizeBlockDecorations (line 2926) | didResizeBlockDecorations(entries) {
method invalidateBlockDecorationDimensions (line 2942) | invalidateBlockDecorationDimensions(decoration) {
method spliceLineTopIndex (line 2947) | spliceLineTopIndex(startRow, oldExtent, newExtent) {
method isVisible (line 2959) | isVisible() {
method getWindowInnerHeight (line 2963) | getWindowInnerHeight() {
method getWindowInnerWidth (line 2967) | getWindowInnerWidth() {
method getLineHeight (line 2971) | getLineHeight() {
method getBaseCharacterWidth (line 2975) | getBaseCharacterWidth() {
method getLongestLineWidth (line 2979) | getLongestLineWidth() {
method getClientContainerHeight (line 2983) | getClientContainerHeight() {
method getClientContainerWidth (line 2987) | getClientContainerWidth() {
method getScrollContainerWidth (line 2991) | getScrollContainerWidth() {
method getScrollContainerHeight (line 2999) | getScrollContainerHeight() {
method getScrollContainerClientWidth (line 3007) | getScrollContainerClientWidth() {
method getScrollContainerClientHeight (line 3011) | getScrollContainerClientHeight() {
method canScrollVertically (line 3017) | canScrollVertically() {
method canScrollHorizontally (line 3024) | canScrollHorizontally() {
method getScrollHeight (line 3032) | getScrollHeight() {
method getScrollWidth (line 3051) | getScrollWidth() {
method getContentHeight (line 3066) | getContentHeight() {
method getContentWidth (line 3072) | getContentWidth() {
method getScrollContainerClientWidthInBaseCharacters (line 3076) | getScrollContainerClientWidthInBaseCharacters() {
method getGutterContainerWidth (line 3082) | getGutterContainerWidth() {
method getLineNumberGutterWidth (line 3086) | getLineNumberGutterWidth() {
method getVerticalScrollbarWidth (line 3090) | getVerticalScrollbarWidth() {
method getHorizontalScrollbarHeight (line 3094) | getHorizontalScrollbarHeight() {
method getRowsPerTile (line 3098) | getRowsPerTile() {
method tileStartRowForRow (line 3102) | tileStartRowForRow(row) {
method getRenderedStartRow (line 3106) | getRenderedStartRow() {
method getRenderedEndRow (line 3116) | getRenderedEndRow() {
method getRenderedRowCount (line 3128) | getRenderedRowCount() {
method getRenderedTileCount (line 3139) | getRenderedTileCount() {
method getFirstVisibleRow (line 3149) | getFirstVisibleRow() {
method getLastVisibleRow (line 3159) | getLastVisibleRow() {
method getVisibleTileCount (line 3175) | getVisibleTileCount() {
method getFirstVisibleColumn (line 3187) | getFirstVisibleColumn() {
method getScrollTop (line 3191) | getScrollTop() {
method setScrollTop (line 3196) | setScrollTop(scrollTop) {
method getMaxScrollTop (line 3213) | getMaxScrollTop() {
method getScrollBottom (line 3222) | getScrollBottom() {
method setScrollBottom (line 3226) | setScrollBottom(scrollBottom) {
method getScrollLeft (line 3232) | getScrollLeft() {
method setScrollLeft (line 3236) | setScrollLeft(scrollLeft) {
method getMaxScrollLeft (line 3252) | getMaxScrollLeft() {
method getScrollRight (line 3258) | getScrollRight() {
method setScrollRight (line 3262) | setScrollRight(scrollRight) {
method setScrollTopRow (line 3268) | setScrollTopRow(scrollTopRow, scheduleUpdate = true) {
method getScrollTopRow (line 3283) | getScrollTopRow() {
method setScrollLeftColumn (line 3291) | setScrollLeftColumn(scrollLeftColumn, scheduleUpdate = true) {
method getScrollLeftColumn (line 3306) | getScrollLeftColumn() {
method populateVisibleRowRange (line 3315) | populateVisibleRowRange(renderedStartRow) {
method populateVisibleTiles (line 3333) | populateVisibleTiles() {
method getNextUpdatePromise (line 3368) | getNextUpdatePromise() {
method setInputEnabled (line 3381) | setInputEnabled(inputEnabled) {
method isInputEnabled (line 3385) | isInputEnabled() {
method getHiddenInput (line 3392) | getHiddenInput() {
method getPlatform (line 3396) | getPlatform() {
method getChromeVersion (line 3400) | getChromeVersion() {
class DummyScrollbarComponent (line 3405) | class DummyScrollbarComponent {
method constructor (line 3406) | constructor(props) {
method update (line 3411) | update(newProps) {
method flushScrollPosition (line 3422) | flushScrollPosition() {
method render (line 3430) | render() {
method didMouseDown (line 3488) | didMouseDown(event) {
method getRealScrollbarWidth (line 3497) | getRealScrollbarWidth() {
method getRealScrollbarHeight (line 3501) | getRealScrollbarHeight() {
class GutterContainerComponent (line 3506) | class GutterContainerComponent {
method constructor (line 3507) | constructor(props) {
method update (line 3512) | update(props) {
method shouldUpdate (line 3519) | shouldUpdate(props) {
method render (line 3526) | render() {
method renderLineNumberGutter (line 3577) | renderLineNumberGutter(gutter) {
class LineNumberGutterComponent (line 3651) | class LineNumberGutterComponent {
method constructor (line 3652) | constructor(props) {
method update (line 3661) | update(newProps) {
method render (line 3668) | render() {
method shouldUpdate (line 3809) | shouldUpdate(newProps) {
method didMouseDown (line 3878) | didMouseDown(event) {
method didMouseMove (line 3891) | didMouseMove(event) {
class LineNumberComponent (line 3903) | class LineNumberComponent {
method constructor (line 3904) | constructor(props) {
method destroy (line 3925) | destroy() {
method update (line 3930) | update(props) {
class CustomGutterComponent (line 3980) | class CustomGutterComponent {
method constructor (line 3981) | constructor(props) {
method update (line 3989) | update(props) {
method destroy (line 3994) | destroy() {
method render (line 3998) | render() {
method renderDecorations (line 4021) | renderDecorations() {
class CustomGutterDecorationComponent (line 4035) | class CustomGutterDecorationComponent {
method constructor (line 4036) | constructor(props) {
method update (line 4051) | update(newProps) {
class CursorsAndInputComponent (line 4074) | class CursorsAndInputComponent {
method constructor (line 4075) | constructor(props) {
method update (line 4080) | update(props) {
method updateCursorBlinkSync (line 4087) | updateCursorBlinkSync(cursorsBlinkedOff) {
method render (line 4094) | render() {
method getCursorsClassName (line 4151) | getCursorsClassName() {
method renderHiddenInput (line 4155) | renderHiddenInput() {
class LinesTileComponent (line 4212) | class LinesTileComponent {
method constructor (line 4213) | constructor(props) {
method update (line 4220) | update(newProps) {
method destroy (line 4232) | destroy() {
method render (line 4241) | render() {
method createLines (line 4258) | createLines() {
method updateLines (line 4285) | updateLines(oldProps, newProps) {
method getFirstElementForScreenLine (line 4420) | getFirstElementForScreenLine(oldProps, screenLine) {
method updateBlockDecorations (line 4455) | updateBlockDecorations(oldProps, newProps) {
method shouldUpdate (line 4506) | shouldUpdate(newProps) {
class LineComponent (line 4563) | class LineComponent {
method constructor (line 4564) | constructor(props) {
method update (line 4587) | update(newProps) {
method destroy (line 4610) | destroy() {
method appendContents (line 4621) | appendContents() {
method appendTextNode (line 4703) | appendTextNode(openScopeNode, text, activeClassName, activeStyle) {
method buildClassName (line 4721) | buildClassName() {
class HighlightsComponent (line 4729) | class HighlightsComponent {
method constructor (line 4730) | constructor(props) {
method destroy (line 4742) | destroy() {
method update (line 4749) | update(newProps) {
method shouldUpdate (line 4794) | shouldUpdate(newProps) {
class HighlightComponent (line 4836) | class HighlightComponent {
method constructor (line 4837) | constructor(props) {
method destroy (line 4843) | destroy() {
method update (line 4854) | update(newProps) {
method performFlash (line 4860) | performFlash() {
method render (line 4883) | render() {
class OverlayComponent (line 4961) | class OverlayComponent {
method constructor (line 4962) | constructor(props) {
method destroy (line 4999) | destroy() {
method getNextUpdatePromise (line 5004) | getNextUpdatePromise() {
method update (line 5017) | update(newProps) {
method didAttach (line 5034) | didAttach() {
method didDetach (line 5038) | didDetach() {
function clientRectForRange (line 5044) | function clientRectForRange(textNode, startIndex, endIndex) {
function textDecorationsEqual (line 5051) | function textDecorationsEqual(oldDecorations, newDecorations) {
function arraysEqual (line 5067) | function arraysEqual(a, b) {
function objectsEqual (line 5075) | function objectsEqual(a, b) {
function constrainRangeToRows (line 5089) | function constrainRangeToRows(range, startRow, endRow) {
function debounce (line 5104) | function debounce(fn, wait) {
class NodePool (line 5123) | class NodePool {
method constructor (line 5124) | constructor() {
method getElement (line 5129) | getElement(type, className, style) {
method getTextNode (line 5162) | getTextNode(text) {
method release (line 5172) | release(node, depth = 0) {
function roundToPhysicalPixelBoundary (line 5197) | function roundToPhysicalPixelBoundary(virtualPixelPosition) {
function ceilToPhysicalPixelBoundary (line 5205) | function ceilToPhysicalPixelBoundary(virtualPixelPosition) {
FILE: src/text-editor-element.js
class TextEditorElement (line 6) | class TextEditorElement extends HTMLElement {
method initialize (line 7) | initialize(component) {
method shadowRoot (line 12) | get shadowRoot() {
method rootElement (line 22) | get rootElement() {
method constructor (line 32) | constructor() {
method connectedCallback (line 43) | connectedCallback() {
method disconnectedCallback (line 48) | disconnectedCallback() {
method observedAttributes (line 53) | static get observedAttributes() {
method attributeChangedCallback (line 57) | attributeChangedCallback(name, oldValue, newValue) {
method getNextUpdatePromise (line 83) | getNextUpdatePromise() {
method getModel (line 87) | getModel() {
method setModel (line 91) | setModel(model) {
method updateModelFromAttributes (line 96) | updateModelFromAttributes() {
method onDidAttach (line 107) | onDidAttach(callback) {
method onDidDetach (line 111) | onDidDetach(callback) {
method measureDimensions (line 115) | measureDimensions() {
method setWidth (line 119) | setWidth(width) {
method getWidth (line 124) | getWidth() {
method setHeight (line 128) | setHeight(height) {
method getHeight (line 132) | getHeight() {
method onDidChangeScrollLeft (line 136) | onDidChangeScrollLeft(callback) {
method onDidChangeScrollTop (line
Condensed preview — 1292 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,340K chars).
[
{
"path": ".coffeelintignore",
"chars": 14,
"preview": "spec/fixtures\n"
},
{
"path": ".eslintignore",
"chars": 53,
"preview": "**/spec/fixtures/**/*.js\nnode_modules\n/vendor/\n/out/\n"
},
{
"path": ".eslintrc.json",
"chars": 921,
"preview": "{\n \"extends\": [\n \"./script/node_modules/eslint-config-standard/eslintrc.json\",\n \"./script/node_modules/eslint-con"
},
{
"path": ".gitattributes",
"chars": 895,
"preview": "# Specs depend on character counts, if we don't specify the line endings the\n# fixtures will vary depending on platform\n"
},
{
"path": ".github/lock.yml",
"chars": 868,
"preview": "# Configuration for lock-threads - https://github.com/dessant/lock-threads\n\n# Number of days of inactivity before a clos"
},
{
"path": ".github/move.yml",
"chars": 0,
"preview": ""
},
{
"path": ".github/no-response.yml",
"chars": 708,
"preview": "# Configuration for probot-no-response - https://github.com/probot/no-response\n\n# Number of days of inactivity before an"
},
{
"path": ".github/stale.yml",
"chars": 1525,
"preview": "# Configuration for probot-stale - https://github.com/probot/stale\n\n# Number of days of inactivity before an Issue or Pu"
},
{
"path": ".gitignore",
"chars": 304,
"preview": "*.swp\n*~\n.DS_Store\n.eslintcache\nThumbs.db\n.project\n.svn\n.nvm-version\n.vscode\n.python-version\nnode_modules\n*.log\n/tags\n/a"
},
{
"path": ".prettierrc",
"chars": 26,
"preview": "{\n \"singleQuote\": true\n}\n"
},
{
"path": "CHANGELOG.md",
"chars": 29,
"preview": "See https://atom.io/releases\n"
},
{
"path": "CODE_OF_CONDUCT.md",
"chars": 3246,
"preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nIn the interest of fostering an open and welcoming environment, w"
},
{
"path": "CONTRIBUTING.md",
"chars": 47967,
"preview": "# Contributing to Atom\n\n:+1::tada: First off, thanks for taking the time to contribute! :tada::+1:\n\nThe following is a s"
},
{
"path": "Dockerfile",
"chars": 682,
"preview": "# VERSION: 0.2\n# DESCRIPTION: Image to build Atom\n\nFROM ubuntu:20.04\n\n# Install dependencies\nRUN apt-get updat"
},
{
"path": "LICENSE.md",
"chars": 1060,
"preview": "Copyright (c) 2011-2021 GitHub Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of thi"
},
{
"path": "PULL_REQUEST_TEMPLATE.md",
"chars": 628,
"preview": "⚛👋 Hello there! Welcome. Please follow the steps below to tell us about your contribution.\n\n1. Copy the correct template"
},
{
"path": "README.md",
"chars": 4284,
"preview": "# Atom\n\n[ is installed to so that\nit is bundled with Atom.\n"
},
{
"path": "apm/package.json",
"chars": 221,
"preview": "{\n \"name\": \"atom-bundled-apm\",\n \"description\": \"Atom's bundled apm\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \""
},
{
"path": "atom.sh",
"chars": 5460,
"preview": "#!/bin/bash\n\nif [ \"$(uname)\" == 'Darwin' ]; then\n OS='Mac'\nelif [ \"$(expr substr $(uname -s) 1 5)\" == 'Linux' ]; then\n "
},
{
"path": "benchmarks/benchmark-runner.js",
"chars": 2309,
"preview": "const Chart = require('chart.js');\nconst glob = require('glob');\nconst fs = require('fs-plus');\nconst path = require('pa"
},
{
"path": "benchmarks/text-editor-large-file-construction.bench.js",
"chars": 2420,
"preview": "const { TextEditor, TextBuffer } = require('atom');\n\nconst MIN_SIZE_IN_KB = 0 * 1024;\nconst MAX_SIZE_IN_KB = 10 * 1024;\n"
},
{
"path": "benchmarks/text-editor-long-lines.bench.js",
"chars": 2622,
"preview": "const path = require('path');\nconst fs = require('fs');\nconst { TextEditor, TextBuffer } = require('atom');\n\nconst SIZES"
},
{
"path": "coffeelint.json",
"chars": 607,
"preview": "{\n \"max_line_length\": {\n \"level\": \"ignore\"\n },\n \"no_empty_param_list\": {\n \"level\": \"error\"\n },\n \"arrow_spacin"
},
{
"path": "docs/README.md",
"chars": 698,
"preview": "# Atom Docs\n\n\n"
},
{
"path": "docs/apm-rest-api.md",
"chars": 183,
"preview": "# Atom.io package and update API\n\nThe information that was here has been moved to [a permanent home inside Atom's Flight"
},
{
"path": "docs/build-instructions/build-status.md",
"chars": 25142,
"preview": "# Atom build status\n\n> **Note**: Since Atom's electron version is outdated, the electron badges are from old versions.\n\n"
},
{
"path": "docs/build-instructions/linux.md",
"chars": 189,
"preview": "See the [Hacking on Atom Core](https://flight-manual.atom.io/hacking-atom/sections/hacking-on-atom-core/#platform-linux)"
},
{
"path": "docs/build-instructions/macOS.md",
"chars": 187,
"preview": "See the [Hacking on Atom Core](https://flight-manual.atom.io/hacking-atom/sections/hacking-on-atom-core/#platform-mac) s"
},
{
"path": "docs/build-instructions/windows.md",
"chars": 191,
"preview": "See the [Hacking on Atom Core](https://flight-manual.atom.io/hacking-atom/sections/hacking-on-atom-core/#platform-window"
},
{
"path": "docs/contributing-to-packages.md",
"chars": 96,
"preview": "See https://flight-manual.atom.io/hacking-atom/sections/contributing-to-official-atom-packages/\n"
},
{
"path": "docs/native-profiling.md",
"chars": 1077,
"preview": "# Profiling the Atom Render Process on macOS with Instruments\n\n\n\n## Summary\n\nThi"
},
{
"path": "docs/rfcs/003-consolidate-core-packages.md",
"chars": 22806,
"preview": "# Consolidate Core Atom Packages\n\n## Status\n\nAccepted\n\n## Summary\n\nAtom's official distribution is comprised of 92 core "
},
{
"path": "docs/rfcs/004-decoration-ordering.md",
"chars": 3187,
"preview": "# Decoration ordering\n\n## Status\n\nAccepted\n\n## Summary\n\nOrder block decoration items in the DOM in a deterministic and c"
},
{
"path": "docs/rfcs/005-grammar-comment-delims.md",
"chars": 4401,
"preview": "# Add comment delims to grammar declaration\n\n## Status\n\nProposed\n\n## Summary\n\nGrammars currently only sort of declare th"
},
{
"path": "docs/rfcs/005-pretranspile.md",
"chars": 3111,
"preview": "# Pre-transpiled Atom packages\n\n## Status\n\nProposed\n\n## Summary\n\nThis feature will enable package authors to use convent"
},
{
"path": "docs/rfcs/005-scope-naming.md",
"chars": 8319,
"preview": "# Semantic scope naming\n\n## Status\n\nProposed\n\n## Summary\n\nWhen deciding which scopes to apply, built-in grammars should "
},
{
"path": "dot-atom/.gitignore",
"chars": 79,
"preview": "blob-store\ncompile-cache\ndev\nstorage\n.apm\n.node-gyp\n.npm\n.atom-socket-secret-*\n"
},
{
"path": "dot-atom/init.coffee",
"chars": 386,
"preview": "# Your init script\n#\n# Atom will evaluate this file each time a new window is opened. It is run\n# after packages are loa"
},
{
"path": "dot-atom/keymap.cson",
"chars": 1333,
"preview": "# Your keymap\n#\n# Atom keymaps work similarly to style sheets. Just as style sheets use\n# selectors to apply styles to e"
},
{
"path": "dot-atom/packages/README.md",
"chars": 60,
"preview": "All packages in this directory will be automatically loaded\n"
},
{
"path": "dot-atom/snippets.cson",
"chars": 710,
"preview": "# Your snippets\n#\n# Atom snippets allow you to enter a simple prefix in the editor and hit tab to\n# expand the prefix in"
},
{
"path": "dot-atom/styles.less",
"chars": 712,
"preview": "/*\n * Your Stylesheet\n *\n * This stylesheet is loaded when Atom starts up and is reloaded automatically\n * when it is ch"
},
{
"path": "exports/atom.js",
"chars": 1280,
"preview": "const TextBuffer = require('text-buffer');\nconst { Point, Range } = TextBuffer;\nconst { File, Directory } = require('pat"
},
{
"path": "exports/clipboard.js",
"chars": 283,
"preview": "module.exports = require('electron').clipboard;\n\nconst Grim = require('grim');\nGrim.deprecate(\n 'Use `require(\"electron"
},
{
"path": "exports/ipc.js",
"chars": 281,
"preview": "module.exports = require('electron').ipcRenderer;\n\nconst Grim = require('grim');\nGrim.deprecate(\n 'Use `require(\"electr"
},
{
"path": "exports/remote.js",
"chars": 274,
"preview": "module.exports = require('electron').remote;\n\nconst Grim = require('grim');\nGrim.deprecate(\n 'Use `require(\"electron\")."
},
{
"path": "exports/shell.js",
"chars": 267,
"preview": "module.exports = require('electron').shell;\n\nconst Grim = require('grim');\nGrim.deprecate('Use `require(\"electron\").shel"
},
{
"path": "exports/web-frame.js",
"chars": 281,
"preview": "module.exports = require('electron').webFrame;\n\nconst Grim = require('grim');\nGrim.deprecate(\n 'Use `require(\"electron\""
},
{
"path": "keymaps/base.cson",
"chars": 2065,
"preview": "'atom-text-editor':\n # Platform Bindings\n 'home': 'editor:move-to-first-character-of-line'\n 'end': 'editor:move-to-en"
},
{
"path": "keymaps/darwin.cson",
"chars": 7928,
"preview": "'body':\n # Apple specific\n 'cmd-q': 'application:quit'\n 'cmd-h': 'application:hide'\n 'cmd-alt-h': 'application:hide-"
},
{
"path": "keymaps/linux.cson",
"chars": 5926,
"preview": "'body':\n # Atom Specific\n 'enter': 'core:confirm'\n 'escape': 'core:cancel'\n 'up': 'core:move-up'\n 'down': 'core:mov"
},
{
"path": "keymaps/win32.cson",
"chars": 5995,
"preview": "'body':\n # Platform Bindings\n 'ctrl-pageup': 'pane:show-previous-item'\n 'ctrl-pagedown': 'pane:show-next-item'\n\n # A"
},
{
"path": "menus/darwin.cson",
"chars": 11021,
"preview": "'menu': [\n {\n label: 'Atom'\n submenu: [\n { label: 'About Atom', command: 'application:about' }\n { label"
},
{
"path": "menus/linux.cson",
"chars": 10187,
"preview": "'menu': [\n {\n label: '&File'\n submenu: [\n { label: 'New &Window', command: 'application:new-window' }\n "
},
{
"path": "menus/win32.cson",
"chars": 10488,
"preview": "'menu': [\n {\n label: '&File'\n submenu: [\n { label: 'New &Window', command: 'application:new-window' }\n "
},
{
"path": "package.json",
"chars": 14297,
"preview": "{\n \"name\": \"atom\",\n \"productName\": \"Atom\",\n \"version\": \"1.61.0-dev\",\n \"description\": \"A hackable text editor for the"
},
{
"path": "packages/README.md",
"chars": 12594,
"preview": "# Atom Core Packages\n\nThis folder contains core packages that are bundled with Atom releases. Not all Atom core package"
},
{
"path": "packages/about/.gitignore",
"chars": 37,
"preview": ".DS_Store\nnpm-debug.log\nnode_modules\n"
},
{
"path": "packages/about/LICENSE.md",
"chars": 1064,
"preview": "Copyright (c) 2015 Machisté N. Quintana\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of"
},
{
"path": "packages/about/README.md",
"chars": 1038,
"preview": "# About package\n\nView useful information about your Atom installation.\n\n;\nconst AboutView = require('./components/about-view');\n\n// Defe"
},
{
"path": "packages/about/lib/components/about-status-bar.js",
"chars": 898,
"preview": "const { CompositeDisposable } = require('atom');\nconst etch = require('etch');\nconst EtchComponent = require('../etch-co"
},
{
"path": "packages/about/lib/components/about-view.js",
"chars": 6687,
"preview": "const { Disposable } = require('atom');\nconst etch = require('etch');\nconst { shell } = require('electron');\nconst AtomL"
},
{
"path": "packages/about/lib/components/atom-logo.js",
"chars": 4372,
"preview": "const etch = require('etch');\nconst EtchComponent = require('../etch-component');\n\nconst $ = etch.dom;\n\nmodule.exports ="
},
{
"path": "packages/about/lib/components/update-view.js",
"chars": 5504,
"preview": "const etch = require('etch');\nconst EtchComponent = require('../etch-component');\nconst UpdateManager = require('../upda"
},
{
"path": "packages/about/lib/etch-component.js",
"chars": 1276,
"preview": "const etch = require('etch');\n\n/*\n Public: Abstract class for handling the initialization\n boilerplate of an Etch comp"
},
{
"path": "packages/about/lib/main.js",
"chars": 2791,
"preview": "const { CompositeDisposable } = require('atom');\nconst semver = require('semver');\nconst UpdateManager = require('./upda"
},
{
"path": "packages/about/lib/update-manager.js",
"chars": 3852,
"preview": "const { Emitter, CompositeDisposable } = require('atom');\n\nconst Unsupported = 'unsupported';\nconst Idle = 'idle';\nconst"
},
{
"path": "packages/about/package.json",
"chars": 843,
"preview": "{\n \"name\": \"about\",\n \"author\": \"Machisté N. Quintana <mnquintana@users.noreply.github.com>\",\n \"main\": \"./lib/main\",\n "
},
{
"path": "packages/about/spec/about-spec.js",
"chars": 3790,
"preview": "describe('About', () => {\n let workspaceElement;\n\n beforeEach(async () => {\n let storage = {};\n\n spyOn(window.lo"
},
{
"path": "packages/about/spec/about-status-bar-spec.js",
"chars": 6466,
"preview": "const { conditionPromise } = require('./helpers/async-spec-helpers');\nconst MockUpdater = require('./mocks/updater');\n\nd"
},
{
"path": "packages/about/spec/helpers/async-spec-helpers.js",
"chars": 479,
"preview": "/** @babel */\n\nconst { now } = Date;\nconst { setTimeout } = global;\n\nexport async function conditionPromise(condition) {"
},
{
"path": "packages/about/spec/mocks/updater.js",
"chars": 524,
"preview": "module.exports = {\n updateError() {\n atom.autoUpdater.emitter.emit('update-error');\n },\n\n checkForUpdate() {\n a"
},
{
"path": "packages/about/spec/update-manager-spec.js",
"chars": 1077,
"preview": "const UpdateManager = require('../lib/update-manager');\n\ndescribe('UpdateManager', () => {\n let updateManager;\n\n befor"
},
{
"path": "packages/about/spec/update-view-spec.js",
"chars": 14636,
"preview": "const { shell } = require('electron');\nconst main = require('../lib/main');\nconst AboutView = require('../lib/components"
},
{
"path": "packages/about/styles/about.less",
"chars": 2797,
"preview": "@import \"ui-variables\";\n@import \"variables\";\n\n.about {\n display: flex;\n flex-direction: column;\n align-items: center;"
},
{
"path": "packages/about/styles/variables.less",
"chars": 22,
"preview": "@atom-green: #40a977;\n"
},
{
"path": "packages/atom-dark-syntax/LICENSE.md",
"chars": 1055,
"preview": "Copyright (c) 2014 GitHub Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this sof"
},
{
"path": "packages/atom-dark-syntax/README.md",
"chars": 340,
"preview": "# Atom Dark Syntax theme\n\nA dark syntax theme for Atom.\n\nThis theme is installed by default with Atom and can be activat"
},
{
"path": "packages/atom-dark-syntax/index.less",
"chars": 247,
"preview": "\n// Atom Dark Syntax theme\n\n@import \"styles/syntax-variables.less\";\n\n@import \"styles/editor.less\";\n@import \"styles/synta"
},
{
"path": "packages/atom-dark-syntax/package.json",
"chars": 231,
"preview": "{\n \"name\": \"atom-dark-syntax\",\n \"theme\": \"syntax\",\n \"version\": \"0.29.1\",\n \"description\": \"A dark theme for syntax\",\n"
},
{
"path": "packages/atom-dark-syntax/styles/editor.less",
"chars": 981,
"preview": "atom-text-editor {\n background-color: @syntax-background-color;\n color: @syntax-text-color;\n\n .invisible-character {\n"
},
{
"path": "packages/atom-dark-syntax/styles/syntax/base.less",
"chars": 3888,
"preview": "/*\n This defines styling rules for syntax classes.\n\n See the naming conventions for a list of syntax classes:\n htt"
},
{
"path": "packages/atom-dark-syntax/styles/syntax/css.less",
"chars": 1588,
"preview": ".syntax--source.syntax--css {\n\n .syntax--entity {\n\n // function()\n &.syntax--function {\n color: #C5C8C6;\n\n "
},
{
"path": "packages/atom-dark-syntax/styles/syntax/html.less",
"chars": 223,
"preview": ".syntax--source.syntax--html {\n\n .syntax--punctuation {\n\n // < />\n &.syntax--tag {\n color: #96CBFE;\n }\n "
},
{
"path": "packages/atom-dark-syntax/styles/syntax-legacy/_base.less",
"chars": 5384,
"preview": ".syntax--comment {\n color: #8a8a8a;\n}\n\n.syntax--entity {\n color: #FFD2A7;\n\n &.syntax--name.syntax--type {\n text-de"
},
{
"path": "packages/atom-dark-syntax/styles/syntax-variables.less",
"chars": 1489,
"preview": "// This defines all syntax variables that syntax themes must implement when they\n// include a syntax-variables.less file"
},
{
"path": "packages/atom-dark-ui/LICENSE.md",
"chars": 1055,
"preview": "Copyright (c) 2014 GitHub Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this sof"
},
{
"path": "packages/atom-dark-ui/README.md",
"chars": 329,
"preview": "# Atom Dark UI theme\n\nA dark UI theme for Atom.\n\nThis theme is installed by default with Atom and can be activated by go"
},
{
"path": "packages/atom-dark-ui/index.less",
"chars": 605,
"preview": "\n// Atom Dark UI theme\n\n\n@import \"styles/ui-variables.less\";\n@import \"styles/ui-mixins.less\";\n\n@import \"styles/atom.less"
},
{
"path": "packages/atom-dark-ui/package.json",
"chars": 224,
"preview": "{\n \"name\": \"atom-dark-ui\",\n \"theme\": \"ui\",\n \"version\": \"0.53.3\",\n \"description\": \"A dark UI theme for Atom\",\n \"lice"
},
{
"path": "packages/atom-dark-ui/styles/atom.less",
"chars": 429,
"preview": "* {\n\tbox-sizing: border-box;\n}\n\natom-workspace {\n background-color: @app-background-color;\n}\n\n.scrollbars-visible-alway"
},
{
"path": "packages/atom-dark-ui/styles/buttons.less",
"chars": 1325,
"preview": ".btn-background (@color, @hover-color, @selected-color, @text-color) {\n color: @text-color;\n background-color: transpa"
},
{
"path": "packages/atom-dark-ui/styles/dropdowns.less",
"chars": 297,
"preview": ".dropdown-menu {\n background-color: @overlay-background-color;\n border-radius: @component-border-radius;\n border: 1px"
},
{
"path": "packages/atom-dark-ui/styles/editor.less",
"chars": 715,
"preview": "atom-text-editor[mini] {\n color: @text-color-highlight;\n background-color: @input-background-color;\n border: 1px soli"
},
{
"path": "packages/atom-dark-ui/styles/git.less",
"chars": 200,
"preview": ".status { .text(normal); }\n.status-added { .text(success); }\n.status-ignored { .text(subtle); }\n.status-modified { .text"
},
{
"path": "packages/atom-dark-ui/styles/lists.less",
"chars": 3485,
"preview": "@import \"octicon-mixins.less\"; // https://github.com/atom/atom/blob/master/static/variables/octicon-mixins.less\n\n.list-g"
},
{
"path": "packages/atom-dark-ui/styles/messages.less",
"chars": 75,
"preview": "ul.background-message {\n font-weight: bold;\n color: rgba(0, 0, 0, .2);\n}\n"
},
{
"path": "packages/atom-dark-ui/styles/nav.less",
"chars": 495,
"preview": ".nav-tabs {\n border-bottom: 1px solid @base-border-color;\n li {\n a,\n &.active a {\n border: none;\n marg"
},
{
"path": "packages/atom-dark-ui/styles/overlays.less",
"chars": 897,
"preview": "atom-panel.modal, .overlay {\n color: @text-color;\n background-color: @overlay-background-color;\n padding: @component-"
},
{
"path": "packages/atom-dark-ui/styles/panels.less",
"chars": 1387,
"preview": "@import \"buttons.less\";\n\n.panel {\n &.bordered {\n border: 1px solid @base-border-color;\n border-radius: @component"
},
{
"path": "packages/atom-dark-ui/styles/panes.less",
"chars": 524,
"preview": ".pane-item {\n .panel {\n border-color: fadeout(@inset-panel-border-color, 30%);\n }\n}\n\natom-pane-container {\n atom-p"
},
{
"path": "packages/atom-dark-ui/styles/progress.less",
"chars": 1664,
"preview": ".loading-spinner(@size) {\n width: @size;\n height: @size;\n display: block;\n\n background-image: url(images/octocat-spi"
},
{
"path": "packages/atom-dark-ui/styles/sites.less",
"chars": 237,
"preview": ".ui-site(@num, @color) {\n .ui-site-@{num} {\n background-color: @color;\n }\n}\n\n.ui-site(1, @ui-site-color-1);\n.ui-sit"
},
{
"path": "packages/atom-dark-ui/styles/tabs.less",
"chars": 3634,
"preview": "@tab-radius: 3px;\n@modified-icon-width: 8px;\n@tab-skew: 30deg;\n@tab-top-padding: 5px;\n@tab-bottom-border-height: 5px;\n@t"
},
{
"path": "packages/atom-dark-ui/styles/text.less",
"chars": 1805,
"preview": "h1,\nh2,\nh3 {\n line-height: 1em;\n margin-bottom: 15px\n}\nh1 { font-size: 2em; }\nh2 { font-size: 1.5em; }\nh3 { font-size:"
},
{
"path": "packages/atom-dark-ui/styles/tooltips.less",
"chars": 1094,
"preview": ".tooltip {\n @tip-background-color: #fff;\n @tip-text-color: #333;\n white-space: nowrap;\n\n .keystroke {\n font-famil"
},
{
"path": "packages/atom-dark-ui/styles/tree-view.less",
"chars": 594,
"preview": ".tree-view {\n font-size: @font-size;\n background: @tree-view-background-color;\n\n .selected:before {\n background: #"
},
{
"path": "packages/atom-dark-ui/styles/ui-mixins.less",
"chars": 698,
"preview": "// Pattern matching; ish is cray.\n// http://lesscss.org/#-pattern-matching-and-guard-expressions\n.text(normal) {\n font-"
},
{
"path": "packages/atom-dark-ui/styles/ui-variables.less",
"chars": 2483,
"preview": "// Colors\n\n@text-color: #aaa;\n@text-color-subtle: #555;\n@text-color-highlight: #fff;\n@text-color-selected: @text-color-h"
},
{
"path": "packages/atom-dark-ui/styles/utilities.less",
"chars": 491,
"preview": ".key-binding {\n background: -webkit-linear-gradient(\n rgba(100, 100, 100, 0.5),\n rgba(70,70,70, 0.5));\n -webkit-"
},
{
"path": "packages/atom-light-syntax/LICENSE.md",
"chars": 1055,
"preview": "Copyright (c) 2014 GitHub Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this sof"
},
{
"path": "packages/atom-light-syntax/README.md",
"chars": 342,
"preview": "# Atom Light Syntax theme\n\nA light syntax theme for Atom.\n\nThis theme is installed by default with Atom and can be activ"
},
{
"path": "packages/atom-light-syntax/index.less",
"chars": 213,
"preview": "\n// Atom Light Syntax theme\n\n@import \"styles/syntax-variables.less\";\n\n@import 'styles/editor.less';\n@import 'styles/synt"
},
{
"path": "packages/atom-light-syntax/package.json",
"chars": 229,
"preview": "{\n \"name\": \"atom-light-syntax\",\n \"theme\": \"syntax\",\n \"version\": \"0.29.1\",\n \"description\": \"A light syntax theme\",\n "
},
{
"path": "packages/atom-light-syntax/styles/editor.less",
"chars": 1026,
"preview": "atom-text-editor {\n background-color: @syntax-background-color;\n color: @syntax-text-color;\n\n .invisible-character {\n"
},
{
"path": "packages/atom-light-syntax/styles/syntax/base.less",
"chars": 3384,
"preview": "/*\n This defines styling rules for syntax classes.\n\n See the naming conventions for a list of syntax classes:\n htt"
},
{
"path": "packages/atom-light-syntax/styles/syntax/css.less",
"chars": 1676,
"preview": ".syntax--source.syntax--css {\n\n .syntax--entity {\n\n // function()\n &.syntax--function {\n color: #555;\n\n "
},
{
"path": "packages/atom-light-syntax/styles/syntax-legacy/_base.less",
"chars": 3080,
"preview": ".syntax--comment {\n color: #999988;\n font-style: italic;\n}\n\n.syntax--string {\n color: #D14;\n}\n\n// String interpolatio"
},
{
"path": "packages/atom-light-syntax/styles/syntax-variables.less",
"chars": 1443,
"preview": "// This defines all syntax variables that syntax themes must implement when they\n// include a syntax-variables.less file"
},
{
"path": "packages/atom-light-ui/LICENSE.md",
"chars": 1055,
"preview": "Copyright (c) 2014 GitHub Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this sof"
},
{
"path": "packages/atom-light-ui/README.md",
"chars": 331,
"preview": "# Atom Light UI theme\n\nA light UI theme for Atom.\n\nThis theme is installed by default with Atom and can be activated by "
},
{
"path": "packages/atom-light-ui/index.less",
"chars": 578,
"preview": "\n// Atom Light UI theme\n\n@import \"styles/ui-variables.less\";\n@import \"styles/ui-mixins.less\";\n\n@import \"styles/atom.less"
},
{
"path": "packages/atom-light-ui/package.json",
"chars": 230,
"preview": "{\n \"name\": \"atom-light-ui\",\n \"theme\": \"ui\",\n \"version\": \"0.46.3\",\n \"description\": \"A light UI theme for Atom\",\n \"re"
},
{
"path": "packages/atom-light-ui/styles/atom.less",
"chars": 395,
"preview": "atom-workspace {\n background-color: @app-background-color;\n}\n\n.scrollbars-visible-always {\n ::-webkit-scrollbar {\n "
},
{
"path": "packages/atom-light-ui/styles/buttons.less",
"chars": 1784,
"preview": ".btn-background (@color, @hover-color, @selected-color, @border-color, @text-color, @text-color-hover) {\n @border-shado"
},
{
"path": "packages/atom-light-ui/styles/editor.less",
"chars": 903,
"preview": "atom-text-editor[mini] {\n color: lighten(@text-color, 15%);\n background-color: darken(@input-background-color, 1%);\n "
},
{
"path": "packages/atom-light-ui/styles/git.less",
"chars": 200,
"preview": ".status { .text(normal); }\n.status-added { .text(success); }\n.status-ignored { .text(subtle); }\n.status-modified { .text"
},
{
"path": "packages/atom-light-ui/styles/lists.less",
"chars": 3517,
"preview": "@import \"octicon-mixins.less\"; // https://github.com/atom/atom/blob/master/static/variables/octicon-mixins.less\n\n.list-g"
},
{
"path": "packages/atom-light-ui/styles/messages.less",
"chars": 76,
"preview": "ul.background-message {\n font-weight: bold;\n color: rgba(0, 0, 0, .18);\n}\n"
},
{
"path": "packages/atom-light-ui/styles/overlays.less",
"chars": 1084,
"preview": "atom-panel.modal, .overlay {\n color: @text-color;\n background-color: @overlay-background-color;\n padding: @component-"
},
{
"path": "packages/atom-light-ui/styles/panels.less",
"chars": 1313,
"preview": "@import \"buttons.less\";\n\n.panel {\n &.bordered {\n border: 1px solid @base-border-color;\n border-radius: @component"
},
{
"path": "packages/atom-light-ui/styles/panes.less",
"chars": 434,
"preview": "atom-pane-container {\n atom-pane {\n background-color: lighten(@app-background-color, 3%);\n\n &:focus {\n backg"
},
{
"path": "packages/atom-light-ui/styles/progress.less",
"chars": 1661,
"preview": ".loading-spinner(@size) {\n width: @size;\n height: @size;\n display: block;\n\n background-image: url(images/octocat-spi"
},
{
"path": "packages/atom-light-ui/styles/sites.less",
"chars": 237,
"preview": ".ui-site(@num, @color) {\n .ui-site-@{num} {\n background-color: @color;\n }\n}\n\n.ui-site(1, @ui-site-color-1);\n.ui-sit"
},
{
"path": "packages/atom-light-ui/styles/tabs.less",
"chars": 3476,
"preview": "@tab-radius: 3px;\n@modified-icon-width: 8px;\n@tab-skew: 30deg;\n@tab-top-padding: 5px;\n@tab-bottom-border-height: 5px;\n@t"
},
{
"path": "packages/atom-light-ui/styles/text.less",
"chars": 1544,
"preview": "h1,\nh2,\nh3 {\n line-height: 1em;\n margin-bottom: 15px\n}\nh1 { font-size: 2em; }\nh2 { font-size: 1.5em; }\nh3 { font-size:"
},
{
"path": "packages/atom-light-ui/styles/tooltips.less",
"chars": 1097,
"preview": ".tooltip {\n @tip-background-color: #333;\n @tip-text-color: #fff;\n white-space: nowrap;\n\n .keystroke {\n font-famil"
},
{
"path": "packages/atom-light-ui/styles/tree-view.less",
"chars": 643,
"preview": ".tree-view {\n\tfont-size: @font-size;\n\tbackground: @tree-view-background-color;\n\n\t.selected:before {\n\t\tbackground: #d0d0d"
},
{
"path": "packages/atom-light-ui/styles/ui-mixins.less",
"chars": 741,
"preview": "// Pattern matching; ish is cray.\n// http://lesscss.org/#-pattern-matching-and-guard-expressions\n.text(normal) {\n font-"
},
{
"path": "packages/atom-light-ui/styles/ui-variables.less",
"chars": 2408,
"preview": "// Colors\n\n@text-color: #444;\n@text-color-subtle: #999;\n@text-color-highlight: #000;\n@text-color-selected: #fff;\n\n@text-"
},
{
"path": "packages/atom-light-ui/styles/utilities.less",
"chars": 427,
"preview": ".key-binding {\n background: #fff;\n border: 1px solid lighten(@base-border-color, 20%);\n text-shadow: none;\n display:"
},
{
"path": "packages/autoflow/.coffeelintignore",
"chars": 14,
"preview": "spec/fixtures\n"
},
{
"path": "packages/autoflow/.gitignore",
"chars": 13,
"preview": "node_modules\n"
},
{
"path": "packages/autoflow/LICENSE.md",
"chars": 1055,
"preview": "Copyright (c) 2014 GitHub Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this sof"
},
{
"path": "packages/autoflow/README.md",
"chars": 335,
"preview": "# Autoflow package\n\nFormat the current selection to have lines no longer than 80 characters using `cmd-alt-q` on macOS a"
},
{
"path": "packages/autoflow/coffeelint.json",
"chars": 607,
"preview": "{\n \"max_line_length\": {\n \"level\": \"ignore\"\n },\n \"no_empty_param_list\": {\n \"level\": \"error\"\n },\n \"arrow_spacin"
},
{
"path": "packages/autoflow/keymaps/autoflow.cson",
"chars": 197,
"preview": "'.platform-darwin atom-text-editor':\n 'alt-cmd-q': 'autoflow:reflow-selection'\n\n'.platform-win32 atom-text-editor, .pla"
},
{
"path": "packages/autoflow/lib/autoflow.coffee",
"chars": 5245,
"preview": "_ = require 'underscore-plus'\n\nCharacterPattern = ///\n [\n ^\\s\n ]\n///\n\nmodule.exports =\n activate: ->\n @commandD"
},
{
"path": "packages/autoflow/menus/autoflow.cson",
"chars": 162,
"preview": "'menu': [\n {\n 'label': 'Edit'\n 'submenu': [\n {\n 'label': 'Reflow Selection'\n 'command': 'autof"
},
{
"path": "packages/autoflow/package.json",
"chars": 563,
"preview": "{\n \"name\": \"autoflow\",\n \"version\": \"0.29.4\",\n \"main\": \"./lib/autoflow\",\n \"description\": \"Format the current selectio"
},
{
"path": "packages/autoflow/spec/autoflow-spec.coffee",
"chars": 34058,
"preview": "describe \"Autoflow package\", ->\n [autoflow, editor, editorElement] = []\n tabLength = 4\n\n describe \"autoflow:reflow-se"
},
{
"path": "packages/base16-tomorrow-dark-theme/LICENSE.md",
"chars": 1055,
"preview": "Copyright (c) 2014 GitHub Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this sof"
},
{
"path": "packages/base16-tomorrow-dark-theme/README.md",
"chars": 557,
"preview": "# Base16 Tomorrow Dark Syntax theme\n\nAtom theme using the ever popular [Base16 Tomorrow](http://chriskempson.com/project"
},
{
"path": "packages/base16-tomorrow-dark-theme/index.less",
"chars": 299,
"preview": "\n// Base16 Tomorrow Dark theme\n\n@import \"styles/syntax-variables.less\";\n\n@import \"styles/editor.less\";\n\n@import \"styles/"
},
{
"path": "packages/base16-tomorrow-dark-theme/package.json",
"chars": 303,
"preview": "{\n \"name\": \"base16-tomorrow-dark-theme\",\n \"theme\": \"syntax\",\n \"version\": \"1.6.0\",\n \"description\": \"Base16 dark theme"
},
{
"path": "packages/base16-tomorrow-dark-theme/styles/colors.less",
"chars": 634,
"preview": "\n// Base16 Tomorrow\n// A color scheme by Chris Kempson (http://chriskempson.com)\n\n// Grayscale\n@black: #1d1f21"
},
{
"path": "packages/base16-tomorrow-dark-theme/styles/editor.less",
"chars": 1193,
"preview": "\n// Editor styles (background, gutter, guides)\n\natom-text-editor {\n background-color: @syntax-background-color;\n color"
},
{
"path": "packages/base16-tomorrow-dark-theme/styles/syntax/base.less",
"chars": 4167,
"preview": "/*\n This defines styling rules for syntax classes.\n\n See the naming conventions for a list of syntax classes:\n htt"
},
{
"path": "packages/base16-tomorrow-dark-theme/styles/syntax/css.less",
"chars": 1685,
"preview": ".syntax--source.syntax--css {\n\n .syntax--entity {\n\n // function()\n &.syntax--function {\n color: @syntax-text"
},
{
"path": "packages/base16-tomorrow-dark-theme/styles/syntax-legacy/_base.less",
"chars": 3707,
"preview": "\n// Language syntax highlighting\n\n.syntax--comment {\n color: @gray;\n\n .syntax--markup.syntax--link {\n color: @gray;"
},
{
"path": "packages/base16-tomorrow-dark-theme/styles/syntax-legacy/cs.less",
"chars": 93,
"preview": ".syntax--source.syntax--cs {\n .syntax--keyword.syntax--operator {\n color: @purple;\n }\n}\n"
},
{
"path": "packages/base16-tomorrow-dark-theme/styles/syntax-legacy/json.less",
"chars": 696,
"preview": ".syntax--source.syntax--json {\n .syntax--meta.syntax--structure.syntax--dictionary.syntax--json {\n & > .syntax--stri"
},
{
"path": "packages/base16-tomorrow-dark-theme/styles/syntax-variables.less",
"chars": 1492,
"preview": "@import \"colors.less\";\n\n// Official Syntax Variables\n\n// General colors\n@syntax-text-color: @very-light-gray;"
},
{
"path": "packages/base16-tomorrow-light-theme/LICENSE.md",
"chars": 1055,
"preview": "Copyright (c) 2014 GitHub Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this sof"
},
{
"path": "packages/base16-tomorrow-light-theme/README.md",
"chars": 563,
"preview": "# Base16 Tomorrow Light Syntax theme\n\nAtom theme using the ever popular [Base16 Tomorrow](http://chriskempson.github.io/"
},
{
"path": "packages/base16-tomorrow-light-theme/index.less",
"chars": 294,
"preview": "\n// Base16 Tomorrow Light\n\n@import \"styles/syntax-variables.less\";\n\n@import \"styles/editor.less\";\n\n@import \"styles/synta"
},
{
"path": "packages/base16-tomorrow-light-theme/package.json",
"chars": 306,
"preview": "{\n \"name\": \"base16-tomorrow-light-theme\",\n \"theme\": \"syntax\",\n \"version\": \"1.6.0\",\n \"description\": \"Base16 light the"
},
{
"path": "packages/base16-tomorrow-light-theme/styles/colors.less",
"chars": 634,
"preview": "\n// Base16 Tomorrow\n// A color scheme by Chris Kempson (http://chriskempson.com)\n\n// Grayscale\n@black: #1d1f21"
},
{
"path": "packages/base16-tomorrow-light-theme/styles/editor.less",
"chars": 1193,
"preview": "\n// Editor styles (background, gutter, guides)\n\natom-text-editor {\n background-color: @syntax-background-color;\n color"
},
{
"path": "packages/base16-tomorrow-light-theme/styles/syntax/base.less",
"chars": 4167,
"preview": "/*\n This defines styling rules for syntax classes.\n\n See the naming conventions for a list of syntax classes:\n htt"
},
{
"path": "packages/base16-tomorrow-light-theme/styles/syntax/css.less",
"chars": 1685,
"preview": ".syntax--source.syntax--css {\n\n .syntax--entity {\n\n // function()\n &.syntax--function {\n color: @syntax-text"
},
{
"path": "packages/base16-tomorrow-light-theme/styles/syntax-legacy/_base.less",
"chars": 3707,
"preview": "\n// Language syntax highlighting\n\n.syntax--comment {\n color: @gray;\n\n .syntax--markup.syntax--link {\n color: @gray;"
},
{
"path": "packages/base16-tomorrow-light-theme/styles/syntax-legacy/cs.less",
"chars": 93,
"preview": ".syntax--source.syntax--cs {\n .syntax--keyword.syntax--operator {\n color: @purple;\n }\n}\n"
},
{
"path": "packages/base16-tomorrow-light-theme/styles/syntax-legacy/json.less",
"chars": 696,
"preview": ".syntax--source.syntax--json {\n .syntax--meta.syntax--structure.syntax--dictionary.syntax--json {\n & > .syntax--stri"
},
{
"path": "packages/base16-tomorrow-light-theme/styles/syntax-variables.less",
"chars": 1467,
"preview": "@import \"colors.less\";\n\n// Official Syntax Variables\n\n// General colors\n@syntax-text-color: @black;\n@syntax-c"
},
{
"path": "packages/dalek/.gitignore",
"chars": 37,
"preview": ".DS_Store\nnpm-debug.log\nnode_modules\n"
},
{
"path": "packages/dalek/LICENSE.md",
"chars": 1056,
"preview": "Copyright (c) 2016 GitHub, Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of this so"
},
{
"path": "packages/dalek/README.md",
"chars": 795,
"preview": "# dalek\n\n**EXTERMINATEs** core packages installed in `~/.atom/packages`.\n\n## Why worry?\n\nWhen people install core Atom p"
},
{
"path": "packages/dalek/lib/dalek.js",
"chars": 1253,
"preview": "/** @babel */\n\nconst fs = require('fs');\nconst path = require('path');\n\nmodule.exports = {\n async enumerate() {\n if "
},
{
"path": "packages/dalek/lib/main.js",
"chars": 650,
"preview": "/** @babel */\n\nconst dalek = require('./dalek');\nconst Grim = require('grim');\n\nmodule.exports = {\n activate() {\n at"
},
{
"path": "packages/dalek/package.json",
"chars": 582,
"preview": "{\n \"name\": \"dalek\",\n \"main\": \"./lib/main\",\n \"version\": \"0.2.2\",\n \"description\": \"EXTERMINATEs built-in packages inst"
},
{
"path": "packages/dalek/test/dalek.test.js",
"chars": 3008,
"preview": "/** @babel */\n\nconst assert = require('assert');\nconst fs = require('fs');\nconst sinon = require('sinon');\nconst path = "
},
{
"path": "packages/dalek/test/runner.js",
"chars": 131,
"preview": "const createRunner = require('atom-mocha-test-runner').createRunner;\nmodule.exports = createRunner({ testSuffixes: ['tes"
},
{
"path": "packages/deprecation-cop/.coffeelintignore",
"chars": 14,
"preview": "spec/fixtures\n"
},
{
"path": "packages/deprecation-cop/.gitignore",
"chars": 37,
"preview": ".DS_Store\nnpm-debug.log\nnode_modules\n"
},
{
"path": "packages/deprecation-cop/LICENSE.md",
"chars": 1060,
"preview": "Copyright (c) 2011-2018 GitHub Inc.\n\nPermission is hereby granted, free of charge, to any person obtaining\na copy of thi"
},
{
"path": "packages/deprecation-cop/README.md",
"chars": 346,
"preview": "# Deprecation Cop package\n\nShows a list of deprecated methods calls. Ideally it should show nothing!\n\n![https://github-i"
},
{
"path": "packages/deprecation-cop/coffeelint.json",
"chars": 607,
"preview": "{\n \"max_line_length\": {\n \"level\": \"ignore\"\n },\n \"no_empty_param_list\": {\n \"level\": \"error\"\n },\n \"arrow_spacin"
},
{
"path": "packages/deprecation-cop/lib/deprecation-cop-status-bar-view.coffee",
"chars": 2328,
"preview": "{CompositeDisposable, Disposable} = require 'atom'\n_ = require 'underscore-plus'\nGrim = require 'grim'\n\nmodule.exports ="
},
{
"path": "packages/deprecation-cop/lib/deprecation-cop-view.js",
"chars": 17531,
"preview": "/** @babel */\n/** @jsx etch.dom */\n\nimport _ from 'underscore-plus';\nimport { CompositeDisposable } from 'atom';\nimport "
},
{
"path": "packages/deprecation-cop/lib/main.js",
"chars": 1414,
"preview": "const { Disposable, CompositeDisposable } = require('atom');\nconst DeprecationCopView = require('./deprecation-cop-view'"
},
{
"path": "packages/deprecation-cop/package.json",
"chars": 651,
"preview": "{\n \"name\": \"deprecation-cop\",\n \"main\": \"./lib/main\",\n \"version\": \"0.56.9\",\n \"description\": \"Shows a list of deprecat"
},
{
"path": "packages/deprecation-cop/spec/deprecation-cop-spec.coffee",
"chars": 1269,
"preview": "DeprecationCopView = require '../lib/deprecation-cop-view'\n\ndescribe \"DeprecationCop\", ->\n [activationPromise, workspac"
},
{
"path": "packages/deprecation-cop/spec/deprecation-cop-status-bar-view-spec.coffee",
"chars": 2724,
"preview": "path = require 'path'\nGrim = require 'grim'\nDeprecationCopView = require '../lib/deprecation-cop-view'\n_ = require 'unde"
}
]
// ... and 1092 more files (download for full content)
About this extraction
This page contains the full source code of the jacob-lcs/atom GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1292 files (5.7 MB), approximately 1.6M tokens, and a symbol index with 3886 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.