1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869 |
- This is ../../info/gnus, produced by makeinfo version 4.13 from
- gnus.texi.
- Copyright (C) 1995-2012 Free Software Foundation, Inc.
- Permission is granted to copy, distribute and/or modify this
- document under the terms of the GNU Free Documentation License,
- Version 1.3 or any later version published by the Free Software
- Foundation; with no Invariant Sections, with the Front-Cover texts
- being "A GNU Manual", and with the Back-Cover Texts as in (a)
- below. A copy of the license is included in the section entitled
- "GNU Free Documentation License".
- (a) The FSF's Back-Cover Text is: "You have the freedom to copy and
- modify this GNU manual. Buying copies from the FSF supports it in
- developing GNU and promoting software freedom."
- INFO-DIR-SECTION Emacs network features
- START-INFO-DIR-ENTRY
- * Gnus: (gnus). The newsreader Gnus.
- END-INFO-DIR-ENTRY
- File: gnus, Node: September Gnus, Next: Red Gnus, Prev: ding Gnus, Up: New Features
- 11.2.8.2 September Gnus
- .......................
- New features in Gnus 5.2/5.3:
- * A new message composition mode is used. All old customization
- variables for `mail-mode', `rnews-reply-mode' and `gnus-msg' are
- now obsolete.
- * Gnus is now able to generate "sparse" threads--threads where
- missing articles are represented by empty nodes (*note Customizing
- Threading::).
- (setq gnus-build-sparse-threads 'some)
- * Outgoing articles are stored on a special archive server (*note
- Archived Messages::).
- * Partial thread regeneration now happens when articles are referred.
- * Gnus can make use of GroupLens predictions.
- * Picons (personal icons) can be displayed under XEmacs (*note
- Picons::).
- * A `trn'-like tree buffer can be displayed (*note Tree Display::).
- (setq gnus-use-trees t)
- * An `nn'-like pick-and-read minor mode is available for the summary
- buffers (*note Pick and Read::).
- (add-hook 'gnus-summary-mode-hook 'gnus-pick-mode)
- * In binary groups you can use a special binary minor mode (*note
- Binary Groups::).
- * Groups can be grouped in a folding topic hierarchy (*note Group
- Topics::).
- (add-hook 'gnus-group-mode-hook 'gnus-topic-mode)
- * Gnus can re-send and bounce mail (*note Summary Mail Commands::).
- * Groups can now have a score, and bubbling based on entry frequency
- is possible (*note Group Score::).
- (add-hook 'gnus-summary-exit-hook 'gnus-summary-bubble-group)
- * Groups can be process-marked, and commands can be performed on
- groups of groups (*note Marking Groups::).
- * Caching is possible in virtual groups.
- * `nndoc' now understands all kinds of digests, mail boxes, rnews
- news batches, ClariNet briefs collections, and just about
- everything else (*note Document Groups::).
- * Gnus has a new back end (`nnsoup') to create/read SOUP packets.
- * The Gnus cache is much faster.
- * Groups can be sorted according to many criteria (*note Sorting
- Groups::).
- * New group parameters have been introduced to set list-addresses and
- expiry times (*note Group Parameters::).
- * All formatting specs allow specifying faces to be used (*note
- Formatting Fonts::).
- * There are several more commands for setting/removing/acting on
- process marked articles on the `M P' submap (*note Setting Process
- Marks::).
- * The summary buffer can be limited to show parts of the available
- articles based on a wide range of criteria. These commands have
- been bound to keys on the `/' submap (*note Limiting::).
- * Articles can be made persistent with the `*' command (*note
- Persistent Articles::).
- * All functions for hiding article elements are now toggles.
- * Article headers can be buttonized (*note Article Washing::).
- * All mail back ends support fetching articles by `Message-ID'.
- * Duplicate mail can now be treated properly (*note Duplicates::).
- * All summary mode commands are available directly from the article
- buffer (*note Article Keymap::).
- * Frames can be part of `gnus-buffer-configuration' (*note Window
- Layout::).
- * Mail can be re-scanned by a daemonic process (*note Daemons::).
- * Groups can be made permanently visible (*note Listing Groups::).
- (setq gnus-permanently-visible-groups "^nnml:")
- * Many new hooks have been introduced to make customizing easier.
- * Gnus respects the `Mail-Copies-To' header.
- * Threads can be gathered by looking at the `References' header
- (*note Customizing Threading::).
- (setq gnus-summary-thread-gathering-function
- 'gnus-gather-threads-by-references)
- * Read articles can be stored in a special backlog buffer to avoid
- refetching (*note Article Backlog::).
- (setq gnus-keep-backlog 50)
- * A clean copy of the current article is always stored in a separate
- buffer to allow easier treatment.
- * Gnus can suggest where to save articles (*note Saving Articles::).
- * Gnus doesn't have to do as much prompting when saving (*note
- Saving Articles::).
- (setq gnus-prompt-before-saving t)
- * `gnus-uu' can view decoded files asynchronously while fetching
- articles (*note Other Decode Variables::).
- (setq gnus-uu-grabbed-file-functions 'gnus-uu-grab-view)
- * Filling in the article buffer now works properly on cited text
- (*note Article Washing::).
- * Hiding cited text adds buttons to toggle hiding, and how much
- cited text to hide is now customizable (*note Article Hiding::).
- (setq gnus-cited-lines-visible 2)
- * Boring headers can be hidden (*note Article Hiding::).
- * Default scoring values can now be set from the menu bar.
- * Further syntax checking of outgoing articles have been added.
- File: gnus, Node: Red Gnus, Next: Quassia Gnus, Prev: September Gnus, Up: New Features
- 11.2.8.3 Red Gnus
- .................
- New features in Gnus 5.4/5.5:
- * `nntp.el' has been totally rewritten in an asynchronous fashion.
- * Article prefetching functionality has been moved up into Gnus
- (*note Asynchronous Fetching::).
- * Scoring can now be performed with logical operators like `and',
- `or', `not', and parent redirection (*note Advanced Scoring::).
- * Article washing status can be displayed in the article mode line
- (*note Misc Article::).
- * `gnus.el' has been split into many smaller files.
- * Suppression of duplicate articles based on Message-ID can be done
- (*note Duplicate Suppression::).
- (setq gnus-suppress-duplicates t)
- * New variables for specifying what score and adapt files are to be
- considered home score and adapt files (*note Home Score File::)
- have been added.
- * `nndoc' was rewritten to be easily extensible (*note Document
- Server Internals::).
- * Groups can inherit group parameters from parent topics (*note
- Topic Parameters::).
- * Article editing has been revamped and is now actually usable.
- * Signatures can be recognized in more intelligent fashions (*note
- Article Signature::).
- * Summary pick mode has been made to look more `nn'-like. Line
- numbers are displayed and the `.' command can be used to pick
- articles (`Pick and Read').
- * Commands for moving the `.newsrc.eld' from one server to another
- have been added (*note Changing Servers::).
- * There's a way now to specify that "uninteresting" fields be
- suppressed when generating lines in buffers (*note Advanced
- Formatting::).
- * Several commands in the group buffer can be undone with `C-M-_'
- (*note Undo::).
- * Scoring can be done on words using the new score type `w' (*note
- Score File Format::).
- * Adaptive scoring can be done on a Subject word-by-word basis
- (*note Adaptive Scoring::).
- (setq gnus-use-adaptive-scoring '(word))
- * Scores can be decayed (*note Score Decays::).
- (setq gnus-decay-scores t)
- * Scoring can be performed using a regexp on the Date header. The
- Date is normalized to compact ISO 8601 format first (*note Score
- File Format::).
- * A new command has been added to remove all data on articles from
- the native server (*note Changing Servers::).
- * A new command for reading collections of documents (`nndoc' with
- `nnvirtual' on top) has been added--`C-M-d' (*note Really Various
- Summary Commands::).
- * Process mark sets can be pushed and popped (*note Setting Process
- Marks::).
- * A new mail-to-news back end makes it possible to post even when
- the NNTP server doesn't allow posting (*note Mail-To-News
- Gateways::).
- * A new back end for reading searches from Web search engines
- ("DejaNews", "Alta Vista", "InReference") has been added (*note
- Web Searches::).
- * Groups inside topics can now be sorted using the standard sorting
- functions, and each topic can be sorted independently (*note Topic
- Sorting::).
- * Subsets of the groups can be sorted independently (`Sorting
- Groups').
- * Cached articles can be pulled into the groups (*note Summary
- Generation Commands::).
- * Score files are now applied in a more reliable order (*note Score
- Variables::).
- * Reports on where mail messages end up can be generated (*note
- Splitting Mail::).
- * More hooks and functions have been added to remove junk from
- incoming mail before saving the mail (*note Washing Mail::).
- * Emphasized text can be properly fontisized:
- File: gnus, Node: Quassia Gnus, Next: Pterodactyl Gnus, Prev: Red Gnus, Up: New Features
- 11.2.8.4 Quassia Gnus
- .....................
- New features in Gnus 5.6:
- * New functionality for using Gnus as an offline newsreader has been
- added. A plethora of new commands and modes have been added.
- *Note Gnus Unplugged::, for the full story.
- * The `nndraft' back end has returned, but works differently than
- before. All Message buffers are now also articles in the `nndraft'
- group, which is created automatically.
- * `gnus-alter-header-function' can now be used to alter header
- values.
- * `gnus-summary-goto-article' now accept Message-ID's.
- * A new Message command for deleting text in the body of a message
- outside the region: `C-c C-v'.
- * You can now post to component group in `nnvirtual' groups with
- `C-u C-c C-c'.
- * `nntp-rlogin-program'--new variable to ease customization.
- * `C-u C-c C-c' in `gnus-article-edit-mode' will now inhibit
- re-highlighting of the article buffer.
- * New element in `gnus-boring-article-headers'--`long-to'.
- * `M-i' symbolic prefix command. *Note Symbolic Prefixes::, for
- details.
- * `L' and `I' in the summary buffer now take the symbolic prefix `a'
- to add the score rule to the `all.SCORE' file.
- * `gnus-simplify-subject-functions' variable to allow greater
- control over simplification.
- * `A T'--new command for fetching the current thread.
- * `/ T'--new command for including the current thread in the limit.
- * `M-RET' is a new Message command for breaking cited text.
- * `\\1'-expressions are now valid in `nnmail-split-methods'.
- * The `custom-face-lookup' function has been removed. If you used
- this function in your initialization files, you must rewrite them
- to use `face-spec-set' instead.
- * Canceling now uses the current select method. Symbolic prefix `a'
- forces normal posting method.
- * New command to translate M******** sm*rtq**t*s into proper
- text--`W d'.
- * For easier debugging of `nntp', you can set `nntp-record-commands'
- to a non-`nil' value.
- * `nntp' now uses `~/.authinfo', a `.netrc'-like file, for
- controlling where and how to send AUTHINFO to NNTP servers.
- * A command for editing group parameters from the summary buffer has
- been added.
- * A history of where mails have been split is available.
- * A new article date command has been added--`article-date-iso8601'.
- * Subjects can be simplified when threading by setting
- `gnus-score-thread-simplify'.
- * A new function for citing in Message has been
- added--`message-cite-original-without-signature'.
- * `article-strip-all-blank-lines'--new article command.
- * A new Message command to kill to the end of the article has been
- added.
- * A minimum adaptive score can be specified by using the
- `gnus-adaptive-word-minimum' variable.
- * The "lapsed date" article header can be kept continually updated
- by the `gnus-start-date-timer' command.
- * Web listserv archives can be read with the `nnlistserv' back end.
- * Old dejanews archives can now be read by `nnweb'.
- File: gnus, Node: Pterodactyl Gnus, Next: Oort Gnus, Prev: Quassia Gnus, Up: New Features
- 11.2.8.5 Pterodactyl Gnus
- .........................
- New features in Gnus 5.8:
- * The mail-fetching functions have changed. See the manual for the
- many details. In particular, all procmail fetching variables are
- gone.
- If you used procmail like in
- (setq nnmail-use-procmail t)
- (setq nnmail-spool-file 'procmail)
- (setq nnmail-procmail-directory "~/mail/incoming/")
- (setq nnmail-procmail-suffix "\\.in")
- this now has changed to
- (setq mail-sources
- '((directory :path "~/mail/incoming/"
- :suffix ".in")))
- *Note Mail Source Specifiers::.
- * Gnus is now a MIME-capable reader. This affects many parts of
- Gnus, and adds a slew of new commands. See the manual for details.
- * Gnus has also been multilingualized. This also affects too many
- parts of Gnus to summarize here, and adds many new variables.
- * `gnus-auto-select-first' can now be a function to be called to
- position point.
- * The user can now decide which extra headers should be included in
- summary buffers and NOV files.
- * `gnus-article-display-hook' has been removed. Instead, a number
- of variables starting with `gnus-treat-' have been added.
- * The Gnus posting styles have been redone again and now works in a
- subtly different manner.
- * New web-based back ends have been added: `nnslashdot',
- `nnwarchive' and `nnultimate'. nnweb has been revamped, again, to
- keep up with ever-changing layouts.
- * Gnus can now read IMAP mail via `nnimap'.
- File: gnus, Node: Oort Gnus, Next: No Gnus, Prev: Pterodactyl Gnus, Up: New Features
- 11.2.8.6 Oort Gnus
- ..................
- New features in Gnus 5.10:
- * Installation changes
- * Upgrading from previous (stable) version if you have used
- Oort.
- If you have tried Oort (the unstable Gnus branch leading to
- this release) but went back to a stable version, be careful
- when upgrading to this version. In particular, you will
- probably want to remove all `.marks' (nnml) and `.mrk'
- (nnfolder) files, so that flags are read from your
- `.newsrc.eld' instead of from the `.marks'/`.mrk' file where
- this release store flags. See a later entry for more
- information about marks. Note that downgrading isn't save in
- general.
- * Lisp files are now installed in `.../site-lisp/gnus/' by
- default. It defaulted to `.../site-lisp/' formerly. In
- addition to this, the new installer issues a warning if other
- Gnus installations which will shadow the latest one are
- detected. You can then remove those shadows manually or
- remove them using `make remove-installed-shadows'.
- * New `make.bat' for compiling and installing Gnus under MS
- Windows
- Use `make.bat' if you want to install Gnus under MS Windows,
- the first argument to the batch-program should be the
- directory where `xemacs.exe' respectively `emacs.exe' is
- located, if you want to install Gnus after compiling it, give
- `make.bat' `/copy' as the second parameter.
- `make.bat' has been rewritten from scratch, it now features
- automatic recognition of XEmacs and Emacs, generates
- `gnus-load.el', checks if errors occur while compilation and
- generation of info files and reports them at the end of the
- build process. It now uses `makeinfo' if it is available and
- falls back to `infohack.el' otherwise. `make.bat' should now
- install all files which are necessary to run Gnus and be
- generally a complete replacement for the `configure; make;
- make install' cycle used under Unix systems.
- The new `make.bat' makes `make-x.bat' and `xemacs.mak'
- superfluous, so they have been removed.
- * `~/News/overview/' not used.
- As a result of the following change, the `~/News/overview/'
- directory is not used any more. You can safely delete the
- entire hierarchy.
- * `(require 'gnus-load)'
- If you use a stand-alone Gnus distribution, you'd better add
- `(require 'gnus-load)' into your `~/.emacs' after adding the
- Gnus lisp directory into load-path.
- File `gnus-load.el' contains autoload commands, functions and
- variables, some of which may not be included in distributions
- of Emacsen.
- * New packages and libraries within Gnus
- * The revised Gnus FAQ is included in the manual, *Note
- Frequently Asked Questions::.
- * TLS wrapper shipped with Gnus
- TLS/SSL is now supported in IMAP and NNTP via `tls.el' and
- GnuTLS.
- * Improved anti-spam features.
- Gnus is now able to take out spam from your mail and news
- streams using a wide variety of programs and filter rules.
- Among the supported methods are RBL blocklists, bogofilter
- and white/blacklists. Hooks for easy use of external
- packages such as SpamAssassin and Hashcash are also new.
- *note Thwarting Email Spam:: and *note Spam Package::.
- * Gnus supports server-side mail filtering using Sieve.
- Sieve rules can be added as Group Parameters for groups, and
- the complete Sieve script is generated using `D g' from the
- Group buffer, and then uploaded to the server using `C-c C-l'
- in the generated Sieve buffer. *Note Sieve Commands::, and
- the new Sieve manual *note Top: (sieve)Top.
- * Changes in group mode
- * `gnus-group-read-ephemeral-group' can be called interactively,
- using `G M'.
- * Retrieval of charters and control messages
- There are new commands for fetching newsgroup charters (`H
- c') and control messages (`H C').
- * The new variable `gnus-parameters' can be used to set group
- parameters.
- Earlier this was done only via `G p' (or `G c'), which stored
- the parameters in `~/.newsrc.eld', but via this variable you
- can enjoy the powers of customize, and simplified backups
- since you set the variable in `~/.gnus.el' instead of
- `~/.newsrc.eld'. The variable maps regular expressions
- matching group names to group parameters, a'la:
- (setq gnus-parameters
- '(("mail\\..*"
- (gnus-show-threads nil)
- (gnus-use-scoring nil))
- ("^nnimap:\\(foo.bar\\)$"
- (to-group . "\\1"))))
- * Unread count correct in nnimap groups.
- The estimated number of unread articles in the group buffer
- should now be correct for nnimap groups. This is achieved by
- calling `nnimap-fixup-unread-after-getting-new-news' from the
- `gnus-setup-news-hook' (called on startup) and
- `gnus-after-getting-new-news-hook'. (called after getting new
- mail). If you have modified those variables from the
- default, you may want to add
- `nnimap-fixup-unread-after-getting-new-news' again. If you
- were happy with the estimate and want to save some (minimal)
- time when getting new mail, remove the function.
- * Group names are treated as UTF-8 by default.
- This is supposedly what USEFOR wanted to migrate to. See
- `gnus-group-name-charset-group-alist' and
- `gnus-group-name-charset-method-alist' for customization.
- * `gnus-group-charset-alist' and
- `gnus-group-ignored-charsets-alist'.
- The regexps in these variables are compared with full group
- names instead of real group names in 5.8. Users who
- customize these variables should change those regexps
- accordingly. For example:
- ("^han\\>" euc-kr) -> ("\\(^\\|:\\)han\\>" euc-kr)
- * Old intermediate incoming mail files (`Incoming*') are deleted
- after a couple of days, not immediately. *Note Mail Source
- Customization::. (New in Gnus 5.10.10 / Emacs 22.2)
- * Changes in summary and article mode
- * `F' (`gnus-article-followup-with-original') and `R'
- (`gnus-article-reply-with-original') only yank the text in the
- region if the region is active.
- * In draft groups, `e' is now bound to
- `gnus-draft-edit-message'. Use `B w' for
- `gnus-summary-edit-article' instead.
- * Article Buttons
- More buttons for URLs, mail addresses, Message-IDs, Info
- links, man pages and Emacs or Gnus related references. *Note
- Article Buttons::. The variables `gnus-button-*-level' can
- be used to control the appearance of all article buttons.
- *Note Article Button Levels::.
- * Single-part yenc encoded attachments can be decoded.
- * Picons
- The picons code has been reimplemented to work in GNU
- Emacs--some of the previous options have been removed or
- renamed.
- Picons are small "personal icons" representing users, domain
- and newsgroups, which can be displayed in the Article buffer.
- *Note Picons::.
- * If the new option `gnus-treat-body-boundary' is non-`nil', a
- boundary line is drawn at the end of the headers.
- * Signed article headers (X-PGP-Sig) can be verified with `W p'.
- * The Summary Buffer uses an arrow in the fringe to indicate
- the current article. Use `(setq gnus-summary-display-arrow
- nil)' to disable it.
- * Warn about email replies to news
- Do you often find yourself replying to news by email by
- mistake? Then the new option
- `gnus-confirm-mail-reply-to-news' is just the thing for you.
- * If the new option `gnus-summary-display-while-building' is
- non-`nil', the summary buffer is shown and updated as it's
- being built.
- * Gnus supports RFC 2369 mailing list headers, and adds a
- number of related commands in mailing list groups. *Note
- Mailing List::.
- * The Date header can be displayed in a format that can be read
- aloud in English. *Note Article Date::.
- * diffs are automatically highlighted in groups matching
- `mm-uu-diff-groups-regexp'
- * Better handling of Microsoft citation styles
- Gnus now tries to recognize the mangled header block that
- some Microsoft mailers use to indicate that the rest of the
- message is a citation, even though it is not quoted in any
- way. The variable `gnus-cite-unsightly-citation-regexp'
- matches the start of these citations.
- The new command `W Y f'
- (`gnus-article-outlook-deuglify-article') allows deuglifying
- broken Outlook (Express) articles.
- * `gnus-article-skip-boring'
- If you set `gnus-article-skip-boring' to `t', then Gnus will
- not scroll down to show you a page that contains only boring
- text, which by default means cited text and signature. You
- can customize what is skippable using
- `gnus-article-boring-faces'.
- This feature is especially useful if you read many articles
- that consist of a little new content at the top with a long,
- untrimmed message cited below.
- * Smileys (`:-)', `;-)' etc) are now displayed graphically in
- Emacs too.
- Put `(setq gnus-treat-display-smileys nil)' in `~/.gnus.el' to
- disable it.
- * Face headers handling. *Note Face::.
- * In the summary buffer, the new command `/ N' inserts new
- messages and `/ o' inserts old messages.
- * Gnus decodes morse encoded messages if you press `W m'.
- * `gnus-summary-line-format'
- The default value changed to `%U%R%z%I%(%[%4L: %-23,23f%]%)
- %s\n'. Moreover `gnus-extra-headers', `nnmail-extra-headers'
- and `gnus-ignored-from-addresses' changed their default so
- that the users name will be replaced by the recipient's name
- or the group name posting to for NNTP groups.
- * Deleting of attachments.
- The command `gnus-mime-save-part-and-strip' (bound to `C-o'
- on MIME buttons) saves a part and replaces the part with an
- external one. `gnus-mime-delete-part' (bound to `d' on MIME
- buttons) removes a part. It works only on back ends that
- support editing.
- * `gnus-default-charset'
- The default value is determined from the
- `current-language-environment' variable, instead of
- `iso-8859-1'. Also the `.*' item in
- `gnus-group-charset-alist' is removed.
- * Printing capabilities are enhanced.
- Gnus supports Muttprint natively with `O P' from the Summary
- and Article buffers. Also, each individual MIME part can be
- printed using `p' on the MIME button.
- * Extended format specs.
- Format spec `%&user-date;' is added into
- `gnus-summary-line-format-alist'. Also, user defined extended
- format specs are supported. The extended format specs look
- like `%u&foo;', which invokes function
- `gnus-user-format-function-FOO'. Because `&' is used as the
- escape character, old user defined format `%u&' is no longer
- supported.
- * `/ *' (`gnus-summary-limit-include-cached') is rewritten.
- It was aliased to `Y c'
- (`gnus-summary-insert-cached-articles'). The new function
- filters out other articles.
- * Some limiting commands accept a `C-u' prefix to negate the
- match.
- If `C-u' is used on subject, author or extra headers, i.e., `/
- s', `/ a', and `/ x'
- (`gnus-summary-limit-to-{subject,author,extra}')
- respectively, the result will be to display all articles that
- do not match the expression.
- * Gnus inlines external parts (message/external).
- * Changes in Message mode and related Gnus features
- * Delayed articles
- You can delay the sending of a message with `C-c C-j' in the
- Message buffer. The messages are delivered at specified
- time. This is useful for sending yourself reminders. *Note
- Delayed Articles::.
- * If the new option `nnml-use-compressed-files' is non-`nil',
- the nnml back end allows compressed message files.
- * The new option `gnus-gcc-mark-as-read' automatically marks
- Gcc articles as read.
- * Externalizing of attachments
- If `gnus-gcc-externalize-attachments' or
- `message-fcc-externalize-attachments' is non-`nil', attach
- local files as external parts.
- * The envelope sender address can be customized when using
- Sendmail. *Note Mail Variables: (message)Mail Variables.
- * Gnus no longer generate the Sender: header automatically.
- Earlier it was generated when the user configurable email
- address was different from the Gnus guessed default user
- address. As the guessing algorithm is rarely correct these
- days, and (more controversially) the only use of the Sender:
- header was to check if you are entitled to cancel/supersede
- news (which is now solved by Cancel Locks instead, see
- another entry), generation of the header has been disabled by
- default. See the variables `message-required-headers',
- `message-required-news-headers', and
- `message-required-mail-headers'.
- * Features from third party `message-utils.el' added to
- `message.el'.
- Message now asks if you wish to remove `(was: <old subject>)'
- from subject lines (see
- `message-subject-trailing-was-query'). `C-c M-m' and `C-c
- M-f' inserts markers indicating included text. `C-c C-f a'
- adds a X-No-Archive: header. `C-c C-f x' inserts appropriate
- headers and a note in the body for cross-postings and
- followups (see the variables `message-cross-post-*').
- * References and X-Draft-From headers are no longer generated
- when you start composing messages and
- `message-generate-headers-first' is `nil'.
- * Easy inclusion of X-Faces headers. *Note X-Face::.
- * Group Carbon Copy (GCC) quoting
- To support groups that contains SPC and other weird
- characters, groups are quoted before they are placed in the
- Gcc: header. This means variables such as
- `gnus-message-archive-group' should no longer contain quote
- characters to make groups containing SPC work. Also, if you
- are using the string `nnml:foo, nnml:bar' (indicating Gcc
- into two groups) you must change it to return the list
- `("nnml:foo" "nnml:bar")', otherwise the Gcc: line will be
- quoted incorrectly. Note that returning the string
- `nnml:foo, nnml:bar' was incorrect earlier, it just didn't
- generate any problems since it was inserted directly.
- * `message-insinuate-rmail'
- Adding `(message-insinuate-rmail)' and `(setq mail-user-agent
- 'gnus-user-agent)' in `.emacs' convinces Rmail to compose,
- reply and forward messages in message-mode, where you can
- enjoy the power of MML.
- * `message-minibuffer-local-map'
- The line below enables BBDB in resending a message:
- (define-key message-minibuffer-local-map [(tab)]
- 'bbdb-complete-name)
- * `gnus-posting-styles'
- Add a new format of match like
- ((header "to" "larsi.*org")
- (Organization "Somewhere, Inc."))
- The old format like the lines below is obsolete, but still
- accepted.
- (header "to" "larsi.*org"
- (Organization "Somewhere, Inc."))
- * `message-ignored-news-headers' and
- `message-ignored-mail-headers'
- `X-Draft-From' and `X-Gnus-Agent-Meta-Information' have been
- added into these two variables. If you customized those,
- perhaps you need add those two headers too.
- * Gnus supports the "format=flowed" (RFC 2646) parameter. On
- composing messages, it is enabled by `use-hard-newlines'.
- Decoding format=flowed was present but not documented in
- earlier versions.
- * The option `mm-fill-flowed' can be used to disable treatment
- of "format=flowed" messages. Also, flowed text is disabled
- when sending inline PGP signed messages. *Note Flowed text:
- (emacs-mime)Flowed text. (New in Gnus 5.10.7)
- * Gnus supports the generation of RFC 2298 Disposition
- Notification requests.
- This is invoked with the `C-c M-n' key binding from message
- mode.
- * Message supports the Importance: (RFC 2156) header.
- In the message buffer, `C-c C-f C-i' or `C-c C-u' cycles
- through the valid values.
- * Gnus supports Cancel Locks in News.
- This means a header `Cancel-Lock' is inserted in news
- posting. It is used to determine if you wrote an article or
- not (for canceling and superseding). Gnus generates a random
- password string the first time you post a message, and saves
- it in your `~/.emacs' using the Custom system. While the
- variable is called `canlock-password', it is not security
- sensitive data. Publishing your canlock string on the web
- will not allow anyone to be able to anything she could not
- already do. The behavior can be changed by customizing
- `message-insert-canlock'.
- * Gnus supports PGP (RFC 1991/2440), PGP/MIME (RFC 2015/3156)
- and S/MIME (RFC 2630-2633).
- It needs an external S/MIME and OpenPGP implementation, but no
- additional Lisp libraries. This add several menu items to the
- Attachments menu, and `C-c RET' key bindings, when composing
- messages. This also obsoletes `gnus-article-hide-pgp-hook'.
- * MML (Mime compose) prefix changed from `M-m' to `C-c C-m'.
- This change was made to avoid conflict with the standard
- binding of `back-to-indentation', which is also useful in
- message mode.
- * The default for `message-forward-show-mml' changed to the
- symbol `best'.
- The behavior for the `best' value is to show MML (i.e.,
- convert to MIME) when appropriate. MML will not be used when
- forwarding signed or encrypted messages, as the conversion
- invalidate the digital signature.
- * If `auto-compression-mode' is enabled, attachments are
- automatically decompressed when activated.
- * Support for non-ASCII domain names
- Message supports non-ASCII domain names in From:, To: and Cc:
- and will query you whether to perform encoding when you try to
- send a message. The variable `message-use-idna' controls
- this. Gnus will also decode non-ASCII domain names in From:,
- To: and Cc: when you view a message. The variable
- `gnus-use-idna' controls this.
- * You can now drag and drop attachments to the Message buffer.
- See `mml-dnd-protocol-alist' and `mml-dnd-attach-options'.
- *Note MIME: (message)MIME.
- * `auto-fill-mode' is enabled by default in Message mode. See
- `message-fill-column'. *Note Message Headers:
- (message)Various Message Variables.
- * Changes in back ends
- * Gnus can display RSS newsfeeds as a newsgroup. *Note RSS::.
- * The nndoc back end now supports mailman digests and exim
- bounces.
- * Gnus supports Maildir groups.
- Gnus includes a new back end `nnmaildir.el'. *Note Maildir::.
- * The nnml and nnfolder back ends store marks for each groups.
- This makes it possible to take backup of nnml/nnfolder
- servers/groups separately of `~/.newsrc.eld', while
- preserving marks. It also makes it possible to share
- articles and marks between users (without sharing the
- `~/.newsrc.eld' file) within e.g. a department. It works by
- storing the marks stored in `~/.newsrc.eld' in a per-group
- file `.marks' (for nnml) and `GROUPNAME.mrk' (for nnfolder,
- named GROUPNAME). If the nnml/nnfolder is moved to another
- machine, Gnus will automatically use the `.marks' or `.mrk'
- file instead of the information in `~/.newsrc.eld'. The new
- server variables `nnml-marks-is-evil' and
- `nnfolder-marks-is-evil' can be used to disable this feature.
- * Appearance
- * The menu bar item (in Group and Summary buffer) named "Misc"
- has been renamed to "Gnus".
- * The menu bar item (in Message mode) named "MML" has been
- renamed to "Attachments". Note that this menu also contains
- security related stuff, like signing and encryption (*note
- Security: (message)Security.).
- * The tool bars have been updated to use GNOME icons in Group,
- Summary and Message mode. You can also customize the tool
- bars: `M-x customize-apropos RET -tool-bar$' should get you
- started. This is a new feature in Gnus 5.10.10. (Only for
- Emacs, not in XEmacs.)
- * The tool bar icons are now (de)activated correctly in the
- group buffer, see the variable `gnus-group-update-tool-bar'.
- Its default value depends on your Emacs version. This is a
- new feature in Gnus 5.10.9.
- * Miscellaneous changes
- * `gnus-agent'
- The Gnus Agent has seen a major updated and is now enabled by
- default, and all nntp and nnimap servers from
- `gnus-select-method' and `gnus-secondary-select-method' are
- agentized by default. Earlier only the server in
- `gnus-select-method' was agentized by the default, and the
- agent was disabled by default. When the agent is enabled,
- headers are now also retrieved from the Agent cache instead
- of the back ends when possible. Earlier this only happened
- in the unplugged state. You can enroll or remove servers
- with `J a' and `J r' in the server buffer. Gnus will not
- download articles into the Agent cache, unless you instruct
- it to do so, though, by using `J u' or `J s' from the Group
- buffer. You revert to the old behavior of having the Agent
- disabled with `(setq gnus-agent nil)'. Note that putting
- `(gnus-agentize)' in `~/.gnus.el' is not needed any more.
- * Gnus reads the NOV and articles in the Agent if plugged.
- If one reads an article while plugged, and the article
- already exists in the Agent, it won't get downloaded once
- more. `(setq gnus-agent-cache nil)' reverts to the old
- behavior.
- * Dired integration
- `gnus-dired-minor-mode' (see *note Other modes::) installs key
- bindings in dired buffers to send a file as an attachment,
- open a file using the appropriate mailcap entry, and print a
- file using the mailcap entry.
- * The format spec `%C' for positioning point has changed to
- `%*'.
- * `gnus-slave-unplugged'
- A new command which starts Gnus offline in slave mode.
- File: gnus, Node: No Gnus, Prev: Oort Gnus, Up: New Features
- 11.2.8.7 No Gnus
- ................
- New features in No Gnus:
- * Supported Emacs versions The following Emacs versions are
- supported by No Gnus:
- * Emacs 22 and up
- * XEmacs 21.4
- * XEmacs 21.5
- * SXEmacs
- * Installation changes
- * Upgrading from previous (stable) version if you have used No
- Gnus.
- If you have tried No Gnus (the unstable Gnus branch leading
- to this release) but went back to a stable version, be
- careful when upgrading to this version. In particular, you
- will probably want to remove the `~/News/marks' directory
- (perhaps selectively), so that flags are read from your
- `~/.newsrc.eld' instead of from the stale marks file, where
- this release will store flags for nntp. See a later entry
- for more information about nntp marks. Note that downgrading
- isn't safe in general.
- * Incompatibility when switching from Emacs 23 to Emacs 22 In
- Emacs 23, Gnus uses Emacs's new internal coding system
- `utf-8-emacs' for saving articles drafts and `~/.newsrc.eld'.
- These files may not be read correctly in Emacs 22 and below.
- If you want to use Gnus across different Emacs versions, you
- may set `mm-auto-save-coding-system' to `emacs-mule'.
- * Lisp files are now installed in `.../site-lisp/gnus/' by
- default. It defaulted to `.../site-lisp/' formerly. In
- addition to this, the new installer issues a warning if other
- Gnus installations which will shadow the latest one are
- detected. You can then remove those shadows manually or
- remove them using `make remove-installed-shadows'.
- * The installation directory name is allowed to have spaces
- and/or tabs.
- * New packages and libraries within Gnus
- * New version of `nnimap'
- `nnimap' has been reimplemented in a mostly-compatible way.
- See the Gnus manual for a description of the new interface.
- In particular, `nnimap-inbox' and the client side split
- method has changed.
- * Gnus includes the Emacs Lisp SASL library.
- This provides a clean API to SASL mechanisms from within
- Emacs. The user visible aspects of this, compared to the
- earlier situation, include support for DIGEST-MD5 and NTLM.
- *Note Emacs SASL: (sasl)Top.
- * ManageSieve connections uses the SASL library by default.
- The primary change this brings is support for DIGEST-MD5 and
- NTLM, when the server supports it.
- * Gnus includes a password cache mechanism in password.el.
- It is enabled by default (see `password-cache'), with a short
- timeout of 16 seconds (see `password-cache-expiry'). If PGG
- is used as the PGP back end, the PGP passphrase is managed by
- this mechanism. Passwords for ManageSieve connections are
- managed by this mechanism, after querying the user about
- whether to do so.
- * Using EasyPG with Gnus When EasyPG, is available, Gnus will
- use it instead of PGG. EasyPG is an Emacs user interface to
- GNU Privacy Guard. *Note EasyPG Assistant user's manual:
- (epa)Top. EasyPG is included in Emacs 23 and available
- separately as well.
- * Changes in group mode
- * Symbols like `gcc-self' now have the same precedence rules in
- `gnus-parameters' as other "real" variables: The last match
- wins instead of the first match.
- * Old intermediate incoming mail files (`Incoming*') are deleted
- after a couple of days, not immediately. *Note Mail Source
- Customization::. (New in Gnus 5.10.10 / No Gnus 0.8)
- * Changes in summary and article mode
- * There's now only one variable that determines how HTML is
- rendered: `mm-text-html-renderer'.
- * Gnus now supports sticky article buffers. Those are article
- buffers that are not reused when you select another article.
- *Note Sticky Articles::.
- * Gnus can selectively display `text/html' articles with a WWW
- browser with `K H'. *Note MIME Commands::.
- * International host names (IDNA) can now be decoded inside
- article bodies using `W i' (`gnus-summary-idna-message').
- This requires that GNU Libidn
- (`http://www.gnu.org/software/libidn/') has been installed.
- * The non-ASCII group names handling has been much improved.
- The back ends that fully support non-ASCII group names are
- now `nntp', `nnml', and `nnrss'. Also the agent, the cache,
- and the marks features work with those back ends. *Note
- Non-ASCII Group Names::.
- * Gnus now displays DNS master files sent as text/dns using
- dns-mode.
- * Gnus supports new limiting commands in the Summary buffer: `/
- r' (`gnus-summary-limit-to-replied') and `/ R'
- (`gnus-summary-limit-to-recipient'). *Note Limiting::.
- * You can now fetch all ticked articles from the server using
- `Y t' (`gnus-summary-insert-ticked-articles'). *Note Summary
- Generation Commands::.
- * Gnus supports a new sort command in the Summary buffer: `C-c
- C-s C-t' (`gnus-summary-sort-by-recipient'). *Note Summary
- Sorting::.
- * S/MIME now features LDAP user certificate searches. You need
- to configure the server in `smime-ldap-host-list'.
- * URLs inside OpenPGP headers are retrieved and imported to
- your PGP key ring when you click on them.
- * Picons can be displayed right from the textual address, see
- `gnus-picon-style'. *Note Picons::.
- * ANSI SGR control sequences can be transformed using `W A'.
- ANSI sequences are used in some Chinese hierarchies for
- highlighting articles (`gnus-article-treat-ansi-sequences').
- * Gnus now MIME decodes articles even when they lack
- "MIME-Version" header. This changes the default of
- `gnus-article-loose-mime'.
- * `gnus-decay-scores' can be a regexp matching score files.
- For example, set it to `\\.ADAPT\\'' and only adaptive score
- files will be decayed. *Note Score Decays::.
- * Strings prefixing to the `To' and `Newsgroup' headers in
- summary lines when using `gnus-ignored-from-addresses' can be
- customized with `gnus-summary-to-prefix' and
- `gnus-summary-newsgroup-prefix'. *Note To From Newsgroups::.
- * You can replace MIME parts with external bodies. See
- `gnus-mime-replace-part' and `gnus-article-replace-part'.
- *Note MIME Commands::, *note Using MIME::.
- * The option `mm-fill-flowed' can be used to disable treatment
- of format=flowed messages. Also, flowed text is disabled
- when sending inline PGP signed messages. *Note Flowed text:
- (emacs-mime)Flowed text. (New in Gnus 5.10.7)
- * Now the new command `S W'
- (`gnus-article-wide-reply-with-original') for a wide reply in
- the article buffer yanks a text that is in the active region,
- if it is set, as well as the `R'
- (`gnus-article-reply-with-original') command. Note that the
- `R' command in the article buffer no longer accepts a prefix
- argument, which was used to make it do a wide reply. *Note
- Article Keymap::.
- * The new command `C-h b' (`gnus-article-describe-bindings')
- used in the article buffer now shows not only the article
- commands but also the real summary commands that are
- accessible from the article buffer.
- * Changes in Message mode
- * Gnus now defaults to saving all outgoing messages in per-month
- nnfolder archives.
- * Gnus now supports the "hashcash" client puzzle anti-spam
- mechanism. Use `(setq message-generate-hashcash t)' to
- enable. *Note Hashcash::.
- * You can now drag and drop attachments to the Message buffer.
- See `mml-dnd-protocol-alist' and `mml-dnd-attach-options'.
- *Note MIME: (message)MIME.
- * The option `message-yank-empty-prefix' now controls how empty
- lines are prefixed in cited text. *Note Insertion Variables:
- (message)Insertion Variables.
- * Gnus uses narrowing to hide headers in Message buffers. The
- `References' header is hidden by default. To make all
- headers visible, use `(setq message-hidden-headers nil)'.
- *Note Message Headers: (message)Message Headers.
- * You can highlight different levels of citations like in the
- article buffer. See `gnus-message-highlight-citation'.
- * `auto-fill-mode' is enabled by default in Message mode. See
- `message-fill-column'. *Note Message Headers:
- (message)Various Message Variables.
- * You can now store signature files in a special directory
- named `message-signature-directory'.
- * The option `message-citation-line-format' controls the format
- of the "Whomever writes:" line. You need to set
- `message-citation-line-function' to
- `message-insert-formatted-citation-line' as well.
- * Changes in Browse Server mode
- * Gnus' sophisticated subscription methods are now available in
- Browse Server buffers as well using the variable
- `gnus-browse-subscribe-newsgroup-method'.
- * Changes in back ends
- * The nntp back end stores article marks in `~/News/marks'.
- The directory can be changed using the (customizable) variable
- `nntp-marks-directory', and marks can be disabled using the
- (back end) variable `nntp-marks-is-evil'. The advantage of
- this is that you can copy `~/News/marks' (using rsync, scp or
- whatever) to another Gnus installation, and it will realize
- what articles you have read and marked. The data in
- `~/News/marks' has priority over the same data in
- `~/.newsrc.eld'.
- * You can import and export your RSS subscriptions from OPML
- files. *Note RSS::.
- * IMAP identity (RFC 2971) is supported.
- By default, Gnus does not send any information about itself,
- but you can customize it using the variable `nnimap-id'.
- * The `nnrss' back end now supports multilingual text.
- Non-ASCII group names for the `nnrss' groups are also
- supported. *Note RSS::.
- * Retrieving mail with POP3 is supported over SSL/TLS and with
- StartTLS.
- * The nnml back end allows other compression programs beside
- `gzip' for compressed message files. *Note Mail Spool::.
- * The nnml back end supports group compaction.
- This feature, accessible via the functions
- `gnus-group-compact-group' (`G z' in the group buffer) and
- `gnus-server-compact-server' (`z' in the server buffer)
- renumbers all articles in a group, starting from 1 and
- removing gaps. As a consequence, you get a correct total
- article count (until messages are deleted again).
- * Appearance
- * The tool bar has been updated to use GNOME icons. You can
- also customize the tool bars: `M-x customize-apropos RET
- -tool-bar$' should get you started. (Only for Emacs, not in
- XEmacs.)
- * The tool bar icons are now (de)activated correctly in the
- group buffer, see the variable `gnus-group-update-tool-bar'.
- Its default value depends on your Emacs version.
- * You can change the location of XEmacs's toolbars in Gnus
- buffers. See `gnus-use-toolbar' and `message-use-toolbar'.
- * Miscellaneous changes
- * Having edited the select-method for the foreign server in the
- server buffer is immediately reflected to the subscription of
- the groups which use the server in question. For instance,
- if you change `nntp-via-address' into `bar.example.com' from
- `foo.example.com', Gnus will connect to the news host by way
- of the intermediate host `bar.example.com' from next time.
- * The `all.SCORE' file can be edited from the group buffer
- using `W e'.
- * You can set `gnus-mark-copied-or-moved-articles-as-expirable'
- to a non-`nil' value so that articles that have been read may
- be marked as expirable automatically when copying or moving
- them to a group that has auto-expire turned on. The default
- is `nil' and copying and moving of articles behave as before;
- i.e., the expirable marks will be unchanged except that the
- marks will be removed when copying or moving articles to a
- group that has not turned auto-expire on. *Note Expiring
- Mail::.
- * NoCeM support has been removed.
- * Carpal mode has been removed.
- File: gnus, Node: On Writing Manuals, Next: Terminology, Prev: History, Up: Appendices
- 11.3 On Writing Manuals
- =======================
- I guess most manuals are written after-the-fact; documenting a program
- that's already there. This is not how this manual is written. When
- implementing something, I write the manual entry for that something
- straight away. I then see that it's difficult to explain the
- functionality, so I write how it's supposed to be, and then I change the
- implementation. Writing the documentation and writing the code go hand
- in hand.
- This, of course, means that this manual has no, or little, flow. It
- documents absolutely everything in Gnus, but often not where you're
- looking for it. It is a reference manual, and not a guide to how to get
- started with Gnus.
- That would be a totally different book, that should be written using
- the reference manual as source material. It would look quite different.
- File: gnus, Node: Terminology, Next: Customization, Prev: On Writing Manuals, Up: Appendices
- 11.4 Terminology
- ================
- "news"
- This is what you are supposed to use this thing for--reading news.
- News is generally fetched from a nearby NNTP server, and is
- generally publicly available to everybody. If you post news, the
- entire world is likely to read just what you have written, and
- they'll all snigger mischievously. Behind your back.
- "mail"
- Everything that's delivered to you personally is mail. Some
- news/mail readers (like Gnus) blur the distinction between mail
- and news, but there is a difference. Mail is private. News is
- public. Mailing is not posting, and replying is not following up.
- "reply"
- Send a mail to the person who has written what you are reading.
- "follow up"
- Post an article to the current newsgroup responding to the article
- you are reading.
- "back end"
- Gnus considers mail and news to be mostly the same, really. The
- only difference is how to access the actual articles. News
- articles are commonly fetched via the protocol NNTP, whereas mail
- messages could be read from a file on the local disk. The internal
- architecture of Gnus thus comprises a "front end" and a number of
- "back ends". Internally, when you enter a group (by hitting
- <RET>, say), you thereby invoke a function in the front end in
- Gnus. The front end then "talks" to a back end and says things
- like "Give me the list of articles in the foo group" or "Show me
- article number 4711".
- So a back end mainly defines either a protocol (the `nntp' back
- end accesses news via NNTP, the `nnimap' back end accesses mail
- via IMAP) or a file format and directory layout (the `nnspool'
- back end accesses news via the common "spool directory" format,
- the `nnml' back end access mail via a file format and directory
- layout that's quite similar).
- Gnus does not handle the underlying media, so to speak--this is all
- done by the back ends. A back end is a collection of functions to
- access the articles.
- However, sometimes the term "back end" is also used where "server"
- would have been more appropriate. And then there is the term
- "select method" which can mean either. The Gnus terminology can
- be quite confusing.
- "native"
- Gnus will always use one method (and back end) as the "native", or
- default, way of getting news. Groups from the native select method
- have names like `gnu.emacs.gnus'.
- "foreign"
- You can also have any number of foreign groups active at the same
- time. These are groups that use non-native non-secondary back ends
- for getting news. Foreign groups have names like
- `nntp+news.gmane.org:gmane.emacs.gnus.devel'.
- "secondary"
- Secondary back ends are somewhere half-way between being native and
- being foreign, but they mostly act like they are native, but they,
- too have names like `nntp+news.gmane.org:gmane.emacs.gnus.devel'.
- "article"
- A message that has been posted as news.
- "mail message"
- A message that has been mailed.
- "message"
- A mail message or news article
- "head"
- The top part of a message, where administrative information (etc.)
- is put.
- "body"
- The rest of an article. Everything not in the head is in the body.
- "header"
- A line from the head of an article.
- "headers"
- A collection of such lines, or a collection of heads. Or even a
- collection of NOV lines.
- "NOV"
- NOV stands for News OverView, which is a type of news server
- header which provide datas containing the condensed header
- information of articles. They are produced by the server itself;
- in the `nntp' back end Gnus uses the ones that the NNTP server
- makes, but Gnus makes them by itself for some backends (in
- particular, `nnml').
- When Gnus enters a group, it asks the back end for the headers of
- all unread articles in the group. Most servers support the News
- OverView format, which is more compact and much faster to read and
- parse than the normal HEAD format.
- The NOV data consist of one or more text lines (*note Motion by
- Text Lines: (elisp)Text Lines.) where each line has the header
- information of one article. The header information is a
- tab-separated series of the header's contents including an article
- number, a subject, an author, a date, a message-id, references,
- etc.
- Those data enable Gnus to generate summary lines quickly.
- However, if the server does not support NOV or you disable it
- purposely or for some reason, Gnus will try to generate the header
- information by parsing each article's headers one by one. It will
- take time. Therefore, it is not usually a good idea to set
- nn*-nov-is-evil (*note Slow/Expensive Connection::) to a non-`nil'
- value unless you know that the server makes wrong NOV data.
- "level"
- Each group is subscribed at some "level" or other (1-9). The ones
- that have a lower level are "more" subscribed than the groups with
- a higher level. In fact, groups on levels 1-5 are considered
- "subscribed"; 6-7 are "unsubscribed"; 8 are "zombies"; and 9 are
- "killed". Commands for listing groups and scanning for new
- articles will all use the numeric prefix as "working level".
- "killed groups"
- No information on killed groups is stored or updated, which makes
- killed groups much easier to handle than subscribed groups.
- "zombie groups"
- Just like killed groups, only slightly less dead.
- "active file"
- The news server has to keep track of what articles it carries, and
- what groups exist. All this information in stored in the active
- file, which is rather large, as you might surmise.
- "bogus groups"
- A group that exists in the `.newsrc' file, but isn't known to the
- server (i.e., it isn't in the active file), is a _bogus group_.
- This means that the group probably doesn't exist (any more).
- "activating"
- The act of asking the server for info on a group and computing the
- number of unread articles is called "activating the group".
- Un-activated groups are listed with `*' in the group buffer.
- "spool"
- News servers store their articles locally in one fashion or other.
- One old-fashioned storage method is to have just one file per
- article. That's called a "traditional spool".
- "server"
- A machine one can connect to and get news (or mail) from.
- "select method"
- A structure that specifies the back end, the server and the virtual
- server settings.
- "virtual server"
- A named select method. Since a select method defines all there is
- to know about connecting to a (physical) server, taking the thing
- as a whole is a virtual server.
- "washing"
- Taking a buffer and running it through a filter of some sort. The
- result will (more often than not) be cleaner and more pleasing
- than the original.
- "ephemeral groups"
- Most groups store data on what articles you have read. "Ephemeral"
- groups are groups that will have no data stored--when you exit the
- group, it'll disappear into the aether.
- "solid groups"
- This is the opposite of ephemeral groups. All groups listed in the
- group buffer are solid groups.
- "sparse articles"
- These are article placeholders shown in the summary buffer when
- `gnus-build-sparse-threads' has been switched on.
- "threading"
- To put responses to articles directly after the articles they
- respond to--in a hierarchical fashion.
- "root"
- The first article in a thread is the root. It is the ancestor of
- all articles in the thread.
- "parent"
- An article that has responses.
- "child"
- An article that responds to a different article--its parent.
- "digest"
- A collection of messages in one file. The most common digest
- format is specified by RFC 1153.
- "splitting"
- The action of sorting your emails according to certain rules.
- Sometimes incorrectly called mail filtering.
- File: gnus, Node: Customization, Next: Troubleshooting, Prev: Terminology, Up: Appendices
- 11.5 Customization
- ==================
- All variables are properly documented elsewhere in this manual. This
- section is designed to give general pointers on how to customize Gnus
- for some quite common situations.
- * Menu:
- * Slow/Expensive Connection:: You run a local Emacs and get the news elsewhere.
- * Slow Terminal Connection:: You run a remote Emacs.
- * Little Disk Space:: You feel that having large setup files is icky.
- * Slow Machine:: You feel like buying a faster machine.
- File: gnus, Node: Slow/Expensive Connection, Next: Slow Terminal Connection, Up: Customization
- 11.5.1 Slow/Expensive Connection
- --------------------------------
- If you run Emacs on a machine locally, and get your news from a machine
- over some very thin strings, you want to cut down on the amount of data
- Gnus has to get from the server.
- `gnus-read-active-file'
- Set this to `nil', which will inhibit Gnus from requesting the
- entire active file from the server. This file is often very
- large. You also have to set `gnus-check-new-newsgroups' and
- `gnus-check-bogus-newsgroups' to `nil' to make sure that Gnus
- doesn't suddenly decide to fetch the active file anyway.
- `gnus-nov-is-evil'
- Usually this one must _always_ be `nil' (which is the default).
- If, for example, you wish to not use NOV (*note Terminology::)
- with the `nntp' back end (*note Crosspost Handling::), set
- `nntp-nov-is-evil' to a non-`nil' value instead of setting this.
- But you normally do not need to set `nntp-nov-is-evil' since Gnus
- by itself will detect whether the NNTP server supports NOV.
- Anyway, grabbing article headers from the NNTP server will not be
- very fast if you tell Gnus not to use NOV.
- As the variables for the other back ends, there are
- `nndiary-nov-is-evil', `nndir-nov-is-evil',
- `nnfolder-nov-is-evil', `nnimap-nov-is-evil', `nnml-nov-is-evil',
- and `nnspool-nov-is-evil'. Note that a non-`nil' value for
- `gnus-nov-is-evil' overrides all those variables.
- File: gnus, Node: Slow Terminal Connection, Next: Little Disk Space, Prev: Slow/Expensive Connection, Up: Customization
- 11.5.2 Slow Terminal Connection
- -------------------------------
- Let's say you use your home computer for dialing up the system that runs
- Emacs and Gnus. If your modem is slow, you want to reduce (as much as
- possible) the amount of data sent over the wires.
- `gnus-auto-center-summary'
- Set this to `nil' to inhibit Gnus from re-centering the summary
- buffer all the time. If it is `vertical', do only vertical
- re-centering. If it is neither `nil' nor `vertical', do both
- horizontal and vertical recentering.
- `gnus-visible-headers'
- Cut down on the headers included in the articles to the minimum.
- You can, in fact, make do without them altogether--most of the
- useful data is in the summary buffer, anyway. Set this variable to
- `^NEVVVVER' or `From:', or whatever you feel you need.
- Use the following to enable all the available hiding features:
- (setq gnus-treat-hide-headers 'head
- gnus-treat-hide-signature t
- gnus-treat-hide-citation t)
- `gnus-use-full-window'
- By setting this to `nil', you can make all the windows smaller.
- While this doesn't really cut down much generally, it means that
- you have to see smaller portions of articles before deciding that
- you didn't want to read them anyway.
- `gnus-thread-hide-subtree'
- If this is non-`nil', all threads in the summary buffer will be
- hidden initially.
- `gnus-updated-mode-lines'
- If this is `nil', Gnus will not put information in the buffer mode
- lines, which might save some time.
- File: gnus, Node: Little Disk Space, Next: Slow Machine, Prev: Slow Terminal Connection, Up: Customization
- 11.5.3 Little Disk Space
- ------------------------
- The startup files can get rather large, so you may want to cut their
- sizes a bit if you are running out of space.
- `gnus-save-newsrc-file'
- If this is `nil', Gnus will never save `.newsrc'--it will only
- save `.newsrc.eld'. This means that you will not be able to use
- any other newsreaders than Gnus. This variable is `t' by default.
- `gnus-read-newsrc-file'
- If this is `nil', Gnus will never read `.newsrc'--it will only
- read `.newsrc.eld'. This means that you will not be able to use
- any other newsreaders than Gnus. This variable is `t' by default.
- `gnus-save-killed-list'
- If this is `nil', Gnus will not save the list of dead groups. You
- should also set `gnus-check-new-newsgroups' to `ask-server' and
- `gnus-check-bogus-newsgroups' to `nil' if you set this variable to
- `nil'. This variable is `t' by default.
- File: gnus, Node: Slow Machine, Prev: Little Disk Space, Up: Customization
- 11.5.4 Slow Machine
- -------------------
- If you have a slow machine, or are just really impatient, there are a
- few things you can do to make Gnus run faster.
- Set `gnus-check-new-newsgroups' and `gnus-check-bogus-newsgroups' to
- `nil' to make startup faster.
- Set `gnus-show-threads', `gnus-use-cross-reference' and
- `gnus-nov-is-evil' to `nil' to make entering and exiting the summary
- buffer faster. Also *note Slow/Expensive Connection::.
- File: gnus, Node: Troubleshooting, Next: Gnus Reference Guide, Prev: Customization, Up: Appendices
- 11.6 Troubleshooting
- ====================
- Gnus works _so_ well straight out of the box--I can't imagine any
- problems, really.
- Ahem.
- 1. Make sure your computer is switched on.
- 2. Make sure that you really load the current Gnus version. If you
- have been running GNUS, you need to exit Emacs and start it up
- again before Gnus will work.
- 3. Try doing an `M-x gnus-version'. If you get something that looks
- like `Gnus v5.13' you have the right files loaded. Otherwise you
- have some old `.el' files lying around. Delete these.
- 4. Read the help group (`G h' in the group buffer) for a FAQ and a
- how-to.
- 5. Gnus works on many recursive structures, and in some extreme (and
- very rare) cases Gnus may recurse down "too deeply" and Emacs will
- beep at you. If this happens to you, set `max-lisp-eval-depth' to
- 500 or something like that.
- If all else fails, report the problem as a bug.
- If you find a bug in Gnus, you can report it with the `M-x gnus-bug'
- command. `M-x set-variable RET debug-on-error RET t RET', and send me
- the backtrace. I will fix bugs, but I can only fix them if you send me
- a precise description as to how to reproduce the bug.
- You really can never be too detailed in a bug report. Always use the
- `M-x gnus-bug' command when you make bug reports, even if it creates a
- 10Kb mail each time you use it, and even if you have sent me your
- environment 500 times before. I don't care. I want the full info each
- time.
- It is also important to remember that I have no memory whatsoever.
- If you send a bug report, and I send you a reply, and then you just send
- back "No, it's not! Moron!", I will have no idea what you are insulting
- me about. Always over-explain everything. It's much easier for all of
- us--if I don't have all the information I need, I will just mail you
- and ask for more info, and everything takes more time.
- If the problem you're seeing is very visual, and you can't quite
- explain it, copy the Emacs window to a file (with `xwd', for instance),
- put it somewhere it can be reached, and include the URL of the picture
- in the bug report.
- If you would like to contribute a patch to fix bugs or make
- improvements, please produce the patch using `diff -u'.
- If you want to debug your problem further before reporting, possibly
- in order to solve the problem yourself and send a patch, you can use
- edebug. Debugging Lisp code is documented in the Elisp manual (*note
- Debugging Lisp Programs: (elisp)Debugging.). To get you started with
- edebug, consider if you discover some weird behavior when pressing `c',
- the first step is to do `C-h k c' and click on the hyperlink (Emacs
- only) in the documentation buffer that leads you to the function
- definition, then press `M-x edebug-defun RET' with point inside that
- function, return to Gnus and press `c' to invoke the code. You will be
- placed in the lisp buffer and can single step using `SPC' and evaluate
- expressions using `M-:' or inspect variables using `C-h v', abort
- execution with `q', and resume execution with `c' or `g'.
- Sometimes, a problem do not directly generate an elisp error but
- manifests itself by causing Gnus to be very slow. In these cases, you
- can use `M-x toggle-debug-on-quit' and press `C-g' when things are
- slow, and then try to analyze the backtrace (repeating the procedure
- helps isolating the real problem areas).
- A fancier approach is to use the elisp profiler, ELP. The profiler
- is (or should be) fully documented elsewhere, but to get you started
- there are a few steps that need to be followed. First, instrument the
- part of Gnus you are interested in for profiling, e.g. `M-x
- elp-instrument-package RET gnus' or `M-x elp-instrument-package RET
- message'. Then perform the operation that is slow and press `M-x
- elp-results'. You will then see which operations that takes time, and
- can debug them further. If the entire operation takes much longer than
- the time spent in the slowest function in the profiler output, you
- probably profiled the wrong part of Gnus. To reset profiling
- statistics, use `M-x elp-reset-all'. `M-x elp-restore-all' is supposed
- to remove profiling, but given the complexities and dynamic code
- generation in Gnus, it might not always work perfectly.
- If you just need help, you are better off asking on
- `gnu.emacs.gnus'. I'm not very helpful. You can also ask on the ding
- mailing list <ding@gnus.org>. Write to <ding-request@gnus.org> to
- subscribe.
- File: gnus, Node: Gnus Reference Guide, Next: Emacs for Heathens, Prev: Troubleshooting, Up: Appendices
- 11.7 Gnus Reference Guide
- =========================
- It is my hope that other people will figure out smart stuff that Gnus
- can do, and that other people will write those smart things as well. To
- facilitate that I thought it would be a good idea to describe the inner
- workings of Gnus. And some of the not-so-inner workings, while I'm at
- it.
- You can never expect the internals of a program not to change, but I
- will be defining (in some details) the interface between Gnus and its
- back ends (this is written in stone), the format of the score files
- (ditto), data structures (some are less likely to change than others)
- and general methods of operation.
- * Menu:
- * Gnus Utility Functions:: Common functions and variable to use.
- * Back End Interface:: How Gnus communicates with the servers.
- * Score File Syntax:: A BNF definition of the score file standard.
- * Headers:: How Gnus stores headers internally.
- * Ranges:: A handy format for storing mucho numbers.
- * Group Info:: The group info format.
- * Extended Interactive:: Symbolic prefixes and stuff.
- * Emacs/XEmacs Code:: Gnus can be run under all modern Emacsen.
- * Various File Formats:: Formats of files that Gnus use.
- File: gnus, Node: Gnus Utility Functions, Next: Back End Interface, Up: Gnus Reference Guide
- 11.7.1 Gnus Utility Functions
- -----------------------------
- When writing small functions to be run from hooks (and stuff), it's
- vital to have access to the Gnus internal functions and variables.
- Below is a list of the most common ones.
- `gnus-newsgroup-name'
- This variable holds the name of the current newsgroup.
- `gnus-find-method-for-group'
- A function that returns the select method for GROUP.
- `gnus-group-real-name'
- Takes a full (prefixed) Gnus group name, and returns the unprefixed
- name.
- `gnus-group-prefixed-name'
- Takes an unprefixed group name and a select method, and returns
- the full (prefixed) Gnus group name.
- `gnus-get-info'
- Returns the group info list for GROUP (*note Group Info::).
- `gnus-group-unread'
- The number of unread articles in GROUP, or `t' if that is unknown.
- `gnus-active'
- The active entry (i.e., a cons cell containing the lowest and
- highest article numbers) for GROUP.
- `gnus-set-active'
- Set the active entry for GROUP.
- `gnus-add-current-to-buffer-list'
- Adds the current buffer to the list of buffers to be killed on Gnus
- exit.
- `gnus-continuum-version'
- Takes a Gnus version string as a parameter and returns a floating
- point number. Earlier versions will always get a lower number
- than later versions.
- `gnus-group-read-only-p'
- Says whether GROUP is read-only or not.
- `gnus-news-group-p'
- Says whether GROUP came from a news back end.
- `gnus-ephemeral-group-p'
- Says whether GROUP is ephemeral or not.
- `gnus-server-to-method'
- Returns the select method corresponding to SERVER.
- `gnus-server-equal'
- Says whether two virtual servers are essentially equal. For
- instance, two virtual servers may have server parameters in
- different order, but this function will consider them equal.
- `gnus-group-native-p'
- Says whether GROUP is native or not.
- `gnus-group-secondary-p'
- Says whether GROUP is secondary or not.
- `gnus-group-foreign-p'
- Says whether GROUP is foreign or not.
- `gnus-group-find-parameter'
- Returns the parameter list of GROUP (*note Group Parameters::).
- If given a second parameter, returns the value of that parameter
- for GROUP.
- `gnus-group-set-parameter'
- Takes three parameters; GROUP, PARAMETER and VALUE.
- `gnus-narrow-to-body'
- Narrows the current buffer to the body of the article.
- `gnus-check-backend-function'
- Takes two parameters, FUNCTION and GROUP. If the back end GROUP
- comes from supports FUNCTION, return non-`nil'.
- (gnus-check-backend-function "request-scan" "nnml:misc")
- => t
- `gnus-read-method'
- Prompts the user for a select method.
- File: gnus, Node: Back End Interface, Next: Score File Syntax, Prev: Gnus Utility Functions, Up: Gnus Reference Guide
- 11.7.2 Back End Interface
- -------------------------
- Gnus doesn't know anything about NNTP, spools, mail or virtual groups.
- It only knows how to talk to "virtual servers". A virtual server is a
- "back end" and some "back end variables". As examples of the first, we
- have `nntp', `nnspool' and `nnmbox'. As examples of the latter we have
- `nntp-port-number' and `nnmbox-directory'.
- When Gnus asks for information from a back end--say `nntp'--on
- something, it will normally include a virtual server name in the
- function parameters. (If not, the back end should use the "current"
- virtual server.) For instance, `nntp-request-list' takes a virtual
- server as its only (optional) parameter. If this virtual server hasn't
- been opened, the function should fail.
- Note that a virtual server name has no relation to some physical
- server name. Take this example:
- (nntp "odd-one"
- (nntp-address "ifi.uio.no")
- (nntp-port-number 4324))
- Here the virtual server name is `odd-one' while the name of the
- physical server is `ifi.uio.no'.
- The back ends should be able to switch between several virtual
- servers. The standard back ends implement this by keeping an alist of
- virtual server environments that they pull down/push up when needed.
- There are two groups of interface functions: "required functions",
- which must be present, and "optional functions", which Gnus will always
- check for presence before attempting to call 'em.
- All these functions are expected to return data in the buffer
- `nntp-server-buffer' (` *nntpd*'), which is somewhat unfortunately
- named, but we'll have to live with it. When I talk about "resulting
- data", I always refer to the data in that buffer. When I talk about
- "return value", I talk about the function value returned by the
- function call. Functions that fail should return `nil' as the return
- value.
- Some back ends could be said to be "server-forming" back ends, and
- some might be said not to be. The latter are back ends that generally
- only operate on one group at a time, and have no concept of "server"
- --they have a group, and they deliver info on that group and nothing
- more.
- Gnus identifies each message by way of group name and article
- number. A few remarks about these article numbers might be useful.
- First of all, the numbers are positive integers. Secondly, it is
- normally not possible for later articles to "re-use" older article
- numbers without confusing Gnus. That is, if a group has ever contained
- a message numbered 42, then no other message may get that number, or
- Gnus will get mightily confused.(1) Third, article numbers must be
- assigned in order of arrival in the group; this is not necessarily the
- same as the date of the message.
- The previous paragraph already mentions all the "hard" restrictions
- that article numbers must fulfill. But it seems that it might be
- useful to assign _consecutive_ article numbers, for Gnus gets quite
- confused if there are holes in the article numbering sequence.
- However, due to the "no-reuse" restriction, holes cannot be avoided
- altogether. It's also useful for the article numbers to start at 1 to
- avoid running out of numbers as long as possible.
- Note that by convention, back ends are named `nnsomething', but Gnus
- also comes with some `nnnotbackends', such as `nnheader.el',
- `nnmail.el' and `nnoo.el'.
- In the examples and definitions I will refer to the imaginary back
- end `nnchoke'.
- * Menu:
- * Required Back End Functions:: Functions that must be implemented.
- * Optional Back End Functions:: Functions that need not be implemented.
- * Error Messaging:: How to get messages and report errors.
- * Writing New Back Ends:: Extending old back ends.
- * Hooking New Back Ends Into Gnus:: What has to be done on the Gnus end.
- * Mail-like Back Ends:: Some tips on mail back ends.
- ---------- Footnotes ----------
- (1) See the function `nnchoke-request-update-info', *note Optional
- Back End Functions::.
- File: gnus, Node: Required Back End Functions, Next: Optional Back End Functions, Up: Back End Interface
- 11.7.2.1 Required Back End Functions
- ....................................
- `(nnchoke-retrieve-headers ARTICLES &optional GROUP SERVER FETCH-OLD)'
- ARTICLES is either a range of article numbers or a list of
- `Message-ID's. Current back ends do not fully support either--only
- sequences (lists) of article numbers, and most back ends do not
- support retrieval of `Message-ID's. But they should try for both.
- The result data should either be HEADs or NOV lines, and the result
- value should either be `headers' or `nov' to reflect this. This
- might later be expanded to `various', which will be a mixture of
- HEADs and NOV lines, but this is currently not supported by Gnus.
- If FETCH-OLD is non-`nil' it says to try fetching "extra headers",
- in some meaning of the word. This is generally done by fetching
- (at most) FETCH-OLD extra headers less than the smallest article
- number in `articles', and filling the gaps as well. The presence
- of this parameter can be ignored if the back end finds it
- cumbersome to follow the request. If this is non-`nil' and not a
- number, do maximum fetches.
- Here's an example HEAD:
- 221 1056 Article retrieved.
- Path: ifi.uio.no!sturles
- From: sturles@ifi.uio.no (Sturle Sunde)
- Newsgroups: ifi.discussion
- Subject: Re: Something very droll
- Date: 27 Oct 1994 14:02:57 +0100
- Organization: Dept. of Informatics, University of Oslo, Norway
- Lines: 26
- Message-ID: <38o8e1$a0o@holmenkollen.ifi.uio.no>
- References: <38jdmq$4qu@visbur.ifi.uio.no>
- NNTP-Posting-Host: holmenkollen.ifi.uio.no
- .
- So a `headers' return value would imply that there's a number of
- these in the data buffer.
- Here's a BNF definition of such a buffer:
- headers = *head
- head = error / valid-head
- error-message = [ "4" / "5" ] 2number " " <error message> eol
- valid-head = valid-message *header "." eol
- valid-message = "221 " <number> " Article retrieved." eol
- header = <text> eol
- (The version of BNF used here is the one used in RFC822.)
- If the return value is `nov', the data buffer should contain
- "network overview database" lines. These are basically fields
- separated by tabs.
- nov-buffer = *nov-line
- nov-line = field 7*8[ <TAB> field ] eol
- field = <text except TAB>
- For a closer look at what should be in those fields, *note
- Headers::.
- `(nnchoke-open-server SERVER &optional DEFINITIONS)'
- SERVER is here the virtual server name. DEFINITIONS is a list of
- `(VARIABLE VALUE)' pairs that define this virtual server.
- If the server can't be opened, no error should be signaled. The
- back end may then choose to refuse further attempts at connecting
- to this server. In fact, it should do so.
- If the server is opened already, this function should return a
- non-`nil' value. There should be no data returned.
- `(nnchoke-close-server &optional SERVER)'
- Close connection to SERVER and free all resources connected to it.
- Return `nil' if the server couldn't be closed for some reason.
- There should be no data returned.
- `(nnchoke-request-close)'
- Close connection to all servers and free all resources that the
- back end have reserved. All buffers that have been created by
- that back end should be killed. (Not the `nntp-server-buffer',
- though.) This function is generally only called when Gnus is
- shutting down.
- There should be no data returned.
- `(nnchoke-server-opened &optional SERVER)'
- If SERVER is the current virtual server, and the connection to the
- physical server is alive, then this function should return a
- non-`nil' value. This function should under no circumstances
- attempt to reconnect to a server we have lost connection to.
- There should be no data returned.
- `(nnchoke-status-message &optional SERVER)'
- This function should return the last error message from SERVER.
- There should be no data returned.
- `(nnchoke-request-article ARTICLE &optional GROUP SERVER TO-BUFFER)'
- The result data from this function should be the article specified
- by ARTICLE. This might either be a `Message-ID' or a number. It
- is optional whether to implement retrieval by `Message-ID', but it
- would be nice if that were possible.
- If TO-BUFFER is non-`nil', the result data should be returned in
- this buffer instead of the normal data buffer. This is to make it
- possible to avoid copying large amounts of data from one buffer to
- another, while Gnus mainly requests articles to be inserted
- directly into its article buffer.
- If it is at all possible, this function should return a cons cell
- where the `car' is the group name the article was fetched from,
- and the `cdr' is the article number. This will enable Gnus to
- find out what the real group and article numbers are when fetching
- articles by `Message-ID'. If this isn't possible, `t' should be
- returned on successful article retrieval.
- `(nnchoke-request-group GROUP &optional SERVER FAST INFO)'
- Get data on GROUP. This function also has the side effect of
- making GROUP the current group.
- If FAST, don't bother to return useful data, just make GROUP the
- current group.
- If INFO, it allows the backend to update the group info structure.
- Here's an example of some result data and a definition of the same:
- 211 56 1000 1059 ifi.discussion
- The first number is the status, which should be 211. Next is the
- total number of articles in the group, the lowest article number,
- the highest article number, and finally the group name. Note that
- the total number of articles may be less than one might think
- while just considering the highest and lowest article numbers, but
- some articles may have been canceled. Gnus just discards the
- total-number, so whether one should take the bother to generate it
- properly (if that is a problem) is left as an exercise to the
- reader. If the group contains no articles, the lowest article
- number should be reported as 1 and the highest as 0.
- group-status = [ error / info ] eol
- error = [ "4" / "5" ] 2<number> " " <Error message>
- info = "211 " 3* [ <number> " " ] <string>
- `(nnchoke-close-group GROUP &optional SERVER)'
- Close GROUP and free any resources connected to it. This will be
- a no-op on most back ends.
- There should be no data returned.
- `(nnchoke-request-list &optional SERVER)'
- Return a list of all groups available on SERVER. And that means
- _all_.
- Here's an example from a server that only carries two groups:
- ifi.test 0000002200 0000002000 y
- ifi.discussion 3324 3300 n
- On each line we have a group name, then the highest article number
- in that group, the lowest article number, and finally a flag. If
- the group contains no articles, the lowest article number should
- be reported as 1 and the highest as 0.
- active-file = *active-line
- active-line = name " " <number> " " <number> " " flags eol
- name = <string>
- flags = "n" / "y" / "m" / "x" / "j" / "=" name
- The flag says whether the group is read-only (`n'), is moderated
- (`m'), is dead (`x'), is aliased to some other group
- (`=other-group') or none of the above (`y').
- `(nnchoke-request-post &optional SERVER)'
- This function should post the current buffer. It might return
- whether the posting was successful or not, but that's not
- required. If, for instance, the posting is done asynchronously,
- it has generally not been completed by the time this function
- concludes. In that case, this function should set up some kind of
- sentinel to beep the user loud and clear if the posting could not
- be completed.
- There should be no result data from this function.
- File: gnus, Node: Optional Back End Functions, Next: Error Messaging, Prev: Required Back End Functions, Up: Back End Interface
- 11.7.2.2 Optional Back End Functions
- ....................................
- `(nnchoke-retrieve-groups GROUPS &optional SERVER)'
- GROUPS is a list of groups, and this function should request data
- on all those groups. How it does it is of no concern to Gnus, but
- it should attempt to do this in a speedy fashion.
- The return value of this function can be either `active' or
- `group', which says what the format of the result data is. The
- former is in the same format as the data from
- `nnchoke-request-list', while the latter is a buffer full of lines
- in the same format as `nnchoke-request-group' gives.
- group-buffer = *active-line / *group-status
- `(nnchoke-request-update-info GROUP INFO &optional SERVER)'
- A Gnus group info (*note Group Info::) is handed to the back end
- for alterations. This comes in handy if the back end really
- carries all the information (as is the case with virtual and imap
- groups). This function should destructively alter the info to
- suit its needs, and should return a non-`nil' value (exceptionally,
- `nntp-request-update-info' always returns `nil' not to waste the
- network resources).
- There should be no result data from this function.
- `(nnchoke-request-type GROUP &optional ARTICLE)'
- When the user issues commands for "sending news" (`F' in the
- summary buffer, for instance), Gnus has to know whether the
- article the user is following up on is news or mail. This
- function should return `news' if ARTICLE in GROUP is news, `mail'
- if it is mail and `unknown' if the type can't be decided. (The
- ARTICLE parameter is necessary in `nnvirtual' groups which might
- very well combine mail groups and news groups.) Both GROUP and
- ARTICLE may be `nil'.
- There should be no result data from this function.
- `(nnchoke-request-set-mark GROUP ACTION &optional SERVER)'
- Set/remove/add marks on articles. Normally Gnus handles the
- article marks (such as read, ticked, expired etc) internally, and
- store them in `~/.newsrc.eld'. Some back ends (such as IMAP)
- however carry all information about the articles on the server, so
- Gnus need to propagate the mark information to the server.
- ACTION is a list of mark setting requests, having this format:
- (RANGE ACTION MARK)
- RANGE is a range of articles you wish to update marks on. ACTION
- is `add' or `del', used to add marks or remove marks (preserving
- all marks not mentioned). MARK is a list of marks; where each
- mark is a symbol. Currently used marks are `read', `tick',
- `reply', `expire', `killed', `dormant', `save', `download',
- `unsend', and `forward', but your back end should, if possible,
- not limit itself to these.
- Given contradictory actions, the last action in the list should be
- the effective one. That is, if your action contains a request to
- add the `tick' mark on article 1 and, later in the list, a request
- to remove the mark on the same article, the mark should in fact be
- removed.
- An example action list:
- (((5 12 30) 'del '(tick))
- ((10 . 90) 'add '(read expire))
- ((92 94) 'del '(read)))
- The function should return a range of articles it wasn't able to
- set the mark on (currently not used for anything).
- There should be no result data from this function.
- `(nnchoke-request-update-mark GROUP ARTICLE MARK)'
- If the user tries to set a mark that the back end doesn't like,
- this function may change the mark. Gnus will use whatever this
- function returns as the mark for ARTICLE instead of the original
- MARK. If the back end doesn't care, it must return the original
- MARK, and not `nil' or any other type of garbage.
- The only use for this I can see is what `nnvirtual' does with
- it--if a component group is auto-expirable, marking an article as
- read in the virtual group should result in the article being
- marked as expirable.
- There should be no result data from this function.
- `(nnchoke-request-scan &optional GROUP SERVER)'
- This function may be called at any time (by Gnus or anything else)
- to request that the back end check for incoming articles, in one
- way or another. A mail back end will typically read the spool
- file or query the POP server when this function is invoked. The
- GROUP doesn't have to be heeded--if the back end decides that it
- is too much work just scanning for a single group, it may do a
- total scan of all groups. It would be nice, however, to keep
- things local if that's practical.
- There should be no result data from this function.
- `(nnchoke-request-group-description GROUP &optional SERVER)'
- The result data from this function should be a description of
- GROUP.
- description-line = name <TAB> description eol
- name = <string>
- description = <text>
- `(nnchoke-request-list-newsgroups &optional SERVER)'
- The result data from this function should be the description of all
- groups available on the server.
- description-buffer = *description-line
- `(nnchoke-request-newgroups DATE &optional SERVER)'
- The result data from this function should be all groups that were
- created after `date', which is in normal human-readable date format
- (i.e., the date format used in mail and news headers, and returned
- by the function `message-make-date' by default). The data should
- be in the active buffer format.
- It is okay for this function to return "too many" groups; some
- back ends might find it cheaper to return the full list of groups,
- rather than just the new groups. But don't do this for back ends
- with many groups. Normally, if the user creates the groups
- herself, there won't be too many groups, so `nnml' and the like
- are probably safe. But for back ends like `nntp', where the
- groups have been created by the server, it is quite likely that
- there can be many groups.
- `(nnchoke-request-create-group GROUP &optional SERVER)'
- This function should create an empty group with name GROUP.
- There should be no return data.
- `(nnchoke-request-expire-articles ARTICLES &optional GROUP SERVER FORCE)'
- This function should run the expiry process on all articles in the
- ARTICLES range (which is currently a simple list of article
- numbers.) It is left up to the back end to decide how old articles
- should be before they are removed by this function. If FORCE is
- non-`nil', all ARTICLES should be deleted, no matter how new they
- are.
- This function should return a list of articles that it did not/was
- not able to delete.
- There should be no result data returned.
- `(nnchoke-request-move-article ARTICLE GROUP SERVER ACCEPT-FORM &optional LAST)'
- This function should move ARTICLE (which is a number) from GROUP
- by calling ACCEPT-FORM.
- This function should ready the article in question for moving by
- removing any header lines it has added to the article, and
- generally should "tidy up" the article. Then it should `eval'
- ACCEPT-FORM in the buffer where the "tidy" article is. This will
- do the actual copying. If this `eval' returns a non-`nil' value,
- the article should be removed.
- If LAST is `nil', that means that there is a high likelihood that
- there will be more requests issued shortly, so that allows some
- optimizations.
- The function should return a cons where the `car' is the group
- name and the `cdr' is the article number that the article was
- entered as.
- There should be no data returned.
- `(nnchoke-request-accept-article GROUP &optional SERVER LAST)'
- This function takes the current buffer and inserts it into GROUP.
- If LAST in `nil', that means that there will be more calls to this
- function in short order.
- The function should return a cons where the `car' is the group
- name and the `cdr' is the article number that the article was
- entered as.
- The group should exist before the back end is asked to accept the
- article for that group.
- There should be no data returned.
- `(nnchoke-request-replace-article ARTICLE GROUP BUFFER)'
- This function should remove ARTICLE (which is a number) from GROUP
- and insert BUFFER there instead.
- There should be no data returned.
- `(nnchoke-request-delete-group GROUP FORCE &optional SERVER)'
- This function should delete GROUP. If FORCE, it should really
- delete all the articles in the group, and then delete the group
- itself. (If there is such a thing as "the group itself".)
- There should be no data returned.
- `(nnchoke-request-rename-group GROUP NEW-NAME &optional SERVER)'
- This function should rename GROUP into NEW-NAME. All articles in
- GROUP should move to NEW-NAME.
- There should be no data returned.
- File: gnus, Node: Error Messaging, Next: Writing New Back Ends, Prev: Optional Back End Functions, Up: Back End Interface
- 11.7.2.3 Error Messaging
- ........................
- The back ends should use the function `nnheader-report' to report error
- conditions--they should not raise errors when they aren't able to
- perform a request. The first argument to this function is the back end
- symbol, and the rest are interpreted as arguments to `format' if there
- are multiple of them, or just a string if there is one of them. This
- function must always returns `nil'.
- (nnheader-report 'nnchoke "You did something totally bogus")
- (nnheader-report 'nnchoke "Could not request group %s" group)
- Gnus, in turn, will call `nnheader-get-report' when it gets a `nil'
- back from a server, and this function returns the most recently
- reported message for the back end in question. This function takes one
- argument--the server symbol.
- Internally, these functions access BACK-END`-status-string', so the
- `nnchoke' back end will have its error message stored in
- `nnchoke-status-string'.
- File: gnus, Node: Writing New Back Ends, Next: Hooking New Back Ends Into Gnus, Prev: Error Messaging, Up: Back End Interface
- 11.7.2.4 Writing New Back Ends
- ..............................
- Many back ends are quite similar. `nnml' is just like `nnspool', but
- it allows you to edit the articles on the server. `nnmh' is just like
- `nnml', but it doesn't use an active file, and it doesn't maintain
- overview databases. `nndir' is just like `nnml', but it has no concept
- of "groups", and it doesn't allow editing articles.
- It would make sense if it were possible to "inherit" functions from
- back ends when writing new back ends. And, indeed, you can do that if
- you want to. (You don't have to if you don't want to, of course.)
- All the back ends declare their public variables and functions by
- using a package called `nnoo'.
- To inherit functions from other back ends (and allow other back ends
- to inherit functions from the current back end), you should use the
- following macros:
- `nnoo-declare'
- This macro declares the first parameter to be a child of the
- subsequent parameters. For instance:
- (nnoo-declare nndir
- nnml nnmh)
- `nndir' has declared here that it intends to inherit functions from
- both `nnml' and `nnmh'.
- `defvoo'
- This macro is equivalent to `defvar', but registers the variable as
- a public server variable. Most state-oriented variables should be
- declared with `defvoo' instead of `defvar'.
- In addition to the normal `defvar' parameters, it takes a list of
- variables in the parent back ends to map the variable to when
- executing a function in those back ends.
- (defvoo nndir-directory nil
- "Where nndir will look for groups."
- nnml-current-directory nnmh-current-directory)
- This means that `nnml-current-directory' will be set to
- `nndir-directory' when an `nnml' function is called on behalf of
- `nndir'. (The same with `nnmh'.)
- `nnoo-define-basics'
- This macro defines some common functions that almost all back ends
- should have.
- (nnoo-define-basics nndir)
- `deffoo'
- This macro is just like `defun' and takes the same parameters. In
- addition to doing the normal `defun' things, it registers the
- function as being public so that other back ends can inherit it.
- `nnoo-map-functions'
- This macro allows mapping of functions from the current back end to
- functions from the parent back ends.
- (nnoo-map-functions nndir
- (nnml-retrieve-headers 0 nndir-current-group 0 0)
- (nnmh-request-article 0 nndir-current-group 0 0))
- This means that when `nndir-retrieve-headers' is called, the first,
- third, and fourth parameters will be passed on to
- `nnml-retrieve-headers', while the second parameter is set to the
- value of `nndir-current-group'.
- `nnoo-import'
- This macro allows importing functions from back ends. It should
- be the last thing in the source file, since it will only define
- functions that haven't already been defined.
- (nnoo-import nndir
- (nnmh
- nnmh-request-list
- nnmh-request-newgroups)
- (nnml))
- This means that calls to `nndir-request-list' should just be passed
- on to `nnmh-request-list', while all public functions from `nnml'
- that haven't been defined in `nndir' yet should be defined now.
- Below is a slightly shortened version of the `nndir' back end.
- ;;; nndir.el -- single directory newsgroup access for Gnus
- ;; Copyright (C) 1995,1996 Free Software Foundation, Inc.
- ;;; Code:
- (require 'nnheader)
- (require 'nnmh)
- (require 'nnml)
- (require 'nnoo)
- (eval-when-compile (require 'cl))
- (nnoo-declare nndir
- nnml nnmh)
- (defvoo nndir-directory nil
- "Where nndir will look for groups."
- nnml-current-directory nnmh-current-directory)
- (defvoo nndir-nov-is-evil nil
- "*Non-nil means that nndir will never retrieve NOV headers."
- nnml-nov-is-evil)
- (defvoo nndir-current-group ""
- nil
- nnml-current-group nnmh-current-group)
- (defvoo nndir-top-directory nil nil nnml-directory nnmh-directory)
- (defvoo nndir-get-new-mail nil nil nnml-get-new-mail nnmh-get-new-mail)
- (defvoo nndir-status-string "" nil nnmh-status-string)
- (defconst nndir-version "nndir 1.0")
- ;;; Interface functions.
- (nnoo-define-basics nndir)
- (deffoo nndir-open-server (server &optional defs)
- (setq nndir-directory
- (or (cadr (assq 'nndir-directory defs))
- server))
- (unless (assq 'nndir-directory defs)
- (push `(nndir-directory ,server) defs))
- (push `(nndir-current-group
- ,(file-name-nondirectory
- (directory-file-name nndir-directory)))
- defs)
- (push `(nndir-top-directory
- ,(file-name-directory (directory-file-name nndir-directory)))
- defs)
- (nnoo-change-server 'nndir server defs))
- (nnoo-map-functions nndir
- (nnml-retrieve-headers 0 nndir-current-group 0 0)
- (nnmh-request-article 0 nndir-current-group 0 0)
- (nnmh-request-group nndir-current-group 0 0)
- (nnmh-close-group nndir-current-group 0))
- (nnoo-import nndir
- (nnmh
- nnmh-status-message
- nnmh-request-list
- nnmh-request-newgroups))
- (provide 'nndir)
- File: gnus, Node: Hooking New Back Ends Into Gnus, Next: Mail-like Back Ends, Prev: Writing New Back Ends, Up: Back End Interface
- 11.7.2.5 Hooking New Back Ends Into Gnus
- ........................................
- Having Gnus start using your new back end is rather easy--you just
- declare it with the `gnus-declare-backend' functions. This will enter
- the back end into the `gnus-valid-select-methods' variable.
- `gnus-declare-backend' takes two parameters--the back end name and
- an arbitrary number of "abilities".
- Here's an example:
- (gnus-declare-backend "nnchoke" 'mail 'respool 'address)
- The above line would then go in the `nnchoke.el' file.
- The abilities can be:
- `mail'
- This is a mailish back end--followups should (probably) go via
- mail.
- `post'
- This is a newsish back end--followups should (probably) go via
- news.
- `post-mail'
- This back end supports both mail and news.
- `none'
- This is neither a post nor mail back end--it's something completely
- different.
- `respool'
- It supports respooling--or rather, it is able to modify its source
- articles and groups.
- `address'
- The name of the server should be in the virtual server name. This
- is true for almost all back ends.
- `prompt-address'
- The user should be prompted for an address when doing commands like
- `B' in the group buffer. This is true for back ends like `nntp',
- but not `nnmbox', for instance.
- File: gnus, Node: Mail-like Back Ends, Prev: Hooking New Back Ends Into Gnus, Up: Back End Interface
- 11.7.2.6 Mail-like Back Ends
- ............................
- One of the things that separate the mail back ends from the rest of the
- back ends is the heavy dependence by most of the mail back ends on
- common functions in `nnmail.el'. For instance, here's the definition
- of `nnml-request-scan':
- (deffoo nnml-request-scan (&optional group server)
- (setq nnml-article-file-alist nil)
- (nnmail-get-new-mail 'nnml 'nnml-save-nov nnml-directory group))
- It simply calls `nnmail-get-new-mail' with a few parameters, and
- `nnmail' takes care of all the moving and splitting of the mail.
- This function takes four parameters.
- METHOD
- This should be a symbol to designate which back end is responsible
- for the call.
- EXIT-FUNCTION
- This function should be called after the splitting has been
- performed.
- TEMP-DIRECTORY
- Where the temporary files should be stored.
- GROUP
- This optional argument should be a group name if the splitting is
- to be performed for one group only.
- `nnmail-get-new-mail' will call BACK-END`-save-mail' to save each
- article. BACK-END`-active-number' will be called to find the article
- number assigned to this article.
- The function also uses the following variables:
- BACK-END`-get-new-mail' (to see whether to get new mail for this back
- end); and BACK-END`-group-alist' and BACK-END`-active-file' to generate
- the new active file. BACK-END`-group-alist' should be a group-active
- alist, like this:
- (("a-group" (1 . 10))
- ("some-group" (34 . 39)))
- File: gnus, Node: Score File Syntax, Next: Headers, Prev: Back End Interface, Up: Gnus Reference Guide
- 11.7.3 Score File Syntax
- ------------------------
- Score files are meant to be easily parsable, but yet extremely
- malleable. It was decided that something that had the same read syntax
- as an Emacs Lisp list would fit that spec.
- Here's a typical score file:
- (("summary"
- ("win95" -10000 nil s)
- ("Gnus"))
- ("from"
- ("Lars" -1000))
- (mark -100))
- BNF definition of a score file:
- score-file = "" / "(" *element ")"
- element = rule / atom
- rule = string-rule / number-rule / date-rule
- string-rule = "(" quote string-header quote space *string-match ")"
- number-rule = "(" quote number-header quote space *number-match ")"
- date-rule = "(" quote date-header quote space *date-match ")"
- quote = <ascii 34>
- string-header = "subject" / "from" / "references" / "message-id" /
- "xref" / "body" / "head" / "all" / "followup"
- number-header = "lines" / "chars"
- date-header = "date"
- string-match = "(" quote <string> quote [ "" / [ space score [ "" /
- space date [ "" / [ space string-match-t ] ] ] ] ] ")"
- score = "nil" / <integer>
- date = "nil" / <natural number>
- string-match-t = "nil" / "s" / "substring" / "S" / "Substring" /
- "r" / "regex" / "R" / "Regex" /
- "e" / "exact" / "E" / "Exact" /
- "f" / "fuzzy" / "F" / "Fuzzy"
- number-match = "(" <integer> [ "" / [ space score [ "" /
- space date [ "" / [ space number-match-t ] ] ] ] ] ")"
- number-match-t = "nil" / "=" / "<" / ">" / ">=" / "<="
- date-match = "(" quote <string> quote [ "" / [ space score [ "" /
- space date [ "" / [ space date-match-t ] ] ] ] ")"
- date-match-t = "nil" / "at" / "before" / "after"
- atom = "(" [ required-atom / optional-atom ] ")"
- required-atom = mark / expunge / mark-and-expunge / files /
- exclude-files / read-only / touched
- optional-atom = adapt / local / eval
- mark = "mark" space nil-or-number
- nil-or-number = "nil" / <integer>
- expunge = "expunge" space nil-or-number
- mark-and-expunge = "mark-and-expunge" space nil-or-number
- files = "files" *[ space <string> ]
- exclude-files = "exclude-files" *[ space <string> ]
- read-only = "read-only" [ space "nil" / space "t" ]
- adapt = "adapt" [ space "ignore" / space "t" / space adapt-rule ]
- adapt-rule = "(" *[ <string> *[ "(" <string> <integer> ")" ] ")"
- local = "local" *[ space "(" <string> space <form> ")" ]
- eval = "eval" space <form>
- space = *[ " " / <TAB> / <NEWLINE> ]
- Any unrecognized elements in a score file should be ignored, but not
- discarded.
- As you can see, white space is needed, but the type and amount of
- white space is irrelevant. This means that formatting of the score
- file is left up to the programmer--if it's simpler to just spew it all
- out on one looong line, then that's ok.
- The meaning of the various atoms are explained elsewhere in this
- manual (*note Score File Format::).
- File: gnus, Node: Headers, Next: Ranges, Prev: Score File Syntax, Up: Gnus Reference Guide
- 11.7.4 Headers
- --------------
- Internally Gnus uses a format for storing article headers that
- corresponds to the NOV format in a mysterious fashion. One could
- almost suspect that the author looked at the NOV specification and just
- shamelessly _stole_ the entire thing, and one would be right.
- "Header" is a severely overloaded term. "Header" is used in RFC
- 1036 to talk about lines in the head of an article (e.g., `From'). It
- is used by many people as a synonym for "head"--"the header and the
- body". (That should be avoided, in my opinion.) And Gnus uses a
- format internally that it calls "header", which is what I'm talking
- about here. This is a 9-element vector, basically, with each header
- (ouch) having one slot.
- These slots are, in order: `number', `subject', `from', `date',
- `id', `references', `chars', `lines', `xref', and `extra'. There are
- macros for accessing and setting these slots--they all have predictable
- names beginning with `mail-header-' and `mail-header-set-',
- respectively.
- All these slots contain strings, except the `extra' slot, which
- contains an alist of header/value pairs (*note To From Newsgroups::).
- File: gnus, Node: Ranges, Next: Group Info, Prev: Headers, Up: Gnus Reference Guide
- 11.7.5 Ranges
- -------------
- GNUS introduced a concept that I found so useful that I've started
- using it a lot and have elaborated on it greatly.
- The question is simple: If you have a large amount of objects that
- are identified by numbers (say, articles, to take a _wild_ example)
- that you want to qualify as being "included", a normal sequence isn't
- very useful. (A 200,000 length sequence is a bit long-winded.)
- The solution is as simple as the question: You just collapse the
- sequence.
- (1 2 3 4 5 6 10 11 12)
- is transformed into
- ((1 . 6) (10 . 12))
- To avoid having those nasty `(13 . 13)' elements to denote a
- lonesome object, a `13' is a valid element:
- ((1 . 6) 7 (10 . 12))
- This means that comparing two ranges to find out whether they are
- equal is slightly tricky:
- ((1 . 5) 7 8 (10 . 12))
- and
- ((1 . 5) (7 . 8) (10 . 12))
- are equal. In fact, any non-descending list is a range:
- (1 2 3 4 5)
- is a perfectly valid range, although a pretty long-winded one. This
- is also valid:
- (1 . 5)
- and is equal to the previous range.
- Here's a BNF definition of ranges. Of course, one must remember the
- semantic requirement that the numbers are non-descending. (Any number
- of repetition of the same number is allowed, but apt to disappear in
- range handling.)
- range = simple-range / normal-range
- simple-range = "(" number " . " number ")"
- normal-range = "(" start-contents ")"
- contents = "" / simple-range *[ " " contents ] /
- number *[ " " contents ]
- Gnus currently uses ranges to keep track of read articles and article
- marks. I plan on implementing a number of range operators in C if The
- Powers That Be are willing to let me. (I haven't asked yet, because I
- need to do some more thinking on what operators I need to make life
- totally range-based without ever having to convert back to normal
- sequences.)
- File: gnus, Node: Group Info, Next: Extended Interactive, Prev: Ranges, Up: Gnus Reference Guide
- 11.7.6 Group Info
- -----------------
- Gnus stores all permanent info on groups in a "group info" list. This
- list is from three to six elements (or more) long and exhaustively
- describes the group.
- Here are two example group infos; one is a very simple group while
- the second is a more complex one:
- ("no.group" 5 ((1 . 54324)))
- ("nnml:my.mail" 3 ((1 . 5) 9 (20 . 55))
- ((tick (15 . 19)) (replied 3 6 (19 . 3)))
- (nnml "")
- ((auto-expire . t) (to-address . "ding@gnus.org")))
- The first element is the "group name"--as Gnus knows the group,
- anyway. The second element is the "subscription level", which normally
- is a small integer. (It can also be the "rank", which is a cons cell
- where the `car' is the level and the `cdr' is the score.) The third
- element is a list of ranges of read articles. The fourth element is a
- list of lists of article marks of various kinds. The fifth element is
- the select method (or virtual server, if you like). The sixth element
- is a list of "group parameters", which is what this section is about.
- Any of the last three elements may be missing if they are not
- required. In fact, the vast majority of groups will normally only have
- the first three elements, which saves quite a lot of cons cells.
- Here's a BNF definition of the group info format:
- info = "(" group space ralevel space read
- [ "" / [ space marks-list [ "" / [ space method [ "" /
- space parameters ] ] ] ] ] ")"
- group = quote <string> quote
- ralevel = rank / level
- level = <integer in the range of 1 to inf>
- rank = "(" level "." score ")"
- score = <integer in the range of 1 to inf>
- read = range
- marks-lists = nil / "(" *marks ")"
- marks = "(" <string> range ")"
- method = "(" <string> *elisp-forms ")"
- parameters = "(" *elisp-forms ")"
- Actually that `marks' rule is a fib. A `marks' is a `<string>'
- consed on to a `range', but that's a bitch to say in pseudo-BNF.
- If you have a Gnus info and want to access the elements, Gnus offers
- a series of macros for getting/setting these elements.
- `gnus-info-group'
- `gnus-info-set-group'
- Get/set the group name.
- `gnus-info-rank'
- `gnus-info-set-rank'
- Get/set the group rank (*note Group Score::).
- `gnus-info-level'
- `gnus-info-set-level'
- Get/set the group level.
- `gnus-info-score'
- `gnus-info-set-score'
- Get/set the group score (*note Group Score::).
- `gnus-info-read'
- `gnus-info-set-read'
- Get/set the ranges of read articles.
- `gnus-info-marks'
- `gnus-info-set-marks'
- Get/set the lists of ranges of marked articles.
- `gnus-info-method'
- `gnus-info-set-method'
- Get/set the group select method.
- `gnus-info-params'
- `gnus-info-set-params'
- Get/set the group parameters.
- All the getter functions take one parameter--the info list. The
- setter functions take two parameters--the info list and the new value.
- The last three elements in the group info aren't mandatory, so it
- may be necessary to extend the group info before setting the element.
- If this is necessary, you can just pass on a non-`nil' third parameter
- to the three final setter functions to have this happen automatically.
- File: gnus, Node: Extended Interactive, Next: Emacs/XEmacs Code, Prev: Group Info, Up: Gnus Reference Guide
- 11.7.7 Extended Interactive
- ---------------------------
- Gnus extends the standard Emacs `interactive' specification slightly to
- allow easy use of the symbolic prefix (*note Symbolic Prefixes::).
- Here's an example of how this is used:
- (defun gnus-summary-increase-score (&optional score symp)
- (interactive (gnus-interactive "P\ny"))
- ...
- )
- The best thing to do would have been to implement `gnus-interactive'
- as a macro which would have returned an `interactive' form, but this
- isn't possible since Emacs checks whether a function is interactive or
- not by simply doing an `assq' on the lambda form. So, instead we have
- `gnus-interactive' function that takes a string and returns values that
- are usable to `interactive'.
- This function accepts (almost) all normal `interactive' specs, but
- adds a few more.
- `y'
- The current symbolic prefix--the `gnus-current-prefix-symbol'
- variable.
- `Y'
- A list of the current symbolic prefixes--the
- `gnus-current-prefix-symbol' variable.
- `A'
- The current article number--the `gnus-summary-article-number'
- function.
- `H'
- The current article header--the `gnus-summary-article-header'
- function.
- `g'
- The current group name--the `gnus-group-group-name' function.
- File: gnus, Node: Emacs/XEmacs Code, Next: Various File Formats, Prev: Extended Interactive, Up: Gnus Reference Guide
- 11.7.8 Emacs/XEmacs Code
- ------------------------
- While Gnus runs under Emacs, XEmacs and Mule, I decided that one of the
- platforms must be the primary one. I chose Emacs. Not because I don't
- like XEmacs or Mule, but because it comes first alphabetically.
- This means that Gnus will byte-compile under Emacs with nary a
- warning, while XEmacs will pump out gigabytes of warnings while
- byte-compiling. As I use byte-compilation warnings to help me root out
- trivial errors in Gnus, that's very useful.
- I've also consistently used Emacs function interfaces, but have used
- Gnusey aliases for the functions. To take an example: Emacs defines a
- `run-at-time' function while XEmacs defines a `start-itimer' function.
- I then define a function called `gnus-run-at-time' that takes the same
- parameters as the Emacs `run-at-time'. When running Gnus under Emacs,
- the former function is just an alias for the latter. However, when
- running under XEmacs, the former is an alias for the following function:
- (defun gnus-xmas-run-at-time (time repeat function &rest args)
- (start-itimer
- "gnus-run-at-time"
- `(lambda ()
- (,function ,@args))
- time repeat))
- This sort of thing has been done for bunches of functions. Gnus does
- not redefine any native Emacs functions while running under XEmacs--it
- does this `defalias' thing with Gnus equivalents instead. Cleaner all
- over.
- In the cases where the XEmacs function interface was obviously
- cleaner, I used it instead. For example `gnus-region-active-p' is an
- alias for `region-active-p' in XEmacs, whereas in Emacs it is a
- function.
- Of course, I could have chosen XEmacs as my native platform and done
- mapping functions the other way around. But I didn't. The performance
- hit these indirections impose on Gnus under XEmacs should be slight.
- File: gnus, Node: Various File Formats, Prev: Emacs/XEmacs Code, Up: Gnus Reference Guide
- 11.7.9 Various File Formats
- ---------------------------
- * Menu:
- * Active File Format:: Information on articles and groups available.
- * Newsgroups File Format:: Group descriptions.
- File: gnus, Node: Active File Format, Next: Newsgroups File Format, Up: Various File Formats
- 11.7.9.1 Active File Format
- ...........................
- The active file lists all groups available on the server in question.
- It also lists the highest and lowest current article numbers in each
- group.
- Here's an excerpt from a typical active file:
- soc.motss 296030 293865 y
- alt.binaries.pictures.fractals 3922 3913 n
- comp.sources.unix 1605 1593 m
- comp.binaries.ibm.pc 5097 5089 y
- no.general 1000 900 y
- Here's a pseudo-BNF definition of this file:
- active = *group-line
- group-line = group spc high-number spc low-number spc flag <NEWLINE>
- group = <non-white-space string>
- spc = " "
- high-number = <non-negative integer>
- low-number = <positive integer>
- flag = "y" / "n" / "m" / "j" / "x" / "=" group
- For a full description of this file, see the manual pages for
- `innd', in particular `active(5)'.
- File: gnus, Node: Newsgroups File Format, Prev: Active File Format, Up: Various File Formats
- 11.7.9.2 Newsgroups File Format
- ...............................
- The newsgroups file lists groups along with their descriptions. Not all
- groups on the server have to be listed, and not all groups in the file
- have to exist on the server. The file is meant purely as information to
- the user.
- The format is quite simple; a group name, a tab, and the description.
- Here's the definition:
- newsgroups = *line
- line = group tab description <NEWLINE>
- group = <non-white-space string>
- tab = <TAB>
- description = <string>
- File: gnus, Node: Emacs for Heathens, Next: Frequently Asked Questions, Prev: Gnus Reference Guide, Up: Appendices
- 11.8 Emacs for Heathens
- =======================
- Believe it or not, but some people who use Gnus haven't really used
- Emacs much before they embarked on their journey on the Gnus Love Boat.
- If you are one of those unfortunates whom "`C-M-a'", "kill the region",
- and "set `gnus-flargblossen' to an alist where the key is a regexp that
- is used for matching on the group name" are magical phrases with little
- or no meaning, then this appendix is for you. If you are already
- familiar with Emacs, just ignore this and go fondle your cat instead.
- * Menu:
- * Keystrokes:: Entering text and executing commands.
- * Emacs Lisp:: The built-in Emacs programming language.
- File: gnus, Node: Keystrokes, Next: Emacs Lisp, Up: Emacs for Heathens
- 11.8.1 Keystrokes
- -----------------
- * Q: What is an experienced Emacs user?
- * A: A person who wishes that the terminal had pedals.
- Yes, when you use Emacs, you are apt to use the control key, the
- shift key and the meta key a lot. This is very annoying to some people
- (notably `vi'le users), and the rest of us just love the hell out of
- it. Just give up and submit. Emacs really does stand for
- "Escape-Meta-Alt-Control-Shift", and not "Editing Macros", as you may
- have heard from other disreputable sources (like the Emacs author).
- The shift keys are normally located near your pinky fingers, and are
- normally used to get capital letters and stuff. You probably use it all
- the time. The control key is normally marked "CTRL" or something like
- that. The meta key is, funnily enough, never marked as such on any
- keyboard. The one I'm currently at has a key that's marked "Alt",
- which is the meta key on this keyboard. It's usually located somewhere
- to the left hand side of the keyboard, usually on the bottom row.
- Now, us Emacs people don't say "press the meta-control-m key",
- because that's just too inconvenient. We say "press the `C-M-m' key".
- `M-' is the prefix that means "meta" and "C-" is the prefix that means
- "control". So "press `C-k'" means "press down the control key, and
- hold it down while you press `k'". "Press `C-M-k'" means "press down
- and hold down the meta key and the control key and then press `k'".
- Simple, ay?
- This is somewhat complicated by the fact that not all keyboards have
- a meta key. In that case you can use the "escape" key. Then `M-k'
- means "press escape, release escape, press `k'". That's much more work
- than if you have a meta key, so if that's the case, I respectfully
- suggest you get a real keyboard with a meta key. You can't live without
- it.
- File: gnus, Node: Emacs Lisp, Prev: Keystrokes, Up: Emacs for Heathens
- 11.8.2 Emacs Lisp
- -----------------
- Emacs is the King of Editors because it's really a Lisp interpreter.
- Each and every key you tap runs some Emacs Lisp code snippet, and since
- Emacs Lisp is an interpreted language, that means that you can configure
- any key to run any arbitrary code. You just, like, do it.
- Gnus is written in Emacs Lisp, and is run as a bunch of interpreted
- functions. (These are byte-compiled for speed, but it's still
- interpreted.) If you decide that you don't like the way Gnus does
- certain things, it's trivial to have it do something a different way.
- (Well, at least if you know how to write Lisp code.) However, that's
- beyond the scope of this manual, so we are simply going to talk about
- some common constructs that you normally use in your `~/.gnus.el' file
- to customize Gnus. (You can also use the `~/.emacs' file, but in order
- to set things of Gnus up, it is much better to use the `~/.gnus.el'
- file, *Note Startup Files::.)
- If you want to set the variable `gnus-florgbnize' to four (4), you
- write the following:
- (setq gnus-florgbnize 4)
- This function (really "special form") `setq' is the one that can set
- a variable to some value. This is really all you need to know. Now
- you can go and fill your `~/.gnus.el' file with lots of these to change
- how Gnus works.
- If you have put that thing in your `~/.gnus.el' file, it will be
- read and `eval'ed (which is Lisp-ese for "run") the next time you start
- Gnus. If you want to change the variable right away, simply say `C-x
- C-e' after the closing parenthesis. That will `eval' the previous
- "form", which is a simple `setq' statement here.
- Go ahead--just try it, if you're located at your Emacs. After you
- `C-x C-e', you will see `4' appear in the echo area, which is the
- return value of the form you `eval'ed.
- Some pitfalls:
- If the manual says "set `gnus-read-active-file' to `some'", that
- means:
- (setq gnus-read-active-file 'some)
- On the other hand, if the manual says "set `gnus-nntp-server-file' to
- `/etc/nntpserver'", that means:
- (setq gnus-nntp-server-file "/etc/nntpserver")
- So be careful not to mix up strings (the latter) with symbols (the
- former). The manual is unambiguous, but it can be confusing.
- File: gnus, Node: Frequently Asked Questions, Prev: Emacs for Heathens, Up: Appendices
- 11.9 Frequently Asked Questions
- ===============================
- * Menu:
- * FAQ - Changes::
- * FAQ - Introduction:: About Gnus and this FAQ.
- * FAQ 1 - Installation FAQ:: Installation of Gnus.
- * FAQ 2 - Startup / Group buffer:: Start up questions and the
- first buffer Gnus shows you.
- * FAQ 3 - Getting Messages:: Making Gnus read your mail
- and news.
- * FAQ 4 - Reading messages:: How to efficiently read
- messages.
- * FAQ 5 - Composing messages:: Composing mails or Usenet
- postings.
- * FAQ 6 - Old messages:: Importing, archiving,
- searching and deleting messages.
- * FAQ 7 - Gnus in a dial-up environment:: Reading mail and news while
- offline.
- * FAQ 8 - Getting help:: When this FAQ isn't enough.
- * FAQ 9 - Tuning Gnus:: How to make Gnus faster.
- * FAQ - Glossary:: Terms used in the FAQ
- explained.
- Abstract
- --------
- This is the new Gnus Frequently Asked Questions list.
- Please submit features and suggestions to the ding list
- <ding@gnus.org>.
- File: gnus, Node: FAQ - Changes, Next: FAQ - Introduction, Up: Frequently Asked Questions
- Changes
- -------
- * 2008-06-15: Adjust for message-fill-column. Add x-face-file.
- Clarify difference between ding and gnu.emacs.gnus. Remove
- reference to discontinued service.
- * 2006-04-15: Added tip on how to delete sent buffer on exit.
- File: gnus, Node: FAQ - Introduction, Next: FAQ 1 - Installation FAQ, Prev: FAQ - Changes, Up: Frequently Asked Questions
- Introduction
- ------------
- This is the Gnus Frequently Asked Questions list.
- Gnus is a Usenet Newsreader and Electronic Mail User Agent
- implemented as a part of Emacs. It's been around in some form for
- almost a decade now, and has been distributed as a standard part of
- Emacs for much of that time. Gnus 5 is the latest (and greatest)
- incarnation. The original version was called GNUS, and was written by
- Masanobu UMEDA. When autumn crept up in '94, Lars Magne Ingebrigtsen
- grew bored and decided to rewrite Gnus.
- Its biggest strength is the fact that it is extremely customizable.
- It is somewhat intimidating at first glance, but most of the complexity
- can be ignored until you're ready to take advantage of it. If you
- receive a reasonable volume of e-mail (you're on various mailing
- lists), or you would like to read high-volume mailing lists but cannot
- keep up with them, or read high volume newsgroups or are just bored,
- then Gnus is what you want.
- This FAQ was maintained by Justin Sheehy until March 2002. He would
- like to thank Steve Baur and Per Abrahamsen for doing a wonderful job
- with this FAQ before him. We would like to do the same - thanks, Justin!
- This version is much nicer than the unofficial hypertext versions
- that are archived at Utrecht, Oxford, Smart Pages, Ohio State, and
- other FAQ archives. See the resources question below if you want
- information on obtaining it in another format.
- The information contained here was compiled with the assistance of
- the Gnus development mailing list, and any errors or misprints are the
- Gnus team's fault, sorry.
- File: gnus, Node: FAQ 1 - Installation FAQ, Next: FAQ 2 - Startup / Group buffer, Prev: FAQ - Introduction, Up: Frequently Asked Questions
- 11.9.1 Installation FAQ
- -----------------------
- * Menu:
- * FAQ 1-1:: What is the latest version of Gnus?
- * FAQ 1-2:: What's new in 5.10?
- * FAQ 1-3:: Where and how to get Gnus?
- * FAQ 1-4:: What to do with the tarball now?
- * FAQ 1-5:: I sometimes read references to No Gnus and Oort Gnus,
- what are those?
- * FAQ 1-6:: Which version of Emacs do I need?
- * FAQ 1-7:: How do I run Gnus on both Emacs and XEmacs?
- File: gnus, Node: FAQ 1-1, Next: FAQ 1-2, Up: FAQ 1 - Installation FAQ
- Question 1.1
- ............
- What is the latest version of Gnus?
- Answer
- ......
- Jingle please: Gnus 5.10 is released, get it while it's hot! As well as
- the step in version number is rather small, Gnus 5.10 has tons of new
- features which you shouldn't miss. The current release (5.13) should be
- at least as stable as the latest release of the 5.8 series.
- File: gnus, Node: FAQ 1-2, Next: FAQ 1-3, Prev: FAQ 1-1, Up: FAQ 1 - Installation FAQ
- Question 1.2
- ............
- What's new in 5.10?
- Answer
- ......
- First of all, you should have a look into the file GNUS-NEWS in the
- toplevel directory of the Gnus tarball, there the most important
- changes are listed. Here's a short list of the changes I find especially
- important/interesting:
- * Major rewrite of the Gnus agent, Gnus agent is now active by
- default.
- * Many new article washing functions for dealing with ugly formatted
- articles.
- * Anti Spam features.
- * Message-utils now included in Gnus.
- * New format specifiers for summary lines, e.g. %B for a complex
- trn-style thread tree.
- File: gnus, Node: FAQ 1-3, Next: FAQ 1-4, Prev: FAQ 1-2, Up: FAQ 1 - Installation FAQ
- Question 1.3
- ............
- Where and how to get Gnus?
- Answer
- ......
- Gnus is released independent from releases of Emacs and XEmacs.
- Therefore, the version bundled with Emacs or the version in XEmacs's
- package system might not be up to date (e.g. Gnus 5.9 bundled with Emacs
- 21 is outdated). You can get the latest released version of Gnus from
- `http://www.gnus.org/dist/gnus.tar.gz' or via anonymous FTP from
- `ftp://ftp.gnus.org/pub/gnus/gnus.tar.gz'.
- File: gnus, Node: FAQ 1-4, Next: FAQ 1-5, Prev: FAQ 1-3, Up: FAQ 1 - Installation FAQ
- Question 1.4
- ............
- What to do with the tarball now?
- Answer
- ......
- Untar it via `tar xvzf gnus.tar.gz' and do the common `./configure;
- make; make install' circle. (under MS-Windows either get the Cygwin
- environment from `http://www.cygwin.com' which allows you to do what's
- described above or unpack the tarball with some packer (e.g. Winace from
- `http://www.winace.com') and use the batch-file make.bat included in
- the tarball to install Gnus.) If you don't want to (or aren't allowed
- to) install Gnus system-wide, you can install it in your home directory
- and add the following lines to your ~/.xemacs/init.el or ~/.emacs:
- (add-to-list 'load-path "/path/to/gnus/lisp")
- (if (featurep 'xemacs)
- (add-to-list 'Info-directory-list "/path/to/gnus/texi/")
- (add-to-list 'Info-default-directory-list "/path/to/gnus/texi/"))
- Make sure that you don't have any Gnus related stuff before this
- line, on MS Windows use something like "C:/path/to/lisp" (yes, "/").
- File: gnus, Node: FAQ 1-5, Next: FAQ 1-6, Prev: FAQ 1-4, Up: FAQ 1 - Installation FAQ
- Question 1.5
- ............
- I sometimes read references to No Gnus and Oort Gnus, what are those?
- Answer
- ......
- Oort Gnus was the name of the development version of Gnus, which became
- Gnus 5.10 in autumn 2003. No Gnus is the name of the current
- development version which will once become Gnus 5.12 or Gnus 6. (If
- you're wondering why not 5.11, the odd version numbers are normally
- used for the Gnus versions bundled with Emacs)
- File: gnus, Node: FAQ 1-6, Next: FAQ 1-7, Prev: FAQ 1-5, Up: FAQ 1 - Installation FAQ
- Question 1.6
- ............
- Which version of Emacs do I need?
- Answer
- ......
- Gnus 5.10 requires an Emacs version that is greater than or equal to
- Emacs 20.7 or XEmacs 21.1. The development versions of Gnus (aka No
- Gnus) requires Emacs 21 or XEmacs 21.4.
- File: gnus, Node: FAQ 1-7, Prev: FAQ 1-6, Up: FAQ 1 - Installation FAQ
- Question 1.7
- ............
- How do I run Gnus on both Emacs and XEmacs?
- Answer
- ......
- You can't use the same copy of Gnus in both as the Lisp files are
- byte-compiled to a format which is different depending on which Emacs
- did the compilation. Get one copy of Gnus for Emacs and one for XEmacs.
- File: gnus, Node: FAQ 2 - Startup / Group buffer, Next: FAQ 3 - Getting Messages, Prev: FAQ 1 - Installation FAQ, Up: Frequently Asked Questions
- 11.9.2 Startup / Group buffer
- -----------------------------
- * Menu:
- * FAQ 2-1:: Every time I start Gnus I get a message "Gnus auto-save
- file exists. Do you want to read it?", what does this mean and
- how to prevent it?
- * FAQ 2-2:: Gnus doesn't remember which groups I'm subscribed to,
- what's this?
- * FAQ 2-3:: How to change the format of the lines in Group buffer?
- * FAQ 2-4:: My group buffer becomes a bit crowded, is there a way to
- sort my groups into categories so I can easier browse through
- them?
- * FAQ 2-5:: How to manually sort the groups in Group buffer? How to
- sort the groups in a topic?
- File: gnus, Node: FAQ 2-1, Next: FAQ 2-2, Up: FAQ 2 - Startup / Group buffer
- Question 2.1
- ............
- Every time I start Gnus I get a message "Gnus auto-save file exists. Do
- you want to read it?", what does this mean and how to prevent it?
- Answer
- ......
- This message means that the last time you used Gnus, it wasn't properly
- exited and therefore couldn't write its information to disk (e.g. which
- messages you read), you are now asked if you want to restore that
- information from the auto-save file.
- To prevent this message make sure you exit Gnus via `q' in group
- buffer instead of just killing Emacs.
- File: gnus, Node: FAQ 2-2, Next: FAQ 2-3, Prev: FAQ 2-1, Up: FAQ 2 - Startup / Group buffer
- Question 2.2
- ............
- Gnus doesn't remember which groups I'm subscribed to, what's this?
- Answer
- ......
- You get the message described in the q/a pair above while starting
- Gnus, right? It's an other symptom for the same problem, so read the
- answer above.
- File: gnus, Node: FAQ 2-3, Next: FAQ 2-4, Prev: FAQ 2-2, Up: FAQ 2 - Startup / Group buffer
- Question 2.3
- ............
- How to change the format of the lines in Group buffer?
- Answer
- ......
- You've got to tweak the value of the variable gnus-group-line-format.
- See the manual node "Group Line Specification" for information on how
- to do this. An example for this (guess from whose .gnus :-)):
- (setq gnus-group-line-format "%P%M%S[%5t]%5y : %(%g%)\n")
- File: gnus, Node: FAQ 2-4, Next: FAQ 2-5, Prev: FAQ 2-3, Up: FAQ 2 - Startup / Group buffer
- Question 2.4
- ............
- My group buffer becomes a bit crowded, is there a way to sort my groups
- into categories so I can easier browse through them?
- Answer
- ......
- Gnus offers the topic mode, it allows you to sort your groups in, well,
- topics, e.g. all groups dealing with Linux under the topic linux, all
- dealing with music under the topic music and all dealing with scottish
- music under the topic scottish which is a subtopic of music.
- To enter topic mode, just hit t while in Group buffer. Now you can
- use `T n' to create a topic at point and `T m' to move a group to a
- specific topic. For more commands see the manual or the menu. You might
- want to include the %P specifier at the beginning of your
- gnus-group-line-format variable to have the groups nicely indented.
- File: gnus, Node: FAQ 2-5, Prev: FAQ 2-4, Up: FAQ 2 - Startup / Group buffer
- Question 2.5
- ............
- How to manually sort the groups in Group buffer? How to sort the groups
- in a topic?
- Answer
- ......
- Move point over the group you want to move and hit `C-k', now move
- point to the place where you want the group to be and hit `C-y'.
- File: gnus, Node: FAQ 3 - Getting Messages, Next: FAQ 4 - Reading messages, Prev: FAQ 2 - Startup / Group buffer, Up: Frequently Asked Questions
- 11.9.3 Getting Messages
- -----------------------
- * Menu:
- * FAQ 3-1:: I just installed Gnus, started it via `M-x gnus'
- but it only says "nntp (news) open error", what to do?
- * FAQ 3-2:: I'm working under Windows and have no idea what
- ~/.gnus.el means.
- * FAQ 3-3:: My news server requires authentication, how to store
- user name and password on disk?
- * FAQ 3-4:: Gnus seems to start up OK, but I can't find out how to
- subscribe to a group.
- * FAQ 3-5:: Gnus doesn't show all groups / Gnus says I'm not allowed
- to post on this server as well as I am, what's that?
- * FAQ 3-6:: I want Gnus to fetch news from several servers, is this
- possible?
- * FAQ 3-7:: And how about local spool files?
- * FAQ 3-8:: OK, reading news works now, but I want to be able to
- read my mail with Gnus, too. How to do it?
- * FAQ 3-9:: And what about IMAP?
- * FAQ 3-10:: At the office we use one of those MS Exchange servers,
- can I use Gnus to read my mail from it?
- * FAQ 3-11:: Can I tell Gnus not to delete the mails on the server it
- retrieves via POP3?
- File: gnus, Node: FAQ 3-1, Next: FAQ 3-2, Up: FAQ 3 - Getting Messages
- Question 3.1
- ............
- I just installed Gnus, started it via `M-x gnus' but it only says "nntp
- (news) open error", what to do?
- Answer
- ......
- You've got to tell Gnus where to fetch the news from. Read the
- documentation for information on how to do this. As a first start, put
- those lines in ~/.gnus.el:
- (setq gnus-select-method '(nntp "news.yourprovider.net"))
- (setq user-mail-address "you@yourprovider.net")
- (setq user-full-name "Your Name")
- File: gnus, Node: FAQ 3-2, Next: FAQ 3-3, Prev: FAQ 3-1, Up: FAQ 3 - Getting Messages
- Question 3.2
- ............
- I'm working under Windows and have no idea what ~/.gnus.el means.
- Answer
- ......
- The ~/ means the home directory where Gnus and Emacs look for the
- configuration files. However, you don't really need to know what this
- means, it suffices that Emacs knows what it means :-) You can type `C-x
- C-f ~/.gnus.el RET ' (yes, with the forward slash, even on Windows), and
- Emacs will open the right file for you. (It will most likely be new,
- and thus empty.) However, I'd discourage you from doing so, since the
- directory Emacs chooses will most certainly not be what you want, so
- let's do it the correct way. The first thing you've got to do is to
- create a suitable directory (no blanks in directory name please) e.g.
- c:\myhome. Then you must set the environment variable HOME to this
- directory. To do this under Win9x or Me include the line
- SET HOME=C:\myhome
- in your autoexec.bat and reboot. Under NT, 2000 and XP, hit
- Winkey+Pause/Break to enter system options (if it doesn't work, go to
- Control Panel -> System -> Advanced). There you'll find the possibility
- to set environment variables. Create a new one with name HOME and
- value C:\myhome. Rebooting is not necessary.
- Now to create ~/.gnus.el, say `C-x C-f ~/.gnus.el RET C-x C-s'. in
- Emacs.
- File: gnus, Node: FAQ 3-3, Next: FAQ 3-4, Prev: FAQ 3-2, Up: FAQ 3 - Getting Messages
- Question 3.3
- ............
- My news server requires authentication, how to store user name and
- password on disk?
- Answer
- ......
- Create a file ~/.authinfo which includes for each server a line like
- this
- machine news.yourprovider.net login YourUserName password YourPassword
- . Make sure that the file isn't readable to others if you work on a
- OS which is capable of doing so. (Under Unix say
- chmod 600 ~/.authinfo
- in a shell.)
- File: gnus, Node: FAQ 3-4, Next: FAQ 3-5, Prev: FAQ 3-3, Up: FAQ 3 - Getting Messages
- Question 3.4
- ............
- Gnus seems to start up OK, but I can't find out how to subscribe to a
- group.
- Answer
- ......
- If you know the name of the group say `U name.of.group RET' in group
- buffer (use the tab-completion Luke). Otherwise hit ^ in group buffer,
- this brings you to the server buffer. Now place point (the cursor) over
- the server which carries the group you want, hit `RET', move point to
- the group you want to subscribe to and say `u' to subscribe to it.
- File: gnus, Node: FAQ 3-5, Next: FAQ 3-6, Prev: FAQ 3-4, Up: FAQ 3 - Getting Messages
- Question 3.5
- ............
- Gnus doesn't show all groups / Gnus says I'm not allowed to post on
- this server as well as I am, what's that?
- Answer
- ......
- Some providers allow restricted anonymous access and full access only
- after authorization. To make Gnus send authinfo to those servers append
- force yes
- to the line for those servers in ~/.authinfo.
- File: gnus, Node: FAQ 3-6, Next: FAQ 3-7, Prev: FAQ 3-5, Up: FAQ 3 - Getting Messages
- Question 3.6
- ............
- I want Gnus to fetch news from several servers, is this possible?
- Answer
- ......
- Of course. You can specify more sources for articles in the variable
- gnus-secondary-select-methods. Add something like this in ~/.gnus.el:
- (add-to-list 'gnus-secondary-select-methods
- '(nntp "news.yourSecondProvider.net"))
- (add-to-list 'gnus-secondary-select-methods
- '(nntp "news.yourThirdProvider.net"))
- File: gnus, Node: FAQ 3-7, Next: FAQ 3-8, Prev: FAQ 3-6, Up: FAQ 3 - Getting Messages
- Question 3.7
- ............
- And how about local spool files?
- Answer
- ......
- No problem, this is just one more select method called nnspool, so you
- want this:
- (add-to-list 'gnus-secondary-select-methods '(nnspool ""))
- Or this if you don't want an NNTP Server as primary news source:
- (setq gnus-select-method '(nnspool ""))
- Gnus will look for the spool file in /usr/spool/news, if you want
- something different, change the line above to something like this:
- (add-to-list 'gnus-secondary-select-methods
- '(nnspool ""
- (nnspool-directory "/usr/local/myspoolddir")))
- This sets the spool directory for this server only. You might have
- to specify more stuff like the program used to post articles, see the
- Gnus manual on how to do this.
- File: gnus, Node: FAQ 3-8, Next: FAQ 3-9, Prev: FAQ 3-7, Up: FAQ 3 - Getting Messages
- Question 3.8
- ............
- OK, reading news works now, but I want to be able to read my mail with
- Gnus, too. How to do it?
- Answer
- ......
- That's a bit harder since there are many possible sources for mail,
- many possible ways for storing mail and many different ways for sending
- mail. The most common cases are these: 1: You want to read your mail
- from a pop3 server and send them directly to a SMTP Server 2: Some
- program like fetchmail retrieves your mail and stores it on disk from
- where Gnus shall read it. Outgoing mail is sent by Sendmail, Postfix or
- some other MTA. Sometimes, you even need a combination of the above
- cases.
- However, the first thing to do is to tell Gnus in which way it
- should store the mail, in Gnus terminology which back end to use. Gnus
- supports many different back ends, the most commonly used one is nnml.
- It stores every mail in one file and is therefore quite fast. However
- you might prefer a one file per group approach if your file system has
- problems with many small files, the nnfolder back end is then probably
- the choice for you. To use nnml add the following to ~/.gnus.el:
- (add-to-list 'gnus-secondary-select-methods '(nnml ""))
- As you might have guessed, if you want nnfolder, it's
- (add-to-list 'gnus-secondary-select-methods '(nnfolder ""))
- Now we need to tell Gnus, where to get its mail from. If it's a POP3
- server, then you need something like this:
- (eval-after-load "mail-source"
- '(add-to-list 'mail-sources '(pop :server "pop.YourProvider.net"
- :user "yourUserName"
- :password "yourPassword")))
- Make sure ~/.gnus.el isn't readable to others if you store your
- password there. If you want to read your mail from a traditional spool
- file on your local machine, it's
- (eval-after-load "mail-source"
- '(add-to-list 'mail-sources '(file :path "/path/to/spool/file"))
- If it's a Maildir, with one file per message as used by postfix,
- Qmail and (optionally) fetchmail it's
- (eval-after-load "mail-source"
- '(add-to-list 'mail-sources '(maildir :path "/path/to/Maildir/"
- :subdirs ("cur" "new")))
- And finally if you want to read your mail from several files in one
- directory, for example because procmail already split your mail, it's
- (eval-after-load "mail-source"
- '(add-to-list 'mail-sources
- '(directory :path "/path/to/procmail-dir/"
- :suffix ".prcml")))
- Where :suffix ".prcml" tells Gnus only to use files with the suffix
- .prcml.
- OK, now you only need to tell Gnus how to send mail. If you want to
- send mail via sendmail (or whichever MTA is playing the role of
- sendmail on your system), you don't need to do anything. However, if
- you want to send your mail to an SMTP Server you need the following in
- your ~/.gnus.el
- (setq send-mail-function 'smtpmail-send-it)
- (setq message-send-mail-function 'smtpmail-send-it)
- (setq smtpmail-default-smtp-server "smtp.yourProvider.net")
- File: gnus, Node: FAQ 3-9, Next: FAQ 3-10, Prev: FAQ 3-8, Up: FAQ 3 - Getting Messages
- Question 3.9
- ............
- And what about IMAP?
- Answer
- ......
- There are two ways of using IMAP with Gnus. The first one is to use
- IMAP like POP3, that means Gnus fetches the mail from the IMAP server
- and stores it on disk. If you want to do this (you don't really want to
- do this) add the following to ~/.gnus.el
- (add-to-list 'mail-sources '(imap :server "mail.mycorp.com"
- :user "username"
- :pass "password"
- :stream network
- :authentication login
- :mailbox "INBOX"
- :fetchflag "\\Seen"))
- You might have to tweak the values for stream and/or authentication,
- see the Gnus manual node "Mail Source Specifiers" for possible values.
- If you want to use IMAP the way it's intended, you've got to follow
- a different approach. You've got to add the nnimap back end to your
- select method and give the information about the server there.
- (add-to-list 'gnus-secondary-select-methods
- '(nnimap "Give the baby a name"
- (nnimap-address "imap.yourProvider.net")
- (nnimap-port 143)
- (nnimap-list-pattern "archive.*")))
- Again, you might have to specify how to authenticate to the server
- if Gnus can't guess the correct way, see the Manual Node "IMAP" for
- detailed information.
- File: gnus, Node: FAQ 3-10, Next: FAQ 3-11, Prev: FAQ 3-9, Up: FAQ 3 - Getting Messages
- Question 3.10
- .............
- At the office we use one of those MS Exchange servers, can I use Gnus
- to read my mail from it?
- Answer
- ......
- Offer your administrator a pair of new running shoes for activating
- IMAP on the server and follow the instructions above.
- File: gnus, Node: FAQ 3-11, Prev: FAQ 3-10, Up: FAQ 3 - Getting Messages
- Question 3.11
- .............
- Can I tell Gnus not to delete the mails on the server it retrieves via
- POP3?
- Answer
- ......
- First of all, that's not the way POP3 is intended to work, if you have
- the possibility, you should use the IMAP Protocol if you want your
- messages to stay on the server. Nevertheless there might be situations
- where you need the feature, but sadly Gnus itself has no predefined
- functionality to do so.
- However this is Gnus county so there are possibilities to achieve
- what you want. The easiest way is to get an external program which
- retrieves copies of the mail and stores them on disk, so Gnus can read
- it from there. On Unix systems you could use e.g. fetchmail for this,
- on MS Windows you can use Hamster, an excellent local news and mail
- server.
- The other solution would be, to replace the method Gnus uses to get
- mail from POP3 servers by one which is capable of leaving the mail on
- the server. If you use XEmacs, get the package mail-lib, it includes an
- enhanced pop3.el, look in the file, there's documentation on how to tell
- Gnus to use it and not to delete the retrieved mail. For GNU Emacs look
- for the file epop3.el which can do the same (If you know the home of
- this file, please send me an e-mail). You can also tell Gnus to use an
- external program (e.g. fetchmail) to fetch your mail, see the info node
- "Mail Source Specifiers" in the Gnus manual on how to do it.
- File: gnus, Node: FAQ 4 - Reading messages, Next: FAQ 5 - Composing messages, Prev: FAQ 3 - Getting Messages, Up: Frequently Asked Questions
- 11.9.4 Reading messages
- -----------------------
- * Menu:
- * FAQ 4-1:: When I enter a group, all read messages are gone. How to
- view them again?
- * FAQ 4-2:: How to tell Gnus to show an important message every time
- I enter a group, even when it's read?
- * FAQ 4-3:: How to view the headers of a message?
- * FAQ 4-4:: How to view the raw unformatted message?
- * FAQ 4-5:: How can I change the headers Gnus displays by default at
- the top of the article buffer?
- * FAQ 4-6:: I'd like Gnus NOT to render HTML-mails but show me the
- text part if it's available. How to do it?
- * FAQ 4-7:: Can I use some other browser than w3 to render my
- HTML-mails?
- * FAQ 4-8:: Is there anything I can do to make poorly formatted
- mails more readable?
- * FAQ 4-9:: Is there a way to automatically ignore posts by specific
- authors or with specific words in the subject? And can I
- highlight more interesting ones in some way?
- * FAQ 4-10:: How can I disable threading in some (e.g. mail-) groups,
- or set other variables specific for some groups?
- * FAQ 4-11:: Can I highlight messages written by me and follow-ups to
- those?
- * FAQ 4-12:: The number of total messages in a group which Gnus
- displays in group buffer is by far to high, especially in mail
- groups. Is this a bug?
- * FAQ 4-13:: I don't like the layout of summary and article buffer,
- how to change it? Perhaps even a three pane display?
- * FAQ 4-14:: I don't like the way the Summary buffer looks, how to
- tweak it?
- * FAQ 4-15:: How to split incoming mails in several groups?
- File: gnus, Node: FAQ 4-1, Next: FAQ 4-2, Up: FAQ 4 - Reading messages
- Question 4.1
- ............
- When I enter a group, all read messages are gone. How to view them
- again?
- Answer
- ......
- If you enter the group by saying `RET' in group buffer with point over
- the group, only unread and ticked messages are loaded. Say `C-u RET'
- instead to load all available messages. If you want only the e.g. 300
- newest say `C-u 300 RET'
- Loading only unread messages can be annoying if you have threaded
- view enabled, say
- (setq gnus-fetch-old-headers 'some)
- in ~/.gnus.el to load enough old articles to prevent teared threads,
- replace 'some with t to load all articles (Warning: Both settings
- enlarge the amount of data which is fetched when you enter a group and
- slow down the process of entering a group).
- If you already use Gnus 5.10, you can say `/o N' In summary buffer
- to load the last N messages, this feature is not available in 5.8.8
- If you don't want all old messages, but the parent of the message
- you're just reading, you can say `^', if you want to retrieve the whole
- thread the message you're just reading belongs to, `A T' is your friend.
- File: gnus, Node: FAQ 4-2, Next: FAQ 4-3, Prev: FAQ 4-1, Up: FAQ 4 - Reading messages
- Question 4.2
- ............
- How to tell Gnus to show an important message every time I enter a
- group, even when it's read?
- Answer
- ......
- You can tick important messages. To do this hit `u' while point is in
- summary buffer over the message. When you want to remove the mark, hit
- either `d' (this deletes the tick mark and set's unread mark) or `M c'
- (which deletes all marks for the message).
- File: gnus, Node: FAQ 4-3, Next: FAQ 4-4, Prev: FAQ 4-2, Up: FAQ 4 - Reading messages
- Question 4.3
- ............
- How to view the headers of a message?
- Answer
- ......
- Say `t' to show all headers, one more `t' hides them again.
- File: gnus, Node: FAQ 4-4, Next: FAQ 4-5, Prev: FAQ 4-3, Up: FAQ 4 - Reading messages
- Question 4.4
- ............
- How to view the raw unformatted message?
- Answer
- ......
- Say `C-u g' to show the raw message `g' returns to normal view.
- File: gnus, Node: FAQ 4-5, Next: FAQ 4-6, Prev: FAQ 4-4, Up: FAQ 4 - Reading messages
- Question 4.5
- ............
- How can I change the headers Gnus displays by default at the top of the
- article buffer?
- Answer
- ......
- The variable gnus-visible-headers controls which headers are shown, its
- value is a regular expression, header lines which match it are shown.
- So if you want author, subject, date, and if the header exists,
- Followup-To and MUA / NUA say this in ~/.gnus.el:
- (setq gnus-visible-headers
- '("^From" "^Subject" "^Date" "^Newsgroups" "^Followup-To"
- "^User-Agent" "^X-Newsreader" "^X-Mailer"))
- File: gnus, Node: FAQ 4-6, Next: FAQ 4-7, Prev: FAQ 4-5, Up: FAQ 4 - Reading messages
- Question 4.6
- ............
- I'd like Gnus NOT to render HTML-mails but show me the text part if
- it's available. How to do it?
- Answer
- ......
- Say
- (eval-after-load "mm-decode"
- '(progn
- (add-to-list 'mm-discouraged-alternatives "text/html")
- (add-to-list 'mm-discouraged-alternatives "text/richtext")))
- in ~/.gnus.el. If you don't want HTML rendered, even if there's no
- text alternative add
- (setq mm-automatic-display (remove "text/html" mm-automatic-display))
- too.
- File: gnus, Node: FAQ 4-7, Next: FAQ 4-8, Prev: FAQ 4-6, Up: FAQ 4 - Reading messages
- Question 4.7
- ............
- Can I use some other browser than w3 to render my HTML-mails?
- Answer
- ......
- Only if you use Gnus 5.10 or younger. In this case you've got the
- choice between w3, w3m, links, lynx and html2text, which one is used
- can be specified in the variable mm-text-html-renderer, so if you want
- links to render your mail say
- (setq mm-text-html-renderer 'links)
- File: gnus, Node: FAQ 4-8, Next: FAQ 4-9, Prev: FAQ 4-7, Up: FAQ 4 - Reading messages
- Question 4.8
- ............
- Is there anything I can do to make poorly formatted mails more readable?
- Answer
- ......
- Gnus offers you several functions to "wash" incoming mail, you can find
- them if you browse through the menu, item Article->Washing. The most
- interesting ones are probably "Wrap long lines" (`W w'), "Decode ROT13"
- (`W r') and "Outlook Deuglify" which repairs the dumb quoting used by
- many users of Microsoft products (`W Y f' gives you full deuglify. See
- `W Y C-h' or have a look at the menus for other deuglifications).
- Outlook deuglify is only available since Gnus 5.10.
- File: gnus, Node: FAQ 4-9, Next: FAQ 4-10, Prev: FAQ 4-8, Up: FAQ 4 - Reading messages
- Question 4.9
- ............
- Is there a way to automatically ignore posts by specific authors or
- with specific words in the subject? And can I highlight more
- interesting ones in some way?
- Answer
- ......
- You want Scoring. Scoring means, that you define rules which assign
- each message an integer value. Depending on the value the message is
- highlighted in summary buffer (if it's high, say +2000) or
- automatically marked read (if the value is low, say -800) or some other
- action happens.
- There are basically three ways of setting up rules which assign the
- scoring-value to messages. The first and easiest way is to set up rules
- based on the article you are just reading. Say you're reading a message
- by a guy who always writes nonsense and you want to ignore his messages
- in the future. Hit `L', to set up a rule which lowers the score. Now
- Gnus asks you which the criteria for lowering the Score shall be. Hit
- `?' twice to see all possibilities, we want `a' which means the author
- (the from header). Now Gnus wants to know which kind of matching we
- want. Hit either `e' for an exact match or `s' for substring-match and
- delete afterwards everything but the name to score down all authors
- with the given name no matter which email address is used. Now you need
- to tell Gnus when to apply the rule and how long it should last, hit
- e.g. `p' to apply the rule now and let it last forever. If you want to
- raise the score instead of lowering it say `I' instead of `L'.
- You can also set up rules by hand. To do this say `V f' in summary
- buffer. Then you are asked for the name of the score file, it's
- name.of.group.SCORE for rules valid in only one group or all.Score for
- rules valid in all groups. See the Gnus manual for the exact syntax,
- basically it's one big list whose elements are lists again. the first
- element of those lists is the header to score on, then one more list
- with what to match, which score to assign, when to expire the rule and
- how to do the matching. If you find me very interesting, you could e.g.
- add the following to your all.Score:
- (("references" ("hschmi22.userfqdn.rz-online.de" 500 nil s))
- ("message-id" ("hschmi22.userfqdn.rz-online.de" 999 nil s)))
- This would add 999 to the score of messages written by me and 500 to
- the score of messages which are a (possibly indirect) answer to a
- message written by me. Of course nobody with a sane mind would do this
- :-)
- The third alternative is adaptive scoring. This means Gnus watches
- you and tries to find out what you find interesting and what annoying
- and sets up rules which reflect this. Adaptive scoring can be a huge
- help when reading high traffic groups. If you want to activate adaptive
- scoring say
- (setq gnus-use-adaptive-scoring t)
- in ~/.gnus.el.
- File: gnus, Node: FAQ 4-10, Next: FAQ 4-11, Prev: FAQ 4-9, Up: FAQ 4 - Reading messages
- Question 4.10
- .............
- How can I disable threading in some (e.g. mail-) groups, or set other
- variables specific for some groups?
- Answer
- ......
- While in group buffer move point over the group and hit `G c', this
- opens a buffer where you can set options for the group. At the bottom
- of the buffer you'll find an item that allows you to set variables
- locally for the group. To disable threading enter gnus-show-threads as
- name of variable and nil as value. Hit button done at the top of the
- buffer when you're ready.
- File: gnus, Node: FAQ 4-11, Next: FAQ 4-12, Prev: FAQ 4-10, Up: FAQ 4 - Reading messages
- Question 4.11
- .............
- Can I highlight messages written by me and follow-ups to those?
- Answer
- ......
- Stop those "Can I ..." questions, the answer is always yes in Gnus
- Country :-). It's a three step process: First we make faces
- (specifications of how summary-line shall look like) for those
- postings, then we'll give them some special score and finally we'll
- tell Gnus to use the new faces.
- File: gnus, Node: FAQ 4-12, Next: FAQ 4-13, Prev: FAQ 4-11, Up: FAQ 4 - Reading messages
- Question 4.12
- .............
- The number of total messages in a group which Gnus displays in group
- buffer is by far to high, especially in mail groups. Is this a bug?
- Answer
- ......
- No, that's a matter of design of Gnus, fixing this would mean
- reimplementation of major parts of Gnus' back ends. Gnus thinks
- "highest-article-number - lowest-article-number =
- total-number-of-articles". This works OK for Usenet groups, but if you
- delete and move many messages in mail groups, this fails. To cure the
- symptom, enter the group via `C-u RET' (this makes Gnus get all
- messages), then hit `M P b' to mark all messages and then say `B m
- name.of.group' to move all messages to the group they have been in
- before, they get new message numbers in this process and the count is
- right again (until you delete and move your mail to other groups again).
- File: gnus, Node: FAQ 4-13, Next: FAQ 4-14, Prev: FAQ 4-12, Up: FAQ 4 - Reading messages
- Question 4.13
- .............
- I don't like the layout of summary and article buffer, how to change
- it? Perhaps even a three pane display?
- Answer
- ......
- You can control the windows configuration by calling the function
- gnus-add-configuration. The syntax is a bit complicated but explained
- very well in the manual node "Window Layout". Some popular examples:
- Instead 25% summary 75% article buffer 35% summary and 65% article
- (the 1.0 for article means "take the remaining space"):
- (gnus-add-configuration
- '(article (vertical 1.0 (summary .35 point) (article 1.0))))
- A three pane layout, Group buffer on the left, summary buffer
- top-right, article buffer bottom-right:
- (gnus-add-configuration
- '(article
- (horizontal 1.0
- (vertical 25
- (group 1.0))
- (vertical 1.0
- (summary 0.25 point)
- (article 1.0)))))
- (gnus-add-configuration
- '(summary
- (horizontal 1.0
- (vertical 25
- (group 1.0))
- (vertical 1.0
- (summary 1.0 point)))))
- File: gnus, Node: FAQ 4-14, Next: FAQ 4-15, Prev: FAQ 4-13, Up: FAQ 4 - Reading messages
- Question 4.14
- .............
- I don't like the way the Summary buffer looks, how to tweak it?
- Answer
- ......
- You've got to play around with the variable gnus-summary-line-format.
- Its value is a string of symbols which stand for things like author,
- date, subject etc. A list of the available specifiers can be found in
- the manual node "Summary Buffer Lines" and the often forgotten node
- "Formatting Variables" and its sub-nodes. There you'll find useful
- things like positioning the cursor and tabulators which allow you a
- summary in table form, but sadly hard tabulators are broken in 5.8.8.
- Since 5.10, Gnus offers you some very nice new specifiers, e.g. %B
- which draws a thread-tree and %&user-date which gives you a date where
- the details are dependent of the articles age. Here's an example which
- uses both:
- (setq gnus-summary-line-format ":%U%R %B %s %-60=|%4L |%-20,20f |%&user-date; \n")
- resulting in:
- :O Re: [Richard Stallman] rfc2047.el | 13 |Lars Magne Ingebrigt |Sat 23:06
- :O Re: Revival of the ding-patches list | 13 |Lars Magne Ingebrigt |Sat 23:12
- :R > Re: Find correct list of articles for a gro| 25 |Lars Magne Ingebrigt |Sat 23:16
- :O \-> ... | 21 |Kai Grossjohann | 0:01
- :R > Re: Cry for help: deuglify.el - moving stuf| 28 |Lars Magne Ingebrigt |Sat 23:34
- :O \-> ... | 115 |Raymond Scholz | 1:24
- :O \-> ... | 19 |Lars Magne Ingebrigt |15:33
- :O Slow mailing list | 13 |Lars Magne Ingebrigt |Sat 23:49
- :O Re: `@' mark not documented | 13 |Lars Magne Ingebrigt |Sat 23:50
- :R > Re: Gnus still doesn't count messages prope| 23 |Lars Magne Ingebrigt |Sat 23:57
- :O \-> ... | 18 |Kai Grossjohann | 0:35
- :O \-> ... | 13 |Lars Magne Ingebrigt | 0:56
- File: gnus, Node: FAQ 4-15, Prev: FAQ 4-14, Up: FAQ 4 - Reading messages
- Question 4.15
- .............
- How to split incoming mails in several groups?
- Answer
- ......
- Gnus offers two possibilities for splitting mail, the easy
- nnmail-split-methods and the more powerful Fancy Mail Splitting. I'll
- only talk about the first one, refer to the manual, node "Fancy Mail
- Splitting" for the latter.
- The value of nnmail-split-methods is a list, each element is a list
- which stands for a splitting rule. Each rule has the form "group where
- matching articles should go to", "regular expression which has to be
- matched", the first rule which matches wins. The last rule must always
- be a general rule (regular expression .*) which denotes where articles
- should go which don't match any other rule. If the folder doesn't exist
- yet, it will be created as soon as an article lands there. By default
- the mail will be send to all groups whose rules match. If you don't
- want that (you probably don't want), say
- (setq nnmail-crosspost nil)
- in ~/.gnus.el.
- An example might be better than thousand words, so here's my
- nnmail-split-methods. Note that I send duplicates in a special group
- and that the default group is spam, since I filter all mails out which
- are from some list I'm subscribed to or which are addressed directly to
- me before. Those rules kill about 80% of the Spam which reaches me
- (Email addresses are changed to prevent spammers from using them):
- (setq nnmail-split-methods
- '(("duplicates" "^Gnus-Warning:.*duplicate")
- ("XEmacs-NT" "^\\(To:\\|CC:\\).*localpart@xemacs.invalid.*")
- ("Gnus-Tut" "^\\(To:\\|CC:\\).*localpart@socha.invalid.*")
- ("tcsh" "^\\(To:\\|CC:\\).*localpart@mx.gw.invalid.*")
- ("BAfH" "^\\(To:\\|CC:\\).*localpart@.*uni-muenchen.invalid.*")
- ("Hamster-src" "^\\(CC:\\|To:\\).*hamster-sourcen@yahoogroups.\\(de\\|com\\).*")
- ("Tagesschau" "^From: tagesschau <localpart@www.tagesschau.invalid>$")
- ("Replies" "^\\(CC:\\|To:\\).*localpart@Frank-Schmitt.invalid.*")
- ("EK" "^From:.*\\(localpart@privateprovider.invalid\\|localpart@workplace.invalid\\).*")
- ("Spam" "^Content-Type:.*\\(ks_c_5601-1987\\|EUC-KR\\|big5\\|iso-2022-jp\\).*")
- ("Spam" "^Subject:.*\\(This really work\\|XINGA\\|ADV:\\|XXX\\|adult\\|sex\\).*")
- ("Spam" "^Subject:.*\\(\=\?ks_c_5601-1987\?\\|\=\?euc-kr\?\\|\=\?big5\?\\).*")
- ("Spam" "^X-Mailer:\\(.*BulkMailer.*\\|.*MIME::Lite.*\\|\\)")
- ("Spam" "^X-Mailer:\\(.*CyberCreek Avalanche\\|.*http\:\/\/GetResponse\.com\\)")
- ("Spam" "^From:.*\\(verizon\.net\\|prontomail\.com\\|money\\|ConsumerDirect\\).*")
- ("Spam" "^Delivered-To: GMX delivery to spamtrap@gmx.invalid$")
- ("Spam" "^Received: from link2buy.com")
- ("Spam" "^CC: .*azzrael@t-online.invalid")
- ("Spam" "^X-Mailer-Version: 1.50 BETA")
- ("Uni" "^\\(CC:\\|To:\\).*localpart@uni-koblenz.invalid.*")
- ("Inbox" "^\\(CC:\\|To:\\).*\\(my\ name\\|address@one.invalid\\|address@two.invalid\\)")
- ("Spam" "")))
- File: gnus, Node: FAQ 5 - Composing messages, Next: FAQ 6 - Old messages, Prev: FAQ 4 - Reading messages, Up: Frequently Asked Questions
- 11.9.5 Composing messages
- -------------------------
- * Menu:
- * FAQ 5-1:: What are the basic commands I need to know for sending
- mail and postings?
- * FAQ 5-2:: How to enable automatic word-wrap when composing
- messages?
- * FAQ 5-3:: How to set stuff like From, Organization, Reply-To,
- signature...?
- * FAQ 5-4:: Can I set things like From, Signature etc group based on
- the group I post too?
- * FAQ 5-5:: Is there a spell-checker? Perhaps even on-the-fly
- spell-checking?
- * FAQ 5-6:: Can I set the dictionary based on the group I'm posting
- to?
- * FAQ 5-7:: Is there some kind of address-book, so I needn't
- remember all those email addresses?
- * FAQ 5-8:: Sometimes I see little images at the top of article
- buffer. What's that and how can I send one with my postings,
- too?
- * FAQ 5-9:: Sometimes I accidentally hit r instead of f in
- newsgroups. Can Gnus warn me, when I'm replying by mail in
- newsgroups?
- * FAQ 5-10:: How to tell Gnus not to generate a sender header?
- * FAQ 5-11:: I want Gnus to locally store copies of my send mail and
- news, how to do it?
- * FAQ 5-12:: I want Gnus to kill the buffer after successful sending
- instead of keeping it alive as "Sent mail to...", how to do it?
- * FAQ 5-13:: People tell me my Message-IDs are not correct, why
- aren't they and how to fix it?
- File: gnus, Node: FAQ 5-1, Next: FAQ 5-2, Up: FAQ 5 - Composing messages
- Question 5.1
- ............
- What are the basic commands I need to know for sending mail and
- postings?
- Answer
- ......
- To start composing a new mail hit `m' either in Group or Summary
- buffer, for a posting, it's either `a' in Group buffer and filling the
- Newsgroups header manually or `a' in the Summary buffer of the group
- where the posting shall be send to. Replying by mail is `r' if you
- don't want to cite the author, or import the cited text manually and
- `R' to cite the text of the original message. For a follow up to a
- newsgroup, it's `f' and `F' (analogously to `r' and `R').
- Enter new headers above the line saying "-text follows this line-",
- enter the text below the line. When ready hit `C-c C-c', to send the
- message, if you want to finish it later hit `C-c C-d' to save it in the
- drafts group, where you can start editing it again by saying `D e'.
- File: gnus, Node: FAQ 5-2, Next: FAQ 5-3, Prev: FAQ 5-1, Up: FAQ 5 - Composing messages
- Question 5.2
- ............
- How to enable automatic word-wrap when composing messages?
- Answer
- ......
- Starting from No Gnus, automatic word-wrap is already enabled by
- default, see the variable message-fill-column.
- For other versions of Gnus, say
- (unless (boundp 'message-fill-column)
- (add-hook 'message-mode-hook
- (lambda ()
- (setq fill-column 72)
- (turn-on-auto-fill))))
- in ~/.gnus.el.
- You can reformat a paragraph by hitting `M-q' (as usual).
- File: gnus, Node: FAQ 5-3, Next: FAQ 5-4, Prev: FAQ 5-2, Up: FAQ 5 - Composing messages
- Question 5.3
- ............
- How to set stuff like From, Organization, Reply-To, signature...?
- Answer
- ......
- There are other ways, but you should use posting styles for this. (See
- below why). This example should make the syntax clear:
- (setq gnus-posting-styles
- '((".*"
- (name "Frank Schmitt")
- (address "me@there.invalid")
- (organization "Hamme net, kren mer och nimmi")
- (signature-file "~/.signature")
- ("X-SampleHeader" "foobar")
- (eval (setq some-variable "Foo bar")))))
- The ".*" means that this settings are the default ones (see below),
- valid values for the first element of the following lists are
- signature, signature-file, organization, address, name or body. The
- attribute name can also be a string. In that case, this will be used as
- a header name, and the value will be inserted in the headers of the
- article; if the value is `nil', the header name will be removed. You
- can also say (eval (foo bar)), then the function foo will be evaluated
- with argument bar and the result will be thrown away.
- File: gnus, Node: FAQ 5-4, Next: FAQ 5-5, Prev: FAQ 5-3, Up: FAQ 5 - Composing messages
- Question 5.4
- ............
- Can I set things like From, Signature etc group based on the group I
- post too?
- Answer
- ......
- That's the strength of posting styles. Before, we used ".*" to set the
- default for all groups. You can use a regexp like "^gmane" and the
- following settings are only applied to postings you send to the gmane
- hierarchy, use ".*binaries" instead and they will be applied to postings
- send to groups containing the string binaries in their name etc.
- You can instead of specifying a regexp specify a function which is
- evaluated, only if it returns true, the corresponding settings take
- effect. Two interesting candidates for this are message-news-p which
- returns t if the current Group is a newsgroup and the corresponding
- message-mail-p.
- Note that all forms that match are applied, that means in the
- example below, when I post to gmane.mail.spam.spamassassin.general, the
- settings under ".*" are applied and the settings under message-news-p
- and those under "^gmane" and those under
- "^gmane\\.mail\\.spam\\.spamassassin\\.general$". Because of this put
- general settings at the top and specific ones at the bottom.
- (setq gnus-posting-styles
- '((".*" ;;default
- (name "Frank Schmitt")
- (organization "Hamme net, kren mer och nimmi")
- (signature-file "~/.signature"))
- ((message-news-p) ;;Usenet news?
- (address "mySpamTrap@Frank-Schmitt.invalid")
- (reply-to "hereRealRepliesOnlyPlease@Frank-Schmitt.invalid"))
- ((message-mail-p) ;;mail?
- (address "usedForMails@Frank-Schmitt.invalid"))
- ("^gmane" ;;this is mail, too in fact
- (address "usedForMails@Frank-Schmitt.invalid")
- (reply-to nil))
- ("^gmane\\.mail\\.spam\\.spamassassin\\.general$"
- (eval (set (make-local-variable 'message-sendmail-envelope-from)
- "Azzrael@rz-online.de")))))
- File: gnus, Node: FAQ 5-5, Next: FAQ 5-6, Prev: FAQ 5-4, Up: FAQ 5 - Composing messages
- Question 5.5
- ............
- Is there a spell-checker? Perhaps even on-the-fly spell-checking?
- Answer
- ......
- You can use ispell.el to spell-check stuff in Emacs. So the first thing
- to do is to make sure that you've got either ispell
- (http://fmg-www.cs.ucla.edu/fmg-members/geoff/ispell.html) or aspell
- (http://aspell.sourceforge.net/) installed and in your Path. Then you
- need ispell.el (http://www.kdstevens.com/~stevens/ispell-page.html) and
- for on-the-fly spell-checking flyspell.el
- (http://www-sop.inria.fr/members/Manuel.Serrano/flyspell/flyspell.html).
- Ispell.el is shipped with Emacs and available through the XEmacs
- package system, flyspell.el is shipped with Emacs and part of XEmacs
- text-modes package which is available through the package system, so
- there should be no need to install them manually.
- Ispell.el assumes you use ispell, if you choose aspell say
- (setq ispell-program-name "aspell")
- in your Emacs configuration file.
- If you want your outgoing messages to be spell-checked, say
- (add-hook 'message-send-hook 'ispell-message)
- In your ~/.gnus.el, if you prefer on-the-fly spell-checking say
- (add-hook 'message-mode-hook (lambda () (flyspell-mode 1)))
- File: gnus, Node: FAQ 5-6, Next: FAQ 5-7, Prev: FAQ 5-5, Up: FAQ 5 - Composing messages
- Question 5.6
- ............
- Can I set the dictionary based on the group I'm posting to?
- Answer
- ......
- Yes, say something like
- (add-hook 'gnus-select-group-hook
- (lambda ()
- (cond
- ((string-match
- "^de\\." (gnus-group-real-name gnus-newsgroup-name))
- (ispell-change-dictionary "deutsch8"))
- (t
- (ispell-change-dictionary "english")))))
- in ~/.gnus.el. Change "^de\\." and "deutsch8" to something that
- suits your needs.
- File: gnus, Node: FAQ 5-7, Next: FAQ 5-8, Prev: FAQ 5-6, Up: FAQ 5 - Composing messages
- Question 5.7
- ............
- Is there some kind of address-book, so I needn't remember all those
- email addresses?
- Answer
- ......
- There's an very basic solution for this, mail aliases. You can store
- your mail addresses in a ~/.mailrc file using a simple alias syntax:
- alias al "Al <al@english-heritage.invalid>"
- Then typing your alias (followed by a space or punctuation
- character) on a To: or Cc: line in the message buffer will cause Gnus
- to insert the full address for you. See the node "Mail Aliases" in
- Message (not Gnus) manual for details.
- However, what you really want is the Insidious Big Brother Database
- bbdb. Get it through the XEmacs package system or from bbdb's homepage
- (http://bbdb.sourceforge.net/). Now place the following in ~/.gnus.el,
- to activate bbdb for Gnus:
- (require 'bbdb)
- (bbdb-initialize 'gnus 'message)
- Now you probably want some general bbdb configuration, place them in
- ~/.emacs:
- (require 'bbdb)
- ;;If you don't live in Northern America, you should disable the
- ;;syntax check for telephone numbers by saying
- (setq bbdb-north-american-phone-numbers-p nil)
- ;;Tell bbdb about your email address:
- (setq bbdb-user-mail-names
- (regexp-opt '("Your.Email@here.invalid"
- "Your.other@mail.there.invalid")))
- ;;cycling while completing email addresses
- (setq bbdb-complete-name-allow-cycling t)
- ;;No popup-buffers
- (setq bbdb-use-pop-up nil)
- Now you should be ready to go. Say `M-x bbdb RET RET' to open a bbdb
- buffer showing all entries. Say `c' to create a new entry, `b' to
- search your BBDB and `C-o' to add a new field to an entry. If you want
- to add a sender to the BBDB you can also just hit `:' on the posting in
- the summary buffer and you are done. When you now compose a new mail,
- hit `TAB' to cycle through know recipients.
- File: gnus, Node: FAQ 5-8, Next: FAQ 5-9, Prev: FAQ 5-7, Up: FAQ 5 - Composing messages
- Question 5.8
- ............
- Sometimes I see little images at the top of article buffer. What's that
- and how can I send one with my postings, too?
- Answer
- ......
- Those images are called X-Faces. They are 48*48 pixel b/w pictures,
- encoded in a header line. If you want to include one in your posts,
- you've got to convert some image to a X-Face. So fire up some image
- manipulation program (say Gimp), open the image you want to include,
- cut out the relevant part, reduce color depth to 1 bit, resize to 48*48
- and save as bitmap. Now you should get the compface package from this
- site (ftp://ftp.cs.indiana.edu:/pub/faces/). and create the actual
- X-face by saying
- cat file.xbm | xbm2ikon | compface > file.face
- cat file.face | sed 's/\\/\\\\/g;s/\"/\\\"/g;' > file.face.quoted
- If you can't use compface, there's an online X-face converter at
- `http://www.dairiki.org/xface/'. If you use MS Windows, you could also
- use the WinFace program from `http://www.xs4all.nl/~walterln/winface/'.
- Now you only have to tell Gnus to include the X-face in your postings
- by saying
- (setq message-default-headers
- (with-temp-buffer
- (insert "X-Face: ")
- (insert-file-contents "~/.xface")
- (buffer-string)))
- in ~/.gnus.el. If you use Gnus 5.10, you can simply add an entry
- (x-face-file "~/.xface")
- to gnus-posting-styles.
- File: gnus, Node: FAQ 5-9, Next: FAQ 5-10, Prev: FAQ 5-8, Up: FAQ 5 - Composing messages
- Question 5.9
- ............
- Sometimes I accidentally hit r instead of f in newsgroups. Can Gnus
- warn me, when I'm replying by mail in newsgroups?
- Answer
- ......
- Put this in ~/.gnus.el:
- (setq gnus-confirm-mail-reply-to-news t)
- if you already use Gnus 5.10, if you still use 5.8.8 or 5.9 try this
- instead:
- (eval-after-load "gnus-msg"
- '(unless (boundp 'gnus-confirm-mail-reply-to-news)
- (defadvice gnus-summary-reply (around reply-in-news activate)
- "Request confirmation when replying to news."
- (interactive)
- (when (or (not (gnus-news-group-p gnus-newsgroup-name))
- (y-or-n-p "Really reply by mail to article author? "))
- ad-do-it))))
- File: gnus, Node: FAQ 5-10, Next: FAQ 5-11, Prev: FAQ 5-9, Up: FAQ 5 - Composing messages
- Question 5.10
- .............
- How to tell Gnus not to generate a sender header?
- Answer
- ......
- Since 5.10 Gnus doesn't generate a sender header by default. For older
- Gnus' try this in ~/.gnus.el:
- (eval-after-load "message"
- '(add-to-list 'message-syntax-checks '(sender . disabled)))
- File: gnus, Node: FAQ 5-11, Next: FAQ 5-12, Prev: FAQ 5-10, Up: FAQ 5 - Composing messages
- Question 5.11
- .............
- I want Gnus to locally store copies of my send mail and news, how to do
- it?
- Answer
- ......
- You must set the variable gnus-message-archive-group to do this. You
- can set it to a string giving the name of the group where the copies
- shall go or like in the example below use a function which is evaluated
- and which returns the group to use.
- (setq gnus-message-archive-group
- '((if (message-news-p)
- "nnml:Send-News"
- "nnml:Send-Mail")))
- File: gnus, Node: FAQ 5-12, Next: FAQ 5-13, Prev: FAQ 5-11, Up: FAQ 5 - Composing messages
- Question 5.12
- .............
- I want Gnus to kill the buffer after successful sending instead of
- keeping it alive as "Sent mail to...", how to do it?
- Answer
- ......
- Add this to your ~/.gnus:
- (setq message-kill-buffer-on-exit t)
- File: gnus, Node: FAQ 5-13, Prev: FAQ 5-12, Up: FAQ 5 - Composing messages
- Question 5.13
- .............
- People tell me my Message-IDs are not correct, why aren't they and how
- to fix it?
- Answer
- ......
- The message-ID is an unique identifier for messages you send. To make
- it unique, Gnus need to know which machine name to put after the "@".
- If the name of the machine where Gnus is running isn't suitable (it
- probably isn't at most private machines) you can tell Gnus what to use
- by saying:
- (setq message-user-fqdn "yourmachine.yourdomain.tld")
- in ~/.gnus.el. If you use Gnus 5.9 or earlier, you can use this
- instead (works for newer versions as well):
- (eval-after-load "message"
- '(let ((fqdn "yourmachine.yourdomain.tld"));; <-- Edit this!
- (if (boundp 'message-user-fqdn)
- (setq message-user-fqdn fqdn)
- (gnus-message 1 "Redefining `message-make-fqdn'.")
- (defun message-make-fqdn ()
- "Return user's fully qualified domain name."
- fqdn))))
- If you have no idea what to insert for "yourmachine.yourdomain.tld",
- you've got several choices. You can either ask your provider if he
- allows you to use something like yourUserName.userfqdn.provider.net, or
- you can use somethingUnique.yourdomain.tld if you own the domain
- yourdomain.tld, or you can register at a service which gives private
- users a FQDN for free.
- Finally you can tell Gnus not to generate a Message-ID for News at
- all (and letting the server do the job) by saying
- (setq message-required-news-headers
- (remove' Message-ID message-required-news-headers))
- you can also tell Gnus not to generate Message-IDs for mail by saying
- (setq message-required-mail-headers
- (remove' Message-ID message-required-mail-headers))
- , however some mail servers don't generate proper Message-IDs, too,
- so test if your Mail Server behaves correctly by sending yourself a
- Mail and looking at the Message-ID.
- File: gnus, Node: FAQ 6 - Old messages, Next: FAQ 7 - Gnus in a dial-up environment, Prev: FAQ 5 - Composing messages, Up: Frequently Asked Questions
- 11.9.6 Old messages
- -------------------
- * Menu:
- * FAQ 6-1:: How to import my old mail into Gnus?
- * FAQ 6-2:: How to archive interesting messages?
- * FAQ 6-3:: How to search for a specific message?
- * FAQ 6-4:: How to get rid of old unwanted mail?
- * FAQ 6-5:: I want that all read messages are expired (at least in
- some groups). How to do it?
- * FAQ 6-6:: I don't want expiration to delete my mails but to move
- them to another group.
- File: gnus, Node: FAQ 6-1, Next: FAQ 6-2, Up: FAQ 6 - Old messages
- Question 6.1
- ............
- How to import my old mail into Gnus?
- Answer
- ......
- The easiest way is to tell your old mail program to export the messages
- in mbox format. Most Unix mailers are able to do this, if you come from
- the MS Windows world, you may find tools at
- `http://mbx2mbox.sourceforge.net/'.
- Now you've got to import this mbox file into Gnus. To do this,
- create a nndoc group based on the mbox file by saying `G f
- /path/file.mbox RET' in Group buffer. You now have read-only access to
- your mail. If you want to import the messages to your normal Gnus mail
- groups hierarchy, enter the nndoc group you've just created by saying
- `C-u RET' (thus making sure all messages are retrieved), mark all
- messages by saying `M P b' and either copy them to the desired group by
- saying `B c name.of.group RET' or send them through
- nnmail-split-methods (respool them) by saying `B r'.
- File: gnus, Node: FAQ 6-2, Next: FAQ 6-3, Prev: FAQ 6-1, Up: FAQ 6 - Old messages
- Question 6.2
- ............
- How to archive interesting messages?
- Answer
- ......
- If you stumble across an interesting message, say in gnu.emacs.gnus and
- want to archive it there are several solutions. The first and easiest
- is to save it to a file by saying `O f'. However, wouldn't it be much
- more convenient to have more direct access to the archived message from
- Gnus? If you say yes, put this snippet by Frank Haun
- <pille3003@fhaun.de> in ~/.gnus.el:
- (defun my-archive-article (&optional n)
- "Copies one or more article(s) to a corresponding `nnml:' group, e.g.
- `gnus.ding' goes to `nnml:1.gnus.ding'. And `nnml:List-gnus.ding' goes
- to `nnml:1.List-gnus-ding'.
- Use process marks or mark a region in the summary buffer to archive
- more then one article."
- (interactive "P")
- (let ((archive-name
- (format
- "nnml:1.%s"
- (if (featurep 'xemacs)
- (replace-in-string gnus-newsgroup-name "^.*:" "")
- (replace-regexp-in-string "^.*:" "" gnus-newsgroup-name)))))
- (gnus-summary-copy-article n archive-name)))
- You can now say `M-x my-archive-article' in summary buffer to
- archive the article under the cursor in a nnml group. (Change nnml to
- your preferred back end)
- Of course you can also make sure the cache is enabled by saying
- (setq gnus-use-cache t)
- then you only have to set either the tick or the dormant mark for
- articles you want to keep, setting the read mark will remove them from
- cache.
- File: gnus, Node: FAQ 6-3, Next: FAQ 6-4, Prev: FAQ 6-2, Up: FAQ 6 - Old messages
- Question 6.3
- ............
- How to search for a specific message?
- Answer
- ......
- There are several ways for this, too. For a posting from a Usenet group
- the easiest solution is probably to ask groups.google.com
- (http://groups.google.com), if you found the posting there, tell Google
- to display the raw message, look for the message-id, and say `M-^
- the@message.id RET' in a summary buffer. Since Gnus 5.10 there's also
- a Gnus interface for groups.google.com which you can call with `G W')
- in group buffer.
- Another idea which works for both mail and news groups is to enter
- the group where the message you are searching is and use the standard
- Emacs search `C-s', it's smart enough to look at articles in collapsed
- threads, too. If you want to search bodies, too try `M-s' instead.
- Further on there are the gnus-summary-limit-to-foo functions, which can
- help you, too.
- Of course you can also use grep to search through your local mail,
- but this is both slow for big archives and inconvenient since you are
- not displaying the found mail in Gnus. Here comes nnir into action.
- Nnir is a front end to search engines like swish-e or swish++ and
- others. You index your mail with one of those search engines and with
- the help of nnir you can search through the indexed mail and generate a
- temporary group with all messages which met your search criteria. If
- this sound cool to you get nnir.el from
- `ftp://ls6-ftp.cs.uni-dortmund.de/pub/src/emacs/' or
- `ftp://ftp.is.informatik.uni-duisburg.de/pub/src/emacs/'. Instructions
- on how to use it are at the top of the file.
- File: gnus, Node: FAQ 6-4, Next: FAQ 6-5, Prev: FAQ 6-3, Up: FAQ 6 - Old messages
- Question 6.4
- ............
- How to get rid of old unwanted mail?
- Answer
- ......
- You can of course just mark the mail you don't need anymore by saying
- `#' with point over the mail and then say `B DEL' to get rid of them
- forever. You could also instead of actually deleting them, send them to
- a junk-group by saying `B m nnml:trash-bin' which you clear from time
- to time, but both are not the intended way in Gnus.
- In Gnus, we let mail expire like news expires on a news server. That
- means you tell Gnus the message is expirable (you tell Gnus "I don't
- need this mail anymore") by saying `E' with point over the mail in
- summary buffer. Now when you leave the group, Gnus looks at all
- messages which you marked as expirable before and if they are old
- enough (default is older than a week) they are deleted.
- File: gnus, Node: FAQ 6-5, Next: FAQ 6-6, Prev: FAQ 6-4, Up: FAQ 6 - Old messages
- Question 6.5
- ............
- I want that all read messages are expired (at least in some groups).
- How to do it?
- Answer
- ......
- If you want all read messages to be expired (e.g. in mailing lists
- where there's an online archive), you've got two choices: auto-expire
- and total-expire. Auto-expire means, that every article which has no
- marks set and is selected for reading is marked as expirable, Gnus hits
- `E' for you every time you read a message. Total-expire follows a
- slightly different approach, here all article where the read mark is
- set are expirable.
- To activate auto-expire, include auto-expire in the Group parameters
- for the group. (Hit `G c' in summary buffer with point over the group
- to change group parameters). For total-expire add total-expire to the
- group-parameters.
- Which method you choose is merely a matter of taste: Auto-expire is
- faster, but it doesn't play together with Adaptive Scoring, so if you
- want to use this feature, you should use total-expire.
- If you want a message to be excluded from expiration in a group
- where total or auto expire is active, set either tick (hit `u') or
- dormant mark (hit `u'), when you use auto-expire, you can also set the
- read mark (hit `d').
- File: gnus, Node: FAQ 6-6, Prev: FAQ 6-5, Up: FAQ 6 - Old messages
- Question 6.6
- ............
- I don't want expiration to delete my mails but to move them to another
- group.
- Answer
- ......
- Say something like this in ~/.gnus.el:
- (setq nnmail-expiry-target "nnml:expired")
- (If you want to change the value of nnmail-expiry-target on a per
- group basis see the question "How can I disable threading in some (e.g.
- mail-) groups, or set other variables specific for some groups?")
- File: gnus, Node: FAQ 7 - Gnus in a dial-up environment, Next: FAQ 8 - Getting help, Prev: FAQ 6 - Old messages, Up: Frequently Asked Questions
- 11.9.7 Gnus in a dial-up environment
- ------------------------------------
- * Menu:
- * FAQ 7-1:: I don't have a permanent connection to the net, how can I
- minimize the time I've got to be connected?
- * FAQ 7-2:: So what was this thing about the Agent?
- * FAQ 7-3:: I want to store article bodies on disk, too. How to do
- it?
- * FAQ 7-4:: How to tell Gnus not to try to send mails / postings
- while I'm offline?
- File: gnus, Node: FAQ 7-1, Next: FAQ 7-2, Up: FAQ 7 - Gnus in a dial-up environment
- Question 7.1
- ............
- I don't have a permanent connection to the net, how can I minimize the
- time I've got to be connected?
- Answer
- ......
- You've got basically two options: Either you use the Gnus Agent (see
- below) for this, or you can install programs which fetch your news and
- mail to your local disk and Gnus reads the stuff from your local
- machine.
- If you want to follow the second approach, you need a program which
- fetches news and offers them to Gnus, a program which does the same for
- mail and a program which receives the mail you write from Gnus and
- sends them when you're online.
- Let's talk about Unix systems first: For the news part, the easiest
- solution is a small nntp server like Leafnode
- (http://www.leafnode.org/) or sn (http://infa.abo.fi/~patrik/sn/), of
- course you can also install a full featured news server like inn
- (http://www.isc.org/products/INN/). Then you want to fetch your Mail,
- popular choices are fetchmail (http://www.catb.org/~esr/fetchmail/) and
- getmail (http://pyropus.ca/software/getmail/). You should tell those
- to write the mail to your disk and Gnus to read it from there. Last but
- not least the mail sending part: This can be done with every MTA like
- sendmail (http://www.sendmail.org/), postfix (http://www.qmail.org/),
- exim (http://www.exim.org/) or qmail (http://www.qmail.org/).
- On windows boxes I'd vote for Hamster (http://www.tglsoft.de/), it's
- a small freeware, open-source program which fetches your mail and news
- from remote servers and offers them to Gnus (or any other mail and/or
- news reader) via nntp respectively POP3 or IMAP. It also includes a smtp
- server for receiving mails from Gnus.
- File: gnus, Node: FAQ 7-2, Next: FAQ 7-3, Prev: FAQ 7-1, Up: FAQ 7 - Gnus in a dial-up environment
- Question 7.2
- ............
- So what was this thing about the Agent?
- Answer
- ......
- The Gnus agent is part of Gnus, it allows you to fetch mail and news
- and store them on disk for reading them later when you're offline. It
- kind of mimics offline newsreaders like e.g. Forte Agent. If you want
- to use the Agent place the following in ~/.gnus.el if you are still
- using 5.8.8 or 5.9 (it's the default since 5.10):
- (setq gnus-agent t)
- Now you've got to select the servers whose groups can be stored
- locally. To do this, open the server buffer (that is press `^' while
- in the group buffer). Now select a server by moving point to the line
- naming that server. Finally, agentize the server by typing `J a'. If
- you make a mistake, or change your mind, you can undo this action by
- typing `J r'. When you're done, type 'q' to return to the group buffer.
- Now the next time you enter a group on a agentized server, the headers
- will be stored on disk and read from there the next time you enter the
- group.
- File: gnus, Node: FAQ 7-3, Next: FAQ 7-4, Prev: FAQ 7-2, Up: FAQ 7 - Gnus in a dial-up environment
- Question 7.3
- ............
- I want to store article bodies on disk, too. How to do it?
- Answer
- ......
- You can tell the agent to automatically fetch the bodies of articles
- which fulfill certain predicates, this is done in a special buffer
- which can be reached by saying `J c' in group buffer. Please refer to
- the documentation for information which predicates are possible and how
- exactly to do it.
- Further on you can tell the agent manually which articles to store
- on disk. There are two ways to do this: Number one: In the summary
- buffer, process mark a set of articles that shall be stored in the
- agent by saying `#' with point over the article and then type `J s'. The
- other possibility is to set, again in the summary buffer, downloadable
- (%) marks for the articles you want by typing `@' with point over the
- article and then typing `J u'. What's the difference? Well, process
- marks are erased as soon as you exit the summary buffer while
- downloadable marks are permanent. You can actually set downloadable
- marks in several groups then use fetch session ('J s' in the GROUP
- buffer) to fetch all of those articles. The only downside is that
- fetch session also fetches all of the headers for every selected group
- on an agentized server. Depending on the volume of headers, the initial
- fetch session could take hours.
- File: gnus, Node: FAQ 7-4, Prev: FAQ 7-3, Up: FAQ 7 - Gnus in a dial-up environment
- Question 7.4
- ............
- How to tell Gnus not to try to send mails / postings while I'm offline?
- Answer
- ......
- All you've got to do is to tell Gnus when you are online (plugged) and
- when you are offline (unplugged), the rest works automatically. You can
- toggle plugged/unplugged state by saying `J j' in group buffer. To
- start Gnus unplugged say `M-x gnus-unplugged' instead of `M-x gnus'.
- Note that for this to work, the agent must be active.
- File: gnus, Node: FAQ 8 - Getting help, Next: FAQ 9 - Tuning Gnus, Prev: FAQ 7 - Gnus in a dial-up environment, Up: Frequently Asked Questions
- 11.9.8 Getting help
- -------------------
- * Menu:
- * FAQ 8-1:: How to find information and help inside Emacs?
- * FAQ 8-2:: I can't find anything in the Gnus manual about X (e.g.
- attachments, PGP, MIME...), is it not documented?
- * FAQ 8-3:: Which websites should I know?
- * FAQ 8-4:: Which mailing lists and newsgroups are there?
- * FAQ 8-5:: Where to report bugs?
- * FAQ 8-6:: I need real-time help, where to find it?
- File: gnus, Node: FAQ 8-1, Next: FAQ 8-2, Up: FAQ 8 - Getting help
- Question 8.1
- ............
- How to find information and help inside Emacs?
- Answer
- ......
- The first stop should be the Gnus manual (Say `C-h i d m Gnus RET' to
- start the Gnus manual, then walk through the menus or do a full-text
- search with `s'). Then there are the general Emacs help commands
- starting with C-h, type `C-h ? ?' to get a list of all available help
- commands and their meaning. Finally `M-x apropos-command' lets you
- search through all available functions and `M-x apropos' searches the
- bound variables.
- File: gnus, Node: FAQ 8-2, Next: FAQ 8-3, Prev: FAQ 8-1, Up: FAQ 8 - Getting help
- Question 8.2
- ............
- I can't find anything in the Gnus manual about X (e.g. attachments,
- PGP, MIME...), is it not documented?
- Answer
- ......
- There's not only the Gnus manual but also the manuals for message,
- emacs-mime, sieve, EasyPG Assistant, and pgg. Those packages are
- distributed with Gnus and used by Gnus but aren't really part of core
- Gnus, so they are documented in different info files, you should have a
- look in those manuals, too.
- File: gnus, Node: FAQ 8-3, Next: FAQ 8-4, Prev: FAQ 8-2, Up: FAQ 8 - Getting help
- Question 8.3
- ............
- Which websites should I know?
- Answer
- ......
- The most important one is the official Gnus website
- (http://www.gnus.org).
- Tell me about other sites which are interesting.
- File: gnus, Node: FAQ 8-4, Next: FAQ 8-5, Prev: FAQ 8-3, Up: FAQ 8 - Getting help
- Question 8.4
- ............
- Which mailing lists and newsgroups are there?
- Answer
- ......
- There's the newsgroup gnu.emacs.gnus (also available as
- gmane.emacs.gnus.user (http://dir.gmane.org/gmane.emacs.gnus.user))
- which deals with general Gnus questions. If you have questions about
- development versions of Gnus, you should better ask on the ding mailing
- list, see below.
- If you want to stay in the big8, news.software.readers is also read
- by some Gnus users (but chances for qualified help are much better in
- the above groups). If you speak German, there's de.comm.software.gnus.
- The ding mailing list (ding@gnus.org) deals with development of
- Gnus. You can read the ding list via NNTP, too under the name
- gmane.emacs.gnus.general
- (http://dir.gmane.org/gmane.emacs.gnus.general) from news.gmane.org.
- File: gnus, Node: FAQ 8-5, Next: FAQ 8-6, Prev: FAQ 8-4, Up: FAQ 8 - Getting help
- Question 8.5
- ............
- Where to report bugs?
- Answer
- ......
- Say `M-x gnus-bug', this will start a message to the gnus bug mailing
- list <bugs@gnus.org> including information about your environment which
- make it easier to help you.
- File: gnus, Node: FAQ 8-6, Prev: FAQ 8-5, Up: FAQ 8 - Getting help
- Question 8.6
- ............
- I need real-time help, where to find it?
- Answer
- ......
- Point your IRC client to irc.freenode.net, channel #gnus.
- File: gnus, Node: FAQ 9 - Tuning Gnus, Next: FAQ - Glossary, Prev: FAQ 8 - Getting help, Up: Frequently Asked Questions
- 11.9.9 Tuning Gnus
- ------------------
- * Menu:
- * FAQ 9-1:: Starting Gnus is really slow, how to speed it up?
- * FAQ 9-2:: How to speed up the process of entering a group?
- * FAQ 9-3:: Sending mail becomes slower and slower, what's up?
- File: gnus, Node: FAQ 9-1, Next: FAQ 9-2, Up: FAQ 9 - Tuning Gnus
- Question 9.1
- ............
- Starting Gnus is really slow, how to speed it up?
- Answer
- ......
- The reason for this could be the way Gnus reads its active file, see
- the node "The Active File" in the Gnus manual for things you might try
- to speed the process up. An other idea would be to byte compile your
- ~/.gnus.el (say `M-x byte-compile-file RET ~/.gnus.el RET' to do it).
- Finally, if you have require statements in your .gnus, you could
- replace them with eval-after-load, which loads the stuff not at startup
- time, but when it's needed. Say you've got this in your ~/.gnus.el:
- (require 'message)
- (add-to-list 'message-syntax-checks '(sender . disabled))
- then as soon as you start Gnus, message.el is loaded. If you replace
- it with
- (eval-after-load "message"
- '(add-to-list 'message-syntax-checks '(sender . disabled)))
- it's loaded when it's needed.
- File: gnus, Node: FAQ 9-2, Next: FAQ 9-3, Prev: FAQ 9-1, Up: FAQ 9 - Tuning Gnus
- Question 9.2
- ............
- How to speed up the process of entering a group?
- Answer
- ......
- A speed killer is setting the variable gnus-fetch-old-headers to
- anything different from nil, so don't do this if speed is an issue. To
- speed up building of summary say
- (gnus-compile)
- at the bottom of your ~/.gnus.el, this will make gnus byte-compile
- things like gnus-summary-line-format. then you could increase the
- value of gc-cons-threshold by saying something like
- (setq gc-cons-threshold 3500000)
- in ~/.emacs. If you don't care about width of CJK characters or use
- Gnus 5.10 or younger together with a recent GNU Emacs, you should say
- (setq gnus-use-correct-string-widths nil)
- in ~/.gnus.el (thanks to Jesper harder for the last two
- suggestions). Finally if you are still using 5.8.8 or 5.9 and
- experience speed problems with summary buffer generation, you
- definitely should update to 5.10 since there quite some work on
- improving it has been done.
- File: gnus, Node: FAQ 9-3, Prev: FAQ 9-2, Up: FAQ 9 - Tuning Gnus
- Question 9.3
- ............
- Sending mail becomes slower and slower, what's up?
- Answer
- ......
- The reason could be that you told Gnus to archive the messages you
- wrote by setting gnus-message-archive-group. Try to use a nnml group
- instead of an archive group, this should bring you back to normal speed.
- File: gnus, Node: FAQ - Glossary, Prev: FAQ 9 - Tuning Gnus, Up: Frequently Asked Questions
- 11.9.10 Glossary
- ----------------
- "~/.gnus.el"
- When the term ~/.gnus.el is used it just means your Gnus
- configuration file. You might as well call it ~/.gnus or specify
- another name.
- "Back End"
- In Gnus terminology a back end is a virtual server, a layer
- between core Gnus and the real NNTP-, POP3-, IMAP- or
- whatever-server which offers Gnus a standardized interface to
- functions like "get message", "get Headers" etc.
- "Emacs"
- When the term Emacs is used in this FAQ, it means either GNU Emacs
- or XEmacs.
- "Message"
- In this FAQ message means a either a mail or a posting to a Usenet
- Newsgroup or to some other fancy back end, no matter of which kind
- it is.
- "MUA"
- MUA is an acronym for Mail User Agent, it's the program you use to
- read and write e-mails.
- "NUA"
- NUA is an acronym for News User Agent, it's the program you use to
- read and write Usenet news.
- File: gnus, Node: GNU Free Documentation License, Next: Index, Prev: Appendices, Up: Top
- 12 GNU Free Documentation License
- *********************************
- Version 1.3, 3 November 2008
- Copyright (C) 2000, 2001, 2002, 2007, 2008, 2009 Free Software Foundation, Inc.
- `http://fsf.org/'
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
- 0. PREAMBLE
- The purpose of this License is to make a manual, textbook, or other
- functional and useful document "free" in the sense of freedom: to
- assure everyone the effective freedom to copy and redistribute it,
- with or without modifying it, either commercially or
- noncommercially. Secondarily, this License preserves for the
- author and publisher a way to get credit for their work, while not
- being considered responsible for modifications made by others.
- This License is a kind of "copyleft", which means that derivative
- works of the document must themselves be free in the same sense.
- It complements the GNU General Public License, which is a copyleft
- license designed for free software.
- We have designed this License in order to use it for manuals for
- free software, because free software needs free documentation: a
- free program should come with manuals providing the same freedoms
- that the software does. But this License is not limited to
- software manuals; it can be used for any textual work, regardless
- of subject matter or whether it is published as a printed book.
- We recommend this License principally for works whose purpose is
- instruction or reference.
- 1. APPLICABILITY AND DEFINITIONS
- This License applies to any manual or other work, in any medium,
- that contains a notice placed by the copyright holder saying it
- can be distributed under the terms of this License. Such a notice
- grants a world-wide, royalty-free license, unlimited in duration,
- to use that work under the conditions stated herein. The
- "Document", below, refers to any such manual or work. Any member
- of the public is a licensee, and is addressed as "you". You
- accept the license if you copy, modify or distribute the work in a
- way requiring permission under copyright law.
- A "Modified Version" of the Document means any work containing the
- Document or a portion of it, either copied verbatim, or with
- modifications and/or translated into another language.
- A "Secondary Section" is a named appendix or a front-matter section
- of the Document that deals exclusively with the relationship of the
- publishers or authors of the Document to the Document's overall
- subject (or to related matters) and contains nothing that could
- fall directly within that overall subject. (Thus, if the Document
- is in part a textbook of mathematics, a Secondary Section may not
- explain any mathematics.) The relationship could be a matter of
- historical connection with the subject or with related matters, or
- of legal, commercial, philosophical, ethical or political position
- regarding them.
- The "Invariant Sections" are certain Secondary Sections whose
- titles are designated, as being those of Invariant Sections, in
- the notice that says that the Document is released under this
- License. If a section does not fit the above definition of
- Secondary then it is not allowed to be designated as Invariant.
- The Document may contain zero Invariant Sections. If the Document
- does not identify any Invariant Sections then there are none.
- The "Cover Texts" are certain short passages of text that are
- listed, as Front-Cover Texts or Back-Cover Texts, in the notice
- that says that the Document is released under this License. A
- Front-Cover Text may be at most 5 words, and a Back-Cover Text may
- be at most 25 words.
- A "Transparent" copy of the Document means a machine-readable copy,
- represented in a format whose specification is available to the
- general public, that is suitable for revising the document
- straightforwardly with generic text editors or (for images
- composed of pixels) generic paint programs or (for drawings) some
- widely available drawing editor, and that is suitable for input to
- text formatters or for automatic translation to a variety of
- formats suitable for input to text formatters. A copy made in an
- otherwise Transparent file format whose markup, or absence of
- markup, has been arranged to thwart or discourage subsequent
- modification by readers is not Transparent. An image format is
- not Transparent if used for any substantial amount of text. A
- copy that is not "Transparent" is called "Opaque".
- Examples of suitable formats for Transparent copies include plain
- ASCII without markup, Texinfo input format, LaTeX input format,
- SGML or XML using a publicly available DTD, and
- standard-conforming simple HTML, PostScript or PDF designed for
- human modification. Examples of transparent image formats include
- PNG, XCF and JPG. Opaque formats include proprietary formats that
- can be read and edited only by proprietary word processors, SGML or
- XML for which the DTD and/or processing tools are not generally
- available, and the machine-generated HTML, PostScript or PDF
- produced by some word processors for output purposes only.
- The "Title Page" means, for a printed book, the title page itself,
- plus such following pages as are needed to hold, legibly, the
- material this License requires to appear in the title page. For
- works in formats which do not have any title page as such, "Title
- Page" means the text near the most prominent appearance of the
- work's title, preceding the beginning of the body of the text.
- The "publisher" means any person or entity that distributes copies
- of the Document to the public.
- A section "Entitled XYZ" means a named subunit of the Document
- whose title either is precisely XYZ or contains XYZ in parentheses
- following text that translates XYZ in another language. (Here XYZ
- stands for a specific section name mentioned below, such as
- "Acknowledgements", "Dedications", "Endorsements", or "History".)
- To "Preserve the Title" of such a section when you modify the
- Document means that it remains a section "Entitled XYZ" according
- to this definition.
- The Document may include Warranty Disclaimers next to the notice
- which states that this License applies to the Document. These
- Warranty Disclaimers are considered to be included by reference in
- this License, but only as regards disclaiming warranties: any other
- implication that these Warranty Disclaimers may have is void and
- has no effect on the meaning of this License.
- 2. VERBATIM COPYING
- You may copy and distribute the Document in any medium, either
- commercially or noncommercially, provided that this License, the
- copyright notices, and the license notice saying this License
- applies to the Document are reproduced in all copies, and that you
- add no other conditions whatsoever to those of this License. You
- may not use technical measures to obstruct or control the reading
- or further copying of the copies you make or distribute. However,
- you may accept compensation in exchange for copies. If you
- distribute a large enough number of copies you must also follow
- the conditions in section 3.
- You may also lend copies, under the same conditions stated above,
- and you may publicly display copies.
- 3. COPYING IN QUANTITY
- If you publish printed copies (or copies in media that commonly
- have printed covers) of the Document, numbering more than 100, and
- the Document's license notice requires Cover Texts, you must
- enclose the copies in covers that carry, clearly and legibly, all
- these Cover Texts: Front-Cover Texts on the front cover, and
- Back-Cover Texts on the back cover. Both covers must also clearly
- and legibly identify you as the publisher of these copies. The
- front cover must present the full title with all words of the
- title equally prominent and visible. You may add other material
- on the covers in addition. Copying with changes limited to the
- covers, as long as they preserve the title of the Document and
- satisfy these conditions, can be treated as verbatim copying in
- other respects.
- If the required texts for either cover are too voluminous to fit
- legibly, you should put the first ones listed (as many as fit
- reasonably) on the actual cover, and continue the rest onto
- adjacent pages.
- If you publish or distribute Opaque copies of the Document
- numbering more than 100, you must either include a
- machine-readable Transparent copy along with each Opaque copy, or
- state in or with each Opaque copy a computer-network location from
- which the general network-using public has access to download
- using public-standard network protocols a complete Transparent
- copy of the Document, free of added material. If you use the
- latter option, you must take reasonably prudent steps, when you
- begin distribution of Opaque copies in quantity, to ensure that
- this Transparent copy will remain thus accessible at the stated
- location until at least one year after the last time you
- distribute an Opaque copy (directly or through your agents or
- retailers) of that edition to the public.
- It is requested, but not required, that you contact the authors of
- the Document well before redistributing any large number of
- copies, to give them a chance to provide you with an updated
- version of the Document.
- 4. MODIFICATIONS
- You may copy and distribute a Modified Version of the Document
- under the conditions of sections 2 and 3 above, provided that you
- release the Modified Version under precisely this License, with
- the Modified Version filling the role of the Document, thus
- licensing distribution and modification of the Modified Version to
- whoever possesses a copy of it. In addition, you must do these
- things in the Modified Version:
- A. Use in the Title Page (and on the covers, if any) a title
- distinct from that of the Document, and from those of
- previous versions (which should, if there were any, be listed
- in the History section of the Document). You may use the
- same title as a previous version if the original publisher of
- that version gives permission.
- B. List on the Title Page, as authors, one or more persons or
- entities responsible for authorship of the modifications in
- the Modified Version, together with at least five of the
- principal authors of the Document (all of its principal
- authors, if it has fewer than five), unless they release you
- from this requirement.
- C. State on the Title page the name of the publisher of the
- Modified Version, as the publisher.
- D. Preserve all the copyright notices of the Document.
- E. Add an appropriate copyright notice for your modifications
- adjacent to the other copyright notices.
- F. Include, immediately after the copyright notices, a license
- notice giving the public permission to use the Modified
- Version under the terms of this License, in the form shown in
- the Addendum below.
- G. Preserve in that license notice the full lists of Invariant
- Sections and required Cover Texts given in the Document's
- license notice.
- H. Include an unaltered copy of this License.
- I. Preserve the section Entitled "History", Preserve its Title,
- and add to it an item stating at least the title, year, new
- authors, and publisher of the Modified Version as given on
- the Title Page. If there is no section Entitled "History" in
- the Document, create one stating the title, year, authors,
- and publisher of the Document as given on its Title Page,
- then add an item describing the Modified Version as stated in
- the previous sentence.
- J. Preserve the network location, if any, given in the Document
- for public access to a Transparent copy of the Document, and
- likewise the network locations given in the Document for
- previous versions it was based on. These may be placed in
- the "History" section. You may omit a network location for a
- work that was published at least four years before the
- Document itself, or if the original publisher of the version
- it refers to gives permission.
- K. For any section Entitled "Acknowledgements" or "Dedications",
- Preserve the Title of the section, and preserve in the
- section all the substance and tone of each of the contributor
- acknowledgements and/or dedications given therein.
- L. Preserve all the Invariant Sections of the Document,
- unaltered in their text and in their titles. Section numbers
- or the equivalent are not considered part of the section
- titles.
- M. Delete any section Entitled "Endorsements". Such a section
- may not be included in the Modified Version.
- N. Do not retitle any existing section to be Entitled
- "Endorsements" or to conflict in title with any Invariant
- Section.
- O. Preserve any Warranty Disclaimers.
- If the Modified Version includes new front-matter sections or
- appendices that qualify as Secondary Sections and contain no
- material copied from the Document, you may at your option
- designate some or all of these sections as invariant. To do this,
- add their titles to the list of Invariant Sections in the Modified
- Version's license notice. These titles must be distinct from any
- other section titles.
- You may add a section Entitled "Endorsements", provided it contains
- nothing but endorsements of your Modified Version by various
- parties--for example, statements of peer review or that the text
- has been approved by an organization as the authoritative
- definition of a standard.
- You may add a passage of up to five words as a Front-Cover Text,
- and a passage of up to 25 words as a Back-Cover Text, to the end
- of the list of Cover Texts in the Modified Version. Only one
- passage of Front-Cover Text and one of Back-Cover Text may be
- added by (or through arrangements made by) any one entity. If the
- Document already includes a cover text for the same cover,
- previously added by you or by arrangement made by the same entity
- you are acting on behalf of, you may not add another; but you may
- replace the old one, on explicit permission from the previous
- publisher that added the old one.
- The author(s) and publisher(s) of the Document do not by this
- License give permission to use their names for publicity for or to
- assert or imply endorsement of any Modified Version.
- 5. COMBINING DOCUMENTS
- You may combine the Document with other documents released under
- this License, under the terms defined in section 4 above for
- modified versions, provided that you include in the combination
- all of the Invariant Sections of all of the original documents,
- unmodified, and list them all as Invariant Sections of your
- combined work in its license notice, and that you preserve all
- their Warranty Disclaimers.
- The combined work need only contain one copy of this License, and
- multiple identical Invariant Sections may be replaced with a single
- copy. If there are multiple Invariant Sections with the same name
- but different contents, make the title of each such section unique
- by adding at the end of it, in parentheses, the name of the
- original author or publisher of that section if known, or else a
- unique number. Make the same adjustment to the section titles in
- the list of Invariant Sections in the license notice of the
- combined work.
- In the combination, you must combine any sections Entitled
- "History" in the various original documents, forming one section
- Entitled "History"; likewise combine any sections Entitled
- "Acknowledgements", and any sections Entitled "Dedications". You
- must delete all sections Entitled "Endorsements."
- 6. COLLECTIONS OF DOCUMENTS
- You may make a collection consisting of the Document and other
- documents released under this License, and replace the individual
- copies of this License in the various documents with a single copy
- that is included in the collection, provided that you follow the
- rules of this License for verbatim copying of each of the
- documents in all other respects.
- You may extract a single document from such a collection, and
- distribute it individually under this License, provided you insert
- a copy of this License into the extracted document, and follow
- this License in all other respects regarding verbatim copying of
- that document.
- 7. AGGREGATION WITH INDEPENDENT WORKS
- A compilation of the Document or its derivatives with other
- separate and independent documents or works, in or on a volume of
- a storage or distribution medium, is called an "aggregate" if the
- copyright resulting from the compilation is not used to limit the
- legal rights of the compilation's users beyond what the individual
- works permit. When the Document is included in an aggregate, this
- License does not apply to the other works in the aggregate which
- are not themselves derivative works of the Document.
- If the Cover Text requirement of section 3 is applicable to these
- copies of the Document, then if the Document is less than one half
- of the entire aggregate, the Document's Cover Texts may be placed
- on covers that bracket the Document within the aggregate, or the
- electronic equivalent of covers if the Document is in electronic
- form. Otherwise they must appear on printed covers that bracket
- the whole aggregate.
- 8. TRANSLATION
- Translation is considered a kind of modification, so you may
- distribute translations of the Document under the terms of section
- 4. Replacing Invariant Sections with translations requires special
- permission from their copyright holders, but you may include
- translations of some or all Invariant Sections in addition to the
- original versions of these Invariant Sections. You may include a
- translation of this License, and all the license notices in the
- Document, and any Warranty Disclaimers, provided that you also
- include the original English version of this License and the
- original versions of those notices and disclaimers. In case of a
- disagreement between the translation and the original version of
- this License or a notice or disclaimer, the original version will
- prevail.
- If a section in the Document is Entitled "Acknowledgements",
- "Dedications", or "History", the requirement (section 4) to
- Preserve its Title (section 1) will typically require changing the
- actual title.
- 9. TERMINATION
- You may not copy, modify, sublicense, or distribute the Document
- except as expressly provided under this License. Any attempt
- otherwise to copy, modify, sublicense, or distribute it is void,
- and will automatically terminate your rights under this License.
- However, if you cease all violation of this License, then your
- license from a particular copyright holder is reinstated (a)
- provisionally, unless and until the copyright holder explicitly
- and finally terminates your license, and (b) permanently, if the
- copyright holder fails to notify you of the violation by some
- reasonable means prior to 60 days after the cessation.
- Moreover, your license from a particular copyright holder is
- reinstated permanently if the copyright holder notifies you of the
- violation by some reasonable means, this is the first time you have
- received notice of violation of this License (for any work) from
- that copyright holder, and you cure the violation prior to 30 days
- after your receipt of the notice.
- Termination of your rights under this section does not terminate
- the licenses of parties who have received copies or rights from
- you under this License. If your rights have been terminated and
- not permanently reinstated, receipt of a copy of some or all of
- the same material does not give you any rights to use it.
- 10. FUTURE REVISIONS OF THIS LICENSE
- The Free Software Foundation may publish new, revised versions of
- the GNU Free Documentation License from time to time. Such new
- versions will be similar in spirit to the present version, but may
- differ in detail to address new problems or concerns. See
- `http://www.gnu.org/copyleft/'.
- Each version of the License is given a distinguishing version
- number. If the Document specifies that a particular numbered
- version of this License "or any later version" applies to it, you
- have the option of following the terms and conditions either of
- that specified version or of any later version that has been
- published (not as a draft) by the Free Software Foundation. If
- the Document does not specify a version number of this License,
- you may choose any version ever published (not as a draft) by the
- Free Software Foundation. If the Document specifies that a proxy
- can decide which future versions of this License can be used, that
- proxy's public statement of acceptance of a version permanently
- authorizes you to choose that version for the Document.
- 11. RELICENSING
- "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
- World Wide Web server that publishes copyrightable works and also
- provides prominent facilities for anybody to edit those works. A
- public wiki that anybody can edit is an example of such a server.
- A "Massive Multiauthor Collaboration" (or "MMC") contained in the
- site means any set of copyrightable works thus published on the MMC
- site.
- "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
- license published by Creative Commons Corporation, a not-for-profit
- corporation with a principal place of business in San Francisco,
- California, as well as future copyleft versions of that license
- published by that same organization.
- "Incorporate" means to publish or republish a Document, in whole or
- in part, as part of another Document.
- An MMC is "eligible for relicensing" if it is licensed under this
- License, and if all works that were first published under this
- License somewhere other than this MMC, and subsequently
- incorporated in whole or in part into the MMC, (1) had no cover
- texts or invariant sections, and (2) were thus incorporated prior
- to November 1, 2008.
- The operator of an MMC Site may republish an MMC contained in the
- site under CC-BY-SA on the same site at any time before August 1,
- 2009, provided the MMC is eligible for relicensing.
- ADDENDUM: How to use this License for your documents
- ====================================================
- To use this License in a document you have written, include a copy of
- the License in the document and put the following copyright and license
- notices just after the title page:
- Copyright (C) YEAR YOUR NAME.
- Permission is granted to copy, distribute and/or modify this document
- under the terms of the GNU Free Documentation License, Version 1.3
- or any later version published by the Free Software Foundation;
- with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
- Texts. A copy of the license is included in the section entitled ``GNU
- Free Documentation License''.
- If you have Invariant Sections, Front-Cover Texts and Back-Cover
- Texts, replace the "with...Texts." line with this:
- with the Invariant Sections being LIST THEIR TITLES, with
- the Front-Cover Texts being LIST, and with the Back-Cover Texts
- being LIST.
- If you have Invariant Sections without Cover Texts, or some other
- combination of the three, merge those two alternatives to suit the
- situation.
- If your document contains nontrivial examples of program code, we
- recommend releasing these examples in parallel under your choice of
- free software license, such as the GNU General Public License, to
- permit their use in free software.
- Local Variables:
- coding: iso-8859-1
- End:
|