# atom-ternjs **Repository Path**: nur/atom-ternjs ## Basic Information - **Project Name**: atom-ternjs - **Description**: No description available - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-10-22 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # atom-ternjs > JavaScript code intelligence for atom with [Tern](https://github.com/ternjs/tern). Adds support for ES5, ES6, ES7, ES8, Node.js and more. Extendable via plugins. Uses suggestion provider by [autocomplete-plus](https://github.com/atom/autocomplete-plus). ## Get started (configure your project) * Open any JavaScript file from within your project * Navigate to Packages -> Atom Ternjs -> Configure project * The config view appears. Configure to your needs. * Hit "Save & Restart Server" to create/update the .tern-project file. The configuration is now active. ## Get started (in case you can't use configure your project) * In your project root create a file named .tern-project. See docs @ http://ternjs.net/doc/manual.html#configuration. * Restart the server via *Packages -> Atom Ternjs -> Restart server* Example `.tern-project` file (customize to your own needs): ```json { "ecmaVersion": 8, "libs": [ "browser" ], "loadEagerly": [ "path/to/your/js/**/*.js" ], "dontLoad": [ "node_modules/**", "path/to/your/js/**/*.js" ], "plugins": { "es_modules": {}, "node": {}, "doc_comment": { "fullDocs": true, "strong": true } } } ``` ### EcmaVersion * 5: use ECMAScript5 * 6: use ECMAScript6 * 7: use ECMAScript7 * 8: use ECMAScript8 (default) ### Libs * browser: completion for browser features like document.querySelector (optional) * chai: completion for chai (optional) * jquery: completion for jQuery (optional) * react: completion for React (optional) * underscore: completion for underscore (optional) ### Options * loadEagerly: provide the path to your projects JavaScript. For relative paths do not use `./` as a prefix. This sometimes leads to an unexpected behaviour. * **loadEagerly is expensive. Do not add paths like `node_modules`.** * dontLoad: can be used to prevent Tern from loading certain files. It also takes an array of file names or glob patterns. ### Plugins * For a list of build in server plugins, visit: http://ternjs.net/doc/manual.html#plugins ### Example configurations * RequireJS: https://github.com/tststs/atom-ternjs-using-requirejs ### Keybindings List of [keybindings](#features). To use your own keybindings goto `atom-ternjs` package settings and disable keybindings. ## Third party plugins In order to use third party plugins (e.g. [tern-node-express](https://github.com/angelozerr/tern-node-express)): ``` $ cd ~/.atom/packages/atom-ternjs $ npm install tern-node-express ``` Add the plugin to your .tern-project file: ```json { "ecmaVersion": 8, "libs": [ "browser" ], "loadEagerly": [ "app/**/*.js" ], "plugins": { "node-express": {} } } ``` Third party plugins are still an issue and sometimes do not work as expected, especially if the plugin requires a tern version that does not match the tern version that is used by atom-ternjs. Restart the server: *Packages -> Atom Ternjs -> Restart server* ## .tern-project created/modified * After the file was created or has been modified, restart the server via *Packages -> Atom Ternjs -> Restart server* ## Features * Completion (autocompletion triggers automatically), or via the keybindings: * ctrl+space * ctrl+alt+space (force autocompletion in any context) ![atom-ternjs](http://www.tobias-schubert.com/github/completion-1.png) ![atom-ternjs](http://www.tobias-schubert.com/github/completion-2.png) * Find references (set your cursor position to one of variable, function or instance -> open context-menu and trigger "Find references" or use the keybindings: * ctrl+shift+r (macOS, Windows) * ctrl+alt+shift+e (Linux) Click any item in the generated reference-list and navigate directly to file and position ![atom-ternjs](http://www.tobias-schubert.com/github/reference-1.png) * Documentation * Show documentation for the thing under the cursor via alt+o (macOS, Windows, Linux) ![atom-ternjs](http://www.tobias-schubert.com/github/docs.png) * Also displayed if a suggestion with a valid documentation is selected in the autocomplete-plus select-list * Find definition (set your cursor position to one of variable, function or instance -> open context-menu and trigger "Find definition") or use the keybindings: * cmd+click (macOS, Windows, Linux), requires https://atom.io/packages/hyperclick. Since cmd+click is also used for multi-line editing in macOS you should change the default hyperclick settings. * ctrl+alt+shift+d (macOS, Windows, Linux) * Navigate back or forward * ctrl+shift+cmd+left (macOS, Windows, Linux) * ctrl+shift+cmd+right (macOS, Windows, Linux) * Rename variable (set your cursor position to a variable -> open context-menu and trigger "Rename") or use the keybindings: * ctrl+alt+c (macOS, Windows) * ctrl+alt+shift+c (Linux)