http://qs1969.pair.com?node_id=516501

water has asked for the wisdom of the Perl Monks concerning the following question:

Anyone know where online one can find the perltidyrc from p.35 of Damian's Perl Best Practices book? It does not seem to be in the ORielly code sample tar.gz file. Thanks!

Replies are listed 'Best First'.
Re: Perl Best Practices PerlTidy
by monkfan (Curate) on Dec 14, 2005 at 03:09 UTC
Re: Perl Best Practices PerlTidy
by diotalevi (Canon) on Dec 14, 2005 at 06:58 UTC

    The following code will also cause emacs to auto-perltidy anything you use cperl-mode with.

    (add-to-list 'cperl-mode-hook (lambda () (substitute-key-definition 'save-buffer 'cperl-save-buffer cperl-mode-map global-map))) (defvar cperl-auto-tidy t) (defun cperl-save-buffer (&optional args) "Perltidy and save current buffer in visited file if modified." (interactive) (if (and (buffer-modified-p) cperl-auto-tidy) (perltidy-buffer)) (save-buffer)) (defun perl-buffer () (interactive (shell-command-on-region (point-mi +n) (point-max) "perl" nil nil nil))) (defun cperl-auto-tidy (&optional arg) "Automatically perltidy (or not)" (setq cperl-auto-tidy (if arg t nil))) (defun cperl-toggle-auto-tidy () (interactive) (setq cperl-auto-tidy (not cperl-auto-tidy))) (defun perltidy-buffer () "Runs an entire buffer through perltidy." (interactive) (let ((orig-point (point))) (shell-command-on-region (point-min) (point-max) "perltidy -st -se -q -syn" nil t shell-command-default-error-buff +er) (goto-char (if (<= orig-point (point-max)) orig-point (point-max)))))

      ... and the following will cause vim to autoformat the current buffer with perltidy when you hit F4.
      To be put in your .vimrc

      map <F4> !perltidy -q<CR>

      ++. If perltidy could replace cperl's indentation that would be great. I would assume it could work on small sections of code whenever a block/construct was closed (e.g. insertion of a close brace/paren or semicolon). At my elisp skill level I'm afraid I'd have to resort to something blunt like processing the whole buffer on each character insertion. Now where did I leave my supercomputer? :-)
        I don't generally like things that re-indent when I'm not doing something like saving the buffer (obviously) or hitting tab to request a reindent.