A resposta curta a qualquer pergunta do formulário "Existe alguma maneira de _____ no emacs?" é sempre "SIM"
Brian Postow 09/04/10
Respostas:
4
Esse pequeno pedaço de código desta 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 trata dos limites máximos adequados a você):
(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)))
o pacote string-inflectioné mais completo agora: github.com/akicho8/string-inflection (note que há também string-inflection-camelize-lowera mudança hello_worldpara helloWorld).
Ehvince
2
Apenas para fins de exibição, você pode usar este:
M-x glasses-mode
Se você quer um script que realmente converta o texto, eu imagino que você teria que escrever um elisp. Essa pergunta é melhor feita no estouro de pilha.
Respostas:
Esse pequeno pedaço de código desta 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 trata dos limites máximos adequados a você):
fonte
O Emacs possui um modo de óculos que exibe nomes de camelcase com sublinhados no meio. (Veja também http://www.emacswiki.org/emacs/GlassesMode ).
Se você realmente deseja alterar o texto do arquivo
M-x query-replace-regexp
provavelmente é adequado.fonte
Moritz Bunkus escreveu uma função elisp para alternar entre CamelCase e c_style
fonte
string-inflection
é mais completo agora: github.com/akicho8/string-inflection (note que há tambémstring-inflection-camelize-lower
a mudançahello_world
parahelloWorld
).Apenas para fins de exibição, você pode usar este:
Se você quer um script que realmente converta o texto, eu imagino que você teria que escrever um elisp. Essa pergunta é melhor feita no estouro de pilha.
fonte
Consegui fazer isso rapidamente em um arquivo inteiro com apenas uma consulta para substituir o regexp .
O padrão de pesquisa é
\([a-z]+\)\([A-Z]\)\([a-z]+\)
e a substituição é\1_\,(downcase \2)\3
.O padrão de substituição usa elisp diretamente no padrão. Isso requer o Emacs 22 ou posterior.
No estilo de documentação do emacs:
fonte