summaryrefslogtreecommitdiff
path: root/src/Row.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/Row.zig')
-rw-r--r--src/Row.zig29
1 files changed, 10 insertions, 19 deletions
diff --git a/src/Row.zig b/src/Row.zig
index 633e338..a542160 100644
--- a/src/Row.zig
+++ b/src/Row.zig
@@ -162,7 +162,7 @@ pub fn updateSyntax(self: *Row, buf: *Buffer) UpdateSyntaxError!void {
162 if (syntax.singleline_comment_start) |scs| { 162 if (syntax.singleline_comment_start) |scs| {
163 std.debug.assert(scs.len != 0); 163 std.debug.assert(scs.len != 0);
164 if (curr_str_quote == null and !in_comment and scs.len + i <= self.rdata.items.len) { 164 if (curr_str_quote == null and !in_comment and scs.len + i <= self.rdata.items.len) {
165 if (std.mem.eql(u8, scs, self.rdata.items[i .. (i + scs.len)])) { 165 if (std.mem.eql(u8, scs, self.rdata.items[i..(i + scs.len)])) {
166 std.mem.set(Highlight, self.hldata.items[i..], .comment); 166 std.mem.set(Highlight, self.hldata.items[i..], .comment);
167 break; 167 break;
168 } 168 }
@@ -176,10 +176,8 @@ pub fn updateSyntax(self: *Row, buf: *Buffer) UpdateSyntaxError!void {
176 if (curr_str_quote == null) { 176 if (curr_str_quote == null) {
177 if (in_comment) { 177 if (in_comment) {
178 self.hldata.items[i] = .comment_ml; 178 self.hldata.items[i] = .comment_ml;
179 if (mce.len + i <= self.rdata.items.len 179 if (mce.len + i <= self.rdata.items.len and std.mem.eql(u8, mce, self.rdata.items[i..(i + mce.len)])) {
180 and std.mem.eql(u8, mce, self.rdata.items[i .. (i + mce.len)]) 180 std.mem.set(Highlight, self.hldata.items[i..(i + mce.len)], .comment_ml);
181 ) {
182 std.mem.set(Highlight, self.hldata.items[i .. (i + mce.len)], .comment_ml);
183 i += mce.len; 181 i += mce.len;
184 in_comment = false; 182 in_comment = false;
185 after_sep = true; 183 after_sep = true;
@@ -187,15 +185,13 @@ pub fn updateSyntax(self: *Row, buf: *Buffer) UpdateSyntaxError!void {
187 i += 1; 185 i += 1;
188 continue; 186 continue;
189 } 187 }
190 } else if (mcs.len + i <= self.rdata.items.len 188 } else if (mcs.len + i <= self.rdata.items.len and std.mem.eql(u8, mcs, self.rdata.items[i..(i + mcs.len)])) {
191 and std.mem.eql(u8, mcs, self.rdata.items[i .. (i + mcs.len)])) { 189 std.mem.set(Highlight, self.hldata.items[i..(i + mcs.len)], .comment_ml);
192 std.mem.set(Highlight, self.hldata.items[i .. (i + mcs.len)], .comment_ml);
193 i += mcs.len; 190 i += mcs.len;
194 in_comment = true; 191 in_comment = true;
195 continue; 192 continue;
196 } 193 }
197 } 194 }
198
199 } 195 }
200 } 196 }
201 197
@@ -227,8 +223,7 @@ pub fn updateSyntax(self: *Row, buf: *Buffer) UpdateSyntaxError!void {
227 } 223 }
228 224
229 if (syntax.flags.hl_numbers) { 225 if (syntax.flags.hl_numbers) {
230 if ((std.ascii.isDigit(c) and (after_sep or prev_hl == .number)) 226 if ((std.ascii.isDigit(c) and (after_sep or prev_hl == .number)) or (c == '.' and prev_hl == .number)) {
231 or (c == '.' and prev_hl == .number)) {
232 after_sep = false; 227 after_sep = false;
233 self.hldata.items[i] = .number; 228 self.hldata.items[i] = .number;
234 i += 1; 229 i += 1;
@@ -238,10 +233,8 @@ pub fn updateSyntax(self: *Row, buf: *Buffer) UpdateSyntaxError!void {
238 233
239 if (after_sep) { 234 if (after_sep) {
240 for (kw1) |kw| { 235 for (kw1) |kw| {
241 if (i + kw.len <= self.rdata.items.len 236 if (i + kw.len <= self.rdata.items.len and std.mem.eql(u8, kw, self.rdata.items[i..(i + kw.len)]) and (i + kw.len == self.rdata.items.len or syntax.isSeparator(self.rdata.items[i + kw.len]))) {
242 and std.mem.eql(u8, kw, self.rdata.items[i .. (i + kw.len)]) 237 std.mem.set(Highlight, self.hldata.items[i..(i + kw.len)], .keyword1);
243 and (i + kw.len == self.rdata.items.len or syntax.isSeparator(self.rdata.items[i + kw.len]))) {
244 std.mem.set(Highlight, self.hldata.items[i .. (i + kw.len)], .keyword1);
245 i += kw.len; 238 i += kw.len;
246 after_sep = false; 239 after_sep = false;
247 continue :main_loop; 240 continue :main_loop;
@@ -249,10 +242,8 @@ pub fn updateSyntax(self: *Row, buf: *Buffer) UpdateSyntaxError!void {
249 } 242 }
250 243
251 for (kw2) |kw| { 244 for (kw2) |kw| {
252 if (i + kw.len <= self.rdata.items.len 245 if (i + kw.len <= self.rdata.items.len and std.mem.eql(u8, kw, self.rdata.items[i..(i + kw.len)]) and (i + kw.len == self.rdata.items.len or syntax.isSeparator(self.rdata.items[i + kw.len]))) {
253 and std.mem.eql(u8, kw, self.rdata.items[i .. (i + kw.len)]) 246 std.mem.set(Highlight, self.hldata.items[i..(i + kw.len)], .keyword2);
254 and (i + kw.len == self.rdata.items.len or syntax.isSeparator(self.rdata.items[i + kw.len]))) {
255 std.mem.set(Highlight, self.hldata.items[i .. (i + kw.len)], .keyword2);
256 i += kw.len; 247 i += kw.len;
257 after_sep = false; 248 after_sep = false;
258 continue :main_loop; 249 continue :main_loop;