最新情報

2015年3月5日Emacs
emacs bury-successful-compilation.el : コンパイルが正常終了したときにウィンドウを自動で閉じるようにする | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方
2015年3月4日Emacs
emacs itail.el : 【ログ解析】tail -fしてgrepで絞り込んだりハイライトしたり… | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット
2015年3月3日Emacs
emacs imenu-list.el : 関数・変数定義を別バッファに表示してIDEっぽくする | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット
2015年3月2日Emacs
emacs window-numbering.el : 【3分割以上の人へ】ウィンドウを番号(M-0〜M-9)で選択 | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット
2015年3月1日Emacs
emacs clipmon.el : 【メモ革命】任意のブラウザからクリップボード経由でガンガンメモれ!! | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方

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

emacs bury-successful-compilation.el : コンパイルが正常終了したときにウィンドウを自動で閉じるようにする | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方

パッケージ名 bury-successful-compilation
概要(原文) Bury the *compilation* buffer after successful compilation
リポジトリ MELPA
取得先 https://github.com/EricCrosson/bury-successful-compilation
バージョン 20150303.924
関連記事 package:bury-successful-compilation package:smart-compile package:executable package:quickrun

これは2/28に開発がスタートした新入りelispです。

Emacsは M-x compile でコンパイルできます。

しかし、コンパイルが正常終了したのにコンパイルウィンドウを
手で閉じるのは面倒です。

bury-successful-compilation.el を使えばコンパイルが
正常終了したときに自動でウィンドウを閉じてくれます。

あくまでもcompilationバッファのみ影響するので、
M-x grepM-x executable-interpret には影響ありません。

正常終了したときは実行結果を見ない場合は M-x compile
その都度実行結果を見たい場合は M-x executable-interpret
使い分けるといいです。

標準のM-x compileが好きな人はおすすめです。

全く新しいインターフェースならば quickrun.el(レビュー) があります。

bury-successful-compilation インストール

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

M-x package-refresh-contents
M-x package-install bury-successful-compilation

設定 150305072024.bury-successful-compilation.el(以下のコードと同一)

;;; こういう名前だけど実はマイナーモードなのよw
(bury-successful-compilation 1)

実行方法

$ wget http://rubikitch.com/f/150305072024.bury-successful-compilation.el
$ emacs -Q -f package-initialize -l 150305072024.bury-successful-compilation.el

タグ

2015/03/05 | コメント/トラックバック(0) |

カテゴリー:Emacs

emacs itail.el : 【ログ解析】tail -fしてgrepで絞り込んだりハイライトしたり… | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット

パッケージ名 itail
概要(原文) An interactive tail mode
リポジトリ MELPA
取得先 https://github.com/re5et/itail
バージョン 20150301.2247
関連記事 package:itail

Webサーバなどのログを解析するのは
tail -f シェルコマンドを使うのが定番ですね。

tail -fとはファイルを開きっぱなしにして、
追記されたのと同時に追記分を出力するコマンドです。

itail.el は、Emacs内でtail -fを実行します。

それだけではなく、grepで絞り込んだり、
特定の文字列をハイライトする機能があります。

まさにログ解析に便利なツールです。

itail.elを実行するにはtailとgrepシェルコマンドが必要で、
/bin/shを使っているのでWindowsではCygwinが必要です。

まず、M-x itailでtail -fを実行させます。

そして、C-c gでgrepする正規表現(フィルタ)を指定します。

C-c hでハイライトを有効にします。

フィルタを全部解除し、tailを再起動するにはC-c C-kです。

20150304063832.png
Fig1: C-c g eeでeeが含まれるログだけに絞り込み

itail インストール

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

M-x package-refresh-contents
M-x package-install itail

設定 150304063020.itail.el(以下のコードと同一)

(autoload 'itail "itail" nil t)
;;; modelineに実行中のコマンドを表示する
(setq itail-fancy-mode-line t)
;;; ハイライトする正規表現とフェイス
;;; この例はWebサーバですが、各自設定してください
(setq itail-highlight-list
      '(;; errorとwarningを赤で表示
        ("[eE]rror\\|[wW]arning" . hi-red-b)
        ;; HTTPのmethodを緑で表示
        ("GET\\|POST\\|DELETE\\|PUT" . hi-green-b)
        ;; IPアドレスを文字列の色で表示
        ("[0-9]\\{1,3\\}\\.[0-9]\\{1,3\\}\\.[0-9]\\{1,3\\}\\.[0-9]\\{1,3\\}" . font-lock-string-face)))

実行方法

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

タグ

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

カテゴリー:Emacs

emacs imenu-list.el : 関数・変数定義を別バッファに表示してIDEっぽくする | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット

パッケージ名 imenu-list
概要(原文) Show imenu entries in a seperate buffer
リポジトリ MELPA
取得先 https://github.com/bmag/imenu-list
バージョン 20150301.640
関連記事 package:imenu-list package:helm package:idomenu package:imenu-anywhere

Emacsには元々 imenu という、
多言語対応の関数・変数定義をリストする機能があります。

対応している言語は本当にたくさんあり、
プログラミング言語はもちろんのこと、
HTMLやorg-modeなどの文書にも使えます。

しかし、素の M-x imenu はEmacsの元々の補完が使われるので
使い勝手はイマイチです。

そこで helmido を使った M-x helm-imenu や、
imenu-anywhere(レビュー)idomenu(レビュー) があります。

helmやidoのおかげでカレントバッファ内の関数定義へ
ジャンプしやすくなりました。

imenu-list.el は、imenuの定義を一覧します。

M-x imenu-list はimenuの各エントリを*Ilist*バッファで一覧します。

このバッファでRETを押すと関数定義に移動します。

さらに、 M-x imenu-list-minor-mode を使うとIDEっぽい挙動になります。

このマイナーモードを有効にすると、*Ilist*が1秒ごとに更新され、
カーソル位置に対応するimenuエントリを自動で指し示してくれます。

いってみればimenuによる簡易IDEでしょうか。

ソースコードや文書の全体像を見たいけれどhelmはちょっと…
という方はおすすめです。

3/1に開発されたばかりなので、発展が楽しみです。

20150303055929.png
Fig1: カーソル行に対応したimenuエントリを自動で指し示すよ!

imenu-list インストール

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

M-x package-refresh-contents
M-x package-install imenu-list

設定 150303055659.imenu-list.1.el(以下のコードと同一)

ここではjとkで上下移動できるようにしていますが、
設定しなくてもそのまま使えます。

(with-eval-after-load "imenu-list"
  (define-key imenu-list-major-mode-map (kbd "j") 'next-line)
  (define-key imenu-list-major-mode-map (kbd "k") 'previous-line))

実行方法

$ wget http://rubikitch.com/f/150303055659.imenu-list.1.el
$ emacs -Q -f package-initialize -l 150303055659.imenu-list.1.el

タグ

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

カテゴリー:Emacs

emacs window-numbering.el : 【3分割以上の人へ】ウィンドウを番号(M-0〜M-9)で選択 | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット

パッケージ名 window-numbering
概要(原文) Numbered window shortcuts
リポジトリ MELPA
取得先 https://github.com/nschum/window-numbering.el
バージョン 20150228.1247
関連記事 package:window-numbering package:win-switch package:switch-window package:ace-window

ウィンドウを切り替えるelispはたくさんあります。

C-x oをカイゼンするwin-switch.el(レビュー) switch-window.el(レビュー)
そしてウィンドウ選択をace-jump化するace-window.el(レビュー) もあります。

2〜3個くらいしか分割しない人はC-tなど余ったキーに
other-window を割り当てる方法もあります。

window-numbering.el は、ウィンドウを番号で選択するものです。

マイナーモード window-numbering-mode を有効にすると、
M-0〜M-9で対応する番号のウィンドウに切り替えられるようになります。

そのかわり、 数値引数 (前置引数)としてM-0〜M-9を使っている人は
それが使えなくなります。

20150302040531.png
Fig1: モードラインの左端に番号がつくのでM-1〜M-3で選択

window-numbering インストール

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

M-x package-refresh-contents
M-x package-install window-numbering

実行方法

$ wget http://rubikitch.com/f/150302040348.window-numbering.el
$ emacs -Q -f package-initialize -l 150302040348.window-numbering.el

タグ

2015/03/02 | コメント/トラックバック(0) |

カテゴリー:Emacs

emacs clipmon.el : 【メモ革命】任意のブラウザからクリップボード経由でガンガンメモれ!! | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方

パッケージ名 clipmon
概要(原文) Clipboard monitor – watch system clipboard, add changes to kill ring/autoinsert
リポジトリ MELPA
取得先 https://github.com/bburns/clipmon
バージョン 20150212.712
関連記事 package:clipmon

これはすごい!

Emacsでメモをとる方法は従来ならば M-x org-capture
ChangeLogメモ などの方法があります。

しかし、これらの方法だとEmacsに閉じているため、
Emacs以外のアプリケーションから直接メモすることができません。

時代の流れにより、今やEmacsだけですべてをまかなえなくなっています。

Emacsに代わってWebブラウザこそが統合環境の王者なのが現状です。

Webサイトを見ているとメモを取りたくなることが多々ありますが、
EmacsでやるにはEmacs内蔵WebブラウザEWW(カテゴリ)emacs-w3m などの
窮屈な方法に頼らざるを得ません。

今(Emacs外の)Webブラウザで見ているサイトから直接メモを取るには
クリップボードを経由するしかありません。

しかし、それではクリップボードに保存して
そこからC-yでEmacsに貼り付ける必要があり
手間がかかってしまいます。

そこで M-x clipmon-autoinsert-toggle コマンドを使いましょう。

このコマンドはクリップボードが更新されるたびに、
カレントバッファにその内容が貼り付けられます。

よって、Webブラウザからメモを取るためには
M-x org-capture などでメモ用のバッファを開き
M-x clipmon-autoinsert-toggle を実行し、
ブラウザに切り替えて、マウスで範囲選択するだけです。

あとはブラウザ内で何度でも範囲選択すれば
その内容が次々とEmacsに貼り付けられるので
Emacsに戻ることなく、ガンガンメモできます。

OSのクリップボードを経由するので、
ブラウザは FirefoxChrome などなんでも構いません。

それどころかブラウザ以外の任意のアプリケーションで使えます。

一度体験してみてください。

目から鱗です!!

clipmon インストール

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

M-x package-refresh-contents
M-x package-install clipmon

音でお知らせ

M-x clipmon-autoinsert-toggle を実行したときと、
クリップボードの内容を貼り付けたときには音でお知らせしてくれます。

しかし、サウンド機能を無効でEmacsをコンパイルしたときには

This Emacs binary lacks sound support

というエラーが出て clipmon.el が使えません。

そのときは この記事の設定で 外部プレイヤーを使うようにしてください。

OSのパッケージからインストールした場合は問題ありません。

タグ

2015/03/01 | コメント/トラックバック(0) |

カテゴリー:Emacs org-mode

Emacsの音声再生機能を強化する

Emacsには サウンド機能 があります。

外部プレイヤーを使わないでも音声を再生できます。

しかしライブラリを使わないで独自にwav解析ルーチンを持っているので、
wavファイルしか再生できない貧弱仕様です。

おまけに再生中はEmacsが固まります(苦笑)

なので僕はこの機能を無効にしています。

けれどもあるライブラリで play-sound-file という関数が
使われているので急遽定義することにしました。

Emacsの標準関数 play-sound はwavしか再生できませんが、
再定義版では外部プレイヤー次第で mp3ogg など
どんなファイルも再生できます。

このコードではMPlayer(本家) を使っていますが、
他のプレイヤーを使う場合は play-sound-external-command
変更してください。

コード 150301073615.play-sound.el(以下のコードと同一)

(defvar play-sound-external-command '("mplayer" "-really-quiet"))
(defun play-sound (sound)
  (apply 'call-process
         `(,(car play-sound-external-command) nil nil nil
           ,@(cdr play-sound-external-command)
           ,(file-truename (plist-get (cdr sound) :file)))))

タグ

2015/03/01 | コメント/トラックバック(1) |

カテゴリー:Emacs

emacs hiwin.el : 他のウィンドウに色を付け、選択中のウィンドウをわかりやすくする | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット

パッケージ名 hiwin
概要(原文) Visible active window mode.
リポジトリ MELPA
サイト http://d.hatena.ne.jp/ksugita0510/20111223/p1
取得先 https://github.com/yoshida-mediba/hiwin-mode
バージョン 20150220.6
関連記事 package:hiwin

たくさんのウィンドウに分割している人は、
どのウィンドウが選択されているのかわからなくなるかもしれません。

そこで、 hiwin.el は選択されていないウィンドウすべてに
色をつけることによって、選択中のウィンドウをよりわかりやすくします。

これは昔からあるのですが、最近また更新されました。
http://d.hatena.ne.jp/ksugita0510/20111223/p1
に作者の紹介記事がありますが、
M-x hiwin-deactivate で無効にできるようになっています。

モードラインの色を調整することでもウィンドウを明示できます。

M-x customize-face modeline
M-x customize-face modeline-inactive

それでも不十分な方は使ってみてください。

20150228041339.png
Fig1: こんな感じでウィンドウ全体に色がつく

20150228042501.png
Fig2: 色がつくのは選択されていないウィンドウのみ

hiwin インストール

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

M-x package-refresh-contents
M-x package-install hiwin

設定 150228041228.hiwin.el(以下のコードと同一)

(hiwin-activate)                           ;; hiwin-modeを有効化
(set-face-background 'hiwin-face "gray80") ;; 非アクティブウィンドウの背景色を設定
^

実行方法

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

タグ

2015/02/28 | コメント/トラックバック(0) |

カテゴリー:Emacs

helmとanythingをdired化しよう!

まずあなたに謝らなければならないことがあります。

「今月は自分ハック月間」
と言っていましたが、今回はもっぱらEmacsな話題です。

期待してたら、ごめんなさい。

実は元々、今回分の自分ハックネタがあったのですが、
タイミング的に来週に回した方がいいと判断したため、
急遽変更させていただきました。

その理由は来週になればわかります。

今回はdiredの「!」をhelmとanythingに移植する話です。

「!」はdired内でシェルコマンドを実行するコマンドで、
汎用性が高いです。

diredには無数のコマンドが登録されていますが、
このコマンドさえ知っていれば事実上なんでもできます。

ファイルのコピー・移動・削除はもちろんのこと
メディアファイルを再生したり
画像を表示したりするのも
お手のものです。

このコマンドは適切な制御文字を入れれば
実行するシェルコマンドを細かく指定できます。

実際に使ってみれば便利だと気付くはずです。

helmとanythingもdired同様ファイルを一覧するのですが、
なぜかこの機能が存在しないので、追加してしまいます。

アクションにキーを割り当てる方法も紹介するので、
今回のお話はhelm愛好家にはとても役立つはずです。

タグ

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

カテゴリー:メルマガ

emacs term-run.el : Emacs内蔵ターミナルエミュレータで任意のシェルコマンドを実行する | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット

パッケージ名 term-run
概要(原文) Run arbitrary command in terminal buffer
リポジトリ MELPA
取得先 https://github.com/10sr/term-run-el
バージョン 20150224.2322
関連記事 package:term-run

Emacsには M-x term というターミナルエミュレータがあります。

そこではzshやirbなどのシェル系コマンドを実行できるのですが、
なぜかプログラムの引数は取ってくれません。

そこで M-x term-run-shell-command
term-mode で任意のシェルコマンドを実行します。

M-x shellM-x eshell は対話的なコマンドも実行できますが、
w3mやalsamixerなどの画面指向のプログラムは実行できません。

zsh をM-x eshellで実行してもzshの本来の操作性が殺されるので、
zshを本領発揮させるには term-mode を使う必要があります。

20150226084217.png
Fig1: M-x term-run-shell-command w3m http://rubikitch.com/

term-run インストール

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

M-x package-refresh-contents
M-x package-install term-run

タグ

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

カテゴリー:Emacs

emacs wiki-nav.el : 【ハイパーリンク】ソースコードのコメントをWiki化し、M-n/M-pで辿れるようにする | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット

パッケージ名 wiki-nav
概要(原文) Simple file navigation using [[WikiStrings]]
リポジトリ MELPA
取得先 https://github.com/rolandwalker/button-lock
バージョン 20150223.554
関連記事 package:wiki-nav package:ido package:org package:linkd

org-mode のリンクはとても強力ですが、
メジャーモードなのでorg-mode以外では使えません。

ソースコードのコメントでも長くなると ハイパーリンク が欲しくなります。

そこで wiki-nav.el でコメントをWikiっぽくしましょう。

リンクとターゲットは以下のように記述します。
(「;; 」はelispのコメントなので除く)

;; [[link]]  リンク
;; [[<link]] ターゲット

本設定ではターゲットの記法を発見すると自動で
マイナーモード wiki-nav-mode を有効にするので
明示的に有効にする必要はありません。

有効になるとM-pとM-nでリンク・ターゲット間をジャンプし、
RET、C-c C-o、M-mで辿るように設定しています。

デフォルトの設定だとC-c C-wでリンク・ターゲット間をジャンプしていますが、
C-c C-wはメジャーモードで使われていることがあるのでよくないです。

使えるリンク記法については設定ファイルを見てください。

以前からあった linkd.el みたいなやつですね、これは。

M-x wiki-nav-ido を使うと、 ido のインターフェースで
リンク・ターゲットへジャンプします。

20150225054216.png
Fig1: リンクは色付けされる

wiki-nav インストール

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

M-x package-refresh-contents
M-x package-install wiki-nav

設定 150225045227.wiki-nav.1.el(以下のコードと同一)

;;; [[KeyBinding]]
;;; [[EnableOnDemand]]
;;; [[Examples]]
;;; [[日本語]]
;;; [[<KeyBinding]]
;;; wiki link間をM-p/M-nで辿れるように
(setq wiki-nav-find-any-link-keys '("M-n"))
(setq wiki-nav-find-any-previous-link-keys '("M-p"))
(setq wiki-nav-skip-to-next-keys '("<tab>" "M-n"))
(setq wiki-nav-skip-to-previous-keys '("S-TAB" "S-<tab>" "<backtab>" "S-<iso-lefttab>" "M-p"))
;;; wiki-nav内ではM-mとC-c C-o(org-mode風)でも辿れるように
(setq wiki-nav-activate-keys '("RET" "M-m" "C-c C-o"))
;;; なんでvisit:というスキームなの?file:くらいサポートすべきよね??
(setq wiki-nav-visit-link-pattern "\\`\\(?:file\\|visit\\):\\([^:\n]+?\\)\\(?:\\|:\\([^\n]*\\)\\)\\'")
;;; [[<EnableOnDemand]]
;;; wiki-nav記法があるときのみ有効にする
(defun wiki-nav-enable-maybe ()
  (unless (bound-and-true-p wiki-nav-mode)
    (save-excursion
      (goto-char (point-min))
      (when (search-forward "[[<" nil t)
        (wiki-nav-mode 1)
        (run-at-time 0.5 nil 'message "Enable wiki-nav-mode.")))))
;;; ファイルを開くときにwiki-nav記法をチェック
(add-hook 'find-file-hook 'wiki-nav-enable-maybe)
;;; 3秒間のアイドル時にwiki-nav記法をチェック
(run-with-idle-timer 3 t 'wiki-nav-enable-maybe)
;;; [[<Examples]]
;;; [[http://rubikitch.com/]]
;;; [[visit:~/.emacs.d/init.el]] ファイルへのリンク
;;; [[visit:~/.emacs.d/init.el:line:3]] init.elの3行目へ
;;; [[file:~/.emacs.d/init.el]]  これも使えるように設定
;;; [[func:wiki-nav-enable-maybe]] ファイル内の関数へのリンク
;;; [[function:wiki-nav-enable-maybe]] 同様
;;; [[line:2]] 2行目へのリンク
;;; [[<日本語]] 日本語もOK

実行方法

$ wget http://rubikitch.com/f/150225045227.wiki-nav.1.el
$ emacs -Q -f package-initialize -l 150225045227.wiki-nav.1.el

タグ

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

カテゴリー:Emacs

このページの先頭へ