For instance, I want to convert "CamelCasedName" to "camel_cased_name". Is there a way to do this in emacs?
This small bit of code from this page, with a wrapper function and an underscore replacing the hyphen with an underscore, could easily be turned into a command to do that. (Check that it treats leading caps to suit you):
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)))
Moritz Bunkus wrote an elisp function to toggle between CamelCase and c_style
For display purposes only, you can use this:
If you want a script which actually converts the text, I imagine you'd have to write some elisp. That question is better asked on stack overflow.
I was able to do this across a whole file quickly with just a query replace regexp.
The search pattern is
\([a-z]+\)\([A-Z]\)\([a-z]+\) and the replacement is
The replacement pattern uses elisp right in the pattern. This requires Emacs 22 or later.
In emacs documentation style:
M-C-% \([a-z]+\)\([A-Z]\)\([a-z]+\) RET \1_\,(downcase \2)\3