Add current topic to tab-complete so it can edited

This commit is contained in:
C. McEnroe 2020-07-13 10:22:33 -04:00
父節點 787771bebb
當前提交 3e03b7502b
共有 3 個文件被更改,包括 22 次插入3 次删除

查看文件

@ -1,4 +1,4 @@
.Dd July 6, 2020 .Dd July 13, 2020
.Dt CATGIRL 1 .Dt CATGIRL 1
.Os .Os
. .
@ -300,6 +300,9 @@ for command output.
Send a regular message. Send a regular message.
.It Ic /topic Op Ar topic .It Ic /topic Op Ar topic
Show or set the topic of the channel. Show or set the topic of the channel.
Press
.Ic Tab
twice to copy the current topic.
.It Ic /whois Ar nick .It Ic /whois Ar nick
Query information about a user. Query information about a user.
.El .El

2
edit.c
查看文件

@ -164,7 +164,7 @@ static void tabComplete(uint id) {
delete(false, tab.pos, tab.len); delete(false, tab.pos, tab.len);
tab.len = n; tab.len = n;
if (wcs[0] == L'\\') { if (wcs[0] == L'\\' || wcschr(wcs, L' ')) {
reserve(tab.pos, tab.len); reserve(tab.pos, tab.len);
} else if (wcs[0] != L'/' && !tab.pos) { } else if (wcs[0] != L'/' && !tab.pos) {
tab.len += 2; tab.len += 2;

查看文件

@ -528,11 +528,25 @@ static void handleReplyNoTopic(struct Message *msg) {
); );
} }
static void topicComplete(uint id, const char *topic) {
char buf[512];
const char *prev = complete(id, "/topic ");
if (prev) {
snprintf(buf, sizeof(buf), "%s", prev);
completeRemove(id, buf);
}
if (topic) {
snprintf(buf, sizeof(buf), "/topic %s", topic);
completeAdd(id, buf, Default);
}
}
static void handleReplyTopic(struct Message *msg) { static void handleReplyTopic(struct Message *msg) {
require(msg, false, 3); require(msg, false, 3);
uint id = idFor(msg->params[1]);
topicComplete(id, msg->params[2]);
if (!replies.topic) return; if (!replies.topic) return;
replies.topic--; replies.topic--;
uint id = idFor(msg->params[1]);
urlScan(id, NULL, msg->params[2]); urlScan(id, NULL, msg->params[2]);
uiFormat( uiFormat(
id, Cold, tagTime(msg), id, Cold, tagTime(msg),
@ -549,6 +563,7 @@ static void handleTopic(struct Message *msg) {
require(msg, true, 2); require(msg, true, 2);
uint id = idFor(msg->params[0]); uint id = idFor(msg->params[0]);
if (msg->params[1][0]) { if (msg->params[1][0]) {
topicComplete(id, msg->params[1]);
urlScan(id, msg->nick, msg->params[1]); urlScan(id, msg->nick, msg->params[1]);
uiFormat( uiFormat(
id, Warm, tagTime(msg), id, Warm, tagTime(msg),
@ -561,6 +576,7 @@ static void handleTopic(struct Message *msg) {
msg->nick, msg->params[0], msg->params[1] msg->nick, msg->params[0], msg->params[1]
); );
} else { } else {
topicComplete(id, NULL);
uiFormat( uiFormat(
id, Warm, tagTime(msg), id, Warm, tagTime(msg),
"\3%02d%s\3\tremoves the sign in \3%02d%s\3", "\3%02d%s\3\tremoves the sign in \3%02d%s\3",