Sebastian Herbszt
2008-Aug-31 21:31 UTC
[syslinux] [RFC][PATCH] ui: label completion on tab key
This implements the label completion on tab key idea. It does introduce "labelcompl" as new config keyword. The default value is 0 so it does not change current behaviour. If you press tab with an empty command line it will display all labels. If the command line contains any characters it will display the matching labels. This patch is only intended for testing since i didn't check if it doesn't clobber required registers. Works for me with syslinux. Feedback welcome. - Sebastian Index: syslinux-3.71-27-g3d39943/core/ui.inc ==================================================================--- syslinux-3.71-27-g3d39943.orig/core/ui.inc 2008-08-31 22:45:26.000000000 +0200 +++ syslinux-3.71-27-g3d39943/core/ui.inc 2008-08-31 22:51:44.000000000 +0200 @@ -108,6 +108,8 @@ not_ascii: cmp al,0Dh ; Enter je command_done + cmp al,09h ; Tab + je display_labels cmp al,'F' & 1Fh ; <Ctrl-F> je set_func_flag %if IS_PXELINUX @@ -142,6 +144,48 @@ mov byte [FuncFlag],1 jmp short get_char_2 +display_labels: + cmp word [LabelCompl],1 ; Label completion enabled? + jnz get_char_2 + mov cx,di + sub cx,command_line + call crlf + mov esi,[HighMemSize] ; Start from top of memory +.scan: + cmp esi,[VKernelEnd] + jbe .not_vk + + push cx ; save command line size + + mov di,VKernelBuf + call rllunpack + ; ESI updated on return + + sub di,cx ; Return to beginning of buf + pop cx ; restore command line size + push si ; save SI + cmp cx,0 + jz .print + push di + push cx + mov si,command_line + es repe cmpsb + pop cx + pop di + jne .next +.print: + mov al,' ' + call writechr + + mov si,di + call writestr +.next: + pop si ; restore SI + jmp .scan +.not_vk: + call crlf + jmp enter_command + ctrl_f: xor ah,ah mov [FuncFlag],ah Index: syslinux-3.71-27-g3d39943/core/keywords ==================================================================--- syslinux-3.71-27-g3d39943.orig/core/keywords 2008-08-31 22:45:26.000000000 +0200 +++ syslinux-3.71-27-g3d39943/core/keywords 2008-08-31 22:45:28.000000000 +0200 @@ -30,6 +30,7 @@ ontimeout onerror noescape +labelcompl f0 f1 f2 Index: syslinux-3.71-27-g3d39943/core/keywords.inc ==================================================================--- syslinux-3.71-27-g3d39943.orig/core/keywords.inc 2008-08-31 22:45:26.000000000 +0200 +++ syslinux-3.71-27-g3d39943/core/keywords.inc 2008-08-31 22:45:28.000000000 +0200 @@ -75,6 +75,7 @@ keyword onerror, pc_onerror keyword allowoptions, pc_setint16, AllowOptions keyword noescape, pc_setint16, NoEscape + keyword labelcompl, pc_setint16, LabelCompl keyword f1, pc_filename, FKeyN(1) keyword f2, pc_filename, FKeyN(2) keyword f3, pc_filename, FKeyN(3) Index: syslinux-3.71-27-g3d39943/core/parseconfig.inc ==================================================================--- syslinux-3.71-27-g3d39943.orig/core/parseconfig.inc 2008-08-31 22:45:26.000000000 +0200 +++ syslinux-3.71-27-g3d39943/core/parseconfig.inc 2008-08-31 22:45:28.000000000 +0200 @@ -463,6 +463,7 @@ CmdLinePtr dw cmd_line_here ; Command line advancing pointer ForcePrompt dw 0 ; Force prompt NoEscape dw 0 ; No escape +LabelCompl dw 0 ; Label completion on TAB key AllowImplicit dw 1 ; Allow implicit kernels AllowOptions dw 1 ; User-specified options allowed
H. Peter Anvin
2008-Sep-10 03:10 UTC
[syslinux] [RFC][PATCH] ui: label completion on tab key
Sebastian Herbszt wrote:> This implements the label completion on tab key idea. It does introduce > "labelcompl" as new config keyword. The default value is 0 so it does not > change current behaviour. > If you press tab with an empty command line it will display all labels. If the > command line contains any characters it will display the matching labels. > > This patch is only intended for testing since i didn't check if it doesn't > clobber required registers. Works for me with syslinux. Feedback welcome.I think it should be the default for completion to work. What isn't clear to me is if we need an option (nocomplete?) to disable it, and if there should be a way to hide individual labels from view. I would appreciate user comments on the above. Otherwise I'm probably going to accept the patch with the sense reversed (a nocomplete option.) -hpa