mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Fix for Bug 100191
This commit is contained in:
parent
bed6b31350
commit
3eb94cf34a
5 changed files with 61 additions and 4 deletions
|
@ -143,6 +143,10 @@ public interface ICSearchConstants {
|
||||||
*/
|
*/
|
||||||
public static final LimitTo ALL_OCCURRENCES = new LimitTo( 3 );
|
public static final LimitTo ALL_OCCURRENCES = new LimitTo( 3 );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The search result is a declaration or a definitoin
|
||||||
|
*/
|
||||||
|
public static final LimitTo DECLARATIONS_DEFINITIONS = new LimitTo( 4 );
|
||||||
|
|
||||||
/* Syntactic match modes */
|
/* Syntactic match modes */
|
||||||
|
|
||||||
|
|
|
@ -175,6 +175,13 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
return orPattern;
|
return orPattern;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( limitTo == DECLARATIONS_DEFINITIONS ){
|
||||||
|
OrPattern orPattern = new OrPattern();
|
||||||
|
orPattern.addPattern( createNamespacePattern( patternString, DECLARATIONS, matchMode, caseSensitive ) );
|
||||||
|
orPattern.addPattern( createNamespacePattern( patternString, DEFINITIONS, matchMode, caseSensitive ) );
|
||||||
|
return orPattern;
|
||||||
|
}
|
||||||
|
|
||||||
char [] patternArray = patternString.toCharArray();
|
char [] patternArray = patternString.toCharArray();
|
||||||
|
|
||||||
IScanner scanner = null;
|
IScanner scanner = null;
|
||||||
|
@ -248,6 +255,12 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
return orPattern;
|
return orPattern;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( limitTo == DECLARATIONS_DEFINITIONS ){
|
||||||
|
OrPattern orPattern = new OrPattern();
|
||||||
|
orPattern.addPattern( createFieldPattern( patternString, searchFor, DECLARATIONS, matchMode, caseSensitive ) );
|
||||||
|
orPattern.addPattern( createFieldPattern( patternString, searchFor, DEFINITIONS, matchMode, caseSensitive ) );
|
||||||
|
return orPattern;
|
||||||
|
}
|
||||||
char [] patternArray = patternString.toCharArray();
|
char [] patternArray = patternString.toCharArray();
|
||||||
Requestor callback = new Requestor( ParserMode.COMPLETE_PARSE );
|
Requestor callback = new Requestor( ParserMode.COMPLETE_PARSE );
|
||||||
IScanner scanner=null;
|
IScanner scanner=null;
|
||||||
|
@ -287,6 +300,12 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
return orPattern;
|
return orPattern;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if( limitTo == DECLARATIONS_DEFINITIONS ){
|
||||||
|
OrPattern orPattern = new OrPattern();
|
||||||
|
orPattern.addPattern( createMethodPattern( patternString, searchFor, DECLARATIONS, matchMode, caseSensitive ) );
|
||||||
|
orPattern.addPattern( createMethodPattern( patternString, searchFor, DEFINITIONS, matchMode, caseSensitive ) );
|
||||||
|
return orPattern;
|
||||||
|
}
|
||||||
int index = patternString.indexOf( '(' );
|
int index = patternString.indexOf( '(' );
|
||||||
String paramString = ( index == -1 ) ? "" : patternString.substring( index ); //$NON-NLS-1$
|
String paramString = ( index == -1 ) ? "" : patternString.substring( index ); //$NON-NLS-1$
|
||||||
String nameString = ( index == -1 ) ? patternString : patternString.substring( 0, index );
|
String nameString = ( index == -1 ) ? patternString : patternString.substring( 0, index );
|
||||||
|
@ -335,6 +354,13 @@ public abstract class CSearchPattern implements ICSearchConstants, ICSearchPatte
|
||||||
return orPattern;
|
return orPattern;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( limitTo == DECLARATIONS_DEFINITIONS ) {
|
||||||
|
OrPattern orPattern = new OrPattern();
|
||||||
|
orPattern.addPattern( createClassPattern( patternString, searchFor, DECLARATIONS, matchMode, caseSensitive ) );
|
||||||
|
orPattern.addPattern( createClassPattern( patternString, searchFor, DEFINITIONS, matchMode, caseSensitive ) );
|
||||||
|
return orPattern;
|
||||||
|
}
|
||||||
|
|
||||||
if( searchFor == CLASS_STRUCT ){
|
if( searchFor == CLASS_STRUCT ){
|
||||||
OrPattern orPattern = new OrPattern();
|
OrPattern orPattern = new OrPattern();
|
||||||
orPattern.addPattern( createClassPattern( patternString, CLASS, limitTo, matchMode, caseSensitive ) );
|
orPattern.addPattern( createClassPattern( patternString, CLASS, limitTo, matchMode, caseSensitive ) );
|
||||||
|
|
|
@ -129,7 +129,8 @@ public class CSearchUtil {
|
||||||
|
|
||||||
case ICElement.C_UNION: searchFor = ICSearchConstants.UNION; break;
|
case ICElement.C_UNION: searchFor = ICSearchConstants.UNION; break;
|
||||||
|
|
||||||
case ICElement.C_ENUMERATOR: /* fall through to FIELD */
|
case ICElement.C_ENUMERATOR:
|
||||||
|
searchFor = ICSearchConstants.ENUMTOR; break;
|
||||||
case ICElement.C_FIELD: searchFor = ICSearchConstants.FIELD; break;
|
case ICElement.C_FIELD: searchFor = ICSearchConstants.FIELD; break;
|
||||||
|
|
||||||
case ICElement.C_TEMPLATE_METHOD : /*fall through to METHOD */
|
case ICElement.C_TEMPLATE_METHOD : /*fall through to METHOD */
|
||||||
|
|
|
@ -76,6 +76,7 @@ public abstract class FindAction extends SelectionParseAction {
|
||||||
return new DOMQuery(DOMSearchUtil.getSearchPattern(name), name, limitTo, scope);
|
return new DOMQuery(DOMSearchUtil.getSearchPattern(name), name, limitTo, scope);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is a convenience method and is the same as invoking:
|
* This is a convenience method and is the same as invoking:
|
||||||
* createDOMSearchQueryForName( name, limitTo, scope, null );
|
* createDOMSearchQueryForName( name, limitTo, scope, null );
|
||||||
|
@ -110,7 +111,7 @@ public abstract class FindAction extends SelectionParseAction {
|
||||||
|
|
||||||
ICElement element = (ICElement) obj;
|
ICElement element = (ICElement) obj;
|
||||||
|
|
||||||
CSearchQuery job = createSearchQuery( element.getElementName(), CSearchUtil.getSearchForFromElement(element));
|
CSearchQuery job = createSearchQuery( getFullyQualifiedName(element), CSearchUtil.getSearchForFromElement(element));
|
||||||
NewSearchUI.activateSearchResultView();
|
NewSearchUI.activateSearchResultView();
|
||||||
|
|
||||||
NewSearchUI.runQueryInBackground(job);
|
NewSearchUI.runQueryInBackground(job);
|
||||||
|
@ -292,6 +293,31 @@ public abstract class FindAction extends SelectionParseAction {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
private String getFullyQualifiedName(ICElement element){
|
||||||
|
|
||||||
|
StringBuffer fullName = new StringBuffer(element.getElementName());
|
||||||
|
|
||||||
|
while (element.getElementType() != 0){
|
||||||
|
element = element.getParent();
|
||||||
|
//Keep going up CModel until we hit Translation Unit
|
||||||
|
//or Working Copy (both represented by C_UNIT) or hit a null
|
||||||
|
if (element.getElementType() == ICElement.C_UNIT ||
|
||||||
|
element == null){
|
||||||
|
fullName.insert(0,"::");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
else if (element.getElementType() != ICElement.C_ENUMERATION){
|
||||||
|
//get the parent name as long as it is not an enumeration - enumerators
|
||||||
|
//don't use the enumeration name as part of the fully qualified name
|
||||||
|
fullName.insert(0,"::");
|
||||||
|
fullName.insert(0,element.getElementName());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return fullName.toString();
|
||||||
|
}
|
||||||
|
|
||||||
abstract protected String getScopeDescription();
|
abstract protected String getScopeDescription();
|
||||||
|
|
||||||
abstract protected ICSearchScope getScope();
|
abstract protected ICSearchScope getScope();
|
||||||
|
|
|
@ -68,6 +68,6 @@ public class FindDeclarationsAction extends FindAction {
|
||||||
*/
|
*/
|
||||||
protected LimitTo getLimitTo() {
|
protected LimitTo getLimitTo() {
|
||||||
// TODO Auto-generated method stub
|
// TODO Auto-generated method stub
|
||||||
return ICSearchConstants.DECLARATIONS;
|
return ICSearchConstants.DECLARATIONS_DEFINITIONS;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue