Existe alguma maneira de converter nomes de cascas de camelos para usar sublinhados no emacs?

8

Por exemplo, eu quero converter "CamelCasedName" em "camel_cased_name". Existe uma maneira de fazer isso no emacs?

    
por Jason Baker 01.04.2010 / 16:00

5 respostas

4

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)))
    
por 01.04.2010 / 22:37
4

O Emacs tem glasses-mode que exibe nomes de camelcase com underscores entre . (Veja também link ).

Se você quiser realmente alterar o texto do arquivo M-x query-replace-regexp provavelmente é adequado.

    
por 01.04.2010 / 17:55
3

Moritz Bunkus escreveu um função elisp para alternar entre CamelCase e c_style

    
por 21.06.2011 / 12:33
2

Apenas para fins de exibição, você pode usar isto:

M-x glasses-mode

Se você quiser um script que realmente converta o texto, imagino que você tenha que escrever algum elisp. Essa pergunta é melhor feita no estouro de pilha.

    
por 01.04.2010 / 17:53
2

Consegui fazer isso em um arquivo inteiro rapidamente com apenas uma consulta substitua regexp .

O padrão de pesquisa é \([a-z]+\)\([A-Z]\)\([a-z]+\) e a substituição é _\,(downcase ) .

O padrão de substituição usa o elisp no padrão. Isso requer o Emacs 22 ou posterior.

No estilo de documentação do emacs:

M-C-% \([a-z]+\)\([A-Z]\)\([a-z]+\) RET _\,(downcase )
    
por 15.03.2016 / 01:24

Tags