Esse pequeno código de esta página , com uma função de invólucro e um sublinhado substituindo o hífen por um sublinhado, poderia facilmente ser transformado em um comando para fazer isso. (Verifique se ele trata as tampas de líderes de acordo com você):
Sample EmacsLisp code to un-CamelCase a string (from http://www.friendsnippets.com/snippet/101/):
(defun un-camelcase-string (s &optional sep start)
"Convert CamelCase string S to lower case with word separator SEP.
Default for SEP is a hyphen \"-\".
If third argument START is non-nil, convert words after that
index in STRING."
(let ((case-fold-search nil))
(while (string-match "[A-Z]" s (or start 1))
(setq s (replace-match (concat (or sep "-")
(downcase (match-string 0 s)))
t nil s)))
(downcase s)))