fancy-prompt.lua: allow non-ASCII buffer names
It may theoretically bite us in the ass with non-UTF-8-compliant IRC servers, and certainly with double-width characters.
This commit is contained in:
		@@ -64,12 +64,13 @@ degesch.hook_prompt (function (hook)
 | 
				
			|||||||
	local lines, cols = degesch.get_screen_size ()
 | 
						local lines, cols = degesch.get_screen_size ()
 | 
				
			||||||
	x = x .. " " .. active .. string.rep (" ", cols)
 | 
						x = x .. " " .. active .. string.rep (" ", cols)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	-- Readline seems to be broken and completely corrupts the prompt
 | 
						-- Readline 7.0.003 seems to be broken and completely corrupts the prompt.
 | 
				
			||||||
	-- (tested on 7.0.003 Archlinux, 7.0-5 Debian buster)
 | 
						-- However 8.0.004 seems to be fine with these, as is libedit 20191231-3.1.
 | 
				
			||||||
	x = x:gsub("[\128-\255]", "?")
 | 
						--x = x:gsub("[\128-\255]", "?")
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	-- Cut off extra characters and apply formatting, including the hack.
 | 
						-- Cut off extra characters and apply formatting, including the hack.
 | 
				
			||||||
	-- Note that this doesn't count with full-width or zero-width characters.
 | 
						-- FIXME: this doesn't count with full-width or zero-width characters.
 | 
				
			||||||
 | 
						--   We might want to export wcwidth() above term_from_utf8 somehow.
 | 
				
			||||||
	local overflow = utf8.offset (x, cols - 1)
 | 
						local overflow = utf8.offset (x, cols - 1)
 | 
				
			||||||
	if overflow then x = x:sub (1, overflow) end
 | 
						if overflow then x = x:sub (1, overflow) end
 | 
				
			||||||
	x = "\x01\x1b[0;4;1;38;5;16m\x1b[48;5;" .. bg_color .. "m\x02" ..
 | 
						x = "\x01\x1b[0;4;1;38;5;16m\x1b[48;5;" .. bg_color .. "m\x02" ..
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user