La sección Smart inference of indentation style de la página NoTabs en EmacsWiki fue muy útil. Le muestra cómo configurar espacios para la mayoría de los proyectos, pero cambie a pestañas si el archivo que está editando tiene más líneas que comiencen con tabulación que líneas que comiencen con espacio.
Aquí está el código:
(defun infer-indentation-style()
;; if our source file uses tabs, we use tabs, if spaces spaces, and if
;; neither, we use the current indent-tabs-mode
(let ((space-count (how-many "^ " (point-min) (point-max)))
(tab-count (how-many "^\t" (point-min) (point-max))))
(if (> space-count tab-count) (setq indent-tabs-mode nil))
(if (> tab-count space-count) (setq indent-tabs-mode t))))
[en mi gancho c-mode, o cualquier otro modo yo quiero tener sangría inteligente]
(setq indent-tabs-mode nil)
(infer-indentation-style)
Esto podría todavía ser una Problema al editar archivos nuevos que siempre deberían tener pestañas como makefiles. Para ellos, su gancho de modo simplemente lo configurará en pestañas. Por ejemplo:
(add-hook 'makefile-mode-hook
'(lambda()
(setq indent-tabs-mode t)
)
)
Sí, por emacs la inserción de pestaña en lugar del espacio debe ser automática si se encuentra en modo de archivo MAKE-(o BSDmakefile-mode). Si de alguna manera necesita insertar una pestaña cuando no puede hacerlo debido a las configuraciones dañadas, use "C-q tab". –