mirror of
				https://github.com/tmux/tmux.git
				synced 2025-10-26 12:27:15 +00:00 
			
		
		
		
	Report available commands on ambiguous commands. Tidy TODO a bit.
This commit is contained in:
		
							
								
								
									
										6
									
								
								CHANGES
									
									
									
									
									
								
							
							
						
						
									
										6
									
								
								CHANGES
									
									
									
									
									
								
							| @@ -1,3 +1,7 @@ | |||||||
|  | 16 November 2007 | ||||||
|  |  | ||||||
|  | * (nicm) List available commands on ambiguous command. | ||||||
|  |  | ||||||
| 12 November 2007 | 12 November 2007 | ||||||
|  |  | ||||||
| * (nicm) If the terminal supports default colours (AX present), force black  | * (nicm) If the terminal supports default colours (AX present), force black  | ||||||
| @@ -206,4 +210,4 @@ | |||||||
|   (including mutt, emacs). No status bar yet and no key remapping or other |   (including mutt, emacs). No status bar yet and no key remapping or other | ||||||
|   customisation. |   customisation. | ||||||
|  |  | ||||||
| $Id: CHANGES,v 1.67 2007-11-12 20:29:43 nicm Exp $ | $Id: CHANGES,v 1.68 2007-11-16 13:23:59 nicm Exp $ | ||||||
|   | |||||||
							
								
								
									
										25
									
								
								TODO
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								TODO
									
									
									
									
									
								
							| @@ -1,5 +1,5 @@ | |||||||
| - it would be nice if there wasn't so much copying buffers about, audit uses | - it would be nice if there wasn't so much copying buffers about, audit uses | ||||||
| - useful env vars like WINDOW | - useful env vars like WINDOW? | ||||||
| - sort out who controls the buffers in local.c a bit | - sort out who controls the buffers in local.c a bit | ||||||
| - better checking/emulation for missing term requirements | - better checking/emulation for missing term requirements | ||||||
| - alt charset, borders etc (terminfo(5)/Line Graphics) | - alt charset, borders etc (terminfo(5)/Line Graphics) | ||||||
| @@ -25,7 +25,7 @@ | |||||||
| - client could pass term/tty fd up to server and then do nothing. what problems  | - client could pass term/tty fd up to server and then do nothing. what problems  | ||||||
|   would this cause? -- need access to all terminfo data at once... signals? |   would this cause? -- need access to all terminfo data at once... signals? | ||||||
| - cleanup/redesign IPC | - cleanup/redesign IPC | ||||||
| 	IPC is slightly arse-about-face: too much overhead. 8-byte header for | 	IPC is slightly arse-about-face: overhead? 8-byte header for | ||||||
| 	each packet... hrm. already scanning output for \e, could add an extra | 	each packet... hrm. already scanning output for \e, could add an extra | ||||||
| 	byte to it for message | 	byte to it for message | ||||||
| - could use bsearch all over the place or get rid of smaller tables (clientmsg) | - could use bsearch all over the place or get rid of smaller tables (clientmsg) | ||||||
| @@ -34,7 +34,6 @@ | |||||||
| - CLIENT_HOLD sucks | - CLIENT_HOLD sucks | ||||||
| - session with CMD_NOSESSION should be an error | - session with CMD_NOSESSION should be an error | ||||||
| - each command should have a print op as well for list keys | - each command should have a print op as well for list keys | ||||||
| - List available commands on ambigous command |  | ||||||
| - Implicitly add exec to the commands for new windows (switch to disable it) | - Implicitly add exec to the commands for new windows (switch to disable it) | ||||||
| - nested sessions, ie session as window - moving to it moves into session | - nested sessions, ie session as window - moving to it moves into session | ||||||
|   (remembering parent) |   (remembering parent) | ||||||
| @@ -44,27 +43,25 @@ | |||||||
| - status-fg/status-bg should be to set attributes: bold, etc | - status-fg/status-bg should be to set attributes: bold, etc | ||||||
| - show-options command | - show-options command | ||||||
| - detach client and other client commands. note that there can only be a | - detach client and other client commands. note that there can only be a | ||||||
|   "current client" on key presses - these should act like detach-session - |   "current client" on key presses - these should probably act like | ||||||
|   -a will do all clients, otherwise do nothing unless key in which case do |   detach-session: -a will do all clients, otherwise use current client if | ||||||
|   current client |   key, else do nothing | ||||||
| - check handling of out-of-bound values in input.c, most should be limited | - check handling of out-of-bound values in input.c, most should be limited | ||||||
|   rather than ignored |   rather than ignored | ||||||
| - save/restore (DECSC/DECRC) are ugly. maybe a struct screen_attr and memcpy | - save/restore (DECSC/DECRC) are ugly. maybe a struct screen_attr and memcpy | ||||||
| - force maximum terminal size (centred?) | - force maximum terminal size (centred?) | ||||||
| - per-session toolbar state, other options | - per-session toolbar state, other options | ||||||
| - commands: |  | ||||||
| 	kill server |  | ||||||
| - force-default option: assume terminal supports default colours even if AX | - force-default option: assume terminal supports default colours even if AX | ||||||
|   is missing (like, eg, xterm-color in an aterm) |   is missing (like, eg, xterm-color in an aterm) | ||||||
| - refer to windows by name etc (duplicates?) | - refer to windows by name etc (duplicates?) | ||||||
| - command to run something without a window at all | - commands: | ||||||
| - command to insert a key into a window | 	kill server | ||||||
| - function groups: | 	command to run something without a window at all? | ||||||
| 	bind-key ^W { select-window 0; send-key ^W } | 	command to insert a key into a window (send-key) | ||||||
| 	etc | - function groups, bind-key ^W { select-window 0; send-key ^W } etc | ||||||
|  | - more(1) style handling for in-client output | ||||||
|  |  | ||||||
| -- For 0.1 -------------------------------------------------------------------- | -- For 0.1 -------------------------------------------------------------------- | ||||||
| - fix most(1) problems after scrolling |  | ||||||
| - fix mutt problems with redraw (mutt's) status line when reading mail | - fix mutt problems with redraw (mutt's) status line when reading mail | ||||||
|  |  | ||||||
| -- For 0.2 -------------------------------------------------------------------- | -- For 0.2 -------------------------------------------------------------------- | ||||||
|   | |||||||
							
								
								
									
										23
									
								
								cmd.c
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								cmd.c
									
									
									
									
									
								
							| @@ -1,4 +1,4 @@ | |||||||
| /* $Id: cmd.c,v 1.26 2007-11-12 14:21:40 nicm Exp $ */ | /* $Id: cmd.c,v 1.27 2007-11-16 13:23:59 nicm Exp $ */ | ||||||
|  |  | ||||||
| /* | /* | ||||||
|  * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> |  * Copyright (c) 2007 Nicholas Marriott <nicm@users.sourceforge.net> | ||||||
| @@ -57,6 +57,7 @@ cmd_parse(int argc, char **argv, char **cause) | |||||||
| { | { | ||||||
| 	const struct cmd_entry **entryp, *entry; | 	const struct cmd_entry **entryp, *entry; | ||||||
| 	struct cmd	        *cmd; | 	struct cmd	        *cmd; | ||||||
|  | 	char			 s[BUFSIZ]; | ||||||
| 	int			 opt; | 	int			 opt; | ||||||
|  |  | ||||||
| 	*cause = NULL; | 	*cause = NULL; | ||||||
| @@ -73,10 +74,8 @@ cmd_parse(int argc, char **argv, char **cause) | |||||||
|  |  | ||||||
| 		if (strncmp((*entryp)->name, argv[0], strlen(argv[0])) != 0) | 		if (strncmp((*entryp)->name, argv[0], strlen(argv[0])) != 0) | ||||||
| 			continue; | 			continue; | ||||||
| 		if (entry != NULL) { | 		if (entry != NULL) | ||||||
| 			xasprintf(cause, "ambiguous command: %s", argv[0]); | 			goto ambiguous; | ||||||
| 			return (NULL); |  | ||||||
| 		} |  | ||||||
| 		entry = *entryp; | 		entry = *entryp; | ||||||
| 	} | 	} | ||||||
| 	if (entry == NULL) { | 	if (entry == NULL) { | ||||||
| @@ -108,6 +107,20 @@ cmd_parse(int argc, char **argv, char **cause) | |||||||
| 	} | 	} | ||||||
| 	return (cmd); | 	return (cmd); | ||||||
|  |  | ||||||
|  | ambiguous: | ||||||
|  | 	*s = '\0'; | ||||||
|  | 	for (entryp = cmd_table; *entryp != NULL; entryp++) { | ||||||
|  | 		if (strncmp((*entryp)->name, argv[0], strlen(argv[0])) != 0) | ||||||
|  | 			continue; | ||||||
|  | 		if (strlcat(s, (*entryp)->name, sizeof s) >= sizeof s) | ||||||
|  | 			break; | ||||||
|  | 		if (strlcat(s, ", ", sizeof s) >= sizeof s) | ||||||
|  | 			break; | ||||||
|  | 	} | ||||||
|  | 	s[strlen(s) - 2] = '\0'; | ||||||
|  | 	xasprintf(cause, "ambiguous command: %s, could be: %s", argv[0], s); | ||||||
|  | 	return (NULL); | ||||||
|  |  | ||||||
| usage: | usage: | ||||||
| 	usage(cause, "%s %s", entry->name, entry->usage); | 	usage(cause, "%s %s", entry->name, entry->usage); | ||||||
| 	return (NULL); | 	return (NULL); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Nicholas Marriott
					Nicholas Marriott