shithub: riscv

Download patch

ref: d998b7013538f1bc31a933be0d35e10bf6d89b1e
parent: 70127e3c49ebbced48fe2195c646904cd6a21dfb
author: Sigrid Solveig Haflínudóttir <sigrid@ftrv.se>
date: Fri Mar 28 09:32:35 EDT 2025

sam: include delimiter-pair when extending selection

--- a/sys/src/cmd/sam/moveto.c
+++ b/sys/src/cmd/sam/moveto.c
@@ -142,12 +142,27 @@
 void
 stretchsel(File *f, Posn p1, int mode)
 {
-	int c, i;
-	Rune *r, *l;
+	int c, i, lc, rc;
+	Rune *r, *l, *x;
 	Posn p;
 
 	if(p1 > f->nc)
 		return;
+	if(mode){
+		lc = f->dot.r.p1 > 0     ? filereadc(f, f->dot.r.p1-1) : '\n';
+		rc = f->dot.r.p2 < f->nc ? filereadc(f, f->dot.r.p2)   : '\n';
+		for(i=0; left[i]; i++){
+			l = left[i];
+			r = right[i];
+			x = strrune(l, lc);
+			if(x && r[x-l] == rc){
+				f->dot.r.p1 -= lc != '\n';
+				f->dot.r.p2++;
+				return;
+			}
+		}
+	}
+
 	f->dot.r.p1 = f->dot.r.p2 = p1;
 	for(i=0; left[i]; i++){
 		l = left[i];
--