This Bugzilla instance is a read-only archive of historic NetBeans bug reports. To report a bug in NetBeans please follow the project's instructions for reporting issues.

View | Details | Raw Unified | Return to bug 184604
Collapse All | Expand All

(-)editor.codetemplates/src/org/netbeans/lib/editor/codetemplates/CodeTemplateCompletionItem.java (-3 / +7 lines)
Lines 84-92 Link Here
84
    }
84
    }
85
    
85
    
86
    private String getLeftText() {
86
    private String getLeftText() {
87
        return CodeTemplateApiPackageAccessor.get().getSingleLineText(codeTemplate);
87
        return CodeTemplateApiPackageAccessor.get().getSingleLineText(codeTemplate).trim();
88
    }
88
    }
89
    
89
90
    public String getAbbreviation() {
91
	return codeTemplate.getAbbreviation();
92
    }    
93
90
    private String getRightText() {
94
    private String getRightText() {
91
        if (rightText == null) {
95
        if (rightText == null) {
92
            rightText = ParametrizedTextParser.toHtmlText(codeTemplate.getAbbreviation());
96
            rightText = ParametrizedTextParser.toHtmlText(codeTemplate.getAbbreviation());
Lines 114-120 Link Here
114
        // Remove the typed part
118
        // Remove the typed part
115
        Document doc = component.getDocument();
119
        Document doc = component.getDocument();
116
        int caretOffset = component.getSelectionStart();
120
        int caretOffset = component.getSelectionStart();
117
        int initMatchLen = getInitialMatchLength(doc, caretOffset, codeTemplate.getParametrizedText());
121
        int initMatchLen = getInitialMatchLength(doc, caretOffset, codeTemplate.getAbbreviation());
118
        if (initMatchLen > 0) {
122
        if (initMatchLen > 0) {
119
            try {
123
            try {
120
                // Remove the typed prefix
124
                // Remove the typed prefix
(-)editor.codetemplates/src/org/netbeans/lib/editor/codetemplates/CodeTemplateCompletionProvider.java (-11 / +8 lines)
Lines 145-157 Link Here
145
        }
145
        }
146
        
146
        
147
        private Collection<? extends CompletionItem> getFilteredData(
147
        private Collection<? extends CompletionItem> getFilteredData(
148
            Collection<? extends CompletionItem> data, 
148
            Collection<CodeTemplateCompletionItem> data, 
149
            String prefix
149
            String prefix
150
        ) {
150
        ) {
151
            List<CompletionItem> ret = new ArrayList<CompletionItem>();
151
            List<CompletionItem> ret = new ArrayList<CompletionItem>();
152
            for (CompletionItem itm : data) {
152
            for (CodeTemplateCompletionItem itm : data) {
153
                if (itm.getInsertPrefix().toString().startsWith(prefix)) {
153
		//only filter by starting abbreviation prefix
154
                    ret.add(itm);
154
		if (itm.getAbbreviation().startsWith(prefix)) {
155
                     ret.add(itm);
155
                }
156
                }
156
            }
157
            }
157
            return ret;
158
            return ret;
Lines 187-206 Link Here
187
            queryCaretOffset = caretOffset;
188
            queryCaretOffset = caretOffset;
188
            queryAnchorOffset = (identifierBeforeCursor != null) ? caretOffset - identifierBeforeCursor.length() : caretOffset;
189
            queryAnchorOffset = (identifierBeforeCursor != null) ? caretOffset - identifierBeforeCursor.length() : caretOffset;
189
            if (langPath != null && identifierBeforeCursor != null) {
190
            if (langPath != null && identifierBeforeCursor != null) {
190
                String mimeType = DocumentUtilities.getMimeType(component);
191
                MimePath mimePath = mimeType == null ? MimePath.EMPTY : MimePath.get(mimeType);
192
                Preferences prefs = MimeLookup.getLookup(mimePath).lookup(Preferences.class);
193
                boolean ignoreCase = prefs.getBoolean(SimpleValueNames.COMPLETION_CASE_SENSITIVE, false);
194
                
195
                CodeTemplateManagerOperation op = CodeTemplateManagerOperation.get(MimePath.parse(langPath));
191
                CodeTemplateManagerOperation op = CodeTemplateManagerOperation.get(MimePath.parse(langPath));
196
                op.waitLoaded();
192
                op.waitLoaded();
197
                
193
                
198
                Collection<? extends CodeTemplate> cts = op.findByParametrizedText(identifierBeforeCursor, ignoreCase);
194
		//only filter by abbreviation
195
		Collection<? extends CodeTemplate> cts=op.findByAbbreviationPrefix(identifierBeforeCursor);
199
                Collection<? extends CodeTemplateFilter> filters = CodeTemplateManagerOperation.getTemplateFilters(component, queryAnchorOffset);
196
                Collection<? extends CodeTemplateFilter> filters = CodeTemplateManagerOperation.getTemplateFilters(component, queryAnchorOffset);
200
                
197
                
201
                queryResult = new ArrayList<CodeTemplateCompletionItem>(cts.size());
198
                queryResult = new ArrayList<CodeTemplateCompletionItem>(cts.size());
202
                for (CodeTemplate ct : cts) {
199
                for (CodeTemplate ct : cts) {
203
                    if (ct.getContexts() != null && ct.getContexts().size() > 0 && accept(ct, filters)) {
200
                    if (accept(ct, filters)) {
204
                        queryResult.add(new CodeTemplateCompletionItem(ct));
201
                        queryResult.add(new CodeTemplateCompletionItem(ct));
205
                    }
202
                    }
206
                }
203
                }
(-)editor.codetemplates/src/org/netbeans/lib/editor/codetemplates/CodeTemplateManagerOperation.java (+10 lines)
Lines 163-168 Link Here
163
    public CodeTemplate findByAbbreviation(String abbreviation) {
163
    public CodeTemplate findByAbbreviation(String abbreviation) {
164
        return abbrev2template.get(abbreviation);
164
        return abbrev2template.get(abbreviation);
165
    }
165
    }
166
167
    public Collection<? extends CodeTemplate> findByAbbreviationPrefix(String abbreviation) {
168
	List<CodeTemplate> result = new ArrayList<CodeTemplate>();
169
	for (CodeTemplate codeTemplate : sortedTemplatesByAbbrev) {
170
	    if (codeTemplate.getAbbreviation().startsWith(abbreviation)) {
171
		result.add(codeTemplate);
172
	    }
173
	}
174
	return result;
175
    }
166
    
176
    
167
    public Collection<? extends CodeTemplate> findByParametrizedText(String prefix, boolean ignoreCase) {
177
    public Collection<? extends CodeTemplate> findByParametrizedText(String prefix, boolean ignoreCase) {
168
        List<CodeTemplate> result = new ArrayList<CodeTemplate>();
178
        List<CodeTemplate> result = new ArrayList<CodeTemplate>();

Return to bug 184604