From 4ccec31efa559f1ff2d34b6e592dd3e00d7204a2 Mon Sep 17 00:00:00 2001 From: bigguy345 Date: Fri, 13 Mar 2026 03:22:46 +0200 Subject: [PATCH] Removed MODIFIER, IMPORT_KEYWORD and CLASS_IMPORT token types, all replaced with KEYWORD --- .../script/autocomplete/AutocompleteMenu.java | 2 +- .../script/interpreter/ScriptDocument.java | 12 +-- .../interpreter/ScriptTextContainer.java | 3 - .../interpreter/hover/TokenHoverInfo.java | 82 ++++++++++--------- .../util/script/interpreter/token/Token.java | 19 +++-- .../script/interpreter/token/TokenType.java | 9 +- 6 files changed, 63 insertions(+), 64 deletions(-) diff --git a/src/main/java/noppes/npcs/client/gui/util/script/autocomplete/AutocompleteMenu.java b/src/main/java/noppes/npcs/client/gui/util/script/autocomplete/AutocompleteMenu.java index d62fbe48d..5912b5980 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/autocomplete/AutocompleteMenu.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/autocomplete/AutocompleteMenu.java @@ -419,7 +419,7 @@ public class AutocompleteMenu extends Gui { GL11.glPushMatrix(); float scale = 0.5f; GL11.glScalef(scale, scale, scale); - int col = TokenType.MODIFIER.getHexColor(); + int col = TokenType.KEYWORD.getHexColor(); if (isStatic) font.drawString("s", (int) (textX / scale), (int) (textY / scale), col); diff --git a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/ScriptDocument.java b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/ScriptDocument.java index 69ddd4547..a6ea09ac3 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/ScriptDocument.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/ScriptDocument.java @@ -4586,7 +4586,7 @@ public class ScriptDocument { // Modifiers - Java only if (!isJavaScript()) { - addPatternMarks(marks, MODIFIER_PATTERN, TokenType.MODIFIER); + addPatternMarks(marks, MODIFIER_PATTERN, TokenType.KEYWORD); } // Type declarations and usages - Java only (JS doesn't have explicit types) @@ -5297,7 +5297,7 @@ public class ScriptDocument { continue; // Mark 'import' keyword - marks.add(new ScriptLine.Mark(imp.getStartOffset(), imp.getStartOffset() + 6, TokenType.IMPORT_KEYWORD, imp)); + marks.add(new ScriptLine.Mark(imp.getStartOffset(), imp.getStartOffset() + 6, TokenType.KEYWORD, imp)); // Parse path tokens int pathStart = imp.getPathStartOffset(); @@ -5477,7 +5477,7 @@ public class ScriptDocument { if (isExcluded(m.start())) continue; - marks.add(new ScriptLine.Mark(m.start(1), m.end(1), TokenType.CLASS_KEYWORD)); + marks.add(new ScriptLine.Mark(m.start(1), m.end(1), TokenType.KEYWORD)); String kind = m.group(1); TokenType nameType; @@ -5541,7 +5541,7 @@ public class ScriptDocument { int extIdx = indexOfAtDepthZero(betweenParamsAndBrace, "extends"); if (extIdx >= 0) { int extendsAbsStart = scanPos + extIdx; - marks.add(new ScriptLine.Mark(extendsAbsStart, extendsAbsStart + 7, TokenType.IMPORT_KEYWORD)); + marks.add(new ScriptLine.Mark(extendsAbsStart, extendsAbsStart + 7, TokenType.KEYWORD)); // Extract parent name after 'extends ' String afterExtends = betweenParamsAndBrace.substring(extIdx + 7).trim(); @@ -5574,7 +5574,7 @@ public class ScriptDocument { int implIdx = indexOfAtDepthZero(betweenParamsAndBrace, "implements"); if (implIdx >= 0) { int implAbsStart = scanPos + implIdx; - marks.add(new ScriptLine.Mark(implAbsStart, implAbsStart + 10, TokenType.IMPORT_KEYWORD)); + marks.add(new ScriptLine.Mark(implAbsStart, implAbsStart + 10, TokenType.KEYWORD)); String afterImpl = betweenParamsAndBrace.substring(implIdx + 10).trim(); int implListStart = implAbsStart + 10; @@ -8201,7 +8201,7 @@ for (ScriptTypeInfo type:scriptTypes.values()) { superClass, parentConstructor, false).setConstructor(true); callInfo.validate(); methodCalls.add(callInfo); - marks.add(new ScriptLine.Mark(nameStart, nameEnd, TokenType.IMPORT_KEYWORD, + marks.add(new ScriptLine.Mark(nameStart, nameEnd, TokenType.KEYWORD, errorMsg != null ? errorMsg : callInfo)); } diff --git a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/ScriptTextContainer.java b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/ScriptTextContainer.java index 05da45227..7a712ae6c 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/ScriptTextContainer.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/ScriptTextContainer.java @@ -210,10 +210,7 @@ public class ScriptTextContainer extends JavaTextContainer { noppes.npcs.client.gui.util.script.interpreter.token.TokenType type) { if (type == noppes.npcs.client.gui.util.script.interpreter.token.TokenType.COMMENT) return JavaTextContainer.TokenType.COMMENT; if (type == noppes.npcs.client.gui.util.script.interpreter.token.TokenType.STRING) return JavaTextContainer.TokenType.STRING; - if (type == noppes.npcs.client.gui.util.script.interpreter.token.TokenType.CLASS_KEYWORD) return JavaTextContainer.TokenType.CLASS_KEYWORD; - if (type == noppes.npcs.client.gui.util.script.interpreter.token.TokenType.IMPORT_KEYWORD) return JavaTextContainer.TokenType.IMPORT_KEYWORD; if (type == noppes.npcs.client.gui.util.script.interpreter.token.TokenType.KEYWORD) return JavaTextContainer.TokenType.KEYWORD; - if (type == noppes.npcs.client.gui.util.script.interpreter.token.TokenType.MODIFIER) return JavaTextContainer.TokenType.MODIFIER; if (type == noppes.npcs.client.gui.util.script.interpreter.token.TokenType.INTERFACE_DECL) return JavaTextContainer.TokenType.INTERFACE_DECL; if (type == noppes.npcs.client.gui.util.script.interpreter.token.TokenType.ENUM_DECL) return JavaTextContainer.TokenType.ENUM_DECL; if (type == noppes.npcs.client.gui.util.script.interpreter.token.TokenType.CLASS_DECL) return JavaTextContainer.TokenType.CLASS_DECL; diff --git a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/hover/TokenHoverInfo.java b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/hover/TokenHoverInfo.java index b45688807..fb3567223 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/hover/TokenHoverInfo.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/hover/TokenHoverInfo.java @@ -17,6 +17,7 @@ import noppes.npcs.client.gui.util.script.interpreter.method.MethodInfo; import noppes.npcs.client.gui.util.script.interpreter.token.Token; import noppes.npcs.client.gui.util.script.interpreter.token.TokenErrorMessage; import noppes.npcs.client.gui.util.script.interpreter.token.TokenType; +import noppes.npcs.client.gui.util.script.interpreter.type.IntersectionTypeInfo; import noppes.npcs.client.gui.util.script.interpreter.type.ScriptTypeInfo; import noppes.npcs.client.gui.util.script.interpreter.type.TypeInfo; import noppes.npcs.client.gui.util.script.interpreter.type.TypeResolver; @@ -266,17 +267,17 @@ public class TokenHoverInfo { int mods = clazz.getModifiers(); // Modifiers - if (Modifier.isPublic(mods)) addSegment("public ", TokenType.MODIFIER.getHexColor()); - if (Modifier.isAbstract(mods) && !clazz.isInterface()) addSegment("abstract ", TokenType.MODIFIER.getHexColor()); - if (Modifier.isFinal(mods) && !isEnum) addSegment("final ", TokenType.MODIFIER.getHexColor()); + if (Modifier.isPublic(mods)) addSegment("public ", TokenType.KEYWORD.getHexColor()); + if (Modifier.isAbstract(mods) && !clazz.isInterface()) addSegment("abstract ", TokenType.KEYWORD.getHexColor()); + if (Modifier.isFinal(mods) && !isEnum) addSegment("final ", TokenType.KEYWORD.getHexColor()); // Class type keyword if (clazz.isInterface()) { - addSegment("interface ", TokenType.MODIFIER.getHexColor()); + addSegment("interface ", TokenType.KEYWORD.getHexColor()); } else if (isEnum) { - addSegment("enum ", TokenType.MODIFIER.getHexColor()); + addSegment("enum ", TokenType.KEYWORD.getHexColor()); } else { - addSegment("class ", TokenType.MODIFIER.getHexColor()); + addSegment("class ", TokenType.KEYWORD.getHexColor()); } // Class name - use proper color based on type @@ -290,7 +291,7 @@ public class TokenHoverInfo { // Extends Class superclass = clazz.getSuperclass(); if (superclass != null && superclass != Object.class && !isEnum) { - addSegment(" extends ", TokenType.MODIFIER.getHexColor()); + addSegment(" extends ", TokenType.KEYWORD.getHexColor()); addSegment(superclass.getSimpleName(), getColorForClass(superclass)); } @@ -299,7 +300,7 @@ public class TokenHoverInfo { // Implements Class[] interfaces = clazz.getInterfaces(); if (interfaces.length > 0) { - addSegment(clazz.isInterface() ? " extends " : " implements ", TokenType.MODIFIER.getHexColor()); + addSegment(clazz.isInterface() ? " extends " : " implements ", TokenType.KEYWORD.getHexColor()); for (int i = 0; i < Math.min(interfaces.length, 3); i++) { if (i > 0) addSegment(", ", TokenType.DEFAULT.getHexColor()); addSegment(interfaces[i].getSimpleName(), TokenType.INTERFACE_DECL.getHexColor()); @@ -325,19 +326,19 @@ public class TokenHoverInfo { int mods = scriptType.getModifiers(); // Modifiers - if (Modifier.isPublic(mods)) addSegment("public ", TokenType.MODIFIER.getHexColor()); + if (Modifier.isPublic(mods)) addSegment("public ", TokenType.KEYWORD.getHexColor()); if (Modifier.isAbstract(mods) && scriptType.getKind() != TypeInfo.Kind.INTERFACE) - addSegment("abstract ", TokenType.MODIFIER.getHexColor()); - if (Modifier.isFinal(mods)) addSegment("final ", TokenType.MODIFIER.getHexColor()); - if (Modifier.isStatic(mods)) addSegment("static ", TokenType.MODIFIER.getHexColor()); + addSegment("abstract ", TokenType.KEYWORD.getHexColor()); + if (Modifier.isFinal(mods)) addSegment("final ", TokenType.KEYWORD.getHexColor()); + if (Modifier.isStatic(mods)) addSegment("static ", TokenType.KEYWORD.getHexColor()); // Class type keyword if (scriptType.getKind() == TypeInfo.Kind.INTERFACE) { - addSegment("interface ", TokenType.MODIFIER.getHexColor()); + addSegment("interface ", TokenType.KEYWORD.getHexColor()); } else if (scriptType.getKind() == TypeInfo.Kind.ENUM) { - addSegment("enum ", TokenType.MODIFIER.getHexColor()); + addSegment("enum ", TokenType.KEYWORD.getHexColor()); } else { - addSegment("class ", TokenType.MODIFIER.getHexColor()); + addSegment("class ", TokenType.KEYWORD.getHexColor()); } // Class name @@ -347,7 +348,7 @@ public class TokenHoverInfo { addTypeSegments(typeInfo); addDeclaredTypeParamSegments(typeInfo); if (scriptType.hasSuperClass()) { - addSegment(" extends ", TokenType.MODIFIER.getHexColor()); + addSegment(" extends ", TokenType.KEYWORD.getHexColor()); TypeInfo superClass = scriptType.getSuperClass(); if (superClass != null && superClass.isResolved()) { // Color based on resolved type @@ -370,7 +371,7 @@ public class TokenHoverInfo { // Already showed extends, so use comma addSegment(", ", TokenType.DEFAULT.getHexColor()); } else { - addSegment(keyword, TokenType.MODIFIER.getHexColor()); + addSegment(keyword, TokenType.KEYWORD.getHexColor()); } List interfaceNames = scriptType.getImplementedInterfaceNames(); @@ -414,12 +415,12 @@ public class TokenHoverInfo { JSTypeInfo jsType = typeInfo.getJSTypeInfo(); iconIndicator = "I"; - addSegment("interface ", TokenType.MODIFIER.getHexColor()); + addSegment("interface ", TokenType.KEYWORD.getHexColor()); addTypeSegments(typeInfo); addDeclaredTypeParamSegments(typeInfo); if (jsType.getExtendsType() != null) { - addSegment(" extends ", TokenType.MODIFIER.getHexColor()); + addSegment(" extends ", TokenType.KEYWORD.getHexColor()); addSegment(jsType.getExtendsType(), TokenType.INTERFACE_DECL.getHexColor()); } @@ -451,7 +452,7 @@ public class TokenHoverInfo { iconIndicator = "T"; String paramName = typeInfo.getTypeParameterName(); - addSegment("type parameter ", TokenType.MODIFIER.getHexColor()); + addSegment("type parameter ", TokenType.KEYWORD.getHexColor()); addSegment("<", TokenType.DEFAULT.getHexColor()); addSegment(paramName, TokenType.GENERIC_TYPE_PARAM.getHexColor()); @@ -796,13 +797,14 @@ public class TokenHoverInfo { TypeParamInfo param = params.get(i); addSegment(param.getName(), TokenType.GENERIC_TYPE_PARAM.getHexColor()); if (param.getBoundTypeName() != null && !"Object".equals(param.getBoundTypeName())) { - addSegment(" extends ", TokenType.MODIFIER.getHexColor()); + addSegment(" extends ", TokenType.KEYWORD.getHexColor()); TypeInfo boundType = param.getBoundTypeInfo(); if (boundType != null && boundType.isResolved()) { addTypeSegments(boundType); } else { addSegment(param.getBoundTypeName(), TokenType.IMPORTED_CLASS.getHexColor()); } + addSegment(" extends ", TokenType.KEYWORD.getHexColor()); } } addSegment(">", TokenType.DEFAULT.getHexColor()); @@ -844,9 +846,9 @@ public class TokenHoverInfo { // Modifiers (public, private, etc.) declaration.clear(); int mods = constructor.getModifiers(); - if (Modifier.isPublic(mods)) addSegment("public ", TokenType.MODIFIER.getHexColor()); - else if (Modifier.isProtected(mods)) addSegment("protected ", TokenType.MODIFIER.getHexColor()); - else if (Modifier.isPrivate(mods)) addSegment("private ", TokenType.MODIFIER.getHexColor()); + if (Modifier.isPublic(mods)) addSegment("public ", TokenType.KEYWORD.getHexColor()); + else if (Modifier.isProtected(mods)) addSegment("protected ", TokenType.KEYWORD.getHexColor()); + else if (Modifier.isPrivate(mods)) addSegment("private ", TokenType.KEYWORD.getHexColor()); // Constructor name (same as class name) addSegment(constructor.getName(), containingType.getTokenType().getHexColor()); @@ -890,14 +892,14 @@ public class TokenHoverInfo { // Skip for now - could add later // Modifiers - if (Modifier.isPublic(mods)) addSegment("public ", TokenType.MODIFIER.getHexColor()); - else if (Modifier.isProtected(mods)) addSegment("protected ", TokenType.MODIFIER.getHexColor()); - else if (Modifier.isPrivate(mods)) addSegment("private ", TokenType.MODIFIER.getHexColor()); + if (Modifier.isPublic(mods)) addSegment("public ", TokenType.KEYWORD.getHexColor()); + else if (Modifier.isProtected(mods)) addSegment("protected ", TokenType.KEYWORD.getHexColor()); + else if (Modifier.isPrivate(mods)) addSegment("private ", TokenType.KEYWORD.getHexColor()); - if (Modifier.isStatic(mods)) addSegment("static ", TokenType.MODIFIER.getHexColor()); - if (Modifier.isFinal(mods)) addSegment("final ", TokenType.MODIFIER.getHexColor()); - if (Modifier.isAbstract(mods)) addSegment("abstract ", TokenType.MODIFIER.getHexColor()); - if (Modifier.isSynchronized(mods)) addSegment("synchronized ", TokenType.MODIFIER.getHexColor()); + if (Modifier.isStatic(mods)) addSegment("static ", TokenType.KEYWORD.getHexColor()); + if (Modifier.isFinal(mods)) addSegment("final ", TokenType.KEYWORD.getHexColor()); + if (Modifier.isAbstract(mods)) addSegment("abstract ", TokenType.KEYWORD.getHexColor()); + if (Modifier.isSynchronized(mods)) addSegment("synchronized ", TokenType.KEYWORD.getHexColor()); // Return type - check for actual type color (handle array suffix coloring) TypeInfo returnType = methodInfo.getReturnType(); @@ -932,12 +934,12 @@ public class TokenHoverInfo { if (methodInfo.isDeclaration() && methodInfo.getDeclarationOffset() >= 0) { String modifiers = extractModifiersAtPosition(methodInfo.getDeclarationOffset()); if (modifiers != null && !modifiers.isEmpty()) { - addSegment(modifiers + " ", TokenType.MODIFIER.getHexColor()); + addSegment(modifiers + " ", TokenType.KEYWORD.getHexColor()); } } else { // Fallback: show static if we know it if (methodInfo.isStatic()) { - addSegment("static ", TokenType.MODIFIER.getHexColor()); + addSegment("static ", TokenType.KEYWORD.getHexColor()); } } @@ -1395,20 +1397,20 @@ public class TokenHoverInfo { */ private void addFieldModifiers(int mods) { if (Modifier.isPublic(mods)) - addSegment("public ", TokenType.MODIFIER.getHexColor()); + addSegment("public ", TokenType.KEYWORD.getHexColor()); else if (Modifier.isProtected(mods)) - addSegment("protected ", TokenType.MODIFIER.getHexColor()); + addSegment("protected ", TokenType.KEYWORD.getHexColor()); else if (Modifier.isPrivate(mods)) - addSegment("private ", TokenType.MODIFIER.getHexColor()); + addSegment("private ", TokenType.KEYWORD.getHexColor()); if (Modifier.isStatic(mods)) - addSegment("static ", TokenType.MODIFIER.getHexColor()); + addSegment("static ", TokenType.KEYWORD.getHexColor()); if (Modifier.isFinal(mods)) - addSegment("final ", TokenType.MODIFIER.getHexColor()); + addSegment("final ", TokenType.KEYWORD.getHexColor()); if (Modifier.isVolatile(mods)) - addSegment("volatile ", TokenType.MODIFIER.getHexColor()); + addSegment("volatile ", TokenType.KEYWORD.getHexColor()); if (Modifier.isTransient(mods)) - addSegment("transient ", TokenType.MODIFIER.getHexColor()); + addSegment("transient ", TokenType.KEYWORD.getHexColor()); } /** diff --git a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/token/Token.java b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/token/Token.java index b7b81af9e..7e12ee0c4 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/token/Token.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/token/Token.java @@ -58,10 +58,6 @@ public class Token { return new Token(text, start, end, TokenType.KEYWORD); } - public static Token modifier(String text, int start, int end) { - return new Token(text, start, end, TokenType.MODIFIER); - } - public static Token comment(String text, int start, int end) { return new Token(text, start, end, TokenType.COMMENT); } @@ -196,8 +192,7 @@ public class Token { // ==================== TYPE CHECKS ==================== public boolean isKeyword() { - return type == TokenType.KEYWORD || type == TokenType.MODIFIER || - type == TokenType.CLASS_KEYWORD || type == TokenType.IMPORT_KEYWORD; + return type == TokenType.KEYWORD; } public boolean isTypeReference() { @@ -264,6 +259,18 @@ public class Token { return sb.toString(); } + /** + * Get the java.awt.Font style bitmask for this token. + * Returns a combination of {@link java.awt.Font#PLAIN}, {@link java.awt.Font#BOLD}, + * and {@link java.awt.Font#ITALIC}. + */ + public int getFontStyle() { + int style = java.awt.Font.PLAIN; + if (type.isBold()) style |= java.awt.Font.BOLD; + if (type.isItalic()) style |= java.awt.Font.ITALIC; + return style; + } + @Override public String toString() { return "Token{'" + text + "', " + type + ", [" + globalStart + "-" + globalEnd + "]}"; diff --git a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/token/TokenType.java b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/token/TokenType.java index e3f5c6470..9f4b5ac69 100644 --- a/src/main/java/noppes/npcs/client/gui/util/script/interpreter/token/TokenType.java +++ b/src/main/java/noppes/npcs/client/gui/util/script/interpreter/token/TokenType.java @@ -22,10 +22,7 @@ public enum TokenType { UNUSED_IMPORT(0xFF666666, 119), // unused import statements (gray) // Keywords and modifiers - CLASS_KEYWORD(0xFFFF5555, 115), // 'class', 'interface', 'enum' keywords - IMPORT_KEYWORD(0xFFFFAA00, 110), // 'import' keyword - KEYWORD(0xFFFF5555, 100), // control flow: if, else, for, while, etc. - MODIFIER(0xFFFFAA00, 90), // public, private, static, final, etc. + KEYWORD(0xFFFF5555, 100,true, false), // control flow: if, else, for, while, etc. // Type declarations and references INTERFACE_DECL(0xFF55FFFF, 85), // interface names (aqua) @@ -133,12 +130,8 @@ public enum TokenType { return '6'; // gold case JSDOC_TYPE: return '3'; // dark aqua (like types) - case CLASS_KEYWORD: case KEYWORD: return 'c'; // red - case IMPORT_KEYWORD: - case MODIFIER: - return '6'; // gold case ENUM_DECL: case STATIC_FINAL_FIELD: return 'd'; // magenta