]> code.delx.au - gnu-emacs/blobdiff - lisp/international/ogonek.el
Merge from emacs--rel--22
[gnu-emacs] / lisp / international / ogonek.el
index 044012d392a2ace5fe2afc2968e4e7cc759e96d3..06bebb1f0dabc3055b2cc1752c9f80aa2e18d7c6 100644 (file)
@@ -1,6 +1,7 @@
-;;; ogonek.el --- basic editing commands for Emacs
+;;; ogonek.el --- change the encoding of Polish diacritics
 
-;; Copyright (C) 1997 Free Software Foundation, Inc.
+;; Copyright (C) 1997, 1998, 2001, 2002, 2003, 2004, 2005, 2006, 2007
+;;   Free Software Foundation, Inc.
 
 ;; Author: W{\l}odek Bzyl, Ryszard Kubiak
 ;; Maintainer: rysiek@ipipan.gda.pl (Ryszard Kubiak)
 
 ;; You should have received a copy of the GNU General Public License
 ;; along with GNU Emacs; see the file COPYING.  If not, write to the
-;; Free Software Foundation, Inc., 59 Temple Place - Suite 330,
-;; Boston, MA 02111-1307, USA.
+;; Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
+;; Boston, MA 02110-1301, USA.
 
 ;;; Commentary:
 
 ;; To use this library load it using
 ;;                 M-x load-library [enter] ogonek
 ;;              Then, you may get a short info by calling one of
-;;                 M-x ogonek-jak        -- in Polish  
+;;                 M-x ogonek-jak        -- in Polish
 ;;                 M-x ogonek-how        -- in English  "
 
+;;; Code:
+
+(defgroup ogonek nil
+  "Change the encoding of Polish diacritic characters."
+  :prefix "ogonek-"
+  :group 'i18n)
+
 (defconst ogonek-name-encoding-alist
-  '(("ascii"      . (?A  ?C  ?E  ?L  ?N  ?O  ?S  ?Z  ?Z 
-                     ?a  ?c  ?e  ?l  ?n  ?o  ?s  ?z  ?z)) 
-    ("iso8859-2"  . (161 198 202 163 209 211 166 172 175 
-                     177 230 234 179 241 243 182 188 191))    
-    ("mazovia"    . (143 149 144 156 165 163 152 160 161 
+  '(("ascii"      . (?A  ?C  ?E  ?L  ?N  ?O  ?S  ?Z  ?Z
+                     ?a  ?c  ?e  ?l  ?n  ?o  ?s  ?z  ?z))
+    ("iso8859-2"  . (161 198 202 163 209 211 166 172 175
+                     177 230 234 179 241 243 182 188 191))
+    ("mazovia"    . (143 149 144 156 165 163 152 160 161
                      134 141 145 146 164 162 158 166 167))
-    ("windows-EE" . (165 198 202 163 209 211 140 143 175 
+    ("windows-EE" . (165 198 202 163 209 211 140 143 175
                      185 230 234 179 241 243 156 159 191))
-    ("windows-PL" . (165 198 202 163 209 211 140 143 175 
+    ("windows-PL" . (165 198 202 163 209 211 140 143 175
                      185 230 234 179 241 243 156 159 191))
-    ("latin-2"    . (164 143 168 157 227 224 151 141 189 
+    ("latin-2"    . (164 143 168 157 227 224 151 141 189
                      165 134 169 136 228 162 152 171 190))
-    ("CP852"      . (164 143 168 157 227 224 151 141 189 
+    ("CP852"      . (164 143 168 157 227 224 151 141 189
                      165 134 169 136 228 162 152 171 190))
-    ("MeX"        . (129 130 134 138 139 211 145 153 155 
+    ("MeX"        . (129 130 134 138 139 211 145 153 155
                      161 162 166 170 171 243 177 185 187))
-    ("CorelDraw"  . (197 242 201 163 209 211 255 225 237 
+    ("CorelDraw"  . (197 242 201 163 209 211 255 225 237
                      229 236 230 198 241 243 165 170 186))
-    ("Amiga"      . (194 202 203 206 207 211 212 218 219 
+    ("Amiga"      . (194 202 203 206 207 211 212 218 219
                      226 234 235 238 239 243 244 250 251))
-    ("Mac"        . (132 140 162 252 193 238 229 143 251 
+    ("Mac"        . (132 140 162 252 193 238 229 143 251
                      136 141 171 184 196 151 230 144 253))
- ) 
+ )
   "The constant `ogonek-name-encoding-alist' is a list of (NAME.LIST) pairs.
-Each LIST contains codes for 18 Polish diacritic characters.
-The codes are given in the following order:
+Each LIST contains codes for 18 Polish diacritic characters. The codes
+are given in the following order:
   Aogonek Cacute Eogonek Lslash Nacute Oacute Sacute Zacute Zdotaccent
   aogonek cacute eogonek lslash nacute oacute sacute zacute zdotaccent.")
 
-; ------ A Little Info in Polish ---------------
+;; ------ A Little Info in Polish ---------------
 
 (defconst ogonek-informacja
-  "   FUNKCJE INTERAKCYJNE UDOST/EPNIANE PRZEZ BIBLIOTEK/E `ogonek'
+  "   FUNKCJE INTERAKCYJNE UDOST/EPNIANE PRZEZ BIBLIOTEK/E `ogonek'.
 
-Je/sli czytasz ten tekst, to albo przegl/adasz plik /zr/od/lowy
-biblioteki `ogonek.el', albo wywo/la/le/s polecenie `ogonek-jak'. 
-W drugim przypadku mo/zesz usun/a/c tekst z ekranu, stosuj/ac 
+Je/sli czytasz ten tekst, to albo przegl/adasz plik /xr/od/lowy
+biblioteki `ogonek.el', albo wywo/la/le/s polecenie `ogonek-jak'.
+W drugim przypadku mo/zesz usun/a/c tekst z ekranu, stosuj/ac
 polecenie `M-x kill-buffer'.
 
-Niniejsza bibliteka dostarcza funkcji do zmiany kodowania polskich
+Niniejsza biblioteka dostarcza funkcji do zmiany kodowania polskich
 znak/ow diakrytycznych. Funkcje te mo/zna pogrupowa/c nast/epuj/aco.
 
- 1. Funkcje `ogonek-recode-region' oraz `ogonek-recode-buffer' 
-    przekodowu/j/a zaznaczony fragment wzgl/ednie ca/ly buffor.    
+ 1. `ogonek-recode-region' oraz `ogonek-recode-buffer'
+    przekodowuj/a zaznaczony fragment wzgl/ednie ca/ly buffor.
     Po wywo/laniu interakcyjnym funkcji zadawane s/a
-    pytania o parametry przekodowania, czyli o nazw/e kodowania
-    w tek/scie /zr/od/lowym i nazw/e kodowania docelowego. 
-    Poni/zsze przyk/lady pokazuj/a, jakich parametr/ow 
+    pytania o parametry przekodowania: nazw/e kodowania
+    w tek/scie /xr/od/lowym i nazw/e kodowania docelowego.
+    Poni/zsze przyk/lady powinny wyja/sni/c, jakich parametr/ow
     oczekuj/a wymienione funkcje:
 
-      (ogonek-recode-region (poczatek) (koniec)
+      (ogonek-recode-region (poczatek-fragmentu) (koniec-fragmentu)
+         nazwa-kodowania-w-tekscie-zrodlowym nazwa-kodowania-docelowa)
+      (ogonek-recode-buffer
          nazwa-kodowania-w-tekscie-zrodlowym nazwa-kodowania-docelowa)
-      (ogonek-recode-buffer 
-         nazwa-kodowania-w-tekscie-zrodlowym nazwa-kodowania-docelowa)    
 
- 2. Funkcje `ogonek-prefixify-region' oraz `ogonek-prefixify-buffer'
-    do wprowadzania notacji prefiksowej.
+ 2. `ogonek-prefixify-region' oraz `ogonek-prefixify-buffer'
+    s/lu/z/a do wprowadzania notacji prefiksowej.
 
-      (ogonek-prefixify-region (poczatek) (koniec)
+      (ogonek-prefixify-region (poczatek-fragmentu) (koniec-fragmentu)
          nazwa-kodowania-w-tekscie-zrodlowym znak-prefiksu)
-      (ogonek-prefixify-buffer 
-         nazwa-kodowania-w-tekscie-zrodlowym znak-prefiksu)     
+      (ogonek-prefixify-buffer
+         nazwa-kodowania-w-tekscie-zrodlowym znak-prefiksu)
+
+ 3. `ogonek-deprefixify-region' oraz `ogonek-deprefixify-buffer'
+    s/lu/z/a do usuwania notacji prefiksowej.
 
- 3. Funkcje `ogonek-deprefixify-region' oraz `ogonek-deprefixify-buffer' 
-    do usuwania notacji prefiksowej.
-     
-      (ogonek-deprefixify-region (poczatek) (koniec)
+      (ogonek-deprefixify-region (poczatek-fragmentu) (koniec-fragmentu)
+         znak-prefiksu nazwa-kodowania-docelowa)
+      (ogonek-prefixify-buffer
          znak-prefiksu nazwa-kodowania-docelowa)
-      (ogonek-prefixify-buffer 
-         znak-prefiksu nazwa-kodowania-docelowa)         
 
  U/zycie klawisza TAB w trybie interakcyjnym powoduje wy/swietlenie
- listy dopuszczalnych nazw kod/ow, odczytywanych ze sta/lej
- `ogonek-name-encoding-alist'. 
+ listy dopuszczalnych nazw kod/ow, pami/etanych w sta/lej
+ `ogonek-name-encoding-alist'.
 
- Funkcje biblioteki odwo/luj/a si/e do pi/eciu zmiennych, kt/ore 
+ Funkcje biblioteki odwo/luj/a si/e do pi/eciu zmiennych, kt/ore
  przechowuj/a podpowiedzi do zadawanych pyta/n. Nazwy tych zmiennych
- oraz ich warto/sci domy/slne s/a nast/epuj/ace: 
+ oraz ich warto/sci domy/slne s/a nast/epuj/ace:
 
    ogonek-from-encoding           iso8859-2
-   ogonek-to-encoding             mazovia
+   ogonek-to-encoding             ascii
    ogonek-prefix-char              /
    ogonek-prefix-from-encoding    iso8859-2
    ogonek-prefix-to-encoding      iso8859-2
@@ -120,370 +128,378 @@ znak/ow diakrytycznych. Funkcje te mo/zna pogrupowa/c nast/epuj/aco.
  Powy/zsze warto/sci domy/slne mo/zna zmieni/c przez umieszczenie w pliku
  konfiguracyjnym `~/.emacs' odpowiednich przypisa/n, na przyk/lad:
 
- (setq ogonek-prefix-char ?/)
- (setq ogonek-prefix-to-encoding \"iso8859-2\")
  (setq ogonek-prefix-char ?/)
  (setq ogonek-prefix-to-encoding \"iso8859-2\")
 
  Zamiast wczytywania ca/lej biblioteki `ogonek.el' mo/zna w pliku
- `~/.emacs' za/z/ada/c wczytania wybranych funkcji i to dopiero w
chwili ich wywo/lania:
+ `~/.emacs' za/z/ada/c wczytania wybranych funkcji, na dodatek dopiero
w chwili ich rzeczywistego u/zycia:
 
- (autoload 'ogonek-jak \"ogonek\")
- (autoload 'ogonek-recode-region \"ogonek\")
- (autoload 'ogonek-prefixify-region \"ogonek\")
- (autoload 'ogonek-deprefixify-region \"ogonek\")
  (autoload 'ogonek-jak \"ogonek\")
  (autoload 'ogonek-recode-region \"ogonek\")
  (autoload 'ogonek-prefixify-region \"ogonek\")
  (autoload 'ogonek-deprefixify-region \"ogonek\")
 
  Cz/esto wyst/epuj/ace kombinacje wywo/la/n funkcji mo/zna dla wygody
  skr/oci/c i przypisa/c klawiszom. Oto praktyczne przyk/lady:
 
- (defun deprefixify-iso8859-2-region ()
-   (interactive \"*\")
-   (ogonek-deprefixify-region 
-    (region-beginning) (region-end) ?/ \"iso8859-2\"))
- (global-set-key \"\\C-cd\" 'deprefixify-iso8859-2-region) ; ctrl-c d
+   (defun deprefixify-iso8859-2-region (start end)
+     (interactive \"*r\")
+     (ogonek-deprefixify-region start end ?/ \"iso8859-2\"))
+   (global-set-key \"\\C-cd\" 'deprefixify-iso8859-2-region) ; ctrl-c d
 
- (defun mazovia-to-iso8859-2 () 
-   (interactive \"*\")
-   (ogonek-recode-region \"mazovia\" \"iso8859-2\"))
- (global-set-key \"\\C-cr\" 'mazovia-to-iso8859-2) ; ctrl-c r
+   (defun mazovia-to-iso8859-2 (start end)
+     (interactive \"*r\")
+     (ogonek-recode-region start end \"mazovia\" \"iso8859-2\"))
  (global-set-key \"\\C-cr\" 'mazovia-to-iso8859-2) ; ctrl-c r
 
- (defun prefixify-iso8859-2-region ()
-   (interactive \"*\")
-   (ogonek-prefixify-region 
-    (region-beginning) (region-end) \"iso8859-2\" ?/))
- (global-set-key \"\\C-cp\" 'prefixify-iso8859-2-region) ; ctrl-c p
+   (defun prefixify-iso8859-2-region (start end)
+     (interactive \"*r\")
+     (ogonek-prefixify-region start end \"iso8859-2\" ?/))
+   (global-set-key \"\\C-cp\" 'prefixify-iso8859-2-region) ; ctrl-c p
 
  Ka/zd/a operacj/e przekodowania mo/zna w ca/lo/sci odwo/la/c
  przez wykonanie polecenia `undo'.")
 
 (defun ogonek-jak ()
-  "Display the string constant `ogonek-informacja' 
-by inserting it into an auxiliary *ogonek-jak* buffer."
+  "Display `ogonek-informacja' in an auxiliary *ogonek-jak* buffer."
   (interactive)
   (set-buffer  (get-buffer-create " *ogonek-jak*"))
   (insert ogonek-informacja)
   (switch-to-buffer " *ogonek-jak*")
-  (beginning-of-buffer))
+  (goto-char (point-min)))
 
-; ------ A Little Info in English --------
+;; ------ A Little Info in English --------
 
 (defconst ogonek-information
-  "   INTERACTIVE FUNCTIONS PROVIDED BY THE LIBRARY `ogonek'.
+  "  THE INTERACTIVE FUNCTIONS PROVIDED BY THE LIBRARY `ogonek'.
 
 If you read this text then you are either looking at the library's
-source text or you have called the `ogonek-howto' command. In the
+source text or you have called the `ogonek-how' command. In the
 latter case you may remove this text using `M-x kill-buffer'.
 
 The library provides functions for changing the encoding of Polish
 diacritic characters, the ones with an `ogonek' below or above them.
-The functions come in the following gropus.
-
- 1. Functions `ogonek-recode-region' and `ogonek-recode-buffer' to
-    change between one-character encodings, such as `iso-8859-2',
-    `mazovia', plain `ascii' or `TeX'. As the names suggest you may
-    recode either the entire current buffer or just a marked region 
-    of it. You may use these functions interactively as commands. Once 
-    you call a command you will be asked about the code used in 
-    the source text and the target encoding, the one you want to get. 
-    The following examples show a non-interactive use of the functions 
-    in a program. They also illustrtate what parameters the functions 
-    expect:
-
-      (ogonek-recode-region (region-beginning) (region-end)
-                                from-code-name to-code-name)
-      (ogonek-recode-buffer from-code-name to-code-name)         
-
- 2. Functions `ogonek-prefixify-region' and `ogonek-prefixify-buffer'.
-    for introducing prefix notation:
-
-      (ogonek-prefixify-region (region-beginning) (region-end)
-                                     from-code-name prefix-char)
-      (ogonek-prefixify-buffer from-code-name prefix-char)         
-  
- 3. Functions  `ogonek-deprefixify-region' and `ogonek-deprefixify-buffer' 
-    for removing prefix notation:
-     
-      (ogonek-deprefixify-region (region-beginning) (region-end)
-                                   prefix-char to-code-name)
-      (ogonek-prefixify-buffer prefix-char to-code-name)         
-
- The use of the TAB character in interactive makes `emacs' display
- the list of encodings recognized by the library - the code names
- are stored in the constant  `ogonek-name-encoding-alist'
-
- The functions of the library refer to five variables that keep
- hints to the questions asked. The names of those variables as well
as their default values are:
+The functions come in the following groups.
+
+ 1. `ogonek-recode-region' and `ogonek-recode-buffer' to change
+    between one-character encodings, such as `iso-8859-2', `mazovia',
+    plain `ascii' or `TeX'. As the names suggest you may recode
+    either the entire current buffer or just a marked region
+    in it. You may use the functions interactively as commands.
+    Once you call a command you will be asked about the code
+    currently used in your text and the target encoding, the one
+    you want to get. The following example shows a non-interactive
+    use of the functions in a program. This also illustrates what
+    type of parameters the functions expect to be called with:
+
+      (ogonek-recode-region
+        (region-beginning) (region-end) from-code-name to-code-name)
+      (ogonek-recode-buffer from-code-name to-code-name)
+
+ 2. `ogonek-prefixify-region' and `ogonek-prefixify-buffer' for
+    introducing prefix notation:
+
+      (ogonek-prefixify-region
+        (region-beginning) (region-end) from-code-name prefix-char)
+      (ogonek-prefixify-buffer from-code-name prefix-char)
+
+ 3. `ogonek-deprefixify-region' and `ogonek-deprefixify-buffer' for
+    removing prefix notation:
+
+      (ogonek-deprefixify-region
+        (region-beginning) (region-end) prefix-char to-code-name)
+      (ogonek-prefixify-buffer prefix-char to-code-name)
+
+ The TAB character used in interactive mode makes `emacs'
+ display the list of encodings recognized by the library. The list
+ is stored in the constant `ogonek-name-encoding-alist'.
+
+ The `ogonek' functions refer to five variables in which the suggested
+ answers to dialogue questions are stored. The variables and their
+ default values are:
+
    ogonek-from-encoding           iso8859-2
-   ogonek-to-encoding             mazovia
-   ogonek-prefix-char              /
+   ogonek-to-encoding             ascii
+   ogonek-prefix-char             /
    ogonek-prefix-from-encoding    iso8859-2
    ogonek-prefix-to-encoding      iso8859-2
 
- The above default values can be changed by placing appropriate settings 
+ The above default values can be changed by placing appropriate settings
  in the '~/.emacs' file:
 
- (setq ogonek-prefix-char ?/)
- (setq ogonek-prefix-to-encoding \"iso8859-2\")
  (setq ogonek-prefix-char ?/)
  (setq ogonek-prefix-to-encoding \"iso8859-2\")
 
- Instead of loading the whole library `ogonek.el' it may be better to
- autoload chosen functions in `~/.emacs':
+ Instead of loading the whole library `ogonek' it may be better to
+ autoload the needed functions, for example by placing in `~/.emacs':
 
(autoload 'ogonek-jak \"ogonek\")
- (autoload 'ogonek-recode-region \"ogonek\")
- (autoload 'ogonek-prefixify-region \"ogonek\")
- (autoload 'ogonek-deprefixify-region \"ogonek\")
  (autoload 'ogonek-how \"ogonek\")
  (autoload 'ogonek-recode-region \"ogonek\")
  (autoload 'ogonek-prefixify-region \"ogonek\")
  (autoload 'ogonek-deprefixify-region \"ogonek\")
 
  The most frequent function calls can be abbreviated and assigned to
  keyboard keys. Here are a few practical examples:
 
- (setq ogonek-from-code-name \"iso8859-2\")
- (setq ogonek-to-code-name \"mazovia\")
- (setq ogonek-prefix-char ?/)
- (setq ogonek-prefix-from-code-name \"iso8859-2\")
- (setq ogonek-prefix-to-code-name \"iso8859-2\")
-
- (defun deprefixify-iso8859-2-region ()
-   (interactive \"*\")
-   (ogonek-deprefixify-region 
-    (region-beginning) (region-end) ?/ \"iso8859-2\"))
- (global-set-key \"\\C-cd\" 'deprefixify-iso8859-2-region) ; ctrl-c d
+   (defun deprefixify-iso8859-2-region (start end)
+     (interactive \"*r\")
+     (ogonek-deprefixify-region start end ?/ \"iso8859-2\"))
+   (global-set-key \"\\C-cd\" 'deprefixify-iso8859-2-region) ; ctrl-c d
 
- (defun mazovia-to-iso8859-2 () 
-   (interactive \"*\")
-   (ogonek-recode-region \"mazovia\" \"iso8859-2\"))
- (global-set-key \"\\C-cr\" 'mazovia-to-iso8859-2) ; ctrl-c r
+   (defun mazovia-to-iso8859-2 (start end)
+     (interactive \"*r\")
+     (ogonek-recode-region start end \"mazovia\" \"iso8859-2\"))
  (global-set-key \"\\C-cr\" 'mazovia-to-iso8859-2) ; ctrl-c r
 
- (defun prefixify-iso8859-2-region ()
-   (interactive \"*\")
-   (ogonek-prefixify-region 
-    (region-beginning) (region-end) \"iso8859-2\" ?/))
- (global-set-key \"\\C-cp\" 'prefixify-iso8859-2-region) ; ctrl-c p
+   (defun prefixify-iso8859-2-region (start end)
+     (interactive \"*r\")
+     (ogonek-prefixify-region start end \"iso8859-2\" ?/))
+   (global-set-key \"\\C-cp\" 'prefixify-iso8859-2-region) ; ctrl-c p
 
- Each recoding opertation can be called off by executing the `undo'
- command.")
+ Each recoding operation can be called off using the `undo' command.")
 
 (defun ogonek-how ()
-  "Display the string constant `ogonek-information' 
-by inserting it into an auxiliary *recode-help* buffer."
+  "Display `ogonek-information' in an auxiliary *recode-how* buffer."
   (interactive "*")
-  (set-buffer  (get-buffer-create " *ogonek-help*"))
+  (set-buffer  (get-buffer-create " *ogonek-how*"))
   (insert ogonek-information)
-  (switch-to-buffer " *ogonek-help*")
-  (beginning-of-buffer))
-
-;; ------ Variables for keeping hints to the questions ---------
-
-(defvar ogonek-from-encoding "iso8859-2"
-  "*Encoding in the source file of recoding.")
-(defvar ogonek-to-encoding "ascii"
-  "*Encoding in the target file of recoding.")
-(defvar ogonek-prefix-char ?/
-  "*Prefix character for prefix encodings.") 
-(defvar ogonek-prefix-from-encoding "iso8859-2"
-  "*Encoding in the source file subject to prefixifation.") 
-(defvar ogonek-prefix-to-encoding "iso8859-2"
-  "*Encoding in the target file subject to deprefixifation.") 
-
-;; ------- Utilities for reading function parameters -------------
+  (switch-to-buffer " *ogonek-how*")
+  (goto-char (point-min)))
+
+;; ---- Variables keeping the suggested answers to dialogue questions -----
+(defvar ogonek-encoding-choices
+  (cons 'choice
+       (mapcar (lambda (x) (list 'const (car x)))
+               ogonek-name-encoding-alist))
+  "List of ogonek encodings.  Used only for customization.")
+(defcustom ogonek-from-encoding "iso8859-2"
+  "*Encoding in the source file of recoding."
+  :type ogonek-encoding-choices
+  :group 'ogonek)
+(defcustom ogonek-to-encoding "ascii"
+  "*Encoding in the target file of recoding."
+  :type ogonek-encoding-choices
+  :group 'ogonek)
+(defcustom ogonek-prefix-char ?/
+  "*Prefix character for prefix encodings."
+  :type 'character
+  :group 'ogonek)
+(defcustom ogonek-prefix-from-encoding "iso8859-2"
+  "*Encoding in the source file subject to prefixifation."
+  :type ogonek-encoding-choices
+  :group 'ogonek)
+(defcustom ogonek-prefix-to-encoding "iso8859-2"
+  "*Encoding in the target file subject to deprefixifation."
+  :type ogonek-encoding-choices
+  :group 'ogonek)
+
+;; ---- Auxiliary functions for reading parameters in interactive mode ----
 
 (defun ogonek-read-encoding (prompt default-name-var)
-  "Change with completion based on alist `ogonek-name-encoding-alist'."
- (let ((encoding 
-        (completing-read 
+  "Read encoding name with completion based on `ogonek-name-encoding-alist'.
+Store the name in the parameter-variable DEFAULT-NAME-VAR.
+PROMPT is a string to be shown when the user is asked for a name."
+ (let ((encoding
+        (completing-read
          (format "%s (default %s): " prompt (eval default-name-var))
          ogonek-name-encoding-alist nil t)))
-  ; set the new default name to be the one just read
-   (set default-name-var 
-       (if (string= encoding "") (eval default-name-var) encoding))  
-  ; return the new default as the name you read
+  ;; change the default name to the one just read
+  (set default-name-var
+    (if (string= encoding "") (eval default-name-var) encoding))
+  ;; return the new default as the name you read
   (eval default-name-var)))
 
 (defun ogonek-read-prefix (prompt default-prefix-var)
-  "Change prefix."
-  (let ((prefix-string 
-         (read-string 
-          (format "%s (default %s): " prompt 
+  "Read a prefix character for prefix notation.
+The result is stored in the variable DEFAULT-PREFIX-VAR.
+PROMPT is a string to be shown when the user is asked for a new prefix."
+  (let ((prefix-string
+         (read-string
+          (format "%s (default %s): " prompt
                   (char-to-string (eval default-prefix-var))))))
     (if (> (length prefix-string) 1)
-        (error "! Only one character expected.") 
-      ; set the default prefix character to the one just read
+        (error "! Only one character expected")
+      ;; set the default prefix character to the one just read
       (set default-prefix-var
-           (if (string= prefix-string "") 
-             (eval default-prefix-var) 
+           (if (string= prefix-string "")
+             (eval default-prefix-var)
            (string-to-char prefix-string)))
-      ; return the new default prefix as the code you read)
+      ;; the new default prefix is the function's result:
       (eval default-prefix-var))))
 
 (defun ogonek-lookup-encoding (encoding)
-  "Pick up an association for `encoding' in `ogonek-name-encoding-alist'.
-Before returning a result test whether it has been properly set
-which should be true if the encoding is one of those in
-`ogonek-name-encoding-alist'"
+  "Pick up an association for ENCODING in `ogonek-name-encoding-alist'.
+Before returning a result test whether the string ENCODING is in
+the list `ogonek-name-encoding-alist'"
   (let ((code-list (assoc encoding ogonek-name-encoding-alist)))
     (if (null code-list)
-      (error "! Name `%s' not known in `ogonek-name-encoding-alist'."
+      (error "! Name `%s' not known in `ogonek-name-encoding-alist'"
                encoding)
       (cdr code-list))))
 
-; -------  A utility for zipping two lists -----------
+;; ----  An auxiliary function for zipping two lists of equal length ----
 
 (defun ogonek-zip-lists (xs ys)
-  "Build a list of pairs with elements from lists `xs' and `ys'. 
-We assume that `xs' and `ys' are of the same length."
-  (let ((pairs nil)) 
+  "Build a list of pairs from lists XS and YS of the same length."
+  (let ((pairs nil))
     (while xs
       (setq pairs (cons (cons (car xs) (car ys)) pairs))
       (setq xs (cdr xs))
       (setq ys (cdr ys)))
-;   `pairs' are the function's result
+    ;; `pairs' are the function's result
     pairs))
 
-; -------- Dealing with one-character cencodings -------
+;; ---- An auxiliary function building a one-to-one recoding table -----
 
-(defun ogonek-build-table (recoding-pairs) 
-  "Build a table nedeed by emacs's `translate-region' function.
-The  `recoding-pairs' argument is a list of pairs of characters.
+(defun ogonek-build-table (recoding-pairs)
+  "Build a table required by Emacs's `translate-region' function.
+RECODING-PAIRS is a list of character pairs for which recoding
+is not an identity.
 By using the built-in `translate-region' function
 we gain better performance compared to converting characters
 by a hand-written routine as it is done for prefix encodings."
   (let ((table (make-string 256 0))
         (i 0))
-    (while (< i 256) 
-      (aset table i i) 
+    (while (< i 256)
+      (aset table i i)
       (setq i (1+ i)))
-    ; make changes in `table' according to `recoding-pairs'
+    ;; make changes in `table' according to `recoding-pairs'
     (while recoding-pairs
       (aset table (car (car recoding-pairs)) (cdr (car recoding-pairs)))
       (setq recoding-pairs (cdr recoding-pairs)))
-    ; return the table just built
+    ;; return the table just built
     table))
 
-(defun ogonek-recode-region (start end from-encoding to-encoding) 
-  "This function recodes text in a region delineated by the current-mark 
-and the current point according to the defaults set by the variables
-`ogonek-from-encoding' and `ogonek-to-encoding'."
+;; ---- Commands for one-to-one recoding -------------------------------
+
+(defun ogonek-recode-region (start end from-encoding to-encoding)
+  "Recode text in a marked region in one-to-one manner.
+When called interactively ask the user for the names of the FROM-
+and TO- encodings."
   (interactive (progn (barf-if-buffer-read-only)
-                (list 
-                (region-beginning) 
+                (list
+                (region-beginning)
                 (region-end)
                 (ogonek-read-encoding "From code" 'ogonek-from-encoding)
                 (ogonek-read-encoding "To code" 'ogonek-to-encoding))))
   (save-excursion
-    (translate-region 
+    (translate-region
      start end
-     (ogonek-build-table 
+     (ogonek-build-table
       (ogonek-zip-lists
        (ogonek-lookup-encoding from-encoding)
        (ogonek-lookup-encoding to-encoding))))))
 
 (defun ogonek-recode-buffer (from-encoding to-encoding)
-  "Call `ogonek-region' on the entire buffer."
+  "Call `ogonek-recode-region' on the entire buffer.
+When called interactively ask the user for the names of the FROM-
+and TO- encodings."
   (interactive (progn (barf-if-buffer-read-only)
-                (list 
+                (list
                 (ogonek-read-encoding "From code" 'ogonek-from-encoding)
                 (ogonek-read-encoding "To code" 'ogonek-to-encoding))))
-  (ogonek-recode-region 
+  (ogonek-recode-region
    (point-min) (point-max) from-encoding to-encoding))
 
-; --------------------------------
-; Recoding with prefix notation 
-; --------------------------------
+;; ---- Recoding with prefix notation -------------------------------
+
+(defconst ogonek-prefix-code '(?A  ?C  ?E  ?L  ?N  ?O  ?S  ?X  ?Z
+                               ?a  ?c  ?e  ?l  ?n  ?o  ?s  ?x  ?z))
 
-(defconst prefix-code '(?A  ?C  ?E  ?L  ?N  ?O  ?S  ?X  ?Z 
-                        ?a  ?c  ?e  ?l  ?n  ?o  ?s  ?x  ?z)) 
-    
 (defun ogonek-prefixify-region (start end from-encoding prefix-char)
-  "Replace -- in the region delineated by the current-mark 
-and the point -- each character from `ogonek-from-encoding'
-by two characters: `ogonek-prefix-char' and the corresponding 
-character from the `prefix' list. Double the character 
-`ogonek-prefix-char'"
+  "In a region, replace FROM-encoded Polish characters with PREFIX pairs.
+A PREFIX pair generated consists of PREFIX-CHAR and the respective
+character listed in the `ogonek-prefix-code' constant.
+PREFIX-CHAR itself gets doubled."
   (interactive (progn (barf-if-buffer-read-only)
-    (list 
-    (region-beginning) 
-    (region-end) 
+    (list
+    (region-beginning)
+    (region-end)
     (ogonek-read-encoding "From code" 'ogonek-prefix-from-encoding)
     (ogonek-read-prefix "Prefix character" 'ogonek-prefix-char))))
-  (let* 
+  (let*
       ((from-code (ogonek-lookup-encoding from-encoding))
-       (to-code prefix-code)
-       (recoding-pairs  ; we add `ogonek-prefix-char' for doubling
-        (ogonek-zip-lists 
-         (cons prefix-char from-code)  
+       (to-code ogonek-prefix-code)
+       (recoding-pairs  ; `ogonek-prefix-char' added for doubling
+        (ogonek-zip-lists
+         (cons prefix-char from-code)
          (cons prefix-char to-code))))
     (save-excursion
       (goto-char start)
       (while (< (point) end)
         (let ((pair (assoc (following-char) recoding-pairs)))
           (if (null pair)
-              ; not a Polish character -- skip it
+              ;; not a Polish character -- skip it
               (forward-char 1)
-            ; Polish character -- replace it by a two characters
+            ;; Polish character -- insert a prefix pair instead
             (delete-char 1)
             (insert ogonek-prefix-char)
             (insert (cdr pair))
-            ; the region is now one character longer
+            ;; the region is now one character longer
             (setq end (1+ end))))))))
 
 (defun ogonek-prefixify-buffer (from-encoding prefix-char)
   "Call `ogonek-prefixify-region' on the entire buffer."
   (interactive (progn (barf-if-buffer-read-only)
-    (list 
+    (list
      (ogonek-read-encoding "From code" 'ogonek-prefix-from-encoding)
      (ogonek-read-prefix "Prefix character" 'ogonek-prefix-char))))
-  (ogonek-prefixify-region 
+  (ogonek-prefixify-region
    (point-min) (point-max) from-encoding prefix-char))
 
 (defun ogonek-deprefixify-region (start end prefix-char to-encoding)
-  "Replace `ogonek-prefix-char' followed by a character from 
-the `prefix' list or another `ogonek-prefix-char' by 
-the corresponding character from `ogonek-from-encoding' 
-or by one `ogonek-prefix-char'."
+  "In a region, replace PREFIX pairs with their corresponding TO-encodings.
+PREFIX-CHAR followed by a Polish character from the `ogonek-prefix-code'
+list is replaced with the corresponding TO-encoded character. A doubled
+PREFIX-CHAR gets replaced with a single one. A combination of PREFIX-CHAR
+followed by a non-Polish character, that is one not listed in the
+`ogonek-prefix-code' constant, is left unchanged."
   (interactive (progn (barf-if-buffer-read-only)
-                (list (region-beginning) 
+                (list (region-beginning)
                       (region-end)
-                      (ogonek-read-prefix 
+                      (ogonek-read-prefix
                         "Prefix character" 'ogonek-prefix-char)
-                      (ogonek-read-encoding 
+                      (ogonek-read-encoding
                        "To code" 'ogonek-prefix-to-encoding))))
-  (let* 
-      ((from-code prefix-code)
+  (let*
+      ((from-code ogonek-prefix-code)
        (to-code (ogonek-lookup-encoding to-encoding))
-       (recoding-pairs 
-        (ogonek-zip-lists 
-          (cons prefix-char from-code)  
+       (recoding-pairs
+        (ogonek-zip-lists
+          (cons prefix-char from-code)
           (cons prefix-char to-code))))
     (save-excursion
       (goto-char start)
       (while (< (point) end)
         (forward-char 1)
        (if (or (not (= (preceding-char) prefix-char)) (= (point) end))
-           ; non-prefix character or the end-of-region -- do nothing
+           ;; non-prefix character or the end-of-region -- do nothing
            ()
-         ; now, we can check the next character
+         ;; now, we can check the next character
          (let ((pair (assoc (following-char) recoding-pairs)))
-           (if (null pair) 
-               ; `following-char' is not a Polish character nor it is
-               ;  `prefix-char' since the one is among `recoding-pairs'
-               (forward-char 1)     
-           ; else prefix followed by a Polish character has been found
-           ; replace it by the corresponding Polish character
+           (if (null pair)
+               ;; `following-char' is not a Polish character nor it is
+               ;;  `prefix-char' since the one is among `recoding-pairs'
+               (forward-char 1)
+           ;; else prefix followed by a Polish character has been found
+           ;; replace it by the corresponding Polish character
            (backward-char 1)
            (delete-char 2)
            (insert (cdr pair))
-           ; the region got shorter by one character
+           ;; the region got shorter by one character
            (setq end (1- end)))))))))
 
 (defun ogonek-deprefixify-buffer (prefix-char to-encoding)
   "Call `ogonek-deprefixify-region' on the entire buffer."
   (interactive (progn (barf-if-buffer-read-only)
-    (list 
+    (list
      (ogonek-read-prefix "Prefix character" 'ogonek-prefix-char)
      (ogonek-read-encoding "To code" 'ogonek-prefix-to-encoding))))
-  (ogonek-deprefixify-region 
+  (ogonek-deprefixify-region
    (point-min) (point-max) prefix-char to-encoding))
 
 (provide 'ogonek)
 
+;;; arch-tag: 672d7744-28ac-412b-965e-06a27e50d1d7
 ;;; ogonek.el ends here