fix '>' in comments highlighting like the PC
This commit is contained in:
parent
d55e8ecc8f
commit
e2cb9dae39
|
@ -449,12 +449,22 @@ void HighlightPC(HWND hWnd)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
FINDTEXT ft;
|
FINDTEXT ft;
|
||||||
ft.lpstrText = ">";
|
ft.lpstrText = "\r";
|
||||||
ft.chrg.cpMin = 0;
|
ft.chrg.cpMin = 0;
|
||||||
ft.chrg.cpMax = -1;
|
ft.chrg.cpMax = -1;
|
||||||
int start = SendDlgItemMessage(hWnd, IDC_DEBUGGER_DISASSEMBLY, EM_FINDTEXT, (WPARAM)FR_DOWN, (LPARAM)&ft);
|
|
||||||
|
int start = 0;
|
||||||
|
|
||||||
|
for (int i = 0; i < PCLine; i++)
|
||||||
|
{
|
||||||
|
// Scroll down to PCLine by looking for newlines
|
||||||
|
start = SendDlgItemMessage(hWnd, IDC_DEBUGGER_DISASSEMBLY, EM_FINDTEXT, (WPARAM)FR_DOWN, (LPARAM)&ft) + 1;
|
||||||
|
ft.chrg.cpMin = start;
|
||||||
|
}
|
||||||
|
|
||||||
if (start >= 0)
|
if (start >= 0)
|
||||||
{
|
{
|
||||||
|
// Highlight PC
|
||||||
int old_start, old_end;
|
int old_start, old_end;
|
||||||
SendDlgItemMessage(hWnd, IDC_DEBUGGER_DISASSEMBLY, EM_GETSEL, (WPARAM)&old_start, (LPARAM)&old_end);
|
SendDlgItemMessage(hWnd, IDC_DEBUGGER_DISASSEMBLY, EM_GETSEL, (WPARAM)&old_start, (LPARAM)&old_end);
|
||||||
SendDlgItemMessage(hWnd, IDC_DEBUGGER_DISASSEMBLY, EM_SETSEL, (WPARAM)start, (LPARAM)start+20);
|
SendDlgItemMessage(hWnd, IDC_DEBUGGER_DISASSEMBLY, EM_SETSEL, (WPARAM)start, (LPARAM)start+20);
|
||||||
|
@ -591,7 +601,7 @@ void DisassembleToWindow(HWND hWnd, int id, int scrollid, unsigned int addr)
|
||||||
|
|
||||||
debug_wstr[0] = 0;
|
debug_wstr[0] = 0;
|
||||||
PCLine = -1;
|
PCLine = -1;
|
||||||
unsigned int instructions_count = 0;
|
unsigned int line_count = 0;
|
||||||
for (int i = 0; i < lines; i++)
|
for (int i = 0; i < lines; i++)
|
||||||
{
|
{
|
||||||
// PC pointer
|
// PC pointer
|
||||||
|
@ -612,6 +622,7 @@ void DisassembleToWindow(HWND hWnd, int id, int scrollid, unsigned int addr)
|
||||||
// we added one line to the disassembly window
|
// we added one line to the disassembly window
|
||||||
disassembly_addresses.push_back(addr);
|
disassembly_addresses.push_back(addr);
|
||||||
disassembly_operands.resize(i + 1);
|
disassembly_operands.resize(i + 1);
|
||||||
|
line_count++;
|
||||||
i++;
|
i++;
|
||||||
}
|
}
|
||||||
if (node->comment)
|
if (node->comment)
|
||||||
|
@ -636,6 +647,7 @@ void DisassembleToWindow(HWND hWnd, int id, int scrollid, unsigned int addr)
|
||||||
debug_decoration_comment_end_pos += 2;
|
debug_decoration_comment_end_pos += 2;
|
||||||
debug_decoration_comment = debug_decoration_comment_end_pos;
|
debug_decoration_comment = debug_decoration_comment_end_pos;
|
||||||
debug_decoration_comment_end_pos = strstr(debug_decoration_comment_end_pos, "\r\n");
|
debug_decoration_comment_end_pos = strstr(debug_decoration_comment_end_pos, "\r\n");
|
||||||
|
line_count++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -643,11 +655,11 @@ void DisassembleToWindow(HWND hWnd, int id, int scrollid, unsigned int addr)
|
||||||
|
|
||||||
if (addr == X.PC)
|
if (addr == X.PC)
|
||||||
{
|
{
|
||||||
PC_pointerOffset = instructions_count;
|
PC_pointerOffset = line_count;
|
||||||
PCPointerWasDrawn = true;
|
PCPointerWasDrawn = true;
|
||||||
beginningOfPCPointerLine = wcslen(debug_wstr);
|
beginningOfPCPointerLine = wcslen(debug_wstr);
|
||||||
wcscat(debug_wstr, L">");
|
wcscat(debug_wstr, L">");
|
||||||
PCLine = instructions_count;
|
PCLine = line_count;
|
||||||
} else
|
} else
|
||||||
{
|
{
|
||||||
wcscat(debug_wstr, L" ");
|
wcscat(debug_wstr, L" ");
|
||||||
|
@ -731,7 +743,7 @@ void DisassembleToWindow(HWND hWnd, int id, int scrollid, unsigned int addr)
|
||||||
wcscat(debug_wstr, debug_wbuf);
|
wcscat(debug_wstr, debug_wbuf);
|
||||||
}
|
}
|
||||||
wcscat(debug_wstr, L"\n");
|
wcscat(debug_wstr, L"\n");
|
||||||
instructions_count++;
|
line_count++;
|
||||||
}
|
}
|
||||||
UpdateDisassembleView(hWnd, id, lines, true);
|
UpdateDisassembleView(hWnd, id, lines, true);
|
||||||
|
|
||||||
|
@ -905,6 +917,8 @@ void UpdateDebugger(bool jump_to_pc)
|
||||||
if (PC_pointerOffset >= lines)
|
if (PC_pointerOffset >= lines)
|
||||||
PC_pointerOffset = 0;
|
PC_pointerOffset = 0;
|
||||||
|
|
||||||
|
// PC_PointerOffset now indicates number of visible lines, which totally breaks this and that "HACK" below.
|
||||||
|
// Might need to change InstructionUp.
|
||||||
// keep the relative position of the ">" pointer inside the Disassembly window
|
// keep the relative position of the ">" pointer inside the Disassembly window
|
||||||
for (int i = PC_pointerOffset; i > 0; i--)
|
for (int i = PC_pointerOffset; i > 0; i--)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in New Issue