% -*-mode: texinfo; TeX-default-extension: "texinfo"-*-
\input svensktexinfo

@documentencoding ISO-8859-1
@setfilename elisp-client
@settitle Användarhandledning LysKOMs emacslispklient

@setchapternewpage odd

@comment @documentstyle[12pt,latexinfo,lyskom]{rapport} @c -*- latexinfo -*- This must be the first line.

@titlepage
@title LysKOM Elispklient: Användarhandledning
@subtitle En LysKOM-klient för GNU Emacs.

@author Linus Tolke
@author Per Cederqvist
@author Inge Wallin
@author David Byers
@author David Kågedal

@page
Författarna till denna klient är alla medlemmar i Datorföreningen
Lysator vid Linköpings Tekniska Högskola --- LiTH.

Den som för tillfället arbetar mest med LysKOMs emacslispklient är:

David Byers --- @code{<byers@@lysator.liu.se>} @*
David Kågedal --- @code{<davidk@@lysator.liu.se>}

Andra mer eller mindre aktiva personer är:

Linus Tolke @code{<linus@@lysator.liu.se>} @*
Per Cederqvist @code{<ceder@@lysator.liu.se>} @*
Inge Wallin @code{<inge@@lysator.liu.se>} @*
Thomas Bellman @code{<bellman@@lysator.liu.se>} @*
Lars Aronsson @code{<aronsson@@lysator.liu.se>} @*
Lars Willför @code{<willfor@@lysator.liu.se>}
@end titlepage


@node Top, Uppstart, (dir), (dir)
@ifinfo
Dokumentationen uppdaterad till klient version 0.39
@end ifinfo

@menu
* Uppstart::                    Uppstart
* Köra LysKOM::                 Köra LysKOM
* Namn::                        Namn
* Skriva inlägg::               Att skriva inlägg
* Flaggor::                     Flaggor
* Variabler::                   Variabler
* Hookar::                      Hookar
* Environmentvariabler::        Environmentvariabler

* Buggrapporter::               Buggrapporter
* Filer::                       Filer
* Index::                       Index
* Tangenterna::                 Tangenterna
* Variabelindex::               Variabelindex

 --- Den specificerade nodlistan ---

Uppstart

* Lysator::			Koppla upp sig från lysator.
* Andra maskiner::		Hur du för annars.


Köra LysKOM

* Prompten::			Hur LysKOMs prompt fungerar.
* Scrollning::			Hur LysKOM scrollar och varför.
* Filtrering::                  Hur du väljer bort vissa inlägg.
* Kommandon::			Vilka kommandon finns och vad gör de.

* Administratörskommandon::	Administratörskommandon

Kommandon

* Läsa::			De vanligaste kommandona för att läsa inlägg.
* Få hjälp::			Hjälpkommandot är beskrivet

* Skriva::			Skriva
* Lista::			Kommandon för att lista information.
* Sluta::			När du har läst klart

* Annat::			
* Ändra::			Kommandon för att ändra dina parametrar.

* Återse::			Kommandon för att återse inlägg.
* Status::			Kommandon för att få status.

* Spara text::			Spara ett eller flera inlägg
* Markeringar::			Kommandon för att hantera markeringar.
* Skapa::			Kommandon för att skapa möten.
* Kommandon för att addera och subtrahera::  Kommandon för att addera och subtrahera.
* Ändra personuppgifter::	
* Ändra mötesuppgifter::	
* Meddelande::			Meddelande
* Filtrera::                    Kommandon för att filtrera inlägg.
* Prioritera::			Kommando för att prioritera om möten.

* Ändra inställningarna::	

Ändra

* Ändra personuppgifter::	övriga ändrakommandon för personer.
* Ändra mötesuppgifter::övriga ändrakommandon för möten.
* Ändra inställningarna:: Hur man ändrar LysKOMklientens parametrar.
@end menu


@node Uppstart, Lysator, Top, Top
@comment  node-name,  next,  previous,  up
@chapter Uppstart
@ifinfo
Det är olika procedurer för att komma in i LysKOM beroende på 
vilken maskin du kopplar upp dig ifrån. De är alla beskrivna här 
nedan.


@menu
* Lysator::			Koppla upp sig från lysator.
* Andra maskiner::		Hur du för annars.

@end menu
@end ifinfo
@node Lysator, Andra maskiner, Uppstart, Uppstart
@comment  node-name,  next,  previous,  up
@section Från Lysators maskiner

Enklast är att köra LysKOM från någon av Lysators UNIX-maskiner.
När man har startat Emacs räcker det med att skriva:
@example
M-x lyskom RET
@end example
för att sätta igång. Svara på frågan om server med
att trycka @key{RET}.


@node Andra maskiner, Köra LysKOM, Lysator, Uppstart
@comment  node-name,  next,  previous,  up
@section Från andra maskiner

Om du vill hämta LysKOMs emacslispklient från någonstans utanför LiTH
kan du hämta den senaste versionen via anonym ftp från
@file{ftp.lysator.liu.se}. Ange din emailadress som lösenord. Gå ner i
directoryt @file{pub/lyskom/elisp-client} och skriv @code{get
lyskom-X.el.gz} där @code{X} är det högsta nummer du kan hitta i det
directoryt. Filen med det högsta numret är alltid den senaste
versionen. Dessutom hämtar du denna dokumentation från filen
@code{elisp-client.info-X.tar.gz}. När överföringen är klar, bryt
förbindelsen genom att skriva @code{quit}.@refill

Du installerar LysKOMs emacslispklient genom att flytta den hämtade
filen till det lokala emacslispbiblioteket @file{site-lisp} under namnet
@file{lyskom.el} och lägga in en rad
@example
(autoload 'lyskom "lyskom" "Köra LysKOM" t)
@end example
i filen @file{defaults.el} i samma directory.

Dokumentationen installerar du genom att packa upp tar-arkivet och
flytta alla dess filer till ditt lokala info-bibliotek. Antagligen
@code{/usr/linfo} eller något liknande. Sedan skriver du in en rad i
filen @code{/usr/info/dir} som pekar ut elisp-client.

Om du bara skall installera klienten för dig själv, ett måste om du inte
får lov att installera emacslispprogram på systemet, så flyttar du
istället filen med namnet @file{lyskom.el} till ditt egna emacslispbibliotek
och stoppar in raden ovan i din @file{.emacs}-fil.

Det kan löna sig att byte-kompilera klienten.
@inforef{Lispbibliotek för emacs,Lisp Libraries,emacs}.

Denna dokumentation finner du som sagt på samma ställe under namnet
@file{elisp-client.info-X.tar.gz} för den infoiserade versionen och
@file{elisp-client.txt-X.gz} för den enkla text-versionen. Detta
dokument är ett texinfodokument och om du planerar att skriva ut det på
skrivar så kontakta utvecklarna via email till
@file{lyskom@@lysator.liu.se} så kan de generera en @file{.dvi}-fil
eller en postscript-fil.


@node Köra LysKOM, Namn, Andra maskiner, Top
@comment  node-name,  next,  previous,  up
@chapter Köra LysKOM


@menu
* Prompten::			Hur LysKOMs prompt fungerar.
* Scrollning::			Hur LysKOM scrollar och varför.
* Filtrering::                  Hur du väljer bort vissa inlägg.
* Kommandon::			Vilka kommandon finns och vad gör de.

* Administratörskommandon::	Administratörskommandon
@end menu
@node Prompten, Scrollning, Köra LysKOM, Köra LysKOM
@section Prompten

När LysKOM är klart att ta emot ett kommando skrivs en prompt ut. Den
kan se ut på t.ex följande sätt:

@example
Gå till nästa möte -
Läsa nästa text -
Se tiden - 
@end example
När du ser prompten kan du ge ett kommando.

@node Scrollning, Filtrering, Prompten, Köra LysKOM
@comment  node-name,  next,  previous,  up
@section Scrollning

Om inte allt ryms på skärmsidan så syns en procentsats i mode-raden.
Tryck på mellanslag när du läst klart så scrollas nästa sida fram.

@node Filtrering, Kommandon, Scrollning, Köra LysKOM
@comment node-name, next, previous, up
@section Filtrering

För att hantera den stora mängd information som kan finnas i LysKOM
finns funktioner för att filtrera inlägg. Filtrering innebär att inlägg
med vissa egenskaper inte visas.

LysKOMs filtreringsfunktioner är mycket flexibla, och tillåter filter
som fritt kombinerar författare, ärende, textinnehåll och mottagare,
angivna som text, med reguljära uttryck eller, för författare och
mottagare, nummer. Varje del i ett filter kan omfatta alla inlägg som
antingen uppfyller eller inte uppfyller villkoren.

Filtreringen kan göras på tre olika sätt:

@table @asis
@item Visa inte
Visa första raden i inläggshuvudet och lista kommentarer till
inlägget. Denna filtermetod är mest användbar om man vill välja om man
skall se vissa inlägg i en diskussion.

@item Hoppa över
Hoppa över texten och hämta nästa text i läslistan. Endast ett
meddelande om att inlägget har hoppats över visas. Denna metod är
användbar om man aldrig vill se vissa inlägg i en diskussion.

@item Hoppa över kommentarer
Som hoppa över, men hoppar dessutom över alla kommentarer under
inlägget. Denna metod är användbar om man helt vill undvika vissa
diskussioner.

@end table

Filter är antingen tillfälliga eller permanenta. Tillfälliga filter
försvinner när du avslutar Emacs.

@node Kommandon, Administratörskommandon, Filtrering, Köra LysKOM
@comment  node-name,  next,  previous,  up
@section Kommandon

Det finns två slags kommandon, dels de som är bundna till enskilda
tangenter, dels de som du måste ange i klartext. Många kommandon kan
anges på båda sätten. För att ange ett kommando med dess fulla namn
trycker du tangenten @kbd{a}, vilket skall uttydas @code{(Något) Annat},
@kindex a
ett kommando som fanns i gamla QZ-KOM. Detta ger dig en fråga på Emacs
meddelanderad och du kan nu trycka @kbd{?} och få en lista på vilka
kommandon som finns.

Antalet kommandon ökar hela tiden med ökande versionsnummer.
Följande kommandon finns i LysKOMs emacslispklient i den version 
som anges i titeln på detta dokument. Först visas vilken tangent
som funktionen ligger på och därefter vad man anger under @kbd{a}.
I mötet @samp{LysKOM Elispklient; diskussion och ideer} på Lysators
LysKOM-system diskuteras nyheter om klienten. När en ny version
släpps annonseras det också i det mötet, för det mesta
tillsammans med en lista på de ändringar som är gjorda sen
förra versionen.

De flesta kommandon kan avbrytas med @kbd{C-g}.

@menu
* Läsa::			De vanligaste kommandona för att läsa inlägg.
* Få hjälp::			Hjälpkommandot är beskrivet

* Skriva::			Skriva
* Lista::			Kommandon för att lista information.
* Sluta::			När du har läst klart

* Annat::			
* Ändra::			Kommandon för att ändra dina parametrar.

* Återse::			Kommandon för att återse inlägg.
* Status::			Kommandon för att få status.

* Spara text::			Spara ett eller flera inlägg
* Markeringar::			Kommandon för att hantera markeringar.
* Skapa::			Kommandon för att skapa möten.
* Kommandon för att addera och subtrahera::  Kommandon för att addera och subtrahera.
* Ändra personuppgifter::	
* Ändra mötesuppgifter::	
* Meddelande::			Meddelande
* Filtrera::                    Kommandon för att filtrera inlägg.
* Prioritera::			Kommando för att prioritera om möten.

* Ändra inställningarna::	
@end menu
@node Läsa, Få hjälp, Kommandon, Kommandon
@comment  node-name,  next,  previous,  up
@subsection Kommandon för att läsa inlägg.

@table @asis

@item @kbd{nm}
@itemx @code{Gå till nästa möte}
@findex Gå till nästa möte
@kindex nm
Går till nästa möte med olästa inlägg. Alla olästa i det nuvarande
mötet sparas och mötet placeras sist i listan över möten med
olästa inlägg.


@item @kbd{h}
@itemx @code{Hoppa över alla kommentarer}
@findex Hoppa över alla kommentarer
@kindex h
Hoppa över alla kommentarer till det senast lästa inlägget, dvs
markera dem som lästa utan att visa dem. Detta sker rekursivt så
att alla kommentarer till kommentarerna också markeras som lästa,
osv. För att undvika att detta kommando jobbar för evigt läsmarkerar 
och söker klienten bara rekursivt vidare om kommentaren i varje steg
är nyare än det kommenterade inlägget.

@item @kbd{H}
@itemx @code{Superhoppa}
@findex Superhoppa
@kindex H
Skapa ett filter som hoppar över alla texter i det aktuella mötet med
samma ärenderad som den senast lästa texten. Detta kommando är bra om
man vill hoppa över alla grenar i en gammal diskussion.

@item @kbd{M-p}
@itemx @code{(Spring till) början av texten}
@findex (Spring till) början av texten
@findex Början av texten
@findex Föregående inlägg
@kindex M-p
Detta kommando är bara till för att snabbare kunna hitta början på
det inlägg man är vid, eller hitta föregående inlägg.

@item @kbd{M-n}
@itemx @code{(Spring till) nästa text}
@findex (Spring till) nästa text
@findex Nästa text
@kindex M-n
Detta kommando är motsatsen till @kbd{M-p}. Det springer till nästa
inlägg istället.


@item @key{DEL}
@itemx @code{Scrolla ner}
@findex Scrolla ner
@findex scroll-down
@kindex DEL
Detta kommando rullar tillbaka skärmen så att man kan se det som skrevs
innan. För att komma framåt igen är det bara att trycka @key{SPC}. 
@end table
@node Få hjälp, Skriva, Läsa, Kommandon
@comment  node-name,  next,  previous,  up
@subsection Få hjälp

Du kan alltid få hjälp.

@table @asis
@item @kbd{?}
@itemx @code{Hjälp}
@findex Hjälp
@kindex ?
Beskriv LysKOM-moden och alla dess tangentbordsbindningar.
Om du redan gett en del av ett kommando och trycker @kbd{?} så får du en
lista på vilka alternativa kommandon som finns från det läget.
Alternativlistan innehåller vad du skulle tryckt för att välja
just det alternativet samt kommandots namn.

@end table
@node Skriva, Lista, Få hjälp, Kommandon
@comment  node-name,  next,  previous,  up
@subsection Skriva

Här är samtliga kommandon som används för att skriva ett inlägg listade.

@table @asis

@item @kbd{b}
@itemx @code{Skicka brev}
@findex Skicka brev
@kindex b
Skicka ett brev till en person eller ett möte. Programmet frågar
efter vilket möte/person som man vill skicka brevet till. Man kan
skicka brev även till slutna möten. Om personen eller mötet har en
lapp på dörren så visas lappen i LysKOM-bufferten. 


@item @kbd{i}
@itemx @code{Skriva ett inlägg}
@findex Skriva ett inlägg
@kindex i
Skriv ett inlägg i det möte där du befinner dig för tillfället. Se
avsnittet nedan som beskriver vad du kan göra medan du skriver.


@item @kbd{k}
@itemx @code{Kommentera inlägget}
@findex Kommentera inlägget
@kindex k
@kindex C-u k
Kommentera det senast lästa eller skrivna inlägget. Man kan också
kommentera ett valfritt inlägg genom att istället för att trycka @kbd{k}
trycka inläggsnummret för det inlägg man vill kommentera följt av
@kbd{k}. Alternativ till detta är att trycka @kbd{C-u k} varpå man får
ange inläggsnumret.

Om inlägget skulle ha flera mottagare så får man, för var och en av
dessa mottagare en kontrollfråga om man vill att den skall vara kvar som
mottagare eller inte. Detta går givetvis att stänga av, med flaggan
@code{kom-confirm-multiple-recipients}.


@item @kbd{K}
@itemx @code{Kommentera föregående inlägg}
@findex Kommentera föregående inlägg
@kindex K
Kommentera det näst senast lästa eller skrivna inlägget. Det kan 
vara bra om man gör @kbd{åk} (@code{Återse det kommenterade}) innan man
bestämmer sig för att kommentera.


@item @kbd{F}
@itemx @code{Fotnot till inlägg}
@findex Fotnot till inlägg
@kindex F
@kindex C-u F
Skriv en fotnot till det senast lästa inlägget. Kommandot fungerar som
kommandot @code{Kommentera inlägget}. Observera att om man inte explicit
anger inläggsnummer skriver man alltid fotnoter till senast lästa
inlägg. Detta innebär att man "tvingas" återse sitt senast skrivna inlägg
innan man kan skriva en fotnot till det.


@item @kbd{p}
@itemx @code{Personligt svar}
@findex Personligt svar
@kindex p
@kindex C-u p
Skriv ett personligt svar till författaren av det senast lästa
inlägget.

Man kan, liksom när man skriver kommentarer, skriva personligt svar till
godtyckligt inlägg genom att antingen skriva inläggsnummer @kbd{p} eller
@kbd{C-u p} följt av inläggsnumret och @kbd{RET}.


@item @kbd{P}
@itemx @code{Personligt svar på föregående inlägg}
@findex Personligt svar på föregående inlägg
@kindex P
Skriv ett personligt svar till författaren av det näst senast
lästa inlägget. Jämför kommentera föregående 
inlägg.

@end table

@node Lista, Sluta, Skriva, Kommandon
@comment  node-name,  next,  previous,  up
@subsection Lista

Du kan lista olika saker med dessa olika kommandona.

@table @asis
@item @kbd{v}
@itemx @code{Vilka är inloggade}
@findex Vilka är inloggade
@kindex v
Visa en lista över de personer som är inloggade i LysKOM för
tillfället. Man får dessutom reda på vilken maskin de kör ifrån samt vad
de sysslar med just nu. Inloggningarna visas i sessionsnummerordning och
den egna inloggningen markeras med en asterisk precis efter
sessionsnumret.


@item @kbd{lm}
@itemx @code{Lista möten}
@findex Lista möten
@kindex lm
Lista alla möten som matchar ett givet mönster. LysKOM frågar
efter mönstret innan sökningen startar. En asterisk (@code{*}) skrivs
ut framför namnet på alla möten som man inte är medlem i. Om man ger ett
tomt mönster så listas alla möten (utom de hemliga). Observera att det
kan ta väldigt lång tid om det finns många möten, som på Lysators
LysKOM.


@item @kbd{ln}
@itemx @code{Lista nyheter}
@findex Lista nyheter
@kindex ln
Lista alla nyheter, dvs alla möten i vilka du har olästa inlägg.
Talar också om hur många olästa du har i resp. möte.


@item @kbd{lN}
@findex Lista nyheter
@kindex lN
Samma som @kbd{ln}, men använder en något långsammare metod. Detta anrop
finns endast med som kontroll eftersom metoden som används för
@kbd{ln} visserligen är snabbare, men också mycket mer komplicerad.
Detta kommando kommer att försvinna snart(?).


@item @kbd{lp}
@itemx @code{Lista personer}
@findex Lista personer
@kindex lp
Lista alla personer som matchar ett givet mönster. LysKOM frågar
efter mönstret innan sökningen startar.


@item @kbd{ls}
@itemx @code{Lista medlemsskap}
@findex Lista medlemsskap
@kindex ls
Listar vilka möten du är medlem i, vilka prioriteter som gäller
för mötena samt hur många olästa du har i varje möte.


@item @kbd{lä}
@itemx @code{Lista ärenden}
@findex Lista ärenden
@kindex lä
Listar ärenden och författare på de inlägg som du har olästa i
mötet, eller på dina markerade inlägg, när du har prompten 
@code{Återse nästa markerade -}.
@end table

@node Sluta, Annat, Lista, Kommandon
@comment  node-name,  next,  previous,  up
@subsection Sluta

@table @asis
@item @kbd{S}
@itemx @kbd{q}
@itemx @code{Sluta}
@findex Sluta
@kindex S
@kindex q
Avslutar LysKOM. Det går lika bra att sluta genom att gå ur Emacs
eller ta bort LysKOM-bufferten.

Om du har inlägg som du börjat skriva på och sedan varken slängt eller
skickat in till LysKOM-servern så kommer du att få en extra
kontrollfråga om du verkligen vill sluta trots att du har oinskickade
inlägg.

Om du väljer att gå ur lyskom genom att avsluta Emacs och har
oinskickade buffertar kommer LysKOMs emacslispklient att se till att Emacs
betraktar LysKOM som en viktig process. Om du däremot har skickat in
eller slängt alla dina inlägg ser LysKOMs emacslispklientent till att Emacs inte
betraktar LysKOM som en viktig process. Om du får en kontrollfråga:
"Active processes exist; kill them and exit anyway? (yes or no)" innebär
det alltså att du har oinskickade inlägg. @footnote{För att detta skall
fungera korrekt krävs att du kör en emacs version 18.58 eller senare.}


@end table

@node Annat, Ändra, Sluta, Kommandon
@comment  node-name,  next,  previous,  up
@subsection övriga kommandon i LysKOM.

@table @asis
@item @kbd{M-x kom-recover}
@itemx @code{Återstarta kom}
@findex Återstarta kom
@kindex M-x kom-recover
Nollställer diverse interna strukturer i klienten. Används då
klienten har hängt sig eller då klienten och servern har kommit ur
fas. Det kan de göra om man trycker @code{C-g} @kindex C-g
vid olämpliga tillfällen.

Om klienten hänger sig på detta vis beror det egentligen på att det är
en bugg i klienten. Se till att skapa en buggrapport innan du ger det
här kommandot. Se även @ref{Buggrapporter}.

@item @kbd{t}
@itemx @code{Se tiden}
@findex Se tiden
@kindex t
Visar vad klockan är.


@item @kbd{fu}
@itemx @code{Få uppmuntran}
@findex Få uppmuntran
@kindex fu
Ger den dystre användaren lite ljus i mörkret.


@item @kbd{fs}
@itemx @code{Få skäll}
@findex Få skäll
@kindex fs
Tar ner den uppblåste användaren på jorden.


@item @kbd{V}
@itemx @code{Vänta på ett inlägg}
@findex Vänta på ett inlägg
@kindex V
Stoppar LysKOM och väntar på att ett inlägg med prioritet högre än
nästa möte man kommer till skall skrivas. Vill man bryta av innan
är det bara att ge ett kommando.

Om du inte vill att inlägg med låg prioritet, men högre än nästa
möte, ska avbryta väntafunktionen så kan du ange prioriteten som
måste överskridas med ett prefixargument.

Från och med version 0.39 av klienten fungerar detta kommando på ett
sätt som gör det mindra användbart. Det finns därför ingen större
anledning att använda detta kommando i nyare versioner.

@ifset fjuk

DETTA KOMMANDO FINNS INTE SEDAN 0.39

@item 
@itemx @code{Visa vilkalistan}
@findex Visa vilkalistan
LysKOM underhåller en lista över alla personer som är inne
i LysKOM just nu och den kan man får fram i ett temporärt fönster
med detta kommando. Höjden på detta fönster regleras med 
variabeln @code{kom-who-buffer-size-when-displaying}.

Detta fungerar givetvis inte om man har slagit av hanteringen av
Vilkabufferten. @xref{Vilkabufferten}

@end ifset

@item 
@itemx @code{Kasta ut en session}
@findex Kasta ut en session
Du kan slänga ut en session som har hängt sig eller som du
glömt på någon annan maskin. Du kan bara slänga ut 
sessioner där personer som du är organisatör för är
inloggade om du inte är i administratörsmod.

@item
@itemx @code{Visa user-arean}
@findex Visa user-arean
Detta kommando är mest till för de som utvecklar elisp-klienten. Det
skriver ut innehållet i din user-area, det vill säga det inlägg som
innehåller värdet på de variabler som sparas i servern.

@end table

@ifinfo
@node Ändra, Återse, Annat, Kommandon
@comment  node-name,  next,  previous,  up
@subsection Ändra

Du kan ändra dina egna parametrar med olika kommandon.

Presentationen ändrar du med:
@end ifinfo

@table @asis
@item @kbd{äp}
@itemx @code{Ändra presentation}
@findex Ändra presentation
@kindex äp
ändrar presentationen för ett möte eller en person. LysKOM frågar
efter vilken person/möte som presentationen skall ändras för och
placerar dig i redigeringsläge. Om du bara trycker @kbd{RET} så
ändrar du din egen presentation.
@end table
@menu
* Ändra personuppgifter::	övriga ändrakommandon för personer.
* Ändra mötesuppgifter::övriga ändrakommandon för möten.
* Ändra inställningarna:: Hur man ändrar LysKOMklientens parametrar.
@end menu

@ifinfo
@node Återse, Status, Ändra, Kommandon
@comment  node-name,  next,  previous,  up
@subsection Återse

Det finns flera olika kommandon för att återse olika inlägg. De är 
listade nedan.

@end ifinfo

@table @asis
@item @kbd{å @key{SPC}}
@itemx @code{Återse text}
@findex Återse text
@kindex å 
Återse en eventuellt tidigare läst inlägg. Om du anger ett nummer
direkt efter @kbd{å}:et så visar LysKOM dettaa inlägg. Om du ger ett
mellanslag så frågar LysKOM efter inläggsnummer.


@item @kbd{åo}
@itemx @code{Återse omodifierat}
@findex Återse omodifierat
@kindex åo
Återse det senast föregående lästa inlägget utan att konvertera enligt
konverteringstabellen.


@item @kbd{åk}
@itemx @code{Återse det kommenterade}
@findex Återse det kommenterade
@kindex åk
Återse det eller de inlägg som det senast lästa inlägget är en
kommentar till. Om inte det senast lästa är en kommentar utan ett
originalinlägg så ger LysKOM ett felmeddelande.


@item @kbd{åak}
@itemx @code{Återse alla kommentarer}
@findex Återse alla kommentarer
@kindex åak
Återse alla inlägg som är kommentarer till det senast lästa
inlägget.


@item @kbd{åar}
@itemx @code{Återse alla kommentarer rekursivt}
@findex Återse alla kommentarer rekursivt
@kindex åar
Återse alla inlägg som är kommentarer till det senast lästa
inlägget. Detta sker rekursivt så att även kommentarer till dessa
kommentarer återses. 


@item @kbd{åu}
@itemx @kbd{år}
@itemx @code{Återse urinlägget}
@findex Återse urinlägget
@kindex åu
@kindex år
Återser originalinlägget som gav upphov till den kommentarkedja
som det senast lästa inlägget ingår i.


@item @kbd{ån}
@itemx @code{Återse nästa}
@findex Återse nästa
@kindex ån
Återser nästa inlägg i återsestacken.


@item @kbd{ås}
@itemx @code{Återse senaste}
@findex Återse senaste
@kindex ås
@c +++ Denna dok behöver kontrolleras
Återse de senaste N inläggen av X i mötet M. LysKOM frågar efter
personen X och mötet M. N är prefixargument. 

Om man inte ger något prefixargument sätts N@code{=1}. Om man anger N@code{=0}
får man se @emph{alla} inlägg av X till M. Om N är negativt så får du se
de abs(N) första inläggen av X i mötet M.

Om man inte anger X får man se de senaste N inläggen i mötet M.
Default för mötet är det möte du är i. Om man inte anger M får man
se de senaste N inläggen av X. 

M kan vara din egen brevlåda, men du kan inte återse inlägg till
någon annans brevlåda. Det beror på en bug i server som kommer att
rättas, förhoppningsvis före sommaren 1991.


@item @kbd{åi}
@itemx @code{Återse igen}
@findex Återse igen
@kindex åi
Återse de senaste X normalt lästa inlägg.


@item @kbd{åh}
@itemx @code{Återse hoppa}
@findex Återse hoppa
@kindex åh
Avslutar alla återsekommandon.


@item @kbd{ål}
@itemx @code{Återse lista}
@findex Återse lista
@kindex ål
Visar vilka inlägg som kommer att återses, dvs resulatet av alla
fortfarande aktiva återsekommandon. 


@item @kbd{åp}
@itemx @code{Återse presentation}
@findex Återse presentation
@kindex åp
Frågar efter namnet på en person eller ett möte och visar
presentationen för denna person/möte.


@item @kbd{åt}
@itemx @code{Återse träd}
@findex Återse träd
@kindex åt
Samma som @code{Återse urinlägget} + @code{Återse alla kommentarer rekursivt}
för det senast lästa inlägget.


@item @kbd{B}
@itemx @code{(Återse) Baklänges}
@findex Baklänges
@kindex B
Vänder på ordningen som de inlägg man gör återse på presenteras.
Om man t ex återser de senaste N av någon så vill man kanske
återse dem bakifrån i stället för framifrån.

@end table

@ifinfo
@node Status, Spara text, Återse, Kommandon
@comment  node-name,  next,  previous,  up
@subsection Status

Du kan få status för personer och möten med dessa olika kommandon.

@end ifinfo

@table @asis
@item @kbd{sm}
@itemx @code{Status (för) möte}
@findex Status (för) möte
@kindex sm
Visar upp en del intressanta data för ett möte. Om mötet har en
lapp på dörren så visas denna.

Om man vill se en lista på alla medlemmar i mötet och hur många 
olästa de olika personerna har så skall man svara @kbd{j} på 
frågan. Annars skall man svara @kbd{n}.

@item @kbd{sp}
@itemx @code{Status (för) person}
@findex Status (för) person
@kindex sp
Visar upp en del intressanta data om en person. Om personen har en
lapp på dörren så visas denna. 

Efter eventuell lapp så kan man få en lista på vilka möten 
personen är medlem i och hur många olästa han har i dem.
Vill man inte ha denna lista skall man svara @kbd{n} på frågan.
@end table

@node Spara text, Markeringar, Status, Kommandon
@comment  node-name,  next,  previous,  up
@subsection Spara ett eller flera inlägg

@table @asis
@item @kbd{st}
@itemx @code{Spara text (på fil)}
@findex Spara text (på fil)
@kindex st
Spara det senast lästa inlägget på fil. Frågar efter filnamn.

Om man anger ett prefixargument sparas de sista @code{n} inläggen.
@end table

@ifinfo
@node Markeringar, Skapa, Spara text, Kommandon
@comment  node-name,  next,  previous,  up
@subsection Markeringar

En markering är ett litet märke som du sätter på ett inlägg som gör
att du snabbt kan hitta tillbaka till det inlägget igen.

Du hanterar markeringar med följande kommandon:

@end ifinfo

@table @asis
@item @kbd{M}
@itemx @code{Markera (inlägg)}
@findex Markera (inlägg)
@kindex M
Frågar efter inläggsnummer och markerar inlägget med ett nummer.
Det senast lästa inlägget är default att markeras. Alla markerade
inlägg eller markerade inlägg med en viss markering kan senare
återses (se nedan).

Om man inte har satt variabeln @code{kom-default-mark} till någonting
så markeras inlägget med markeringen @code{100}. Om man satt variabeln
@code{kom-default-mark} till @code{nil} så frågar den även efter vilket
nummer markeringen skall ha.

@item @kbd{A}
@itemx @code{Avmarkera (inlägg)}
@findex Avmarkera (inlägg)
@kindex A
Frågar efter inläggsnummer och tar bort den eventuella markeringen
från det inlägget. Det senast lästa inlägget är default.


@item @kbd{åam}
@itemx @code{Återse alla markerade}
@findex Återse alla markerade
@kindex åam
återser alla inlägg som tidigare markerats med hjälp av @code{M} eller
@code{Markera (inlägg)}.


@item @kbd{åm}
@itemx @code{Återse markerade}
@findex Återse markerade
@kindex åm
Frågar efter en markering och visar upp alla markerade inlägg med
just den markeringen. Normalt markerar LysKOMs emacslispklient med markering 100.
@xref{Variabler, kom-default-mark}.

@end table

@iftex
@subsection Kommandon under annat
Här följer några funktioner som inte ligger på några egna tangenter,
men som kan hittas under @kbd{a}
@end iftex

@node Skapa, Kommandon för att addera och subtrahera, Markeringar, Kommandon
@comment  node-name,  next,  previous,  up
@subsection Skapa

@table @asis
@item @code{Radera (text)}
@findex Radera (text)
Frågar efter inläggsnummer och raderar inlägget. Man kan även ange
inläggsnumret som prefixargument.
@end table

@node Kommandon för att addera och subtrahera, Ändra personuppgifter, Skapa, Kommandon
@comment  node-name,  next,  previous,  up
@subsection Kommandon för att addera och subtrahera.

Man kan addera en mottagare eller extra kopiemottagare till ett inlägg, en
medlem till ett möte eller ett inlägg som kommentar till ett annat inlägg.

@table @asis

@item @code{Addera mottagare}
@findex Addera mottagare
Frågar efter inläggsnummer och namnet på ett möte eller en person.
Defaultvärdet för inläggsnumret är senast lästa inlägg och defaultvärdet
för mötet är det senast adderade mötet.

Du får bara addera möten som du får lov att skriva inlägg i.


@item @code{Addera extra kopiemottagare}
@findex Addera extra kopiemottagare
Samma som Addera mottagare men adderar en mottagare av typen extra
kopiemottagare istället. Defaultvärdet för inläggsnumret är senast lästa
inlägg och defaultvärdet för mötet är den senast adderade extra
kopiemottagaren.

Du får bara addera möten som du får lov att skriva inlägg i.


@item @code{Subtrahera mottagare}
@findex Subtrahera mottagare
Frågar efter inläggsnummer och namnet på ett möte eller en person.
Inlägget får då inte längre angivet möte eller person som mottagare.
Defaultvärdet för i inläggsnumret är senast lästa inlägg och defaultvärdet
för mötet/personen är det möte som vi står i just nu.

Du får bara ta bort en mottagare om du är organisatör för mottagaren
eller författare till inlägget.


@item @code{Addera kommentar}
@findex Addera kommentar
Frågar efter två inläggsnummer. Det första inlägget kommer att
kommenteras av det andra. Default för det kommenterade inlägget
är senaste refererade inläggen.


@item @code{Subtrahera kommentar}
@findex Subtrahera kommentar
Frågar efter två inläggsnummer. Om det första inlägget, som har
aktuellt inlägg som default, är kommenterad av det andra inlägget
kommer denna bindning att plockas bort.

@end table

@node Ändra personuppgifter, Ändra mötesuppgifter, Kommandon för att addera och subtrahera, Kommandon
@comment  node-name,  next,  previous,  up
@subsection Ändra personuppgifter

@table @asis

@item @code{Börja med nytt namn}
@findex Börja med nytt namn
Logga ut den nuvarande personen ur LysKOM och börja med en ny
person utan att starta en ny session.


@item @code{Ändra namn}
@findex Ändra namn
Frågar efter vilket möte eller vilken person som skall ändra namn
samt det nya namnet. Om du inte är organisatör för mötet/personen
så misslyckas kommandot.


@item @code{Ändra lösenord}
@findex Ändra lösenord
Frågar efter vem du skall ändra lösenordet för, samt efter
ditt lösenordet. Därefter skall du mata in det nya lösenordet
två gånger. Detta för att fånga felstavningar.

Man kan ändra lösenordet för alla som man är organisatör
för. Om man är administratör kan man ändra lösenordet för
vem som helst.


@item @code{Sätt lapp på dörren}
@findex Sätt lapp på dörren
Frågar efter möte eller person som du vill sätta en lapp på för.
Lapp på dörren betyder att en person som försöker skicka brev till
personen/mötet får ett meddelande innan brevet sänds iväg. Detta
kan t ex vara användbart när man reser bort och vill lämna en
temporär adress. Man får också se lappen när man använder
kommandot @code{Status person} på personen.

@item @code{Ta bort lapp på dörren}
@findex Ta bort lapp på dörren
Frågar efter möte eller person och tar bort lappen på dörren för
personen/mötet i fråga.
@end table

@node Ändra mötesuppgifter, Meddelande, Ändra personuppgifter, Kommandon
@comment  node-name,  next,  previous,  up
@subsection Ändra mötesuppgifter

@node Meddelande, Filtrera, Ändra mötesuppgifter, Kommandon
@comment  node-name,  next,  previous,  up
@subsection Meddelanden

@table @asis

@item @code{Sända meddelande}
@findex Sända meddelande
Frågar efter en person eller ett möte att skicka ett meddelande till. Om
det är en personen så måste denne vara inloggad när meddelandet skickas
eftersom det inte lagras utan skickas direkt. Om det är ett möte så
kommer meddelande skickas till alla inloggade som är medlemmar i
mötet.

Om du innan har mottagit ett meddelande från någon annan så försöker
klienten gissa till vem du vill skicka meddelanden. Hur detta skall
göras styrs av variabeln @code{kom-default-message-recipient}. Om den
sätts till @code{everybody} så antar den att du alltid vill skicka till
alla. Om du istället sätter den till @code{group} eller @code{sender}
kommer den att gissa lite olika beroende på hur det meddelande du sist
mottog såg ut. Om detta var ett personligt meddelande kommer klienten
att gissa att du vill skicka ett personligt svarsmeddelande. Om det var
ett gruppmeddelande kommer den att gissa att du vill skicka ett
gruppmeddelande till samma grupp om du har satt
@code{kom-default-message-recipient} till @code{group}, eller ett
personligt meddelande till sändaren om du har satt den till
@code{sender}.

Om du inte ändrar variabeln är den satt till @code{group}.

Därefter frågar LysKOM efter meddelandet som du vill skicka och
skickar iväg det till mottagarna. 

@end table

@node Filtrera, Prioritera, Meddelande, Kommandon
@comment node-name, next, previous, up
@subsection Filtrera
@comment byers

@table @asis

@item @kbd{ff}
@itemx @code{Filtrera författare}
@findex Filtrera författare
@kindex ff
Lägger till ett filter som tar bort alla inlägg av en viss
person. Frågar efter författare, möte och typ av filtrering.

@item @code{fä}
@itemx @code{Filtrera ärende}
@findex Filtrera ärende
@kindex fä
Lägger till ett filter som tar bort alla inlägg med en viss
ärenderad. Frågar efter ärende, möte och typ av filtrering.

@item @kbd{ft}
@itemx @code{Filtrera innehåll}
@findex Filtrera innehåll
@kindex ft
Lägger till ett filter som tar bort alla inlägg som innehåller en viss
text. Frågar efter text, möte och typ av filtrering.

@item @kbd{äf}
@itemx @code{Ändra Filter}
@findex Ändra Filter
@kindex äf
Poppar upp en ny buffert som listar alla filter. I den här bufferten har
man tillgång till speciella kommandon för att ändra, ta bort och lägga
till nya filter. De kommandon som finns är:

@table @asis

@item @kbd{n, C-n}
Flytta markören till nästa rad i listan.

@item @kbd{p, C-p}
Flytta markören till föregående rad i listan.

@item @kbd{N, M-n}
Flytta markören till nästa filter i listan.

@item @kbd{P, M-p}
Flytta markören till föregående filter i listan.

@item @kbd{>, M->}
Flytta markören till slutet av sista filtret i listan.

@item @kbd{<, M-<}
Flytta markören till första raden av första filtret i listan.

@item @kbd{d, C-d}
Radera den rad markören står på.

@item @kbd{D, M-d}
Radera det filter markören står i.

@item @kbd{i, I}
Lägg till en rad i ett filter. Frågar efter filterfunktion.

@item @kbd{M-i}
Lägg till ett filter. Frågar efter filtertyp och tidsbegränsning.

@item @kbd{a}
Byt filtertyp. Kommandot växlar mellan alla tillgängliga alternativ.

@item @kbd{t}
Byt tidsbegränsning (bara mellan permanent och tillfällig).

@item @kbd{s}
Spara filterlistan.

@item @kbd{q}
Avsluta.

@end table
@end table

@node Prioritera, Ändra inställningarna, Filtrera, Kommandon
@comment  node-name,  next,  previous,  up
@subsection Prioritera

@table @asis

@item @code{Prioritera möten}
@findex Prioritera möten
Poppar upp en ny buffert som listar alla möten man är med i i den
ordning de finns lagrade i servern. I den här bufferten har man
tillgång till speciella kommandon för att kunna flytta om mötena
och ändra prioritet på dem. De kommandon som finns är förutom de
vanliga emacs-kommandona:

@table @asis

@item @kbd{u}
Flytta möte uppåt i listan. Med ett prefixargument flyttas
mötet så många steg.

@item @kbd{n}
Flytta möte neråt i listan. Med ett prefixargument flyttas
mötet så många steg.

@item @kbd{p}
ändra prioritet. Frågar efter ny prioritet på mötet.

@item @kbd{C-k}
@itemx @code{Kill}
Lägger upp mötet på en kill-stack. Med ett
prefixargument läggs de nästa X mötena på kill-stacken.
Att ett möte ligger på kill-stacken markeras genom att
första tecknet på raden är ett minustecken.

@item @kbd{C-y}
@itemx @code{Yank}
Tar översta mötet från kill-stacken och stoppar in
det före den rad du står på. Med ett prefixargument
stoppas de X översta mötena in.

@item @kbd{S}, @kbd{C-c C-c} eller @kbd{q}
Synonymer för att återgå till LysKOM-bufferten. Du kan
även gå till den genom att bara byta buffert (det är
snabbaste sättet att böjra läsa igen) men då kan det hända
att du får läsa saker och ting i fel ordning i den här
sessionen.

@end table

@kbd{C-k} och @kbd{C-y} passar bra för att flytta block av möten till olika
ställen. @kbd{u} och @kbd{n} är bra för den sista "finjusteringen".

@end table

@node Ändra inställningarna,  , Prioritera, Kommandon
@comment  node-name,  next,  previous,  up
@subsection Ändra inställningarna

@table @asis

@item Ändra variablerna
@findex Ändra variablerna
Poppar upp en ny buffert som listar dina nuvarnade inställningar.
Denna nya buffert har @code{edit-options} moden och ser dessutom 
likadan ut förutom det faktum att den bara innehåller de
variabler som är av intresse för LysKOM.
(@inforef{Edit Options,ändringsmode,emacs}.)

Alla kommandon funkar precis som i @code{edit-options} moden och de 
viktigaste är:
@table @asis
@item @kbd{0}
Sätt värdet till @code{nil}
@item @kbd{1}
Sätt värdet till @code{t}
@item @kbd{s}
Fråga efter värdet och sätt variabeln till det.
@item @kbd{n}
Gå till nästa variabel.
@item @kbd{p}
Gå till föregående variabel.
@end table

När du är nöjd med dina inställningar och vill skicka in dem
till LysKOM så trycker du @kbd{C-c C-c}.

Om du ångrar dig och inte vill skicka in några värden till
LysKOM så trycker du @kbd{C-c C-k}.

Noteras bör att om du ändrar LysKOM-variabler på något annat
sätt i din emacs än med kommandona beskrivna ovan så kommer det
aktuella värdet att visas i bufferten och sparas.

Om du däremot ändrar värdena i din emacs utan att efter det skicka
in värdena (med @kbd{C-c C-c} i denna bufferten) så kommer
inställningarna  du gjort inte att sparas i LysKOM utan går förlorade.
@end table

@node Administratörskommandon,  , Kommandon, Köra LysKOM
@comment  node-name,  next,  previous,  up
@section Administratörskommandon

@table @asis

@item @code{Övergå till administratörsmod}
@findex Övergå till administratörsmod
@ifinfo
För att kunna utnyttja kommandona på denna sida måste man
@end ifinfo
@iftex
För att kunna utnyttja kommandona i detta avsnitt måste man
@end iftex
först övergå i administratörsmod, vilket sker med detta
kommando. Dessutom måste du ha administrativa rättigheter i 
databasen, för att kommandona skall fungera.

@item @code{Övergå till normalmod}
@findex Övergå till normalmod
När man inte längre vill köra i administratörsmod kan
man slå av det med detta kommandot. Det hindrar dig att av misstag 
läsa inlägg som du inte får läsa mm.


@item @code{Stäng av servern}
@findex Stäng av servern
Sparar databasen och stänger av servern. Ofta finns det program som
automatiskt startar om servern igen.


@item @code{Sätt loginmeddelande}
@findex Sätt loginmeddelande
Ändrar loginmeddelandet.


@item @code{Ta bort loginmeddelande}
@findex Ta bort loginmeddelsde
Tar bort loginmeddelandet.

@end table


@node Namn, Skriva inlägg, Köra LysKOM, Top
@comment  node-name,  next,  previous,  up
@chapter Namn

När du skall ange ett mötes- eller person-namn så räcker det att
skriva en entydig del av namnet. Till exempel så räcker det (för
tillfället) att skriva @samp{ce} för att logga in som @samp{ceder}. Saker inom
parentes räknas inte, så @samp{Anders Andersson} och @samp{(Hej på dig) Anders
(och) Andersson (!)} är precis samma sak. Ofta kan man skriva @samp{m 10}
eller @samp{p 10} i stället för ett möte/en person om man vet att mötet har
nummer 10.

Om namnet består av mer än ett ord, t ex för- och efternamn, så behöver
bara entydiga delar av resp. delar skrivas. Antag att två personer
heter @samp{Lars Aronsson} resp. @samp{Lars Andersson}. @samp{L A} ger ingen entydig
matchning av namnet, men @samp{L Ar} eller @samp{L An} (eller @samp{l an}) kan bara
tolkas på ett sätt. Det räcker alltså i det här fallet att ange 4
tecken för att bestämma vilken person man menar. Detta gäller
naturligtvis också för mötesnamn.


@node Skriva inlägg, Flaggor, Namn, Top
@comment  node-name,  next,  previous,  up
@chapter Att skriva inlägg

För varje inlägg/kommentar man skriver får man upp en ny buffert. Man
kan skriva på flera inlägg samtidigt, och det spelar ingen roll i
vilken ordning man avslutar dem. Så länge som man har förbindelsen
till servern igång så kan man skicka in inläggen.

Överst i bufferten finns ett antal rader som talar om vem, vad eller
vilka som blir mottagare, och om det här är en kommentar till en
(eller flera) inlägg. Man kan ändra i det här fältet, men man ska vara
försiktig. Det finns fyra olika saker som kan stå här:

@example
Mottagare: <nr> Namn
Extra kopia: <nr> Namn
Kommentar till text nr.
Fotnot till text nr.
@end example

@code{nr} är ett decimalt tal. @code{Namn} är ett mötesnamn. När man ändrar i de
här fälten behöver man inte skriva så mycket. Det räcker med den
första bokstaven i varje rad och numret. I de två första fallen skall
numret stå inom klamrar. Ett exempel på hur man kan skriva är:

@example
M<6>
E<80>
K118
K 148
Fotnot 12.
@end example

Det här inlägget kommer att ha @code{möte 6} som mottagare. @code{Möte 80} får en
extra kopia. (Den enda skillnaden mellan @code{Mottagare} och @code{Extra kopia}
är att när någon kommenterar inlägget kommer kommentarerna bara att gå
till de möten som står som mottagare). Inlägget är en kommentar till
inlägg 118 och 148 och dessutom en fotnot till inlägg 12. (En fotnot och
en kommentar är i stort sett samma sak, men det är bara författaren
till ett visst inlägg som kan skriva en fotnot till den, och fotnoter
till ett inlägg skrivs ut före alla kommentarer).

Klienten litar blint på det nummer man anger. Ingen kontroll görs att
det stämmer med det som står efter klamrarna.

Man kan blanda rader av typ @code{M}, @code{E}, @code{K} och @code{F} i vilken ordning som
helst, men det får inte finnas några andra rader före ärenderaden. (Inte
ens en blankrad).

Efter alla @code{M}, @code{E}, @code{K} och @code{F}-rader skall det
komma en ärenderad. Den skall se ut så här:

@example
Ärende: <Här ska du skriva en rubrik>
@end example

När du kommenterar ett inlägg får du dess ärende-rad som default. 

Sen kommer en rad som bara har till uppgift att skilja texten från
rubriken. Efter den raden skriver du ditt inlägg. Du har tillgång till
alla vanliga emacs-kommandon, plus några som är specifika för den
emacs-mode som du skriver inläggen i (@code{kom-edit-mode}).

För att sända in inlägget trycker du @kbd{C-c C-c}. LysKOM kontrollerar
då att du angett @code{Ärende:}, och om du inte gjort det ber den dig
att fylla i det. Om du är säker på att du vill ha en tom ärenderad kan
du trycka @kbd{C-c C-c} direkt igen. När du har gjort detta så skickas
inlägget in till servern. Om allt gick bra så tas edit-bufferten bort
och du får tillbaks LysKOM-bufferten.  Inläggsnumret för det skapade
inlägget skrivs ut.

Om man ångrar sig och vill slänga inlägget man håller på att skriva,
innan man har skickat in det, trycker man @kbd{C-c C-k}. Då tas
bufferten bort, och man kommer tillbaks till LysKOM-bufferten.

Skulle du vilja ha med delar av det inlägg du kommenterar i ditt eget
inlägg kan du trycka @kbd{C-c i k} och då kommer hela det kommenterade
inlägget att läggas in där du var. Vill du i stället plocka in något
annat inlägg så skall du istället trycka @kbd{C-c i} följt av inläggsnumret på
det inlägg du vill ha med.

Om du bara vill titta på det inlägg du kommenterar eller fotnoterar
(t ex om du inte har satt flaggan @code{kom-write-texts-in-window}, se
nedan), men inte ha in det i inläggsbufferten så kan du trycka @kbd{C-c
å k} så delas skärmen i två fönster och den kommenterade eller
fotnoterade inlägget visas i det andra fönstret. För att spara plats
så visas endast inlägget och inte texthuvudet.

Om du vill lägga till någon extra mottagare eller kopiemottagare till
inlägget trycker du @kbd{C-c a m} resp. @kbd{C-c a k} och så får du ange
vem eller vilket möte du skall lägga till. Om du vill ta bort en
mottagare innan du skickar in inlägget är det bara att ta bort den rad
som anger mötet som mottagare (t.ex. med @kbd{C-k}).

@node Flaggor, Variabler, Skriva inlägg, Top
@comment  node-name,  next,  previous,  up
@chapter Flaggor

LysKOMs Emacslispklient har ett antal flaggor för att användaren skall kunna
anpassa uppförandet till sin smak. Flaggorna sparas med kommandot
@code{Ändra variabler}.

Här följer en lista över dessa flaggor samt vilka värden de kan
anta och deras betydelse i programmet.

Flaggorna dokumenteras genom att deras namn skrivs ut följt av deras
defaultvärde. I inlägget som förklarar flaggan listas möjliga värden. Om
ett annat värde än defaultvärdet önskas så skall man använda
funktionen @code{Ändra variabler}. Man kan också använda emacsfunktionen
@kbd{M-x set-variable} men då får man se till att spara variabelns
värde efteråt.

De flaggor som sparas i @code{common}-delen av user-arean är markerade med
@code{common}, de som per default sparas i @code{elisp}-delen med @code{elisp}.

@table @asis
@item @code{kom-created-texts-are-read}
@itemx @code{t} (@code{common})
@vindex kom-created-texts-are-read
Om icke-@code{nil} så markeras alla inlägg som skapas av användaren som
lästa. 


@item @code{kom-reading-puts-comments-in-pointers-last}
@itemx @code{t} (@code{common})
@vindex kom-reading-puts-comments-in-pointers-last
Om @code{nil} så skrivs rader av typen
@samp{Kommentar i text N av NN} i inläggshuvudet. Om icke-@code{nil} så skrivs
dessa rader ut efter själva inlägget.


@item @code{kom-print-number-of-unread-on-entrance}
@itemx @code{t} (@code{common})
@vindex kom-print-number-of-unread-on-entrance
Om icke-@code{nil} så skrivs antalet olästa i ett möte ut så fort
användaren går in i ett möte.


@item @code{kom-higher-priority-breaks}
@itemx @code{nil} (@code{elisp})
@vindex kom-higher-priority-breaks
Denna flagga avgör hur ett nytt inlägg i ett möte med högre
prioritet skall bryta läsningen av inlägg. Brytningen går till så
att man får upp prompten Läsa nästa prioriterade inlägg - eller
Gå till nästa prioriterade möte - och sedan läser man det nyss
inlagda inlägget istället för det som man normals skulle läst i
mötet. Efter prompten Läsa nästa prioriterade inlägg kommer man
tillbaka till exakt det ställe där man var.
@table @asis
@item @code{nil}
Bryter inte alls. Vi får vänta tills vi läst ut hela mötet. 
@item @code{t}
Bryter när vi läst klart ett kommentarsträd, alltså när vi normalt skulle
fått prompten Läsa nästa text.
@item @code{express}
Vi bryter mötet direkt, utan hänsyn till var vi är i kommentarkedjan.
@end table

@item @code{kom-presence-messages}
@itemx @code{t} (@code{common})
@vindex kom-presence-messages
Om icke-@code{nil} så skriver klienten ut fortlöpande rapporter om vilka
som går in i och ut ur LysKOM.


@item @code{kom-presence-messages-in-buffer}
@itemx @code{presence} (@code{elisp})
@vindex kom-presence-messages-in-buffer
Denna flagga reglerar vilka av LysKOMs meddelanden som skrivs in i
själva LysKOM-bufferten. De som inte skrivs in i bufferten fås enbart
på meddelanderaden och övriga skrivs både i meddelanderaden och i
bufferten. Denna flagga kan anta tre värden:
@table @asis
@item @code{nil}
Inga närvaromeddelanden skrivs ut.
@item @code{presence}
Meddelanden om vem som går in i och ut ur skrivs in i bufferten, övriga
meddelanden skrivs endast ut på meddelanderaden.
@item @code{t}
Alla meddelanden skrivs in i bufferten. Detta inkluderar, förutom de som
fås genom att sätta värdet till "presence", även meddelanden om vad
olika personer som är i samma möte som du gör.
@end table

@item @code{kom-show-where-and-what}
@itemx @code{t} (@code{elisp})
@vindex kom-show-where-and-what
Om icke-@code{nil} så skriver klienten ut vilken maskin varje användare
kör ifrån samt vad han håller på med när kommandot @code{Vilka är
inloggade} ges.

@item @code{kom-read-depth-first}
@itemx @code{t} (@code{common})
@vindex kom-read-depth-first
Om icke-@code{nil} så läses kommentarer och fotnoter före nya inlägg.
Detta gör att kommentarsträd söks av djup-först. Om flaggan sätts
till @code{nil} så görs sökningen bredd-först.


@item @code{kom-dashed-lines}
@itemx @code{t} (@code{common})
@vindex kom-dashed-lines
Om denna variabel är icke-@code{nil} så ramar klienten in 
alla inlägg med långa rader av @code{-}.


@item @code{kom-confirm-multiple-recipients}
@itemx @code{t} (@code{elisp})
@vindex kom-confirm-multiple-recipients
Om icke-@code{nil} så måste man bekräfta att alla mottagare
skall ha inlägget. Om det bara finns en mottagare frågar den
aldrig.


@item @code{kom-emacs-knows-iso-8859-1}
@itemx @code{t}
@vindex kom-emacs-knows-iso-8859-1

Denna variabel skiljer sig från andra i det avseendet att den inte
lagras i servern utan bara är lokal för just din emacs.

Om variabeln inte är till@code{nil} så kommer emacsen inte att
konvertera alla tecken den skriver ut till swascii.

@end table

@node Variabler, Hookar, Flaggor, Top
@comment  node-name,  next,  previous,  up
@chapter Variabler

Det finns ett antal variabler som man kan styra LysKOMs emacslispklients
uppförande med. Dessa är inte flaggor i den meningen att de inte bara
kan anta ett av flera fördefinierade värden, utan kan anta nästan
vilka värden som helst. Variabler i emacs sätts på samma sätt och
sparas på samma sätt som flaggor.

De variabler som sparas i @code{common}-delen av user-arean är markerade
med @code{common}, de som per default sparas i @code{elisp}-delen med @code{elisp}.

@table @asis


@item @code{kom-mercial}
@itemx @code{"Väntar.}" (@code{elisp})
@vindex kom-mercial
Denna variabel innehåller den sträng som skrivs ut varje gång man
inte har något nytt att läsa. Användaren uppmuntras att använda
humor och kvickhet i användandet av den.


@item @code{kom-default-mark}
@itemx @code{100} (@code{common})
@vindex kom-default-mark
Om denna flagga är icke-@code{nil} så måste den vara ett nummer mellan 1
och 255. Det är den markering som klienten sätter. är den @code{nil}
däremot så frågar klienten efter vilken markering vi skall ha.


@item @code{kom-page-before-command}
@itemx @code{nil} (@code{elisp})
@vindex kom-page-before-command
Om denna flagga är @code{t} kommer klienten att göra en
@code{(recenter 0)} före varje kommando börjar utföras.  Om
flaggan är en lista av symboler kommer klienten att göra
@code{(recenter 0)} före varje kommando som finns i denna lista.  Detta
för att utmatningen från alla kommando skall hamna på samma
ställe på skärmen.


@item @code{kom-write-texts-in-window}
@itemx @code{nil} (@code{elisp})
@vindex kom-write-texts-in-window
Om @code{nil} så används LysKOM-fönstret även som edit-fönster. Om det är en
buffert eller en sträng så kommer det fönster som denna buffert
visades i att användas. Om 'other så kommer emacs att välja ett
annat fönster eller skapa ett nytt fönster för denna editering.


@item @code{kom-membership-default-priority}
@itemx @code{100} (@code{elisp})
@vindex kom-membership-default-priority
Defaultprioritet som används när man blir medlem i ett möte. Om
denna variabel sätts till @code{nil} så frågar LysKOM efter en
prioritet varje gång istället.


@item @code{kom-membership-default-placement}
@itemx @code{last} (@code{elisp})
@vindex kom-membership-default-placement
Den här variabeln styr var möten som man blir medlem i placeras i
listan av möten som man är medlem i. Denna lista används för att
avgöra vilken ordning man får läsa mötena i.

Följande värden kan användas:

@table @asis
@item @code{first}
så stoppas nya möten in först.
@item @code{last}
så stoppas nya möten in sist.
@item ett tal
så kommer nya möten att stoppas in på denna position i listan. Värdena
@code{0} respektive ett @emph{stort} tal kommer att ha samma effekt som
@code{first} respektive @code{last}.
@end table


@vindex lyskom-header-separator
@item @code{lyskom-header-separator}
@itemx (@code{elisp})
Detta är den sträng som skiljer texten från huvudet
när man skriver inlägg.
Default: 
@example
"--- Skriv nedan. Skicka in=C-c C-c, Avbryt=C-c C-k, Annat se C-h m ---"
@end example

@item @code{lyskom-prompt-text}
@itemx @code{" - "} (@code{elisp})
@vindex lyskom-prompt-text
Prompten slutar med texten i denna variabel när LysKOM är redo att
ta emot kommandon.


@item @code{lyskom-prompt-executing-default-command-text}
@itemx @code{"."} (@code{elisp})
@vindex lyskom-prompt-executing-default-command-text
När man ger defaultkommandot med @key{SPC}, @key{LFP} eller @key{RET}
så bytas slutet av prompten till denna text.


@ifset fjuk

@item @code{kom-who-buffer-size-when-displaying}
@itemx @code{10} (elisp)
@vindex kom-who-buffer-size-when-displaying
Antalet rader som Vilkabufferten skall visas med när man ger kommandot
@code{Visa vilkalistan}. @xref{Vilkabufferten} och 
@ref{Annat, Visa vilkalistan}.

@end ifset

@item @code{kom-text-buttons}
@itemx @code{(Komplicerad)} (@code{elisp})
@vindex kom-text-buttons
En lista med sökmönser som används för att skapa aktiva områden i
texten. Värdet skall vara en lista av listor med formen
@example
(regexp action arg)
@end example
där REGEXP är en regexp som eftersöks i texten, ACTION är funktionen som
skall anropas vid musklick och ARG är ett extra argument till
funktionen. En knapp skapas på texten som matchar hela REGEXP, eller om
REGEXP innehåller en @code{\(\)}-konstruktion, den text som matchas av
den första sådana konstruktionen.

@item @code{kom-mosaic-command}
@itemx @code{"/usr/local/bin/mosaic"} (@code{elisp})
@vindex kom-mosaic-command
Variabeln anger var mosaic finns.

@ifset fjuk

@item @code{kom-do-when-starting}
@itemx @code{nil} (@code{elisp})
@vindex kom-do-when-starting
Denna variabel innehåller kommandon som skall utföras automatiskt
när man loggar in. Variabeln är en lista av kommandon.

Exempel:

Om du stoppar in:
@example
(setq kom-do-when-starting '("v" "ln"))
@end example
i din @file{.emacs} så händer följande när du går in i LysKOM:
@example
Gå till nästa möte - Vilka är inloggade
    <Här får du se vilka som är inloggade>
Gå till nästa möte - Lista nyheter
    <Här får du se din lista av nyheter>
Gå till nästa möte - 
@end example

@end ifset

@item @code{kom-login-hook}
@itemx @code{nil} (@code{elisp})

+++ Skriv dokumentation.

@item @code{kom-do-when-done}
@itemx @code{(kom-review-all-marked-texts kom-display-time)} (@code{elisp})
@vindex kom-do-when-done
Denna variabel innehåller kommandon som utförs då man har läst
klart alla inlägg. Varje kommando i listan skriver först ut en
prompt och där kan du naturligtvis göra alla de vanliga kommandona
också. 

Om ett element i @code{kom-do-when-done} är en lista, kommer elementen
i den listan att utföras i tur och ordning. Det sista elementet 
i @code{kom-do-when-done} kommer att upprepas tills man går ur LysKOM.

Ett exempel klargör nog dess funktion bäst.

Om man har stoppat in
@example
(setq kom-do-when-done '("åm" "t" ("q" "fu")))
@end example
i sin .emacs kommer följande beteende att uppvisas när man
läst slut:
@iftex
@nobreak
@end iftex
@example
Läsa nästa text -          ; Detta är det sista inlägget.
     <Här läser vi inlägget.>
Återse (alla) markerade - 
Återse nästa text -        ; Vi har bara ett markerat.
Se tiden -                 ; Innan vi hinner trycka @key{SPC} här,
                           ; kommer det ett nytt inlägg, varvid 
                           ; prompten byts till...
Läsa nästa text - 
Se tiden -                 ; Nu har vi läst inlägget.
Sluta -                    ; Vi svarar no.
Kommandot:"fu" -           ; Tangentbordsmakro
                           ; Här får du uppmuntran.
Sluta -                    ; Här kommer "sluta" tillbaka.  
                           ; Vi svarar no här också.
Kommandot:"fu"             ; Och "fu" dyker upp igen.
Sluta -                    ; Och sluta igen.
@end example

Elementen måste vara kommandon i LysKOM, dvs de måste kunna tolkas
som tangentbordsmakron eller som emacs-funktioner.


@item @code{lyskom-fetch-map-nos}
@itemx @code{50} (@code{elisp})
@vindex lyskom-fetch-map-nos
Anger hur stora mappar vi skall hämta i taget.


@item @code{lyskom-prefetch-conf-tresh}
@itemx @code{50} (@code{elisp})
@vindex lyskom-prefetch-conf-tresh
Avgör om vi skall fråga efter fler möten från servern.
Om de olästa inläggen i de hittills hämtade mötena 
är färre än detta värde så hämtar vi en bunt till.


@item @code{lyskom-prefetch-confs}
@itemx @code{10} (@code{elisp})
@vindex lyskom-prefetch-confs
Avgör hur många möten vi skall fråga efter i taget.


@item @code{lyskom-prefetch-texts}
@itemx @code{3} (@code{elisp})
@vindex lyskom-prefetch-texts
Avgör hur många inlägg som skall hämtas i förväg.
@end table

@node Hookar, Environmentvariabler, Variabler, Top
@comment  node-name,  next,  previous,  up
@chapter Hookar

Det finns en del hookar i LysKOMs emacslispklient. En hook är en variabel som
användaren kan definiera till en funktion. Varje hook hör ihop med en
speciell företeelse som LysKOMs emacslispklient gör. Om hooken är satt så
exekveras funktionen som den är satt till när detta händer. För
närmare information om vad en hook är kan du läsa emacs-
dokumentationen. (@inforef{Hooks,Hookar,elisp}.)

De hookar som sparas i @code{common}-delen av user-arean är markerade med
@code{common}, de som per default sparas i @code{elisp}-delen med @code{elisp}.

@table @asis

@item @code{lyskom-init-hook}
@vindex lyskom-init-hook
Denna anropas efter det att hela klienten laddats in. Kan användas
för att definiera om några LysKOM-funktioner eller ladda egna
funktioner.


@item @code{lyskom-mode-hook}
@vindex lyskom-mode-hook
Denna anropas när LysKOM-bufferten skapas. Kan t.ex användas för
att ställa in sina egna bindningar till tangenter, lokalt i den
bufferten.


@item @code{lyskom-new-text-hook} (@code{elisp})
@vindex lyskom-new-text-hook
Denna anropas när klienten får meddelande om att ett nytt inlägg har
skapats. Först stoppas inlägget in i alla listor och registreras, sedan
tas prompten bort. Därefter anropas denna hook. Sedan skrivs den nya
prompten ut. Denna hook kan alltså sortera om inläggen eller fixa till
andra saker som ger en annan prompt än default.

Om man inte vill att klienten sedan skall skriva ut meddelandet:
@samp{Text 4711 är skapad} så måste man sätta den lokala variabeln
@code{no-message} till någonting non-@code{nil} i denna hook. Man kan
använda sig av att den lokala variabeln @code{text-stat} är bunden
till text-status för det inlägg som förorsakar att hooken körs.


@item @code{lyskom-who-info-has-changed-hook} (@code{elisp})
@vindex lyskom-who-info-has-changed-hook
Denna anropas varje gång någonting i vilkabufferten har ändrats.
Observera dock att aktuell buffert är LysKOM-bufferten, inte
vilkabufferten.
Kan vara bra om man till exempel vill visa vilkabufferten när ens
kompis loggar in i LysKOM.


@item @code{lyskom-edit-mode-mode-hook}
@vindex lyskom-edit-mode-mode-hook
Denna anropas när man skall skriva ett inlägg. Om man vill ändra
vilken mode man skall använda när man skall skriva sitt inlägg skall
man sätta det i denna hook. LysKOM-systemet binder sedan om ett
par tangenter till, just för att man skall kunna lägga in inlägget
mm. men den grundläggande moden kan sättas med denna hook.

Ex: 
@example
(setq lyskom-edit-mode-mode-hook 'swedish-mode)
@end example
Detta exempel förutsätter dock att du har en swedish-mode
definierad.

Om du binder om tangenter till att generera andra bokstäver i 
denna mode så kommer de inte bara att gälla i edit-bufferten
utan även i minibufferten när du ändrar ärendet.


@item @code{lyskom-edit-mode-hook}
@vindex lyskom-edit-mode-hook
Denna anropas efter det att LysKOM har gjort alla sina
initieringar men innan du tillåts börja skriva inlägget.
Här lägger du in saker som du vill göra med edit-bufferten. Kanske
slå av @code{auto-save-mode} eller sätta @code{fill-column}.

Inte att förväxla med @code{lyskom-edit-mode-mode-hook}.


@item @code{lyskom-prioritize-mode-hook}
@vindex lyskom-prioritize-mode-hook
Denna anropas när man skapar prioritize-bufferten. Man kanske vill
ha lite privata funktioner laddade eller andra tangentbordsbindningar
i den moden.

@item @code{kom-quit-hook}
@vindex kom-quit-hook
Denna anropas när man har avslutat sin kom-session. T.ex om man vill
döda sin emacs då.

@item @code{kom-after-command-hook}
@vindex kom-after-command-hook
Denna anropas när ett kommando är helt utfört och det är
dags att ge nästa kommando.
@end table

@node Environmentvariabler, Buggrapporter, Hookar, Top
@comment  node-name,  next,  previous,  up
@chapter Environmentvariabler

@table @asis
@vindex KOMSERVER
@item @code{KOMSERVER}
Default komserver. Om @code{KOMSERVER} är satt så slipper användaren
mata in vilken server som skall användas vid första inloggningen. Annars
är default @file{kom.lysator.liu.se}.

@vindex KOMNAME
@item @code{KOMNAME}
Default användarnamn. Om @code{KOMNAME} är satt så frågar klienten inte
efter ditt namn vid första inloggningen.

@vindex KOMPASSWORD
@item @code{KOMPASSWORD}
Default lösenord. Om @code{KOMPASSWORD} är satt så frågar inte klienten
efter ditt lösenord vid första inloggningen.  Det är ganska olämpligt
att ha @code{KOMPASSWORD} satt utan att samtidigt ha @code{KOMNAME}
satt. Observera att på vissa UNIX-system så kan vem som helst se dina
environmentvariabler med hjälp av @code{ps -axeww}.
@end table


@node Buggrapporter, Filer, Environmentvariabler, Top
@comment  node-name,  next,  previous,  up
@chapter Buggrapporter

Det finns troligtvis många fel i klienten. Om du stöter på något som
borde fungera annorlunda, eller som inte fungerar alls, så skriv ett
mail till @file{bug-lyskom@@lysator.liu.se}. Synpunkter på den här texten
och systemet i övrigt kan också skickas dit.

En buggrapport skall innehålla information om:

@table @asis
@item Vilken emacs du kör. Namn och versionsnummer.
@item Vilken version av LysKOMs emacslispklient du kör.
@item Vilken LysKOM-server du har kopplat upp dig mot och versionsnummer.
@end table

@findex kom-bug-report
Det är bra om buggrapporten innehåller all tillgänglig information från
din körning. Dvs att du har kört funktionen @code{kom-bug-report} och
skickat med resultatet. Annars måste det till en extremt utförlig
beskrivning på hur felet uppkom för att vi skall ha någon som helst
möjlighet att veta vad det handlar om.

Om du skulle råka fixa felet själv så skicka med en context-diff
så kan vi lätt applicera den.

Om du inte har tillgång till mail så kan du skicka dina buggrapporter
med vanligt brev till:
@example
	Lysator
	c/o ISY
	Linköpings University
	S-581 83 Linkoping
	SWEDEN
@end example

Observera att det faktum att du skickar in en buggrapport inte på något
sätt är en garanti för att buggen kommer att fixas till en senare
version av klienten, eller ens att det någonsin blir en senare version
av klienten.

Om du däremot undviker att skicka in en buggrapport så finns det en
möjlighet att ingen någonsin får reda på just din bugg.

Om du tvunget vill ha en viss bugg rättad så finns det företag som åtar
sig sådant arbete. Skicka brev till @file{bug-lyskom@@lysator.liu.se} så kan vi
förmedla en sådan företagskontakt.



@node Filer, Index, Buggrapporter, Top
@comment  node-name,  next,  previous,  up
@chapter Filer

@table @asis
@item @file{lysator:/usr/local/lib/elisp/lyskom.el}
Senaste versionen av klienten.
@item @file{lysator:~ftp/pub/lyskom/elisp-client/lyskom-ver.nr.elc}
D:o
@end table


@node Index, Tangenterna, Filer, Top
@comment  node-name,  next,  previous,  up
@unnumbered Index
@printindex fn

@node Tangenterna, Variabelindex, Index, Top
@comment  node-name,  next,  previous,  up
@unnumbered Tangenterna
@printindex ky

@node Variabelindex,  , Tangenterna, Top
@comment  node-name,  next,  previous,  up
@unnumbered Variabelindex
@printindex vr

@bye
% Local variables:
% texinfo-master-menu-header: "\n --- Den specificerade nodlistan ---\n"
% End:
