|
Lines 383-389
define("orion/editor/contentAssist", [ //$NON-NLS-0$
Link Here
|
| 383 |
|
419 |
|
| 384 |
if (this.pageMessage){ |
420 |
if (this.pageMessage){ |
| 385 |
allPromises = Deferred.when(allPromises, function(proposals){ |
421 |
allPromises = Deferred.when(allPromises, function(proposals){ |
| 386 |
self.pageMessage.close(); |
422 |
_self.pageMessage.close(); |
| 387 |
var foundProposal = false; |
423 |
var foundProposal = false; |
| 388 |
if (proposals && proposals.length > 0){ |
424 |
if (proposals && proposals.length > 0){ |
| 389 |
for (var i=0; i<proposals.length; i++) { |
425 |
for (var i=0; i<proposals.length; i++) { |
|
Lines 394-406
define("orion/editor/contentAssist", [ //$NON-NLS-0$
Link Here
|
| 394 |
} |
430 |
} |
| 395 |
} |
431 |
} |
| 396 |
if (!foundProposal){ |
432 |
if (!foundProposal){ |
| 397 |
self.pageMessage.setErrorMessage(messages["noProposals"]); |
433 |
_self.pageMessage.setErrorMessage(messages["noProposals"]); |
| 398 |
} |
434 |
} |
| 399 |
return proposals; |
435 |
return proposals; |
| 400 |
}); |
436 |
}); |
| 401 |
self.pageMessage.showWhile(allPromises, messages["computingProposals"]); |
437 |
this.pageMessage.showWhile(allPromises, messages["computingProposals"]); |
| 402 |
} |
438 |
} |
| 403 |
|
|
|
| 404 |
return allPromises; |
439 |
return allPromises; |
| 405 |
}, |
440 |
}, |
| 406 |
|
441 |
|
|
Lines 348-377
define("orion/editor/contentAssist", [ //$NON-NLS-0$
Link Here
|
| 348 |
var indentation = line.substring(0, index); |
348 |
var indentation = line.substring(0, index); |
| 349 |
var options = textView.getOptions("tabSize", "expandTab"); //$NON-NLS-1$ //$NON-NLS-0$ |
349 |
var options = textView.getOptions("tabSize", "expandTab"); //$NON-NLS-1$ //$NON-NLS-0$ |
| 350 |
var tab = options.expandTab ? new Array(options.tabSize + 1).join(" ") : "\t"; //$NON-NLS-1$ //$NON-NLS-0$ |
350 |
var tab = options.expandTab ? new Array(options.tabSize + 1).join(" ") : "\t"; //$NON-NLS-1$ //$NON-NLS-0$ |
| 351 |
var params = { |
351 |
var lineDelimiter = model.getLineDelimiter(); |
| 352 |
line: line, |
352 |
var _self = this; |
| 353 |
offset: mapOffset, |
|
|
| 354 |
prefix: model.getText(this.getPrefixStart(model, mapOffset), mapOffset), |
| 355 |
selection: sel, |
| 356 |
delimiter: model.getLineDelimiter(), |
| 357 |
tab: tab, |
| 358 |
indentation: indentation |
| 359 |
}; |
| 360 |
var self = this; |
| 361 |
var promises = providerInfoArray.map(function(providerInfo) { |
353 |
var promises = providerInfoArray.map(function(providerInfo) { |
| 362 |
var provider = providerInfo.provider; |
354 |
var provider = providerInfo.provider; |
|
|
355 |
var computePrefixFunc = provider.computePrefix; |
| 356 |
var ecProvider = _self.editorContextProvider, editorContext = ecProvider.getEditorContext(); |
| 357 |
if (computePrefixFunc) { |
| 358 |
var result = computePrefixFunc.apply(provider, [editorContext, mapOffset]); |
| 359 |
return result.then(function(prefix) { |
| 360 |
var params = { |
| 361 |
line: line, |
| 362 |
offset: mapOffset, |
| 363 |
prefix: prefix, |
| 364 |
selection: sel, |
| 365 |
delimiter: lineDelimiter, |
| 366 |
tab: tab, |
| 367 |
indentation: indentation |
| 368 |
}; |
| 369 |
var proposals; |
| 370 |
try { |
| 371 |
var func, promise; |
| 372 |
if ((func = provider.computeContentAssist)) { |
| 373 |
params = objects.mixin(params, ecProvider.getOptions()); |
| 374 |
promise = func.apply(provider, [editorContext, params]); |
| 375 |
} else if ((func = provider.getProposals || provider.computeProposals)) { |
| 376 |
// old API |
| 377 |
promise = func.apply(provider, [model.getText(), mapOffset, params]); |
| 378 |
} |
| 379 |
proposals = _self.progress ? _self.progress.progress(promise, "Generating content assist proposal") : promise; //$NON-NLS-0$ |
| 380 |
} catch (e) { |
| 381 |
return new Deferred().reject(e); |
| 382 |
} |
| 383 |
return Deferred.when(proposals); |
| 384 |
}, |
| 385 |
function(err) { |
| 386 |
return new Deferred().reject(err); |
| 387 |
}); |
| 388 |
} |
| 389 |
// no computePrefix function is defined for the provider. Use the default prefix |
| 390 |
var params = { |
| 391 |
line: line, |
| 392 |
offset: mapOffset, |
| 393 |
prefix: model.getText(_self.getPrefixStart(model, mapOffset), mapOffset), |
| 394 |
selection: sel, |
| 395 |
delimiter: lineDelimiter, |
| 396 |
tab: tab, |
| 397 |
indentation: indentation |
| 398 |
}; |
| 363 |
var proposals; |
399 |
var proposals; |
| 364 |
try { |
400 |
try { |
| 365 |
var func, promise; |
401 |
var func, promise; |
| 366 |
if ((func = provider.computeContentAssist)) { |
402 |
if ((func = provider.computeContentAssist)) { |
| 367 |
var ecProvider = self.editorContextProvider, editorContext = ecProvider.getEditorContext(); |
403 |
var ecProvider = _self.editorContextProvider, editorContext = ecProvider.getEditorContext(); |
| 368 |
params = objects.mixin(params, ecProvider.getOptions()); |
404 |
params = objects.mixin(params, ecProvider.getOptions()); |
| 369 |
promise = func.apply(provider, [editorContext, params]); |
405 |
promise = func.apply(provider, [editorContext, params]); |
| 370 |
} else if ((func = provider.getProposals || provider.computeProposals)) { |
406 |
} else if ((func = provider.getProposals || provider.computeProposals)) { |
| 371 |
// old API |
407 |
// old API |
| 372 |
promise = func.apply(provider, [model.getText(), mapOffset, params]); |
408 |
promise = func.apply(provider, [model.getText(), mapOffset, params]); |
| 373 |
} |
409 |
} |
| 374 |
proposals = self.progress ? self.progress.progress(promise, "Generating content assist proposal") : promise; //$NON-NLS-0$ |
410 |
proposals = _self.progress ? _self.progress.progress(promise, "Generating content assist proposal") : promise; //$NON-NLS-0$ |
| 375 |
} catch (e) { |
411 |
} catch (e) { |
| 376 |
return new Deferred().reject(e); |
412 |
return new Deferred().reject(e); |
| 377 |
} |
413 |
} |
|
Lines 441-466
define("orion/editor/contentAssist", [ //$NON-NLS-0$
Link Here
|
| 441 |
return false; // unknown format |
476 |
return false; // unknown format |
| 442 |
} |
477 |
} |
| 443 |
|
478 |
|
| 444 |
return (0 === proposalString.indexOf(prefixText + this._filterText)); |
479 |
return 0 === proposalString.indexOf(prefixText + this._filterText); |
| 445 |
|
480 |
|
| 446 |
} else if (proposal.name || proposal.proposal) { |
481 |
} else if (proposal.name || proposal.proposal) { |
| 447 |
var activated = false; |
482 |
var activated = false; |
| 448 |
// try matching name |
483 |
// try matching name |
| 449 |
if (proposal.name) { |
484 |
if (proposal.name) { |
| 450 |
activated = (0 === proposal.name.indexOf(prefixText + this._filterText)); |
485 |
activated = 0 === proposal.name.indexOf(prefixText + this._filterText); |
| 451 |
} |
486 |
} |
| 452 |
|
487 |
|
| 453 |
// try matching proposal text |
488 |
// try matching proposal text |
| 454 |
if (!activated && proposal.proposal) { |
489 |
if (!activated && proposal.proposal) { |
| 455 |
activated = (0 === proposal.proposal.indexOf(this._filterText)); |
490 |
activated = 0 === proposal.proposal.indexOf(this._filterText); |
| 456 |
} |
491 |
} |
| 457 |
|
492 |
|
| 458 |
return activated; |
493 |
return activated; |
| 459 |
} else if (typeof proposal === "string") { //$NON-NLS-0$ |
494 |
} else if (typeof proposal === "string") { //$NON-NLS-0$ |
| 460 |
return 0 === proposal.indexOf(this._filterText); |
495 |
return 0 === proposal.indexOf(this._filterText); |
| 461 |
} else { |
|
|
| 462 |
return false; |
| 463 |
} |
496 |
} |
|
|
497 |
return false; |
| 464 |
}, this); |
498 |
}, this); |
| 465 |
|
499 |
|
| 466 |
if (includedProposals.length > 0) { |
500 |
if (includedProposals.length > 0) { |