(eval-after-load "cperl-mode" '(progn (cperl-set-style "PerlStyle") (setq cperl-close-paren-offset -4) (setq cperl-indent-parens-as-block t) (setq cperl-merge-trailing-else nil) (require 'dabbrev) ;; (ad-activate 'cperl-indent-command) (cperl-define-key (kbd "C-c C-c") 'align-current) (cperl-define-key (kbd "C-c c") 'wl-perl-check-buffer) (cperl-define-key (kbd "C-c e") 'wl-perl-eval) (cperl-define-key (kbd "C-c t") 'wl-perl-prove) (cperl-define-key (kbd "C-c m") 'wl-cperl-find-module) (cperl-define-key (kbd "C-c P") 'cperl-perldoc) (cperl-define-key (kbd "C-c p") 'cperl-perldoc-at-point) (add-hook 'Man-mode-hook (lambda () (define-key Man-mode-map (kbd "C-c p") 'cperl-perldoc-at-point))))) ;; (load-library "cperl-mode") (add-to-list 'auto-mode-alist '("\\.[Pp][LlMm][Cc]?$" . cperl-mode)) (add-to-list 'auto-mode-alist '("\\.t$" . cperl-mode)) (while (let ((orig (rassoc 'perl-mode auto-mode-alist))) (if orig (setcdr orig 'cperl-mode)))) (while (let ((orig (rassoc 'perl-mode interpreter-mode-alist))) (if orig (setcdr orig 'cperl-mode)))) (dolist (interpreter '("perl" "perl5" "miniperl" "pugs")) (unless (assoc interpreter interpreter-mode-alist) (add-to-list 'interpreter-mode-alist (cons interpreter 'cperl-mode)))) (defun wl-perl-check-buffer () "Check perl syntax of current buffer" (interactive) (shell-command-on-region (point-min) (point-max) "perl -c")) (defun wl-perl-eval (begin end) "Run selected region as perl code" (interactive "r") (shell-command-on-region begin end "perl")) (defun wl-perl-prove () "Run the current test." (interactive) (shell-command (concat "prove -v " (shell-quote-argument (buffer-file-name))))) (defun wl-cperl-find-module (module) "View source code of CPAN module." (interactive (list (let* ((default-module (cperl-word-at-point)) (input (read-string (format "CPAN module%s: " (if (string= default-module "") "" (format " (default %s)" default-module)))))) (if (string= input "") (if (string= default-module "") (error "No module given") default-module) input)))) (let ((perldoc-output (with-temp-buffer (call-process "perldoc" nil t nil "-l" module) (buffer-substring-no-properties (point-min) (1- (point-max)))))) (if (string-match "no documentation found" perldoc-output) (message "%s" perldoc-output) (if (equal ".pm" (file-name-extension perldoc-output)) (find-file-other-window perldoc-output) (find-file-other-window (concat (file-name-sans-extension perldoc-output) ".pm")))))) (when (require-maybe 'yaml-mode) (add-to-list 'auto-mode-alist '("\\.yml$" . yaml-mode)) (add-to-list 'auto-mode-alist '("\\.yaml$" . yaml-mode))) (provide 'wl-perl)