Parece que el problema que estamos tratando de resolver es la sangría incorrecta de código cuando se está cortando/pegar. Puede resolverlo volviendo a indentificar el texto automáticamente con algo como lo siguiente.
Nota: El uso de un fuerzas argumento prefijo no re-entrante (C-u-C y), además de que hay la variable umbral de tamaño.
;; automatically indenting yanked text if in programming-modes
(defvar yank-indent-modes '(emacs-lisp-mode
c-mode c++-mode
tcl-mode sql-mode
perl-mode cperl-mode
java-mode jde-mode
lisp-interaction-mode
LaTeX-mode TeX-mode)
"Modes in which to indent regions that are yanked (or yank-popped)")
(defvar yank-advised-indent-threshold 1000
"Threshold (# chars) over which indentation does not automatically occur.")
(defun yank-advised-indent-function (beg end)
"Do indentation, as long as the region isn't too large."
(if (<= (- end beg) yank-advised-indent-threshold)
(indent-region beg end nil)))
(defadvice yank (after yank-indent activate)
"If current mode is one of 'yank-indent-modes, indent yanked text (with prefix arg don't indent)."
(if (and (not (ad-get-arg 0))
(member major-mode yank-indent-modes))
(let ((transient-mark-mode nil))
(yank-advised-indent-function (region-beginning) (region-end)))))
No estoy seguro de que consiga lo que quiere decir. ¿Podría por favor elaborar su explicación? –
Muchos modos de emacs tienen sangría automática: al presionar [tabulador] en cualquier lugar de la línea, se sangrará la línea donde debería estar. Rara vez tengo que preocuparme por sangrar cualquier cosa manualmente, solo dejo que el editor haga el trabajo por mí. –
Me gustaría poder hacer lo contrario de lo que hace "Tab"; Lo necesito generalmente cuando copio el código pasado posicionado de forma diferente a otro archivo. – sramij