Download
Getting Started
Members
Projects
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
More
Community
Marketplace
Events
Planet Eclipse
Newsletter
Videos
Participate
Report a Bug
Forums
Mailing Lists
Wiki
IRC
How to Contribute
Working Groups
Automotive
Internet of Things
LocationTech
Long-Term Support
PolarSys
Science
OpenMDM
Toggle navigation
Bugzilla – Attachment 260960 Details for
Bug 473787
[Assist] Allow contributors more control over content assist filtering
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
Log In
[x]
|
Terms of Use
|
Copyright Agent
Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read
this important communication.
[patch]
Proposed patch
473787.patch (text/plain), 7.88 KB, created by
Olivier Thomann
on 2016-04-14 11:54:42 EDT
(
hide
)
Description:
Proposed patch
Filename:
MIME Type:
Creator:
Olivier Thomann
Created:
2016-04-14 11:54:42 EDT
Size:
7.88 KB
patch
obsolete
>diff --git a/bundles/org.eclipse.orion.client.editor/web/orion/editor/contentAssist.js b/bundles/org.eclipse.orion.client.editor/web/orion/editor/contentAssist.js >index 07fbabb..1d8f96b 100644 >--- a/bundles/org.eclipse.orion.client.editor/web/orion/editor/contentAssist.js >+++ b/bundles/org.eclipse.orion.client.editor/web/orion/editor/contentAssist.js >@@ -383,7 +421,7 @@ define("orion/editor/contentAssist", [ //$NON-NLS-0$ > > if (this.pageMessage){ > allPromises = Deferred.when(allPromises, function(proposals){ >- self.pageMessage.close(); >+ _self.pageMessage.close(); > var foundProposal = false; > if (proposals && proposals.length > 0){ > for (var i=0; i<proposals.length; i++) { >@@ -348,30 +348,68 @@ define("orion/editor/contentAssist", [ //$NON-NLS-0$ > var indentation = line.substring(0, index); > var options = textView.getOptions("tabSize", "expandTab"); //$NON-NLS-1$ //$NON-NLS-0$ > var tab = options.expandTab ? new Array(options.tabSize + 1).join(" ") : "\t"; //$NON-NLS-1$ //$NON-NLS-0$ >- var params = { >- line: line, >- offset: mapOffset, >- prefix: model.getText(this.getPrefixStart(model, mapOffset), mapOffset), >- selection: sel, >- delimiter: model.getLineDelimiter(), >- tab: tab, >- indentation: indentation >- }; >- var self = this; >+ var lineDelimiter = model.getLineDelimiter(); >+ var text = model.getText(); >+ // model.getText(this.getPrefixStart(model, mapOffset), mapOffset) >+ var _self = this; > var promises = providerInfoArray.map(function(providerInfo) { > var provider = providerInfo.provider; >+ var computePrefixFunc = provider.computePrefix; >+ if (computePrefixFunc) { >+ var result = computePrefixFunc.apply(provider, [text, mapOffset]); >+ return result.then(function(prefix) { >+ var params = { >+ line: line, >+ offset: mapOffset, >+ prefix: prefix, >+ selection: sel, >+ delimiter: lineDelimiter, >+ tab: tab, >+ indentation: indentation >+ }; >+ var proposals; >+ try { >+ var func, promise; >+ if ((func = provider.computeContentAssist)) { >+ var ecProvider = _self.editorContextProvider, editorContext = ecProvider.getEditorContext(); >+ params = objects.mixin(params, ecProvider.getOptions()); >+ promise = func.apply(provider, [editorContext, params]); >+ } else if ((func = provider.getProposals || provider.computeProposals)) { >+ // old API >+ promise = func.apply(provider, [model.getText(), mapOffset, params]); >+ } >+ proposals = _self.progress ? _self.progress.progress(promise, "Generating content assist proposal") : promise; //$NON-NLS-0$ >+ } catch (e) { >+ return new Deferred().reject(e); >+ } >+ return Deferred.when(proposals); >+ }, >+ function(err) { >+ return new Deferred().reject(err); >+ }); >+ } >+ // no computePrefix function is defined for the provider. Use the default prefix >+ var params = { >+ line: line, >+ offset: mapOffset, >+ prefix: model.getText(_self.getPrefixStart(model, mapOffset), mapOffset), >+ selection: sel, >+ delimiter: lineDelimiter, >+ tab: tab, >+ indentation: indentation >+ }; > var proposals; > try { > var func, promise; > if ((func = provider.computeContentAssist)) { >- var ecProvider = self.editorContextProvider, editorContext = ecProvider.getEditorContext(); >+ var ecProvider = _self.editorContextProvider, editorContext = ecProvider.getEditorContext(); > params = objects.mixin(params, ecProvider.getOptions()); > promise = func.apply(provider, [editorContext, params]); > } else if ((func = provider.getProposals || provider.computeProposals)) { > // old API > promise = func.apply(provider, [model.getText(), mapOffset, params]); > } >- proposals = self.progress ? self.progress.progress(promise, "Generating content assist proposal") : promise; //$NON-NLS-0$ >+ proposals = _self.progress ? _self.progress.progress(promise, "Generating content assist proposal") : promise; //$NON-NLS-0$ > } catch (e) { > return new Deferred().reject(e); > } >@@ -394,13 +432,12 @@ define("orion/editor/contentAssist", [ //$NON-NLS-0$ > } > } > if (!foundProposal){ >- self.pageMessage.setErrorMessage(messages["noProposals"]); >+ _self.pageMessage.setErrorMessage(messages["noProposals"]); > } > return proposals; > }); >- self.pageMessage.showWhile(allPromises, messages["computingProposals"]); >+ this.pageMessage.showWhile(allPromises, messages["computingProposals"]); > } >- > return allPromises; > }, > >@@ -441,26 +478,25 @@ define("orion/editor/contentAssist", [ //$NON-NLS-0$ > return false; // unknown format > } > >- return (0 === proposalString.indexOf(prefixText + this._filterText)); >+ return 0 === proposalString.indexOf(prefixText + this._filterText); > > } else if (proposal.name || proposal.proposal) { > var activated = false; > // try matching name > if (proposal.name) { >- activated = (0 === proposal.name.indexOf(prefixText + this._filterText)); >+ activated = 0 === proposal.name.indexOf(prefixText + this._filterText); > } > > // try matching proposal text > if (!activated && proposal.proposal) { >- activated = (0 === proposal.proposal.indexOf(this._filterText)); >+ activated = 0 === proposal.proposal.indexOf(this._filterText); > } > > return activated; > } else if (typeof proposal === "string") { //$NON-NLS-0$ > return 0 === proposal.indexOf(this._filterText); >- } else { >- return false; > } >+ return false; > }, this); > > if (includedProposals.length > 0) { >diff --git a/bundles/org.eclipse.orion.client.webtools/web/webtools/htmlContentAssist.js b/bundles/org.eclipse.orion.client.webtools/web/webtools/htmlContentAssist.js >index c4d111d..4e97099 100644 >--- a/bundles/org.eclipse.orion.client.webtools/web/webtools/htmlContentAssist.js >+++ b/bundles/org.eclipse.orion.client.webtools/web/webtools/htmlContentAssist.js >@@ -153,6 +153,27 @@ define([ > > Objects.mixin(HTMLContentAssistProvider.prototype, { > /** >+ * @private >+ */ >+ _getPrefixStart: function(text, end) { >+ var index = end; >+ while (index > 0) { >+ var char = text.substring(index - 1, index); >+ if (/[A-Za-z0-9_-]/.test(char)) { >+ index--; >+ } else { >+ break; >+ } >+ } >+ return index; >+ }, >+ /** >+ * @callback >+ */ >+ computePrefix(text, offset) { >+ return text.substring(this._getPrefixStart(text, offset), offset); >+ }, >+ /** > * @callback > */ > computeContentAssist: function(editorContext, params) { >@@ -468,23 +489,7 @@ define([ > var index = params.offset - prefix.length - 1; > if (index > 0 && index < source.length) { > var precedingChar = source.charAt(index); >- if (precedingChar === '-') { >- index--; >- if (index !== 0) { >- // rebuild a prefix based on what characters (letter only) are before the '-' >- precedingChar = source.charAt(index); >- var currentPrefix = "-" + prefix; >- loop: while (index > 0 && /[A-Za-z0-9_-]/.test(precedingChar)) { >- index--; >- currentPrefix = precedingChar + currentPrefix; >- if (index === 0) { >- break loop; >- } >- precedingChar = source.charAt(index); >- } >- params.prefix = currentPrefix; >- } >- } else if (precedingChar === '=' && prefix.length === 0 && (index - 1) > 0) { >+ if (precedingChar === '=' && prefix.length === 0 && (index - 1) > 0) { > precedingChar = source.charAt(index - 1); > if (/[A-Za-z0-9_]/.test(precedingChar)) { > proposals.push(this.makeComputedProposal("\"\"", Messages['addQuotesToAttributes'], " - \"\"", null, prefix)); //$NON-NLS-1$ //$NON-NLS-2$
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Actions:
View
|
Diff
Attachments on
bug 473787
:
260960
|
261052
|
261056