(ts, cm, c)
| 205 | // Completion |
| 206 | |
| 207 | function hint(ts, cm, c) { |
| 208 | ts.request(cm, {type: "completions", types: true, docs: true, urls: true}, function(error, data) { |
| 209 | if (error) return showError(ts, cm, error); |
| 210 | var completions = [], after = ""; |
| 211 | var from = data.start, to = data.end; |
| 212 | if (cm.getRange(Pos(from.line, from.ch - 2), from) == "[\"" && |
| 213 | cm.getRange(to, Pos(to.line, to.ch + 2)) != "\"]") |
| 214 | after = "\"]"; |
| 215 | |
| 216 | for (var i = 0; i < data.completions.length; ++i) { |
| 217 | var completion = data.completions[i], className = typeToIcon(completion.type); |
| 218 | if (data.guess) className += " " + cls + "guess"; |
| 219 | completions.push({text: completion.name + after, |
| 220 | displayText: completion.displayName || completion.name, |
| 221 | className: className, |
| 222 | data: completion}); |
| 223 | } |
| 224 | |
| 225 | var obj = {from: from, to: to, list: completions}; |
| 226 | var tooltip = null; |
| 227 | CodeMirror.on(obj, "close", function() { remove(tooltip); }); |
| 228 | CodeMirror.on(obj, "update", function() { remove(tooltip); }); |
| 229 | CodeMirror.on(obj, "select", function(cur, node) { |
| 230 | remove(tooltip); |
| 231 | var content = ts.options.completionTip ? ts.options.completionTip(cur.data) : cur.data.doc; |
| 232 | if (content) { |
| 233 | tooltip = makeTooltip(node.parentNode.getBoundingClientRect().right + window.pageXOffset, |
| 234 | node.getBoundingClientRect().top + window.pageYOffset, content, cm, cls + "hint-doc"); |
| 235 | } |
| 236 | }); |
| 237 | c(obj); |
| 238 | }); |
| 239 | } |
| 240 | |
| 241 | function typeToIcon(type) { |
| 242 | var suffix; |
no test coverage detected