mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-03 01:39:21 +02:00
Merge remote-tracking branch
'origin/GP-5951-dragonmacher-decompiler-syntax-hl-fix--SQUASHED' into patch (Closes #8419)
This commit is contained in:
commit
88303ac825
2 changed files with 33 additions and 8 deletions
|
@ -90,6 +90,7 @@ public class DecompilerPanel extends JPanel implements FieldMouseListener, Field
|
|||
}
|
||||
});
|
||||
|
||||
private Set<String> ignoredMiddleMouseTokens = Set.of("{", "}", ";");
|
||||
private ActiveMiddleMouse activeMiddleMouse;
|
||||
private int middleMouseHighlightButton;
|
||||
private Color middleMouseHighlightColor;
|
||||
|
@ -264,7 +265,10 @@ public class DecompilerPanel extends JPanel implements FieldMouseListener, Field
|
|||
}
|
||||
|
||||
// exclude tokens that users do not want to highlight
|
||||
if (token instanceof ClangSyntaxToken || token instanceof ClangOpToken) {
|
||||
if (shouldIgnoreOpToken(token)) {
|
||||
return;
|
||||
}
|
||||
if (shouldIgnoreSyntaxTokenHighlight(token)) {
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -273,6 +277,26 @@ public class DecompilerPanel extends JPanel implements FieldMouseListener, Field
|
|||
activeMiddleMouse = newMiddleMouse;
|
||||
}
|
||||
|
||||
private boolean shouldIgnoreOpToken(ClangToken token) {
|
||||
if (!(token instanceof ClangOpToken)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
// users would like to be able to highlight return statements
|
||||
String text = token.toString();
|
||||
return !text.equals("return");
|
||||
}
|
||||
|
||||
private boolean shouldIgnoreSyntaxTokenHighlight(ClangToken token) {
|
||||
|
||||
if (!(token instanceof ClangSyntaxToken syntaxToken)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
String string = syntaxToken.toString();
|
||||
return ignoredMiddleMouseTokens.contains(string);
|
||||
}
|
||||
|
||||
void addHighlighterHighlights(ClangDecompilerHighlighter highlighter,
|
||||
Supplier<? extends Collection<ClangToken>> tokens, ColorProvider colorProvider) {
|
||||
highlightController.addHighlighterHighlights(highlighter, tokens, colorProvider);
|
||||
|
@ -745,7 +769,6 @@ public class DecompilerPanel extends JPanel implements FieldMouseListener, Field
|
|||
|
||||
int clickCount = ev.getClickCount();
|
||||
int buttonState = ev.getButton();
|
||||
|
||||
if (buttonState == MouseEvent.BUTTON1) {
|
||||
if (DockingUtils.isControlModifier(ev) && clickCount == 2) {
|
||||
tryToGoto(location, field, ev, true);
|
||||
|
|
|
@ -140,7 +140,7 @@ public class ToolUtils {
|
|||
File[] toolFiles = USER_TOOLS_DIR.listFiles(filter);
|
||||
if (toolFiles != null) {
|
||||
for (File toolFile : toolFiles) {
|
||||
ToolTemplate template = ToolUtils.readToolTemplate(toolFile);
|
||||
ToolTemplate template = readToolTemplate(toolFile);
|
||||
if (template != null) {
|
||||
map.put(template.getName(), template);
|
||||
}
|
||||
|
@ -202,9 +202,9 @@ public class ToolUtils {
|
|||
}
|
||||
|
||||
public static void renameToolTemplate(ToolTemplate toolTemplate, String newName) {
|
||||
ToolUtils.deleteTool(toolTemplate);
|
||||
deleteTool(toolTemplate);
|
||||
toolTemplate.setName(newName);
|
||||
ToolUtils.writeToolTemplate(toolTemplate);
|
||||
writeToolTemplate(toolTemplate);
|
||||
}
|
||||
|
||||
public static boolean writeToolTemplate(ToolTemplate template) {
|
||||
|
@ -232,6 +232,8 @@ public class ToolUtils {
|
|||
}
|
||||
|
||||
public static ToolTemplate readToolTemplate(File toolFile) {
|
||||
|
||||
LOGGER.trace("Loading tool file {}", toolFile);
|
||||
GhidraToolTemplate toolTemplate = null;
|
||||
try (FileInputStream is = new FileInputStream(toolFile)) {
|
||||
|
||||
|
@ -331,7 +333,7 @@ public class ToolUtils {
|
|||
public static String getUniqueToolName(ToolTemplate template) {
|
||||
String name = template.getName();
|
||||
int n = 1;
|
||||
while (ToolUtils.getToolFile(name).exists()) {
|
||||
while (getToolFile(name).exists()) {
|
||||
name = name + "_" + n++;
|
||||
}
|
||||
return name;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue