Compare commits
	
		
			8 Commits
		
	
	
		
			f7912a8ce7
			...
			2518b53e5a
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						
						
							
						
						2518b53e5a
	
				 | 
					
					
						|||
| 
						
						
							
						
						8265f075b1
	
				 | 
					
					
						|||
| 
						
						
							
						
						2f348c79b7
	
				 | 
					
					
						|||
| 
						
						
							
						
						18d16c1edb
	
				 | 
					
					
						|||
| 
						
						
							
						
						94a77a10d8
	
				 | 
					
					
						|||
| 
						
						
							
						
						d39c35e59e
	
				 | 
					
					
						|||
| 
						
						
							
						
						d47bcfb203
	
				 | 
					
					
						|||
| 
						
						
							
						
						ff08195973
	
				 | 
					
					
						
							
								
								
									
										27
									
								
								.clang-format
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								.clang-format
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,27 @@
 | 
			
		||||
# clang-format is fairly limited, and these rules are approximate:
 | 
			
		||||
#  - array initializers can get terribly mangled with clang-format 12.0,
 | 
			
		||||
#  - sometimes it still aligns with space characters,
 | 
			
		||||
#  - struct name NL { NL ... NL } NL name; is unachievable.
 | 
			
		||||
BasedOnStyle: GNU
 | 
			
		||||
ColumnLimit: 80
 | 
			
		||||
IndentWidth: 4
 | 
			
		||||
TabWidth: 4
 | 
			
		||||
UseTab: ForContinuationAndIndentation
 | 
			
		||||
BreakBeforeBraces: Allman
 | 
			
		||||
SpaceAfterCStyleCast: true
 | 
			
		||||
AlignAfterOpenBracket: DontAlign
 | 
			
		||||
AlignOperands: DontAlign
 | 
			
		||||
AlignConsecutiveMacros: Consecutive
 | 
			
		||||
AllowAllArgumentsOnNextLine: false
 | 
			
		||||
AllowAllParametersOfDeclarationOnNextLine: false
 | 
			
		||||
IndentGotoLabels: false
 | 
			
		||||
 | 
			
		||||
# IncludeCategories has some potential, but it may also break the build.
 | 
			
		||||
# Note that the documentation says the value should be "Never".
 | 
			
		||||
SortIncludes: false
 | 
			
		||||
 | 
			
		||||
# This is a compromise, it generally works out aesthetically better.
 | 
			
		||||
BinPackArguments: false
 | 
			
		||||
 | 
			
		||||
# Unfortunately, this can't be told to align to column 40 or so.
 | 
			
		||||
SpacesBeforeTrailingComments: 2
 | 
			
		||||
							
								
								
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							@@ -7,3 +7,5 @@
 | 
			
		||||
/termo.files
 | 
			
		||||
/termo.creator*
 | 
			
		||||
/termo.includes
 | 
			
		||||
/termo.cflags
 | 
			
		||||
/termo.cxxflags
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							@@ -1,5 +1,5 @@
 | 
			
		||||
Copyright (c) 2007-2014 Paul Evans <leonerd@leonerd.org.uk>
 | 
			
		||||
Copyright (c) 2014-2020 Přemysl Eric Janouch <p@janouch.name>
 | 
			
		||||
Copyright (c) 2014-2021 Přemysl Eric Janouch <p@janouch.name>
 | 
			
		||||
 | 
			
		||||
Permission is hereby granted, free of charge, to any person obtaining a copy
 | 
			
		||||
of this software and associated documentation files (the "Software"), to deal
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										2
									
								
								demo.c
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								demo.c
									
									
									
									
									
								
							@@ -10,7 +10,7 @@
 | 
			
		||||
#include "termo.h"
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
main(int argc, char *argv[])
 | 
			
		||||
main (int argc, char *argv[])
 | 
			
		||||
{
 | 
			
		||||
	TERMO_CHECK_VERSION;
 | 
			
		||||
	setlocale (LC_CTYPE, "");
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										28
									
								
								driver-ti.c
									
									
									
									
									
								
							
							
						
						
									
										28
									
								
								driver-ti.c
									
									
									
									
									
								
							@@ -246,33 +246,32 @@ load_terminfo (termo_ti_t *ti, const char *term)
 | 
			
		||||
	set_mouse_string = tigetstr ("XM");
 | 
			
		||||
#endif
 | 
			
		||||
	if (!set_mouse_string || set_mouse_string == (char *) -1)
 | 
			
		||||
		ti->set_mouse_string = strdup ("\E[?1000%?%p1%{1}%=%th%el%;");
 | 
			
		||||
		ti->set_mouse_string = strdup ("\x1b[?1000%?%p1%{1}%=%th%el%;");
 | 
			
		||||
	else
 | 
			
		||||
		ti->set_mouse_string = strdup (set_mouse_string);
 | 
			
		||||
 | 
			
		||||
	bool have_mouse = false;
 | 
			
		||||
	if (!mouse_report_string && strstr (term, "xterm"))
 | 
			
		||||
		mouse_report_string = "\x1b[M";
 | 
			
		||||
	// We handle 1006 and 1015 unconditionally in driver-csi.c,
 | 
			
		||||
	// and don't want to have the handling diverted by recent terminfo;
 | 
			
		||||
	// let's hardcode the ancient 1000 sequence locally
 | 
			
		||||
	if (mouse_report_string)
 | 
			
		||||
	{
 | 
			
		||||
		have_mouse = true;
 | 
			
		||||
 | 
			
		||||
		trie_node_t *node = malloc (sizeof *node);
 | 
			
		||||
		if (!node)
 | 
			
		||||
			goto fail;
 | 
			
		||||
 | 
			
		||||
		node->type = TYPE_MOUSE;
 | 
			
		||||
		if (!insert_seq (ti, mouse_report_string, node))
 | 
			
		||||
		if (!insert_seq (ti, "\x1b[M", node))
 | 
			
		||||
		{
 | 
			
		||||
			free (node);
 | 
			
		||||
			goto fail;
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (!have_mouse)
 | 
			
		||||
	if (!mouse_report_string && strstr (term, "xterm") != term)
 | 
			
		||||
		ti->tk->guessed_mouse_proto = TERMO_MOUSE_PROTO_NONE;
 | 
			
		||||
	else if (strstr (term, "rxvt") == term)
 | 
			
		||||
		// urxvt generally doesn't understand the SGR protocol.
 | 
			
		||||
		// urxvt didn't understand the SGR protocol until version 9.25,
 | 
			
		||||
		// it's safest to keep using 1015.
 | 
			
		||||
		ti->tk->guessed_mouse_proto = TERMO_MOUSE_PROTO_RXVT;
 | 
			
		||||
	else
 | 
			
		||||
		// SGR (1006) is the superior protocol.  If it's not supported by the
 | 
			
		||||
@@ -363,6 +362,8 @@ mouse_reset (termo_ti_t *ti)
 | 
			
		||||
		&& write_string (ti->tk, "\x1b[?1002l")
 | 
			
		||||
		&& write_string (ti->tk, "\x1b[?1003l")
 | 
			
		||||
 | 
			
		||||
		&& write_string (ti->tk, "\x1b[?1004l")
 | 
			
		||||
 | 
			
		||||
		&& write_string (ti->tk, "\x1b[?1005l")
 | 
			
		||||
		&& write_string (ti->tk, "\x1b[?1006l")
 | 
			
		||||
		&& write_string (ti->tk, "\x1b[?1015l");
 | 
			
		||||
@@ -410,8 +411,12 @@ start_driver (termo_t *tk, void *info)
 | 
			
		||||
	// Disable everything mouse-related first
 | 
			
		||||
	if (!mouse_reset (ti))
 | 
			
		||||
		return false;
 | 
			
		||||
 | 
			
		||||
	// Enable focus tracking opportunistically and automatically,
 | 
			
		||||
	// as it basically doesn't have any negative consequences at all
 | 
			
		||||
	return mouse_set_proto (ti, tk->mouse_proto, true)
 | 
			
		||||
		&& mouse_set_tracking_mode (ti, tk->mouse_tracking, true);
 | 
			
		||||
		&& mouse_set_tracking_mode (ti, tk->mouse_tracking, true)
 | 
			
		||||
		&& write_string (ti->tk, "\x1b[?1004h");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static int
 | 
			
		||||
@@ -425,7 +430,8 @@ stop_driver (termo_t *tk, void *info)
 | 
			
		||||
	if (tk->mouse_proto == TERMO_MOUSE_PROTO_NONE)
 | 
			
		||||
		return true;
 | 
			
		||||
	return mouse_set_proto (ti, tk->mouse_proto, false)
 | 
			
		||||
		&& mouse_set_tracking_mode (ti, tk->mouse_tracking, false);
 | 
			
		||||
		&& mouse_set_tracking_mode (ti, tk->mouse_tracking, false)
 | 
			
		||||
		&& write_string (ti->tk, "\x1b[?1004l");
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
static void *
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										1
									
								
								termo.c
									
									
									
									
									
								
							
							
						
						
									
										1
									
								
								termo.c
									
									
									
									
									
								
							@@ -1856,4 +1856,3 @@ termo_keycmp (termo_t *tk,
 | 
			
		||||
	}
 | 
			
		||||
	return key1.modifiers - key2.modifiers;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -2,7 +2,8 @@
 | 
			
		||||
#include "../termo.h"
 | 
			
		||||
#include "taplib.h"
 | 
			
		||||
 | 
			
		||||
int main (int argc, char *argv[])
 | 
			
		||||
int
 | 
			
		||||
main (int argc, char *argv[])
 | 
			
		||||
{
 | 
			
		||||
	termo_t *tk;
 | 
			
		||||
	termo_key_t key;
 | 
			
		||||
 
 | 
			
		||||
@@ -1,7 +1,8 @@
 | 
			
		||||
#include "../termo.h"
 | 
			
		||||
#include "taplib.h"
 | 
			
		||||
 | 
			
		||||
int main (int argc, char *argv[])
 | 
			
		||||
int
 | 
			
		||||
main (int argc, char *argv[])
 | 
			
		||||
{
 | 
			
		||||
	termo_t *tk;
 | 
			
		||||
	termo_key_t key;
 | 
			
		||||
 
 | 
			
		||||
@@ -73,7 +73,7 @@ is_str (const char *got, const char *expect, char *name)
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
int
 | 
			
		||||
exit_status(void)
 | 
			
		||||
exit_status (void)
 | 
			
		||||
{
 | 
			
		||||
	return g_exit_status;
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user