emacs-3 294 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827
  1. This is /home/cyd/emacs/doc/emacs/../../info/emacs, produced by
  2. makeinfo version 4.13 from /home/cyd/emacs/doc/emacs/emacs.texi.
  3. This is the `GNU Emacs Manual', updated for Emacs version 24.2.
  4. Copyright (C) 1985-1987, 1993-2012 Free Software Foundation, Inc.
  5. Permission is granted to copy, distribute and/or modify this
  6. document under the terms of the GNU Free Documentation License,
  7. Version 1.3 or any later version published by the Free Software
  8. Foundation; with the Invariant Sections being "The GNU Manifesto,"
  9. "Distribution" and "GNU GENERAL PUBLIC LICENSE," with the
  10. Front-Cover texts being "A GNU Manual," and with the Back-Cover
  11. Texts as in (a) below. A copy of the license is included in the
  12. section entitled "GNU Free Documentation License."
  13. (a) The FSF's Back-Cover Text is: "You have the freedom to copy and
  14. modify this GNU manual. Buying copies from the FSF supports it in
  15. developing GNU and promoting software freedom."
  16. INFO-DIR-SECTION Emacs
  17. START-INFO-DIR-ENTRY
  18. * Emacs: (emacs). The extensible self-documenting text editor.
  19. END-INFO-DIR-ENTRY
  20. 
  21. File: emacs, Node: Coding Systems, Next: Recognize Coding, Prev: Select Input Method, Up: International
  22. 22.6 Coding Systems
  23. ===================
  24. Users of various languages have established many more-or-less standard
  25. coding systems for representing them. Emacs does not use these coding
  26. systems internally; instead, it converts from various coding systems to
  27. its own system when reading data, and converts the internal coding
  28. system to other coding systems when writing data. Conversion is
  29. possible in reading or writing files, in sending or receiving from the
  30. terminal, and in exchanging data with subprocesses.
  31. Emacs assigns a name to each coding system. Most coding systems are
  32. used for one language, and the name of the coding system starts with
  33. the language name. Some coding systems are used for several languages;
  34. their names usually start with `iso'. There are also special coding
  35. systems, such as `no-conversion', `raw-text', and `emacs-internal'.
  36. A special class of coding systems, collectively known as
  37. "codepages", is designed to support text encoded by MS-Windows and
  38. MS-DOS software. The names of these coding systems are `cpNNNN', where
  39. NNNN is a 3- or 4-digit number of the codepage. You can use these
  40. encodings just like any other coding system; for example, to visit a
  41. file encoded in codepage 850, type `C-x <RET> c cp850 <RET> C-x C-f
  42. FILENAME <RET>'.
  43. In addition to converting various representations of non-ASCII
  44. characters, a coding system can perform end-of-line conversion. Emacs
  45. handles three different conventions for how to separate lines in a file:
  46. newline ("unix"), carriage-return linefeed ("dos"), and just
  47. carriage-return ("mac").
  48. `C-h C CODING <RET>'
  49. Describe coding system CODING (`describe-coding-system').
  50. `C-h C <RET>'
  51. Describe the coding systems currently in use.
  52. `M-x list-coding-systems'
  53. Display a list of all the supported coding systems.
  54. The command `C-h C' (`describe-coding-system') displays information
  55. about particular coding systems, including the end-of-line conversion
  56. specified by those coding systems. You can specify a coding system
  57. name as the argument; alternatively, with an empty argument, it
  58. describes the coding systems currently selected for various purposes,
  59. both in the current buffer and as the defaults, and the priority list
  60. for recognizing coding systems (*note Recognize Coding::).
  61. To display a list of all the supported coding systems, type `M-x
  62. list-coding-systems'. The list gives information about each coding
  63. system, including the letter that stands for it in the mode line (*note
  64. Mode Line::).
  65. Each of the coding systems that appear in this list--except for
  66. `no-conversion', which means no conversion of any kind--specifies how
  67. and whether to convert printing characters, but leaves the choice of
  68. end-of-line conversion to be decided based on the contents of each file.
  69. For example, if the file appears to use the sequence carriage-return
  70. linefeed to separate lines, DOS end-of-line conversion will be used.
  71. Each of the listed coding systems has three variants, which specify
  72. exactly what to do for end-of-line conversion:
  73. `...-unix'
  74. Don't do any end-of-line conversion; assume the file uses newline
  75. to separate lines. (This is the convention normally used on Unix
  76. and GNU systems, and Mac OS X.)
  77. `...-dos'
  78. Assume the file uses carriage-return linefeed to separate lines,
  79. and do the appropriate conversion. (This is the convention
  80. normally used on Microsoft systems.(1))
  81. `...-mac'
  82. Assume the file uses carriage-return to separate lines, and do the
  83. appropriate conversion. (This was the convention used on the
  84. Macintosh system prior to OS X.)
  85. These variant coding systems are omitted from the
  86. `list-coding-systems' display for brevity, since they are entirely
  87. predictable. For example, the coding system `iso-latin-1' has variants
  88. `iso-latin-1-unix', `iso-latin-1-dos' and `iso-latin-1-mac'.
  89. The coding systems `unix', `dos', and `mac' are aliases for
  90. `undecided-unix', `undecided-dos', and `undecided-mac', respectively.
  91. These coding systems specify only the end-of-line conversion, and leave
  92. the character code conversion to be deduced from the text itself.
  93. The coding system `raw-text' is good for a file which is mainly
  94. ASCII text, but may contain byte values above 127 that are not meant to
  95. encode non-ASCII characters. With `raw-text', Emacs copies those byte
  96. values unchanged, and sets `enable-multibyte-characters' to `nil' in
  97. the current buffer so that they will be interpreted properly.
  98. `raw-text' handles end-of-line conversion in the usual way, based on
  99. the data encountered, and has the usual three variants to specify the
  100. kind of end-of-line conversion to use.
  101. In contrast, the coding system `no-conversion' specifies no
  102. character code conversion at all--none for non-ASCII byte values and
  103. none for end of line. This is useful for reading or writing binary
  104. files, tar files, and other files that must be examined verbatim. It,
  105. too, sets `enable-multibyte-characters' to `nil'.
  106. The easiest way to edit a file with no conversion of any kind is with
  107. the `M-x find-file-literally' command. This uses `no-conversion', and
  108. also suppresses other Emacs features that might convert the file
  109. contents before you see them. *Note Visiting::.
  110. The coding system `emacs-internal' (or `utf-8-emacs', which is
  111. equivalent) means that the file contains non-ASCII characters stored
  112. with the internal Emacs encoding. This coding system handles
  113. end-of-line conversion based on the data encountered, and has the usual
  114. three variants to specify the kind of end-of-line conversion.
  115. ---------- Footnotes ----------
  116. (1) It is also specified for MIME `text/*' bodies and in other
  117. network transport contexts. It is different from the SGML reference
  118. syntax record-start/record-end format, which Emacs doesn't support
  119. directly.
  120. 
  121. File: emacs, Node: Recognize Coding, Next: Specify Coding, Prev: Coding Systems, Up: International
  122. 22.7 Recognizing Coding Systems
  123. ===============================
  124. Whenever Emacs reads a given piece of text, it tries to recognize which
  125. coding system to use. This applies to files being read, output from
  126. subprocesses, text from X selections, etc. Emacs can select the right
  127. coding system automatically most of the time--once you have specified
  128. your preferences.
  129. Some coding systems can be recognized or distinguished by which byte
  130. sequences appear in the data. However, there are coding systems that
  131. cannot be distinguished, not even potentially. For example, there is no
  132. way to distinguish between Latin-1 and Latin-2; they use the same byte
  133. values with different meanings.
  134. Emacs handles this situation by means of a priority list of coding
  135. systems. Whenever Emacs reads a file, if you do not specify the coding
  136. system to use, Emacs checks the data against each coding system,
  137. starting with the first in priority and working down the list, until it
  138. finds a coding system that fits the data. Then it converts the file
  139. contents assuming that they are represented in this coding system.
  140. The priority list of coding systems depends on the selected language
  141. environment (*note Language Environments::). For example, if you use
  142. French, you probably want Emacs to prefer Latin-1 to Latin-2; if you use
  143. Czech, you probably want Latin-2 to be preferred. This is one of the
  144. reasons to specify a language environment.
  145. However, you can alter the coding system priority list in detail
  146. with the command `M-x prefer-coding-system'. This command reads the
  147. name of a coding system from the minibuffer, and adds it to the front
  148. of the priority list, so that it is preferred to all others. If you
  149. use this command several times, each use adds one element to the front
  150. of the priority list.
  151. If you use a coding system that specifies the end-of-line conversion
  152. type, such as `iso-8859-1-dos', what this means is that Emacs should
  153. attempt to recognize `iso-8859-1' with priority, and should use DOS
  154. end-of-line conversion when it does recognize `iso-8859-1'.
  155. Sometimes a file name indicates which coding system to use for the
  156. file. The variable `file-coding-system-alist' specifies this
  157. correspondence. There is a special function
  158. `modify-coding-system-alist' for adding elements to this list. For
  159. example, to read and write all `.txt' files using the coding system
  160. `chinese-iso-8bit', you can execute this Lisp expression:
  161. (modify-coding-system-alist 'file "\\.txt\\'" 'chinese-iso-8bit)
  162. The first argument should be `file', the second argument should be a
  163. regular expression that determines which files this applies to, and the
  164. third argument says which coding system to use for these files.
  165. Emacs recognizes which kind of end-of-line conversion to use based on
  166. the contents of the file: if it sees only carriage-returns, or only
  167. carriage-return linefeed sequences, then it chooses the end-of-line
  168. conversion accordingly. You can inhibit the automatic use of
  169. end-of-line conversion by setting the variable `inhibit-eol-conversion'
  170. to non-`nil'. If you do that, DOS-style files will be displayed with
  171. the `^M' characters visible in the buffer; some people prefer this to
  172. the more subtle `(DOS)' end-of-line type indication near the left edge
  173. of the mode line (*note eol-mnemonic: Mode Line.).
  174. By default, the automatic detection of coding system is sensitive to
  175. escape sequences. If Emacs sees a sequence of characters that begin
  176. with an escape character, and the sequence is valid as an ISO-2022
  177. code, that tells Emacs to use one of the ISO-2022 encodings to decode
  178. the file.
  179. However, there may be cases that you want to read escape sequences
  180. in a file as is. In such a case, you can set the variable
  181. `inhibit-iso-escape-detection' to non-`nil'. Then the code detection
  182. ignores any escape sequences, and never uses an ISO-2022 encoding. The
  183. result is that all escape sequences become visible in the buffer.
  184. The default value of `inhibit-iso-escape-detection' is `nil'. We
  185. recommend that you not change it permanently, only for one specific
  186. operation. That's because some Emacs Lisp source files in the Emacs
  187. distribution contain non-ASCII characters encoded in the coding system
  188. `iso-2022-7bit', and they won't be decoded correctly when you visit
  189. those files if you suppress the escape sequence detection.
  190. The variables `auto-coding-alist' and `auto-coding-regexp-alist' are
  191. the strongest way to specify the coding system for certain patterns of
  192. file names, or for files containing certain patterns, respectively.
  193. These variables even override `-*-coding:-*-' tags in the file itself
  194. (*note Specify Coding::). For example, Emacs uses `auto-coding-alist'
  195. for tar and archive files, to prevent it from being confused by a
  196. `-*-coding:-*-' tag in a member of the archive and thinking it applies
  197. to the archive file as a whole.
  198. Another way to specify a coding system is with the variable
  199. `auto-coding-functions'. For example, one of the builtin
  200. `auto-coding-functions' detects the encoding for XML files. Unlike the
  201. previous two, this variable does not override any `-*-coding:-*-' tag.
  202. When you get new mail in Rmail, each message is translated
  203. automatically from the coding system it is written in, as if it were a
  204. separate file. This uses the priority list of coding systems that you
  205. have specified. If a MIME message specifies a character set, Rmail
  206. obeys that specification. For reading and saving Rmail files
  207. themselves, Emacs uses the coding system specified by the variable
  208. `rmail-file-coding-system'. The default value is `nil', which means
  209. that Rmail files are not translated (they are read and written in the
  210. Emacs internal character code).
  211. 
  212. File: emacs, Node: Specify Coding, Next: Output Coding, Prev: Recognize Coding, Up: International
  213. 22.8 Specifying a File's Coding System
  214. ======================================
  215. If Emacs recognizes the encoding of a file incorrectly, you can reread
  216. the file using the correct coding system with `C-x <RET> r'
  217. (`revert-buffer-with-coding-system'). This command prompts for the
  218. coding system to use. To see what coding system Emacs actually used to
  219. decode the file, look at the coding system mnemonic letter near the
  220. left edge of the mode line (*note Mode Line::), or type `C-h C'
  221. (`describe-coding-system').
  222. You can specify the coding system for a particular file in the file
  223. itself, using the `-*-...-*-' construct at the beginning, or a local
  224. variables list at the end (*note File Variables::). You do this by
  225. defining a value for the "variable" named `coding'. Emacs does not
  226. really have a variable `coding'; instead of setting a variable, this
  227. uses the specified coding system for the file. For example, `-*-mode:
  228. C; coding: latin-1;-*-' specifies use of the Latin-1 coding system, as
  229. well as C mode. When you specify the coding explicitly in the file,
  230. that overrides `file-coding-system-alist'.
  231. 
  232. File: emacs, Node: Output Coding, Next: Text Coding, Prev: Specify Coding, Up: International
  233. 22.9 Choosing Coding Systems for Output
  234. =======================================
  235. Once Emacs has chosen a coding system for a buffer, it stores that
  236. coding system in `buffer-file-coding-system'. That makes it the
  237. default for operations that write from this buffer into a file, such as
  238. `save-buffer' and `write-region'. You can specify a different coding
  239. system for further file output from the buffer using
  240. `set-buffer-file-coding-system' (*note Text Coding::).
  241. You can insert any character Emacs supports into any Emacs buffer,
  242. but most coding systems can only handle a subset of these characters.
  243. Therefore, it's possible that the characters you insert cannot be
  244. encoded with the coding system that will be used to save the buffer.
  245. For example, you could visit a text file in Polish, encoded in
  246. `iso-8859-2', and add some Russian words to it. When you save that
  247. buffer, Emacs cannot use the current value of
  248. `buffer-file-coding-system', because the characters you added cannot be
  249. encoded by that coding system.
  250. When that happens, Emacs tries the most-preferred coding system (set
  251. by `M-x prefer-coding-system' or `M-x set-language-environment'). If
  252. that coding system can safely encode all of the characters in the
  253. buffer, Emacs uses it, and stores its value in
  254. `buffer-file-coding-system'. Otherwise, Emacs displays a list of
  255. coding systems suitable for encoding the buffer's contents, and asks
  256. you to choose one of those coding systems.
  257. If you insert the unsuitable characters in a mail message, Emacs
  258. behaves a bit differently. It additionally checks whether the
  259. most-preferred coding system is recommended for use in MIME messages;
  260. if not, it informs you of this fact and prompts you for another coding
  261. system. This is so you won't inadvertently send a message encoded in a
  262. way that your recipient's mail software will have difficulty decoding.
  263. (You can still use an unsuitable coding system if you enter its name at
  264. the prompt.)
  265. When you send a mail message (*note Sending Mail::), Emacs has four
  266. different ways to determine the coding system to use for encoding the
  267. message text. It tries the buffer's own value of
  268. `buffer-file-coding-system', if that is non-`nil'. Otherwise, it uses
  269. the value of `sendmail-coding-system', if that is non-`nil'. The third
  270. way is to use the default coding system for new files, which is
  271. controlled by your choice of language environment, if that is
  272. non-`nil'. If all of these three values are `nil', Emacs encodes
  273. outgoing mail using the Latin-1 coding system.
  274. 
  275. File: emacs, Node: Text Coding, Next: Communication Coding, Prev: Output Coding, Up: International
  276. 22.10 Specifying a Coding System for File Text
  277. ==============================================
  278. In cases where Emacs does not automatically choose the right coding
  279. system for a file's contents, you can use these commands to specify one:
  280. `C-x <RET> f CODING <RET>'
  281. Use coding system CODING to save or revisit the file in the
  282. current buffer (`set-buffer-file-coding-system').
  283. `C-x <RET> c CODING <RET>'
  284. Specify coding system CODING for the immediately following command
  285. (`universal-coding-system-argument').
  286. `C-x <RET> r CODING <RET>'
  287. Revisit the current file using the coding system CODING
  288. (`revert-buffer-with-coding-system').
  289. `M-x recode-region <RET> RIGHT <RET> WRONG <RET>'
  290. Convert a region that was decoded using coding system WRONG,
  291. decoding it using coding system RIGHT instead.
  292. The command `C-x <RET> f' (`set-buffer-file-coding-system') sets the
  293. file coding system for the current buffer--in other words, it says
  294. which coding system to use when saving or reverting the visited file.
  295. You specify which coding system using the minibuffer. If you specify a
  296. coding system that cannot handle all of the characters in the buffer,
  297. Emacs warns you about the troublesome characters when you actually save
  298. the buffer.
  299. You can also use this command to specify the end-of-line conversion
  300. (*note end-of-line conversion: Coding Systems.) for encoding the
  301. current buffer. For example, `C-x <RET> f dos <RET>' will cause Emacs
  302. to save the current buffer's text with DOS-style carriage-return
  303. linefeed line endings.
  304. Another way to specify the coding system for a file is when you visit
  305. the file. First use the command `C-x <RET> c'
  306. (`universal-coding-system-argument'); this command uses the minibuffer
  307. to read a coding system name. After you exit the minibuffer, the
  308. specified coding system is used for _the immediately following command_.
  309. So if the immediately following command is `C-x C-f', for example,
  310. it reads the file using that coding system (and records the coding
  311. system for when you later save the file). Or if the immediately
  312. following command is `C-x C-w', it writes the file using that coding
  313. system. When you specify the coding system for saving in this way,
  314. instead of with `C-x <RET> f', there is no warning if the buffer
  315. contains characters that the coding system cannot handle.
  316. Other file commands affected by a specified coding system include
  317. `C-x i' and `C-x C-v', as well as the other-window variants of `C-x
  318. C-f'. `C-x <RET> c' also affects commands that start subprocesses,
  319. including `M-x shell' (*note Shell::). If the immediately following
  320. command does not use the coding system, then `C-x <RET> c' ultimately
  321. has no effect.
  322. An easy way to visit a file with no conversion is with the `M-x
  323. find-file-literally' command. *Note Visiting::.
  324. The default value of the variable `buffer-file-coding-system'
  325. specifies the choice of coding system to use when you create a new file.
  326. It applies when you find a new file, and when you create a buffer and
  327. then save it in a file. Selecting a language environment typically sets
  328. this variable to a good choice of default coding system for that
  329. language environment.
  330. If you visit a file with a wrong coding system, you can correct this
  331. with `C-x <RET> r' (`revert-buffer-with-coding-system'). This visits
  332. the current file again, using a coding system you specify.
  333. If a piece of text has already been inserted into a buffer using the
  334. wrong coding system, you can redo the decoding of it using `M-x
  335. recode-region'. This prompts you for the proper coding system, then
  336. for the wrong coding system that was actually used, and does the
  337. conversion. It first encodes the region using the wrong coding system,
  338. then decodes it again using the proper coding system.
  339. 
  340. File: emacs, Node: Communication Coding, Next: File Name Coding, Prev: Text Coding, Up: International
  341. 22.11 Coding Systems for Interprocess Communication
  342. ===================================================
  343. This section explains how to specify coding systems for use in
  344. communication with other processes.
  345. `C-x <RET> x CODING <RET>'
  346. Use coding system CODING for transferring selections to and from
  347. other graphical applications (`set-selection-coding-system').
  348. `C-x <RET> X CODING <RET>'
  349. Use coding system CODING for transferring _one_ selection--the
  350. next one--to or from another graphical application
  351. (`set-next-selection-coding-system').
  352. `C-x <RET> p INPUT-CODING <RET> OUTPUT-CODING <RET>'
  353. Use coding systems INPUT-CODING and OUTPUT-CODING for subprocess
  354. input and output in the current buffer
  355. (`set-buffer-process-coding-system').
  356. The command `C-x <RET> x' (`set-selection-coding-system') specifies
  357. the coding system for sending selected text to other windowing
  358. applications, and for receiving the text of selections made in other
  359. applications. This command applies to all subsequent selections, until
  360. you override it by using the command again. The command `C-x <RET> X'
  361. (`set-next-selection-coding-system') specifies the coding system for
  362. the next selection made in Emacs or read by Emacs.
  363. The variable `x-select-request-type' specifies the data type to
  364. request from the X Window System for receiving text selections from
  365. other applications. If the value is `nil' (the default), Emacs tries
  366. `UTF8_STRING' and `COMPOUND_TEXT', in this order, and uses various
  367. heuristics to choose the more appropriate of the two results; if none
  368. of these succeed, Emacs falls back on `STRING'. If the value of
  369. `x-select-request-type' is one of the symbols `COMPOUND_TEXT',
  370. `UTF8_STRING', `STRING', or `TEXT', Emacs uses only that request type.
  371. If the value is a list of some of these symbols, Emacs tries only the
  372. request types in the list, in order, until one of them succeeds, or
  373. until the list is exhausted.
  374. The command `C-x <RET> p' (`set-buffer-process-coding-system')
  375. specifies the coding system for input and output to a subprocess. This
  376. command applies to the current buffer; normally, each subprocess has its
  377. own buffer, and thus you can use this command to specify translation to
  378. and from a particular subprocess by giving the command in the
  379. corresponding buffer.
  380. You can also use `C-x <RET> c' (`universal-coding-system-argument')
  381. just before the command that runs or starts a subprocess, to specify
  382. the coding system for communicating with that subprocess. *Note Text
  383. Coding::.
  384. The default for translation of process input and output depends on
  385. the current language environment.
  386. The variable `locale-coding-system' specifies a coding system to use
  387. when encoding and decoding system strings such as system error messages
  388. and `format-time-string' formats and time stamps. That coding system
  389. is also used for decoding non-ASCII keyboard input on the X Window
  390. System. You should choose a coding system that is compatible with the
  391. underlying system's text representation, which is normally specified by
  392. one of the environment variables `LC_ALL', `LC_CTYPE', and `LANG'.
  393. (The first one, in the order specified above, whose value is nonempty
  394. is the one that determines the text representation.)
  395. 
  396. File: emacs, Node: File Name Coding, Next: Terminal Coding, Prev: Communication Coding, Up: International
  397. 22.12 Coding Systems for File Names
  398. ===================================
  399. `C-x <RET> F CODING <RET>'
  400. Use coding system CODING for encoding and decoding file names
  401. (`set-file-name-coding-system').
  402. The command `C-x <RET> F' (`set-file-name-coding-system') specifies
  403. a coding system to use for encoding file _names_. It has no effect on
  404. reading and writing the _contents_ of files.
  405. In fact, all this command does is set the value of the variable
  406. `file-name-coding-system'. If you set the variable to a coding system
  407. name (as a Lisp symbol or a string), Emacs encodes file names using
  408. that coding system for all file operations. This makes it possible to
  409. use non-ASCII characters in file names--or, at least, those non-ASCII
  410. characters that the specified coding system can encode.
  411. If `file-name-coding-system' is `nil', Emacs uses a default coding
  412. system determined by the selected language environment, and stored in
  413. the `default-file-name-coding-system' variable. In the default
  414. language environment, non-ASCII characters in file names are not
  415. encoded specially; they appear in the file system using the internal
  416. Emacs representation.
  417. *Warning:* if you change `file-name-coding-system' (or the language
  418. environment) in the middle of an Emacs session, problems can result if
  419. you have already visited files whose names were encoded using the
  420. earlier coding system and cannot be encoded (or are encoded
  421. differently) under the new coding system. If you try to save one of
  422. these buffers under the visited file name, saving may use the wrong file
  423. name, or it may encounter an error. If such a problem happens, use `C-x
  424. C-w' to specify a new file name for that buffer.
  425. If a mistake occurs when encoding a file name, use the command `M-x
  426. recode-file-name' to change the file name's coding system. This
  427. prompts for an existing file name, its old coding system, and the
  428. coding system to which you wish to convert.
  429. 
  430. File: emacs, Node: Terminal Coding, Next: Fontsets, Prev: File Name Coding, Up: International
  431. 22.13 Coding Systems for Terminal I/O
  432. =====================================
  433. `C-x <RET> t CODING <RET>'
  434. Use coding system CODING for terminal output
  435. (`set-terminal-coding-system').
  436. `C-x <RET> k CODING <RET>'
  437. Use coding system CODING for keyboard input
  438. (`set-keyboard-coding-system').
  439. The command `C-x <RET> t' (`set-terminal-coding-system') specifies
  440. the coding system for terminal output. If you specify a character code
  441. for terminal output, all characters output to the terminal are
  442. translated into that coding system.
  443. This feature is useful for certain character-only terminals built to
  444. support specific languages or character sets--for example, European
  445. terminals that support one of the ISO Latin character sets. You need to
  446. specify the terminal coding system when using multibyte text, so that
  447. Emacs knows which characters the terminal can actually handle.
  448. By default, output to the terminal is not translated at all, unless
  449. Emacs can deduce the proper coding system from your terminal type or
  450. your locale specification (*note Language Environments::).
  451. The command `C-x <RET> k' (`set-keyboard-coding-system'), or the
  452. variable `keyboard-coding-system', specifies the coding system for
  453. keyboard input. Character-code translation of keyboard input is useful
  454. for terminals with keys that send non-ASCII graphic characters--for
  455. example, some terminals designed for ISO Latin-1 or subsets of it.
  456. By default, keyboard input is translated based on your system locale
  457. setting. If your terminal does not really support the encoding implied
  458. by your locale (for example, if you find it inserts a non-ASCII
  459. character if you type `M-i'), you will need to set
  460. `keyboard-coding-system' to `nil' to turn off encoding. You can do
  461. this by putting
  462. (set-keyboard-coding-system nil)
  463. in your init file.
  464. There is a similarity between using a coding system translation for
  465. keyboard input, and using an input method: both define sequences of
  466. keyboard input that translate into single characters. However, input
  467. methods are designed to be convenient for interactive use by humans, and
  468. the sequences that are translated are typically sequences of ASCII
  469. printing characters. Coding systems typically translate sequences of
  470. non-graphic characters.
  471. 
  472. File: emacs, Node: Fontsets, Next: Defining Fontsets, Prev: Terminal Coding, Up: International
  473. 22.14 Fontsets
  474. ==============
  475. A font typically defines shapes for a single alphabet or script.
  476. Therefore, displaying the entire range of scripts that Emacs supports
  477. requires a collection of many fonts. In Emacs, such a collection is
  478. called a "fontset". A fontset is defined by a list of font
  479. specifications, each assigned to handle a range of character codes, and
  480. may fall back on another fontset for characters that are not covered by
  481. the fonts it specifies.
  482. Each fontset has a name, like a font. However, while fonts are
  483. stored in the system and the available font names are defined by the
  484. system, fontsets are defined within Emacs itself. Once you have
  485. defined a fontset, you can use it within Emacs by specifying its name,
  486. anywhere that you could use a single font. Of course, Emacs fontsets
  487. can use only the fonts that the system supports. If some characters
  488. appear on the screen as empty boxes or hex codes, this means that the
  489. fontset in use for them has no font for those characters. In this
  490. case, or if the characters are shown, but not as well as you would
  491. like, you may need to install extra fonts. Your operating system may
  492. have optional fonts that you can install; or you can install the GNU
  493. Intlfonts package, which includes fonts for most supported scripts.(1)
  494. Emacs creates three fontsets automatically: the "standard fontset",
  495. the "startup fontset" and the "default fontset". The default fontset
  496. is most likely to have fonts for a wide variety of non-ASCII
  497. characters, and is the default fallback for the other two fontsets, and
  498. if you set a default font rather than fontset. However, it does not
  499. specify font family names, so results can be somewhat random if you use
  500. it directly. You can specify use of a particular fontset by starting
  501. Emacs with the `-fn' option. For example,
  502. emacs -fn fontset-standard
  503. You can also specify a fontset with the `Font' resource (*note X
  504. Resources::).
  505. If no fontset is specified for use, then Emacs uses an ASCII font,
  506. with `fontset-default' as a fallback for characters the font does not
  507. cover. The standard fontset is only used if explicitly requested,
  508. despite its name.
  509. A fontset does not necessarily specify a font for every character
  510. code. If a fontset specifies no font for a certain character, or if it
  511. specifies a font that does not exist on your system, then it cannot
  512. display that character properly. It will display that character as a
  513. hex code or thin space or an empty box instead. (*Note glyphless
  514. characters: Text Display, for details.)
  515. ---------- Footnotes ----------
  516. (1) If you run Emacs on X, you may need to inform the X server about
  517. the location of the newly installed fonts with commands such as:
  518. xset fp+ /usr/local/share/emacs/fonts
  519. xset fp rehash
  520. 
  521. File: emacs, Node: Defining Fontsets, Next: Modifying Fontsets, Prev: Fontsets, Up: International
  522. 22.15 Defining fontsets
  523. =======================
  524. When running on X, Emacs creates a standard fontset automatically
  525. according to the value of `standard-fontset-spec'. This fontset's name
  526. is
  527. -*-fixed-medium-r-normal-*-16-*-*-*-*-*-fontset-standard
  528. or just `fontset-standard' for short.
  529. On GNUstep and Mac OS X, the standard fontset is created using the
  530. value of `ns-standard-fontset-spec', and on MS Windows it is created
  531. using the value of `w32-standard-fontset-spec'.
  532. Bold, italic, and bold-italic variants of the standard fontset are
  533. created automatically. Their names have `bold' instead of `medium', or
  534. `i' instead of `r', or both.
  535. Emacs generates a fontset automatically, based on any default ASCII
  536. font that you specify with the `Font' resource or the `-fn' argument,
  537. or the default font that Emacs found when it started. This is the
  538. "startup fontset" and its name is `fontset-startup'. It does this by
  539. replacing the CHARSET_REGISTRY field with `fontset', and replacing
  540. CHARSET_ENCODING field with `startup', then using the resulting string
  541. to specify a fontset.
  542. For instance, if you start Emacs with a font of this form,
  543. emacs -fn "*courier-medium-r-normal--14-140-*-iso8859-1"
  544. Emacs generates the following fontset and uses it for the initial X
  545. window frame:
  546. -*-courier-medium-r-normal-*-14-140-*-*-*-*-fontset-startup
  547. The startup fontset will use the font that you specify, or a variant
  548. with a different registry and encoding, for all the characters that are
  549. supported by that font, and fallback on `fontset-default' for other
  550. characters.
  551. With the X resource `Emacs.Font', you can specify a fontset name
  552. just like an actual font name. But be careful not to specify a fontset
  553. name in a wildcard resource like `Emacs*Font'--that wildcard
  554. specification matches various other resources, such as for menus, and
  555. menus cannot handle fontsets. *Note X Resources::.
  556. You can specify additional fontsets using X resources named
  557. `Fontset-N', where N is an integer starting from 0. The resource value
  558. should have this form:
  559. FONTPATTERN, [CHARSET:FONT]...
  560. FONTPATTERN should have the form of a standard X font name (see the
  561. previous fontset-startup example), except for the last two fields.
  562. They should have the form `fontset-ALIAS'.
  563. The fontset has two names, one long and one short. The long name is
  564. FONTPATTERN. The short name is `fontset-ALIAS'. You can refer to the
  565. fontset by either name.
  566. The construct `CHARSET:FONT' specifies which font to use (in this
  567. fontset) for one particular character set. Here, CHARSET is the name
  568. of a character set, and FONT is the font to use for that character set.
  569. You can use this construct any number of times in defining one fontset.
  570. For the other character sets, Emacs chooses a font based on
  571. FONTPATTERN. It replaces `fontset-ALIAS' with values that describe the
  572. character set. For the ASCII character font, `fontset-ALIAS' is
  573. replaced with `ISO8859-1'.
  574. In addition, when several consecutive fields are wildcards, Emacs
  575. collapses them into a single wildcard. This is to prevent use of
  576. auto-scaled fonts. Fonts made by scaling larger fonts are not usable
  577. for editing, and scaling a smaller font is not also useful, because it
  578. is better to use the smaller font in its own size, which is what Emacs
  579. does.
  580. Thus if FONTPATTERN is this,
  581. -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24
  582. the font specification for ASCII characters would be this:
  583. -*-fixed-medium-r-normal-*-24-*-ISO8859-1
  584. and the font specification for Chinese GB2312 characters would be this:
  585. -*-fixed-medium-r-normal-*-24-*-gb2312*-*
  586. You may not have any Chinese font matching the above font
  587. specification. Most X distributions include only Chinese fonts that
  588. have `song ti' or `fangsong ti' in the FAMILY field. In such a case,
  589. `Fontset-N' can be specified as:
  590. Emacs.Fontset-0: -*-fixed-medium-r-normal-*-24-*-*-*-*-*-fontset-24,\
  591. chinese-gb2312:-*-*-medium-r-normal-*-24-*-gb2312*-*
  592. Then, the font specifications for all but Chinese GB2312 characters have
  593. `fixed' in the FAMILY field, and the font specification for Chinese
  594. GB2312 characters has a wild card `*' in the FAMILY field.
  595. The function that processes the fontset resource value to create the
  596. fontset is called `create-fontset-from-fontset-spec'. You can also
  597. call this function explicitly to create a fontset.
  598. *Note Fonts::, for more information about font naming.
  599. 
  600. File: emacs, Node: Modifying Fontsets, Next: Undisplayable Characters, Prev: Defining Fontsets, Up: International
  601. 22.16 Modifying Fontsets
  602. ========================
  603. Fontsets do not always have to be created from scratch. If only minor
  604. changes are required it may be easier to modify an existing fontset.
  605. Modifying `fontset-default' will also affect other fontsets that use it
  606. as a fallback, so can be an effective way of fixing problems with the
  607. fonts that Emacs chooses for a particular script.
  608. Fontsets can be modified using the function `set-fontset-font',
  609. specifying a character, a charset, a script, or a range of characters
  610. to modify the font for, and a font specification for the font to be
  611. used. Some examples are:
  612. ;; Use Liberation Mono for latin-3 charset.
  613. (set-fontset-font "fontset-default" 'iso-8859-3
  614. "Liberation Mono")
  615. ;; Prefer a big5 font for han characters
  616. (set-fontset-font "fontset-default"
  617. 'han (font-spec :registry "big5")
  618. nil 'prepend)
  619. ;; Use DejaVu Sans Mono as a fallback in fontset-startup
  620. ;; before resorting to fontset-default.
  621. (set-fontset-font "fontset-startup" nil "DejaVu Sans Mono"
  622. nil 'append)
  623. ;; Use MyPrivateFont for the Unicode private use area.
  624. (set-fontset-font "fontset-default" '(#xe000 . #xf8ff)
  625. "MyPrivateFont")
  626. 
  627. File: emacs, Node: Undisplayable Characters, Next: Unibyte Mode, Prev: Modifying Fontsets, Up: International
  628. 22.17 Undisplayable Characters
  629. ==============================
  630. There may be some non-ASCII characters that your terminal cannot
  631. display. Most text terminals support just a single character set (use
  632. the variable `default-terminal-coding-system' to tell Emacs which one,
  633. *note Terminal Coding::); characters that can't be encoded in that
  634. coding system are displayed as `?' by default.
  635. Graphical displays can display a broader range of characters, but
  636. you may not have fonts installed for all of them; characters that have
  637. no font appear as a hollow box.
  638. If you use Latin-1 characters but your terminal can't display
  639. Latin-1, you can arrange to display mnemonic ASCII sequences instead,
  640. e.g. `"o' for o-umlaut. Load the library `iso-ascii' to do this.
  641. If your terminal can display Latin-1, you can display characters
  642. from other European character sets using a mixture of equivalent
  643. Latin-1 characters and ASCII mnemonics. Customize the variable
  644. `latin1-display' to enable this. The mnemonic ASCII sequences mostly
  645. correspond to those of the prefix input methods.
  646. 
  647. File: emacs, Node: Unibyte Mode, Next: Charsets, Prev: Undisplayable Characters, Up: International
  648. 22.18 Unibyte Editing Mode
  649. ==========================
  650. The ISO 8859 Latin-N character sets define character codes in the range
  651. 0240 to 0377 octal (160 to 255 decimal) to handle the accented letters
  652. and punctuation needed by various European languages (and some
  653. non-European ones). Note that Emacs considers bytes with codes in this
  654. range as raw bytes, not as characters, even in a unibyte buffer, i.e.
  655. if you disable multibyte characters. However, Emacs can still handle
  656. these character codes as if they belonged to _one_ of the single-byte
  657. character sets at a time. To specify _which_ of these codes to use,
  658. invoke `M-x set-language-environment' and specify a suitable language
  659. environment such as `Latin-N'.
  660. For more information about unibyte operation, see *note Disabling
  661. Multibyte::.
  662. Emacs can also display bytes in the range 160 to 255 as readable
  663. characters, provided the terminal or font in use supports them. This
  664. works automatically. On a graphical display, Emacs can also display
  665. single-byte characters through fontsets, in effect by displaying the
  666. equivalent multibyte characters according to the current language
  667. environment. To request this, set the variable
  668. `unibyte-display-via-language-environment' to a non-`nil' value. Note
  669. that setting this only affects how these bytes are displayed, but does
  670. not change the fundamental fact that Emacs treats them as raw bytes,
  671. not as characters.
  672. If your terminal does not support display of the Latin-1 character
  673. set, Emacs can display these characters as ASCII sequences which at
  674. least give you a clear idea of what the characters are. To do this,
  675. load the library `iso-ascii'. Similar libraries for other Latin-N
  676. character sets could be implemented, but have not been so far.
  677. Normally non-ISO-8859 characters (decimal codes between 128 and 159
  678. inclusive) are displayed as octal escapes. You can change this for
  679. non-standard "extended" versions of ISO-8859 character sets by using the
  680. function `standard-display-8bit' in the `disp-table' library.
  681. There are two ways to input single-byte non-ASCII characters:
  682. * You can use an input method for the selected language environment.
  683. *Note Input Methods::. When you use an input method in a unibyte
  684. buffer, the non-ASCII character you specify with it is converted
  685. to unibyte.
  686. * If your keyboard can generate character codes 128 (decimal) and up,
  687. representing non-ASCII characters, you can type those character
  688. codes directly.
  689. On a graphical display, you should not need to do anything special
  690. to use these keys; they should simply work. On a text terminal,
  691. you should use the command `M-x set-keyboard-coding-system' or
  692. customize the variable `keyboard-coding-system' to specify which
  693. coding system your keyboard uses (*note Terminal Coding::).
  694. Enabling this feature will probably require you to use `ESC' to
  695. type Meta characters; however, on a console terminal or in
  696. `xterm', you can arrange for Meta to be converted to `ESC' and
  697. still be able type 8-bit characters present directly on the
  698. keyboard or using `Compose' or `AltGr' keys. *Note User Input::.
  699. * For Latin-1 only, you can use the key `C-x 8' as a "compose
  700. character" prefix for entry of non-ASCII Latin-1 printing
  701. characters. `C-x 8' is good for insertion (in the minibuffer as
  702. well as other buffers), for searching, and in any other context
  703. where a key sequence is allowed.
  704. `C-x 8' works by loading the `iso-transl' library. Once that
  705. library is loaded, the <ALT> modifier key, if the keyboard has
  706. one, serves the same purpose as `C-x 8': use <ALT> together with
  707. an accent character to modify the following letter. In addition,
  708. if the keyboard has keys for the Latin-1 "dead accent characters",
  709. they too are defined to compose with the following character, once
  710. `iso-transl' is loaded.
  711. Use `C-x 8 C-h' to list all the available `C-x 8' translations.
  712. 
  713. File: emacs, Node: Charsets, Next: Bidirectional Editing, Prev: Unibyte Mode, Up: International
  714. 22.19 Charsets
  715. ==============
  716. In Emacs, "charset" is short for "character set". Emacs supports most
  717. popular charsets (such as `ascii', `iso-8859-1', `cp1250', `big5', and
  718. `unicode'), in addition to some charsets of its own (such as `emacs',
  719. `unicode-bmp', and `eight-bit'). All supported characters belong to
  720. one or more charsets.
  721. Emacs normally "does the right thing" with respect to charsets, so
  722. that you don't have to worry about them. However, it is sometimes
  723. helpful to know some of the underlying details about charsets.
  724. One example is font selection (*note Fonts::). Each language
  725. environment (*note Language Environments::) defines a "priority list"
  726. for the various charsets. When searching for a font, Emacs initially
  727. attempts to find one that can display the highest-priority charsets.
  728. For instance, in the Japanese language environment, the charset
  729. `japanese-jisx0208' has the highest priority, so Emacs tries to use a
  730. font whose `registry' property is `JISX0208.1983-0'.
  731. There are two commands that can be used to obtain information about
  732. charsets. The command `M-x list-charset-chars' prompts for a charset
  733. name, and displays all the characters in that character set. The
  734. command `M-x describe-character-set' prompts for a charset name, and
  735. displays information about that charset, including its internal
  736. representation within Emacs.
  737. `M-x list-character-sets' displays a list of all supported charsets.
  738. The list gives the names of charsets and additional information to
  739. identity each charset; see the International Register of Coded
  740. Character Sets (http://www.itscj.ipsj.or.jp/ISO-IR/) for more details.
  741. In this list, charsets are divided into two categories: "normal
  742. charsets" are listed first, followed by "supplementary charsets". A
  743. supplementary charset is one that is used to define another charset (as
  744. a parent or a subset), or to provide backward-compatibility for older
  745. Emacs versions.
  746. To find out which charset a character in the buffer belongs to, put
  747. point before it and type `C-u C-x =' (*note International Chars::).
  748. 
  749. File: emacs, Node: Bidirectional Editing, Prev: Charsets, Up: International
  750. 22.20 Bidirectional Editing
  751. ===========================
  752. Emacs supports editing text written in scripts, such as Arabic and
  753. Hebrew, whose natural ordering of horizontal text for display is from
  754. right to left. However, digits and Latin text embedded in these
  755. scripts are still displayed left to right. It is also not uncommon to
  756. have small portions of text in Arabic or Hebrew embedded in an otherwise
  757. Latin document; e.g., as comments and strings in a program source file.
  758. For these reasons, text that uses these scripts is actually
  759. "bidirectional": a mixture of runs of left-to-right and right-to-left
  760. characters.
  761. This section describes the facilities and options provided by Emacs
  762. for editing bidirectional text.
  763. Emacs stores right-to-left and bidirectional text in the so-called
  764. "logical" (or "reading") order: the buffer or string position of the
  765. first character you read precedes that of the next character.
  766. Reordering of bidirectional text into the "visual" order happens at
  767. display time. As result, character positions no longer increase
  768. monotonically with their positions on display. Emacs implements the
  769. Unicode Bidirectional Algorithm described in the Unicode Standard Annex
  770. #9, for reordering of bidirectional text for display.
  771. The buffer-local variable `bidi-display-reordering' controls whether
  772. text in the buffer is reordered for display. If its value is
  773. non-`nil', Emacs reorders characters that have right-to-left
  774. directionality when they are displayed. The default value is `t'.
  775. Each paragraph of bidirectional text can have its own "base
  776. direction", either right-to-left or left-to-right. (Paragraph
  777. boundaries are empty lines, i.e. lines consisting entirely of
  778. whitespace characters.) Text in left-to-right paragraphs begins on the
  779. screen at the left margin of the window and is truncated or continued
  780. when it reaches the right margin. By contrast, text in right-to-left
  781. paragraphs is displayed starting at the right margin and is continued
  782. or truncated at the left margin.
  783. Emacs determines the base direction of each paragraph dynamically,
  784. based on the text at the beginning of the paragraph. However,
  785. sometimes a buffer may need to force a certain base direction for its
  786. paragraphs. The variable `bidi-paragraph-direction', if non-`nil',
  787. disables the dynamic determination of the base direction, and instead
  788. forces all paragraphs in the buffer to have the direction specified by
  789. its buffer-local value. The value can be either `right-to-left' or
  790. `left-to-right'. Any other value is interpreted as `nil'.
  791. Alternatively, you can control the base direction of a paragraph by
  792. inserting special formatting characters in front of the paragraph. The
  793. special character `RIGHT-TO-LEFT MARK', or RLM, forces the
  794. right-to-left direction on the following paragraph, while
  795. `LEFT-TO-RIGHT MARK', or LRM forces the left-to-right direction. (You
  796. can use `C-x 8 RET' to insert these characters.) In a GUI session, the
  797. LRM and RLM characters display as very thin blank characters; on text
  798. terminals they display as blanks.
  799. Because characters are reordered for display, Emacs commands that
  800. operate in the logical order or on stretches of buffer positions may
  801. produce unusual effects. For example, `C-f' and `C-b' commands move
  802. point in the logical order, so the cursor will sometimes jump when
  803. point traverses reordered bidirectional text. Similarly, a highlighted
  804. region covering a contiguous range of character positions may look
  805. discontinuous if the region spans reordered text. This is normal and
  806. similar to the behavior of other programs that support bidirectional
  807. text.
  808. 
  809. File: emacs, Node: Modes, Next: Indentation, Prev: International, Up: Top
  810. 23 Major and Minor Modes
  811. ************************
  812. Emacs contains many "editing modes" that alter its basic behavior in
  813. useful ways. These are divided into "major modes" and "minor modes".
  814. Major modes provide specialized facilities for working on a
  815. particular file type, such as a C source file (*note Programs::), or a
  816. particular type of non-file buffer, such as a shell buffer (*note
  817. Shell::). Major modes are mutually exclusive; each buffer has one and
  818. only one major mode at any time.
  819. Minor modes are optional features which you can turn on or off, not
  820. necessarily specific to a type of file or buffer. For example, Auto
  821. Fill mode is a minor mode in which <SPC> breaks lines between words as
  822. you type (*note Auto Fill::). Minor modes are independent of one
  823. another, and of the selected major mode.
  824. * Menu:
  825. * Major Modes:: Text mode vs. Lisp mode vs. C mode...
  826. * Minor Modes:: Each minor mode is a feature you can turn on
  827. independently of any others.
  828. * Choosing Modes:: How modes are chosen when visiting files.
  829. 
  830. File: emacs, Node: Major Modes, Next: Minor Modes, Up: Modes
  831. 23.1 Major Modes
  832. ================
  833. Every buffer possesses a major mode, which determines the editing
  834. behavior of Emacs while that buffer is current. The mode line normally
  835. shows the name of the current major mode, in parentheses (*note Mode
  836. Line::).
  837. The least specialized major mode is called "Fundamental mode". This
  838. mode has no mode-specific redefinitions or variable settings, so that
  839. each Emacs command behaves in its most general manner, and each user
  840. option variable is in its default state.
  841. For editing text of a specific type that Emacs knows about, such as
  842. Lisp code or English text, you typically use a more specialized major
  843. mode, such as Lisp mode or Text mode. Most major modes fall into three
  844. major groups. The first group contains modes for normal text, either
  845. plain or with mark-up. It includes Text mode, HTML mode, SGML mode,
  846. TeX mode and Outline mode. The second group contains modes for
  847. specific programming languages. These include Lisp mode (which has
  848. several variants), C mode, Fortran mode, and others. The third group
  849. consists of major modes that are not associated directly with files;
  850. they are used in buffers created for specific purposes by Emacs, such
  851. as Dired mode for buffers made by Dired (*note Dired::), Message mode
  852. for buffers made by `C-x m' (*note Sending Mail::), and Shell mode for
  853. buffers used to communicate with an inferior shell process (*note
  854. Interactive Shell::).
  855. Usually, the major mode is automatically set by Emacs, when you
  856. first visit a file or create a buffer (*note Choosing Modes::). You
  857. can explicitly select a new major mode by using an `M-x' command. Take
  858. the name of the mode and add `-mode' to get the name of the command to
  859. select that mode (e.g., `M-x lisp-mode' enters Lisp mode).
  860. The value of the buffer-local variable `major-mode' is a symbol with
  861. the same name as the major mode command (e.g. `lisp-mode'). This
  862. variable is set automatically; you should not change it yourself.
  863. The default value of `major-mode' determines the major mode to use
  864. for files that do not specify a major mode, and for new buffers created
  865. with `C-x b'. Normally, this default value is the symbol
  866. `fundamental-mode', which specifies Fundamental mode. You can change
  867. this default value via the Customization interface (*note Easy
  868. Customization::), or by adding a line like this to your init file
  869. (*note Init File::):
  870. (setq-default major-mode 'text-mode)
  871. If the default value of `major-mode' is `nil', the major mode is taken
  872. from the previously current buffer.
  873. Specialized major modes often change the meanings of certain keys to
  874. do something more suitable for the mode. For instance, programming
  875. language modes bind <TAB> to indent the current line according to the
  876. rules of the language (*note Indentation::). The keys that are
  877. commonly changed are <TAB>, <DEL>, and `C-j'. Many modes also define
  878. special commands of their own, usually bound in the prefix key `C-c'.
  879. Major modes can also alter user options and variables; for instance,
  880. programming language modes typically set a buffer-local value for the
  881. variable `comment-start', which determines how source code comments are
  882. delimited (*note Comments::).
  883. To view the documentation for the current major mode, including a
  884. list of its key bindings, type `C-h m' (`describe-mode').
  885. Every major mode, apart from Fundamental mode, defines a "mode
  886. hook", a customizable list of Lisp functions to run each time the mode
  887. is enabled in a buffer. *Note Hooks::, for more information about
  888. hooks. Each mode hook is named after its major mode, e.g. Fortran mode
  889. has `fortran-mode-hook'. Furthermore, all text-based major modes run
  890. `text-mode-hook', and all programming language modes run
  891. `prog-mode-hook', prior to running their own mode hooks. Hook
  892. functions can look at the value of the variable `major-mode' to see
  893. which mode is actually being entered.
  894. Mode hooks are commonly used to enable minor modes (*note Minor
  895. Modes::). For example, you can put the following lines in your init
  896. file to enable Flyspell minor mode in all text-based major modes (*note
  897. Spelling::), and Eldoc minor mode in Emacs Lisp mode (*note Lisp Doc::):
  898. (add-hook 'text-mode-hook 'flyspell-mode)
  899. (add-hook 'emacs-lisp-mode-hook 'eldoc-mode)
  900. 
  901. File: emacs, Node: Minor Modes, Next: Choosing Modes, Prev: Major Modes, Up: Modes
  902. 23.2 Minor Modes
  903. ================
  904. A minor mode is an optional editing mode that alters the behavior of
  905. Emacs in some well-defined way. Unlike major modes, any number of
  906. minor modes can be in effect at any time. Some minor modes are
  907. "buffer-local", and can be turned on (enabled) in certain buffers and
  908. off (disabled) in others. Other minor modes are "global": while
  909. enabled, they affect everything you do in the Emacs session, in all
  910. buffers. Most minor modes are disabled by default, but a few are
  911. enabled by default.
  912. Most buffer-local minor modes say in the mode line when they are
  913. enabled, just after the major mode indicator. For example, `Fill' in
  914. the mode line means that Auto Fill mode is enabled. *Note Mode Line::.
  915. Like major modes, each minor mode is associated with a "mode
  916. command", whose name consists of the mode name followed by `-mode'.
  917. For instance, the mode command for Auto Fill mode is `auto-fill-mode'.
  918. But unlike a major mode command, which simply enables the mode, the
  919. mode command for a minor mode can either enable or disable it:
  920. * If you invoke the mode command directly with no prefix argument
  921. (either via `M-x', or by binding it to a key and typing that key;
  922. *note Key Bindings::), that "toggles" the minor mode. The minor
  923. mode is turned on if it was off, and turned off if it was on.
  924. * If you invoke the mode command with a prefix argument, the minor
  925. mode is unconditionally turned off if that argument is zero or
  926. negative; otherwise, it is unconditionally turned on.
  927. * If the mode command is called via Lisp, the minor mode is
  928. unconditionally turned on if the argument is omitted or `nil'.
  929. This makes it easy to turn on a minor mode from a major mode's mode
  930. hook (*note Major Modes::). A non-`nil' argument is handled like
  931. an interactive prefix argument, as described above.
  932. Most minor modes also have a "mode variable", with the same name as
  933. the mode command. Its value is non-`nil' if the mode is enabled, and
  934. `nil' if it is disabled. In general, you should not try to enable or
  935. disable the mode by changing the value of the mode variable directly in
  936. Lisp; you should run the mode command instead. However, setting the
  937. mode variable through the Customize interface (*note Easy
  938. Customization::) will always properly enable or disable the mode, since
  939. Customize automatically runs the mode command for you.
  940. The following is a list of some buffer-local minor modes:
  941. * Abbrev mode automatically expands text based on pre-defined
  942. abbreviation definitions. *Note Abbrevs::.
  943. * Auto Fill mode inserts newlines as you type to prevent lines from
  944. becoming too long. *Note Filling::.
  945. * Auto Save mode saves the buffer contents periodically to reduce the
  946. amount of work you can lose in case of a crash. *Note Auto Save::.
  947. * Enriched mode enables editing and saving of formatted text. *Note
  948. Enriched Text::.
  949. * Flyspell mode automatically highlights misspelled words. *Note
  950. Spelling::.
  951. * Font-Lock mode automatically highlights certain textual units
  952. found in programs. It is enabled globally by default, but you can
  953. disable it in individual buffers. *Note Faces::.
  954. * Linum mode displays each line's line number in the window's left
  955. margin.
  956. * Outline minor mode provides similar facilities to the major mode
  957. called Outline mode. *Note Outline Mode::.
  958. * Overwrite mode causes ordinary printing characters to replace
  959. existing text instead of shoving it to the right. For example, if
  960. point is in front of the `B' in `FOOBAR', then in Overwrite mode
  961. typing a `G' changes it to `FOOGAR', instead of producing
  962. `FOOGBAR' as usual. In Overwrite mode, the command `C-q' inserts
  963. the next character whatever it may be, even if it is a digit--this
  964. gives you a way to insert a character instead of replacing an
  965. existing character. The mode command, `overwrite-mode', is bound
  966. to the <Insert> key.
  967. * Binary Overwrite mode is a variant of Overwrite mode for editing
  968. binary files; it treats newlines and tabs like other characters, so
  969. that they overwrite other characters and can be overwritten by
  970. them. In Binary Overwrite mode, digits after `C-q' specify an
  971. octal character code, as usual.
  972. * Visual Line mode performs "word wrapping", causing long lines to be
  973. wrapped at word boundaries. *Note Visual Line Mode::.
  974. And here are some useful global minor modes:
  975. * Column Number mode enables display of the current column number in
  976. the mode line. *Note Mode Line::.
  977. * Delete Selection mode causes text insertion to first delete the
  978. text in the region, if the region is active. *Note Using Region::.
  979. * Icomplete mode displays an indication of available completions when
  980. you are in the minibuffer and completion is active. *Note
  981. Completion Options::.
  982. * Line Number mode enables display of the current line number in the
  983. mode line. It is enabled by default. *Note Mode Line::.
  984. * Menu Bar mode gives each frame a menu bar. It is enabled by
  985. default. *Note Menu Bars::.
  986. * Scroll Bar mode gives each window a scroll bar. It is enabled by
  987. default, but the scroll bar is only displayed on graphical
  988. terminals. *Note Scroll Bars::.
  989. * Tool Bar mode gives each frame a tool bar. It is enabled by
  990. default, but the tool bar is only displayed on graphical
  991. terminals. *Note Tool Bars::.
  992. * Transient Mark mode highlights the region, and makes many Emacs
  993. commands operate on the region when the mark is active. It is
  994. enabled by default. *Note Mark::.
  995. 
  996. File: emacs, Node: Choosing Modes, Prev: Minor Modes, Up: Modes
  997. 23.3 Choosing File Modes
  998. ========================
  999. When you visit a file, Emacs chooses a major mode automatically.
  1000. Normally, it makes the choice based on the file name--for example,
  1001. files whose names end in `.c' are normally edited in C mode--but
  1002. sometimes it chooses the major mode based on special text in the file.
  1003. This special text can also be used to enable buffer-local minor modes.
  1004. Here is the exact procedure:
  1005. First, Emacs checks whether the file contains file-local mode
  1006. variables. *Note File Variables::. If there is a file-local variable
  1007. that specifies a major mode, then Emacs uses that major mode, ignoring
  1008. all other criteria. There are several methods to specify a major mode
  1009. using a file-local variable; the simplest is to put the mode name in
  1010. the first nonblank line, preceded and followed by `-*-'. Other text
  1011. may appear on the line as well. For example,
  1012. ; -*-Lisp-*-
  1013. tells Emacs to use Lisp mode. Note how the semicolon is used to make
  1014. Lisp treat this line as a comment. You could equivalently write
  1015. ; -*- mode: Lisp;-*-
  1016. You can also use file-local variables to specify buffer-local minor
  1017. modes, by using `eval' specifications. For example, this first
  1018. nonblank line puts the buffer in Lisp mode and enables Auto-Fill mode:
  1019. ; -*- mode: Lisp; eval: (auto-fill-mode 1); -*-
  1020. Note, however, that it is usually inappropriate to enable minor modes
  1021. this way, since most minor modes represent individual user preferences.
  1022. If you personally want to use a minor mode for a particular file type,
  1023. it is better to enable the minor mode via a major mode hook (*note
  1024. Major Modes::).
  1025. Second, if there is no file variable specifying a major mode, Emacs
  1026. checks whether the file's contents begin with `#!'. If so, that
  1027. indicates that the file can serve as an executable shell command, which
  1028. works by running an interpreter named on the file's first line (the
  1029. rest of the file is used as input to the interpreter). Therefore,
  1030. Emacs tries to use the interpreter name to choose a mode. For
  1031. instance, a file that begins with `#!/usr/bin/perl' is opened in Perl
  1032. mode. The variable `interpreter-mode-alist' specifies the
  1033. correspondence between interpreter program names and major modes.
  1034. When the first line starts with `#!', you usually cannot use the
  1035. `-*-' feature on the first line, because the system would get confused
  1036. when running the interpreter. So Emacs looks for `-*-' on the second
  1037. line in such files as well as on the first line. The same is true for
  1038. man pages which start with the magic string `'\"' to specify a list of
  1039. troff preprocessors.
  1040. Third, Emacs tries to determine the major mode by looking at the
  1041. text at the start of the buffer, based on the variable
  1042. `magic-mode-alist'. By default, this variable is `nil' (an empty
  1043. list), so Emacs skips this step; however, you can customize it in your
  1044. init file (*note Init File::). The value should be a list of elements
  1045. of the form
  1046. (REGEXP . MODE-FUNCTION)
  1047. where REGEXP is a regular expression (*note Regexps::), and
  1048. MODE-FUNCTION is a major mode command. If the text at the beginning of
  1049. the file matches REGEXP, Emacs chooses the major mode specified by
  1050. MODE-FUNCTION.
  1051. Alternatively, an element of `magic-mode-alist' may have the form
  1052. (MATCH-FUNCTION . MODE-FUNCTION)
  1053. where MATCH-FUNCTION is a Lisp function that is called at the beginning
  1054. of the buffer; if the function returns non-`nil', Emacs set the major
  1055. mode with MODE-FUNCTION.
  1056. Fourth--if Emacs still hasn't found a suitable major mode--it looks
  1057. at the file's name. The correspondence between file names and major
  1058. modes is controlled by the variable `auto-mode-alist'. Its value is a
  1059. list in which each element has this form,
  1060. (REGEXP . MODE-FUNCTION)
  1061. or this form,
  1062. (REGEXP MODE-FUNCTION FLAG)
  1063. For example, one element normally found in the list has the form
  1064. `("\\.c\\'" . c-mode)', and it is responsible for selecting C mode for
  1065. files whose names end in `.c'. (Note that `\\' is needed in Lisp
  1066. syntax to include a `\' in the string, which must be used to suppress
  1067. the special meaning of `.' in regexps.) If the element has the form
  1068. `(REGEXP MODE-FUNCTION FLAG)' and FLAG is non-`nil', then after calling
  1069. MODE-FUNCTION, Emacs discards the suffix that matched REGEXP and
  1070. searches the list again for another match.
  1071. On GNU/Linux and other systems with case-sensitive file names, Emacs
  1072. performs a case-sensitive search through `auto-mode-alist'; if this
  1073. search fails, it performs a second case-insensitive search through the
  1074. alist. To suppress the second search, change the variable
  1075. `auto-mode-case-fold' to `nil'. On systems with case-insensitive file
  1076. names, such as Microsoft Windows, Emacs performs a single
  1077. case-insensitive search through `auto-mode-alist'.
  1078. Finally, if Emacs _still_ hasn't found a major mode to use, it
  1079. compares the text at the start of the buffer to the variable
  1080. `magic-fallback-mode-alist'. This variable works like
  1081. `magic-mode-alist', described above, except that is consulted only
  1082. after `auto-mode-alist'. By default, `magic-fallback-mode-alist'
  1083. contains forms that check for image files, HTML/XML/SGML files, and
  1084. PostScript files.
  1085. If you have changed the major mode of a buffer, you can return to
  1086. the major mode Emacs would have chosen automatically, by typing `M-x
  1087. normal-mode'. This is the same function that `find-file' calls to
  1088. choose the major mode. It also processes the file's `-*-' line or
  1089. local variables list (if any). *Note File Variables::.
  1090. The commands `C-x C-w' and `set-visited-file-name' change to a new
  1091. major mode if the new file name implies a mode (*note Saving::). (`C-x
  1092. C-s' does this too, if the buffer wasn't visiting a file.) However,
  1093. this does not happen if the buffer contents specify a major mode, and
  1094. certain "special" major modes do not allow the mode to change. You can
  1095. turn off this mode-changing feature by setting
  1096. `change-major-mode-with-file-name' to `nil'.
  1097. 
  1098. File: emacs, Node: Indentation, Next: Text, Prev: Modes, Up: Top
  1099. 24 Indentation
  1100. **************
  1101. "Indentation" refers to inserting or adjusting "whitespace characters"
  1102. (space and/or tab characters) at the beginning of a line of text. This
  1103. chapter documents indentation commands and options which are common to
  1104. Text mode and related modes, as well as programming language modes.
  1105. *Note Program Indent::, for additional documentation about indenting in
  1106. programming modes.
  1107. The simplest way to perform indentation is the <TAB> key. In most
  1108. major modes, this runs the command `indent-for-tab-command'. (In C and
  1109. related modes, <TAB> runs the command `c-indent-line-or-region', which
  1110. behaves similarly).
  1111. <TAB>
  1112. Insert whitespace, or indent the current line, in a
  1113. mode-appropriate way (`indent-for-tab-command'). If the region is
  1114. active, indent all the lines within it.
  1115. The exact behavior of <TAB> depends on the major mode. In Text mode
  1116. and related major modes, <TAB> normally inserts some combination of
  1117. space and tab characters to advance point to the next tab stop (*note
  1118. Tab Stops::). For this purpose, the position of the first
  1119. non-whitespace character on the preceding line is treated as an
  1120. additional tab stop, so you can use <TAB> to "align" point with the
  1121. preceding line. If the region is active (*note Using Region::), <TAB>
  1122. acts specially: it indents each line in the region so that its first
  1123. non-whitespace character is aligned with the preceding line.
  1124. In programming modes, <TAB> indents the current line of code in a
  1125. way that makes sense given the code in the preceding lines. If the
  1126. region is active, all the lines in the region are indented this way.
  1127. If point was initially within the current line's indentation, it is
  1128. repositioned to the first non-whitespace character on the line.
  1129. If you just want to insert a tab character in the buffer, type `C-q
  1130. <TAB>' (*note Inserting Text::).
  1131. * Menu:
  1132. * Indentation Commands:: More commands for performing indentation.
  1133. * Tab Stops:: Stop points for indentation in Text modes.
  1134. * Just Spaces:: Using only space characters for indentation.
  1135. * Indent Convenience:: Optional indentation features.
  1136. 
  1137. File: emacs, Node: Indentation Commands, Next: Tab Stops, Up: Indentation
  1138. 24.1 Indentation Commands
  1139. =========================
  1140. Apart from the <TAB> (`indent-for-tab-command') command, Emacs provides
  1141. a variety of commands to perform indentation in other ways.
  1142. `C-j'
  1143. Perform <RET> followed by <TAB> (`newline-and-indent').
  1144. `C-M-o'
  1145. Split the current line at point (`split-line'). The text on the
  1146. line after point becomes a new line, indented to the same column
  1147. where point is located. This command first moves point forward
  1148. over any spaces and tabs. Afterward, point is positioned before
  1149. the inserted newline.
  1150. `M-m'
  1151. Move (forward or back) to the first non-whitespace character on the
  1152. current line (`back-to-indentation'). If there are no
  1153. non-whitespace characters on the line, move to the end of the line.
  1154. `M-i'
  1155. Indent whitespace at point, up to the next tab stop
  1156. (`tab-to-tab-stop'). *Note Tab Stops::.
  1157. `M-x indent-relative'
  1158. Insert whitespace at point, until point is aligned with the first
  1159. non-whitespace character on the previous line (actually, the last
  1160. non-blank line). If point is already farther right than that, run
  1161. `tab-to-tab-stop' instead--unless called with a numeric argument,
  1162. in which case do nothing.
  1163. `M-^'
  1164. Merge the previous and the current line (`delete-indentation').
  1165. This "joins" the two lines cleanly, by replacing any indentation at
  1166. the front of the current line, together with the line boundary,
  1167. with a single space.
  1168. As a special case (useful for Lisp code), the single space is
  1169. omitted if the characters to be joined are consecutive opening and
  1170. closing parentheses, or if the junction follows another newline.
  1171. If there is a fill prefix, `M-^' deletes the fill prefix if it
  1172. appears after the newline that is deleted. *Note Fill Prefix::.
  1173. `C-M-\'
  1174. Indent all the lines in the region, as though you had typed <TAB>
  1175. at the beginning of each line (`indent-region').
  1176. If a numeric argument is supplied, indent every line in the region
  1177. to that column number.
  1178. `C-x <TAB>'
  1179. Shift each line in the region by a fixed distance, to the right or
  1180. left (`indent-rigidly'). The distance to move is determined by
  1181. the numeric argument (positive to move rightward, negative to move
  1182. leftward).
  1183. This command can be used to remove all indentation from the lines
  1184. in the region, by invoking it with a large negative argument, e.g.
  1185. `C-u -1000 C-x <TAB>'.
  1186. 
  1187. File: emacs, Node: Tab Stops, Next: Just Spaces, Prev: Indentation Commands, Up: Indentation
  1188. 24.2 Tab Stops
  1189. ==============
  1190. Emacs defines certain column numbers to be "tab stops". These are used
  1191. as stopping points by <TAB> when inserting whitespace in Text mode and
  1192. related modes (*note Indentation::), and by commands like `M-i' (*note
  1193. Indentation Commands::). By default, tab stops are located every 8
  1194. columns. These positions are stored in the variable `tab-stop-list',
  1195. whose value is a list of column numbers in increasing order.
  1196. Instead of customizing the variable `tab-stop-list' directly, a
  1197. convenient way to view and set tab stops is via the command `M-x
  1198. edit-tab-stops'. This switches to a buffer containing a description of
  1199. the tab stop settings, which looks like this:
  1200. : : : : : :
  1201. 0 1 2 3 4
  1202. 0123456789012345678901234567890123456789012345678
  1203. To install changes, type C-c C-c
  1204. The first line contains a colon at each tab stop. The numbers on the
  1205. next two lines are present just to indicate where the colons are.
  1206. You can edit this buffer to specify different tab stops by placing
  1207. colons on the desired columns. The buffer uses Overwrite mode (*note
  1208. Minor Modes::). When you are done, type `C-c C-c' to make the new tab
  1209. stops take effect. Normally, the new tab stop settings apply to all
  1210. buffers. However, if you have made the `tab-stop-list' variable local
  1211. to the buffer where you called `M-x edit-tab-stops' (*note Locals::),
  1212. then the new tab stop settings apply only to that buffer. To save the
  1213. tab stop settings for future Emacs sessions, use the Customize
  1214. interface to save the value of `tab-stop-list' (*note Easy
  1215. Customization::).
  1216. Note that the tab stops discussed in this section have nothing to do
  1217. with how tab characters are displayed in the buffer. Tab characters
  1218. are always displayed as empty spaces extending to the next "display tab
  1219. stop". *Note Text Display::.
  1220. 
  1221. File: emacs, Node: Just Spaces, Next: Indent Convenience, Prev: Tab Stops, Up: Indentation
  1222. 24.3 Tabs vs. Spaces
  1223. ====================
  1224. Normally, indentation commands insert (or remove) an optimal mix of
  1225. space characters and tab characters to align to the desired column.
  1226. Tab characters are displayed as a stretch of empty space extending to
  1227. the next "display tab stop". By default, there is one display tab stop
  1228. every `tab-width' columns (the default is 8). *Note Text Display::.
  1229. If you prefer, all indentation can be made from spaces only. To
  1230. request this, set the buffer-local variable `indent-tabs-mode' to
  1231. `nil'. *Note Locals::, for information about setting buffer-local
  1232. variables. Note, however, that `C-q <TAB>' always inserts a tab
  1233. character, regardless of the value of `indent-tabs-mode'.
  1234. One reason to set `indent-tabs-mode' to `nil' is that not all
  1235. editors display tab characters in the same way. Emacs users, too, may
  1236. have different customized values of `tab-width'. By using spaces only,
  1237. you can make sure that your file always looks the same. If you only
  1238. care about how it looks within Emacs, another way to tackle this
  1239. problem is to set the `tab-width' variable in a file-local variable
  1240. (*note File Variables::).
  1241. There are also commands to convert tabs to spaces or vice versa,
  1242. always preserving the columns of all non-whitespace text. `M-x tabify'
  1243. scans the region for sequences of spaces, and converts sequences of at
  1244. least two spaces to tabs if that can be done without changing
  1245. indentation. `M-x untabify' changes all tabs in the region to
  1246. appropriate numbers of spaces.
  1247. 
  1248. File: emacs, Node: Indent Convenience, Prev: Just Spaces, Up: Indentation
  1249. 24.4 Convenience Features for Indentation
  1250. =========================================
  1251. The variable `tab-always-indent' tweaks the behavior of the <TAB>
  1252. (`indent-for-tab-command') command. The default value, `t', gives the
  1253. behavior described in *note Indentation::. If you change the value to
  1254. the symbol `complete', then <TAB> first tries to indent the current
  1255. line, and if the line was already indented, it tries to complete the
  1256. text at point (*note Symbol Completion::). If the value is `nil', then
  1257. <TAB> indents the current line only if point is at the left margin or
  1258. in the line's indentation; otherwise, it inserts a tab character.
  1259. Electric Indent mode is a global minor mode that automatically
  1260. indents the line after every <RET> you type. To toggle this minor
  1261. mode, type `M-x electric-indent-mode'.
  1262. 
  1263. File: emacs, Node: Text, Next: Programs, Prev: Indentation, Up: Top
  1264. 25 Commands for Human Languages
  1265. *******************************
  1266. This chapter describes Emacs commands that act on "text", by which we
  1267. mean sequences of characters in a human language (as opposed to, say, a
  1268. computer programming language). These commands act in ways that take
  1269. into account the syntactic and stylistic conventions of human
  1270. languages: conventions involving words, sentences, paragraphs, and
  1271. capital letters. There are also commands for "filling", which means
  1272. rearranging the lines of a paragraph to be approximately equal in
  1273. length. These commands, while intended primarily for editing text, are
  1274. also often useful for editing programs.
  1275. Emacs has several major modes for editing human-language text. If
  1276. the file contains ordinary text, use Text mode, which customizes Emacs
  1277. in small ways for the syntactic conventions of text. Outline mode
  1278. provides special commands for operating on text with an outline
  1279. structure. Org mode extends Outline mode and turn Emacs into a
  1280. full-fledged organizer: you can manage TODO lists, store notes and
  1281. publish them in many formats.
  1282. Emacs has other major modes for text which contains "embedded"
  1283. commands, such as TeX and LaTeX (*note TeX Mode::); HTML and SGML
  1284. (*note HTML Mode::); XML (*note The nXML Mode Manual: (nxml-mode)Top.);
  1285. and Groff and Nroff (*note Nroff Mode::).
  1286. If you need to edit pictures made out of text characters (commonly
  1287. referred to as "ASCII art"), use Picture mode, a special major mode for
  1288. editing such pictures. *Note Picture Mode::.
  1289. The "automatic typing" features may be useful when writing text.
  1290. *note The Autotype Manual: (autotype)Top.
  1291. * Menu:
  1292. * Words:: Moving over and killing words.
  1293. * Sentences:: Moving over and killing sentences.
  1294. * Paragraphs:: Moving over paragraphs.
  1295. * Pages:: Moving over pages.
  1296. * Filling:: Filling or justifying text.
  1297. * Case:: Changing the case of text.
  1298. * Text Mode:: The major modes for editing text files.
  1299. * Outline Mode:: Editing outlines.
  1300. * Org Mode:: The Emacs organizer.
  1301. * TeX Mode:: Editing TeX and LaTeX files.
  1302. * HTML Mode:: Editing HTML and SGML files.
  1303. * Nroff Mode:: Editing input to the nroff formatter.
  1304. * Enriched Text:: Editing text "enriched" with fonts, colors, etc.
  1305. * Text Based Tables:: Commands for editing text-based tables.
  1306. * Two-Column:: Splitting text columns into separate windows.
  1307. 
  1308. File: emacs, Node: Words, Next: Sentences, Up: Text
  1309. 25.1 Words
  1310. ==========
  1311. Emacs defines several commands for moving over or operating on words:
  1312. `M-f'
  1313. Move forward over a word (`forward-word').
  1314. `M-b'
  1315. Move backward over a word (`backward-word').
  1316. `M-d'
  1317. Kill up to the end of a word (`kill-word').
  1318. `M-<DEL>'
  1319. Kill back to the beginning of a word (`backward-kill-word').
  1320. `M-@'
  1321. Mark the end of the next word (`mark-word').
  1322. `M-t'
  1323. Transpose two words or drag a word across others
  1324. (`transpose-words').
  1325. Notice how these keys form a series that parallels the
  1326. character-based `C-f', `C-b', `C-d', <DEL> and `C-t'. `M-@' is cognate
  1327. to `C-@', which is an alias for `C-<SPC>'.
  1328. The commands `M-f' (`forward-word') and `M-b' (`backward-word') move
  1329. forward and backward over words. These <Meta>-based key sequences are
  1330. analogous to the key sequences `C-f' and `C-b', which move over single
  1331. characters. The analogy extends to numeric arguments, which serve as
  1332. repeat counts. `M-f' with a negative argument moves backward, and
  1333. `M-b' with a negative argument moves forward. Forward motion stops
  1334. right after the last letter of the word, while backward motion stops
  1335. right before the first letter.
  1336. `M-d' (`kill-word') kills the word after point. To be precise, it
  1337. kills everything from point to the place `M-f' would move to. Thus, if
  1338. point is in the middle of a word, `M-d' kills just the part after
  1339. point. If some punctuation comes between point and the next word, it
  1340. is killed along with the word. (If you wish to kill only the next word
  1341. but not the punctuation before it, simply do `M-f' to get the end, and
  1342. kill the word backwards with `M-<DEL>'.) `M-d' takes arguments just
  1343. like `M-f'.
  1344. `M-<DEL>' (`backward-kill-word') kills the word before point. It
  1345. kills everything from point back to where `M-b' would move to. For
  1346. instance, if point is after the space in `FOO, BAR', it kills `FOO, '.
  1347. If you wish to kill just `FOO', and not the comma and the space, use
  1348. `M-b M-d' instead of `M-<DEL>'.
  1349. `M-t' (`transpose-words') exchanges the word before or containing
  1350. point with the following word. The delimiter characters between the
  1351. words do not move. For example, `FOO, BAR' transposes into `BAR, FOO'
  1352. rather than `BAR FOO,'. *Note Transpose::, for more on transposition.
  1353. To operate on words with an operation which acts on the region, use
  1354. the command `M-@' (`mark-word'). This command sets the mark where
  1355. `M-f' would move to. *Note Marking Objects::, for more information
  1356. about this command.
  1357. The word commands' understanding of word boundaries is controlled by
  1358. the syntax table. Any character can, for example, be declared to be a
  1359. word delimiter. *Note Syntax Tables: (elisp)Syntax Tables.
  1360. In addition, see *note Position Info:: for the `M-='
  1361. (`count-words-region') and `M-x count-words' commands, which count and
  1362. report the number of words in the region or buffer.
  1363. 
  1364. File: emacs, Node: Sentences, Next: Paragraphs, Prev: Words, Up: Text
  1365. 25.2 Sentences
  1366. ==============
  1367. The Emacs commands for manipulating sentences and paragraphs are mostly
  1368. on Meta keys, like the word-handling commands.
  1369. `M-a'
  1370. Move back to the beginning of the sentence (`backward-sentence').
  1371. `M-e'
  1372. Move forward to the end of the sentence (`forward-sentence').
  1373. `M-k'
  1374. Kill forward to the end of the sentence (`kill-sentence').
  1375. `C-x <DEL>'
  1376. Kill back to the beginning of the sentence
  1377. (`backward-kill-sentence').
  1378. The commands `M-a' (`backward-sentence') and `M-e'
  1379. (`forward-sentence') move to the beginning and end of the current
  1380. sentence, respectively. Their bindings were chosen to resemble `C-a'
  1381. and `C-e', which move to the beginning and end of a line. Unlike them,
  1382. `M-a' and `M-e' move over successive sentences if repeated.
  1383. Moving backward over a sentence places point just before the first
  1384. character of the sentence; moving forward places point right after the
  1385. punctuation that ends the sentence. Neither one moves over the
  1386. whitespace at the sentence boundary.
  1387. Just as `C-a' and `C-e' have a kill command, `C-k', to go with them,
  1388. `M-a' and `M-e' have a corresponding kill command: `M-k'
  1389. (`kill-sentence') kills from point to the end of the sentence. With a
  1390. positive numeric argument N, it kills the next N sentences; with a
  1391. negative argument -N, it kills back to the beginning of the Nth
  1392. preceding sentence.
  1393. The `C-x <DEL>' (`backward-kill-sentence') kills back to the
  1394. beginning of a sentence.
  1395. The sentence commands assume that you follow the American typist's
  1396. convention of putting two spaces at the end of a sentence. That is, a
  1397. sentence ends wherever there is a `.', `?' or `!' followed by the end
  1398. of a line or two spaces, with any number of `)', `]', `'', or `"'
  1399. characters allowed in between. A sentence also begins or ends wherever
  1400. a paragraph begins or ends. It is useful to follow this convention,
  1401. because it allows the Emacs sentence commands to distinguish between
  1402. periods that end a sentence and periods that indicate abbreviations.
  1403. If you want to use just one space between sentences, you can set the
  1404. variable `sentence-end-double-space' to `nil' to make the sentence
  1405. commands stop for single spaces. However, this has a drawback: there
  1406. is no way to distinguish between periods that end sentences and those
  1407. that indicate abbreviations. For convenient and reliable editing, we
  1408. therefore recommend you follow the two-space convention. The variable
  1409. `sentence-end-double-space' also affects filling (*note Fill
  1410. Commands::).
  1411. The variable `sentence-end' controls how to recognize the end of a
  1412. sentence. If non-`nil', its value should be a regular expression,
  1413. which is used to match the last few characters of a sentence, together
  1414. with the whitespace following the sentence (*note Regexps::). If the
  1415. value is `nil', the default, then Emacs computes sentence ends
  1416. according to various criteria such as the value of
  1417. `sentence-end-double-space'.
  1418. Some languages, such as Thai, do not use periods to indicate the end
  1419. of a sentence. Set the variable `sentence-end-without-period' to `t'
  1420. in such cases.
  1421. 
  1422. File: emacs, Node: Paragraphs, Next: Pages, Prev: Sentences, Up: Text
  1423. 25.3 Paragraphs
  1424. ===============
  1425. The Emacs commands for manipulating paragraphs are also on Meta keys.
  1426. `M-{'
  1427. Move back to previous paragraph beginning (`backward-paragraph').
  1428. `M-}'
  1429. Move forward to next paragraph end (`forward-paragraph').
  1430. `M-h'
  1431. Put point and mark around this or next paragraph
  1432. (`mark-paragraph').
  1433. `M-{' (`backward-paragraph') moves to the beginning of the current
  1434. or previous paragraph (see below for the definition of a paragraph).
  1435. `M-}' (`forward-paragraph') moves to the end of the current or next
  1436. paragraph. If there is a blank line before the paragraph, `M-{' moves
  1437. to the blank line.
  1438. When you wish to operate on a paragraph, type `M-h'
  1439. (`mark-paragraph') to set the region around it. For example, `M-h C-w'
  1440. kills the paragraph around or after point. `M-h' puts point at the
  1441. beginning and mark at the end of the paragraph point was in. If point
  1442. is between paragraphs (in a run of blank lines, or at a boundary),
  1443. `M-h' sets the region around the paragraph following point. If there
  1444. are blank lines preceding the first line of the paragraph, one of these
  1445. blank lines is included in the region. If the region is already
  1446. active, the command sets the mark without changing point, and each
  1447. subsequent `M-h' further advances the mark by one paragraph.
  1448. The definition of a paragraph depends on the major mode. In
  1449. Fundamental mode, as well as Text mode and related modes, a paragraph
  1450. is separated each neighboring paragraph another by one or more "blank
  1451. lines"--lines that are either empty, or consist solely of space, tab
  1452. and/or formfeed characters. In programming language modes, paragraphs
  1453. are usually defined in a similar way, so that you can use the paragraph
  1454. commands even though there are no paragraphs as such in a program.
  1455. Note that an indented line is _not_ itself a paragraph break in Text
  1456. mode. If you want indented lines to separate paragraphs, use
  1457. Paragraph-Indent Text mode instead. *Note Text Mode::.
  1458. If you set a fill prefix, then paragraphs are delimited by all lines
  1459. which don't start with the fill prefix. *Note Filling::.
  1460. The precise definition of a paragraph boundary is controlled by the
  1461. variables `paragraph-separate' and `paragraph-start'. The value of
  1462. `paragraph-start' is a regular expression that should match lines that
  1463. either start or separate paragraphs (*note Regexps::). The value of
  1464. `paragraph-separate' is another regular expression that should match
  1465. lines that separate paragraphs without being part of any paragraph (for
  1466. example, blank lines). Lines that start a new paragraph and are
  1467. contained in it must match only `paragraph-start', not
  1468. `paragraph-separate'. For example, in Fundamental mode,
  1469. `paragraph-start' is `"\f\\|[ \t]*$"', and `paragraph-separate' is
  1470. `"[ \t\f]*$"'.
  1471. 
  1472. File: emacs, Node: Pages, Next: Filling, Prev: Paragraphs, Up: Text
  1473. 25.4 Pages
  1474. ==========
  1475. Within some text files, text is divided into "pages" delimited by the
  1476. "formfeed character" (ASCII code 12, also denoted as <control-L>),
  1477. which is displayed in Emacs as the escape sequence `^L' (*note Text
  1478. Display::). Traditionally, when such text files are printed to
  1479. hardcopy, each formfeed character forces a page break. Most Emacs
  1480. commands treat it just like any other character, so you can insert it
  1481. with `C-q C-l', delete it with <DEL>, etc. In addition, Emacs provides
  1482. commands to move over pages and operate on them.
  1483. `M-x what-page'
  1484. Display the page number of point, and the line number within that
  1485. page.
  1486. `C-x ['
  1487. Move point to previous page boundary (`backward-page').
  1488. `C-x ]'
  1489. Move point to next page boundary (`forward-page').
  1490. `C-x C-p'
  1491. Put point and mark around this page (or another page)
  1492. (`mark-page').
  1493. `C-x l'
  1494. Count the lines in this page (`count-lines-page').
  1495. `M-x what-page' counts pages from the beginning of the file, and
  1496. counts lines within the page, showing both numbers in the echo area.
  1497. The `C-x [' (`backward-page') command moves point to immediately
  1498. after the previous page delimiter. If point is already right after a
  1499. page delimiter, it skips that one and stops at the previous one. A
  1500. numeric argument serves as a repeat count. The `C-x ]' (`forward-page')
  1501. command moves forward past the next page delimiter.
  1502. The `C-x C-p' command (`mark-page') puts point at the beginning of
  1503. the current page (after that page delimiter at the front), and the mark
  1504. at the end of the page (after the page delimiter at the end).
  1505. `C-x C-p C-w' is a handy way to kill a page to move it elsewhere.
  1506. If you move to another page delimiter with `C-x [' and `C-x ]', then
  1507. yank the killed page, all the pages will be properly delimited once
  1508. again. The reason `C-x C-p' includes only the following page delimiter
  1509. in the region is to ensure that.
  1510. A numeric argument to `C-x C-p' specifies which page to go to,
  1511. relative to the current one. Zero means the current page, one the next
  1512. page, and -1 the previous one.
  1513. The `C-x l' command (`count-lines-page') is good for deciding where
  1514. to break a page in two. It displays in the echo area the total number
  1515. of lines in the current page, and then divides it up into those
  1516. preceding the current line and those following, as in
  1517. Page has 96 (72+25) lines
  1518. Notice that the sum is off by one; this is correct if point is not at
  1519. the beginning of a line.
  1520. The variable `page-delimiter' controls where pages begin. Its value
  1521. is a regular expression that matches the beginning of a line that
  1522. separates pages (*note Regexps::). The normal value of this variable
  1523. is `"^\f"', which matches a formfeed character at the beginning of a
  1524. line.
  1525. 
  1526. File: emacs, Node: Filling, Next: Case, Prev: Pages, Up: Text
  1527. 25.5 Filling Text
  1528. =================
  1529. "Filling" text means breaking it up into lines that fit a specified
  1530. width. Emacs does filling in two ways. In Auto Fill mode, inserting
  1531. text with self-inserting characters also automatically fills it. There
  1532. are also explicit fill commands that you can use when editing text.
  1533. * Menu:
  1534. * Auto Fill:: Auto Fill mode breaks long lines automatically.
  1535. * Fill Commands:: Commands to refill paragraphs and center lines.
  1536. * Fill Prefix:: Filling paragraphs that are indented or in a comment, etc.
  1537. * Adaptive Fill:: How Emacs can determine the fill prefix automatically.
  1538. 
  1539. File: emacs, Node: Auto Fill, Next: Fill Commands, Up: Filling
  1540. 25.5.1 Auto Fill Mode
  1541. ---------------------
  1542. "Auto Fill" mode is a buffer-local minor mode (*note Minor Modes::) in
  1543. which lines are broken automatically when they become too wide.
  1544. Breaking happens only when you type a <SPC> or <RET>.
  1545. `M-x auto-fill-mode'
  1546. Enable or disable Auto Fill mode.
  1547. `<SPC>'
  1548. `<RET>'
  1549. In Auto Fill mode, break lines when appropriate.
  1550. The mode command `M-x auto-fill-mode' toggles Auto Fill mode in the
  1551. current buffer. With a positive numeric argument, it enables Auto Fill
  1552. mode, and with a negative argument it disables it. If `auto-fill-mode'
  1553. is called from Lisp with an omitted or `nil' argument, it enables Auto
  1554. Fill mode. To enable Auto Fill mode automatically in certain major
  1555. modes, add `auto-fill-mode' to the mode hooks (*note Major Modes::).
  1556. When Auto Fill mode is enabled, the mode indicator `Fill' appears in
  1557. the mode line (*note Mode Line::).
  1558. Auto Fill mode breaks lines automatically at spaces whenever they
  1559. get longer than the desired width. This line breaking occurs only when
  1560. you type <SPC> or <RET>. If you wish to insert a space or newline
  1561. without permitting line-breaking, type `C-q <SPC>' or `C-q C-j'
  1562. respectively. Also, `C-o' inserts a newline without line breaking.
  1563. When Auto Fill mode breaks a line, it tries to obey the "adaptive
  1564. fill prefix": if a fill prefix can be deduced from the first and/or
  1565. second line of the current paragraph, it is inserted into the new line
  1566. (*note Adaptive Fill::). Otherwise the new line is indented, as though
  1567. you had typed <TAB> on it (*note Indentation::). In a programming
  1568. language mode, if a line is broken in the middle of a comment, the
  1569. comment is split by inserting new comment delimiters as appropriate.
  1570. Auto Fill mode does not refill entire paragraphs; it breaks lines
  1571. but does not merge lines. Therefore, editing in the middle of a
  1572. paragraph can result in a paragraph that is not correctly filled. To
  1573. fill it, call the explicit fill commands (*note Fill Commands::).
  1574. 
  1575. File: emacs, Node: Fill Commands, Next: Fill Prefix, Prev: Auto Fill, Up: Filling
  1576. 25.5.2 Explicit Fill Commands
  1577. -----------------------------
  1578. `M-q'
  1579. Fill current paragraph (`fill-paragraph').
  1580. `C-x f'
  1581. Set the fill column (`set-fill-column').
  1582. `M-x fill-region'
  1583. Fill each paragraph in the region (`fill-region').
  1584. `M-x fill-region-as-paragraph'
  1585. Fill the region, considering it as one paragraph.
  1586. `M-o M-s'
  1587. Center a line.
  1588. The command `M-q' (`fill-paragraph') "fills" the current paragraph.
  1589. It redistributes the line breaks within the paragraph, and deletes any
  1590. excess space and tab characters occurring within the paragraph, in such
  1591. a way that the lines end up fitting within a certain maximum width.
  1592. Normally, `M-q' acts on the paragraph where point is, but if point
  1593. is between paragraphs, it acts on the paragraph after point. If the
  1594. region is active, it acts instead on the text in the region. You can
  1595. also call `M-x fill-region' to specifically fill the text in the region.
  1596. `M-q' and `fill-region' use the usual Emacs criteria for finding
  1597. paragraph boundaries (*note Paragraphs::). For more control, you can
  1598. use `M-x fill-region-as-paragraph', which refills everything between
  1599. point and mark as a single paragraph. This command deletes any blank
  1600. lines within the region, so separate blocks of text end up combined
  1601. into one block.
  1602. A numeric argument to `M-q' tells it to "justify" the text as well
  1603. as filling it. This means that extra spaces are inserted to make the
  1604. right margin line up exactly at the fill column. To remove the extra
  1605. spaces, use `M-q' with no argument. (Likewise for `fill-region'.)
  1606. The maximum line width for filling is specified by the buffer-local
  1607. variable `fill-column'. The default value (*note Locals::) is 70. The
  1608. easiest way to set `fill-column' in the current buffer is to use the
  1609. command `C-x f' (`set-fill-column'). With a numeric argument, it uses
  1610. that as the new fill column. With just `C-u' as argument, it sets
  1611. `fill-column' to the current horizontal position of point.
  1612. The command `M-o M-s' (`center-line') centers the current line
  1613. within the current fill column. With an argument N, it centers N lines
  1614. individually and moves past them. This binding is made by Text mode
  1615. and is available only in that and related modes (*note Text Mode::).
  1616. By default, Emacs considers a period followed by two spaces or by a
  1617. newline as the end of a sentence; a period followed by just one space
  1618. indicates an abbreviation, not the end of a sentence. Accordingly, the
  1619. fill commands will not break a line after a period followed by just one
  1620. space. If you set the variable `sentence-end-double-space' to `nil',
  1621. the fill commands will break a line after a period followed by one
  1622. space, and put just one space after each period. *Note Sentences::,
  1623. for other effects and possible drawbacks of this.
  1624. If the variable `colon-double-space' is non-`nil', the fill commands
  1625. put two spaces after a colon.
  1626. To specify additional conditions where line-breaking is not allowed,
  1627. customize the abnormal hook variable `fill-nobreak-predicate' (*note
  1628. Hooks::). Each function in this hook is called with no arguments, with
  1629. point positioned where Emacs is considering breaking a line. If a
  1630. function returns a non-`nil' value, Emacs will not break the line
  1631. there. Two functions you can use are `fill-single-word-nobreak-p'
  1632. (don't break after the first word of a sentence or before the last) and
  1633. `fill-french-nobreak-p' (don't break after `(' or before `)', `:' or
  1634. `?').
  1635. 
  1636. File: emacs, Node: Fill Prefix, Next: Adaptive Fill, Prev: Fill Commands, Up: Filling
  1637. 25.5.3 The Fill Prefix
  1638. ----------------------
  1639. The "fill prefix" feature allows paragraphs to be filled so that each
  1640. line starts with a special string of characters (such as a sequence of
  1641. spaces, giving an indented paragraph). You can specify a fill prefix
  1642. explicitly; otherwise, Emacs tries to deduce one automatically (*note
  1643. Adaptive Fill::).
  1644. `C-x .'
  1645. Set the fill prefix (`set-fill-prefix').
  1646. `M-q'
  1647. Fill a paragraph using current fill prefix (`fill-paragraph').
  1648. `M-x fill-individual-paragraphs'
  1649. Fill the region, considering each change of indentation as
  1650. starting a new paragraph.
  1651. `M-x fill-nonuniform-paragraphs'
  1652. Fill the region, considering only paragraph-separator lines as
  1653. starting a new paragraph.
  1654. To specify a fill prefix for the current buffer, move to a line that
  1655. starts with the desired prefix, put point at the end of the prefix, and
  1656. type `C-x .' (`set-fill-prefix'). (That's a period after the `C-x'.)
  1657. To turn off the fill prefix, specify an empty prefix: type `C-x .' with
  1658. point at the beginning of a line.
  1659. When a fill prefix is in effect, the fill commands remove the fill
  1660. prefix from each line of the paragraph before filling, and insert it on
  1661. each line after filling. (The beginning of the first line of the
  1662. paragraph is left unchanged, since often that is intentionally
  1663. different.) Auto Fill mode also inserts the fill prefix automatically
  1664. when it makes a new line (*note Auto Fill::). The `C-o' command
  1665. inserts the fill prefix on new lines it creates, when you use it at the
  1666. beginning of a line (*note Blank Lines::). Conversely, the command
  1667. `M-^' deletes the prefix (if it occurs) after the newline that it
  1668. deletes (*note Indentation::).
  1669. For example, if `fill-column' is 40 and you set the fill prefix to
  1670. `;; ', then `M-q' in the following text
  1671. ;; This is an
  1672. ;; example of a paragraph
  1673. ;; inside a Lisp-style comment.
  1674. produces this:
  1675. ;; This is an example of a paragraph
  1676. ;; inside a Lisp-style comment.
  1677. Lines that do not start with the fill prefix are considered to start
  1678. paragraphs, both in `M-q' and the paragraph commands; this gives good
  1679. results for paragraphs with hanging indentation (every line indented
  1680. except the first one). Lines which are blank or indented once the
  1681. prefix is removed also separate or start paragraphs; this is what you
  1682. want if you are writing multi-paragraph comments with a comment
  1683. delimiter on each line.
  1684. You can use `M-x fill-individual-paragraphs' to set the fill prefix
  1685. for each paragraph automatically. This command divides the region into
  1686. paragraphs, treating every change in the amount of indentation as the
  1687. start of a new paragraph, and fills each of these paragraphs. Thus,
  1688. all the lines in one "paragraph" have the same amount of indentation.
  1689. That indentation serves as the fill prefix for that paragraph.
  1690. `M-x fill-nonuniform-paragraphs' is a similar command that divides
  1691. the region into paragraphs in a different way. It considers only
  1692. paragraph-separating lines (as defined by `paragraph-separate') as
  1693. starting a new paragraph. Since this means that the lines of one
  1694. paragraph may have different amounts of indentation, the fill prefix
  1695. used is the smallest amount of indentation of any of the lines of the
  1696. paragraph. This gives good results with styles that indent a
  1697. paragraph's first line more or less that the rest of the paragraph.
  1698. The fill prefix is stored in the variable `fill-prefix'. Its value
  1699. is a string, or `nil' when there is no fill prefix. This is a
  1700. per-buffer variable; altering the variable affects only the current
  1701. buffer, but there is a default value which you can change as well.
  1702. *Note Locals::.
  1703. The `indentation' text property provides another way to control the
  1704. amount of indentation paragraphs receive. *Note Enriched Indentation::.
  1705. 
  1706. File: emacs, Node: Adaptive Fill, Prev: Fill Prefix, Up: Filling
  1707. 25.5.4 Adaptive Filling
  1708. -----------------------
  1709. The fill commands can deduce the proper fill prefix for a paragraph
  1710. automatically in certain cases: either whitespace or certain punctuation
  1711. characters at the beginning of a line are propagated to all lines of the
  1712. paragraph.
  1713. If the paragraph has two or more lines, the fill prefix is taken from
  1714. the paragraph's second line, but only if it appears on the first line as
  1715. well.
  1716. If a paragraph has just one line, fill commands _may_ take a prefix
  1717. from that line. The decision is complicated because there are three
  1718. reasonable things to do in such a case:
  1719. * Use the first line's prefix on all the lines of the paragraph.
  1720. * Indent subsequent lines with whitespace, so that they line up
  1721. under the text that follows the prefix on the first line, but
  1722. don't actually copy the prefix from the first line.
  1723. * Don't do anything special with the second and following lines.
  1724. All three of these styles of formatting are commonly used. So the
  1725. fill commands try to determine what you would like, based on the prefix
  1726. that appears and on the major mode. Here is how.
  1727. If the prefix found on the first line matches
  1728. `adaptive-fill-first-line-regexp', or if it appears to be a
  1729. comment-starting sequence (this depends on the major mode), then the
  1730. prefix found is used for filling the paragraph, provided it would not
  1731. act as a paragraph starter on subsequent lines.
  1732. Otherwise, the prefix found is converted to an equivalent number of
  1733. spaces, and those spaces are used as the fill prefix for the rest of the
  1734. lines, provided they would not act as a paragraph starter on subsequent
  1735. lines.
  1736. In Text mode, and other modes where only blank lines and page
  1737. delimiters separate paragraphs, the prefix chosen by adaptive filling
  1738. never acts as a paragraph starter, so it can always be used for filling.
  1739. The variable `adaptive-fill-regexp' determines what kinds of line
  1740. beginnings can serve as a fill prefix: any characters at the start of
  1741. the line that match this regular expression are used. If you set the
  1742. variable `adaptive-fill-mode' to `nil', the fill prefix is never chosen
  1743. automatically.
  1744. You can specify more complex ways of choosing a fill prefix
  1745. automatically by setting the variable `adaptive-fill-function' to a
  1746. function. This function is called with point after the left margin of a
  1747. line, and it should return the appropriate fill prefix based on that
  1748. line. If it returns `nil', `adaptive-fill-regexp' gets a chance to
  1749. find a prefix.
  1750. 
  1751. File: emacs, Node: Case, Next: Text Mode, Prev: Filling, Up: Text
  1752. 25.6 Case Conversion Commands
  1753. =============================
  1754. Emacs has commands for converting either a single word or any arbitrary
  1755. range of text to upper case or to lower case.
  1756. `M-l'
  1757. Convert following word to lower case (`downcase-word').
  1758. `M-u'
  1759. Convert following word to upper case (`upcase-word').
  1760. `M-c'
  1761. Capitalize the following word (`capitalize-word').
  1762. `C-x C-l'
  1763. Convert region to lower case (`downcase-region').
  1764. `C-x C-u'
  1765. Convert region to upper case (`upcase-region').
  1766. `M-l' (`downcase-word') converts the word after point to lower case,
  1767. moving past it. Thus, repeating `M-l' converts successive words.
  1768. `M-u' (`upcase-word') converts to all capitals instead, while `M-c'
  1769. (`capitalize-word') puts the first letter of the word into upper case
  1770. and the rest into lower case. All these commands convert several words
  1771. at once if given an argument. They are especially convenient for
  1772. converting a large amount of text from all upper case to mixed case,
  1773. because you can move through the text using `M-l', `M-u' or `M-c' on
  1774. each word as appropriate, occasionally using `M-f' instead to skip a
  1775. word.
  1776. When given a negative argument, the word case conversion commands
  1777. apply to the appropriate number of words before point, but do not move
  1778. point. This is convenient when you have just typed a word in the wrong
  1779. case: you can give the case conversion command and continue typing.
  1780. If a word case conversion command is given in the middle of a word,
  1781. it applies only to the part of the word which follows point. (This is
  1782. comparable to what `M-d' (`kill-word') does.) With a negative
  1783. argument, case conversion applies only to the part of the word before
  1784. point.
  1785. The other case conversion commands are `C-x C-u' (`upcase-region')
  1786. and `C-x C-l' (`downcase-region'), which convert everything between
  1787. point and mark to the specified case. Point and mark do not move.
  1788. The region case conversion commands `upcase-region' and
  1789. `downcase-region' are normally disabled. This means that they ask for
  1790. confirmation if you try to use them. When you confirm, you may enable
  1791. the command, which means it will not ask for confirmation again. *Note
  1792. Disabling::.
  1793. 
  1794. File: emacs, Node: Text Mode, Next: Outline Mode, Prev: Case, Up: Text
  1795. 25.7 Text Mode
  1796. ==============
  1797. Text mode is a major mode for editing files of text in a human
  1798. language. Files which have names ending in the extension `.txt' are
  1799. usually opened in Text mode (*note Choosing Modes::). To explicitly
  1800. switch to Text mode, type `M-x text-mode'.
  1801. In Text mode, only blank lines and page delimiters separate
  1802. paragraphs. As a result, paragraphs can be indented, and adaptive
  1803. filling determines what indentation to use when filling a paragraph.
  1804. *Note Adaptive Fill::.
  1805. In Text mode, the <TAB> (`indent-for-tab-command') command usually
  1806. inserts whitespace up to the next tab stop, instead of indenting the
  1807. current line. *Note Indentation::, for details.
  1808. Text mode turns off the features concerned with comments except when
  1809. you explicitly invoke them. It changes the syntax table so that
  1810. single-quotes are considered part of words (e.g. `don't' is considered
  1811. one word). However, if a word starts with a single-quote, it is
  1812. treated as a prefix for the purposes of capitalization (e.g. `M-c'
  1813. converts `'hello'' into `'Hello'', as expected).
  1814. If you indent the first lines of paragraphs, then you should use
  1815. Paragraph-Indent Text mode (`M-x paragraph-indent-text-mode') rather
  1816. than Text mode. In that mode, you do not need to have blank lines
  1817. between paragraphs, because the first-line indentation is sufficient to
  1818. start a paragraph; however paragraphs in which every line is indented
  1819. are not supported. Use `M-x paragraph-indent-minor-mode' to enable an
  1820. equivalent minor mode for situations where you shouldn't change the
  1821. major mode--in mail composition, for instance.
  1822. Text mode binds `M-<TAB>' to `ispell-complete-word'. This command
  1823. performs completion of the partial word in the buffer before point,
  1824. using the spelling dictionary as the space of possible words. *Note
  1825. Spelling::. If your window manager defines `M-<TAB>' to switch
  1826. windows, you can type `<ESC> <TAB>' or `C-M-i' instead.
  1827. Entering Text mode runs the mode hook `text-mode-hook' (*note Major
  1828. Modes::).
  1829. The following sections describe several major modes that are
  1830. "derived" from Text mode. These derivatives share most of the features
  1831. of Text mode described above. In particular, derivatives of Text mode
  1832. run `text-mode-hook' prior to running their own mode hooks.
  1833. 
  1834. File: emacs, Node: Outline Mode, Next: Org Mode, Prev: Text Mode, Up: Text
  1835. 25.8 Outline Mode
  1836. =================
  1837. Outline mode is a major mode derived from Text mode, which is
  1838. specialized for editing outlines. It provides commands to navigate
  1839. between entries in the outline structure, and commands to make parts of
  1840. a buffer temporarily invisible, so that the outline structure may be
  1841. more easily viewed. Type `M-x outline-mode' to switch to Outline mode.
  1842. Entering Outline mode runs the hook `text-mode-hook' followed by the
  1843. hook `outline-mode-hook' (*note Hooks::).
  1844. When you use an Outline mode command to make a line invisible (*note
  1845. Outline Visibility::), the line disappears from the screen. An
  1846. ellipsis (three periods in a row) is displayed at the end of the
  1847. previous visible line, to indicate the hidden text. Multiple
  1848. consecutive invisible lines produce just one ellipsis.
  1849. Editing commands that operate on lines, such as `C-n' and `C-p',
  1850. treat the text of the invisible line as part of the previous visible
  1851. line. Killing the ellipsis at the end of a visible line really kills
  1852. all the following invisible text associated with the ellipsis.
  1853. Outline minor mode is a buffer-local minor mode which provides the
  1854. same commands as the major mode, Outline mode, but can be used in
  1855. conjunction with other major modes. You can type `M-x
  1856. outline-minor-mode' to toggle Outline minor mode in the current buffer,
  1857. or use a file-local variable setting to enable it in a specific file
  1858. (*note File Variables::).
  1859. The major mode, Outline mode, provides special key bindings on the
  1860. `C-c' prefix. Outline minor mode provides similar bindings with `C-c
  1861. @' as the prefix; this is to reduce the conflicts with the major mode's
  1862. special commands. (The variable `outline-minor-mode-prefix' controls
  1863. the prefix used.)
  1864. * Menu:
  1865. * Outline Format:: What the text of an outline looks like.
  1866. * Outline Motion:: Special commands for moving through outlines.
  1867. * Outline Visibility:: Commands to control what is visible.
  1868. * Outline Views:: Outlines and multiple views.
  1869. * Foldout:: Folding means zooming in on outlines.
  1870. 
  1871. File: emacs, Node: Outline Format, Next: Outline Motion, Up: Outline Mode
  1872. 25.8.1 Format of Outlines
  1873. -------------------------
  1874. Outline mode assumes that the lines in the buffer are of two types:
  1875. "heading lines" and "body lines". A heading line represents a topic in
  1876. the outline. Heading lines start with one or more asterisk (`*')
  1877. characters; the number of asterisks determines the depth of the heading
  1878. in the outline structure. Thus, a heading line with one `*' is a major
  1879. topic; all the heading lines with two `*'s between it and the next
  1880. one-`*' heading are its subtopics; and so on. Any line that is not a
  1881. heading line is a body line. Body lines belong with the preceding
  1882. heading line. Here is an example:
  1883. * Food
  1884. This is the body,
  1885. which says something about the topic of food.
  1886. ** Delicious Food
  1887. This is the body of the second-level header.
  1888. ** Distasteful Food
  1889. This could have
  1890. a body too, with
  1891. several lines.
  1892. *** Dormitory Food
  1893. * Shelter
  1894. Another first-level topic with its header line.
  1895. A heading line together with all following body lines is called
  1896. collectively an "entry". A heading line together with all following
  1897. deeper heading lines and their body lines is called a "subtree".
  1898. You can customize the criterion for distinguishing heading lines by
  1899. setting the variable `outline-regexp'. (The recommended ways to do
  1900. this are in a major mode function or with a file local variable.) Any
  1901. line whose beginning has a match for this regexp is considered a
  1902. heading line. Matches that start within a line (not at the left
  1903. margin) do not count.
  1904. The length of the matching text determines the level of the heading;
  1905. longer matches make a more deeply nested level. Thus, for example, if
  1906. a text formatter has commands `@chapter', `@section' and `@subsection'
  1907. to divide the document into chapters and sections, you could make those
  1908. lines count as heading lines by setting `outline-regexp' to
  1909. `"@chap\\|@\\(sub\\)*section"'. Note the trick: the two words
  1910. `chapter' and `section' are equally long, but by defining the regexp to
  1911. match only `chap' we ensure that the length of the text matched on a
  1912. chapter heading is shorter, so that Outline mode will know that
  1913. sections are contained in chapters. This works as long as no other
  1914. command starts with `@chap'.
  1915. You can explicitly specify a rule for calculating the level of a
  1916. heading line by setting the variable `outline-level'. The value of
  1917. `outline-level' should be a function that takes no arguments and
  1918. returns the level of the current heading. The recommended ways to set
  1919. this variable are in a major mode command or with a file local variable.
  1920. 
  1921. File: emacs, Node: Outline Motion, Next: Outline Visibility, Prev: Outline Format, Up: Outline Mode
  1922. 25.8.2 Outline Motion Commands
  1923. ------------------------------
  1924. Outline mode provides special motion commands that move backward and
  1925. forward to heading lines.
  1926. `C-c C-n'
  1927. Move point to the next visible heading line
  1928. (`outline-next-visible-heading').
  1929. `C-c C-p'
  1930. Move point to the previous visible heading line
  1931. (`outline-previous-visible-heading').
  1932. `C-c C-f'
  1933. Move point to the next visible heading line at the same level as
  1934. the one point is on (`outline-forward-same-level').
  1935. `C-c C-b'
  1936. Move point to the previous visible heading line at the same level
  1937. (`outline-backward-same-level').
  1938. `C-c C-u'
  1939. Move point up to a lower-level (more inclusive) visible heading
  1940. line (`outline-up-heading').
  1941. `C-c C-n' (`outline-next-visible-heading') moves down to the next
  1942. heading line. `C-c C-p' (`outline-previous-visible-heading') moves
  1943. similarly backward. Both accept numeric arguments as repeat counts.
  1944. `C-c C-f' (`outline-forward-same-level') and `C-c C-b'
  1945. (`outline-backward-same-level') move from one heading line to another
  1946. visible heading at the same depth in the outline. `C-c C-u'
  1947. (`outline-up-heading') moves backward to another heading that is less
  1948. deeply nested.
  1949. 
  1950. File: emacs, Node: Outline Visibility, Next: Outline Views, Prev: Outline Motion, Up: Outline Mode
  1951. 25.8.3 Outline Visibility Commands
  1952. ----------------------------------
  1953. Outline mode provides several commands for temporarily hiding or
  1954. revealing parts of the buffer, based on the outline structure. These
  1955. commands are not undoable; their effects are simply not recorded by the
  1956. undo mechanism, so you can undo right past them (*note Undo::).
  1957. Many of these commands act on the "current" heading line. If point
  1958. is on a heading line, that is the current heading line; if point is on
  1959. a body line, the current heading line is the nearest preceding header
  1960. line.
  1961. `C-c C-c'
  1962. Make the current heading line's body invisible (`hide-entry').
  1963. `C-c C-e'
  1964. Make the current heading line's body visible (`show-entry').
  1965. `C-c C-d'
  1966. Make everything under the current heading invisible, not including
  1967. the heading itself (`hide-subtree').
  1968. `C-c C-s'
  1969. Make everything under the current heading visible, including body,
  1970. subheadings, and their bodies (`show-subtree').
  1971. `C-c C-l'
  1972. Make the body of the current heading line, and of all its
  1973. subheadings, invisible (`hide-leaves').
  1974. `C-c C-k'
  1975. Make all subheadings of the current heading line, at all levels,
  1976. visible (`show-branches').
  1977. `C-c C-i'
  1978. Make immediate subheadings (one level down) of the current heading
  1979. line visible (`show-children').
  1980. `C-c C-t'
  1981. Make all body lines in the buffer invisible (`hide-body').
  1982. `C-c C-a'
  1983. Make all lines in the buffer visible (`show-all').
  1984. `C-c C-q'
  1985. Hide everything except the top N levels of heading lines
  1986. (`hide-sublevels').
  1987. `C-c C-o'
  1988. Hide everything except for the heading or body that point is in,
  1989. plus the headings leading up from there to the top level of the
  1990. outline (`hide-other').
  1991. The simplest of these commands are `C-c C-c' (`hide-entry'), which
  1992. hides the body lines directly following the current heading line, and
  1993. `C-c C-e' (`show-entry'), which reveals them. Subheadings and their
  1994. bodies are not affected.
  1995. The commands `C-c C-d' (`hide-subtree') and `C-c C-s'
  1996. (`show-subtree') are more powerful. They apply to the current heading
  1997. line's "subtree": its body, all of its subheadings, both direct and
  1998. indirect, and all of their bodies.
  1999. The command `C-c C-l' (`hide-leaves') hides the body of the current
  2000. heading line as well as all the bodies in its subtree; the subheadings
  2001. themselves are left visible. The command `C-c C-k' (`show-branches')
  2002. reveals the subheadings, if they had previously been hidden (e.g. by
  2003. `C-c C-d'). The command `C-c C-i' (`show-children') is a weaker
  2004. version of this; it reveals just the direct subheadings, i.e. those one
  2005. level down.
  2006. The command `C-c C-o' (`hide-other') hides everything except the
  2007. entry that point is in, plus its parents (the headers leading up from
  2008. there to top level in the outline) and the top level headings.
  2009. The remaining commands affect the whole buffer. `C-c C-t'
  2010. (`hide-body') makes all body lines invisible, so that you see just the
  2011. outline structure (as a special exception, it will not hide lines at
  2012. the top of the file, preceding the first header line, even though these
  2013. are technically body lines). `C-c C-a' (`show-all') makes all lines
  2014. visible. `C-c C-q' (`hide-sublevels') hides all but the top level
  2015. headings; with a numeric argument N, it hides everything except the top
  2016. N levels of heading lines.
  2017. When incremental search finds text that is hidden by Outline mode,
  2018. it makes that part of the buffer visible. If you exit the search at
  2019. that position, the text remains visible. You can also automatically
  2020. make text visible as you navigate in it by using Reveal mode (`M-x
  2021. reveal-mode'), a buffer-local minor mode.
  2022. 
  2023. File: emacs, Node: Outline Views, Next: Foldout, Prev: Outline Visibility, Up: Outline Mode
  2024. 25.8.4 Viewing One Outline in Multiple Views
  2025. --------------------------------------------
  2026. You can display two views of a single outline at the same time, in
  2027. different windows. To do this, you must create an indirect buffer using
  2028. `M-x make-indirect-buffer'. The first argument of this command is the
  2029. existing outline buffer name, and its second argument is the name to
  2030. use for the new indirect buffer. *Note Indirect Buffers::.
  2031. Once the indirect buffer exists, you can display it in a window in
  2032. the normal fashion, with `C-x 4 b' or other Emacs commands. The Outline
  2033. mode commands to show and hide parts of the text operate on each buffer
  2034. independently; as a result, each buffer can have its own view. If you
  2035. want more than two views on the same outline, create additional indirect
  2036. buffers.
  2037. 
  2038. File: emacs, Node: Foldout, Prev: Outline Views, Up: Outline Mode
  2039. 25.8.5 Folding Editing
  2040. ----------------------
  2041. The Foldout package extends Outline mode and Outline minor mode with
  2042. "folding" commands. The idea of folding is that you zoom in on a
  2043. nested portion of the outline, while hiding its relatives at higher
  2044. levels.
  2045. Consider an Outline mode buffer with all the text and subheadings
  2046. under level-1 headings hidden. To look at what is hidden under one of
  2047. these headings, you could use `C-c C-e' (`M-x show-entry') to expose
  2048. the body, or `C-c C-i' to expose the child (level-2) headings.
  2049. With Foldout, you use `C-c C-z' (`M-x foldout-zoom-subtree'). This
  2050. exposes the body and child subheadings, and narrows the buffer so that
  2051. only the level-1 heading, the body and the level-2 headings are
  2052. visible. Now to look under one of the level-2 headings, position the
  2053. cursor on it and use `C-c C-z' again. This exposes the level-2 body
  2054. and its level-3 child subheadings and narrows the buffer again. Zooming
  2055. in on successive subheadings can be done as much as you like. A string
  2056. in the mode line shows how deep you've gone.
  2057. When zooming in on a heading, to see only the child subheadings
  2058. specify a numeric argument: `C-u C-c C-z'. The number of levels of
  2059. children can be specified too (compare `M-x show-children'), e.g. `M-2
  2060. C-c C-z' exposes two levels of child subheadings. Alternatively, the
  2061. body can be specified with a negative argument: `M-- C-c C-z'. The
  2062. whole subtree can be expanded, similarly to `C-c C-s' (`M-x
  2063. show-subtree'), by specifying a zero argument: `M-0 C-c C-z'.
  2064. While you're zoomed in, you can still use Outline mode's exposure and
  2065. hiding functions without disturbing Foldout. Also, since the buffer is
  2066. narrowed, "global" editing actions will only affect text under the
  2067. zoomed-in heading. This is useful for restricting changes to a
  2068. particular chapter or section of your document.
  2069. To unzoom (exit) a fold, use `C-c C-x' (`M-x foldout-exit-fold').
  2070. This hides all the text and subheadings under the top-level heading and
  2071. returns you to the previous view of the buffer. Specifying a numeric
  2072. argument exits that many levels of folds. Specifying a zero argument
  2073. exits all folds.
  2074. To cancel the narrowing of a fold without hiding the text and
  2075. subheadings, specify a negative argument. For example, `M--2 C-c C-x'
  2076. exits two folds and leaves the text and subheadings exposed.
  2077. Foldout mode also provides mouse commands for entering and exiting
  2078. folds, and for showing and hiding text:
  2079. `C-M-Mouse-1' zooms in on the heading clicked on
  2080. single click: expose body.
  2081. double click: expose subheadings.
  2082. triple click: expose body and subheadings.
  2083. quad click: expose entire subtree.
  2084. `C-M-Mouse-2' exposes text under the heading clicked on
  2085. single click: expose body.
  2086. double click: expose subheadings.
  2087. triple click: expose body and subheadings.
  2088. quad click: expose entire subtree.
  2089. `C-M-Mouse-3' hides text under the heading clicked on or exits fold
  2090. single click: hide subtree.
  2091. double click: exit fold and hide text.
  2092. triple click: exit fold without hiding text.
  2093. quad click: exit all folds and hide text.
  2094. You can specify different modifier keys (instead of `Control-Meta-')
  2095. by setting `foldout-mouse-modifiers'; but if you have already loaded
  2096. the `foldout.el' library, you must reload it in order for this to take
  2097. effect.
  2098. To use the Foldout package, you can type `M-x load-library <RET>
  2099. foldout <RET>'; or you can arrange for to do that automatically by
  2100. putting the following in your init file:
  2101. (eval-after-load "outline" '(require 'foldout))
  2102. 
  2103. File: emacs, Node: Org Mode, Next: TeX Mode, Prev: Outline Mode, Up: Text
  2104. 25.9 Org Mode
  2105. =============
  2106. Org mode is a variant of Outline mode for using Emacs as an organizer
  2107. and/or authoring system. Files with names ending in the extension
  2108. `.org' are opened in Org mode (*note Choosing Modes::). To explicitly
  2109. switch to Org mode, type `M-x org-mode'.
  2110. In Org mode, as in Outline mode, each entry has a heading line that
  2111. starts with one or more `*' characters. *Note Outline Format::. In
  2112. addition, any line that begins with the `#' character is treated as a
  2113. comment.
  2114. Org mode provides commands for easily viewing and manipulating the
  2115. outline structure. The simplest of these commands is <TAB>
  2116. (`org-cycle'). If invoked on a heading line, it cycles through the
  2117. different visibility states of the subtree: (i) showing only that
  2118. heading line, (ii) showing only the heading line and the heading lines
  2119. of its direct children, if any, and (iii) showing the entire subtree.
  2120. If invoked in a body line, the global binding for <TAB> is executed.
  2121. Typing <S-TAB> (`org-shifttab') anywhere in an Org mode buffer
  2122. cycles the visibility of the entire outline structure, between (i)
  2123. showing only top-level heading lines, (ii) showing all heading lines
  2124. but no body lines, and (iii) showing everything.
  2125. You can move an entire entry up or down in the buffer, including its
  2126. body lines and subtree (if any), by typing `M-<up>' (`org-metaup') or
  2127. `M-<down>' (`org-metadown') on the heading line. Similarly, you can
  2128. promote or demote a heading line with `M-<left>' (`org-metaleft') and
  2129. `M-<right>' (`org-metaright'). These commands execute their global
  2130. bindings if invoked on a body line.
  2131. The following subsections give basic instructions for using Org mode
  2132. as an organizer and as an authoring system. For details, *note The Org
  2133. Mode Manual: (org)Top.
  2134. * Menu:
  2135. * Org Organizer:: Managing TODO lists and agendas.
  2136. * Org Authoring:: Exporting Org buffers to various formats.
  2137. 
  2138. File: emacs, Node: Org Organizer, Next: Org Authoring, Up: Org Mode
  2139. 25.9.1 Org as an organizer
  2140. --------------------------
  2141. You can tag an Org entry as a "TODO" item by typing `C-c C-t'
  2142. (`org-todo') anywhere in the entry. This adds the keyword `TODO' to
  2143. the heading line. Typing `C-c C-t' again switches the keyword to
  2144. `DONE'; another `C-c C-t' removes the keyword entirely, and so forth.
  2145. You can customize the keywords used by `C-c C-t' via the variable
  2146. `org-todo-keywords'.
  2147. Apart from marking an entry as TODO, you can attach a date to it, by
  2148. typing `C-c C-s' (`org-schedule') in the entry. This prompts for a
  2149. date by popping up the Emacs Calendar (*note Calendar/Diary::), and
  2150. then adds the tag `SCHEDULED', together with the selected date, beneath
  2151. the heading line. The command `C-c C-d' (`org-deadline') has the same
  2152. effect, except that it uses the tag `DEADLINE'.
  2153. Once you have some TODO items planned in an Org file, you can add
  2154. that file to the list of "agenda files" by typing `C-c ['
  2155. (`org-agenda-file-to-front'). Org mode is designed to let you easily
  2156. maintain multiple agenda files, e.g. for organizing different aspects
  2157. of your life. The list of agenda files is stored in the variable
  2158. `org-agenda-files'.
  2159. To view items coming from your agenda files, type `M-x org-agenda'.
  2160. This command prompts for what you want to see: a list of things to do
  2161. this week, a list of TODO items with specific keywords, etc. *Note
  2162. Agenda Views: (org)Agenda Views, for details.
  2163. 
  2164. File: emacs, Node: Org Authoring, Prev: Org Organizer, Up: Org Mode
  2165. 25.9.2 Org as an authoring system
  2166. ---------------------------------
  2167. You may want to format your Org notes nicely and to prepare them for
  2168. export and publication. To export the current buffer, type `C-c C-e'
  2169. (`org-export') anywhere in an Org buffer. This command prompts for an
  2170. export format; currently supported formats include HTML, LaTeX,
  2171. OpenDocument (`.odt'), and PDF. Some formats, such as PDF, require
  2172. certain system tools to be installed.
  2173. To export several files at once to a specific directory, either
  2174. locally or over the network, you must define a list of projects through
  2175. the variable `org-publish-project-alist'. See its documentation for
  2176. details.
  2177. Org supports a simple markup scheme for applying text formatting to
  2178. exported documents:
  2179. - This text is /emphasized/
  2180. - This text is *in bold*
  2181. - This text is _underlined_
  2182. - This text uses =a teletype font=
  2183. #+begin_quote
  2184. ``This is a quote.''
  2185. #+end_quote
  2186. #+begin_example
  2187. This is an example.
  2188. #+end_example
  2189. For further details, see *note Exporting: (org)Exporting. and *note
  2190. Publishing: (org)Publishing.
  2191. 
  2192. File: emacs, Node: TeX Mode, Next: HTML Mode, Prev: Org Mode, Up: Text
  2193. 25.10 TeX Mode
  2194. ==============
  2195. Emacs provides special major modes for editing files written in TeX and
  2196. its related formats. TeX is a powerful text formatter written by
  2197. Donald Knuth; like GNU Emacs, it is free software. LaTeX is a
  2198. simplified input format for TeX, implemented using TeX macros. DocTeX
  2199. is a special file format in which the LaTeX sources are written,
  2200. combining sources with documentation. SliTeX is an obsolete special
  2201. form of LaTeX.(1)
  2202. TeX mode has four variants: Plain TeX mode, LaTeX mode, DocTeX mode,
  2203. and SliTeX mode. These distinct major modes differ only slightly, and
  2204. are designed for editing the four different formats. Emacs selects the
  2205. appropriate mode by looking at the contents of the buffer. (This is
  2206. done by the `tex-mode' command, which is normally called automatically
  2207. when you visit a TeX-like file. *Note Choosing Modes::.) If the
  2208. contents are insufficient to determine this, Emacs chooses the mode
  2209. specified by the variable `tex-default-mode'; its default value is
  2210. `latex-mode'. If Emacs does not guess right, you can select the
  2211. correct variant of TeX mode using the command `M-x plain-tex-mode', `M-x
  2212. latex-mode', `M-x slitex-mode', or `doctex-mode'.
  2213. The following sections document the features of TeX mode and its
  2214. variants. There are several other TeX-related Emacs packages, which
  2215. are not documented in this manual:
  2216. * BibTeX mode is a major mode for BibTeX files, which are commonly
  2217. used for keeping bibliographic references for LaTeX documents. For
  2218. more information, see the documentation string for the command
  2219. `bibtex-mode'.
  2220. * The RefTeX package provides a minor mode which can be used with
  2221. LaTeX mode to manage bibliographic references. *Note The RefTeX
  2222. Manual: (reftex)Top.
  2223. * The AUCTeX package provides more advanced features for editing TeX
  2224. and its related formats, including the ability to preview TeX
  2225. equations within Emacs buffers. Unlike BibTeX mode and the RefTeX
  2226. package, AUCTeX is not distributed with Emacs by default. It can
  2227. be downloaded via the Package Menu (*note Packages::); once
  2228. installed, see *note The AUCTeX Manual: (auctex)Top.
  2229. * Menu:
  2230. * TeX Editing:: Special commands for editing in TeX mode.
  2231. * LaTeX Editing:: Additional commands for LaTeX input files.
  2232. * TeX Print:: Commands for printing part of a file with TeX.
  2233. * TeX Misc:: Customization of TeX mode, and related features.
  2234. ---------- Footnotes ----------
  2235. (1) It has been replaced by the `slides' document class, which comes
  2236. with LaTeX.
  2237. 
  2238. File: emacs, Node: TeX Editing, Next: LaTeX Editing, Up: TeX Mode
  2239. 25.10.1 TeX Editing Commands
  2240. ----------------------------
  2241. `"'
  2242. Insert, according to context, either ```' or `"' or `'''
  2243. (`tex-insert-quote').
  2244. `C-j'
  2245. Insert a paragraph break (two newlines) and check the previous
  2246. paragraph for unbalanced braces or dollar signs
  2247. (`tex-terminate-paragraph').
  2248. `M-x tex-validate-region'
  2249. Check each paragraph in the region for unbalanced braces or dollar
  2250. signs.
  2251. `C-c {'
  2252. Insert `{}' and position point between them (`tex-insert-braces').
  2253. `C-c }'
  2254. Move forward past the next unmatched close brace (`up-list').
  2255. In TeX, the character `"' is not normally used; instead, quotations
  2256. begin with ```' and end with `'''. TeX mode therefore binds the `"'
  2257. key to the `tex-insert-quote' command. This inserts ```' after
  2258. whitespace or an open brace, `"' after a backslash, and `''' after any
  2259. other character.
  2260. As a special exception, if you type `"' when the text before point
  2261. is either ```' or `''', Emacs replaces that preceding text with a
  2262. single `"' character. You can therefore type `""' to insert `"',
  2263. should you ever need to do so. (You can also use `C-q "' to insert
  2264. this character.)
  2265. In TeX mode, `$' has a special syntax code which attempts to
  2266. understand the way TeX math mode delimiters match. When you insert a
  2267. `$' that is meant to exit math mode, the position of the matching `$'
  2268. that entered math mode is displayed for a second. This is the same
  2269. feature that displays the open brace that matches a close brace that is
  2270. inserted. However, there is no way to tell whether a `$' enters math
  2271. mode or leaves it; so when you insert a `$' that enters math mode, the
  2272. previous `$' position is shown as if it were a match, even though they
  2273. are actually unrelated.
  2274. TeX uses braces as delimiters that must match. Some users prefer to
  2275. keep braces balanced at all times, rather than inserting them singly.
  2276. Use `C-c {' (`tex-insert-braces') to insert a pair of braces. It
  2277. leaves point between the two braces so you can insert the text that
  2278. belongs inside. Afterward, use the command `C-c }' (`up-list') to move
  2279. forward past the close brace.
  2280. There are two commands for checking the matching of braces. `C-j'
  2281. (`tex-terminate-paragraph') checks the paragraph before point, and
  2282. inserts two newlines to start a new paragraph. It outputs a message in
  2283. the echo area if any mismatch is found. `M-x tex-validate-region'
  2284. checks a region, paragraph by paragraph. The errors are listed in an
  2285. `*Occur*' buffer; you can use the usual Occur mode commands in that
  2286. buffer, such as `C-c C-c', to visit a particular mismatch (*note Other
  2287. Repeating Search::).
  2288. Note that Emacs commands count square brackets and parentheses in
  2289. TeX mode, not just braces. This is not strictly correct for the
  2290. purpose of checking TeX syntax. However, parentheses and square
  2291. brackets are likely to be used in text as matching delimiters, and it
  2292. is useful for the various motion commands and automatic match display
  2293. to work with them.
  2294. 
  2295. File: emacs, Node: LaTeX Editing, Next: TeX Print, Prev: TeX Editing, Up: TeX Mode
  2296. 25.10.2 LaTeX Editing Commands
  2297. ------------------------------
  2298. LaTeX mode provides a few extra features not applicable to plain TeX:
  2299. `C-c C-o'
  2300. Insert `\begin' and `\end' for LaTeX block and position point on a
  2301. line between them (`tex-latex-block').
  2302. `C-c C-e'
  2303. Close the innermost LaTeX block not yet closed
  2304. (`tex-close-latex-block').
  2305. In LaTeX input, `\begin' and `\end' tags are used to group blocks of
  2306. text. To insert a block, type `C-c C-o' (`tex-latex-block'). This
  2307. prompts for a block type, and inserts the appropriate matching `\begin'
  2308. and `\end' tags, leaving a blank line between the two and moving point
  2309. there.
  2310. When entering the block type argument to `C-c C-o', you can use the
  2311. usual completion commands (*note Completion::). The default completion
  2312. list contains the standard LaTeX block types. If you want additional
  2313. block types for completion, customize the list variable
  2314. `latex-block-names'.
  2315. In LaTeX input, `\begin' and `\end' tags must balance. You can use
  2316. `C-c C-e' (`tex-close-latex-block') to insert an `\end' tag which
  2317. matches the last unmatched `\begin'. It also indents the `\end' to
  2318. match the corresponding `\begin', and inserts a newline after the
  2319. `\end' tag if point is at the beginning of a line. The minor mode
  2320. `latex-electric-env-pair-mode' automatically inserts an `\end' or
  2321. `\begin' tag for you when you type the corresponding one.
  2322. 
  2323. File: emacs, Node: TeX Print, Next: TeX Misc, Prev: LaTeX Editing, Up: TeX Mode
  2324. 25.10.3 TeX Printing Commands
  2325. -----------------------------
  2326. You can invoke TeX as an subprocess of Emacs, supplying either the
  2327. entire contents of the buffer or just part of it (e.g. one chapter of a
  2328. larger document).
  2329. `C-c C-b'
  2330. Invoke TeX on the entire current buffer (`tex-buffer').
  2331. `C-c C-r'
  2332. Invoke TeX on the current region, together with the buffer's header
  2333. (`tex-region').
  2334. `C-c C-f'
  2335. Invoke TeX on the current file (`tex-file').
  2336. `C-c C-v'
  2337. Preview the output from the last `C-c C-r', `C-c C-b', or `C-c
  2338. C-f' command (`tex-view').
  2339. `C-c C-p'
  2340. Print the output from the last `C-c C-b', `C-c C-r', or `C-c C-f'
  2341. command (`tex-print').
  2342. `C-c <TAB>'
  2343. Invoke BibTeX on the current file (`tex-bibtex-file').
  2344. `C-c C-l'
  2345. Recenter the window showing output from TeX so that the last line
  2346. can be seen (`tex-recenter-output-buffer').
  2347. `C-c C-k'
  2348. Kill the TeX subprocess (`tex-kill-job').
  2349. `C-c C-c'
  2350. Invoke some other compilation command on the entire current buffer
  2351. (`tex-compile').
  2352. To pass the current buffer through TeX, type `C-c C-b'
  2353. (`tex-buffer'). The formatted output goes in a temporary file,
  2354. normally a `.dvi' file. Afterwards, you can type `C-c C-v'
  2355. (`tex-view') to launch an external program, such as `xdvi', to view
  2356. this output file. You can also type `C-c C-p' (`tex-print') to print a
  2357. hardcopy of the output file.
  2358. By default, `C-c C-b' runs TeX in the current directory. The output
  2359. of TeX also goes in this directory. To run TeX in a different
  2360. directory, change the variable `tex-directory' to the desired directory
  2361. name. If your environment variable `TEXINPUTS' contains relative
  2362. directory names, or if your files contains `\input' commands with
  2363. relative file names, then `tex-directory' _must_ be `"."' or you will
  2364. get the wrong results. Otherwise, it is safe to specify some other
  2365. directory, such as `"/tmp"'.
  2366. The buffer's TeX variant determines what shell command `C-c C-b'
  2367. actually runs. In Plain TeX mode, it is specified by the variable
  2368. `tex-run-command', which defaults to `"tex"'. In LaTeX mode, it is
  2369. specified by `latex-run-command', which defaults to `"latex"'. The
  2370. shell command that `C-c C-v' runs to view the `.dvi' output is
  2371. determined by the variable `tex-dvi-view-command', regardless of the
  2372. TeX variant. The shell command that `C-c C-p' runs to print the output
  2373. is determined by the variable `tex-dvi-print-command'.
  2374. Normally, Emacs automatically appends the output file name to the
  2375. shell command strings described in the preceding paragraph. For
  2376. example, if `tex-dvi-view-command' is `"xdvi"', `C-c C-v' runs `xdvi
  2377. OUTPUT-FILE-NAME'. In some cases, however, the file name needs to be
  2378. embedded in the command, e.g. if you need to provide the file name as
  2379. an argument to one command whose output is piped to another. You can
  2380. specify where to put the file name with `*' in the command string. For
  2381. example,
  2382. (setq tex-dvi-print-command "dvips -f * | lpr")
  2383. The terminal output from TeX, including any error messages, appears
  2384. in a buffer called `*tex-shell*'. If TeX gets an error, you can switch
  2385. to this buffer and feed it input (this works as in Shell mode; *note
  2386. Interactive Shell::). Without switching to this buffer you can scroll
  2387. it so that its last line is visible by typing `C-c C-l'.
  2388. Type `C-c C-k' (`tex-kill-job') to kill the TeX process if you see
  2389. that its output is no longer useful. Using `C-c C-b' or `C-c C-r' also
  2390. kills any TeX process still running.
  2391. You can also pass an arbitrary region through TeX by typing `C-c
  2392. C-r' (`tex-region'). This is tricky, however, because most files of
  2393. TeX input contain commands at the beginning to set parameters and
  2394. define macros, without which no later part of the file will format
  2395. correctly. To solve this problem, `C-c C-r' allows you to designate a
  2396. part of the file as containing essential commands; it is included
  2397. before the specified region as part of the input to TeX. The
  2398. designated part of the file is called the "header".
  2399. To indicate the bounds of the header in Plain TeX mode, you insert
  2400. two special strings in the file. Insert `%**start of header' before the
  2401. header, and `%**end of header' after it. Each string must appear
  2402. entirely on one line, but there may be other text on the line before or
  2403. after. The lines containing the two strings are included in the header.
  2404. If `%**start of header' does not appear within the first 100 lines of
  2405. the buffer, `C-c C-r' assumes that there is no header.
  2406. In LaTeX mode, the header begins with `\documentclass' or
  2407. `\documentstyle' and ends with `\begin{document}'. These are commands
  2408. that LaTeX requires you to use in any case, so nothing special needs to
  2409. be done to identify the header.
  2410. The commands (`tex-buffer') and (`tex-region') do all of their work
  2411. in a temporary directory, and do not have available any of the auxiliary
  2412. files needed by TeX for cross-references; these commands are generally
  2413. not suitable for running the final copy in which all of the
  2414. cross-references need to be correct.
  2415. When you want the auxiliary files for cross references, use `C-c
  2416. C-f' (`tex-file') which runs TeX on the current buffer's file, in that
  2417. file's directory. Before running TeX, it offers to save any modified
  2418. buffers. Generally, you need to use (`tex-file') twice to get the
  2419. cross-references right.
  2420. The value of the variable `tex-start-options' specifies options for
  2421. the TeX run.
  2422. The value of the variable `tex-start-commands' specifies TeX
  2423. commands for starting TeX. The default value causes TeX to run in
  2424. nonstop mode. To run TeX interactively, set the variable to `""'.
  2425. Large TeX documents are often split into several files--one main
  2426. file, plus subfiles. Running TeX on a subfile typically does not work;
  2427. you have to run it on the main file. In order to make `tex-file'
  2428. useful when you are editing a subfile, you can set the variable
  2429. `tex-main-file' to the name of the main file. Then `tex-file' runs TeX
  2430. on that file.
  2431. The most convenient way to use `tex-main-file' is to specify it in a
  2432. local variable list in each of the subfiles. *Note File Variables::.
  2433. For LaTeX files, you can use BibTeX to process the auxiliary file
  2434. for the current buffer's file. BibTeX looks up bibliographic citations
  2435. in a data base and prepares the cited references for the bibliography
  2436. section. The command `C-c <TAB>' (`tex-bibtex-file') runs the shell
  2437. command (`tex-bibtex-command') to produce a `.bbl' file for the current
  2438. buffer's file. Generally, you need to do `C-c C-f' (`tex-file') once
  2439. to generate the `.aux' file, then do `C-c <TAB>' (`tex-bibtex-file'),
  2440. and then repeat `C-c C-f' (`tex-file') twice more to get the
  2441. cross-references correct.
  2442. To invoke some other compilation program on the current TeX buffer,
  2443. type `C-c C-c' (`tex-compile'). This command knows how to pass
  2444. arguments to many common programs, including `pdflatex', `yap', `xdvi',
  2445. and `dvips'. You can select your desired compilation program using the
  2446. standard completion keys (*note Completion::).
  2447. 
  2448. File: emacs, Node: TeX Misc, Prev: TeX Print, Up: TeX Mode
  2449. 25.10.4 TeX Mode Miscellany
  2450. ---------------------------
  2451. Entering any variant of TeX mode runs the hooks `text-mode-hook' and
  2452. `tex-mode-hook'. Then it runs either `plain-tex-mode-hook',
  2453. `latex-mode-hook', or `slitex-mode-hook', whichever is appropriate.
  2454. Starting the TeX shell runs the hook `tex-shell-hook'. *Note Hooks::.
  2455. The commands `M-x iso-iso2tex', `M-x iso-tex2iso', `M-x
  2456. iso-iso2gtex' and `M-x iso-gtex2iso' can be used to convert between
  2457. Latin-1 encoded files and TeX-encoded equivalents.
  2458. 
  2459. File: emacs, Node: HTML Mode, Next: Nroff Mode, Prev: TeX Mode, Up: Text
  2460. 25.11 SGML and HTML Modes
  2461. =========================
  2462. The major modes for SGML and HTML provide indentation support and
  2463. commands for operating on tags. HTML mode is a slightly customized
  2464. variant of SGML mode.
  2465. `C-c C-n'
  2466. Interactively specify a special character and insert the SGML
  2467. `&'-command for that character (`sgml-name-char').
  2468. `C-c C-t'
  2469. Interactively specify a tag and its attributes (`sgml-tag'). This
  2470. command asks you for a tag name and for the attribute values, then
  2471. inserts both the opening tag and the closing tag, leaving point
  2472. between them.
  2473. With a prefix argument N, the command puts the tag around the N
  2474. words already present in the buffer after point. Whenever a
  2475. region is active, it puts the tag around the region (when Transient
  2476. Mark mode is off, it does this when a numeric argument of -1 is
  2477. supplied.)
  2478. `C-c C-a'
  2479. Interactively insert attribute values for the current tag
  2480. (`sgml-attributes').
  2481. `C-c C-f'
  2482. Skip across a balanced tag group (which extends from an opening tag
  2483. through its corresponding closing tag) (`sgml-skip-tag-forward').
  2484. A numeric argument acts as a repeat count.
  2485. `C-c C-b'
  2486. Skip backward across a balanced tag group (which extends from an
  2487. opening tag through its corresponding closing tag)
  2488. (`sgml-skip-tag-backward'). A numeric argument acts as a repeat
  2489. count.
  2490. `C-c C-d'
  2491. Delete the tag at or after point, and delete the matching tag too
  2492. (`sgml-delete-tag'). If the tag at or after point is an opening
  2493. tag, delete the closing tag too; if it is a closing tag, delete the
  2494. opening tag too.
  2495. `C-c ? TAG <RET>'
  2496. Display a description of the meaning of tag TAG (`sgml-tag-help').
  2497. If the argument TAG is empty, describe the tag at point.
  2498. `C-c /'
  2499. Insert a close tag for the innermost unterminated tag
  2500. (`sgml-close-tag'). If called within a tag or a comment, close it
  2501. instead of inserting a close tag.
  2502. `C-c 8'
  2503. Toggle a minor mode in which Latin-1 characters insert the
  2504. corresponding SGML commands that stand for them, instead of the
  2505. characters themselves (`sgml-name-8bit-mode').
  2506. `C-c C-v'
  2507. Run a shell command (which you must specify) to validate the
  2508. current buffer as SGML (`sgml-validate').
  2509. `C-c TAB'
  2510. Toggle the visibility of existing tags in the buffer. This can be
  2511. used as a cheap preview (`sgml-tags-invisible').
  2512. The major mode for editing XML documents is called nXML mode. This
  2513. is a powerful major mode that can recognize many existing XML schema
  2514. and use them to provide completion of XML elements via `C-<RET>' or
  2515. `M-<TAB>', as well as "on-the-fly" XML validation with error
  2516. highlighting. To enable nXML mode in an existing buffer, type `M-x
  2517. nxml-mode', or, equivalently, `M-x xml-mode'. Emacs uses nXML mode for
  2518. files which have the extension `.xml'. For XHTML files, which have the
  2519. extension `.xhtml', Emacs uses HTML mode by default; you can make it
  2520. use nXML mode by customizing the variable `auto-mode-alist' (*note
  2521. Choosing Modes::). nXML mode is described in its own manual: *Note
  2522. nXML Mode: (nxml-mode)Top.
  2523. You may choose to use the less powerful SGML mode for editing XML,
  2524. since XML is a strict subset of SGML. To enable SGML mode in an
  2525. existing buffer, type `M-x sgml-mode'. On enabling SGML mode, Emacs
  2526. examines the buffer to determine whether it is XML; if so, it sets the
  2527. variable `sgml-xml-mode' to a non-`nil' value. This causes SGML mode's
  2528. tag insertion commands, described above, to always insert explicit
  2529. closing tags as well.
  2530. 
  2531. File: emacs, Node: Nroff Mode, Next: Enriched Text, Prev: HTML Mode, Up: Text
  2532. 25.12 Nroff Mode
  2533. ================
  2534. Nroff mode, a major mode derived from Text mode, is specialized for
  2535. editing nroff files (e.g. Unix man pages). Type `M-x nroff-mode' to
  2536. enter this mode. Entering Nroff mode runs the hook `text-mode-hook',
  2537. then `nroff-mode-hook' (*note Hooks::).
  2538. In Nroff mode, nroff command lines are treated as paragraph
  2539. separators, pages are separated by `.bp' commands, and comments start
  2540. with backslash-doublequote. It also defines these commands:
  2541. `M-n'
  2542. Move to the beginning of the next line that isn't an nroff command
  2543. (`forward-text-line'). An argument is a repeat count.
  2544. `M-p'
  2545. Like `M-n' but move up (`backward-text-line').
  2546. `M-?'
  2547. Displays in the echo area the number of text lines (lines that are
  2548. not nroff commands) in the region (`count-text-lines').
  2549. Electric Nroff mode is a buffer-local minor mode that can be used
  2550. with Nroff mode. To toggle this minor mode, type `M-x
  2551. electric-nroff-mode' (*note Minor Modes::). When the mode is on, each
  2552. time you type <RET> to end a line containing an nroff command that
  2553. opens a kind of grouping, the nroff command to close that grouping is
  2554. automatically inserted on the following line.
  2555. If you use Outline minor mode with Nroff mode (*note Outline
  2556. Mode::), heading lines are lines of the form `.H' followed by a number
  2557. (the header level).
  2558. 
  2559. File: emacs, Node: Enriched Text, Next: Text Based Tables, Prev: Nroff Mode, Up: Text
  2560. 25.13 Enriched Text
  2561. ===================
  2562. Enriched mode is a minor mode for editing formatted text files in a
  2563. WYSIWYG ("what you see is what you get") fashion. When Enriched mode
  2564. is enabled, you can apply various formatting properties to the text in
  2565. the buffer, such as fonts and colors; upon saving the buffer, those
  2566. properties are saved together with the text, using the MIME
  2567. `text/enriched' file format.
  2568. Enriched mode is typically used with Text mode (*note Text Mode::).
  2569. It is _not_ compatible with Font Lock mode, which is used by many major
  2570. modes, including most programming language modes, for syntax
  2571. highlighting (*note Font Lock::). Unlike Enriched mode, Font Lock mode
  2572. assigns text properties automatically, based on the current buffer
  2573. contents; those properties are not saved to disk.
  2574. The file `etc/enriched.doc' in the Emacs distribution serves as an
  2575. example of the features of Enriched mode.
  2576. * Menu:
  2577. * Enriched Mode:: Entering and exiting Enriched mode.
  2578. * Hard and Soft Newlines:: There are two different kinds of newlines.
  2579. * Editing Format Info:: How to edit text properties.
  2580. * Enriched Faces:: Bold, italic, underline, etc.
  2581. * Enriched Indentation:: Changing the left and right margins.
  2582. * Enriched Justification:: Centering, setting text flush with the
  2583. left or right margin, etc.
  2584. * Enriched Properties:: The "special" text properties submenu.
  2585. 
  2586. File: emacs, Node: Enriched Mode, Next: Hard and Soft Newlines, Up: Enriched Text
  2587. 25.13.1 Enriched Mode
  2588. ---------------------
  2589. Enriched mode is a buffer-local minor mode (*note Minor Modes::). When
  2590. you visit a file that has been saved in the `text/enriched' format,
  2591. Emacs automatically enables Enriched mode, and applies the formatting
  2592. information in the file to the buffer text. When you save a buffer
  2593. with Enriched mode enabled, it is saved using the `text/enriched'
  2594. format, including the formatting information.
  2595. To create a new file of formatted text, visit the nonexistent file
  2596. and type `M-x enriched-mode'. This command actually toggles Enriched
  2597. mode. With a prefix argument, it enables Enriched mode if the argument
  2598. is positive, and disables Enriched mode otherwise. If you disable
  2599. Enriched mode, Emacs no longer saves the buffer using the
  2600. `text/enriched' format; any formatting properties that have been added
  2601. to the buffer remain in the buffer, but they are not saved to disk.
  2602. Enriched mode does not save all Emacs text properties, only those
  2603. specified in the variable `enriched-translations'. These include
  2604. properties for fonts, colors, indentation, and justification.
  2605. If you visit a file and Emacs fails to recognize that it is in the
  2606. `text/enriched' format, type `M-x format-decode-buffer'. This command
  2607. prompts for a file format, and re-reads the file in that format.
  2608. Specifying the `text/enriched' format automatically enables Enriched
  2609. mode.
  2610. To view a `text/enriched' file in raw form (as plain text with
  2611. markup tags rather than formatted text), use `M-x find-file-literally'
  2612. (*note Visiting::).
  2613. *Note Format Conversion: (elisp)Format Conversion, for details of
  2614. how Emacs recognizes and converts file formats like `text/enriched'.
  2615. *Note Text Properties: (elisp)Text Properties, for more information
  2616. about text properties.
  2617. 
  2618. File: emacs, Node: Hard and Soft Newlines, Next: Editing Format Info, Prev: Enriched Mode, Up: Enriched Text
  2619. 25.13.2 Hard and Soft Newlines
  2620. ------------------------------
  2621. In Enriched mode, Emacs distinguishes between two different kinds of
  2622. newlines, "hard" newlines and "soft" newlines. You can also enable or
  2623. disable this feature in other buffers, by typing `M-x
  2624. use-hard-newlines'.
  2625. Hard newlines are used to separate paragraphs, or anywhere there
  2626. needs to be a line break regardless of how the text is filled; soft
  2627. newlines are used for filling. The <RET> (`newline') and `C-o'
  2628. (`open-line') commands insert hard newlines. The fill commands,
  2629. including Auto Fill (*note Auto Fill::), insert only soft newlines and
  2630. delete only soft newlines, leaving hard newlines alone.
  2631. Thus, when editing with Enriched mode, you should not use <RET> or
  2632. `C-o' to break lines in the middle of filled paragraphs. Use Auto Fill
  2633. mode or explicit fill commands (*note Fill Commands::) instead. Use
  2634. <RET> or `C-o' where line breaks should always remain, such as in
  2635. tables and lists. For such lines, you may also want to set the
  2636. justification style to `unfilled' (*note Enriched Justification::).
  2637. 
  2638. File: emacs, Node: Editing Format Info, Next: Enriched Faces, Prev: Hard and Soft Newlines, Up: Enriched Text
  2639. 25.13.3 Editing Format Information
  2640. ----------------------------------
  2641. The easiest way to alter properties is with the Text Properties menu.
  2642. You can get to this menu from the Edit menu in the menu bar (*note Menu
  2643. Bar::), or with `C-Mouse-2' (*note Menu Mouse Clicks::). Some of the
  2644. commands in the Text Properties menu are listed below (you can also
  2645. invoke them with `M-x'):
  2646. `Remove Face Properties'
  2647. Remove face properties from the region
  2648. (`facemenu-remove-face-props').
  2649. `Remove Text Properties'
  2650. Remove all text properties from the region, including face
  2651. properties (`facemenu-remove-all').
  2652. `Describe Properties'
  2653. List all text properties and other information about the character
  2654. following point (`describe-text-properties').
  2655. `Display Faces'
  2656. Display a list of defined faces (`list-faces-display'). *Note
  2657. Faces::.
  2658. `Display Colors'
  2659. Display a list of defined colors (`list-colors-display'). *Note
  2660. Colors::.
  2661. The other menu entries are described in the following sections.
  2662. 
  2663. File: emacs, Node: Enriched Faces, Next: Enriched Indentation, Prev: Editing Format Info, Up: Enriched Text
  2664. 25.13.4 Faces in Enriched Text
  2665. ------------------------------
  2666. The following commands can be used to add or remove faces (*note
  2667. Faces::). Each applies to the text in the region if the mark is
  2668. active, and to the next self-inserting character if the mark is
  2669. inactive. With a prefix argument, each command applies to the next
  2670. self-inserting character even if the region is active.
  2671. `M-o d'
  2672. Remove all `face' properties (`facemenu-set-default').
  2673. `M-o b'
  2674. Apply the `bold' face (`facemenu-set-bold').
  2675. `M-o i'
  2676. Apply the `italic' face (`facemenu-set-italic').
  2677. `M-o l'
  2678. Apply the `bold-italic' face (`facemenu-set-bold-italic').
  2679. `M-o u'
  2680. Apply the `underline' face (`facemenu-set-underline').
  2681. `M-o o FACE <RET>'
  2682. Apply the face FACE (`facemenu-set-face').
  2683. `M-x facemenu-set-foreground'
  2684. Prompt for a color (*note Colors::), and apply it as a foreground
  2685. color.
  2686. `M-x facemenu-set-background'
  2687. Prompt for a color, and apply it as a background color.
  2688. These command are also available via the Text Properties menu.
  2689. A self-inserting character normally inherits the face properties
  2690. (and most other text properties) from the preceding character in the
  2691. buffer. If you use one of the above commands to specify the face for
  2692. the next self-inserting character, that character will not inherit the
  2693. faces properties from the preceding character, but it will still
  2694. inherit other text properties.
  2695. Enriched mode defines two additional faces: `excerpt' and `fixed'.
  2696. These correspond to codes used in the text/enriched file format. The
  2697. `excerpt' face is intended for quotations; by default, it appears the
  2698. same as `italic'. The `fixed' face specifies fixed-width text; by
  2699. default, it appears the same as `bold'.
  2700. 
  2701. File: emacs, Node: Enriched Indentation, Next: Enriched Justification, Prev: Enriched Faces, Up: Enriched Text
  2702. 25.13.5 Indentation in Enriched Text
  2703. ------------------------------------
  2704. In Enriched mode, you can specify different amounts of indentation for
  2705. the right or left margin of a paragraph or a part of a paragraph.
  2706. These margins also affect fill commands such as `M-q' (*note Filling::).
  2707. The Indentation submenu of Text Properties offers commands for
  2708. specifying indentation:
  2709. `Indent More'
  2710. Indent the region by 4 columns (`increase-left-margin'). In
  2711. Enriched mode, this command is also available on `C-x <TAB>'; if
  2712. you supply a numeric argument, that says how many columns to add
  2713. to the margin (a negative argument reduces the number of columns).
  2714. `Indent Less'
  2715. Remove 4 columns of indentation from the region.
  2716. `Indent Right More'
  2717. Make the text narrower by indenting 4 columns at the right margin.
  2718. `Indent Right Less'
  2719. Remove 4 columns of indentation from the right margin.
  2720. The variable `standard-indent' specifies how many columns these
  2721. commands should add to or subtract from the indentation. The default
  2722. value is 4. The default right margin for Enriched mode is controlled
  2723. by the variable `fill-column', as usual.
  2724. You can also type `C-c [' (`set-left-margin') and `C-c ]'
  2725. (`set-right-margin') to set the left and right margins. You can
  2726. specify the margin width with a numeric argument; otherwise these
  2727. commands prompt for a value via the minibuffer.
  2728. The fill prefix, if any, works in addition to the specified paragraph
  2729. indentation: `C-x .' does not include the specified indentation's
  2730. whitespace in the new value for the fill prefix, and the fill commands
  2731. look for the fill prefix after the indentation on each line. *Note
  2732. Fill Prefix::.
  2733. 
  2734. File: emacs, Node: Enriched Justification, Next: Enriched Properties, Prev: Enriched Indentation, Up: Enriched Text
  2735. 25.13.6 Justification in Enriched Text
  2736. --------------------------------------
  2737. In Enriched mode, you can use the following commands to specify various
  2738. "justification styles" for filling. These commands apply to the
  2739. paragraph containing point, or, if the region is active, to all
  2740. paragraphs overlapping the region.
  2741. `M-j l'
  2742. Align lines to the left margin (`set-justification-left').
  2743. `M-j r'
  2744. Align lines to the right margin (`set-justification-right').
  2745. `M-j b'
  2746. Align lines to both margins, inserting spaces in the middle of the
  2747. line to achieve this (`set-justification-full').
  2748. `M-j c'
  2749. `M-S'
  2750. Center lines between the margins (`set-justification-center').
  2751. `M-j u'
  2752. Turn off filling entirely (`set-justification-none'). The fill
  2753. commands do nothing on text with this setting. You can, however,
  2754. still indent the left margin.
  2755. You can also specify justification styles using the Justification
  2756. submenu in the Text Properties menu. The default justification style
  2757. is specified by the per-buffer variable `default-justification'. Its
  2758. value should be one of the symbols `left', `right', `full', `center', or
  2759. `none'.
  2760. 
  2761. File: emacs, Node: Enriched Properties, Prev: Enriched Justification, Up: Enriched Text
  2762. 25.13.7 Setting Other Text Properties
  2763. -------------------------------------
  2764. The Special Properties submenu of Text Properties has entries for
  2765. adding or removing three other text properties: `read-only', (which
  2766. disallows alteration of the text), `invisible' (which hides text), and
  2767. `intangible' (which disallows moving point within the text). The
  2768. `Remove Special' menu item removes all of these special properties from
  2769. the text in the region.
  2770. The `invisible' and `intangible' properties are not saved.
  2771. 
  2772. File: emacs, Node: Text Based Tables, Next: Two-Column, Prev: Enriched Text, Up: Text
  2773. 25.14 Editing Text-based Tables
  2774. ===============================
  2775. The `table' package provides commands to easily edit text-based tables.
  2776. Here is an example of what such a table looks like:
  2777. +-----------------+--------------------------------+-----------------+
  2778. | Command | Description | Key Binding |
  2779. +-----------------+--------------------------------+-----------------+
  2780. | forward-char |Move point right N characters | C-f |
  2781. | |(left if N is negative). | |
  2782. | | | |
  2783. +-----------------+--------------------------------+-----------------+
  2784. | backward-char |Move point left N characters | C-b |
  2785. | |(right if N is negative). | |
  2786. | | | |
  2787. +-----------------+--------------------------------+-----------------+
  2788. When Emacs recognizes such a stretch of text as a table (*note Table
  2789. Recognition::), editing the contents of each table cell will
  2790. automatically resize the table, whenever the contents become too large
  2791. to fit in the cell. You can use the commands defined in the following
  2792. sections for navigating and editing the table layout.
  2793. Type `M-x table-fixed-width-mode' to toggle the automatic table
  2794. resizing feature.
  2795. * Menu:
  2796. * Table Definition:: What is a text based table.
  2797. * Table Creation:: How to create a table.
  2798. * Table Recognition:: How to activate and deactivate tables.
  2799. * Cell Commands:: Cell-oriented commands in a table.
  2800. * Cell Justification:: Justifying cell contents.
  2801. * Table Rows and Columns:: Inserting and deleting rows and columns.
  2802. * Table Conversion:: Converting between plain text and tables.
  2803. * Table Misc:: Table miscellany.
  2804. 
  2805. File: emacs, Node: Table Definition, Next: Table Creation, Up: Text Based Tables
  2806. 25.14.1 What is a Text-based Table?
  2807. -----------------------------------
  2808. A "table" consists of a rectangular text area which is divided into
  2809. "cells". Each cell must be at least one character wide and one
  2810. character high, not counting its border lines. A cell can be
  2811. subdivided into more cells, but they cannot overlap.
  2812. Cell border lines are drawn with three special characters, specified
  2813. by the following variables:
  2814. `table-cell-vertical-char'
  2815. The character used for vertical lines. The default is `|'.
  2816. `table-cell-horizontal-chars'
  2817. The characters used for horizontal lines. The default is `"-="'.
  2818. `table-cell-intersection-char'
  2819. The character used for the intersection of horizontal and vertical
  2820. lines. The default is `+'.
  2821. The following are examples of _invalid_ tables:
  2822. +-----+ +--+ +-++--+
  2823. | | | | | || |
  2824. | | | | | || |
  2825. +--+ | +--+--+ +-++--+
  2826. | | | | | | +-++--+
  2827. | | | | | | | || |
  2828. +--+--+ +--+--+ +-++--+
  2829. a b c
  2830. From left to right:
  2831. a. Overlapped cells or non-rectangular cells are not allowed.
  2832. b. The border must be rectangular.
  2833. c. Cells must have a minimum width/height of one character.
  2834. 
  2835. File: emacs, Node: Table Creation, Next: Table Recognition, Prev: Table Definition, Up: Text Based Tables
  2836. 25.14.2 Creating a Table
  2837. ------------------------
  2838. To create a text-based table from scratch, type `M-x table-insert'.
  2839. This command prompts for the number of table columns, the number of
  2840. table rows, cell width and cell height. The cell width and cell height
  2841. do not include the cell borders; each can be specified as a single
  2842. integer (which means each cell is given the same width/height), or as a
  2843. sequence of integers separated by spaces or commas (which specify the
  2844. width/height of the individual table columns/rows, counting from left
  2845. to right for table columns and from top to bottom for table rows). The
  2846. specified table is then inserted at point.
  2847. The table inserted by `M-x table-insert' contains special text
  2848. properties, which tell Emacs to treat it specially as a text-based
  2849. table. If you save the buffer to a file and visit it again later,
  2850. those properties are lost, and the table appears to Emacs as an
  2851. ordinary piece of text. See the next section, for how to convert it
  2852. back into a table.
  2853. 
  2854. File: emacs, Node: Table Recognition, Next: Cell Commands, Prev: Table Creation, Up: Text Based Tables
  2855. 25.14.3 Table Recognition
  2856. -------------------------
  2857. Existing text-based tables in a buffer, which lack the special text
  2858. properties applied by `M-x table-insert', are not treated specially as
  2859. tables. To apply those text properties, type `M-x table-recognize'.
  2860. This command scans the current buffer, "recognizes" valid table cells,
  2861. and applies the relevant text properties. Conversely, type `M-x
  2862. table-unrecognize' to "unrecognize" all tables in the current buffer,
  2863. removing the special text properties and converting tables back to
  2864. plain text.
  2865. You can also use the following commands to selectively recognize or
  2866. unrecognize tables:
  2867. `M-x table-recognize-region'
  2868. Recognize tables within the current region.
  2869. `M-x table-unrecognize-region'
  2870. Unrecognize tables within the current region.
  2871. `M-x table-recognize-table'
  2872. Recognize the table at point and activate it.
  2873. `M-x table-unrecognize-table'
  2874. Deactivate the table at point.
  2875. `M-x table-recognize-cell'
  2876. Recognize the cell at point and activate it.
  2877. `M-x table-unrecognize-cell'
  2878. Deactivate the cell at point.
  2879. *Note Table Conversion::, for another way to recognize a table.
  2880. 
  2881. File: emacs, Node: Cell Commands, Next: Cell Justification, Prev: Table Recognition, Up: Text Based Tables
  2882. 25.14.4 Commands for Table Cells
  2883. --------------------------------
  2884. The commands `M-x table-forward-cell' and `M-x table-backward-cell'
  2885. move point from the current cell to an adjacent cell. The order is
  2886. cyclic: when point is in the last cell of a table, `M-x
  2887. table-forward-cell' moves to the first cell. Likewise, when point is
  2888. on the first cell, `M-x table-backward-cell' moves to the last cell.
  2889. `M-x table-span-cell' prompts for a direction--right, left, above,
  2890. or below--and merges the current cell with the adjacent cell in that
  2891. direction. This command signals an error if the merge would result in
  2892. an illegitimate cell layout.
  2893. `M-x table-split-cell' splits the current cell vertically or
  2894. horizontally, prompting for the direction with the minibuffer. To
  2895. split in a specific direction, use `M-x table-split-cell-vertically'
  2896. and `M-x table-split-cell-horizontally'. When splitting vertically,
  2897. the old cell contents are automatically split between the two new
  2898. cells. When splitting horizontally, you are prompted for how to divide
  2899. the cell contents, if the cell is non-empty; the options are `split'
  2900. (divide the contents at point), `left' (put all the contents in the
  2901. left cell), and `right' (put all the contents in the right cell).
  2902. The following commands enlarge or shrink a cell. By default, they
  2903. resize by one row or column; if a numeric argument is supplied, that
  2904. specifies the number of rows or columns to resize by.
  2905. `M-x table-heighten-cell'
  2906. Enlarge the current cell vertically.
  2907. `M-x table-shorten-cell'
  2908. Shrink the current cell vertically.
  2909. `M-x table-widen-cell'
  2910. Enlarge the current cell horizontally.
  2911. `M-x table-narrow-cell'
  2912. Shrink the current cell horizontally.
  2913. 
  2914. File: emacs, Node: Cell Justification, Next: Table Rows and Columns, Prev: Cell Commands, Up: Text Based Tables
  2915. 25.14.5 Cell Justification
  2916. --------------------------
  2917. The command `M-x table-justify' imposes "justification" on one or more
  2918. cells in a text-based table. Justification determines how the text in
  2919. the cell is aligned, relative to the edges of the cell. Each cell in a
  2920. table can be separately justified.
  2921. `M-x table-justify' first prompts for what to justify; the options
  2922. are `cell' (just the current cell), `column' (all cells in the current
  2923. table column) and `row' (all cells in the current table row). The
  2924. command then prompts for the justification style; the options are
  2925. `left', `center', `right', `top', `middle', `bottom', or `none'
  2926. (meaning no vertical justification).
  2927. Horizontal and vertical justification styles are specified
  2928. independently, and both types can be in effect simultaneously; for
  2929. instance, you can call `M-x table-justify' twice, once to specify
  2930. `right' justification and once to specify `bottom' justification, to
  2931. align the contents of a cell to the bottom right.
  2932. The justification style is stored in the buffer as a text property,
  2933. and is lost when you kill the buffer or exit Emacs. However, the table
  2934. recognition commands, such as `M-x table-recognize' (*note Table
  2935. Recognition::), attempt to determine and re-apply each cell's
  2936. justification style, by examining its contents. To disable this
  2937. feature, change the variable `table-detect-cell-alignment' to `nil'.
  2938. 
  2939. File: emacs, Node: Table Rows and Columns, Next: Table Conversion, Prev: Cell Justification, Up: Text Based Tables
  2940. 25.14.6 Table Rows and Columns
  2941. ------------------------------
  2942. `M-x table-insert-row' inserts a row of cells before the current table
  2943. row. The current row, together with point, is pushed down past the new
  2944. row. To insert a row after the last row at the bottom of a table,
  2945. invoke this command with point below the table, just below the bottom
  2946. edge. You can insert more than one row at a time by using a numeric
  2947. prefix argument.
  2948. Similarly, `M-x table-insert-column' inserts a column of cells to
  2949. the left of the current table column. To insert a column to the right
  2950. side of the rightmost column, invoke this command with point to the
  2951. right of the rightmost column, outside the table. A numeric prefix
  2952. argument specifies the number of columns to insert.
  2953. `M-x table-delete-column' deletes the column of cells at point.
  2954. Similarly, `M-x table-delete-row' deletes the row of cells at point. A
  2955. numeric prefix argument to either command specifies the number of
  2956. columns or rows to delete.
  2957. 
  2958. File: emacs, Node: Table Conversion, Next: Table Misc, Prev: Table Rows and Columns, Up: Text Based Tables
  2959. 25.14.7 Converting Between Plain Text and Tables
  2960. ------------------------------------------------
  2961. The command `M-x table-capture' captures plain text in a region and
  2962. turns it into a table. Unlike `M-x table-recognize' (*note Table
  2963. Recognition::), the original text does not need to have a table
  2964. appearance; it only needs to have a logical table-like structure.
  2965. For example, suppose we have the following numbers, which are
  2966. divided into three lines and separated horizontally by commas:
  2967. 1, 2, 3, 4
  2968. 5, 6, 7, 8
  2969. , 9, 10
  2970. Invoking `M-x table-capture' on that text produces this table:
  2971. +-----+-----+-----+-----+
  2972. |1 |2 |3 |4 |
  2973. +-----+-----+-----+-----+
  2974. |5 |6 |7 |8 |
  2975. +-----+-----+-----+-----+
  2976. | |9 |10 | |
  2977. +-----+-----+-----+-----+
  2978. `M-x table-release' does the opposite: it converts a table back to
  2979. plain text, removing its cell borders.
  2980. One application of this pair of commands is to edit a text in
  2981. layout. Look at the following three paragraphs (the latter two are
  2982. indented with header lines):
  2983. table-capture is a powerful command.
  2984. Here are some things it can do:
  2985. Parse Cell Items Using row and column delimiter regexps,
  2986. it parses the specified text area and
  2987. extracts cell items into a table.
  2988. Applying `table-capture' to a region containing the above text, with
  2989. empty strings for the column and row delimiter regexps, creates a table
  2990. with a single cell like the following one.
  2991. +----------------------------------------------------------+
  2992. |table-capture is a powerful command. |
  2993. |Here are some things it can do: |
  2994. | |
  2995. |Parse Cell Items Using row and column delimiter regexps,|
  2996. | it parses the specified text area and |
  2997. | extracts cell items into a table. |
  2998. +----------------------------------------------------------+
  2999. We can then use the cell splitting commands (*note Cell Commands::) to
  3000. subdivide the table so that each paragraph occupies a cell:
  3001. +----------------------------------------------------------+
  3002. |table-capture is a powerful command. |
  3003. |Here are some things it can do: |
  3004. +-----------------+----------------------------------------+
  3005. |Parse Cell Items | Using row and column delimiter regexps,|
  3006. | | it parses the specified text area and |
  3007. | | extracts cell items into a table. |
  3008. +-----------------+----------------------------------------+
  3009. Each cell can now be edited independently without affecting the layout
  3010. of other cells. When finished, we can invoke `M-x table-release' to
  3011. convert the table back to plain text.
  3012. 
  3013. File: emacs, Node: Table Misc, Prev: Table Conversion, Up: Text Based Tables
  3014. 25.14.8 Table Miscellany
  3015. ------------------------
  3016. The command `table-query-dimension' reports the layout of the table and
  3017. table cell at point. Here is an example of its output:
  3018. Cell: (21w, 6h), Table: (67w, 16h), Dim: (2c, 3r), Total Cells: 5
  3019. This indicates that the current cell is 21 characters wide and 6 lines
  3020. high, the table is 67 characters wide and 16 lines high with 2 columns
  3021. and 3 rows, and a total of 5 cells.
  3022. `M-x table-insert-sequence' inserts a string into each cell. Each
  3023. string is a part of a sequence i.e. a series of increasing integer
  3024. numbers.
  3025. `M-x table-generate-source' generates a table formatted for a
  3026. specific markup language. It asks for a language (which must be one of
  3027. `html', `latex', or `cals'), a destination buffer in which to put the
  3028. result, and a table caption, and then inserts the generated table into
  3029. the specified buffer. The default destination buffer is `table.LANG',
  3030. where LANG is the language you specified.
  3031. 
  3032. File: emacs, Node: Two-Column, Prev: Text Based Tables, Up: Text
  3033. 25.15 Two-Column Editing
  3034. ========================
  3035. Two-column mode lets you conveniently edit two side-by-side columns of
  3036. text. It uses two side-by-side windows, each showing its own buffer.
  3037. There are three ways to enter two-column mode:
  3038. `<F2> 2' or `C-x 6 2'
  3039. Enter two-column mode with the current buffer on the left, and on
  3040. the right, a buffer whose name is based on the current buffer's
  3041. name (`2C-two-columns'). If the right-hand buffer doesn't already
  3042. exist, it starts out empty; the current buffer's contents are not
  3043. changed.
  3044. This command is appropriate when the current buffer is empty or
  3045. contains just one column and you want to add another column.
  3046. `<F2> s' or `C-x 6 s'
  3047. Split the current buffer, which contains two-column text, into two
  3048. buffers, and display them side by side (`2C-split'). The current
  3049. buffer becomes the left-hand buffer, but the text in the right-hand
  3050. column is moved into the right-hand buffer. The current column
  3051. specifies the split point. Splitting starts with the current line
  3052. and continues to the end of the buffer.
  3053. This command is appropriate when you have a buffer that already
  3054. contains two-column text, and you wish to separate the columns
  3055. temporarily.
  3056. `<F2> b BUFFER <RET>'
  3057. `C-x 6 b BUFFER <RET>'
  3058. Enter two-column mode using the current buffer as the left-hand
  3059. buffer, and using buffer BUFFER as the right-hand buffer
  3060. (`2C-associate-buffer').
  3061. `<F2> s' or `C-x 6 s' looks for a column separator, which is a
  3062. string that appears on each line between the two columns. You can
  3063. specify the width of the separator with a numeric argument to `<F2> s';
  3064. that many characters, before point, constitute the separator string.
  3065. By default, the width is 1, so the column separator is the character
  3066. before point.
  3067. When a line has the separator at the proper place, `<F2> s' puts the
  3068. text after the separator into the right-hand buffer, and deletes the
  3069. separator. Lines that don't have the column separator at the proper
  3070. place remain unsplit; they stay in the left-hand buffer, and the
  3071. right-hand buffer gets an empty line to correspond. (This is the way
  3072. to write a line that "spans both columns while in two-column mode":
  3073. write it in the left-hand buffer, and put an empty line in the
  3074. right-hand buffer.)
  3075. The command `C-x 6 <RET>' or `<F2> <RET>' (`2C-newline') inserts a
  3076. newline in each of the two buffers at corresponding positions. This is
  3077. the easiest way to add a new line to the two-column text while editing
  3078. it in split buffers.
  3079. When you have edited both buffers as you wish, merge them with `<F2>
  3080. 1' or `C-x 6 1' (`2C-merge'). This copies the text from the right-hand
  3081. buffer as a second column in the other buffer. To go back to
  3082. two-column editing, use `<F2> s'.
  3083. Use `<F2> d' or `C-x 6 d' to dissociate the two buffers, leaving
  3084. each as it stands (`2C-dissociate'). If the other buffer, the one not
  3085. current when you type `<F2> d', is empty, `<F2> d' kills it.
  3086. 
  3087. File: emacs, Node: Programs, Next: Building, Prev: Text, Up: Top
  3088. 26 Editing Programs
  3089. *******************
  3090. This chapter describes Emacs features for facilitating editing
  3091. programs. Some of the things these features can do are:
  3092. * Find or move over top-level definitions (*note Defuns::).
  3093. * Apply the usual indentation conventions of the language (*note
  3094. Program Indent::).
  3095. * Balance parentheses (*note Parentheses::).
  3096. * Insert, kill or align comments (*note Comments::).
  3097. * Highlight program syntax (*note Font Lock::).
  3098. * Menu:
  3099. * Program Modes:: Major modes for editing programs.
  3100. * Defuns:: Commands to operate on major top-level parts
  3101. of a program.
  3102. * Program Indent:: Adjusting indentation to show the nesting.
  3103. * Parentheses:: Commands that operate on parentheses.
  3104. * Comments:: Inserting, killing, and aligning comments.
  3105. * Documentation:: Getting documentation of functions you plan to call.
  3106. * Hideshow:: Displaying blocks selectively.
  3107. * Symbol Completion:: Completion on symbol names of your program or language.
  3108. * Glasses:: Making identifiersLikeThis more readable.
  3109. * Semantic:: Suite of editing tools based on source code parsing.
  3110. * Misc for Programs:: Other Emacs features useful for editing programs.
  3111. * C Modes:: Special commands of C, C++, Objective-C, Java,
  3112. IDL, Pike and AWK modes.
  3113. * Asm Mode:: Asm mode and its special features.
  3114. * Fortran:: Fortran mode and its special features.
  3115. 
  3116. File: emacs, Node: Program Modes, Next: Defuns, Up: Programs
  3117. 26.1 Major Modes for Programming Languages
  3118. ==========================================
  3119. Emacs has specialized major modes (*note Major Modes::) for many
  3120. programming languages. A programming language mode typically specifies
  3121. the syntax of expressions, the customary rules for indentation, how to
  3122. do syntax highlighting for the language, and how to find the beginning
  3123. or end of a function definition. It often has features for compiling
  3124. and debugging programs as well. The major mode for each language is
  3125. named after the language; for instance, the major mode for the C
  3126. programming language is `c-mode'.
  3127. Emacs has programming language modes for Lisp, Scheme, the
  3128. Scheme-based DSSSL expression language, Ada, ASM, AWK, C, C++, Delphi,
  3129. Fortran, Icon, IDL (CORBA), IDLWAVE, Java, Javascript, Metafont (TeX's
  3130. companion for font creation), Modula2, Objective-C, Octave, Pascal,
  3131. Perl, Pike, PostScript, Prolog, Python, Ruby, Simula, Tcl, and VHDL.
  3132. An alternative mode for Perl is called CPerl mode. Modes are also
  3133. available for the scripting languages of the common GNU and Unix
  3134. shells, VMS DCL, and MS-DOS/MS-Windows `BAT' files, and for makefiles,
  3135. DNS master files, and various sorts of configuration files.
  3136. Ideally, Emacs should have a major mode for each programming
  3137. language that you might want to edit. If it doesn't have a mode for
  3138. your favorite language, the mode might be implemented in a package not
  3139. distributed with Emacs (*note Packages::); or you can contribute one.
  3140. In most programming languages, indentation should vary from line to
  3141. line to illustrate the structure of the program. Therefore, in most
  3142. programming language modes, typing <TAB> updates the indentation of the
  3143. current line (*note Program Indent::). Furthermore, <DEL> is usually
  3144. bound to `backward-delete-char-untabify', which deletes backward
  3145. treating each tab as if it were the equivalent number of spaces, so
  3146. that you can delete one column of indentation without worrying whether
  3147. the whitespace consists of spaces or tabs.
  3148. Entering a programming language mode runs the custom Lisp functions
  3149. specified in the hook variable `prog-mode-hook', followed by those
  3150. specified in the mode's own mode hook (*note Major Modes::). For
  3151. instance, entering C mode runs the hooks `prog-mode-hook' and
  3152. `c-mode-hook'. *Note Hooks::, for information about hooks.
  3153. Separate manuals are available for the modes for Ada (*note Ada
  3154. Mode: (ada-mode)Top.), C/C++/Objective C/Java/Corba IDL/Pike/AWK (*note
  3155. CC Mode: (ccmode)Top.), and IDLWAVE (*note IDLWAVE: (idlwave)Top.).
  3156. 
  3157. File: emacs, Node: Defuns, Next: Program Indent, Prev: Program Modes, Up: Programs
  3158. 26.2 Top-Level Definitions, or Defuns
  3159. =====================================
  3160. In Emacs, a major definition at the top level in the buffer, such as a
  3161. function, is called a "defun". The name comes from Lisp, but in Emacs
  3162. we use it for all languages.
  3163. * Menu:
  3164. * Left Margin Paren:: An open-paren or similar opening delimiter
  3165. starts a defun if it is at the left margin.
  3166. * Moving by Defuns:: Commands to move over or mark a major definition.
  3167. * Imenu:: Making buffer indexes as menus.
  3168. * Which Function:: Which Function mode shows which function you are in.
  3169. 
  3170. File: emacs, Node: Left Margin Paren, Next: Moving by Defuns, Up: Defuns
  3171. 26.2.1 Left Margin Convention
  3172. -----------------------------
  3173. Many programming-language modes assume by default that any opening
  3174. delimiter found at the left margin is the start of a top-level
  3175. definition, or defun. Therefore, *don't put an opening delimiter at
  3176. the left margin unless it should have that significance*. For
  3177. instance, never put an open-parenthesis at the left margin in a Lisp
  3178. file unless it is the start of a top-level list.
  3179. The convention speeds up many Emacs operations, which would
  3180. otherwise have to scan back to the beginning of the buffer to analyze
  3181. the syntax of the code.
  3182. If you don't follow this convention, not only will you have trouble
  3183. when you explicitly use the commands for motion by defuns; other
  3184. features that use them will also give you trouble. This includes the
  3185. indentation commands (*note Program Indent::) and Font Lock mode (*note
  3186. Font Lock::).
  3187. The most likely problem case is when you want an opening delimiter
  3188. at the start of a line inside a string. To avoid trouble, put an
  3189. escape character (`\', in C and Emacs Lisp, `/' in some other Lisp
  3190. dialects) before the opening delimiter. This will not affect the
  3191. contents of the string, but will prevent that opening delimiter from
  3192. starting a defun. Here's an example:
  3193. (insert "Foo:
  3194. \(bar)
  3195. ")
  3196. To help you catch violations of this convention, Font Lock mode
  3197. highlights confusing opening delimiters (those that ought to be quoted)
  3198. in bold red.
  3199. If you need to override this convention, you can do so by setting
  3200. the variable `open-paren-in-column-0-is-defun-start'. If this user
  3201. option is set to `t' (the default), opening parentheses or braces at
  3202. column zero always start defuns. When it is `nil', defuns are found by
  3203. searching for parens or braces at the outermost level.
  3204. Usually, you should leave this option at its default value of `t'.
  3205. If your buffer contains parentheses or braces in column zero which
  3206. don't start defuns, and it is somehow impractical to remove these
  3207. parentheses or braces, it might be helpful to set the option to `nil'.
  3208. Be aware that this might make scrolling and display in large buffers
  3209. quite sluggish. Furthermore, the parentheses and braces must be
  3210. correctly matched throughout the buffer for it to work properly.
  3211. 
  3212. File: emacs, Node: Moving by Defuns, Next: Imenu, Prev: Left Margin Paren, Up: Defuns
  3213. 26.2.2 Moving by Defuns
  3214. -----------------------
  3215. These commands move point or set up the region based on top-level major
  3216. definitions, also called "defuns".
  3217. `C-M-a'
  3218. Move to beginning of current or preceding defun
  3219. (`beginning-of-defun').
  3220. `C-M-e'
  3221. Move to end of current or following defun (`end-of-defun').
  3222. `C-M-h'
  3223. Put region around whole current or following defun (`mark-defun').
  3224. The commands to move to the beginning and end of the current defun
  3225. are `C-M-a' (`beginning-of-defun') and `C-M-e' (`end-of-defun'). If
  3226. you repeat one of these commands, or use a positive numeric argument,
  3227. each repetition moves to the next defun in the direction of motion.
  3228. `C-M-a' with a negative argument -N moves forward N times to the
  3229. next beginning of a defun. This is not exactly the same place that
  3230. `C-M-e' with argument N would move to; the end of this defun is not
  3231. usually exactly the same place as the beginning of the following defun.
  3232. (Whitespace, comments, and perhaps declarations can separate them.)
  3233. Likewise, `C-M-e' with a negative argument moves back to an end of a
  3234. defun, which is not quite the same as `C-M-a' with a positive argument.
  3235. To operate on the current defun, use `C-M-h' (`mark-defun'), which
  3236. sets the mark at the end of the current defun and puts point at its
  3237. beginning. *Note Marking Objects::. This is the easiest way to get
  3238. ready to kill the defun in order to move it to a different place in the
  3239. file. If you use the command while point is between defuns, it uses
  3240. the following defun. If you use the command while the mark is already
  3241. active, it sets the mark but does not move point; furthermore, each
  3242. successive use of `C-M-h' extends the end of the region to include one
  3243. more defun.
  3244. In C mode, `C-M-h' runs the function `c-mark-function', which is
  3245. almost the same as `mark-defun'; the difference is that it backs up
  3246. over the argument declarations, function name and returned data type so
  3247. that the entire C function is inside the region. This is an example of
  3248. how major modes adjust the standard key bindings so that they do their
  3249. standard jobs in a way better fitting a particular language. Other
  3250. major modes may replace any or all of these key bindings for that
  3251. purpose.
  3252. 
  3253. File: emacs, Node: Imenu, Next: Which Function, Prev: Moving by Defuns, Up: Defuns
  3254. 26.2.3 Imenu
  3255. ------------
  3256. The Imenu facility offers a way to find the major definitions in a file
  3257. by name. It is also useful in text formatter major modes, where it
  3258. treats each chapter, section, etc., as a definition. (*Note Tags::,
  3259. for a more powerful feature that handles multiple files together.)
  3260. If you type `M-x imenu', it reads the name of a definition using the
  3261. minibuffer, then moves point to that definition. You can use
  3262. completion to specify the name; the command always displays the whole
  3263. list of valid names.
  3264. Alternatively, you can bind the command `imenu' to a mouse click.
  3265. Then it displays mouse menus for you to select a definition name. You
  3266. can also add the buffer's index to the menu bar by calling
  3267. `imenu-add-menubar-index'. If you want to have this menu bar item
  3268. available for all buffers in a certain major mode, you can do this by
  3269. adding `imenu-add-menubar-index' to its mode hook. But if you have
  3270. done that, you will have to wait a little while each time you visit a
  3271. file in that mode, while Emacs finds all the definitions in that buffer.
  3272. When you change the contents of a buffer, if you add or delete
  3273. definitions, you can update the buffer's index based on the new
  3274. contents by invoking the `*Rescan*' item in the menu. Rescanning
  3275. happens automatically if you set `imenu-auto-rescan' to a non-`nil'
  3276. value. There is no need to rescan because of small changes in the text.
  3277. You can customize the way the menus are sorted by setting the
  3278. variable `imenu-sort-function'. By default, names are ordered as they
  3279. occur in the buffer; if you want alphabetic sorting, use the symbol
  3280. `imenu--sort-by-name' as the value. You can also define your own
  3281. comparison function by writing Lisp code.
  3282. Imenu provides the information to guide Which Function mode (*note
  3283. Which Function::). The Speedbar can also use it (*note Speedbar::).
  3284. 
  3285. File: emacs, Node: Which Function, Prev: Imenu, Up: Defuns
  3286. 26.2.4 Which Function Mode
  3287. --------------------------
  3288. Which Function mode is a global minor mode (*note Minor Modes::) which
  3289. displays the current function name in the mode line, updating it as you
  3290. move around in a buffer.
  3291. To either enable or disable Which Function mode, use the command
  3292. `M-x which-function-mode'. Although Which Function mode is a global
  3293. minor mode, it takes effect only in certain major modes: those listed
  3294. in the variable `which-func-modes'. If the value of `which-func-modes'
  3295. is `t' rather than a list of modes, then Which Function mode applies to
  3296. all major modes that know how to support it--in other words, all the
  3297. major modes that support Imenu.
  3298. 
  3299. File: emacs, Node: Program Indent, Next: Parentheses, Prev: Defuns, Up: Programs
  3300. 26.3 Indentation for Programs
  3301. =============================
  3302. The best way to keep a program properly indented is to use Emacs to
  3303. reindent it as you change it. Emacs has commands to indent either a
  3304. single line, a specified number of lines, or all of the lines inside a
  3305. single parenthetical grouping.
  3306. *Note Indentation::, for general information about indentation. This
  3307. section describes indentation features specific to programming language
  3308. modes.
  3309. * Menu:
  3310. * Basic Indent:: Indenting a single line.
  3311. * Multi-line Indent:: Commands to reindent many lines at once.
  3312. * Lisp Indent:: Specifying how each Lisp function should be indented.
  3313. * C Indent:: Extra features for indenting C and related modes.
  3314. * Custom C Indent:: Controlling indentation style for C and related modes.
  3315. Emacs also provides a Lisp pretty-printer in the `pp' package, which
  3316. reformats Lisp objects with nice-looking indentation.
  3317. 
  3318. File: emacs, Node: Basic Indent, Next: Multi-line Indent, Up: Program Indent
  3319. 26.3.1 Basic Program Indentation Commands
  3320. -----------------------------------------
  3321. `<TAB>'
  3322. Adjust indentation of current line (`indent-for-tab-command').
  3323. `C-j'
  3324. Insert a newline, then adjust indentation of following line
  3325. (`newline-and-indent').
  3326. The basic indentation command is <TAB> (`indent-for-tab-command'),
  3327. which was documented in *note Indentation::. In programming language
  3328. modes, <TAB> indents the current line, based on the indentation and
  3329. syntactic content of the preceding lines; if the region is active,
  3330. <TAB> indents each line within the region, not just the current line.
  3331. The command `C-j' (`newline-and-indent'), which was documented in
  3332. *note Indentation Commands::, does the same as <RET> followed by <TAB>:
  3333. it inserts a new line, then adjusts the line's indentation.
  3334. When indenting a line that starts within a parenthetical grouping,
  3335. Emacs usually places the start of the line under the preceding line
  3336. within the group, or under the text after the parenthesis. If you
  3337. manually give one of these lines a nonstandard indentation (e.g. for
  3338. aesthetic purposes), the lines below will follow it.
  3339. The indentation commands for most programming language modes assume
  3340. that a open-parenthesis, open-brace or other opening delimiter at the
  3341. left margin is the start of a function. If the code you are editing
  3342. violates this assumption--even if the delimiters occur in strings or
  3343. comments--you must set `open-paren-in-column-0-is-defun-start' to `nil'
  3344. for indentation to work properly. *Note Left Margin Paren::.
  3345. 
  3346. File: emacs, Node: Multi-line Indent, Next: Lisp Indent, Prev: Basic Indent, Up: Program Indent
  3347. 26.3.2 Indenting Several Lines
  3348. ------------------------------
  3349. Sometimes, you may want to reindent several lines of code at a time.
  3350. One way to do this is to use the mark; when the mark is active and the
  3351. region is non-empty, <TAB> indents every line in the region.
  3352. Alternatively, the command `C-M-\' (`indent-region') indents every line
  3353. in the region, whether or not the mark is active (*note Indentation
  3354. Commands::).
  3355. In addition, Emacs provides the following commands for indenting
  3356. large chunks of code:
  3357. `C-M-q'
  3358. Reindent all the lines within one parenthetical grouping.
  3359. `C-u <TAB>'
  3360. Shift an entire parenthetical grouping rigidly sideways so that its
  3361. first line is properly indented.
  3362. `M-x indent-code-rigidly'
  3363. Shift all the lines in the region rigidly sideways, but do not
  3364. alter lines that start inside comments and strings.
  3365. To reindent the contents of a single parenthetical grouping,
  3366. position point before the beginning of the grouping and type `C-M-q'.
  3367. This changes the relative indentation within the grouping, without
  3368. affecting its overall indentation (i.e. the indentation of the line
  3369. where the grouping starts). The function that `C-M-q' runs depends on
  3370. the major mode; it is `indent-pp-sexp' in Lisp mode, `c-indent-exp' in
  3371. C mode, etc. To correct the overall indentation as well, type <TAB>
  3372. first.
  3373. If you like the relative indentation within a grouping but not the
  3374. indentation of its first line, move point to that first line and type
  3375. `C-u <TAB>'. In Lisp, C, and some other major modes, <TAB> with a
  3376. numeric argument reindents the current line as usual, then reindents by
  3377. the same amount all the lines in the parenthetical grouping starting on
  3378. the current line. It is clever, though, and does not alter lines that
  3379. start inside strings. Neither does it alter C preprocessor lines when
  3380. in C mode, but it does reindent any continuation lines that may be
  3381. attached to them.
  3382. The command `M-x indent-code-rigidly' rigidly shifts all the lines
  3383. in the region sideways, like `indent-rigidly' does (*note Indentation
  3384. Commands::). It doesn't alter the indentation of lines that start
  3385. inside a string, unless the region also starts inside that string. The
  3386. prefix arg specifies the number of columns to indent.
  3387. 
  3388. File: emacs, Node: Lisp Indent, Next: C Indent, Prev: Multi-line Indent, Up: Program Indent
  3389. 26.3.3 Customizing Lisp Indentation
  3390. -----------------------------------
  3391. The indentation pattern for a Lisp expression can depend on the function
  3392. called by the expression. For each Lisp function, you can choose among
  3393. several predefined patterns of indentation, or define an arbitrary one
  3394. with a Lisp program.
  3395. The standard pattern of indentation is as follows: the second line
  3396. of the expression is indented under the first argument, if that is on
  3397. the same line as the beginning of the expression; otherwise, the second
  3398. line is indented underneath the function name. Each following line is
  3399. indented under the previous line whose nesting depth is the same.
  3400. If the variable `lisp-indent-offset' is non-`nil', it overrides the
  3401. usual indentation pattern for the second line of an expression, so that
  3402. such lines are always indented `lisp-indent-offset' more columns than
  3403. the containing list.
  3404. Certain functions override the standard pattern. Functions whose
  3405. names start with `def' treat the second lines as the start of a "body",
  3406. by indenting the second line `lisp-body-indent' additional columns
  3407. beyond the open-parenthesis that starts the expression.
  3408. You can override the standard pattern in various ways for individual
  3409. functions, according to the `lisp-indent-function' property of the
  3410. function name. This is normally done for macro definitions, using the
  3411. `declare' construct. *Note Defining Macros: (elisp)Defining Macros.
  3412. 
  3413. File: emacs, Node: C Indent, Next: Custom C Indent, Prev: Lisp Indent, Up: Program Indent
  3414. 26.3.4 Commands for C Indentation
  3415. ---------------------------------
  3416. Here are special features for indentation in C mode and related modes:
  3417. `C-c C-q'
  3418. Reindent the current top-level function definition or aggregate
  3419. type declaration (`c-indent-defun').
  3420. `C-M-q'
  3421. Reindent each line in the balanced expression that follows point
  3422. (`c-indent-exp'). A prefix argument inhibits warning messages
  3423. about invalid syntax.
  3424. `<TAB>'
  3425. Reindent the current line, and/or in some cases insert a tab
  3426. character (`c-indent-command').
  3427. If `c-tab-always-indent' is `t', this command always reindents the
  3428. current line and does nothing else. This is the default.
  3429. If that variable is `nil', this command reindents the current line
  3430. only if point is at the left margin or in the line's indentation;
  3431. otherwise, it inserts a tab (or the equivalent number of spaces,
  3432. if `indent-tabs-mode' is `nil').
  3433. Any other value (not `nil' or `t') means always reindent the line,
  3434. and also insert a tab if within a comment or a string.
  3435. To reindent the whole current buffer, type `C-x h C-M-\'. This
  3436. first selects the whole buffer as the region, then reindents that
  3437. region.
  3438. To reindent the current block, use `C-M-u C-M-q'. This moves to the
  3439. front of the block and then reindents it all.
  3440. 
  3441. File: emacs, Node: Custom C Indent, Prev: C Indent, Up: Program Indent
  3442. 26.3.5 Customizing C Indentation
  3443. --------------------------------
  3444. C mode and related modes use a flexible mechanism for customizing
  3445. indentation. C mode indents a source line in two steps: first it
  3446. classifies the line syntactically according to its contents and
  3447. context; second, it determines the indentation offset associated by
  3448. your selected "style" with the syntactic construct and adds this onto
  3449. the indentation of the "anchor statement".
  3450. `C-c . <RET> STYLE <RET>'
  3451. Select a predefined style STYLE (`c-set-style').
  3452. A "style" is a named collection of customizations that can be used
  3453. in C mode and the related modes. *note Styles: (ccmode)Styles, for a
  3454. complete description. Emacs comes with several predefined styles,
  3455. including `gnu', `k&r', `bsd', `stroustrup', `linux', `python', `java',
  3456. `whitesmith', `ellemtel', and `awk'. Some of these styles are
  3457. primarily intended for one language, but any of them can be used with
  3458. any of the languages supported by these modes. To find out what a
  3459. style looks like, select it and reindent some code, e.g., by typing
  3460. <C-M-q> at the start of a function definition.
  3461. To choose a style for the current buffer, use the command `C-c .'.
  3462. Specify a style name as an argument (case is not significant). This
  3463. command affects the current buffer only, and it affects only future
  3464. invocations of the indentation commands; it does not reindent the code
  3465. already in the buffer. To reindent the whole buffer in the new style,
  3466. you can type `C-x h C-M-\'.
  3467. You can also set the variable `c-default-style' to specify the
  3468. default style for various major modes. Its value should be either the
  3469. style's name (a string) or an alist, in which each element specifies
  3470. one major mode and which indentation style to use for it. For example,
  3471. (setq c-default-style
  3472. '((java-mode . "java")
  3473. (awk-mode . "awk")
  3474. (other . "gnu")))
  3475. specifies explicit choices for Java and AWK modes, and the default
  3476. `gnu' style for the other C-like modes. (These settings are actually
  3477. the defaults.) This variable takes effect when you select one of the
  3478. C-like major modes; thus, if you specify a new default style for Java
  3479. mode, you can make it take effect in an existing Java mode buffer by
  3480. typing `M-x java-mode' there.
  3481. The `gnu' style specifies the formatting recommended by the GNU
  3482. Project for C; it is the default, so as to encourage use of our
  3483. recommended style.
  3484. *Note Indentation Engine Basics: (ccmode)Indentation Engine Basics,
  3485. and *note Customizing Indentation: (ccmode)Customizing Indentation, for
  3486. more information on customizing indentation for C and related modes,
  3487. including how to override parts of an existing style and how to define
  3488. your own styles.
  3489. As an alternative to specifying a style, you can tell Emacs to guess
  3490. a style by typing `M-x c-guess' in a sample code buffer. You can then
  3491. apply the guessed style to other buffers with `M-x c-guess-install'.
  3492. *Note Guessing the Style: (ccmode)Guessing the Style, for details.
  3493. 
  3494. File: emacs, Node: Parentheses, Next: Comments, Prev: Program Indent, Up: Programs
  3495. 26.4 Commands for Editing with Parentheses
  3496. ==========================================
  3497. This section describes the commands and features that take advantage of
  3498. the parenthesis structure in a program, or help you keep it balanced.
  3499. When talking about these facilities, the term "parenthesis" also
  3500. includes braces, brackets, or whatever delimiters are defined to match
  3501. in pairs. The major mode controls which delimiters are significant,
  3502. through the syntax table (*note Syntax Tables: (elisp)Syntax Tables.).
  3503. In Lisp, only parentheses count; in C, these commands apply to braces
  3504. and brackets too.
  3505. You can use `M-x check-parens' to find any unbalanced parentheses
  3506. and unbalanced string quotes in the buffer.
  3507. * Menu:
  3508. * Expressions:: Expressions with balanced parentheses.
  3509. * Moving by Parens:: Commands for moving up, down and across
  3510. in the structure of parentheses.
  3511. * Matching:: Insertion of a close-delimiter flashes matching open.
  3512. 
  3513. File: emacs, Node: Expressions, Next: Moving by Parens, Up: Parentheses
  3514. 26.4.1 Expressions with Balanced Parentheses
  3515. --------------------------------------------
  3516. Each programming language mode has its own definition of a "balanced
  3517. expression". Balanced expressions typically include individual
  3518. symbols, numbers, and string constants, as well as pieces of code
  3519. enclosed in a matching pair of delimiters. The following commands deal
  3520. with balanced expressions (in Emacs, such expressions are referred to
  3521. internally as "sexps"(1)).
  3522. `C-M-f'
  3523. Move forward over a balanced expression (`forward-sexp').
  3524. `C-M-b'
  3525. Move backward over a balanced expression (`backward-sexp').
  3526. `C-M-k'
  3527. Kill balanced expression forward (`kill-sexp').
  3528. `C-M-t'
  3529. Transpose expressions (`transpose-sexps').
  3530. `C-M-@'
  3531. `C-M-<SPC>'
  3532. Put mark after following expression (`mark-sexp').
  3533. To move forward over a balanced expression, use `C-M-f'
  3534. (`forward-sexp'). If the first significant character after point is an
  3535. opening delimiter (e.g. `(', `[' or `{' in C), this command moves past
  3536. the matching closing delimiter. If the character begins a symbol,
  3537. string, or number, the command moves over that.
  3538. The command `C-M-b' (`backward-sexp') moves backward over a balanced
  3539. expression--like `C-M-f', but in the reverse direction. If the
  3540. expression is preceded by any prefix characters (single-quote,
  3541. backquote and comma, in Lisp), the command moves back over them as well.
  3542. `C-M-f' or `C-M-b' with an argument repeats that operation the
  3543. specified number of times; with a negative argument means to move in
  3544. the opposite direction. In most modes, these two commands move across
  3545. comments as if they were whitespace. Note that their keys, `C-M-f' and
  3546. `C-M-b', are analogous to `C-f' and `C-b', which move by characters
  3547. (*note Moving Point::), and `M-f' and `M-b', which move by words (*note
  3548. Words::).
  3549. To kill a whole balanced expression, type `C-M-k' (`kill-sexp').
  3550. This kills the text that `C-M-f' would move over.
  3551. `C-M-t' (`transpose-sexps') switches the positions of the previous
  3552. balanced expression and the next one. It is analogous to the `C-t'
  3553. command, which transposes characters (*note Transpose::). An argument
  3554. to `C-M-t' serves as a repeat count, moving the previous expression
  3555. over that many following ones. A negative argument moves the previous
  3556. balanced expression backwards across those before it. An argument of
  3557. zero, rather than doing nothing, transposes the balanced expressions
  3558. ending at or after point and the mark.
  3559. To operate on balanced expressions with a command which acts on the
  3560. region, type `C-M-<SPC>' (`mark-sexp'). This sets the mark where
  3561. `C-M-f' would move to. While the mark is active, each successive call
  3562. to this command extends the region by shifting the mark by one
  3563. expression. Positive or negative numeric arguments move the mark
  3564. forward or backward by the specified number of expressions. The alias
  3565. `C-M-@' is equivalent to `C-M-<SPC>'. *Note Marking Objects::, for
  3566. more information about this and related commands.
  3567. In languages that use infix operators, such as C, it is not possible
  3568. to recognize all balanced expressions because there can be multiple
  3569. possibilities at a given position. For example, C mode does not treat
  3570. `foo + bar' as a single expression, even though it _is_ one C
  3571. expression; instead, it recognizes `foo' as one expression and `bar' as
  3572. another, with the `+' as punctuation between them. However, C mode
  3573. recognizes `(foo + bar)' as a single expression, because of the
  3574. parentheses.
  3575. ---------- Footnotes ----------
  3576. (1) The word "sexp" is used to refer to an expression in Lisp.
  3577. 
  3578. File: emacs, Node: Moving by Parens, Next: Matching, Prev: Expressions, Up: Parentheses
  3579. 26.4.2 Moving in the Parenthesis Structure
  3580. ------------------------------------------
  3581. The following commands move over groupings delimited by parentheses (or
  3582. whatever else serves as delimiters in the language you are working
  3583. with). They ignore strings and comments, including any parentheses
  3584. within them, and also ignore parentheses that are "quoted" with an
  3585. escape character. These commands are mainly intended for editing
  3586. programs, but can be useful for editing any text containing
  3587. parentheses. They are referred to internally as "list" commands
  3588. because in Lisp these groupings are lists.
  3589. These commands assume that the starting point is not inside a string
  3590. or a comment. If you invoke them from inside a string or comment, the
  3591. results are unreliable.
  3592. `C-M-n'
  3593. Move forward over a parenthetical group (`forward-list').
  3594. `C-M-p'
  3595. Move backward over a parenthetical group (`backward-list').
  3596. `C-M-u'
  3597. Move up in parenthesis structure (`backward-up-list').
  3598. `C-M-d'
  3599. Move down in parenthesis structure (`down-list').
  3600. The "list" commands `C-M-n' (`forward-list') and `C-M-p'
  3601. (`backward-list') move forward or backward over one (or N)
  3602. parenthetical groupings.
  3603. `C-M-n' and `C-M-p' try to stay at the same level in the parenthesis
  3604. structure. To move _up_ one (or N) levels, use `C-M-u'
  3605. (`backward-up-list'). `C-M-u' moves backward up past one unmatched
  3606. opening delimiter. A positive argument serves as a repeat count; a
  3607. negative argument reverses the direction of motion, so that the command
  3608. moves forward and up one or more levels.
  3609. To move _down_ in the parenthesis structure, use `C-M-d'
  3610. (`down-list'). In Lisp mode, where `(' is the only opening delimiter,
  3611. this is nearly the same as searching for a `('. An argument specifies
  3612. the number of levels to go down.
  3613. 
  3614. File: emacs, Node: Matching, Prev: Moving by Parens, Up: Parentheses
  3615. 26.4.3 Matching Parentheses
  3616. ---------------------------
  3617. Emacs has a number of "parenthesis matching" features, which make it
  3618. easy to see how and whether parentheses (or other delimiters) match up.
  3619. Whenever you type a self-inserting character that is a closing
  3620. delimiter, the cursor moves momentarily to the location of the matching
  3621. opening delimiter, provided that is on the screen. If it is not on the
  3622. screen, Emacs displays some of the text near it in the echo area.
  3623. Either way, you can tell which grouping you are closing off. If the
  3624. opening delimiter and closing delimiter are mismatched--such as in
  3625. `[x)'--a warning message is displayed in the echo area.
  3626. Three variables control the display of matching parentheses:
  3627. * `blink-matching-paren' turns the feature on or off: `nil' disables
  3628. it, but the default is `t' to enable it.
  3629. * `blink-matching-delay' says how many seconds to leave the cursor
  3630. on the matching opening delimiter, before bringing it back to the
  3631. real location of point. This may be an integer or floating-point
  3632. number; the default is 1.
  3633. * `blink-matching-paren-distance' specifies how many characters back
  3634. to search to find the matching opening delimiter. If the match is
  3635. not found in that distance, Emacs stops scanning and nothing is
  3636. displayed. The default is 102400.
  3637. Show Paren mode, a global minor mode, provides a more powerful kind
  3638. of automatic matching. Whenever point is before an opening delimiter
  3639. or after a closing delimiter, both that delimiter and its opposite
  3640. delimiter are highlighted. To toggle Show Paren mode, type `M-x
  3641. show-paren-mode'.
  3642. Electric Pair mode, a global minor mode, provides a way to easily
  3643. insert matching delimiters. Whenever you insert an opening delimiter,
  3644. the matching closing delimiter is automatically inserted as well,
  3645. leaving point between the two. To toggle Electric Pair mode, type `M-x
  3646. electric-pair-mode'.
  3647. 
  3648. File: emacs, Node: Comments, Next: Documentation, Prev: Parentheses, Up: Programs
  3649. 26.5 Manipulating Comments
  3650. ==========================
  3651. Because comments are such an important part of programming, Emacs
  3652. provides special commands for editing and inserting comments. It can
  3653. also do spell checking on comments with Flyspell Prog mode (*note
  3654. Spelling::).
  3655. Some major modes have special rules for indenting different kinds of
  3656. comments. For example, in Lisp code, comments starting with two
  3657. semicolons are indented as if they were lines of code, while those
  3658. starting with three semicolons are supposed to be aligned to the left
  3659. margin and are often used for sectioning purposes. Emacs understand
  3660. these conventions; for instance, typing <TAB> on a comment line will
  3661. indent the comment to the appropriate position.
  3662. ;; This function is just an example.
  3663. ;;; Here either two or three semicolons are appropriate.
  3664. (defun foo (x)
  3665. ;;; And now, the first part of the function:
  3666. ;; The following line adds one.
  3667. (1+ x)) ; This line adds one.
  3668. * Menu:
  3669. * Comment Commands:: Inserting, killing, and aligning comments.
  3670. * Multi-Line Comments:: Commands for adding and editing multi-line comments.
  3671. * Options for Comments::Customizing the comment features.
  3672. 
  3673. File: emacs, Node: Comment Commands, Next: Multi-Line Comments, Up: Comments
  3674. 26.5.1 Comment Commands
  3675. -----------------------
  3676. The following commands operate on comments:
  3677. `M-;'
  3678. Insert or realign comment on current line; if the region is active,
  3679. comment or uncomment the region instead (`comment-dwim').
  3680. `C-u M-;'
  3681. Kill comment on current line (`comment-kill').
  3682. `C-x ;'
  3683. Set comment column (`comment-set-column').
  3684. `C-M-j'
  3685. `M-j'
  3686. Like <RET> followed by inserting and aligning a comment
  3687. (`comment-indent-new-line'). *Note Multi-Line Comments::.
  3688. `M-x comment-region'
  3689. `C-c C-c' (in C-like modes)
  3690. Add comment delimiters to all the lines in the region.
  3691. The command to create or align a comment is `M-;' (`comment-dwim').
  3692. The word "dwim" is an acronym for "Do What I Mean"; it indicates that
  3693. this command can be used for many different jobs relating to comments,
  3694. depending on the situation where you use it.
  3695. When a region is active (*note Mark::), `M-;' either adds comment
  3696. delimiters to the region, or removes them. If every line in the region
  3697. is already a comment, it "uncomments" each of those lines by removing
  3698. their comment delimiters. Otherwise, it adds comment delimiters to
  3699. enclose the text in the region.
  3700. If you supply a prefix argument to `M-;' when a region is active,
  3701. that specifies the number of comment delimiters to add or delete. A
  3702. positive argument N adds N delimiters, while a negative argument -N
  3703. removes N delimiters.
  3704. If the region is not active, and there is no existing comment on the
  3705. current line, `M-;' adds a new comment to the current line. If the
  3706. line is blank (i.e. empty or containing only whitespace characters),
  3707. the comment is indented to the same position where <TAB> would indent
  3708. to (*note Basic Indent::). If the line is non-blank, the comment is
  3709. placed after the last non-whitespace character on the line; normally,
  3710. Emacs tries putting it at the column specified by the variable
  3711. `comment-column' (*note Options for Comments::), but if the line
  3712. already extends past that column, it puts the comment at some suitable
  3713. position, usually separated from the non-comment text by at least one
  3714. space. In each case, Emacs places point after the comment's starting
  3715. delimiter, so that you can start typing the comment text right away.
  3716. You can also use `M-;' to align an existing comment. If a line
  3717. already contains the comment-start string, `M-;' realigns it to the
  3718. conventional alignment and moves point after the comment's starting
  3719. delimiter. As an exception, comments starting in column 0 are not
  3720. moved. Even when an existing comment is properly aligned, `M-;' is
  3721. still useful for moving directly to the start of the comment text.
  3722. `C-u M-;' (`comment-dwim' with a prefix argument) kills any comment
  3723. on the current line, along with the whitespace before it. Since the
  3724. comment is saved to the kill ring, you can reinsert it on another line
  3725. by moving to the end of that line, doing `C-y', and then `M-;' to
  3726. realign the comment. You can achieve the same effect as `C-u M-;' by
  3727. typing `M-x comment-kill' (`comment-dwim' actually calls `comment-kill'
  3728. as a subroutine when it is given a prefix argument).
  3729. The command `M-x comment-region' is equivalent to calling `M-;' on
  3730. an active region, except that it always acts on the region, even if the
  3731. mark is inactive. In C mode and related modes, this command is bound
  3732. to `C-c C-c'. The command `M-x uncomment-region' uncomments each line
  3733. in the region; a numeric prefix argument specifies the number of
  3734. comment delimiters to remove (negative arguments specify the number of
  3735. comment to delimiters to add).
  3736. For C-like modes, you can configure the exact effect of `M-;' by
  3737. setting the variables `c-indent-comment-alist' and
  3738. `c-indent-comments-syntactically-p'. For example, on a line ending in
  3739. a closing brace, `M-;' puts the comment one space after the brace
  3740. rather than at `comment-column'. For full details see *note Comment
  3741. Commands: (ccmode)Comment Commands.
  3742. 
  3743. File: emacs, Node: Multi-Line Comments, Next: Options for Comments, Prev: Comment Commands, Up: Comments
  3744. 26.5.2 Multiple Lines of Comments
  3745. ---------------------------------
  3746. If you are typing a comment and wish to continue it to another line,
  3747. type `M-j' or `C-M-j' (`comment-indent-new-line'). This breaks the
  3748. current line, and inserts the necessary comment delimiters and
  3749. indentation to continue the comment.
  3750. For languages with closing comment delimiters (e.g. `*/' in C), the
  3751. exact behavior of `M-j' depends on the value of the variable
  3752. `comment-multi-line'. If the value is `nil', the command closes the
  3753. comment on the old line and starts a new comment on the new line.
  3754. Otherwise, it opens a new line within the current comment delimiters.
  3755. When Auto Fill mode is on, going past the fill column while typing a
  3756. comment also continues the comment, in the same way as an explicit
  3757. invocation of `M-j'.
  3758. To turn existing lines into comment lines, use `M-;' with the region
  3759. active, or use `M-x comment-region' (*note Comment Commands::).
  3760. You can configure C Mode such that when you type a `/' at the start
  3761. of a line in a multi-line block comment, this closes the comment.
  3762. Enable the `comment-close-slash' clean-up for this. *Note Clean-ups:
  3763. (ccmode)Clean-ups.
  3764. 
  3765. File: emacs, Node: Options for Comments, Prev: Multi-Line Comments, Up: Comments
  3766. 26.5.3 Options Controlling Comments
  3767. -----------------------------------
  3768. As mentioned in *note Comment Commands::, when the `M-j' command adds a
  3769. comment to a line, it tries to place the comment at the column
  3770. specified by the buffer-local variable `comment-column'. You can set
  3771. either the local value or the default value of this buffer-local
  3772. variable in the usual way (*note Locals::). Alternatively, you can
  3773. type `C-x ;' (`comment-set-column') to set the value of
  3774. `comment-column' in the current buffer to the column where point is
  3775. currently located. `C-u C-x ;' sets the comment column to match the
  3776. last comment before point in the buffer, and then does a `M-;' to align
  3777. the current line's comment under the previous one.
  3778. The comment commands recognize comments based on the regular
  3779. expression that is the value of the variable `comment-start-skip'.
  3780. Make sure this regexp does not match the null string. It may match more
  3781. than the comment starting delimiter in the strictest sense of the word;
  3782. for example, in C mode the value of the variable is
  3783. `"\\(//+\\|/\\*+\\)\\s *"', which matches extra stars and spaces after
  3784. the `/*' itself, and accepts C++ style comments also. (Note that `\\'
  3785. is needed in Lisp syntax to include a `\' in the string, which is
  3786. needed to deny the first star its special meaning in regexp syntax.
  3787. *Note Regexp Backslash::.)
  3788. When a comment command makes a new comment, it inserts the value of
  3789. `comment-start' as an opening comment delimiter. It also inserts the
  3790. value of `comment-end' after point, as a closing comment delimiter.
  3791. For example, in Lisp mode, `comment-start' is `";"' and `comment-end'
  3792. is `""' (the empty string). In C mode, `comment-start' is `"/* "' and
  3793. `comment-end' is `" */"'.
  3794. The variable `comment-padding' specifies a string that the
  3795. commenting commands should insert between the comment delimiter(s) and
  3796. the comment text. The default, `" "', specifies a single space.
  3797. Alternatively, the value can be a number, which specifies that number
  3798. of spaces, or `nil', which means no spaces at all.
  3799. The variable `comment-multi-line' controls how `M-j' and Auto Fill
  3800. mode continue comments over multiple lines. *Note Multi-Line
  3801. Comments::.
  3802. The variable `comment-indent-function' should contain a function
  3803. that will be called to compute the alignment for a newly inserted
  3804. comment or for aligning an existing comment. It is set differently by
  3805. various major modes. The function is called with no arguments, but with
  3806. point at the beginning of the comment, or at the end of a line if a new
  3807. comment is to be inserted. It should return the column in which the
  3808. comment ought to start. For example, in Lisp mode, the indent hook
  3809. function bases its decision on how many semicolons begin an existing
  3810. comment, and on the code in the preceding lines.
  3811. 
  3812. File: emacs, Node: Documentation, Next: Hideshow, Prev: Comments, Up: Programs
  3813. 26.6 Documentation Lookup
  3814. =========================
  3815. Emacs provides several features you can use to look up the
  3816. documentation of functions, variables and commands that you plan to use
  3817. in your program.
  3818. * Menu:
  3819. * Info Lookup:: Looking up library functions and commands in Info files.
  3820. * Man Page:: Looking up man pages of library functions and commands.
  3821. * Lisp Doc:: Looking up Emacs Lisp functions, etc.
  3822. 
  3823. File: emacs, Node: Info Lookup, Next: Man Page, Up: Documentation
  3824. 26.6.1 Info Documentation Lookup
  3825. --------------------------------
  3826. For major modes that apply to languages which have documentation in
  3827. Info, you can use `C-h S' (`info-lookup-symbol') to view the Info
  3828. documentation for a symbol used in the program. You specify the symbol
  3829. with the minibuffer; the default is the symbol appearing in the buffer
  3830. at point. For example, in C mode this looks for the symbol in the C
  3831. Library Manual. The command only works if the appropriate manual's
  3832. Info files are installed.
  3833. The major mode determines where to look for documentation for the
  3834. symbol--which Info files to look in, and which indices to search. You
  3835. can also use `M-x info-lookup-file' to look for documentation for a
  3836. file name.
  3837. If you use `C-h S' in a major mode that does not support it, it asks
  3838. you to specify the "symbol help mode". You should enter a command such
  3839. as `c-mode' that would select a major mode which `C-h S' does support.
  3840. 
  3841. File: emacs, Node: Man Page, Next: Lisp Doc, Prev: Info Lookup, Up: Documentation
  3842. 26.6.2 Man Page Lookup
  3843. ----------------------
  3844. On Unix, the main form of on-line documentation was the "manual page"
  3845. or "man page". In the GNU operating system, we aim to replace man
  3846. pages with better-organized manuals that you can browse with Info
  3847. (*note Misc Help::). This process is not finished, so it is still
  3848. useful to read manual pages.
  3849. You can read the man page for an operating system command, library
  3850. function, or system call, with the `M-x man' command. This prompts for
  3851. a topic, with completion (*note Completion::), and runs the `man'
  3852. program to format the corresponding man page. If the system permits,
  3853. it runs `man' asynchronously, so that you can keep on editing while the
  3854. page is being formatted. The result goes in a buffer named `*Man
  3855. TOPIC*'. These buffers use a special major mode, Man mode, that
  3856. facilitates scrolling and jumping to other manual pages. For details,
  3857. type `C-h m' while in a Man mode buffer.
  3858. Each man page belongs to one of ten or more "sections", each named
  3859. by a digit or by a digit and a letter. Sometimes there are man pages
  3860. with the same name in different sections. To read a man page from a
  3861. specific section, type `TOPIC(SECTION)' or `SECTION TOPIC' when `M-x
  3862. manual-entry' prompts for the topic. For example, the man page for the
  3863. C library function `chmod' is in section 2, but there is a shell
  3864. command of the same name, whose man page is in section 1; to view the
  3865. former, type `M-x manual-entry <RET> chmod(2) <RET>'.
  3866. If you do not specify a section, `M-x man' normally displays only
  3867. the first man page found. On some systems, the `man' program accepts a
  3868. `-a' command-line option, which tells it to display all the man pages
  3869. for the specified topic. To make use of this, change the value of the
  3870. variable `Man-switches' to `"-a"'. Then, in the Man mode buffer, you
  3871. can type `M-n' and `M-p' to switch between man pages in different
  3872. sections. The mode line shows how many manual pages are available.
  3873. An alternative way of reading manual pages is the `M-x woman'
  3874. command. Unlike `M-x man', it does not run any external programs to
  3875. format and display the man pages; the formatting is done by Emacs, so
  3876. it works on systems such as MS-Windows where the `man' program may be
  3877. unavailable. It prompts for a man page, and displays it in a buffer
  3878. named `*WoMan SECTION TOPIC'.
  3879. `M-x woman' computes the completion list for manpages the first time
  3880. you invoke the command. With a numeric argument, it recomputes this
  3881. list; this is useful if you add or delete manual pages.
  3882. If you type a name of a manual page and `M-x woman' finds that
  3883. several manual pages by the same name exist in different sections, it
  3884. pops up a window with possible candidates asking you to choose one of
  3885. them.
  3886. For more information about setting up and using `M-x woman', see
  3887. *note WoMan: (woman)Top.
  3888. 
  3889. File: emacs, Node: Lisp Doc, Prev: Man Page, Up: Documentation
  3890. 26.6.3 Emacs Lisp Documentation Lookup
  3891. --------------------------------------
  3892. When editing Emacs Lisp code, you can use the commands `C-h f'
  3893. (`describe-function') and `C-h v' (`describe-variable') to view the
  3894. built-in documentation for the Lisp functions and variables that you
  3895. want to use. *Note Name Help::.
  3896. Eldoc is a buffer-local minor mode that helps with looking up Lisp
  3897. documention. When it is enabled, the echo area displays some useful
  3898. information whenever there is a Lisp function or variable at point; for
  3899. a function, it shows the argument list, and for a variable it shows the
  3900. first line of the variable's documentation string. To toggle Eldoc
  3901. mode, type `M-x eldoc-mode'. Eldoc mode can be used with the Emacs
  3902. Lisp and Lisp Interaction major modes.
  3903. 
  3904. File: emacs, Node: Hideshow, Next: Symbol Completion, Prev: Documentation, Up: Programs
  3905. 26.7 Hideshow minor mode
  3906. ========================
  3907. Hideshow mode is a buffer-local minor mode that allows you to
  3908. selectively display portions of a program, which are referred to as
  3909. "blocks". Type `M-x hs-minor-mode' to toggle this minor mode (*note
  3910. Minor Modes::).
  3911. When you use Hideshow mode to hide a block, the block disappears
  3912. from the screen, to be replaced by an ellipsis (three periods in a
  3913. row). Just what constitutes a block depends on the major mode. In C
  3914. mode and related modes, blocks are delimited by braces, while in Lisp
  3915. mode they are delimited by parentheses. Multi-line comments also count
  3916. as blocks.
  3917. Hideshow mode provides the following commands:
  3918. `C-c @ C-h'
  3919. Hide the current block (`hs-hide-block').
  3920. `C-c @ C-s'
  3921. Show the current block (`hs-show-block').
  3922. `C-c @ C-c'
  3923. Either hide or show the current block (`hs-toggle-hiding').
  3924. `S-Mouse-2'
  3925. Toggle hiding for the block you click on
  3926. (`hs-mouse-toggle-hiding').
  3927. `C-c @ C-M-h'
  3928. Hide all top-level blocks (`hs-hide-all').
  3929. `C-c @ C-M-s'
  3930. Show all blocks in the buffer (`hs-show-all').
  3931. `C-c @ C-l'
  3932. Hide all blocks N levels below this block (`hs-hide-level').
  3933. These variables can be used to customize Hideshow mode:
  3934. `hs-hide-comments-when-hiding-all'
  3935. If non-`nil', `C-c @ C-M-h' (`hs-hide-all') hides comments too.
  3936. `hs-isearch-open'
  3937. This variable specifies the conditions under which incremental
  3938. search should unhide a hidden block when matching text occurs
  3939. within the block. Its value should be either `code' (unhide only
  3940. code blocks), `comment' (unhide only comments), `t' (unhide both
  3941. code blocks and comments), or `nil' (unhide neither code blocks
  3942. nor comments). The default value is `code'.
  3943. 
  3944. File: emacs, Node: Symbol Completion, Next: Glasses, Prev: Hideshow, Up: Programs
  3945. 26.8 Completion for Symbol Names
  3946. ================================
  3947. Completion is normally done in the minibuffer (*note Completion::), but
  3948. you can also complete symbol names in ordinary Emacs buffers.
  3949. In programming language modes, type `C-M-i' or `M-<TAB>' to complete
  3950. the partial symbol before point. On graphical displays, the `M-<TAB>'
  3951. key is usually reserved by the window manager for switching graphical
  3952. windows, so you should type `C-M-i' or `<ESC> <TAB>' instead.
  3953. In most programming language modes, `C-M-i' (or `M-<TAB>') invokes
  3954. the command `completion-at-point', which generates its completion list
  3955. in a flexible way. If Semantic mode is enabled, it tries to use the
  3956. Semantic parser data for completion (*note Semantic::). If Semantic
  3957. mode is not enabled or fails at performing completion, it tries to
  3958. complete using the selected tags table (*note Tags::). If in Emacs
  3959. Lisp mode, it performs completion using the function, variable, or
  3960. property names defined in the current Emacs session.
  3961. In all other respects, in-buffer symbol completion behaves like
  3962. minibuffer completion. For instance, if Emacs cannot complete to a
  3963. unique symbol, it displays a list of completion alternatives in another
  3964. window. *Note Completion::.
  3965. In Text mode and related modes, `M-<TAB>' completes words based on
  3966. the spell-checker's dictionary. *Note Spelling::.
  3967. 
  3968. File: emacs, Node: Glasses, Next: Semantic, Prev: Symbol Completion, Up: Programs
  3969. 26.9 Glasses minor mode
  3970. =======================
  3971. Glasses mode is a buffer-local minor mode that makes it easier to read
  3972. mixed-case (or "CamelCase") symbols like `unReadableSymbol', by
  3973. altering how they are displayed. By default, it displays extra
  3974. underscores between each lower-case letter and the following capital
  3975. letter. This does not alter the buffer text, only how it is displayed.
  3976. To toggle Glasses mode, type `M-x glasses-mode' (*note Minor
  3977. Modes::). When Glasses mode is enabled, the minor mode indicator `o^o'
  3978. appears in the mode line. For more information about Glasses mode,
  3979. type `C-h P glasses <RET>'.
  3980. 
  3981. File: emacs, Node: Semantic, Next: Misc for Programs, Prev: Glasses, Up: Programs
  3982. 26.10 Semantic
  3983. ==============
  3984. Semantic is a package that provides language-aware editing commands
  3985. based on `source code parsers'. This section provides a brief
  3986. description of Semantic; for full details, see *note Semantic:
  3987. (semantic)Top.
  3988. Most of the "language aware" features in Emacs, such as Font Lock
  3989. mode (*note Font Lock::), rely on "rules of thumb"(1) that usually give
  3990. good results but are never completely exact. In contrast, the parsers
  3991. used by Semantic have an exact understanding of programming language
  3992. syntax. This allows Semantic to provide search, navigation, and
  3993. completion commands that are powerful and precise.
  3994. To begin using Semantic, type `M-x semantic-mode' or click on the
  3995. menu item named `Source Code Parsers (Semantic)' in the `Tools' menu.
  3996. This enables Semantic mode, a global minor mode.
  3997. When Semantic mode is enabled, Emacs automatically attempts to
  3998. parses each file you visit. Currently, Semantic understands C, C++,
  3999. Scheme, Javascript, Java, HTML, and Make. Within each parsed buffer,
  4000. the following commands are available:
  4001. `C-c , j'
  4002. Prompt for the name of a function defined in the current file, and
  4003. move point there (`semantic-complete-jump-local').
  4004. `C-c , J'
  4005. Prompt for the name of a function defined in any file Emacs has
  4006. parsed, and move point there (`semantic-complete-jump').
  4007. `C-c , <SPC>'
  4008. Display a list of possible completions for the symbol at point
  4009. (`semantic-complete-analyze-inline'). This also activates a set
  4010. of special key bindings for choosing a completion: <RET> accepts
  4011. the current completion, `M-n' and `M-p' cycle through possible
  4012. completions, <TAB> completes as far as possible and then cycles,
  4013. and `C-g' or any other key aborts completion.
  4014. `C-c , l'
  4015. Display a list of the possible completions of the symbol at point,
  4016. in another window (`semantic-analyze-possible-completions').
  4017. In addition to the above commands, the Semantic package provides a
  4018. variety of other ways to make use of parser information. For instance,
  4019. you can use it to display a list of completions when Emacs is idle.
  4020. *Note Semantic: (semantic)Top, for details.
  4021. ---------- Footnotes ----------
  4022. (1) Regular expressions and syntax tables.
  4023. 
  4024. File: emacs, Node: Misc for Programs, Next: C Modes, Prev: Semantic, Up: Programs
  4025. 26.11 Other Features Useful for Editing Programs
  4026. ================================================
  4027. Some Emacs commands that aren't designed specifically for editing
  4028. programs are useful for that nonetheless.
  4029. The Emacs commands that operate on words, sentences and paragraphs
  4030. are useful for editing code. Most symbols names contain words (*note
  4031. Words::), while sentences can be found in strings and comments (*note
  4032. Sentences::). As for paragraphs, they are defined in most programming
  4033. language modes to begin and end at blank lines (*note Paragraphs::).
  4034. Therefore, judicious use of blank lines to make the program clearer
  4035. will also provide useful chunks of text for the paragraph commands to
  4036. work on. Auto Fill mode, if enabled in a programming language major
  4037. mode, indents the new lines which it creates.
  4038. Electric Layout mode (`M-x electric-layout-mode') is a global minor
  4039. mode that automatically inserts newlines when you type certain
  4040. characters; for example, `{', `}' and `;' in Javascript mode.
  4041. Apart from Hideshow mode (*note Hideshow::), another way to
  4042. selectively display parts of a program is to use the selective display
  4043. feature (*note Selective Display::). Programming modes often also
  4044. support Outline minor mode (*note Outline Mode::), which can be used
  4045. with the Foldout package (*note Foldout::).
  4046. The "automatic typing" features may be useful for writing programs.
  4047. *Note Autotyping: (autotype)Top.
  4048. 
  4049. File: emacs, Node: C Modes, Next: Asm Mode, Prev: Misc for Programs, Up: Programs
  4050. 26.12 C and Related Modes
  4051. =========================
  4052. This section gives a brief description of the special features
  4053. available in C, C++, Objective-C, Java, CORBA IDL, Pike and AWK modes.
  4054. (These are called "C mode and related modes".) *Note CC Mode:
  4055. (ccmode)Top, for more details.
  4056. * Menu:
  4057. * Motion in C:: Commands to move by C statements, etc.
  4058. * Electric C:: Colon and other chars can automatically reindent.
  4059. * Hungry Delete:: A more powerful DEL command.
  4060. * Other C Commands:: Filling comments, viewing expansion of macros,
  4061. and other neat features.
  4062. 
  4063. File: emacs, Node: Motion in C, Next: Electric C, Up: C Modes
  4064. 26.12.1 C Mode Motion Commands
  4065. ------------------------------
  4066. This section describes commands for moving point, in C mode and related
  4067. modes.
  4068. `C-M-a'
  4069. `C-M-e'
  4070. Move point to the beginning or end of the current function or
  4071. top-level definition. In languages with enclosing scopes (such as
  4072. C++'s classes) the "current function" is the immediate one,
  4073. possibly inside a scope. Otherwise it is the one defined by the
  4074. least enclosing braces. (By contrast, `beginning-of-defun' and
  4075. `end-of-defun' search for braces in column zero.) *Note Moving by
  4076. Defuns::.
  4077. `C-c C-u'
  4078. Move point back to the containing preprocessor conditional,
  4079. leaving the mark behind. A prefix argument acts as a repeat
  4080. count. With a negative argument, move point forward to the end of
  4081. the containing preprocessor conditional.
  4082. `#elif' is equivalent to `#else' followed by `#if', so the
  4083. function will stop at a `#elif' when going backward, but not when
  4084. going forward.
  4085. `C-c C-p'
  4086. Move point back over a preprocessor conditional, leaving the mark
  4087. behind. A prefix argument acts as a repeat count. With a negative
  4088. argument, move forward.
  4089. `C-c C-n'
  4090. Move point forward across a preprocessor conditional, leaving the
  4091. mark behind. A prefix argument acts as a repeat count. With a
  4092. negative argument, move backward.
  4093. `M-a'
  4094. Move point to the beginning of the innermost C statement
  4095. (`c-beginning-of-statement'). If point is already at the beginning
  4096. of a statement, move to the beginning of the preceding statement.
  4097. With prefix argument N, move back N - 1 statements.
  4098. In comments or in strings which span more than one line, this
  4099. command moves by sentences instead of statements.
  4100. `M-e'
  4101. Move point to the end of the innermost C statement or sentence;
  4102. like `M-a' except that it moves in the other direction
  4103. (`c-end-of-statement').
  4104. 
  4105. File: emacs, Node: Electric C, Next: Hungry Delete, Prev: Motion in C, Up: C Modes
  4106. 26.12.2 Electric C Characters
  4107. -----------------------------
  4108. In C mode and related modes, certain printing characters are
  4109. "electric"--in addition to inserting themselves, they also reindent the
  4110. current line, and optionally also insert newlines. The "electric"
  4111. characters are `{', `}', `:', `#', `;', `,', `<', `>', `/', `*', `(',
  4112. and `)'.
  4113. You might find electric indentation inconvenient if you are editing
  4114. chaotically indented code. If you are new to CC Mode, you might find
  4115. it disconcerting. You can toggle electric action with the command `C-c
  4116. C-l'; when it is enabled, `/l' appears in the mode line after the mode
  4117. name:
  4118. `C-c C-l'
  4119. Toggle electric action (`c-toggle-electric-state'). With a
  4120. positive prefix argument, this command enables electric action,
  4121. with a negative one it disables it.
  4122. Electric characters insert newlines only when, in addition to the
  4123. electric state, the "auto-newline" feature is enabled (indicated by
  4124. `/la' in the mode line after the mode name). You can turn this feature
  4125. on or off with the command `C-c C-a':
  4126. `C-c C-a'
  4127. Toggle the auto-newline feature (`c-toggle-auto-newline'). With a
  4128. prefix argument, this command turns the auto-newline feature on if
  4129. the argument is positive, and off if it is negative.
  4130. Usually the CC Mode style configures the exact circumstances in
  4131. which Emacs inserts auto-newlines. You can also configure this
  4132. directly. *Note Custom Auto-newlines: (ccmode)Custom Auto-newlines.
  4133. 
  4134. File: emacs, Node: Hungry Delete, Next: Other C Commands, Prev: Electric C, Up: C Modes
  4135. 26.12.3 Hungry Delete Feature in C
  4136. ----------------------------------
  4137. If you want to delete an entire block of whitespace at point, you can
  4138. use "hungry deletion". This deletes all the contiguous whitespace
  4139. either before point or after point in a single operation. "Whitespace"
  4140. here includes tabs and newlines, but not comments or preprocessor
  4141. commands.
  4142. `C-c C-<DEL>'
  4143. `C-c <DEL>'
  4144. Delete the entire block of whitespace preceding point
  4145. (`c-hungry-delete-backwards').
  4146. `C-c C-d'
  4147. `C-c C-<DELETE>'
  4148. `C-c <DELETE>'
  4149. Delete the entire block of whitespace after point
  4150. (`c-hungry-delete-forward').
  4151. As an alternative to the above commands, you can enable "hungry
  4152. delete mode". When this feature is enabled (indicated by `/h' in the
  4153. mode line after the mode name), a single <DEL> deletes all preceding
  4154. whitespace, not just one space, and a single `C-c C-d' (but _not_ plain
  4155. <DELETE>) deletes all following whitespace.
  4156. `M-x c-toggle-hungry-state'
  4157. Toggle the hungry-delete feature (`c-toggle-hungry-state'). With
  4158. a prefix argument, this command turns the hungry-delete feature on
  4159. if the argument is positive, and off if it is negative.
  4160. The variable `c-hungry-delete-key' controls whether the
  4161. hungry-delete feature is enabled.
  4162. 
  4163. File: emacs, Node: Other C Commands, Prev: Hungry Delete, Up: C Modes
  4164. 26.12.4 Other Commands for C Mode
  4165. ---------------------------------
  4166. `C-c C-w'
  4167. `M-x subword-mode'
  4168. Enable (or disable) "subword mode". In subword mode, Emacs's word
  4169. commands recognize upper case letters in `StudlyCapsIdentifiers'
  4170. as word boundaries. This is indicated by the flag `/w' on the
  4171. mode line after the mode name (e.g. `C/law'). You can even use
  4172. `M-x subword-mode' in non-CC Mode buffers.
  4173. In the GNU project, we recommend using underscores to separate
  4174. words within an identifier in C or C++, rather than using case
  4175. distinctions.
  4176. `M-x c-context-line-break'
  4177. This command inserts a line break and indents the new line in a
  4178. manner appropriate to the context. In normal code, it does the
  4179. work of `C-j' (`newline-and-indent'), in a C preprocessor line it
  4180. additionally inserts a `\' at the line break, and within comments
  4181. it's like `M-j' (`c-indent-new-comment-line').
  4182. `c-context-line-break' isn't bound to a key by default, but it
  4183. needs a binding to be useful. The following code will bind it to
  4184. `C-j'. We use `c-initialization-hook' here to make sure the
  4185. keymap is loaded before we try to change it.
  4186. (defun my-bind-clb ()
  4187. (define-key c-mode-base-map "\C-j"
  4188. 'c-context-line-break))
  4189. (add-hook 'c-initialization-hook 'my-bind-clb)
  4190. `C-M-h'
  4191. Put mark at the end of a function definition, and put point at the
  4192. beginning (`c-mark-function').
  4193. `M-q'
  4194. Fill a paragraph, handling C and C++ comments (`c-fill-paragraph').
  4195. If any part of the current line is a comment or within a comment,
  4196. this command fills the comment or the paragraph of it that point
  4197. is in, preserving the comment indentation and comment delimiters.
  4198. `C-c C-e'
  4199. Run the C preprocessor on the text in the region, and show the
  4200. result, which includes the expansion of all the macro calls
  4201. (`c-macro-expand'). The buffer text before the region is also
  4202. included in preprocessing, for the sake of macros defined there,
  4203. but the output from this part isn't shown.
  4204. When you are debugging C code that uses macros, sometimes it is
  4205. hard to figure out precisely how the macros expand. With this
  4206. command, you don't have to figure it out; you can see the
  4207. expansions.
  4208. `C-c C-\'
  4209. Insert or align `\' characters at the ends of the lines of the
  4210. region (`c-backslash-region'). This is useful after writing or
  4211. editing a C macro definition.
  4212. If a line already ends in `\', this command adjusts the amount of
  4213. whitespace before it. Otherwise, it inserts a new `\'. However,
  4214. the last line in the region is treated specially; no `\' is
  4215. inserted on that line, and any `\' there is deleted.
  4216. `M-x cpp-highlight-buffer'
  4217. Highlight parts of the text according to its preprocessor
  4218. conditionals. This command displays another buffer named `*CPP
  4219. Edit*', which serves as a graphic menu for selecting how to
  4220. display particular kinds of conditionals and their contents.
  4221. After changing various settings, click on `[A]pply these settings'
  4222. (or go to that buffer and type `a') to rehighlight the C mode
  4223. buffer accordingly.
  4224. `C-c C-s'
  4225. Display the syntactic information about the current source line
  4226. (`c-show-syntactic-information'). This information directs how
  4227. the line is indented.
  4228. `M-x cwarn-mode'
  4229. `M-x global-cwarn-mode'
  4230. CWarn minor mode highlights certain suspicious C and C++
  4231. constructions:
  4232. * Assignments inside expressions.
  4233. * Semicolon following immediately after `if', `for', and `while'
  4234. (except after a `do ... while' statement);
  4235. * C++ functions with reference parameters.
  4236. You can enable the mode for one buffer with the command `M-x
  4237. cwarn-mode', or for all suitable buffers with the command `M-x
  4238. global-cwarn-mode' or by customizing the variable
  4239. `global-cwarn-mode'. You must also enable Font Lock mode to make
  4240. it work.
  4241. `M-x hide-ifdef-mode'
  4242. Hide-ifdef minor mode hides selected code within `#if' and
  4243. `#ifdef' preprocessor blocks. If you change the variable
  4244. `hide-ifdef-shadow' to `t', Hide-ifdef minor mode "shadows"
  4245. preprocessor blocks by displaying them with a less prominent face,
  4246. instead of hiding them entirely. See the documentation string of
  4247. `hide-ifdef-mode' for more information.
  4248. `M-x ff-find-related-file'
  4249. Find a file "related" in a special way to the file visited by the
  4250. current buffer. Typically this will be the header file
  4251. corresponding to a C/C++ source file, or vice versa. The variable
  4252. `ff-related-file-alist' specifies how to compute related file
  4253. names.
  4254. 
  4255. File: emacs, Node: Asm Mode, Next: Fortran, Prev: C Modes, Up: Programs
  4256. 26.13 Asm Mode
  4257. ==============
  4258. Asm mode is a major mode for editing files of assembler code. It
  4259. defines these commands:
  4260. `<TAB>'
  4261. `tab-to-tab-stop'.
  4262. `C-j'
  4263. Insert a newline and then indent using `tab-to-tab-stop'.
  4264. `:'
  4265. Insert a colon and then remove the indentation from before the
  4266. label preceding colon. Then do `tab-to-tab-stop'.
  4267. `;'
  4268. Insert or align a comment.
  4269. The variable `asm-comment-char' specifies which character starts
  4270. comments in assembler syntax.
  4271. 
  4272. File: emacs, Node: Fortran, Prev: Asm Mode, Up: Programs
  4273. 26.14 Fortran Mode
  4274. ==================
  4275. Fortran mode is meant for editing "fixed form" (and also "tab format")
  4276. source code (normally Fortran 77). For editing more modern "free form"
  4277. source code (Fortran 90, 95, 2003, 2008), use F90 mode (`f90-mode').
  4278. Emacs normally uses Fortran mode for files with extension `.f', `.F' or
  4279. `.for', and F90 mode for the extensions `.f90', `.f95', `.f03' and
  4280. `.f08'. Customize `auto-mode-alist' to add more extensions. GNU
  4281. Fortran supports both free and fixed form. This manual mainly
  4282. documents Fortran mode, but the corresponding F90 mode features are
  4283. mentioned when relevant.
  4284. Fortran mode provides special motion commands for Fortran statements
  4285. and subprograms, and indentation commands that understand Fortran
  4286. conventions of nesting, line numbers and continuation statements.
  4287. Fortran mode has support for Auto Fill mode that breaks long lines into
  4288. proper Fortran continuation lines. Fortran mode also supports Hideshow
  4289. minor mode (*note Hideshow::), and Imenu (*note Imenu::).
  4290. Special commands for comments are provided because Fortran comments
  4291. are unlike those of other languages. Built-in abbrevs optionally save
  4292. typing when you insert Fortran keywords.
  4293. Use `M-x fortran-mode' to switch to this major mode. This command
  4294. runs the hook `fortran-mode-hook'. *Note Hooks::.
  4295. * Menu:
  4296. * Motion: Fortran Motion. Moving point by statements or subprograms.
  4297. * Indent: Fortran Indent. Indentation commands for Fortran.
  4298. * Comments: Fortran Comments. Inserting and aligning comments.
  4299. * Autofill: Fortran Autofill. Auto fill support for Fortran.
  4300. * Columns: Fortran Columns. Measuring columns for valid Fortran.
  4301. * Abbrev: Fortran Abbrev. Built-in abbrevs for Fortran keywords.
  4302. 
  4303. File: emacs, Node: Fortran Motion, Next: Fortran Indent, Up: Fortran
  4304. 26.14.1 Motion Commands
  4305. -----------------------
  4306. In addition to the normal commands for moving by and operating on
  4307. "defuns" (Fortran subprograms--functions and subroutines, as well as
  4308. modules for F90 mode, using the commands `fortran-end-of-subprogram'
  4309. and `fortran-beginning-of-subprogram'), Fortran mode provides special
  4310. commands to move by statements and other program units.
  4311. `C-c C-n'
  4312. Move to the beginning of the next statement
  4313. (`fortran-next-statement'/`f90-next-statement').
  4314. `C-c C-p'
  4315. Move to the beginning of the previous statement
  4316. (`fortran-previous-statement'/`f90-previous-statement'). If there
  4317. is no previous statement (i.e. if called from the first statement
  4318. in the buffer), move to the start of the buffer.
  4319. `C-c C-e'
  4320. Move point forward to the start of the next code block, or the end
  4321. of the current one, whichever comes first (`f90-next-block'). A
  4322. code block is a subroutine, `if'-`endif' statement, and so forth.
  4323. This command exists for F90 mode only, not Fortran mode. With a
  4324. numeric argument, it moves forward that many blocks.
  4325. `C-c C-a'
  4326. Move point backward to the previous block (`f90-previous-block').
  4327. This is like `f90-next-block', but moves backwards.
  4328. `C-M-n'
  4329. Move to the end of the current code block
  4330. (`fortran-end-of-block'/`f90-end-of-block'). With a numeric
  4331. argument, move forward that number of blocks. The mark is set
  4332. before moving point. The F90 mode version of this command checks
  4333. for consistency of block types and labels (if present), but it
  4334. does not check the outermost block since that may be incomplete.
  4335. `C-M-p'
  4336. Move to the start of the current code block
  4337. (`fortran-beginning-of-block'/`f90-beginning-of-block'). This is
  4338. like `fortran-end-of-block', but moves backwards.
  4339. The commands `fortran-beginning-of-subprogram' and
  4340. `fortran-end-of-subprogram' move to the start or end of the current
  4341. subprogram, respectively. The commands `fortran-mark-do' and
  4342. `fortran-mark-if' mark the end of the current `do' or `if' block, and
  4343. move point to the start.
  4344. 
  4345. File: emacs, Node: Fortran Indent, Next: Fortran Comments, Prev: Fortran Motion, Up: Fortran
  4346. 26.14.2 Fortran Indentation
  4347. ---------------------------
  4348. Special commands and features are needed for indenting fixed (or tab)
  4349. form Fortran code in order to make sure various syntactic entities (line
  4350. numbers, comment line indicators and continuation line flags) appear in
  4351. the required columns.
  4352. * Menu:
  4353. * Commands: ForIndent Commands. Commands for indenting and filling Fortran.
  4354. * Contline: ForIndent Cont. How continuation lines indent.
  4355. * Numbers: ForIndent Num. How line numbers auto-indent.
  4356. * Conv: ForIndent Conv. Conventions you must obey to avoid trouble.
  4357. * Vars: ForIndent Vars. Variables controlling Fortran indent style.
  4358. 
  4359. File: emacs, Node: ForIndent Commands, Next: ForIndent Cont, Up: Fortran Indent
  4360. 26.14.2.1 Fortran Indentation and Filling Commands
  4361. ..................................................
  4362. `C-M-j'
  4363. Break the current line at point and set up a continuation line
  4364. (`fortran-split-line').
  4365. `M-^'
  4366. Join this line to the previous line (`fortran-join-line').
  4367. `C-M-q'
  4368. Indent all the lines of the subprogram that point is in
  4369. (`fortran-indent-subprogram').
  4370. `M-q'
  4371. Fill a comment block or statement (using `fortran-fill-paragraph'
  4372. or `fortran-fill-statement').
  4373. The key `C-M-q' runs `fortran-indent-subprogram', a command to
  4374. reindent all the lines of the Fortran subprogram (function or
  4375. subroutine) containing point.
  4376. The key `C-M-j' runs `fortran-split-line', which splits a line in
  4377. the appropriate fashion for Fortran. In a non-comment line, the second
  4378. half becomes a continuation line and is indented accordingly. In a
  4379. comment line, both halves become separate comment lines.
  4380. `M-^' or `C-c C-d' runs the command `fortran-join-line', which joins
  4381. a continuation line back to the previous line, roughly as the inverse
  4382. of `fortran-split-line'. The point must be on a continuation line when
  4383. this command is invoked.
  4384. `M-q' in Fortran mode fills the comment block or statement that
  4385. point is in. This removes any excess statement continuations.
  4386. 
  4387. File: emacs, Node: ForIndent Cont, Next: ForIndent Num, Prev: ForIndent Commands, Up: Fortran Indent
  4388. 26.14.2.2 Continuation Lines
  4389. ............................
  4390. Most Fortran 77 compilers allow two ways of writing continuation lines.
  4391. If the first non-space character on a line is in column 5, then that
  4392. line is a continuation of the previous line. We call this "fixed
  4393. form". (In GNU Emacs we always count columns from 0; but note that the
  4394. Fortran standard counts from 1.) The variable
  4395. `fortran-continuation-string' specifies what character to put in column
  4396. 5. A line that starts with a tab character followed by any digit
  4397. except `0' is also a continuation line. We call this style of
  4398. continuation "tab format". (Fortran 90 introduced "free form", with
  4399. another style of continuation lines).
  4400. Fortran mode can use either style of continuation line. When you
  4401. enter Fortran mode, it tries to deduce the proper continuation style
  4402. automatically from the buffer contents. It does this by scanning up to
  4403. `fortran-analyze-depth' (default 100) lines from the start of the
  4404. buffer. The first line that begins with either a tab character or six
  4405. spaces determines the choice. If the scan fails (for example, if the
  4406. buffer is new and therefore empty), the value of
  4407. `fortran-tab-mode-default' (`nil' for fixed form, and non-`nil' for tab
  4408. format) is used. `/t' (`fortran-tab-mode-string') in the mode line
  4409. indicates tab format is selected. Fortran mode sets the value of
  4410. `indent-tabs-mode' accordingly.
  4411. If the text on a line starts with the Fortran continuation marker
  4412. `$', or if it begins with any non-whitespace character in column 5,
  4413. Fortran mode treats it as a continuation line. When you indent a
  4414. continuation line with <TAB>, it converts the line to the current
  4415. continuation style. When you split a Fortran statement with `C-M-j',
  4416. the continuation marker on the newline is created according to the
  4417. continuation style.
  4418. The setting of continuation style affects several other aspects of
  4419. editing in Fortran mode. In fixed form mode, the minimum column number
  4420. for the body of a statement is 6. Lines inside of Fortran blocks that
  4421. are indented to larger column numbers must use only the space character
  4422. for whitespace. In tab format mode, the minimum column number for the
  4423. statement body is 8, and the whitespace before column 8 must consist of
  4424. one tab character.
  4425. 
  4426. File: emacs, Node: ForIndent Num, Next: ForIndent Conv, Prev: ForIndent Cont, Up: Fortran Indent
  4427. 26.14.2.3 Line Numbers
  4428. ......................
  4429. If a number is the first non-whitespace in the line, Fortran
  4430. indentation assumes it is a line number and moves it to columns 0
  4431. through 4. (Columns always count from 0 in Emacs.)
  4432. Line numbers of four digits or less are normally indented one space.
  4433. The variable `fortran-line-number-indent' controls this; it specifies
  4434. the maximum indentation a line number can have. The default value of
  4435. the variable is 1. Fortran mode tries to prevent line number digits
  4436. passing column 4, reducing the indentation below the specified maximum
  4437. if necessary. If `fortran-line-number-indent' has the value 5, line
  4438. numbers are right-justified to end in column 4.
  4439. Simply inserting a line number is enough to indent it according to
  4440. these rules. As each digit is inserted, the indentation is recomputed.
  4441. To turn off this feature, set the variable
  4442. `fortran-electric-line-number' to `nil'.
  4443. 
  4444. File: emacs, Node: ForIndent Conv, Next: ForIndent Vars, Prev: ForIndent Num, Up: Fortran Indent
  4445. 26.14.2.4 Syntactic Conventions
  4446. ...............................
  4447. Fortran mode assumes that you follow certain conventions that simplify
  4448. the task of understanding a Fortran program well enough to indent it
  4449. properly:
  4450. * Two nested `do' loops never share a `continue' statement.
  4451. * Fortran keywords such as `if', `else', `then', `do' and others are
  4452. written without embedded whitespace or line breaks.
  4453. Fortran compilers generally ignore whitespace outside of string
  4454. constants, but Fortran mode does not recognize these keywords if
  4455. they are not contiguous. Constructs such as `else if' or `end do'
  4456. are acceptable, but the second word should be on the same line as
  4457. the first and not on a continuation line.
  4458. If you fail to follow these conventions, the indentation commands may
  4459. indent some lines unaesthetically. However, a correct Fortran program
  4460. retains its meaning when reindented even if the conventions are not
  4461. followed.
  4462. 
  4463. File: emacs, Node: ForIndent Vars, Prev: ForIndent Conv, Up: Fortran Indent
  4464. 26.14.2.5 Variables for Fortran Indentation
  4465. ...........................................
  4466. Several additional variables control how Fortran indentation works:
  4467. `fortran-do-indent'
  4468. Extra indentation within each level of `do' statement (default 3).
  4469. `fortran-if-indent'
  4470. Extra indentation within each level of `if', `select case', or
  4471. `where' statements (default 3).
  4472. `fortran-structure-indent'
  4473. Extra indentation within each level of `structure', `union',
  4474. `map', or `interface' statements (default 3).
  4475. `fortran-continuation-indent'
  4476. Extra indentation for bodies of continuation lines (default 5).
  4477. `fortran-check-all-num-for-matching-do'
  4478. In Fortran 77, a numbered `do' statement is ended by any statement
  4479. with a matching line number. It is common (but not compulsory) to
  4480. use a `continue' statement for this purpose. If this variable has
  4481. a non-`nil' value, indenting any numbered statement must check for
  4482. a `do' that ends there. If you always end `do' statements with a
  4483. `continue' line (or if you use the more modern `enddo'), then you
  4484. can speed up indentation by setting this variable to `nil' (the
  4485. default).
  4486. `fortran-blink-matching-if'
  4487. If this is `t', indenting an `endif' (or `enddo' statement moves
  4488. the cursor momentarily to the matching `if' (or `do') statement to
  4489. show where it is. The default is `nil'.
  4490. `fortran-minimum-statement-indent-fixed'
  4491. Minimum indentation for Fortran statements when using fixed form
  4492. continuation line style. Statement bodies are never indented by
  4493. less than this. The default is 6.
  4494. `fortran-minimum-statement-indent-tab'
  4495. Minimum indentation for Fortran statements for tab format
  4496. continuation line style. Statement bodies are never indented by
  4497. less than this. The default is 8.
  4498. The following section describes the variables controlling the
  4499. indentation of comments.
  4500. 
  4501. File: emacs, Node: Fortran Comments, Next: Fortran Autofill, Prev: Fortran Indent, Up: Fortran
  4502. 26.14.3 Fortran Comments
  4503. ------------------------
  4504. The usual Emacs comment commands assume that a comment can follow a
  4505. line of code. In Fortran 77, the standard comment syntax requires an
  4506. entire line to be just a comment. Therefore, Fortran mode replaces the
  4507. standard Emacs comment commands and defines some new variables.
  4508. Fortran mode can also handle the Fortran 90 comment syntax where
  4509. comments start with `!' and can follow other text. Because only some
  4510. Fortran 77 compilers accept this syntax, Fortran mode will not insert
  4511. such comments unless you have said in advance to do so. To do this,
  4512. set the variable `fortran-comment-line-start' to `"!"'. If you use an
  4513. unusual value, you may need to change `fortran-comment-line-start-skip'.
  4514. `M-;'
  4515. Align comment or insert new comment (`comment-dwim').
  4516. `C-x ;'
  4517. Applies to nonstandard `!' comments only (`comment-set-column').
  4518. `C-c ;'
  4519. Turn all lines of the region into comments, or (with argument)
  4520. turn them back into real code (`fortran-comment-region').
  4521. `M-;' in Fortran mode runs the standard `comment-dwim'. This
  4522. recognizes any kind of existing comment and aligns its text
  4523. appropriately; if there is no existing comment, a comment is inserted
  4524. and aligned. Inserting and aligning comments are not the same in
  4525. Fortran mode as in other modes.
  4526. When a new comment must be inserted, if the current line is blank, a
  4527. full-line comment is inserted. On a non-blank line, a nonstandard `!'
  4528. comment is inserted if you have said you want to use them. Otherwise a
  4529. full-line comment is inserted on a new line before the current line.
  4530. Nonstandard `!' comments are aligned like comments in other
  4531. languages, but full-line comments are different. In a standard
  4532. full-line comment, the comment delimiter itself must always appear in
  4533. column zero. What can be aligned is the text within the comment. You
  4534. can choose from three styles of alignment by setting the variable
  4535. `fortran-comment-indent-style' to one of these values:
  4536. `fixed'
  4537. Align the text at a fixed column, which is the sum of
  4538. `fortran-comment-line-extra-indent' and the minimum statement
  4539. indentation. This is the default.
  4540. The minimum indentation is `fortran-minimum-statement-indent-tab'
  4541. for tab format continuation line style and
  4542. `fortran-minimum-statement-indent-fixed' for fixed form style.
  4543. `relative'
  4544. Align the text as if it were a line of code, but with an additional
  4545. `fortran-comment-line-extra-indent' columns of indentation.
  4546. `nil'
  4547. Don't move text in full-line comments automatically.
  4548. In addition, you can specify the character to be used to indent
  4549. within full-line comments by setting the variable
  4550. `fortran-comment-indent-char' to the single-character string you want
  4551. to use.
  4552. Compiler directive lines, or preprocessor lines, have much the same
  4553. appearance as comment lines. It is important, though, that such lines
  4554. never be indented at all, no matter what the value of
  4555. `fortran-comment-indent-style'. The variable `fortran-directive-re' is
  4556. a regular expression that specifies which lines are directives.
  4557. Matching lines are never indented, and receive distinctive font-locking.
  4558. The normal Emacs comment command `C-x ;' (`comment-set-column') has
  4559. not been redefined. If you use `!' comments, this command can be used
  4560. with them. Otherwise it is useless in Fortran mode.
  4561. The command `C-c ;' (`fortran-comment-region') turns all the lines
  4562. of the region into comments by inserting the string `c$$$' at the front
  4563. of each one. With a numeric argument, it turns the region back into
  4564. live code by deleting `c$$$' from the front of each line in it. The
  4565. string used for these comments can be controlled by setting the
  4566. variable `fortran-comment-region'. Note that here we have an example
  4567. of a command and a variable with the same name; these two uses of the
  4568. name never conflict because in Lisp and in Emacs it is always clear
  4569. from the context which one is meant.
  4570. 
  4571. File: emacs, Node: Fortran Autofill, Next: Fortran Columns, Prev: Fortran Comments, Up: Fortran
  4572. 26.14.4 Auto Fill in Fortran Mode
  4573. ---------------------------------
  4574. Fortran mode has specialized support for Auto Fill mode, which is a
  4575. minor mode that automatically splits statements as you insert them when
  4576. they become too wide. Splitting a statement involves making
  4577. continuation lines using `fortran-continuation-string' (*note ForIndent
  4578. Cont::). This splitting happens when you type <SPC>, <RET>, or <TAB>,
  4579. and also in the Fortran indentation commands. You activate Auto Fill
  4580. in Fortran mode in the normal way. *Note Auto Fill::.
  4581. Auto Fill breaks lines at spaces or delimiters when the lines get
  4582. longer than the desired width (the value of `fill-column'). The
  4583. delimiters (besides whitespace) that Auto Fill can break at are `+',
  4584. `-', `/', `*', `=', `<', `>', and `,'. The line break comes after the
  4585. delimiter if the variable `fortran-break-before-delimiters' is `nil'.
  4586. Otherwise (and by default), the break comes before the delimiter.
  4587. To enable Auto Fill in all Fortran buffers, add `auto-fill-mode' to
  4588. `fortran-mode-hook'. *Note Hooks::.
  4589. 
  4590. File: emacs, Node: Fortran Columns, Next: Fortran Abbrev, Prev: Fortran Autofill, Up: Fortran
  4591. 26.14.5 Checking Columns in Fortran
  4592. -----------------------------------
  4593. In standard Fortran 77, anything beyond column 72 is ignored. Most
  4594. compilers provide an option to change this (for example,
  4595. `-ffixed-line-length-N' in gfortran). Customize the variable
  4596. `fortran-line-length' to change the line length in Fortran mode.
  4597. Anything beyond this point is font-locked as a comment. (Unless it is
  4598. inside a string: strings that extend beyond `fortran-line-length' will
  4599. confuse font-lock.)
  4600. `C-c C-r'
  4601. Display a "column ruler" momentarily above the current line
  4602. (`fortran-column-ruler').
  4603. `C-c C-w'
  4604. Split the current window horizontally temporarily so that it is
  4605. `fortran-line-length' columns wide
  4606. (`fortran-window-create-momentarily'). This may help you avoid
  4607. making lines longer than the limit imposed by your Fortran
  4608. compiler.
  4609. `C-u C-c C-w'
  4610. Split the current window horizontally so that it is
  4611. `fortran-line-length' columns wide (`fortran-window-create'). You
  4612. can then continue editing.
  4613. `M-x fortran-strip-sequence-nos'
  4614. Delete all text in column `fortran-line-length' and beyond.
  4615. The command `C-c C-r' (`fortran-column-ruler') shows a column ruler
  4616. momentarily above the current line. The comment ruler is two lines of
  4617. text that show you the locations of columns with special significance in
  4618. Fortran programs. Square brackets show the limits of the columns for
  4619. line numbers, and curly brackets show the limits of the columns for the
  4620. statement body. Column numbers appear above them.
  4621. Note that the column numbers count from zero, as always in GNU Emacs.
  4622. As a result, the numbers may be one less than those you are familiar
  4623. with; but the positions they indicate in the line are standard for
  4624. Fortran.
  4625. The text used to display the column ruler depends on the value of the
  4626. variable `indent-tabs-mode'. If `indent-tabs-mode' is `nil', then the
  4627. value of the variable `fortran-column-ruler-fixed' is used as the
  4628. column ruler. Otherwise, the value of the variable
  4629. `fortran-column-ruler-tab' is displayed. By changing these variables,
  4630. you can change the column ruler display.
  4631. `C-c C-w' (`fortran-window-create-momentarily') temporarily splits
  4632. the current window horizontally, making a window `fortran-line-length'
  4633. columns wide, so you can see any lines that are too long. Type a space
  4634. to restore the normal width.
  4635. You can also split the window horizontally and continue editing with
  4636. the split in place. To do this, use `C-u C-c C-w' (`M-x
  4637. fortran-window-create'). By editing in this window you can immediately
  4638. see when you make a line too wide to be correct Fortran.
  4639. The command `M-x fortran-strip-sequence-nos' deletes all text in
  4640. column `fortran-line-length' and beyond, on all lines in the current
  4641. buffer. This is the easiest way to get rid of old sequence numbers.
  4642. 
  4643. File: emacs, Node: Fortran Abbrev, Prev: Fortran Columns, Up: Fortran
  4644. 26.14.6 Fortran Keyword Abbrevs
  4645. -------------------------------
  4646. Fortran mode provides many built-in abbrevs for common keywords and
  4647. declarations. These are the same sort of abbrev that you can define
  4648. yourself. To use them, you must turn on Abbrev mode. *Note Abbrevs::.
  4649. The built-in abbrevs are unusual in one way: they all start with a
  4650. semicolon. For example, one built-in Fortran abbrev is `;c' for
  4651. `continue'. If you insert `;c' and then insert a punctuation character
  4652. such as a space or a newline, the `;c' expands automatically to
  4653. `continue', provided Abbrev mode is enabled.
  4654. Type `;?' or `;C-h' to display a list of all the built-in Fortran
  4655. abbrevs and what they stand for.
  4656. 
  4657. File: emacs, Node: Building, Next: Maintaining, Prev: Programs, Up: Top
  4658. 27 Compiling and Testing Programs
  4659. *********************************
  4660. The previous chapter discusses the Emacs commands that are useful for
  4661. making changes in programs. This chapter deals with commands that
  4662. assist in the process of compiling and testing programs.
  4663. * Menu:
  4664. * Compilation:: Compiling programs in languages other
  4665. than Lisp (C, Pascal, etc.).
  4666. * Compilation Mode:: The mode for visiting compiler errors.
  4667. * Compilation Shell:: Customizing your shell properly
  4668. for use in the compilation buffer.
  4669. * Grep Searching:: Searching with grep.
  4670. * Flymake:: Finding syntax errors on the fly.
  4671. * Debuggers:: Running symbolic debuggers for non-Lisp programs.
  4672. * Executing Lisp:: Various modes for editing Lisp programs,
  4673. with different facilities for running
  4674. the Lisp programs.
  4675. * Libraries: Lisp Libraries. How Lisp programs are loaded into Emacs.
  4676. * Eval: Lisp Eval. Executing a single Lisp expression in Emacs.
  4677. * Interaction: Lisp Interaction. Executing Lisp in an Emacs buffer.
  4678. * External Lisp:: Communicating through Emacs with a separate Lisp.
  4679. 
  4680. File: emacs, Node: Compilation, Next: Compilation Mode, Up: Building
  4681. 27.1 Running Compilations under Emacs
  4682. =====================================
  4683. Emacs can run compilers for languages such as C and Fortran, feeding
  4684. the compilation log into an Emacs buffer. It can also parse the error
  4685. messages and show you where the errors occurred.
  4686. `M-x compile'
  4687. Run a compiler asynchronously under Emacs, with error messages
  4688. going to the `*compilation*' buffer.
  4689. `M-x recompile'
  4690. Invoke a compiler with the same command as in the last invocation
  4691. of `M-x compile'.
  4692. `M-x kill-compilation'
  4693. Kill the running compilation subprocess.
  4694. To run `make' or another compilation command, type `M-x compile'.
  4695. This reads a shell command line using the minibuffer, and then executes
  4696. the command by running a shell as a subprocess (or "inferior process")
  4697. of Emacs. The output is inserted in a buffer named `*compilation*'.
  4698. The current buffer's default directory is used as the working directory
  4699. for the execution of the command; normally, therefore, compilation
  4700. takes place in this directory.
  4701. The default compilation command is `make -k', which is usually
  4702. correct for programs compiled using the `make' utility (the `-k' flag
  4703. tells `make' to continue compiling as much as possible after an error).
  4704. *Note Make: (make)Top. If you have done `M-x compile' before, the
  4705. command that you specified is automatically stored in the variable
  4706. `compile-command'; this is used as the default the next time you type
  4707. `M-x compile'. A file can also specify a file-local value for
  4708. `compile-command' (*note File Variables::).
  4709. Starting a compilation displays the `*compilation*' buffer in
  4710. another window but does not select it. While the compilation is
  4711. running, the word `run' is shown in the major mode indicator for the
  4712. `*compilation*' buffer, and the word `Compiling' appears in all mode
  4713. lines. You do not have to keep the `*compilation*' buffer visible
  4714. while compilation is running; it continues in any case. When the
  4715. compilation ends, for whatever reason, the mode line of the
  4716. `*compilation*' buffer changes to say `exit' (followed by the exit
  4717. code: `[0]' for a normal exit), or `signal' (if a signal terminated the
  4718. process).
  4719. If you want to watch the compilation transcript as it appears,
  4720. switch to the `*compilation*' buffer and move point to the end of the
  4721. buffer. When point is at the end, new compilation output is inserted
  4722. above point, which remains at the end. Otherwise, point remains fixed
  4723. while compilation output is added at the end of the buffer.
  4724. If you change the variable `compilation-scroll-output' to a
  4725. non-`nil' value, the `*compilation*' buffer scrolls automatically to
  4726. follow the output. If the value is `first-error', scrolling stops when
  4727. the first error appears, leaving point at that error. For any other
  4728. non-`nil' value, scrolling continues until there is no more output.
  4729. To rerun the last compilation with the same command, type `M-x
  4730. recompile'. This reuses the compilation command from the last
  4731. invocation of `M-x compile'. It also reuses the `*compilation*' buffer
  4732. and starts the compilation in its default directory, which is the
  4733. directory in which the previous compilation was started.
  4734. Starting a new compilation also kills any compilation already
  4735. running in `*compilation*', as the buffer can only handle one
  4736. compilation at any time. However, `M-x compile' asks for confirmation
  4737. before actually killing a compilation that is running. You can also
  4738. kill the compilation process with `M-x kill-compilation'.
  4739. To run two compilations at once, start the first one, then rename
  4740. the `*compilation*' buffer (perhaps using `rename-uniquely'; *note Misc
  4741. Buffer::), then switch buffers and start the other compilation. This
  4742. will create a new `*compilation*' buffer.
  4743. You can control the environment passed to the compilation command
  4744. with the variable `compilation-environment'. Its value is a list of
  4745. environment variable settings; each element should be a string of the
  4746. form `"ENVVARNAME=VALUE"'. These environment variable settings
  4747. override the usual ones.
  4748. 
  4749. File: emacs, Node: Compilation Mode, Next: Compilation Shell, Prev: Compilation, Up: Building
  4750. 27.2 Compilation Mode
  4751. =====================
  4752. The `*compilation*' buffer uses a major mode called Compilation mode.
  4753. Compilation mode turns each error message in the buffer into a
  4754. hyperlink; you can move point to it and type <RET>, or click on it with
  4755. the mouse (*note Mouse References::), to visit the "locus" of the error
  4756. message in a separate window. The locus is the specific position in a
  4757. file where that error occurred.
  4758. If you change the variable `compilation-auto-jump-to-first-error' to
  4759. a non-`nil' value, Emacs automatically visits the locus of the first
  4760. error message that appears in the `*compilation*' buffer.
  4761. Compilation mode provides the following additional commands. These
  4762. commands can also be used in `*grep*' buffers, where the hyperlinks are
  4763. search matches rather than error messages (*note Grep Searching::).
  4764. `M-g M-n'
  4765. `M-g n'
  4766. `C-x `'
  4767. Visit the locus of the next error message or match (`next-error').
  4768. `M-g M-p'
  4769. `M-g p'
  4770. Visit the locus of the previous error message or match
  4771. (`previous-error').
  4772. `M-n'
  4773. Move point to the next error message or match, without visiting its
  4774. locus (`compilation-next-error').
  4775. `M-p'
  4776. Move point to the previous error message or match, without visiting
  4777. its locus (`compilation-previous-error').
  4778. `M-}'
  4779. Move point to the next error message or match occurring in a
  4780. different file (`compilation-next-file').
  4781. `M-{'
  4782. Move point to the previous error message or match occurring in a
  4783. different file (`compilation-previous-file').
  4784. `C-c C-f'
  4785. Toggle Next Error Follow minor mode, which makes cursor motion in
  4786. the compilation buffer produce automatic source display.
  4787. To visit errors sequentially, type `C-x `' (`next-error'), or
  4788. equivalently `M-g M-n' or `M-g n'. This command can be invoked from
  4789. any buffer, not just a Compilation mode buffer. The first time you
  4790. invoke it after a compilation, it visits the locus of the first error
  4791. message. Each subsequent `C-x `' visits the next error, in a similar
  4792. fashion. If you visit a specific error with <RET> or a mouse click in
  4793. the `*compilation*' buffer, subsequent `C-x `' commands advance from
  4794. there. When `C-x `' finds no more error messages to visit, it signals
  4795. an error. `C-u C-x `' starts again from the beginning of the
  4796. compilation buffer, and visits the first locus.
  4797. `M-g M-p' or `M-g p' (`previous-error') iterates through errors in
  4798. the opposite direction.
  4799. The `next-error' and `previous-error' commands don't just act on the
  4800. errors or matches listed in `*compilation*' and `*grep*' buffers; they
  4801. also know how to iterate through error or match lists produced by other
  4802. commands, such as `M-x occur' (*note Other Repeating Search::). If you
  4803. are already in a buffer containing error messages or matches, those are
  4804. the ones that are iterated through; otherwise, Emacs looks for a buffer
  4805. containing error messages or matches amongst the windows of the
  4806. selected frame, then for one that `next-error' or `previous-error'
  4807. previously iterated through, and finally amongst all other buffers. If
  4808. the buffer chosen for iterating through is not currently displayed in a
  4809. window, it will be displayed.
  4810. By default, the `next-error' and `previous-error' commands skip less
  4811. important messages. The variable `compilation-skip-threshold' controls
  4812. this. The default value, 1, means to skip anything less important than
  4813. a warning. A value of 2 means to skip anything less important than an
  4814. error, while 0 means not to skip any messages.
  4815. When Emacs visits the locus of an error message, it momentarily
  4816. highlights the relevant source line. The duration of this highlight is
  4817. determined by the variable `next-error-highlight'.
  4818. If the `*compilation*' buffer is shown in a window with a left
  4819. fringe (*note Fringes::), the locus-visiting commands put an arrow in
  4820. the fringe, pointing to the current error message. If the window has
  4821. no left fringe, such as on a text terminal, these commands scroll the
  4822. window so that the current message is at the top of the window. If you
  4823. change the variable `compilation-context-lines' to an integer value N,
  4824. these commands scroll the window so that the current error message is N
  4825. lines from the top, whether or not there is a fringe; the default
  4826. value, `nil', gives the behavior described above.
  4827. To parse messages from the compiler, Compilation mode uses the
  4828. variable `compilation-error-regexp-alist' which lists various error
  4829. message formats and tells Emacs how to extract the locus from each. A
  4830. similar variable, `grep-regexp-alist', tells Emacs how to parse output
  4831. from a `grep' command (*note Grep Searching::).
  4832. Compilation mode also defines the keys <SPC> and <DEL> to scroll by
  4833. screenfuls; `M-n' (`compilation-next-error') and `M-p'
  4834. (`compilation-previous-error') to move to the next or previous error
  4835. message; and `M-{' (`compilation-next-file') and `M-}'
  4836. (`compilation-previous-file') to move to the next or previous error
  4837. message for a different source file.
  4838. You can type `C-c C-f' to toggle Next Error Follow mode. In this
  4839. minor mode, ordinary cursor motion in the compilation buffer
  4840. automatically updates the source buffer, i.e. moving the cursor over an
  4841. error message causes the locus of that error to be displayed.
  4842. The features of Compilation mode are also available in a minor mode
  4843. called Compilation Minor mode. This lets you parse error messages in
  4844. any buffer, not just a normal compilation output buffer. Type `M-x
  4845. compilation-minor-mode' to enable the minor mode. For instance, in an
  4846. Rlogin buffer (*note Remote Host::), Compilation minor mode
  4847. automatically accesses remote source files by FTP (*note File Names::).
  4848. 
  4849. File: emacs, Node: Compilation Shell, Next: Grep Searching, Prev: Compilation Mode, Up: Building
  4850. 27.3 Subshells for Compilation
  4851. ==============================
  4852. The `M-x compile' command uses a shell to run the compilation command,
  4853. but specifies the option for a noninteractive shell. This means, in
  4854. particular, that the shell should start with no prompt. If you find
  4855. your usual shell prompt making an unsightly appearance in the
  4856. `*compilation*' buffer, it means you have made a mistake in your
  4857. shell's init file by setting the prompt unconditionally. (This init
  4858. file may be named `.bashrc', `.profile', `.cshrc', `.shrc', etc.,
  4859. depending on what shell you use.) The shell init file should set the
  4860. prompt only if there already is a prompt. Here's how to do it in bash:
  4861. if [ "${PS1+set}" = set ]
  4862. then PS1=...
  4863. fi
  4864. And here's how to do it in csh:
  4865. if ($?prompt) set prompt = ...
  4866. Emacs does not expect a compiler process to launch asynchronous
  4867. subprocesses; if it does, and they keep running after the main compiler
  4868. process has terminated, Emacs may kill them or their output may not
  4869. arrive in Emacs. To avoid this problem, make the main compilation
  4870. process wait for its subprocesses to finish. In a shell script, you
  4871. can do this using `$!' and `wait', like this:
  4872. (sleep 10; echo 2nd)& pid=$! # Record pid of subprocess
  4873. echo first message
  4874. wait $pid # Wait for subprocess
  4875. If the background process does not output to the compilation buffer, so
  4876. you only need to prevent it from being killed when the main compilation
  4877. process terminates, this is sufficient:
  4878. nohup COMMAND; sleep 1
  4879. On the MS-DOS "operating system", asynchronous subprocesses are not
  4880. supported, so `M-x compile' runs the compilation command synchronously
  4881. (i.e. you must wait until the command finishes before you can do
  4882. anything else in Emacs). *Note MS-DOS::.
  4883. 
  4884. File: emacs, Node: Grep Searching, Next: Flymake, Prev: Compilation Shell, Up: Building
  4885. 27.4 Searching with Grep under Emacs
  4886. ====================================
  4887. Just as you can run a compiler from Emacs and then visit the lines with
  4888. compilation errors, you can also run `grep' and then visit the lines on
  4889. which matches were found. This works by treating the matches reported
  4890. by `grep' as if they were "errors". The output buffer uses Grep mode,
  4891. which is a variant of Compilation mode (*note Compilation Mode::).
  4892. `M-x grep'
  4893. `M-x lgrep'
  4894. Run `grep' asynchronously under Emacs, listing matching lines in
  4895. the buffer named `*grep*'.
  4896. `M-x grep-find'
  4897. `M-x find-grep'
  4898. `M-x rgrep'
  4899. Run `grep' via `find', and collect output in the `*grep*' buffer.
  4900. `M-x zrgrep'
  4901. Run `zgrep' and collect output in the `*grep*' buffer.
  4902. `M-x kill-grep'
  4903. Kill the running `grep' subprocess.
  4904. To run `grep', type `M-x grep', then enter a command line that
  4905. specifies how to run `grep'. Use the same arguments you would give
  4906. `grep' when running it normally: a `grep'-style regexp (usually in
  4907. single-quotes to quote the shell's special characters) followed by file
  4908. names, which may use wildcards. If you specify a prefix argument for
  4909. `M-x grep', it finds the tag (*note Tags::) in the buffer around point,
  4910. and puts that into the default `grep' command.
  4911. Your command need not simply run `grep'; you can use any shell
  4912. command that produces output in the same format. For instance, you can
  4913. chain `grep' commands, like this:
  4914. grep -nH -e foo *.el | grep bar | grep toto
  4915. The output from `grep' goes in the `*grep*' buffer. You can find
  4916. the corresponding lines in the original files using `C-x `', <RET>, and
  4917. so forth, just like compilation errors.
  4918. Some grep programs accept a `--color' option to output special
  4919. markers around matches for the purpose of highlighting. You can make
  4920. use of this feature by setting `grep-highlight-matches' to `t'. When
  4921. displaying a match in the source buffer, the exact match will be
  4922. highlighted, instead of the entire source line.
  4923. The command `M-x grep-find' (also available as `M-x find-grep') is
  4924. similar to `M-x grep', but it supplies a different initial default for
  4925. the command--one that runs both `find' and `grep', so as to search
  4926. every file in a directory tree. See also the `find-grep-dired'
  4927. command, in *note Dired and Find::.
  4928. The commands `M-x lgrep' (local grep) and `M-x rgrep' (recursive
  4929. grep) are more user-friendly versions of `grep' and `grep-find', which
  4930. prompt separately for the regular expression to match, the files to
  4931. search, and the base directory for the search. Case sensitivity of the
  4932. search is controlled by the current value of `case-fold-search'. The
  4933. command `M-x zrgrep' is similar to `M-x rgrep', but it calls `zgrep'
  4934. instead of `grep' to search the contents of gzipped files.
  4935. These commands build the shell commands based on the variables
  4936. `grep-template' (for `lgrep') and `grep-find-template' (for `rgrep').
  4937. The files to search can use aliases defined in the variable
  4938. `grep-files-aliases'.
  4939. Directories listed in the variable `grep-find-ignored-directories'
  4940. are automatically skipped by `M-x rgrep'. The default value includes
  4941. the data directories used by various version control systems.
  4942. 
  4943. File: emacs, Node: Flymake, Next: Debuggers, Prev: Grep Searching, Up: Building
  4944. 27.5 Finding Syntax Errors On The Fly
  4945. =====================================
  4946. Flymake mode is a minor mode that performs on-the-fly syntax checking
  4947. for many programming and markup languages, including C, C++, Perl,
  4948. HTML, and TeX/LaTeX. It is somewhat analogous to Flyspell mode, which
  4949. performs spell checking for ordinary human languages in a similar
  4950. fashion (*note Spelling::). As you edit a file, Flymake mode runs an
  4951. appropriate syntax checking tool in the background, using a temporary
  4952. copy of the buffer. It then parses the error and warning messages, and
  4953. highlights the erroneous lines in the buffer. The syntax checking tool
  4954. used depends on the language; for example, for C/C++ files this is
  4955. usually the C compiler. Flymake can also use build tools such as
  4956. `make' for checking complicated projects.
  4957. To enable Flymake mode, type `M-x flymake-mode'. You can jump to
  4958. the errors that it finds by using `M-x flymake-goto-next-error' and
  4959. `M-x flymake-goto-prev-error'. To display any error messages
  4960. associated with the current line, type `M-x
  4961. flymake-display-err-menu-for-current-line'.
  4962. For more details about using Flymake, see *note Flymake:
  4963. (flymake)Top.
  4964. 
  4965. File: emacs, Node: Debuggers, Next: Executing Lisp, Prev: Flymake, Up: Building
  4966. 27.6 Running Debuggers Under Emacs
  4967. ==================================
  4968. The GUD (Grand Unified Debugger) library provides an Emacs interface to
  4969. a wide variety of symbolic debuggers. It can run the GNU Debugger
  4970. (GDB), as well as DBX, SDB, XDB, Perl's debugging mode, the Python
  4971. debugger PDB, and the Java Debugger JDB.
  4972. Emacs provides a special interface to GDB, which uses extra Emacs
  4973. windows to display the state of the debugged program. *Note GDB
  4974. Graphical Interface::.
  4975. Emacs also has a built-in debugger for Emacs Lisp programs. *Note
  4976. The Lisp Debugger: (elisp)Debugging.
  4977. * Menu:
  4978. * Starting GUD:: How to start a debugger subprocess.
  4979. * Debugger Operation:: Connection between the debugger and source buffers.
  4980. * Commands of GUD:: Key bindings for common commands.
  4981. * GUD Customization:: Defining your own commands for GUD.
  4982. * GDB Graphical Interface:: An enhanced mode that uses GDB features to
  4983. implement a graphical debugging environment.
  4984. 
  4985. File: emacs, Node: Starting GUD, Next: Debugger Operation, Up: Debuggers
  4986. 27.6.1 Starting GUD
  4987. -------------------
  4988. There are several commands for starting a debugger subprocess, each
  4989. corresponding to a particular debugger program.
  4990. `M-x gdb'
  4991. Run GDB as a subprocess, and interact with it via an IDE-like Emacs
  4992. interface. *Note GDB Graphical Interface::, for more information
  4993. about this command.
  4994. `M-x gud-gdb'
  4995. Run GDB, using a GUD interaction buffer for input and output to the
  4996. GDB subprocess (*note Debugger Operation::). If such a buffer
  4997. already exists, switch to it; otherwise, create the buffer and
  4998. switch to it.
  4999. The other commands in this list do the same, for other debugger
  5000. programs.
  5001. `M-x perldb'
  5002. Run the Perl interpreter in debug mode.
  5003. `M-x jdb'
  5004. Run the Java debugger.
  5005. `M-x pdb'
  5006. Run the Python debugger.
  5007. `M-x dbx'
  5008. Run the DBX debugger.
  5009. `M-x xdb'
  5010. Run the XDB debugger.
  5011. `M-x sdb'
  5012. Run the SDB debugger.
  5013. Each of these commands reads a command line to invoke the debugger,
  5014. using the minibuffer. The minibuffer's initial contents contain the
  5015. standard executable name and options for the debugger, and sometimes
  5016. also a guess for the name of the executable file you want to debug.
  5017. Shell wildcards and variables are not allowed in this command line.
  5018. Emacs assumes that the first command argument which does not start with
  5019. a `-' is the executable file name.
  5020. Tramp provides a facility for remote debugging, whereby both the
  5021. debugger and the program being debugged are on the same remote host.
  5022. *Note Running a debugger on a remote host: (tramp)Running a debugger on
  5023. a remote host, for details. This is separate from GDB's remote
  5024. debugging feature, where the program and the debugger run on different
  5025. machines (*note Debugging Remote Programs: (gdb)Remote Debugging.).
  5026. 
  5027. File: emacs, Node: Debugger Operation, Next: Commands of GUD, Prev: Starting GUD, Up: Debuggers
  5028. 27.6.2 Debugger Operation
  5029. -------------------------
  5030. The "GUD interaction buffer" is an Emacs buffer which is used to send
  5031. text commands to a debugger subprocess, and record its output. This is
  5032. the basic interface for interacting with a debugger, used by `M-x
  5033. gud-gdb' and other commands listed in *note Starting GUD::. The `M-x
  5034. gdb' command extends this interface with additional specialized buffers
  5035. for controlling breakpoints, stack frames, and other aspects of the
  5036. debugger state (*note GDB Graphical Interface::).
  5037. The GUD interaction buffer uses a variant of Shell mode, so the
  5038. Emacs commands defined by Shell mode are available (*note Shell
  5039. Mode::). Completion is available for most debugger commands (*note
  5040. Completion::), and you can use the usual Shell mode history commands to
  5041. repeat them. *Note Commands of GUD::, for special commands that can be
  5042. used in the GUD interaction buffer.
  5043. As you debug a program, Emacs displays the relevant source files by
  5044. visiting them in Emacs buffers, with an arrow in the left fringe
  5045. indicating the current execution line. (On a text terminal, the arrow
  5046. appears as `=>', overlaid on the first two text columns.) Moving point
  5047. in such a buffer does not move the arrow. You are free to edit these
  5048. source files, but note that inserting or deleting lines will throw off
  5049. the arrow's positioning, as Emacs has no way to figure out which edited
  5050. source line corresponds to the line reported by the debugger
  5051. subprocess. To update this information, you typically have to
  5052. recompile and restart the program.
  5053. GUD Tooltip mode is a global minor mode that adds tooltip support to
  5054. GUD. To toggle this mode, type `M-x gud-tooltip-mode'. It is disabled
  5055. by default. If enabled, you can move the mouse cursor over a variable
  5056. to show its value in a tooltip (*note Tooltips::); this takes effect in
  5057. the GUD interaction buffer, and in all source buffers with major modes
  5058. listed in the variable `gud-tooltip-modes'. If the variable
  5059. `gud-tooltip-echo-area' is non-`nil', values are shown in the echo area
  5060. instead of a tooltip.
  5061. When using GUD Tooltip mode with `M-x gud-gdb', you should note that
  5062. displaying an expression's value in GDB can sometimes expand a macro,
  5063. potentially causing side effects in the debugged program. If you use
  5064. the `M-x gdb' interface, this problem does not occur, as there is
  5065. special code to avoid side-effects; furthermore, you can display macro
  5066. definitions associated with an identifier when the program is not
  5067. executing.
  5068. 
  5069. File: emacs, Node: Commands of GUD, Next: GUD Customization, Prev: Debugger Operation, Up: Debuggers
  5070. 27.6.3 Commands of GUD
  5071. ----------------------
  5072. GUD provides commands for setting and clearing breakpoints, selecting
  5073. stack frames, and stepping through the program.
  5074. `C-x <SPC>'
  5075. Set a breakpoint on the source line that point is on.
  5076. `C-x <SPC>' (`gud-break'), when called in a source buffer, sets a
  5077. debugger breakpoint on the current source line. This command is
  5078. available only after starting GUD. If you call it in a buffer that is
  5079. not associated with any debugger subprocess, it signals a error.
  5080. The following commands are available both in the GUD interaction
  5081. buffer and globally, but with different key bindings. The keys
  5082. starting with `C-c' are available only in the GUD interaction buffer,
  5083. while those starting with `C-x C-a' are available globally. Some of
  5084. these commands are also available via the tool bar; some are not
  5085. supported by certain debuggers.
  5086. `C-c C-l'
  5087. `C-x C-a C-l'
  5088. Display, in another window, the last source line referred to in the
  5089. GUD interaction buffer (`gud-refresh').
  5090. `C-c C-s'
  5091. `C-x C-a C-s'
  5092. Execute the next single line of code (`gud-step'). If the line
  5093. contains a function call, execution stops after entering the called
  5094. function.
  5095. `C-c C-n'
  5096. `C-x C-a C-n'
  5097. Execute the next single line of code, stepping across function
  5098. calls without stopping inside the functions (`gud-next').
  5099. `C-c C-i'
  5100. `C-x C-a C-i'
  5101. Execute a single machine instruction (`gud-stepi').
  5102. `C-c C-p'
  5103. `C-x C-a C-p'
  5104. Evaluate the expression at point (`gud-print'). If Emacs does not
  5105. print the exact expression that you want, mark it as a region
  5106. first.
  5107. `C-c C-r'
  5108. `C-x C-a C-r'
  5109. Continue execution without specifying any stopping point. The
  5110. program will run until it hits a breakpoint, terminates, or gets a
  5111. signal that the debugger is checking for (`gud-cont').
  5112. `C-c C-d'
  5113. `C-x C-a C-d'
  5114. Delete the breakpoint(s) on the current source line, if any
  5115. (`gud-remove'). If you use this command in the GUD interaction
  5116. buffer, it applies to the line where the program last stopped.
  5117. `C-c C-t'
  5118. `C-x C-a C-t'
  5119. Set a temporary breakpoint on the current source line, if any
  5120. (`gud-tbreak'). If you use this command in the GUD interaction
  5121. buffer, it applies to the line where the program last stopped.
  5122. `C-c <'
  5123. `C-x C-a <'
  5124. Select the next enclosing stack frame (`gud-up'). This is
  5125. equivalent to the GDB command `up'.
  5126. `C-c >'
  5127. `C-x C-a >'
  5128. Select the next inner stack frame (`gud-down'). This is
  5129. equivalent to the GDB command `down'.
  5130. `C-c C-u'
  5131. `C-x C-a C-u'
  5132. Continue execution to the current line (`gud-until'). The program
  5133. will run until it hits a breakpoint, terminates, gets a signal
  5134. that the debugger is checking for, or reaches the line on which the
  5135. cursor currently sits.
  5136. `C-c C-f'
  5137. `C-x C-a C-f'
  5138. Run the program until the selected stack frame returns or stops
  5139. for some other reason (`gud-finish').
  5140. If you are using GDB, these additional key bindings are available:
  5141. `C-x C-a C-j'
  5142. Only useful in a source buffer, `gud-jump' transfers the program's
  5143. execution point to the current line. In other words, the next
  5144. line that the program executes will be the one where you gave the
  5145. command. If the new execution line is in a different function from
  5146. the previously one, GDB prompts for confirmation since the results
  5147. may be bizarre. See the GDB manual entry regarding `jump' for
  5148. details.
  5149. `<TAB>'
  5150. With GDB, complete a symbol name (`gud-gdb-complete-command').
  5151. This key is available only in the GUD interaction buffer.
  5152. These commands interpret a numeric argument as a repeat count, when
  5153. that makes sense.
  5154. Because <TAB> serves as a completion command, you can't use it to
  5155. enter a tab as input to the program you are debugging with GDB.
  5156. Instead, type `C-q <TAB>' to enter a tab.
  5157. 
  5158. File: emacs, Node: GUD Customization, Next: GDB Graphical Interface, Prev: Commands of GUD, Up: Debuggers
  5159. 27.6.4 GUD Customization
  5160. ------------------------
  5161. On startup, GUD runs one of the following hooks: `gdb-mode-hook', if
  5162. you are using GDB; `dbx-mode-hook', if you are using DBX;
  5163. `sdb-mode-hook', if you are using SDB; `xdb-mode-hook', if you are
  5164. using XDB; `perldb-mode-hook', for Perl debugging mode;
  5165. `pdb-mode-hook', for PDB; `jdb-mode-hook', for JDB. *Note Hooks::.
  5166. The `gud-def' Lisp macro (*note Defining Macros: (elisp)Defining
  5167. Macros.) provides a convenient way to define an Emacs command that
  5168. sends a particular command string to the debugger, and set up a key
  5169. binding for in the GUD interaction buffer:
  5170. (gud-def FUNCTION CMDSTRING BINDING DOCSTRING)
  5171. This defines a command named FUNCTION which sends CMDSTRING to the
  5172. debugger process, and gives it the documentation string DOCSTRING. You
  5173. can then use the command FUNCTION in any buffer. If BINDING is
  5174. non-`nil', `gud-def' also binds the command to `C-c BINDING' in the GUD
  5175. buffer's mode and to `C-x C-a BINDING' generally.
  5176. The command string CMDSTRING may contain certain `%'-sequences that
  5177. stand for data to be filled in at the time FUNCTION is called:
  5178. `%f'
  5179. The name of the current source file. If the current buffer is the
  5180. GUD buffer, then the "current source file" is the file that the
  5181. program stopped in.
  5182. `%l'
  5183. The number of the current source line. If the current buffer is
  5184. the GUD buffer, then the "current source line" is the line that
  5185. the program stopped in.
  5186. `%e'
  5187. In transient-mark-mode the text in the region, if it is active.
  5188. Otherwise the text of the C lvalue or function-call expression at
  5189. or adjacent to point.
  5190. `%a'
  5191. The text of the hexadecimal address at or adjacent to point.
  5192. `%p'
  5193. The numeric argument of the called function, as a decimal number.
  5194. If the command is used without a numeric argument, `%p' stands for
  5195. the empty string.
  5196. If you don't use `%p' in the command string, the command you define
  5197. ignores any numeric argument.
  5198. `%d'
  5199. The name of the directory of the current source file.
  5200. `%c'
  5201. Fully qualified class name derived from the expression surrounding
  5202. point (jdb only).
  5203. 
  5204. File: emacs, Node: GDB Graphical Interface, Prev: GUD Customization, Up: Debuggers
  5205. 27.6.5 GDB Graphical Interface
  5206. ------------------------------
  5207. The command `M-x gdb' starts GDB in an IDE-like interface, with
  5208. specialized buffers for controlling breakpoints, stack frames, and
  5209. other aspects of the debugger state. It also provides additional ways
  5210. to control the debugging session with the mouse, such as clicking in
  5211. the fringe of a source buffer to set a breakpoint there.
  5212. To run GDB using just the GUD interaction buffer interface, without
  5213. these additional features, use `M-x gud-gdb' (*note Starting GUD::).
  5214. You must use this if you want to debug multiple programs within one
  5215. Emacs session, as that is currently unsupported by `M-x gdb'.
  5216. Internally, `M-x gdb' informs GDB that its "screen size" is
  5217. unlimited; for correct operation, you must not change GDB's screen
  5218. height and width values during the debugging session.
  5219. * Menu:
  5220. * GDB User Interface Layout:: Control the number of displayed buffers.
  5221. * Source Buffers:: Use the mouse in the fringe/margin to
  5222. control your program.
  5223. * Breakpoints Buffer:: A breakpoint control panel.
  5224. * Threads Buffer:: Displays your threads.
  5225. * Stack Buffer:: Select a frame from the call stack.
  5226. * Other GDB Buffers:: Other buffers for controlling the GDB state.
  5227. * Watch Expressions:: Monitor variable values in the speedbar.
  5228. * Multithreaded Debugging:: Debugging programs with several threads.
  5229. 
  5230. File: emacs, Node: GDB User Interface Layout, Next: Source Buffers, Up: GDB Graphical Interface
  5231. 27.6.5.1 GDB User Interface Layout
  5232. ..................................
  5233. If the variable `gdb-many-windows' is `nil' (the default), `M-x gdb'
  5234. normally displays only the GUD interaction buffer. However, if the
  5235. variable `gdb-show-main' is also non-`nil', it starts with two windows:
  5236. one displaying the GUD interaction buffer, and the other showing the
  5237. source for the `main' function of the program you are debugging.
  5238. If `gdb-many-windows' is non-`nil', then `M-x gdb' displays the
  5239. following frame layout:
  5240. +--------------------------------+--------------------------------+
  5241. | GUD interaction buffer | Locals/Registers buffer |
  5242. |--------------------------------+--------------------------------+
  5243. | Primary Source buffer | I/O buffer for debugged pgm |
  5244. |--------------------------------+--------------------------------+
  5245. | Stack buffer | Breakpoints/Threads buffer |
  5246. +--------------------------------+--------------------------------+
  5247. However, if `gdb-use-separate-io-buffer' is `nil', the I/O buffer
  5248. does not appear and the primary source buffer occupies the full width
  5249. of the frame.
  5250. If you ever change the window layout, you can restore the "many
  5251. windows" layout by typing `M-x gdb-restore-windows'. To toggle between
  5252. the many windows layout and a simple layout with just the GUD
  5253. interaction buffer and a source file, type `M-x gdb-many-windows'.
  5254. You may also specify additional GDB-related buffers to display,
  5255. either in the same frame or a different one. Select the buffers you
  5256. want by typing `M-x gdb-display-BUFFERTYPE-buffer' or `M-x
  5257. gdb-frame-BUFFERTYPE-buffer', where BUFFERTYPE is the relevant buffer
  5258. type, such as `breakpoints'. You can do the same with the menu bar,
  5259. with the `GDB-Windows' and `GDB-Frames' sub-menus of the `GUD' menu.
  5260. When you finish debugging, kill the GUD interaction buffer with `C-x
  5261. k', which will also kill all the buffers associated with the session.
  5262. However you need not do this if, after editing and re-compiling your
  5263. source code within Emacs, you wish to continue debugging. When you
  5264. restart execution, GDB automatically finds the new executable. Keeping
  5265. the GUD interaction buffer has the advantage of keeping the shell
  5266. history as well as GDB's breakpoints. You do need to check that the
  5267. breakpoints in recently edited source files are still in the right
  5268. places.
  5269. 
  5270. File: emacs, Node: Source Buffers, Next: Breakpoints Buffer, Prev: GDB User Interface Layout, Up: GDB Graphical Interface
  5271. 27.6.5.2 Source Buffers
  5272. .......................
  5273. `Mouse-1' (in fringe)
  5274. Set or clear a breakpoint on that line.
  5275. `C-Mouse-1' (in fringe)
  5276. Enable or disable a breakpoint on that line.
  5277. `Mouse-3' (in fringe)
  5278. Continue execution to that line.
  5279. `C-Mouse-3' (in fringe)
  5280. Jump to that line.
  5281. On a graphical display, you can click `Mouse-1' in the fringe of a
  5282. source buffer, to set a breakpoint on that line (*note Fringes::). A
  5283. red dot appears in the fringe, where you clicked. If a breakpoint
  5284. already exists there, the click removes it. A `C-Mouse-1' click
  5285. enables or disables an existing breakpoint; a breakpoint that is
  5286. disabled, but not unset, is indicated by a gray dot.
  5287. On a text terminal, or when fringes are disabled, enabled
  5288. breakpoints are indicated with a `B' character in the left margin of
  5289. the window. Disabled breakpoints are indicated with `b'. (The margin
  5290. is only displayed if a breakpoint is present.)
  5291. A solid arrow in the left fringe of a source buffer indicates the
  5292. line of the innermost frame where the debugged program has stopped. A
  5293. hollow arrow indicates the current execution line of a higher-level
  5294. frame. If you drag the arrow in the fringe with `Mouse-1', that causes
  5295. execution to advance to the line where you release the button.
  5296. Alternatively, you can click `Mouse-3' in the fringe to advance to that
  5297. line. You can click `C-Mouse-3' in the fringe to jump to that line
  5298. without executing the intermediate lines. This command allows you to
  5299. go backwards, which can be useful for running through code that has
  5300. already executed, in order to examine its execution in more detail.
  5301. 
  5302. File: emacs, Node: Breakpoints Buffer, Next: Threads Buffer, Prev: Source Buffers, Up: GDB Graphical Interface
  5303. 27.6.5.3 Breakpoints Buffer
  5304. ...........................
  5305. The GDB Breakpoints buffer shows the breakpoints, watchpoints and
  5306. catchpoints in the debugger session. *Note Breakpoints:
  5307. (gdb)Breakpoints. It provides the following commands, which mostly
  5308. apply to the "current breakpoint" (the breakpoint which point is on):
  5309. `<SPC>'
  5310. Enable/disable current breakpoint (`gdb-toggle-breakpoint'). On a
  5311. graphical display, this changes the color of the dot in the fringe
  5312. of the source buffer at that line. The dot is red when the
  5313. breakpoint is enabled, and gray when it is disabled.
  5314. `D'
  5315. Delete the current breakpoint (`gdb-delete-breakpoint').
  5316. `<RET>'
  5317. Visit the source line for the current breakpoint
  5318. (`gdb-goto-breakpoint').
  5319. `Mouse-2'
  5320. Visit the source line for the breakpoint you click on.
  5321. When `gdb-many-windows' is non-`nil', the GDB Breakpoints buffer
  5322. shares its window with the GDB Threads buffer. To switch from one to
  5323. the other click with `Mouse-1' on the relevant button in the header
  5324. line. If `gdb-show-threads-by-default' is non-`nil', the GDB Threads
  5325. buffer is the one shown by default.
  5326. 
  5327. File: emacs, Node: Threads Buffer, Next: Stack Buffer, Prev: Breakpoints Buffer, Up: GDB Graphical Interface
  5328. 27.6.5.4 Threads Buffer
  5329. .......................
  5330. The GDB Threads buffer displays a summary of the threads in the
  5331. debugged program. *Note Threads: (gdb)Threads. To select a thread,
  5332. move point there and type <RET> (`gdb-select-thread'), or click on it
  5333. with `Mouse-2'. This also displays the associated source buffer, and
  5334. updates the contents of the other GDB buffers.
  5335. You can customize variables under `gdb-buffers' group to select
  5336. fields included in GDB Threads buffer.
  5337. `gdb-thread-buffer-verbose-names'
  5338. Show long thread names like `Thread 0x4e2ab70 (LWP 1983)'.
  5339. `gdb-thread-buffer-arguments'
  5340. Show arguments of thread top frames.
  5341. `gdb-thread-buffer-locations'
  5342. Show file information or library names.
  5343. `gdb-thread-buffer-addresses'
  5344. Show addresses for thread frames in threads buffer.
  5345. To view information for several threads simultaneously, use the
  5346. following commands from the GDB Threads buffer.
  5347. `d'
  5348. Display disassembly buffer for the thread at current line
  5349. (`gdb-display-disassembly-for-thread').
  5350. `f'
  5351. Display the GDB Stack buffer for the thread at current line
  5352. (`gdb-display-stack-for-thread').
  5353. `l'
  5354. Display the GDB Locals buffer for the thread at current line
  5355. (`gdb-display-locals-for-thread').
  5356. `r'
  5357. Display the GDB Registers buffer for the thread at current line
  5358. (`gdb-display-registers-for-thread').
  5359. Their upper-case counterparts, `D', `F' ,`L' and `R', display the
  5360. corresponding buffer in a new frame.
  5361. When you create a buffer showing information about some specific
  5362. thread, it becomes bound to that thread and keeps showing actual
  5363. information while you debug your program. The mode indicator for each
  5364. GDB buffer shows the number of thread it is showing information about.
  5365. The thread number is also included in the buffer name of bound buffers.
  5366. Further commands are available in the GDB Threads buffer which
  5367. depend on the mode of GDB that is used for controlling execution of
  5368. your program. *Note Multithreaded Debugging::.
  5369. 
  5370. Local Variables:
  5371. coding: iso-8859-1
  5372. End: