Index: docs/atom.md |
diff --git a/docs/atom.md b/docs/atom.md |
new file mode 100644 |
index 0000000000000000000000000000000000000000..999b3844200ea7952a773ec8490f38954074519a |
--- /dev/null |
+++ b/docs/atom.md |
@@ -0,0 +1,130 @@ |
+# Atom |
+ |
+[TOC] |
+ |
+## Workflow |
+ |
+A typical Atom workflow consists of the following. |
+ |
+1. Use `Ctrl-Shift-R` to find a symbol in the `.tags` file or `Ctrl-P` to find |
+ a file by name. |
+2. Switch between the header and the source using `Alt-O`. |
+3. While editing, `you-complete-me` package helps with C++ auto-completion and |
+ shows compile errors through `lint` package. |
+4. Press `Ctrl-Shift-P` and type `format<Enter>` to format the code. |
+5. Select the target to build by pressing `F7` and typing, for example, |
+ `base_unittests`. |
+6. Rebuild again by pressing `F9`. |
+ |
+## Atom packages |
+ |
+To setup this workflow, install Atom packages for Chrome development. |
+ |
+``` |
+$ apm install build-ninja clang-format \ |
+ linter linter-eslint switch-header-source you-complete-me |
+``` |
+ |
+## Autocomplete |
+ |
+Install C++ auto-completion engine. |
+ |
+``` |
+$ git clone https://github.com/Valloric/ycmd.git ~/.ycmd |
+$ cd ~/.ycmd |
+$ ./build.py --clang-completer |
+``` |
+ |
+## JavaScript lint |
+ |
+Install JavaScript linter for Blink layout tests. |
+ |
+``` |
+$ npm install -g eslint eslint-config-google |
+``` |
+ |
+Configure the JavaScript linter to use the Google style by default by replacing |
+the contents of `~/.eslintrc` with the following. |
+ |
+``` |
+{ |
+ "extends": "google", |
+ "env": { |
+ "browser": true |
+ } |
+} |
+``` |
+ |
+## Configuration |
+ |
+Configure Atom by replacing the contents of `~/.atom/config.cson` with the |
+following. Replace `<path-of-your-home-dir>` and |
+`<path-of-your-chrome-checkout>` with the actual full paths of your home |
+directory and chrome checkout. For example, these can be `/Users/bob` and |
+`/Users/bob/chrome/src`. |
+ |
+``` |
+"*": |
+ # Configure ninja builder. |
+ "build-ninja": |
+ ninjaOptions: [ |
+ # The number of jobs to use when running ninja. Adjust to taste. |
+ "-j10" |
+ ] |
+ subdirs: [ |
+ # The location of your build.ninja file. |
+ "out/gn" |
+ ] |
+ # Do not auto-format entire files on save. |
+ "clang-format": |
+ formatCOnSave: false |
+ formatCPlusPlusOnSave: false |
+ core: |
+ # Treat .h files as C++. |
+ customFileTypes: |
+ "source.cpp": [ |
+ "h" |
+ ] |
+ # Don't send metrics if you're working on anything sensitive. |
+ disabledPackages: [ |
+ "metrics" |
+ "exception-reporting" |
+ ] |
+ # Use spaces instead of tabs. |
+ editor: |
+ tabType: "soft" |
+ # Show lint errors only when you save the file. |
+ linter: |
+ lintOnFly: false |
+ # Configure JavaScript lint. |
+ "linter-eslint": |
+ eslintrcPath: "<path-of-your-home-dir>/.eslintrc" |
+ useGlobalEslint: true |
+ # Don't show ignored files in the project file browser. |
+ "tree-view": |
+ hideIgnoredNames: true |
+ hideVcsIgnoredFiles: true |
+ # Configure C++ autocomplete and lint. |
+ "you-complete-me": |
+ globalExtraConfig: "<path-of-your-chrome-checkout>/tools/vim/chromium.ycm_extra_conf.py" |
+ ycmdPath: "<path-of-your-home-dir>/.ycmd/" |
+# Java uses 4 space indents and 100 character lines. |
+".java.source": |
+ editor: |
+ preferredLineLength: 100 |
+ tabLength: 4 |
+``` |
+ |
+## Symbol lookup |
+ |
+Atom fuzzy file finder is slow to index all files in Chrome. If you're working |
+on a project that frequently uses `foo` or `bar` in files names, you can create |
+a small `.tags` file to efficiently search the symbols within these files. Be |
+sure to use "Exuberant Ctags." |
+ |
+``` |
+$ git ls | egrep -i "foo|bar" | ctags -f .tags -L - |
+``` |
+ |
+Don't create a ctags file for the full Chrome repository, as that would result |
+in ~9GB tag file that will not be usable in Atom. |