index-independent JSP parsing

This commit is contained in:
Dennis Ushakov
2015-01-16 23:58:40 +03:00
parent f15358d94c
commit 56c5cdeb32
3 changed files with 10 additions and 11 deletions
@@ -22,8 +22,5 @@ import java.util.Set;
* @author ik
*/
public interface JspFileViewProvider extends JspxFileViewProvider {
Set<String> getKnownTaglibPrefixes();
Set<String> getKnownTaglibPrefixes(CharSequence newContent);
Set<String> getXmlNsPrefixes(CharSequence buffer);
}
@@ -44,6 +44,7 @@ import com.intellij.psi.PsiDocumentManager;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.util.SmartList;
import com.intellij.xml.util.XmlUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
@@ -200,7 +201,7 @@ public class XmlTagNameSynchronizer extends CommandAdapter implements Applicatio
}
for (int i = 0; i < newLength; i++) {
if (!isValidTagNameChar(fragment.charAt(i))) {
if (!XmlUtil.isValidTagNameChar(fragment.charAt(i))) {
clearMarkers();
return;
}
@@ -241,12 +242,12 @@ public class XmlTagNameSynchronizer extends CommandAdapter implements Applicatio
start = i + 1;
break;
}
if (!isValidTagNameChar(c)) break;
if (!XmlUtil.isValidTagNameChar(c)) break;
}
if (start < 0) return null;
for (int i = offset; i < Math.min(document.getTextLength(), offset + 50); i++) {
final char c = sequence.charAt(i);
if (!isValidTagNameChar(c)) {
if (!XmlUtil.isValidTagNameChar(c)) {
end = i;
break;
}
@@ -255,10 +256,6 @@ public class XmlTagNameSynchronizer extends CommandAdapter implements Applicatio
return document.createRangeMarker(start, end, true);
}
private static boolean isValidTagNameChar(char c) {
return Character.isJavaIdentifierPart(c) || c == ':';
}
public void beforeCommandFinished() {
if (myMarkers.isEmpty()) return;
@@ -1345,6 +1345,11 @@ public class XmlUtil {
return StringUtil.escapeXml(text);
}
public static boolean isValidTagNameChar(char c) {
return Character.isLetter(c) || Character.isDigit(c) ||
c == ':' || c == '_' || c == '-' || c == '.';
}
@Nullable
public static String extractXmlEncodingFromProlog(@NotNull byte[] content) {
return XmlCharsetDetector.extractXmlEncodingFromProlog(content);