en Emacs, que formatear un archivo como: 1) Cx h (o Mx mark-whole-buffer) 2) CM- \ (o guión Mx-región)¿Cómo formatear todos los archivos bajo un directorio en emacs?
necesito ayuda me muestran cómo formatear todos los archivos bajo un directorio?
en Emacs, que formatear un archivo como: 1) Cx h (o Mx mark-whole-buffer) 2) CM- \ (o guión Mx-región)¿Cómo formatear todos los archivos bajo un directorio en emacs?
necesito ayuda me muestran cómo formatear todos los archivos bajo un directorio?
Ésta es otra manera de hacerlo:
En primer lugar, evaluar la definición de función en su *scratch*
búfer:
(defun indent-marked-files()
(interactive)
(dolist (file (dired-get-marked-files))
(find-file file)
(indent-region (point-min) (point-max))
(save-buffer)
(kill-buffer nil)))
A continuación, abrir un búfer Dired en el nivel superior del directorio bajo el cual se quiero cambiar todos los archivos. Proporcione al comando directo un prefijo numérico para que solicite los modificadores para dar el comando ls
y agregue el interruptor R
(recurse): C-u C-x d R RET su-directorio RET.
A continuación, marcar todos los archivos regulares en el listado de directorios recursivo: en primer lugar */ para marcar todos los directorios, entonces * t para alternar la selección.
Finalmente, ejecute el comando anterior: M-x sangría-marcó-archivos.
Tenga en cuenta que si ya tiene búferes visitando alguno de los archivos de destino, los matará al indent-marked-files
. Además, tenga en cuenta que ninguno de los cambios de archivos se podrá deshacer; usar con precaución! Lo probé en un caso simple y parece funcionar como se describe, pero no garantizo.
Puede probar esto:
(defun format-all-files (regexp)
"Format multiple files in one command."
(interactive "sFind files matching regexp (default all): ")
(when (string= "" regexp) (setq regexp ""))
(let ((dir (file-name-directory regexp))
(nodir (file-name-nondirectory regexp)))
(when dir (cd dir))
(when (string= "" nodir) (setq nodir "."))
(let ((files (directory-files "." t nodir nil t))
(errors 0))
(while (not (null files))
(let ((filename (car files)))
(if (file-readable-p filename)
(progn
(set-buffer (find-file-noselect filename))
(mark-whole-buffer)
(indent-region-or-balanced-expression)
(save-buffer)
(kill-buffer (current-buffer)))
(incf errors))
(setq files (cdr files))))
(when (> errors 0)
(message (format "%d files were unreadable." errors))))))
Pero tenga en cuenta que esto debe cargar la modalidad específica de archivo una y otra vez, lo que puede implicar el resaltado de sintaxis o lo que sucede en la inicialización de una carga de ese tipo. Para trabajos de gran formato, un programa por lotes como indent
que solo sangrar será mucho más rápido.
Crea una macro para hacerlo. Abrir el directorio en el dired (C-x d), y luego:
bury-buffer
. Estarás de vuelta en el búfer directo.Así que ahora tiene una macro que abre el archivo en la línea actual, lo formatea, vuelve a colocarlo en la línea, y lo coloca en la siguiente línea. Ejecútelo con F4 tantas veces como sea necesario.
Lo tengo, gracias XD – lot