Skip to content

Instantly share code, notes, and snippets.

@dragon3
Created March 8, 2011 02:37
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dragon3/859750 to your computer and use it in GitHub Desktop.
Save dragon3/859750 to your computer and use it in GitHub Desktop.
;; (setenv "PERL5LIB" "/home/yamamoto/perl5/lib/perl5:/home/yamamoto/perl5/lib/perl5/x86_64-linux-gnu-thread-multi:$PERL5LIB")
(setq exec-path (cons "/home/yamamoto/perl5/perlbrew/bin" exec-path))
(setenv "PATH" (concat '"/home/yamamoto/perl5/perlbrew/bin:" (getenv "PATH")))
(autoload 'cperl-mode
"cperl-mode"
"alternate mode for editing Perl programs" t)
(fset 'perl-mode 'cperl-mode)
(setq cperl-indent-level 4
cperl-continued-statement-offset 4
cperl-close-paren-offset -4
cperl-comment-column 40
cperl-highlight-variables-indiscriminately t
cperl-indent-parens-as-block t
cperl-label-offset -4
cperl-tab-always-indent nil
cperl-continued-statement-offset 4
cperl-font-lock t)
(add-hook 'cperl-mode-hook
'(lambda ()
(progn
(setq indent-tabs-mode nil)
(setq tab-width 4)
)))
(setq auto-mode-alist
(append (list (cons "\\.\\(pl\\|cgi\\|pm\\|t\\|psgi\\)$" 'cperl-mode))
auto-mode-alist))
;;; perltidy
(autoload 'perltidy "perltidy-mode" nil t)
(autoload 'perltidy-mode "perltidy-mode" nil t)
(eval-after-load "cperl-mode"
'(add-hook 'cperl-mode-hook 'perltidy-mode))
(add-hook 'cperl-mode-hook 'outline-minor-mode)
(setq outline-minor-mode-prefix "\C-co")
(add-hook 'cperl-mode-hook (lambda ()
(require 'perl-completion)
(perl-completion-mode t)))
;;; perl-find-library
(require 'perl-find-library)
;;; ffap-perl-module
(eval-after-load "ffap" '(require 'ffap-perl-module))
;;; ack-grep
(defun ack ()
(interactive)
(let ((grep-find-command "/home/yamamoto/perl5/perlbrew/perls/current/bin/ack --nocolor --nogroup "))
(call-interactively 'grep-find)))
(autoload 'xs-mode "xs-mode" "Major mode for XS files" t)
(add-to-list 'auto-mode-alist '("\\.xs$" . xs-mode))
;; set-perl5lib
;; 開いたスクリプトのパスに応じて、@INCにlibを追加してくれる
;; 以下からダウンロードする必要あり
;; http://svn.coderepos.org/share/lang/elisp/set-perl5lib/set-perl5lib.el
(require 'set-perl5lib)
;; for flymake
;; http://unknownplace.org/memo/2007/12/21#e001
(defvar flymake-perl-err-line-patterns
'(("\\(.*\\) at \\([^ \n]+\\) line \\([0-9]+\\)[,.\n]" 2 3 nil 1)))
(defconst flymake-allowed-perl-file-name-masks
'(("\\.pl$" flymake-perl-init)
("\\.pm$" flymake-perl-init)
("\\.psgi$" flymake-perl-init)
("\\.t$" flymake-perl-init)))
(defun flymake-perl-init ()
(let* ((temp-file (flymake-init-create-temp-buffer-copy
'flymake-create-temp-inplace))
(local-file (file-relative-name
temp-file
(file-name-directory buffer-file-name))))
(list "perl" (list "-wc" local-file))))
(defun flymake-perl-load ()
(interactive)
(defadvice flymake-post-syntax-check (before flymake-force-check-was-interrupted)
(setq flymake-check-was-interrupted t))
(ad-activate 'flymake-post-syntax-check)
(setq flymake-allowed-file-name-masks (append flymake-allowed-file-name-masks flymake-allowed-perl-file-name-masks))
(setq flymake-err-line-patterns flymake-perl-err-line-patterns)
(set-perl5lib)
(flymake-mode t))
(add-hook 'cperl-mode-hook 'flymake-perl-load)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment