mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-30 02:09:59 +07:00
PY-24881 rst completion of links
This commit is contained in:
@@ -32,6 +32,10 @@ public class RestRefereneceCompletionTest extends RestFixtureTestCase {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testSharp() {
|
||||
doTest();
|
||||
}
|
||||
|
||||
public void testAlreadyFilled() {
|
||||
final String path = "/completion/reference/alreadyFilled.rst";
|
||||
myFixture.configureByFile(path);
|
||||
|
||||
@@ -1 +1 @@
|
||||
.. note::
|
||||
.. attention::
|
||||
@@ -1 +1 @@
|
||||
.. no<caret>
|
||||
.. att<caret>
|
||||
@@ -0,0 +1,4 @@
|
||||
Note that footnotes may get
|
||||
[#test]_
|
||||
|
||||
.. [#test]
|
||||
@@ -0,0 +1,4 @@
|
||||
Note that footnotes may get
|
||||
[#test]_
|
||||
|
||||
.. [#te<caret>
|
||||
@@ -27,6 +27,7 @@ import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import static com.intellij.patterns.PlatformPatterns.psiElement;
|
||||
import static com.intellij.patterns.StandardPatterns.or;
|
||||
import static com.jetbrains.rest.completion.ReferenceCompletionContributor.getPrefix;
|
||||
|
||||
/**
|
||||
* User : catherine
|
||||
@@ -43,11 +44,15 @@ public class DirectiveCompletionContributor extends CompletionContributor {
|
||||
protected void addCompletions(@NotNull CompletionParameters parameters,
|
||||
ProcessingContext context,
|
||||
@NotNull CompletionResultSet result) {
|
||||
int offset = parameters.getOffset();
|
||||
final String prefix = getPrefix(offset, parameters.getOriginalFile());
|
||||
if (prefix.length() > 0) {
|
||||
result = result.withPrefixMatcher(prefix);
|
||||
}
|
||||
for (String tag : RestUtil.getDirectives()) {
|
||||
result.addElement(LookupElementBuilder.create(tag));
|
||||
}
|
||||
}
|
||||
}
|
||||
);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -69,38 +69,41 @@ public class ReferenceCompletionContributor extends CompletionContributor {
|
||||
if (elements != null) {
|
||||
for (RestReference e : elements) {
|
||||
String name = e.getReferenceText();
|
||||
if (! names.contains(name)) {
|
||||
if ((name.startsWith("[") && name.endsWith("]")) ||
|
||||
(name.startsWith("|") && name.endsWith("|")))
|
||||
if (!names.contains(name)) {
|
||||
if ((name.startsWith("[") && name.endsWith("]")) || (name.startsWith("|") && name.endsWith("|"))) {
|
||||
result.addElement(LookupElementBuilder.create(name));
|
||||
else if (name.equals("__"))
|
||||
}
|
||||
else if (name.equals("__")) {
|
||||
result.addElement(LookupElementBuilder.create(name + ":"));
|
||||
}
|
||||
else {
|
||||
if (name.startsWith("_")) name = "\\"+name;
|
||||
name = name.startsWith("_") ? "\\" + name : name;
|
||||
result.addElement(LookupElementBuilder.create("_" + name + ":"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private String getPrefix(int offset, PsiFile file) {
|
||||
if (offset > 0) {
|
||||
offset--;
|
||||
}
|
||||
final String text = file.getText();
|
||||
StringBuilder prefixBuilder = new StringBuilder();
|
||||
while(offset > 0 && (Character.isLetterOrDigit(text.charAt(offset)) || text.charAt(offset) == '_'
|
||||
|| text.charAt(offset) == '[') || text.charAt(offset) == '|') {
|
||||
prefixBuilder.insert(0, text.charAt(offset));
|
||||
if (text.charAt(offset) == '_' || text.charAt(offset) == '[' || text.charAt(offset) == '|') {
|
||||
break;
|
||||
}
|
||||
offset--;
|
||||
}
|
||||
return prefixBuilder.toString();
|
||||
}
|
||||
}
|
||||
);
|
||||
public static String getPrefix(int offset, PsiFile file) {
|
||||
if (offset > 0) {
|
||||
offset--;
|
||||
}
|
||||
final String text = file.getText();
|
||||
StringBuilder prefixBuilder = new StringBuilder();
|
||||
while(offset > 0) {
|
||||
final PsiElement element = file.findElementAt(offset);
|
||||
if (element != null && element.getNode().getElementType() == RestTokenTypes.EXPLISIT_MARKUP_START)
|
||||
break;
|
||||
final char charAt = text.charAt(offset);
|
||||
prefixBuilder.insert(0, charAt);
|
||||
if (charAt == '_' || charAt == '[' || charAt == '|' || charAt == '\n') {
|
||||
break;
|
||||
}
|
||||
offset--;
|
||||
}
|
||||
return prefixBuilder.toString();
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user