Szkript C/C++ fájlok indentálására

Egyszer elegem lett a kézi indentálásos mókából, írtam rá szkriptet, hogy a paraméterekben lévő fájlokban az indentálást automatikusan megtegye.

Íme a szkript:


#!/usr/bin/env emacs --script

;; open a file, process it, save, close it
(defun my-process-file (fpath)
  "process the file at fullpath FPATH ..."
  (let (mybuffer)
    (setq mybuffer (find-file fpath))
    (set-buffer mybuffer)
    (c-set-style "gnu")
    (setq indent-tabs-mode nil)
    (indent-region 1 (+ (buffer-size mybuffer) 1))
    (save-buffer)
    (kill-buffer mybuffer)))

(setq arglen (length command-line-args-left))
(setq i 1)

(defun m-p-f-main (fpath)
  "process file and print state"
  (message "processing %d/%d: '%s'" i arglen fpath)
  (setq i (+ i 1))
  (my-process-file file)
 )

(dolist (file command-line-args-left)
  ;(my-process-file file)
  (m-p-f-main file)
  )

Update: hosszú idő után lett olyan frissítés, ami javította a lenti hibát:

Szép, jó, meg minden, de valamiért nem működik Ubuntu (Lucid) alatt. OS X-en meg gond nélkül...

ÉS ezzel a sorral van gondja:


 (indent-region 1 (+ (buffer-size mybuffer) 1))

Nem jó a paraméterlista...

Akinek kell, és működik, használja egészséggel, aki meg tud ebben segíteni, örülnék, ha megmagyarázná, hogy az emacs23 hogy tud kétféleképpen működni ugyanazon kóddal :S

Hozzászólások

En megneznem, hogy a ket rendszeren mi a kulonbseg a fill-prefix, indent-region-function es indent-line-function valtozok/funkciok kozott. Ezek bezavarhatnak esetleg.

Kiprobaltam, Debian Squeeze es Ubuntu Lucid alatt is mukodik a script.

--
|8]