use iswspace()/iswpunct() to find word delimiters
this inverts the configuration logic: you no longer provide a list of delimiters -- all space and punctuation characters are considered delimiters, unless listed in extrawordchars.
This commit is contained in:
		
							parent
							
								
									d5efd256aa
								
							
						
					
					
						commit
						add0211522
					
				| @ -28,11 +28,12 @@ static float cwscale = 1.0; | |||||||
| static float chscale = 1.0; | static float chscale = 1.0; | ||||||
| 
 | 
 | ||||||
| /*
 | /*
 | ||||||
|  * word delimiter string |  * all space and punctuation characters are considered word delimiters, unless | ||||||
|  |  * listed here. | ||||||
|  * |  * | ||||||
|  * More advanced example: L" `'\"()[]{}" |  * More advanced example: L"#$%&+,-./:=?_~" | ||||||
|  */ |  */ | ||||||
| wchar_t *worddelimiters = L" "; | wchar_t *extrawordchars = L"./:"; | ||||||
| 
 | 
 | ||||||
| /* selection timeouts (in milliseconds) */ | /* selection timeouts (in milliseconds) */ | ||||||
| static unsigned int doubleclicktimeout = 300; | static unsigned int doubleclicktimeout = 300; | ||||||
|  | |||||||
							
								
								
									
										3
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										3
									
								
								st.c
									
									
									
									
									
								
							| @ -16,6 +16,7 @@ | |||||||
| #include <termios.h> | #include <termios.h> | ||||||
| #include <unistd.h> | #include <unistd.h> | ||||||
| #include <wchar.h> | #include <wchar.h> | ||||||
|  | #include <wctype.h> | ||||||
| 
 | 
 | ||||||
| #include "st.h" | #include "st.h" | ||||||
| #include "win.h" | #include "win.h" | ||||||
| @ -41,7 +42,7 @@ | |||||||
| #define ISCONTROLC0(c)		(BETWEEN(c, 0, 0x1f) || (c) == '\177') | #define ISCONTROLC0(c)		(BETWEEN(c, 0, 0x1f) || (c) == '\177') | ||||||
| #define ISCONTROLC1(c)		(BETWEEN(c, 0x80, 0x9f)) | #define ISCONTROLC1(c)		(BETWEEN(c, 0x80, 0x9f)) | ||||||
| #define ISCONTROL(c)		(ISCONTROLC0(c) || ISCONTROLC1(c)) | #define ISCONTROL(c)		(ISCONTROLC0(c) || ISCONTROLC1(c)) | ||||||
| #define ISDELIM(u)		(u != 0 && wcschr(worddelimiters, u) != NULL) | #define ISDELIM(u)		((iswspace(u) || iswpunct(u)) && wcschr(extrawordchars, u) == NULL) | ||||||
| 
 | 
 | ||||||
| enum term_mode { | enum term_mode { | ||||||
| 	MODE_WRAP        = 1 << 0, | 	MODE_WRAP        = 1 << 0, | ||||||
|  | |||||||
							
								
								
									
										2
									
								
								st.h
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								st.h
									
									
									
									
									
								
							| @ -114,7 +114,7 @@ char *xstrdup(char *); | |||||||
| extern char *utmp; | extern char *utmp; | ||||||
| extern char *stty_args; | extern char *stty_args; | ||||||
| extern char *vtiden; | extern char *vtiden; | ||||||
| extern wchar_t *worddelimiters; | extern wchar_t *extrawordchars; | ||||||
| extern int allowaltscreen; | extern int allowaltscreen; | ||||||
| extern char *termname; | extern char *termname; | ||||||
| extern unsigned int tabspaces; | extern unsigned int tabspaces; | ||||||
|  | |||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user