Major updates/cleanup.

This commit is contained in:
2026-09-08 07:00:13 +01:00
parent 0df03f418a
commit 0760209417
23 changed files with 668 additions and 441 deletions
+18 -30
View File
@@ -81,16 +81,10 @@ std::optional<buffer::Line> AddressPromise::get_line(BEd &ctx, std::vector<Addre
AddressPromise prev;
for (std::size_t idx = 0; idx < list.size(); idx++) {
AddressPromise &curr = list[idx];
if (curr.bufname.has_value()) {
if (curr.bufname->empty()) {
bufname = ctx.current().buffername;
curr.bufname = bufname;
} else {
bufname = *curr.bufname;
}
} else {
if (!curr.bufname.has_value())
curr.bufname = bufname;
}
else if (curr.bufname->empty())
curr.bufname = bufname = ctx.current().buffername;
bool is_final = idx + 1 == list.size();
if (!is_final) {
if (std::holds_alternative<None>(curr.base)) {
@@ -107,15 +101,15 @@ std::optional<buffer::Line> AddressPromise::get_line(BEd &ctx, std::vector<Addre
} else {
prev_given = true;
}
if (curr.jumping) {
buffer::Line resolved = curr.resolve(ctx);
buffer::Line resolved = curr.resolve(ctx);
if (curr.jumping)
ctx.current() = resolved;
curr.bufname = resolved.buffername;
curr.base = Number(resolved.number);
curr.offset = 0;
}
curr.bufname = resolved.buffername;
curr.base = Number(resolved.number);
curr.offset = 0;
prev = curr;
prev_set = true;
bufname = *curr.bufname;
} else {
if (std::holds_alternative<None>(curr.base)) {
if (prev_set) {
@@ -144,16 +138,10 @@ std::optional<buffer::Range> AddressPromise::get_range(BEd &ctx, std::vector<Add
AddressPromise prev;
for (std::size_t idx = 0; idx < list.size(); idx++) {
AddressPromise &curr = list[idx];
if (curr.bufname.has_value()) {
if (curr.bufname->empty()) {
bufname = ctx.current().buffername;
curr.bufname = bufname;
} else {
bufname = *curr.bufname;
}
} else {
if (!curr.bufname.has_value())
curr.bufname = bufname;
}
else if (curr.bufname->empty())
curr.bufname = bufname = ctx.current().buffername;
bool is_final = idx + 1 == list.size();
if (!is_final) {
if (std::holds_alternative<None>(curr.base)) {
@@ -170,15 +158,15 @@ std::optional<buffer::Range> AddressPromise::get_range(BEd &ctx, std::vector<Add
} else {
prev_given = true;
}
if (curr.jumping) {
buffer::Line resolved = curr.resolve(ctx);
buffer::Line resolved = curr.resolve(ctx);
curr.bufname = resolved.buffername;
curr.base = Number(resolved.number);
curr.offset = 0;
if (curr.jumping)
ctx.current() = resolved;
curr.bufname = resolved.buffername;
curr.base = Number(resolved.number);
curr.offset = 0;
}
prev = curr;
prev_set = true;
bufname = *curr.bufname;
} else {
if (std::holds_alternative<None>(curr.base)) {
if (prev_set) {