From 4ba4259a1b6e9adf11d1d0a3749f60c3642761ff Mon Sep 17 00:00:00 2001 From: Per Cederqvist <ceder@lysator.liu.se> Date: Sun, 11 Aug 2002 11:52:41 +0000 Subject: [PATCH] (The User Area): The description of the common block grammar contained many errors. State that everything is encoded as HOLLERITHs, and that they in turn contain datatypes. Removed "list" and "elems"; added "string-list". Added the "language" setting. (Bug 124). --- doc/Protocol-A.texi | 92 +++++++++++++++++++++++++-------------------- 1 file changed, 51 insertions(+), 41 deletions(-) diff --git a/doc/Protocol-A.texi b/doc/Protocol-A.texi index fe578eaa5..5b3e822b9 100644 --- a/doc/Protocol-A.texi +++ b/doc/Protocol-A.texi @@ -9002,25 +9002,16 @@ what you name your client's block. @section The Common Block -This defines the theoretical structure of the common block. The real -world probably does not agree entirely with this, and it is likely to -change just as soon as I have time to define something better. In the -mean while you're probably better off ignoring the common block and -storing all your settings in a client block. The Emacs lisp client uses -the common block, but I have a feeling that it might store data that -other clients can't read. - -The common block contains a list of variable settings. Each variable -setting consists of a name, some whitespace, and a value. Settings are -separated by a line feed character. As of protocol version 10, values -can be integers, strings, booleans or lists. The encoding is such that a -value is encoded as a single protocol A token. That means that strings -and lists are both encoded as HOLLERITHs. The reason for this is to -simplify for clients that need to ignore the value, and so it is -possible to add new value types without confusing old clients (new types -will be encoded as HOLLERITHs.) - -The grammar below sort of defines the syntax of the common block. +This defines the structure of the common block. The common block +contains a list of variable settings. Each variable setting consists +of a name, some whitespace, and a value. Settings are separated by a +line feed character. The values can be of several different types +(such as integers, strings, booleans, lists of stuff) but they are all +encoded as HOLLERITHs. The reason for this is to simplify for clients +that need to ignore the value, and so it is possible to add new value +types without confusing old clients. + +The grammar below defines the syntax of the common block. @c ispell-ignore @example @@ -9029,57 +9020,76 @@ settings : settings setting | /* empty */ setting : variable ' ' value '\n' variable : [A-Za-z-_0-9]+ -value : boolean - | HOLLERITH - | list - | integer +value : HOLLERITH +@end example +@c ispell-end-ignore + +The values contain structure within the HOLLERITH. The following +grammar defines the datatypes that are currently used. Clients must +be prepared to ignore values that have other datatypes. + +@c ispell-ignore +@example boolean : 1 | 0 integer : -?[0-9]+ -list : integer elems // Encoded in a HOLLERITH -elems : elems value - | empty +string-list : string-list ' ' HOLLERITH + | HOLLERITH @end example @c ispell-end-ignore Currently the following variables are used, but more may be added, and -as of protocol version 10, clients should be able to cope with variables -they know nothing of in the common block, as long as they are of one of -the types above. Pre-protocol version 10 clients can't deal with -HOLLERITHs in the common block. - -As of protocol 10 the following variables are stored in the common -block: +clients must cope with variables they know nothing of in the common +block. (Doing so is easy, as all values are encoded as HOLLERITHs.) @table @code @item created-texts-are-read True if the user wants texts s/he creates to be marked as read -automatically. Boolean. +automatically. @code{boolean}. @item dashed-lines True if the user wants dashed lines around the text body when it's -displayed. Boolean. +displayed. @code{boolean}. @item presence-messages True if the user wants messages about people logging in and logging out -of LysKOM. Boolean. +of LysKOM. @code{boolean}. @item print-number-of-unread-on-entrance True if the user wants to see the number of unread texts when entering a -conference. Boolean. +conference. @code{boolean}. @item read-depth-first -True if the user wants to read text in depth-first order. Boolean. +True if the user wants to read text in depth-first order. @code{boolean}. @item reading-puts-comments-in-pointers-last True if the user wants the client to display comment links after the -text body. Boolean. +text body. @code{boolean}. @item confirm-multiple-recipients True if the user wants the client to ask for confirmation before sending -a text to many conferences. +a text to many conferences. @code{boolean}. @item default-mark -The default mark to set on marked texts. +The default mark to set on marked texts. @code{integer}. + +@item language +Preferred languages, in priority order. @code{string-list}. + +This contains a list of ISO 639 language codes. ISO 639-2 should be +used for languages that have a 2-character language code. For other +languages, ISO 639-1 should be used. +@uref{http://lcweb.loc.gov/standards/iso639-2/langcodes.html} contains +a list of the current language codes. + +The client should configure its user interface to use the first +language in the list that it supports. Example: a client that +supports English and Swedish would use: +@itemize @bullet +@item Swedish if the list is @samp{2Hfr 2Hsv 2Hen} +@item English if the list is @samp{2Hen 2Hsv 2Hfr} +@item either if the list is @samp{2Hes 2Hfr} +@end itemize + @end table -- GitLab