CLISP-READLINE(3) CLISP-READLINE(3) NAME readline−getalinefromauserwithediting NOTATION Anemacs−stylenotationisusedtodenotekeystrokes.ControlkeysaredenotedbyC−key,e.g., C−nmeansControl−N.Similarly,metakeysaredenotedbyM−key,soM−xmeansMeta−X. (Onkeyboardswithoutametakey,M−xmeansESCx,i.e.,presstheEscapekeythenthexkey. ThismakesESCthemetaprefix.ThecombinationM−C−xmeansESC−Control−x,orpressthe EscapekeythenholdtheControlkeywhilepressingthexkey.) Readlinecommandsmaybegivennumericarguments,whichnormallyactasarepeatcount. Sometimes,however,itisthesignoftheargumentthatissignificant.Passinganegativeargumenttoacommandthatactsintheforwarddirection(e.g.,kill−line)causesthatcommandto actinabackwarddirection.Commandswhosebehaviorwithargumentsdeviatesfromthisare noted. Whenacommandisdescribedaskillingtext,thetextdeletedissavedforpossiblefutureretrieval (yanking).Thekilledtextissavedinakill−ring.Consecutivekillscausethetexttobeaccumulatedintooneunit,whichcanbeyankedallatonce.Commandswhichdonotkilltextseparate thechunksoftextonthekill−ring. INITIALIZATIONFILE Readlineiscustomizedbyputtingcommandsinaninitializationfile.Thenameofthisfileis takenfromthevalueoftheINPUTRCvariable.Ifthatvariableisunset,thedefaultis˜ /.inputrc.Whenaprogramwhichusesthereadlinelibrarystartsup,theinitfileisread,andthekey bindingsandvariablesareset.Thereareonlyafewbasicconstructsallowedinthereadlineinit file.Blanklinesareignored.Linesbeginningwitha#arecomments.Linesbeginningwitha$ indicateconditionalconstructs.Otherlinesdenotekeybindingsandvariablesettings.Eachprogramusingthislibrarymayadditsowncommandsandbindings. Forexample,placing M−Control−u:universal−argument or C−Meta−u:universal−argument intothe˜ /.inputrcwouldmakeM−C−uexecutethereadlinecommanduniversal−argument. Thefollowingsymboliccharacternamesarerecognizedwhileprocessingkeybindings:RUBOUT, DEL,ESC,LFD,NEWLINE,RET,RETURN,SPC,SPACE,andTAB.Inadditiontocommandnames,readlineallowskeystobeboundtoastringthatisinsertedwhenthekeyispressed (amacro). KeyBindings Thesyntaxforcontrollingkeybindingsinthe˜ /.inputrcfileissimple.Allthatisrequiredisthe nameofthecommandorthetextofamacroandakeysequencetowhichitshouldbebound. Thenamemaybespecifiedinoneoftwoways:asasymbolickeyname,possiblywithMeta−or Control−prefixes,orasakeysequence.Whenusingtheformkeyname:function-nameormacro, keynameisthenameofakeyspelledoutinEnglish.Forexample: Control−u:universal−argument Meta−Rubout:backward−kill−word Control−o:">&output" Intheaboveexample,C−uisboundtothefunctionuniversal−argument,M-DELisboundto thefunctionbackward−kill−word,andC−oisboundtorunthemacroexpressedontheright handside(thatis,toinsertthetext>&outputintotheline). Inthesecondform,"keyseq":function−nameormacro,keyseqdiffersfromkeynameabovein thatstringsdenotinganentirekeysequencemaybespecifiedbyplacingthesequencewithindoublequotes.SomeGNUEmacsstylekeyescapescanbeused,asinthefollowingexample. GNU 1994August18 1 CLISP-READLINE(3) CLISP-READLINE(3) "\C−u":universal−argument "\C−x\C−r":re−read−init−file "\e[11˜ ":"FunctionKey1" Inthisexample,C-uisagainboundtothefunctionuniversal−argument.C-xC-risboundto thefunctionre−read−init−file,andESC[11˜ isboundtoinsertthetextFunctionKey1. Thefullsetofescapesequencesis \C-controlprefix \M-metaprefix \eanescapecharacter \\backslash \"literal" \’literal’ Whenenteringthetextofamacro,singleordoublequotesshouldbeusedtoindicateamacro definition.Unquotedtextisassumedtobeafunctionname.Backslashwillquoteanycharacter inthemacrotext,including"and’. Bashallowsthecurrentreadlinekeybindingstobedisplayedormodifiedwiththebindbuiltin command.Theeditingmodemaybeswitchedduringinteractiveusebyusingthe−ooptionto thesetbuiltincommand.Otherprogramsusingthislibraryprovidesimilarmechanisms.The inputrcfilemaybeeditedandre−readifaprogramdoesnotprovideanyothermeanstoincorporatenewbindings. Variables Readlinehasvariablesthatcanbeusedtofurthercustomizeitsbehavior.Avariablemaybeset intheinputrcfilewithastatementoftheform setvariable−namevalue Exceptwherenoted,readlinevariablescantakethevaluesOnorOff.Thevariablesandtheir defaultvaluesare: horizontal−scroll−mode(Off) WhensettoOn,makesreadlineuseasinglelinefordisplay,scrollingtheinputhorizontallyonasinglescreenlinewhenitbecomeslongerthanthescreenwidthratherthan wrappingtoanewline. editing−mode(emacs) Controlswhetherreadlinebeginswithasetofkeybindingssimilartoemacsorvi.editing−modecanbesettoeitheremacsorvi. mark−modified−lines(Off) IfsettoOn,historylinesthathavebeenmodifiedaredisplayedwithaprecedingasterisk (*). bell−style(audible) Controlswhathappenswhenreadlinewantstoringtheterminalbell.Ifsettonone, readlineneverringsthebell.Ifsettovisible,readlineusesavisiblebellifoneisavailable.Ifsettoaudible,readlineattemptstoringtheterminal’sbell. comment−begin(‘‘#’’) Thestringthatisinsertedinvimodewhenthevi−commentcommandisexecuted. meta−flag(Off) IfsettoOn,readlinewillenableeight-bitinput(thatis,itwillnotstripthehighbit fromthecharactersitreads),regardlessofwhattheterminalclaimsitcansupport. blink−matching−paren(On) IfsettoOn,readlinewilldisplaythecorrespondingopeningparenthesiswhenaclosing parenthesisistyped. GNU 1994August18 2 CLISP-READLINE(3) CLISP-READLINE(3) convert−meta(On) IfsettoOn,readlinewillconvertcharacterswiththeeighthbitsettoanASCIIkey sequencebystrippingtheeighthbitandprependinganescapecharacter(ineffect,using escapeasthemetaprefix). output−meta(Off) IfsettoOn,readlinewilldisplaycharacterswiththeeighthbitsetdirectlyratherthanas ameta-prefixedescapesequence. completion−query−items(100) Thisdetermineswhentheuserisqueriedaboutviewingthenumberofpossiblecompletionsgeneratedbythepossible−completionscommand.Itmaybesettoanyinteger valuegreaterthanorequaltozero.Ifthenumberofpossiblecompletionsisgreaterthan orequaltothevalueofthisvariable,theuserisaskedwhetherornothewishestoview them;otherwisetheyaresimplylistedontheterminal. keymap(emacs) Setthecurrentreadlinekeymap.Thesetoflegalkeymapnamesisemacs,emacsstandard,emacs-meta,emacs-ctlx,vi,vi-move,vi-command,andvi-insert.viisequiva-lenttovi-command;emacsisequivalenttoemacs-standard.Thedefaultvalueisemacs; thevalueofediting−modealsoaffectsthedefaultkeymap. show−all−if−ambiguous(Off) Thisaltersthedefaultbehaviorofthecompletionfunctions.Ifsettoon,wordswhich havemorethanonepossiblecompletioncausethematchestobelistedimmediately insteadofringingthebell. expand−tilde(Off) Ifsettoon,tildeexpansionisperformedwhenreadlineattemptswordcompletion. ConditionalConstructs ReadlineimplementsafacilitysimilarinspirittotheconditionalcompilationfeaturesoftheC preprocessorwhichallowskeybindingsandvariablesettingstobeperformedastheresultoftests. Therearethreeparserdirectivesused. $ifThe$ifconstructallowsbindingstobemadebasedontheeditingmode,theterminal beingused,ortheapplicationusingreadline.Thetextofthetestextendstotheendof theline;nocharactersarerequiredtoisolateit. modeThemode=formofthe$ifdirectiveisusedtotestwhetherreadlineisinemacs orvimode.Thismaybeusedinconjunctionwiththesetkeymapcommand, forinstance,tosetbindingsintheemacs-standardandemacs-ctlxkeymapsonlyif readlineisstartingoutinemacsmode. termTheterm=formmaybeusedtoincludeterminal-specifickeybindings,perhaps tobindthekeysequencesoutputbytheterminal’sfunctionkeys.Thewordon therightsideofthe=istestedagainstthefullnameoftheterminalandthe portionoftheterminalnamebeforethefirst−.Thisallowssuntomatchboth sunandsun−cmd,forinstance. application Theapplicationconstructisusedtoincludeapplication−specificsettings.Each programusingthereadlinelibrarysetstheapplicationname,andaninitialization filecantestforaparticularvalue.Thiscouldbeusedtobindkeysequencesto functionsusefulforaspecificprogram.Forinstance,thefollowingcommandadds akeysequencethatquotesthecurrentorpreviouswordinBash: $ifbash #Quotethecurrentorpreviousword "\C-xq":"\eb\"\ef\"" $endif $endifThiscommand,asyousawinthepreviousexample,terminatesan$ifcommand. GNU 1994August18 3 CLISP-READLINE(3) CLISP-READLINE(3) $elseCommandsinthisbranchofthe$ifdirectiveareexecutedifthetestfails. EDITINGCOMMANDS Thefollowingisalistofthenamesofthecommandsandthedefaultkeysequencestowhichthey arebound. CommandsforMoving beginning−of−line(C−a) Movetothestartofthecurrentline. end−of−line(C−e) Movetotheendoftheline. forward−char(C−f) Moveforwardacharacter. backward−char(C−b) Movebackacharacter. forward−word(M−f) Moveforwardtotheendofthenextword.Wordsarecomposedofalphanumericcharacters(lettersanddigits). backward−word(M−b) Movebacktothestartofthis,ortheprevious,word.Wordsarecomposedofalphanumericcharacters(lettersanddigits). clear−screen(C−l) Clearthescreenleavingthecurrentlineatthetopofthescreen.Withanargument, refreshthecurrentlinewithoutclearingthescreen. redraw−current−line Refreshthecurrentline.Bydefault,thisisunbound. CommandsforManipulatingtheHistory accept−line(Newline,Return) Acceptthelineregardlessofwherethecursoris.Ifthislineisnon−empty,addittothe historylist.Ifthelineisamodifiedhistoryline,thenrestorethehistorylinetoitsoriginalstate. previous−history(C−p) Fetchthepreviouscommandfromthehistorylist,movingbackinthelist. next−history(C−n) Fetchthenextcommandfromthehistorylist,movingforwardinthelist. beginning−of−history(M−<) Movetothefirstlineinthehistory. end−of−history(M−>) Movetotheendoftheinputhistory,i.e.,thelinecurrentlybeingentered. reverse−search−history(C−r) Searchbackwardstartingatthecurrentlineandmoving‘up’throughthehistoryasnecessary.Thisisanincrementalsearch. forward−search−history(C−s) Searchforwardstartingatthecurrentlineandmoving‘down’throughthehistoryasnecessary.Thisisanincrementalsearch. non−incremental−reverse−search−history(M−p) Searchbackwardthroughthehistorystartingatthecurrentlineusinganon−incremental searchforastringsuppliedbytheuser. non−incremental−forward−search−history(M−n) Searchforwardthroughthehistoryusinganon−incrementalsearchforastringsupplied bytheuser. history−search−forward Searchforwardthroughthehistoryforthestringofcharactersbetweenthestartofthe currentlineandthecurrentpoint.Thisisanon-incrementalsearch.Bydefault,this commandisunbound. GNU 1994August18 4 CLISP-READLINE(3) CLISP-READLINE(3) history−search−backward Searchbackwardthroughthehistoryforthestringofcharactersbetweenthestartofthe currentlineandthecurrentpoint.Thisisanon-incrementalsearch.Bydefault,this commandisunbound. yank−nth−arg(M−C−y) Insertthefirstargumenttothepreviouscommand(usuallythesecondwordonthepreviousline)atpoint(thecurrentcursorposition).Withanargumentn,insertthenthword fromthepreviouscommand(thewordsinthepreviouscommandbeginwithword0).A negativeargumentinsertsthenthwordfromtheendofthepreviouscommand. CommandsforChangingText delete−char(C−d) Deletethecharacterunderthecursor.Ifpointisatthebeginningoftheline,thereare nocharactersintheline,andthelastcharactertypedwasnotC−d,thenreturnEOF. backward−delete−char(Rubout) Deletethecharacterbehindthecursor.Whengivenanumericargument,savethedeleted textonthekill−ring. quoted−insert(C−q,C−v) Addthenextcharacterthatyoutypetothelineverbatim.ThisishowtoinsertcharacterslikeC−q,forexample. tab−insert(M-TAB) Insertatabcharacter. self−insert(a,b,A,1,!,...) Insertthecharactertyped. transpose−chars(C−t) Dragthecharacterbeforepointforwardoverthecharacteratpoint.Pointmovesforward aswell.Ifpointisattheendoftheline,thentransposethetwocharactersbeforepoint. Negativeargumentsdon’twork. transpose−words(M−t) Dragthewordbehindthecursorpastthewordinfrontofthecursormovingthecursor overthatwordaswell. upcase−word(M−u) Uppercasethecurrent(orfollowing)word.Withanegativeargument,dotheprevious word,butdonotmovepoint. downcase−word(M−l) Lowercasethecurrent(orfollowing)word.Withanegativeargument,dotheprevious word,butdonotmovepoint. capitalize−word(M−c) Capitalizethecurrent(orfollowing)word.Withanegativeargument,dotheprevious word,butdonotmovepoint. KillingandYanking kill−line(C−k) Killthetextfromthecurrentcursorpositiontotheendoftheline. backward−kill−line(C−xRubout) Killbackwardtothebeginningoftheline. unix−line−discard(C−u) Killbackwardfrompointtothebeginningoftheline. kill−whole−line Killallcharactersonthecurrentline,nomatterwherethecursoris.Bydefault,thisis unbound. kill−word(M−d) Killfromthecursortotheendofthecurrentword,orifbetweenwords,totheendofthe nextword.Wordboundariesarethesameasthoseusedbyforward−word. GNU 1994August18 5 CLISP-READLINE(3) CLISP-READLINE(3) backward−kill−word(M−Rubout) Killthewordbehindthecursor.Wordboundariesarethesameasthoseusedbybackward−word. unix−word−rubout(C−w) Killthewordbehindthecursor,usingwhitespaceasawordboundary.Thewordboundariesaredifferentfrombackward−kill−word. delete−horizontal−space Deleteallspacesandtabsaroundpoint.Bydefault,thisisunbound. yank(C−y) Yankthetopofthekillringintothebufferatthecursor. yank−pop(M−y) Rotatethekill−ring,andyankthenewtop.Onlyworksfollowingyankoryank−pop. NumericArguments digit−argument(M−0,M−1,...,M−−) Addthisdigittotheargumentalreadyaccumulating,orstartanewargument.M−− startsanegativeargument. universal−argument Eachtimethisisexecuted,theargumentcountismultipliedbyfour.Theargument countisinitiallyone,soexecutingthisfunctionthefirsttimemakestheargumentcount four.Bydefault,thisisnotboundtoakey. Completing complete(TAB) Attempttoperformcompletiononthetextbeforepoint.Theactualcompletionperformedisapplication-specific.Clisp,forinstance,attemptscompletionofsymbolnames, offunctionnames(ifthetextisprefixedby(or#’)oroffilenames(ifthetextisprefixed by#").Bash,ontheotherhand,attemptscompletiontreatingthetextasavariable(if thetextbeginswith$),username(ifthetextbeginswith˜ ),hostname(ifthetextbegins with@),orcommand(includingaliasesandfunctions)inturn.Ifnoneoftheseproduces amatch,filenamecompletionisattempted.Gdb,finally,allowscompletionofprogram functionsandvariables,andonlyattemptsfilenamecompletionundercertaincircumstances. possible−completions(M-?) Listthepossiblecompletionsofthetextbeforepoint. insert−completions Insertallcompletionsofthetextbeforepointthatwouldhavebeengeneratedbypossible−completions.Bydefault,thisisnotboundtoakey. KeyboardMacros start−kbd−macro(C-x() Beginsavingthecharacterstypedintothecurrentkeyboardmacro. end−kbd−macro(C-x)) Stopsavingthecharacterstypedintothecurrentkeyboardmacroandsavethedefinition. call−last−kbd−macro(C-xe) Re-executethelastkeyboardmacrodefined,bymakingthecharactersinthemacro appearasiftypedatthekeyboard. Miscellaneous re-read-init-file(C−xC−r) Readinthecontentsofyourinitfile,andincorporateanybindingsorvariableassignmentsfoundthere. abort(C−g) Abortthecurrenteditingcommandandringtheterminal’sbell(subjecttothesettingof bell−style). GNU 1994August18 6 CLISP-READLINE(3) CLISP-READLINE(3) do−uppercase−version(M−a,M−b,...) Runthecommandthatisboundtothecorrespondinguppercasecharacter. prefix−meta(ESC) Metafythenextcharactertyped.ESCfisequivalenttoMeta−f. undo(C−,C−xC−u) Incrementalundo,separatelyrememberedforeachline. revert−line(M−r) Undoallchangesmadetothisline.Thisisliketypingtheundocommandenoughtimes toreturnthelinetoitsinitialstate. tilde−expand(M−˜ ) Performtildeexpansiononthecurrentword. dump−functions Printallofthefunctionsandtheirkeybindingstothereadlineoutputstream.Ifa numericargumentissupplied,theoutputisformattedinsuchawaythatitcanbemade partofaninputrcfile. emacs−editing−mode(C−e) Wheninvieditingmode,thiscausesaswitchtoemacseditingmode. vi−editing−mode(M−C−j) Wheninemacseditingmode,thiscausesaswitchtovieditingmode. DEFAULTKEYBINDINGS Thefollowingisalistofthedefaultemacsandvibindings.Characterswiththe8thbitsetare writtenasM-<character>,andarereferredtoasmetafiedcharacters.TheprintableASCIIchar-actersnotmentionedinthelistofemacsstandardbindingsareboundtotheself−insertfunction, whichjustinsertsthegivencharacterintotheinputline.Inviinsertionmode,allcharactersnot specificallymentionedareboundtoself−insert.Charactersassignedtosignalgenerationby stty(1)ortheterminaldriver,suchasC-ZorC-C,retainthatfunction.Upperandlowercase metafiedcharactersareboundtothesamefunctionintheemacsmodemetakeymap.The remainingcharactersareunbound,whichcausesreadlinetoringthebell(subjecttothesettingof thebell−stylevariable). EmacsMode EmacsStandardbindings "C-A" ->beginning-of-line "C-B" ->backward-char "C-D" ->delete-char "C-E" ->end-of-line "C-F" ->forward-char "C-G" ->abort "C-H" ->backward-delete-char "C-I" ->complete "C-J" ->accept-line "C-K" ->kill-line "C-L" ->clear-screen "C-M" ->accept-line "C-N" ->next-history "C-P" ->previous-history "C-Q" ->quoted-insert "C-R" ->reverse-search-history "C-S" ->forward-search-history "C-T" ->transpose-chars "C-U" ->unix-line-discard "C-V" ->quoted-insert "C-W" ->unix-word-rubout "C-Y" ->yank GNU 1994August18 7 CLISP-READLINE(3) CLISP-READLINE(3) "C-" ->undo ""to"/" ->self-insert "0"to"9" ->self-insert ":"to"˜ " ->self-insert "C-?" ->backward-delete-char EmacsMetabindings "M-C-H" ->backward-kill-word "M-C-I" ->tab-insert "M-C-J" ->vi-editing-mode "M-C-M" ->vi-editing-mode "M-C-R" ->revert-line "M-C-Y" ->yank-nth-arg "M-C-[" ->complete "M-&" ->tilde-expand "M--" ->digit-argument "M-0" ->digit-argument "M-1" ->digit-argument "M-2" ->digit-argument "M-3" ->digit-argument "M-4" ->digit-argument "M-5" ->digit-argument "M-6" ->digit-argument "M-7" ->digit-argument "M-8" ->digit-argument "M-9" ->digit-argument "M-<" ->beginning-of-history "M->" ->end-of-history "M-?" ->possible-completions "M-B" ->backward-word "M-C" ->capitalize-word "M-D" ->kill-word "M-F" ->forward-word "M-L" ->downcase-word "M-N" ->non-incremental-forward-search-history "M-O" ->arrow-key-prefix "M-P" ->non-incremental-reverse-search-history "M-R" ->revert-line "M-T" ->transpose-words "M-U" ->upcase-word "M-Y" ->yank-pop "M-C-Y" ->yank-nth-arg "M-C-?" ->backward-delete-word EmacsControl-Xbindings "C-XC-G" ->abort "C-XC-R" ->re-read-init-file "C-XC-U" ->undo "C-X(" ->start-kbd-macro "C-X)" ->end-kbd-macro "C-Xe" ->call-last-kbd-macro "C-XC-?" ->backward-kill-line GNU 1994August18 8 CLISP-READLINE(3) CLISP-READLINE(3) VIModebindings VIInsertModefunctions "C-D" ->vi-eof-maybe "C-H" ->backward-delete-char "C-I" ->complete "C-J" ->accept-line "C-K" ->kill-line "C-L" ->clear-screen "C-M" ->accept-line "C-N" ->next-history "C-P" ->previous-history "C-Q" ->quoted-insert "C-R" ->reverse-search-history "C-S" ->forward-search-history "C-T" ->transpose-chars "C-U" ->unix-line-discard "C-V" ->quoted-insert "C-W" ->unix-word-rubout "C-Y" ->yank "C-[" ->vi-movement-mode ""to"˜ " ->self-insert "C-?" ->backward-delete-char VICommandModefunctions "C-D" ->vi-eof-maybe "C-E" ->emacs-editing-mode "C-G" ->abort "C-H" ->backward-char "C-J" ->accept-line "C-K" ->kill-line "C-L" ->clear-screen "C-M" ->accept-line "C-N" ->next-history "C-P" ->previous-history "C-Q" ->quoted-insert "C-R" ->reverse-search-history "C-S" ->forward-search-history "C-T" ->transpose-chars "C-U" ->unix-line-discard "C-V" ->quoted-insert "C-W" ->unix-word-rubout "C-Y" ->yank "C-[" ->abort "" ->forward-char "#" ->vi-comment "$" ->end-of-line "%" ->vi-match "&" ->vi-tilde-expand "*" ->vi-complete "+" ->down-history "," ->vi-char-search "-" ->previous-history "." ->vi-redo GNU 1994August18 9 CLISP-READLINE(3) CLISP-READLINE(3) "/" ->vi-search "0" ->beginning-of-line "1"to"9" ->vi-arg-digit ";" ->vi-char-search "=" ->vi-complete "?" ->vi-search "@" ->isundefined "A" ->vi-append-eol "B" ->vi-prev-word "C" ->vi-change-to "D" ->vi-delete-to "E" ->vi-end-word "F" ->vi-char-search "I" ->vi-insert-beg "N" ->vi-search-again "P" ->vi-put "R" ->vi-replace "S" ->vi-subst "T" ->vi-char-search "U" ->revert-line "W" ->vi-next-word "X" ->backward-delete-char "Y" ->vi-yank-to "\" ->vi-complete "ˆ " ->vi-first-print "" ->vi-yank-arg "a" ->vi-append-mode "b" ->vi-prev-word "c" ->vi-change-to "d" ->vi-delete-to "e" ->vi-end-word "f" ->vi-char-search "h" ->backward-char "i" ->vi-insertion-mode "j" ->next-history "k" ->prev-history "l" ->forward-char "n" ->vi-search-again "r" ->vi-change-char "s" ->vi-subst "t" ->vi-char-search "u" ->undo "w" ->vi-next-word "x" ->vi-delete "y" ->vi-yank-to "|" ->vi-column "˜ " ->vi-change-case SEEALSO TheGnuReadlineLibrary,BrianFox TheGnuHistoryLibrary,BrianFox bash(1) FILES GNU 1994August18 10 CLISP-READLINE(3) CLISP-READLINE(3) ˜ /.inputrc Individualreadlineinitializationfile AUTHORS BrianFox,FreeSoftwareFoundation(primaryauthor) bfox@ai.MIT.Edu ChetRamey,CaseWesternReserveUniversity chet@ins.CWRU.Edu BrunoHaible haible@ma2s2.mathematik.uni-karlsruhe.de BUGREPORTS Ifyoufindabuginreadline,youshouldreportit.Sendmailtohaible@ma2s2.mathematik.unikarlsruhe.de. BUGS It’stoobigandtooslow. GNU 1994August18 11