Having moved to a different country spelling words over the phone is a real pain as its not easy for people to understand a foreign name, and because I don’t know the military alphabet in english. So even when I decide spell things out I get stuck on letters as I don’t know what the common word would be. After not remembering how to spell out my last name over the phone again today I decide to create a quick little helper, after all I almost always take notes on my laptop anyway when calling.
Here we go quick emacs string-to-military, with configurable alphabet.
(defun string-to-military (s) (interactive "sEnter string to transfor to military: ") (flet ((string-blank-p (s) (string-match-p "^\\s-*$" s)) (military-get-string (s) (if (string-blank-p s) " " (alist-get s military-alphabet "" nil #'equal)))) (let* ((chars (mapcar 'string s)) (normalized-chars (mapcar 'downcase chars))) (string-join (mapcar 'military-get-string normalized-chars) " ")))) (defun string-to-military-region (start end) (interactive "r") (let ((content (buffer-substring-no-properties start end))) (delete-region start end) (insert (string-to-military content))))
and for the curious
(defvar military-alphabet '(("a" . "alpha") ("b" . "bravo") ("c" . "charlie") ("d" . "delta") ("e" . "echo") ("f" . "foxtrot") ("g" . "golf") ("h" . "hotel") ("i" . "india") ("j" . "juliet") ("k" . "kilo") ("l" . "lima") ("m" . "mike") ("n" . "november") ("o" . "oscar") ("p" . "papa") ("q" . "quebec") ("r" . "romeo") ("s" . "sierra") ("t" . "tango") ("u" . "uniform") ("v" . "victor") ("w" . "whiskey") ("x" . "x-Ray") ("y" . "yankee") ("z" . "zulu")) "Military alphabet alist (CHARACTER . WORD), all characters are lowercase for lookup.")
now part of my coders-little-helper.el in my local emacs.