最新情報

2015年4月27日Emacs
emacs per-buffer-theme.el : バッファ名やメジャーモードに応じてカラーテーマ(color-theme)を変更する | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット
2015年4月26日Emacs
Emacsのcolor-theme(カラーテーマ)を一覧・テスト・設定する
2015年4月25日Emacs
emacs pcre2el.el : Emacs正規表現の呪いを解け!Emacs/PCRE(Perlの正規表現)/rx相互変換・解説!PCRE対応re-builder!! | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット
2015年4月24日Emacs
emacs shut-up.el : お前は黙ってろ!!! | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方
2015年4月24日メルマガ
【メルマガ#178】ちょっと一休み

このエントリーを含むはてなブックマーク Buzzurlにブックマーク livedoorクリップ Yahoo!ブックマークに登録

emacs per-buffer-theme.el : バッファ名やメジャーモードに応じてカラーテーマ(color-theme)を変更する | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット

パッケージ名 per-buffer-theme
概要(原文) Change theme according to buffer name or major mode.
リポジトリ MELPA
取得先 https://bitbucket.org/inigoserna/per-buffer-theme.el
バージョン 20150419.1316
関連記事 package:per-buffer-theme package:color-theme

編集するファイルによってテーマを切り替えるというのは、
気分転換になっていいかもしれません。

あるいはいつも使っているテーマでも
特定のモードでの設定が気に入らないこともあります。

そんなときには per-buffer-theme.el をおすすめします。

カラーテーマの切り替え方法は昨日の記事 を参考にしてください。

20150427044650.png
Fig1: 普段はデフォルトのテーマ

20150427044655.png
Fig2: 条件を満たすバッファに変更・切り替えたらテーマを切り替える

per-buffer-theme インストール

このパッケージはmelpaにあるので パッケージの初期設定 を行ってください。

M-x package-refresh-contents
M-x package-install per-buffer-theme

設定 150427041330.per-buffer-theme.el(以下のコードと同一)

(require 'per-buffer-theme)
;;; バッファ名がこれらに一致しているときは動作させない
(setq per-buffer-theme/ignored-buffernames-regex
      '("\\*mini" "\\*Mini" "\\*helm" "\\*Helm"
        "\\*anything" "\\*Anything"
        "One-Key" "guide-key"))
;;; デフォルトのtheme
(setq per-buffer-theme/default-theme 'whiteboard)
;;; 設定!
;;; バッファ名がbuffernamesに一致するか、
;;; メジャーモードがmodesに一致するかでthemeを決定する
(setq per-buffer-theme/themes-alist
      '(((:theme . notheme)             ;テーマを解除
         (:buffernames . ("*eww" "*w3m" "*mu4e"))
         (:modes . (eww-mode w3m-mode cfw:calendar-mode mu4e-main-mode mu4e-headers-mode mu4e-view-mode mu4e-compose-mode mu4e-about-mode mu4e-update-mode)))
        ((:theme . tango-dark)
         (:buffernames . ("*Help*"))
         (:modes . (nil)))
        ;; マッチしない場合は per-buffer-theme/default-theme を採用
        ))
;;; other-windowでもthemeを切り替えさせる
(defun per-buffer-theme--after-advice(&rest _)
  (per-buffer-theme/change-theme-if-buffer-matches))
;; ウィンドウを切り替える他のコマンドでもアドバイスを追加する必要があるかもしれない
(advice-add 'other-window :after 'per-buffer-theme--after-advice)

実行方法

$ wget http://rubikitch.com/f/150427041330.per-buffer-theme.el
$ emacs -Q -f package-initialize -l 150427041330.per-buffer-theme.el

タグ

2015/04/27 | コメント/トラックバック(0) |

カテゴリー:Emacs theme

Emacsのcolor-theme(カラーテーマ)を一覧・テスト・設定する

Emacsの色設定は奥が深く、面倒だったりします。

Emacs歴が長い人は自分好みの色設定を探究している人もいるでしょう。

とりあえず先人の色設定を手っ取り早く試したいならばテーマに頼るのがいいです。

でも、いろいろあって迷ってしまいますね。

ならば、3つのサイトを紹介します。

90個のテーマ一覧

http://code.google.com/p/gnuemacscolorthemetest/

このサイトは90個のテーマで、
C言語、elisp、Java、Perl、LaTeXのバッファを
表示したスクリーンショットが見られます。

一覧できるので、好みのテーマが見付かるでしょう。

20150426062126.png
Fig1: テーマ一覧

106個のテーマ一覧

https://github.com/emacs-jp/replace-colorthemes/blob/master/screenshots.md

emacs-jpにもテーマ一覧があります。

20150426064504.png
Fig2: emacs-jpにもテーマ一覧

ブラウザでテーマを選択

http://color-theme-select.heroku.com/

このサイトはブラウザでEmacsを模倣し、
右上のテーマをクリックすればそのテーマがわかります。

左下のspeedbarをクリックすれば、
いろいろなモードでの表示が確認できます。

20150426062402.png
Fig3: ブラウザで手軽に試せる

20150426062414.png
Fig4: ruby-mode

20150426062419.png
Fig5: java-mode

テーマを設定する

テーマは現在ではMELPAに多数置いてあるので、
M-x list-packages でパッケージ一覧を表示させ、
テーマ名を検索し、インストールしてください。

M-x occur RET theme でも M-x helm-package でも
M-x helm-list-elisp-packages でもいいです。

その後、たとえばcalmer-forest-themeならば

(load-theme 'calmer-forest t)

を評価します。

気に入ればinit.elに書きましょう。

昔から color-theme.el というelispが開発されていましたが、
Emacs24の現在は時代遅れ(外部サイト) になっています。

既存の設定とバッティングする場合は…

なお、 M-x customize-face で独自に色設定をしているときは
それが有効になります。

それはそれでテーマをアレンジできて便利ですが、
初めてテーマを使うときは邪魔になりかねません。

ほぼすべてのテーマでfont-lockの色設定は施されているので、
気に入ったテーマが見付かった場合は独自のカスタマイズから
font-lock関係のフェイスの設定を取り除いてください。

カスタマイズ結果はinit.elか
変数 custom-file で設定したファイルに記録されます。

その中で custom-set-faces という項目(S式)があるので、
そこからfont-lockと検索してください。

タグ

2015/04/26 | コメント/トラックバック(0) |

カテゴリー:Emacs theme

emacs pcre2el.el : Emacs正規表現の呪いを解け!Emacs/PCRE(Perlの正規表現)/rx相互変換・解説!PCRE対応re-builder!! | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット

パッケージ名 pcre2el
概要(原文) parse, convert, and font-lock PCRE, Emacs and rx regexps
リポジトリ MELPA
取得先 https://github.com/joddie/pcre2el
バージョン 20150408.1721
関連記事 package:pcre2el package:visual-regexp-steroids package:rx package:font-lock package:swoop package:foreign-regexp

Emacsの正規表現は呪いです。

なんだあのバックスラッシュの連発は…

Emacs大好きでもあの 正規表現 だけは許せないという人は
僕も含め、それなりの数がいると思われます。

そんなあなたにとっておきのパッケージを紹介します。

pcre2el.el は、以下の機能をもって呪わしき正規表現から救ってくれます。

  • Emacsの正規表現から PCRE へ変換
  • Emacsの正規表現から rx (S式による表現)へ変換
  • 正規表現を分解して文字列リスト化
  • カーソル位置・regionの正規表現をrx形式に変換して解説!
  • M-x re-builder でPCREに対応!!

これはそもそもelispで書かれたPCREエミュレータであり、
Emacsの正規表現に変換できる範囲でPCREが使えます。

そもそもEmacsの正規表現とPCREは一対一対応ではないので、
完全にPCREの機能が使えるわけではないですが、
よっぽど混み入った機能を使わないのであれば実用上問題ありません。

外部プログラムを使ってないのでWindowsでも安心です。

この超大作elispは本当に素晴しいです。

ただ、名前で思い切り損しています。

この名前だとEmacsでPCREが使えるだけだと誤解されてしまうので、
正規表現変換・解説機能、re-builder対応については
ファイルを分割して別々のMELPAパッケージにすべきだと思います。

複雑な正規表現を分解して解説してくれる機能と
re-builderでPCREが使えるのは圧巻です!!!!

elispプログラマ以外でも正規表現に悩めるすべての人に
使ってもらいたいパッケージです。

そして、elispプログラマならば
複雑な正規表現は極力 rx で書いてください!

pcre2el インストール

このパッケージはmelpaにあるので パッケージの初期設定 を行ってください。

M-x package-refresh-contents
M-x package-install pcre2el

正規表現変換・解説

M-x rxt-mode でRegular eXpression Translationマイナーモードを
有効にすると、以下のコマンドが使えます。

C-c / /
rxt-explain 正規表現を解説
C-c / c
rxt-convert-syntax Emacs/PCRE間の変換し、kill-ringへ
C-c / x
rxt-convert-to-rx rxへの変換
C-c / ′
rxt-convert-to-strings 文字列集合へ分解

これらのコマンドは空気を読んでくれます。

emacs-lisp-mode か lisp-interaction-mode では
Emacsの正規表現を前提にし、その他のモードではPCREを前提にします。

正規表現は以下のようにして読み込まれます。

  • C-u付きで呼び出したらミニバッファから正規表現を入力
  • カーソル位置が正規表現の末尾・中身ならその正規表現
  • regionが有効ならばその部分の正規表現
  • どれでもなければミニバッファから正規表現を入力

それでは正規表現を解説してみましょう。

C-c / / を押すと別ウィンドウに正規表現をrx形式で
pretty-printされて表示されます。

しかもカーソルを移動すると該当部分をハイライトしてくれる優れ物!

elispを読んでいて理解不能な正規表現が現れたら
ぜひとも使ってみてください。

20150425034737.png
Fig1: C-c / / で正規表現を分解!

20150425034748.png
Fig2: カーソルを動かすと該当部分をハイライト

20150425034813.png
Fig3: こんな感じ

20150425035002.png
Fig4: C-c / cでPCREに変換されkill-ringへ

C-c / ‘ で文字列集合に分解したら、
そのまま regexp-opt として記述できます。

(regexp-opt '("foo" "bar" "baz"))

20150425035107.png
Fig5: C-c / ‘ で文字列集合へ

C-c / tでカーソル位置の正規表現をrx形式にしてくれるので、
より理解しやすいコードになります。

20150425035115.png
Fig6: C-c / tでrx形式に変更

M-x re-builderでPCRE!

M-x re-builderでPCREが使えるようになります。

ということは、PCREやそれに似た正規表現を持つ他言語で
プログラミングしているときにも使えることを意味します。

PerlやPHPはもろにPCREに対応していますし、
Rubyの鬼車はPCREを拡張したものになっています。

本設定では reb-re-syntax を設定し、
re-builderのデフォルトの文法をpcreにしていますが、
C-c C-iで文法を切り替えられます。

20150425040117.png
Fig7: PCREでre-bulder!!

pcre2elを使っているパッケージ

visual-regexp-steroids.el(レビュー) はPCRE/Pythonの正規表現で
置換結果を見ながらの置換・isearchを行います。

helm-swoop.el(大々的レビュー) の元となった swoop.el でも
M-x swoop-pcre-regexp でPCREによる絞り込みができます。

swoop.elはhelm-swoop.elと同じ作者なので、
helm-swoop-pcre-regexpが欲しいものです。

設定 150425034446.pcre2el.el(以下のコードと同一)

(require 'pcre2el)
(add-hook 'prog-mode-hook 'rxt-mode)
(setq reb-re-syntax 'pcre)

実行方法

$ wget http://rubikitch.com/f/150425034446.pcre2el.el
$ emacs -Q -f package-initialize -l 150425034446.pcre2el.el

タグ

2015/04/25 | コメント/トラックバック(0) |

カテゴリー:Emacs

emacs shut-up.el : お前は黙ってろ!!! | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方

パッケージ名 shut-up
概要(原文) Shut up would you!
リポジトリ MELPA
取得先 https://github.com/cask/shut-up
バージョン 20150423.522
関連記事 package:shut-up package:cl-lib

Emacsはたまに饒舌が過ぎることがあります。

message 関数や write-region 関数、 load 関数は
エコーエリア にメッセージを出力します。

しかし、メッセージを抑制したいときがあります。

たとえば一時ファイルの読み書きでは
黙っててほしいものです。

そこで shut-up というマクロを使います。

使い方は簡単で黙らせたいコードを (shut-up 〜 ) で囲むだけです。

すると、開発版Emacsで導入された inhibit-message = t に設定され、
message、write-region、load関数がメッセージを表示しなくなります。

また、 standard-output への出力もなくなります。

実際はメッセージを消しているのではなくて、
特定のバッファにリダイレクトしているだけですが、
shut-up-current-output 関数で蓄えられたメッセージを得られます。

;;; 何も表示しない
(require 'shut-up)
(shut-up
  (message "test")                      ;このメッセージが蓄積される
  (with-temp-buffer
    (insert "a silent message")
    (write-region nil nil  "/tmp/silent-message.txt") ;黙って保存
    (shut-up-current-output)))          ; => "test\n"

shut-up.el は短いものの 一時的な関数再定義 をする
巧妙なテクニックを使っているのでコードを読んでみると
elispの勉強になるかと思います。

shut-up インストール

このパッケージはmelpaにあるので パッケージの初期設定 を行ってください。

M-x package-refresh-contents
M-x package-install shut-up

タグ

【メルマガ#178】ちょっと一休み

今回から数回ちょっとEmacsから離れ
読み物的な感じの内容になってきます。

しかし、これらの内容は僕が人生を通じて
長い期間を経て学んだことであり
あなたのエンジニア人生に役立つことでしょう。

Emacs不足であれば、個別にメールください。

僕はrubikitch.com、メルマガ、連載、
そして現在進行中の書籍執筆も手がけていて、
さらに奉仕活動もやっています。

なぜこれだけの大量行動ができるのでしょうか?

これは朝一番と休憩時間にとあることをやっているからです。

現代人にとって一番必要とされているのですが、
なぜかみんなやりたがりません。

そのせいで余計な時間がかかってしまうのです。

タグ

2015/04/24 | コメント/トラックバック(0) |

カテゴリー:メルマガ

emacs centered-cursor-mode.el : カーソル移動・スクロール時に常に画面中央行(任意可)をキープして表示させる | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット

パッケージ名 centered-cursor-mode
概要(原文) cursor stays vertically centered
リポジトリ MELPA
取得先 http://www.emacswiki.org/centered-cursor-mode.el
バージョン 20150420.1942
関連記事 package:centered-cursor-mode package:hl-line package:scroll-lock

Emacsを使っていて、カーソル位置を見失うことがよくありますね。

その解決策として、現在行をハイライトさせる M-x global-hl-line-mode
M-x scroll-lock-mode でカーソル移動の際に現在行の画面内での位置を
固定するやり方があります。

この centered-cursor-mode.el は、 scroll-lock.el を強化させます。

scroll-lock-modeは有効にした時点の画面内の現在行の位置をキープするのですが、
isearchで位置がずれてしまう欠点があります。

M-x centered-cursor-mode

  • カーソル上下移動
  • マウスホイールでのスクロール
  • 通常のスクロール
  • isearch

などあらゆる場面で現在行を画面中央に表示するようにする
ローカルマイナーモードです。

グローバル版 M-x global-centered-cursor-mode もあります。

変数 ccm-vpos-init で固定する行を画面上部からの行数で指定できます。

もしかしたら、目線を上下に動かさずに文章が読めるので
速読に役立つかもしれません?

20150423044804.png
Fig1: この位置でC-nで下の行に移動しても

20150423044746.png
Fig2: 画面内のカーソル位置は保たれる

centered-cursor-mode インストール

このパッケージはmelpaにあるので パッケージの初期設定 を行ってください。

M-x package-refresh-contents
M-x package-install centered-cursor-mode

タグ

2015/04/23 | コメント/トラックバック(0) |

カテゴリー:Emacs

emacs myterminal-controls.el : 【smartrep/hydra似】制御ウィンドウを開き、特定のキーで連続的にコマンドを実行する | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット

パッケージ名 myterminal-controls
概要(原文) Quick toggle controls at a key-stroke
リポジトリ MELPA
取得先 https://github.com/myTerminal/myterminal-controls
バージョン 20150420.2001
関連記事 package:myterminal-controls package:smartrep package:hydra

4/18にリポジトリに登録された新入りです。

myterminal-controls.el は制御メニューウィンドウをポップアップし、
メニューで定められた操作を繰り返しできるようにするものです。

たとえば、フォントやウィンドウの大きさを変更するようなときに、
毎度プレフィクスキーを押さなくても微調整できたりします。

hydra.el(レビュー) はエコーエリア上にメニューが出ますが、
myterminal-controls.el は ポップアップウィンドウで出ます。

terminalと名前がついていますが、端末エミュレータや
term.el/terminal.elとは無関係です。

本設定でもhydraと同様に文字の大きさを
gで大きくlで小さくする例を示しています。

エコーエリアよりもポップアップウィンドウが好きな方はどうぞ。

開発初期の現時点では荒削りで、複数の制御ウィンドウを定義できません。

今後の発展が楽しみです。

20150125090543.png
Fig1: hydraはエコーエリアに使えるキーを表示

20150422044725.png
Fig1: myterminal-controlsはポップアップウィンドウに使えるキーを表示

myterminal-controls インストール

このパッケージはmelpaにあるので パッケージの初期設定 を行ってください。

M-x package-refresh-contents
M-x package-install myterminal-controls

設定 150422041700.myterminal-controls.el(以下のコードと同一)

;;; qの代わりにC-gでウィンドウを閉じる
(defun myterminal-controls-set-controls-data--add-C-g (&rest _)
  (setf (caar (last myterminal-controls--controls-data)) "C-g"))
(advice-add 'myterminal-controls-set-controls-data
            :after 'myterminal-controls-set-controls-data--add-C-g)
;;; 設定例 gで文字の大きさを大きくし、lで小さくする
(myterminal-controls-set-controls-data
 '(("g" "zoom in" (lambda () (call-interactively 'text-scale-increase)))
   ("l" "zoom out" (lambda () (call-interactively 'text-scale-decrease)))))
;;; C-M-`に割り当てる
(global-set-key (kbd "C-M-`") 'myterminal-controls-open-controls)

実行方法

$ wget http://rubikitch.com/f/150422041700.myterminal-controls.el
$ emacs -Q -f package-initialize -l 150422041700.myterminal-controls.el

タグ

2015/04/22 | コメント/トラックバック(0) |

カテゴリー:Emacs

org-tocはtoc-orgにリネームされました

http://rubikitch.com/2014/09/21/org-toc/

org-modeで目次を自動生成する元org-toc.elは
toc-org.elにリネームされました。

同名で別な働きをするファイルが org/contrib/lisp 内にあるからです。

使っている方は設定で org-toc -> toc-org と置換してください。

タグ

emacs minesweeper.el : Emacsでマインスイーパーしようぜ! | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット

パッケージ名 minesweeper
概要(原文) play minesweeper in Emacs
リポジトリ MELPA
取得先 https://bitbucket.org/zck/minesweeper.el
バージョン 20150413.2222
関連記事 package:minesweeper

毎度おなじみのゲーム、 マインスイーパー ですが
M-x minesweeper でEmacsでもプレイできます。

デフォルトは10×10で地雷数は10です。

pnfbで移動、mでマーク、SPCで開きます。

マウス操作もでき、右クリックでマーク、左クリックで開きます。

大昔 mine.el という実装もありましたが、
こっちの方が新しいです。

ただ、プレイするときは通常使っているフォントだと小さすぎることもあるので、
適宜 C-x C–C-x C-+C-x C-= (どれも text-scale-adjust) で
フォントを調節してください。

このコマンドはbuffer-localなのでマインスイーパーのみ影響します。

設定ではhjklも使えるようにしておきました。

20150421041718.png
Fig1: 初期画面

20150421041804.png
Fig2: クリア!礼儀正しいから断わってもChicken!とは言われないヨ

minesweeper インストール

このパッケージはmelpaにあるので パッケージの初期設定 を行ってください。

M-x package-refresh-contents
M-x package-install minesweeper

設定 150421041219.minesweeper.el(以下のコードと同一)

(with-eval-after-load "minesweeper"
  (define-key minesweeper-mode-map (kbd "h") 'minesweeper-backward-char)
  (define-key minesweeper-mode-map (kbd "l") 'minesweeper-forward-char)
  (define-key minesweeper-mode-map (kbd "j") 'minesweeper-next-line)
  (define-key minesweeper-mode-map (kbd "k") 'previous-line))

実行方法

$ wget http://rubikitch.com/f/150421041219.minesweeper.el
$ emacs -Q -f package-initialize -l 150421041219.minesweeper.el

タグ

2015/04/21 | コメント/トラックバック(0) |

カテゴリー:Emacs

emacs visual-regexp-steroids.el : 【正規表現革命】isearchや置換でPerl/Pythonの正規表現を使おうぜ! | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット

パッケージ名 visual-regexp-steroids
概要(原文) Extends visual-regexp to support other regexp engines
リポジトリ MELPA
取得先 https://github.com/benma/visual-regexp-steroids.el
バージョン 20150411.416
関連記事 package:visual-regexp-steroids package:pcre2el package:visual-regexp package:foreign-regexp package:re-builder package:phi-search package:multiple-cursors

「Emacsの正規表現はバックスラッシュだらけでうざい」
みんな思っていることでしょう。

PerlやPythonを知っている人は当然これらの正規表現を使いたいはずです。

visual-regexp-steroids.el はこの願いを叶えてくれます。

しかもvisual-regexp.el(レビュー) ベースなので
re-builder のように対話的に正規表現を組み立てられます。

また、正規表現isearchもPerl/Pythonの正規表現が使えるようになります。

multiple-cursors.el(レビュー) にも対応していて、
M-x vr/mc-mark でPerl/Pythonの正規表現でマークできます。

20150420052510.png
Fig3: M-%でPerlの正規表現を入力すると

20150420052518.png
Fig4: こんな感じで置換後の結果がわかる

visual-regexp-steroids インストール

このパッケージはmelpaにあるので パッケージの初期設定 を行ってください。

M-x package-refresh-contents
M-x package-install visual-regexp-steroids

M-x package-install pcre2el

Pythonの正規表現の方が得意

本設定ではPythonをインストールしていない人のために
pcre2el.el(レビュー) というPerlの正規表現(PCRE) から
Emacsの正規表現に変換するelispライブラリを使うようにしていますが、
visual-regexp-steroids.elはPythonの正規表現の方を得意としています。

なぜなら、Pythonの正規表現のスイッチI, M, S, Uを
対話的に切り替えられるようになっているからです。

IMSUはPython正規表現のドキュメント を参照してください。

設定 150420044640.visual-regexp-steroids.el(以下のコードと同一)

(require 'visual-regexp-steroids)
(setq vr/engine 'python)                ;python regexpならばこれ
;; (setq vr/engine 'pcre2el)               ;elispでPCREから変換
(global-set-key (kbd "M-%") 'vr/query-replace)
;; multiple-cursorsを使っているならこれで
(global-set-key (kbd "C-c m") 'vr/mc-mark)
;; 普段の正規表現isearchにも使いたいならこれを
(global-set-key (kbd "C-M-r") 'vr/isearch-backward)
(global-set-key (kbd "C-M-s") 'vr/isearch-forward)

実行方法

$ wget http://rubikitch.com/f/150420044640.visual-regexp-steroids.el
$ emacs -Q -f package-initialize -l 150420044640.visual-regexp-steroids.el

タグ

2015/04/20 | コメント/トラックバック(0) |

カテゴリー:Emacs

このページの先頭へ