Skip to content
Snippets Groups Projects
Select Git revision
  • 75f38fe8051f7e730d215563b8673edc0f4e34fd
  • master default
  • bidi-isolate
  • v0-45-1-maint
  • v0-38-2
  • v0.48
  • v0.45.2
  • v0.45.1.P1
  • last-in-cvs
  • v0.47.1
  • v0.47.1.BETA.2
  • v0.47.1.BETA.1
  • v0.47
  • v0.47.BETA.4
  • v0.47.BETA.3
  • v0.47.BETA.2
  • v0.47.BETA.1
  • v0.46.2.BETA.2
  • v0.46.2.BETA.1
  • v0.46.1
  • v0.46.1.BETA.5
  • v0.46.1.BETA.4
  • v0.46.1.BETA.3
  • v0.46.1.BETA.2
  • v0.46.1.BETA.1
25 results

elisp-faq

Blame
  • elisp-faq 16.71 KiB
    -*- swedish-iso -*-
    OSF Ofta ställda frågor för elispklienten. Version 2.0.
    
    Författare: Linus Tolke
    Inspirationskälla: Lyskom, Lyskom frågor (&) svar; Elispklienten.
    Detta möte heter från 31 juni 1992: Lyskom frågor (och) svar.
    
    Frågor sammanställning:
    
    Allmänna frågor:
    a1: Vad är LysKOM?
    a2: Vad är elispklienten?
    a3: Var finns den att hitta?
    a4: Vad finns det för typ av dokumentation?
    a5: Var hittar jag protokoll-specen för lyskomprotokollet.
    a6: Vem är Guran?
    
    Konfigurering:
    c1: Varför står det att vissa Läser, Väntar, Återser?
    c2: Varför står det att vissa Ögnar igenom inläggen, Rättar tentor,
        Äter pizza, Hade glömt vad som skrivits tidigare?
    c3: Hur ändrar man sin kom-mercial?
    c4: Hur ändrar man de andra meddelandena?
    
    d1: Kan jag få saker att hända automatiskt när jag startar lyskom?
    d2: Kan jag få saker att hända automatiskt när jag loggat in?
    d3: Hur kan jag sätta vilka default-promptar jag skall få när jag har
        läst ut allt. 
    d4: Hur gör man för att ändra variabler i lyskom?
    
    Vid editering:
    e1: Kan jag få saker att hända automatiskt när jag börjar skriva en
      : kommentar?
    e2: Hur gör jag för att binda speciella tangenter för att skriva en
        kommentar?
    e3: Jag får upp en tom buffert och ett pip när jag skall till att
        editera. Vad har jag gjort för fel?
    
    f1: Hur gör jag för att behålla lyskom-bufferten på skärmen medan jag
        skriver en kommentar, ett inlägg eller ett brev?
    
    Möten:
    g1: Hur gör man för att ändra typen på ett möte?
    g2: Hur ändrar man hur många dagar artiklar i ett visst möte sparas?
    
    Frågor om inlägg:
    i1: Hur anger man För kännedomsmottagare?
    i2: Hur flyttar man inlägg?
    
    Konstigheter:
    k1: Varför tar det så lång tid att logga in?
    k2: Varför tar det så lång tid att göra endast?
    k3: Varför sorterar elisp-klienten om mötena i samma ordning som när
        jag går in i lyskom varje gång jag gör endast?
    k4: Varför stämmer inte antalet olästa inlägg när jag gör status
        person som när jag gör lista nyheter?
    k5: Varför är antalet olästa i vissa möten negativt när man gör
        status?
    
    Lappar på dörrar:
    l1: Varför får jag Du har en lapp på dörren, det finns ingen sådan
        text när jag loggar in?
    
    Markering:
    m1: Vad innebär markering?
    m2: Kan man markera inlägg på olika sätt?
    m3: Hur gör jag för att markera inlägg på ett annat sätt?
    m4: Hur gör jag för att återse inlägg markerade på ett visst sätt?
    m5: Vilken markering använder sig elispklienten normalt av?
    
    Personer:
    p1: Varför finns det två statuskommandon: Status möte och status person?
    
    Sessionen:
    s1: Kan jag återstarta sessionen efter det att jag gått ur lyskom?
    
    Systemet:
    t1: Hur och till vem skickar jag buggrapporter?
    t2: Varför sparas databasen så ofta?
    
    Maskinspecifika saker:
    u1: Varför kan jag inte köra elisplienten på en dec-station.
    
    Vad händer med LysKOM i framtiden:
    v1: Protokoll B, vad är det?
    v2: Vad kommer att ingå i protokoll B?
    
    Historia:
    ö1: Varför skrevs elisp-klienten?
    
    
    Frågor och svar:
    
    Allmänna frågor:
    a1: Vad är LysKOM?
    
    LysKOM är ett konferenssystem som är inspirerat av KOM, det
    konferenssystem som skapades av QZ i Stockholm. Orsaken till att
    LysKOM skrevs var att det KOMsystem Lysators medlemmar hade tillgång
    till lades ner. QZ-KOM gick att köra på DEC-10 och DEC-20-maskiner och
    den sista DEC-20-maskinen på LiTH som studenterna hade tillgång till
    såldes och försvann. KOM hade blivit vanebildande för en del och det
    bedömdes att en ersättning var nödvändig.
    
    a2: Vad är elispklienten?
    
    Elispklienten är den första fungerande klienten till lyskom, det är
    dessutom den för tillfället mest kompletta. Den är skriven helt i
    elisp och kör under gnu-emacs (testad minst i versionerna 18.51,
    18.55, 18.57 och 18.58, epoch 4.0, lucid-emacs 19.1 och 19.2).
    
    a3: Var finns den att hitta?
    
    Elispklienten kan du hämta med anonym ftp från lysator:
    host: ftp.lysator.liu.se
    dir: /pub/lyskom/elisp-client/
    filnamn: lyskom-0.34.6.el.Z (vanliga klienten)
    filnamn: lyskom-0.34.6.elc.Z (byte-kompilerad version av klienten)
    filnamn: englist-lyskom-0.34.6.elc.Z
    
    a4: Vad finns det för typ av dokumentation?
    
    Dokumentation finns på latexinfo format. Eftersom jag inte fått den
    igenom latex så har jag inte lagt upp den för anonym ftp. Däremot har
    den gått igenom info-genereringsprogrammet och du kan alltså hämta den
    antingen som info-fil: elisp-client-0.34.6.info eller som ren textfil
    elisp-client-0.34.6.txt från samma dir som du hämtar klienten.
    
    a5: Var hittar jag protokoll-specen för lyskomprotokollet.
    
    Protokollspecen kan du hämta med anonym ftp från lysator:
    host: ftp.lysator.liu.se
    dir: /pub/lyskom/
    filnamn: prot-A.txt
    
    a6: Vem är Guran?
    
    Fantomens vän, bandarernas hövding.
    
    
    Konfigurering: (Om du inte förstår beskrivningarna av hur du skall
    göra olika saker så skall du inte göra dem.)
    
    c1: Varför står det att vissa Läser, Väntar, Återser?
    
    Specifikationen för LysKOM säger att klienten kan tala om för servern
    vad den tror att användaren gör. Detta kan vara en godtycklig text.
    
    Elispklienten har valt att tala om att användaren Läser när hon läser,
    Väntar när hon väntar och Återser när hon återser mm.
    
    Elispklienten har dessutom valt att hela tiden skriva ut på
    message-raden vad personer i samma möte just nu sysslar med. (dvs när
    deras klienter skickar meddelanden.)
    
    c2: Varför står det att vissa Ögnar igenom inläggen, Rättar tentor,
        Äter pizza, Hade glömt vad som skrivits tidigare?
    
    Eftersom det står klienten fritt att sända in vilket meddelande som
    helst har vi gjort så att meddelandet som talar om vad man gör när man
    läst ut alla möten är väldigt lätt att ändra. Det ligger i variabeln
    kom-mercial och det är en sträng.
    
    c3: Hur ändrar man sin kom-mercial?
    
    M-x set-variable <RET> kom-mercial <RET> "Rättar tentor." <RET>
    
    c4: Hur ändrar man de andra meddelandena?
    
    Det finns en assoc-lista i variabeln kom-tell-phrases som består av
    symboler och texter som klienten skickar till servern när kommandona
    med samma namn som symbolen utförs. Det är bara att ändra denna.
    
    Varning: Om du tar bort saker ur denna lista kan det bli problem om
    inte klienten hittar symbolen den söker efter.
    
    d1: Kan jag få saker att hända automatiskt när jag startar lyskom?
    
    Ja, lyskomklienten skapar en emacsmode med de flesta vanliga
    defaulten. Bl.a. körs lyskom-mode-hook när man startar lyskom.
    
    d2: Kan jag få saker att hända automatiskt när jag loggat in?
    
    Ja, läs dokumentationen för kom-do-when-starting.
    
    d3: Hur kan jag sätta vilka default-promptar jag skall få när jag har
        läst ut allt.
    
    Default är att först få prompten Återse alla markerade - och sedan 
    Se tiden.
    Läs dokumentationen för kom-do-when-done.
    
    d4: Hur gör man för att ändra variabler i lyskom?
    
    Vissa variabler lagras i din user-area i LysKOM-servern. Det är de som
    finns listade i variabelerna lyskom-elisp-variables,
    lyskom-global-boolean-variables och lyskom-global-non-boolean-variables.
    Du kan ändra dessa och andra kom-variabler mha. kommandot Ändra
    variabler. När du ger kommandot Ändra variabler kommer en speciell
    buffert upp. Den fungerar precis som emacs *List Options* buffert
    förutom när du trycker C-c C-c. Då sparar den nämligen dina variabler
    i servern.
    
    Ändra aldrig på variablerna lyskom-global-*-variables! Om de är fel så
    är det en bugg i klienten.
    
    Vid editering:
    e1: Kan jag få saker att hända automatiskt när jag börjar skriva en
        kommentar?
    
    Ja, editeringsmoden är en vanlig emacs-mode så tillvida att den kör
    lyskom-edit-mode-hook när man startar den.
    
    e2: Hur gör jag för att binda speciella tangenter för att skriva en
        kommentar?
    
    Eftersom lyskom-edit-mode gör vissa speciella tangentbortsbindningar
    och har en hel del buffertlokala variabler kan man inte välja en helt
    ny mode i lyskom-edit-mode-hook (i princip alla moder rensar ju alla
    lokala variabler). Vill man att lyskom-edit-mode skall få andra
    grundinställningar som byggs på skall man sätta
    lyskom-edit-mode-mode-hook som körs innan de speciella bindningarna
    görs.
    
    
    e3: Jag får upp en tom buffert och ett pip när jag skall till att
        editera. Vad har jag gjort för fel?
    
    Din lyskom-edit-mode-mode-hook har evaluerat ett lisp-uttryck som har
    misslyckats. Kolla vad den försöker göra och fixa så att den inte
    misslyckas.
    
    f1: Hur gör jag för att behålla lyskom-bufferten på skärmen medan jag
        skriver en kommentar, ett inlägg eller ett brev?
    
    Du talar om för elisp-klienten att du vill att den skall använda det
    andra fönstret/skapa ett nytt fönster för att skriva i genom att sätta
    variabeln kom-write-texts-in-window till other.
    
    (setq kom-write-texts-in-window 'other) i din .emacs till exempel.
    
    
    Möten:
    g1: Hur gör man för att ändra typen på ett möte?
    
    Det gör du inte med elisp-klienten.
    
    g2: Hur ändrar man hur många dagar artiklar i ett visst möte sparas?
    
    Använd kommandot ändra livslängd.
    
    Frågor om inlägg:
    i1: Hur anger man För kännedomsmottagare?
    
    Det finns inte någon sådan möjlighet. Använd Mottagare eller Extra
    kopiemottagare:
    
    i2: Hur flyttar man inlägg?
    
    Det finns ingen sådan möjlighet. Använd kommandona Addera mottagare
    eller Addera extra kopiemottagare resp. Subtrahera mottagare för vart
    och ett av inläggen du vill flytta. Om du vill skriva kommandona
    Flytta inlägg, eller flytta kommentarsträd så får du.
    
    Konstigheter:
    k1: Varför tar det så lång tid att logga in?
    
    Lokalt på din maskin sparas ingen som helst information om vilka
    texter du läst eller vilka möten du är medlem i. Allt detta hämtas
    nytt varje gång du loggar in. Dessutom hämtas en lista på alla texter
    du har markerat (för att du skall kunna få fram texten Markerat av
    dig. eller Markerat av dig och 5 andra. när du läser).
    
    Det som tar längst tid är antabligen vilka möten du är medlem i och
    listan över olästa inlägg i dessa mötena.
    
    k2: Varför tar det så lång tid att göra endast?
    k3: Varför sorterar elisp-klienten om mötena i samma ordning som när
        jag går in i lyskom varje gång jag gör endast?
    
    Endast är för tillfället lite korkat implementerat. Det finns nämligen
    ett anrop till servern som gör just endast. Detta använder sig
    klienten av och sedan gör den det som är lättast: Hämtar om all din
    information från början igen (som när du loggade in).
    
    k4: Varför stämmer inte antalet olästa inlägg när jag gör status
        person som när jag gör lista nyheter?
    
    Antalet olästa du får fram med lista nyheter är det antal som klienten
    känner till. (Alla dessa ligger som nummer i listor.)
    
    Antalet olästa när du gör status person beräknas ur en ganska simpel
    formel: Det sista skrivna inlägget i mötet - Det sista du läste i
    mötet. Har du gått med i ett möte efter det att inlägg plockats bort
    därifrån och sedan inte läst något där så har det sista du läste i
    mötet mycket lägre nummer än det sista skrivna inlägget i mötet.
    
    k5: Varför är antalet olästa i vissa möten negativt när man gör
        status?
    
    Antalet olästa när du gör status person beräknas ur en ganska simpel
    formel: Det sista skrivna inlägget i mötet - Det sista du läste i
    mötet. Har du gått med i ett möte efter det att inlägg plockats bort
    därifrån och sedan inte läst något där så har det sista du läste i
    mötet mycket lägre nummer än det sista skrivna inlägget i mötet.
    
    Informationen om vilket som är det sista skrivna inlägget i ett visst
    möte ligger i klienten sparad hos mötet och uppdateras för varje
    inlägg som skrivs. Informationen om vilket det sista inlägg du läste
    ligger i klienten sparad hos personen och uppdateras bara om du ändrar
    namn.
    
    
    Lappar på dörrar:
    l1: Varför får jag Du har en lapp på dörren, det finns ingen sådan
        text när jag loggar in?
    
    Du har tagit bort lappen på fel sätt. Du skall använda kommandot 
    "Ta bort lapp på dörren" för att ta bort en lapp. Det du måste göra
    för att fixa detta är att använda kommandot "Ta bort lapp på dörren"
    och ta bort den obefintliga lappen.
    
    
    Markering:
    m1: Vad innebär markering?
    
    Markering är ett sätt för dig att spara inlägget. Markerade inlägg
    rensas inte bort av systemet.
    
    m2: Kan man markera inlägg på olika sätt?
    
    Ja.
    
    m3: Hur gör jag för att markera inlägg på ett annat sätt?
    
    Sätt variabeln kom-default-mark till nil så får du en fråga varje
    gång du markerar ett inlägg. Alternativen är heltalen 1-255.
    
    m4: Hur gör jag för att återse inlägg markerade på ett visst sätt?
    
    Använd kommandot Återse markerade (åm) istället för Återse alla
    markerade (åam).
    
    m5: Vilken markering använder sig elispklienten normalt av?
    
    100.
    
    
    
    Personer:
    p1: Varför finns det två statuskommandon: Status möte och status person?
    
    Om du tittar noggrannare ser du att de ger helt olika information.
    Status möte för en person talar om när personen skapades, när någon
    sist skickade ett brev till denne medan Status person talar om hur
    mycket inlägg personen skrivit, hur länge han har varit inne i LysKOM.
    
    
    Sessionen:
    s1: Kan jag återstarta sessionen efter det att jag gått ur lyskom?
    
    Nej.
    
    
    Systemet:
    t1: Hur och till vem skickar jag buggrapporter?
    
    Buggrapporter skickas till bug-lyskom@lysator.liu.se. Se till att få
    med all vital information, enklast genom att köra funktionen
    kom-compile-bug-report och skicka den bufferten.
    
    Ifall buggen är reproducerbar och du har tid så gör dessutom följande:
    - Gå till läget precis innan du gav kommandot som orsakade buggen.
    - Sätt variabeln: lyskom-debug-communications-to-buffer till t.
    - Sätt variabeln: debug-on-error till t.
    - Provocera fram buggen.
    - Kör kom-compile-bug-report. Det skall gå bra att göra i *Backtrace*
      bufferten ifall du fick en sådan.
    - Skicka in denna nya bufferten istället. Den kan innehålla lite mer
      information.
    
    t2: Varför sparas databasen så ofta?
    
    Ursprungligen sparade servern allting på en gång. Den sade, jag sparar
    nu och sedan sparade den om hela databasen (vilket tog flera minuter).
    Detta skrev ceder om så att den istället sparar efter han, dvs den kan
    ta emot anrop och svara på dem samtidigt som den sparar.
    
    Att du får ett "Nu sparar jag" meddelande är att den antingen börjar
    spara eller slutar spara. Det är då den gör de saker i samband med
    sparandet som den inte kan göra medan den svarar på andra anrop
    (markera vilken data som den i värsta fall måste ha 2 kopior av ända
    tills den har sparat klart, resp slänga den data den har haft 2 kopior
    av.) Själva sparandet kan sedan mycket väl ta mer än en kvart.
    
    
    Maskinspecifika saker:
    u1: Varför kan jag inte köra elisplienten på en dec-station.
    
    string-to-int fungerar inte på samma sätt. (Antagligen beroende på att
    atoi inte fungerar på samma sätt).
    
    Här är en patch som kan läggas i .emacs eller liknande:
    
    ;;;; fix to make string-to-int behave the same on DECstation as on sun
    (if (= 0 (string-to-int "\n17"))
        (progn
          (fset 'string-to-int-orig (symbol-function 'string-to-int))
          (defun string-to-int (string)
            "Convert STRING to an integer by parsing it as a decimal number.
    Skip leading spaces and newlines."
            (if (length string)
                (let ((i 0)
                      (c (aref string 0)))
                  (while (or (= c ?\n) (= c ?\ ))
                    (setq i (1+ i))
    		(setq c (aref string i)))
                  (string-to-int-orig (substring string i)))
              0))))
    
    
    Vad händer med LysKOM i framtiden:
    v1: Protokoll B, vad är det?
    LysKOM jobbar som sagt med server-klient modell. Protokollet är enkelt
    men innehåller en del speciella saker typ asynkrona anrop från båda
    hållen... Den ursprungliga specen gjordes snabbt eftersom vi snabbt
    ville få ett fungerande system. Tyvärr fick det en del brister och vi
    bestämde oss för att göra om allt från scratch. Detta omgjorda
    protokoll är protokoll B. Tyvärr så är det ursprungliga protokollet så
    pass bra att det går långsamt med utvecklingen.
    
    v2: Vad kommer att ingå i protokoll B?
    * Textdelar (Lars Aronsson Lysator inlägg 58964):
    I Protokoll B mellan klient och server kommer varje INLÄGG att bestå
    av det vanliga HUVUDET och av en INLÄGGSKROPP. Den senare kommer att
    bestå av en följd av KROPPSDELAR. Varje kroppsdel har en datatyp och
    en dataarea. Typerna kan vara t.ex. ISO 8859-1 text, Sun SPARC ljudfil
    eller en grafisk bild. I Protokoll B blir det i de flesta fall fel att
    tala om "text", "textstatus", "textnummer" etc. Ordet "text" bör då
    ersättas med ordet "inlägg".
    
    Historia:
    ö1: Varför skrevs elisp-klienten?
    
    Ur: En slö implementatörs bekännelser av ceder (Per Cederqvist)
    
    En gång i tidernas begynnelse (för lite drygt ett år sen) (Detta
    skrevs ursprungligen i november 1991) behövde jag testa
    LysKOM-servern. Jag hade kört rått med telnet direkt mot porten, men
    det blev jobbigt efter ett tag. Jag bestämde mig för att skriva ett
    litet elispprogram för att kunna testa servern.
    
    Mitt mål var från början att testa servern (och att programmera något
    annat än servern - det hade blivit många rader C-kod under våren och
    sommaren, och nästan alla hörde till servern). Jag skrev elispkoden
    med målet att få det att fungera hjälpligt så fort som möjligt, inte
    att göra den korrekt och komplett.
    
    ---
    När klienten väl fungerade var det alldeles för kul att skriva nya
    funktioner till den för att man skulle kunna låta bli så sedan dess
    har det bara blivit mer och mer och för tillfället är det den mest
    kompletta LysKOMklient som finns. Nackdelen: långsamhet kan lätt
    åtgärdas genom att köra på en snabbare maskin.