• Packages
  • Themes
  • Documentation
  • Blog
  • Discussions
Sign in

atom-ternjs

JavaScript code intelligence for atom with tern. Adds support for ES5, ES6, ES7, ES8, Node.js and more. Extendable via plugins.
  • #javascript
  • #autocomplete-plus
  • #autocomplete
  • #node
  • #es6
tststs
0.20.0 1,687,087
939
  • Repo
  • Bugs
  • Versions
  • License
Flag as spam or malicious

atom-ternjs

JavaScript code intelligence for atom with Tern. Adds support for ES5, ES6, ES7, ES8, Node.js and more. Extendable via plugins. Uses suggestion provider by 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):

{
  "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. 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):

$ cd ~/.atom/packages/atom-ternjs
$ npm install tern-node-express

Add the plugin to your .tern-project file:

{
  "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

atom-ternjs

  • 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

  • Documentation

    • Show documentation for the thing under the cursor via alt+o (macOS, Windows, Linux) atom-ternjs
    • 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)

I think this package is bad news.

Good catch. Let us know what about this package looks wrong to you, and we'll investigate right away.

  • Terms of Use
  • Privacy
  • Code of Conduct
  • Releases
  • FAQ
  • Contact
with by