Vim と Emacs どっちも触れないのにエンジニアなんですか?へっ?とか言われるのは心にぐさっとくるので、Emacs でなんとか Perl を書けるようにしてみました。

ちなみに当方、Emacs についても Perl についても初心者です。ウェーイ。

あ、Vim じゃなくて Emacs を選んだ理由は特にないです。気分です。


方針

余分な設定書きたくない

  • よくわかんない他人の設定はコピペしたくない
  • とりあえず最低限でシンプルな感じが良い

ELPA 使ってみたい

  • ELPA にあるものは ELPA でインストール
  • ELPA にないものは auto-install でインストール

Perl と Markdown は書きたい

  • 仕事柄、Perl は必須
  • Markdown はこのブログ執筆用


インストールした Elisp

  • init-loader

auto-install でインストール

  • perl-completion

ELPA でインストール

  • anything
  • auto-complete
  • auto-install
  • flymake
  • markdown-mode


できあがった設定

設定概要

  • 設定ファイルは分割して init-loader で読み込む
  • cperl-mode の hook として、auto-complete + perl-completion + flymake
  • .md と .markdown は markdown-mode で開く
(defalias 'perl-mode 'cperl-mode)

(add-to-list 'auto-mode-alist '("\\.t$" . cperl-mode))
(add-to-list 'auto-mode-alist '("\\.psgi$" . cperl-mode))

(add-hook 'cperl-mode-hook
          (lambda()
            (setq cperl-indent-level 4
                  cperl-close-paren-offset -4
                  cperl-continued-statement-offset 4
                  cperl-indent-parens-as-block t
                  cperl-tab-always-indent t)))

;; perl-completion
(require 'perl-completion)
(add-hook 'cperl-mode-hook
          (lambda()
            (perl-completion-mode t)))

;; auto-complete
(add-hook 'cperl-mode-hook
          (lambda ()
            (when (require 'auto-complete nil t) ; no error whatever auto-complete.el is not installed.
              (auto-complete-mode t)
              (make-variable-buffer-local 'ac-sources)
              (setq ac-sources '(ac-source-perl-completion)))))

;; flymake-mode
(add-hook 'cperl-mode-hook
          (lambda ()
            (flymake-mode t)))
(add-to-list 'auto-mode-alist '("\\.md$" . markdown-mode))
(add-to-list 'auto-mode-alist '("\\.markdown$" . markdown-mode))


まとめ

  • 目的通り、最低限のものがにシンプルにまとまった気がする
  • 次はキーバインドちゃんと覚えます←
  • 開発環境は仕事の効率に大きく影響するし、月1くらいで見直していきたい


参考