Add current topic to tab-complete so it can edited
This commit is contained in:
		
							parent
							
								
									787771bebb
								
							
						
					
					
						commit
						3e03b7502b
					
				| @ -1,4 +1,4 @@ | ||||
| .Dd July  6, 2020 | ||||
| .Dd July 13, 2020 | ||||
| .Dt CATGIRL 1 | ||||
| .Os | ||||
| . | ||||
| @ -300,6 +300,9 @@ for command output. | ||||
| Send a regular message. | ||||
| .It Ic /topic Op Ar topic | ||||
| Show or set the topic of the channel. | ||||
| Press | ||||
| .Ic Tab | ||||
| twice to copy the current topic. | ||||
| .It Ic /whois Ar nick | ||||
| Query information about a user. | ||||
| .El | ||||
|  | ||||
							
								
								
									
										2
									
								
								edit.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								edit.c
									
									
									
									
									
								
							| @ -164,7 +164,7 @@ static void tabComplete(uint id) { | ||||
| 
 | ||||
| 	delete(false, tab.pos, tab.len); | ||||
| 	tab.len = n; | ||||
| 	if (wcs[0] == L'\\') { | ||||
| 	if (wcs[0] == L'\\' || wcschr(wcs, L' ')) { | ||||
| 		reserve(tab.pos, tab.len); | ||||
| 	} else if (wcs[0] != L'/' && !tab.pos) { | ||||
| 		tab.len += 2; | ||||
|  | ||||
							
								
								
									
										18
									
								
								handle.c
									
									
									
									
									
								
							
							
						
						
									
										18
									
								
								handle.c
									
									
									
									
									
								
							| @ -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) { | ||||
| 	require(msg, false, 3); | ||||
| 	uint id = idFor(msg->params[1]); | ||||
| 	topicComplete(id, msg->params[2]); | ||||
| 	if (!replies.topic) return; | ||||
| 	replies.topic--; | ||||
| 	uint id = idFor(msg->params[1]); | ||||
| 	urlScan(id, NULL, msg->params[2]); | ||||
| 	uiFormat( | ||||
| 		id, Cold, tagTime(msg), | ||||
| @ -549,6 +563,7 @@ static void handleTopic(struct Message *msg) { | ||||
| 	require(msg, true, 2); | ||||
| 	uint id = idFor(msg->params[0]); | ||||
| 	if (msg->params[1][0]) { | ||||
| 		topicComplete(id, msg->params[1]); | ||||
| 		urlScan(id, msg->nick, msg->params[1]); | ||||
| 		uiFormat( | ||||
| 			id, Warm, tagTime(msg), | ||||
| @ -561,6 +576,7 @@ static void handleTopic(struct Message *msg) { | ||||
| 			msg->nick, msg->params[0], msg->params[1] | ||||
| 		); | ||||
| 	} else { | ||||
| 		topicComplete(id, NULL); | ||||
| 		uiFormat( | ||||
| 			id, Warm, tagTime(msg), | ||||
| 			"\3%02d%s\3\tremoves the sign in \3%02d%s\3", | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user