in reply to Desparately seeking a bilingual vim/Emacs expert

At the risk of being slightly off-topic, I would also share my 2c Emacs tip with you. I've put this hook to call perltidy (pressing F6) in my .emacs:
(defun my-cperl-hook () "What to run when cperl-mode is turned on" ;; Function to call perltidy (defun perltidy-whole-buffer () "Filter the current buffer through perltidy" (interactive) (shell-command-on-region (point-min) (point-max) "perltidy -st" nil 1 shell-command-default-error-buffer ) ) ;; Bind key (define-key cperl-mode-map [f6] 'perltidy-whole-buffer) )
The hook has to be added to the correct customisation variable as well:
(custom-set-variables ;; custom-set-variables was added by Custom -- don't edit or cut/pas +te it! ;; Your init file should contain only one such instance. ;; ... '(cperl-mode-hook (quote (my-cperl-hook))) )
Of course, s/cperl/perl/g if you don't want to use cperl.

Flavio (perl -e "print(scalar(reverse('ti.xittelop@oivalf')))")

Don't fool yourself.

Replies are listed 'Best First'.
Re^2: Desparately seeking a bilingual vim/Emacs expert
by diotalevi (Canon) on Nov 23, 2005 at 03:43 UTC

    The following snippet steals the regular C-x C-s to automatically perltidy as well. I added a different definition for perltidy-whole-buffer so that the input point is restored to be somewhere near where it was originally. I also added a check to see if the buffer has been modifed before calling out to perltidy.

    (add-to-list 'cperl-mode-hook (lambda () (substitute-key-definition 's +ave-buffer 'cperl-save-buffer cperl-mode-map global-map))) (defun cperl-save-buffer (&optional args) (interactive "p") (if (buffer-modified-p) (perltidy-buffer)) (save-buffer t)) (defun perltidy-buffer () (interactive) (let ((orig-point (point))) (shell-command-on-region (point-min) (point-max) "perltidy -st" nil t shell-command-default-error-buffer) (goto-char (if (<= orig-point (point-max)) orig-point (point-max)))))