expand-region 20170514.1309(in MELPA)
Increase selected region by semantic units.

概要

expand-region.el
連続的に実行するたびに
regionを広げていくパッケージです。

標準の C-M-SPC ( mark-sexp ) や
M-@ ( mark-word )も
連続実行でregionを広げていきますが、
同じ単位でしか広がりません。

M-x er/expand-region はカーソル位置に応じて

  1. 単語 (er/mark-word)
  2. シンボル (er/mark-symbol)
  3. クオートつきシンボル(Lisp) (er/mark-symbol-with-prefix)
  4. アクセサ(ドット付きメソッド呼び出し) (er/mark-next-accessor)
  5. メソッド・関数呼び出し (er/mark-method-call)
  6. クオートの中身 (er/inside-quotes)
  7. クオートの外側 (er/outside-quotes)
  8. 括弧の中身 (er/inside-pairs)
  9. 括弧の外側 (er/outside-pairs)
  10. URL (er/mark-url)
  11. Eメール (er/mark-email)
  12. 関数 (er/mark-defun)

と自動判別でregionを広げていきます。

Emacs Rocks! Episode 09: expand-region
にて動画があります。

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.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/")))

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

M-x package-install expand-region

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

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

対応メジャーモード

基本的にEmacsの汎用的な機能を使っていますが、
メジャーモード個別にも対応しています。

  1. nxml-mode
  2. sml-mode
  3. clojure-mode
  4. nrepl-mode
  5. text-mode
  6. python-mode
  7. cperl-mode
  8. org-mode
  9. subword-mode
  10. erlang-mode
  11. html-mode
  12. c-mode
  13. c++-mode
  14. objc-mode
  15. java-mode
  16. idl-mode
  17. pike-mode
  18. awk-mode
  19. js2-mode
  20. text-mode
  21. css-mode
  22. html-mode
  23. rhtml-mode
  24. nxhtml-mode
  25. web-mode
  26. octave-mode
  27. python-mode
  28. ruby-mode
  29. feature-modepython-mode
  30. enh-ruby-mode
  31. latex-mode
  32. js-mode
  33. js2-mode
  34. js3-mode

設定 170116064130.expand-region.el(以下のコードと同一)

C-M-SPC の置き換えとして設定しました。

(require 'expand-region)
;; 真っ先に入れておかないとすぐに括弧に対応してくれない…
(push 'er/mark-outside-pairs er/try-expand-list)
(global-set-key (kbd "C-M-SPC") 'er/expand-region)

実行方法

$ wget http://rubikitch.com/f/170116064130.expand-region.el
$ emacs -Q -f package-initialize -l 170116064130.expand-region.el

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


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