最新情報

2014年10月24日メルマガ
Emacs org-modeでソースコードを再利用する3つの方法とは?
2014年10月23日Emacs
Emacs 24.4でパワーアップした標準パッケージたち
2014年10月22日Emacs
Emacs 24.4で快適になった編集コマンドたち!新機能、改善点
2014年10月21日Emacs
Emacs 24.4リリース!ファーストインプレッション
2014年10月20日Emacs
emacs relative-line-numbers.el : 画面左に相対行番号をつけよう! | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット

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

Emacs org-modeでソースコードを再利用する3つの方法とは?

org-mode は文章の中にソースコードを埋め込むことができます。

その機能のことを org-babel といいますが、
org-babelの中で埋め込むソースコードを管理する方法は
大きく分けて3つあります。

そのうち2つの方法はソースコードを別のファイルに書いて、
文書の中にファイル名指定で埋め込む方法です。

これらの方法ならば、ソースコード単体でテストや実行ができるので楽です。

間違ってもソースコードを文書にコピペしてはいけませんよ!

そうするとソースコードを変更したときに
文書に変更が反映されませんから…

DRY原則 はソースコードのみならず、文書にも適用すべき事柄です。

今回のメルマガはorg文書に埋め込んだソースコードを
文書内の別な部分で再利用する方法を紹介します。

具体例として、 org-mode + gnuplot で色々なグラフを描く文書を作成します。

もちろんグラフの画像はEmacsでインライン画像として表示できます。

orgフォーマットはEmacsユーザにとっては最も可用性が高い と考えています。

この方法を応用すれば、ソースコード・画像が含まれる
文書やサイトを作ることがとても簡単になります。

Emacsの可能性を感じてください。

タグ

2014/10/24 | コメント/トラックバック(0) |

カテゴリー:メルマガ

Emacs 24.4でパワーアップした標準パッケージたち

昨日は標準の編集コマンドたちが便利になったことを紹介 しましたが、
今日は標準のパッケージの成長ぶりを紹介します。

まあ昨日の続きということで。

概要

  • cua-modeの矩形編集が独立して使える!
  • diredでファイル名のみ表示できるようになった!
  • M-:でeldocが使える!
  • icomplete-modeがido/iswitchbっぽくなった!
  • iswitchbがobsoleteに…
  • シンボルisearch
  • 後方置換

cua-modeの矩形編集が独立して使える!

昨日C-x SPC (rectangle-mark-mode)
というコマンドが加わったことを紹介しましたが、
cua.el の方も負けていません。

M-x cua-rectangle-mark-mode が使えるようになりました。

cua-mode の矩形編集はもともと強力ですが、
以前は M-x cua-selection-mode からしか使えませんでしたし、
これでもcua-modeの(Emacs的に)変則的な影響が出ました。

M-x cua-rectangle-mark-modeを使えばcua-modeのクセもなくなります。

独立して使えるようになったのは大きいですね。

cua-modeに嫌悪感を持つ人でも、役立ちます。

C-x SPCも同じような機能ですが、こちらに置き換えてもいいです。

(global-set-key (kbd "C-x SPC") 'cua-rectangle-mark-mode)

他のパッケージとバッティングしやすいので僕はアンチCUAです。

diredでファイル名のみ表示できるようになった!

M-x dired-hide-details-modedired-details.el と同様に
diredでファイル名のみ表示するマイナーモードです。
これがあれば dired-details.el はもう必要ないでしょう。

dired-details.elと合わせるにはこう設定します。

(require 'dired)
(define-key dired-mode-map (kbd "(") 'dired-hide-details-mode)
(define-key dired-mode-map (kbd ")") 'dired-hide-details-mode)

M-:でeldocが使える!

(add-hook 'eval-expression-minibuffer-setup-hook 'eldoc-mode)

を設定すれば M-: でも eldoc が使えます。

eldoc-eval.el が提供していた機能が標準機能になりました。

icomplete-modeがido/iswitchbっぽくなった!

M-x icomplete-mode を使えば、 ido.el / iswitchb.el のようになります。

M-xやC-x C-fやC-x bで候補がミニバッファにずらずら出てきます。

ido/iswitchbとは異なり、C-s/C-rではなくC-,とC-.で選択します。

iswitchbがobsoleteに…

iswitchbがobsoleteになってしまいました…

ido/icompleteに完全に置き換わったということです。

かつてお世話になったパッケージがobsoleteになるのは悲しいものです。

シンボルisearch

M-s . (isearch-forward-symbol-at-point)
現在のシンボルを isearch します。

現在のシンボルを検索するパッケージはいろいろとありますが、
標準機能になったのは嬉しいですね。

後方置換

M-% (query-replace)C-M-% (query-replace-regexp)
による置換は普通はカーソル後が対象でした。

Emacs 24.4において M- - を前置すると、カーソル前が置換対象になります。

地味な豆知識でした。

タグ

Emacs 24.4で快適になった編集コマンドたち!新機能、改善点

昨日に引き続き、Emacs 24.4の新機能のレビューです。

今日は編集コマンドの変更点についてです。

ハマりどころや目立った機能については昨日の記事 を見てください。

ついでに view-mode をカイゼンする拙作 viewer.el
Emacs 24.4に対応させておきました。MELPAからどうぞ。

<2014-10-23 Thu> 標準パッケージの更新点も書きました

概要

  • C-x C-i (indent-rigidly) がsmartrep風味に
  • バッファ名がわかりやすくなった!
  • 矩形regionが標準で使える!
  • uniqコマンドみたいに重複行を削除する
  • 進化したM-SPC
  • どのレジスタに何が入ってるかを示してくれる!
  • 最新情報をどうやって見るかって?

C-x C-i (indent-rigidly) がsmartrep風味に

C-uをつけないときのC-x C-i (indent-rigidly)の挙動が変わりました。

以前は1桁インデントしていたのですが、
Emacs 24.4では←、→、Shift+←、Shift+→で
インデントを制御できるようになりました。

←と→は1桁ずつ、Shift月ではtab stop単位となります。

smartrep的な挙動になったということです。

バッファ名がわかりやすくなった!

uniquify.elがデフォルトで有効になりました。
以前は別なディレクトリで同じファイル名を開くと
basename<2> というバッファ名になりましたが、
Emacs 24.4では basename<dirA>、basename<dirB> というふうになります。

以前は知らなければ便利さを亨受できなかったけれど、
デフォルトで有効になるのは嬉しいですね。

矩形regionが標準で使える!

C-x SPC (regctangle-mark-mode)が新しく加わりました。

regionを設定して、C-x SPCを押したら矩形を選択できます。

その後C-wやC-yで矩形をコピペできます。

これまでは cua-selection-mode を使う必要がありましたが、
これからは cua.el に頼ることはなくなります。

これで一気に使いやすくなりましたね!!

cua.elは他の設定とバッティングするのでおすすめできません。

uniqコマンドみたいに重複行を削除する

M-x delete-duplicate-lines が新設されました。

これはリージョン内の重複する行を削除します。

Unixコマンドのuniqとは違い、sortされている必要はありません。

====
hoge
boke
hoge
fuga
====
↓ M-x delete-duplicate-lines
====
hoge
boke
fuga
====

進化したM-SPC

M-x cycle-spacingM-SPC (just-one-space) を賢くしたものです。

繰り返し実行することで

  • 1スペース
  • スペース削除
  • 元のスペース

を切り替えてくれます。

よって快適にするためにはjust-one-spaceを置き換えるといいです。

(global-set-key (kbd "M-SPC") 'cycle-spacing)

どのレジスタに何が入ってるかを示してくれる!

Emacs 24.4では レジスタ も便利になりました。

C-x r s (copy-to-register) などnoレジスタに保存するコマンドha
どのレジスタに格納するかを選択する必要があります。

そのとき「このレジスタ使用済みだっけ…」って思うんですね。

そのためにわざわざ現在のコマンドをキャンセルして
M-x list-registers で見て再び元のコマンドを実行…

なんてやってたら日が暮れてしまいます。

そこで!
レジスタ入力待ちのときに、しばらくすると
レジスタの一覧が表示されます。

これにより、間違ってレジスタを上書きすることがかなくなります。

すごい嬉しい配慮ですね!

最新情報をどうやって見るかって?

どうやって最新機能を見られるかというと、*<f1> n* を使うんですよ。

とくに *C-u <f1> n*で24.4を選択すると、Emacs 24.4の新機能のみ表示してくれます。

今日は「Editing Changes in Emacs 24.4」について触れました。

タグ

Emacs 24.4リリース!ファーストインプレッション

今日、1年半ぶりにEmacsの新バージョン(24.4)がリリースされたので、
さっそくインストールしてみました。

注意すべき点は大きくわけて4つです。

  • パッケージエラーの回避方法
  • Emacs組み込みWebブラウザEWW!
  • ついにバイトコンパイル問題に決着!
  • org-mode がorg7→org8へ変更

<2014-10-22 Wed> 編集コマンドの変更点について書きました。
<2014-10-23 Thu> 標準パッケージの更新点も書きました。

ビルド

僕のところのconfigureビルドオプションはこんな感じです。環境はGNU/Linuxです。

$ wget -O-  http://ftp.gnu.org/gnu/emacs/emacs-24.4.tar.xz | tar xJvf -
$ cd emacs-24.4
$ ./configure --disable-largefile --with-x-toolkit=motif --without-toolkit-scroll-bars \
  --without-xaw3d --without-xim --without-compress-info --without-sound --without-pop \
  --without-sync-input --without-xpm --without-tiff --without-rsvg --without-gconf \
  --without-gsettings --without-selinux --without-gpm --without-makeinfo --with-x && make \
  && sudo make install

コンピュータの性能は一級品ではあるが、
とにかく無駄を徹底的に省くスタイルです。

packageが使えない!?→解決

まず、起動していきなりエラーが起きました。

どうやら (package-initialize) で

Debugger entered--Lisp error: (void-function package-desc-vers)
  package-desc-vers([(1 3) nil "Interface to ack-like source code search tools"
   tar ((:keywords "tools" "processes" "convenience")
        (:url . "https://github.com/leoliu/ack-el"))])

NEWSによると原因はこれですね。

The format of `archive-contents’ files, generated by package
repositories, has changed to allow a new (fifth) element in the data
vectors, containing an associative list with extra properties.
(For example, `describe-package’ uses the `:url’ extra property to
display a “Homepage” header.)

package.elで使っているデータ構造が変更されたので、
melpaのパッケージがエラーを起こしているようです。

package-desc-vers
いう関数が削除されたので
package–ac-desc-version
という関数を使えということです。

こういう非互換な変更はちゃんとNEWSに書いてほしいものです(苦笑)

正直ものすごい迷惑…

これを24.3/24.4で実行したところ

(package-initialize)
(print (list :package-desc-vers (fboundp 'package-desc-vers)
             :package--ac-desc-version (fboundp 'package--ac-desc-version)))
$ emacs-24.3 -script package.check.el
(:package-desc-vers t :package--ac-desc-version nil)

$ emacs-24.4 -script package.check.el
(:package-desc-vers nil :package--ac-desc-version t)

このように関数名が変わってしまいました。

対処するには以下の設定を加えます。

(fset 'package-desc-vers 'package--ac-desc-version)

quelpa-self-upgradeでエラー

package.elの自然な拡張形quelpa を使っている人は注意です。
quelpa-self-upgrade でエラーになってしまいます。

これもおそらくpackage.elのデータ構造変更が原因と思われます。

quelpa-self-upgradeはquelpa.elを自動更新するだけなので、
その行はコメントアウト(とりあえず行頭に ;; を置く)してください。

それまではバッチモードで更新すればよいです。

$ emacs -Q -batch -f package-initialize -f quelpa-self-upgrade

EWW: Emacs組み込みWebブラウザ

ついにEmacs標準にWebブラウザ(テキストブラウザ)までついてきました!!!!

一言で言うと、 emacs-w3m が標準で使えるようなものです。

インライン画像も表示できますし、
libxml2を使っているので速度も申し分ありません。

Windowsでemacs-w3mの設定に悪戦苦闘している人には嬉しい話ですね。

20141021135204.png
Fig1: M-x eww http://www.gnu.org/software/emacs/

org-modeがorg8へ変更

org-mode がorg 7.9.3からorg 8.2.10に変更されました。

大幅に変更が加えられているので、
org-mode ジャンキーは戸惑うことでしょう。

org7→org8の相異点(Worg)
7.9.3、7.9.4、8.0.3の相異点(ReleaseNote)
8.1と8.2の相異点(ReleaseNote) を見てください。

とくに org-export での操作性が大幅に変わった上、
example, srcブロックの可読性がひどいことに なりました。

load-prefer-newer: バイトコンパイル忘れでハマることはもうない

load-prefer-newer 変数は、 バイトコンパイル問題 を解決してくれます。

従来のEmacsではバイトコンパイルされていないファイル(.el)の方が新しい場合、
古いバイトコンパイル済みのファイル(.elc)がろロードされましたが、

(setq load-prefer-newer t)

を設定することで、新しい方を読み込んでくれます。

今更な感じはしますが、嬉しいことです。

eshell $ cd /tmp
eshell $ echo '(setq x "old")' > test.el
eshell $ byte-compile-file test.el
eshell $ echo '(setq x "new")' > test.el
eshell $ emacs -Q -batch -eval '(progn (setq load-prefer-newer nil) (load "/tmp/test")(print x))'
Loading /tmp/test (compiled; note, source file is newer)...

"old"
eshell $ emacs -Q -batch -eval '(progn (setq load-prefer-newer t) (load "/tmp/test")(print x))'
Loading /tmp/test.el (source)...

"new"

view-modeの操作性がよくなった!

view-mode で何も設定しなくてもSPCでスクロール、
S-SPCで逆スクロールしてくれます。

デフォルトでページャらしくなりました。

僕はとっくの昔にキーを設定していますが、
デフォルトで使いやすくなるのはいいですね!

C-x 2: split-window→split-window-below

split-window (C-x 2) はコマンドではなくなったので、
もしキーに割り当てているのならば
split-window-below に置き換えてください。

比較関数が複数個の引数を取るようになった

比較演算子(=, <, >, <=< , >=)が
複数の引数を取るようになりました。

なぜ今まで2つしか取らなかったのかが意味不明です。

(< 1 2 3) ; => t

with-eval-after-load: eval-after-loadのマクロ版

with-eval-after-loadeval-after-load のマクロ版です。

eval-after-loadはquoteとprognが必要で
すげーダサかったけど、with-eval-after-loadを使えば
すっきり書けます。

(eval-after-load 'foo
  '(progn
      (setq x 1)
      (setq y 2)))


(with-eval-after-load 'foo
  (setq x 1)
  (setq y 2))

総評

とりあえず、package.el関連のエラーに悩まされると思いますが、
今のところ他に目立つエラーは出ていません。

ただ、Emacs初級者はリリース直後のバージョンには手を出さない方がいいです。

なぜなら、Emacs本体に非互換な変更が含まれるので、
使っているパッケージがエラーになることがあるからです。

パッケージの作者の対応待ちがあるので、
あせらず数週間くらい待ってれば安定してきます。

もちろん自力で問題解決できる人ならばすぐにアップグレードしてもいいです。

他にもここでは述べていない細かい変更点があるので、
追々紹介していきたいと思っています。

タグ

emacs relative-line-numbers.el : 画面左に相対行番号をつけよう! | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット

パッケージ名 relative-line-numbers
概要(原文) Display relative line numbers on the margin
リポジトリ MELPA
取得先 https://github.com/Fanael/relative-line-numbers
バージョン 20141018.1252
関連記事 package:relative-line-numbers

relative-line-numbers.el は、画面左端のスペースに
相対行番号をつけるものです。

具体的なメリットはちょっと思い付かないのですが、
今までとは違った世界が見られます。

relative-line-numbers インストール

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

M-x package-refresh-contents
M-x package-install relative-line-numbers

設定 141020140339.relative-line-numbers.el(以下のコードと同一)

(global-relative-line-numbers-mode)

実行方法

$ wget http://rubikitch.com/f/141020140339.relative-line-numbers.el
$ emacs -Q -f package-initialize -l 141020140339.relative-line-numbers.el

20141020140507.png
Fig1: 相対行番号!

タグ

2014/10/20 | コメント/トラックバック(0) |

カテゴリー:Emacs

emacs dired-k.el : dired/direxでサイズ・最終更新時刻・git statusで色をつける | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット

パッケージ名 dired-k
概要(原文) highlight dired buffer by file size, modified time, git status
リポジトリ MELPA
取得先 https://github.com/syohex/emacs-dired-k
バージョン 20141013.651
関連記事 package:dired-k package:magit package:direx package:dired

dired-k.el は、dired表示をカラフルにしてくれます。

  • ファイルサイズ
  • 最終更新時刻
  • gitの状態(コミットされた・変更済み・管理されていない)

でそれぞれ色をつけてくれます。

diredのgは本来再描画ですが、dired-kに割り当てれば
再描画+色付けをしてくれるので便利です。

また、昨日紹介したdirex.el にも対応しています。

dired-k インストール

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

M-x package-refresh-contents
M-x package-install dired-k

設定 141019102632.dired-k.1.el(以下のコードと同一)

(require 'dired)
(define-key dired-mode-map (kbd "g") 'dired-k)
(add-hook 'dired-initial-position-hook 'dired-k)

;;; direxを使う場合 / gitの状態のみ色付け
(require 'direx-k)
(global-set-key (kbd "C-\\") 'direx-project:jump-to-project-root-other-window)
(define-key direx:direx-mode-map (kbd "K") 'direx-k)

実行方法

$ wget http://rubikitch.com/f/141019102632.dired-k.1.el
$ emacs -Q -f package-initialize -l 141019102632.dired-k.1.el

20141019102747.png
Fig1: gを押してdired-kを表示させたところ

20141019102813.png
Fig2: そのときのgit status

20141019103356.png
Fig1: direxでもgitの状態で色付け

タグ

2014/10/19 | コメント/トラックバック(0) |

カテゴリー:Emacs

emacs direx.el : diredとspeedbarを組み合わせた全く新しいファイラ | MELPA Emacs Lisp Elisp パッケージ インストール 設定 使い方 スクリーンショット

パッケージ名 direx
概要(原文) Simple Directory Explorer
リポジトリ MELPA
取得先 https://github.com/m2ym/direx-el
バージョン 20140323.908
関連記事 package:direx package:dired package:speedbar

direx.el は一言で言えば Yet another dired です。

つまり、Emacs Lispで実装されたもうひとつのファイラです。

最大の特徴は、深いディレクトリ構造をディレクトリツリーとして
すべて見せてくれることです。

speedbar 的なディレクトリツリーが特徴です。

「diredとspeedbarを組み合わせた」とタイトルに書きましたが、
実はどちらにも依存していません。

また、コアはわずか1000行ととてもコンパクトです。

diredと比べれば1/8に過ぎません。

使い方はdiredに似ているのですぐに慣れます。

  • C: コピー
  • R: リネーム・移動
  • D: 削除
  • ^: 親ディレクトリ
  • RET: ファイル・ディレクトリを開く

などはそのまま使えます。

なによりディレクトリでRETを押すと
その場でサブディレクトリが展開されるし、
Eを押すと再帰的にディレクトリツリーを開いてくれます。

direxとdiredのエントリーポイントはこのように対応しています。

M-x dired-jumpM-x direx:jump-to-directory
M-x diredM-x direx:find-directory

たくさんのサブディレクトリが含まれるディレクトリを見るとき、
direxはとても役立ちます。

direx インストール

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

M-x package-refresh-contents
M-x package-install direx

設定 141018090645.direx.el(以下のコードと同一)

(global-set-key (kbd "C-x C-j") 'direx:jump-to-directory)

実行方法

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

20141018090753.png
Fig1: direxでディレクトリツリーを見よう

タグ

2014/10/18 | コメント/トラックバック(0) |

カテゴリー:Emacs

毎日20分程度でEmacsブログを更新し続けている舞台裏を暴露…

ついにメルマガ『Emacsの鬼るびきちのココだけの話』も
151号に到達しました。

初代ポケモンの数ですね(笑)

今回は、毎日更新しているこのブログの舞台裏を暴露します。

ここ数年は年に数回しか更新できなかったブログが、
rubikitch.comになってから突如毎日欠かさず更新し続けている…
その秘密とは…?

舞台裏にはこんな仕掛けがあるということを
メルマガを読んでくださってるあなたにこっそりと伝授します。

ブログの更新時間は15〜40分くらいです。

初見のEmacs Lispでも簡単なものならば
20分もあればレビュー記事が書けてしまいます。

そのためには円滑にテストを行い、
文章を書くための仕組みが不可欠です。

使っているツールは
org-mode でブログを更新する org2blog
というパッケージです。

しかし、それだけでは足りません。

org-modeにとある仕掛けを施して
思考の流れのままスムーズに
ブログ記事を書き上げています。

それでは土曜日のメルマガを楽しみにしててください。

ちなみにこの記事は7分で書き上げました(笑)

タグ

2014/10/17 | コメント/トラックバック(0) |

カテゴリー:メルマガ

Emacs org-eshell: org-modeでeshellへのリンクを張る

org-modeは標準添付ですが、デフォルトでは
読み込まれていない機能がたくさんあります。

eshell へのリンクを張る org-eshell.el もそのひとつです。

requireするだけで「eshell: 」スキームのリンクが有効になります。

使い方はeshellでも他と同じようにC-c lでリンクを保存し、
orgバッファに貼り付けるだけです。

[[eshell:*eshell*:cd%20/r/sync/memo/][cd /r/sync/memo/]]

このリンクを開けば*eshell*バッファにて

cd /r/sync/memo/

を実行します。

「shell: 」スキームでシェルコマンドを実行できますが、
その親戚のような感じです。

前者は*Org Shell Output*というバッファに結果がポップアップしますが、
後者は*eshell*バッファに切り替えて実行します。

[shell:ls]
[[eshell:ls]]

小ネタまでに。

設定 141016130143.org-eshell.el(以下のコードと同一)

(require 'org-eshell)
(global-set-key (kbd "C-c l") 'org-store-link)

実行方法

$ wget http://rubikitch.com/f/141016130143.org-eshell.el
$ emacs -Q -f package-initialize -l 141016130143.org-eshell.el

タグ

2014/10/16 | コメント/トラックバック(0) |

カテゴリー:Emacs org-mode

emacs anything-kyr.el : 空気を読んで必要なコマンドを提示してくれる古えの最終兵器…anything.elの秘蔵っ子 | Emacs Lisp Elisp パッケージ インストール 設定 使い方

パッケージ名 anything-kyr
概要(原文) Show context-aware commands
リポジトリ まだパッケージに登録されていない
関連記事 package:anything-kyr package:anything package:helm package:trace package:org package:yaoddmuse

昨晩から今朝まで 一連のつぶやき に登場してた anything-kyr.el というのは、
条件が整ったときに、実行されるであろうコマンド・URL
(正確には org-mode のリンク)を提示してくれるコマンドです。

条件とは、以下のものです。

  • メジャーモード anything-kyr-commands-by-major-mode
  • 任意のS式 anything-kyr-commands-by-condition
  • ファイル名の正規表現 anything-kyr-commands-by-file-name

anything.el はもはや helm に取って代わられてしまいましたが、
anything-kyr.elは僕の方ではいまだに大活躍しています。

このEmacs Lispは特に宣伝することもなく
こっそりとEmacsWikiに上げていたので、
知っている人はほとんどいないかと思います。

実に5年ぶりに更新しましたのでこのようにブログを書いています。

KYRとは「空気読める」の略で、 M-x anything-kyr を実行すると、
現在の状況で必要とされるコマンドを提示します。

情報源の変数 anything-c-source-kyr も定義されているので、
自分のanythingコマンドに組み込むこともできます。

anything.elを使うには本来anything-config.elも必要となりますが、
anything-kyr.elのみを使うのであれば不要です。

今更anything関連をMELPAに上げるのはアレなので、
auto-installベースでインストールするようにしています。

anything-kyr インストール

これはまだパッケージ化されていないので、手動でインストール する必要があります。

M-x auto-install-batch anything-kyr
でインストールできるようにしました。

設定 141015113526.anything-kyr.el(以下のコードと同一)

;; KYR = "Kuuki wo YomeRu" in Japanese (can read the atmosphere)
(require 'anything-kyr)
(setq mode-line-buffer-identification
      (append '(" "
                (:eval (and (featurep 'anything-kyr)
                            (anything-kyr-should-notify-p))))
              mode-line-buffer-identification))
(put 'mode-line-buffer-identification 'risky-local-variable t)

(setq ;; メジャーモードでの設定
      anything-kyr-commands-by-major-mode
      ;; org-modeのときにorg-clock-in, org-clock-outを提示
      '((org-mode
         org-clock-in org-clock-out))
      ;; 条件での設定
      anything-kyr-commands-by-condition
      '(
        ;; M-x trace-functionした関数があるときに
        ;; untrace-allとuntrace-functionを提示する
        ((and (featurep 'trace)
              (loop for (funcname) in ad-advised-functions
                    thereis (trace-is-traced (intern funcname))))
         untrace-all untrace-function)
        )

      ;; ファイル名での設定
      anything-kyr-commands-by-file-name
      '(
        ;; yaoddmuseディレクトリのときに提示
        ("/.emacs.d/yaoddmuse/"
         yaoddmuse-browse-current-page
         "http://www.emacswiki.org/")
        ))

実行方法

$ wget http://rubikitch.com/f/141015113526.anything-kyr.el
$ emacs -Q -f package-initialize -l 141015113526.anything-kyr.el

その後
M-x trace-function RET find-file RET
でトレースを有効にするとバッファ名の前に◎がつき、
M-x anything-kyrでuntrace-allとuntrace-functionが提示されます。

M-x untrace-allを実行すると◎が消えます。

御自分にあうように条件を書き換えてください。

20141015114924.png
Fig1: 条件が整ったときに◎がつき、コマンドが提示される

一連のつぶやき

  • 2014/10/15 07:12:47 rubikitch > 入力補完はあれば助かる程度のもので、補完設定を書くのに四苦八苦するようでは本末転倒や。それよりも類似のコードを検索したりとか、テンプレートやドキュメントをひっぱってくる方が大切よね。 by るびきち@日刊Emacs from twmode [Emacs on Debian]
  • 2014/10/15 07:11:01 rubikitch > 空気読んでコマンドを提示するanything-kyr.el…まあ昔の自分が欲しかったから作ったし今もそれに助けられているのであるが、果たして需要はあるのだろうか。あるのならば再設計したい。 by るびきち@日刊Emacs from twmode [Emacs on Debian]
  • 2014/10/15 07:06:00 rubikitch > anything-kyr(condition-command)が発動する条件がたくさん出てきたら、それはもはやAIになるのか?どうあれ、次に実行すべきコマンドをお知らせしてくれるシステムはあるとすごい助かる。 by るびきち@日刊Emacs from twmode [Emacs on Debian]
  • 2014/10/15 07:03:29 rubikitch > anything-kyr.elを再設計するとなったら、名前も変えるべきよね。condition-command.elあたりだろうか。モードラインでお知らせし、helm/anything/menuのインターフェースで適切なコマンド・orgリンクを提示するやつ。 by るびきち@日刊Emacs from twmode [Emacs on Debian]
  • 2014/10/15 01:41:18 rubikitch > anything-kyrの条件強化+ドキュメント参照コマンド量産計画。ドキュメント参照コマンドはorgのリンクを呼び出す org-open-link-from-string経由がよさげ。
    たとえばRubyでNokogiriでxpathを記述するときにxpathの参考資料出すとか。 by るびきち@日刊Emacs from twmode [Emacs on Debian]
  • 2014/10/14 21:32:50 rubikitch > anything-kyrをhelmに移植するとしたら、helm-M-xと合わせるのがちょうどいい落とし所だろう。となると helm-M-x-transformer を書き換えてkyrに対応させればいけそうだ。時間がないので興味ある誰かさんに任せよう。 by るびきち@日刊Emacs from twmode [Emacs on Debian]
  • 2014/10/14 21:25:22 rubikitch > 他にもtrace-functionのアドバイスがかけられている関数があるならば、untrace-allやuntrace-functionを提示するとかね。
    TWにブログURL出すのも…
    条件をすらすら書けるelisp力があればいくらでも強化できるのがanything-kyr.el by るびきち@日刊Emacs from twmode [Emacs on Debian]
  • 2014/10/14 21:21:48 rubikitch > ここ数日company.elと格闘していたのだが、時間効率考えたらanything-kyr.elの条件設定+条件限定コマンドを定義してる方がいいことに気付いた。例えばorg-babelのパラメータの使い方ならば、begin_src行という条件設定に対し、infoを開くコマンド定義 by るびきち@日刊Emacs from twmode [Emacs on Debian]
  • 2014/10/14 21:17:45 rubikitch > てゆーかanythingは情報源を組み合わせて統合させるのが主眼だったのにhelmになったら単一情報源によるコマンドがやたらめったら定義されている…情報源を組み合わせてオレオレhelmを構築すべきでしょ。集中と分散で歴史は繰り返すのだろうか。#Emacs by るびきち@日刊Emacs from twmode [Emacs on Debian]
  • 2014/10/14 21:14:15 rubikitch > smart-mode-lineでの設定例:

(setq sml/pos-id-separator ‘(” ” (:eval (when (and (featurep ‘anything-kyr) (anything-kyr-should-notify-p)) “◎”)))) by るびきち@日刊Emacs from twmode [Emacs on Debian]

  • 2014/10/14 21:13:00 rubikitch > anything-kyr.el…使っている人は多分いないと思うけど、条件が整ったときにコマンドをanythingで提示してくれるやつ。
    せっかく作ったコマンドを忘れないようにするために昔作ったけどいまだ現役。
    元々ある機能しか使ってないから置換するだけでhelmでも動くかと。 by るびきち@日刊Emacs from twmode [Emacs on Debian]
  • 2014/10/14 21:08:45 rubikitch > もう忘れられてると思うが5年半ぶりに更新!anything-kyr-should-notify-p でコマンドを提示してくれるか否かを判定。モードラインに表示するといい #Emacs (install-elisp-from-emacswiki “anything-kyr.el”) by るびきち@日刊Emacs from twmode [Emacs on Debian]

タグ

2014/10/15 | コメント/トラックバック(0) |

カテゴリー:Emacs org-mode

このページの先頭へ