mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-29 20:05:35 +02:00
Fix for 56833
This commit is contained in:
parent
365457ec26
commit
fc76ab65c7
1 changed files with 21 additions and 95 deletions
|
@ -251,50 +251,37 @@ public class OpenDeclarationsAction extends Action implements IUpdate {
|
||||||
progressMonitor.run(true, true, runnable);
|
progressMonitor.run(true, true, runnable);
|
||||||
|
|
||||||
IASTOffsetableNamedElement namedElement = storage.getNamedElement();
|
IASTOffsetableNamedElement namedElement = storage.getNamedElement();
|
||||||
if( namedElement == null )
|
if( namedElement == null ){
|
||||||
MessageDialog.openInformation(getShell(),CSearchMessages.getString("CSearchOperation.operationUnavailable.title"), CSearchMessages.getString("CSearchOperation.operationUnavailable.message")); //$NON-NLS-1$ //$NON-NLS-2$
|
MessageDialog.openInformation(getShell(),CSearchMessages.getString("CSearchOperation.operationUnavailable.title"), CSearchMessages.getString("CSearchOperation.operationUnavailable.message")); //$NON-NLS-1$ //$NON-NLS-2$
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if( storage.getResource() != null )
|
if( storage.getResource() != null )
|
||||||
{
|
{
|
||||||
open( storage.getResource(), namedElement.getNameOffset(), namedElement.getNameEndOffset() - namedElement.getNameOffset() );
|
int nameOffset = 0;
|
||||||
|
int nameEndOffset = 0;
|
||||||
|
|
||||||
|
nameOffset = namedElement.getNameOffset();
|
||||||
|
nameEndOffset = namedElement.getNameEndOffset();
|
||||||
|
|
||||||
|
open( storage.getResource(), nameOffset, nameEndOffset - nameOffset );
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if( open( storage.getFileName(), namedElement.getNameOffset(), namedElement.getNameEndOffset() - namedElement.getNameOffset()) );
|
String fileName = null;
|
||||||
return;
|
int nameOffset = 0;
|
||||||
|
int nameEndOffset = 0;
|
||||||
|
|
||||||
|
fileName = storage.getFileName();
|
||||||
|
nameOffset = namedElement.getNameOffset();
|
||||||
|
nameEndOffset = namedElement.getNameEndOffset();
|
||||||
|
|
||||||
|
if (fileName != null){
|
||||||
|
open( fileName,nameOffset, nameEndOffset - nameOffset);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// BasicSearchResultCollector resultCollector = new BasicSearchResultCollector(new NullProgressMonitor() );
|
|
||||||
//
|
|
||||||
// SearchFor searchFor = getSearchForFromNode(((IASTNode)storage.getNamedElement()));
|
|
||||||
// ICSearchPattern pattern = SearchEngine.createSearchPattern( selNode.selText,searchFor,ICSearchConstants.DECLARATIONS,true);
|
|
||||||
// IWorkingCopyManager fManager = CUIPlugin.getDefault().getWorkingCopyManager();
|
|
||||||
// //TODO: Change to Project Scope
|
|
||||||
// ICElement[] projectScopeElement = new ICElement[1];
|
|
||||||
// ITranslationUnit unit = fManager.getWorkingCopy(fEditor.getEditorInput());
|
|
||||||
// projectScopeElement[0] = unit.getCProject();//(ICElement)currentScope.getCProject();
|
|
||||||
// ICSearchScope scope = SearchEngine.createCSearchScope(projectScopeElement, true);
|
|
||||||
//
|
|
||||||
// try {
|
|
||||||
// searchEngine.search(CUIPlugin.getWorkspace(), pattern, scope, resultCollector, true);
|
|
||||||
// } catch (InterruptedException e) {
|
|
||||||
// }
|
|
||||||
// elementsFound.addAll(resultCollector.getSearchResults());
|
|
||||||
//
|
|
||||||
//
|
|
||||||
// if (elementsFound.isEmpty() == true) {
|
|
||||||
// //TODO: Get rid of back up search when selection search improves
|
|
||||||
// //MessageDialog.openInformation(getShell(),CSearchMessages.getString("CSearchOperation.operationUnavailable.title"), CSearchMessages.getString("CSearchOperation.operationUnavailable.message")); //$NON-NLS-1$
|
|
||||||
// temporaryBackUpSearch();
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// IMatch selected= selectCElement(elementsFound, getShell(), fDialogTitle, fDialogMessage);
|
|
||||||
// if (selected != null) {
|
|
||||||
// open(selected);
|
|
||||||
// return;
|
|
||||||
// }
|
|
||||||
} catch(Exception x) {
|
} catch(Exception x) {
|
||||||
CUIPlugin.getDefault().log(x);
|
CUIPlugin.getDefault().log(x);
|
||||||
}
|
}
|
||||||
|
@ -324,67 +311,6 @@ public class OpenDeclarationsAction extends Action implements IUpdate {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
protected void temporaryBackUpSearch(){
|
|
||||||
|
|
||||||
final SelSearchNode selNode = getSelectedStringFromEditor();
|
|
||||||
|
|
||||||
if (selNode == null)
|
|
||||||
return;
|
|
||||||
|
|
||||||
final ArrayList elementsFound = new ArrayList();
|
|
||||||
|
|
||||||
IRunnableWithProgress runnable = new IRunnableWithProgress()
|
|
||||||
{
|
|
||||||
public void run(IProgressMonitor monitor) {
|
|
||||||
|
|
||||||
String selectedText = selNode.selText;
|
|
||||||
BasicSearchResultCollector resultCollector = new BasicSearchResultCollector(monitor);
|
|
||||||
IWorkingCopyManager fManager = CUIPlugin.getDefault().getWorkingCopyManager();
|
|
||||||
ITranslationUnit unit = fManager.getWorkingCopy(fEditor.getEditorInput());
|
|
||||||
|
|
||||||
ICElement[] projectScopeElement = new ICElement[1];
|
|
||||||
projectScopeElement[0] = unit.getCProject();//(ICElement)currentScope.getCProject();
|
|
||||||
ICSearchScope scope = SearchEngine.createCSearchScope(projectScopeElement, true);
|
|
||||||
|
|
||||||
IFile resourceFile = fEditor.getInputFile();
|
|
||||||
OrPattern orPattern = new OrPattern();
|
|
||||||
// search for global variables, functions, classes, structs, unions, enums and macros
|
|
||||||
orPattern.addPattern(SearchEngine.createSearchPattern( selectedText, ICSearchConstants.VAR, ICSearchConstants.DECLARATIONS, true ));
|
|
||||||
orPattern.addPattern(SearchEngine.createSearchPattern( selectedText, ICSearchConstants.FUNCTION, ICSearchConstants.DECLARATIONS, true ));
|
|
||||||
orPattern.addPattern(SearchEngine.createSearchPattern( selectedText, ICSearchConstants.METHOD, ICSearchConstants.DECLARATIONS, true ));
|
|
||||||
orPattern.addPattern(SearchEngine.createSearchPattern( selectedText, ICSearchConstants.TYPE, ICSearchConstants.DECLARATIONS, true ));
|
|
||||||
orPattern.addPattern(SearchEngine.createSearchPattern( selectedText, ICSearchConstants.ENUM, ICSearchConstants.DECLARATIONS, true ));
|
|
||||||
orPattern.addPattern(SearchEngine.createSearchPattern( selectedText, ICSearchConstants.FIELD, ICSearchConstants.DECLARATIONS, true ));
|
|
||||||
orPattern.addPattern(SearchEngine.createSearchPattern( selectedText, ICSearchConstants.NAMESPACE, ICSearchConstants.DECLARATIONS, true ));
|
|
||||||
orPattern.addPattern(SearchEngine.createSearchPattern( selectedText, ICSearchConstants.MACRO, ICSearchConstants.DECLARATIONS, true ));
|
|
||||||
orPattern.addPattern(SearchEngine.createSearchPattern( selectedText, ICSearchConstants.TYPEDEF, ICSearchConstants.DECLARATIONS, true ));
|
|
||||||
try {
|
|
||||||
searchEngine.search(CUIPlugin.getWorkspace(), orPattern, scope, resultCollector, true);
|
|
||||||
} catch (InterruptedException e) {
|
|
||||||
}
|
|
||||||
elementsFound.addAll(resultCollector.getSearchResults());
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
try {
|
|
||||||
ProgressMonitorDialog progressMonitor = new ProgressMonitorDialog(getShell());
|
|
||||||
progressMonitor.run(true, true, runnable);
|
|
||||||
|
|
||||||
if (elementsFound.isEmpty() == true) {
|
|
||||||
MessageDialog.openInformation(getShell(),CSearchMessages.getString("CSearchOperation.operationUnavailable.title"), CSearchMessages.getString("CSearchOperation.operationUnavailable.message")); //$NON-NLS-1$ //$NON-NLS-2$
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
IMatch selected= selectCElement(elementsFound, getShell(), fDialogTitle, fDialogMessage);
|
|
||||||
if (selected != null) {
|
|
||||||
open(selected);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
} catch(Exception x) {
|
|
||||||
CUIPlugin.getDefault().log(x);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void open( IMatch element ) throws CModelException, PartInitException
|
protected void open( IMatch element ) throws CModelException, PartInitException
|
||||||
{
|
{
|
||||||
open( element.getResource(), element.getStartOffset(), element.getEndOffset() - element.getStartOffset() );
|
open( element.getResource(), element.getStartOffset(), element.getEndOffset() - element.getStartOffset() );
|
||||||
|
|
Loading…
Add table
Reference in a new issue