Follow-up to my initial contribution of NATO alphabetization in #2288, I noticed that `denato-region' will not always work because `rassoc' is being case-sensitive. I've provided a command to operate on strings as a test suite, where (nato-string "echo mike alfa charlie sierra" t) should give "emacs", but it does not. The following will work since the capitalization jives with internals. (nato-string "Echo Mike Alfa Charlie Sierra" t) Attached is a proposed patch. Thanks. /a 2011-03-31 Aaron S. Hawley * play/morse.el (denato-region): Decoding NATO alphabet encodings should be done case-insensitive. (nato-string): New function. --- lisp/play/morse.el 2011-03-07 07:35:25 +0000 +++ lisp/play/morse.el 2011-03-31 04:25:45 +0000 @@ -231,7 +231,7 @@ (if (null (looking-at "[a-z]+")) (forward-char 1) (setq str (buffer-substring (match-beginning 0) (match-end 0))) - (if (null (setq nato (rassoc str nato-alphabet))) + (if (null (setq nato (rassoc (capitalize str) nato-alphabet))) (goto-char (match-end 0)) (replace-match (if (string-equal "(" (car nato)) @@ -240,6 +240,18 @@ (if (looking-at "-") (delete-char 1)))))))) +(defun nato-string (string &optional arg) + "Convert NATO phonetic alphabet in STRING to ordinary ASCII text." + (interactive "sConvert to NATO: \nP") + (with-temp-buffer + (insert string) + (if arg + (denato-region (point-min) (point-max)) + (nato-region (point-min) (point-max))) + (if (interactive-p) + (message (buffer-string)) + (buffer-string)))) + (provide 'morse) ;;; morse.el ends here -- In general, we reserve the right to have a poor memory--the computer, however, is supposed to remember!  Poor computer.  -- Guy Lewis Steele Jr.