下面列出了怎么用com.intellij.psi.codeStyle.SuggestedNameInfo的API类实例代码及写法,或者点击链接到github查看源代码。
public String[] getSuggestedNames() {
final LinkedHashSet<String> result = new LinkedHashSet<String>();
final String initialName = VariableInplaceRenameHandler.getInitialName();
if (initialName != null) {
result.add(initialName);
}
result.add(UsageViewUtil.getShortName(myPsiElement));
final NameSuggestionProvider[] providers = Extensions.getExtensions(NameSuggestionProvider.EP_NAME);
for(NameSuggestionProvider provider: providers) {
SuggestedNameInfo info = provider.getSuggestedNames(myPsiElement, myNameSuggestionContext, result);
if (info != null) {
mySuggestedNameInfo = info;
if (provider instanceof PreferrableNameSuggestionProvider && !((PreferrableNameSuggestionProvider)provider).shouldCheckOthers()) break;
}
}
return ArrayUtil.toStringArray(result);
}
@Nullable
@Override
public SuggestedNameInfo getSuggestedNames(PsiElement psiElement, PsiElement psiElement1, Set<String> set) {
if(!(psiElement instanceof Parameter)) {
return null;
}
List<String> filter = ContainerUtil.filter(PhpNameSuggestionUtil.variableNameByType((Parameter) psiElement, psiElement.getProject(), false), s -> !StringUtil.containsChar(s, '\\'));
if(filter.size() == 0) {
return null;
}
for (String item : filter) {
for(String end: TRIM_STRINGS) {
// ending
if(item.toLowerCase().endsWith(end)) {
item = item.substring(0, item.length() - end.length());
}
// remove starting
if(item.toLowerCase().startsWith(end)) {
item = WordUtils.uncapitalize(item.substring(end.length()));
}
}
if(StringUtils.isNotBlank(item)) {
set.add(item);
}
}
return null;
}
@Nullable
@Override
public SuggestedNameInfo getSuggestedNames(PsiElement psiElement, PsiElement psiElement1, Set<String> set) {
if(!(psiElement instanceof Parameter)) {
return null;
}
List<String> filter = ContainerUtil.filter(PhpNameSuggestionUtil.variableNameByType((Parameter) psiElement, psiElement.getProject(), false), s -> !StringUtil.containsChar(s, '\\'));
if(filter.size() == 0) {
return null;
}
for (String item : filter) {
for(String end: TRIM_STRINGS) {
// ending
if(item.toLowerCase().endsWith(end)) {
item = item.substring(0, item.length() - end.length());
}
// remove starting
if(item.toLowerCase().startsWith(end)) {
item = WordUtils.uncapitalize(item.substring(end.length()));
}
}
if(StringUtils.isNotBlank(item)) {
set.add(item);
}
}
return null;
}
@Nullable
@Override
public SuggestedNameInfo getSuggestedNames(PsiElement element, @Nullable PsiElement nameSuggestionContext, Set<String> result)
{
if(element.getLanguage() != CSharpLanguage.INSTANCE)
{
return null;
}
Iterator<String> iterator = result.iterator();
while(iterator.hasNext())
{
String next = iterator.next();
if(CSharpNameSuggesterUtil.isKeyword(next))
{
iterator.remove();
}
}
if(element instanceof DotNetVariable)
{
Collection<String> names = CSharpNameSuggesterUtil.getSuggestedVariableNames((DotNetVariable) element);
result.addAll(names);
return new SuggestedNameInfo(ArrayUtil.toStringArray(names))
{
};
}
return null;
}
private static LookupElement[] initLookupItems(LinkedHashSet<String> names,
PsiNamedElement elementToRename,
PsiElement nameSuggestionContext,
final boolean shouldSelectAll) {
if (names == null) {
names = new LinkedHashSet<String>();
for (NameSuggestionProvider provider : Extensions.getExtensions(NameSuggestionProvider.EP_NAME)) {
final SuggestedNameInfo suggestedNameInfo = provider.getSuggestedNames(elementToRename, nameSuggestionContext, names);
if (suggestedNameInfo != null &&
provider instanceof PreferrableNameSuggestionProvider &&
!((PreferrableNameSuggestionProvider)provider).shouldCheckOthers()) {
break;
}
}
}
final LookupElement[] lookupElements = new LookupElement[names.size()];
final Iterator<String> iterator = names.iterator();
for (int i = 0; i < lookupElements.length; i++) {
final String suggestion = iterator.next();
lookupElements[i] = LookupElementBuilder.create(suggestion).withInsertHandler(new InsertHandler<LookupElement>() {
@Override
public void handleInsert(InsertionContext context, LookupElement item) {
if (shouldSelectAll) return;
final Editor topLevelEditor = InjectedLanguageUtil.getTopLevelEditor(context.getEditor());
final TemplateState templateState = TemplateManagerImpl.getTemplateState(topLevelEditor);
if (templateState != null) {
final TextRange range = templateState.getCurrentVariableRange();
if (range != null) {
topLevelEditor.getDocument().replaceString(range.getStartOffset(), range.getEndOffset(), suggestion);
}
}
}
});
}
return lookupElements;
}
@Nullable
private LookupElement[] createLookupItems(String name, Editor editor, PsiNamedElement psiVariable) {
TemplateState templateState = TemplateManagerImpl.getTemplateState(editor);
if (psiVariable != null) {
final TextResult insertedValue =
templateState != null ? templateState.getVariableValue(PRIMARY_VARIABLE_NAME) : null;
if (insertedValue != null) {
final String text = insertedValue.getText();
if (!text.isEmpty() && !Comparing.strEqual(text, name)) {
final LinkedHashSet<String> names = new LinkedHashSet<String>();
names.add(text);
for (NameSuggestionProvider provider : Extensions.getExtensions(NameSuggestionProvider.EP_NAME)) {
final SuggestedNameInfo suggestedNameInfo = provider.getSuggestedNames(psiVariable, psiVariable, names);
if (suggestedNameInfo != null &&
provider instanceof PreferrableNameSuggestionProvider &&
!((PreferrableNameSuggestionProvider)provider).shouldCheckOthers()) {
break;
}
}
final LookupElement[] items = new LookupElement[names.size()];
final Iterator<String> iterator = names.iterator();
for (int i = 0; i < items.length; i++) {
items[i] = LookupElementBuilder.create(iterator.next());
}
return items;
}
}
}
return myLookupItems;
}
@javax.annotation.Nullable
SuggestedNameInfo getSuggestedNames(PsiElement element, @Nullable PsiElement nameSuggestionContext, Set<String> result);