Tern Advanced Completion - angelozerr/tern.java GitHub Wiki
Advanced completion
Tern uses JSON Type Definition to define a JavaScript framework. Tern IDE uses this information :
- to provides completion.
- to apply completion item.
Since 0.7.0, Tern IDE provides two settings for content assist :

- Generate anonymous function : to generate anonymous function with well parameters when compeltion is applied for parameter which defines a function.
- Expand function : to shows a compeltion item per function which defines optional parameters.
Generate anonymous function
"Generate anonymous function" option which is used to generate anonymous function (if completion item has a function as parameter when completion item is applied.
TODO : add a preference page to enable/disable this option.
Takes a sample with Node#addEventListener(type: string, listener: fn(e: +Event), capture: bool). The method addEventListener of the node waits a listener function which can be an anonymous function :
var elt = document.getElementById('MyId');
elt.addEventListener('click', function(e)) {
}, capture)
browser.json JSON Type Definition, defines 'addEventListener' like this :
"addEventListener": {
"!type": "fn(type: string, listener: fn(e: +Event), capture: bool)",
},
Tern IDE is enable to use this listener signature, to generate automatically the anonymous function when completion item is applied.
Takes a sample. Here how Tern IDE can help you to write this JavaScript :
var elt = document.getElementById('MyId');
elt.addEventListener('click', function(e)) {
}, capture)
Open completion for methods of document :

Do the same thing for elt variable :

Now let's see how to "generate anonymous function" option can help you. Select addEventListener.
The completion applied, uses JSON Type Definition to generate addEventListener parameters and an anonymous function for listener parameter with a e parameter :

After applying completion, the first parameter type is selected, change it if you wish :

Click on Tab to select the next parameter e , change it if you wish :

Click on Tab to select the focus inside the generated anonymous function :

You can use Tab to select anew parameter type. Click on Esc to break this mode.
Note that, tern knows that e variable is an Event type. You can open completion for e :

Expand function
With expand selected :

Without expand selected :
