polymode 20170307.322(in MELPA)
Versatile multiple modes with extensive literate programming support

概要

1つのバッファに複数の言語のテキストを含ませることがあります。

たとえば、org-modeやmarkdown-modeでのコードブロック、
PHP/ERBなどのWeb関係のテキストなどです。

polymode.el はバッファ内の『言語』を瞬時に判別し、
カーソル位置によって適切なメジャーモードに切り替えます。

org-modeでC-c 'を使わずにモードを切り替えてくれるのは便利です。

以下のモードに対応していて、現在はWeb関係には対応していません。

Webのテンプレートを編集するにはweb-mode.el(レビュー) があります。

  • org-mode
  • markdown-mode
  • R言語
    • Noweb for R (*.Snw, *.Rnw)
    • markdown+R (*.Rmd)
    • HTML KnitR (*.Rhtml)
    • Brew (*.Rbrew)
    • Ess help
    • Rd
    • rapport (*.rapport)
    • R C++ (*.Rcpp, *.cppR)

メジャーモードの切り替え方式はmmm-modeとは違い、
multi-mode.el のように間接バッファを用意し、
post-command-hookで切り替えています。

そのため切り替えは瞬時に終わり、動作は軽いです。

polymode自体EIEIOのオブジェクト指向で書かれているため、
他のモードにも対応させられます。

20150526080833.png
Fig1: ソースブロックの外ではorg-mode

20150526080840.png
Fig2: ソースブロックのメジャーモードに変わる!

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")
        ("org" . "http://orgmode.org/elpa/")))

初めてpolymodeを使う方は
以下のコマンドを実行します。

M-x package-install polymode

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name polymode

設定 150526080511.polymode.1.el(以下のコードと同一)

(require 'polymode-configuration)

実行方法

$ wget http://rubikitch.com/f/150526080511.polymode.1.el
$ emacs -Q -f package-initialize -l 150526080511.polymode.1.el

本サイト内の関連パッケージ


本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。