Commit 96805a83 authored by David Byers's avatar David Byers
Browse files

New features:

    kom-review-stack prints more inforamtion
    kom-list-news takes a new prefix argument
    kom-who-is-on prints a timestamp
    kom-change-auto-reply offers the last message as editable default
    Commenting functions offer the text point is in as default when
        called with a simple (single C-u) prefix argument.

Internal features:
    Predicates in format strings.

Fixes:
    Name reading recognizes exact matches more often.
    Several string fixes (plural endings, bad speling.)
    The client can be loaded many times in the same Emacs.
parent 9bf233ef
1999-06-25 David Byers <davby@ida.liu.se>
* review.el (kom-review-stack): Print information about all kinds
of things on the stack, not just review commands.
* completing-read.el (lyskom-completing-strip-name): New function.
(lyskom-completing-member): Ignore parens.
* lyskom-rest.el: lyskom-format has capability to use embedded
predicates. Wohoo!
* utilities.el (lyskom-client-date-string): New function.
* lyskom-rest.el (lyskom-current-text): New function.
1999-06-24 David Byers <davby@ida.liu.se>
* lyskom-rest.el (lyskom-insert-string): Allow literal strings in
calls to lyskom-insert-string.
1999-06-23 David Byers <davby@ida.liu.se> 1999-06-23 David Byers <davby@ida.liu.se>
* english-strings.el: Synched up with Swedish. * english-strings.el: Synched up with Swedish.
......
...@@ -476,7 +476,9 @@ bilder f ...@@ -476,7 +476,9 @@ bilder f
Skriv ihop hantera medlemskap (prioritize-new.el.) Den skall Skriv ihop hantera medlemskap (prioritize-new.el.) Den skall
utnyttja den nya medlemskapsstrukturen. utnyttja den nya medlemskapsstrukturen.
Implementera anonyma medlemskap i klienten. Implementera anonyma medlemskap i klienten. Detta är inte långt
ifrån klart. Vi har hemliga medlemskap och behöver bara en hook
att bli anonym när man går in i mötet.
Implementera re-z-lookup med re-lookup-X så att vi kan återinföra Implementera re-z-lookup med re-lookup-X så att vi kan återinföra
maximal kompatibilitet. maximal kompatibilitet.
...@@ -606,12 +608,16 @@ Naturligtvis b ...@@ -606,12 +608,16 @@ Naturligtvis b
vad för meddelande man vill ha, med det förra meddelandet som vad för meddelande man vill ha, med det förra meddelandet som
default. Typ: Meddelande ("Lunch") ? _ default. Typ: Meddelande ("Lunch") ? _
Klart.
- Det vore kul om man kunde påverka lista nyheter så den listar möten - Det vore kul om man kunde påverka lista nyheter så den listar möten
med mer än foo olästa. Då kunde man ju kunna skriva C-u 0 ln för att med mer än foo olästa. Då kunde man ju kunna skriva C-u 0 ln för att
få se alla möten. Varför? För att status person är plågsamt långsamt få se alla möten. Varför? För att status person är plågsamt långsamt
(jag förmodar att det frågar lyskomservern i stället för att glo i (jag förmodar att det frågar lyskomservern i stället för att glo i
sin egen cache). sin egen cache).
Klart.
...@@ -684,6 +690,8 @@ f ...@@ -684,6 +690,8 @@ f
matchar mig exakt, men bara halvdant på den andra personen. Är det en matchar mig exakt, men bara halvdant på den andra personen. Är det en
bra eller dålig idé? bra eller dålig idé?
Klart.
...@@ -703,6 +711,8 @@ Internal Lyskom format error.: lyskom-format, ": argument error" ...@@ -703,6 +711,8 @@ Internal Lyskom format error.: lyskom-format, ": argument error"
Inget mera ploppar ut som resultat. Inget mera ploppar ut som resultat.
Antagligen klart. Vem vet.
...@@ -1115,6 +1125,7 @@ f ...@@ -1115,6 +1125,7 @@ f
dvs information om det kommentarsträd jag just håller på att läsa. dvs information om det kommentarsträd jag just håller på att läsa.
KLART.
...@@ -1166,7 +1177,7 @@ efter att jag loggat in. D ...@@ -1166,7 +1177,7 @@ efter att jag loggat in. D
> >
> Jag förstår inte vems inlägg du vill > Jag förstår inte vems inlägg du vill
> skriva ett privat svar till. > skriva ett privat svar till.
Klart
...@@ -1303,7 +1314,7 @@ H ...@@ -1303,7 +1314,7 @@ H
Om denna inställning är påslagen så kommer meddelanden som skickas Om denna inställning är påslagen så kommer meddelanden som skickas
- automatiskt, till exempel automatiska svar och svar på - automatiskt, till exempel automatiska svar och svar på
fjärkontrollförsök fjärkontrollförsök
+ automatiskt, till exempel automatiska svar och svar på fjärrkontrollförsök + automatiskt, till exempel automatiska svar och svar på fjärrkontrollförsök
även att visas som om man hade skickat det manuellt.") även att visas som om man hade skickat det manuellt.")
(kom-friends-doc . "\ (kom-friends-doc . "\
......
...@@ -59,7 +59,9 @@ ...@@ -59,7 +59,9 @@
(interactive) (interactive)
(let ((message (or message (let ((message (or message
(read-from-minibuffer (read-from-minibuffer
(lyskom-get-string 'ansaphone-new-message)))) (lyskom-get-string 'ansaphone-new-message)
(if (stringp kom-ansaphone-default-reply)
(cons kom-ansaphone-default-reply 0)))))
(lyskom-last-text-format-flags nil)) (lyskom-last-text-format-flags nil))
(setq kom-ansaphone-default-reply message) (setq kom-ansaphone-default-reply message)
(lyskom-format-insert (lyskom-get-string-sol 'ansaphone-message) (lyskom-format-insert (lyskom-get-string-sol 'ansaphone-message)
......
...@@ -140,15 +140,10 @@ ...@@ -140,15 +140,10 @@
(if is-marked-by-me (if is-marked-by-me
(if (= num-marks 1) (if (= num-marks 1)
(lyskom-get-string 'delete-marked-by-you) (lyskom-get-string 'delete-marked-by-you)
(if (= num-marks 2) (lyskom-format 'delete-marked-by-you-and-others
(lyskom-get-string (1- num-marks)))
'marked-by-you-and-one) (lyskom-format 'delete-marked-by-several
(lyskom-format 'delete-marked-by-you-and-several num-marks))))))))
(1- num-marks))))
(if (= num-marks 1)
(lyskom-get-string 'delete-marked-by-one)
(lyskom-format 'delete-marked-by-several
num-marks)))))))))
(when do-delete (when do-delete
(lyskom-format-insert 'deleting-text text-no) (lyskom-format-insert 'deleting-text text-no)
(when (lyskom-report-command-answer (when (lyskom-report-command-answer
...@@ -687,7 +682,8 @@ If optional arg TEXT-NO is present write a comment to that text instead." ...@@ -687,7 +682,8 @@ If optional arg TEXT-NO is present write a comment to that text instead."
((null current-prefix-arg) lyskom-current-text) ((null current-prefix-arg) lyskom-current-text)
((integerp current-prefix-arg) current-prefix-arg) ((integerp current-prefix-arg) current-prefix-arg)
((listp current-prefix-arg) ((listp current-prefix-arg)
(lyskom-read-number (lyskom-get-string 'what-comment-no))) (lyskom-read-number (lyskom-get-string 'what-comment-no)
(lyskom-text-at-point)))
(t (signal 'lyskom-internal-error '(kom-write-comment)))))) (t (signal 'lyskom-internal-error '(kom-write-comment))))))
(lyskom-start-of-command (concat (lyskom-start-of-command (concat
(lyskom-command-name 'kom-write-comment) (lyskom-command-name 'kom-write-comment)
...@@ -741,7 +737,8 @@ If optional arg TEXT-NO is present write a footnote to that text instead." ...@@ -741,7 +737,8 @@ If optional arg TEXT-NO is present write a footnote to that text instead."
current-prefix-arg) current-prefix-arg)
((listp current-prefix-arg) ((listp current-prefix-arg)
(lyskom-read-number (lyskom-get-string 'what-footnote-no))) (lyskom-read-number (lyskom-get-string 'what-footnote-no)
(lyskom-text-at-point)))
(t (signal 'lyskom-internal-error '(kom-write-footnote))))) (t (signal 'lyskom-internal-error '(kom-write-footnote)))))
...@@ -923,7 +920,8 @@ that text instead." ...@@ -923,7 +920,8 @@ that text instead."
((null current-prefix-arg) lyskom-current-text) ((null current-prefix-arg) lyskom-current-text)
((integerp current-prefix-arg) current-prefix-arg) ((integerp current-prefix-arg) current-prefix-arg)
((listp current-prefix-arg) ((listp current-prefix-arg)
(lyskom-read-number (lyskom-get-string 'what-private-no))) (lyskom-read-number (lyskom-get-string 'what-private-no)
(lyskom-text-at-point)))
(t (signal 'lyskom-internal-error '(kom-private-answer)))))) (t (signal 'lyskom-internal-error '(kom-private-answer))))))
(if text-no (if text-no
(blocking-do-multiple ((text-stat (get-text-stat text-no)) (blocking-do-multiple ((text-stat (get-text-stat text-no))
...@@ -2235,7 +2233,9 @@ Uses Protocol A version 8 calls" ...@@ -2235,7 +2233,9 @@ Uses Protocol A version 8 calls"
(lyskom-insert (concat (make-string (- (lyskom-window-width) 2) ?-) (lyskom-insert (concat (make-string (- (lyskom-window-width) 2) ?-)
"\n")) "\n"))
(lyskom-insert (lyskom-format 'total-visible-users total-users)))) (lyskom-insert (lyskom-format 'total-visible-users total-users
(lyskom-client-date-string
'time-format-exact)))))
(defun lyskom-who-is-on-9 (arg &optional conf-stat) (defun lyskom-who-is-on-9 (arg &optional conf-stat)
...@@ -2395,7 +2395,8 @@ Uses Protocol A version 9 calls" ...@@ -2395,7 +2395,8 @@ Uses Protocol A version 9 calls"
'total-visible-users) 'total-visible-users)
(t (t
'total-visible-active-users)) 'total-visible-active-users))
total-users)))) total-users
(lyskom-client-date-string 'time-format-exact)))))
(defun lyskom-who-is-on-check-membership-8 (who-info-list conf-stat) (defun lyskom-who-is-on-check-membership-8 (who-info-list conf-stat)
"Returns a list of those in WHO-INFO-LIST which is member in CONF-STAT." "Returns a list of those in WHO-INFO-LIST which is member in CONF-STAT."
......
...@@ -717,41 +717,47 @@ send. If DONTSHOW is non-nil, don't display the sent message." ...@@ -717,41 +717,47 @@ send. If DONTSHOW is non-nil, don't display the sent message."
(sit-for 0) (sit-for 0)
(lyskom-prefetch-all-confs)) (lyskom-prefetch-all-confs))
(let ((num-arg (cond (let* ((num-arg (cond
((numberp num) num) ((numberp num) num)
((and (listp num) ((and (listp num)
(numberp (car num))) (car num)) (numberp (car num))) (car num))
(t nil))) (t nil)))
(sum 0)) (sum 0)
(mship-confs (and (numberp num-arg)
(< num-arg 1)
(mapcar 'membership->conf-no lyskom-membership)))
(nconfs 0))
(when num-arg
(lyskom-format-insert 'list-unread-with-n-unread num-arg))
(mapcar (mapcar
(function (function
(lambda (info) (lambda (info)
(let ((un (length (cdr (read-info->text-list info)))) (let ((un (length (cdr (read-info->text-list info))))
(name (conf-stat->name (read-info->conf-stat info))) (name (conf-stat->name (read-info->conf-stat info)))
(conf-stat (read-info->conf-stat info))) (conf-stat (read-info->conf-stat info)))
(setq mship-confs (delq (conf-stat->conf-no conf-stat) mship-confs))
(cond (cond
((eq (read-info->type info) 'CONF) ((eq (read-info->type info) 'CONF)
(if (or (not num-arg) (if (or (not num-arg)
(>= (-- num-arg) 0)) (>= un num-arg))
(lyskom-insert (lyskom-insert
(if (and (boundp 'lyskom-special-conf-name) (if (and (boundp 'lyskom-special-conf-name)
(stringp lyskom-special-conf-name) (stringp lyskom-special-conf-name)
(string-match lyskom-special-conf-name name)) (string-match lyskom-special-conf-name name))
(if (/= un 1) (lyskom-format 'you-have-unreads-special un conf-stat)
(lyskom-format 'you-have-unreads-special un conf-stat) (lyskom-format 'you-have-unreads un conf-stat))))
(lyskom-format 'you-have-an-unread-special conf-stat)) (setq sum (+ sum un)
(if (/= un 1) nconfs (1+ nconfs)))))))
(lyskom-format 'you-have-unreads un conf-stat)
(lyskom-format 'you-have-an-unread conf-stat)))))
(setq sum (+ sum un)))))))
(read-list->all-entries lyskom-to-do-list)) (read-list->all-entries lyskom-to-do-list))
(mapcar
(lambda (conf-no)
(lyskom-format-insert 'you-have-no-unreads conf-no))
mship-confs)
(if (= 0 sum) (if (= 0 sum)
(lyskom-insert-string 'you-have-read-everything) (lyskom-insert-string 'you-have-read-everything)
(lyskom-insert (lyskom-format-insert 'total-unreads sum nconfs))))
(if (/= sum 1)
(lyskom-format 'total-unreads
sum)
(format (lyskom-get-string 'total-unread)))))))
;;; ================================================================ ;;; ================================================================
......
...@@ -496,16 +496,26 @@ function work as a name-to-conf-stat translator." ...@@ -496,16 +496,26 @@ function work as a name-to-conf-stat translator."
candidate-list) candidate-list)
(list string)))))))))))) (list string))))))))))))
(defun lyskom-completing-member (string list)
(let ((string (lyskom-unicase (lyskom-completing-strip-name string)))
(result nil))
(while (and list (not result))
(if (string= string (lyskom-unicase
(lyskom-completing-strip-name (car list))))
(setq result list)
(setq list (cdr list))))
result))
(defun lyskom-completing-member (string list) (defun lyskom-completing-strip-name (string)
"Check case-insensitively if STRING is a member of LIST" "Strip parens and crap from a name"
(let (result) (while (string-match "([^()]*)" string)
(while (and list (not result)) (setq string (replace-match " " t t string)))
(if (string= (lyskom-unicase string) (lyskom-unicase (car list))) (while (string-match "\\s-\\s-+" string)
(setq result list) (setq string (replace-match " " t t string)))
(setq list (cdr list)))) (if (string-match "^\\s-*\\(.*\\S-\\)\\s-*$" string)
result)) (match-string 1 string)
string))
(defun lyskom-read-conf-internal-verify-type (conf-no (defun lyskom-read-conf-internal-verify-type (conf-no
......
...@@ -215,6 +215,8 @@ local-hook A hook variable that is made local in LysKOM buffers." ...@@ -215,6 +215,8 @@ local-hook A hook variable that is made local in LysKOM buffers."
(setq arglist (cdr arglist))) (setq arglist (cdr arglist)))
(` (progn (dont-compile (if (and (boundp (quote (, name))) (` (progn (dont-compile (if (and (boundp (quote (, name)))
(or (not (boundp lyskom-is-loaded))
(not lyskom-is-loaded))
(listp kom-dont-read-saved-variables)) (listp kom-dont-read-saved-variables))
(add-to-list 'kom-dont-read-saved-variables (add-to-list 'kom-dont-read-saved-variables
(quote (, name))))) (quote (, name)))))
......
...@@ -399,6 +399,7 @@ and you have finished reading. Please come back later. ...@@ -399,6 +399,7 @@ and you have finished reading. Please come back later.
(weekdays . ["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday" (weekdays . ["Sunday" "Monday" "Tuesday" "Wednesday" "Thursday"
"Friday" "Saturday" "Sunday"]) "Friday" "Saturday" "Sunday"])
(weekdays-short . ["Sun" "Mon" "Tue" "Wed" "Thu" "Fri" "Sat" "Sun"])
(time-is . "The time is %#1s %#2s(according to the server).") (time-is . "The time is %#1s %#2s(according to the server).")
(time-format-exact . "%#7s %4#1d-%02#2d-%02#3d %02#4d:%02#5d:%02#6d") (time-format-exact . "%#7s %4#1d-%02#2d-%02#3d %02#4d:%02#5d:%02#6d")
...@@ -412,11 +413,11 @@ On this day, in 1973, the Lysator Academic Computer Society was ...@@ -412,11 +413,11 @@ On this day, in 1973, the Lysator Academic Computer Society was
formed, and it was a great day in the history of computing in Sweden. formed, and it was a great day in the history of computing in Sweden.
Read all about it at http://www.lysator.liu.se/history/") Read all about it at http://www.lysator.liu.se/history/")
(total-users . " A total of %#1d users.\n") (total-users . " A total of %#1d users (%#2s.)\n")
(total-visible-users . " A total of %#1d visible users.\n") (total-visible-users . " A total of %#1d visible users (%#2s.)\n")
(total-active-users . " A total of %#1d active users.\n") (total-active-users . " A total of %#1d active users (%#2s.)\n")
(total-visible-active-users (total-visible-active-users
. " A total of %#1d visible active users.\n") . " A total of %#1d visible active users (%#2s.)\n")
(who-to-add-q . "Add who/what as a recipient? ") (who-to-add-q . "Add who/what as a recipient? ")
(who-to-add-copy-q . "Add which conference/user as recipient of a carbon copy? ") (who-to-add-copy-q . "Add which conference/user as recipient of a carbon copy? ")
(who-to-sub-q . "Remove who/what as a recipient? ") (who-to-sub-q . "Remove who/what as a recipient? ")
...@@ -587,6 +588,7 @@ The message you were sending to %#1M was: ...@@ -587,6 +588,7 @@ The message you were sending to %#1M was:
(you-have-read-everything . "No news (is bad news).\n") (you-have-read-everything . "No news (is bad news).\n")
(total-unreads . "\nYou have %#1d unread articles.\n") (total-unreads . "\nYou have %#1d unread articles.\n")
(total-unread . "\nYou have 1 unread article.\n") (total-unread . "\nYou have 1 unread article.\n")
(list-unread-with-n-unread . "Listing conferences with at least %#1d unread.\n")
(waiting-for-anything . (waiting-for-anything .
"You are waiting for an article in any conference.\n") "You are waiting for an article in any conference.\n")
(waiting-higher-than . (waiting-higher-than .
......
...@@ -887,12 +887,14 @@ Args: FORMAT-STRING &rest ARGS" ...@@ -887,12 +887,14 @@ Args: FORMAT-STRING &rest ARGS"
(defvar lyskom-format-format (defvar lyskom-format-format
"%\\(=\\)?\\(-?[0-9]+\\)?\\(#\\([0-9]+\\)\\)?\\(:\\)?\\(&\\)?\\([][@MmPpnrtsdoxcCSDF]\\)" "%\\(=\\)?\\(-?[0-9]+\\)?\\(#\\([0-9]+\\)\\)?\\(:\\)?\\(&\\)?\\([][@MmPpnrtsdoxcCSDF?]\\)"
"regexp matching format string parts.") "regexp matching format string parts.")
(defun lyskom-insert-string (atom) (defun lyskom-insert-string (atom)
"Find the string corresponding to ATOM and insert it into the LysKOM buffer." "Find the string corresponding to ATOM and insert it into the LysKOM buffer."
(lyskom-insert (lyskom-get-string atom))) (if (stringp atom)
(lyskom-insert atom)
(lyskom-insert (lyskom-get-string atom))))
(defun lyskom-format (format-string &rest argl) (defun lyskom-format (format-string &rest argl)
(format-state->result (lyskom-do-format format-string argl))) (format-state->result (lyskom-do-format format-string argl)))
...@@ -1050,10 +1052,11 @@ Note that it is not allowed to use deferred insertions in the text." ...@@ -1050,10 +1052,11 @@ Note that it is not allowed to use deferred insertions in the text."
(format-state->format-string (format-state->format-string
format-state))))) format-state)))))
;;
;; If the format letter is an end-of-group letter, abort ;;
;; formatting and return to the caller. ;; If the format letter is an end-of-group letter, abort
;; ;; formatting and return to the caller.
;;
(if (= ?\] format-letter) (if (= ?\] format-letter)
(progn (progn
...@@ -1197,6 +1200,42 @@ Note that it is not allowed to use deferred insertions in the text." ...@@ -1197,6 +1200,42 @@ Note that it is not allowed to use deferred insertions in the text."
(setq format-state (lyskom-format-aux format-state allow-defer) (setq format-state (lyskom-format-aux format-state allow-defer)
result nil)) result nil))
;; A predicate
;; Get the predicate type and then parse the format string
;; accordingly
((= format-letter ?\?)
(unless (string-match "[db]"
(format-state->format-string format-state)
(format-state->start format-state))
(lyskom-error "Unknown predicate in format string %s (%d)"
(format-state->format-string format-state)
(format-state->start format-state)))
(set-format-state->start format-state (match-end 0))
(let ((predicate-type (elt (match-string 0
(format-state->format-string format-state))
0)))
(cond
;; Plural/singular predicate
;; arg is an integer. Use the first subformat if it is one
;; and the second if it is other than one.
((= predicate-type ?d)
(setq format-state
(lyskom-format-do-binary-predicate (= arg 1)
format-state
allow-defer)
result nil))
;; True/false predicate
((= predicate-type ?b)
(setq format-state
(lyskom-format-do-binary-predicate arg
format-state
allow-defer)
result nil))
)))
((= format-letter ?F) ((= format-letter ?F)
(setq result (setq result
(if (lyskom-conf-stat-p arg) (if (lyskom-conf-stat-p arg)
...@@ -1457,6 +1496,60 @@ Note that it is not allowed to use deferred insertions in the text." ...@@ -1457,6 +1496,60 @@ Note that it is not allowed to use deferred insertions in the text."
format-state) format-state)
(defun lyskom-format-do-binary-predicate (option format-state allow-defer)
(cond (option
(setq format-state
(lyskom-format-enter-subformat format-state allow-defer))
(lyskom-format-skip-subformat format-state))
(t
(lyskom-format-skip-subformat format-state)
(setq format-state
(lyskom-format-enter-subformat format-state allow-defer))
))
format-state)
(defun lyskom-format-enter-subformat (format-state allow-defer)
"The format string should be just before a subformat. Enter it."
(unless (string-match "%\\["
(format-state->format-string format-state)
(format-state->start format-state))
(lyskom-error "Predicate syntax error in format string %s (%d)"
(format-state->format-string format-state)
(format-state->start format-state)))
(set-format-state->start format-state (match-end 0))
(lyskom-format-aux format-state allow-defer))
(defun lyskom-format-skip-subformat (format-state)
"Skip the subformat specification at the start of format-state"
;; Check that it looks like a subformat in the first place
(unless (string-match "%\\["
(format-state->format-string format-state)
(format-state->start format-state))
(lyskom-error "Predicate syntax error in format string %s (%d)"
(format-state->format-string format-state)
(format-state->start format-state)))
(set-format-state->start format-state (match-end 0))
;; We are now inside the start of the subformat
(let ((level 1))
(while (> level 0)
(setq tmp (substring (format-state->format-string format-state)
(format-state->start format-state)))
(if (null (string-match "\\(%\\[\\|%\\]\\)"
(format-state->format-string format-state)
(format-state->start format-state)))
(lyskom-error "Bad nesting in format string %s (%d)"
(format-state->format-string format-state)
(format-state->start format-state))
(let ((ch (elt (match-string
1 (format-state->format-string format-state)) 1)))
(cond ((= ?\[ ch) (setq level (1+ level)))
(t (setq level (1- level))))
(set-format-state->start format-state (match-end 0)))))))
(defun lyskom-tweak-format-state (format-state) (defun lyskom-tweak-format-state (format-state)
...@@ -2028,6 +2121,18 @@ A symbol other than t means call it as a function." ...@@ -2028,6 +2121,18 @@ A symbol other than t means call it as a function."
;;; Author: Linus ;;; Author: Linus
(defun lyskom-text-at-point ()
"Return the text that point is in, or nil it is impossible to determine."
(save-excursion
(let ((paragraph-start lyskom-text-start)
(paragraph-ignore-fill-prefix t))
(end-of-line)
(backward-paragraph 1))
(beginning-of-line)
(and (looking-at "[0-9]+")
(string-to-int (match-string 0)))))
(defun backward-text (&optional arg) (defun backward-text (&optional arg)
"Searches backwards for a text start and recenters with that text at the top." "Searches backwards for a text start and recenters with that text at the top."
(interactive "p") (interactive "p")
...@@ -3128,29 +3233,20 @@ One parameter - the prompt string." ...@@ -3128,29 +3233,20 @@ One parameter - the prompt string."
(format "LysKOM(%s)" server)))) (format "LysKOM(%s)" server))))
;;; Validation of kom-tell-phrases
;;;
;;; Author: Roger Mikael Adolfsson
;;; This code removed (lyskom-tell-phrases-validate)
;;
(lyskom-set-language lyskom-language)