Annotation of embedaddon/readline/doc/readline.dvi, revision 1.1.1.2

1.1.1.2 ! misho       1: ÷&ƒ’À;è TeX output 2020.10.30:1007‹&ÿÿÿÿŸòŽ ƒ33 þšà‘GóKÂÖN ¼jcmbx12ëKGNU–ÆqReadline“LibraryŽŽ‘GŸ0‰&±ž¸Ÿšª’Ï€Úó6Kñ`y
1.1       misho       2: ó3
1.1.1.2 ! misho       3: cmr10áEdition–¦f8.1,“for“ó7ßê<x
1.1       misho       4: ó3
1.1.1.2 ! misho       5: cmtt10âReadline“Library“áV‘ÿeersion“8.1.ŽŸ
’&qiOctobMÞer‘¦f2020Ž &õzó]ÂÖN ffcmbx12ë]Chet–ffRamey›þ¦f,“Case“W˜estern“ReservšŒÌe“Univ˜ersit˜yŽŸBrian–ffF›þ¦foŒÌx,“F˜ree“Soft•ŒÌw“are‘ffF˜oundationŽŸÌ̉&±ž¸ŽŒ‹*ŸòŽ ƒ33Ÿfh‘GáThis–€cman²!ual›€bdescribMÞes“the˜GNU‘€YReadline“Library“(v²!ersion˜8.1,‘‡ý29“OctobMÞer˜2020),‘‡ýa“libraryŽ¤
33‘Gwhicš²!h–µºaids“in“the“consistency“of“user‘µ»in˜terface“across“discrete“programs“whic˜h“pro˜vide“aŽ¡‘Gcommand–¦fline“in²!terface.Ž¤33‘GCop•²!yrigh“t‘±ž«‚cŽŽŽ‘¦fó?!",š
1.1       misho       6: ó3
1.1.1.2 ! misho       7: cmsy10ê
ŽŽŽŽ‘@&á1988{2020–¦fF›ÿeree“Soft•²!w“are–¦fF˜oundation,“Inc.Ž¡‘.ùœP•²!ermission›t#is‘t"gran“ted˜to›t"cop“y‘ÿe,‘±ddistribute˜and/or–t#moMÞdify˜this“doMÞcumen²!t˜under“theŽ¤
33‘.ùœterms–
1.1       misho       8: ~of“the“GNU‘
1.1.1.2 ! misho       9: WF›ÿeree“DoMÞcumen²!tation“License,‘)­V˜ersion“1.3“or“anš²!y“later“v˜ersionŽ¡‘.ùœpublished–^õbš²!y“the“F‘ÿeree“Soft˜w˜are“F‘ÿeoundation;‘;<with“no“In˜v‘ÿdDarian˜t“Sections,‘ÍnoŽ¡‘.ùœF›ÿeron•²!t-Co“v“er–xfT˜exts,‘™and›xeno“Bac•²!k-Co“v“er˜T‘ÿeexts.‘ΈA‘xZcop“y–xfof˜the“license˜is“includedŽ¡‘.ùœin–¦fthe“section“enš²!titled“\GNU“F‘ÿeree“DoMÞcumen˜tation“License".ŽŽŒ‹ÿÿÿÿ&ÝŸò’&À¥TáiŽŽŽ ƒ33 ý ÌÍ‘GóTÂÖN G®cmbx12ëTT‘þaGable–z³of“Con–ÿuÂten“tsŽŽŸ*33‘Gë]1‘32Command–ffLine“Editing‘&çh‘&32óe·ág£ffcmmi12ëe:Ž–Q‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž‘    Üßë]1ŽŽ©ÿ‘!Gá1.1‘
        !            10: ó5In²!troMÞduction–¦fto“Line“Editing‘&ð‘é˜ó> b>
1.1       misho      11: ó3
1.1.1.2 ! misho      12: cmmi10é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘š7á1ŽŽ¤
33‘!G1.2        !            13: ó5Readline‘¦fIn²!teraction‘&Rd‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Ô«á1ŽŽ¡‘0G1.2.1        !            14: ó5Readline–¦fBare“Essen²!tials‘&.¶‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘°ýá1ŽŽ¡‘0G1.2.2        !            15: ó5Readline›¦fMo•²!v“emen“t˜Commands‘&B"‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Äiá2ŽŽ¡‘0G1.2.3        !            16: ó5Readline–¦fKilling“Commands1ž‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘³æá2ŽŽ¡‘0G1.2.4        !            17: ó5Readline‘¦fArgumen²!ts‘&³‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘5cá3ŽŽ¡‘0G1.2.5        !            18: ó5Searc²!hing–¦ffor“Commands“in“the“History‘&i‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ëKá3ŽŽ¡‘!G1.3        !            19: ó5Readline–¦fInit“File‘§‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘)aá4ŽŽ¡‘0G1.3.1        !            20: ó5Readline–¦fInit“File“Syn²!tax‘ ‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘¢]á4ŽŽ¡‘0G1.3.2        !            21: ó5Conditional–¦fInit“Constructs‘ü‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘~Xá12ŽŽ¡‘0G1.3.3        !            22: ó5Sample–¦fInit“File‘&¾Î‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Aá13ŽŽ¡‘!G1.4        !            23: ó5Bindable–¦fReadline“Commands‘&¯Â‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘2      á16ŽŽ¡‘0G1.4.1        !            24: ó5Commands–¦fF‘ÿeor“Mo²!ving‘&>H‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Àá16ŽŽ¡‘0G1.4.2        !            25: ó5Commands–¦fF‘ÿeor“Manipulating“The“History‘iò‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ì9á17ŽŽ¡‘0G1.4.3        !            26: ó5Commands–¦fF›ÿeor“Changing“T˜ext{’‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ýÚá18ŽŽ¡‘0G1.4.4        !            27: ó5Killing–¦fAnd“Y‘ÿeanking‘šÇ‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘á20ŽŽ¡‘0G1.4.5        !            28: ó5SpMÞecifying–¦fNumeric“Argumen²!ts‘^V‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘àá21ŽŽ¡‘0G1.4.6        !            29: ó5Letting–¦fReadline“T²!ypMÞe“F›ÿeor“Y˜ou‘&ºÒ‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘=á21ŽŽ¡‘0G1.4.7        !            30: ó5KeybMÞoard‘¦fMacrosdI‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘æ‘á22ŽŽ¡‘0G1.4.8        !            31: ó5Some–¦fMiscellaneous“Commands‘ø&‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘zná22ŽŽ¡‘!G1.5        !            32: ó5Readline–¦fvi“MoMÞdeE‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘È
        !            33: á24ŽŽŸ33‘Gë]2‘32Programming–ffwith“GNU“Readline‘ב&32ëe:Ž–Q‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž‘
        !            34: öOë]25ŽŽ¦‘!Gá2.1‘
        !            35: ó5Basic‘¦fBeha²!vior‘&Òä‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘U,á25ŽŽ¡‘!G2.2        !            36: ó5Custom‘¦fF‘ÿeunctions‘&F·‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Èþá26ŽŽ¡‘0G2.2.1        !            37: ó5Readline‘¦fT²!ypMÞedefs‘&F‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘á27ŽŽ¡‘0G2.2.2        !            38: ó5W›ÿeriting–¦fa“New“F˜unction‘&áÌ‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘dá27ŽŽ¡‘!G2.3        !            39: ó5Readline‘¦fV‘ÿeariablesa‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ãJá28ŽŽ¡‘!G2.4        !            40: ó5Readline›¦fCon•²!v“enience˜F‘ÿeunctions‘&¯À‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘2á33ŽŽ¡‘0G2.4.1        !            41: ó5Naming–¦fa“F‘ÿeunction‘&—Ú‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘"á33ŽŽ¡‘0G2.4.2        !            42: ó5Selecting–¦fa“Keymap%û‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘¨Cá34ŽŽ¡‘0G2.4.3        !            43: ó5Binding‘¦fKeys‘Ín‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘O¶á35ŽŽ¡‘0G2.4.4        !            44: ó5AssoMÞciating–¦fF‘ÿeunction“Names“and“Bindings‘'Ñé˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ª
        !            45: á36ŽŽ¡‘0G2.4.5        !            46: ó5Allo²!wing‘¦fUndoing‘G‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ÉWá37ŽŽ¡‘0G2.4.6        !            47: ó5Redispla²!y1º‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘´á38ŽŽ¡‘0G2.4.7        !            48: ó5MoMÞdifying‘¦fT‘ÿeext‘謑é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘jôá40ŽŽ¡‘0G2.4.8        !            49: ó5Character‘¦fInput‘&£‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘%Ôá40ŽŽ¡‘0G2.4.9        !            50: ó5T‘ÿeerminal‘¦fManagemen²!t‘&­‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘ôá41ŽŽ¡‘0G2.4.10‘
        !            51: ó5Utilit²!y‘¦fF‘ÿeunctions‘&Ýð‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘`7á41ŽŽ¡‘0G2.4.11‘
        !            52: ó5Miscellaneous‘¦fF‘ÿeunctions‘&ÎR‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Pšá43ŽŽ¡‘0G2.4.12‘
        !            53: ó5Alternate‘¦fIn²!terface‘T‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘š›á44ŽŽ¡‘0G2.4.13‘
        !            54: ó5A–¦fReadline“Examplesבé˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘öá45ŽŽŽŒ‹ÿÿÿþÇŸò’&½š©áiiŽŽŽ ƒ33 ý†ÌÍ‘0G2.4.14‘
        !            55: ó5Alternate–¦fIn²!terface“Example‘&B#‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Äjá46ŽŽ¤
33‘!G2.5        !            56: ó5Readline–¦fSignal“Handling‘&/O‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘±—á48ŽŽ¡‘!G2.6        !            57: ó5Custom‘¦fCompleters‘?à‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Â'á51ŽŽ¡‘0G2.6.1        !            58: ó5Ho²!w–¦fCompleting“W‘ÿeorksh&‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘êná51ŽŽ¡‘0G2.6.2        !            59: ó5Completion‘¦fF‘ÿeunctions‘R¶‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Ôþá52ŽŽ¡‘0G2.6.3        !            60: ó5Completion‘¦fV‘ÿeariables‘&*Ô‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘­á53ŽŽ¡‘0G2.6.4        !            61: ó5A–¦fShort“Completion“Example‘Ñ:‘é˜é:Ž–ÝÛ‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž“‘é˜:Ž‘Sá58ŽŽŸ33‘Gë]Apps3endix‘ffAŽ‘wL‹GNU‘œÈF‘þ¦free–œûDos3cumenŒÌtation“License‘&È“‘&32ëe:Ž‘Q‘&32:Ž‘       @ë]67ŽŽ¤!ÿ‘GConcept‘ffIndex‘#C‘&32ëe:Ž–Q‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž‘»ë]75ŽŽ¡‘GF›þ¦function–ffand“V˜ariable“Index‘&;¤‘&32ëe:Ž–Q‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž“‘&32:Ž‘ 1ë]76ŽŽŽŒ‹&>Ÿò’&¾6eá1ŽŽŽ ƒ33 ý ÌÍ‘GëT1‘   ¸QCommand–z³Line“EditingŽŽŸn‘GáThis–¦fcš²!hapter“describMÞes“the“basic“features“of“the“ó<Œ-ø
        !            62: ó3
        !            63: cmcsc10çgnu“ácommand“line“editing“in˜terface.ŽŸ¸ä‘Gë]1.1‘™InŒÌtros3duction–f@to“Line“EditingŽŽŸ33‘GáThe–¦ffolloš²!wing“paragraphs“describMÞe“the“notation“used“to“represen˜t“k˜eystrok˜es.Ž¤¥‘!GThe–Yútext›Yùó=ßê<x
        !            64: ó3
        !            65: cmsltt10èC-k“áis“read˜as“`Con²!trol-K'‘YËand“describMÞes“the˜c²!haracter“proMÞduced“when˜the“âkŽ©
33‘Gákš²!ey–¦fis“pressed“while“the“Con˜trol“k˜ey“is“depressed.Ž¡‘!GThe–Ôztext›Ô{èM-k“áis“read˜as“`Meta-K'‘Ôoand“describMÞes“the˜c²!haracter“proMÞduced“when˜the“MetaŽ¦‘Gk•²!ey›ø°(if‘ø¯y“ou˜ha“v“e˜one)–ø¯is˜depressed,‘
Band“the˜âk˜ák²!ey“is˜pressed.‘ÔºThe“Meta˜k²!ey˜is“labMÞeled˜âALTŽ¦‘Gáon›Ž~man•²!y‘Ž}k“eybMÞoards.‘ÕåOn˜k“eybMÞoards‘Ž}with˜t“w“o‘Ž}k“eys˜labMÞeled˜âALT–Ž}á(usually˜to“either˜side“of˜theŽ¦‘Gspace–™Èbar),‘œOthe“âALT›™Éáon“the˜left“side˜is“generally“set˜to“w²!ork˜as“a˜Meta“k²!ey‘ÿe.‘Ù©The“âALT˜ák²!ey“onŽ¦‘Gthe–CÃrighš²!t“ma˜y“also“bMÞe“congured“to“w˜ork“as“a“Meta“k˜ey“or“ma˜y“bMÞe“congured“as“some“otherŽ¦‘GmošMÞdier,–¦fsuc²!h“as“a“Comp˜ose“kš²!ey“for“t˜yping“accen˜ted“c˜haracters.ŽŸ¦‘!GIf–î"yš²!ou“do“not“ha˜v˜e“a“Meta“or“âALT“ák˜ey‘ÿe,‘üor“another“k˜ey“w˜orking“as“a“Meta“k˜ey‘ÿe,‘üthe“iden˜ticalŽ¦‘Gk•²!eystrok“e–jåcan›jæbMÞe“generated˜bš²!y“t˜yping›jæâESC“ó9ý':
        !            66: ó3
        !            67: cmti10ärstá,‘vÌand˜then“t²!yping˜âká.‘ÊEither“proMÞcess˜is“kno²!wnŽ¦‘Gas–¦fó:p®0J
        !            68: ó3
        !            69: cmsl10åmetafying‘–~áthe“âk“ák²!ey‘ÿe.Ž¡‘!GThe–Ùàtext›ÙßèM-C-k“áis˜read“as˜`Meta-Con²!trol-k'“and˜describMÞes“the˜c²!haracter“proMÞduced˜b²!yŽ¦‘Gåmetafying‘–~èC-ká.Ž¡‘!GIn›Tóaddition,‘€–sev•²!eral‘Tòk“eys˜ha“v“e˜their˜o“wn˜names.‘éƒSpMÞecically‘ÿe,–€–âDELá,“âESCá,‘€•âLFDá,“âSPCá,“âRETá,Ž¦‘Gand–$CâTAB“áall“stand›$Dfor“themselv²!es“when“seen“in“this˜text,‘Cºor“in“an“init˜le“(see“Section“1.3Ž¦‘G[Readline–úInit“File],‘”vpage›û4).‘ÖcIf“y•²!our˜k“eybMÞoard›úlac“ks˜a˜âLFD˜ák“ey‘ÿe,‘”vt“yping‘ûâC-j˜áwill˜proMÞduce˜theŽ¦‘Gdesired–¦fcš²!haracter.‘ÝÝThe“âRET“ák˜ey“ma˜y“bšMÞe“lab˜eled“âReturn“áor“âEnter“áon“some“k²!eyb˜oards.ŽŸ¸ä‘Gë]1.2‘™Readline‘f@InŒÌteractionŽŽŸ33‘GáOften–é3during“an“in•²!teractiv“e›é3session‘é2y“ou˜t“ypMÞe˜in˜a˜long˜line˜of˜text,‘ùåonly˜to˜notice˜that˜theŽ¦‘Grst–ãÒw²!ord“on›ãÓthe“line“is“misspMÞelled.‘–"The“Readline“library˜givš²!es“y˜ou“a“set‘ãÓof“commands“forŽ¦‘Gmanipulating–“¡the›“ text“as“y•²!ou˜t“ypMÞe–“¡it“in,‘—ballo•²!wing˜y“ou–“¡to“just˜x“yš²!our“t˜ypMÞo,‘—band‘“ not“forcingŽ¦‘Gyš²!ou–`ùto“ret˜ypMÞe“the‘`øma‘›»jorit˜y“of“the“line.‘ƹUsing‘`øthese“editing“commands,‘nÛy˜ou“mo˜v˜e“the“cursorŽ¦‘Gto–the“place›that“needs“correction,‘;Zand“delete“or“insert˜the“text“of“the“corrections.‘CZThen,Ž¦‘Gwhen–ý£yš²!ou“are“satised“with‘ý¤the“line,‘cy˜ou‘ý¤simply“press“âRETá.‘¥œY‘ÿeou“do“not“ha˜v˜e‘ý¤to“bMÞe“at“the“endŽ¦‘Gof–ÿÕthe“line“to›ÿÔpress“âRETá;‘,the˜en²!tire“line“is“accepted“regardless“of“the˜loMÞcation“of“the“cursorŽ¦‘Gwithin–¦fthe“line.ŽŸ¸å‘GógÂÖN 
#×cmbx12ëg1.2.1‘d(Readline–íMBare“Essen–átialsŽŽŸ³3‘GáIn–Üorder›Üto“en•²!ter˜c“haracters‘Üin“to˜the‘Üline,‘ézsimply˜t“ypšMÞe–Üthem.‘~ÚThe“t•²!yp˜ed‘Üc“haracter‘Üapp˜earsŽ¦‘Gwhere–æNthe“cursor›æOw²!as,‘öHand“then“the“cursor˜mo•²!v“es–æNone“space“to˜the“righ•²!t.‘•If˜y“ou›æNmist“ypMÞe˜aŽ¦‘Gc•²!haracter,›¦fy“ou˜can˜use˜y“our˜erase˜c“haracter˜to˜bac“k˜up˜and˜delete˜the˜mist“ypMÞed˜c“haracter.Ž¡‘!GSometimes›³ly•²!ou‘³mma“y˜mist“ypMÞe‘³ma˜c“haracter,‘¶®and˜not–³mnotice˜the˜error“un•²!til˜y“ou‘³mha“v“e˜t“ypMÞedŽ¦‘Gsevš²!eral–wøother“c˜haracters.‘ÎcIn“that“case,‘By˜ou“can“t˜ypMÞe“èC-b“áto“mo˜v˜e“the“cursor‘wùto“the“left,‘AandŽ¦‘Gthen–¦fcorrect“yš²!our“mistak˜e.‘ÝÝAfterw˜ards,“y˜ou“can“mo˜v˜e“the“cursor“to“the“righ˜t“with“èC-fá.Ž¡‘!GWhen–é"y²!ou›é!add“text“in“the˜middle“of“a˜line,‘ùÑy²!ou“will˜notice“that“c²!haracters“to˜the“righ²!tŽ¦‘Gof–q”the“cursor“are“`pushed‘q“o•²!v“er'–q”to“makš²!e“roMÞom“for“the“text“that“y˜ou‘q“ha˜v˜e“inserted.‘ÌBLik˜ewise,Ž¦‘Gwhen–‚ùy²!ou›‚ødelete“text“bMÞehind˜the“cursor,‘ºc²!haracters˜to“the“righ²!t˜of“the“cursor˜are“`pulledŽŽŒ‹JåŸò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’&MH2ŽŽŽ ƒ33 ý ÌÍ‘Gbacš²!k'–¹Õto“ll“in“the“blank“space“created“b˜y“the“remo˜v‘ÿdDal“of“the‘¹Ötext.‘A‘¹™list“of“the“bare“essen˜tialsŽ©
33‘Gfor–¦fediting“the“text“of“an“input“line“follo²!ws.ŽŸˆ‘GèC-b‘(‘õáMo•²!v“e›¦fbac“k˜one˜c“haracter.Ž¤kÊ‘GèC-f‘(‘õáMo•²!v“e›¦fforw“ard˜one˜c“haracter.Ž¡‘GâDEL–¦fáor“âBackspaceŽ¦‘Kâ:áDelete–¦fthe“c²!haracter“to“the“left“of“the“cursor.ŽŸkË‘GèC-d‘(‘õáDelete–¦fthe“c²!haracter“underneath“the“cursor.Ž¡‘GPrin•²!ting‘¦fc“haractersŽŽ¦‘Kâ:Insert–¦fthe“cš²!haracter“in˜to“the“line“at“the“cursor.Ž¡‘GèC-_–¦fáor“èC-x“C-uŽ¦‘Kâ:áUndo–jthe“last“editing“command.‘÷éY‘ÿeou“can‘iundo“all“the“w•²!a“y›jbac“k˜to˜an˜empt“yŽ¦‘Kâ:line.Ž¤ˆ‘G(DepMÞending–Œron“yš²!our“conguration,‘‘£the‘ŒsâBackspace“ák˜ey“bMÞe“set“to“delete‘Œsthe“c˜haracter“to“theŽ¦‘Gleft–Z‘of“the“cursor“and“the‘Z’âDEL“ákš²!ey“set“to“delete“the“c˜haracter“underneath“the“cursor,‘‡œlik˜eŽ¦‘GèC-dá,–¦frather“than“the“c²!haracter“to“the“left“of“the“cursor.)ŽŸ8—‘Gëg1.2.2‘d(Readline›íMMo•–áv“emen“t˜CommandsŽŽŸ³3‘GáThe›S©abMÞo•²!v“e–S¨table˜describMÞes“the˜most“basic˜k•²!eystrok“es‘S¨that˜y“ou˜need–S¨in˜order“to˜do“editing˜ofŽ¦‘Gthe–öinput‘öline.‘ÌÎF‘ÿeor“yš²!our“con˜v˜enience,‘   ôman˜y“other“commands‘öha˜v˜e“bMÞeen“added‘öin“additionŽ¦‘Gto›2XèC-bá,–UUèC-fá,“èC-dá,‘UTand–2YâDELá.‘´Here˜are“some˜commands˜for“mo²!ving˜more˜rapidly“abMÞout˜theŽ¦‘Gline.Ž¡‘GèC-a‘(‘õáMo•²!v“e–¦fto“the“start“of“the“line.ŽŸkË‘GèC-e‘(‘õáMo•²!v“e–¦fto“the“end“of“the“line.Ž¤kÊ‘GèM-f‘(‘õáMo•²!v“e›¦fforw“ard˜a˜w“ord,˜where˜a˜w“ord˜is˜compMÞosed˜of˜letters˜and˜digits.Ž¡‘GèM-b‘(‘õáMo•²!v“e›¦fbac“kw“ard˜a˜w“ord.Ž¡‘GèC-l‘(‘õáClear–¦fthe“screen,“reprinš²!ting“the“curren˜t“line“at“the“top.ŽŸˆ‘!GNotice–ôKhoš²!w‘ôLèC-f“ámo˜v˜es“forw˜ard“a‘ôLc˜haracter,‘êwhile“èM-f“ámo˜v˜es‘ôLforw˜ard“a“w˜ord.‘¢It“is‘ôLa“loMÞoseŽ¦‘Gcon•²!v“en“tion–—†that“conš²!trol“k˜eystrok˜es“opMÞerate“on‘—…c˜haracters“while“meta“k˜eystrok˜es“opMÞerate“onŽ¦‘Gw²!ords.ŽŸ8—‘Gëg1.2.3‘d(Readline–íMKilling“CommandsŽŽŸ³3‘GåKilling‘ àátext–0Èmeans›0Çto“delete“the“text˜from“the“line,‘HNbut“to˜sa•²!v“e–0Èit“a•²!w“a“y–0Èfor˜later“use,‘HNusuallyŽ¦‘Gb•²!y›<&åy“anking‘,á(re-inserting)˜it˜bac“k‘<in“to˜the˜line.‘ºe(`Cut'˜and˜`paste'‘<are˜more˜recen“t‘<jargon˜forŽ¦‘G`kill'–¦fand“`y²!ank'.)ŽŸkË‘!GIf–¡°the“description›¡¯for“a“command“sa²!ys“that˜it“`kills'“text,‘¢¡then“y²!ou“can“bMÞe˜sure“that“y²!ouŽ¦‘Gcan–¦fget“the“text“bacš²!k“in“a“dieren˜t“(or“the“same)“place“later.ŽŸkÊ‘!GWhen–Ê›y²!ou›Êœuse“a“kill˜command,‘öthe˜text“is“sa•²!v“ed˜in–Ê›a“åkill-ringá.‘”šAnš²!y“n˜um˜bMÞer‘Êœof“consecutiv˜eŽ¦‘Gkills›¸$sa•²!v“e–¸#all˜of˜the˜killed“text˜together,‘¼“so˜that˜when“y•²!ou˜y“ank˜it˜bac“k,‘¼“y“ou‘¸#get˜it˜all.‘TheŽ¦‘Gkill–âèring›âçis“not˜line“spMÞecic;‘&(the“text“that˜y²!ou“killed˜on“a“previously˜t²!ypMÞed“line˜is“a²!v‘ÿdDailableŽ¦‘Gto–¦fbMÞe“y•²!ank“ed›¦fbac“k˜later,˜when˜y“ou˜are˜t“yping˜another˜line.ŽŽŒ‹\"Ÿò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’&MH3ŽŽŽ ƒ33 ý ÌÍ‘!GHere–¦fis“the“list“of“commands“for“killing“text.Ž¤ø°‘GèC-k‘(‘õáKill–¦fthe“text“from“the“curren²!t“cursor“pMÞosition“to“the“end“of“the“line.Ž¡‘GèM-d‘(‘õáKill–)šfrom“the›)™cursor“to“the“end“of“the˜currenš²!t“w˜ord,‘Bor,‘Bif“bMÞet˜w˜een“w˜ords,‘Bto“theŽ©
33‘Kâ:end–¦fof“the“next“wš²!ord.‘ÝÝW‘ÿeord“bMÞoundaries“are“the“same“as“those“used“b˜y“èM-fá.Ž¡‘GèM-DEL‘¡áKill–«ofrom“the›«ncursor“the“start“of˜the“currenš²!t“w˜ord,–¬±or,“if‘«obMÞet˜w˜een‘«nw˜ords,“to‘«otheŽ¦‘Kâ:start–of“the›previous“w²!ord.‘ÁáW‘ÿeord˜bMÞoundaries“are“the“same“as˜those“used“b²!yŽ¦‘Kâ:èM-bá.Ž¡‘GèC-w‘(‘õáKill–4Ufrom›4Vthe“cursor˜to“the˜previous“whitespace.‘‡«This˜is“dieren²!t˜than“èM-DELŽ¦‘Kâ:ábšMÞecause–¦fthe“w²!ord“b˜oundaries“dier.Ž¡‘!GHere–ýáis“hoš²!w“to“åy˜ank‘§äáthe“text“bac˜k“in˜to“the“line.‘äNY‘ÿeanking‘ýàmeans“to“cop˜y“the“most-Ž¦‘Grecen²!tly-killed–¦ftext“from“the“kill“buer.Ž¡‘GèC-y‘(‘õáY‘ÿeank–¦fthe“most“recenš²!tly“killed“text“bac˜k“in˜to“the“buer“at“the“cursor.Ž¡‘GèM-y‘(‘õáRotate–'!the“kill-ring,‘GPand“y²!ank“the“new“top.‘`Y‘ÿeou“can‘'"only“do“this“if“the“priorŽ¦‘Kâ:command–¦fis“èC-y“áor“èM-yá.Ž¤Å}‘Gëg1.2.4‘d(Readline‘íMArgumen–átsŽŽŸ³3‘GáY‘ÿeou–±‰can›±ˆpass“n•²!umeric˜argumen“ts–±‰to“Readline˜commands.‘ÿESometimes“the˜argumen²!t“actsŽ¦‘Gas–Ѥa“repMÞeat›Ñ£coun²!t,‘sother“times“it“is˜the“äsign‘¨¯áof“the˜argumenš²!t“that“is“signican˜t.‘_–If“y˜ouŽ¦‘Gpass–a‘negativš²!e“argumen˜t“to“a‘command“whic˜h“normally“acts‘in“a“forw˜ard“direction,‘ìthatŽ¦‘Gcommand–=Üwill“act“in“a›=Ûbac•²!kw“ard–=Üdirection.‘¤?F‘ÿeor“example,‘c¹to“kill“text˜bac²!k“to“the“start“ofŽ¦‘Gthe–¦fline,“yš²!ou“migh˜t“t˜ypMÞe“`âM--“C-ká'.ŽŸò‘!GThe›bOgeneral‘bPw•²!a“y˜to‘bPpass˜n“umeric‘bPargumen“ts˜to–bPa˜command“is˜to“t²!ypMÞe˜meta“digits˜bMÞeforeŽ¦‘Gthe–´command.‘RIf‘´Žthe“rst“`digit'“tš²!ypMÞed“is“a“min˜us“sign–´Ž(`â-á'),‘¸then“the–´sign“of“the“argumen˜tŽ¦‘Gwill––ŠbMÞe‘–‰negativš²!e.‘®HOnce“y˜ou“ha˜v˜e‘–‰t˜ypMÞed“one“meta›–‰digit“to“get˜the“argumenš²!t“started,‘Ò’y˜ouŽ¦‘Gcan–vòt²!ypMÞe›vñthe“remainder“of“the˜digits,‘€pand“then˜the“command.‘ÎF‘ÿeor˜example,‘€pto“giv²!e˜the“èC-dŽ¦‘Gácommand–~Gan‘~Hargumenš²!t“of“10,‘´@y˜ou“could‘~Ht˜ypMÞe“`âM-1–¦f0“C-dá',‘´?whic˜h›~Hwill–~Gdelete“the˜next“tenŽ¦‘Gc²!haracters–¦fon“the“input“line.Ž¡‘Gëg1.2.5‘d(Searc–áhing–íMfor“Commands“in“the“HistoryŽŽŸ³3‘GáReadline–ŽÆpro²!vides›ŽÇcommands“for˜searc²!hing“through˜the“command˜history“for˜lines“con²!tainingŽ¦‘Ga–¦fspMÞecied“string.‘ÝÝThere“are“t•²!w“o›¦fsearc“h˜moMÞdes:‘ÝÝåincremen“tal‘¸áand˜ånon-incremen“talá.ŽŸñ‘!GIncremen•²!tal›¸searc“hes‘·b•MÞegin˜b“efore–·the˜user“has˜nished˜t²!yping“the˜searc²!h“string.‘­£As˜eac²!hŽ¦‘Gcš²!haracter–@|of“the“searc˜h“string“is“t˜ypMÞed,‘gReadline“displa˜ys“the“next“en˜try“from“the“historyŽ¦‘Gmatcš²!hing–â+the“string“t˜ypMÞed‘â*so“far.‘œtAn“incremen˜tal“searc˜h“requires“only‘â*as“man˜y“c˜haracters“asŽ¦‘Gneeded–tõto›tônd“the˜desired“history˜en²!try–ÿe.‘ÍbT“o˜searc•²!h‘tõbac“kw“ard˜in–tõthe˜history“for˜a“particularŽ¦‘Gstring,‘0t•²!ypMÞe›‰cèC-rá.‘Ô1T“yping˜èC-s˜ásearc“hes‘‰bforw“ard˜through˜the–‰bhistory‘ÿe.‘Ô2The“c•²!haracters˜presen“tŽ¦‘Gin–^the“v›ÿdDalue‘_of“the“âisearch-terminators“áv˜ariable“are“used‘_to“terminate“an“incremen²!talŽ¦‘Gsearc²!h.‘tIf–Østhat“v›ÿdDariable“has“not“bMÞeen“assigned“a“v˜alue,‘$öthe“âESC“áand“èC-J“ác²!haracters“willŽ¦‘Gterminate–Can“incremenš²!tal“searc˜h.‘ 3uèC-g“áwill“abMÞort“an“incremen˜tal‘Dsearc˜h“and“restore“theŽ¦‘Goriginal–xÓline.‘άWhen“the“searcš²!h“is“terminated,‘ñthe“history“en˜try“con˜taining“the“searc˜h“stringŽ¦‘GbMÞecomes–¦fthe“curren²!t“line.ŽŸò‘!GT‘ÿeo–¹¾nd‘¹½other“matcš²!hing“en˜tries“in‘¹½the“history“list,‘¾“t˜ypMÞe“èC-r“áor‘¹½èC-s“áas“appropriate.‘äThisŽ¦‘Gwill›#“searc•²!h‘#”bac“kw“ard˜or˜forw“ard–#”in˜the˜history“for˜the˜next“en•²!try˜matc“hing˜the‘#”searc“h˜stringŽŽŒ‹h‘Ÿò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’&MH4ŽŽŽ ƒ33 ý ÌÍ‘Gt•²!ypMÞed‘ˆ5so›ˆ4far.‘ƒIAn“y˜other‘ˆ5k“ey˜sequence–ˆ5bMÞound˜to“a˜Readline“command˜will“terminate˜theŽ¤
33‘Gsearcš²!h–and“execute“that–žcommand.‘«DF‘ÿeor“instance,‘,øa–âRET“áwill“terminate‘žthe“searc˜h“and“acceptŽ¡‘Gthe–…©line,‘Œ6thereb²!y“executing“the›…ªcommand“from“the˜history“list.‘ÒóA‘…¡mo•²!v“emen“t˜command‘…©willŽ¡‘Gterminate–¦fthe“searcš²!h,“mak˜e“the“last“line“found“the“curren˜t“line,“and“bMÞegin“editing.ŽŸô^‘!GReadline–.”rememš²!bMÞers“the‘.•last“incremen˜tal“searc˜h“string.‘vhIf“t˜w˜o“èC-rás‘.•are“t˜ypMÞed“withoutŽ¡‘Gan•²!y›aèin“terv“ening˜c“haracters‘aédening˜a˜new˜searc“h‘aéstring,‘Èan“y˜remem“bMÞered‘aésearc“h˜string˜isŽ¡‘Gused.Ž©ô]‘!GNon-incremen•²!tal›–searc“hes˜read˜the˜en“tire˜searc“h‘—string˜bMÞefore˜starting˜to˜searc“h˜forŽ¡‘Gmatcš²!hing–Àhistory‘¿lines.‘        FêThe“searc˜h“string‘¿ma˜y“bMÞe“t˜ypMÞed‘¿b˜y“the“user›¿or“bMÞe“part˜of“theŽ¡‘Gcon•²!ten“ts–¦fof“the“curren²!t“line.ŽŸ¡À‘Gë]1.3‘™Readline–f@Init“FileŽŽŸ33‘GáAlthough–AÉthe“Readline“library›AÈcomes“with“a“set“of“Emacs-lik•²!e˜k“eybindings–AÉinstalled“b²!yŽ¡‘Gdefault,‘it–øKis“pMÞossible“to“use“a“dierenš²!t‘øJset“of“k˜eybindings.‘£ÔAn˜y“user“can“customize“programsŽ¡‘Gthat–Tªuse“Readline“bš²!y“putting“commands“in“an“åinputrc‘þ®ále,‘À;con˜v˜en˜tionally“in“his“homeŽ¡‘Gdirectory‘ÿe.‘–(The–ÏEname“of“this“le“is“takš²!en“from“the“v‘ÿdDalue“of“the“en˜vironmen˜t“v‘ÿdDariable“âINPUTRCá.Ž¡‘GIf–ž®that“v‘ÿdDariable“is“unset,‘ :the“default“is“â~/.inputrcá.‘ÛJIf“that“le‘ž¯došMÞes“not“exist“or“cannot“b˜eŽ¡‘Gread,–¦fthe“ultimate“default“is“â/etc/inputrcá.Ž¦‘!GWhen–Ž\a›Ž[program“whic²!h˜uses“the˜Readline“library˜starts“up,‘“*the“init˜le“is˜read,‘“*and“theŽ¡‘Gk²!ey–¦fbindings“are“set.ŽŸô^‘!GIn–8âaddition,‘NÉthe›8áâC-x‘¦fC-r“ácommand˜re-reads“this“init˜le,‘NÉth²!us“incorpMÞorating˜anš²!y“c˜hangesŽ¡‘Gthat–¦fyš²!ou“migh˜t“ha˜v˜e“made“to“it.ŽŸÁ+‘Gëg1.3.1‘d(Readline–íMInit“File“Syn–átaxŽŽŸ³3‘GáThere–íoare“only›ína“few“basic“constructs“allo•²!w“ed–íoin˜the“Readline“init“le.‘²÷Blank“lines“areŽ¡‘Gignored.‘­zLines–ëšbšMÞeginning“with“a“`â#á'“are‘ë›commen²!ts.‘­yLines“b˜eginning“with‘ë›a“`â$á'“indicateŽ¡‘Gconditional–ù0constructs“(see“Section“1.3.2“[Conditional‘ù1Init“Constructs],‘Mâpage“12).‘Ö;OtherŽ¡‘Glines–¦fdenote“v‘ÿdDariable“settings“and“k²!ey“bindings.ŽŸÔò‘GV‘ÿeariable‘¦fSettingsŽ¡‘Kâ:Y‘ÿeou–Ú½can“mošMÞdify“the“run-time“b˜ehaš²!vior“of‘Ú¼Readline“b˜y“altering“the“v‘ÿdDalues“ofŽ¡‘Kâ:v‘ÿdDariables–din›eReadline“using“the“âset˜ácommand“within“the˜init“le.‘ØThe“syn²!taxŽ¡‘Kâ:is‘¦fsimple:ŽŸÉ‘hÊâset–¿ªèvariable“valueŽ©È‘Kâ:áHere,–XÞfor›E}example,“is˜ho•²!w‘E|to˜c“hange–E|from˜the“default˜Emacs-likš²!e“k˜ey‘E}binding“toŽ¡‘Kâ:use–¦fâvi“áline“editing“commands:Ž¦‘hÊâset–¿ªediting-mode“viŽ¦‘Kâ:áV‘ÿeariable–4Ynames›4Xand“v‘ÿdDalues,–WÕwhere˜appropriate,“are–4Yrecognized˜without“regardŽ¡‘Kâ:to–¦fcase.‘ÝÝUnrecognized“v‘ÿdDariable“names“are“ignored.ŽŸÉ‘Kâ:BoMÞolean–&©v‘ÿdDariables›&¨(those“that˜can“bMÞe“set˜to“on˜or“o‘Ú)“are˜set“to“on˜if“the˜v‘ÿdDalue“isŽ¡‘Kâ:n•²!ull›éJor‘éIempt“y‘ÿe,‘åon˜á(case-insensitiv“e),‘or˜1.‘žÓAn“y˜other˜v‘ÿdDalue–éIresults˜in“the˜v‘ÿdDariableŽ¡‘Kâ:bMÞeing–¦fset“to“o.Ž¦‘Kâ:A–¦fgreat“deal“of“run-time“bMÞehaš²!vior“is“c˜hangeable“with“the“follo˜wing“v‘ÿdDariables.ŽŽŒ‹y  Ÿò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’&MH5ŽŽŽ ƒ33 ý ÌÍ‘Kâ:âbell-styleŽ¤
33’…³-áCon²!trols–Fwhat›FhappMÞens“when˜Readline“w•²!an“ts˜to–Fring˜the“termi-Ž¡’…³-nal–xzbMÞell.‘TIf“set›xyto“`ânoneá',‘¬þReadline“nev²!er˜rings“the˜bMÞell.‘TIf˜set“toŽ¡’…³-`âvisibleá',‘
        !            70: dReadline–öeuses›öda“visible˜bMÞell“if˜one“is˜a²!v‘ÿdDailable.‘ÍÙIf˜set“toŽ¡’…³-`âaudibleá'›Ù(the–Údefault),‘¶5Readline“attempts˜to˜ring“the˜terminal'sŽ¡’…³-bMÞell.Ž©‘Kâ:âbind-tty-special-charsŽ¡’…³-áIf–5>set›5?to“`âoná'˜(the“default),‘XôReadline“attempts˜to“bind˜the“con²!trolŽ¡’…³-cš²!haracters–{wtreated‘{vspMÞecially“b˜y“the‘{vk˜ernel's“terminal“driv˜er‘{vto“theirŽ¡’…³-Readline‘¦fequiv‘ÿdDalen²!ts.Ž¦‘Kâ:âblink-matching-parenŽ¡’…³-áIf–Yåset›Yäto“`âoná',‘†ÄReadline˜attempts“to˜brie
y“mo•²!v“e˜the–Yåcursor˜to“anŽ¡’…³-opMÞening–Âparenš²!thesis‘Áwhen“a“closing“paren˜thesis‘Áis“inserted.‘òðTheŽ¡’…³-default–¦fis“`âoffá'.ŽŸ‘Kâ:âcolored-completion-prefixŽ¡’…³-áIf–‡set“to“`âoná',›Wwhen‘‡listing“completions,˜Readline“displa²!ys“the“com-Ž¡’…³-mon–¤prex›£of“the˜set“of˜pMÞossible“completions˜using“a˜dieren²!t“color.Ž¡’…³-The–Ícolor“denitions“are“tak²!en“from“the“v‘ÿdDalue“of“the“âLS_COLORSŽ¡’…³-áen•²!vironmen“t–¦fv‘ÿdDariable.‘ÝÝThe“default“is“`âoffá'.Ž¦‘Kâ:âcolored-statsŽ¡’…³-áIf–0*set›0+to“`âoná',‘GÐReadline“displa²!ys˜pMÞossible“completions˜using“dieren²!tŽ¡’…³-colors–´•to›´”indicate“their˜le“t²!ypMÞe.‘iThe˜color“denitions˜are“tak²!enŽ¡’…³-from–õ;the›õ<v‘ÿdDalue“of“the“âLS_COLORS˜áen•²!vironmen“t–õ;v‘ÿdDariable.‘¢ÏThe“defaultŽ¡’…³-is‘¦f`âoffá'.Ž¦‘Kâ:âcomment-beginŽ¡’…³-áThe–}3string›}4to“insert˜at“the˜bMÞeginning“of˜the“line˜when“theŽ¡’…³-âinsert-comment–¦fácommand“is“executed.‘ÝÝThe“default“v‘ÿdDalue“is“â"#"á.Ž¦‘Kâ:âcompletion-display-widthŽ¡’…³-áThe›ÿn•²!um“bMÞer˜of–ÿscreen˜columns˜used˜to“displa•²!y˜pMÞossible˜matc“hesŽ¡’…³-when–{»pMÞerforming›{ºcompletion.‘ϤThe“v‘ÿdDalue“is˜ignored“if“it“is˜less“thanŽ¡’…³-0–%8or“greater“than›%9the“terminal“screen“width.‘²ÎA‘%v‘ÿdDalue˜of“0“will“causeŽ¡’…³-matcš²!hes–¦fto“bMÞe“displa˜y˜ed“one“pMÞer“line.‘ÝÝThe“default“v‘ÿdDalue“is“-1.ŽŸ‘Kâ:âcompletion-ignore-caseŽ¡’…³-áIf–IÓset›IÔto“`âoná',‘\WReadline˜pMÞerforms“lename“matc²!hing˜and“completionŽ¡’…³-in–¦fa“case-insensitiv²!e“fashion.‘ÝÝThe“default“v‘ÿdDalue“is“`âoffá'.Ž¦‘Kâ:âcompletion-map-caseŽ¡’…³-áIf–©ûset‘©úto“`âoná',›Üvand“åcompletion-ignore-case‘G&áis“enabled,˜Readline“treatsŽ¡’…³-hš²!yphens–´e(`â-á')“and“underscores“(`â_á')“as“equiv‘ÿdDalen˜t“when“pMÞerformingŽ¡’…³-case-insensitiv•²!e›ZÑlename‘ZÒmatc“hing˜and‘ZÒcompletion.‘        ûThe˜defaultŽ¡’…³-v‘ÿdDalue–¦fis“`âoffá'.Ž¦‘Kâ:âcompletion-prefix-display-lengthŽ¡’…³-áThe–ÂŒlength›‹in“c²!haracters˜of“the˜common“prex˜of“a˜list“of˜pMÞossibleŽ¡’…³-completions–Sthat›Ris“displa•²!y“ed–Swithout“moMÞdication.‘ÖWhen“set˜to“aŽŽŒ‹‡  Ÿò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’&MH6ŽŽŽ ƒ33 ý ÌÍ’…³-v‘ÿdDalue–ègreater›éthan“zero,‘0hcommon˜prexes“longer˜than“this˜v‘ÿdDalue“areŽ¤
33’…³-replaced–¦fwith“an“ellipsis“when“displa²!ying“pMÞossible“completions.Ž©Ûo‘Kâ:âcompletion-query-itemsŽ¡’…³-áThe›%Ðn•²!um“b•MÞer‘%Ïof˜p“ossible˜completions–%Ïthat˜determines˜when“the˜userŽ¡’…³-is–
ask²!ed›whether“the˜list“of˜pšMÞossibilities“should“b˜e‘displa•²!y“ed.‘        AÓIfŽ¡’…³-the›|1n•²!um“b•MÞer‘|2of˜p“ossible˜completions˜is–|2greater˜than˜or˜equal“to˜thisŽ¡’…³-v‘ÿdDalue,‘^<Readline›Fwill–Eask“whether“or“not“the˜user“wishes“to“viewŽ¡’…³-them;‘åóotherwise,‘Û\they›ÐÅare–ÐÄsimply“listed.‘\ùThis“v‘ÿdDariable“m²!ust˜bMÞe“setŽ¡’…³-to–›Yan››Zin²!teger“v‘ÿdDalue˜greater“than˜or“equal˜to“0.‘¼¸A‘›negativ²!e“v‘ÿdDalueŽ¡’…³-means–¦fReadline“should“nev²!er“ask.‘ÝÝThe“default“limit“is“â100á.ŽŸÛn‘Kâ:âconvert-metaŽ¡’…³-áIf–¦set“to›¦ž`âoná',‘ÙÅReadline“will˜con•²!v“ert›¦c“haracters˜with˜the‘¦žeigh“th˜bit˜setŽ¡’…³-to–Óùan“çasci>Ki“ákš²!ey“sequence“b˜y“stripping“the“eigh˜th“bit“and“prexingŽ¡’…³-an–íÎâESC“ác•²!haracter,‘¹con“v“erting–íÎthem“to‘íÍa“meta-prexed“k²!ey“sequence.Ž¡’…³-The–N½default›N¾v‘ÿdDalue“is“`âoná',‘`Fbut“will“bMÞe˜set“to“`âoffá'˜if“the“loMÞcale˜is“oneŽ¡’…³-that–¦fconš²!tains“eigh˜t-bit“c˜haracters.Ž¦‘Kâ:âdisable-completionŽ¡’…³-áIf–gset“to–g`âOná',‘—?Readline“will–ginhibit“w²!ord“completion.‘èCompletionŽ¡’…³-cš²!haracters–!Ÿwill“bMÞe‘!žinserted“in˜to“the“line“as“if‘!žthey“had“bšMÞeen“mapp˜edŽ¡’…³-to–¦fâself-insertá.‘ÝÝThe“default“is“`âoffá'.Ž¦‘Kâ:âecho-control-charactersŽ¡’…³-áWhen–¡îset›¡ïto“`âoná',‘¢Óon˜opMÞerating“systems˜that“indicate˜they“suppMÞortŽ¡’…³-it,‘Òýreadline‘Êecš²!hoMÞes–Êa“c˜haracter›ÊcorrespMÞonding“to“a˜signal“generatedŽ¡’…³-from–¦fthe“k²!eybMÞoard.‘ÝÝThe“default“is“`âoná'.Ž¦‘Kâ:âediting-modeŽ¡’…³-áThe–rÖâediting-mode“áv‘ÿdDariable“conš²!trols“whic˜h‘r×default“set“of“k˜ey“bind-Ž¡’…³-ings›?is–>used.‘§&By“default,‘#Readline˜starts˜up“in˜Emacs“editing˜moMÞde,Ž¡’…³-where›~«the‘~ªk•²!eystrok“es˜are–~ªmost˜similar˜to“Emacs.‘ПThis“v‘ÿdDariable˜canŽ¡’…³-bMÞe–¦fset“to“either“`âemacsá'“or“`âviá'.ŽŸÛn‘Kâ:âemacs-mode-stringŽ¡’…³-áIf–·the›¶åsho²!w-moMÞde-in-prompt‘I·áv‘ÿdDariable“is˜enabled,‘&Kthis“string˜is“dis-Ž¡’…³-pla•²!y“ed–ÃRimmediately›ÃQbMÞefore“the˜last“line“of˜the“primary˜prompt“whenŽ¡’…³-emacs–™Tediting›™UmoMÞde“is˜activ²!e.‘„,The˜v‘ÿdDalue“is“expanded˜lik²!e“a˜k²!ey“bind-Ž¡’…³-ing,‘,êso–Šthe›‹standard“set˜of“meta-˜and“con²!trol˜prexes“and˜bac²!kslashŽ¡’…³-escapšMÞe–Þ?sequences“is“a²!v‘ÿdDailable.‘›&Use“the“`â\1á'“and‘Þ@`â\2á'“escap˜es“to“b˜eginŽ¡’…³-and–„end›„sequences“of˜non-prinš²!ting“c˜haracters,‘»‰whic˜h“can‘„bMÞe“usedŽ¡’…³-to–zÕem²!bMÞed›zÔa“terminal˜conš²!trol“sequence“in˜to›zÔthe“moMÞde˜string.‘[)TheŽ¡’…³-default–¦fis“`â@á'.Ž¦‘Kâ:âenable-bracketed-pasteŽ¡’…³-áWhen–ò€set“to“`âOná',‘{Readline“will“congure“the‘òterminal“in“a“w•²!a“y‘ò€thatŽ¡’…³-will–g"enable“it“to“insert“eacš²!h“paste‘g#in˜to“the“editing“buer“as“a“singleŽ¡’…³-string–ëàof“cš²!haracters,‘ý>instead“of“treating“eac˜h‘ëßc˜haracter“as“if“it“hadŽ¡’…³-bšMÞeen–ýread‘ýfrom“the“k²!eyb˜oard.‘á¿This“can“prev•²!en“t‘ýpasted‘ýc“haractersŽ¡’…³-from–¦fbMÞeing“in²!terpreted“as“editing“commands.‘ÝÝThe“default“is“`âOná'.ŽŽŒ‹’õŸò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’&MH7ŽŽŽ ƒ33 ý ÌÍ‘Kâ:âenable-keypadŽ¤
33’…³-áWhen–Ìïset“to“`âoná',‘ømReadline“will“try‘Ìîto“enable“the“application“k²!eypadŽ¡’…³-when–1Ûit›1Üis“called.‘·Some“systems“need˜this“to˜enable“the˜arroš²!w“k˜eys.Ž¡’…³-The–¦fdefault“is“`âoffá'.Ž©Ûo‘Kâ:âenable-meta-keyŽ¡’…³-áWhen–ÇJset›ÇIto“`âoná',‘‚Readline˜will“try“to˜enable“an²!y˜meta“moMÞdierŽ¡’…³-k²!ey–Ÿthe› terminal“claims“to˜suppMÞort“when“it“is˜called.‘û‰On“man²!yŽ¡’…³-terminals,‘^=the–9ymeta“kš²!ey“is“used“to“send“eigh˜t-bit“c˜haracters.‘—TheŽ¡’…³-default–¦fis“`âoná'.ŽŸÛn‘Kâ:âexpand-tildeŽ¡’…³-áIf–Pset“to›P`âoná',‘a[tilde“expansion“is“pMÞerformed˜when“Readline“attemptsŽ¡’…³-w²!ord–¦fcompletion.‘ÝÝThe“default“is“`âoffá'.Ž¦‘Kâ:âhistory-preserve-pointŽ¡’…³-áIf–œset“to›`âoná',‘Zéthe“history“coMÞde“attempts“to“place˜the“pMÞoin²!t“(theŽ¡’…³-curren²!t–;kcursor›;jpMÞosition)“at˜the“same“loMÞcation˜on“eac²!h˜history“lineŽ¡’…³-retriev²!ed–^Éwith“âprevious-history“áor‘^Êânext-historyá.‘The“defaultŽ¡’…³-is‘¦f`âoffá'.Ž¦‘Kâ:âhistory-sizeŽ¡’…³-áSet–°ÿthe“maxim•²!um‘°þn“um“bMÞer–°ÿof“history“enš²!tries“sa˜v˜ed‘°þin“the“historyŽ¡’…³-list.‘óIf–mset“to“zero,‘(oanš²!y“existing“history“en˜tries“are‘ndeleted“and“noŽ¡’…³-new–Ïqenš²!tries“are–Ïpsa˜v˜ed.‘XþIf“set–Ïqto“a“v‘ÿdDalue‘Ïpless“than“zero,‘Ù³the“n˜um˜bMÞerŽ¡’…³-of–ª»history›ª¼en²!tries“is˜not“limited.‘êÝBy˜default,‘«Ñthe“n•²!um“bMÞer˜of‘ª»historyŽ¡’…³-en²!tries–ôbis“not›ôalimited.‘ÇÑIf“an˜attempt“is“made“to˜set“åhistory-size‘‘iátoŽ¡’…³-a–ÿònon-nš²!umeric“v‘ÿdDalue,‘Vthe“maxim˜um“n˜um˜bMÞer“of‘ÿóhistory“en˜tries“willŽ¡’…³-bMÞe–¦fset“to“500.Ž¦‘Kâ:âhorizontal-scroll-modeŽ¡’…³-áThis–NËv‘ÿdDariable›NÌcan“bMÞe“set“to˜either“`âoná'“or“`âoffá'.‘×
Setting“it˜to“`âoná'Ž¡’…³-means–$jthat“the“text“of“the‘$ilines“bMÞeing“edited“will“scroll“horizon²!tallyŽ¡’…³-on–ÎÁa›ÎÂsingle“screen“line˜when“they“are“longer˜than“the“width˜of“theŽ¡’…³-screen,‘V·instead–BËof“wrapping“on²!to‘BÌa“new“screen“line.‘¼ªThis“v‘ÿdDariable“isŽ¡’…³-automatically–‚“set“to›‚’`âoná'“for“terminals“of˜heigh²!t“1.‘ÑìBy“default,‘‰½thisŽ¡’…³-v‘ÿdDariable–¦fis“set“to“`âoffá'.ŽŸÛn‘Kâ:âinput-metaŽ¡’…³-áIf–¾Ìset›¾Ëto“`âoná',‘ÄåReadline˜will“enable˜eigh²!t-bit“input˜(it“will˜not“clearŽ¡’…³-the–Ã"eighš²!th“bit“in‘Ã!the“c˜haracters“it“reads),‘
        !            71: Pregardless“of“what“theŽ¡’…³-terminal–C-claims“it“can“suppMÞort.‘  ´3The“default“v‘ÿdDalue“is“`âoffá',‘ª^butŽ¡’…³-Readline–Û‚will“set“it“to“`âoná'‘Ûif“the“loMÞcale“conš²!tains“eigh˜t-bit“c˜haracters.Ž¡’…³-The–¦fname“âmeta-flag“áis“a“synon²!ym“for“this“v‘ÿdDariable.Ž¦‘Kâ:âisearch-terminatorsŽ¡’…³-áThe–5Ñstring›5Òof“c²!haracters˜that“should“terminate˜an“incremen²!talŽ¡’…³-searcš²!h–ú|without“subsequen˜tly“executing“the“c˜haracter“as“a“commandŽ¡’…³-(see–Z±Section“1.2.5“[Searc²!hing],‘ÇÃpage“3).‘        ú¿If“this“v‘ÿdDariable“has“notŽ¡’…³-bMÞeen–Bggivš²!en“a“v‘ÿdDalue,‘igthe“c˜haracters‘BfâESC“áand“èC-J“áwill“terminate“anŽ¡’…³-incremen•²!tal‘¦fsearc“h.ŽŽŒ‹ »Ÿò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’&MH8ŽŽŽ ƒ33 ý ÌÍ‘Kâ:âkeymap‘R÷áSets–¿TReadline's“idea“of“the‘¿Ucurrenš²!t“k˜eymap“for“k˜ey“bindingŽ¤
33’…³-commands.‘‚¨Built-in–ÝTâkeymap›ÝUánames“are˜âemacsá,‘+âemacs-standardá,Ž¡’…³-âemacs-metaá,–0âemacs-ctlxá,“âviá,‘0âvi-moveá,“âvi-commandá,“andŽ¡’…³-âvi-insertá.‘
        !            72: 2âvi–aØáis“equiv‘ÿdDalen²!t“to“âvi-command“á(âvi-move‘a×áis“also“aŽ¡’…³-synon•²!ym);‘úaâemacs›‰áis‘‰
equiv‘ÿdDalen“t˜to‘‰
âemacs-standardá.‘…ÔApplicationsŽ¡’…³-ma²!y–ºadd›ºadditional“names.‘èThe“default“v‘ÿdDalue˜is“âemacsá.‘èThe“v‘ÿdDalueŽ¡’…³-of–¦fthe“âediting-mode“áv‘ÿdDariable“also“aects“the“default“k²!eymap.Ž©Ûo‘Kâ:âkeyseq-timeoutŽ¡’…³-áSpMÞecies–„the“duration“Readline“will“wš²!ait‘…for“a“c˜haracter“when“read-Ž¡’…³-ing–—Ían‘—Ìamš²!biguous“k˜ey“sequence›—Ì(one“that˜can“form“a˜complete“k²!eyŽ¡’…³-sequence–ý-using›ý.the“input˜read“so“far,‘ßor˜can“tak²!e˜additional“inputŽ¡’…³-to–óKcomplete“a“longer“kš²!ey“sequence).‘ÄŒIf“no“input“is“receiv˜ed“withinŽ¡’…³-the–*átimeout,‘‹ÿReadline›*àwill“use“the“shorter“but˜complete“k²!ey“se-Ž¡’…³-quence.‘«éReadline›‹uses–Šthis“v‘ÿdDalue“to˜determine“whether“or˜not“inputŽ¡’…³-is–­«a²!v‘ÿdDailable›­ªon“the˜curren²!t“input˜source“(ârl_instream˜áb²!y“default).Ž¡’…³-The–        ˜v›ÿdDalue“is“spMÞecied“in“milliseconds,‘(ôso“a“v˜alue“of“1000“means“thatŽ¡’…³-Readline–®Äwill›®Ãw²!ait“one˜second“for“additional˜input.‘‹RIf“this˜v‘ÿdDariable“isŽ¡’…³-set–Yàto›Yßa“v‘ÿdDalue˜less“than˜or“equal“to˜zero,‘i.or˜to“a˜non-n²!umeric“v‘ÿdDalue,Ž¡’…³-Readline–ƒûwill‘ƒúwš²!ait“un˜til“another“k˜ey›ƒúis“pressed“to“decide˜whicš²!h“k˜eyŽ¡’…³-sequence–¦fto“complete.‘ÝÝThe“default“v‘ÿdDalue“is“â500á.ŽŸÛn‘Kâ:âmark-directoriesŽ¡’…³-áIf––¿set“to›–¾`âoná',‘ÒÕcompleted“directory“names“ha•²!v“e˜a––¿slash“appMÞended.Ž¡’…³-The–¦fdefault“is“`âoná'.Ž¦‘Kâ:âmark-modified-linesŽ¡’…³-áThis–N”v‘ÿdDariable,‘xŸwhen“set“to“`âoná',‘x causes“Readline“to“displa²!y“an“as-Ž¡’…³-terisk–š(`â*á')›™at“the“start˜of“history˜lines“whicš²!h“ha˜v˜e‘™bšMÞeen“mo˜died.Ž¡’…³-This–¦fv‘ÿdDariable“is“`âoffá'“b²!y“default.Ž¦‘Kâ:âmark-symlinked-directoriesŽ¡’…³-áIf–$Ôset›$Óto“`âoná',‘mcompleted“names“whic²!h˜are“sym²!bMÞolic˜links“toŽ¡’…³-directories›\Ëha•²!v“e˜a˜slash˜appMÞended‘\Ì(sub‘›»ject˜to˜the˜v‘ÿdDalue˜ofŽ¡’…³-âmark-directoriesá).‘ÝÝThe–¦fdefault“is“`âoffá'.Ž¦‘Kâ:âmatch-hidden-filesŽ¡’…³-áThis–«sv‘ÿdDariable,›Ý£when“set“to“`âoná',˜causes“Readline“to‘«rmatc²!h“les“whoseŽ¡’…³-names–MÍbšMÞegin“with“a“`â.á'“(hidden“les)“when“p˜erforming“lenameŽ¡’…³-completion.‘ÎþIf–öÆset“to–öÇ`âoffá',‘JÝthe“leading–öÆ`â.á'“mš²!ust“bMÞe‘öÇsupplied“b˜yŽ¡’…³-the–Luser›Min“the“lename“to˜bMÞe“completed.‘9This“v‘ÿdDariable“is˜`âoná'“b²!yŽ¡’…³-default.ŽŸÛn‘Kâ:âmenu-complete-display-prefixŽ¡’…³-áIf–ßset“to‘Þ`âoná',‘ýmenš²!u“completion“displa˜ys“the“common‘Þprex“of“theŽ¡’…³-list–ƒXof›ƒYpMÞossible“completions˜(whicš²!h“ma˜y‘ƒYbMÞe“empt˜y)‘ƒYbMÞefore“cyclingŽ¡’…³-through–¦fthe“list.‘ÝÝThe“default“is“`âoffá'.Ž¦‘Kâ:âoutput-metaŽ¡’…³-áIf–Aset“to“`âoná',‘gªReadline“will“displaš²!y“c˜haracters“with“the“eigh˜th“bitŽ¡’…³-set–`!directly“rather“than“as“a‘`"meta-prexed“escapMÞe“sequence.‘TheŽŽŒ‹       ­0Ÿò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’&MH9ŽŽŽ ƒ33 ý ÌÍ’…³-default–kis“`âoffá',‘0Ðbut“Readline“will“set“it“to‘j`âoná'“if“the“loMÞcale“con²!tainsŽ¤
33’…³-eigh•²!t-bit‘¦fc“haracters.Ž©¾-‘Kâ:âpage-completionsŽ¡’…³-áIf–ôset“to‘ó`âoná',‘,×Readline“uses“an“inš²!ternal“âmoreá-lik˜e‘ópager“to“displa˜yŽ¡’…³-a–ã¹screenful“of“pMÞossible‘ã¸completions“at“a“time.‘•ÕThis“v‘ÿdDariable“is“`âoná'Ž¡’…³-b²!y‘¦fdefault.Ž¦‘Kâ:âprint-completions-horizontallyŽ¡’…³-áIf–àset›àto“`âoná',‘»Readline˜will“displa²!y“completions“with˜matc²!hes“sortedŽ¡’…³-horizonš²!tally–8Ôin“alphabMÞetical“order,‘orather“than“do˜wn“the“screen.Ž¡’…³-The–¦fdefault“is“`âoffá'.Ž¦‘Kâ:ârevert-all-at-newlineŽ¡’…³-áIf–Œêset“to“`âoná',‘’Readline“will“undo“all‘Œëc²!hanges“to“history“lines“bMÞeforeŽ¡’…³-returning–qXwhen›qYâaccept-line“áis˜executed.‘Ì-By˜default,‘{õhistory“linesŽ¡’…³-ma²!y–¦bšMÞe“mo˜died“and“retain“individual‘¥undo“lists“across“calls“toŽ¡’…³-âreadlineá.‘ÝÝThe–¦fdefault“is“`âoffá'.ŽŸ¾,‘Kâ:âshow-all-if-ambiguousŽ¡’…³-áThis–™]alters“the“default“bMÞeha²!vior“of“the‘™\completion“functions.‘Ù…If“setŽ¡’…³-to–L`âoná',‘^.wš²!ords“whic˜h‘L ha˜v˜e“more“than›L one“pMÞossible˜completion“causeŽ¡’…³-the–­matc²!hes“to“bšMÞe“listed“immediately‘­instead“of“ringing“the“b˜ell.Ž¡’…³-The–¦fdefault“v‘ÿdDalue“is“`âoffá'.Ž¦‘Kâ:âshow-all-if-unmodifiedŽ¡’…³-áThis–¤‰alters“the›¤Šdefault“bMÞeha²!vior“of“the“completion˜functions“in“aŽ¡’…³-fashion–€similar“to“åsho•²!w-all-if-am“biguousá.‘«If–€set“to“`âoná',‘-®wš²!ords“whic˜hŽ¡’…³-ha•²!v“e–²Ömore“than“one“pšMÞossible‘²×completion“without“an²!y“p˜ossible“par-Ž¡’…³-tial–Ãcompletion›Ä(the“pMÞossible˜completions“don't“share˜a“commonŽ¡’…³-prex)–¢cause›¢the“matc²!hes“to˜bMÞe“listed“immediately“instead˜of“ring-Ž¡’…³-ing–¦fthe“bMÞell.‘ÝÝThe“default“v‘ÿdDalue“is“`âoffá'.Ž¦‘Kâ:âshow-mode-in-promptŽ¡’…³-áIf–êset›êto“`âoná',‘¸add˜a“string“to˜the“bMÞeginning“of“the˜prompt“indicatingŽ¡’…³-the–ûûediting“moMÞde:‘‰emacs,›`vi“command,˜or“vi“insertion.‘Þ›The“moMÞdeŽ¡’…³-strings–rare‘ruser-settable“(e.g.,‘å™åemacs-moMÞde-string‘ðá).‘
        !            73: BYThe“defaultŽ¡’…³-v‘ÿdDalue–¦fis“`âoffá'.Ž¦‘Kâ:âskip-completed-textŽ¡’…³-áIf–ñjset“to“`âoná',‘+this‘ñialters“the“default“completion“bMÞeha²!vior“when“in-Ž¡’…³-serting–}=a‘}<single“matcš²!h“in˜to“the‘}<line.‘Ð%It's“only“activ˜e‘}<when“pMÞerform-Ž¡’…³-ing–'écompletion›'èin“the˜middle“of˜a“w²!ord.‘bdIf“enabled,‘HHreadline“doMÞesŽ¡’…³-not–à.insert›à-c²!haracters“from˜the“completion˜that“matc•²!h˜c“haractersŽ¡’…³-after–lpMÞoinš²!t“in“the‘lžw˜ord“bšMÞeing“completed,‘ž*so‘lžp˜ortions“of“the“w²!ordŽ¡’…³-follo²!wing–Íÿthe›Íþcursor“are˜not“duplicated.‘T¦F‘ÿeor“instance,‘×äif“this˜is“en-Ž¡’…³-abled,‘*0attempting–Ü¢completion“when“the“cursor“is“after“the“`âeá'“inŽ¡’…³-`âMakefileá'–‚will›‚result“in˜`âMakefileá'“rather˜than“`âMakefilefileá',Ž¡’…³-assuming–<there“is“a“single“pMÞossible‘<completion.‘žÀThe“default“v‘ÿdDalueŽ¡’…³-is‘¦f`âoffá'.ŽŽŒ‹
        !            74: ºfŸò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®10ŽŽŽ ƒ33 ý ÌÍ‘Kâ:âvi-cmd-mode-stringŽ¤
33’…³-áIf–·the›¶åsho²!w-moMÞde-in-prompt‘I·áv‘ÿdDariable“is˜enabled,‘&Kthis“string˜is“dis-Ž¡’…³-pla•²!y“ed–ÃRimmediately›ÃQbMÞefore“the˜last“line“of˜the“primary˜prompt“whenŽ¡’…³-vi–Þ:editing“mošMÞde“is“activ²!e“and“in“command“mo˜de.‘…YThe“v‘ÿdDalue“is“ex-Ž¡’…³-panded–:mlikš²!e“a‘:lk˜ey“binding,‘Pso“the“standard“set“of‘:lmeta-“and“con˜trolŽ¡’…³-prexes–3Šand›3‰bac²!kslash“escapMÞe˜sequences“is˜a²!v‘ÿdDailable.‘…HUse˜the“`â\1á'Ž¡’…³-and–àê`â\2á'‘àëescapšMÞes“to“b˜egin“and›àëend“sequences“of˜non-prinš²!ting“c˜harac-Ž¡’…³-ters,‘³´whicš²!h–±can“bMÞe“used“to“em˜bMÞed“a“terminal“con˜trol“sequence“in˜toŽ¡’…³-the–¦fmoMÞde“string.‘ÝÝThe“default“is“`â(cmd)á'.Ž©ÌΑKâ:âvi-ins-mode-stringŽ¡’…³-áIf–·the›¶åsho²!w-moMÞde-in-prompt‘I·áv‘ÿdDariable“is˜enabled,‘&Kthis“string˜is“dis-Ž¡’…³-pla•²!y“ed–ÃRimmediately›ÃQbMÞefore“the˜last“line“of˜the“primary˜prompt“whenŽ¡’…³-vi–5Œediting›5moMÞde“is˜activ²!e“and˜in“insertion“moMÞde.‘‹QThe“v‘ÿdDalue˜is“ex-Ž¡’…³-panded–:mlikš²!e“a‘:lk˜ey“binding,‘Pso“the“standard“set“of‘:lmeta-“and“con˜trolŽ¡’…³-prexes–3Šand›3‰bac²!kslash“escapMÞe˜sequences“is˜a²!v‘ÿdDailable.‘…HUse˜the“`â\1á'Ž¡’…³-and–àê`â\2á'‘àëescapšMÞes“to“b˜egin“and›àëend“sequences“of˜non-prinš²!ting“c˜harac-Ž¡’…³-ters,‘³´whicš²!h–±can“bMÞe“used“to“em˜bMÞed“a“terminal“con˜trol“sequence“in˜toŽ¡’…³-the–¦fmoMÞde“string.‘ÝÝThe“default“is“`â(ins)á'.Ž¦‘Kâ:âvisible-statsŽ¡’…³-áIf–Ôvset“to“`âoná',‘ßúa“cš²!haracter“denoting‘Ôwa“le's“t˜ypšMÞe“is“app˜ended“to“theŽ¡’…³-lename–¦fwhen“listing“pMÞossible“completions.‘ÝÝThe“default“is“`âoffá'.Ž¦‘GKey‘¦fBindingsŽ¡‘Kâ:The–synš²!tax“for“con˜trolling‘ k˜ey“bindings“in“the“init“le“is“simple.‘              First“y˜ouŽ¡‘Kâ:need–QÓto“nd›QÔthe“name“of“the˜command“that“yš²!ou“w˜an˜t“to‘QÔc˜hange.‘Á¬The“follo˜wingŽ¡‘Kâ:sections–Ocon²!tain›Otables“of˜the“command˜name,‘yLthe˜default“kš²!eybinding,‘yMif“an˜y‘ÿe,Ž¡‘Kâ:and–¦fa“short“description“of“what“the“command“doMÞes.ŽŸ€&‘Kâ:Once›P…y•²!ou‘P†kno“w˜the˜name–P†of˜the“command,‘{simply“place˜on“a˜line˜in“the˜initŽ¡‘Kâ:le–&the›name“of“the˜kš²!ey“y˜ou“wish›to“bind“the“command˜to,›$'a“colon,˜and“thenŽ¡‘Kâ:the–Üÿname›Üþof“the˜command.‘§There˜can“bMÞe˜no“space˜bMÞet•²!w“een‘Üÿthe˜k“ey‘Üÿname˜andŽ¡‘Kâ:the–çcolon“{“that“will“bMÞe“inš²!terpreted“as“part“of“the“k˜ey“name.‘ŸÿThe“name“ofŽ¡‘Kâ:the–$Ûkš²!ey“can“bMÞe‘$Úexpressed“in“dieren˜t“w˜a˜ys,‘DxdepMÞending“on‘$Úwhat“y˜ou“nd“mostŽ¡‘Kâ:comfortable.ŽŸ€‘Kâ:In–SÞaddition›Sßto“command“names,‘<readline˜alloš²!ws“k˜eys“to‘SßbšMÞe“b˜ound“to‘Sßa“stringŽ¡‘Kâ:that–¦fis“inserted“when“the“k²!ey“is“pressed“(a“åmacro‘ŒÐá).Ž¦‘Kâ:åk²!eyname‘á:‘ÝÝåfunction-name‘Cmáor‘¦fåmacroŽŽ¡’…³-kš²!eyname‘jáis–tcthe“name‘tdof“a“k˜ey“spMÞelled“out“in“English.‘Í2F‘ÿeor“example:ŽŸ€&’¢›‚âControl-u:‘¿ªuniversal-argumentŽ¡’¢›‚Meta-Rubout:‘¿ªbackward-kill-wordŽ¡’¢›‚Control-o:–¿ª">“output"ŽŸ€’…³-áIn–\Àthe‘\¿example“abšMÞo•²!v“e,‘
JSèC-u–\Àáis“b˜ound“to‘\¿the“functionŽ¡’…³-âuniversal-argumentá,‘|èM-DEL›
&áis–
%bMÞound“to˜the“functionŽ¡’…³-âbackward-kill-wordá,‘ šand–iLèC-o›iKáis“bMÞound˜to“run˜the“macroŽ¡’…³-expressed–~Jon“the›~Irigh²!t“hand“side“(that“is,‘ôBto“insert˜the“text“`â>Ž¡’…³-outputá'–¦fin²!to“the“line).ŽŽŒ‹ÆÏŸò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®11ŽŽŽ ƒ33 ý ÌÍ’…³-A‘nbn•²!um“bšMÞer–o[of“sym²!b˜olic“c²!haracter“names“are“recognized“whileŽ¤
33’…³-proMÞcessing–Ê3this“kš²!ey“binding“syn˜tax:‘%wåDELá,–&åESCá,“åESCAPEá,“åLFDá,Ž¡’…³-åNEWLINEá,–¦fåRETá,“åRETURNá,“åRš²!UBOUTá,“åSP‘ÿeA˜CEá,“åSPCá,“and“åT‘ÿeABá.ŽŸ#בKâ:â"åk²!eyseq@æâ"á:‘ÝÝåfunction-name‘Cmáor‘¦fåmacroŽŽ¡’…³-k•²!eyseq‘ú«ádiers‘¹Äfrom›¹Ååk“eyname‘VËáabMÞo“v“e˜in˜that–¹Ästrings˜denoting“an˜en-Ž¡’…³-tire–hkš²!ey“sequence“can“b•MÞe‘gsp“ecied,‘%éb˜y‘gplacing–hthe“k˜ey“sequence“inŽ¡’…³-double–‰ôquotes.‘ÔbSome“çgnu“áEmacs“stš²!yle“k˜ey“escapšMÞes“can“b˜e“used,‘¤asŽ¡’…³-in–Ãthe›Âfollo²!wing“example,‘(Ùbut˜the“spMÞecial˜c²!haracter“names˜are“notŽ¡’…³-recognized.Ž©+…’¢›‚â"\C-u":‘¿ªuniversal-argumentŽ¡’¢›‚"\C-x\C-r":‘¿ªre-read-init-fileŽ¡’¢›‚"\e[11~":–¿ª"Function“Key“1"Ž¦’…³-áIn–Â×the“abšMÞo•²!v“e–Â×example,‘ÉòèC-u“áis“again‘ÂØb˜ound“to“the“functionŽ¡’…³-âuniversal-argument–?ßá(just“as“it“w²!as“in“the“rst‘?Þexample),‘¦=`èC-xŽ¡’…³-C-rá'–¤Öis“bMÞound“to“the“function“âre-read-init-fileá,‘¥&and“`âESC–¦f[“1“1Ž¡’…³-~á'–¦fis“bMÞound“to“insert“the“text“`âFunction“Key“1á'.Ž©#Ø‘Kâ:The–’Äfolloš²!wing“çgnu“áEmacs“st˜yle“escapMÞe‘’Åsequences“are“a˜v‘ÿdDailable“when“spMÞecifyingŽ¡‘Kâ:k²!ey‘¦fsequences:Ž¤#בKâ:è\C-‘(‘õácon²!trol‘¦fprexŽ¡‘Kâ:è\M-‘(‘õámeta‘¦fprexŽ¡‘Kâ:è\e‘.QŸáan–¦fescapMÞe“c²!haracterŽ¡‘Kâ:è\\‘.QŸábac²!kslashŽ¦‘Kâ:è\â"‘.QŸ"á,–¦fa“double“quotation“markŽ¡‘Kâ:è\'‘.QŸâ'á,–¦fa“single“quote“or“apMÞostropheŽ¡‘Kâ:In–Qaddition“to›Qthe“çgnu“áEmacs“st²!yle˜escapMÞe“sequences,‘b)a“second˜set“of“bac²!kslashŽŸ
33‘Kâ:escapMÞes–¦fis“a²!v‘ÿdDailable:Ž¡‘Kâ:â\a‘.QŸáalert‘¦f(bMÞell)Ž¡‘Kâ:â\b‘.QŸábac²!kspaceŽ¦‘Kâ:â\d‘.QŸádeleteŽ¡‘Kâ:â\f‘.QŸáform‘¦ffeedŽ¡‘Kâ:â\n‘.QŸánewlineŽ¡‘Kâ:â\r‘.QŸácarriage‘¦freturnŽ¡‘Kâ:â\t‘.QŸáhorizon²!tal‘¦ftabŽ¦‘Kâ:â\v‘.QŸáv²!ertical‘¦ftabŽ¡‘Kâ:â\ènnn‘"ÒKáthe–$«eighš²!t-bit“c˜haracter‘$ªwhose“v›ÿdDalue“is“the“oMÞctal“v˜alue‘$ªånnn“á(one“toŽ©
33’…³-three‘¦fdigits)Ž¡‘Kâ:â\xèHH‘"ÒKáthe›˜eigh•²!t-bit‘˜c“haracter˜whose˜v‘ÿdDalue–˜is˜the˜hexadecimal“v‘ÿdDalue˜åHHŽ¦’…³-á(one–¦for“t•²!w“o–¦fhex“digits)ŽŽŒ‹Ô‹Ÿò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®12ŽŽŽ ƒ33 ý ÌÍ‘Kâ:When–}Ëenš²!tering“the“text“of“a“macro,‘³£single“or“double“quotes“m˜ust“bMÞe“used“toŽ¤
33‘Kâ:indicate–“Ša›“‰macro“denition.‘‚?Unquoted˜text“is“assumed“to˜bMÞe“a“function˜name.‘‚?InŽ¡‘Kâ:the‘Ämacro›Åb•MÞo“dy‘ÿe,‘Ç~the˜bac²!kslash‘Äescap“es˜describ“ed‘Äab“o•²!v“e˜are‘Äexpanded.‘€ýBac“kslashŽ¡‘Kâ:will–Íquote‘Íanš²!y“other“c˜haracter›Íin“the“macro˜text,‘Éincluding“`â"á'˜and“`â'á'.‘RF‘ÿeorŽ¡‘Kâ:example,‘4 the–folloš²!wing‘Žbinding“will“mak˜e›Ž`èC-x‘¦fâ\á'“insert“a˜single“`â\á'“in²!to˜the“line:ŽŸLÍ‘hÊâ"\C-x\\":‘¿ª"\\"ŽŸ34‘Gëg1.3.2‘d(Conditional–íMInit“ConstructsŽŽŸ³3‘GáReadline–iimplemenš²!ts“a“facilit˜y“similar“in‘ispirit“to“the“conditional“compilation“features“ofŽ¡‘Gthe–¯JC‘¯HpreproMÞcessor‘¯Kwhicš²!h“allo˜ws‘¯Kk˜ey“bindings“and›¯Kv‘ÿdDariable“settings“to˜bšMÞe“p˜erformed‘¯Kas“theŽ¡‘Gresult–¦fof“tests.‘ÝÝThere“are“four“parser“directiv²!es“used.ŽŸ€‘Gâ$if‘(‘õáThe–ÃNâ$if“áconstruct“allo²!ws“bindings“to“bšMÞe‘ÃOmade“based“on“the“editing“mo˜de,‘ʈtheŽ¡‘Kâ:terminal–[êbMÞeing›[éused,‘‰Jor“the“application˜using“Readline.‘þhThe˜text“of˜the“test,Ž¡‘Kâ:after–‹\an²!y›‹[comparison“opMÞerator,‘Äextends˜to“the“end˜of“the˜line;‘”_unless“otherwiseŽ¡‘Kâ:noted,–¦fno“c²!haracters“are“required“to“isolate“it.Ž©fg‘Kâ:âmode‘"ÒKáThe–žÞâmode=›žßáform“of“the“â$if“ádirectiv²!e˜is“used“to“test˜whether“Read-Ž¡’…³-line–3½is“in‘3¼âemacs“áor“âvi“ámošMÞde.‘       …áThis“ma²!y“b˜e‘3¼used“in“conjunctionŽ¡’…³-with–º the“`âset‘¦fkeymapá'“command,–ÿfor‘º!instance,“to–º set“bindings“inŽ¡’…³-the–ÌÇâemacs-standard“áand›ÌÆâemacs-ctlx“ák²!eymaps“only“if˜Readline“isŽ¡’…³-starting–¦fout“in“âemacs“ámoMÞde.Ž¦‘Kâ:âterm‘"ÒKáThe–<âterm=“áform›<ma²!y“bMÞe“used“to“include˜terminal-spMÞecic“k²!ey“bind-Ž¡’…³-ings,‘ƒpMÞerhaps–Vîto“bind›Víthe“k²!ey˜sequences“output“b²!y˜the“terminal'sŽ¡’…³-function–Þ€kš²!eys.‘›;The“w˜ord“on‘Þthe“righ˜t“side“of“the“`â=á'‘Þis“tested“againstŽ¡’…³-bšMÞoth–šPthe“full“name“of“the‘šOterminal“and“the“p˜ortion“of“the“terminalŽ¡’…³-name–×bMÞefore›Öthe“rst˜`â-á'.‘ÿ/This“allo²!ws˜âsun“áto˜matc²!h“bMÞoth˜âsun“áandŽ¡’…³-âsun-cmdá,–¦ffor“instance.ŽŸfh‘Kâ:âversion‘“MáThe–^@âversion›^Aátest“ma²!y˜bMÞe“used˜to“pMÞerform˜comparisons“againstŽ¡’…³-spMÞecic–&6Readline“vš²!ersions.‘îMThe“âversion“áexpands“to“the“curren˜tŽ¡’…³-Readline–ÞÊv²!ersion.‘›TThe“set›ÞËof“comparison“opMÞerators“includes˜`â=á'“(andŽ¡’…³-`â==á'),–âÇ`â!=á',›âÈ`â<=á',“`â>=á',˜`â<á',“and–Ö´`â>á'.‘nÇThe“vš²!ersion“n˜um˜bMÞer“supplied“onŽ¡’…³-the–ƒrigh²!t›‚side“of“the“opMÞerator˜consists“of“a“ma‘›»jor˜vš²!ersion“n˜um˜bMÞer,Ž¡’…³-an–uµoptional›u´decimal“pMÞoin²!t,‘éˆand˜an“optional“minor˜v²!ersion“(e.g.,Ž¡’…³-`â7.1á').‘ÁâIf–Ruthe›Rtminor“v²!ersion“is˜omitted,‘c?it˜is“assumed“to˜bMÞe“`â0á'.‘ÁâTheŽ¡’…³-opšMÞerator–ìma²!y“b˜e“separated“from“the‘ëstring“âversion“áand“from“theŽ¡’…³-v•²!ersion›§¯n“um“bMÞer‘§°argumen“t˜b“y˜whitespace.‘á¹The‘§°follo“wing˜exampleŽ¡’…³-sets–¦fa“v‘ÿdDariable“if“the“Readline“vš²!ersion“bMÞeing“used“is“7.0“or“new˜er:ŽŸLÍ’¢›‚â$if–¿ªversion“>=“7.0Ž¡’¢›‚set–¿ªshow-mode-in-prompt“onŽ¡’¢›‚$endifŽ¦‘Kâ:applicationŽ¡’…³-áThe–¢âåapplication“áconstruct›¢ãis“used“to“include˜application-spMÞecic“set-Ž¡’…³-tings.‘£mEac²!h–÷program“using“the‘÷Readline“library“sets“the“åapplicationŽ¡’…³-nameá,‘õwand–É<y²!ou“can›É;test“for“a˜particular“v‘ÿdDalue.‘”$This“could“bMÞe˜used“toŽ¡’…³-bind–ñDk²!ey“sequences“to“functions“useful“for‘ñCa“spMÞecic“program.‘¾wF‘ÿeorŽŽŒ‹
Ý•Ÿò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®13ŽŽŽ ƒ33 ý ÌÍ’…³-instance,‘Ðthe–÷‡folloš²!wing“command“adds‘÷ˆa“k˜ey“sequence‘÷ˆthat“quotesŽ¤
33’…³-the–¦fcurrenš²!t“or“previous“w˜ord“in“Bash:Ž©33’¢›‚â$if‘¿ªBashŽ¡’¢›‚#–¿ªQuote“the“current“or“previous“wordŽ¡’¢›‚"\C-xq":‘¿ª"\eb\"\ef\""Ž¡’¢›‚$endifŽŸ33‘Kâ:variable‘Ó£áThe–ùVåv‘ÿdDariable‘–]áconstruct“proš²!vides“simple‘ùUequalit˜y“tests“for“ReadlineŽ¡’…³-v–ÿdDariables›Îgand‘Îhv“alues.‘UáThe˜p•MÞermitted‘Îhcomparison˜op“erators‘Îhare˜`â=á',Ž¡’…³-`â==á',‘Û¢and–j—`â!=á'.‘
        !            75: *oThe›j–v‘ÿdDariable“name˜m²!ust“bMÞe“separated˜from“theŽ¡’…³-comparison–ü&opšMÞerator“b²!y‘ü'whitespace;‘4æthe“op˜erator‘ü'ma²!y“b˜e“separatedŽ¡’…³-from–pthe›qv‘ÿdDalue“on“the˜righš²!t“hand“side“b˜y‘qwhitespace.‘!üBoth“stringŽ¡’…³-and›fb•MÞo“olean˜v‘ÿdDariables˜ma²!y˜b“e˜tested.‘nÞBo“olean˜v‘ÿdDariables˜m²!ust˜b“eŽ¡’…³-tested–jEagainst“the“v‘ÿdDalues“åon“áand“åoá.‘
        !            76: )zThe“follo²!wing“example“isŽ¡’…³-equiv‘ÿdDalen²!t–¦fto“the“âmode=emacs“átest“describšMÞed“ab˜o•²!v“e:Ž¦’¢›‚â$if–¿ªediting-mode“==“emacsŽ¡’¢›‚set–¿ªshow-mode-in-prompt“onŽ¡’¢›‚$endifŽ¤33‘G$endif‘R÷áThis–£™command,‘¤(as“seen“in“the›£˜previous“example,‘¤)terminates˜an“â$if“ácommand.Ž¡‘Gâ$else‘¡áCommands–¦fin“this“brancš²!h“of“the“â$if“ádirectiv˜e“are“executed“if“the“test“fails.Ž¡‘Gâ$include‘Ó£áThis›:directiv•²!e‘:tak“es˜a˜single˜lename‘:as˜an˜argumen“t˜and‘:reads˜commandsŽ¤
33‘Kâ:and–£Ëbindings‘£Êfrom“that“le.‘ÖF‘ÿeor“example,‘ã#the“folloš²!wing“directiv˜e‘£Êreads“fromŽ¡‘Kâ:â/etc/inputrcá:Ž¦‘hÊâ$include‘¿ª/etc/inputrcŽŸ‘Gëg1.3.3‘d(Sample–íMInit“FileŽŽŸ³3‘GáHere–,ßis›,àan“example“of˜an“åinputrc‘Öäále.‘µ[This“illustrates“k•²!ey˜binding,‘E-v‘ÿdDariable˜assignmen“t,‘E-andŽ¡‘Gconditional‘¦fsyn²!tax.ŽŽŒ‹ì:Ÿò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®14ŽŽŽ ƒ33 ý®‘.ùœâ#–¿ªThis“file“controls“the“behaviour“of“line“input“editing“forŽ¤
33‘.ùœ#–¿ªprograms“that“use“the“GNU“Readline“library.‘TExistingŽ¡‘.ùœ#–¿ªprograms“include“FTP,“Bash,“and“GDB.Ž¡‘.ùœ#Ž¡‘.ùœ#–¿ªYou“can“re-read“the“inputrc“file“with“C-x“C-r.Ž¡‘.ùœ#–¿ªLines“beginning“with“'#'“are“comments.Ž¡‘.ùœ#Ž¡‘.ùœ#–¿ªFirst,“include“any“system-wide“bindings“and“variableŽ¡‘.ùœ#–¿ªassignments“from“/etc/InputrcŽ¡‘.ùœ$include‘¿ª/etc/InputrcŽ©ff‘.ùœ#Ž¡‘.ùœ#–¿ªSet“various“bindings“for“emacs“mode.Ž¦‘.ùœset–¿ªediting-mode“emacsŽ¦‘.ùœ$if‘¿ªmode=emacsŽ¦‘.ùœMeta-Control-h:‘Tbackward-kill-word–¿ªText“after“the“function“name“is“ignoredŸnï„         Ž¦‘.ùœ#Ž¡‘.ùœ#–¿ªArrow“keys“in“keypad“modeŽ¡‘.ùœ#Ž¡‘.ùœ#"\M-OD":‘-ýPbackward-charŽ¡‘.ùœ#"\M-OC":‘-ýPforward-charŽ¡‘.ùœ#"\M-OA":‘-ýPprevious-historyŽ¡‘.ùœ#"\M-OB":‘-ýPnext-historyŽ¡‘.ùœ#Ž¡‘.ùœ#–¿ªArrow“keys“in“ANSI“modeŽ¡‘.ùœ#Ž¡‘.ùœ"\M-[D":‘-ýPbackward-charŽ¡‘.ùœ"\M-[C":‘-ýPforward-charŽ¡‘.ùœ"\M-[A":‘-ýPprevious-historyŽ¡‘.ùœ"\M-[B":‘-ýPnext-historyŽ¡‘.ùœ#Ž¡‘.ùœ#–¿ªArrow“keys“in“8“bit“keypad“modeŽ¡‘.ùœ#Ž¡‘.ùœ#"\M-\C-OD":‘(=¦backward-charŽ¡‘.ùœ#"\M-\C-OC":‘(=¦forward-charŽ¡‘.ùœ#"\M-\C-OA":‘(=¦previous-historyŽ¡‘.ùœ#"\M-\C-OB":‘(=¦next-historyŽ¡‘.ùœ#Ž¡‘.ùœ#–¿ªArrow“keys“in“8“bit“ANSI“modeŽ¡‘.ùœ#Ž¡‘.ùœ#"\M-\C-[D":‘(=¦backward-charŽ¡‘.ùœ#"\M-\C-[C":‘(=¦forward-charŽŽŒ‹ó¤Ÿò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®15ŽŽŽ ƒ33 ý ÌÍ‘.ùœâ#"\M-\C-[A":‘(=¦previous-historyŽ©
33‘.ùœ#"\M-\C-[B":‘(=¦next-historyŽ¤ff‘.ùœC-q:‘¿ªquoted-insertŽ¡‘.ùœ$endifŽ¡‘.ùœ#–¿ªAn“old-style“binding.‘TThis“happens“to“be“the“default.Ž¦‘.ùœTAB:‘¿ªcompleteŽ¡‘.ùœ#–¿ªMacros“that“are“convenient“for“shell“interactionŽ¦‘.ùœ$if‘¿ªBashŽ¦‘.ùœ#–¿ªedit“the“pathŽ¦‘.ùœ"\C-xp":‘¿ª"PATH=${PATH}\e\C-e\C-a\ef\C-f"Ž¦‘.ùœ#–¿ªprepare“to“type“a“quoted“word“--Ž¦‘.ùœ#–¿ªinsert“open“and“close“double“quotesŽ¦‘.ùœ#–¿ªand“move“to“just“after“the“open“quoteŽ¦‘.ùœ"\C-x\"":‘¿ª"\"\"\C-b"Ž¦‘.ùœ#–¿ªinsert“a“backslash“(testing“backslash“escapesŽ¦‘.ùœ#–¿ªin“sequences“and“macros)Ž¦‘.ùœ"\C-x\\":‘¿ª"\\"Ž¦‘.ùœ#–¿ªQuote“the“current“or“previous“wordŽ¦‘.ùœ"\C-xq":‘¿ª"\eb\"\ef\""Ž¦‘.ùœ#–¿ªAdd“a“binding“to“refresh“the“line,“which“is“unboundŽ¦‘.ùœ"\C-xr":‘¿ªredraw-current-lineŽ¦‘.ùœ#–¿ªEdit“variable“on“current“line.Ž¦‘.ùœ"\M-\C-v":‘¿ª"\C-a\C-k$\C-y\M-\C-e\C-a\C-y="Ž¦‘.ùœ$endifŽ¡‘.ùœ#–¿ªuse“a“visible“bell“if“one“is“availableŽ¦‘.ùœset–¿ªbell-style“visibleŽ¡‘.ùœ#–¿ªdon't“strip“characters“to“7“bits“when“readingŽ¦‘.ùœset–¿ªinput-meta“onŽ¡‘.ùœ#–¿ªallow“iso-latin1“characters“to“be“inserted“ratherŽ¦‘.ùœ#–¿ªthan“converted“to“prefix-meta“sequencesŽ¦‘.ùœset–¿ªconvert-meta“offŽ¡‘.ùœ#–¿ªdisplay“characters“with“the“eighth“bit“set“directlyŽ¦‘.ùœ#–¿ªrather“than“as“meta-prefixed“charactersŽ¦‘.ùœset–¿ªoutput-meta“onŽ¡‘.ùœ#–¿ªif“there“are“150“or“more“possible“completions“for“a“word,Ž¦‘.ùœ#–¿ªask“whether“or“not“the“user“wants“to“see“all“of“themŽ¦‘.ùœset–¿ªcompletion-query-items“150ŽŽŒ‹ùjŸò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®16ŽŽŽ ƒ33 ý ÌÍ‘.ùœâ#–¿ªFor“FTPŽ¤
33‘.ùœ$if‘¿ªFtpŽ¡‘.ùœ"\C-xg":–¿ª"get“\M-?"Ž¡‘.ùœ"\C-xt":–¿ª"put“\M-?"Ž¡‘.ùœ"\M-.":‘¿ªyank-last-argŽ¡‘.ùœ$endifŽŸ)›‘Gë]1.4‘™Bindable–f@Readline“CommandsŽŽŸ33‘GáThis–\section›[describMÞes“Readline“commands˜that“ma²!y“b•MÞe˜b“ound–\to“k²!ey˜sequences.‘¬ÚCommandŽ¡‘Gnames–¦fwithout“an“accompanš²!ying“k˜ey“sequence“are“un˜bMÞound“b˜y“default.ŽŸNï‘!GIn–%Xthe‘%Wfolloš²!wing“descriptions,‘?'åpMÞoin˜t‘bXárefers›%Wto“the˜curren²!t“cursor“pMÞosition,‘?'and˜åmark‘Ï\árefersŽ¡‘Gto–«Aa“cursor‘«BpMÞosition“sa•²!v“ed›«Ab“y˜the˜âset-mark‘«Bácommand.‘ìnThe˜text˜bMÞet“w“een‘«Bthe˜pMÞoin“t˜andŽ¡‘Gmark–¦fis“referred“to“as“the“åregioná.ŽŸ¼‘Gëg1.4.1‘d(Commands–íMF‘þÄ£or“Mo–ávingŽŽŸÁ‘Gâbeginning-of-line‘¦f(C-a)Ž¡‘Kâ:áMo•²!v“e–¦fto“the“start“of“the“curren²!t“line.ŽŸNð‘Gâend-of-line‘¦f(C-e)Ž¡‘Kâ:áMo•²!v“e–¦fto“the“end“of“the“line.Ž©Nï‘Gâforward-char‘¦f(C-f)Ž¡‘Kâ:áMo•²!v“e›¦fforw“ard˜a˜c“haracter.Ž¦‘Gâbackward-char‘¦f(C-b)Ž¡‘Kâ:áMo•²!v“e›¦fbac“k˜a˜c“haracter.ŽŸNð‘Gâforward-word‘¦f(M-f)Ž¡‘Kâ:áMo•²!v“e›¢kforw“ard˜to‘¢jthe˜end˜of˜the˜next˜w“ord.‘܉W‘ÿeords˜are˜compMÞosed‘¢jof˜letters˜andŽ¡‘Kâ:digits.Ž¦‘Gâbackward-word‘¦f(M-b)Ž¡‘Kâ:áMo•²!v“e››bac“k˜to˜the˜start˜of˜the˜curren“t˜or˜previous˜w“ord.‘|W‘ÿeords˜are˜compMÞosedŽ¡‘Kâ:of–¦fletters“and“digits.Ž¦‘Gâprevious-screen-line‘¦f()Ž¡‘Kâ:áAš²!ttempt–Ô@to“mo˜v˜e“pMÞoin˜t“to“the“same‘Ô?ph˜ysical“screen“column“on“the“previousŽ¡‘Kâ:ph²!ysical›&screen–&line.‘¦ÄThis“will˜not“ha•²!v“e˜the–&desired˜eect“if˜the“curren²!t˜ReadlineŽ¡‘Kâ:line–G–doMÞes“not‘G—takš²!e“up“more“than“one“ph˜ysical‘G—line“or“if“pMÞoin˜t“is‘G—not“greater“thanŽ¡‘Kâ:the–¦flength“of“the“prompt“plus“the“screen“width.ŽŸNð‘Gânext-screen-line‘¦f()Ž¡‘Kâ:áA•²!ttempt›öito‘öhmo“v“e˜pMÞoin“t–öhto˜the“same˜ph²!ysical“screen˜column“on˜the“next˜ph²!ysicalŽ¡‘Kâ:screen–ÍBline.‘•|This“will›ÍAnot“ha•²!v“e–ÍBthe“desired“eect“if“the˜curren²!t“Readline“line“doMÞesŽ¡‘Kâ:not–Eðtakš²!e“up“more“than“one“ph˜ysical“line‘Eñor“if“the“length“of“the“curren˜t“ReadlineŽ¡‘Kâ:line–¦fis“not“greater“than“the“length“of“the“prompt“plus“the“screen“width.Ž¦‘Gâclear-display‘¦f(M-C-l)Ž¡‘Kâ:áClear–ô·the›ô¸screen“and,‘Lif˜pMÞossible,‘Kthe˜terminal's“scrollbac²!k˜buer,‘Lthen“redra²!wŽ¡‘Kâ:the–¦fcurrenš²!t“line,“lea˜ving“the“curren˜t“line“at“the“top“of“the“screen.ŽŽŒ‹ÿ÷Ÿò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®17ŽŽŽ ƒ33 ý ÌÍ‘Gâclear-screen‘¦f(C-l)Ž¤
33‘Kâ:áClear›"„the–"ƒscreen,‘A‹then“redra²!w˜the“curren•²!t˜line,‘AŠlea“ving˜the‘"ƒcurren“t˜line‘"ƒat˜theŽ¡‘Kâ:top–¦fof“the“screen.Ž©¼k‘Gâredraw-current-line‘¦f()Ž¡‘Kâ:áRefresh–¦fthe“currenš²!t“line.‘ÝÝBy“default,“this“is“un˜bMÞound.ŽŸ‰8‘Gëg1.4.2‘d(Commands–íMF‘þÄ£or“Manipulating“The“HistoryŽŽŸ÷Ï‘Gâaccept-line–¦f(Newline“or“Return)Ž¡‘Kâ:áAccept–:the“line“regardless“of›:where“the“cursor“is.‘˜äIf“this˜line“is“non-empt²!y‘ÿe,‘^þitŽ¡‘Kâ:ma²!y–Ô0bMÞe›Ô1added“to˜the“history“list˜for“future˜recall“with“âadd_history()á.‘g=If“thisŽ¡‘Kâ:line–¦fis“a“moMÞdied“history“line,“the“history“line“is“restored“to“its“original“state.Ž¦‘Gâprevious-history‘¦f(C-p)Ž¡‘Kâ:áMo•²!v“e›¦f`bac“k'˜through˜the˜history˜list,˜fetc“hing˜the˜previous˜command.Ž¦‘Gânext-history‘¦f(C-n)Ž¡‘Kâ:áMo•²!v“e›¦f`forw“ard'˜through˜the˜history˜list,˜fetc“hing˜the˜next˜command.Ž¦‘Gâbeginning-of-history‘¦f(M-<)Ž¡‘Kâ:áMo•²!v“e–¦fto“the“rst“line“in“the“history‘ÿe.ŽŸ¼j‘Gâend-of-history‘¦f(M->)Ž¡‘Kâ:áMo•²!v“e–¦fto“the“end“of“the“input“history‘ÿe,“i.e.,“the“line“currenš²!tly“bMÞeing“en˜tered.Ž¦‘Gâreverse-search-history‘¦f(C-r)Ž¡‘Kâ:áSearc•²!h›½:bac“kw“ard˜starting‘½;at˜the˜curren“t˜line˜and˜mo“ving‘½;`up'˜through˜the˜his-Ž¡‘Kâ:tory–$˜as›$—necessary‘ÿe.‘²˜This“is˜an“incremenš²!tal“searc˜h.‘²˜This›$—command“sets˜the“regionŽ¡‘Kâ:to–¦fthe“matc²!hed“text“and“activ‘ÿdDates“the“mark.Ž¦‘Gâforward-search-history‘¦f(C-s)Ž¡‘Kâ:áSearc•²!h›>Dforw“ard˜starting˜at˜the˜curren“t‘>Cline˜and˜mo“ving˜`do“wn'˜through˜theŽ¡‘Kâ:history–•Îas“necessary‘ÿe.‘¬This“is“an‘•Íincremenš²!tal“searc˜h.‘¬This‘•Ícommand“sets“theŽ¡‘Kâ:region–¦fto“the“matc²!hed“text“and“activ‘ÿdDates“the“mark.Ž¦‘Gânon-incremental-reverse-search-history‘¦f(M-p)Ž¡‘Kâ:áSearc•²!h›½:bac“kw“ard˜starting‘½;at˜the˜curren“t˜line˜and˜mo“ving‘½;`up'˜through˜the˜his-Ž¡‘Kâ:tory–Ryas“necessary“using‘Rxa“non-incremenš²!tal“searc˜h“for“a“string‘Rxsupplied“b˜y“theŽ¡‘Kâ:user.‘ÝÝThe–¦fsearcš²!h“string“ma˜y“matc˜h“an˜ywhere“in“a“history“line.Ž¦‘Gânon-incremental-forward-search-history‘¦f(M-n)Ž¡‘Kâ:áSearc•²!h›>Dforw“ard˜starting˜at˜the˜curren“t‘>Cline˜and˜mo“ving˜`do“wn'˜through˜theŽ¡‘Kâ:history–3ªas›3©necessary“using“a˜non-incremenš²!tal“searc˜h“for›3©a“string“supplied˜b²!y“theŽ¡‘Kâ:user.‘ÝÝThe–¦fsearcš²!h“string“ma˜y“matc˜h“an˜ywhere“in“a“history“line.Ž¦‘Gâhistory-search-forward‘¦f()Ž¡‘Kâ:áSearc•²!h›úOforw“ard˜through–úPthe˜history˜for˜the˜string˜of“c•²!haracters˜bMÞet“w“een˜theŽ¡‘Kâ:start–QËof›QÌthe“curren²!t“line˜and“the“pMÞoinš²!t.‘à
The“searc˜h‘QÌstring“m˜ust“matc˜h‘QÌat“theŽ¡‘Kâ:bMÞeginning–è"of“a“history“line.‘£This“is“a“non-incremenš²!tal“searc˜h.‘£By“default,‘ø‘thisŽ¡‘Kâ:command–¦fis“un²!bMÞound.Ž¦‘Gâhistory-search-backward‘¦f()Ž¡‘Kâ:áSearc•²!h›-»bac“kw“ard–-¼through˜the“history˜for“the˜string“of˜cš²!haracters“bMÞet˜w˜een‘-»theŽ¡‘Kâ:start–QËof›QÌthe“curren²!t“line˜and“the“pMÞoinš²!t.‘à
The“searc˜h‘QÌstring“m˜ust“matc˜h‘QÌat“theŽŽŒ‹&
        !            77: Ÿò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®18ŽŽŽ ƒ33 ý ÌÍ‘Kâ:bMÞeginning–è"of“a“history“line.‘£This“is“a“non-incremenš²!tal“searc˜h.‘£By“default,‘ø‘thisŽ¤
33‘Kâ:command–¦fis“un²!bMÞound.Ž©‘Gâhistory-substring-search-forward‘¦f()Ž¡‘Kâ:áSearc•²!h›úOforw“ard˜through–úPthe˜history˜for˜the˜string˜of“c•²!haracters˜bMÞet“w“een˜theŽ¡‘Kâ:start–uæof›uçthe“curren²!t“line“and˜the“pMÞoinš²!t.‘ͳThe“searc˜h“string“ma˜y‘uçmatc˜h“an˜ywhereŽ¡‘Kâ:in–è"a“history“line.‘£This“is“a“non-incremenš²!tal“searc˜h.‘£By“default,‘ø‘this“commandŽ¡‘Kâ:is‘¦fun²!bMÞound.Ž¦‘Gâhistory-substring-search-backward‘¦f()Ž¡‘Kâ:áSearc•²!h›-»bac“kw“ard–-¼through˜the“history˜for“the˜string“of˜cš²!haracters“bMÞet˜w˜een‘-»theŽ¡‘Kâ:start–uæof›uçthe“curren²!t“line“and˜the“pMÞoinš²!t.‘ͳThe“searc˜h“string“ma˜y‘uçmatc˜h“an˜ywhereŽ¡‘Kâ:in–è"a“history“line.‘£This“is“a“non-incremenš²!tal“searc˜h.‘£By“default,‘ø‘this“commandŽ¡‘Kâ:is‘¦fun²!bMÞound.ŽŸ‘‘Gâyank-nth-arg‘¦f(M-C-y)Ž¡‘Kâ:áInsert–sÐthe›sÏrst“argumen²!t˜to“the˜previous“command˜(usually“the˜second“w²!ordŽ¡‘Kâ:on–Ô|the›Ô}previous“line)˜at“pMÞoin²!t.‘h!With“an˜argumen²!t“åná,‘àinsert˜the“ånáth˜w²!ord“fromŽ¡‘Kâ:the–0previous“command“(the“wš²!ords“in‘0the“previous“command“bMÞegin“with“w˜ordŽ¡‘Kâ:0).‘-dA‘À negativ•²!e›Àéargumen“t–Àèinserts˜the“ånáth“w²!ord˜from“the˜end“of˜the“previousŽ¡‘Kâ:command.‘ÍOnce–öGthe“argumenš²!t‘öFån“áis“computed,‘
        !            78: >the“argumen˜t“is“extracted‘öFas“ifŽ¡‘Kâ:the–¦f`â!èná'“history“expansion“had“bšMÞeen“sp˜ecied.Ž¦‘Gâyank-last-arg–¦f(M-.“or“M-_)Ž¡‘Kâ:áInsert–5Elast›5Fargumen²!t“to“the˜previous“command“(the˜last“w²!ord“of˜the“previousŽ¡‘Kâ:history–"enš²!try).‘With“a‘#n˜umeric“argumen˜t,‘ ’bMÞeha˜v˜e“exactly‘#lik˜e“âyank-nth-argá.Ž¡‘Kâ:Successivš²!e–ú%calls‘ú&to“âyank-last-arg“ámo˜v˜e‘ú&bac˜k“through‘ú&the“history“list,‘™insertingŽ¡‘Kâ:the–µlast‘µwš²!ord“(or“the“w˜ord‘µspMÞecied“b˜y“the“argumen˜t›µto“the“rst“call)˜of“eac²!h“lineŽ¡‘Kâ:in–`¿turn.‘êAnš²!y“n˜umeric‘`Àargumen˜t“supplied“to‘`Àthese“successiv˜e‘`Àcalls“determinesŽ¡‘Kâ:the–-Idirection›-Jto“mo•²!v“e˜through‘-Ithe˜history‘ÿe.‘r‡A‘-'negativ“e‘-Iargumen“t˜switc“hes‘-ItheŽ¡‘Kâ:direction–¼òthrough›¼óthe“history“(bac²!k˜or“forw²!ard).‘The“history˜expansion“facilitiesŽ¡‘Kâ:are–Mêused“to›Mëextract“the“last“argumen²!t,‘_as“if“the“`â!$á'“history˜expansion“had“bMÞeenŽ¡‘Kâ:spMÞecied.Ž¦‘Gâoperate-and-get-next‘¦f(C-o)Ž¡‘Kâ:áAccept–~tthe“curren²!t“line“for“return“to“the‘~ucalling“application“as“if“a“newline“hadŽ¡‘Kâ:bMÞeen–ÈÀenš²!tered,‘õand“fetc˜h“the“next‘È¿line“relativ˜e“to“the“curren˜t“line‘È¿from“the“historyŽ¡‘Kâ:for–¶›editing.‘~A‘¶—nš²!umeric“argumen˜t,›º©if“supplied,˜spMÞecies“the›¶œhistory“en²!try˜to“useŽ¡‘Kâ:instead–¦fof“the“curren²!t“line.ŽŸ]‘Gëg1.4.3‘d(Commands–íMF›þÄ£or“Changing“T˜extŽŽŸzâ‘Gèend-of-file–¦fâ(usually“C-d)Ž¡‘Kâ:áThe–%¡c²!haracter›% indicating“end-of-le“as“set,–?bfor˜example,“b²!y–%¡âsttyá.‘²ñIf˜this“c²!harac-Ž¡‘Kâ:ter–×is“read“when“there“are“no“cš²!haracters“on“the“line,‘ÒÁand“pMÞoin˜t“is“at“the“bMÞeginningŽ¡‘Kâ:of–¦fthe“line,“Readline“in²!terprets“it“as“the“end“of“input“and“returns“çeofá.Ž¦‘Gâdelete-char‘¦f(C-d)Ž¡‘Kâ:áDelete–þ¾the“cš²!haracter“at“pMÞoin˜t.‘æåIf‘þ½this“function“is“bMÞound“to“the“same“c˜haracterŽ¡‘Kâ:as–¦fthe“ttš²!y“çeof“ác˜haracter,“as“èC-d“ácommonly“is,“see“abMÞo˜v˜e“for“the“eects.ŽŽŒ‹&€Ÿò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®19ŽŽŽ ƒ33 ý ÌÍ‘Gâbackward-delete-char‘¦f(Rubout)Ž¤
33‘Kâ:áDelete–Ÿ§the“cš²!haracter‘Ÿ¨bMÞehind“the“cursor.‘ÛA‘Ÿ¦n˜umeric“argumen˜t“means‘Ÿ¨to“kill“theŽ¡‘Kâ:c²!haracters–¦finstead“of“deleting“them.Ž©:„‘Gâforward-backward-delete-char‘¦f()Ž¡‘Kâ:áDelete–˜‘the›˜’c²!haracter“under˜the“cursor,‘Õunless“the˜cursor“is“at˜the“end˜of“theŽ¡‘Kâ:line,‘×~in–Í­whicš²!h‘ͬcase“the“c˜haracter›ͬbMÞehind“the˜cursor“is˜deleted.‘S±By“default,‘×~thisŽ¡‘Kâ:is–¦fnot“bMÞound“to“a“k²!ey‘ÿe.Ž¦‘Gâquoted-insert–¦f(C-q“or“C-v)Ž¡‘Kâ:áAdd–¸the‘¹next“cš²!haracter“t˜ypMÞed‘¹to“the“line“v˜erbatim.‘CÔThis‘¹is“ho˜w“to‘¹insert“k˜eyŽ¡‘Kâ:sequences–¦flik²!e“èC-qá,“for“example.ŽŸ:…‘Gâtab-insert‘¦f(M-TAB)Ž¡‘Kâ:áInsert–¦fa“tab“c²!haracter.Ž¦‘Gâself-insert–¦f(a,“b,“A,“1,“!,“..&.Ž‘åe)Ž¡‘Kâ:áInsert‘¦fy²!ourself.Ž¦‘Gâbracketed-paste-begin‘¦f()Ž¡‘Kâ:áThis–û6function›û7is“in²!tended˜to˜bšMÞe“b˜ound“to›û7the“â"ábrac•²!k“eted˜pasteâ"˜áescapMÞe‘û6sequenceŽ¡‘Kâ:sen•²!t›b“y‘some˜terminals,‘·¯and˜suc“h˜a–binding˜is“assigned˜b•²!y˜default.‘mÁIt˜allo“wsŽ¡‘Kâ:Readline–çÌto›çËinsert“the˜pasted“text˜as“a˜single“unit˜without“treating˜eacš²!h“c˜har-Ž¡‘Kâ:acter–ª‘as›ª’if“it“had˜bMÞeen“read“from˜the“kš²!eybMÞoard.‘ê_The“c˜haracters‘ª’are“insertedŽ¡‘Kâ:as–LPif›LOeac²!h“one˜w²!as“bMÞound“to˜âself-insert“áinstead˜of“executing˜an²!y“editingŽ¡‘Kâ:commands.ŽŸ¶Ü‘Kâ:Brac•²!k“eted–U`paste›U_sets“the˜region“(the˜cš²!haracters“b•MÞet˜w˜een‘U_p“oin˜t–U`and‘U_the“mark)Ž¡‘Kâ:to–›¶the››µinserted“text.‘½ÌIt˜uses“the˜concept“of“an˜äactive‘Ìšmark‘&-»á:‘È|when˜the“markŽ¡‘Kâ:is–5activš²!e,‘XÈReadline“redispla˜y“uses“the‘5terminal's“standout“moMÞde“to“denote“theŽ¡‘Kâ:region.Ž¦‘Gâtranspose-chars‘¦f(C-t)Ž¡‘Kâ:áDrag–Õãthe“cš²!haracter“bMÞefore‘Õâthe“cursor“forw˜ard“o˜v˜er“the“c˜haracter‘Õâat“the“cursor,Ž¡‘Kâ:moš²!ving–C"the“cursor‘C!forw˜ard“as“w˜ell.‘´If“the“insertion‘C!pMÞoin˜t“is“at“the‘C!end“of“theŽ¡‘Kâ:line,‘ÕÍthen–¡¦this“transpMÞoses“the“last“t•²!w“o‘¡§c“haracters–¡¦of“the“line.‘†óNegativš²!e“argumen˜tsŽ¡‘Kâ:ha•²!v“e–¦fno“eect.Ž¦‘Gâtranspose-words‘¦f(M-t)Ž¡‘Kâ:áDrag–áÜthe“w²!ord‘áÝbšMÞefore“p˜oinš²!t“past“the“w˜ord‘áÝafter“p•MÞoin˜t,‘ð¹mo˜ving‘áÝp“oin˜t–áÜpast“thatŽ¡‘Kâ:wš²!ord–g¸as“w˜ell.‘ÈùIf“the“insertion“pMÞoin˜t“is“at“the“end“of“the‘g¹line,‘tAthis“transpMÞoses“theŽ¡‘Kâ:last›¦ft•²!w“o˜w“ords˜on˜the˜line.ŽŸ:…‘Gâupcase-word‘¦f(M-u)Ž¡‘Kâ:áUppMÞercase–ÖÓthe‘ÖÒcurrenš²!t“(or“follo˜wing)“w˜ord.‘o#With“a‘ÖÒnegativ˜e“argumen˜t,‘âîuppMÞer-Ž¡‘Kâ:case–¦fthe“previous“wš²!ord,“but“do“not“mo˜v˜e“the“cursor.Ž¦‘Gâdowncase-word‘¦f(M-l)Ž¡‘Kâ:áLo•²!w“ercase›”ãthe‘”âcurren“t˜(or‘”âfollo“wing)˜w“ord.‘‚²With‘”âa˜negativ“e˜argumen“t,‘Ë–lo“w“ercaseŽ¡‘Kâ:the–¦fprevious“wš²!ord,“but“do“not“mo˜v˜e“the“cursor.Ž¦‘Gâcapitalize-word‘¦f(M-c)Ž¡‘Kâ:áCapitalize–6the›5curren²!t“(or˜folloš²!wing)“w˜ord.‘€#With‘5a“negativ˜e“argumen˜t,‘ÅrcapitalizeŽ¡‘Kâ:the–¦fprevious“wš²!ord,“but“do“not“mo˜v˜e“the“cursor.ŽŽŒ‹&$lŸò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®20ŽŽŽ ƒ33 ý ÌÍ‘Gâoverwrite-mode‘¦f()Ž¤
33‘Kâ:áT‘ÿeoggle›öo•²!v“erwrite˜mo•MÞde.‘Í  With˜an˜explicit˜p“ositiv•²!e‘ö n“umeric˜argumen“t,‘
        !            79: 
switc“hesŽ¡‘Kâ:to›™ÿo•²!v“erwrite–šmoMÞde.‘„fWith˜an“explicit˜non-pMÞositivš²!e“n˜umeric–™ÿargumen˜t,‘Ï®switc˜hes“toŽ¡‘Kâ:insert–¬ÛmoMÞde.‘ñ=This›¬Ücommand“aects“only˜âemacs“ámošMÞde;‘°âvi“ámo˜de‘¬Üdo˜es“o•²!v“erwriteŽ¡‘Kâ:dieren•²!tly‘ÿe.‘ÝÝEac“h–¦fcall“to“âreadline()“ástarts“in“insert“moMÞde.ŽŸÐ$‘Kâ:In›Ièo•²!v“erwrite˜moMÞde,‘òÈc“haracters˜bMÞound˜to˜âself-insert‘Iéáreplace˜the˜text˜atŽ¡‘Kâ:pMÞoinš²!t–rather“than“pushing“the“text“to“the“righ˜t.‘‚Characters“bMÞound“toŽ¡‘Kâ:âbackward-delete-char–¦fáreplace“the“c²!haracter“bšMÞefore“p˜oin²!t“with“a“space.ŽŸÐ#‘Kâ:By–¦fdefault,“this“command“is“un²!bMÞound.ŽŸ9â‘Gëg1.4.4‘d(Killing–íMAnd“Y‘þÄ£ankingŽŽŸP$‘Gâkill-line‘¦f(C-k)Ž¡‘Kâ:áKill–Âáthe“text›Ââfrom“pMÞoin²!t“to“the“end“of˜the“line.‘3NWith“a˜negativš²!e“n˜umeric“argu-Ž¡‘Kâ:menš²!t,–¦fkill“bac˜kw˜ard“from“the“cursor“to“the“bMÞeginning“of“the“curren˜t“line.Ž©m‘Gâbackward-kill-line–¦f(C-x“Rubout)Ž¡‘Kâ:áKill›ÌÔbac•²!kw“ard˜from˜the‘ÌÕcursor˜to˜the˜bMÞeginning˜of˜the˜curren“t˜line.‘Q(With˜aŽ¡‘Kâ:negativ•²!e›m£n“umeric˜argumen“t,‘ßrkill˜forw“ard˜from˜the˜cursor˜to˜the˜end˜of˜theŽ¡‘Kâ:curren²!t‘¦fline.ŽŸm‘Gâunix-line-discard‘¦f(C-u)Ž¡‘Kâ:áKill›¦fbac•²!kw“ard˜from˜the˜cursor˜to˜the˜bMÞeginning˜of˜the˜curren“t˜line.Ž¦‘Gâkill-whole-line‘¦f()Ž¡‘Kâ:áKill–cjall“cš²!haracters‘cion“the“curren˜t“line,‘’ªno“matter“where“pMÞoin˜t“is.‘èBy“default,Ž¡‘Kâ:this–¦fis“un²!bMÞound.ŽŸm‘Gâkill-word‘¦f(M-d)Ž¡‘Kâ:áKill–‡from“pMÞoin²!t›‡to“the“end“of“the˜currenš²!t“w˜ord,‘Por‘‡if“bMÞet˜w˜een“w˜ords,‘Qto“the“endŽ¡‘Kâ:of–¦fthe“next“w²!ord.‘ÝÝW‘ÿeord“bMÞoundaries“are“the“same“as“âforward-wordá.Ž¦‘Gâbackward-kill-word‘¦f(M-DEL)Ž¡‘Kâ:áKill–wÖthe›w×w²!ord“b•MÞehind˜p“oin²!t.‘ÎXW‘ÿeord›wÖb“oundaries˜are–w×the˜same“as˜âbackward-wordá.ŽŸm‘Gâshell-transpose-words‘¦f(M-C-t)Ž¡‘Kâ:áDrag–áÜthe“w²!ord‘áÝbšMÞefore“p˜oinš²!t“past“the“w˜ord‘áÝafter“p•MÞoin˜t,‘ð¹mo˜ving‘áÝp“oin˜t–áÜpast“thatŽ¡‘Kâ:wš²!ord–g¸as“w˜ell.‘ÈùIf“the“insertion“pMÞoin˜t“is“at“the“end“of“the‘g¹line,‘tAthis“transpMÞoses“theŽ¡‘Kâ:last›£t•²!w“o‘£w“ords˜on–£the˜line.‘ÜÅW‘ÿeord“bMÞoundaries˜are“the˜same“as˜âshell-forward-Ž¡‘Kâ:word–¦fáand“âshell-backward-wordá.Ž¦‘Gâunix-word-rubout‘¦f(C-w)Ž¡‘Kâ:áKill–ÍLthe“w²!ord“bšMÞehind“p˜oinš²!t,‘×using“white“space“as“a“w˜ord“bMÞoundary‘ÿe.‘RThe“killedŽ¡‘Kâ:text–¦fis“sa•²!v“ed–¦fon“the“kill-ring.ŽŸm‘Gâunix-filename-rubout‘¦f()Ž¡‘Kâ:áKill–]Üthe“w²!ord“bšMÞehind“p˜oinš²!t,‘‹ºusing“white“space“and“the“slash“c˜haracter“as“theŽ¡‘Kâ:wš²!ord–¦fbMÞoundaries.‘ÝÝThe“killed“text“is“sa˜v˜ed“on“the“kill-ring.Ž¦‘Gâdelete-horizontal-space‘¦f()Ž¡‘Kâ:áDelete–¦fall“spaces“and“tabs“around“pMÞoinš²!t.‘ÝÝBy“default,“this“is“un˜bMÞound.ŽŽŒ‹&0ÔŸò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®21ŽŽŽ ƒ33 ý ÌÍ‘Gâkill-region‘¦f()Ž¤
33‘Kâ:áKill–¦fthe“text“in“the“currenš²!t“region.‘ÝÝBy“default,“this“command“is“un˜bMÞound.Ž©‚T‘Gâcopy-region-as-kill‘¦f()Ž¡‘Kâ:áCop²!y–³the›²text“in˜the“region˜to“the˜kill“buer,‘0Eso˜it“can˜bMÞe“y•²!ank“ed˜righ“t‘³a“w“a“y‘ÿe.Ž¡‘Kâ:By–¦fdefault,“this“command“is“un²!bMÞound.ŽŸ‚U‘Gâcopy-backward-word‘¦f()Ž¡‘Kâ:áCopš²!y–žthe“w˜ord“bšMÞefore“p˜oinš²!t“to“the“kill‘žbuer.‘ÄÿThe“w˜ord“bMÞoundaries“are“theŽ¡‘Kâ:same–¦fas“âbackward-wordá.‘ÝÝBy“default,“this“command“is“un²!bMÞound.Ž¦‘Gâcopy-forward-word‘¦f()Ž¡‘Kâ:áCopš²!y–º8the“w˜ord“follo˜wing‘º9pMÞoin˜t“to“the“kill“buer.‘SThe‘º9w˜ord“bMÞoundaries“are“theŽ¡‘Kâ:same–¦fas“âforward-wordá.‘ÝÝBy“default,“this“command“is“un²!bMÞound.Ž¦‘Gâyank‘¦f(C-y)Ž¡‘Kâ:áY‘ÿeank–¦fthe“top“of“the“kill“ring“inš²!to“the“buer“at“pMÞoin˜t.Ž¦‘Gâyank-pop‘¦f(M-y)Ž¡‘Kâ:áRotate–'!the“kill-ring,‘GPand“y²!ank“the“new“top.‘`Y‘ÿeou“can‘'"only“do“this“if“the“priorŽ¡‘Kâ:command–¦fis“âyank“áor“âyank-popá.ŽŸO"‘Gëg1.4.5‘d(Spiecifying–íMNumeric“Argumen–átsŽŽ©ÚÑGâdigit-argument–¦f(èM-0â,“èM-1â,“..&.Ž‘‹ËèM--â)Ž¡‘Kâ:áAdd–:Lthis›:Kdigit“to“the˜argumenš²!t“already“accum˜ulating,‘Oêor“start“a‘:Knew“argumen˜t.Ž¡‘Kâ:èM--–¦fástarts“a“negativš²!e“argumen˜t.ŽŸ‚U‘Gâuniversal-argument‘¦f()Ž¡‘Kâ:áThis–kis“another“w•²!a“y›jto–kspMÞecify“an“argumen²!t.‘«ßIf“this“command˜is“follo•²!w“ed›kb“y˜oneŽ¡‘Kâ:or–more›digits,‘“´optionally“with˜a“leading“min²!us“sign,‘“³those“digits“dene˜the“ar-Ž¡‘Kâ:gumenš²!t.‘ÐÚIf‘[the–\command“is“follo˜w˜ed“b˜y“digits,‘‡*executing“âuniversal-argumentŽ¡‘Kâ:áagain–Ñ«ends‘Ѫthe“nš²!umeric“argumen˜t,‘Ü{but“is“otherwise›Ѫignored.‘_«As“a˜spMÞecial“case,Ž¡‘Kâ:if–ñúthis›ñûcommand“is“immediately˜follo•²!w“ed›ñúb“y˜a˜c“haracter–ñûthat˜is˜neither“a˜digitŽ¡‘Kâ:nor–ôÝminš²!us“sign,‘H{the“argumen˜t“coun˜t“for“the“next‘ôÞcommand“is“m˜ultiplied“b˜yŽ¡‘Kâ:four.‘ŽïThe›6Áargumen•²!t‘6Âcoun“t˜is˜initially–6Âone,‘Z×so“executing˜this˜function“the˜rstŽ¡‘Kâ:time–omakš²!es‘othe“argumen˜t‘ocoun˜t“four,‘z&a›osecond“time˜mak²!es“the˜argumenš²!t“coun˜tŽ¡‘Kâ:sixteen,–¦fand“so“on.‘ÝÝBy“default,“this“is“not“bMÞound“to“a“k²!ey‘ÿe.ŽŸO!‘Gëg1.4.6‘d(Letting–íMReadline“T–áypie“F›þÄ£or“Y˜ouŽŽ¦‘Gâcomplete‘¦f(TAB)Ž¡‘Kâ:áA²!ttempt–¶èto›¶çpMÞerform“completion˜on“the˜text“b•MÞefore˜p“oin²!t.‘Ž        The˜actual‘¶ècompletionŽ¡‘Kâ:pšMÞerformed–¦fis“application-sp˜ecic.‘ÝÝThe“default“is“lename“completion.ŽŸ‚U‘Gâpossible-completions‘¦f(M-?)Ž¡‘Kâ:áList–)¯the›)®pMÞossible“completions˜of“the˜text“b•MÞefore˜p“oin•²!t.‘g·When˜displa“ying‘)¯com-Ž¡‘Kâ:pletions,‘ôfReadline–äÌsets›äÍthe“n•²!um“bMÞer˜of–äÌcolumns“used˜for“displa²!y˜to“the˜v‘ÿdDalue“ofŽ¡‘Kâ:âcompletion-display-widthá,‘Uthe–aŒv›ÿdDalue“of“the“en•²!vironmen“t–aŒv˜ariable“âCOLUMNSá,Ž¡‘Kâ:or–¦fthe“screen“width,“in“that“order.ŽŸ‚T‘Gâinsert-completions‘¦f(M-*)Ž¡‘Kâ:áInsert–«µall“completions“of“the“text“bšMÞefore“p˜oinš²!t“that“w˜ould“ha˜v˜e“bMÞeen“generatedŽ¡‘Kâ:b²!y‘¦fâpossible-completionsá.ŽŽŒ‹&<âŸò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®22ŽŽŽ ƒ33 ý ÌÍ‘Gâmenu-complete‘¦f()Ž¤
33‘Kâ:áSimilar–ÛVto“âcompleteá,‘óbut“replaces“the“wš²!ord“to‘ÛWbMÞe“completed“with“a“single“matc˜hŽ¡‘Kâ:from–‹æthe‘‹çlist“of“pšMÞossible“completions.‘Ž^Rep˜eated“execution‘‹çof“âmenu-completeŽ¡‘Kâ:ásteps–Õ¯through›Õ°the“list“of“pMÞossible˜completions,‘!inserting“eacš²!h“matc˜h‘Õ°in“turn.Ž¡‘Kâ:A²!t–jthe“end“of›jthe“list“of“completions,‘›šthe“bMÞell“is“rung˜(sub‘›»ject“to“the“settingŽ¡‘Kâ:of–Thâbell-styleá)“and“the›Tioriginal“text“is“restored.‘çãAn“argumen²!t˜of“ån“ámo•²!v“es‘ThånŽ¡‘Kâ:ápMÞositions–,Rforw²!ard›,Qin“the“list˜of“matcš²!hes;‘oGa“negativ˜e‘,Qargumen˜t“ma˜y“bMÞe‘,Qused“toŽ¡‘Kâ:mo•²!v“e›™Žbac“kw“ard˜through˜the˜list.‘·VThis˜command˜is˜in“tended˜to˜b•MÞe˜b“ound˜toŽ¡‘Kâ:âTABá,–¦fbut“is“unš²!bMÞound“b˜y“default.Ž©µ‡‘Gâmenu-complete-backward‘¦f()Ž¡‘Kâ:áIdenš²!tical–5ato“âmenu-completeá,‘Ybut‘5`mo˜v˜es“bac˜kw˜ard“through“the‘5`list“of“pMÞossibleŽ¡‘Kâ:completions,–¦fas“if“âmenu-complete“áhad“bMÞeen“givš²!en“a“negativ˜e“argumen˜t.ŽŸµˆ‘Gâdelete-char-or-list‘¦f()Ž¡‘Kâ:áDeletes–«éthe›«èc²!haracter“under“the“cursor˜if“not“at˜the“bMÞeginning“or“end˜of“theŽ¡‘Kâ:line–öØ(lik²!e›öÙâdelete-chará).‘Ï4If“at˜the“end“of˜the“line,‘ŠôbMÞeha•²!v“es˜iden“tically‘öØtoŽ¡‘Kâ:âpossible-completionsá.‘ÝÝThis–¦fcommand“is“unš²!bMÞound“b˜y“default.ŽŸ‚T‘Gëg1.4.7‘d(Keybioard‘íMMacrosŽŽŸt^‘Gâstart-kbd-macro–¦f(C-x“()Ž¡‘Kâ:áBegin–¦fsaš²!ving“the“c˜haracters“t˜ypMÞed“in˜to“the“curren˜t“k˜eybMÞoard“macro.Ž¦‘Gâend-kbd-macro–¦f(C-x“))Ž¡‘Kâ:áStop–G!saš²!ving“the“c˜haracters‘G"t˜ypMÞed“in˜to“the“curren˜t“k˜eybMÞoard“macro‘G"and“sa˜v˜e“theŽ¡‘Kâ:denition.Ž¦‘Gâcall-last-kbd-macro–¦f(C-x“e)Ž¡‘Kâ:áRe-execute–9Bthe“last‘9Ckš²!eybMÞoard“macro“dened,‘]ùb˜y“making“the‘9Cc˜haracters“in“theŽ¡‘Kâ:macro–¦fappšMÞear“as“if“t²!yp˜ed“at“the“k²!eyb˜oard.ŽŸµˆ‘Gâprint-last-kbd-macro‘¦f()Ž¡‘Kâ:áPrinš²!t–¦fthe“last“k˜ebMÞoard“macro“dened“in“a“format“suitable“for“the“åinputrc‘Pjále.ŽŸ‚T‘Gëg1.4.8‘d(Some–íMMiscellaneous“CommandsŽŽŸt^‘Gâre-read-init-file–¦f(C-x“C-r)Ž¡‘Kâ:áRead– kin“the› jcon•²!ten“ts– kof“the“åinputrc‘Joále,‘ÔÐand“incorpMÞorate“an²!y˜bindings“or“v‘ÿdDariableŽ¡‘Kâ:assignmen²!ts–¦ffound“there.Ž¦‘Gâabort‘¦f(C-g)Ž¡‘Kâ:áAbMÞort–/the›/curren²!t“editing˜command“and˜ring“the˜terminal's“bMÞell˜(sub‘›»ject“to˜theŽ¡‘Kâ:setting–¦fof“âbell-styleá).ŽŸµˆ‘Gâdo-lowercase-version–¦f(M-A,“M-B,“M-èxâ,“..&.Ž‘åe)Ž¡‘Kâ:áIf–4©the“metaed›4ªc²!haracter“åx‘öáis“uppMÞer“case,‘X:run“the“command“that˜is“bMÞound“toŽ¡‘Kâ:the–öUcorrespMÞonding›öTmetaed“lo•²!w“er˜case‘öUc“haracter.‘Í©The˜bMÞeha“vior–öUis˜undened“ifŽ¡‘Kâ:åx‘gÅáis–¦falready“lo•²!w“er‘¦fcase.Ž¦‘Gâprefix-meta‘¦f(ESC)Ž¡‘Kâ:áMetafy–‚2the›‚1next“c•²!haracter˜t“ypMÞed.‘q@This–‚2is˜for“k²!eybMÞoards˜without“a˜meta“k²!ey‘ÿe.Ž¡‘Kâ:Tš²!yping–¦f`âESC“fá'“is“equiv‘ÿdDalen˜t“to“t˜yping“èM-fá.ŽŽŒ‹&IŠŸò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®23ŽŽŽ ƒ33 ý ÌÍ‘Gâundo–¦f(C-_“or“C-x“C-u)Ž¤
33‘Kâ:áIncremenš²!tal–¦fundo,“separately“remem˜bMÞered“for“eac˜h“line.Ž©¹‘Gârevert-line‘¦f(M-r)Ž¡‘Kâ:áUndo–úall“cš²!hanges“made“to“this“line.‘ØåThis“is“lik˜e“executing“the“âundo“ácommandŽ¡‘Kâ:enough–¦ftimes“to“get“bac²!k“to“the“bMÞeginning.Ž¦‘Gâtilde-expand‘¦f(M-~)Ž¡‘Kâ:áPš²!erform–¦ftilde“expansion“on“the“curren˜t“w˜ord.Ž¦‘Gâset-mark‘¦f(C-@)Ž¡‘Kâ:áSet–ðthe“mark“to“the“pMÞoinš²!t.‘ºØIf“a‘ðn˜umeric“argumen˜t“is“supplied,‘ythe“mark“is“setŽ¡‘Kâ:to–¦fthat“pMÞosition.Ž¦‘Gâexchange-point-and-mark–¦f(C-x“C-x)Ž¡‘Kâ:áSwš²!ap–¾Òthe“pMÞoin˜t“with“the“mark.‘'"The“curren˜t“cursor“pMÞosition“is“set“to“the“sa˜v˜edŽ¡‘Kâ:pšMÞosition,–¦fand“the“old“cursor“p˜osition“is“sa•²!v“ed–¦fas“the“mark.Ž¦‘Gâcharacter-search‘¦f(C-])Ž¡‘Kâ:áA‘ü&cš²!haracter–üQis‘üRread“and“pMÞoin˜t‘üRis“mo˜v˜ed“to›üRthe“next“oMÞccurrence“of˜that“c²!haracter.Ž¡‘Kâ:A–¦fnegativš²!e“coun˜t“searc˜hes“for“previous“oMÞccurrences.ŽŸ¸‘Gâcharacter-search-backward‘¦f(M-C-])Ž¡‘Kâ:áA‘c"c²!haracter–c•is›c”read“and˜pMÞoinš²!t“is“mo˜v˜ed›c”to“the˜previous“oMÞccurrence˜of“thatŽ¡‘Kâ:c•²!haracter.‘ÝÝA›¦fnegativ“e˜coun“t˜searc“hes˜for˜subsequen“t˜oMÞccurrences.Ž¦‘Gâskip-csi-sequence‘¦f()Ž¡‘Kâ:áRead–G¬enough“cš²!haracters‘G­to“consume“a“m˜ulti-k˜ey“sequence“suc˜h‘G­as“those“denedŽ¡‘Kâ:for–z÷kš²!eys“lik˜e‘zøHome“and“End.‘[‘Suc˜h“sequences“bMÞegin“with‘zøa“Con˜trol“SequenceŽ¡‘Kâ:Indicator–fM(CSI),“usually–fLESC-[.‘’If“this–fMsequence“is“bMÞound‘fLto“â"\áe[â"á,‘–Fk²!eys“pro-Ž¡‘Kâ:ducing–Ö‰sucš²!h“sequences“will‘Öˆha˜v˜e“no“eect“unless“explicitly“bMÞound‘Öˆto“a“readlineŽ¡‘Kâ:command,‘ßÔinstead–ÔXof“inserting“straš²!y“c˜haracters“in˜to“the“editing‘ÔWbuer.‘g³This“isŽ¡‘Kâ:un•²!bMÞound›¦fb“y˜default,˜but˜usually˜bMÞound˜to˜ESC-[.Ž¦‘Gâinsert-comment‘¦f(M-#)Ž¡‘Kâ:áWithout–GÑa‘GÐnš²!umeric“argumen˜t,‘p*the“v‘ÿdDalue›GÐof“the˜âcomment-begin“áv‘ÿdDariable˜is“in-Ž¡‘Kâ:serted–Ìèat›Ìéthe“bMÞeginning“of“the˜currenš²!t“line.‘QdIf“a“n˜umeric“argumen˜t‘Ìéis“supplied,Ž¡‘Kâ:this–cøcommand“acts“as“a“toggle:‘Y&if‘c÷the“c²!haracters“at“the“bMÞeginning“of“the“lineŽ¡‘Kâ:do–¬Ânot“matc²!h“the‘¬Ãv›ÿdDalue“of“âcomment-beginá,‘®Ythe“v˜alue“is‘¬Ãinserted,‘®Yotherwise“theŽ¡‘Kâ:c²!haracters–Ó6in“âcomment-begin“áare›Ó5deleted“from“the“bMÞeginning“of“the˜line.‘dMInŽ¡‘Kâ:either–¦fcase,“the“line“is“accepted“as“if“a“newline“had“bšMÞeen“t²!yp˜ed.Ž¦‘Gâdump-functions‘¦f()Ž¡‘Kâ:áPrin²!t–,Qall›,Pof“the˜functions“and“their˜k²!ey“bindings“to˜the“Readline˜output“stream.Ž¡‘Kâ:If–Îïa“nš²!umeric“argumen˜t›Îðis“supplied,‘Ùthe“output“is“formatted“in˜sucš²!h“a“w˜a˜y“thatŽ¡‘Kâ:it–¦fcan“bšMÞe“made“part“of“an“åinputrc‘Pjále.‘ÝÝThis“command“is“un²!b˜ound“b²!y“default.Ž¦‘Gâdump-variables‘¦f()Ž¡‘Kâ:áPrin²!t–ŽÉall“of“the‘ŽÈsettable“v›ÿdDariables“and“their“v˜alues“to‘ŽÈthe“Readline“output“stream.Ž¡‘Kâ:If–Îïa“nš²!umeric“argumen˜t›Îðis“supplied,‘Ùthe“output“is“formatted“in˜sucš²!h“a“w˜a˜y“thatŽ¡‘Kâ:it–¦fcan“bšMÞe“made“part“of“an“åinputrc‘Pjále.‘ÝÝThis“command“is“un²!b˜ound“b²!y“default.ŽŽŒ‹&UŸò‘GáChapter–¦f1:‘ÝÝCommand“Line“Editing’ýÓ®24ŽŽŽ ƒ33 ý ÌÍ‘Gâdump-macros‘¦f()Ž¤
33‘Kâ:áPrinš²!t–
ˆall“of“the‘
‡Readline“k˜ey“sequences“bMÞound“to“macros‘
‡and“the“strings“theyŽ¡‘Kâ:output.‘rŠIf–-Ja“nš²!umeric“argumen˜t“is›-Ksupplied,‘Othe“output“is“formatted˜in“suc²!h“aŽ¡‘Kâ:w•²!a“y–šthat›šit“can“bMÞe˜made“part“of˜an“åinputrc‘Dále.‘ÙÂThis“command“is˜unš²!bMÞound“b˜yŽ¡‘Kâ:default.Ž©33‘Gâemacs-editing-mode‘¦f(C-e)Ž¡‘Kâ:áWhen–¦fin“âvi“ácommand“mošMÞde,“this“causes“a“switc²!h“to“âemacs“áediting“mo˜de.Ž¦‘Gâvi-editing-mode‘¦f(M-C-j)Ž¡‘Kâ:áWhen–¦fin“âemacs“áediting“mošMÞde,“this“causes“a“switc²!h“to“âvi“áediting“mo˜de.ŽŸ‘Gë]1.5‘™Readline–f@vi“Mos3deŽŽ¦‘GáWhile–É`the“Readline›É_library“doMÞes“not“ha•²!v“e–É`a˜full“set“of“âvi˜áediting“functions,‘Òit“doMÞes“con²!tainŽ¡‘Genough–to›žallo²!w“simple˜editing“of“the˜line.‘.ƒThe˜Readline“âvi“ámo•MÞde˜b“eha•²!v“es–as˜spMÞecied“inŽ¡‘Gthe–¦fçposix“ástandard.Ž©33‘!GIn–|Uorder›|Vto“switc•²!h˜in“teractiv“ely‘|UbMÞet“w“een˜âemacs–|Uáand˜âvi“áediting˜moMÞdes,‘„¿use˜the“commandŽ¡‘GèM-C-j–iá(bšMÞound‘jto“emacs-editing-mo˜de“when“in‘jâvi“ámo˜de“and“to‘jvi-editing-mo˜de“in“âemacsŽ¡‘GámošMÞde).‘ÝÝThe–¦fReadline“default“is“âemacs“ámo˜de.Ž¦‘!GWhen–›‰yš²!ou“en˜ter“a“line“in“âvi“ámoMÞde,‘µy˜ou‘›Šare“already“placed“in“`insertion'“moMÞde,‘µas“if“y˜ouŽ¡‘Ghad–ˆtš²!ypMÞed“an‘ˆ`âiá'.‘ÓÃPressing“âESC“áswitc˜hes‘ˆy˜ou“in˜to“`command'“moMÞde,‘Ž(where“y˜ou‘ˆcan“edit“theŽ¡‘Gtext–of“the“line“with“the“standard“âvi“ámo•²!v“emen“t›k“eys,‘);mo“v“e˜to˜previous˜history˜lines˜withŽ¡‘G`âká'–¦fand“subsequen²!t“lines“with“`âjá',“and“so“forth.ŽŽŒ‹&b\Ÿò’&¸¼Ëá25ŽŽŽ ƒ33 ý ÌÍ‘GëT2‘      ¸QProgramming–z³with“GNU“ReadlineŽŽŸ]‘GáThis–ü cš²!hapter‘üdescribMÞes“the“in˜terface‘übMÞet˜w˜een“the“çgnu›üáReadline“Library“and˜other“programs.Ž¤
33‘GIf–}Éyš²!ou“are“a“programmer,‘…èand“y˜ou“wish“to“include“the“features“found“in“çgnu“áReadline“suc˜hŽ¡‘Gas–ý­completion,›lline“editing,˜and“in•²!teractiv“e–ý­history“manipulation“in“yš²!our“o˜wn“programs,‘lthisŽ¡‘Gsection–¦fis“for“y²!ou.ŽŸ”ó‘Gë]2.1‘™Basic‘f@BehaŒÌviorŽŽŸ33‘GáMan•²!y›’programs‘’pro“vide˜a˜command‘’line˜in“terface,‘Ísuc“h˜as˜âmailá,‘Íâftpá,‘Íand‘’âshá.‘ ôF‘ÿeor˜suc“hŽ¡‘Gprograms,‘x³the–mFdefault“bMÞehaš²!viour“of“Readline“is“sucien˜t.‘ÊÓThis“section“describMÞes“ho˜w“to“useŽ¡‘GReadline–!tin“the‘!usimplest“w•²!a“y›!tp•MÞossible,‘@8p“erhaps˜to˜replace‘!ucalls˜in˜y²!our˜co“de‘!uto˜âgets()˜áorŽ¡‘Gâfgets()á.Ž©–€‘!GThe–èæfunction“âreadline()“áprin²!ts“a“prompt“åprompt‘%çáand“then“reads“and“returns“a“singleŽ¡‘Gline–í¨of“text“from“the“user.‘³¢If“åprompt‘*¨áis“âNULL“áor“the“emptš²!y“string,‘ÿxno“prompt“is“displa˜y˜ed.Ž¡‘GThe–u}line›u|âreadline“áreturns“is˜alloMÞcated“with“âmalloc()á;‘Ýthe˜caller“should“âfree()˜áthe“lineŽ¡‘Gwhen–¦fit“has“nished“with“it.‘ÝÝThe“declaration“for“âreadline“áin“ANSI“C“isŽ¤–‘.ùœâchar–¿ª*readline“(const“char“*èpromptâ);Ž¦‘GáSo,–¦fone“mighš²!t“sa˜yŽ¡‘.ùœâchar–¿ª*line“=“readline“("Enter“a“line:“");Ž¦‘Gáin–¾—order“to›¾–read“a“line“of“text“from˜the“user.‘˜The“line“returned“has“the˜nal“newline“remo•²!v“ed,Ž©
33‘Gso–¦fonly“the“text“remains.Ž¡‘!GIf–ÜÆâreadline“áencounš²!ters“an“âEOF“áwhile“reading“the“line,‘*^and“the“line“is“empt˜y“at“thatŽ¦‘GpMÞoin²!t,›^then–‡â(char‘¦f*)NULL“áis“returned.‘ÓoOtherwise,˜the“line“is‘‡ended“just“as“if“a“newline“hadŽ¦‘Gb•MÞeen‘¦ft²!yp“ed.ŽŸ–€‘!GReadline–¡ZpšMÞerforms“some“expansion“on“the“åprompt‘ÞZáb˜efore“it“is“displa•²!y“ed–¡Zon“the“screen.‘†ÙSeeŽ¦‘Gthe–@Ádescription“of“ârl_expand_prompt“á(see“Section“2.4.6‘@Â[Redispla²!y],‘Upage“38)“for“additionalŽ¦‘Gdetails,‘Ö
        !            80: espMÞecially–™Pif“åprompt‘ÖPáwill“conš²!tain“c˜haracters‘™Othat“do“not“consume“ph˜ysical“screenŽ¦‘Gspace–¦fwhen“displa•²!y“ed.Ž¡‘!GIf–=Ayš²!ou“w˜an˜t›=Bthe“user“to“bMÞe˜able“to“get“at“the˜line“later,›RI(with“âC-p“áfor“example),˜yš²!ou“m˜ustŽ¦‘Gcall–¦fâadd_history()“áto“sa•²!v“e–¦fthe“line“a•²!w“a“y–¦fin“a“åhistory‘–~álist“of“suc²!h“lines.Ž©–€‘.ùœâadd_history‘¿ª(line);Ž¡‘GáF›ÿeor–¦ffull“details“on“the“GNU“History“Library˜,“see“the“assoMÞciated“man²!ual.Ž¦‘!GIt–Ãis“preferable“to“a•²!v“oid‘ÃŒsa“ving›Ãempt“y˜lines˜on˜the˜history˜list,‘ÊÖsince˜users˜rarely˜ha“v“e˜aŽ¤
33‘Gburning–‘4need“to›‘5reuse“a“blank“line.‘ÖÍHere“is“a“function“whic²!h“usefully˜replaces“the“standardŽ¡‘Gâgets()–¦fálibrary“function,“and“has“the“adv‘ÿdDanš²!tage“of“no“static“buer“to“o˜v˜er
o˜w:ŽŸ–‘.ùœâ/*–¿ªA“static“variable“for“holding“the“line.“*/Ž¡‘.ùœstatic–¿ªchar“*line_read“=“(char“*)NULL;ŽŸff‘.ùœ/*–¿ªRead“a“string,“and“return“a“pointer“to“it.Ž¡‘@8šReturns–¿ªNULL“on“EOF.“*/Ž¡‘.ùœchar‘¿ª*Ž¡‘.ùœrl_gets‘¿ª()Ž¡‘.ùœ{ŽŽŒ‹&iIŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—26ŽŽŽ ƒ33 ý ÌÍ‘:xðâ/*–¿ªIf“the“buffer“has“already“been“allocated,Ž¤
33‘K·îreturn–¿ªthe“memory“to“the“free“pool.“*/Ž¡‘:xðif‘¿ª(line_read)Ž¡‘EøD{Ž¡‘Qw˜free‘¿ª(line_read);Ž¡‘Qw˜line_read–¿ª=“(char“*)NULL;Ž¡‘EøD}Ž©ff‘:xð/*–¿ªGet“a“line“from“the“user.“*/Ž¡‘:xðline_read–¿ª=“readline“("");Ž¦‘:xð/*–¿ªIf“the“line“has“any“text“in“it,Ž¡‘K·îsave–¿ªit“on“the“history.“*/Ž¡‘:xðif–¿ª(line_read“&&“*line_read)Ž¡‘EøDadd_history‘¿ª(line_read);Ž¦‘:xðreturn‘¿ª(line_read);Ž¡‘.ùœ}Ž©ïÖ‘!GáThis–`ˆfunction“givš²!es“the“user“the“default“bMÞeha˜viour“of“âTAB“ácompletion:‘ºîcompletion“on“leŽ¡‘Gnames.‘ôÞIf‘®yš²!ou–®do“not“w˜an˜t“Readline“to“complete“on–®lenames,‘¯ûy˜ou“can–®c˜hange“the“bindingŽ¡‘Gof–¦fthe“âTAB“ák²!ey“with“ârl_bind_key()á.ŽŸïÕ‘.ùœâint–¿ªrl_bind_key“(int“èkeyâ,“rl_command_func_t“*èfunctionâ);Ž¦‘!Grl_bind_key()–—átakš²!es“t˜w˜o––argumen˜ts:‘ž?åk˜ey‘ö¯áis“the–—c˜haracter“that“y˜ou“w˜an˜t‘–to“bind,‘£andŽ¡‘Gåfunction–ªäáis“the“address“of‘ªåthe“function“to“call“when“åk²!ey‘šüáis“pressed.‘ëXBinding“âTAB“áto“ârl_Ž¡‘Ginsert()–§wámak²!es›§xâTAB“áinsert“itself.‘áârl_bind_key()“áreturns“non-zero˜if“åk²!ey‘—áis“not˜a“v‘ÿdDalidŽ¡‘GASCIšMÞI–¦fc²!haracter“co˜de“(b˜et•²!w“een–¦f0“and“255).Ž¤ïÕ‘!GThš²!us,–¦fto“disable“the“default“âTAB“ábMÞeha˜vior,“the“follo˜wing“suces:Ž¦‘.ùœârl_bind_key–¿ª('\t',“rl_insert);Ž¡‘!GáThis–+cošMÞde“should‘+b˜e“executed“once“at‘+the“start“of“yš²!our“program;‘T,y˜ou“migh˜t‘+write“a“func-Ž¤
33‘Gtion–ïøcalled›ï÷âinitialize_readline()“áwhic²!h˜pMÞerforms“this˜and“other˜desired“initializations,Ž¡‘Gsuc²!h–¦fas“installing“custom“completers“(see“Section“2.6“[Custom“Completers],“page“51).ŽŸô‘Gë]2.2‘™Custom‘f@F‘þ¦functionsŽŽŸ33‘GáReadline–Eçproš²!vides“man˜y“functions“for‘Eæmanipulating“the“text“of“the“line,‘Y3but“it“isn't“pMÞossibleŽ¡‘Gto–dcan²!ticipate“the›dbneeds“of“all“programs.‘ÓThis“section“describMÞes“the˜v‘ÿdDarious“functions“andŽ¡‘Gv‘ÿdDariables–"dened“within“the‘"Readline“library“whicš²!h“allo˜w“a“user‘"program“to“add“customizedŽ¡‘Gfunctionalit²!y–¦fto“Readline.ŽŸïÕ‘!GBefore–aÛdeclaring›aÜan²!y“functions“that“customize˜Readline's“bMÞeha²!vior,‘¸or“using˜an²!y“func-Ž¡‘Gtionalit•²!y›xQReadline‘xRpro“vides˜in–xRother˜coMÞde,‘ìÌan˜application˜writer“should˜include“the˜leŽ¡‘Gâ<readline/readline.h>–‡áin›†an²!y“le“that“uses˜Readline's“features.‘û?Since“some“of˜the“de-Ž¡‘Gnitions–¾„in›¾…âreadline.h“áuse“the“âstdio˜álibrary‘ÿe,‘Ä‹the˜le“â<stdio.h>“áshould“bMÞe˜included“bMÞeforeŽ¡‘Gâreadline.há.Ž¦‘!Gâreadline.h–¬2ádenes›¬3a“C‘¬1preproMÞcessor“v‘ÿdDariable˜that“should“bMÞe˜treated“as“an˜in²!teger,‘­¥âRL_Ž¡‘GREADLINE_VERSIONá,‘Û&whic•²!h›¨(ma“y˜b•MÞe˜used˜to˜conditionally˜compile˜application˜co“de˜dep“endingŽŽŒ‹&uߟò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—27ŽŽŽ ƒ33 ý ÌÍ‘Gon–4üthe“installed›4ýReadline“v²!ersion.‘‰ŸThe˜v‘ÿdDalue“is“a“hexadecimal“encoMÞding“of˜the“ma‘›»jor“andŽ¤
33‘Gminor–Pvš²!ersion“n˜um˜bMÞers›Oof“the“library‘ÿe,‘8Šof“the“form˜0xåMMmmá.‘<›åMM‘Jþáis˜the“t•²!w“o-digit‘Pma‘›»jorŽ¡‘Gv•²!ersion›z.n“um“bMÞer;‘ˆëåmm‘z-áis˜the˜t“w“o-digit‘z-minor˜v“ersion˜n“um“bMÞer.‘ÏF‘ÿeor˜Readline˜4.2,‘ƒfor˜example,Ž¡‘Gthe–¦fv‘ÿdDalue“of“âRL_READLINE_VERSION“áw²!ould“bMÞe“â0x0402á.ŽŸ34‘Gëg2.2.1‘d(Readline‘íMT–áypiedefsŽŽŸ³3‘GáF–ÿeor›¦freadabilit²!y“,˜w•²!e˜declare˜a˜n“um“bMÞer˜of˜new˜ob‘›»ject˜t“yp•MÞes,˜all˜p“oin²!ters˜to˜functions.Ž©fg‘!GThe–IÖreason›IÕfor“declaring˜these“new˜t²!ypMÞes“is˜to“mak²!e˜it“easier˜to“write˜coMÞde“describingŽ¡‘GpMÞoinš²!ters–¦fto“C“functions“with“appropriately“protot˜ypMÞed“argumen˜ts“and“return“v‘ÿdDalues.ŽŸff‘!GF‘ÿeor›m½instance,‘Ÿ“sa•²!y‘m¾w“e˜w“an“t–m¾to˜declare˜a“v‘ÿdDariable˜åfunc‘Âáas˜a˜pMÞoin²!ter“to˜a“function˜whic²!hŽ¡‘Gtak•²!es›©t“w“o‘¨âint˜áargumen“ts–¨and˜returns“an˜âint“á(this˜is“the˜t²!ypMÞe“of˜all“of˜the“Readline˜bindableŽ¡‘Gfunctions).‘ÝÝInstead–¦fof“the“classic“C“declarationŽ¦‘!Gâint‘¦f(*func)();Ž¦‘Gáor–¦fthe“ANSI-C“st²!yle“declarationŽ¦‘!Gâint–¦f(*func)(int,“int);ŽŸff‘Gáw•²!e›¦fma“y˜writeŽ¦‘!Gârl_command_func_t‘¦f*func;Ž¦‘!GáThe–¦ffull“list“of“function“pMÞoinš²!ter“t˜ypMÞes“a˜v‘ÿdDailable“isŽŸ&‘Gâtypedef–¦fint“rl_command_func_t“(int,“int);Ž¡‘Gtypedef–¦fchar“*rl_compentry_func_t“(const“char“*,“int);Ž¡‘Gtypedef–¦fchar“**rl_completion_func_t“(const“char“*,“int,“int);Ž¡‘Gtypedef–¦fchar“*rl_quote_func_t“(char“*,“int,“char“*);Ž¡‘Gtypedef–¦fchar“*rl_dequote_func_t“(char“*,“int);Ž¡‘Gtypedef–¦fint“rl_compignore_func_t“(char“**);Ž¡‘Gtypedef–¦fvoid“rl_compdisp_func_t“(char“**,“int,“int);Ž¡‘Gtypedef–¦fint“rl_hook_func_t“(void);Ž¡‘Gtypedef–¦fint“rl_getc_func_t“(FILE“*);Ž¡‘Gtypedef–¦fint“rl_linebuf_func_t“(char“*,“int);Ž¡‘Gtypedef–¦fint“rl_intfunc_t“(int);Ž¡‘G#define–¦frl_ivoidfunc_t“rl_hook_func_tŽ¡‘Gtypedef–¦fint“rl_icpfunc_t“(char“*);Ž¡‘Gtypedef–¦fint“rl_icppfunc_t“(char“**);Ž¡‘Gtypedef–¦fvoid“rl_voidfunc_t“(void);Ž¡‘Gtypedef–¦fvoid“rl_vintfunc_t“(int);Ž¡‘Gtypedef–¦fvoid“rl_vcpfunc_t“(char“*);Ž¡‘Gtypedef–¦fvoid“rl_vcppfunc_t“(char“**);ŽŸ™™‘Gëg2.2.2‘d(W›þÄ£riting–íMa“New“F˜unctionŽŽŸ³3‘GáIn–»Öorder›»×to“write“new˜functions“for“Readline,‘Á3y²!ou“need“to˜kno²!w“the“calling˜con•²!v“en“tions‘»ÖforŽ¡‘Gk•²!eybMÞoard-in“v“ok“ed–™Úfunctions,‘œ\and“the›™Ùnames“of“the˜v‘ÿdDariables“that“describMÞe“the˜curren²!t“stateŽ¡‘Gof–¦fthe“line“read“so“far.Ž¦‘!GThe–¦fcalling“sequence“for“a“command“âfoo“áloMÞoks“lik²!eŽ¦‘.ùœâint–¿ªfoo“(int“count,“int“key)ŽŽŒ‹&Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—28ŽŽŽ ƒ33 ý ÌÍ‘Gwhere–Pgåcounš²!t‘fáis“the‘Pfn˜umeric“argumen˜t›Pf(or“1˜if“defaulted)˜and“åk²!ey‘@~áis“the˜k²!ey“that˜in•²!v“ok“edŽ¤
33‘Gthis‘¦ffunction.Ž©,£‘!GIt–Äis›Äcompletely“up˜to“the“function˜as“to“what˜should“bMÞe˜done“with“the˜nš²!umeric“argumen˜t.Ž¡‘GSome–Ï;functions“use“it“as“a“repMÞeat“coun²!t,›psome‘Ï:as“a“
ag,˜and“others“to“c²!hoMÞose“alternateŽ¡‘GbMÞehaš²!vior–4ñ(refreshing‘4ðthe“curren˜t›4ðline“as˜oppMÞosed“to“refreshing˜the“screen,‘˜’for“example).Ž¡‘GSome–ýc²!hoMÞose“to›ý&ignore“it.‘á±In˜general,‘©if“a˜function“uses“the“nš²!umeric“argumen˜t‘ý&as“a“repMÞeatŽ¡‘Gcoun²!t,‘itit–Z7should“bMÞe›Z8able“to“do˜something“useful“with˜bMÞoth“negativ²!e“and˜pMÞositivš²!e“argumen˜ts.Ž¡‘GAš²!t–¦fthe“v˜ery“least,“it“should“bMÞe“a˜w˜are“that“it“can“bMÞe“passed“a“negativ˜e“argumen˜t.Ž¦‘!GA‘‘command–Ífunction“should“return“0“if“its“action“completes“successfully‘ÿe,‘Ëgand“a“v‘ÿdDalueŽ¡‘Ggreater–ô±than›ô²zero“if“some“error˜oMÞccurs.‘È¿This“is“the“con•²!v“en“tion˜obMÞey“ed›ô±b“y˜all˜of‘ô²the˜builtinŽ¡‘GReadline–¦fbindable“command“functions.ŽŸv(‘Gë]2.3‘™Readline‘f@V‘þ¦fariablesŽŽŸ33‘GáThese–¦fv›ÿdDariables“are“a²!v˜ailable“to“function“writers.Ž©&’&–3[V‘ÿeariable]ŽŽ‘Gó@ßê<x
        !            81: cmtt10ë@char–LÉ*“rl_line_bufferŽ¡‘.ùœáThis–¾is“the“line“gathered›¾so“far.‘$ºY‘ÿeou“are“w²!elcome“to“moMÞdify˜the“con•²!ten“ts–¾of“the“line,Ž¡‘.ùœbut–Dqsee›DrSection“2.4.5˜[Allo²!wing“Undoing],‘kôpage˜37.‘·ÿThe˜function“ârl_extend_line_Ž¡‘.ùœbuffer–¦fáis“a²!v‘ÿdDailable“to“increase“the“memory“alloMÞcated“to“ârl_line_bufferá.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_pointŽ¡‘.ùœáThe–¦foset“of“the“curren²!t“cursor“pMÞosition“in“ârl_line_buffer“á(the“äp‘ÿp¹oint‘&  êá).Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_endŽ¡‘.ùœáThe›Y6n•²!um“bMÞer˜of‘Y5c“haracters˜presen“t˜in˜ârl_line_bufferá.‘Ä"When˜ârl_point˜áis‘Y5at˜the˜endŽ¡‘.ùœof–¦fthe“line,“ârl_point“áand“ârl_end“áare“equal.ŽŸ&’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_markŽ¡‘.ùœáThe›n·åmark‘¼á(sa•²!v“ed˜pMÞosition)˜in˜the‘n¸curren“t˜line.‘6ÑIf˜set,‘ Ìthe˜mark˜and˜pMÞoin“t‘n¸dene˜aŽ¡‘.ùœär–ÿp¹e“gioná.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_doneŽ¡‘.ùœáSetting–˜Ÿthis“to“a“non-zero“v‘ÿdDalue“causes‘˜žReadline“to“return“the“curren²!t“line“immediately‘ÿe.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_num_chars_to_readŽ¡‘.ùœáSetting–ôthis›ôto“a“pMÞositiv²!e˜v‘ÿdDalue“bMÞefore“calling˜âreadline()“ácauses“Readline˜to“returnŽ¡‘.ùœafter–Hßaccepting“that“man•²!y›HÞc“haracters,‘q}rather–Hßthan“reading“up˜to“a“c²!haracter“bMÞoundŽ¡‘.ùœto‘¦fâaccept-lineá.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_pending_inputŽ¡‘.ùœáSetting–this“to“a“v‘ÿdDalue“makš²!es‘€it“the“next“k˜eystrok˜e“read.‘§åThis“is‘€a“w˜a˜y“to“stu“a“singleŽ¡‘.ùœc•²!haracter›¦fin“to˜the˜input˜stream.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_dispatchingŽ¡‘.ùœáSet–èWto›èVa“non-zero˜v‘ÿdDalue“if˜a“function“is˜bMÞeing“called˜from“a˜k²!ey“binding;‘'±zero“otherwise.Ž¡‘.ùœApplication–JOfunctions“can“test“this“to“disco•²!v“er–JOwhether“they“w²!ere“called“directly“orŽ¡‘.ùœbš²!y–¦fReadline's“dispatc˜hing“mec˜hanism.ŽŽŒ‹&ŒâŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—29ŽŽŽ ƒ33 ý ÌÍ’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_erase_empty_lineŽ¤
33‘.ùœáSetting–…«this›…¬to“a“non-zero˜v‘ÿdDalue“causes“Readline˜to“completely“erase˜the“curren²!tŽ¡‘.ùœline,›L[including–÷÷an²!y“prompt,˜anš²!y“time“a“newline“is“t˜ypMÞed‘÷øas“the“only“c˜haracter“onŽ¡‘.ùœan–\
otherwise-emptš²!y“line.‘þÓThe“cursor“is“mo˜v˜ed“to“the‘\bMÞeginning“of“the“newly-blankŽ¡‘.ùœline.Ž©¹’&–3[V‘ÿeariable]ŽŽ‘Gë@char–LÉ*“rl_promptŽ¡‘.ùœáThe–#=prompt“Readline“uses.‘²%This“is‘#>set“from“the“argumen²!t“to“âreadline()á,‘=yand“shouldŽ¡‘.ùœnot–:^bMÞe“assigned“to›:]directly‘ÿe.‘¹ÛThe“ârl_set_prompt()“áfunction˜(see“Section“2.4.6“[Redis-Ž¡‘.ùœplaš²!y],–¦fpage“38)“ma˜y“bšMÞe“used“to“mo˜dify“the“prompt“string“after“calling“âreadline()á.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@char–LÉ*“rl_display_promptŽ¡‘.ùœáThe›ÏÛstring‘ÏÜdispla•²!y“ed˜as–ÏÜthe˜prompt.‘Z=This˜is“usually˜iden²!tical“to˜årl‘Ä>‰x³HøŽ‘Ñtpromptá,‘Ú9but˜ma²!yŽ¡‘.ùœbšMÞe–[c²!hanged“temp˜orarily“b²!y“functions“that“use“the“prompt“string“as“a“message“area,Ž¡‘.ùœsucš²!h–¦fas“incremen˜tal“searc˜h.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_already_promptedŽ¡‘.ùœáIf–\Xan“application“wishes›\Wto“displa²!y“the“prompt“itself,‘‰Ôrather˜than“ha•²!v“e–\XReadline“doŽ¡‘.ùœit–ï9the“rst“time“âreadline()“áis“called,‘&mit“should“set“this“v›ÿdDariable“to“a“non-zero“v˜alueŽ¡‘.ùœafter–Ëdisplaš²!ying‘Êthe“prompt.‘šThe“prompt“m˜ust“also›ÊbMÞe“passed“as“the˜argumen²!t“toŽ¡‘.ùœâreadline()–÷       áso“the“redisplaš²!y“functions“can“upMÞdate‘÷the“displa˜y“propMÞerly‘ÿe.‘ÏÆThe“callingŽ¡‘.ùœapplication–¦fis“respMÞonsible“for“managing“the“v‘ÿdDalue;“Readline“nev²!er“sets“it.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@const–LÉchar“*“rl_library_versionŽ¡‘.ùœáThe–¦fvš²!ersion“n˜um˜bMÞer“of“this“revision“of“the“library‘ÿe.ŽŸ¸’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_readline_versionŽ¡‘.ùœáAn–’in²!teger›“encoMÞding“the˜currenš²!t“v˜ersion›“of“the˜library‘ÿe.‘4bThe“encoMÞding˜is“of˜the“formŽ¡‘.ùœ0xåMMmmá,‘‘àwhere–bÈåMM‘’váis‘bÇthe“t•²!w“o-digit–bÈma‘›»jor“vš²!ersion“n˜um˜bMÞer,‘‘àand“åmm‘bÇáis“the“t˜w˜o-Ž¡‘.ùœdigit–{¶minor‘{·vš²!ersion“n˜um˜bMÞer.‘]ÏF‘ÿeor“example,–±
        !            82: for‘{·Readline-4.2,“ârl_readline_versionŽ¡‘.ùœáw•²!ould›¦fha“v“e˜the˜v‘ÿdDalue˜0x0402.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_gnu_readline_pŽ¡‘.ùœáAlw•²!a“ys–¦fset“to“1,“denoting“that“this“is“çgnu“áreadline“rather“than“some“em²!ulation.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@const–LÉchar“*“rl_terminal_nameŽ¡‘.ùœáThe›_terminal–_t²!ypMÞe,‘mKused“for˜initialization.‘ÆIf˜not“set˜b²!y“the˜application,‘mJReadline˜setsŽ¡‘.ùœthis–¦fto“the“v›ÿdDalue“of“the“âTERM“áen•²!vironmen“t–¦fv˜ariable“the“rst“time“it“is“called.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@const–LÉchar“*“rl_readline_nameŽ¡‘.ùœáThis–¿ƒv‘ÿdDariable“is“set“to“a“unique“name‘¿„bš²!y“eac˜h“application“using“Readline.‘)4The“v‘ÿdDalueŽ¡‘.ùœallo²!ws–]wconditional“parsing›]vof“the“inputrc“le“(see“Section˜1.3.2“[Conditional“Init“Con-Ž¡‘.ùœstructs],–¦fpage“12).Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@FILE–LÉ*“rl_instreamŽ¡‘.ùœáThe–í€stdio“stream“from“whic²!h“Readline“reads“input.‘³*If“âNULLá,‘?FReadline“defaults“toŽ¡‘.ùœåstdiná.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@FILE–LÉ*“rl_outstreamŽ¡‘.ùœáThe–#Rstdio›#Qstream“to“whic²!h˜Readline“pMÞerforms“output.‘T If˜âNULLá,‘BReadline˜defaults“toŽ¡‘.ùœåstdoutá.ŽŽŒ‹&™èŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—30ŽŽŽ ƒ33 ý ÌÍ’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_prefer_env_winsizeŽ¤
33‘.ùœáIf–h non-zero,‘t”Readline“givš²!es“v‘ÿdDalues“found“in“the‘hâLINES“áand“âCOLUMNS“áen˜vironmen˜t“v‘ÿdDari-Ž¡‘.ùœables–éžgreater“precedence“than“v‘ÿdDalues“fetcš²!hed“from“the“k˜ernel“when“computing“theŽ¡‘.ùœscreen‘¦fdimensions.Ž©fg’&–3[V‘ÿeariable]ŽŽ‘Gë@rl_command_func_t–LÉ*“rl_last_funcŽ¡‘.ùœáThe–-)address“of“the“last“command“function“Readline‘-*executed.‘r&Ma²!y“bMÞe“used“to“testŽ¡‘.ùœwhether–¦for“not“a“function“is“bMÞeing“executed“t²!wice“in“succession,“for“example.ŽŸfh’&–3[V‘ÿeariable]ŽŽ‘Gë@rl_hook_func_t–LÉ*“rl_startup_hookŽ¡‘.ùœáIf–ºnon-zero,‘>this“is›»the“address“of˜a“function˜to“call“just˜bMÞefore“âreadline˜áprin²!ts“theŽ¡‘.ùœrst‘¦fprompt.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@rl_hook_func_t–LÉ*“rl_pre_input_hookŽ¡‘.ùœáIf–CÜnon-zero,‘k9this›CÛis“the“address˜of“a“function˜to“call“after˜the“rst“prompt˜has“bMÞeenŽ¡‘.ùœprinš²!ted–¦fand“just“bMÞefore“âreadline“ástarts“reading“input“c˜haracters.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@rl_hook_func_t–LÉ*“rl_event_hookŽ¡‘.ùœáIf–ânon-zero,‘0ìthis“is“the‘âaddress“of“a“function“to“call“p•MÞerio“dically–âwhen“Readline“isŽ¡‘.ùœw²!aiting–€*for“terminal–€)input.‘ÑBy“default,‘‡Ðthis›€*will“bMÞe˜called˜at˜most˜ten“times˜a˜secondŽ¡‘.ùœif–¦fthere“is“no“k²!eybMÞoard“input.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@rl_getc_func_t–LÉ*“rl_getc_functionŽ¡‘.ùœáIf–§Wnon-zero,‘§“Readline“will“call“indirectly“through“this“pMÞoinš²!ter“to“get“a“c˜haracter“fromŽ¡‘.ùœthe–›input“stream.‘€EBy“default,‘ÅÃit“is‘œset“to“ârl_getcá,‘ÅÄthe“default“Readline“c²!haracter“inputŽ¡‘.ùœfunction–»Í(see“Section›»Î2.4.8“[Character“Input],‘ê¸page˜40).‘ªIn“general,‘ê¹an“application“thatŽ¡‘.ùœsets›¦fårl‘Ä>‰x³HøŽ–Ñtgetc‘Ä>‰x³HøŽ“function˜áshould˜consider˜setting˜årl‘Ä>‰x³HøŽ“input‘Ä>‰x³HøŽ“a²!v‘ÿdDailable‘Ä>‰x³HøŽ“hoMÞok‘Pjáas˜w²!ell.ŽŸfh’&–3[V‘ÿeariable]ŽŽ‘Gë@rl_hook_func_t–LÉ*“rl_signal_event_hookŽ¡‘.ùœáIf–>Ûnon-zero,‘Sthis“is‘>Üthe“address“of“a“function“to“call“if“a“read“system“call“is“in²!terruptedŽ¡‘.ùœwhen–¦fReadline“is“reading“terminal“input.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@rl_hook_func_t–LÉ*“rl_input_available_hookŽ¡‘.ùœáIf–z÷non-zero,‘ƒ§Readline›zöwill“use“this“function's“return“v‘ÿdDalue“when˜it“needs“to“determineŽ¡‘.ùœwhether–àor“not“there‘áis“aš²!v‘ÿdDailable“input“on“the“curren˜t“input“source.‘     8LThe“defaultŽ¡‘.ùœhoMÞok›
#c•²!hec“ks–
$ârl_instreamá;‘@:if˜an“application˜is“using˜a˜dieren²!t“input˜source,‘+Ëit˜shouldŽ¡‘.ùœset–îthe›ïhoMÞok“appropriately‘ÿe.‘óvReadline“queries“for“a²!v‘ÿdDailable˜input“when“implemen²!tingŽ¡‘.ùœin•²!tra-k“ey-sequence–cStimeouts“during“input“and“incremenš²!tal“searc˜hes.‘Ç‚This“ma˜y“use“anŽ¡‘.ùœapplication-sp•MÞecic›€¥timeout‘€¦b“efore˜returning–€¦a˜v‘ÿdDalue;‘â‘Readline˜uses“the˜v‘ÿdDalue“passed˜toŽ¡‘.ùœârl_set_keyboard_input_timeout()–ê9áor›ê:the“v‘ÿdDalue˜of“the˜user-settable“åk²!eyseq-timeoutŽ¡‘.ùœáv‘ÿdDariable.‘˜This›äuis–ätdesigned“for“use“b²!y“applications˜using“Readline's“callbacš²!k“in˜terfaceŽ¡‘.ùœ(see–‘RSection›‘S2.4.12“[Alternate˜In²!terface],–•‰page˜44),“whic•²!h‘‘Rma“y˜not–‘Ruse˜the“traditionalŽ¡‘.ùœâread(2)–ÞKáand“le“descriptor“inš²!terface,‘,Cor“other“applications“using“a“dieren˜t“inputŽ¡‘.ùœmecš²!hanism.‘LþIf–Ëqan“application“uses“an“input“mec˜hanism“or“hošMÞok“that“can“p˜oten²!tiallyŽ¡‘.ùœexceed–d’the“v‘ÿdDalue“of›d‘åk²!eyseq-timeoutá,‘”it“should“increase“the“timeout˜or“set“this“hoMÞokŽ¡‘.ùœappropriately–àîev²!en›àïwhen“not˜using“the˜callbacš²!k“in˜terface.‘wIn“general,‘ï‘an“applicationŽ¡‘.ùœthat–¦fsets“årl‘Ä>‰x³HøŽ–Ñtgetc‘Ä>‰x³HøŽ“function–¦fáshould“consider“setting“årl‘Ä>‰x³HøŽ–Ñtinput‘Ä>‰x³HøŽ“aš²!v‘ÿdDailable‘Ä>‰x³HøŽ“hoMÞok‘Pjáas‘¦fw˜ell.ŽŽŒ‹&§ Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—31ŽŽŽ ƒ33 ý ÌÍ’&–3[V‘ÿeariable]ŽŽ‘Gë@rl_voidfunc_t–LÉ*“rl_redisplay_functionŽ¤
33‘.ùœáIf–S­non-zero,‘~ÿReadline“will“call“indirectly“through“this‘S®pšMÞoin²!ter“to“up˜date“the“displa²!yŽ¡‘.ùœwith–=Ôthe“curren•²!t›=Õcon“ten“ts–=Ôof“the“editing“buer.‘»By“default,‘R¾it“is˜set“to“ârl_redisplayá,Ž¡‘.ùœthe–¦fdefault“Readline“redisplaš²!y“function“(see“Section“2.4.6“[Redispla˜y],“page“38).Ž©Ð`’&–3[V‘ÿeariable]ŽŽ‘Gë@rl_vintfunc_t–LÉ*“rl_prep_term_functionŽ¡‘.ùœáIf–âÏnon-zero,‘  íReadline“will›âÎcall“indirectly“through“this“pMÞoin²!ter“to˜initialize“the“terminal.Ž¡‘.ùœThe–ufunction“takš²!es“a‘u€single“argumen˜t,‘©Gan“âint“á
ag“that“sa˜ys“whether‘u€or“not“to“useŽ¡‘.ùœeigh•²!t-bit›Èc“haracters.‘5By˜default,‘5athis˜is˜set˜to˜ârl_prep_terminal‘Éá(see˜Section˜2.4.9Ž¡‘.ùœ[T‘ÿeerminal–¦fManagemen²!t],“page“41).ŽŸÐ_’&–3[V‘ÿeariable]ŽŽ‘Gë@rl_voidfunc_t–LÉ*“rl_deprep_term_functionŽ¡‘.ùœáIf–eynon-zero,‘•>Readline›ezwill“call˜indirectly“through˜this“pMÞoin²!ter˜to“reset˜the“terminal.Ž¡‘.ùœThis–4function“should“undo‘4the“eects“of“ârl_prep_term_functioná.‘ˆYBy“default,‘XthisŽ¡‘.ùœis–¦fset“to“ârl_deprep_terminal“á(see“Section“2.4.9“[T‘ÿeerminal“Managemen²!t],“page“41).Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@Keymap‘LÉrl_executing_keymapŽ¡‘.ùœáThis–ROv‘ÿdDariable›RNis“set˜to“the˜k²!eymap“(see“Section˜2.4.2“[Keymaps],‘}Hpage“34)˜in“whic²!hŽ¡‘.ùœthe–¦fcurrenš²!tly“executing“readline“function“w˜as“found.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@Keymap‘LÉrl_binding_keymapŽ¡‘.ùœáThis–ROv‘ÿdDariable›RNis“set˜to“the˜k²!eymap“(see“Section˜2.4.2“[Keymaps],‘}Hpage“34)˜in“whic²!hŽ¡‘.ùœthe–¦flast“k²!ey“binding“oMÞccurred.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@char–LÉ*“rl_executing_macroŽ¡‘.ùœáThis–¦fv‘ÿdDariable“is“set“to“the“text“of“anš²!y“curren˜tly-executing“macro.ŽŸÐ_’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_executing_keyŽ¡‘.ùœáThe–¦fkš²!ey“that“caused“the“dispatc˜h“to“the“curren˜tly-executing“Readline“function.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@char–LÉ*“rl_executing_keyseqŽ¡‘.ùœáThe–Cùfull“kš²!ey‘Cúsequence“that“caused“the“dispatc˜h“to‘Cúthe“curren˜tly-executing“ReadlineŽ¡‘.ùœfunction.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_key_sequence_lengthŽ¡‘.ùœáThe›¦fn•²!um“bMÞer˜of˜c“haracters˜in˜årl‘Ä>‰x³HøŽ–Ñtexecuting‘Ä>‰x³HøŽ“k²!eyseqá.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_readline_stateŽ¡‘.ùœáA‘#¨v›ÿdDariable‘#Çwith–#Èbit“v˜alues›#Çthat“encapsulate“the“curren²!t˜Readline“state.‘VA‘#¨bit˜is“setŽ¡‘.ùœwith–½the›¾âRL_SETSTATE“ámacro,‘Ç“and“unset˜with“the“âRL_UNSETSTATE˜ámacro.‘“ãUse“theŽ¡‘.ùœâRL_ISSTATE–zámacro“to›z&test“whether“a“particular“state˜bit“is“set.‘X¬Curren²!t“state“bitsŽ¡‘.ùœinclude:ŽŸ©‘.ùœâRL_STATE_NONEŽ¡‘hÊáReadline–¦fhas“not“y²!et“bšMÞeen“called,“nor“has“it“b˜egun“to“initialize.ŽŸÊ‘.ùœâRL_STATE_INITIALIZINGŽ¡‘hÊáReadline–¦fis“initializing“its“in²!ternal“data“structures.ŽŸÉ‘.ùœâRL_STATE_INITIALIZEDŽ¡‘hÊáReadline–¦fhas“completed“its“initialization.ŽŽŒ‹ &·IŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—32ŽŽŽ ƒ33 ý ÌÍ‘.ùœâRL_STATE_TERMPREPPEDŽ¤
33‘hÊáReadline–r[has“mošMÞdied“the“terminal“mo˜des“to“do“its“o²!wn“input“and“redis-Ž¡‘hÊpla²!y‘ÿe.Ž©ij‘.ùœâRL_STATE_READCMDŽ¡‘hÊáReadline–¦fis“reading“a“command“from“the“k²!eybMÞoard.ŽŸii‘.ùœâRL_STATE_METANEXTŽ¡‘hÊáReadline–¦fis“reading“more“input“after“reading“the“meta-prex“c²!haracter.Ž¦‘.ùœâRL_STATE_DISPATCHINGŽ¡‘hÊáReadline–¦fis“dispatc²!hing“to“a“command.Ž¦‘.ùœâRL_STATE_MOREINPUTŽ¡‘hÊáReadline–¦fis“reading“more“input“while“executing“an“editing“command.ŽŸii‘.ùœâRL_STATE_ISEARCHŽ¡‘hÊáReadline–¦fis“pMÞerforming“an“incremenš²!tal“history“searc˜h.Ž¦‘.ùœâRL_STATE_NSEARCHŽ¡‘hÊáReadline–¦fis“pMÞerforming“a“non-incremenš²!tal“history“searc˜h.Ž¦‘.ùœâRL_STATE_SEARCHŽ¡‘hÊáReadline–péis‘pêsearcš²!hing“bac˜kw˜ard“or‘pêforw˜ard“through›pêthe“history“for˜a“string.ŽŸii‘.ùœâRL_STATE_NUMERICARGŽ¡‘hÊáReadline–¦fis“reading“a“nš²!umeric“argumen˜t.Ž¦‘.ùœâRL_STATE_MACROINPUTŽ¡‘hÊáReadline–çis›çcurren²!tly“getting˜its“input˜from“a˜previously-dened“k²!eybMÞoardŽ¡‘hÊmacro.ŽŸii‘.ùœâRL_STATE_MACRODEFŽ¡‘hÊáReadline–¦fis“currenš²!tly“reading“c˜haracters“dening“a“k˜eybMÞoard“macro.Ž¦‘.ùœâRL_STATE_OVERWRITEŽ¡‘hÊáReadline–¦fis“in“o•²!v“erwrite‘¦fmoMÞde.Ž¦‘.ùœâRL_STATE_COMPLETINGŽ¡‘hÊáReadline–¦fis“pMÞerforming“w²!ord“completion.ŽŸii‘.ùœâRL_STATE_SIGHANDLERŽ¡‘hÊáReadline–¦fis“curren²!tly“executing“the“readline“signal“handler.Ž¦‘.ùœâRL_STATE_UNDOINGŽ¡‘hÊáReadline–¦fis“pMÞerforming“an“undo.Ž¦‘.ùœâRL_STATE_INPUTPENDINGŽ¡‘hÊáReadline–¦fhas“input“pMÞending“due“to“a“call“to“ârl_execute_next()á.ŽŸii‘.ùœâRL_STATE_TTYCSAVEDŽ¡‘hÊáReadline–¦fhas“sa•²!v“ed–¦fthe“v‘ÿdDalues“of“the“terminal's“spMÞecial“c²!haracters.Ž¦‘.ùœâRL_STATE_CALLBACKŽ¡‘hÊáReadline–+Žis›+curren²!tly“using˜the“alternate˜(callbacš²!k)“in˜terface‘+(see“Sec-Ž¡‘hÊtion–¦f2.4.12“[Alternate“In²!terface],“page“44).ŽŽŒ‹!&ÈŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—33ŽŽŽ ƒ33 ý ÌÍ‘.ùœâRL_STATE_VIMOTIONŽ¤
33‘hÊáReadline–¦fis“reading“the“argumen²!t“to“a“vi-moMÞde“â"ámotionâ"“ácommand.Ž©Àc‘.ùœâRL_STATE_MULTIKEYŽ¡‘hÊáReadline–¦fis“reading“a“m•²!ultiple-k“eystrok“e‘¦fcommand.ŽŸÀd‘.ùœâRL_STATE_VICMDONCEŽ¡‘hÊáReadline–²áhas›²âen²!tered“vi˜command“(mo•²!v“emen“t)–²ámoMÞde˜at“least˜one“timeŽ¡‘hÊduring–¦fthe“curren²!t“call“to“âreadline()á.Ž¦‘.ùœâRL_STATE_DONEŽ¡‘hÊáReadline–T†has“read“a“k²!ey“sequence‘T…bšMÞound“to“âaccept-line“áand“is“ab˜out“toŽ¡‘hÊreturn–¦fthe“line“to“the“caller.Ž©M”’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_explicit_argŽ¡‘.ùœáSet–©]to“a“non-zero‘©\v‘ÿdDalue“if“an“explicit“nš²!umeric“argumen˜t“w˜as‘©\spMÞecied“b˜y“the“user.Ž¡‘.ùœOnly–¦fv‘ÿdDalid“in“a“bindable“command“function.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_numeric_argŽ¡‘.ùœáSet–r,to“the“v‘ÿdDalue“of“anš²!y“n˜umeric‘r-argumen˜t“explicitly“spMÞecied“b˜y“the“user“bMÞeforeŽ¡‘.ùœexecuting–´the“curren²!t“Readline“function.‘°MOnly“v‘ÿdDalid“in“a“bindable“command“function.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_editing_modeŽ¡‘.ùœáSet–pto›oa“v‘ÿdDalue“denoting˜Readline's“curren²!t˜editing“moMÞde.‘§‹A‘Fv‘ÿdDalue“of“å1‘â¨ámeans“ReadlineŽ¡‘.ùœis–¦fcurren²!tly“in“emacs“mošMÞde;“å0‘…Ÿámeans“that“vi“mo˜de“is“activ²!e.ŽŸ ÓÉ‘Gë]2.4‘™Readline›f@Con•ŒÌv“enience˜F‘þ¦functionsŽŽŸ‘Gëg2.4.1‘d(Naming–íMa“F‘þÄ£unctionŽŽŸ³3‘GáThe–üåuser“can“dynamically‘üæcš²!hange“the“bindings“of“k˜eys“while‘üæusing“Readline.‘¥]This“is“done“b˜yŽ¡‘Grepresen²!ting–¡"the›¡#function“with˜a“descriptiv²!e“name.‘ÜThe˜user“is“able˜to“t²!ypMÞe˜the“descriptiv²!eŽ¡‘Gname–¦fwhen“referring“to“the“function.‘ÝÝThš²!us,“in“an“init“le,“one“migh˜t“ndŽŸÀd‘.ùœâMeta-Rubout:‘Tbackward-kill-wordŽŸÀc‘!GáThis–
1.1       misho      83: Mtbinds“the“k•²!eystrok“e–
                     84: MtâMeta-Rubout‘
                     85: Muáto“the“function“ädescriptively‘EuánamedŽ¡‘Gâbackward-kill-wordá.‘4·Y‘ÿeou,‘
                     86: •as–ÃYthe“programmer,‘
                     87: –should“bind“the“functions‘ÃZy²!ou“write“toŽ¡‘Gdescriptivš²!e–¦fnames“as“w˜ell.‘ÝÝReadline“pro˜vides“a“function“for“doing“that:Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_add_defun‘yšó;m#½R
                     88: ó3
1.1.1.2 ! misho      89: cmss10æ(óAp®0J
        !            90: cmsl10ëAconst–ùocªªhar“*name,‘ú¿rl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“t‘ùo*function,Ž¡‘DGin•ªªt‘k“eyæ)Ž¡‘.ùœáAdd–<ýåname‘Úáto“the›<þlist“of“named˜functions.‘¡£Mak²!e“åfunction˜ábMÞe“the“function˜that“getsŽ¡‘.ùœcalled.‘ÝÝIf–¦fåk²!ey‘–~áis“not“-1,“then“bind“it“to“åfunction“áusing“ârl_bind_key()á.Ž¦‘!GUsing–žthis›žfunction“alone˜is“sucien²!t˜for“most“applications.‘ÛIt˜is“the˜recommended“w•²!a“yŽ¡‘Gto–<Óadd›<Òa“few˜functions“to“the˜default“functions˜that“Readline˜has“built“in.‘º¬If˜y²!ou“need˜to“doŽ¡‘Gsomething–{other“than“adding‘za“function“to“Readline,‘$Àyš²!ou“ma˜y“need‘zto“use“the“underlyingŽ¡‘Gfunctions–¦fdescribšMÞed“b˜elo²!w.ŽŽŒ‹"&Ë„Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—34ŽŽŽ ƒ33 ý ÌÍ‘Gëg2.4.2‘d(Selecting–íMa“KeymapŽŽŸ³3‘GáKey–¦abindings“takš²!e“place‘¦`on“a“åk˜eymapá.‘ÝÎThe“k˜eymap“is“the‘¦`assošMÞciation“b˜et•²!w“een–¦athe“k²!eysŽ¤
33‘Gthat–k8the“user›k9t²!ypMÞes“and“the“functions“that˜get“run.‘Ê#Y‘ÿeou“can“makš²!e“y˜our‘k9o˜wn“k˜eymaps,‘wcop˜yŽ¡‘Gexisting–¦fkš²!eymaps,“and“tell“Readline“whic˜h“k˜eymap“to“use.Ž©¹š’&“z[F‘ÿeunction]ŽŽ‘Gë@Keymap‘LÉrl_make_bare_keymap‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáReturns–æEa‘æDnew,‘²emptš²!y“k˜eymap.‘ÒThe›æDspace“for“the˜k²!eymap“is“alloMÞcated˜with“âmalloc()á;Ž¡‘.ùœthe–¦fcaller“should“free“it“b²!y“calling“ârl_free_keymap()“áwhen“done.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@Keymap‘LÉrl_copy_keymap‘yšæ(ëAKeymap‘mapæ)Ž¡‘.ùœáReturn–¦fa“new“kš²!eymap“whic˜h“is“a“cop˜y“of“åmapá.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@Keymap‘LÉrl_make_keymap‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáReturn–Ŭa›Å«new“k²!eymap˜with“the˜prinš²!ting“c˜haracters‘Å«bMÞound“to“rl‘Ä>‰x³HøŽ‘Ñtinsert,‘Í|the“lo˜w˜ercaseŽ¡‘.ùœMeta–µÝcš²!haracters“bMÞound“to“run“their“equiv‘ÿdDalen˜ts,‘åùand“the“Meta“digits“bšMÞound“to“pro˜duceŽ¡‘.ùœn•²!umeric‘¦fargumen“ts.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_discard_keymap‘yšæ(ëAKeymap‘kªªeymapæ)Ž¡‘.ùœáF‘ÿeree–…óthe›…òstorage“assoMÞciated“with˜the“data“in˜åk²!eymapá.‘ÓThe“caller“should˜free“åk²!eymapá.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_free_keymap‘yšæ(ëAKeymap‘kªªeymapæ)Ž¡‘.ùœáF‘ÿeree–³öall“storage›³õassoMÞciated“with“åk²!eymapá.‘ŒThis“calls“ârl_discard_keymap˜áto“free“sub-Ž¡‘.ùœordindate–¦fk²!eymaps“and“macros.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_empty_keymap‘yšæ(ëAKeymap‘kªªeymapæ)Ž¡‘.ùœáReturn–¯Énon-zero“if“there“are“no“kš²!eys“bMÞound“to“functions“in“åk˜eymapU&á;‘´zzero“if“there“areŽ¡‘.ùœan•²!y›¦fk“eys˜bMÞound.Ž¦‘!GReadline–qhas“sev•²!eral‘qin“ternal›qk“eymaps.‘
        !            91: >These˜functions˜allo“w˜y“ou‘qto˜c“hange˜whic“hŽ¡‘Gkš²!eymap–¦fis“activ˜e.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@Keymap‘LÉrl_get_keymap‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáReturns–¦fthe“currenš²!tly“activ˜e“k˜eymap.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_set_keymap‘yšæ(ëAKeymap‘kªªeymapæ)Ž¡‘.ùœáMak•²!es›¦fåk“eymap‘ûgáthe˜curren“tly˜activ“e˜k“eymap.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@Keymap‘LÉrl_get_keymap_by_name‘yšæ(ëAconst–cªªhar“*nameæ)Ž¡‘.ùœáReturn–ý>the“k•²!eymap›ý=matc“hing–ý>ånameá.‘âdåname‘šEáis“one“whic•²!h˜w“ould–ý>bMÞe“supplied“in˜a“âsetŽ¡‘.ùœkeymap–¦fáinputrc“line“(see“Section“1.3“[Readline“Init“File],“page“4).Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@char–LÉ*“rl_get_keymap_name‘yšæ(ëAKeymap‘kªªeymapæ)Ž¡‘.ùœáReturn–ý>the“name‘ý=matcš²!hing“åk˜eymapá.‘âdåname‘šEáis“one“whic˜h‘ý=w˜ould“bMÞe“supplied“in‘ý=a“âsetŽ¡‘.ùœkeymap–¦fáinputrc“line“(see“Section“1.3“[Readline“Init“File],“page“4).Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_set_keymap_name‘yšæ(ëAconst–cšªªhar“*name,“Keymap“k˜eymapæ)Ž¡‘.ùœáSet–the“name›
of“åk²!eymapá.‘ÿÔThis“name“will“then˜bMÞe“â"áregisteredâ"“áand“a²!v‘ÿdDailable˜for“useŽ¡‘.ùœin–0”a“âset‘¦fkeymap›0•áinputrc“directiv²!e“see“Section˜1.3“[Readline“Init“File],‘S page“4).‘|hTheŽ¡‘.ùœåname‘Gzáma²!y–ªrnot›ªsbMÞe“one˜of“Readline's˜builtin“k•²!eymap˜names;‘þny“ou˜ma“y–ªrnot˜add“a˜dieren²!tŽ¡‘.ùœname–S'for“one“of“Readline's“builtin“kš²!eymaps.‘ä!Y‘ÿeou“ma˜y“replace“the“name“assoMÞciatedŽŽŒ‹#&×FŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—35ŽŽŽ ƒ33 ý ÌÍ‘.ùœwith–¼xa‘¼ygivš²!en“k˜eymap“b˜y›¼ycalling“this˜function“more“than˜once“with“the˜same“åk²!eymapŽ¤
33‘.ùœáargumen•²!t.‘ýY‘ÿeou›$ma“y˜assoMÞciate–%a˜registered˜åname‘£+áwith“a˜new˜k•²!eymap˜b“y‘%calling˜thisŽ¡‘.ùœfunction–Ìmore›Ìthan“once“with˜the“same“åname‘iáargumen²!t.‘NìThere˜is“no“w•²!a“y˜to‘Ìremo“v“eŽ¡‘.ùœa–:¤named›:£k²!eymap“once˜the“name˜has“bMÞeen˜registered.‘š–Readline˜will“mak²!e˜a“cop²!y˜ofŽ¡‘.ùœånameá.‘åÍThe–©return“v‘ÿdDalue›©is“greater“than“zero˜unless“åname‘Fáis“one˜of“Readline's“builtinŽ¡‘.ùœkš²!eymap–¦fnames“or“åk˜eymap‘ûgáis“one“of“Readline's“builtin“k˜eymaps.ŽŸ@Á‘Gëg2.4.3‘d(Binding‘íMKeysŽŽŸ³3‘GáKey–Ûsequences›Úare“assoMÞciate˜with“functions˜through“the˜k²!eymap.‘2;Readline˜has“sev²!eral˜in-Ž¡‘Gternal‘€²k²!eymaps:‘Ëâemacs_standard_keymapá,–ˆ<âemacs_meta_keymapá,“âemacs_ctlx_keymapá,“âvi_Ž¡‘Gmovement_keymapá,‘qxand–§âvi_insertion_keymapá.‘      +£âemacs_standard_keymap“áis–¨the“default,Ž¡‘Gand–¦fthe“examples“in“this“man²!ual“assume“that.ŽŸsô‘!GSince–Qâreadline()“áinstalls›Qa“set“of“default˜k²!ey“bindings“the“rst˜time“it“is“called,‘b"there“isŽ¡‘Galw•²!a“ys–ëíthe›ëîdanger“that“a“custom˜binding“installed“bMÞefore˜the“rst“call“to˜âreadline()“áwillŽ¡‘GbMÞe›o•²!v“erridden.‘®An‘alternate˜mec“hanism˜is–to˜install“custom˜k²!ey“bindings˜in“an˜initializationŽ¡‘Gfunction–uŠassigned“to“the“ârl_startup_hook“áv‘ÿdDariable“(see“Section“2.3“[Readline“V‘ÿeariables],Ž¡‘Gpage‘¦f28).ŽŸsõ‘!GThese–¦ffunctions“manage“k²!ey“bindings.Ž©´µ’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_bind_key‘yšæ(ëAin•ªªt›k“ey‘þÿÿ,˜rl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“t˜*functionæ)Ž¡‘.ùœáBinds–ö½åkš²!ey‘æÖáto“åfunction“áin‘ö¾the“curren˜tly“activ˜e‘ö¾k˜eymap.‘ÎãReturns“non-zero“in‘ö¾the“caseŽ¡‘.ùœof–¦fan“inš²!v‘ÿdDalid“åk˜eyá.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_bind_key_in_map‘yšæ(ëAin•ªªt›k“ey‘þÿÿ,˜rl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“t˜*function,Ž¡‘DGKeymap‘mapæ)Ž¡‘.ùœáBind–¦fåkš²!ey‘–~áto“åfunction“áin“åmapá.‘ÝÝReturns“non-zero“in“the“case“of“an“in˜v‘ÿdDalid“åk˜eyá.ŽŸ´¶’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_bind_key_if_unbound‘yšæ(ëAin•ªªt›k“ey‘þÿÿ,˜rl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“tŽ¡‘DG*functionæ)Ž¡‘.ùœáBinds–Iåk²!ey‘9-áto“åfunction“áif›Iit“is˜not“already“bMÞound˜in“the“curren•²!tly˜activ“e‘Ik“eymap.Ž¡‘.ùœReturns–¦fnon-zero“in“the“case“of“an“inš²!v‘ÿdDalid“åk˜ey‘–~áor“if“åk˜ey‘–~áis“already“bMÞound.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_bind_key_if_unbound_in_map‘yšæ(ëAin•ªªt›k“ey‘þÿÿ,˜rl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“tŽ¡‘DG*function,–Keymap“mapæ)Ž¡‘.ùœáBinds–GÓåk²!ey‘7ëáto“åfunction“áif“it“is“not“already“bMÞound“in“åmapá.‘¾WReturns“non-zero“in“the“caseŽ¡‘.ùœof–¦fan“inš²!v‘ÿdDalid“åk˜ey‘–~áor“if“åk˜ey‘–~áis“already“bMÞound.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_unbind_key‘yšæ(ëAin•ªªt‘k“eyæ)Ž¡‘.ùœáBind–[råkš²!ey‘K‹áto“the‘[sn˜ull“function›[sin“the˜currenš²!tly“activ˜e–[sk˜eymap.‘ýReturns“non-zero‘[rinŽ¡‘.ùœcase–¦fof“error.ŽŸ´¶’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_unbind_key_in_map‘yšæ(ëAin•ªªt›k“ey‘þÿÿ,˜Keymap˜mapæ)Ž¡‘.ùœáBind–¦fåkš²!ey‘–~áto“the“n˜ull“function“in“åmapá.‘ÝÝReturns“non-zero“in“case“of“error.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_unbind_function_in_map‘yšæ(ëArl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“t‘*function,Ž¡‘DGKeymap‘mapæ)Ž¡‘.ùœáUnš²!bind–¦fall“k˜eys“that“execute“åfunction“áin“åmapá.ŽŽŒ‹$&äÒŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—36ŽŽŽ ƒ33 ý ÌÍ’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_unbind_command_in_map‘yšæ(ëAconst–cªªhar“*command,“KeymapŽ¤
33‘DGmapæ)Ž¡‘.ùœáUnš²!bind–¦fall“k˜eys“that“are“bMÞound“to“åcommand‘¸áin“åmapá.Ž©ÌÍ’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_bind_keyseq‘yšæ(ëAconst–cšªªhar“*k˜eyseq,“rl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“tŽ¡‘DG*functionæ)Ž¡‘.ùœáBind–,Žthe“kš²!ey“sequence‘,represen˜ted“b˜y“the“string“åk˜eyseq‘mtáto‘,the“function“åfunctioná,Ž¡‘.ùœbMÞeginning–c®in›c­the“curren•²!t˜k“eymap.‘Ç This˜mak“es–c®new“k²!eymaps˜as“necessary‘ÿe.‘ÇŸThe“returnŽ¡‘.ùœv‘ÿdDalue–¦fis“non-zero“if“åkš²!eyseq‘çLáis“in˜v‘ÿdDalid.ŽŸÌÎ’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_bind_keyseq_in_map‘yšæ(ëAconst–cšªªhar“*k˜eyseq,Ž¡‘DGrl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“t–*function,“Keymap“mapæ)Ž¡‘.ùœáBind–&Éthe‘&Èkš²!ey“sequence“represen˜ted“b˜y‘&Èthe“string“åk˜eyseq‘B¯áto‘&Èthe“function“åfunctioná.‘¦þThisŽ¡‘.ùœmakš²!es–€&new“k˜eymaps“as“necessary‘ÿe.›ÑInitial‘€%bindings“are“pMÞerformed“in“åmapá.˜The“returnŽ¡‘.ùœv‘ÿdDalue–¦fis“non-zero“if“åkš²!eyseq‘çLáis“in˜v‘ÿdDalid.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_set_key‘yšæ(ëAconst–cšªªhar“*k˜eyseq,“rl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“t‘*function,Ž¡‘DGKeymap‘mapæ)Ž¡‘.ùœáEquiv‘ÿdDalen²!t–¦fto“ârl_bind_keyseq_in_mapá.ŽŸÌÎ’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_bind_keyseq_if_unbound‘yšæ(ëAconst–cšªªhar“*k˜eyseq,Ž¡‘DGrl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“t‘*functionæ)Ž¡‘.ùœáBinds–Cóåk²!eyseq‘„Øáto“åfunction“áif›Còit“is“not˜already“bMÞound˜in“the“curren•²!tly˜activ“e‘Cók“eymap.Ž¡‘.ùœReturns–¦fnon-zero“in“the“case“of“an“inš²!v‘ÿdDalid“åk˜eyseq‘çLáor“if“åk˜eyseq‘çLáis“already“bMÞound.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_bind_keyseq_if_unbound_in_map‘yšæ(ëAconst–cšªªhar“*k˜eyseq,Ž¡‘DGrl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“t–*function,“Keymap“mapæ)Ž¡‘.ùœáBinds–×åk²!eyseq‘øáto“åfunction›×áif“it“is˜not“already˜bMÞound“in˜åmapá.‘oãReturns“non-zero˜in“theŽ¡‘.ùœcase–¦fof“an“inš²!v‘ÿdDalid“åk˜eyseq‘çLáor“if“åk˜eyseq‘çLáis“already“bMÞound.ŽŸÌÎ’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_generic_bind‘yšæ(ëAin•ªªt›t“ypUVe,˜const˜c“har˜*k“eyseq,˜c“har˜*data,Ž¡‘DGKeymap‘mapæ)Ž¡‘.ùœáBind–>ïthe›>ðk²!ey“sequence˜represenš²!ted“b˜y›>ðthe“string˜åk²!eyseq‘Õáto˜the“arbitrary˜pMÞoin²!ter“ådataá.Ž¡‘.ùœåt•²!ypšMÞe‘•ása“ys–jŽwhat‘jkind“of“data“is“p˜oinš²!ted‘jto“b˜y“ådataá;‘~this“can“bMÞe“a‘jfunction“(âISFUNCá),‘v†aŽ¡‘.ùœmacro–Š™(âISMACRá),‘(or“a›Š˜k²!eymap“(âISKMAPá).‘Ô™This˜makš²!es“new“k˜eymaps“as‘Š˜necessary‘ÿe.‘Ô™TheŽ¡‘.ùœinitial–¦fkš²!eymap“in“whic˜h“to“do“bindings“is“åmapá.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_parse_and_bind‘yšæ(ëAcªªhar‘*lineæ)Ž¡‘.ùœáP²!arse–‡yåline‘$€áas›‡xif“it“had“bMÞeen“read“from˜the“âinputrc“ále“and“pMÞerform˜anš²!y“k˜ey“bindingsŽ¡‘.ùœand–¦fv‘ÿdDariable“assignmen²!ts“found“(see“Section“1.3“[Readline“Init“File],“page“4).ŽŸÌÎ’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_read_init_file‘yšæ(ëAconst–cªªhar“*lenameæ)Ž¡‘.ùœáRead–È8kš²!eybindings“and‘È9v‘ÿdDariable“assignmen˜ts“from“ålename‘e?á(see‘È9Section“1.3“[ReadlineŽ¡‘.ùœInit–¦fFile],“page“4).ŽŸLÍ‘Gëg2.4.4‘d(Assoiciating–íMF‘þÄ£unction“Names“and“BindingsŽŽŸ³3‘GáThese–ž›functions‘žšalloš²!w“y˜ou›žšto“nd˜out“what“k•²!eys˜in“v“ok“e–ž›named˜functions“and˜the“functionsŽ¡‘Gin•²!v“ok“ed›MLb“y‘MMa˜particular˜k“ey˜sequence.‘À*Y‘ÿeou‘MMma“y˜also˜assoMÞciate–MMa˜new˜function˜name“with˜anŽ¡‘Garbitrary‘¦ffunction.ŽŽŒ‹%&ó{Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—37ŽŽŽ ƒ33 ý ÌÍ’&“z[F‘ÿeunction]ŽŽ‘Gë@rl_command_func_t–LÉ*“rl_named_function‘yšæ(ëAconst–cªªhar“*nameæ)Ž¤
33‘.ùœáReturn–¦fthe“function“with“name“ånameá.Ž©æg’&“z[F‘ÿeunction]ŽŽ‘Gë@rl_command_func_t–LÉ*“rl_function_of_keyseq‘yšæ(ëAconst‘cªªharŽ¡‘DG*kšªªeyseq,–Keymap“map,“in˜t“*t˜ypUVeæ)Ž¡‘.ùœáReturn–è³the›è²function“in•²!v“ok“ed‘è³b“y˜åk“eyseq‘)™áin‘è³k“eymap˜åmapá.‘¤ÄIf˜åmap‘=´áis–è³âNULLá,‘ùEthe“curren²!tŽ¡‘.ùœkš²!eymap–q¤is‘q¥used.‘?˜If“åt˜ypMÞe‘«áis“not–q¥âNULLá,‘¤sthe“t˜ypMÞe–q¤of“the“ob‘›»ject›q¥is“returned“in˜the“âintŽ¡‘.ùœáv‘ÿdDariable–ŒLit“pMÞoinš²!ts“to“(one“of“âISFUNCá,‘‘…âISKMAPá,‘‘„or“âISMACRá).‘Õ*It“tak˜es“a“â"átranslatedâ"“ák˜eyŽ¡‘.ùœsequence–¦fand“should“not“bMÞe“used“if“the“k²!ey“sequence“can“include“NUL.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@rl_command_func_t–LÉ*“rl_function_of_keyseq_len‘yšæ(ëAconst‘cªªharŽ¡‘DG*kšªªeyseq,–size‘׉„F™œŽ‘G¼t“len,“Keymap“map,“in˜t“*t˜ypUVeæ)Ž¡‘.ùœáReturn–†¥the›†¦function“in•²!v“ok“ed˜b“y›†¥åk“eyseq‘ÇŒáof˜length˜ålen‘†¦áin˜k“eymap›†¦åmapá.‘}òEquiv‘ÿdDalen“t˜to‘†¥ârl_Ž¡‘.ùœfunction_of_keyseq–Jôáwith›Jóthe“addition“of“the˜ålen“áparameter.‘¿bIt“tak²!es˜a“â"átranslatedâ"Ž¡‘.ùœákš²!ey–¦fsequence“and“should“bMÞe“used“if“the“k˜ey“sequence“can“include“NUL.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@char–LÉ**“rl_invoking_keyseqs‘yšæ(ëArl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“t‘*functionæ)Ž¡‘.ùœáReturn–¿ëan›¿êarra²!y“of˜strings“represen²!ting“the˜k²!ey“sequences“used˜to“in•²!v“ok“e˜åfunction‘¿ëáinŽ¡‘.ùœthe–¦fcurrenš²!t“k˜eymap.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@char–LÉ**“rl_invoking_keyseqs_in_map‘yšæ(ëArl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“tŽ¡‘DG*function,–Keymap“mapæ)Ž¡‘.ùœáReturn–¿ëan›¿êarra²!y“of˜strings“represen²!ting“the˜k²!ey“sequences“used˜to“in•²!v“ok“e˜åfunction‘¿ëáinŽ¡‘.ùœthe–¦fk²!eymap“åmapá.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_function_dumper‘yšæ(ëAinªªt‘readableæ)Ž¡‘.ùœáPrinš²!t–‚Òthe“readline“function“names“and“the‘‚Ñk˜ey“sequences“curren˜tly“bMÞound“to“them“toŽ¡‘.ùœârl_outstreamá.‘¿ÕIf–LLåreadable‘éTáis›LMnon-zero,‘^Rthe“list˜is˜formatted˜in“suc•²!h˜a˜w“a“y˜that‘LLit˜canŽ¡‘.ùœbMÞe–¦fmade“part“of“an“âinputrc“ále“and“re-read.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_list_funmap_names‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáPrin²!t–¦fthe“names“of“all“bindable“Readline“functions“to“ârl_outstreamá.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@const–LÉchar“**“rl_funmap_names‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáReturn–Sa›RNULL‘1terminated“arra²!y˜of“kno²!wn“function˜names.‘°×The“arra²!y“is˜sorted.‘°×TheŽ¡‘.ùœarra²!y–\hitself›\iis“alloMÞcated,‘k5but“not˜the“strings“inside.‘Å3Y‘ÿeou˜should“free˜the“arra²!y‘ÿe,‘k5but“notŽ¡‘.ùœthe–¦fpMÞoinš²!ters,“using“âfree“áor“ârl_free“áwhen“y˜ou“are“done.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_add_funmap_entry‘yšæ(ëAconst–cªªhar“*name,“rl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“tŽ¡‘DG*functionæ)Ž¡‘.ùœáAdd–ð³åname‘»áto“the“list›ð´of“bindable˜Readline“command“names,‘Gand“mak²!e˜åfunction“átheŽ¡‘.ùœfunction–¦fto“bMÞe“called“when“åname‘Cmáis“in•²!v“ok“ed.ŽŸÙš‘Gëg2.4.5‘d(Allo–áwing‘íMUndoingŽŽŸ³3‘GáSuppMÞorting–L´the›L³undo“command˜is“a“painless˜thing,‘vGand“mak•²!es˜y“our‘L´functions˜m“uc“h‘L´moreŽ¡‘Guseful.‘ÝÝIt–¦fis“certainly“easy“to“try“something“if“yš²!ou“kno˜w“y˜ou“can“undo“it.ŽŸÍ‘!GIf–è*y²!our›è+function“simply“inserts˜text“once,‘8›or˜deletes“text“once,‘8›and˜uses“ârl_insert_Ž¡‘Gtext()–Y)áor“ârl_delete_text()›Y*áto“do“it,‘hœthen“undoing“is“already“done˜for“y²!ou“automatically‘ÿe.ŽŽŒ‹&RŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—38ŽŽŽ ƒ33 ý ÌÍ‘!GIf–u†yš²!ou“do“m˜ultiple“insertions“or“m˜ultiple“deletions,‘²or“an˜y“com˜bination“of“these“opMÞerations,Ž¤
33‘Gy²!ou–‘should›group“them˜together“in²!to˜one“opMÞeration.‘œ\This“is˜done“with˜ârl_begin_undo_Ž¡‘Ggroup()–¦fáand“ârl_end_undo_group()á.ŽŸ¹9‘!GThe–¦ftš²!ypMÞes“of“ev˜en˜ts“that“can“bMÞe“undone“are:ŽŸ
‘.ùœóߤN          cmtt9Éenum–¹–undo_code“{“UNDO_DELETE,“UNDO_INSERT,“UNDO_BEGIN,“UNDO_END“};ŽŸ¹:‘!GáNotice–£¯that›£®âUNDO_DELETE“ámeans“to“insert˜some“text,‘¤:and“âUNDO_INSERT“ámeans˜to“deleteŽ¡‘Gsome–O²text.‘ÀöThat“is,›a
        !            92: the“undo“coMÞde“tells“what‘O±to“undo,˜not“ho²!w“to“undo“it.‘ÀöâUNDO_BEGIN“áandŽ¡‘GâUNDO_END–¦fáare“tags“added“b²!y“ârl_begin_undo_group()“áand“ârl_end_undo_group()á.ŽŸÅE’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_begin_undo_group‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáBegins–·‡sa²!ving›·ˆundo“information“in˜a“group“construct.‘AThe“undo˜information“usuallyŽ¡‘.ùœcomes–þIfrom›þHcalls“to“ârl_insert_text()˜áand“ârl_delete_text()á,‘TAbut“could˜bMÞe“theŽ¡‘.ùœresult–¦fof“calls“to“ârl_add_undo()á.Ž©ÅF’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_end_undo_group‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáCloses–{the›{curren²!t“undo˜group“started“with˜ârl_begin_undo_group‘¦f()á.‘ÏmThere“shouldŽ¡‘.ùœbMÞe–¦fone“call“to“ârl_end_undo_group()“áfor“eac²!h“call“to“ârl_begin_undo_group()á.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_add_undo‘yšæ(ëAenšªªum–undo‘׉„F™œŽ‘G¼coUVde“what,“in˜t“start,“in˜t“end,“c˜harŽ¡‘DG*textæ)Ž¡‘.ùœáRemem•²!bMÞer›ího“w˜to˜undo‘ìan˜ev“en“t˜(according˜to˜åwhat=á).‘/rThe‘ìaected˜text˜runs˜fromŽ¡‘.ùœåstart‘ãfáto–¦fåendá,“and“encompasses“åtextá.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_free_undo_list‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáF‘ÿeree–¦fthe“existing“undo“list.ŽŸÅE’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_do_undo‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáUndo–¾§the“rst“thing“on“the“undo“list.‘žReturns“â0“áif“there“w²!as“nothing“to‘¾¨undo,‘ínon-zeroŽ¡‘.ùœif–¦fsomething“w²!as“undone.Ž¦‘!GFinally‘ÿe,‘Á#if›»Éy²!ou–»Êneither“insert“nor˜delete“text,‘Á#but˜directly“moMÞdify“the“existing˜text“(e.g.,Ž¡‘Gcš²!hange–§its“case),‘çKcall“ârl_modifying()“áonce,‘çLjust“bMÞefore“y˜ou‘§moMÞdify“the“text.‘àY‘ÿeou“m˜ustŽ¡‘Gsupply–¦fthe“indices“of“the“text“range“that“y²!ou“are“going“to“moMÞdify‘ÿe.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_modifying‘yšæ(ëAinšªªt–start,“in˜t“endæ)Ž¡‘.ùœáT‘ÿeell–Ô-Readline“to›Ô.sa•²!v“e–Ô-the“text“bMÞet•²!w“een˜åstart‘-áand–Ô-åend‘Báas“a˜single“undo“unit.‘g3It“isŽ¡‘.ùœassumed–¦fthat“yš²!ou“will“subsequen˜tly“moMÞdify“that“text.ŽŸ‘Gëg2.4.6‘d(Redispla–áyŽŽŸ¿@’&“zá[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_redisplay‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáChange–Šwhat's“displa•²!y“ed–Šon“the“screen“to‘Šre
ect“the“currenš²!t“con˜ten˜ts“of“ârl_line_Ž¡‘.ùœbufferá.ŽŸÅE’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_forced_update_display‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáF‘ÿeorce–Äóthe“line“to“bšMÞe“up˜dated“and“redispla•²!y“ed,‘•whether–Äóor“not“Readline“thinks“theŽ¡‘.ùœscreen–¦fdispla²!y“is“correct.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_on_new_line‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáT‘ÿeell–•Ðthe›•ÏupMÞdate“functions˜that“wš²!e“ha˜v˜e‘•Ïmo˜v˜ed“on˜to“a‘•Ïnew“(empt˜y)‘•Ïline,‘™!usually“afterŽ¡‘.ùœoutputting–¦fa“newline.ŽŽŒ‹'#Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—39ŽŽŽ ƒ33 ý ÌÍ’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_on_new_line_with_prompt‘yšæ(ëAvªªoidæ)Ž¤
33‘.ùœáT‘ÿeell–ã_the›ã`upMÞdate“functions“that˜wš²!e“ha˜v˜e“mo˜v˜ed‘ã`on˜to“a“new–ã`line,‘
        !            93: `with“årl‘Ä>‰x³HøŽ‘Ñtprompt‘ _áalreadyŽ¡‘.ùœdispla•²!y“ed.‘Ë®This–oÚcould“bMÞe›oÙused“b²!y“applications“that˜w•²!an“t–oÚto“output“the˜prompt“stringŽ¡‘.ùœthemselvš²!es,‘\Çbut–J_still“need“Readline“to“kno˜w“the“prompt“string“length“for“redispla˜y‘ÿe.‘¿0ItŽ¡‘.ùœshould–¦fbMÞe“used“after“setting“årl‘Ä>‰x³HøŽ–Ñtalready‘Ä>‰x³HøŽ“promptedá.Ž©&’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_clear_visible_line‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáClear–¦fthe“screen“lines“correspMÞonding“to“the“currenš²!t“line's“con˜ten˜ts.ŽŸ’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_reset_line_state‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáReset–*‘the›*displa²!y“state“to“a˜clean“state“and“redispla²!y˜the“curren²!t“line“starting˜on“aŽ¡‘.ùœnew‘¦fline.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_crlf‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáMo•²!v“e–¦fthe“cursor“to“the“start“of“the“next“screen“line.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_show_char‘yšæ(ëAinªªt‘cæ)Ž¡‘.ùœáDispla•²!y›ç³c“haracter–ç´åc‘‘·áon“ârl_outstreamá.‘¡ÅIf˜Readline“has˜not˜bMÞeen“set˜to“displa²!y˜metaŽ¡‘.ùœcš²!haracters–Ødirectly‘ÿe,‘9(this‘Ùwill“con˜v˜ert‘Ùmeta“c˜haracters“to›Ùa“meta-prexed˜k²!ey“sequence.Ž¡‘.ùœThis–¦fis“inš²!tended“for“use“b˜y“applications“whic˜h“wish“to“do“their“o˜wn“redispla˜y‘ÿe.ŽŸ’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_message‘yšæ(ëAconst–cªªhar“*,‘º/.‘èº.‘è».Ž‘æ)Ž¡‘.ùœáThe–y¦argumenš²!ts“are‘y¥a“format“string“as“w˜ould‘y¥bšMÞe“supplied“to“âprintfá,‘µÌp˜ossibly“con²!tainingŽ¡‘.ùœcon•²!v“ersion›NÂspMÞecications‘NÃsuc“h˜as˜`â%dá',‘¸Ùand˜an“y˜additional˜argumen“ts‘NÃnecessary˜toŽ¡‘.ùœsatisfy–ø•the“con•²!v“ersion–ø•spMÞecications.‘ÔiThe“resulting“string“is‘ø”displa•²!y“ed–ø•in“the“åec²!hoŽ¡‘.ùœareaá.‘qThe–‚Lecš²!ho“area“is“also“used“to“displa˜y“n˜umeric“argumen˜ts“and“searc˜h“strings.Ž¡‘.ùœY‘ÿeou–ßshould“call“ârl_save_prompt“áto“sa•²!v“e–ßthe“prompt“information“bMÞefore“calling“thisŽ¡‘.ùœfunction.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_clear_message‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáClear–zthe“message›zin“the“ec²!ho“area.‘ÏIf“the“prompt˜wš²!as“sa˜v˜ed“with“a‘zcall“to“ârl_save_Ž¡‘.ùœprompt–»oábMÞefore“the›»plast“call“to“ârl_messageá,‘±call˜ârl_restore_prompt“ábMÞefore“callingŽ¡‘.ùœthis‘¦ffunction.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_save_prompt‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáSa•²!v“e–,the›, loMÞcal“Readline“prompt˜displa²!y“state“in˜preparation“for“displa²!ying˜a“newŽ¡‘.ùœmessage–¦fin“the“message“area“with“ârl_message()á.ŽŸ’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_restore_prompt‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáRestore–!Pthe“loMÞcal›!OReadline“prompt“displa²!y“state˜sa•²!v“ed›!Pb“y˜the˜most‘!Orecen“t˜call˜toŽ¡‘.ùœârl_save_promptá.‘Çóif–ômârl_save_prompt‘ônáwš²!as“called“to“sa˜v˜e›ônthe“prompt“bMÞefore˜a“callŽ¡‘.ùœto–k7ârl_messageá,‘œkthis‘k6function“should“bšMÞe“called“b˜efore“the‘k6corresp˜onding“call“to“ârl_Ž¡‘.ùœclear_messageá.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_expand_prompt‘yšæ(ëAcªªhar‘*promptæ)Ž¡‘.ùœáExpand–#&anš²!y‘#%spMÞecial“c˜haracter›#%sequences“in˜åprompt‘`&áand˜set“up˜the“loMÞcal˜ReadlineŽ¡‘.ùœprompt›M%redispla²!y–M$v‘ÿdDariables.‘ÒThis“function˜is“called˜bš²!y“âreadline()á.‘ÒIt“ma˜y‘M%also“bMÞeŽ¡‘.ùœcalled–‰vto›‰uexpand“the“primary˜prompt“if“the˜ârl_on_new_line_with_prompt()“áfunctionŽ¡‘.ùœor–
êârl_already_prompted“áv‘ÿdDariable“is“used.‘«
        !            94: It“returns“the“n•²!um“bMÞer–
êof“visible“c²!haractersŽ¡‘.ùœon–/the“last“line“of“the“(pMÞossibly“mš²!ulti-line)‘.prompt.‘8Applications“ma˜y“indicate“thatŽŽŒ‹(…Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—40ŽŽŽ ƒ33 ý ÌÍ‘.ùœthe–XFprompt“conš²!tains“c˜haracters‘XGthat“tak˜e“up“no“ph˜ysical“screen‘XGspace“when“displa˜y˜edŽ¤
33‘.ùœb•²!y›ìxbrac“k“eting–ìwa˜sequence“of˜sucš²!h“c˜haracters›ìxwith“the˜spMÞecial“mark²!ers˜âRL_PROMPT_Ž¡‘.ùœSTART_IGNORE–àáand“âRL_PROMPT_END_IGNORE“á(declared“in“âreadline.há).‘ŒZThis“ma²!y“bMÞeŽ¡‘.ùœused–¦fto“em²!bšMÞed“terminal-sp˜ecic“escap˜e“sequences“in“prompts.Ž©ª«’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_set_prompt‘yšæ(ëAconst–cªªhar“*promptæ)Ž¡‘.ùœáMakš²!e–;³Readline“use“åprompt‘x³áfor“subsequen˜t“redispla˜y‘ÿe.‘ºLThis“calls“ârl_expand_prompt()Ž¡‘.ùœáto–¦fexpand“the“prompt“and“sets“ârl_prompt“áto“the“result.ŽŸ»¼‘Gëg2.4.7‘d(Moidifying‘íMT‘þÄ£extŽŽŸnï’&“zá[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_insert_text‘yšæ(ëAconst–cªªhar“*textæ)Ž¡‘.ùœáInsert–ËÂåtext‘Ãáin²!to“the›ËÃline“at˜the“curren²!t˜cursor“pMÞosition.‘MòReturns˜the“n•²!um“bMÞer˜of‘ËÂc“har-Ž¡‘.ùœacters‘¦finserted.ŽŸª¬’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_delete_text‘yšæ(ëAinšªªt–start,“in˜t“endæ)Ž¡‘.ùœáDelete–ˆthe“text›ˆ‚bMÞet•²!w“een–ˆåstart‘Åáand“åend‘öÓáin˜the“curren²!t“line.‘„.Returns˜the“n•²!um“bMÞer‘ˆofŽ¡‘.ùœc²!haracters‘¦fdeleted.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@char–LÉ*“rl_copy_text‘yšæ(ëAinšªªt–start,“in˜t“endæ)Ž¡‘.ùœáReturn–¦fa“copš²!y“of“the“text“bMÞet˜w˜een“åstart‘ãfáand“åend‘¸áin“the“curren˜t“line.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_kill_text‘yšæ(ëAinšªªt–start,“in˜t“endæ)Ž¡‘.ùœáCopš²!y–œthe‘text“bMÞet˜w˜een–åstart‘Wœáand“åend‘ˆîáin“the–œcurren˜t“line›to“the˜kill“ring,‘7ªappMÞendingŽ¡‘.ùœor–øprepMÞending“to›ùthe“last“kill“if˜the“last“command“w²!as“a˜kill“command.‘)”The“text“isŽ¡‘.ùœdeleted.‘ÈIf–_åstart‘E_áis“less“than–^åendá,‘ Þthe“text–_is“appšMÞended,‘ Ýotherwise“prep˜ended.‘ÈIf“theŽ¡‘.ùœlast–¦fcommand“w²!as“not“a“kill,“a“new“kill“ring“slot“is“used.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_push_macro_input‘yšæ(ëAcªªhar‘*macroæ)Ž¡‘.ùœáCause–d’åmacro‘ñbáto“bšMÞe“inserted“in²!to“the“line,‘q¼as“if“it“had“b˜een“in•²!v“ok“ed›d’b“y˜a˜k“ey˜bMÞound˜toŽ¡‘.ùœa–¦fmacro.‘ÝÝNot“espMÞecially“useful;“use“ârl_insert_text()“áinstead.ŽŸ»¼‘Gëg2.4.8‘d(Character‘íMInputŽŽŸnð’&“zá[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_read_key‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáReturn–Š7the›Š8next“c•²!haracter˜a“v‘ÿdDailable–Š7from˜Readline's“curren²!t˜input“stream.‘ÔyThis“han-Ž¡‘.ùœdles–.Sinput“inserted“in²!to“the“input“stream‘.Tvia“årl‘Ä>‰x³HøŽ–ÑtpMÞending‘Ä>‰x³HøŽ“input‘kSá(see–.SSection“2.3“[Read-Ž¡‘.ùœline–¸©V‘ÿeariables],›ý:page“28)‘¸ªand“ârl_stuff_char()á,‘ý9macros,˜and“c²!haracters‘¸ªread“fromŽ¡‘.ùœthe–×kš²!eybMÞoard.‘2.While“w˜aiting›Öfor“input,‘43this˜function“will˜call“an²!y˜function“assignedŽ¡‘.ùœto–¦fthe“ârl_event_hook“áv‘ÿdDariable.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_getc‘yšæ(ëAFILE‘*streamæ)Ž¡‘.ùœáReturn–Œthe‘Œ€next“cš²!haracter“a˜v‘ÿdDailable“from–Œ€åstreamá,‘Äàwhic˜h“is–Œassumed“to“bMÞe‘Œ€the“k˜eybMÞoard.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_stuff_char‘yšæ(ëAinªªt‘cæ)Ž¡‘.ùœáInsert–òåc‘œáin²!to“the“Readline“input“stream.‘ÀâIt“will“bšMÞe“â"áreadâ"“áb˜efore“Readline“attemptsŽ¡‘.ùœto–6×read›6Øc²!haracters“from˜the“terminal˜with“ârl_read_key()á.‘¸®Up˜to“512˜cš²!haracters“ma˜yŽ¡‘.ùœbMÞe–¬+pushed“bacš²!k.‘ï,ârl_stuff_char“áreturns“1“if“the“c˜haracter“w˜as“successfully“inserted;Ž¡‘.ùœ0‘¦fotherwise.ŽŽŒ‹)-§Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—41ŽŽŽ ƒ33 ý ÌÍ’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_execute_next‘yšæ(ëAinªªt‘cæ)Ž¤
33‘.ùœáMak²!e–HÆåc‘òËábMÞe“the›HÇnext“command“to˜bMÞe“executed˜when“ârl_read_key()“áis˜called.‘ÄþThisŽ¡‘.ùœsets‘¦fårl‘Ä>‰x³HøŽ–ÑtpMÞending‘Ä>‰x³HøŽ“inputá.Ž©x’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_clear_pending_input‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáUnset›|årl‘Ä>‰x³HøŽ–ÑtpMÞending‘Ä>‰x³HøŽ“inputá,‘\&eectiv•²!ely˜negating˜the˜eect‘{of˜an“y˜previous˜call˜to˜ârl_Ž¡‘.ùœexecute_next()á.‘zYThis–…:w²!orks“only“if“the“pšMÞending“input“has“not“already“b˜een“readŽ¡‘.ùœwith‘¦fârl_read_key()á.ŽŸx’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_set_keyboard_input_timeout‘yšæ(ëAinªªt‘uæ)Ž¡‘.ùœáWhile–ÑŽwš²!aiting“for‘Ñk˜eybMÞoard“input“in“ârl_read_key()á,‘WReadline“will“w˜ait‘Ñfor“åu“ámi-Ž¡‘.ùœcroseconds–µÀfor“input›µÁbMÞefore“calling“an²!y“function˜assigned“to“ârl_event_hooká.‘ìåu“ám²!ustŽ¡‘.ùœbšMÞe–Ógreater“than“or“equal“to“zero“(a“zero-length“timeout“is“equiv‘ÿdDalen²!t“to“a“p˜oll).‘e[TheŽ¡‘.ùœdefault–¦fwš²!aiting“p•MÞerio“d–¦fis“one-ten˜th“of“a“second.‘ÝÝReturns“the“old“timeout“v‘ÿdDalue.ŽŸ-è‘Gëg2.4.9‘d(T‘þÄ£erminal‘íMManagemen–átŽŽŸá’&“zá[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_prep_terminal‘yšæ(ëAinªªt‘meta‘׉„F™œŽ‘G¼
agæ)Ž¡‘.ùœáMoMÞdify–¦the“terminal“settings“for“Readline's“use,‘w¶so“âreadline()“ácan“read“a“singleŽ¡‘.ùœc²!haracter–¶,at›¶-a“time“from˜the“k•²!eybMÞoard.‘
0The˜åmeta‘Ä>‰x³HøŽ‘Ñt
ag‘¦Dáargumen“t–¶,should˜bMÞe“non-zeroŽ¡‘.ùœif–¦fReadline“should“read“eigh²!t-bit“input.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_deprep_terminal‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáUndo–Ë­the›ˬeects“of˜ârl_prep_terminal()á,‘Ôÿlea²!ving˜the“terminal“in˜the“state˜in“whic²!hŽ¡‘.ùœit–¦fwš²!as“bMÞefore“the“most“recen˜t“call“to“ârl_prep_terminal()á.ŽŸx’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_tty_set_default_bindings‘yšæ(ëAKeymap‘kmapæ)Ž¡‘.ùœáRead–oÝthe›oÜopMÞerating“system's“terminal“editing˜cš²!haracters“(as“w˜ould“bMÞe‘oÜdispla˜y˜ed“b˜yŽ¡‘.ùœâsttyá)–¦fto“their“Readline“equiv‘ÿdDalen²!ts.‘ÝÝThe“bindings“are“pMÞerformed“in“åkmapá.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_tty_unset_default_bindings‘yšæ(ëAKeymap‘kmapæ)Ž¡‘.ùœáReset–Ò;the“bindings“manipulated“b²!y‘Ò:ârl_tty_set_default_bindings“áso“that“the“ter-Ž¡‘.ùœminal–¯editing›°c²!haracters“are˜bMÞound“to“ârl_insertá.‘2¹The˜bindings“are˜pMÞerformed“inŽ¡‘.ùœåkmapá.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_tty_set_echoing‘yšæ(ëAinªªt‘v‘ÿUUalueæ)Ž¡‘.ùœáSet–¶Readline's“idea“of›¶Žwhether“or“not“it“is“ec²!hoing“output˜to“its“output“streamŽ¡‘.ùœ(årl‘Ä>‰x³HøŽ‘Ñtoutstreamá).‘ê€If›ÿñåv‘ÿdDalue‘œùáis–ÿò0,‘TReadline“doMÞes˜not“displa²!y˜output“to“årl‘Ä>‰x³HøŽ‘Ñtoutstreamá;‘,·an²!yŽ¡‘.ùœother–'v‘ÿdDalue›'enables“output.‘      _ÙThe“initial˜v‘ÿdDalue“is˜set“when˜Readline“initializes˜theŽ¡‘.ùœterminal–¦fsettings.‘ÝÝThis“function“returns“the“previous“v‘ÿdDalue.ŽŸx’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_reset_terminal‘yšæ(ëAconst–cªªhar“*terminal‘׉„F™œŽ‘G¼nameæ)Ž¡‘.ùœáReinitialize–Û÷Readline's“idea“of“the“terminal‘Ûøsettings“using“återminal‘Ä>‰x³HøŽ‘Ñtname‘xþáas“the“termi-Ž¡‘.ùœnal–Ñ¢t²!ypMÞe‘Ñ¡(e.g.,›Üqâvt100á).‘_If“återminal‘Ä>‰x³HøŽ‘Ñtname‘n¨áis“âNULLá,˜the›Ñ¡v‘ÿdDalue“of“the˜âTERM“áen•²!vironmen“tŽ¡‘.ùœv‘ÿdDariable–¦fis“used.ŽŸ-è‘Gëg2.4.10‘d(Utilit–áy‘íMF‘þÄ£unctionsŽŽŸá’&“zá[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_save_state‘yšæ(ëAstruct–readline‘׉„F™œŽ‘G¼state“*spæ)Ž¡‘.ùœáSa•²!v“e–ka›ksnapshot“of“Readline's“in²!ternal˜state“to“åspá.‘ÊThe“con•²!ten“ts–kof˜the“åreadline‘Ä>‰x³HøŽ‘ÑtstateŽ¡‘.ùœástructure–òare“došMÞcumen²!ted“in“âreadline.há.‘ѶThe“caller“is“resp˜onsible“for“allo˜cating“theŽ¡‘.ùœstructure.ŽŽŒ‹*;¤Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—42ŽŽŽ ƒ33 ý ÌÍ’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_restore_state‘yšæ(ëAstruct–readline‘׉„F™œŽ‘G¼state“*spæ)Ž¤
33‘.ùœáRestore–© Readline's›©in²!ternal“state˜to“that“stored˜in“åspá,‘ÛÇwhicš²!h“m˜ust“ha˜v˜e‘©bMÞeen“sa˜v˜ed‘©b˜y“aŽ¡‘.ùœcall–|¼to“ârl_save_stateá.‘ÏúThe‘|»con•²!ten“ts–|¼of“the“åreadline‘Ä>‰x³HøŽ‘Ñtstate‘Ãástructure“are“doMÞcumen²!tedŽ¡‘.ùœin–¦fâreadline.há.‘ÝÝThe“caller“is“respMÞonsible“for“freeing“the“structure.Ž©’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_free‘yšæ(ëAvªªoid‘*memæ)Ž¡‘.ùœáDeallošMÞcate–Œ“the‘Œ’memory“p˜oinš²!ted“to‘Œ’b˜y“åmemá.‘ìåmem“ám˜ust‘Œ’ha˜v˜e“bšMÞeen“allo˜cated‘Œ’b²!y“âmallocá.ŽŸ&’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_replace_line‘yšæ(ëAconst–cšªªhar“*text,“in˜t“clear‘׉„F™œŽ‘G¼undoæ)Ž¡‘.ùœáReplace›¼Jthe‘¼Kcon•²!ten“ts˜of˜ârl_line_buffer–¼Káwith˜åtextá.‘ŠThe“pMÞoin²!t˜and˜mark“are˜pre-Ž¡‘.ùœserv²!ed,‘.eif–epMÞossible.‘«ÝIf“åclear‘Ä>‰x³HøŽ‘Ñtundo‘5áis›dnon-zero,‘.fthe“undo˜list“assoMÞciated“with“the“curren²!tŽ¡‘.ùœline–¦fis“cleared.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_extend_line_buffer‘yšæ(ëAinªªt‘lenæ)Ž¡‘.ùœáEnsure–ž4that“ârl_line_buffer“áhas‘ž5enough“space“to“hold“ålen“ác²!haracters,‘ŸØpMÞossibly“real-Ž¡‘.ùœloMÞcating–¦fit“if“necessary‘ÿe.ŽŸ&’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_initialize‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáInitialize–n8or›n7re-initialize“Readline's˜in²!ternal“state.‘5RIt's“not˜strictly“necessary˜to“callŽ¡‘.ùœthis;–¦fâreadline()“ácalls“it“bMÞefore“reading“an²!y“input.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_ding‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáRing–¦fthe“terminal“bšMÞell,“ob˜eying“the“setting“of“âbell-styleá.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_alphabetic‘yšæ(ëAinªªt‘cæ)Ž¡‘.ùœáReturn–¦f1“if“åc‘Pjáis“an“alphabMÞetic“c²!haracter.ŽŸ&’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_display_match_list‘yšæ(ëAc•ªªhar›**matc“hes,˜in“t˜len,˜in“t˜maxæ)Ž¡‘.ùœáA‘#;con•²!v“enience–#[function“for“displa²!ying“a“list“of“strings“in“columnar“format“on“Read-Ž¡‘.ùœline's›woutput–xstream.‘&âmatches“áis˜the˜list˜of“strings,‘»in˜argv“format,‘»suc²!h˜as˜a“list˜ofŽ¡‘.ùœcompletion–é9matcš²!hes.‘žÎâlen“áis“the“n˜um˜bMÞer“of“strings“in“âmatchesá,‘and“âmax“áis“the“length“ofŽ¡‘.ùœthe–$ˆlongest›$‡string“in“âmatchesá.‘²“This“function˜uses“the“setting˜of“âprint-completions-Ž¡‘.ùœhorizontally–Yðáto‘Yñselect“hoš²!w“the“matc˜hes‘Yñare“displa˜y˜ed“(see“Section‘Yñ1.3.1“[ReadlineŽ¡‘.ùœInit–Ÿ´File“Synš²!tax],‘¡page‘Ÿµ4).‘Û¢When“displa˜ying“completions,‘¡this“function‘Ÿµsets“the“n˜um-Ž¡‘.ùœbMÞer–ÔTof›ÔScolumns“used˜for“displa²!y“to˜the“v‘ÿdDalue˜of“âcompletion-display-widthá,‘þWthe“v‘ÿdDalueŽ¡‘.ùœof–¦fthe“en•²!vironmen“t–¦fv‘ÿdDariable“âCOLUMNSá,“or“the“screen“width,“in“that“order.Ž¦‘!GThe–Ûfolloš²!wing‘Ûare“implemen˜ted“as“macros,‘è<dened‘Ûin“âchardefs.há.‘{ßApplications“shouldŽ¡‘Grefrain–¦ffrom“using“them.ŽŸ&’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉ_rl_uppercase_p‘yšæ(ëAinªªt‘cæ)Ž¡‘.ùœáReturn–¦f1“if“åc‘Pjáis“an“uppšMÞercase“alphab˜etic“c²!haracter.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉ_rl_lowercase_p‘yšæ(ëAinªªt‘cæ)Ž¡‘.ùœáReturn–¦f1“if“åc‘Pjáis“a“lo•²!w“ercase–¦falphabMÞetic“c²!haracter.ŽŸ&’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉ_rl_digit_p‘yšæ(ëAinªªt‘cæ)Ž¡‘.ùœáReturn–¦f1“if“åc‘Pjáis“a“nš²!umeric“c˜haracter.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉ_rl_to_upper‘yšæ(ëAinªªt‘cæ)Ž¡‘.ùœáIf–Ùyåc‘ƒ}áis›Ùxa“lo•²!w“ercase–ÙyalphabMÞetic“c²!haracter,‘ureturn“the˜correspšMÞonding“upp˜ercase“c²!haracter.ŽŽŒ‹+KŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—43ŽŽŽ ƒ33 ý ÌÍ’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉ_rl_to_lower‘yšæ(ëAinªªt‘cæ)Ž¤
33‘.ùœáIf–xÐåc‘"Óáis“an‘xÏuppšMÞercase“alphab˜etic–xÏc²!haracter,‘îreturn“the‘xÐcorresp˜onding“lo•²!w“ercase‘xÐc“harac-Ž¡‘.ùœter.Ž©‘’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉ_rl_digit_value‘yšæ(ëAinªªt‘cæ)Ž¡‘.ùœáIf–¦fåc‘Pjáis“a“n•²!um“bMÞer,–¦freturn“the“v‘ÿdDalue“it“represen²!ts.ŽŸ®ï‘Gëg2.4.11‘d(Miscellaneous‘íMF‘þÄ£unctionsŽŽŸb"’&“zá[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_macro_bind‘yšæ(ëAconst–cšªªhar“*k˜eyseq,“const“c˜har“*macro,Ž¡‘DGKeymap‘mapæ)Ž¡‘.ùœáBind–ÉÎthe›ÉÍk²!ey“sequence˜åk•²!eyseq‘
        !            95: ´áto˜in“v“ok“e–ÉÎthe˜macro“åmacroá.‘”UThe˜binding“is˜pMÞerformed“inŽ¡‘.ùœåmapá.‘ÀŒWhen–Nråkš²!eyseq‘Xáis“in˜v˜ok˜ed,‘`        the“åmacro‘ÛBáwill“bMÞe“inserted“in˜to“the“line.‘ÀŒThis“functionŽ¡‘.ùœis–¦fdeprecated;“use“ârl_generic_bind()“áinstead.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_macro_dumper‘yšæ(ëAinªªt‘readableæ)Ž¡‘.ùœáPrin•²!t›Bdthe‘Bck“ey˜sequences˜bMÞound–Bcto˜macros˜and“their˜v‘ÿdDalues,‘Vdusing˜the“curren•²!t˜k“eymap,Ž¡‘.ùœto–¿ãârl_outstreamá.‘*TIf“åreadable‘\êáis“non-zero,‘ÆBthe“list“is“formatted“in“sucš²!h“a“w˜a˜y“that“itŽ¡‘.ùœcan–¦fbMÞe“made“part“of“an“âinputrc“ále“and“re-read.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_variable_bind‘yšæ(ëAconst–cšªªhar“*v‘ÿUUariable,“const“c˜har“*v‘ÿUUalueæ)Ž¡‘.ùœáMak²!e–{the›{Readline“v–ÿdDariable˜åv“ariable‘#áha•²!v“e–{åv‘ÿdDalueá.‘ÏpThis“bMÞeha•²!v“es–{as˜if“the˜readline“com-Ž¡‘.ùœmand›²0`âset–¦fèvariable“valueá'˜had˜bMÞeen˜executed˜in˜an˜âinputrc˜ále˜(see˜Section˜1.3.1Ž¡‘.ùœ[Readline–¦fInit“File“Syn²!tax],“page“4).ŽŸ‘’&“z[F‘ÿeunction]ŽŽ‘Gë@char–LÉ*“rl_variable_value‘yšæ(ëAconst–cªªhar“*v‘ÿUUariableæ)Ž¡‘.ùœáReturn–ƒÅa›ƒÆstring“represen²!ting˜the“v‘ÿdDalue˜of“the˜Readline“v›ÿdDariable“åv˜ariableá.‘ÒSF‘ÿeor“b•MÞo“oleanŽ¡‘.ùœv‘ÿdDariables,–¦fthis“string“is“either“`âoná'“or“`âoffá'.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_variable_dumper‘yšæ(ëAinªªt‘readableæ)Ž¡‘.ùœáPrin²!t–pŽthe›preadline“v‘ÿdDariable˜names“and“their˜curren²!t“v‘ÿdDalues“to˜ârl_outstreamá.‘ËêIf“åread-Ž¡‘.ùœable‘´Aáis–9non-zero,‘3othe“list–:is“formatted“in‘9sucš²!h“a“w˜a˜y›9that“it“can˜bMÞe“made“part˜of“anŽ¡‘.ùœâinputrc–¦fále“and“re-read.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_set_paren_blink_timeout‘yšæ(ëAinªªt‘uæ)Ž¡‘.ùœáSet–‘the“time“inš²!terv‘ÿdDal“(in“microseconds)“that“Readline“w˜aits“when“sho˜wing“a“balancingŽ¡‘.ùœc²!haracter–¦fwhen“âblink-matching-paren“áhas“bMÞeen“enabled.ŽŸ‘’&“z[F‘ÿeunction]ŽŽ‘Gë@char–LÉ*“rl_get_termcap‘yšæ(ëAconst–cªªhar“*capæ)Ž¡‘.ùœáRetrievš²!e–=±the“string“v‘ÿdDalue“of“the“termcap“capabilit˜y“åcapá.‘ºöReadline“fetc˜hes“the“termcapŽ¡‘.ùœenš²!try–2for‘1the“curren˜t›1terminal“name“and˜uses“those“capabilities˜to“mo•²!v“e˜around‘2theŽ¡‘.ùœscreen–†´line“and“pšMÞerform‘†³other“terminal-sp˜ecic“op˜erations,‘À>lik²!e“erasing“a“line.‘}÷ReadlineŽ¡‘.ùœdoMÞes–4Anot“use›4@all“of“a“terminal's˜capabilities,‘W·and“this“function“will˜return“v‘ÿdDalues“forŽ¡‘.ùœonly–¦fthose“capabilities“Readline“uses.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_clear_history‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáClear–C%the“history›C$list“b²!y“deleting“all˜of“the“en²!tries,‘Vþin“the“same“manner˜as“the“HistoryŽ¡‘.ùœlibrary's›%>âclear_history()–%=áfunction.‘      ZeThis“diers˜from˜âclear_history“ábMÞecause˜itŽ¡‘.ùœfrees–¦fpriv‘ÿdDate“data“Readline“sa•²!v“es–¦fin“the“history“list.ŽŽŒ‹,Y¡Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—44ŽŽŽ ƒ33 ý ÌÍ’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_activate_mark‘yšæ(ëAvªªoidæ)Ž¤
33‘.ùœáEnable›’±an–’°äactive‘eRámark.‘×LWhen“this˜is˜enabled,‘–¢the“text˜bMÞet•²!w“een˜pMÞoin“t˜and‘’°mark˜(theŽ¡‘.ùœåregioná)›äÄis‘äÃdispla•²!y“ed˜in˜the˜terminal's–äÃstandout˜moMÞde˜(a“åface‘á).‘RThis˜is˜called“b²!y˜v‘ÿdDariousŽ¡‘.ùœreadline–•functions“that“set“the“mark“and“insert“text,‘˜”and“is“a²!v‘ÿdDailable“for“applicationsŽ¡‘.ùœto‘¦fcall.Ž©Àý’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_deactivate_mark‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáT‘ÿeurn–¦fo“the“activ²!e“mark.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_keep_mark_active‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáIndicate–J¥that›J¦the“mark“should˜remain“activ²!e“when˜the“curren²!t“readline˜function“com-Ž¡‘.ùœpletes–JÛand›JÜafter“redispla²!y“oMÞccurs.‘¿ZIn“most“cases,‘]*the˜mark“remains“activ²!e“for˜only“theŽ¡‘.ùœduration–¦fof“a“single“bindable“readline“function.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_mark_active_p‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáReturn–¦fa“non-zero“v‘ÿdDalue“if“the“mark“is“currenš²!tly“activ˜e;“zero“otherwise.ŽŸÆå‘Gëg2.4.12‘d(Alternate‘íMIn–áterfaceŽŽŸ³3‘GáAn–™Äalternate‘™Ãinš²!terface“is“a˜v‘ÿdDailable“to›™Ãplain“âreadline()á.‘„RSome“applications“need˜to“in•²!terlea“v“eŽ¡‘Gk²!eybMÞoard‘F'I/O‘Eþwith›F(le,–ndevice,“or˜windoš²!w–F'system“I/O,“t˜ypically‘F(b˜y“using“a“main‘F(loMÞop“toŽ¡‘Gâselect()–Váon›Vv‘ÿdDarious“le˜descriptors.‘        ìëT‘ÿeo“accommoMÞdate˜this“need,‘Â&readline“can˜also“bMÞeŽ¡‘Gin•²!v“ok“ed–¾=as“a‘¾>`callbacš²!k'“function“from“an“ev˜en˜t›¾>loMÞop.‘%bThere“are“functions˜aš²!v‘ÿdDailable“to“mak˜eŽ¡‘Gthis‘¦feasy‘ÿe.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_callback_handler_install‘yšæ(ëAconst–cªªhar“*prompt,Ž¡‘DGrl‘׉„F™œŽ–G¼vªªcpfunc‘׉„F™œŽ“t‘*lhandleræ)Ž¡‘.ùœáSet–ùÅup›ùÄthe“terminal“for˜readline“I/O‘ù™and“displa²!y“the˜initial“expanded“v‘ÿdDalue˜of“åpromptá.Ž¡‘.ùœSa•²!v“e–ñ<the›ñ;v‘ÿdDalue“of˜ålhandler‘ºeáto˜use“as“a˜handler“function˜to“call˜when“a˜complete“lineŽ¡‘.ùœof–I½input›I¼has“bMÞeen˜en²!tered.‘ÇáThe˜handler“function˜receiv²!es“the˜text“of˜the“line˜as“anŽ¡‘.ùœargumen²!t.‘É@As–hwith›hŽâreadline()á,‘títhe“handler˜function˜should˜âfree˜áthe˜line“when˜it˜itŽ¡‘.ùœnished–¦fwith“it.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_callback_read_char‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáWhenevš²!er–Þan“application“determines“that“k˜eybMÞoard“input“is“a˜v‘ÿdDailable,‘%<it“should“callŽ¡‘.ùœârl_callback_read_char()á,‘Ï÷whic²!h–š[will›š\read“the“next˜c²!haracter“from“the˜curren²!t“inputŽ¡‘.ùœsource.‘Ä0If–Y_that“c²!haracter›Y^completes“the“line,‘hÇârl_callback_read_char˜áwill“in•²!v“ok“e‘Y_theŽ¡‘.ùœålhandler‘¯žáfunction–æuinstalled“b²!y‘ævârl_callback_handler_install“áto“proMÞcess“the“line.Ž¡‘.ùœBefore–1Ÿcalling›1 the“ålhandler‘úÈáfunction,‘”mthe“terminal˜settings“are“reset“to˜the“v‘ÿdDaluesŽ¡‘.ùœthey–7Ghad“bMÞefore“calling“ârl_callback_handler_installá.‘   If“the“ålhandler‘páfunctionŽ¡‘.ùœreturns,‘j“and–[Ÿthe›[žline“handler˜remains“installed,‘j“the“terminal˜settings“are˜moMÞdied“forŽ¡‘.ùœReadline's–¦fuse“again.‘ÝÝâEOF“áis“indicated“b²!y“calling“ålhandler‘oáwith“a“âNULL“áline.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_callback_sigcleanup‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáClean–Óup“anš²!y“in˜ternal‘Òstate“the“callbac˜k“in˜terface“uses“to‘Òmain˜tain“state“bMÞet˜w˜een“callsŽ¡‘.ùœto‘9rl‘Ä>‰x³HøŽ–Ñtcallbacš²!k‘Ä>‰x³HøŽ“read‘Ä>‰x³HøŽ“c˜har–9(e.g.,‘5íthe“state“of‘8an˜y“activ˜e“incremen˜tal“searc˜hes).‘6UThis“isŽ¡‘.ùœin²!tended–Ùto›ÙbMÞe“used˜b²!y“applications˜that“wish˜to“pMÞerform˜their“o²!wn˜signal“handling;Ž¡‘.ùœReadline's–¦fin²!ternal“signal“handler“calls“this“when“appropriate.ŽŽŒ‹-gÉŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—45ŽŽŽ ƒ33 ý ÌÍ’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_callback_handler_remove‘yšæ(ëAvªªoidæ)Ž¤
33‘.ùœáRestore–L)the›L(terminal“to˜its“initial˜state“and“remo•²!v“e˜the‘L)line˜handler.‘Ï%Y‘ÿeou˜ma“y‘L)callŽ¡‘.ùœthis–ºfunction›»from“within“a“callbac²!k˜as“w²!ell“as˜indepMÞenden²!tly‘ÿe.‘«NIf“the˜ålhandler‘×ãáinstalledŽ¡‘.ùœb²!y–1ârl_callback_handler_install›0ádoMÞes“not“exit˜the“program,‘*;either“this˜function“orŽ¡‘.ùœthe–ÅMfunction›ÅLreferred“to“b²!y˜the“v‘ÿdDalue˜of“ârl_deprep_term_function“áshould˜bMÞe“calledŽ¡‘.ùœbMÞefore–¦fthe“program“exits“to“reset“the“terminal“settings.ŽŸÑ‘Gëg2.4.13‘d(A–íMReadline“ExampleŽŽŸ³3‘GáHere–.is‘/a“function“whicš²!h“c˜hanges‘/lo˜w˜ercase“c˜haracters“to“their‘/uppMÞercase“equiv‘ÿdDalen˜ts,‘+àandŽ¡‘GuppMÞercase–>cš²!haracters“to“lo˜w˜ercase.‘¦XIf“this“function“w˜as“bMÞound“to“`âM-cá',‘d™then“t˜yping“`âM-cá'Ž¡‘Gw•²!ould›ɳc“hange–É´the˜case“of˜the“c²!haracter˜under“pMÞoin•²!t.‘GÅT“yping‘É´`âM-1–¦f0“M-cá'˜w•²!ould‘É´c“hange˜theŽ¡‘Gcase–¦fof“the“folloš²!wing“10“c˜haracters,“lea˜ving“the“cursor“on“the“last“c˜haracter“c˜hanged.ŽŸ@‘.ùœâ/*–¿ªInvert“the“case“of“the“COUNT“following“characters.“*/Ž¡‘.ùœintŽ¡‘.ùœinvert_case_line–¿ª(count,“key)Ž¡‘K·îint–¿ªcount,“key;Ž¡‘.ùœ{Ž¡‘:xðregister–¿ªint“start,“end,“i;Ž¤ff‘:xðstart–¿ª=“rl_point;Ž¡‘:xðif–¿ª(rl_point“>=“rl_end)Ž©
33‘EøDreturn‘¿ª(0);Ž¡‘:xðif–¿ª(count“<“0)Ž¦‘EøD{Ž¦‘Qw˜direction–¿ª=“-1;Ž¦‘Qw˜count–¿ª=“-count;Ž¦‘EøD}Ž¦‘:xðelseŽ¦‘EøDdirection–¿ª=“1;Ž¡‘:xð/*–¿ªFind“the“end“of“the“range“to“modify.“*/Ž¦‘:xðend–¿ª=“start“+“(count“*“direction);Ž¡‘:xð/*–¿ªForce“it“to“be“within“range.“*/Ž¦‘:xðif–¿ª(end“>“rl_end)Ž¦‘EøDend–¿ª=“rl_end;Ž¦‘:xðelse–¿ªif“(end“<“0)Ž¦‘EøDend–¿ª=“0;Ž¡‘:xðif–¿ª(start“==“end)Ž¦‘EøDreturn‘¿ª(0);Ž¡‘:xðif–¿ª(start“>“end)Ž¦‘EøD{ŽŽŒ‹.wŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—46ŽŽŽ ƒ33 ý ÌÍ‘Qw˜âint–¿ªtemp“=“start;Ž¤
33‘Qw˜start–¿ª=“end;Ž¡‘Qw˜end–¿ª=“temp;Ž¡‘EøD}Ž©ff‘:xð/*–¿ªTell“readline“that“we“are“modifying“the“line,Ž¡‘K·îso–¿ªit“will“save“the“undo“information.“*/Ž¡‘:xðrl_modifying–¿ª(start,“end);Ž¦‘:xðfor–¿ª(i“=“start;“i“!=“end;“i++)Ž¡‘EøD{Ž¡‘Qw˜if–¿ª(_rl_uppercase_p“(rl_line_buffer[i]))Ž¡‘\öìrl_line_buffer[i]–¿ª=“_rl_to_lower“(rl_line_buffer[i]);Ž¡‘Qw˜else–¿ªif“(_rl_lowercase_p“(rl_line_buffer[i]))Ž¡‘\öìrl_line_buffer[i]–¿ª=“_rl_to_upper“(rl_line_buffer[i]);Ž¡‘EøD}Ž¡‘:xð/*–¿ªMove“point“to“on“top“of“the“last“character“changed.“*/Ž¡‘:xðrl_point–¿ª=“(direction“==“1)“?“end“-“1“:“start;Ž¡‘:xðreturn‘¿ª(0);Ž¡‘.ùœ}ŽŸÑ‘Gëg2.4.14‘d(Alternate–íMIn–áterface“ExampleŽŽŸ³3‘GáHere–¡Êis“a“complete“program“that“illustrates“Readline's“alternate“in²!terface.‘Ð        It“reads“linesŽ¡‘Gfrom–¸0the“terminal“and“displaš²!ys“them,‘¼¢pro˜viding“the“standard“history“and“T‘ÿeAB‘¸+completionŽ¡‘Gfunctions.‘ÝÝIt–¦funderstands“the“EOF“c²!haracter“or“â"áexitâ"“áto“exit“the“program.ŽŸ@‘.ùœâ/*–¿ªStandard“include“files.“stdio.h“is“required.“*/Ž¡‘.ùœ#include‘¿ª<stdlib.h>Ž¡‘.ùœ#include‘¿ª<string.h>Ž¡‘.ùœ#include‘¿ª<unistd.h>Ž¡‘.ùœ#include‘¿ª<locale.h>Ž¦‘.ùœ/*–¿ªUsed“for“select(2)“*/Ž¡‘.ùœ#include‘¿ª<sys/types.h>Ž¡‘.ùœ#include‘¿ª<sys/select.h>Ž¦‘.ùœ#include‘¿ª<signal.h>Ž¦‘.ùœ#include‘¿ª<stdio.h>Ž¦‘.ùœ/*–¿ªStandard“readline“include“files.“*/Ž¡‘.ùœ#include‘¿ª<readline/readline.h>Ž¡‘.ùœ#include‘¿ª<readline/history.h>Ž¦‘.ùœstatic–¿ªvoid“cb_linehandler“(char“*);Ž¡‘.ùœstatic–¿ªvoid“sighandler“(int);ŽŽŒ‹/~ÄŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—47ŽŽŽ ƒ33 ý ÌÍ‘.ùœâint‘¿ªrunning;Ž¤
33‘.ùœint‘¿ªsigwinch_received;Ž¡‘.ùœconst–¿ªchar“*prompt“=“"rltest$“";Ž©ff‘.ùœ/*–¿ªHandle“SIGWINCH“and“window“size“changes“when“readline“is“not“active“andŸnï„
        !            96:        ™Ž¡‘@8šreading–¿ªa“character.“*/Ž¡‘.ùœstatic‘¿ªvoidŽ¡‘.ùœsighandler–¿ª(int“sig)Ž¡‘.ùœ{Ž¡‘:xðsigwinch_received–¿ª=“1;Ž¡‘.ùœ}Ž¦‘.ùœ/*–¿ªCallback“function“called“for“each“line“when“accept-line“executed,“EOFŽ¡‘@8šseen,–¿ªor“EOF“character“read.‘TThis“sets“a“flag“and“returns;“it“couldŽ¡‘@8šalso–¿ªcall“exit(3).“*/Ž¡‘.ùœstatic‘¿ªvoidŽ¡‘.ùœcb_linehandler–¿ª(char“*line)Ž¡‘.ùœ{Ž¡‘:xð/*–¿ªCan“use“^D“(stty“eof)“or“`exit'“to“exit.“*/Ž¡‘:xðif–¿ª(line“==“NULL“||“strcmp“(line,“"exit")“==“0)Ž¡‘EøD{Ž¡‘Qw˜if–¿ª(line“==“0)Ž¡‘\öìprintf‘¿ª("\n");Ž¡‘Qw˜printf‘¿ª("exit\n");Ž¡‘Qw˜/*–¿ªThis“function“needs“to“be“called“to“reset“the“terminal“settings,Ÿnï„
        !            97:        ™Ž¡‘b¶–and–¿ªcalling“it“from“the“line“handler“keeps“one“extra“prompt“fromŸnï„    Ž¡‘b¶–being–¿ªdisplayed.“*/Ž¡‘Qw˜rl_callback_handler_remove‘¿ª();Ž¦‘Qw˜running–¿ª=“0;Ž¡‘EøD}Ž¡‘:xðelseŽ¡‘EøD{Ž¡‘Qw˜if‘¿ª(*line)Ž¡‘\öìadd_history‘¿ª(line);Ž¡‘Qw˜printf–¿ª("input“line:“%s\n",“line);Ž¡‘Qw˜free‘¿ª(line);Ž¡‘EøD}Ž¡‘.ùœ}Ž¦‘.ùœintŽ¡‘.ùœmain–¿ª(int“c,“char“**v)Ž¡‘.ùœ{Ž¡‘:xðfd_set‘¿ªfds;Ž¡‘:xðint‘¿ªr;Ž¦‘:xð/*–¿ªSet“the“default“locale“values“according“to“environment“variables.“*/Ÿnï„
        !            98:        ™ŽŽŒ‹0…tŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—48ŽŽŽ ƒ33 ý ÌÍ‘:xðâsetlocale–¿ª(LC_ALL,“"");Ž©ff‘:xð/*–¿ªHandle“window“size“changes“when“readline“is“not“active“and“readingŽ¤
33‘K·îcharacters.‘¿ª*/Ž¡‘:xðsignal–¿ª(SIGWINCH,“sighandler);Ž¦‘:xð/*–¿ªInstall“the“line“handler.“*/Ž¡‘:xðrl_callback_handler_install–¿ª(prompt,“cb_linehandler);Ž¦‘:xð/*–¿ªEnter“a“simple“event“loop.‘TThis“waits“until“something“is“availableŽ¡‘K·îto–¿ªread“on“readline's“input“stream“(defaults“to“standard“input)“andŽ¡‘K·îcalls–¿ªthe“builtin“character“read“callback“to“read“it.‘TIt“does“notŽ¡‘K·îhave–¿ªto“modify“the“user's“terminal“settings.“*/Ž¡‘:xðrunning–¿ª=“1;Ž¡‘:xðwhile‘¿ª(running)Ž¡‘EøD{Ž¡‘Qw˜FD_ZERO‘¿ª(&fds);Ž¡‘Qw˜FD_SET–¿ª(fileno“(rl_instream),“&fds);Ž¦‘Qw˜r–¿ª=“select“(FD_SETSIZE,“&fds,“NULL,“NULL,“NULL);Ž¡‘Qw˜if–¿ª(r“<“0“&&“errno“!=“EINTR)Ž¡‘\öì{Ž¡‘hv@perror–¿ª("rltest:“select");Ž¡‘hv@rl_callback_handler_remove‘¿ª();Ž¡‘hv@break;Ž¡‘\öì}Ž¡‘Qw˜if‘¿ª(sigwinch_received)Ž¡‘.ùœ{Ž¡‘:xðrl_resize_terminal‘¿ª();Ž¡‘:xðsigwinch_received–¿ª=“0;Ž¡‘.ùœ}Ž¡‘Qw˜if–¿ª(r“<“0)Ž¡‘.ùœcontinue;Ž¦‘Qw˜if–¿ª(FD_ISSET“(fileno“(rl_instream),“&fds))Ž¡‘\öìrl_callback_read_char‘¿ª();Ž¡‘EøD}Ž¦‘:xðprintf–¿ª("rltest:“Event“loop“has“exited\n");Ž¡‘:xðreturn‘¿ª0;Ž¡‘.ùœ}ŽŸ!™¢‘Gë]2.5‘™Readline–f@Signal“HandlingŽŽŸ33‘GáSignals–¨”are“async•²!hronous‘¨“ev“en“ts›¨”sen“t˜to˜a‘¨“proMÞcess˜b“y˜the˜Unix‘¨“k“ernel,‘©sometimes˜on˜bMÞehalfŽ¡‘Gof–*£another“proMÞcess.‘j•They“are“inš²!tended‘*¤to“indicate“exceptional“ev˜en˜ts,‘K²lik˜e‘*¤a“user“pressingŽ¡‘Gthe–
        !            99: 'inš²!terrupt“k˜ey“on“his“terminal,‘#or“a“net˜w˜ork“connection“bMÞeing“brok˜en.‘    There“is“a“classŽŽŒ‹1‹dŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—49ŽŽŽ ƒ33 ý ÌÍ‘Gof–usignals›u€that“can“bMÞe˜sen²!t“to“the˜proMÞcess“curren²!tly“reading˜input“from“the˜k²!eybMÞoard.‘ÍSinceŽ¤
33‘GReadline–Wc²!hanges›W‚the“terminal˜attributes“when˜it“is˜called,‘ÃÇit˜needs“to˜pšMÞerform“sp˜ecialŽ¡‘GproMÞcessing–OBwhen›OAsuc²!h“a˜signal“is“receiv²!ed˜in“order˜to“restore“the˜terminal“to˜a“sane“state,‘`¯orŽ¡‘Gproš²!vide–¦fapplication“writers“with“functions“to“do“so“man˜ually‘ÿe.Ž©Æg‘!GReadline–Øúconš²!tains“an“in˜ternal›Øùsignal“handler“that“is“installed“for˜a“n•²!um“bMÞer–Øúof“signalsŽ¡‘G(âSIGINTá,–ª      âSIGQUITá,“âSIGTERMá,›ª
        !           100: âSIGHUPá,“âSIGALRMá,“âSIGTSTPá,“âSIGTTINá,˜and‘vâSIGTTOUá).‘LÿWhenŽ¡‘Gone–5Fof“these“signals“is“receiv²!ed,‘Kæthe“signal‘5Ghandler“will“reset“the“terminal“attributes“to“thoseŽ¡‘Gthat–á w²!ere›áin“eect˜bMÞefore“âreadline()˜áw²!as“called,‘ïÍreset“the˜signal“handling˜to“what˜it“w²!asŽ¡‘GbMÞefore–4’âreadline()›4‘áw²!as“called,‘KUand“resend˜the“signal“to˜the“calling˜application.‘·ìIf˜and“whenŽ¡‘Gthe–"calling›!application's“signal˜handler“returns,‘0ÐReadline“will˜reinitialize“the˜terminal“andŽ¡‘Gcon•²!tin“ue–dLto“accept›dMinput.‘ÇÔWhen“a“âSIGINT˜áis“receiv²!ed,‘q„the“Readline˜signal“handler“pMÞerformsŽ¡‘Gsome‘¦žadditional›¦w•²!ork,‘æ¬whic“h˜will–¦žcause“anš²!y“partially-en˜tered‘¦line“to“bšMÞe“ab˜orted‘¦(see“theŽ¡‘Gdescription–¦fof“ârl_free_line_state()“ábMÞelo²!w).ŽŸÆh‘!GThere–ëªis“an“additional“Readline“signal“handler,›for“âSIGWINCHá,˜whicš²!h“the“k˜ernel“sends“to“aŽ¡‘GproMÞcess–v`whenev²!er›v_the“terminal's“size˜c²!hanges“(for˜example,‘ûif“a˜user“resizes˜an“âxtermá).‘ÍÛTheŽ¡‘GReadline–GtâSIGWINCH“áhandler›GsupMÞdates“Readline's“in²!ternal“screen˜size“information,‘o·and“thenŽ¡‘Gcalls–÷an²!y“âSIGWINCH“ásignal“handler“the“calling“application‘öhas“installed.‘Readline“calls“theŽ¡‘Gapplication's–;âSIGWINCH“ásignal›;
handler“without“resetting“the“terminal“to˜its“original“state.Ž¡‘GIf–Ö«the“application's“signal“handler“došMÞes“more“than‘Ö¬up˜date“its“idea“of“the“terminal“size“andŽ¡‘Greturn–Ž(for“example,‘’ìa“âlongjmp“ábac²!k“to“a“main“prošMÞcessing“lo˜op),‘’ìit“ämust‘—øácall“ârl_cleanup_Ž¡‘Gafter_signal()–¦fá(describšMÞed“b˜elo²!w),“to“restore“the“terminal“state.Ž¦‘!GWhen–­an›­application“is“using˜the“callbacš²!k“in˜terface›­(see“Section“2.4.12˜[Alternate“In-Ž¡‘Gterface],–‰page›(€44),“Readline˜installs–(signal˜handlers“only“for˜the“duration˜of“the˜call“toŽ¡‘Gârl_callback_read_chará.‘ƒ”Applications–Ý£using“the‘Ý¢callbacš²!k“in˜terface“should“bMÞe“prepared“toŽ¡‘Gclean–3«up“Readline's›3ªstate“if“they“wish“to˜handle“the“signal“bMÞefore“the˜line“handler“completesŽ¡‘Gand–¦frestores“the“terminal“state.Ž¦‘!GIf–Kan“application“using‘Kthe“callbacš²!k“in˜terface“wishes“to“ha˜v˜e‘KReadline“install“its“signalŽ¡‘Ghandlers–ºat›º€the“time˜the“application˜calls“ârl_callback_handler_install˜áand“remo•²!v“e˜themŽ¡‘Gonly–Ê\when“a“complete›Ê[line“of“input“has“bMÞeen“read,‘ö^it˜should“set“the“ârl_persistent_signal_Ž¡‘Ghandlers–¥qáv›ÿdDariable“to‘¥pa“non-zero“v˜alue.‘ˆ6This“allo²!ws“an›¥papplication“to“defer“all˜of“the“handlingŽ¡‘Gof–!Îthe›!Ïsignals“Readline“catc²!hes“to˜Readline.‘±ªApplications˜should“use“this“v‘ÿdDariable˜with“care;Ž¡‘Git–¹(can“result›¹)in“Readline“catc²!hing“signals“and˜not“acting“on“them“(or˜allo²!wing“the“applicationŽ¡‘Gto–<react“to›<       them)“un²!til“the“application˜calls“ârl_callback_read_chará.‘žÃThis˜can“result“inŽ¡‘Gan–’™application“bšMÞecoming“less“resp˜onsivš²!e“to“k˜eybMÞoard‘’šsignals“lik˜e“SIGINT.“If“an“applicationŽ¡‘GdošMÞes–èÓnot“w•²!an“t–èÓor“need“to“p˜erform“an²!y“signal“handling,‘½or“do˜es“not“need“to“do“an²!y“pro˜cessingŽ¡‘GbšMÞet•²!w“een–¦fcalls“to“ârl_callback_read_chará,“setting“this“v‘ÿdDariable“ma²!y“b˜e“desirable.Ž¦‘!GReadline–o#proš²!vides“t˜w˜o“v‘ÿdDariables“that“allo˜w‘o"application“writers“to“con˜trol“whether“or“notŽ¡‘Git–û.will›û/catc²!h“certain“signals“and˜act“on“them˜when“they“are“receiv²!ed.‘Ü6It“is˜impMÞortan²!t“thatŽ¡‘Gapplications–f“c²!hange›f’the“v‘ÿdDalues˜of“these˜v‘ÿdDariables“only˜when“calling“âreadline()á,‘–not˜in“aŽ¡‘Gsignal–¦fhandler,“so“Readline's“in²!ternal“signal“state“is“not“corrupted.ŽŸYœ’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_catch_signalsŽ¡‘.ùœáIf–w*this›w)v‘ÿdDariable“is˜non-zero,‘€œReadline“will“install˜signal“handlers˜for“âSIGINTá,‘€œâSIGQUITá,Ž¡‘.ùœâSIGTERMá,–¦fâSIGHUPá,“âSIGALRMá,“âSIGTSTPá,“âSIGTTINá,“and“âSIGTTOUá.Ž¦‘.ùœThe–¦fdefault“v‘ÿdDalue“of“ârl_catch_signals“áis“1.ŽŽŒ‹2’PŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—50ŽŽŽ ƒ33 ý ÌÍ’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_catch_sigwinchŽ¤
33‘.ùœáIf–…Tthis“v›ÿdDariable“is“set“to“a“non-zero“v˜alue,‘½Readline“will“install“a“signal“handler“forŽ¡‘.ùœâSIGWINCHá.Ž©ff‘.ùœThe–¦fdefault“v‘ÿdDalue“of“ârl_catch_sigwinch“áis“1.ŽŸÌÎ’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_persistent_signal_handlersŽ¡‘.ùœáIf–Ë!an›Ë application“using˜the“callbacš²!k“in˜terface›Ë wishes“Readline's˜signal“handlers˜to“bMÞeŽ¡‘.ùœinstalled–zand“activ²!e“during“the“set‘zof“calls“to“ârl_callback_read_char“áthat“constitutesŽ¡‘.ùœan–¦fen²!tire“single“line,“it“should“set“this“v›ÿdDariable“to“a“non-zero“v˜alue.Ž¦‘.ùœThe–¦fdefault“v‘ÿdDalue“of“ârl_persistent_signal_handlers“áis“0.ŽŸÌÎ’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_change_environmentŽ¡‘.ùœáIf–Ã2this›Ã1v‘ÿdDariable“is˜set“to˜a“non-zero˜v‘ÿdDalue,‘Êeand˜Readline“is˜handling“âSIGWINCHá,‘ÊdRead-Ž¡‘.ùœline–›Áwill››ÂmoMÞdify“the“åLINES‘?Iáand“åCOLUMNS‘?Háen•²!vironmen“t˜v‘ÿdDariables–›ÁupMÞon“receipt˜of“aŽ¡‘.ùœâSIGWINCHŽ¦‘.ùœáThe–¦fdefault“v‘ÿdDalue“of“ârl_change_environment“áis“1.ŽŸÌΑ!GIf–¸0an“application›¸/doMÞes“not“wish“to˜ha•²!v“e–¸0Readline“catcš²!h“an˜y–¸/signals,‘¼£or“to–¸0handle“signalsŽ¡‘Gother–¤Ãthan›¤Äthose“Readline“catc²!hes˜(âSIGHUPá,›äZfor“example),˜Readline‘¤Äproš²!vides“con˜v˜enienceŽ¡‘Gfunctions–¦fto“do“the“necessary“terminal“and“inš²!ternal“state“clean˜up“upMÞon“receipt“of“a“signal.Ž©ÌÍ’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_pending_signal‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáReturn–IÚthe›IÙsignal“n•²!um“bMÞer˜of–IÚthe˜most“recen²!t“signal˜Readline“receiv²!ed˜but“has˜not“y²!etŽ¡‘.ùœhandled,–¦for“0“if“there“is“no“pMÞending“signal.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_cleanup_after_signal‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáThis–¦function›¥will“reset˜the“state˜of“the“terminal˜to“what˜it“w²!as˜bMÞefore“âreadline()Ž¡‘.ùœáwš²!as–†called,‘Œ~and“remo˜v˜e›†the“Readline˜signal“handlers˜for“all˜signals,‘ŒdepMÞending˜on“theŽ¡‘.ùœv‘ÿdDalues–¦fof“ârl_catch_signals“áand“ârl_catch_sigwinchá.ŽŸÌÎ’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_free_line_state‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáThis–µwill“free›µ~an²!y“partial“state“assoMÞciated˜with“the“curren²!t“input˜line“(undo“infor-Ž¡‘.ùœmation,‘z$anš²!y–˜partial“history“en˜try‘ÿe,‘z#an˜y“partially-en˜tered“k˜eybMÞoard“macro,‘z$and“an˜yŽ¡‘.ùœpartially-en•²!tered‘½Õn“umeric›½Ôargumen“t).‘$*This˜should–½ÕbMÞe“called˜bMÞefore“ârl_cleanup_Ž¡‘.ùœafter_signal()á.‘    LãThe– ½Readline“signal“handler› ¾for“âSIGINT“ácalls“this˜to“abMÞort“theŽ¡‘.ùœcurren²!t–¦finput“line.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_reset_after_signal‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáThis–k¶will“reinitialize“the“terminal“and“reinstall‘kµan²!y“Readline“signal“handlers,‘wsdepMÞend-Ž¡‘.ùœing–¦fon“the“v‘ÿdDalues“of“ârl_catch_signals“áand“ârl_catch_sigwinchá.ŽŸÌΑ!GIf–îan›îapplication“w•²!an“ts˜to–îforce˜Readline“to˜handle“an²!y˜signals“that˜ha•²!v“e‘îarriv“ed˜whileŽ¡‘Git–M9has›M:bMÞeen“executing,‘vïârl_check_signals()“áwill˜call“Readline's˜in²!ternal“signal˜handler“ifŽ¡‘Gthere–jare›jan²!y“pMÞending˜signals.‘(õThis˜is“primarily˜in²!tended“for˜those“applications˜that“useŽ¡‘Ga–‰úcustom›‰ùârl_getc_function“á(see˜Section“2.3˜[Readline“V‘ÿeariables],‘ÂÞpage˜28)“and˜wish“toŽ¡‘Ghandle–¦fsignals“receivš²!ed“while“w˜aiting“for“input.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_check_signals‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáIf–ã!there›ã are“an²!y˜pMÞending“signals,‘2Ncall“Readline's˜in²!ternal“signal˜handling“functionsŽ¡‘.ùœto–"GprošMÞcess“them.‘ Q€ârl_pending_signal()‘"Hácan“b˜e“used“indep˜enden²!tly“to“determineŽ¡‘.ùœwhether–¦for“not“there“are“an²!y“pMÞending“signals.ŽŽŒ‹3¤óŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—51ŽŽŽ ƒ33 ý ÌÍ‘!GIf–»µan›»¶application“doMÞes“not˜wish“Readline“to˜catcš²!h“âSIGWINCHá,‘&     it“ma˜y‘»¶call“ârl_resize_Ž¤
33‘Gterminal()–Báor“ârl_set_screen_size()“áto“force“Readline“to“upMÞdate“its“idea“of“the“terminalŽ¡‘Gsize–¦fwhen“it“receiv²!es“a“âSIGWINCHá.Ž©D¯’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_echo_signal_char‘yšæ(ëAinªªt‘sigæ)Ž¡‘.ùœáIf–;©an“application“wishes“to“install“its‘;¨oš²!wn“signal“handlers,‘ ùbut“still“ha˜v˜e“readlineŽ¡‘.ùœdispla•²!y›¨Íc“haracters–¨Îthat˜generate˜signals,‘©gcalling˜this“function˜with˜åsig‘˜åáset“to˜âSIGINTá,Ž¡‘.ùœâSIGQUITá,–¦for“âSIGTSTP“áwill“displaš²!y“the“c˜haracter“generating“that“signal.ŽŸD°’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_resize_terminal‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáUpMÞdate–¦fReadline's“inš²!ternal“screen“size“b˜y“reading“v‘ÿdDalues“from“the“k˜ernel.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_set_screen_size‘yšæ(ëAin•ªªt›ro“ws,˜in“t˜colsæ)Ž¡‘.ùœáSet–XÅReadline's“idea›XÄof“the“terminal“size“to˜åro•²!ws›ÌGáro“ws–XÅand“åcols˜ácolumns.‘ÃüIf“either“åro²!wsŽ¡‘.ùœáor–9Øåcolumns‘­Záis“less“than›9Ùor“equal“to“0,‘^´Readline's“idea˜of“that“terminal“dimension“isŽ¡‘.ùœunc•²!hanged.‘ÂJThis›S®is‘S­in“tended˜to–S­tell˜Readline“the˜ph²!ysical“dimensions˜of“the˜terminal,Ž¡‘.ùœand–cGis›cHused“in²!ternally“to“calculate˜the“maximš²!um“n˜um˜bMÞer“of‘cHc˜haracters“that“ma˜yŽ¡‘.ùœappMÞear–¦fon“a“single“line“and“on“the“screen.Ž¦‘!GIf–&¹an“application›&¸doMÞes“not“w•²!an“t–&¹to“install“a˜âSIGWINCH“áhandler,‘Žbut“is˜still“in²!terested“inŽ¡‘Gthe–¦fscreen“dimensions,“it“ma²!y“query“Readline's“idea“of“the“screen“size.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_get_screen_size‘yšæ(ëAin•ªªt›*ro“ws,˜in“t˜*colsæ)Ž¡‘.ùœáReturn–GReadline's“idea“of›Hthe“terminal's“size“in“the“v‘ÿdDariables“pMÞoin²!ted˜to“b²!y“the“argu-Ž¡‘.ùœmen²!ts.ŽŸD°’&“z[F‘ÿeunction]ŽŽ‘Gë@void‘LÉrl_reset_screen_size‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáCause–¦fReadline“to“reobtain“the“screen“size“and“recalculate“its“dimensions.Ž¦‘!GThe–¦ffolloš²!wing“functions“install“and“remo˜v˜e“Readline's“signal“handlers.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_set_signals‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáInstall–ÊíReadline's“signal“handler“for“âSIGINTá,–âSIGQUITá,›âSIGTERMá,“âSIGHUPá,˜âSIGALRMá,Ž¡‘.ùœâSIGTSTPá,–a¶âSIGTTINá,‘aµâSIGTTOUá,“and›<?âSIGWINCHá,“depMÞending˜on–<@the˜v‘ÿdDalues“of˜ârl_catch_Ž¡‘.ùœsignals–¦fáand“ârl_catch_sigwinchá.ŽŸD°’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_clear_signals‘yšæ(ëAvªªoidæ)Ž¡‘.ùœáRemo•²!v“e–¦fall“of“the“Readline“signal“handlers“installed“b²!y“ârl_set_signals()á.ŽŸ
‘Gë]2.6‘™Custom‘f@CompletersŽŽŸ33‘GáTš²!ypically‘ÿe,‘}Ba–program“that“reads“commands“from“the“user‘has“a“w˜a˜y“of“disam˜biguatingŽ¡‘Gcommands–B and“data.‘±If“y²!our“program“is“one›B!of“these,‘ithen“it˜can“pro²!vide“completion“forŽ¡‘Gcommands,‘ˆÃdata,‘ˆÄor–[bšMÞoth.‘Ñ„The‘Zfollo²!wing“sections“describ˜e“hoš²!w“y˜our‘Zprogram“and“ReadlineŽ¡‘Gco•MÞop“erate–¦fto“pro²!vide“this“service.ŽŸ¾‘Gëg2.6.1‘d(Ho–áw–íMCompleting“W‘þÄ£orksŽŽŸ³3‘GáIn–(Æorder›(Çto“complete˜some“text,‘Açthe“full˜list“of˜pMÞossible“completions˜m²!ust“bMÞe˜a²!v‘ÿdDailable.‘³ýThatŽ¡‘Gis,‘P
it–:vis“not“pMÞossible“to›:waccurately“expand“a“partial˜wš²!ord“without“kno˜wing“all‘:wof“the“pMÞossibleŽ¡‘Gw•²!ords›üwhic“h‘ümak“e˜sense‘üin˜that˜con“text.‘ÞÍThe˜Readline˜library‘üpro“vides˜the‘üuser˜in“terfaceŽŽŒ‹4³äŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—52ŽŽŽ ƒ33 ý ÌÍ‘Gto–g®completion,‘t:and“t•²!w“o–g¯of›g®the“most˜common˜completion“functions:‘¾lename“and˜username.Ž¤
33‘GF‘ÿeor–‘Çcompleting‘‘Èother“tš²!ypMÞes“of“text,‘Ì y˜ou“m˜ust“write“y˜our‘‘Èo˜wn“completion“function.‘ &ThisŽ¡‘Gsection–¦fdescribMÞes“exactly“what“sucš²!h“functions“m˜ust“do,“and“pro˜vides“an“example.Ž©8R‘!GThere–¦fare“three“ma‘›»jor“functions“used“to“pMÞerform“completion:ŽŸ8S‘&-1.Ž‘'¿«The–6@user-in²!terface“function“ârl_complete()á.‘ lThis“function“is“called“with“the“sameŽ¡‘'¿«argumenš²!ts–Has“other“bindable“Readline“functions:‘!<åcoun˜t‘…áand“åin˜v˜oking‘Ä>‰x³HøŽ‘Ñtk˜eyá.‘ÂíIt“isolatesŽ¡‘'¿«the–ƒ,w²!ord“to“bMÞe“completed“and“calls‘ƒ+ârl_completion_matches()“áto“generate“a“list“ofŽ¡‘'¿«pMÞossible–¼?completions.‘iIt›¼@then“either˜lists“the“pMÞossible˜completions,‘Áµinserts˜the“pMÞossibleŽ¡‘'¿«completions,›ÞÎor‘mactually–m pMÞerforms“the“completion,˜depšMÞending‘mon“whic²!h“b˜eha²!vior“isŽ¡‘'¿«desired.Ž¦‘&-2.Ž‘'¿«The–Œin²!ternal›‹function“ârl_completion_matches()˜áuses“an˜application-supplied“ågener-Ž¡‘'¿«ator‘:yáfunction›qQto–qPgenerate“the˜list“of“pMÞossible˜matc²!hes,‘¤
        !           101: and˜then“returns“the˜arra²!y“ofŽ¡‘'¿«these–¯>matc²!hes.‘øfThe“caller“should“place“the“address“of“its‘¯?generator“function“in“ârl_Ž¡‘'¿«completion_entry_functioná.Ž¦‘&-3.Ž‘'¿«The–¿generator“function“is“called“repMÞeatedly“from‘¿ârl_completion_matches()á,‘íLreturningŽ¡‘'¿«a–înstring“eacš²!h“time.‘µõThe“argumen˜ts“to‘îothe“generator“function“are“åtext‘+náand“åstateá.‘µõåtextŽ¡‘'¿«áis–Ùâthe“partial“w²!ord“to“bMÞe“completed.‘xRåstate‘véáis“zero“the“rst“time“the“function“is“called,Ž¡‘'¿«alloš²!wing–G2the“generator“to‘G3pMÞerform“an˜y“necessary“initialization,‘¯eand“a“pMÞositiv˜e“non-Ž¡‘'¿«zero–¡inš²!teger‘¢for“eac˜h“subsequen˜t–¢call.‘Ñ›The“generator–¡function“returns‘¢â(char‘¦f*)NULL“átoŽ¡‘'¿«inform–’þârl_completion_matches()“áthat‘’ÿthere“are“no“more“pMÞossibilities“left.‘£¦UsuallyŽ¡‘'¿«the–§^generator“function“computes“the“list“of‘§]pMÞossible“completions“when“åstate‘Deáis“zero,Ž¡‘'¿«and–jreturns›kthem“one˜at“a“time˜on“subsequen•²!t˜calls.‘«ÞEac“h˜string–jthe˜generator“functionŽ¡‘'¿«returns–Ô¨as“a“matcš²!h“m˜ust“bšMÞe“allo˜cated“with“âmalloc()á;‘ëÉReadline“frees“the“strings“whenŽ¡‘'¿«it–Žhas›nished“with˜them.‘TSuc²!h˜a“generator˜function“is˜referred“to˜as“an˜åapplication-Ž¡‘'¿«spMÞecic–¦fcompletion“functioná.Ž©B‘’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_complete‘yšæ(ëAinšªªt–ignore,“in˜t“in˜v˜oking‘׉„F™œŽ‘G¼k˜eyæ)Ž¡‘.ùœáComplete–¯tthe›¯sw²!ord“at“or˜bšMÞefore“p˜oinš²!t.‘ùY‘ÿeou“ha˜v˜e“supplied›¯sthe“function“that˜doMÞes“theŽ¡‘.ùœinitial–ð™simple›ðšmatc²!hing“selection“algorithm˜(see“ârl_completion_matches()á).‘¼wTheŽ¡‘.ùœdefault–¦fis“to“do“lename“completion.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@rl_compentry_func_t–LÉ*“rl_completion_entry_functionŽ¡‘.ùœáThis–ÌJis›ÌIa“pMÞoin²!ter“to˜the“generator“function“for˜ârl_completion_matches()á.‘OˆIf“theŽ¡‘.ùœv‘ÿdDalue–Ùîof›Ùïârl_completion_entry_function“áis˜âNULL“áthen˜the“default˜lename“generatorŽ¡‘.ùœfunction,–×êârl_filename_completion_function()á,“is–gused.‘
        !           102: !An“åapplication-spMÞecicŽ¡‘.ùœcompletion–†Ëfunction›†Ìáis“a˜function“whose˜address“is˜assigned“to˜ârl_completion_entry_Ž¡‘.ùœfunction–¦fáand“whose“return“v‘ÿdDalues“are“used“to“generate“pMÞossible“completions.ŽŸ
        !           103: >‘Gëg2.6.2‘d(Completion‘íMF‘þÄ£unctionsŽŽŸ³3‘GáHere–¦fis“the“complete“list“of“callable“completion“functions“presen²!t“in“Readline.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_complete_internal‘yšæ(ëAinªªt‘what‘׉„F™œŽ–G¼to‘׉„F™œŽ“doæ)Ž¡‘.ùœáComplete–f&the“w²!ord‘fat“or“bšMÞefore“p˜oinš²!t.‘­åwhat‘Ä>‰x³HøŽ–Ñtto‘Ä>‰x³HøŽ“do‘òÑása˜ys›fwhat–f&to“do“with˜the“com-Ž¡‘.ùœpletion.‘(éA‘¿cv‘ÿdDalue–¿jof“`â?á'“means“list“the“pMÞossible“completions.‘(è`âTABá'“means“do“standardŽ¡‘.ùœcompletion.‘&'`â*á'–¾~means›¾insert“all˜of“the˜pMÞossible“completions.‘&'`â!á'“means˜to“displa²!y˜allŽ¡‘.ùœof–!)the“pMÞossible“completions,‘?Úif“there“is›!*more“than“one,‘?Ùas˜w²!ell“as“pMÞerforming“partialŽ¡‘.ùœcompletion.‘¾*`â@á'–GMis›GNsimilar“to“`â!á',‘ZRbut“pMÞossible˜completions“are“not“listed˜if“the“pMÞossibleŽ¡‘.ùœcompletions–¦fshare“a“common“prex.ŽŽŒ‹5ÁïŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—53ŽŽŽ ƒ33 ý ÌÍ’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_complete‘yšæ(ëAinšªªt–ignore,“in˜t“in˜v˜oking‘׉„F™œŽ‘G¼k˜eyæ)Ž¤
33‘.ùœáComplete–ñèthe›ñçw²!ord“at˜or“bšMÞefore“p˜oinš²!t.‘ÀaY‘ÿeou“ha˜v˜e“supplied›ñçthe“function˜that“doMÞesŽ¡‘.ùœthe–õàinitial›õßsimple“matc²!hing“selection˜algorithm“(see˜ârl_completion_matches()“áandŽ¡‘.ùœârl_completion_entry_functioná).‘×XThe–Nädefault›Nåis“to“do˜lename“completion.‘×XThisŽ¡‘.ùœcalls–¦fârl_complete_internal()“áwith“an“argumenš²!t“depMÞending“on“åin˜v˜oking‘Ä>‰x³HøŽ‘Ñtk˜eyá.Ž©Qì’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_possible_completions‘yšæ(ëAin•ªªt›coun“t,˜in“t˜in“v“oking‘׉„F™œŽ‘G¼k“eyæ)Ž¡‘.ùœáList–ÞÇthe“pMÞossible“completions.›†ÿSee“description“of“ârl_complete‘¦f()á.˜This“calls“ârl_Ž¡‘.ùœcomplete_internal()–¦fáwith“an“argumen²!t“of“`â?á'.ŽŸQí’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_insert_completions‘yšæ(ëAin•ªªt›coun“t,˜in“t˜in“v“oking‘׉„F™œŽ‘G¼k“eyæ)Ž¡‘.ùœáInsert–     Ëthe›  Êlist“of˜pMÞossible“completions˜in²!to“the˜line,‘"¤deleting˜the“partially-completedŽ¡‘.ùœw²!ord.›WâSee–Ïdescription‘Ïof“ârl_complete()á.˜This›Ïcalls“ârl_complete_internal()˜áwithŽ¡‘.ùœan–¦fargumen²!t“of“`â*á'.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@int‘LÉrl_completion_mode‘yšæ(ëArl‘׉„F™œŽ–G¼command‘׉„F™œŽ“func‘׉„F™œŽ“t‘*cfuncæ)Ž¡‘.ùœáReturns–úûthe›úúappropriate“v‘ÿdDalue˜to“pass˜to“ârl_complete_internal()˜ádepMÞending“onŽ¡‘.ùœwhether–çxåcfunc‘‘{áwš²!as“called‘çwt˜wice“in›çwsuccession“and˜the“v‘ÿdDalues˜of“the˜âshow-all-if-Ž¡‘.ùœambiguous–OŽáand‘Oâshow-all-if-unmodified“áv‘ÿdDariables.‘ÀêApplication-spMÞecic“completionŽ¡‘.ùœfunctions–¦fmaš²!y“use“this“function“to“presen˜t“the“same“in˜terface“as“ârl_complete()á.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@char–LÉ**“rl_completion_matches‘yšæ(ëAconst–cªªhar“*text,Ž¡‘DGrl‘׉„F™œŽ–G¼compUVenšªªtry‘׉„F™œŽ“func‘׉„F™œŽ“t‘*en˜try‘׉„F™œŽ“funcæ)Ž¡‘.ùœáReturns–Œ^an‘Œ]arraš²!y“of“strings“whic˜h›Œ]is“a“list“of˜completions“for“åtextá.‘ÄIf“there˜are“noŽ¡‘.ùœcompletions,‘C;returns–#ÝâNULLá.‘VCThe›#Þrst“en²!try“in“the˜returned“arra²!y“is˜the“substitutionŽ¡‘.ùœfor–)Gåtextá.›´(The“remaining“en²!tries“are“the“pMÞossible“completions.˜The“arra²!y“is“terminatedŽ¡‘.ùœwith–¦fa“âNULL“ápMÞoin²!ter.ŽŸB‘.ùœåen²!try‘Ä>‰x³HøŽ‘Ñtfunc‘hoáis–¾la›¾kfunction“of˜t•²!w“o˜args,‘mand˜returns˜a–¾lâchar‘¦f*á.‘%íThe˜rst“argumen²!t˜isŽ¡‘.ùœåtextá.‘××The–¤dsecond“is“a“state›¤eargumen²!t;‘#bit“is“zero˜on“the“rst“call,‘ããand“non-zero“onŽ¡‘.ùœsubsequen•²!t›~calls.‘#åen“try‘Ä>‰x³HøŽ‘Ñtfunc‘º‚áreturns˜a‘}âNULL˜ápMÞoin“ter–}to˜the˜caller“when˜there“are˜noŽ¡‘.ùœmore‘¦fmatc²!hes.Ž¦’&“z[F‘ÿeunction]ŽŽ‘Gë@char–LÉ*“rl_filename_completion_function‘yšæ(ëAconst–cšªªhar“*text,“in˜tŽ¡‘DGstateæ)Ž¡‘.ùœáA‘‹generator–±function›°for“lename˜completion“in˜the“general˜case.‘¬öåtext‘P±áis˜a“partial˜le-Ž¡‘.ùœname.‘‚UThe–“ÏBash›“Îsource“is˜a“useful˜reference“for˜writing“application-spMÞecic˜completionŽ¡‘.ùœfunctions–¦f(the“Bash“completion“functions“call“this“and“other“Readline“functions).ŽŸQí’&“z[F‘ÿeunction]ŽŽ‘Gë@char–LÉ*“rl_username_completion_function‘yšæ(ëAconst–cšªªhar“*text,“in˜tŽ¡‘DGstateæ)Ž¡‘.ùœáA‘l&completion–l4generator›l5for“usernames.‘Êxåtext‘©4ácon²!tains˜a“partial˜username“preceded˜b²!yŽ¡‘.ùœa–«ºrandom›«»c²!haracter“(usually“`â~á').‘íÚAs˜with“all“completion˜generators,‘­åstate‘HÁáis˜zero“onŽ¡‘.ùœthe–¦frst“call“and“non-zero“for“subsequen²!t“calls.ŽŸ\‘Gëg2.6.3‘d(Completion‘íMV‘þÄ£ariablesŽŽŸÂ’&–3á[V‘ÿeariable]ŽŽ‘Gë@rl_compentry_func_t–LÉ*“rl_completion_entry_functionŽ¡‘.ùœáA‘{pMÞoin²!ter‘’to–“the“generator“function“for“ârl_completion_matches()á.‘ûdâNULL“ámeans“toŽ¡‘.ùœuse–¦fârl_filename_completion_function()á,“the“default“lename“completer.ŽŽŒ‹6ÓˆŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—54ŽŽŽ ƒ33 ý ÌÍ’&–3[V‘ÿeariable]ŽŽ‘Gë@rl_completion_func_t–LÉ*“rl_attempted_completion_functionŽ¤
33‘.ùœáA‘,„pMÞoinš²!ter–,§to‘,¦an“alternativ˜e›,¦function“to˜create“matc²!hes.‘pŸThe˜function“is˜called“withŽ¡‘.ùœåtextá,‘îûåstartá,‘îúand–Á åendá.‘‘qåstart‘þ áand“åend‘/ráare‘Áindices“in“ârl_line_buffer“ádening“the“bMÞound-Ž¡‘.ùœaries›of–åtextá,‘9\whic²!h“is˜a˜c²!haracter“string.‘°nIf˜this“function˜exists˜and“returns˜âNULLá,‘9]or˜ifŽ¡‘.ùœthis– v‘ÿdDariable› žis“set˜to“âNULLá,‘Ôùthen“ârl_complete()˜áwill“call˜the“v‘ÿdDalue˜of“ârl_completion_Ž¡‘.ùœentry_function–hÚáto›hÙgenerate“matc²!hes,‘u)otherwise˜the“arra²!y“of˜strings“returned˜will“bMÞeŽ¡‘.ùœused.‘‹tIf–¯,this›¯+function“sets˜the“ârl_attempted_completion_over˜áv‘ÿdDariable“to˜a“non-zeroŽ¡‘.ùœv‘ÿdDalue,‘-óReadline–×will“not“pMÞerform“its“default‘Öcompletion“ev²!en“if“this“function“returnsŽ¡‘.ùœno‘¦fmatc²!hes.Ž©º’&–3[V‘ÿeariable]ŽŽ‘Gë@rl_quote_func_t–LÉ*“rl_filename_quoting_functionŽ¡‘.ùœáA‘è–pMÞoin²!ter›è¦to–è§a“function˜that“will“quote“a˜lename“in“an˜application-spMÞecic“fashion.Ž¡‘.ùœThis–·Kis“called“if“lename“completion“is‘·JbMÞeing“attempted“and“one“of“the“c²!haractersŽ¡‘.ùœin–ü’ârl_filename_quote_characters›ü‘áappMÞears“in“a“completed˜lename.‘à`The“functionŽ¡‘.ùœis–mPcalled“with‘mQåtextá,‘Ÿ
        !           104: åmatc•²!h‘Ä>‰x³HøŽ›Ñtt“yp•MÞeá,‘Ÿand‘mPåquote‘Ä>‰x³HøŽ˜p“oin²!terá.‘2œThe–mPåtext‘ªPáis“the‘mQlename“to“bMÞeŽ¡‘.ùœquoted.‘     (TThe›åmatc•²!h‘Ä>‰x³HøŽ‘Ñtt“ypMÞe‘±•áis˜either–ŽâSINGLE_MATCHá,‘pif“there˜is“only˜one“completionŽ¡‘.ùœmatc²!h,‘Ì‚or–ÄãâMULT_MATCHá.‘9SSome“functions“use“this“to“decide“whether“or‘Äânot“to“insert“aŽ¡‘.ùœclosing–çquote‘æcš²!haracter.‘{³The“åquote‘Ä>‰x³HøŽ‘ÑtpMÞoin˜ter‘Iáis“a‘æpMÞoin˜ter“to‘æan˜y“opMÞening‘æquote“c˜haracterŽ¡‘.ùœthe–¦fuser“tš²!ypMÞed.‘ÝÝSome“functions“c˜hoMÞose“to“reset“this“c˜haracter.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@rl_dequote_func_t–LÉ*“rl_filename_dequoting_functionŽ¡‘.ùœáA‘Ž¼pMÞoin²!ter›ŽÃto–ŽÂa“function“that˜will“remo•²!v“e–ŽÂapplication-spMÞecic“quoting˜c²!haracters“fromŽ¡‘.ùœa–çžlename“bMÞefore“completion“is“attempted,‘÷ëso“those“cš²!haracters“do“not“in˜terfere“withŽ¡‘.ùœmatc²!hing–“áthe“text›“âagainst“names“in“the˜lesystem.‘¦NIt“is˜called“with“åtextá,‘Ï@the“textŽ¡‘.ùœof–xthe“wš²!ord“to‘wbMÞe“dequoted,‘m|and“åquote‘Ä>‰x³HøŽ‘Ñtc˜hará,‘m|whic˜h“is‘wthe“quoting“c˜haracter“thatŽ¡‘.ùœdelimits–Ü>the“lename›Ü?(usually“`â'á'“or“`â"á').‘fIf“åquote‘Ä>‰x³HøŽ‘Ñtc²!har‘¥gáis“zero,‘é´the˜lename“w²!as“notŽ¡‘.ùœin–¦fan“em²!bMÞedded“string.ŽŸ¹’&–3[V‘ÿeariable]ŽŽ‘Gë@rl_linebuf_func_t–LÉ*“rl_char_is_quoted_pŽ¡‘.ùœáA‘kÿpšMÞoin²!ter–l2to“a“function“to“call“that“determines“whether“or“not“a“sp˜ecic“c²!haracterŽ¡‘.ùœin–#^the“line›#_buer“is“quoted,‘Bœaccording“to“whatev²!er“quoting˜mec²!hanism“the“programŽ¡‘.ùœcalling–úÎReadline“uses.‘¤«The“function“is“called“with“t•²!w“o‘úÏargumen“ts:‘ˆåtextá,‘ the–úÎtext“of“theŽ¡‘.ùœline,–´­and›±Òåindexá,“the˜index–±Ñof˜the˜c²!haracter˜in˜the˜line.‘!It˜is“used˜to˜decide˜whether˜aŽ¡‘.ùœc²!haracter›ŸFfound–ŸEin“ârl_completer_word_break_characters˜áshould“bMÞe˜used˜to“breakŽ¡‘.ùœw²!ords–¦ffor“the“completer.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@rl_compignore_func_t–LÉ*“rl_ignore_some_completions_functionŽ¡‘.ùœáThis–†hfunction,‘¾hif“dened,‘¾iis“called“b²!y“the“completer“when“real“lename“completionŽ¡‘.ùœis–¸done,‘1after›¹all“the“matc²!hing˜names“ha•²!v“e˜bMÞeen–¸generated.‘+ÔIt“is˜passed“a˜âNULL“áter-Ž¡‘.ùœminated–³Zarraš²!y‘³Yof“matc˜hes.‘¸The“rst“elemen˜t›³Y(âmatches[0]á)“is“the˜maximal“substringŽ¡‘.ùœcommon–tEto›tFall“matc²!hes.‘Í(This“function˜can“re-arrange˜the“list˜of“matc²!hes˜as“required,Ž¡‘.ùœbut–¦feacš²!h“elemen˜t“deleted“from“the“arra˜y“m˜ust“bMÞe“freed.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@rl_icppfunc_t–LÉ*“rl_directory_completion_hookŽ¡‘.ùœáThis–qAfunction,›ãöif“dened,˜is“allo•²!w“ed›q@to–qAmoMÞdify“the˜directory“pMÞortion˜of“lenamesŽ¡‘.ùœReadline–0Ëcompletes.‘}
It›0Ìcould“bMÞe“used˜to“expand“sym²!bMÞolic˜links“or“shell˜v‘ÿdDariables“inŽ¡‘.ùœpathnames.‘tIt›Øwis–Øxcalled“with˜the“address˜of“a“string˜(the“curren²!t˜directory“name)Ž¡‘.ùœas–…6an“argumenš²!t,‘¼êand“ma˜y“moMÞdify“that“string.‘zMIf“the“string“is“replaced“with“a“newŽ¡‘.ùœstring,‘ÜUthe–žYold“v‘ÿdDalue“should“bšMÞe“freed.‘ŶAn²!y‘žXmo˜died“directory“name“should“ha•²!v“e‘žYaŽŽŒ‹7ã[Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—55ŽŽŽ ƒ33 ý ÌÍ‘.ùœtrailing–2œslash.‘‚€The“mošMÞdied“v‘ÿdDalue‘2will“b˜e“used“as‘2part“of“the“completion,‘UªreplacingŽ¤
33‘.ùœthe–Í}directory›Í~pMÞortion“of˜the“pathname˜the“user˜t•²!ypMÞed.‘S#A“t˜the›Í}least,‘×Dev“en˜if‘Í~no˜otherŽ¡‘.ùœexpansion–EQis“pMÞerformed,‘mthis“function“should“remo•²!v“e›EQan“y‘ERquote˜c“haracters˜from˜theŽ¡‘.ùœdirectory–¦fname,“bšMÞecause“its“result“will“b˜e“passed“directly“to“âopendir()á.Ž©軑.ùœThe–directory“completion›ÿhoMÞok“returns“an“in²!teger˜that“should“bMÞe“non-zero˜if“the“func-Ž¡‘.ùœtion–õmoMÞdies“its›ödirectory“argumen²!t.‘;‹The“function“should“not˜moMÞdify“the“directoryŽ¡‘.ùœargumen²!t–¦fif“it“returns“0.ŽŸžB’&–3[V‘ÿeariable]ŽŽ‘Gë@rl_icppfunc_t–LÉ*“rl_directory_rewrite_hook;Ž¡‘.ùœáIf–êãnon-zero,‘dthis“is›êäthe“address“of˜a“function“to˜call“when“completing“a˜directory“name.Ž¡‘.ùœThis–2}function“tak²!es“the›2~address“of“the“directory“name“to“b•MÞe˜mo“died–2}as“an“argumen²!t.Ž¡‘.ùœUnlik²!e–µèârl_directory_completion_hooká,‘ùÈit“only“moMÞdies“the“directory“name“usedŽ¡‘.ùœin–>øâopendirá,‘enot“what“is“displa•²!y“ed›>ùwhen–>øthe“pMÞossible“completions“are˜prin²!ted“or“in-Ž¡‘.ùœserted.‘³NIt–&ºis‘&¹called“bšMÞefore“rl‘Ä>‰x³HøŽ–Ñtdirectory‘Ä>‰x³HøŽ“completion‘Ä>‰x³HøŽ“ho˜ok.‘³NA•²!t‘&¹the›&ºleast,‘@Bev“en˜if‘&¹no˜otherŽ¡‘.ùœexpansion–EQis“pMÞerformed,‘mthis“function“should“remo•²!v“e›EQan“y‘ERquote˜c“haracters˜from˜theŽ¡‘.ùœdirectory–¦fname,“bšMÞecause“its“result“will“b˜e“passed“directly“to“âopendir()á.Ž¦‘.ùœThe–Œ*directory›Œ+rewrite“hoMÞok˜returns“an˜in²!teger“that˜should“bMÞe˜non-zero“if˜the“func-Ž¡‘.ùœtion–õmoMÞdies“its›ödirectory“argumen²!t.‘;‹The“function“should“not˜moMÞdify“the“directoryŽ¡‘.ùœargumen²!t–¦fif“it“returns“0.ŽŸžB’&–3[V‘ÿeariable]ŽŽ‘Gë@rl_icppfunc_t–LÉ*“rl_filename_stat_hookŽ¡‘.ùœáIf–?non-zero,‘Ÿthis“is“the›>address“of“a“function˜for“the“completer“to˜call“bMÞefore“decidingŽ¡‘.ùœwhic•²!h›ác“haracter–âto˜appMÞend˜to“a˜completed˜name.‘ÛThis˜function˜moMÞdies“its˜lenameŽ¡‘.ùœname–Fargumen²!t,‘mìand“the“moMÞdied“v‘ÿdDalue“is“passed“to“âstat()“áto“determine“the“le'sŽ¡‘.ùœtš²!ypMÞe–Þ:and“c˜haracteristics.‘…YThis“function‘Þ;doMÞes“not“need“to“remo˜v˜e“quote“c˜haractersŽ¡‘.ùœfrom–¦fthe“lename.Ž¦‘.ùœThe–Ôstat“hošMÞok“returns“an“in²!teger“that‘Ô
        !           105: should“b˜e“non-zero“if“the“function“mo˜diesŽ¡‘.ùœits›¿Ãdirectory–¿Âargumen²!t.‘)óThe“function˜should˜not“moMÞdify˜the“directory˜argumen²!t“if˜itŽ¡‘.ùœreturns‘¦f0.ŽŸžC’&–3[V‘ÿeariable]ŽŽ‘Gë@rl_dequote_func_t–LÉ*“rl_filename_rewrite_hookŽ¡‘.ùœáIf–Æ non-zero,‘this“is“the“address“of“a“function“called“when“reading“directory“en²!triesŽ¡‘.ùœfrom–ÉÜthe“lesystem“for“completion“and“comparing‘ÉÝthem“to“the“partial“w²!ord“to“bMÞeŽ¡‘.ùœcompleted.‘»zThe–?>function›?=should“pMÞerform“an²!y˜necessary“application˜or“system-spMÞecicŽ¡‘.ùœcon•²!v“ersion–Êon›Ëthe“lename,‘9$suc²!h“as˜con•²!v“erting‘ÊbMÞet“w“een˜c“haracter–Êsets˜or“con•²!v“ertingŽ¡‘.ùœfrom–„a›…lesystem“format˜to“a“c²!haracter˜input“format.‘ì8The˜function“tak•²!es˜t“w“o‘„argu-Ž¡‘.ùœmen²!ts:‘ÙRåfnameá,‘Cthe–$!lename›$ to“bMÞe˜con•²!v“erted,–Cand›$!åfnlená,“its˜length‘$ in˜b•²!ytes.‘WIt˜m“ustŽ¡‘.ùœeither–ÈŠreturn“its“rst“argumenš²!t“(if“no‘È‹con˜v˜ersion“tak˜es“place)“or“the“con˜v˜erted“lenameŽ¡‘.ùœin–dÛnewly-alloMÞcated“memory‘ÿe.‘ÈThe›dÚcon•²!v“erted–dÛform“is“used“to“compare˜against“the“w²!ordŽ¡‘.ùœto›BÔbMÞe‘BÕcompleted,–V¾and,“if˜it‘BÕmatc²!hes,“is˜added–BÕto˜the˜list“of˜matc²!hes.‘¼¬Readline“will˜freeŽ¡‘.ùœthe–¦falloMÞcated“string.ŽŸžB’&–3[V‘ÿeariable]ŽŽ‘Gë@rl_compdisp_func_t–LÉ*“rl_completion_display_matches_hookŽ¡‘.ùœáIf–£xnon-zero,‘×Athen“this“is“the“address“of“a“function“to“call“when“completing“a“wš²!ord“w˜ouldŽ¡‘.ùœnormally–¨¶displa²!y›¨µthe“list“of˜pMÞossible“matc²!hes.‘‰MThis“function“is˜called“in“lieu˜of“ReadlineŽ¡‘.ùœdisplaš²!ying–s7the“list.‘DPIt‘s8tak˜es“three“argumen˜ts:‘w(âchar‘¦f**åmatc˜hesá,‘¦kâint“ån˜um‘Ä>‰x³HøŽ‘Ñtmatc˜hesá,Ž¡‘.ùœâint–-åmax‘Ä>‰x³HøŽ‘Ñtlengthá)›-where“åmatc²!hes‘ ’áis“the˜arra²!y“of˜matcš²!hing“strings,‘EUån˜um‘Ä>‰x³HøŽ‘Ñtmatc˜hes‘ ’áis“theŽŽŒ‹8õ”Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—56ŽŽŽ ƒ33 ý ÌÍ‘.ùœn•²!um“bMÞer–acof›abstrings“in“that“arra²!y‘ÿe,‘!and“åmax‘Ä>‰x³HøŽ‘Ñtlength“áis˜the“length“of“the˜longest“stringŽ¤
33‘.ùœin‘‡Âthat–‡Áarraš²!y‘ÿe.‘ðReadline“pro˜vides‘‡Âa“con˜v˜enience‘‡Âfunction,‘Àârl_display_match_listá,Ž¡‘.ùœthat–×\tak²!es›×[care“of“doing˜the“displa²!y˜to“Readline's“output˜stream.‘p¾Y‘ÿeou“ma²!y˜call“thatŽ¡‘.ùœfunction–¦ffrom“this“hoMÞok.Ž©&’&–3[V‘ÿeariable]ŽŽ‘Gë@const–LÉchar“*“rl_basic_word_break_charactersŽ¡‘.ùœáThe–Oobasic“list“of“cš²!haracters“that“signal‘Ona“break“bMÞet˜w˜een“w˜ords“for“the“completerŽ¡‘.ùœroutine.‘M¼The–v[default“v›ÿdDalue“of“this‘v\v˜ariable“is“the“cš²!haracters“whic˜h“break“w˜ords“forŽ¡‘.ùœcompletion–¦fin“Bash:‘ÝÝâ"“\t\n\"\\'`@$><=;|&{("á.ŽŸ’&–3[V‘ÿeariable]ŽŽ‘Gë@const–LÉchar“*“rl_basic_quote_charactersŽ¡‘.ùœáA–¦flist“of“quote“cš²!haracters“whic˜h“can“cause“a“w˜ord“break.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@const–LÉchar“*“rl_completer_word_break_charactersŽ¡‘.ùœáThe–Ïlist“of“cš²!haracters“that“signal‘Ï~a“break“bMÞet˜w˜een“w˜ords“for“ârl_complete_Ž¡‘.ùœinternal()á.‘ÝÝThe–¦fdefault“list“is“the“v‘ÿdDalue“of“ârl_basic_word_break_charactersá.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@rl_cpvfunc_t–LÉ*“rl_completion_word_break_hookŽ¡‘.ùœáIf–Èënon-zero,‘ÑŒthis›Èêis“the“address˜of“a“function“to˜call“when“Readline“is˜deciding“whereŽ¡‘.ùœto–¡separate‘¢wš²!ords“for“w˜ord“completion.‘FIt“should‘¢return“a“c˜haracter“string‘¢lik˜e“ârl_Ž¡‘.ùœcompleter_word_break_characters–ôëáto“bšMÞe“used“to“p˜erform“the“curren²!t“completion.Ž¡‘.ùœThe–øMfunction“ma•²!y›øLc“hoMÞose–øMto“set“ârl_completer_word_break_characters˜áitself.‘£ÕIf“theŽ¡‘.ùœfunction–¦freturns“âNULLá,“ârl_completer_word_break_characters“áis“used.ŽŸ’&–3[V‘ÿeariable]ŽŽ‘Gë@const–LÉchar“*“rl_completer_quote_charactersŽ¡‘.ùœáA‘Clist–^of“c•²!haracters›]whic“h–^can“bMÞe˜used“to“quote˜a“substring“of˜the“line.‘ÄCompletionŽ¡‘.ùœoMÞccurs–&­on›&¬the“en²!tire“substring,‘@8and“within“the˜substring“ârl_completer_word_break_Ž¡‘.ùœcharacters–8\áare›8[treated“as“an²!y“other˜c²!haracter,‘\Ùunless“they“also“appMÞear˜within“thisŽ¡‘.ùœlist.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@const–LÉchar“*“rl_filename_quote_charactersŽ¡‘.ùœáA‘]list›vof–wc²!haracters“that“cause˜a“lename“to“bMÞe˜quoted“b²!y“the“completer˜when“theyŽ¡‘.ùœappMÞear–¦fin“a“completed“lename.‘ÝÝThe“default“is“the“n²!ull“string.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@const–LÉchar“*“rl_special_prefixesŽ¡‘.ùœáThe–S­list›S¬of“c²!haracters“that“are˜wš²!ord“break“c˜haracters,‘d8but›S¬should“bMÞe“left“in˜åtext‘­áwhenŽ¡‘.ùœit–ô¡is“passed“to“the›ô¢completion“function.‘¢›Programs“can“use˜this“to“help“determine“whatŽ¡‘.ùœkind–Uíof›Uîcompleting“to˜do.‘Ã
        !           106: F‘ÿeor“instance,‘fBash“sets“this˜v‘ÿdDariable“to“â"á$@â"˜áso“that˜it“canŽ¡‘.ùœcomplete–¦fshell“v‘ÿdDariables“and“hostnames.ŽŸ’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_completion_query_itemsŽ¡‘.ùœáUp–YAto“this“manš²!y“items“will“bMÞe“displa˜y˜ed“in“respšMÞonse“to“a“p˜ossible-completions“call.Ž¡‘.ùœAfter–Vthat,‘f&readline“asks›Vthe“user˜if“she˜is“sure“she˜w•²!an“ts–Vto˜see“them˜all.‘ÃThe“defaultŽ¡‘.ùœv›ÿdDalue–¦fis“100.‘ÝÝA“negativ²!e“v˜alue“indicates“that“Readline“should“nev²!er“ask“the“user.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_completion_append_characterŽ¡‘.ùœáWhen–ýºa“single‘ý»completion“alternativš²!e“matc˜hes“at›ý»the“end“of“the˜command“line,‘thisŽ¡‘.ùœcš²!haracter–’?is“appMÞended“to“the“inserted“completion“text.‘ÑThe“default“is“a“space“c˜haracterŽ¡‘.ùœ(`‘¦f').‘·Setting›2this–2to“the˜nš²!ull“c˜haracter“(`â\0á')‘2prev˜en˜ts“an˜ything“b•MÞeing‘2app“ended‘2auto-Ž¡‘.ùœmatically‘ÿe.‘•,This–ÌQcan“bšMÞe“c²!hanged“in“application-sp˜ecic‘ÌRcompletion“functions“to“pro²!videŽŽŒ‹9äŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—57ŽŽŽ ƒ33 ý ÌÍ‘.ùœthe–Å\most“sensible‘Äwš²!ord“separator“c˜haracter"“according“to‘Äan“application-spMÞecic“com-Ž¤
33‘.ùœmand–€Vline“syn²!tax“spšMÞecication.‘Ñ-It“is“set“to“the“default“b˜efore“an²!y“application-sp˜ecicŽ¡‘.ùœcompletion–¦ffunction“is“called,“and“maš²!y“only“bMÞe“c˜hanged“within“suc˜h“a“function.Ž©ÌÎ’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_completion_suppress_appendŽ¡‘.ùœáIf›þðnon-zero,‘årl‘Ä>‰x³HøŽ–Ñtcompletion‘Ä>‰x³HøŽ“appMÞend‘Ä>‰x³HøŽ“c²!haracter‘Èáis˜not–þñappMÞended˜to“matc²!hes˜at“the˜endŽ¡‘.ùœof–Ošthe“command‘O™line,‘`öas“describšMÞed“ab˜o•²!v“e.‘ÀîIt–Ošis“set“to“0‘O™b˜efore“an²!y“application-sp˜ecicŽ¡‘.ùœcompletion–¦ffunction“is“called,“and“maš²!y“only“bMÞe“c˜hanged“within“suc˜h“a“function.ŽŸÌÍ’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_completion_quote_characterŽ¡‘.ùœáWhen–X;Readline“is›X:completing“quoted“text,‘„°as˜delimited“b²!y“one“of˜the“c²!haracters“inŽ¡‘.ùœårl‘Ä>‰x³HøŽ–Ñtcompleter‘Ä>‰x³HøŽ“quote‘Ä>‰x³HøŽ“c²!haractersá,‘òCit–¯äsets›¯ãthis“v‘ÿdDariable“to“the˜quoting“c²!haracter“found.Ž¡‘.ùœThis–¦fis“set“bšMÞefore“an²!y“application-sp˜ecic“completion“function“is“called.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_completion_suppress_quoteŽ¡‘.ùœáIf–àDnon-zero,‘î»Readline›àCdoMÞes“not˜appMÞend“a“matc²!hing˜quote“c²!haracter˜when“pMÞerformingŽ¡‘.ùœcompletion–ÓGon›ÓFa“quoted˜string.‘—~It˜is“set˜to“0˜bMÞefore“an²!y˜application-spMÞecic“completionŽ¡‘.ùœfunction–¦fis“called,“and“maš²!y“only“bMÞe“c˜hanged“within“suc˜h“a“function.ŽŸÌÍ’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_completion_found_quoteŽ¡‘.ùœáWhen–ÌúReadline“is“completing›Ìûquoted“text,‘ÖŸit“sets“this“v‘ÿdDariable“to˜a“non-zero“v‘ÿdDalue“ifŽ¡‘.ùœthe–‡¿wš²!ord‘‡¾bMÞeing“completed“con˜tains‘‡¾or“is“delimited“b˜y‘‡¾an˜y“quoting“c˜haracters,‘ÁincludingŽ¡‘.ùœbacš²!kslashes.‘ÝÝThis–¦fis“set“bMÞefore“an˜y“application-spMÞecic“completion“function“is“called.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_completion_mark_symlink_dirsŽ¡‘.ùœáIf–ѧnon-zero,‘Üwa“slash“will“bšMÞe“app˜ended“to“completed“lenames“that“are“sym²!b˜olic“linksŽ¡‘.ùœto–ærdirectory›æsnames,‘Ösub‘›»ject“to“the˜v‘ÿdDalue“of“the“user-settable˜åmark-directories‘Yôáv‘ÿdDariable.Ž¡‘.ùœThis–Imv‘ÿdDariable“exists“so“that“application-spMÞecic“completion“functions“can“o•²!v“erride‘ImtheŽ¡‘.ùœuser's–global›preference“(set“via“the˜åmark-symlink²!ed-directories‘Š’áReadline“v‘ÿdDariable)Ž¡‘.ùœif–„appropriate.‘võThis“v‘ÿdDariable“is“set“to“the“user's‘„preference“bMÞefore“an²!y“application-Ž¡‘.ùœspMÞecic–Îcompletion›Îfunction“is˜called,‘×ìso“unless“that˜function“moMÞdies˜the“v‘ÿdDalue,‘×ìtheŽ¡‘.ùœuser's–¦fpreferences“are“honored.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_ignore_completion_duplicatesŽ¡‘.ùœáIf–¦fnon-zero,“then“duplicates“in“the“matcš²!hes“are“remo˜v˜ed.‘ÝÝThe“default“is“1.ŽŸÌÍ’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_filename_completion_desiredŽ¡‘.ùœáNon-zero–Ñmeans“that›Ñ      the“results“of“the“matc²!hes˜are“to“bMÞe“treated“as“lenames.‘]ÄThisŽ¡‘.ùœis–Ì'äalways‘²?ázero›Ì(when“completion“is“attempted,‘—and“can“only“bMÞe˜c²!hanged“within“anŽ¡‘.ùœapplication-spMÞecic›¼õcompletion–¼ôfunction.‘!‰If“it˜is“set˜to“a˜non-zero“v‘ÿdDalue˜bš²!y“suc˜h‘¼õaŽ¡‘.ùœfunction,‘Þdirectory–¬
1.1       misho     107: names“ha•²!v“e›¬      a–¬
1.1.1.2 ! misho     108: slash“appMÞended˜and“Readline“attempts“to˜quote“com-Ž¡‘.ùœpleted–6 lenames“if“they‘6!conš²!tain“an˜y“c˜haracters“in“ârl_filename_quote_charactersŽ¡‘.ùœáand–¦fârl_filename_quoting_desired“áis“set“to“a“non-zero“v‘ÿdDalue.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_filename_quoting_desiredŽ¡‘.ùœáNon-zero–^nmeans“that“the›^mresults“of“the“matc²!hes“are“to“bMÞe˜quoted“using“double“quotesŽ¡‘.ùœ(or–8an“application-spMÞecic“quoting“mecš²!hanism)‘7if“the“completed“lename“con˜tainsŽ¡‘.ùœan•²!y›QJc“haracters–QIin˜ârl_filename_quote_charsá.‘Á~This˜is“äalways‘7bánon-zero“when˜comple-Ž¡‘.ùœtion–Q is›Qattempted,‘band“can“only˜bMÞe“c²!hanged˜within“an˜application-spMÞecic“completionŽ¡‘.ùœfunction.‘} The–…°quoting›…¯is“eected˜via“a˜call˜to“the˜function“pMÞoin²!ted˜to“b²!y˜ârl_filename_Ž¡‘.ùœquoting_functioná.ŽŽŒ‹:BŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—58ŽŽŽ ƒ33 ý ÌÍ’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_attempted_completion_overŽ¤
33‘.ùœáIf–Oan“application-spMÞecic“completion‘Ofunction“assigned“to“ârl_attempted_Ž¡‘.ùœcompletion_function–básets›bŒthis“v‘ÿdDariable“to˜a“non-zero“v‘ÿdDalue,‘•Readline˜will“notŽ¡‘.ùœpMÞerform–Žºits“default“lename“completion‘Ž¹ev²!en“if“the“application's“completion“functionŽ¡‘.ùœreturns–¦fno“matcš²!hes.‘ÝÝIt“should“bMÞe“set“only“b˜y“an“application's“completion“function.Ž©33’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_sort_completion_matchesŽ¡‘.ùœáIf–”Ôan›”Óapplication“sets˜this“v‘ÿdDariable˜to“0,‘˜WReadline“will˜not“sort˜the“list˜of“completionsŽ¡‘.ùœ(whicš²!h–òÍimplies“that‘òÎit“cannot“remo˜v˜e“an˜y›òÎduplicate“completions).‘¡ÿThe˜default“v‘ÿdDalue“isŽ¡‘.ùœ1,›ÅÖwhic²!h–¿Œmeans“that“Readline“will“sort“the“completions“and,˜depMÞending“on“the“v‘ÿdDalueŽ¡‘.ùœof–¦fârl_ignore_completion_duplicatesá,“will“attempt“to“remo•²!v“e–¦fduplicate“matc²!hes.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_completion_typeŽ¡‘.ùœáSet–61to›62a“c²!haracter˜describing“the˜t²!ypMÞe“of“completion˜Readline“is˜curren²!tly“attempt-Ž¡‘.ùœing;‘.qsee–&the“description‘&of“ârl_complete_internal()“á(see“Section“2.6.2“[CompletionŽ¡‘.ùœF‘ÿeunctions],‘˜%page–gÌ52)“for“the“list“of“c²!haracters.‘"This“is“set“to“the“appropriate“v‘ÿdDalueŽ¡‘.ùœb•MÞefore›Í¡an²!y‘Í application-sp“ecic˜completion˜function˜is–Í called,‘×palloš²!wing“suc˜h‘Í¡functionsŽ¡‘.ùœto–¦fpresenš²!t“the“same“in˜terface“as“ârl_complete()á.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_completion_invoking_keyŽ¡‘.ùœáSet–äRto›äQthe“nal˜c²!haracter“in˜the“k²!ey“sequence˜that“in•²!v“ok“ed˜one–äRof˜the“completionŽ¡‘.ùœfunctions–that“call“ârl_complete_internal()á.‘o(This“is“set“to“the“appropriate“v‘ÿdDalueŽ¡‘.ùœbšMÞefore–¦fan²!y“application-sp˜ecic“completion“function“is“called.Ž¦’&–3[V‘ÿeariable]ŽŽ‘Gë@int‘LÉrl_inhibit_completionŽ¡‘.ùœáIf–d`this›dav‘ÿdDariable“is“non-zero,‘q•completion“is˜inhibited.‘ÇÛThe“completion“c²!haracter˜will“bMÞeŽ¡‘.ùœinserted–¦fas“an²!y“other“bMÞound“to“âself-insertá.ŽŸ‘Gëg2.6.4‘d(A–íMShort“Completion“ExampleŽŽŸ³3‘GáHere–}ais“a›}`small“application“demonstrating“the˜use“of“the“GNU‘}VReadline“library‘ÿe.‘Ð0It“is“calledŽ¡‘Gâfilemaná,‘0and–ÃÕthe“source‘ÃÔcoMÞde“resides“in“âexamples/fileman.cá.‘6)This“sample“applicationŽ¡‘Gpro²!vides–#þcompletion“of‘#ÿcommand“names,›>line“editing“features,˜and“access“to‘#ÿthe“history“list.ŽŽŒ‹;'6Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—59ŽŽŽ ƒ33 ý ÌÍ‘.ùœÉ/*–¹–fileman.c“--“A“tiny“application“which“demonstrates“how“to“use“theŽ¤
        !           109: €‘=&^GNU–¹–Readline“library.‘       s,This“application“interactively“allows“usersŽ¡‘=&^to–¹–manipulate“files“and“their“modes.“*/Ž©‘.ùœ#ifdef‘¹–HAVE_CONFIG_HŽ¡‘.ùœ#‘        s,include‘¹–<config.h>Ž¡‘.ùœ#endifŽ¦‘.ùœ#include‘¹–<sys/types.h>Ž¡‘.ùœ#ifdef‘¹–HAVE_SYS_FILE_HŽ¡‘.ùœ#‘   s,include‘¹–<sys/file.h>Ž¡‘.ùœ#endifŽ¡‘.ùœ#include‘¹–<sys/stat.h>Ž¦‘.ùœ#ifdef‘¹–HAVE_UNISTD_HŽ¡‘.ùœ#‘    s,include‘¹–<unistd.h>Ž¡‘.ùœ#endifŽ¦‘.ùœ#include‘¹–<fcntl.h>Ž¡‘.ùœ#include‘¹–<stdio.h>Ž¡‘.ùœ#include‘¹–<errno.h>Ž¦‘.ùœ#if–¹–defined“(HAVE_STRING_H)Ž¡‘.ùœ#‘  s,include‘¹–<string.h>Ž¡‘.ùœ#else–¹–/*“!HAVE_STRING_H“*/Ž¡‘.ùœ#‘    s,include‘¹–<strings.h>Ž¡‘.ùœ#endif–¹–/*“!HAVE_STRING_H“*/Ž¦‘.ùœ#ifdef‘¹–HAVE_STDLIB_HŽ¡‘.ùœ#‘    s,include‘¹–<stdlib.h>Ž¡‘.ùœ#endifŽ¦‘.ùœ#include‘¹–<time.h>Ž¦‘.ùœ#include‘¹–<readline/readline.h>Ž¡‘.ùœ#include‘¹–<readline/history.h>Ž¦‘.ùœextern–¹–char“*xmalloc“PARAMS((size_t));Ž¦‘.ùœ/*–¹–The“names“of“functions“that“actually“do“the“manipulation.“*/Ž¡‘.ùœint–¹–com_list“PARAMS((char“*));Ž¡‘.ùœint–¹–com_view“PARAMS((char“*));Ž¡‘.ùœint–¹–com_rename“PARAMS((char“*));Ž¡‘.ùœint–¹–com_stat“PARAMS((char“*));Ž¡‘.ùœint–¹–com_pwd“PARAMS((char“*));Ž¡‘.ùœint–¹–com_delete“PARAMS((char“*));Ž¡‘.ùœint–¹–com_help“PARAMS((char“*));Ž¡‘.ùœint–¹–com_cd“PARAMS((char“*));Ž¡‘.ùœint–¹–com_quit“PARAMS((char“*));Ž¦‘.ùœ/*–¹–A“structure“which“contains“information“on“the“commands“this“programŽ¡‘=&^can–¹–understand.“*/Ž¦‘.ùœtypedef–¹–struct“{Ž¡‘8lÈchar–¹–*name;“/*“User“printable“name“of“the“function.“*/Ž¡‘8lÈrl_icpfunc_t–¹–*func;“/*“Function“to“call“to“do“the“job.“*/Ž¡‘8lÈchar–¹–*doc;“/*“Documentation“for“this“function.‘      s,*/Ž¡‘.ùœ}‘¹–COMMAND;ŽŽŒ‹<1xŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—60ŽŽŽ ƒ33 ý«LÍ‘.ùœÉCOMMAND–¹–commands[]“=“{Ž¤
        !           110: €‘8lÈ{–¹–"cd",“com_cd,“"Change“to“directory“DIR"“},Ž¡‘8lÈ{–¹–"delete",“com_delete,“"Delete“FILE"“},Ž¡‘8lÈ{–¹–"help",“com_help,“"Display“this“text"“},Ž¡‘8lÈ{–¹–"?",“com_help,“"Synonym“for“`help'"“},Ž¡‘8lÈ{–¹–"list",“com_list,“"List“files“in“DIR"“},Ž¡‘8lÈ{–¹–"ls",“com_list,“"Synonym“for“`list'"“},Ž¡‘8lÈ{–¹–"pwd",“com_pwd,“"Print“the“current“working“directory"“},Ž¡‘8lÈ{–¹–"quit",“com_quit,“"Quit“using“Fileman"“},Ž¡‘8lÈ{–¹–"rename",“com_rename,“"Rename“FILE“to“NEWNAME"“},Ž¡‘8lÈ{–¹–"stat",“com_stat,“"Print“out“statistics“on“FILE"“},Ž¡‘8lÈ{–¹–"view",“com_view,“"View“the“contents“of“FILE"“},Ž¡‘8lÈ{–¹–(char“*)NULL,“(rl_icpfunc_t“*)NULL,“(char“*)NULL“}Ž¡‘.ùœ};Ž©‘.ùœ/*–¹–Forward“declarations.“*/Ž¡‘.ùœchar–¹–*stripwhite“();Ž¡‘.ùœCOMMAND–¹–*find_command“();Ž¦‘.ùœ/*–¹–The“name“of“this“program,“as“taken“from“argv[0].“*/Ž¡‘.ùœchar‘¹–*progname;Ž¦‘.ùœ/*–¹–When“non-zero,“this“global“means“the“user“is“done“using“this“program.“*/Ž¡‘.ùœint‘¹–done;Ž¦‘.ùœchar‘¹–*Ž¡‘.ùœdupstr‘¹–(s)Ž¡‘F™Šchar‘¹–*s;Ž¡‘.ùœ{Ž¡‘8lÈchar‘¹–*r;Ž¦‘8lÈr–¹–=“xmalloc“(strlen“(s)“+“1);Ž¡‘8lÈstrcpy–¹–(r,“s);Ž¡‘8lÈreturn‘¹–(r);Ž¡‘.ùœ}Ž¦‘.ùœmain–¹–(argc,“argv)Ž¡‘F™Šint‘¹–argc;Ž¡‘F™Šchar‘¹–**argv;Ž¡‘.ùœ{Ž¡‘8lÈchar–¹–*line,“*s;Ž¦‘8lÈprogname–¹–=“argv[0];Ž¦‘8lÈinitialize_readline–¹–();“/*“Bind“our“completer.“*/Ž¦‘8lÈ/*–¹–Loop“reading“and“executing“lines“until“the“user“quits.“*/Ž¡‘8lÈfor–¹–(“;“done“==“0;“)Ž¡‘Aßô{Ž¡‘KS line–¹–=“readline“("FileMan:“");Ž¦‘KS if‘¹–(!line)Ž¡‘TÆLbreak;Ž¦‘KS /*–¹–Remove“leading“and“trailing“whitespace“from“the“line.Ž¡‘YâThen,–¹–if“there“is“anything“left,“add“it“to“the“history“listŽ¡‘Yâand–¹–execute“it.“*/ŽŽŒ‹=8èŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—61ŽŽŽ ƒ33 ý ÌÍ‘KS És–¹–=“stripwhite“(line);Ž©‘KS if‘¹–(*s)Ž¤
        !           111: €‘TÆL{Ž¡‘^9xadd_history‘¹–(s);Ž¡‘^9xexecute_line‘¹–(s);Ž¡‘TÆL}Ž¦‘KS free‘¹–(line);Ž¡‘Aßô}Ž¡‘8lÈexit‘¹–(0);Ž¡‘.ùœ}Ž¦‘.ùœ/*–¹–Execute“a“command“line.“*/Ž¡‘.ùœintŽ¡‘.ùœexecute_line‘¹–(line)Ž¡‘F™Šchar‘¹–*line;Ž¡‘.ùœ{Ž¡‘8lÈregister–¹–int“i;Ž¡‘8lÈCOMMAND‘¹–*command;Ž¡‘8lÈchar‘¹–*word;Ž¦‘8lÈ/*–¹–Isolate“the“command“word.“*/Ž¡‘8lÈi–¹–=“0;Ž¡‘8lÈwhile–¹–(line[i]“&&“whitespace“(line[i]))Ž¡‘Aßôi++;Ž¡‘8lÈword–¹–=“line“+“i;Ž¦‘8lÈwhile–¹–(line[i]“&&“!whitespace“(line[i]))Ž¡‘Aßôi++;Ž¦‘8lÈif‘¹–(line[i])Ž¡‘Aßôline[i++]–¹–=“'\0';Ž¦‘8lÈcommand–¹–=“find_command“(word);Ž¦‘8lÈif‘¹–(!command)Ž¡‘Aßô{Ž¡‘KS fprintf–¹–(stderr,“"%s:“No“such“command“for“FileMan.\n",“word);Ž¡‘KS return‘¹–(-1);Ž¡‘Aßô}Ž¦‘8lÈ/*–¹–Get“argument“to“command,“if“any.“*/Ž¡‘8lÈwhile–¹–(whitespace“(line[i]))Ž¡‘Aßôi++;Ž¦‘8lÈword–¹–=“line“+“i;Ž¦‘8lÈ/*–¹–Call“the“function.“*/Ž¡‘8lÈreturn–¹–((*(command->func))“(word));Ž¡‘.ùœ}Ž¦‘.ùœ/*–¹–Look“up“NAME“as“the“name“of“a“command,“and“return“a“pointer“to“thatŽ¡‘=&^command.‘  s,Return–¹–a“NULL“pointer“if“NAME“isn't“a“command“name.“*/Ž¡‘.ùœCOMMAND‘¹–*Ž¡‘.ùœfind_command‘¹–(name)Ž¡‘F™Šchar‘¹–*name;Ž¡‘.ùœ{ŽŽŒ‹>@!Ÿò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—62ŽŽŽ ƒ33 ý ÌÍ‘8lÈÉregister–¹–int“i;Ž©‘8lÈfor–¹–(i“=“0;“commands[i].name;“i++)Ž¤
        !           112: €‘Aßôif–¹–(strcmp“(name,“commands[i].name)“==“0)Ž¡‘KS return‘¹–(&commands[i]);Ž¦‘8lÈreturn–¹–((COMMAND“*)NULL);Ž¡‘.ùœ}Ž¦‘.ùœ/*–¹–Strip“whitespace“from“the“start“and“end“of“STRING.‘ s,Return“a“pointerŽ¡‘=&^into–¹–STRING.“*/Ž¡‘.ùœchar‘¹–*Ž¡‘.ùœstripwhite‘¹–(string)Ž¡‘F™Šchar‘¹–*string;Ž¡‘.ùœ{Ž¡‘8lÈregister–¹–char“*s,“*t;Ž¦‘8lÈfor–¹–(s“=“string;“whitespace“(*s);“s++)Ž¡‘Aßô;Ž¦‘8lÈif–¹–(*s“==“0)Ž¡‘Aßôreturn‘¹–(s);Ž¦‘8lÈt–¹–=“s“+“strlen“(s)“-“1;Ž¡‘8lÈwhile–¹–(t“>“s“&&“whitespace“(*t))Ž¡‘Aßôt--;Ž¡‘8lÈ*++t–¹–=“'\0';Ž¦‘8lÈreturn‘¹–s;Ž¡‘.ùœ}Ž¦‘.ùœ/*–¹–****************************************************************“*/Ž¡‘.ùœ/*’&7ج*/Ž¡‘.ùœ/*‘UŒInterface–¹–to“Readline“Completion‘K™`*/Ž¡‘.ùœ/*’&7ج*/Ž¡‘.ùœ/*–¹–****************************************************************“*/Ž¦‘.ùœchar–¹–*command_generator“PARAMS((const“char“*,“int));Ž¡‘.ùœchar–¹–**fileman_completion“PARAMS((const“char“*,“int,“int));Ž¦‘.ùœ/*–¹–Tell“the“GNU“Readline“library“how“to“complete.‘   s,We“want“to“try“to“completeŽ¡‘=&^on–¹–command“names“if“this“is“the“first“word“in“the“line,“or“on“filenamesŽ¡‘=&^if–¹–not.“*/Ž¡‘.ùœinitialize_readline‘¹–()Ž¡‘.ùœ{Ž¡‘8lÈ/*–¹–Allow“conditional“parsing“of“the“~/.inputrc“file.“*/Ž¡‘8lÈrl_readline_name–¹–=“"FileMan";Ž¦‘8lÈ/*–¹–Tell“the“completer“that“we“want“a“crack“first.“*/Ž¡‘8lÈrl_attempted_completion_function–¹–=“fileman_completion;Ž¡‘.ùœ}Ž¦‘.ùœ/*–¹–Attempt“to“complete“on“the“contents“of“TEXT.‘       s,START“and“END“bound“theŽ¡‘=&^region–¹–of“rl_line_buffer“that“contains“the“word“to“complete.‘        s,TEXT“isŽ¡‘=&^the–¹–word“to“complete.‘       s,We“can“use“the“entire“contents“of“rl_line_bufferŽ¡‘=&^in–¹–case“we“want“to“do“some“simple“parsing.‘ s,Return“the“array“of“matches,Ž¡‘=&^or–¹–NULL“if“there“aren't“any.“*/Ž¡‘.ùœchar‘¹–**ŽŽŒ‹?ElŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—63ŽŽŽ ƒ33 ý ÌÍ‘.ùœÉfileman_completion–¹–(text,“start,“end)Ž¤
1.1       misho     113: €‘F™Šconst–¹–char“*text;Ž¡‘F™Šint–¹–start,“end;Ž¡‘.ùœ{Ž¡‘8lÈchar‘¹–**matches;Ž¤‘8lÈmatches–¹–=“(char“**)NULL;Ž¡‘8lÈ/*–¹–If“this“word“is“at“the“start“of“the“line,“then“it“is“a“commandŽ¤
1.1.1.2 ! misho     114: €‘F™Što–¹–complete.‘        s,Otherwise“it“is“the“name“of“a“file“in“the“currentŽ¡‘F™Šdirectory.‘¹–*/Ž¡‘8lÈif–¹–(start“==“0)Ž¡‘Aßômatches–¹–=“rl_completion_matches“(text,“command_generator);Ž©‘8lÈreturn‘¹–(matches);Ž¡‘.ùœ}Ž¦‘.ùœ/*–¹–Generator“function“for“command“completion.‘   s,STATE“lets“us“know“whetherŽ¡‘=&^to–¹–start“from“scratch;“without“any“state“(i.e.“STATE“==“0),“then“weŽ¡‘=&^start–¹–at“the“top“of“the“list.“*/Ž¡‘.ùœchar‘¹–*Ž¡‘.ùœcommand_generator–¹–(text,“state)Ž¡‘F™Šconst–¹–char“*text;Ž¡‘F™Šint‘¹–state;Ž¡‘.ùœ{Ž¡‘8lÈstatic–¹–int“list_index,“len;Ž¡‘8lÈchar‘¹–*name;Ž¦‘8lÈ/*–¹–If“this“is“a“new“word“to“complete,“initialize“now.‘   s,This“includesŽ¡‘F™Šsaving–¹–the“length“of“TEXT“for“efficiency,“and“initializing“the“indexŽ¡‘F™Švariable–¹–to“0.“*/Ž¡‘8lÈif‘¹–(!state)Ž¡‘Aßô{Ž¡‘KS list_index–¹–=“0;Ž¡‘KS len–¹–=“strlen“(text);Ž¡‘Aßô}Ž¦‘8lÈ/*–¹–Return“the“next“name“which“partially“matches“from“the“command“list.“*/Ž¡‘8lÈwhile–¹–(name“=“commands[list_index].name)Ž¡‘Aßô{Ž¡‘KS list_index++;Ž¦‘KS if–¹–(strncmp“(name,“text,“len)“==“0)Ž¡‘TÆLreturn‘¹–(dupstr(name));Ž¡‘Aßô}Ž¦‘8lÈ/*–¹–If“no“names“matched,“then“return“NULL.“*/Ž¡‘8lÈreturn–¹–((char“*)NULL);Ž¡‘.ùœ}Ž¦‘.ùœ/*–¹–****************************************************************“*/Ž¡‘.ùœ/*’&7ج*/Ž¡‘.ùœ/*‘l¬zFileMan‘¹–Commands‘’Ò*/Ž¡‘.ùœ/*’&7ج*/Ž¡‘.ùœ/*–¹–****************************************************************“*/Ž¦‘.ùœ/*–¹–String“to“pass“to“system“().‘        s,This“is“for“the“LIST,“VIEW“and“RENAMEŽ¡‘=&^commands.‘¹–*/ŽŽŒ‹@MGŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—64ŽŽŽ ƒ33 ý ÌÍ‘.ùœÉstatic–¹–char“syscom[1024];Ž©‘.ùœ/*–¹–List“the“file(s)“named“in“arg.“*/Ž¤
        !           115: €‘.ùœcom_list‘¹–(arg)Ž¡‘F™Šchar‘¹–*arg;Ž¡‘.ùœ{Ž¡‘8lÈif‘¹–(!arg)Ž¡‘Aßôarg–¹–=“"";Ž¦‘8lÈsprintf–¹–(syscom,“"ls“-FClg“%s",“arg);Ž¡‘8lÈreturn–¹–(system“(syscom));Ž¡‘.ùœ}Ž¦‘.ùœcom_view‘¹–(arg)Ž¡‘F™Šchar‘¹–*arg;Ž¡‘.ùœ{Ž¡‘8lÈif–¹–(!valid_argument“("view",“arg))Ž¡‘Aßôreturn‘¹–1;Ž¦‘.ùœ#if–¹–defined“(__MSDOS__)Ž¡‘8lÈ/*–¹–more.com“doesn't“grok“slashes“in“pathnames“*/Ž¡‘8lÈsprintf–¹–(syscom,“"less“%s",“arg);Ž¡‘.ùœ#elseŽ¡‘8lÈsprintf–¹–(syscom,“"more“%s",“arg);Ž¡‘.ùœ#endifŽ¡‘8lÈreturn–¹–(system“(syscom));Ž¡‘.ùœ}Ž¦‘.ùœcom_rename‘¹–(arg)Ž¡‘F™Šchar‘¹–*arg;Ž¡‘.ùœ{Ž¡‘8lÈtoo_dangerous‘¹–("rename");Ž¡‘8lÈreturn‘¹–(1);Ž¡‘.ùœ}Ž¦‘.ùœcom_stat‘¹–(arg)Ž¡‘F™Šchar‘¹–*arg;Ž¡‘.ùœ{Ž¡‘8lÈstruct–¹–stat“finfo;Ž¦‘8lÈif–¹–(!valid_argument“("stat",“arg))Ž¡‘Aßôreturn‘¹–(1);Ž¦‘8lÈif–¹–(stat“(arg,“&finfo)“==“-1)Ž¡‘Aßô{Ž¡‘KS perror‘¹–(arg);Ž¡‘KS return‘¹–(1);Ž¡‘Aßô}Ž¦‘8lÈprintf–¹–("Statistics“for“`%s':\n",“arg);Ž¦‘8lÈprintf–¹–("%s“has“%d“link%s,“and“is“%d“byte%s“in“length.\n",Ž¡‘8lÈarg,Ž¡‘^9xfinfo.st_nlink,Ž¡‘^9x(finfo.st_nlink–¹–==“1)“?“""“:“"s",Ž¡‘^9xfinfo.st_size,Ž¡‘^9x(finfo.st_size–¹–==“1)“?“""“:“"s");Ž¡‘8lÈprintf–¹–("Inode“Last“Change“at:“%s",“ctime“(&finfo.st_ctime));ŽŽŒ‹ATÑŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—65ŽŽŽ ƒ33 ý ÌÍ‘8lÈÉprintf–¹–("‘Y„Last“access“at:“%s",“ctime“(&finfo.st_atime));Ž¤
        !           116: €‘8lÈprintf–¹–("‘æXLast“modified“at:“%s",“ctime“(&finfo.st_mtime));Ž¡‘8lÈreturn‘¹–(0);Ž¡‘.ùœ}Ž©‘.ùœcom_delete‘¹–(arg)Ž¡‘F™Šchar‘¹–*arg;Ž¡‘.ùœ{Ž¡‘8lÈtoo_dangerous‘¹–("delete");Ž¡‘8lÈreturn‘¹–(1);Ž¡‘.ùœ}Ž¦‘.ùœ/*–¹–Print“out“help“for“ARG,“or“for“all“of“the“commands“if“ARG“isŽ¡‘=&^not–¹–present.“*/Ž¡‘.ùœcom_help‘¹–(arg)Ž¡‘F™Šchar‘¹–*arg;Ž¡‘.ùœ{Ž¡‘8lÈregister–¹–int“i;Ž¡‘8lÈint–¹–printed“=“0;Ž¦‘8lÈfor–¹–(i“=“0;“commands[i].name;“i++)Ž¡‘Aßô{Ž¡‘KS if–¹–(!*arg“||“(strcmp“(arg,“commands[i].name)“==“0))Ž¡‘TÆL{Ž¡‘^9xprintf–¹–("%s\t\t%s.\n",“commands[i].name,“commands[i].doc);Ž¡‘^9xprinted++;Ž¡‘TÆL}Ž¡‘Aßô}Ž¦‘8lÈif‘¹–(!printed)Ž¡‘Aßô{Ž¡‘KS printf–¹–("No“commands“match“`%s'.‘ s,Possibilities“are:\n",“arg);Ž¦‘KS for–¹–(i“=“0;“commands[i].name;“i++)Ž¡‘TÆL{Ž¡‘^9x/*–¹–Print“in“six“columns.“*/Ž¡‘^9xif–¹–(printed“==“6)Ž¡‘g¬¤{Ž¡‘qÐprinted–¹–=“0;Ž¡‘qÐprintf‘¹–("\n");Ž¡‘g¬¤}Ž¦‘^9xprintf–¹–("%s\t",“commands[i].name);Ž¡‘^9xprinted++;Ž¡‘TÆL}Ž¦‘KS if‘¹–(printed)Ž¡‘TÆLprintf‘¹–("\n");Ž¡‘Aßô}Ž¡‘8lÈreturn‘¹–(0);Ž¡‘.ùœ}Ž¦‘.ùœ/*–¹–Change“to“the“directory“ARG.“*/Ž¡‘.ùœcom_cd‘¹–(arg)Ž¡‘F™Šchar‘¹–*arg;Ž¡‘.ùœ{Ž¡‘8lÈif–¹–(chdir“(arg)“==“-1)Ž¡‘Aßô{ŽŽŒ‹BZtŸò‘GáChapter–¦f2:‘ÝÝProgramming“with“GNU“Readline’Ê—66ŽŽŽ ƒ33 ý ÌÍ‘KS Éperror‘¹–(arg);Ž¤
        !           117: €‘KS return‘¹–1;Ž¡‘Aßô}Ž©‘8lÈcom_pwd‘¹–("");Ž¡‘8lÈreturn‘¹–(0);Ž¡‘.ùœ}Ž¦‘.ùœ/*–¹–Print“out“the“current“working“directory.“*/Ž¡‘.ùœcom_pwd‘¹–(ignore)Ž¡‘F™Šchar‘¹–*ignore;Ž¡‘.ùœ{Ž¡‘8lÈchar–¹–dir[1024],“*s;Ž¦‘8lÈs–¹–=“getcwd“(dir,“sizeof(dir)“-“1);Ž¡‘8lÈif–¹–(s“==“0)Ž¡‘Aßô{Ž¡‘KS printf–¹–("Error“getting“pwd:“%s\n",“dir);Ž¡‘KS return‘¹–1;Ž¡‘Aßô}Ž¦‘8lÈprintf–¹–("Current“directory“is“%s\n",“dir);Ž¡‘8lÈreturn‘¹–0;Ž¡‘.ùœ}Ž¦‘.ùœ/*–¹–The“user“wishes“to“quit“using“this“program.‘ s,Just“set“DONE“non-zero.“*/Ž¡‘.ùœcom_quit‘¹–(arg)Ž¡‘F™Šchar‘¹–*arg;Ž¡‘.ùœ{Ž¡‘8lÈdone–¹–=“1;Ž¡‘8lÈreturn‘¹–(0);Ž¡‘.ùœ}Ž¦‘.ùœ/*–¹–Function“which“tells“you“that“you“can't“do“this.“*/Ž¡‘.ùœtoo_dangerous‘¹–(caller)Ž¡‘F™Šchar‘¹–*caller;Ž¡‘.ùœ{Ž¡‘8lÈfprintf‘¹–(stderr,Ž¡‘bó"%s:–¹–Too“dangerous“for“me“to“distribute.‘    s,Write“it“yourself.\n",Ž¡‘bócaller);Ž¡‘.ùœ}Ž¦‘.ùœ/*–¹–Return“non-zero“if“ARG“is“a“valid“argument“for“CALLER,“else“printŽ¡‘=&^an–¹–error“message“and“return“zero.“*/Ž¡‘.ùœintŽ¡‘.ùœvalid_argument–¹–(caller,“arg)Ž¡‘F™Šchar–¹–*caller,“*arg;Ž¡‘.ùœ{Ž¡‘8lÈif–¹–(!arg“||“!*arg)Ž¡‘Aßô{Ž¡‘KS fprintf–¹–(stderr,“"%s:“Argument“required.\n",“caller);Ž¡‘KS return‘¹–(0);Ž¡‘Aßô}Ž¦‘8lÈreturn‘¹–(1);Ž¡‘.ùœ}ŽŽŒ‹C_÷Ÿò’&¸¼Ëá67ŽŽŽ ƒ33 ý ÌÍ‘GëTApp›Š=endix‘záA‘    ¸QGNU–z³F‘þaGree“Do˜cumen‘ÿuÂtation“LicenseŽŽŸƒª’£¤AáV‘ÿeersion–¦f1.3,“3“No•²!v“em“bMÞer‘¦f2008Ž©Q‘.ùœCop•²!yrigh“t‘±ž«‚cŽŽŽ‘¦fê
ŽŽŽŽ‘@&á2000,–¦f2001,“2002,“2007,“2008“F›ÿeree“Soft•²!w“are–¦fF˜oundation,“Inc.Ž¤
33‘.ùœâhttp://fsf.org/ŽŸff‘.ùœáEv•²!ery“one–¦fis“pMÞermitted“to“copš²!y“and“distribute“v˜erbatim“copiesŽ¡‘.ùœof–¦fthis“license“doMÞcumenš²!t,“but“c˜hanging“it“is“not“allo˜w˜ed.Ž¦‘&-0.Ž‘'¿«PREAMBLEŽ¦‘'¿«The–vQpurpMÞose›vRof“this˜License“is˜to“mak²!e“a˜man²!ual,›ªLtextb•MÞo“ok,˜or–vQother‘vRfunctional“andŽ¡‘'¿«useful–žïdoMÞcumen²!t›žîåfree‘;öáin“the“sense˜of“freedom:‘Ú!to“assure“ev•²!ery“one‘žïthe˜eectiv“e‘žïfreedomŽ¡‘'¿«to–Æ9cop²!y›Æ:and“redistribute“it,‘Î.with“or˜without“moMÞdifying“it,‘Î.either“commercially˜or“non-Ž¡‘'¿«commercially–ÿe.‘cÏSecondarily“,‘Hàthis–(aLicense›(bpreserv²!es“for“the˜author“and“publisher˜a“w•²!a“yŽ¡‘'¿«to–W9get“credit›W8for“their“w²!ork,‘ƒmwhile“not“bMÞeing“considered˜respšMÞonsible“for“mo˜dicationsŽ¡‘'¿«made–¦fb²!y“others.Ž¦‘'¿«This–È/License›È0is“a“kind“of˜\cop•²!yleft",‘ô whic“h–È/means˜that“deriv‘ÿdDativš²!e“w˜orks“of‘È0the“doMÞcumen˜tŽ¡‘'¿«m•²!ust›õthemselv“es–ôbMÞe˜free˜in˜the“same˜sense.‘ ‰It˜complemen²!ts˜the“GNU‘ÙGeneral˜PublicŽ¡‘'¿«License,–¦fwhicš²!h“is“a“cop˜yleft“license“designed“for“free“soft˜w˜are.Ž¦‘'¿«W‘ÿee›‹#ha•²!v“e˜designed˜this˜License˜in˜order˜to˜use˜it‘‹"for˜man“uals˜for˜free˜soft“w“are,‘—bMÞecauseŽ¡‘'¿«free›?soft•²!w“are˜needs˜free‘>doMÞcumen“tation:‘³a˜free˜program˜should‘>come˜with˜man“ualsŽ¡‘'¿«pro²!viding–urthe›ussame“freedoms˜that“the˜soft•²!w“are–urdoMÞes.‘ÍŒBut˜this“License˜is“not˜limited“toŽ¡‘'¿«soft•²!w“are›­âman“uals;‘±¡it–­ãcan˜bMÞe“used˜for“an²!y˜textual“w²!ork,‘¯Áregardless“of˜sub‘›»ject“matter˜orŽ¡‘'¿«whether–Ç2it“is“published“as“a“prin²!ted“b•MÞo“ok.‘@BW‘ÿee–Ç2recommend“this“License“principally“forŽ¡‘'¿«w²!orks–¦fwhose“purpMÞose“is“instruction“or“reference.Ž¦‘&-1.Ž‘'¿«APPLICABILITY–¦fAND“DEFINITIONSŽŸP‘'¿«This–Ì>License‘Ì=applies“to“anš²!y“man˜ual‘Ì=or“other“w˜ork,‘³in“an˜y–Ì=medium,‘´that“con˜tains‘Ì>aŽ¡‘'¿«notice–ýplaced›ýb²!y“the˜cop•²!yrigh“t‘ýholder˜sa“ying–ýit˜can“bMÞe˜distributed“under˜the“termsŽ¡‘'¿«of–€†this“License.‘l=Sucš²!h“a“notice“gran˜ts“a“w˜orld-wide,‘·
ro˜y˜alt˜y-free“license,‘·unlimited“inŽ¡‘'¿«duration,‘â
1.1       misho     118: to–o·use›o¶that“w²!ork“under˜the“conditions“stated˜herein.‘
                    119: 9ÏThe“\DoMÞcumen²!t",Ž¡‘'¿«bMÞeloš²!w,‘tkrefers–gìto“an˜y“suc˜h‘gíman˜ual“or“w˜ork.‘É
1.1.1.2 ! misho     120: An˜y“mem˜bMÞer“of“the‘gípublic“is“a“licensee,‘tkandŽ¡‘'¿«is–ÿaddressed“as“\yš²!ou".‘¦@Y‘ÿeou“accept“the“license“if“y˜ou“cop˜y‘ÿe,‘ îmoMÞdify“or“distribute“the“w˜orkŽ¡‘'¿«in–¦fa“w•²!a“y–¦frequiring“pMÞermission“under“cop•²!yrigh“t‘¦fla“w.Ž¦‘'¿«A‘¦\MošMÞdied–ÀV‘ÿeersion"‘Áof“the“Do˜cumenš²!t“means‘Áan˜y“w˜ork“con˜taining“the‘ÁDoMÞcumen˜t“orŽ¡‘'¿«a–‚hpMÞortion›‚gof“it,‘¹heither˜copied“v²!erbatim,‘¹hor˜with“moMÞdications“and/or˜translated“in²!toŽ¡‘'¿«another‘¦flanguage.Ž¦‘'¿«A‘ž\Secondary–ÀSection"“is›Áa“named˜appMÞendix“or˜a“fron²!t-matter˜section“of˜the“DoMÞcumen²!tŽ¡‘'¿«that–Ž/deals“exclusiv²!ely›Ž0with“the“relationship“of˜the“publishers“or“authors˜of“the“DoMÞcumen²!tŽ¡‘'¿«to–z
the‘zDoMÞcumenš²!t's“o˜v˜erall›zsub‘›»ject“(or˜to“related“matters)˜and“con²!tains˜nothing“thatŽ¡‘'¿«could–Ø®fall›دdirectly“within“that“o•²!v“erall˜sub‘›»ject.‘tµ(Th“us,‘%@if˜the›Ø®DoMÞcumen“t˜is˜in‘دpart˜aŽ¡‘'¿«textb•MÞo“ok›Õ†of–Õ…mathematics,‘ÿMa“Secondary˜Section˜ma²!y˜not“explain˜an²!y˜mathematics.)‘˜=TheŽ¡‘'¿«relationship–GÞcould“bMÞe“a“matter“of“historical“connection“with“the“sub‘›»ject“or“with“relatedŽ¡‘'¿«matters,–jor‘Bøof›B÷legal,“commercial,‘jphilosophical,“ethical˜or˜p•MÞolitical‘Bøp“osition˜regardingŽ¡‘'¿«them.Ž¦‘'¿«The›r\In•²!v‘ÿdDarian“t–sSections"˜are˜certain˜Secondary“Sections˜whose˜titles˜are“designated,‘0ÖasŽ¡‘'¿«bMÞeing–2Dthose›2Cof“In•²!v‘ÿdDarian“t–2DSections,‘I}in“the“notice˜that“sa²!ys˜that“the“DoMÞcumen²!t˜is“releasedŽŽŒ‹DexŸò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:68ŽŽŽ ƒ33 ý ÌÍ‘'¿«under–S5this“License.‘Â"If›S4a“section“doMÞes“not“t˜the“abMÞo•²!v“e–S5denition“of“Secondary˜then“it“isŽ¤
33‘'¿«not›Óallo•²!w“ed˜to‘ÓŽbMÞe˜designated˜as˜In“v‘ÿdDarian“t.‘eSThe˜DoMÞcumen“t˜ma“y‘ÓŽcon“tain˜zero˜In“v‘ÿdDarian“tŽ¡‘'¿«Sections.‘¢ÄIf–õthe“DošMÞcumen²!t“do˜es‘õnot“idenš²!tify“an˜y“In˜v‘ÿdDarian˜t“Sections“then‘õthere“are“none.Ž©&g‘'¿«The›f­\Co•²!v“er–f¬T‘ÿeexts"˜are˜certain˜short“passages˜of˜text˜that“are˜listed,‘–¾as˜F‘ÿeron•²!t-Co“v“erŽ¡‘'¿«T›ÿeexts–&-or“Bac•²!k-Co“v“er‘&,T˜exts,‘"8in–&-the“notice“that‘&,saš²!ys“that“the“DoMÞcumen˜t‘&,is“released“underŽ¡‘'¿«this›’License.‘¯AA‘nF‘ÿeron•²!t-Co“v“er˜T‘ÿeext˜ma“y˜bMÞe˜at˜most˜5›‘w“ords,‘6Šand˜a›’Bac“k-Co“v“er˜T‘ÿeext˜ma“yŽ¡‘'¿«bMÞe–¦fat“most“25“w²!ords.ŽŸ&h‘'¿«A‘C¦\T‘ÿeransparen•²!t"›CÎcop“y˜of‘CÏthe˜DoMÞcumen“t˜means˜a‘CÏmac“hine-readable˜cop“y‘ÿe,‘k(represen“tedŽ¡‘'¿«in–Jma“format›Jnwhose“spMÞecication“is“a²!v‘ÿdDailable“to“the˜general“public,‘snthat˜is“suitable“forŽ¡‘'¿«revising–Îàthe‘ÎßdoMÞcumenš²!t“straigh˜tforw˜ardly“with›Îßgeneric“text˜editors“or“(for˜images“com-Ž¡‘'¿«pMÞosed–ÚÃof›ÚÄpixels)“generic˜pain²!t“programs˜or“(for˜dra²!wings)“some˜widely“a•²!v‘ÿdDailable˜dra“wingŽ¡‘'¿«editor,‘…úand–}ßthat“is“suitable“for“input“to‘}àtext“formatters“or“for“automatic“translation“toŽ¡‘'¿«a–9Ov‘ÿdDariet²!y“of›9Nformats“suitable“for“input“to“text˜formatters.‘¹A‘93cop²!y“made˜in“an“otherwiseŽ¡‘'¿«T‘ÿeransparen²!t–„æle“format›„åwhose“markup,‘¼†or“absence˜of“markup,‘¼†has˜bMÞeen“arranged“toŽ¡‘'¿«th•²!w“art–0ûor›0üdiscourage“subsequen²!t“moMÞdication˜b²!y“readers“is˜not“T‘ÿeransparen²!t.‘¶ºAn“imageŽ¡‘'¿«format– Éis“not“T‘ÿeransparenš²!t“if“used‘ Èfor“an˜y“substan˜tial“amoun˜t“of“text.‘MA‘ ©cop˜y“that“isŽ¡‘'¿«not–¦f\T‘ÿeransparen²!t"“is“called“\Opaque".Ž¦‘'¿«Examples–cXof“suitable›cWformats“for“T‘ÿeransparen²!t“copies“include˜plain“çasci>Ki“áwithoutŽ¡‘'¿«markup,‘„ÂT‘ÿeexinfo–XIinput“format,›„ÁLaT‘þ,³Ÿ[wEŽ‘B       X‘XJinput“format,˜óKñ`y
1.1       misho     121: 
1.1.1.2 ! misho     122: cmr10«SGML“áor‘XJ«XML“áusing“a“publiclyŽ¡‘'¿«a²!v‘ÿdDailable–«DTDá,‘üand›Âstandard-conforming“simple˜«HTMLá,‘üP²!ostScript“or˜«PDF“ádesignedŽ¡‘'¿«for–˜.hš²!uman“moMÞdication.‘³4Examples“of“transparen˜t“image“formats“include“«PNGá,‘ÔŸ«X¸ãCFŽ¡‘'¿«áand–¢«JPGá.‘ÐáOpaque“formats“include“proprietary‘¢formats“that“can“bMÞe“read“and“editedŽ¡‘'¿«only–sbš²!y‘sproprietary“w˜ord›sproMÞcessors,‘&J«SGML“áor˜«XML“áfor˜whic²!h“the˜«DTD“áand/orŽ¡‘'¿«pro•MÞcessing›W*to“ols˜are˜not‘W)generally˜a•²!v‘ÿdDailable,‘CYand˜the˜mac“hine-generated˜«HTMLá,Ž¡‘'¿«Pš²!ostScript–¦for“«PDF“áproMÞduced“b˜y“some“w˜ord“prošMÞcessors“for“output“purp˜oses“only‘ÿe.Ž¦‘'¿«The–Ü\Title›ÛP²!age"“means,‘<ùfor˜a“prin²!ted˜b•MÞo“ok,‘<ùthe–Ütitle˜page“itself,‘<ùplus˜sucš²!h“follo˜wingŽ¡‘'¿«pages–RÃas“are“needed“to“hold,–c}legibly‘ÿe,“the–RÃmaterial“this‘RÂLicense“requires“to“appMÞear“in“theŽ¡‘'¿«title–1.page.‘¶ÊF‘ÿeor“w²!orks›1-in“formats˜whic²!h“do“not˜ha•²!v“e‘1.an“y˜title–1.page“as˜sucš²!h,‘HŸ\Title“P˜age"Ž¡‘'¿«means–­Žthe“text“near›­the“most“prominen²!t“appMÞearance“of“the˜w²!ork's“title,‘¯Xpreceding“theŽ¡‘'¿«bšMÞeginning–¦fof“the“b˜o˜dy“of“the“text.Ž¦‘'¿«The–)—\publisher"“means‘)˜anš²!y“pMÞerson“or“en˜tit˜y“that“distributes‘)˜copies“of“the“DoMÞcumen˜tŽ¡‘'¿«to–¦fthe“public.ŽŸ&h‘'¿«A›ísection–ò\En²!titled“XYZ"˜means“a“named›ósubunit“of“the“DoMÞcumen²!t˜whose“title“eitherŽ¡‘'¿«is–Uªprecisely‘U©XYZ›U•or“con²!tains“XYZ˜in“paren•²!theses›U©follo“wing–Uªtext“that˜translates“XYZ‘U•inŽ¡‘'¿«another–þ¯language.‘¥ö(Here“XYZ‘þ„stands“for“a“spšMÞecic“section“name“men²!tioned“b˜elo•²!w,‘ :suc“hŽ¡‘'¿«as›aa\Ac•²!kno“wledgemen“ts",–o/\Dedications",“\Endorsemen²!ts",“or˜\History".)‘ÆÛT‘ÿeo˜\Preserv²!eŽ¡‘'¿«the–›Title"›šof“suc²!h˜a“section“when˜y²!ou“moMÞdify˜the“DoMÞcumen²!t“means˜that“it˜remains“aŽ¡‘'¿«section–¦f\En²!titled“XYZ"“according“to“this“denition.Ž¦‘'¿«The–SuDoMÞcumenš²!t“ma˜y“include“W‘ÿearran˜t˜y“Disclaimers“next‘Svto“the“notice“whic˜h“states“thatŽ¡‘'¿«this–¹License“applies‘ºto“the“DoMÞcumenš²!t.‘×These“W‘ÿearran˜t˜y“Disclaimers‘ºare“considered“toŽ¡‘'¿«bMÞe–„ýincluded›„þb²!y“reference“in“this˜License,‘¼£but“only“as“regards˜disclaiming“w•²!arran“ties:Ž¡‘'¿«an²!y–nother›n‘implication“that˜these“W‘ÿearran•²!t“y˜Disclaimers‘nma“y˜ha“v“e‘nis˜v“oid–nand˜has“noŽ¡‘'¿«eect–¦fon“the“meaning“of“this“License.Ž¦‘&-2.Ž‘'¿«VERBA‘ÿeTIM‘¦fCOPYINGŽŽŒ‹EuôŸò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:69ŽŽŽ ƒ33 ý ÌÍ‘'¿«Y‘ÿeou–’ùmaš²!y“cop˜y“and“distribute“the“DoMÞcumen˜t“in“an˜y“medium,‘Îeither“commercially“orŽ¤
33‘'¿«noncommercially‘ÿe,›zªpro²!vided–that‘this“License,˜the‘cop•²!yrigh“t–notices,˜and‘the“licenseŽ¡‘'¿«notice–Ksa²!ying›K
this“License˜applies“to˜the“DoMÞcumen²!t“are˜reproMÞduced“in˜all“copies,‘t7andŽ¡‘'¿«that–1'yš²!ou“add“no‘1(other“conditions“whatsoMÞev˜er“to“those“of“this“License.‘¶ÉY‘ÿeou“ma˜y“not“useŽ¡‘'¿«tec²!hnical–ò“measures›ò”to“obstruct˜or“con²!trol˜the“reading˜or“further˜cop²!ying“of˜the“copiesŽ¡‘'¿«y•²!ou›òÇmak“e‘òÈor˜distribute.‘¡þHo“w“ev“er,‘´y“ou˜ma“y˜accept‘òÈcompMÞensation˜in˜exc“hange‘òÈfor˜copies.Ž¡‘'¿«If–Þy²!ou›Þdistribute“a“large˜enough“n•²!um“bMÞer˜of–Þcopies“y•²!ou˜m“ust–Þalso“follo²!w˜the“conditionsŽ¡‘'¿«in–¦fsection“3.Ž©"#‘'¿«Y‘ÿeou–}ìma²!y“also›}ëlend“copies,‘¹7under“the“same“conditions“stated˜abMÞo•²!v“e,‘¹8and˜y“ou›}ìma“y˜publiclyŽ¡‘'¿«displa²!y‘¦fcopies.Ž¦‘&-3.Ž‘'¿«COPYING–¦fIN“QUANTITYŽ¦‘'¿«If–Ãyš²!ou‘Âpublish“prin˜ted›Âcopies“(or˜copies˜in“media“that˜commonly“ha•²!v“e˜prin“ted˜co“v“ers)‘ÃofŽ¡‘'¿«the‘Ñ.DošMÞcumen•²!t,‘Ûßn“um“b˜ering–Ñ.more“than–Ñ-100,‘Ûàand“the–Ñ.Do˜cumen²!t's“license‘Ñ-notice“requiresŽ¡‘'¿«Co•²!v“er›ÜT‘ÿeexts,‘<ùy“ou‘Ûm“ust˜enclose˜the˜copies‘Ûin˜co“v“ers˜that˜carry–ÿe,‘<ùclearly‘Ûand˜legibly“,‘<ùallŽ¡‘'¿«these›´@Co•²!v“er˜T–ÿeexts:‘ùF“ron•²!t-Co“v“er˜T‘ÿeexts˜on˜the˜fron“t˜co“v“er,‘÷µand˜Bac“k-Co“v“er˜T‘ÿeexts˜onŽ¡‘'¿«the›öbac•²!k‘õco“v“er.‘Ñ
Both˜co“v“ers˜m“ust–õalso˜clearly˜and˜legibly“iden•²!tify˜y“ou˜as‘õthe˜publisherŽ¡‘'¿«of›,these–+copies.‘H/The“fron•²!t˜co“v“er˜m“ust˜presen“t–+the˜full˜title“with˜all˜w²!ords˜of“the˜titleŽ¡‘'¿«equally–³xprominenš²!t“and‘³yvisible.‘Y‘ÿeou“ma˜y›³yadd“other“material“on“the˜co•²!v“ers–³xin“addition.Ž¡‘'¿«Cop•²!ying›Y4with‘Y3c“hanges˜limited–Y3to˜the“co•²!v“ers,‘…ças–Y3long˜as“they˜preserv²!e“the˜title“of˜theŽ¡‘'¿«DošMÞcumen²!t–uand“satisfy“these“conditions,‘¨Åcan“b˜e“treated‘uas“vš²!erbatim“cop˜ying“in“otherŽ¡‘'¿«respMÞects.Ž¦‘'¿«If–î|the“required›î}texts“for“either“co•²!v“er–î|are“toMÞo˜vš²!oluminous“to“t“legibly‘ÿe,‘‚y˜ou“should“putŽ¡‘'¿«the–òrst›òones“listed“(as“man²!y˜as“t“reasonably)“on˜the“actual“co•²!v“er,‘ùand˜con“tin“ue‘òtheŽ¡‘'¿«rest–¦fonš²!to“adjacen˜t“pages.ŽŸ""‘'¿«If–?|y²!ou›?{publish“or˜distribute“Opaque˜copies“of˜the“DoMÞcumen•²!t˜n“um“bMÞering–?|more˜than“100,Ž¡‘'¿«y•²!ou›\3m“ust˜either‘\4include˜a˜mac“hine-readable˜T‘ÿeransparen“t˜cop“y˜along‘\4with˜eac“h˜OpaqueŽ¡‘'¿«cop²!y‘ÿe,‘[>or›7state–7in“or˜with“eacš²!h“Opaque“cop˜y‘7a“computer-net˜w˜ork“loMÞcation‘7from“whic˜hŽ¡‘'¿«the›éSgeneral‘éRnet•²!w“ork-using˜public˜has‘éRaccess˜to˜do“wnload˜using‘éRpublic-standard˜net“w“orkŽ¡‘'¿«protoMÞcols–¬=a“complete‘¬>T‘ÿeransparenš²!t“cop˜y“of“the“DoMÞcumen˜t,‘í³free“of“added“material.‘ïcIfŽ¡‘'¿«yš²!ou–ªuse“the‘ªlatter“option,‘êùy˜ou“m˜ust‘ªtak˜e“reasonably“pruden˜t“steps,‘êøwhen“y˜ou“bMÞeginŽ¡‘'¿«distribution–—lof›—mOpaque“copies˜in“quan•²!tit“y‘ÿe,‘Ó®to–—lensure“that˜this“T‘ÿeransparen•²!t˜cop“y‘—lwillŽ¡‘'¿«remain– Cthš²!us“accessible‘ Dat“the“stated“loMÞcation“un˜til‘ Dat“least“one“y˜ear“after‘ Dthe“last“timeŽ¡‘'¿«yš²!ou–k‘distribute‘k’an“Opaque“cop˜y‘k’(directly“or“through“y˜our‘k’agen˜ts“or“retailers)‘k’of“thatŽ¡‘'¿«edition–¦fto“the“public.Ž¦‘'¿«It–&Nis“requested,‘FHbut“not“required,‘FGthat“yš²!ou“con˜tact“the“authors“of“the“DoMÞcumen˜t“w˜ellŽ¡‘'¿«bMÞefore–oÅredistributing‘oÄanš²!y“large“n˜um˜bMÞer›oÄof“copies,‘z²to˜giv²!e“them˜a“c²!hance“to˜proš²!vide“y˜ouŽ¡‘'¿«with–¦fan“upšMÞdated“v²!ersion“of“the“Do˜cumen²!t.Ž¦‘&-4.Ž‘'¿«MODIFICA‘ÿeTIONSŽ¦‘'¿«Y‘ÿeou–*maš²!y“cop˜y“and›)distribute“a“MoMÞdied“V‘ÿeersion“of“the˜DoMÞcumen²!t“under“the“conditionsŽ¡‘'¿«of–…šsections›…›2“and˜3“abMÞo•²!v“e,‘¿]pro“vided˜that‘…šy“ou˜release–…šthe˜MoMÞdied“V‘ÿeersion˜under“preciselyŽ¡‘'¿«this–{ÞLicense,‘„`with“the›{ßMoMÞdied“V‘ÿeersion“lling˜the“role“of˜the“DoMÞcumen•²!t,‘„`th“us‘{ÞlicensingŽ¡‘'¿«distribution–¸and“mošMÞdication‘¹of“the“Mo˜died“V‘ÿeersion“to“who˜ev²!er‘¹p˜ossesses“a“cop²!y“ofŽ¡‘'¿«it.‘ÝÝIn–¦faddition,“yš²!ou“m˜ust“do“these“things“in“the“MoMÞdied“V‘ÿeersion:Ž¦‘*òÄA.Ž‘=nUse–ípin“the“Title“Pš²!age“(and“on“the“co˜v˜ers,‘ÿ2if“an˜y)“a“title“distinct“from“that“of“theŽ¡‘=nDoMÞcumenš²!t,‘+and–ˆfrom“those“of“previous“v˜ersions‘‡(whic˜h“should,‘+if“there“w˜ere“an˜y‘ÿe,ŽŽŒ‹FˆXŸò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:70ŽŽŽ ƒ33 ý ÌÍ‘=nbšMÞe–Âølisted“in“the“History‘Â÷section“of“the“Do˜cumenš²!t).‘3“Y‘ÿeou“ma˜y‘Â÷use“the“same“title“asŽ¤
33‘=na–¦fprevious“vš²!ersion“if“the“original“publisher“of“that“v˜ersion“giv˜es“pMÞermission.Ž©€‘+gB.Ž‘=nList–ª\on“the“Title›ª[P²!age,‘«Zas“authors,‘«Yone“or“more“pMÞersons˜or“en²!tities“respMÞonsible“forŽ¡‘=nauthorship–"of›"&the“moMÞdications“in˜the“MoMÞdied˜V‘ÿeersion,‘<|together“with“at˜least“v²!eŽ¡‘=nof–߸the“principal“authors“of“the“DoMÞcumenš²!t“(all“of“its“principal“authors,‘uif“it“has“few˜erŽ¡‘=nthan–¦fvš²!e),“unless“they“release“y˜ou“from“this“requiremen˜t.ŽŸ€&‘+@¢C.Ž‘=nState–±Óon›±Òthe“Title˜page“the˜name“of˜the“publisher˜of“the˜MoMÞdied“V‘ÿeersion,‘´­as“theŽ¡‘=npublisher.Ž¦‘*ËÕD.Ž‘=nPreservš²!e–¦fall“the“cop˜yrigh˜t“notices“of“the“DoMÞcumen˜t.Ž¦‘+µoE.Ž‘=nAdd–Äean›Ädappropriate“cop•²!yrigh“t˜notice‘Äefor˜y“our‘ÄemoMÞdications˜adjacen“t–Äeto˜the“otherŽ¡‘=ncop•²!yrigh“t‘¦fnotices.ŽŸ€&‘,LF.Ž‘=nInclude,›hSimmediately–XÎafter“the“cop•²!yrigh“t–XÎnotices,˜a“license“notice“giving“the“publicŽ¡‘=npMÞermission–ïËto›ïÊuse“the˜MoMÞdied“V‘ÿeersion“under˜the“terms˜of“this“License,‘Pin˜the“formŽ¡‘=nshoš²!wn–¦fin“the“Addendum“bMÞelo˜w.Ž¦‘*‘nG.Ž‘=nPreserv²!e–¼min›¼lthat“license˜notice“the˜full“lists˜of“In•²!v‘ÿdDarian“t˜Sections–¼mand˜required“Co•²!v“erŽ¡‘=nT‘ÿeexts–¦fgivš²!en“in“the“DoMÞcumen˜t's“license“notice.Ž¦‘*òÄH.Ž‘=nInclude–¦fan“unaltered“cop²!y“of“this“License.ŽŸ€&‘/4çI.Ž‘=nPreservš²!e–Ú†the‘Ú‡section“En˜titled‘Ú‡\History",‘çŽPreserv˜e“its›Ú‡Title,‘çŽand“add˜to“it˜an“itemŽ¡‘=nstating–_at›_least“the˜title,–mQy²!ear,“new˜authors,“and–_publisher˜of“the˜MoMÞdied“V‘ÿeersionŽ¡‘=nas–ÄXgivš²!en“on‘ÄWthe“Title“P˜age.‘7³If‘ÄWthere“is“no“section“En˜titled“\History"‘ÄWin“the“DoMÞcu-Ž¡‘=nmenš²!t,‘O#create‘-eone–-dstating“the“title,‘O$y˜ear,–O#authors,“and‘-epublisher–-dof“the“DoMÞcumen˜tŽ¡‘=nas–Wgivš²!en“on“its“Title“P˜age,‘ƒFthen“add“an“item“describing“the“MoMÞdied“V‘ÿeersion“asŽ¡‘=nstated–¦fin“the“previous“sen²!tence.Ž¦‘-ˆ¢J.Ž‘=nPreservš²!e–æthe“net˜w˜ork“loMÞcation,‘õúif“an˜y‘ÿe,‘õúgiv˜en“in“the“DoMÞcumen˜t‘æfor“public“access“toŽ¡‘=na–½…T‘ÿeransparenš²!t“cop˜y‘½†of“the“DoMÞcumen˜t,‘ÃMand“lik˜ewise“the“net˜w˜ork‘½†loMÞcations“giv˜en“inŽ¡‘=nthe–Í„DoMÞcumenš²!t‘̓for“previous“v˜ersions‘̓it“w˜as“based“on.‘S6These‘̓ma˜y“bMÞe“placed‘̓in“theŽ¡‘=n\History"–&8section.‘¦ÎY‘ÿeou›&9ma²!y“omit˜a“net•²!w“ork–&8loMÞcation˜for“a˜w²!ork“that˜w²!as“publishedŽ¡‘=nat–Kleast“four‘Ky²!ears“bšMÞefore“the“Do˜cumen²!t“itself,‘t@or“if“the“original‘Kpublisher“of“theŽ¡‘=nvš²!ersion–¦fit“refers“to“giv˜es“pMÞermission.Ž¦‘*¤åK.Ž‘=nF‘ÿeor–Ùranš²!y“section“En˜titled“\Ac˜kno˜wledgemen˜ts"“or“\Dedications",‘oPreserv˜e“the“TitleŽ¡‘=nof›/Rthe–/Qsection,‘G#and“preserv²!e˜in˜the“section˜all˜the“substance˜and“tone˜of˜eac²!h“of˜theŽ¡‘=ncon•²!tributor›¦fac“kno“wledgemen“ts˜and/or˜dedications˜giv“en˜therein.Ž¦‘,Q*L.Ž‘=nPreservš²!e–?Ôall‘?Óthe“In˜v‘ÿdDarian˜t›?ÓSections“of˜the“DoMÞcumen²!t,‘f/unaltered˜in“their˜text“andŽ¡‘=nin›PÜtheir–PÝtitles.‘Ý@Section“n•²!um“bMÞers˜or‘PÝthe˜equiv‘ÿdDalen“t–PÝare˜not“considered˜part“of˜theŽ¡‘=nsection‘¦ftitles.ŽŸ€&‘)M.Ž‘=nDelete–°5anš²!y“section“En˜titled‘°4\Endorsemen˜ts".‘ûJSuc˜h“a“section‘°4ma˜y“not“bMÞe“includedŽ¡‘=nin–¦fthe“MoMÞdied“V‘ÿeersion.Ž¦‘*òÄN.Ž‘=nDo–g!not›g"retitle“an²!y˜existing“section“to˜bMÞe“Enš²!titled“\Endorsemen˜ts"›g"or“to˜con
ict“inŽ¡‘=ntitle–¦fwith“anš²!y“In˜v‘ÿdDarian˜t“Section.Ž¦‘*¤åO.Ž‘=nPreserv•²!e›¦fan“y˜W‘ÿearran“t“y˜Disclaimers.ŽŸÌΑ'¿«If–&Øthe›&×MoMÞdied“V‘ÿeersion˜includes“new˜fron²!t-matter“sections˜or“appMÞendices˜that“qualifyŽ¡‘'¿«as–XSecondary›X     Sections“and“con²!tain“no˜material“copied“from˜the“DoMÞcumen•²!t,‘g´y“ou˜ma“y‘XatŽ¡‘'¿«y²!our–ãkoption›ãldesignate“some˜or“all“of˜these“sections˜as“in•²!v‘ÿdDarian“t.‘”íT‘ÿeo˜do–ãkthis,‘ò­add“theirŽŽŒ‹GšºŸò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:71ŽŽŽ ƒ33 ý ÌÍ‘'¿«titles–@«to“the“list›@¬of“In•²!v‘ÿdDarian“t–@«Sections“in“the“MoMÞdied“V‘ÿeersion's“license˜notice.‘¬¬TheseŽ¤
33‘'¿«titles–¦fmš²!ust“bMÞe“distinct“from“an˜y“other“section“titles.Ž©(ö‘'¿«Y‘ÿeou–pmaš²!y‘qadd“a“section“En˜titled‘q\Endorsemen˜ts",‘s²pro˜vided“it“con˜tains‘qnothing“butŽ¡‘'¿«endorsemen•²!ts›‘of‘‘y“our˜MoMÞdied˜V‘ÿeersion˜b“y‘‘v‘ÿdDarious˜parties|for˜example,‘•Zstatemen“ts˜ofŽ¡‘'¿«pšMÞeer–D
review“or‘Dthat“the“text“has“b˜een‘Dappro•²!v“ed›D
b“y˜an˜organization‘Das˜the˜authoritativ“eŽ¡‘'¿«denition–¦fof“a“standard.ŽŸ(÷‘'¿«Y‘ÿeou–f,ma²!y›f-add“a˜passage“of˜up“to˜vš²!e“w˜ords›f-as“a˜F›ÿeron•²!t-Co“v“er–f,T˜ext,‘sand›f-a“passage˜of“upŽ¡‘'¿«to–@25“wš²!ords‘@Žas“a“Bac˜k-Co˜v˜er“T‘ÿeext,‘Tìto›@Žthe“end“of“the˜list“of“Co•²!v“er–@T‘ÿeexts˜in“the“MoMÞdiedŽ¡‘'¿«V›ÿeersion.‘Õ+Only–N+one‘N*passage“of“F˜ron•²!t-Co“v“er‘N*T˜ext–N+and“one‘N*of“Bac•²!k-Co“v“er‘N+T˜ext‘N*ma“y‘N+bMÞeŽ¡‘'¿«added–NÁbš²!y“(or“through“arrangemen˜ts“made“b˜y)‘NÂan˜y“one“en˜tit˜y‘ÿe.‘À¦If“the“DoMÞcumen˜t“alreadyŽ¡‘'¿«includes›Éa‘Èco•²!v“er˜text–Èfor˜the˜same“co•²!v“er,‘/!previously˜added˜b“y‘Èy“ou˜or‘Èb“y˜arrangemen“tŽ¡‘'¿«made–:Çbš²!y“the“same“en˜tit˜y“y˜ou“are“acting“on“bMÞehalf“of,‘_ßy˜ou“ma˜y‘:Ènot“add“another;‘„÷butŽ¡‘'¿«y•²!ou›)ma“y˜replace–*the˜old˜one,‘2on˜explicit˜pMÞermission˜from˜the“previous˜publisher˜thatŽ¡‘'¿«added–¦fthe“old“one.Ž¦‘'¿«The–^author(s)›]and“publisher(s)˜of“the“DoMÞcumen²!t˜do“not“b²!y˜this“License˜giv²!e“pMÞermissionŽ¡‘'¿«to–¤juse“their›¤knames“for“publicit²!y“for“or˜to“assert“or“imply“endorsemen²!t˜of“an²!y“MoMÞdiedŽ¡‘'¿«V‘ÿeersion.ŽŸ(÷‘&-5.Ž‘'¿«COMBINING‘¦fDOCUMENTSŽ¦‘'¿«Y‘ÿeou›¦Çma•²!y‘¦Ècom“bine˜the˜DoMÞcumen“t–¦Èwith˜other“doMÞcumen²!ts˜released˜under“this˜License,Ž¡‘'¿«under–—sthe“terms›—tdened“in“section“4˜abšMÞo•²!v“e–—sfor“mo˜died“v•²!ersions,‘Ó·pro“vided–—sthat“y²!ouŽ¡‘'¿«include–        in›   the“com²!bination“all“of˜the“In•²!v‘ÿdDarian“t–      Sections˜of“all“of“the˜original“doMÞcumen²!ts,Ž¡‘'¿«unmoMÞdied,‘L3and–5¦list›5§them“all˜as“In•²!v‘ÿdDarian“t–5¦Sections˜of“yš²!our“com˜bined‘5§w˜ork“in‘5§its“licenseŽ¡‘'¿«notice,–¦fand“that“yš²!ou“preserv˜e“all“their“W‘ÿearran˜t˜y“Disclaimers.Ž¦‘'¿«The–¢@comš²!bined“w˜ork“need“only“con˜tain“one“cop˜y“of“this“License,‘£and“m˜ultiple“iden˜ticalŽ¡‘'¿«In•²!v‘ÿdDarian“t–æÝSections“maš²!y“bMÞe“replaced“with“a“single‘æÜcop˜y‘ÿe.‘ŸBIf“there“are“m˜ultiple“In˜v‘ÿdDarian˜tŽ¡‘'¿«Sections–6Çwith›6Èthe“same˜name“but˜dierenš²!t“con˜ten˜ts,‘Mmak˜e›6Èthe“title˜of“eac•²!h˜suc“h‘6ÇsectionŽ¡‘'¿«unique–bb²!y›cadding“at˜the“end˜of“it,‘1"in“paren²!theses,‘1!the˜name“of˜the“original˜author“orŽ¡‘'¿«publisher–of“that›~section“if“kno²!wn,‘!­or“else“a“unique˜n•²!um“bMÞer.‘¦‘Mak“e˜the–same“adjustmen²!tŽ¡‘'¿«to–î‡the›î†section“titles“in˜the“list“of˜In•²!v‘ÿdDarian“t–î‡Sections“in“the˜license“notice“of˜the“com²!binedŽ¡‘'¿«w²!ork.ŽŸ(÷‘'¿«In›ö"the‘ö#com•²!bination,‘Jy“ou˜m“ust‘ö#com“bine˜an“y‘ö#sections˜En“titled–ö#\History"˜in“the˜v‘ÿdDari-Ž¡‘'¿«ous–ÜÛoriginal›ÜÚdoMÞcumen²!ts,‘êxforming“one˜section“Enš²!titled“\History";‘ølik˜ewise‘ÜÚcom˜bine“an˜yŽ¡‘'¿«sections–ÑEnš²!titled“\Ac˜kno˜wledgemen˜ts",‘Û¿and“an˜y“sections“En˜titled“\Dedications".‘]çY‘ÿeouŽ¡‘'¿«mš²!ust–¦fdelete“all“sections“En˜titled“\Endorsemen˜ts."Ž¦‘&-6.Ž‘'¿«COLLECTIONS–¦fOF“DOCUMENTSŽŸ(÷‘'¿«Y‘ÿeou–Ò¤maš²!y“mak˜e“a“collection“consisting“of‘Ò£the“DoMÞcumen˜t“and“other“doMÞcumen˜ts“releasedŽ¡‘'¿«under–this“License,‘sÚand“replace“the“individual“copies“of“this“License“in“the“v‘ÿdDariousŽ¡‘'¿«doMÞcumenš²!ts–Dwith‘Ca“single“cop˜y›Cthat“is˜included“in“the˜collection,‘y»pro²!vided˜that“y²!ouŽ¡‘'¿«follo²!w–t”the›t•rules“of˜this“License˜for“v•²!erbatim˜cop“ying‘t”of˜eac“h–t”of˜the“doMÞcumen²!ts˜in“allŽ¡‘'¿«other‘¦frespMÞects.Ž¦‘'¿«Y‘ÿeou–Æ=maš²!y“extract“a“single“doMÞcumen˜t“from“suc˜h“a“collection,‘Î2and“distribute“it“individu-Ž¡‘'¿«ally–4under›4this“License,‘Wnpro•²!vided˜y“ou–4insert“a“cop²!y˜of“this“License“in²!to˜the“extractedŽ¡‘'¿«doMÞcumen•²!t,‘ùøand›éBfollo“w–éAthis˜License“in“all˜other“respMÞects˜regarding“v•²!erbatim˜cop“ying‘éAofŽ¡‘'¿«that‘¦fdoMÞcumen²!t.ŽŽŒ‹H«Ÿò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:72ŽŽŽ ƒ33 ý ÌÍ‘&-7.Ž‘'¿«Aš²!GGREGA‘ÿeTION–¦fWITH“INDEPENDENT“W˜ORKSŽ©(ö‘'¿«A‘]Æcompilation–]Øof“the“DoMÞcumenš²!t‘]Ùor“its“deriv‘ÿdDativ˜es“with“other‘]Ùseparate“and“indepMÞenden˜tŽ¤
33‘'¿«doMÞcumen•²!ts›ÿhor‘ÿiw“orks,‘©in˜or˜on‘ÿia˜v“olume–ÿiof˜a“storage˜or˜distribution“medium,‘©is˜calledŽ¡‘'¿«an–\aggregate"“if“the›
1.1       misho     123: cop•²!yrigh“t–resulting“from“the“compilation“is“not˜used“to“limit“theŽ¡‘'¿«legal–1        righ²!ts›1of“the“compilation's˜users“bMÞey²!ond˜what“the“individual˜w²!orks“pMÞermit.‘¶¾WhenŽ¡‘'¿«the–žDošMÞcumen²!t“is“included‘žin“an“aggregate,‘Ûðthis“License“do˜es“not‘žapply“to“the“otherŽ¡‘'¿«wš²!orks–¦fin“the“aggregate“whic˜h“are“not“themselv˜es“deriv‘ÿdDativ˜e“w˜orks“of“the“DoMÞcumen˜t.ŽŸ(÷‘'¿«If–»Vthe“Co•²!v“er–»VT‘ÿeext“requiremenš²!t“of“section“3‘»Uis“applicable“to“these“copies“of“the“DoMÞcumen˜t,Ž¡‘'¿«then–°Dif›°Ethe“DoMÞcumen²!t“is“less˜than“one“half“of˜the“en²!tire“aggregate,‘á~the˜DoMÞcumenš²!t's“Co˜v˜erŽ¡‘'¿«T‘ÿeexts–0maš²!y“bMÞe“placed“on“co˜v˜ers“that“brac˜k˜et“the“DoMÞcumen˜t“within“the‘0&aggregate,‘G°or“theŽ¡‘'¿«electronic–5qequiv‘ÿdDalenš²!t‘5pof“co˜v˜ers›5pif“the˜DoMÞcumen²!t“is“in˜electronic“form.‘ŠüOtherwise“theyŽ¡‘'¿«mš²!ust–¦fappMÞear“on“prin˜ted“co˜v˜ers“that“brac˜k˜et“the“whole“aggregate.Ž¦‘&-8.Ž‘'¿«TRANSLA‘ÿeTIONŽŸ(÷‘'¿«T‘ÿeranslation–̯is›Ì°considered“a˜kind“of“moMÞdication,‘Aso˜yš²!ou“ma˜y‘Ì°distribute“translationsŽ¡‘'¿«of–Tþthe›TýDoMÞcumen²!t“under˜the“terms˜of“section“4.‘      é£Replacing“In•²!v‘ÿdDarian“t˜Sections‘TþwithŽ¡‘'¿«translations–v²requires‘v³spšMÞecial“p˜ermission“from“their›v³cop•²!yrigh“t‘v²holders,‘êÄbut˜y“ou‘v²ma“yŽ¡‘'¿«include–ðktranslations“of“some›ðjor“all“In•²!v‘ÿdDarian“t–ðkSections“in“addition˜to“the“original“v²!ersionsŽ¡‘'¿«of›Æthese‘ÆIn•²!v‘ÿdDarian“t˜Sections.‘=Y‘ÿeou‘Æma“y˜include–Æa˜translation˜of“this˜License,‘Î
1.1.1.2 ! misho     124: and“all˜theŽ¡‘'¿«license–òúnotices›òûin“the“DoMÞcumen•²!t,‘Fand˜an“y›òúW‘ÿearran“t“y˜Disclaimers,‘Fpro“vided‘òûthat˜y“ouŽ¡‘'¿«also–Ïinclude›Îÿthe“original“English˜v²!ersion“of“this“License˜and“the“original˜v²!ersions“ofŽ¡‘'¿«those–notices“and“disclaimers.‘5åIn“case“of“a“disagreemen•²!t‘bMÞet“w“een–the“translation“andŽ¡‘'¿«the–:•original›:”v²!ersion“of˜this“License˜or“a˜notice“or˜disclaimer,‘_ the“original˜v²!ersion“willŽ¡‘'¿«prev‘ÿdDail.Ž¦‘'¿«If–pèa“section“in‘péthe“DoMÞcumenš²!t“is“En˜titled“\Ac˜kno˜wledgemen˜ts",–{›\Dedications",“or‘pè\His-Ž¡‘'¿«tory",‘A¿the–(•requiremenš²!t“(section“4)“to“Preserv˜e“its“Title“(section“1)“will“t˜ypically“requireŽ¡‘'¿«c²!hanging–¦fthe“actual“title.Ž¦‘&-9.Ž‘'¿«TERMINA‘ÿeTIONŽŸ(÷‘'¿«Y‘ÿeou–”maš²!y“not‘”cop˜y–ÿe,›—¾moMÞdify“,˜sublicense,˜or–”distribute“the“DoMÞcumen²!t‘”except“as“expresslyŽ¡‘'¿«proš²!vided–¡ðunder‘¡ñthis“License.‘Ð|An˜y›¡ñattempt“otherwise˜to“cop²!y–ÿe,›àÓmoMÞdify“,‘àÒsublicense,˜orŽ¡‘'¿«distribute–¦fit“is“vš²!oid,“and“will“automatically“terminate“y˜our“righ˜ts“under“this“License.Ž¦‘'¿«Ho•²!w“ev“er,‘ó·if›äAy“ou–ä@cease˜all“violation˜of“this“License,‘ó¸then“y²!our˜license“from˜a“particularŽ¡‘'¿«cop•²!yrigh“t–Jholder“is‘Jreinstated“(a)“proš²!visionally‘ÿe,‘sšunless“and“un˜til‘Jthe“cop˜yrigh˜t“holderŽ¡‘'¿«explicitly–á_and“nally“terminates“yš²!our“license,‘0and“(b)“pMÞermanen˜tly‘ÿe,‘0if“the“cop˜yrigh˜tŽ¡‘'¿«holder–"fails“to“notify“yš²!ou“of“the“violation‘"b˜y“some“reasonable“means“prior“to“60“da˜ysŽ¡‘'¿«after–¦fthe“cessation.ŽŸ(÷‘'¿«Moreo•²!v“er,‘Ï8y“our–Ç
license›Çfrom“a˜particular˜cop•²!yrigh“t–Ç
holder˜is˜reinstated“pMÞermanen²!tly˜ifŽ¡‘'¿«the›V`cop•²!yrigh“t˜holder‘Vanoties˜y“ou˜of˜the˜violation‘Vab“y˜some˜reasonable˜means,‘fbthis˜is˜theŽ¡‘'¿«rst–Wtime“y•²!ou‘Wha“v“e›Wreceiv“ed˜notice˜of˜violation‘Wof˜this˜License˜(for˜an“y‘Ww“ork)˜from˜thatŽ¡‘'¿«cop•²!yrigh“t–Õúholder,‘áÞand“yš²!ou“cure“the“violation“prior‘Õùto“30“da˜ys“after“y˜our‘Õùreceipt“of“theŽ¡‘'¿«notice.Ž¦‘'¿«T‘ÿeermination–Nuof“yš²!our“righ˜ts“under“this“section‘NtdoMÞes“not“terminate“the“licenses“of“partiesŽ¡‘'¿«who›•qha•²!v“e˜receiv“ed˜copies˜or˜righ“ts˜from˜y“ou‘•punder˜this˜License.‘ªþIf˜y“our˜righ“ts˜ha“v“eŽ¡‘'¿«bšMÞeen–Îterminated“and“not‘Íp˜ermanenš²!tly“reinstated,‘:¹receipt“of“a“cop˜y“of“some‘Íor“all“of“theŽ¡‘'¿«same–¦fmaterial“doMÞes“not“givš²!e“y˜ou“an˜y“righ˜ts“to“use“it.ŽŽŒ‹I¼€Ÿò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:73ŽŽŽ ƒ33 ý ÌÍ‘‡“10.Ž‘'¿«FUTURE–¦fREVISIONS“OF“THIS“LICENSEŽ©33‘'¿«The›ÿaF‘ÿeree‘ÿbSoft•²!w“are˜F‘ÿeoundation‘ÿbma“y˜publish–ÿbnew,‘UŸrevised“v²!ersions˜of“the˜GNU‘ÿ F‘ÿereeŽ¤
33‘'¿«DoMÞcumenš²!tation–ÙâLicense‘Ùãfrom“time“to“time.‘xRSuc˜h“new‘Ùãv˜ersions“will“bMÞe“similar‘Ùãin“spiritŽ¡‘'¿«to– æthe“presenš²!t“v˜ersion,‘?…but“ma˜y“dier“in“detail“to“address‘ ånew“problems“or“concerns.Ž¡‘'¿«See‘¦fâhttp://www.gnu.org/copyleft/á.Ž¦‘'¿«Eac•²!h›ˆ×v“ersion˜of˜the˜License˜is˜giv“en˜a˜distinguishing˜v“ersion˜n“um“b•MÞer.‘ÔIf˜the˜Do“cumen²!tŽ¡‘'¿«spšMÞecies–r”that“a“particular“n•²!um“b˜ered›r”v“ersion˜of˜this˜License˜\or˜an“y˜later˜v“ersion"Ž¡‘'¿«applies‘æQto–æPit,‘öLyš²!ou“ha˜v˜e–æQthe“option‘æPof“follo˜wing“the“terms›æPand“conditions“either˜of“thatŽ¡‘'¿«spMÞecied–Žvš²!ersion“or“of“an˜y“later“v˜ersion“that‘Žhas“bMÞeen“published“(not“as“a“draft)“b˜yŽ¡‘'¿«the›î!F‘ÿeree‘î"Soft•²!w“are˜F‘ÿeoundation.‘µIf‘î"the˜DošMÞcumen“t‘î"do˜es–î!not“sp˜ecify›î"a“v•²!ersion˜n“um“bMÞer‘î!ofŽ¡‘'¿«this–$œLicense,‘D)yš²!ou“ma˜y“c˜hoMÞose‘$an˜y“v˜ersion“ev˜er“published“(not“as“a“draft)“b˜y“the“F‘ÿereeŽ¡‘'¿«Soft•²!w“are–ÖUF‘ÿeoundation.‘m©If“the“DošMÞcumen²!t“sp˜ecies“that“a“proš²!xy‘ÖTcan“decide“whic˜h“futureŽ¡‘'¿«v²!ersions–é)of›é*this“License˜can“bMÞe“used,‘ùÚthat˜proš²!xy's“public“statemen˜t›é*of“acceptance˜of“aŽ¡‘'¿«v•²!ersion›¦fpMÞermanen“tly˜authorizes˜y“ou˜to˜c“hoMÞose˜that˜v“ersion˜for˜the˜DoMÞcumen“t.Ž¦‘‡“11.Ž‘'¿«RELICENSINGŽ¦‘'¿«\Massivš²!e–{"Multiauthor‘{#CollabMÞoration“Site"“(or“\MMC‘zìSite")“means“an˜y‘{#W‘ÿeorld“WideŽ¡‘'¿«W‘ÿeeb–Leservš²!er“that“publishes“cop˜yrigh˜table‘Lfw˜orks“and“also“pro˜vides“prominen˜t“facilitiesŽ¡‘'¿«for›M an²!yb•MÞo“dy˜to˜edit˜those˜w•²!orks.‘ÀEA‘MŠpublic˜wiki˜that‘MŸan“yb•MÞo“dy˜can˜edit˜is˜an˜example˜ofŽ¡‘'¿«sucš²!h–Ya“serv˜er.‘µA‘?\Massiv˜e‘XMultiauthor“CollabMÞoration"“(or“\MMC")‘>con˜tained“in“theŽ¡‘'¿«site–¦fmeans“anš²!y“set“of“cop˜yrigh˜table“w˜orks“th˜us“published“on“the“MMC“site.Ž¦‘'¿«\CC-BY-SA"‘8¤means–8Éthe‘8ÊCreativš²!e“Commons“A˜ttribution-Share‘8ÊAlik˜e“3.0‘8Êlicense“pub-Ž¡‘'¿«lished›8b•²!y‘8Creativ“e˜Commons–8CorpMÞoration,‘N(a˜not-for-prot“corpMÞoration˜with“a˜principalŽ¡‘'¿«place–òof“business“in“San“F‘ÿerancisco,‘7£California,‘7¢as“wš²!ell“as“future“cop˜yleft“v˜ersions“of“thatŽ¡‘'¿«license–¦fpublished“b²!y“that“same“organization.Ž¦‘'¿«\IncorpšMÞorate"–­zmeans“to“publish‘­yor“republish“a“Do˜cumen²!t,›¯?in“whole“or‘­yin“part,˜as“partŽ¡‘'¿«of–¦fanother“DoMÞcumen²!t.Ž¦‘'¿«An–&\MMC‘&<is“\eligible›&]for“relicensing"“if“it“is˜licensed“under“this“License,‘?øand˜if“all“w²!orksŽ¡‘'¿«that–
w²!ere›rst“published˜under“this˜License“somewhere“other˜than“this˜MMC,“andŽ¡‘'¿«subsequen²!tly–-incorpMÞorated›-in“whole“or˜in“part“in²!to˜the“MMC,˜(1)“had“no˜co•²!v“er‘-textsŽ¡‘'¿«or›¦fin•²!v‘ÿdDarian“t˜sections,˜and˜(2)˜w“ere˜th“us˜incorpMÞorated˜prior˜to˜No“v“em“bMÞer˜1,˜2008.Ž¦‘'¿«The–àÊopMÞerator›àËof“an˜MMC‘àzSite“ma²!y˜republish“an“MMC‘àzcon²!tained˜in“the˜site“underŽ¡‘'¿«CC-BY-SA‘ on– the› same“site“at˜an²!y“time“bMÞefore˜August“1,–¡[2009,“pro²!vided˜the‘ MMC‘ isŽ¡‘'¿«eligible–¦ffor“relicensing.ŽŽŒ‹JÎ<Ÿò‘GáAppšMÞendix–¦fA:“GNU“F‘ÿeree“Do˜cumen²!tation“License’Á:74ŽŽŽ ƒ33 ý ÌÍ‘Gë]ADDENDUM:–f@HošŒÌw“to“use“this“License“for“y˜our“dos3cumen˜tsŽŽŸ33‘GáT‘ÿeo–'òuse“this“License“in“a“doMÞcumenš²!t“y˜ou‘'óha˜v˜e“written,‘HUinclude“a“cop˜y“of“the“License“in“theŽ¤
33‘GdoMÞcumenš²!t–¦fand“put“the“follo˜wing“cop˜yrigh˜t“and“license“notices“just“after“the“title“page:Ž©
€‘8lÈÉCopyright‘¹–(C)–      s,óFßê<x       
        !           125: cmsltt10ëFyear“your‘¹—nameÉ.Ž¤
        !           126: €‘8lÈPermission–¹–is“granted“to“copy,“distribute“and/or“modify“this“documentŽ¡‘8lÈunder–¹–the“terms“of“the“GNU“Free“Documentation“License,“Version“1.3Ž¡‘8lÈor–¹–any“later“version“published“by“the“Free“Software“Foundation;Ž¡‘8lÈwith–¹–no“Invariant“Sections,“no“Front-Cover“Texts,“and“no“Back-CoverŽ¡‘8lÈTexts.‘        s,A–¹–copy“of“the“license“is“included“in“the“section“entitled“``GNUŽ¡‘8lÈFree–¹–Documentation“License''.ŽŽŸO33‘!GáIf›ÊÌy•²!ou‘ÊÍha“v“e˜In“v‘ÿdDarian“t›ÊÍSections,‘åF‘ÿeron“t-Co“v“er˜T‘ÿeexts‘ÊÌand˜Bac“k-Co“v“er–ÊÌT‘ÿeexts,‘æreplace“theŽ¡‘G\with‘©ä.–§‘.“.Ž‘lÏT‘ÿeexts."‘ÝÝline–¦fwith“this:Ž¦‘AßôÉwith–¹–the“Invariant“Sections“being“ëFlist–¹—their“titlesÉ,‘¹–withŽ¤
        !           127: €‘Aßôthe–¹–Front-Cover“Texts“being“ëFlistÉ,“and“with“the“Back-Cover“TextsŽ¡‘Aßôbeing‘¹–ëFlistÉ.ŽŽŸ%33‘!GáIf–:üyš²!ou“ha˜v˜e“In˜v‘ÿdDarian˜t“Sections“without“Co˜v˜er“T‘ÿeexts,‘`"or“some“other“com˜bination“of“theŽ¡‘Gthree,–¦fmerge“those“t•²!w“o›¦falternativ“es˜to˜suit˜the˜situation.ŽŸ33‘!GIf–Ý yš²!our“doMÞcumen˜t“con˜tains“non˜trivial‘Ýexamples“of“program“coMÞde,‘aw˜e“recommend“releasingŽ¡‘Gthese–-éexamples›-êin“parallel˜under“y•²!our˜c“hoice–-éof˜free“soft•²!w“are˜license,‘Êsuc“h–-éas˜the“GNUŽ¡‘GGeneral–¦fPublic“License,“to“pMÞermit“their“use“in“free“soft•²!w“are.ŽŽŒ‹KÛŸò‘GáConcept‘¦fIndex’&`¶)75ŽŽŽ ƒ33 ýˆÌÌ‘GëTConcept‘z³IndexŽŽ ú
i ÿ.0‘šßë]AŽ©‘Gó&o´‹Ç          cmr9¬application-spAÇecic–Tcompletion“functions‘G‘ÅUó5ùž"      cmmi9²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Í$¬51ŽŽ¤«å‘šßë]CŽŸ‘G¬command‘Tediting©‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Ì…¬1ŽŽ¡‘šßë]EŽ¦‘G¬editing–Tcommand“lines‘&Ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘‘ñ¬1ŽŽ¡‘šßë]IŽ©
        !           128: /‘G¬initialization–Tle,“readline‘&ÔŒ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘•i¬4ŽŽŸ
        !           129: €‘Gin¾9teraction,‘Treadline‘©â‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘j¿¬1ŽŽ¡‘šßë]KŽ¦‘G¬kill‘Tring‘­á‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘n¾¬2ŽŽŸ
        !           130: €‘Gkilling‘Ttext‘7‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘P¬2ŽŽŽ ÿ.0’ókˆë]NŽŸëu’óáð¬notation,‘Treadline‘&Qp‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘L¬1ŽŽ©0¶
’ókˆë]RŽ¤ët’óáð¬readline,‘Tfunction‘&rS‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘30¬25ŽŽŸ0¶’ókˆë]VŽ¡’óáð¬v‘ÿ|rariables,‘Treadline‘£N‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘d+¬4ŽŽ¦’ókˆë]YŽŸëu’óáð¬y¾9anking‘Ttext‘&TŒ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘h¬2ŽŽŽŽŽŽŒ‹Lⵟò’&¸¼Ëá76ŽŽŽ ƒ33 ý ÌÍ‘GëTF›þaGunction–z³and“V˜ariable“IndexŽŽ _33 ýÕ𦑽4‰£ÙÜ+ŽŽŸ·?‘GÉ_rl_digit_p‘†r‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘GO¬42ŽŽ¤
        !           131: ¾‘GÉ_rl_digit_value‘&Z^‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘;¬43ŽŽ©
        !           132: ½ÿ‘GÉ_rl_lowercase_p‘&Z^‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘;¬42ŽŽ¡‘GÉ_rl_to_lower7ß‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ø¼¬43ŽŽ¦‘GÉ_rl_to_upper7ß‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ø¼¬42ŽŽ¤
        !           133: €‘GÉ_rl_uppercase_p‘&Z^‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘;¬42ŽŽŸ"€2‘šßë]AŽ©·?‘GÉabort‘T(C-g)‘&X“‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘p¬22ŽŽ¡‘GÉaccept-line–T(Newline“or“Return)‘õÉ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¶¦¬17ŽŽŸ"€3‘šßë]BŽ¦‘GÉbackward-char‘T(C-b)‘ò3‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘³¬16ŽŽ¤
        !           134: ½ÿ‘GÉbackward-delete-char‘T(Rubout)‘&üå‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘½Â¬19ŽŽ©
        !           135: ¾‘GÉbackward-kill-line–T(C-x“Rubout)#¨‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ä…¬20ŽŽ¡‘GÉbackward-kill-word‘T(M-DEL)‘Úf‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘›C¬20ŽŽ¦‘GÉbackward-word‘T(M-b)‘ò3‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘³¬16ŽŽ¦‘GÉbeginning-of-history‘T(M-<)‘Úf‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘›C¬17ŽŽ¡‘GÉbeginning-of-line‘T(C-a)‘&Æ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘†ü¬16ŽŽ¦‘GbAÇell-st¾9ylegN‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘(*¬5ŽŽ¡‘Gbind-tt•¾9y-spAÇecial-c“hars‘&ÈG‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘‰$¬5ŽŽ¦‘Gblink-matc¾9hing-parenþ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ÉÛ¬5ŽŽŸ
        !           136: €‘GÉbracketed-paste-begin‘T()‘&wŒ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘8i¬19ŽŽŸ"€2‘šßë]CŽŸ·?‘GÉcall-last-kbd-macro–T(C-x“e)‘&]ô‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Ѭ22ŽŽ¦‘GÉcapitalize-word‘T(M-c)U
‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ê¬19ŽŽ¡‘GÉcharacter-search‘T(C-])z‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ÇW¬23ŽŽ¦‘GÉcharacter-search-backward‘T(M-C-])‘™‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ƒv¬23ŽŽ¡‘GÉclear-display‘T(M-C-l)U
‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ê¬16ŽŽ¦‘GÉclear-screen‘T(C-l)‘&@Æ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘&£¬17ŽŽ¡‘Gcolored-completion-prexh‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘(ø¬5ŽŽ¦‘Gcolored-stats‘&D¹‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘–¬5ŽŽ¦‘Gcommen¾9t-bAÇegin7‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘̬5ŽŽ¡‘GÉcomplete‘T(TAB)lÚ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘-·¬21ŽŽ¦‘Gcompletion-displa¾9y-width‘ˆ£‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘I¬5ŽŽ¡‘Gcompletion-ignore-case‘&Œ1‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘M¬5ŽŽ¦‘Gcompletion-map-case‘&¿‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Ìœ¬5ŽŽ¦‘Gcompletion-prex-displa¾9y-length‘çÀ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¨œ¬5ŽŽ¡‘Gcompletion-query-items&‡‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Âd¬6ŽŽ¦‘Gcon•¾9v“ert-metak7‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘,¬6ŽŽ¡‘GÉcopy-backward-word‘T()U
‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ê¬21ŽŽ¦‘GÉcopy-forward-word‘T()‘£ ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘d}¬21ŽŽŸ
        !           137: €‘GÉcopy-region-as-kill‘T()z‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ÇW¬21ŽŽŽ ýß.’ókˆë]DŽŸJ’óáðÉdelete-char‘T(C-d)‘&Y‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘P6¬18ŽŽ¤
        !           138: šÇ’óáðÉdelete-char-or-list‘T()z‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ÇW¬22ŽŽ¡’óáðÉdelete-horizontal-space‘T()‘Úf‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘›C¬20ŽŽ¡’óáðÉdigit-argument–T(ëFM-0É,“ëFM-1É,“...Ž‘WjëFM--É)‘Ü-‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ ¬21ŽŽ¡’óáðdisable-completion‘&M‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘P*¬6ŽŽ¡’óáðÉdo-lowercase-version–T(M-A,“M-B,“M-ëFxÉ,“...Ž‘B)‘Äd‘ÅU²:Ž‘p‘ÅU:Ž‘…@¬22ŽŽ¡’óáðÉdowncase-word‘T(M-l)‘ò3‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘³¬19ŽŽ¡’óáðÉdump-functions‘T()‘&Y‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘P6¬23ŽŽ¤
        !           139: šÈ’óáðÉdump-macros‘T()lÚ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘-·¬24ŽŽ©
        !           140: €’óáðÉdump-variables‘T()‘&Y‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘P6¬23ŽŽŸœ’ókˆë]EŽŸJ’óáð¬ec•¾9ho-con“trol-c“haracters‘âÜ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘£¹¬6ŽŽ¡’óáðediting-moAÇdemâ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘.¾¬6ŽŽ¤
        !           141: šÇ’óáðÉemacs-editing-mode‘T(C-e)‘&wŒ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘8i¬24ŽŽ¡’óáðemacs-moAÇde-string‘&e+‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘&¬6ŽŽ¡’óáðenable-brac•¾9k“eted-paste‘&jk‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘+G¬6ŽŽ¡’óáðenable-k¾9eypad+©‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘솬7ŽŽ¡’óáðÉend-kbd-macro–T(C-x“))‘&'.‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘è¬22ŽŽ¡’óáðëFend-of-file–TÉ(usually“C-d)‘&û‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘»ñ¬18ŽŽ¡’óáðÉend-of-history‘T(M->)‘£ ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘d}¬17ŽŽ¡’óáðÉend-of-line‘T(C-e)‘&Y‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘P6¬16ŽŽ¡’óáðÉexchange-point-and-mark–T(C-x“C-x)‘&”º‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘U—¬23ŽŽ¦’óáðexpand-tilde‘&¶Å‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘w¡¬7ŽŽŸ\‘’ókˆë]FŽŸJ’óáðÉforward-backward-delete-char‘T()‘&_¿‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ œ¬19ŽŽ¡’óáðÉforward-char‘T(C-f)‘&@Æ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘&£¬16ŽŽ¤
        !           142: šÈ’óáðÉforward-search-history‘T(C-s)=@‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘þ¬17ŽŽ¦’óáðÉforward-word‘T(M-f)‘&@Æ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘&£¬16ŽŽŸ\’ókˆë]HŽŸJ’óáð¬history-preserv•¾9e-pAÇoin“t‘&ž‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Þz¬7ŽŽ¡’óáðÉhistory-search-backward‘T()‘Úf‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘›C¬17ŽŽ¤
        !           143: šÇ’óáðÉhistory-search-forward‘T()‘&(ù‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘éÖ¬17ŽŽ¡’óáðhistory-size‘&é+‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ª¬7ŽŽ¡’óáðÉhistory-substring-search-backward‘T()‘&å‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¥õ¬18ŽŽ¡’óáðÉhistory-substring-search-forward‘T()%s‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘æP¬18ŽŽ¦’óáðhorizon¾9tal-scroll-moAÇde‘ƒN‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘D*¬7ŽŽŸ;I’ókˆë]IŽŸJ’óáð¬input-metaMp‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘L¬7ŽŽ¡’óáðÉinsert-comment‘T(M-#)‘£ ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘d}¬23ŽŽ¡’óáðÉinsert-completions‘T(M-*)‘&wŒ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘8i¬21ŽŽ¦’óáðisearc¾9h-terminatorsXº‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘—¬7ŽŽŽŽŽŽŒ‹MðŸò‘GáF›ÿeunction–¦fand“V˜ariable“Index’&œÃ77ŽŽŽ ƒ33Ÿæ€ ý¹®‘šßë]KŽ©‡£‘G¬k¾9eymap‘ñá‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘²¾¬8ŽŽ¤&8‘GÉkill-line‘T(C-k)G‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ß$¬20ŽŽ¡‘GÉkill-region‘T()lÚ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘-·¬21ŽŽ¡‘GÉkill-whole-line‘T()‘&@Æ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘&£¬20ŽŽŸ
        !           144: €‘GÉkill-word‘T(M-d)G‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ß$¬20ŽŽŸ&ÃÑ‘šßë]MŽ¦‘G¬mark-moAÇdied-lines‘&JÜ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¸¬8ŽŽ¡‘Gmark-symlink¾9ed-directories‘üº‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘½—¬8ŽŽ¡‘Gmatc¾9h-hidden-les%‡‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘æc¬8ŽŽ¡‘GÉmenu-complete‘T()‘&Ýì‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘žÉ¬22ŽŽ¡‘GÉmenu-complete-backward‘T()‘&(ù‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘éÖ¬22ŽŽ¡‘Gmen•¾9u-complete-displa“y-prex‘„¤‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘E€¬8ŽŽŸ
        !           145: €‘Gmeta-
ag‘&Ø‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘˜ö¬7ŽŽŸ'ÃÒ‘šßë]NŽ¦‘GÉnext-history‘T(C-n)‘&@Æ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘&£¬17ŽŽ¡‘GÉnext-screen-line‘T()‘ò3‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘³¬16ŽŽŸ13Ÿõ€‘GÉnon-incremental-forward-ŽŸ
        !           146: €‘QCsearch-history‘T(M-n) ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘àï¬17ŽŽŸÿÿŸõ€‘GÉnon-incremental-reverse-ŽŸ
        !           147: €‘QCsearch-history‘T(M-p) ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘àï¬17ŽŽŸ)Ö‘šßë]OŽ¦‘GÉoperate-and-get-next‘T(C-o)‘Úf‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘›C¬18ŽŽ¡‘Goutput-meta‘&–S‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘W/¬8ŽŽŸ
        !           148: €‘GÉoverwrite-mode‘T()‘&Y‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘P6¬20ŽŽŸ&ÃÑ‘šßë]PŽ¦‘G¬page-completionsFj‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘G¬9ŽŽ¡‘GÉpossible-completions‘T(M-?)‘Úf‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘›C¬21ŽŽ¡‘GÉprefix-meta‘T(ESC)‘&Y‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘P6¬22ŽŽ¡‘GÉprevious-history‘T(C-p)z‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ÇW¬17ŽŽ¡‘GÉprevious-screen-line‘T()‘&Æ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘†ü¬16ŽŽŸ
        !           149: €‘GÉprint-last-kbd-macro‘T()‘&Æ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘†ü¬22ŽŽŸ(Ò‘šßë]QŽŸk‘GÉquoted-insert–T(C-q“or“C-v)pp‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘1M¬19ŽŽŽ ý¹®’ókˆë]RŽŸ     à’óáðÉre-read-init-file–T(C-x“C-r)‘&]ô‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Ѭ22ŽŽ¤
        !           150: †’óáðÉreadline‘&r+‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘3¬25ŽŽ©
        !           151: †’óáðÉredraw-current-line‘T()z‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ÇW¬17ŽŽ¡’óáðÉreverse-search-history‘T(C-r)=@‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘þ¬17ŽŽ¡’óáðrev¾9ert-all-at-newline‘ˆ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Ij¬9ŽŽ¡’óáðÉrevert-line‘T(M-r)‘&Y‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘P6¬23ŽŽ¡’óáðÉrl_activate_mark‘&Ë‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘̨¬44ŽŽ¦’óáðÉrl_add_defun7ß‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ø¼¬33ŽŽ¡’óáðÉrl_add_funmap_entry ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘àï¬37ŽŽ¡’óáðÉrl_add_undo‘†r‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘GO¬38ŽŽ¡’óáðÉrl_alphabetic‘&÷„‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¸a¬42ŽŽ¡’óáðÉrl_begin_undo_group ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘àï¬38ŽŽ¡’óáðÉrl_bind_key‘†r‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘GO¬35ŽŽ¦’óáðÉrl_bind_key_if_unbound‘&B‘‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘n¬35ŽŽ¡’óáðÉrl_bind_key_if_unbound_in_map‘&*Ä‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘롬35ŽŽ¡’óáðÉrl_bind_key_in_mapn¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬35ŽŽ¡’óáðÉrl_bind_keyseq‘&¨ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘iά36ŽŽ¡’óáðÉrl_bind_keyseq_if_unboundVØ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘µ¬36ŽŽ¦’óáðÉrl_bind_keyseq_if_unbound_in_map?‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ÿè¬36ŽŽ¡’óáðÉrl_bind_keyseq_in_map‘&‘$‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘R&¬36ŽŽ¡’óáðÉrl_callback_handler_install‘&Çê‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ˆÇ¬44ŽŽ¡’óáðÉrl_callback_handler_removeE‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘É"¬45ŽŽ¡’óáðÉrl_callback_read_char‘&‘$‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘R&¬44ŽŽ¡’óáðÉrl_callback_sigcleanup‘&B‘‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘n¬44ŽŽ¦’óáðÉrl_check_signals‘&Ë‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘̨¬50ŽŽ¡’óáðÉrl_cleanup_after_signal‘óþ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘´Û¬50ŽŽ¡’óáðÉrl_clear_history‘&Ë‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘̨¬43ŽŽ¡’óáðÉrl_clear_message‘&Ë‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘̨¬39ŽŽ¡’óáðÉrl_clear_pending_input‘&B‘‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘n¬41ŽŽ¡’óáðÉrl_clear_signals‘&Ë‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘̨¬51ŽŽ¦’óáðÉrl_clear_visible_line‘&‘$‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘R&¬39ŽŽ¡’óáðÉrl_complete‘&KÇ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¤¬52,‘T53ŽŽ¡’óáðÉrl_complete_internal‘&ß·‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ ”¬52ŽŽ¡’óáðÉrl_completion_matches‘&‘$‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘R&¬53ŽŽ¡’óáðÉrl_completion_moden¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬53ŽŽ¦’óáðÉrl_copy_keymap‘&¨ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘iά34ŽŽ¡’óáðÉrl_copy_text7ß‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ø¼¬40ŽŽ¡’óáðÉrl_crlf‘&À¾‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘›¬39ŽŽ¡’óáðÉrl_deactivate_markn¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬44ŽŽ¡’óáðÉrl_delete_text‘&¨ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘iά40ŽŽ¡’óáðÉrl_deprep_terminaln¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬41ŽŽ¦’óáðÉrl_ding‘&À¾‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘›¬42ŽŽ¡’óáðÉrl_discard_keymap‘½8‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘~¬34ŽŽ¡’óáðÉrl_display_match_list‘&‘$‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘R&¬42ŽŽ¡’óáðÉrl_do_undo‘Õ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘•â¬38ŽŽ¡’óáðÉrl_echo_signal_char ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘àï¬51ŽŽ¦’óáðÉrl_empty_keymap‘&Z^‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘;¬34ŽŽ¡’óáðÉrl_end_undo_group‘½8‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘~¬38ŽŽ¡’óáðÉrl_execute_next‘&Z^‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘;¬41ŽŽ¡’óáðÉrl_expand_prompt‘&Ë‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘̨¬39ŽŽ¡’óáðÉrl_extend_line_buffer‘&‘$‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘R&¬42ŽŽ¡’óáðÉrl_filename_completion_function‘ž‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘N{¬53ŽŽ¦’óáðÉrl_forced_update_display‘¥k‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘fH¬38ŽŽ¡’óáðÉrl_free‘&À¾‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘›¬42ŽŽ¡’óáðÉrl_free_keymap‘&¨ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘iά34ŽŽŽŽŽŽŒ‹N9Ÿò‘GáF›ÿeunction–¦fand“V˜ariable“Index’&œÃ78ŽŽŽ ƒ33ŸèF ý³Ó—‘GÉrl_free_line_staten¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬50ŽŽ¤
        !           152: €Ë‘GÉrl_free_undo_list‘½8‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘~¬38ŽŽ¡‘GÉrl_function_dumpern¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬37ŽŽ¡‘GÉrl_function_of_keyseq‘&‘$‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘R&¬37ŽŽ¡‘GÉrl_function_of_keyseq_lenVØ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘µ¬37ŽŽ¡‘GÉrl_funmap_names‘&Z^‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘;¬37ŽŽ¡‘GÉrl_generic_bind‘&Z^‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘;¬36ŽŽ¡‘GÉrl_get_keymap‘&÷„‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¸a¬34ŽŽ¡‘GÉrl_get_keymap_by_name‘&‘$‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘R&¬34ŽŽ¡‘GÉrl_get_keymap_namen¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬34ŽŽ¡‘GÉrl_get_screen_sizen¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬51ŽŽ¡‘GÉrl_get_termcap‘&¨ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘iά43ŽŽ¡‘GÉrl_getc‘&À¾‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘›¬40ŽŽ¡‘GÉrl_initialize‘&÷„‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¸a¬42ŽŽ¡‘GÉrl_insert_completions‘&‘$‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘R&¬53ŽŽ¡‘GÉrl_insert_text‘&¨ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘iά40ŽŽ¡‘GÉrl_invoking_keyseqs ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘àï¬37ŽŽ¡‘GÉrl_invoking_keyseqs_in_mapE‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘É"¬37ŽŽ¡‘GÉrl_keep_mark_active ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘àï¬44ŽŽ¡‘GÉrl_kill_text7ß‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ø¼¬40ŽŽ¡‘GÉrl_list_funmap_names‘&ß·‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ ”¬37ŽŽ¡‘GÉrl_macro_bind‘&÷„‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¸a¬43ŽŽ¡‘GÉrl_macro_dumper‘&Z^‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘;¬43ŽŽ¡‘GÉrl_make_bare_keymap ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘àï¬34ŽŽ¡‘GÉrl_make_keymap‘&¨ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘iά34ŽŽ¡‘GÉrl_mark_active_p‘&Ë‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘̨¬44ŽŽ¡‘GÉrl_message‘Õ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘•â¬39ŽŽ¡‘GÉrl_modifying7ß‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ø¼¬38ŽŽŸ
        !           153: €Ì‘GÉrl_named_function‘½8‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘~¬37ŽŽ¡‘GÉrl_on_new_line‘&¨ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘iά38ŽŽ¡‘GÉrl_on_new_line_with_promptE‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘É"¬39ŽŽ¡‘GÉrl_parse_and_bind‘½8‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘~¬36ŽŽ¡‘GÉrl_pending_signal‘½8‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘~¬50ŽŽ¡‘GÉrl_possible_completions‘óþ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘´Û¬53ŽŽ¡‘GÉrl_prep_terminal‘&Ë‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘̨¬41ŽŽ¡‘GÉrl_push_macro_input ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘àï¬40ŽŽ¡‘GÉrl_read_init_file‘½8‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘~¬36ŽŽ¡‘GÉrl_read_key‘†r‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘GO¬40ŽŽ¡‘GÉrl_redisplay7ß‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ø¼¬38ŽŽ¡‘GÉrl_replace_line‘&Z^‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘;¬42ŽŽ¡‘GÉrl_reset_after_signal‘&‘$‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘R&¬50ŽŽ¡‘GÉrl_reset_line_state ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘àï¬39ŽŽ¡‘GÉrl_reset_screen_size‘&ß·‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ ”¬51ŽŽ¡‘GÉrl_reset_terminal‘½8‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘~¬41ŽŽ¡‘GÉrl_resize_terminaln¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬51ŽŽ¡‘GÉrl_restore_prompt‘½8‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘~¬39ŽŽ¡‘GÉrl_restore_state‘&Ë‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘̨¬42ŽŽ¡‘GÉrl_save_prompt‘&¨ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘iά39ŽŽ¡‘GÉrl_save_state‘&÷„‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¸a¬41ŽŽ¡‘GÉrl_set_key‘Õ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘•â¬36ŽŽ¡‘GÉrl_set_keyboard_input_timeout‘&*Ä‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘롬41ŽŽ¡‘GÉrl_set_keymap‘&÷„‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¸a¬34ŽŽ¡‘GÉrl_set_keymap_namen¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬34ŽŽ¡‘GÉrl_set_paren_blink_timeoutE‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘É"¬43ŽŽ¡‘GÉrl_set_prompt‘&÷„‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¸a¬40ŽŽ¡‘GÉrl_set_screen_sizen¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬51ŽŽ¡‘GÉrl_set_signals‘&¨ñ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘iά51ŽŽŽ ý³Ó—’óáðÉrl_show_char7ß‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ø¼¬39ŽŽ¤
        !           154: Ÿ’óáðÉrl_stuff_char‘&÷„‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¸a¬40ŽŽ©
        !           155: Ÿ’óáðÉrl_tty_set_default_bindings‘&Çê‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ˆÇ¬41ŽŽ¡’óáðÉrl_tty_set_echoingn¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬41ŽŽ¦’óáðÉrl_tty_unset_default_bindings‘&*Ä‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘롬41ŽŽ¡’óáðÉrl_unbind_command_in_map‘¥k‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘fH¬36ŽŽ¦’óáðÉrl_unbind_function_in_mapVØ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘µ¬35ŽŽ¡’óáðÉrl_unbind_key‘&÷„‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘¸a¬35ŽŽ¡’óáðÉrl_unbind_key_in_map‘&ß·‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ ”¬35ŽŽ¦’óáðÉrl_username_completion_function‘ž‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘N{¬53ŽŽ¡’óáðÉrl_variable_bind‘&Ë‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘̨¬43ŽŽ¦’óáðÉrl_variable_dumpern¥‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘/‚¬43ŽŽŸ
        !           156: €’óáðÉrl_variable_value‘½8‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘~¬43ŽŽŸ×[’ókˆë]SŽŸWb’óáðÉself-insert–T(a,“b,“A,“1,“!,“...Ž‘B)‘&a‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Ð>¬19ŽŽ¡’óáðÉset-mark‘T(C-@)lÚ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘-·¬23ŽŽ¦’óáðÉshell-transpose-words‘T(M-C-t)‘&üå‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘½Â¬20ŽŽ¡’óáðsho•¾9w-all-if-am“biguous‘&ª€‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘k\¬9ŽŽ¡’óáðsho¾9w-all-if-unmoAÇdied‘©†‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘jc¬9ŽŽ¦’óáðsho¾9w-moAÇde-in-prompt‘&  †‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Êc¬9ŽŽ¡’óáðskip-completed-text‘&M‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘
ñ¬9ŽŽ¦’óáðÉskip-csi-sequence‘T()‘£ ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘d}¬23ŽŽŸ
        !           157: €’óáðÉstart-kbd-macro–T(C-x“()‘Š‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Jå¬22ŽŽŸ¶Ò’ókˆë]TŽŸWb’óáðÉtab-insert‘T(M-TAB)‘&@Æ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘&£¬19ŽŽ¡’óáðÉtilde-expand‘T(M-~)‘&@Æ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘&£¬23ŽŽ¦’óáðÉtranspose-chars‘T(C-t)U
‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ê¬19ŽŽŸ
        !           158: €’óáðÉtranspose-words‘T(M-t)U
‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ê¬19ŽŽŸöÓ’ókˆë]UŽŸWb’óáðÉundo–T(C-_“or“C-x“C-u)‘½8‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘~¬23ŽŽ¡’óáðÉuniversal-argument‘T()U
‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ê¬21ŽŽ¡’óáðÉunix-filename-rubout‘T()‘&Æ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘†ü¬20ŽŽ¦’óáðÉunix-line-discard‘T(C-u)‘&Æ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘†ü¬20ŽŽ¡’óáðÉunix-word-rubout‘T(C-w)z‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘ÇW¬20ŽŽŸ
        !           159: €’óáðÉupcase-word‘T(M-u)‘&Y‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘P6¬19ŽŽŸöÓ’ókˆë]VŽŸWb’óáð¬vi-cmd-moAÇde-string‘&‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘Mñ¬10ŽŽ¦’óáðÉvi-editing-mode‘T(M-C-j)‘&Æ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘†ü¬24ŽŽ¡’óáðvi-ins-moAÇde-string=‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘þz¬10ŽŽŸ
        !           160: €’óáðvisible-stats‘œ^‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘];¬10ŽŽŸ•Œ’ókˆë]YŽŸWb’óáðÉyank‘T(C-y)‘&§&‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘h¬21ŽŽ¦’óáðÉyank-last-arg–T(M-.“or“M-_)pp‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘1M¬18ŽŽ¡’óáðÉyank-nth-arg‘T(M-C-y)‘£ ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘d}¬18ŽŽŸ
        !           161: €’óáðÉyank-pop‘T(M-y)lÚ‘ÅU²:Ž–p‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž“‘ÅU:Ž‘-·¬21ŽŽŽŽŽŽŒø‹£&ƒ’À;è…ïÿ&ïÿRógÂÖN 
#×cmbx12óe·ág£ffcmmi12ó]ÂÖN ffcmbx12óTÂÖN G®cmbx12óKÂÖN ¼jcmbx12óFßê<x      
        !           162: cmsltt10óAp®0J
        !           163: cmsl10ó@ßê<x
1.1       misho     164: cmtt10ó?!",š
                    165: ó3
                    166: cmsy10ó> b>
                    167: ó3
                    168: cmmi10ó=ßê<x
                    169: ó3
                    170: cmsltt10ó<Œ-ø
                    171: ó3
                    172: cmcsc10ó;m#½R
                    173: ó3
                    174: cmss10ó:p®0J
                    175: ó3
                    176: cmsl10ó9ý':
                    177: ó3
                    178: cmti10ó7ßê<x
                    179: ó3
                    180: cmtt10ó6Kñ`y
                    181: ó3
                    182: cmr10óߤN            cmtt9ó5ùž"             cmmi9ó&o´‹Ç             cmr9óKñ`y
                    183: 
1.1.1.2 ! misho     184: cmr10ùîßßßßßß

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>