Smazání whitespaces ze zdrojáků a změna tabelátorů na mezery ===

Obrázek uživatele benzin@jabber.cz
Vložil benzin@jabber.cz, Ne, 2007-07-29 18:33 :: | | |

Tady jsou krátké skriptáky pomocí kterých můžete Emacs dotunit, aby před uložením souboru změnil všechny tabelátory za mezery. Formátování souboru zůstane nezměneno, jenom tabelátory jsou nahrazeny příslušným počtem mezer.

(setq auto-untabify-alist
      '(("\\.cc$" . t)
        ("\\.rb$" . t)
        ("\\.java" . t)
        ("\\.xml" . t)
        ("\\.css" . t)
        ("\\.properties" . t)
        ("\\.html" . t)
        ("\\.htm" . t)
        ("\\.jsp" . t)
        ("\\.sql" . t)
        ("\\.el" . t)))

(defun untabify-before-save ()
  (if (assoc-default buffer-file-name auto-untabify-alist 'string-match)
      (untabify 1 (point-max))))

(add-hook 'before-save-hook 'untabify-before-save)

Funkce auto-untabify-alias slouží k nastavení masek souborů, které mají být takto automaticky upravovány. Pokud chcete automaticky převádět všechny soubory stačí ve funkci untabify-before-save smazat druhý řádek a několik závorek na konci. Nakonec je metoda untabify-befoce-save navázána tak, aby byla spuštěna vždy před uložením souboru. Na velmi podobném základu sem vytvořil funkce, které se starají o smazání bílých znaků před uložením souboru. V Emacs verze 2.22 mi přestala tot fitchura fungovat a tak sem si ji napsal sám.

(setq auto-whitespace-nuke-alist
      '(("\\.cc$" . t)
        ("\\.rb$" . t)
        ("\\.java" . t)
        ("\\.xml" . t)
        ("\\.css" . t)
        ("\\.properties" . t)
        ("\\.html" . t)
        ("\\.htm" . t)
        ("\\.jsp" . t)
        ("\\.sql" . t)
        ("\\.el" . t)))

(defun whitespace-nuke-before-save ()
  (if (assoc-default buffer-file-name auto-whitespace-nuke-alist 'string-match)
      (whitespace-do-nuke-whitespace t)))

(add-hook 'before-save-hook 'whitespace-nuke-before-save)