emacs elisp camelcasing

Conversión de camelcase a_en emacs



elisp camelcasing (4)

¿Hay una función de emacs para convertir una palabra en camello en subrayado? Algo como:

longVariableName

Mx to-underscore

long_variable_name


Lo uso al convertir código C # a PHP.

(defun un-camelcase-word-at-point () "un-camelcase the word at point, replacing uppercase chars with the lowercase version preceded by an underscore. The first char, if capitalized (eg, PascalCase) is just downcased, no preceding underscore. " (interactive) (save-excursion (let ((bounds (bounds-of-thing-at-point ''word))) (replace-regexp "//([A-Z]//)" "_//1" nil (1+ (car bounds)) (cdr bounds)) (downcase-region (car bounds) (cdr bounds)))))

Y luego en mi php-mode fn:

(local-set-key "/M-/C-C" ''un-camelcase-word-at-point)


(progn (replace-regexp "//([A-Z]//)" "_//1" nil (region-beginning) (region-end)) (downcase-region (region-beginning) (region-end)))


Uso lo siguiente para alternar entre camelcase y guiones bajos:

(defun toggle-camelcase-underscores () "Toggle between camelcase and underscore notation for the symbol at point." (interactive) (save-excursion (let* ((bounds (bounds-of-thing-at-point ''symbol)) (start (car bounds)) (end (cdr bounds)) (currently-using-underscores-p (progn (goto-char start) (re-search-forward "_" end t)))) (if currently-using-underscores-p (progn (upcase-initials-region start end) (replace-string "_" "" nil start end) (downcase-region start (1+ start))) (replace-regexp "//([A-Z]//)" "_//1" nil (1+ start) end) (downcase-region start (cdr (bounds-of-thing-at-point ''symbol)))))))


Use el paquete de inflexión de cadenas, disponible en MELPA, o en https://github.com/akicho8/string-inflection .

Accesos directos de teclado útiles, copiados de https://www.emacswiki.org/emacs/CamelCase :

;; Cycle between snake case, camel case, etc. (require ''string-inflection) (global-set-key (kbd "C-c i") ''string-inflection-cycle) (global-set-key (kbd "C-c C") ''string-inflection-camelcase) ;; Force to CamelCase (global-set-key (kbd "C-c L") ''string-inflection-lower-camelcase) ;; Force to lowerCamelCase (global-set-key (kbd "C-c J") ''string-inflection-java-style-cycle) ;; Cycle through Java styles