Commit bb4a0cd9 authored by David Byers's avatar David Byers
Browse files

Fixed bugs:

First line overlay not visible in XEmacs
Started work on automatic computation of background colors
Removed extra space around names of imported message senders
Updated presentation-form
Fixed some variable documentation
Updated first-greeting
Fixed problem when changing presentation or FAQ
Improved communications loggins
Improved parser error detection and recovery

New command: kom-move-text-tree.
parent 80803e91
2002-05-01 David Byers <david.byers@swipnet.se>
* commands1.el (kom-move-text-tree): New command, innit?
Improve parser error reporting and recovery:
* utilities.el (lyskom-text-comments): New function.
* parse.el (lyskom-parse-recover): New function.
(lyskom-parse-unparsed): Signal a parse error if we start parsing
and see anything but '%', '=' or ':'. Recover from parse errors by
scanning until we see a '%', a '=' or a ':' at the beginning of a
line (sure, not perfect, but a lot better than what we've got
now).
* vars.el.in (lyskom-parser-recovering): New variable.
* parse.el (lyskom-parse-unparsed): If the key is invalid, signal
a protocol error rather than continue. Otherwise we can't see
where the error really occurs.
Fix bug setting language on logon:
* startup.el (kom-start-anew): Set kom-have-on-login if login is
successful.
Fix dependency on mapc, which is not available in Emacs 20.7:
* komtypes.el (text-mapping->global-numbers): Use lyskom-traverse
instead of mapc.
Improve performance when debugging communications:
* lyskom-rest.el (lyskom-debug-insert): Limit buffer size to
lyskom-debug-communications-limit.
(lyskom-filter): Limit size of *kom*-replies to
lyskom-debug-communications-limit.
2002-04-29 David Byers <david.byers@swipnet.se>
Fix bug where changing presentation of FAQ lost recipients:
* commands1.el (lyskom-get-recipients-from-misc-list): Don't
downcase the recipient type.
* swedish-strings.el, english-strings.el: Hnvisa till ? och Hjlp
i first-greeting.
* vars.el.in (kom-default-language): Fixed bug 495.
* commands2.el (kom-obsolete-extended-command-binding): Clarified
message.
2002-04-29 Ulrik Haugen <qha@lysator.liu.se>
* vars.el.in (kom-default-language): Added a pointer to
......@@ -27,6 +75,22 @@
2002-04-28 David Byers <david.byers@swipnet.se>
* view-text.el (lyskom-format-mx-author): If mx-author is the
empty string, pretend that it is nil.
(lyskom-view-text): Don't put a space character after the time
zone.
* swedish-strings.el,english-strings.el (lyskom-messages):
Uppdaterade presentation-form.
* compatibility.el (lyskom-color-values): New function (mimics
x-color-values, color-values etc).
* lyskom-rest.el (lyskom-format-insert-overlays): Set extent
priority to 1000 to override text properties in the same area
under XEmacs.
(lyskom-is-loaded): Get language from LC_ALL and LC_MESSAGES too.
* header.el: When detecting a buggy read-kbd-macro, attempt to
load good definitions from known libraries rather than just bail.
......
......@@ -1263,7 +1263,7 @@ Don't ask for confirmation."
(type (misc-info->type info)))
(cond ((null misc-list) '())
((memq type lyskom-recpt-types-list)
(append (list (intern (downcase (symbol-name type)))
(append (list (intern (symbol-name type))
(misc-info->recipient-no info))
(lyskom-get-recipients-from-misc-list
(cdr misc-list))))
......@@ -3710,8 +3710,12 @@ The value of RECIPIENTS should be the result of a call to
(lyskom-format-insert 'text-has-no-recipients-r text-no)))
(lyskom-format-insert 'no-such-text-no text-no))))
(def-kom-command kom-move-text (text-no)
"Move text TEXT-NO from one conference to another."
"Move text TEXT-NO from one conference to another.
CONTINUATION is the function that does the actual moving. It is called
with three arguments: source, target and text-stat, where source is the
recipient to remove and target the recipient to add to text-stat."
(interactive (list (lyskom-read-text-no-prefix-arg 'text-to-move)))
(let ((text-stat (blocking-do 'get-text-stat text-no)))
(if text-stat
......@@ -3745,7 +3749,146 @@ The value of RECIPIENTS should be the result of a call to
(lyskom-set-default 'lyskom-last-sub-rcpt (conf-stat->conf-no source))
(lyskom-move-recipient text-no source target 'RECPT)))))
(lyskom-format-insert 'no-such-text-no text-no))))
(def-kom-command kom-move-text-tree (text-no)
"Move text TEXT-NO and all its descendants from one conference to another."
(interactive (list (lyskom-read-text-no-prefix-arg 'text-tree-to-move)))
(let ((root-text-stat (blocking-do 'get-text-stat text-no)))
(if root-text-stat
;; Set up default recipients for from and to.
(let* ((recipients (lyskom-text-recipients root-text-stat t))
(default-from (lyskom-default-recpt-for-sub recipients))
(default-to (blocking-do
'get-conf-stat
(or (lyskom-default-value 'lyskom-last-added-rcpt)
lyskom-current-conf))))
;; Check that the text has recipients at all.
(if (null default-from)
(lyskom-format-insert 'text-has-no-recipients-r text-no)
;; Read the conference we are moving the tree away from.
(let ((source (lyskom-read-conf-stat
'who-to-move-from-q
(list (cons 'restrict (mapcar 'car recipients)))
nil
(cons (if default-from
(conf-stat->name default-from)
"") 0)
t))
(to-do (list (text-stat->text-no root-text-stat)))
(done nil))
;; Now loop over the tree
(while to-do
(let* ((text-to-move (car to-do))
(text-stat (blocking-do 'get-text-stat text-to-move))
(text-to-move-recipients
(lyskom-text-recipients text-stat)))
(setq to-do (cdr to-do))
;; Check that this text is a candidate for moving
;; If not, put it in done to fool the next control
;; structure.
(unless (memq (conf-stat->conf-no source)
text-to-move-recipients)
(lyskom-format-insert 'moving-already-moved
text-to-move source)
(setq done (cons text-to-move done)))
;; Use memoing to ensure that we don't loop.
(unless (memq text-to-move done)
(setq done (cons (car to-do) done))
;; Check that the text has the source as a
;; recipient. If not, skip to the next in the
;; tree (and don't traverse downwards).
;; Show the text that we are planning on moving
;; Truncate it. This may be a bad idea, but it
;; kind of makes sense since we don't have the
;; opportunity to scroll the buffer.
(let ((kom-truncate-show-lines
(if (numberp kom-truncate-show-lines)
(min kom-truncate-show-lines 10)
10))
(kom-truncate-threshold
(if (numberp kom-truncate-threshold)
(min kom-truncate-threshold 10)
10)))
(lyskom-view-text text-to-move nil nil nil
nil nil nil t)
(setq lyskom-last-viewed (point-max)))
;; Ask the user what to do
(let* ((completion-ignore-case t)
(action
(cdr
(lyskom-string-assoc
(lyskom-completing-read (lyskom-get-string 'moving-tree-what-action-q)
lyskom-move-tree-actions
nil
t
nil
nil
(car (rassoc 'move lyskom-move-tree-actions)))
lyskom-move-tree-actions))))
(cond
;; Move the text.
((eq action 'move)
(condition-case nil
(let ((target
(lyskom-read-conf-stat
(if (> (length text-to-move-recipients) 1)
'who-to-move-to-or-sub-q
'who-to-move-to-q)
'(all)
(> (length text-to-move-recipients) 1)
(cons (if default-to
(conf-stat->name default-to)
"") 0)
t)))
(if target
(progn
(setq default-to target)
(lyskom-format-insert 'moving-name source target text-stat)
(lyskom-set-default 'lyskom-last-added-rcpt (conf-stat->conf-no target))
(lyskom-set-default 'lyskom-last-sub-rcpt (conf-stat->conf-no source)))
(lyskom-format-insert 'remove-name-as-recipient
source
(text-stat->text-no text-stat))
(lyskom-set-default 'lyskom-last-sub-rcpt (conf-stat->conf-no source)))
(lyskom-move-recipient text-to-move source target 'RECPT)
(setq to-do (nconc (lyskom-text-comments text-stat) to-do))
)
(quit (setq to-do (cons text-to-move to-do))))
)
((eq action 'skip)
(setq to-do (nconc (lyskom-text-comments text-stat) to-do))
)
((eq action 'quit)
(setq to-do nil))
((eq action 'jump))))))))))
(lyskom-format-insert 'no-such-text-no text-no)
)))
......
......@@ -2902,7 +2902,9 @@ Tangenten f
Anvnd x istllet fr a om du vill ange LysKOM-kommandon vid
namn. Fr att undvika att du kr onskade LysKOM-kommandon s
mste du trycka p enter fr att fortstta.
ignoreras all inmatning tills du trycker enter nsta gng.
Tryck p enter fr att fortstta.
----------------------------------------------------------------
"
'(face kom-warning-face))
......
......@@ -594,6 +594,22 @@ Otherwise treat \\ in NEWTEXT string as special:
(and (bufferp object)
(buffer-name object)))
;;; ================================================================
;;; Color stuff
(defun lyskom-color-values (color &optional frame)
nil)
(eval-and-compile
(cond ((fboundp 'color-values) (fset 'lyskom-color-values 'color-values))
((fboundp 'x-color-values) (fset 'lyskom-color-values 'x-color-values))
((fboundp 'make-specifier)
(defun lyskom-color-values (color &optional frame)
(let ((spec (make-specifier 'color)))
(set-specifier spec color)
(color-rgb-components spec))))))
;;; ======================================================================
;;; Platform-specific stuff
......
......@@ -194,7 +194,7 @@ anybody can read it. Only passwords are encrypted.
If you are uncertain about how to use LysKOM, you can retrieve a manual by
anonymous ftp to ftp.lysator.liu.se. Ask your system administrator for help
on how to do this.
on how to do this. You can also type \"?\" for the command \"Help\".
")
(is-name-correct . "Is the name %#1s correct? ")
......@@ -204,8 +204,15 @@ on how to do this.
(could-not-create-you . "LysKOM couldn't create that user.\n")
(presentation-subject . "%#1s")
(presentation-form . "Name:\t\nAddress:\t\n\t\nTelephone:\t
Email address:\t\nWWW:\t\n\nOther:\t")
(presentation-form . "\
Name:
Address:
Telephone:
E-mail:
WWW:
Other: ")
(presentation-help . "You are writing your presentation.\n")
(not-present-anywhere . "Not in any conference.")
(unknown-person . "Unknown user")
......@@ -426,6 +433,8 @@ and you have finished reading. Please come back later.
(text-to-add-bcc . "Add recipient of blind carbon copy to which text:")
(text-to-delete-recipient . "Remove recipient from which text:")
(text-to-move . "Which text do you want to move:")
(text-tree-to-move . "Which text is the root of the tree you want to move:")
(text-to-add-comment-to . "Add comment to which text:")
(text-to-delete-comment-from . "Remove comment from which text:")
(text-to-add-footnote-to . "Add footnote to which text:")
......@@ -498,6 +507,7 @@ Read all about it at http://www.lysator.liu.se/history/")
(who-to-sub-q . "Remove whom/what as a recipient? ")
(who-to-move-from-q . "Move from where? ")
(who-to-move-to-q . "Move to where? ")
(who-to-move-to-or-sub-q . "Move to where (empty to just remove recipient)? ")
(adding-name-as-recipient . "Adding %#1M as recipient of text %#2n...")
(adding-name-as-copy . "%#1M will receive a carbon copy of text %#2n...")
......@@ -512,7 +522,9 @@ Read all about it at http://www.lysator.liu.se/history/")
(error-access-denied-add-recpt . "You are not allowed to add texts to %#2M.\n")
(error-not-recipient . "%#2M is not a recipient of text %#1n.\n")
(moving-tree-what-action-q . "What do you want to do? (flytta) ")
(moving-name . "Moving text %#3n from %#1M to %#2M...")
(moving-already-moved . "Text %#1n does not have %#2M as a mottagare.\nSkipping this text and its comments.\n")
(text-to-add-q . "Add which text as a comment to %#1n? ")
(text-to-remove-q . "Remove which text as a comment from %#1n? ")
(text-to-add-footn-q . "Add which text as a footnote to %#1n? ")
......@@ -1806,6 +1818,7 @@ Number of sessions: %21#1d (total)
(kom-add-bcc . "Addera (recipient of) blind carbon copy")
(kom-sub-recipient . "Remove recipient")
(kom-move-text . "Move text")
(kom-move-text-tree . "Move tree")
(kom-add-comment . "Add comment")
(kom-sub-comment . "Remove comment")
(kom-add-cross-reference . "Add cross reference")
......@@ -2072,8 +2085,11 @@ Number of sessions: %21#1d (total)
(kom-edit-move-text . "Move to new recipient")
))
;;(defvar lyskom-swascii-commands nil
;; "The swascii-versions of lyskom-commands.")
(lyskom-language-var local lyskom-move-tree-actions en
'(("Move text or subtract recipient" . move)
("Leave text and continue with comments" . skip)
("Abort this command" . quit)
("Skip this command and its comment tree" . jump)))
(lyskom-language-var local lyskom-onoff-table en
'(("on" . on) ("off" . off)))
......@@ -2196,6 +2212,7 @@ Number of sessions: %21#1d (total)
(define-key lyskom-en-mode-map (kbd "A f") 'kom-filter-edit)
(define-key lyskom-en-mode-map (kbd "A m") 'kom-change-auto-reply)
(define-key lyskom-en-mode-map (kbd "A t") 'kom-move-text)
(define-key lyskom-en-mode-map (kbd "A T") 'kom-move-text-tree)
(define-key lyskom-en-mode-map (kbd "r SPC") 'kom-view)
(define-key lyskom-en-mode-map (kbd "r 0") 'kom-initial-digit-view)
(define-key lyskom-en-mode-map (kbd "r 1") 'kom-initial-digit-view)
......
......@@ -1450,9 +1450,8 @@ The MAPS must be consecutive. No gaps or overlaps are currently allowed."
(mapcar 'cdr (text-mapping->block map)))
((eq (text-mapping->type map) 'dense)
(let ((result nil))
(mapc (lambda (el)
(unless (zerop el) (setq result (cons el result))))
(map->text-nos (text-mapping->block map)))
(lyskom-traverse el (map->text-nos (text-mapping->block map))
(unless (zerop el) (setq result (cons el result))))
(nreverse result)))))
(defun text-mapping->global-to-local (map global)
......
......@@ -1124,7 +1124,8 @@ Args: FORMAT-STRING &rest ARGS"
(args (aref overlay 2)))
(while args
(set-extent-property overlay (car args) (car (cdr args)))
(setq args (nthcdr 2 args))))
(setq args (nthcdr 2 args)))
(set-extent-priority overlay 1000))
(let ((overlay (make-overlay (+ start (aref overlay 0))
(+ start (aref overlay 1))))
(args (aref overlay 2)))
......@@ -3436,12 +3437,13 @@ If MEMBERSHIPs prioriy is 0, it always returns nil."
(condition-case nil
(progn
(setq lyskom-quit-flag nil)
(if lyskom-debug-communications-to-buffer
(save-excursion
(set-buffer (get-buffer-create "*kom*-replies"))
(goto-char (point-max))
(princ (string-as-unibyte output) (current-buffer))))
(princ (string-as-unibyte output) (current-buffer))
(lyskom-debug-limit-buffer)))
(if lyskom-debug-communications-to-buffer
(if (not lyskom-debug-what-i-am-doing)
......@@ -3449,7 +3451,7 @@ If MEMBERSHIPs prioriy is 0, it always returns nil."
(eq ?5 (elt output 1))))
(lyskom-debug-insert proc "From " output))
(lyskom-debug-insert proc "From " output)))
(set-buffer (process-buffer proc))
(princ (string-as-unibyte output) lyskom-unparsed-marker)
;;+++lyskom-string-skip-whitespace
......@@ -3470,7 +3472,7 @@ If MEMBERSHIPs prioriy is 0, it always returns nil."
;; it does when the maps are read in one chunk, which
;; they usually aren't anymore.
((not (string-match "\n" output)))
((null lyskom-is-parsing) ;Parse one reply at a time.
(let ((lyskom-is-parsing t))
(unwind-protect
......@@ -3516,6 +3518,11 @@ If MEMBERSHIPs prioriy is 0, it always returns nil."
;;; ================================================================
;;; Debug buffer
(defun lyskom-debug-limit-buffer ()
(when (and (numberp lyskom-debug-communications-limit)
(> (point-max) lyskom-debug-communications-limit))
(delete-region (point-min) (- (point-max) lyskom-debug-communications-limit))))
(defun lyskom-debug-insert (proc prefix string)
(let* ((buf (get-buffer-create
lyskom-debug-communications-to-buffer-buffer))
......@@ -3533,6 +3540,7 @@ If MEMBERSHIPs prioriy is 0, it always returns nil."
(format "%s" proc)
": "
string))
(lyskom-debug-limit-buffer)
(if move (goto-char (point-max))))))
(save-excursion
(set-buffer buf)
......@@ -3540,7 +3548,8 @@ If MEMBERSHIPs prioriy is 0, it always returns nil."
(insert "\n"
prefix
(format "%s" proc)
": " string)))))
": " string)
(lyskom-debug-limit-buffer)))))
;;; For serious bugs
......@@ -3840,6 +3849,8 @@ One parameter - the prompt string."
;; Set up default language
(let ((languages (list kom-default-language
(lyskom-language-from-environment "KOMLANGUAGE")
(lyskom-language-from-environment "LC_ALL")
(lyskom-language-from-environment "LC_MESSAGES")
(lyskom-language-from-environment "LANG")
(car (car (last lyskom-languages))))))
(lyskom-traverse lang languages
......
......@@ -1020,7 +1020,7 @@ Args: TEXT-NO. Value: text-stat."
(defun lyskom-parse-local-to-global-block (block-type)
"Parse a Local-To-Global-Block"
(cond ((eq block-type 'sparse)
(let ((len (lyskom-parse-num)))
(let ((len (lyskom-parse-string)))
(lyskom-parse-list len 'lyskom-parse-text-number-pair)))
((eq block-type 'dense)
(lyskom-parse-map))))
......@@ -1193,35 +1193,49 @@ functions and variables that are connected with the lyskom-buffer."
;; Removed check for kom-presence-messages
(if (and (not (lyskom-is-in-minibuffer)))
(message ""))))
(lyskom-save-excursion
(set-buffer lyskom-unparsed-buffer)
(while (not (zerop (1- (point-max)))) ;Parse while replies.
(let* ((lyskom-parse-pos 1)
(key (lyskom-parse-nonwhite-char)))
(condition-case err
(let ((inhibit-quit t)) ; Used to be nil, but that can
(if lyskom-parser-recovering
(lyskom-save-excursion
(set-buffer lyskom-unparsed-buffer)
(goto-char (point-min))
(if (re-search-forward "^[:%=]" nil t)
(progn (delete-region (point-min) (match-beginning 0))
(lyskom-set-default 'lyskom-parser-recovering nil))
(when (> (point-max) (point-min))
(delete-region (point-min) (1- (point-max))))))
(lyskom-save-excursion
(set-buffer lyskom-unparsed-buffer)
(while (not (zerop (1- (point-max)))) ;Parse while replies.
(let* ((lyskom-parse-pos 1)
(key (lyskom-parse-nonwhite-char)))
(condition-case err
(let ((inhibit-quit t)) ; Used to be nil, but that can
; cause hard-to-repair
; problems
(cond
((= key ?=) ;The call succeeded.
(lyskom-parse-success (lyskom-parse-num) lyskom-buffer))
((= key ?%) ;The call was not successful.
(lyskom-parse-error (lyskom-parse-num) lyskom-buffer))
((= key ?:) ;An asynchronous message.
(lyskom-parse-async (lyskom-parse-num) lyskom-buffer)))
(delete-region (point-min) lyskom-parse-pos))
;; One reply is now parsed.
(lyskom-protocol-error
(delete-region (point-min) (min (point-max) (1+ lyskom-parse-pos)))
(signal 'lyskom-protocol-error err)))
(goto-char (point-min))
(if (looking-at "[ \n]+")
(delete-region (match-beginning 0) (match-end 0)))
)))
(cond
((= key ?=) ;The call succeeded.
(lyskom-parse-success (lyskom-parse-num) lyskom-buffer))
((= key ?%) ;The call was not successful.
(lyskom-parse-error (lyskom-parse-num) lyskom-buffer))
((= key ?:) ;An asynchronous message.
(lyskom-parse-async (lyskom-parse-num) lyskom-buffer))
(t
(lyskom-protocol-error 'lyskom-parse-unparsed
"Expected =, %% or :, got %S"
(lyskom-string-to-parse))))
(delete-region (point-min) lyskom-parse-pos))
;; One reply is now parsed.
(lyskom-protocol-error
(delete-region (point-min) (min (point-max) (1+ lyskom-parse-pos)))
(signal 'lyskom-protocol-error err)))
(goto-char (point-min))
(if (looking-at "[ \n]+")
(delete-region (match-beginning 0) (match-end 0)))
))))
(store-match-data match-data)))
(defun lyskom-protocol-error (function format-string &rest args)
(when lyskom-debug-communications-to-buffer
(setq lyskom-debug-communications-limit nil)
(lyskom-debug-insert lyskom-proc
(format " Protocol error in %S: " function)
(apply 'format format-string args))
......@@ -1236,8 +1250,16 @@ functions and variables that are connected with the lyskom-buffer."
(buffer-substring lyskom-parse-pos (point-max))))
(lyskom-save-backtrace (lyskom-string-to-parse))
(lyskom-parse-recover)
(signal 'lyskom-protocol-error
(format "Protocol error in %S: %s"
function
(apply 'format format-string args))))
(defun lyskom-parse-recover ()
"Initiate parser recovery."
(lyskom-save-excursion
(set-buffer lyskom-buffer)
(setq lyskom-parser-recovering t)
(initiate-get-time 'main nil)))
......@@ -560,7 +560,8 @@ shown to other users."
(lyskom-set-language kom-default-language 'global))
(lyskom-format-insert-before-prompt
'language-set-to
(lyskom-language-name kom-default-language)))))
(lyskom-language-name kom-default-language))))
(setq lyskom-have-one-login t))
(setq lyskom-pers-no old-me))
;; Show motd and encourage writing a presentation
......
......@@ -166,8 +166,8 @@ Anv
(first-greeting . "%#1s
Det tycks vara frsta gngen du anvnder LysKOM. Vlkommen!
Kontrollera att du stavat ditt namn rtt. Anvnd grna ditt fullstndiga
namn och organisation, t ex \"Eskil Block, FOA\". Om du stavat ditt namn
Kontrollera att du stavat ditt namn rtt. Anvnd grna ditt fullstndiga
namn och organisation, t ex \"Eskil Block, FOA\". Om du stavat ditt namn
fel, eller vill ndra ditt namn, svara nej p frgan nedan.
Observera att all information n s lnge sparas s att vem som helst
......@@ -175,7 +175,8 @@ kan l
Om du r osker p hur man anvnder LysKOM kan du hmta en manual via
anonym ftp frn ftp.lysator.liu.se. Frga din systemadministratr om
du r osker.\n")
du r osker. Du kan ven skriva \"?\" fr kommandot \"Hjlp\".
")
(is-name-correct . "r namnet %#1s korrekt? ")
(personal-password . "Ange ett personligt lsen: ")
......@@ -184,8 +185,15 @@ du
(could-not-create-you . "Det gick inte att skapa personen.\n")
(presentation-subject . "%#1s")
(presentation-form . "Namn:\t\nAdress:\t\nStad:\t\nTelefon:
Email-adress:\nWWW:\t\n\nAnnat:\t")
(presentation-form . "\
Namn:
Adress:
Stad:
Telefon:
E-post:
WWW:
Annat: ")
(presentation-help . "Du skriver just nu din presentation.\n")
(not-present-anywhere . "Ej nrvarande i ngot mte.")
(in-secret-conference . "Hemligt mte (%#1d).")
......@@ -394,6 +402,7 @@ du har l
(text-to-add-bcc . "Vilket inlgg vill du skicka som dold kopia:")
(text-to-delete-recipient . "Vilket inlgg vill du subtrahera mottagare frn:")
(text-to-move . "Vilket inlgg vill du flytta:")
(text-tree-to-move . "Vilket inlggs r rot till trdet vill du flytta:")
(text-to-add-comment-to . "Vilket inlgg vill du addera en kommentar till:")
(text-to-delete-comment-from . "Vilket inlgg vill du subtrahera en kommentar frn:")
(text-to-add-footnote-to . "Vilket inlgg vill du addera en fotnot till:")
......@@ -489,6 +498,7 @@ i svensk datorhistoria. L
(who-to-sub-q . "Vilket mte/person vill du subtrahera som mottagare? ")
(who-to-move-from-q . "Frn vilket mte vill du flytta texten? ")
(who-to-move-to-q . "Vart vill du flytta texten? ")
(who-to-move-to-or-sub-q . "Vart vill du flytta texten (tomt fr att bara subtrahera)? ")
(adding-name-as-recipient . "Adderar %#1M som mottagare till text %#2n...")
(adding-name-as-copy . "Adderar %#1M som kopiemottagare till text %#2n...")
......@@ -503,7 +513,9 @@ i svensk datorhistoria. L
(error-access-denied-add-recpt . "Du fr inte addera inlgg till %#2M.\n")
(error-not-recipient . "%#2M r inte mottagare till inlgg %#1n.\n")
(moving-tree-what-action-q . "Vad vill du gra? (flytta) ")
(moving-name . "Flyttar text %#3n frn %#1M till %#2M...")
(moving-already-moved . "Inlgg %#1n har inte %#2M som mottagare.\nFlytter inte inlgget eller dess kommentarstrd.\n")