about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJune McEnroe <june@causal.agency>2020-08-18 10:09:54 -0400
committerJune McEnroe <june@causal.agency>2020-08-18 10:09:54 -0400
commit1891c775353907ae3ceb4d8e42243b508b450dab (patch)
treeea7940c18ea9dfdad33617803a3adaec3d7b0d26
parentSet origin fields to "*" if missing (diff)
downloadcatgirl-1891c775353907ae3ceb4d8e42243b508b450dab.tar.gz
catgirl-1891c775353907ae3ceb4d8e42243b508b450dab.zip
Preserve colon from previous tab-complete
This fixes the case when pinging multiple nicks and one of them needs to
be cycled through.
-rw-r--r--edit.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/edit.c b/edit.c
index d63678d..34b89fe 100644
--- a/edit.c
+++ b/edit.c
@@ -163,11 +163,13 @@ static void tabComplete(uint id) {
 		return;
 	}
 
+	bool colon = (tab.len >= 2 && buf[tab.pos + tab.len - 2] == L':');
+
 	delete(false, tab.pos, tab.len);
 	tab.len = n;
 	if (wcs[0] == L'\\' || wcschr(wcs, L' ')) {
 		reserve(tab.pos, tab.len);
-	} else if (wcs[0] != L'/' && !tab.pos) {
+	} else if (wcs[0] != L'/' && (!tab.pos || colon)) {
 		tab.len += 2;
 		reserve(tab.pos, tab.len);
 		buf[tab.pos + n + 0] = L':';