mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 10:52:44 +00:00 
			
		
		
		
	 be519022c3
			
		
	
	
		be519022c3
		
	
	
	
	
		
			
			This commit replaces the former, hand-written parser with a new one that can be generated automatically according to a state change diagram. The new `EscapeSequenceParser` class provides a more ergonomic interface to dealing with escape sequences. This interface has been inspired by Alacritty's [vte library](https://github.com/alacritty/vte/). I tried to avoid changing the application logic inside the `Terminal` class. While this code has not been thoroughly tested, I can't find regressions in the basic command line utilities or `vttest`. `Terminal` now displays nicer debug messages when it encounters an unknown escape sequence. Defensive programming and bounds checks have been added where we access parameters, and as a result, we can now endure 4-5 seconds of `cat /dev/urandom`. :D We generate EscapeSequenceStateMachine.h when building the in-kernel LibVT, and we assume that the file is already in place when the userland library is being built. This will probably cause problems later on, but I can't find a way to do it nicely.
		
			
				
	
	
		
			12 lines
		
	
	
	
		
			345 B
		
	
	
	
		
			CMake
		
	
	
	
	
	
			
		
		
	
	
			12 lines
		
	
	
	
		
			345 B
		
	
	
	
		
			CMake
		
	
	
	
	
	
| # FIXME: this assumes that EscapeSequenceStateMachine.h has been
 | |
| # already generated when the kernel was built. This will probably
 | |
| # mess builds up later on.
 | |
| set(SOURCES
 | |
|     Line.cpp
 | |
|     Terminal.cpp
 | |
|     TerminalWidget.cpp
 | |
|     EscapeSequenceParser.cpp
 | |
| )
 | |
| 
 | |
| serenity_lib(LibVT vt)
 | |
| target_link_libraries(LibVT LibC LibCore LibGUI LibGfx LibDesktop)
 |