mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-07 17:56:01 +02:00
Bug 302289: File size limit for files to be indexed.
This commit is contained in:
parent
25b266f275
commit
fc4b41e811
14 changed files with 205 additions and 56 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2005, 2009 QNX Software Systems and others.
|
* Copyright (c) 2005, 2010 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -52,6 +52,7 @@ public final class IndexBasedFileContentProvider extends InternalFileContentProv
|
||||||
private final ASTFilePathResolver fPathResolver;
|
private final ASTFilePathResolver fPathResolver;
|
||||||
private final AbstractIndexerTask fRelatedIndexerTask;
|
private final AbstractIndexerTask fRelatedIndexerTask;
|
||||||
private boolean fSupportFillGapFromContextToHeader= false;
|
private boolean fSupportFillGapFromContextToHeader= false;
|
||||||
|
private long fFileSizeLimit= 0;
|
||||||
|
|
||||||
public IndexBasedFileContentProvider(IIndex index,
|
public IndexBasedFileContentProvider(IIndex index,
|
||||||
ASTFilePathResolver pathResolver, int linkage, IncludeFileContentProvider fallbackFactory) {
|
ASTFilePathResolver pathResolver, int linkage, IncludeFileContentProvider fallbackFactory) {
|
||||||
|
@ -71,6 +72,10 @@ public final class IndexBasedFileContentProvider extends InternalFileContentProv
|
||||||
fSupportFillGapFromContextToHeader= val;
|
fSupportFillGapFromContextToHeader= val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public void setFileSizeLimit(long limit) {
|
||||||
|
fFileSizeLimit= limit;
|
||||||
|
}
|
||||||
|
|
||||||
public void setLinkage(int linkageID) {
|
public void setLinkage(int linkageID) {
|
||||||
fLinkage= linkageID;
|
fLinkage= linkageID;
|
||||||
}
|
}
|
||||||
|
@ -104,7 +109,7 @@ public final class IndexBasedFileContentProvider extends InternalFileContentProv
|
||||||
}
|
}
|
||||||
path= fPathResolver.getASTPath(ifl);
|
path= fPathResolver.getASTPath(ifl);
|
||||||
|
|
||||||
// include files once, only.
|
// Include files once, only.
|
||||||
if (!fIncludedFiles.add(ifl)) {
|
if (!fIncludedFiles.add(ifl)) {
|
||||||
return new InternalFileContent(path, InclusionKind.SKIP_FILE);
|
return new InternalFileContent(path, InclusionKind.SKIP_FILE);
|
||||||
}
|
}
|
||||||
|
@ -129,6 +134,11 @@ public final class IndexBasedFileContentProvider extends InternalFileContentProv
|
||||||
CCorePlugin.log(e);
|
CCorePlugin.log(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Skip large files
|
||||||
|
if (fFileSizeLimit > 0 && fPathResolver.getFileSize(path) > fFileSizeLimit) {
|
||||||
|
return new InternalFileContent(path, InclusionKind.SKIP_FILE);
|
||||||
|
}
|
||||||
|
|
||||||
if (fFallBackFactory != null) {
|
if (fFallBackFactory != null) {
|
||||||
InternalFileContent ifc= getContentForInclusion(ifl, path);
|
InternalFileContent ifc= getContentForInclusion(ifl, path);
|
||||||
if (ifc != null)
|
if (ifc != null)
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2007, 2009 Wind River Systems, Inc. and others.
|
* Copyright (c) 2007, 2010 Wind River Systems, Inc. and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -60,6 +60,11 @@ public class StandaloneIndexerInputAdapter extends IndexerInputAdapter {
|
||||||
return isValidSourceUnitName(filename);
|
return isValidSourceUnitName(filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getFileSize(String astFilePath) {
|
||||||
|
return new File(astFilePath).length();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public IIndexFileLocation resolveFile(Object tu) {
|
public IIndexFileLocation resolveFile(Object tu) {
|
||||||
return resolveASTPath((String) tu);
|
return resolveASTPath((String) tu);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2007, 2009 Wind River Systems, Inc. and others.
|
* Copyright (c) 2007, 2010 Wind River Systems, Inc. and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -14,7 +14,6 @@ import org.eclipse.cdt.core.index.IIndexFileLocation;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Abstract class for resolving paths as computed by the parser.
|
* Abstract class for resolving paths as computed by the parser.
|
||||||
* @since 5.0
|
|
||||||
*/
|
*/
|
||||||
public abstract class ASTFilePathResolver {
|
public abstract class ASTFilePathResolver {
|
||||||
|
|
||||||
|
@ -45,4 +44,9 @@ public abstract class ASTFilePathResolver {
|
||||||
* Answers whether this file is considered to be a source file (vs. a header file).
|
* Answers whether this file is considered to be a source file (vs. a header file).
|
||||||
*/
|
*/
|
||||||
public abstract boolean isSource(String astFilePath);
|
public abstract boolean isSource(String astFilePath);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the size of the file in bytes, or -1 if it cannot be determined
|
||||||
|
*/
|
||||||
|
public abstract long getFileSize(String astFilePath);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2007, 2009 Wind River Systems, Inc. and others.
|
* Copyright (c) 2007, 2010 Wind River Systems, Inc. and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -179,6 +179,7 @@ public abstract class AbstractIndexerTask extends PDOMWriter {
|
||||||
protected IWritableIndex fIndex;
|
protected IWritableIndex fIndex;
|
||||||
private ITodoTaskUpdater fTodoTaskUpdater;
|
private ITodoTaskUpdater fTodoTaskUpdater;
|
||||||
private final boolean fIsFastIndexer;
|
private final boolean fIsFastIndexer;
|
||||||
|
private long fFileSizeLimit= 0;
|
||||||
private InternalFileContentProvider fCodeReaderFactory;
|
private InternalFileContentProvider fCodeReaderFactory;
|
||||||
|
|
||||||
public AbstractIndexerTask(Object[] filesToUpdate, Object[] filesToRemove, IndexerInputAdapter resolver, boolean fastIndexer) {
|
public AbstractIndexerTask(Object[] filesToUpdate, Object[] filesToRemove, IndexerInputAdapter resolver, boolean fastIndexer) {
|
||||||
|
@ -210,6 +211,9 @@ public abstract class AbstractIndexerTask extends PDOMWriter {
|
||||||
public final void setForceFirstFiles(int number) {
|
public final void setForceFirstFiles(int number) {
|
||||||
fForceNumberFiles= number;
|
fForceNumberFiles= number;
|
||||||
}
|
}
|
||||||
|
public final void setFileSizeLimit(long limit) {
|
||||||
|
fFileSizeLimit= limit;
|
||||||
|
}
|
||||||
|
|
||||||
protected abstract IWritableIndex createIndex();
|
protected abstract IWritableIndex createIndex();
|
||||||
protected abstract IIncludeFileResolutionHeuristics createIncludeHeuristics();
|
protected abstract IIncludeFileResolutionHeuristics createIncludeHeuristics();
|
||||||
|
@ -255,12 +259,19 @@ public abstract class AbstractIndexerTask extends PDOMWriter {
|
||||||
|
|
||||||
private final IASTTranslationUnit createAST(AbstractLanguage language, FileContent codeReader,
|
private final IASTTranslationUnit createAST(AbstractLanguage language, FileContent codeReader,
|
||||||
IScannerInfo scanInfo, int options, boolean inContext, IProgressMonitor pm) throws CoreException {
|
IScannerInfo scanInfo, int options, boolean inContext, IProgressMonitor pm) throws CoreException {
|
||||||
|
if (fFileSizeLimit > 0 && fResolver.getFileSize(codeReader.getFileLocation()) > fFileSizeLimit) {
|
||||||
|
if (fShowActivity) {
|
||||||
|
trace("Indexer: Skipping large file " + codeReader.getFileLocation()); //$NON-NLS-1$
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
if (fCodeReaderFactory == null) {
|
if (fCodeReaderFactory == null) {
|
||||||
InternalFileContentProvider fileContentProvider = createInternalFileContentProvider();
|
InternalFileContentProvider fileContentProvider = createInternalFileContentProvider();
|
||||||
if (fIsFastIndexer) {
|
if (fIsFastIndexer) {
|
||||||
IndexBasedFileContentProvider ibfcp = new IndexBasedFileContentProvider(fIndex, fResolver,
|
IndexBasedFileContentProvider ibfcp = new IndexBasedFileContentProvider(fIndex, fResolver,
|
||||||
language.getLinkageID(), fileContentProvider, this);
|
language.getLinkageID(), fileContentProvider, this);
|
||||||
ibfcp.setSupportFillGapFromContextToHeader(inContext);
|
ibfcp.setSupportFillGapFromContextToHeader(inContext);
|
||||||
|
ibfcp.setFileSizeLimit(fFileSizeLimit);
|
||||||
fCodeReaderFactory= ibfcp;
|
fCodeReaderFactory= ibfcp;
|
||||||
} else {
|
} else {
|
||||||
fCodeReaderFactory= fileContentProvider;
|
fCodeReaderFactory= fileContentProvider;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2007, 2009 Wind River Systems, Inc. and others.
|
* Copyright (c) 2007, 2010 Wind River Systems, Inc. and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -30,6 +30,7 @@ public abstract class AbstractPDOMIndexer implements IPDOMIndexer {
|
||||||
fProperties.put(IndexerPreferences.KEY_INDEX_UNUSED_HEADERS_WITH_ALTERNATE_LANG, String.valueOf(false));
|
fProperties.put(IndexerPreferences.KEY_INDEX_UNUSED_HEADERS_WITH_ALTERNATE_LANG, String.valueOf(false));
|
||||||
fProperties.put(IndexerPreferences.KEY_INDEX_ALL_FILES, String.valueOf(false));
|
fProperties.put(IndexerPreferences.KEY_INDEX_ALL_FILES, String.valueOf(false));
|
||||||
fProperties.put(IndexerPreferences.KEY_INCLUDE_HEURISTICS, String.valueOf(true));
|
fProperties.put(IndexerPreferences.KEY_INCLUDE_HEURISTICS, String.valueOf(true));
|
||||||
|
fProperties.put(IndexerPreferences.KEY_SKIP_FILES_LARGER_THAN_MB, String.valueOf(IndexerPreferences.DEFAULT_FILE_SIZE_LIMIT));
|
||||||
fProperties.put(IndexerPreferences.KEY_FILES_TO_PARSE_UP_FRONT, ""); //$NON-NLS-1$
|
fProperties.put(IndexerPreferences.KEY_FILES_TO_PARSE_UP_FRONT, ""); //$NON-NLS-1$
|
||||||
fProperties.put(IndexerPreferences.KEY_SKIP_ALL_REFERENCES, String.valueOf(false));
|
fProperties.put(IndexerPreferences.KEY_SKIP_ALL_REFERENCES, String.valueOf(false));
|
||||||
fProperties.put(IndexerPreferences.KEY_SKIP_IMPLICIT_REFERENCES, String.valueOf(false));
|
fProperties.put(IndexerPreferences.KEY_SKIP_IMPLICIT_REFERENCES, String.valueOf(false));
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2008 Wind River Systems, Inc. and others.
|
* Copyright (c) 2008, 2009 Wind River Systems, Inc. and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -50,6 +50,9 @@ public final class FileExistsCache {
|
||||||
}
|
}
|
||||||
|
|
||||||
String parent= file.getParent();
|
String parent= file.getParent();
|
||||||
|
if (parent == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
String name= file.getName();
|
String name= file.getName();
|
||||||
if (CASE_INSENSITIVE)
|
if (CASE_INSENSITIVE)
|
||||||
name= name.toUpperCase();
|
name= name.toUpperCase();
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2007, 2009 Wind River Systems, Inc. and others.
|
* Copyright (c) 2007, 2010 Wind River Systems, Inc. and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -54,6 +54,7 @@ public class IndexerPreferences {
|
||||||
public static final String KEY_SKIP_TYPE_REFERENCES= "skipTypeReferences"; //$NON-NLS-1$
|
public static final String KEY_SKIP_TYPE_REFERENCES= "skipTypeReferences"; //$NON-NLS-1$
|
||||||
public static final String KEY_SKIP_MACRO_REFERENCES= "skipMacroReferences"; //$NON-NLS-1$
|
public static final String KEY_SKIP_MACRO_REFERENCES= "skipMacroReferences"; //$NON-NLS-1$
|
||||||
public static final String KEY_UPDATE_POLICY= "updatePolicy"; //$NON-NLS-1$
|
public static final String KEY_UPDATE_POLICY= "updatePolicy"; //$NON-NLS-1$
|
||||||
|
public static final String KEY_SKIP_FILES_LARGER_THAN_MB = "skipFilesLargerThanMB"; //$NON-NLS-1$
|
||||||
|
|
||||||
private static final String KEY_INDEXER_PREFS_SCOPE = "preferenceScope"; //$NON-NLS-1$
|
private static final String KEY_INDEXER_PREFS_SCOPE = "preferenceScope"; //$NON-NLS-1$
|
||||||
private static final String KEY_INDEX_IMPORT_LOCATION = "indexImportLocation"; //$NON-NLS-1$
|
private static final String KEY_INDEX_IMPORT_LOCATION = "indexImportLocation"; //$NON-NLS-1$
|
||||||
|
@ -72,6 +73,7 @@ public class IndexerPreferences {
|
||||||
"signal.h, " + // configures bits/signum.h //$NON-NLS-1$
|
"signal.h, " + // configures bits/signum.h //$NON-NLS-1$
|
||||||
"cstdio"; // configures stdio.h for c++ !! fragments bits/signum.h !! //$NON-NLS-1$
|
"cstdio"; // configures stdio.h for c++ !! fragments bits/signum.h !! //$NON-NLS-1$
|
||||||
private static final int DEFAULT_UPDATE_POLICY= 0;
|
private static final int DEFAULT_UPDATE_POLICY= 0;
|
||||||
|
public static final int DEFAULT_FILE_SIZE_LIMIT = 8;
|
||||||
|
|
||||||
private static final String QUALIFIER = CCorePlugin.PLUGIN_ID;
|
private static final String QUALIFIER = CCorePlugin.PLUGIN_ID;
|
||||||
private static final String INDEXER_NODE = "indexer"; //$NON-NLS-1$
|
private static final String INDEXER_NODE = "indexer"; //$NON-NLS-1$
|
||||||
|
@ -329,6 +331,7 @@ public class IndexerPreferences {
|
||||||
prefs.putBoolean(KEY_INDEX_UNUSED_HEADERS_WITH_DEFAULT_LANG, false);
|
prefs.putBoolean(KEY_INDEX_UNUSED_HEADERS_WITH_DEFAULT_LANG, false);
|
||||||
prefs.putBoolean(KEY_INDEX_UNUSED_HEADERS_WITH_ALTERNATE_LANG, false);
|
prefs.putBoolean(KEY_INDEX_UNUSED_HEADERS_WITH_ALTERNATE_LANG, false);
|
||||||
prefs.putBoolean(KEY_INCLUDE_HEURISTICS, true);
|
prefs.putBoolean(KEY_INCLUDE_HEURISTICS, true);
|
||||||
|
prefs.putInt(KEY_SKIP_FILES_LARGER_THAN_MB, DEFAULT_FILE_SIZE_LIMIT);
|
||||||
prefs.putBoolean(KEY_SKIP_ALL_REFERENCES, false);
|
prefs.putBoolean(KEY_SKIP_ALL_REFERENCES, false);
|
||||||
prefs.putBoolean(KEY_SKIP_IMPLICIT_REFERENCES, false);
|
prefs.putBoolean(KEY_SKIP_IMPLICIT_REFERENCES, false);
|
||||||
prefs.putBoolean(KEY_SKIP_TYPE_REFERENCES, false);
|
prefs.putBoolean(KEY_SKIP_TYPE_REFERENCES, false);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2006, 2009 Wind River Systems, Inc. and others.
|
* Copyright (c) 2006, 2010 Wind River Systems, Inc. and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -65,6 +65,8 @@ public abstract class PDOMIndexerTask extends AbstractIndexerTask implements IPD
|
||||||
setShowScannerProblems(checkDebugOption(TRACE_SCANNER_PROBLEMS, TRUE));
|
setShowScannerProblems(checkDebugOption(TRACE_SCANNER_PROBLEMS, TRUE));
|
||||||
setShowSyntaxProblems(checkDebugOption(TRACE_SYNTAX_PROBLEMS, TRUE));
|
setShowSyntaxProblems(checkDebugOption(TRACE_SYNTAX_PROBLEMS, TRUE));
|
||||||
setShowProblems(checkDebugOption(TRACE_PROBLEMS, TRUE));
|
setShowProblems(checkDebugOption(TRACE_PROBLEMS, TRUE));
|
||||||
|
final long limit = getIntProperty(IndexerPreferences.KEY_SKIP_FILES_LARGER_THAN_MB, 0);
|
||||||
|
setFileSizeLimit(limit * 1024 * 1024);
|
||||||
if (checkProperty(IndexerPreferences.KEY_SKIP_ALL_REFERENCES)) {
|
if (checkProperty(IndexerPreferences.KEY_SKIP_ALL_REFERENCES)) {
|
||||||
setSkipReferences(SKIP_ALL_REFERENCES);
|
setSkipReferences(SKIP_ALL_REFERENCES);
|
||||||
} else {
|
} else {
|
||||||
|
@ -141,6 +143,17 @@ public abstract class PDOMIndexerTask extends AbstractIndexerTask implements IPD
|
||||||
return TRUE.equals(getIndexer().getProperty(key));
|
return TRUE.equals(getIndexer().getProperty(key));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private int getIntProperty(String key, int defaultValue) {
|
||||||
|
final String value = getIndexer().getProperty(key);
|
||||||
|
if (value != null) {
|
||||||
|
try {
|
||||||
|
return Integer.parseInt(value);
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return defaultValue;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected String getASTPathForParsingUpFront() {
|
protected String getASTPathForParsingUpFront() {
|
||||||
final IProject project = getProject().getProject();
|
final IProject project = getProject().getProject();
|
||||||
|
|
|
@ -120,6 +120,11 @@ public class ProjectIndexerInputAdapter extends IndexerInputAdapter {
|
||||||
return new File(includePath).isFile();
|
return new File(includePath).isFile();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public long getFileSize(String astFilePath) {
|
||||||
|
return new File(astFilePath).length();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getASTPath(IIndexFileLocation ifl) {
|
public String getASTPath(IIndexFileLocation ifl) {
|
||||||
IPath path= IndexLocationFactory.getAbsolutePath(ifl);
|
IPath path= IndexLocationFactory.getAbsolutePath(ifl);
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2005, 2008 QNX Software Systems and others.
|
* Copyright (c) 2005, 2010 QNX Software Systems and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -42,6 +42,7 @@ public class IndexerPreferencePage extends PreferencePage implements
|
||||||
|
|
||||||
public IndexerPreferencePage(){
|
public IndexerPreferencePage(){
|
||||||
fOptionBlock = new IndexerBlock();
|
fOptionBlock = new IndexerBlock();
|
||||||
|
fOptionBlock.setContainer(this);
|
||||||
fStrategyBlock= new IndexerStrategyBlock(this);
|
fStrategyBlock= new IndexerStrategyBlock(this);
|
||||||
fCacheBlock= new CacheSizeBlock(this);
|
fCacheBlock= new CacheSizeBlock(this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2005, 2009 IBM Corporation and others.
|
* Copyright (c) 2005, 2010 IBM Corporation and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
* http://www.eclipse.org/legal/epl-v10.html
|
* http://www.eclipse.org/legal/epl-v10.html
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* IBM - Initial API and implementation
|
* Bogdan Gheorghe (IBM) - Initial API and implementation
|
||||||
* Markus Schorn (Wind River Systems)
|
* Markus Schorn (Wind River Systems)
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
package org.eclipse.cdt.ui.dialogs;
|
package org.eclipse.cdt.ui.dialogs;
|
||||||
|
@ -15,9 +15,15 @@ import java.util.Properties;
|
||||||
|
|
||||||
import org.eclipse.core.resources.IProject;
|
import org.eclipse.core.resources.IProject;
|
||||||
import org.eclipse.core.runtime.IProgressMonitor;
|
import org.eclipse.core.runtime.IProgressMonitor;
|
||||||
|
import org.eclipse.jface.preference.FieldEditor;
|
||||||
|
import org.eclipse.jface.preference.IntegerFieldEditor;
|
||||||
|
import org.eclipse.jface.util.IPropertyChangeListener;
|
||||||
|
import org.eclipse.jface.util.PropertyChangeEvent;
|
||||||
|
import org.eclipse.swt.SWT;
|
||||||
import org.eclipse.swt.events.SelectionAdapter;
|
import org.eclipse.swt.events.SelectionAdapter;
|
||||||
import org.eclipse.swt.events.SelectionEvent;
|
import org.eclipse.swt.events.SelectionEvent;
|
||||||
import org.eclipse.swt.layout.GridData;
|
import org.eclipse.swt.layout.GridData;
|
||||||
|
import org.eclipse.swt.layout.GridLayout;
|
||||||
import org.eclipse.swt.widgets.Button;
|
import org.eclipse.swt.widgets.Button;
|
||||||
import org.eclipse.swt.widgets.Composite;
|
import org.eclipse.swt.widgets.Composite;
|
||||||
import org.eclipse.swt.widgets.Label;
|
import org.eclipse.swt.widgets.Label;
|
||||||
|
@ -29,7 +35,7 @@ import org.eclipse.cdt.internal.core.model.CProject;
|
||||||
import org.eclipse.cdt.internal.core.pdom.indexer.IndexerPreferences;
|
import org.eclipse.cdt.internal.core.pdom.indexer.IndexerPreferences;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Bogdan Gheorghe
|
* Configuration for indexer.
|
||||||
*/
|
*/
|
||||||
public abstract class AbstractIndexerPage extends AbstractCOptionPage {
|
public abstract class AbstractIndexerPage extends AbstractCOptionPage {
|
||||||
protected static final String INDEX_ALL_FILES = DialogsMessages.AbstractIndexerPage_indexAllFiles;
|
protected static final String INDEX_ALL_FILES = DialogsMessages.AbstractIndexerPage_indexAllFiles;
|
||||||
|
@ -39,11 +45,19 @@ public abstract class AbstractIndexerPage extends AbstractCOptionPage {
|
||||||
private Button fAllHeadersDefault;
|
private Button fAllHeadersDefault;
|
||||||
private Button fAllHeadersAlt;
|
private Button fAllHeadersAlt;
|
||||||
private Button fIncludeHeuristics;
|
private Button fIncludeHeuristics;
|
||||||
|
private IntegerFieldEditor fFileSizeLimit;
|
||||||
private Text fFilesToParseUpFront;
|
private Text fFilesToParseUpFront;
|
||||||
private Button fSkipReferences;
|
private Button fSkipReferences;
|
||||||
private Button fSkipTypeReferences;
|
|
||||||
private Button fSkipImplicitReferences;
|
private Button fSkipImplicitReferences;
|
||||||
private Button fSkipMacroReferences;
|
private Button fSkipMacroAndTypeReferences;
|
||||||
|
|
||||||
|
private IPropertyChangeListener validityChangeListener = new IPropertyChangeListener() {
|
||||||
|
public void propertyChange(PropertyChangeEvent event) {
|
||||||
|
if (event.getProperty().equals(FieldEditor.IS_VALID)) {
|
||||||
|
updateValidState();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
protected AbstractIndexerPage() {
|
protected AbstractIndexerPage() {
|
||||||
super();
|
super();
|
||||||
|
@ -59,20 +73,35 @@ public abstract class AbstractIndexerPage extends AbstractCOptionPage {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void createControl(Composite parent) {
|
public void createControl(Composite parent) {
|
||||||
|
GridLayout gl;
|
||||||
Composite page = ControlFactory.createComposite(parent, 1);
|
Composite page = ControlFactory.createComposite(parent, 1);
|
||||||
fAllSources= createAllFilesButton(page);
|
Composite group= new Composite(page, SWT.NONE);
|
||||||
|
|
||||||
|
fAllSources= createAllFilesButton(group);
|
||||||
IProject prj= getCurrentProject();
|
IProject prj= getCurrentProject();
|
||||||
if (prj == null || !CProject.hasCCNature(prj)) {
|
if (prj == null || !CProject.hasCCNature(prj)) {
|
||||||
fAllHeadersDefault= createAllHeadersButton(page);
|
fAllHeadersDefault= createAllHeadersButton(group);
|
||||||
} else {
|
} else {
|
||||||
fAllHeadersDefault= createAllCppHeadersButton(page);
|
fAllHeadersDefault= createAllCppHeadersButton(group);
|
||||||
fAllHeadersAlt= createAllCHeadersButton(page);
|
fAllHeadersAlt= createAllCHeadersButton(group);
|
||||||
}
|
}
|
||||||
fIncludeHeuristics= createIncludeHeuristicsButton(page);
|
|
||||||
fSkipReferences= createSkipReferencesButton(page);
|
fIncludeHeuristics= createIncludeHeuristicsButton(group);
|
||||||
fSkipImplicitReferences= createSkipImplicitReferencesButton(page);
|
fFileSizeLimit= createFileSizeLimit(group);
|
||||||
fSkipTypeReferences= createSkipTypeReferencesButton(page);
|
|
||||||
fSkipMacroReferences= createSkipMacroReferencesButton(page);
|
group.setLayout(gl= new GridLayout(3, false));
|
||||||
|
gl.marginWidth= 0;
|
||||||
|
group.setLayoutData(new GridData());
|
||||||
|
|
||||||
|
|
||||||
|
group= new Composite(page, SWT.NONE);
|
||||||
|
group.setLayout(gl= new GridLayout(1, false));
|
||||||
|
gl.marginWidth= 0;
|
||||||
|
group.setLayoutData(new GridData());
|
||||||
|
fSkipReferences= createSkipReferencesButton(group);
|
||||||
|
fSkipImplicitReferences= createSkipImplicitReferencesButton(group);
|
||||||
|
fSkipMacroAndTypeReferences= createSkipMacroAndTypeReferencesButton(group);
|
||||||
|
|
||||||
fFilesToParseUpFront= createParseUpFrontTextField(page);
|
fFilesToParseUpFront= createParseUpFrontTextField(page);
|
||||||
|
|
||||||
final SelectionAdapter selectionListener = new SelectionAdapter() {
|
final SelectionAdapter selectionListener = new SelectionAdapter() {
|
||||||
|
@ -109,6 +138,20 @@ public abstract class AbstractIndexerPage extends AbstractCOptionPage {
|
||||||
boolean use= prop == null || TRUE.equals(prop);
|
boolean use= prop == null || TRUE.equals(prop);
|
||||||
fIncludeHeuristics.setSelection(use);
|
fIncludeHeuristics.setSelection(use);
|
||||||
}
|
}
|
||||||
|
if (fFileSizeLimit != null) {
|
||||||
|
Object prop= properties.get(IndexerPreferences.KEY_SKIP_FILES_LARGER_THAN_MB);
|
||||||
|
int size= 0;
|
||||||
|
if (prop != null) {
|
||||||
|
try {
|
||||||
|
size= Integer.parseInt(prop.toString());
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (size <= 0) {
|
||||||
|
size= IndexerPreferences.DEFAULT_FILE_SIZE_LIMIT;
|
||||||
|
}
|
||||||
|
fFileSizeLimit.setStringValue(String.valueOf(size));
|
||||||
|
}
|
||||||
if (fSkipReferences != null) {
|
if (fSkipReferences != null) {
|
||||||
boolean skipReferences= TRUE.equals(properties.get(IndexerPreferences.KEY_SKIP_ALL_REFERENCES));
|
boolean skipReferences= TRUE.equals(properties.get(IndexerPreferences.KEY_SKIP_ALL_REFERENCES));
|
||||||
fSkipReferences.setSelection(skipReferences);
|
fSkipReferences.setSelection(skipReferences);
|
||||||
|
@ -117,13 +160,10 @@ public abstract class AbstractIndexerPage extends AbstractCOptionPage {
|
||||||
boolean skipImplicitReferences= TRUE.equals(properties.get(IndexerPreferences.KEY_SKIP_IMPLICIT_REFERENCES));
|
boolean skipImplicitReferences= TRUE.equals(properties.get(IndexerPreferences.KEY_SKIP_IMPLICIT_REFERENCES));
|
||||||
fSkipImplicitReferences.setSelection(skipImplicitReferences);
|
fSkipImplicitReferences.setSelection(skipImplicitReferences);
|
||||||
}
|
}
|
||||||
if (fSkipTypeReferences != null) {
|
if (fSkipMacroAndTypeReferences != null) {
|
||||||
boolean skipTypeReferences= TRUE.equals(properties.get(IndexerPreferences.KEY_SKIP_TYPE_REFERENCES));
|
boolean skipTypeReferences= TRUE.equals(properties.get(IndexerPreferences.KEY_SKIP_TYPE_REFERENCES));
|
||||||
fSkipTypeReferences.setSelection(skipTypeReferences);
|
|
||||||
}
|
|
||||||
if (fSkipMacroReferences != null) {
|
|
||||||
boolean skipMacroReferences= TRUE.equals(properties.get(IndexerPreferences.KEY_SKIP_MACRO_REFERENCES));
|
boolean skipMacroReferences= TRUE.equals(properties.get(IndexerPreferences.KEY_SKIP_MACRO_REFERENCES));
|
||||||
fSkipMacroReferences.setSelection(skipMacroReferences);
|
fSkipMacroAndTypeReferences.setSelection(skipTypeReferences && skipMacroReferences);
|
||||||
}
|
}
|
||||||
if (fFilesToParseUpFront != null) {
|
if (fFilesToParseUpFront != null) {
|
||||||
String files = getNotNull(properties, IndexerPreferences.KEY_FILES_TO_PARSE_UP_FRONT);
|
String files = getNotNull(properties, IndexerPreferences.KEY_FILES_TO_PARSE_UP_FRONT);
|
||||||
|
@ -150,6 +190,9 @@ public abstract class AbstractIndexerPage extends AbstractCOptionPage {
|
||||||
if (fIncludeHeuristics != null) {
|
if (fIncludeHeuristics != null) {
|
||||||
props.put(IndexerPreferences.KEY_INCLUDE_HEURISTICS, String.valueOf(fIncludeHeuristics.getSelection()));
|
props.put(IndexerPreferences.KEY_INCLUDE_HEURISTICS, String.valueOf(fIncludeHeuristics.getSelection()));
|
||||||
}
|
}
|
||||||
|
if (fFileSizeLimit != null) {
|
||||||
|
props.put(IndexerPreferences.KEY_SKIP_FILES_LARGER_THAN_MB, String.valueOf(fFileSizeLimit.getIntValue()));
|
||||||
|
}
|
||||||
if (fFilesToParseUpFront != null) {
|
if (fFilesToParseUpFront != null) {
|
||||||
props.put(IndexerPreferences.KEY_FILES_TO_PARSE_UP_FRONT, fFilesToParseUpFront.getText());
|
props.put(IndexerPreferences.KEY_FILES_TO_PARSE_UP_FRONT, fFilesToParseUpFront.getText());
|
||||||
}
|
}
|
||||||
|
@ -159,11 +202,10 @@ public abstract class AbstractIndexerPage extends AbstractCOptionPage {
|
||||||
if (fSkipImplicitReferences != null) {
|
if (fSkipImplicitReferences != null) {
|
||||||
props.put(IndexerPreferences.KEY_SKIP_IMPLICIT_REFERENCES, String.valueOf(fSkipImplicitReferences.getSelection()));
|
props.put(IndexerPreferences.KEY_SKIP_IMPLICIT_REFERENCES, String.valueOf(fSkipImplicitReferences.getSelection()));
|
||||||
}
|
}
|
||||||
if (fSkipTypeReferences != null) {
|
if (fSkipMacroAndTypeReferences != null) {
|
||||||
props.put(IndexerPreferences.KEY_SKIP_TYPE_REFERENCES, String.valueOf(fSkipTypeReferences.getSelection()));
|
final String value = String.valueOf(fSkipMacroAndTypeReferences.getSelection());
|
||||||
}
|
props.put(IndexerPreferences.KEY_SKIP_TYPE_REFERENCES, value);
|
||||||
if (fSkipMacroReferences != null) {
|
props.put(IndexerPreferences.KEY_SKIP_MACRO_REFERENCES, value);
|
||||||
props.put(IndexerPreferences.KEY_SKIP_MACRO_REFERENCES, String.valueOf(fSkipMacroReferences.getSelection()));
|
|
||||||
}
|
}
|
||||||
return props;
|
return props;
|
||||||
}
|
}
|
||||||
|
@ -190,13 +232,23 @@ public abstract class AbstractIndexerPage extends AbstractCOptionPage {
|
||||||
if (fSkipImplicitReferences != null) {
|
if (fSkipImplicitReferences != null) {
|
||||||
fSkipImplicitReferences.setEnabled(!skipReferences);
|
fSkipImplicitReferences.setEnabled(!skipReferences);
|
||||||
}
|
}
|
||||||
if (fSkipTypeReferences != null) {
|
if (fSkipMacroAndTypeReferences != null) {
|
||||||
fSkipTypeReferences.setEnabled(!skipReferences);
|
fSkipMacroAndTypeReferences.setEnabled(!skipReferences);
|
||||||
}
|
}
|
||||||
if (fSkipMacroReferences != null) {
|
|
||||||
fSkipMacroReferences.setEnabled(!skipReferences);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void updateValidState() {
|
||||||
|
if (!fFileSizeLimit.isValid()) {
|
||||||
|
setErrorMessage(fFileSizeLimit.getErrorMessage());
|
||||||
|
setValid(false);
|
||||||
|
} else {
|
||||||
|
setValid(true);
|
||||||
|
}
|
||||||
|
final ICOptionContainer container = getContainer();
|
||||||
|
if (container != null) {
|
||||||
|
container.updateContainer();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getNotNull(Properties properties, String key) {
|
private String getNotNull(Properties properties, String key) {
|
||||||
|
@ -214,23 +266,45 @@ public abstract class AbstractIndexerPage extends AbstractCOptionPage {
|
||||||
}
|
}
|
||||||
|
|
||||||
private Button createAllFilesButton(Composite page) {
|
private Button createAllFilesButton(Composite page) {
|
||||||
return ControlFactory.createCheckBox(page, DialogsMessages.AbstractIndexerPage_indexAllFiles);
|
Button result= ControlFactory.createCheckBox(page, DialogsMessages.AbstractIndexerPage_indexAllFiles);
|
||||||
|
((GridData) result.getLayoutData()).horizontalSpan= 3;
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Button createAllHeadersButton(Composite page) {
|
private Button createAllHeadersButton(Composite page) {
|
||||||
return ControlFactory.createCheckBox(page, DialogsMessages.AbstractIndexerPage_indexAllHeaders);
|
Button result= ControlFactory.createCheckBox(page, DialogsMessages.AbstractIndexerPage_indexAllHeaders);
|
||||||
|
((GridData) result.getLayoutData()).horizontalSpan= 3;
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Button createAllCHeadersButton(Composite page) {
|
private Button createAllCHeadersButton(Composite page) {
|
||||||
return ControlFactory.createCheckBox(page, DialogsMessages.AbstractIndexerPage_indexAllHeadersC);
|
Button result= ControlFactory.createCheckBox(page, DialogsMessages.AbstractIndexerPage_indexAllHeadersC);
|
||||||
|
((GridData) result.getLayoutData()).horizontalSpan= 3;
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Button createAllCppHeadersButton(Composite page) {
|
private Button createAllCppHeadersButton(Composite page) {
|
||||||
return ControlFactory.createCheckBox(page, DialogsMessages.AbstractIndexerPage_indexAllHeadersCpp);
|
Button result= ControlFactory.createCheckBox(page, DialogsMessages.AbstractIndexerPage_indexAllHeadersCpp);
|
||||||
|
((GridData) result.getLayoutData()).horizontalSpan= 3;
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Button createIncludeHeuristicsButton(Composite page) {
|
private Button createIncludeHeuristicsButton(Composite page) {
|
||||||
return ControlFactory.createCheckBox(page, DialogsMessages.AbstractIndexerPage_heuristicIncludes);
|
Button result= ControlFactory.createCheckBox(page, DialogsMessages.AbstractIndexerPage_heuristicIncludes);
|
||||||
|
((GridData) result.getLayoutData()).horizontalSpan= 3;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
private IntegerFieldEditor createFileSizeLimit(Composite group) {
|
||||||
|
IntegerFieldEditor result= new IntegerFieldEditor(IndexerPreferences.KEY_SKIP_FILES_LARGER_THAN_MB, DialogsMessages.AbstractIndexerPage_fileSizeLimit, group, 5);
|
||||||
|
result.setValidRange(1, 100000);
|
||||||
|
ControlFactory.createLabel(group, DialogsMessages.CacheSizeBlock_MB);
|
||||||
|
GridData gd = new GridData();
|
||||||
|
gd.grabExcessHorizontalSpace= true;
|
||||||
|
gd.horizontalAlignment= GridData.FILL;
|
||||||
|
result.getLabelControl(group).setLayoutData(gd);
|
||||||
|
result.setPropertyChangeListener(validityChangeListener);
|
||||||
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
private Button createSkipReferencesButton(Composite page) {
|
private Button createSkipReferencesButton(Composite page) {
|
||||||
|
@ -241,11 +315,7 @@ public abstract class AbstractIndexerPage extends AbstractCOptionPage {
|
||||||
return ControlFactory.createCheckBox(page, DialogsMessages.AbstractIndexerPage_skipImplicitReferences);
|
return ControlFactory.createCheckBox(page, DialogsMessages.AbstractIndexerPage_skipImplicitReferences);
|
||||||
}
|
}
|
||||||
|
|
||||||
private Button createSkipTypeReferencesButton(Composite page) {
|
private Button createSkipMacroAndTypeReferencesButton(Composite page) {
|
||||||
return ControlFactory.createCheckBox(page, DialogsMessages.AbstractIndexerPage_skipTypeReferences);
|
return ControlFactory.createCheckBox(page, DialogsMessages.AbstractIndexerPage_skipTypeAndMacroReferences);
|
||||||
}
|
|
||||||
|
|
||||||
private Button createSkipMacroReferencesButton(Composite page) {
|
|
||||||
return ControlFactory.createCheckBox(page, DialogsMessages.AbstractIndexerPage_skipMacroReferences);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*******************************************************************************
|
/*******************************************************************************
|
||||||
* Copyright (c) 2007, 2009 Wind River Systems, Inc. and others.
|
* Copyright (c) 2007, 2010 Wind River Systems, Inc. and others.
|
||||||
* All rights reserved. This program and the accompanying materials
|
* All rights reserved. This program and the accompanying materials
|
||||||
* are made available under the terms of the Eclipse Public License v1.0
|
* are made available under the terms of the Eclipse Public License v1.0
|
||||||
* which accompanies this distribution, and is available at
|
* which accompanies this distribution, and is available at
|
||||||
|
@ -20,6 +20,8 @@ import org.eclipse.osgi.util.NLS;
|
||||||
*/
|
*/
|
||||||
public class DialogsMessages extends NLS {
|
public class DialogsMessages extends NLS {
|
||||||
private static final String BUNDLE_NAME = "org.eclipse.cdt.ui.dialogs.DialogsMessages"; //$NON-NLS-1$
|
private static final String BUNDLE_NAME = "org.eclipse.cdt.ui.dialogs.DialogsMessages"; //$NON-NLS-1$
|
||||||
|
/** @since 5.2 */
|
||||||
|
public static String AbstractIndexerPage_fileSizeLimit;
|
||||||
/** @since 5.1 */
|
/** @since 5.1 */
|
||||||
public static String AbstractIndexerPage_heuristicIncludes;
|
public static String AbstractIndexerPage_heuristicIncludes;
|
||||||
public static String AbstractIndexerPage_indexAllFiles;
|
public static String AbstractIndexerPage_indexAllFiles;
|
||||||
|
@ -33,6 +35,8 @@ public class DialogsMessages extends NLS {
|
||||||
public static String AbstractIndexerPage_skipAllReferences;
|
public static String AbstractIndexerPage_skipAllReferences;
|
||||||
/** @since 5.1 */
|
/** @since 5.1 */
|
||||||
public static String AbstractIndexerPage_skipImplicitReferences;
|
public static String AbstractIndexerPage_skipImplicitReferences;
|
||||||
|
/** @since 5.2 */
|
||||||
|
public static String AbstractIndexerPage_skipTypeAndMacroReferences;
|
||||||
public static String AbstractIndexerPage_skipTypeReferences;
|
public static String AbstractIndexerPage_skipTypeReferences;
|
||||||
public static String AbstractIndexerPage_skipMacroReferences;
|
public static String AbstractIndexerPage_skipMacroReferences;
|
||||||
public static String CacheSizeBlock_MB;
|
public static String CacheSizeBlock_MB;
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
###############################################################################
|
###############################################################################
|
||||||
# Copyright (c) 2007, 2009 Wind River Systems, Inc. and others.
|
# Copyright (c) 2007, 2010 Wind River Systems, Inc. and others.
|
||||||
# All rights reserved. This program and the accompanying materials
|
# All rights reserved. This program and the accompanying materials
|
||||||
# are made available under the terms of the Eclipse Public License v1.0
|
# are made available under the terms of the Eclipse Public License v1.0
|
||||||
# which accompanies this distribution, and is available at
|
# which accompanies this distribution, and is available at
|
||||||
|
@ -13,6 +13,7 @@
|
||||||
PreferenceScopeBlock_enableProjectSettings=Enable project specific settings
|
PreferenceScopeBlock_enableProjectSettings=Enable project specific settings
|
||||||
PreferenceScopeBlock_storeWithProject=Store settings with project
|
PreferenceScopeBlock_storeWithProject=Store settings with project
|
||||||
PreferenceScopeBlock_preferenceLink=<a>Configure Workspace Settings...</a>
|
PreferenceScopeBlock_preferenceLink=<a>Configure Workspace Settings...</a>
|
||||||
|
AbstractIndexerPage_fileSizeLimit=Skip files larger than
|
||||||
AbstractIndexerPage_heuristicIncludes=Allow heuristic resolution of includes
|
AbstractIndexerPage_heuristicIncludes=Allow heuristic resolution of includes
|
||||||
AbstractIndexerPage_indexAllFiles=Index source files not included in the build
|
AbstractIndexerPage_indexAllFiles=Index source files not included in the build
|
||||||
AbstractIndexerPage_indexAllHeaders=Index unused headers
|
AbstractIndexerPage_indexAllHeaders=Index unused headers
|
||||||
|
@ -20,6 +21,7 @@ AbstractIndexerPage_indexAllHeadersC=Index unused headers as C files
|
||||||
AbstractIndexerPage_indexAllHeadersCpp=Index unused headers as C++ files
|
AbstractIndexerPage_indexAllHeadersCpp=Index unused headers as C++ files
|
||||||
AbstractIndexerPage_skipAllReferences=Skip all references (Call Hierarchy and Search will not work)
|
AbstractIndexerPage_skipAllReferences=Skip all references (Call Hierarchy and Search will not work)
|
||||||
AbstractIndexerPage_skipImplicitReferences=Skip implicit references (e.g. overloaded operators)
|
AbstractIndexerPage_skipImplicitReferences=Skip implicit references (e.g. overloaded operators)
|
||||||
|
AbstractIndexerPage_skipTypeAndMacroReferences=Skip type and macro references (Search for these references will not work)
|
||||||
AbstractIndexerPage_skipTypeReferences=Skip type references (Search for type references will not work)
|
AbstractIndexerPage_skipTypeReferences=Skip type references (Search for type references will not work)
|
||||||
AbstractIndexerPage_skipMacroReferences=Skip macro references (Search for macro references will not work)
|
AbstractIndexerPage_skipMacroReferences=Skip macro references (Search for macro references will not work)
|
||||||
AbstractIndexerPage_indexUpFront=Files to index up-front:
|
AbstractIndexerPage_indexUpFront=Files to index up-front:
|
||||||
|
@ -28,7 +30,7 @@ CacheSizeBlock_indexDatabaseCache=Index database cache:
|
||||||
CacheSizeBlock_limitRelativeToMaxHeapSize=Limit relative to the maximum heap size:
|
CacheSizeBlock_limitRelativeToMaxHeapSize=Limit relative to the maximum heap size:
|
||||||
CacheSizeBlock_absoluteLimit=Absolute Limit:
|
CacheSizeBlock_absoluteLimit=Absolute Limit:
|
||||||
CacheSizeBlock_MB=MB
|
CacheSizeBlock_MB=MB
|
||||||
CacheSizeBlock_headerFileCache=Header file cache (used by full indexer and refactoring):
|
CacheSizeBlock_headerFileCache=Header file cache (used by refactoring):
|
||||||
DocCommentOwnerBlock_DocToolLabel=Documentation tool:
|
DocCommentOwnerBlock_DocToolLabel=Documentation tool:
|
||||||
DocCommentOwnerBlock_EnableProjectSpecificSettings=Enable project specific settings
|
DocCommentOwnerBlock_EnableProjectSpecificSettings=Enable project specific settings
|
||||||
DocCommentOwnerBlock_SelectDocToolDescription=Select the documentation tool to be used to determine editor behaviors in this project
|
DocCommentOwnerBlock_SelectDocToolDescription=Select the documentation tool to be used to determine editor behaviors in this project
|
||||||
|
|
|
@ -96,6 +96,23 @@ public class IndexerBlock extends AbstractCOptionPage {
|
||||||
initializeIndexerConfigMap();
|
initializeIndexerConfigMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isValid() {
|
||||||
|
return super.isValid() && (fCurrentPage == null || fCurrentPage.isValid());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getErrorMessage() {
|
||||||
|
String msg = super.getErrorMessage();
|
||||||
|
if (msg == null && fCurrentPage != null) {
|
||||||
|
msg= fCurrentPage.getErrorMessage();
|
||||||
|
}
|
||||||
|
return msg;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create a profile page only on request
|
* Create a profile page only on request
|
||||||
*/
|
*/
|
||||||
|
|
Loading…
Add table
Reference in a new issue