Commit ddc14405 authored by David Byers's avatar David Byers Committed by Per Cederqvist

Added NEWS file

parent 0a79c013
Nyheter i lyskom.el 0.45.2
==========================
Version 0.45.2 av elispklienten finns nu tillgänglig på följande URL.
<URL:ftp://ftp.lysator.liu.se/pub/lyskom/elisp-client/>
Filen heter lyskom-0.45.2.tar.gz, och en kopia av den text du läser
just nu finns under namnet NEWS-0.45.2 samt under namnet NEWS-0.45.2 i
tar-arkivet.
Detta är en mindre uppgradering av 0.45.1 som i första hand åtgärdar
en del kompatibilitetsproblem med Gnu Emacs 20.3 och 20.4, och med
senare versioner av XEmacs. Om du använder Gnu Emacs 19.34 är det inte
nödvändigt att uppgradera. Den här versionen är inte testad lika noga
som 0.45.1 var.
Det behövs folk som jobbar med LysKOM-projektet. Om du är intresserad
av att hjälpa till med (eller ta över) utvecklingen av elispklienten
så säg bara till. Jag har inte tid.
David Byers <byers@lysator.liu.se>
* Se NEWS-0.45 och NEWS-0.45.1 för information om 0.45 i största
allmänhet.
* Fitjurs och förbättringar
** Bättre kompatibilitet med version 20.3 och 20.4 av Gnu Emacs.
Bättre kompatibilitet med sena versioner av XEmacs.
** Det borde gå att ladda lyskom.elc mer än en gång utan att förstöra
sina inställningar.
** Om man skriver in ett namn som matchar mer än ett i databasen, och
matchar det ena exakt utan parentes så kommer det att accepteras
som unikt. Förr var man tvungen att skriva in parentesen också.
** Om man inte har w3 installerat så försöker klienten inte längre
anropa w3 för att formattera HTML.
** Textfärger och bakgrundsfärger i HTML ignoreras.
* Kända buggar
** För att alls fungera i Gnu Emacs 20.1 så stänger elispklienten
explicit av stödet för multibytetecken i sina buffertar. Det kan
hända att vi har missat något ställe. Säg till om du upptäcker
något som verkar underligt.
** Det kan vara problem att prata med lyskomd 1.7.0 eller äldre. I
Nästa version kommer det garanterat inte att fungera alls.
Nyheter i lyskom.el 0.46
========================
Version 0.46 av elispklienten finns nu tillgänglig på följande URL.
<URL:ftp://ftp.lysator.liu.se/pub/lyskom/elisp-client/>
Filen heter lyskom-0.46.tar.gz, och en kopia av den text du läser just
nu finns under namnet NEWS-0.46 samt under namnet NEWS-0.46 i
tar-arkivet.
Det här är sista releasen av elispklienten som jag planerar att göra.
Det vore väldigt bra om några intresserade personer tog över ansvaret
för projektet så att det fortsätter att utvecklas.
David Byers <byers@lysator.liu.se>
* Försämringar
** En hel del bakåtkompatibilitet är borta. Det går antagligen inte
att köra Elispklienten mot lyskomd 1.7.0 eller äldre. Det borde
inte vara några allvarliga problem med lyskomd 1.8.0.
* Fitjurs, förbättringar och andra förändringar
** Kommandot "Spara text (på fil)" har bytt namn till "Arkivera inlägg
(till fil)". Ett nytt kommando "Spara inläggstext (på fil)" sparar
bara inläggskroppen (och tömmer filen om den redan fanns.)
** Mail som importeras av en modern importör, till exempel
komimportmail, visas prydligt. Variablerna
kom-show-imported-envelope-sender,
kom-show-imported-external-recipients och
kom-show-imported-importer styr detaljerna.
** Nytt kommando Återse brevhuvud visar e-mail-headers för mail
importerade med en modern importör.
** Se tiden kan visa veckonummer.
** Personliga meddelanden kan visas med klockslaget då de kom.
** Nytt kommando "Ändra prioritet" för att ändra prioritet på ett
visst möte. Det går som förut att göra med "Bli medlem" också.
** Det går mycket fortare att logga in än tidigare, speciellt om man
är med i många möten och bara har olästa i en liten del av dem.
Klienten belastar även servern i mycket mindre utsträckning
under inloggningsfasen.
** Återsefunktionerna är lite mer robusta. Om man återser inlägg och
blir avbruten av ett prioriterat möte så kommer klienten att återgå
till återseendet när man har läst ut mötet. Man kan även styra vad
som kan avbryta återseende genom att sätta variabeln
kom-review-priority till något lämpligt (255 eller högre om man
aldrig vill att återse skall avbrytas av prioriterade inlägg eller
möten.)
** Det går att filtrera personliga, grupp- och alarmmeddelanden.
Variabeln kom-ignore-message-senders är en lista av avsändare vars
meddelanden inte skall visas. kom-ignore-message-recipients är en
lista av mottagare som man inte vill se meddelanden till.
** Man kan styra hur klienten skall pipa när det kommer personliga,
eller alarmmeddelanden från specifika avsändare och
gruppmeddelanden till specifika mottagare. Se dokumentationen för
kom-ding-on-personal-messages, kom-ding-on-group-messages och
kom-ding-on-common-messages för mer information.
** Möten med prioritet noll betraktas inte längre som passiva
medlemskap eftersom den senaste servern har riktigt stöd för
passiva medlemskap. Det går att simulera det gamla beteendet genom
att sätta läsnivå till ett eller högre. Använd variabeln
kom-default-session-priority för att sätta grundnivån i nya
sessioner.
** Om man gillar långa streckade linjer kan man få det på de flesta
håll. Slå på kom-long-lines och sätt kom-text-header-dash-length
och kom-text-footer-dash-length till så långa streck du vill ha
före och efter inläggstexten.
** Kommandot Återse lista visar information om vanlig läsning också,
inte bara återseende. Det är alltså användbart i fler lägen än det
gamla kommandot var.
** När man ändrar svarsmeddelande så får man editera sitt gamla
meddelande.
** Prefix till Lista Möten anger hur många olästa som skall finnas för
att mötet skall visa. Anger man noll så kommer alla möten att
visas.
** Vilkalistan har numera en tidsstämpel.
** Om man trycker C-u före kommandon för att kommentera, skriva privat
svar eller skriva fotnot så är defaultvärdet för inlägget man skall
kommentera det inlägg som markören står på.
** Man kan lägga till och ta bort fotnoter med kommandona Addera
fotnot och Subtrahera fotnot.
** När man går ur ett möte blir man först passiv medlem. För att gå ur
mötet på riktigt så måste man upprepa utträdet. Detta beteende går
att styra med variabeln kom-unsubscribe-makes-passive.
** Elispklienten är lite mer Gnus-kompatibel. Om man råkar köra XEmacs
och kom-smileys är satt, så kommer gladmän att visas som små
bilder.
** Stöd för tilläggsinformation på inlägg och möten. Se nedan.
** Lista markeringar ger en lista av alla markerade inlägg.
Ett numeriskt prefixargument väljer vilken markeringstyp man vill
lista.
** Om man skickar brev till ett möte man är medlem i så läggs man inte
längre till som mottagare.
** Man kan ge prefixargument när man skriver inlägg. C-u i gör att
elispklienten frågar efter mottagare. Kommandot skiljer sig från
att skicka brev genom att avsändaren inte läggs till som mottagare.
Man kan ge numeriskt prefix också. Då blir mottagaren för brevet
mötet med det nummer man angav, vare sig mötet finns eller inte och
helt oavsett om man kan skriva inlägg i mötet eller inte.
** Om man försöker radera ett inlägg som är markerat av någon så
gnäller elispklienten lite, och begär att man bekräftar det.
** Om man raderar ett inlägg som man själv har markerat så avmarkeras
det samtidigt.
** Elispklienten frågar om man vill lägga till en kommenterad
författare som mottagare enbart om man har rätt att skicka brev
till den mottagaren.
** Frågan om alla mottagare till ett inlägg är relevanta ställs enbart
om det finns mer än en fullvärdig mottagare. Extrakopiemottagare
och för kännedom räknas inte.
** Man kan markera med markering 0 nu.
** Om servern har ett alias, som LysKOM, LuddKOM, HelKOM eller TokKOM
så skrivs detta ut i alla närvaromeddelanden. Om servern inte har
ett alias så används "KOM" där det förr stod "LysKOM".
** Nytt kommando: Vilka (är inloggade) i möte (bundet till lv)
Som vilka, men visar endast medlemmar i ett visst möte.
** Nytt kommando: Ändra parentes.
** Man kan citatmarkera text vid editering av ett inlägg med
comment-region.
** Man kan simulera högerknapptryckning med "=" för att kunna använda
menyer med tangentbordet.
** Med lyskomd 2.0 så är klienten bättre på att hålla sin cache
uppdaterad.
** Långa inlägg kan kortas av när man återser dem. Se inställningarna
för "Korta av långa inlägg".
** Vilkalistorna kan även visa när en session kopplades upp, och hur
länge den har varit inaktiv. Se inställningen "Visa när personer
loggade in och när de var aktiva".
* Tilläggsinformation
I den senaste versionen av LysKOM-protokollet finns det möjlighet att
knyta godtycklig information till inlägg och till möten. Den största
ändringen i elispklienten från version 0.45.1 är möjligheten att
utnyttja detta. Det har tillkommit ett antal nya kommandon för detta i
LysKOM-bufferten och i inläggsbufferten.
** Tilläggsinformation i LysKOM-bufferten
*** Efter tilläggsinformation visas en liten knapp "[*]". Om man
klickar på den så visas full information om tillägget.
*** Om man håller nere högerknappen över en sådan knapp så går det även
att radera tillägget.
*** Om ett inlägg är märkt med typinformation så används den
informationen för att formattera inlägget.
*** Om författaren till ett inlägg har begärt att ingen skall
kommentera inlägget så ber elispklienten om bekräftelse innan man
kommenterar.
*** Om författaren till ett inlägg har begärt personliga svar och man
försöker kommentera inlägget så frågar klienten om man vill skriva
personligt svar istället.
*** Om författaren till ett inlägg har begärt att alla som läser det
skall bekräfta läsning så frågar elispklienten om man vill
bekräfta varje gång inlägget visas (tills man har bekräftat det
förstås.)
*** Möten kan ha FAQer. Kommandona Ta bort FAQ, Addera FAQ och Återse
FAQ (bunden till åq) används för att manipulera och läsa FAQer.
Servern raderar aldrig en FAQ automatiskt, oavsett hur gammal den
är.
*** Man kan skriva korta repliker till inlägg. Dessa är tänkta att
ersätta vissa typer av "adderingsmöten" som finns i flera
KOM-system. Kommandona "Hålla med" (rh) och "Kort replik" (rr) är
till för att skriva repliker. Se även dokumentationen av variabeln
kom-agree-text för mer information.
** Tilläggsinformation i inläggsbufferten
*** Det går att skapa korsreferenser till andra inlägg eller möten
genom att trycka på C-c C-a C-x. Korsreferenser är bra när man
vill hänvisa till ett annat inlägg eller till ett möte. De visas
samlat, och eftersom klienterna vet vad de är så kan de lätt visa
det som hänvisas till.
*** Genom att trycka på C-c C-x C-b så kan man begära att alla som
läser inlägget bekräftar detta. Elispklienten frågar om man vill
bekräfta läsning när ett sådant inlägg visas.
*** Om man inte vill att andra skall kommentera ens inlägg så kan man
trycka på C-c C-x C-n för att begära detta. Detta är rådgivande,
inte tvingande. Det går fortfarande att kommentera inlägget. I
elispklienten måste man bekräfta att man vill kommentera ett
inlägg med denna markering.
*** Om man enbart vill ha personliga svar till ett inlägg så kan man
begära detta genom att trycka på C-c C-x C-p. Det går fortfarande
att skriva vanliga kommentarer, men klienter som känner till den
här markeringen bör göra det lite svårare.
*** Genom att manipulera menyn som visas när man håller ned höger
musknapp ovanför den lilla haken i vänstermarginalen framför
tilläggsinformationen så kan man växla vissa parametrar. Hemlig
innebär att tillägget inte visas för någon annan, anonym att vem
som lade till tillägget inte visas för någon annan (informationen
lagras dock i servern) och ärvd innebär att tillägget kopieras
till kommentarer som skrivs till inlägget.
Notera att servern helt godtyckligt kan ta bort eller lägga till
flaggor, utan någon som helst varning, och gör ofta detta. Lite
inte på att du blir anonym bara för att du begär det...
Bugfixar
** Om man skriver in ett namn som matchar mer än ett i databasen, och
matchar det ena exakt utan parentes så kommer det att accepteras
som unikt. Förr var man tvungen att skriva in parentesen också.
** Det går att ladda elispklienten mer än en gång i samma Emacs utan
att allting går sönder.
** Man kan välja språk genom att sätta kom-default-language till det
språk man vill ha.
** De extremt långa inloggningstiderna som en del personer upplevde
(dvs tiden det tog att få första prompten) är förhoppningsvis
borta.
** Om man inte har w3 installerat så försöker klienten inte längre
anropa w3 för att formattera HTML.
** Vi använder lite färre gamla anrop som vi inte borde använda.
HOW READING WORKS
David Byers
This file aims to explain how the client knows what to read next
and how you can tell the client to let the user read certain
texts.
Most developers do not need to know these details.
The client uses two variables to control what is scheduled to be
read: lyskom-to-do-list and lyskom-reading-list. lyskom-to-do-list
contains everything to do in the future. lyskom-reading-list
contains information about what is being read now. The lists
contain elements of type READ-INFO.
There are several different types of read-infos:
CONF Read texts in a conference. The read-info contains the
conf-stat of the conference, a list of texts to read
and some other stuff (I don't remember exactly what.)
COMM-IN Read a comment to some other text. The read-info
contains the conf-stat in which the text is being
read, the priority of that conference, a list of
comments to a text (that presumably has just been
read), the text that has comments, and some other
stuff.
FOOTN-IN Read a footnote to some other text. The read-info is
essentially the same as a COMM-IN.
REVIEW Review one of more texts. The read-info contains the
priority the reviewing has, the list of texts to
review and some other stuff.
REVIEW-TREE Review a comment tree. This is more or less the same
as a COMM-IN, but is used for reviewing.
REVIEW-MARK Review one or more marked texts. The read-info
contains the priority, list of texts to review and
other stuff that I don't know off-hand.
Two of the things that every single read-info has is a priority
and a list of texts. The priority is used to determine when a text
with higher priority arrives. The idea is that lyskom-reading-list
is sorted in order of priority.
I'm don't know why we have two lists. It certainly complicates
matters more than it simplifies them. One of the things you can
use the two lists for is temporary read-infos. If you enter a
read-info in lyskom-reading-list and not on lyskom-to-do-list, it
will be removed if the user goes to another conference. This is
the case with COMM-IN and FOOTN-IN entries. They are never entered
on lyskom-to-do-list, and when you go to a new conference they are
simply dropped.
| Most of the time you don't want read-infos to be dropped.
| Therefore it is important to enter them on both lyskom-to-do-list
| and lyskom-reading-list. It is also important that you enter the
| same read-info on both lists, and not just identical copies. If
| you enter identical copies, users will end up reading everything
| at least twice.
To enter a REVIEW, REVIEW-TREE or REVIEW-MARK read-info, use the
function lyskom-review-enter-read-info to enter the same read-info
into both lists. It's fun to use, and easy too!
The prompt that the client prints is derived from the read lists.
The client first looks at lyskom-reading-list and then at
lyskom-to-do-list. Depending on the kind of read-info and which
list it is found on the client will print different prompts.
A CONF on lyskom-reading-list will generate a read next text
prompt. A REVIEW, REVIEW-TREE of REVIEW-MARK will generate the
corresponding review text prompt. A COMM-IN will generate a read
next comment, and FOOTN-IN a read next footnote prompt.
A CONF on lyskom-to-do-list will generate a go to next conference
prompt. A REVIEW, REVIEW-TREE or REVIEW-MARK will generate a
resume reviewing prompt. I have no clue what a COMM-IN or FOOTN-IN
will generate. Something bizarre, I suppose.
This diff is collapsed.
;;;;; -*-coding: raw-text;-*-
;;;;;
;;;;; $Id$
;;;;; Copyright (C) 1991, 1996 Lysator Academic Computer Association.
;;;;;
;;;;; This file is part of the LysKOM server.
;;;;;
;;;;; LysKOM is free software; you can redistribute it and/or modify it
;;;;; under the terms of the GNU General Public License as published by
;;;;; the Free Software Foundation; either version 2, or (at your option)
;;;;; any later version.
;;;;;
;;;;; LysKOM is distributed in the hope that it will be useful, but WITHOUT
;;;;; ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
;;;;; FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
;;;;; for more details.
;;;;;
;;;;; You should have received a copy of the GNU General Public License
;;;;; along with LysKOM; see the file COPYING. If not, write to
;;;;; Lysator, c/o ISY, Linkoping University, S-581 83 Linkoping, SWEDEN,
;;;;; or the Free Software Foundation, Inc., 675 Mass Ave, Cambridge,
;;;;; MA 02139, USA.
;;;;;
;;;;; Please mail bug reports to bug-lyskom@lysator.liu.se.
;;;;;
;;;; ================================================================
;;;; ================================================================
;;;;
;;;; File: aux-items.el
;;;;
;;;; Implementation of aux-item specific stuff.
;;;; Hopefulle more of this will be made more general in the future.
;;;;
(setq lyskom-clientversion-long
(concat lyskom-clientversion-long
"$Id$\n"))
;;; (eval-when-compile
;;; (require 'lyskom-defvar "defvar.el")
;;; (require 'lyskom-vars "vars.el")
;;; (require 'lyskom-types "komtypes.el"))
(def-kom-var lyskom-aux-item-definitions nil
"List of aux item definitions.")
(defmacro def-aux-item (name number &rest data)
(` (setq lyskom-aux-item-definitions
(add-to-list 'lyskom-aux-item-definitions
(cons (, number)
(cons (cons 'name (quote (, name)))
(quote (, data))))))))
(defun lyskom-aux-item-definition->name (def)
(cdr (assq 'name def)))
(defun lyskom-aux-item-definition->number (def)
(car def))
(defun lyskom-map-aux-items (fn text-stat)
"Apply FN to every aux item in TEXT-STAT."
(let ((items (text-stat->aux-items text-stat)))
(while items
(when (and (car items)
(not (aux-item-flags->deleted (aux-item->flags items))))
(funcall fn (car items)))
(setq items (cdr items)))))
(defun lyskom-aux-item-definition-call (def method &rest args)
(when (lyskom-aux-item-p def)
(setq def (lyskom-find-aux-item-definition def)))
(cond ((listp method)
(let ((result nil))
(while method
(when (lyskom-aux-item-definition-field def (car method))
(setq result
(apply (lyskom-aux-item-definition-field def
(car method))
args))
(setq method nil))
(setq method (cdr method)))
result))
(t (when (lyskom-aux-item-definition-field def method)
(apply (lyskom-aux-item-definition-field def method) args)))))
(defun lyskom-aux-item-definition-field (def method)
(when (lyskom-aux-item-p def)
(setq def (lyskom-find-aux-item-definition def)))
(cdr (assq method def)))
(defun lyskom-find-aux-item-definition (aux)
(assq (aux-item->tag aux) lyskom-aux-item-definitions))
(defun lyskom-match-aux-items (item-list predicate)
"Return a list of all aux-items in ITEM-LIST that match PREDICATE.
PREDICATE should receives a single aux-item as its argument and should
return non-nil if the item is to be included in the list."
(let ((result nil))
(while item-list
(when (funcall predicate (car item-list))
(setq result (cons (car item-list) result)))
(setq item-list (cdr item-list)))
(nreverse result)))
(defun lyskom-get-aux-item (item-list tag)
"Return all aux-items in ITEM-LIST with tag TAG."
(lyskom-match-aux-items item-list
(lambda (el) (eq (aux-item->tag el) tag))))
(defun lyskom-aux-item-terminating-button (item obj)
(if obj
(lyskom-format " %#1@%[[*]%]"
(lyskom-default-button 'aux
(cond ((lyskom-text-stat-p obj)
(list 'text
(text-stat->text-no
obj)
(aux-item->aux-no
item)))
((lyskom-conf-stat-p obj)
(list 'conf
(conf-stat->conf-no
obj)
(aux-item->aux-no
item)))
(t item))))
""))
;;; ======================================================================
(def-aux-item content-type 1
(text-print-when . never)
(parse . lyskom-parse-content-type)
(text-print . lyskom-print-content-type)
(info . lyskom-aux-item-info))
(def-aux-item fast-reply 2
(text-print-when . footer)
(parse . nil)
(text-print . lyskom-print-fast-reply)
(info . lyskom-aux-item-info))
(def-aux-item cross-reference 3
(status-print . lyskom-status-print-cross-reference)
(text-print-when . comment)
(parse . lyskom-parse-cross-reference)
(text-print . lyskom-print-cross-reference)
(edit-insert . lyskom-edit-insert-cross-reference)
(info . lyskom-aux-item-info))
(def-aux-item no-comments 4
(text-print-when . footer)
(parse . lyskom-parse-no-comments)
(text-print . lyskom-print-no-comments)
(edit-insert . lyskom-edit-insert-no-comments)
(info . lyskom-aux-item-info))
(def-aux-item personal-comment 5
(text-print-when . footer)
(parse . lyskom-parse-personal-comments)
(text-print . lyskom-print-personal-comments)
(edit-insert . lyskom-edit-insert-personal-comments)
(info . lyskom-aux-item-info))
(def-aux-item request-confirmation 6
(text-print-when . header)
(parse . lyskom-parse-request-confirmation)
(text-print . lyskom-print-request-confirmation)
(edit-insert . lyskom-edit-insert-request-confirmation)
(info . lyskom-aux-item-info)
(read-action . lyskom-request-confirmation-action))
(def-aux-item read-confirm 7
(text-print-when . header)
(text-print . lyskom-print-read-confirm)
(info . lyskom-aux-item-info))
(def-aux-item redirect 8
(print . lyskom-print-redirect)
(info . lyskom-aux-item-info))
(def-aux-item x-face 9
(print . lyskom-print-xface)
(info . lyskom-aux-item-info))
(def-aux-item alternate-name 10
(text-print-when . header)
(text-print . lyskom-print-alternate-name)
(info . lyskom-aux-item-info))
(def-aux-item pgp-signature 11
(info . lyskom-aux-item-info))
(def-aux-item pgp-public-key 12
(info . lyskom-aux-item-info))
(def-aux-item e-mail-address 13
(info . lyskom-aux-item-info))
(def-aux-item faq-text 14
(info . lyskom-aux-item-info)
(status-print . lyskom-status-print-faq-text))
(def-aux-item creating-software 15
(info . lyskom-aux-item-info)
(text-print-when . header)
(text-print . lyskom-print-creating-software))
(def-aux-item mx-author 16
(info . lyskom-aux-item-info))
(def-aux-item mx-from 17
(info . lyskom-aux-item-info))
(def-aux-item mx-reply-to 18
(info . lyskom-aux-item-info))
(def-aux-item mx-to 19
(info . lyskom-aux-item-info))
(def-aux-item mx-cc 20
(info . lyskom-aux-item-info))
(def-aux-item mx-date 21
(info . lyskom-aux-item-info))
(def-aux-item mx-message-id 22
(info . lyskom-aux-item-info))
(def-aux-item mx-in-reply-to 23
(info . lyskom-aux-item-info))
(def-aux-item mx-misc 24
(info . lyskom-aux-item-info))
(def-aux-item mx-allow-filter 25
(info . lyskom-aux-item-info))
(def-aux-item mx-reject-forward 26
(info . lyskom-aux-item-info))
(def-aux-item notify-comments 27
(info . lyskom-aux-item-info))
(def-aux-item faq-for-conf 28