タグ

ブックマーク / rubikitch.hatenadiary.org (53)

  • Yokohama.vimへ行ってきました! - http://rubikitch.com/に移転しました

    24日、Yokohama.vim #1へ行ってきました。 Yokohama.vim #1 を開催しました - Guyon Diary 意外なことに、これが勉強会初参加です。 しかも、自分のフィールドであるEmacsやRubyではなくて、アウェイなVimの勉強会。 いろいろ事故ってしまい、遅刻してしまいました。当にごめんなさい。 それにしても、みんなノートパソコンを持ってきていて、僕は持っていないので肩身が狭かったです。 そのうち安価なネットブックを手に入れたいところです。 感想はみんな書いているし、多忙なので、僕はやや短めで(笑) テーブルシャッフルVimLevelにあわせてテーブルシャッフルを行いました。 VimLevelの順番に後ろにみんなが並ぶのです。 こーゆーのは初体験で意外におもしろかったです。 高レベルの人はとても少なく、初心者・初級者が多かったです。 僕はhjklとかiax

    Yokohama.vimへ行ってきました! - http://rubikitch.com/に移転しました
    joan9
    joan9 2011/04/30
  • savekill.elリリース - Emacsの突然死に備えて - http://rubikitch.com/に移転しました

    savekill.elをリリースしました。 動機 最近、なぜかよくわかりませんが、Emacsが突然死することありますよね? あまり使いこんでない人はあまり経験がないかもしれませんが、ヘビーユーザーにとっては日常茶飯事です。 不安定すぎて落ちまくるほどではないですが、僕のところでは数日に1回のペースで落ちてしまいます。 Emacs以外を使っていると、ソフトウェアの突然死の恐怖はよくわかると思います。 「保存してなくて、今までの作業がパーになった!」 誰もが一度はそんな経験があるでしょう。 もちろん、そこは我等がEmacs、ちゃんと防衛線は張っています。 Emacsには自動セーブ機能があり、一定時間以上保存していないと、一時ファイルに保存する仕組みになっています。 そのため、Emacsが落ちたとしても、当該ファイルに対し M-x recover-file を実行すれば、ほとんどの作業を取り戻す

    savekill.elリリース - Emacsの突然死に備えて - http://rubikitch.com/に移転しました
    joan9
    joan9 2011/02/28
  • 続・Emacsで連番を挿入する方法 - http://rubikitch.com/に移転しました

    久々のEmacsネタ。 歴史は繰り返すものです。 今はブラウザでなんでもできてしまう時代、かつてのEmacsを彷彿とさせます。 だが、ブラウザがEmacsに決定的に劣っているのは、『速さが足りない』ことだと思ってます。 フレーム、フラッシュなどマウス前提のIFなので、素早い動作が難しいです。 対して、Emacsはテキスト入力のスペシャリスト。 テキスト入力が関わる場面があれば、そこに必ずEmacsの活躍があります。 dabbrev、yasnippetなど、入力に不可欠なツールが無数に存在するからです。 さてさて… 2年前に書いた記事 では、外部コマンドやloopを使ってEmacsで連番を入力する方法を紹介しました。 しかし、めんどいですね。 なので、Emacs Lispで書きました。 M-x duplicate-this-line-forward 直前の行をコピーする直前の行と同じ行を作成

    続・Emacsで連番を挿入する方法 - http://rubikitch.com/に移転しました
    joan9
    joan9 2011/02/21
  • yasnippet.elを256倍にパワーアップ!連続展開と条件分岐テンプレートを使おう - http://rubikitch.com/に移転しました

    動機yasnippetの展開機能はなかなか強力ですが、「次の」テンプレート展開の準備や条件分岐ができない弱点があります。 連続展開の例は、プログラミングにおけるドメイン特化言語を記述する場合です。 この場合は、パターンが決まっているので、次のテンプレート展開の準備をするテンプレートを記述すればすんなり記述できるのです。 そして、テンプレート展開後に、次のテンプレートを展開していきます。 条件分岐テンプレートの例は、新規ファイル作成時に文章のテンプレートを選んで展開するケースです。 僕のブログの場合、「自作Emacs Lispリリーステンプレート」、「Emacs Lispを使ってみたテンプレート」、「EmacsのTipsテンプレート」などがあります。 記憶力のいい人ならば、テンプレート名を覚えて普通に展開すると思います。 僕の場合はテンプレート名はおろか、テンプレートを作ったこと自体忘れてし

    yasnippet.elを256倍にパワーアップ!連続展開と条件分岐テンプレートを使おう - http://rubikitch.com/に移転しました
  • el-get.elでEmacs Lispパッケージをインストール・アップグレードする - http://rubikitch.com/に移転しました

    Emacs Advent Calendar jp: 2010 の9日目の記事です。 去年のauto-install.el に引き続き、今年もインストーラの紹介です。 昨日は id:yaotti さん(anything関数を好きな言語で実装できるanything-with-everything.el (Emacs Advent Calendar 2010 8日目) - yaotti's diary)でした。 anything-with-everything.elは以前から作ろうと思っていたら先越されてしまいました。 明日は id:handlename さんです。 つい最近になって、Emacs Lispのインストールを管理するel-get.elが登場しました。 Emacs Lispのインストールといえば、auto-install.elやその前身のinstall-elisp.elがあります。 し

    el-get.elでEmacs Lispパッケージをインストール・アップグレードする - http://rubikitch.com/に移転しました
  • emacs-init-check.el 〜Emacsが立ち上がるときのエラーを自動的に防ぐ方法〜 - http://rubikitch.com/に移転しました

    .emacs で設定ミスって素の emacs が立ち上がったときの無力感は異常 というのは激しく同意です。 僕の場合、少し違ったアプローチをとっています。 それは、Emacsのバッチモードで ~/.emacs を読み込ませ、エラーがでないかチェックすることです。 そのためのコマンドラインは「emacs -batch --eval '(setq debug-on-error t)' -l ~/.emacs」となります。 ちなみに、 ~/.emacs.el が存在するときは、そちらが読み込まれます。 もし、エラーが起きたのであれば、バックトレースが出て異常終了します。 適切なタイミングでこのチェックを自動で行うようにすると、この問題を解決できます。 これを実現するために、emacs-init-check.elを作りました。 チェックしてエラーがでない場合は「emacs-init-check e

    emacs-init-check.el 〜Emacsが立ち上がるときのエラーを自動的に防ぐ方法〜 - http://rubikitch.com/に移転しました
    joan9
    joan9 2010/12/01
    あとでやる
  • anything.elプログラマ向け最新情報 - http://rubikitch.com/に移転しました

    Emacsを書きました】 anything.elフレームワークは徐々に進化しています。 ユーザーとして使いやすくする一方、より簡単にプログラミングできるように改良しています。 なるべく非互換性を導入しないように特に気をつけています。 初期に作られた情報源も動くはずです。 動かない場合はanything.elのバグの可能性があります。 anything関数とキーワード引数anything関数がキーワード引数を受け付けるようになりました。 これにより、可読性が上がります。 おそらく一番目立つ最新機能でしょう。 もちろん、通常の引数も使えるので、お好きな方をどうぞ。 基キーワードanything関数の通常の引数に対応するキーワードは以下の通りです。 :sources情報源 :input最初の入力パターン :promptプロンプト :resumetのとき、直前のanythingセッションを復

    anything.elプログラマ向け最新情報 - http://rubikitch.com/に移転しました
  • Emacsで連番を挿入する方法 - http://rubikitch.com/に移転しました

    連番テキストを生成する機会というのはけっこうあると思う。Emacsにおいて連番を入力する方法を考える。シェルコマンドを使う方法は他のエディタにも応用できる。 ここでは3つの連番だが、多くなっても対応できる方法を挙げる。 (1)〜(3)を入力する (1) (2) (3) (require 'cl)した状態でloopマクロを使う。loopマクロはいろいろなループを表現する強力なLispマクロだ。書式が複雑化しても対応できる。 M-: (loop for i from 1 to 3 do (insert (format "(%d)\n" i))) シェルコマンドのseqコマンドとprintfコマンドを使う。seqコマンドで1〜3を各行に出力する。printfコマンドで引数を多く与えた場合は書式文字列が再利用される性質を利用している。zshの場合は後者も使える。 C-u M-! printf '(

    Emacsで連番を挿入する方法 - http://rubikitch.com/に移転しました
  • 『Emacsテクニックバイブル 〜作業効率をカイゼンする200の技〜』正誤 - http://rubikitch.com/に移転しました

    このたびは拙著 『Emacsテクニックバイブル 〜作業効率をカイゼンする200の技〜』 をお買上ありがとうございます。 書には万全を期していますが、残念ながらいくつか誤りがありました。 申し訳ありません。 新たな誤植が見付かり次第、このページは更新されます。 p53 2.4 sticky.el 〜大文字入力を楽にする〜 .emacsに加える設定 ================================================================ 誤 require 'sticky) 正 (require 'sticky) ================================================================p167 8.1 col-highlight.el 〜現在桁をハイライトする〜 インストール方法 ========

    『Emacsテクニックバイブル 〜作業効率をカイゼンする200の技〜』正誤 - http://rubikitch.com/に移転しました
  • anything導入のeverything 〜3分で使えるanything.el〜 - http://rubikitch.com/に移転しました

    Emacsを書きました】 anything.elは難しいという印象を持っている人がいるようです。 おそらく、導入しにくいのが原因ではないでしょうか。 anything.elを導入するには、変数anything-sourcesを設定する必要がありました。 しかし、これはもはや過去の話です。 Web検索というのは、ときおり古い情報にひっかかることがあります。 情報は鮮度が命です。 世界は刻一刻と変化しています。 正しい情報を得るには、一次情報に当たるのが最短距離です。 anything.elの一次情報は、開発者である僕のブログの最新記事が一次情報になります。 anything.elを検索したところ、古い情報にひっかあり、惑わされ、それでanything.elは難しいという印象を持たれるのは開発者として意ではありません。 auto-install.elを導入するインターネットにあるLisp

  • (rubikitch loves (Emacs Ruby CUI))

    みなさん、楽しくEmacsしていますか? この度、技術評論社より『Emacsテクニックバイブル 〜作業効率をカイゼンする200の技〜』を発刊することになりました。 Emacsには無数のコマンド、操作方法、Lispプログラム、設定があって、ムズカシイし、ややこしいですね。 あなたもきっと、そんな印象を持っているかと思います。 Emacsは現在、新しい時代へ向かっています。 Emacsは歴史のあるソフトウェアですが、ここ数年で多くの先進的なLispプログラムが登場してきました。 書は次世代Emacsのありかたについてあなたにお伝えするものです。 書をマスターすれば、Emacsの便利さを再発見し、Emacsユーザの最先端を走ることができます。 <2010-07-17 土> Update: 目次を公開しました <2010-08-10 火> Update: 正誤表 筆者とEmacs書の内容に入

    (rubikitch loves (Emacs Ruby CUI))
    joan9
    joan9 2010/07/17
  • テスト駆動開発支援のtest-case-mode.elを使ってみた - http://rubikitch.com/に移転しました

    今更感はあるが、最近テスト駆動開発支援Emacs Lispのtest-case-mode.elが発表された。 http://nschum.de/src/emacs/test-case-mode/ M-x auto-install-batch test-case-mode でインストール。 こんな感じ。 テスト成功のグリーン、失敗のレッドなどの信号をモードラインに表示させる バッファが変更されたら信号も対応して変わる テストを実行して、失敗したら、その行へM-x next-errorとM-x previous-errorで飛べる assert関数群に色がつく JUnit, CxxTest, CppUnit, Python(PyUnit), Ruby (test/unit)に対応 テストコードを自動判別して、テストコードならばtest-unit-modeを有効にする 設定 以下の.emacsに

  • auto-async-byte-compile.elリリース - バイトコンパイル問題の終焉 - http://rubikitch.com/に移転しました

    自動バイトコンパイルを行う auto-async-byte-compile.el をリリースしました。以前のバージョンではRubyが必要でしたが、auto-async-byte-compile.elはEmacs Lispで完結しています。 リンク先のbyte-compileスクリプトも持っておくとコマンドラインからload-pathを気にせずにバイトコンパイルできます。 その発想はなかった! 新しい自動バイトコンパイルでEmacsを高速化する - http://rubikitch.com/に移転しましたより。 Emacs Lispをバイトコンパイルすると動作が高速化するのは常識である。しかし、バイトコンパイルには致命的な欠点があって、Lispファイルの方がバイトコンパイルファイルよりも新しい場合は、古いバイトコンパイルファイルが読み込まれてしまうのだ!!そのため、Lispファイルを更新した

    auto-async-byte-compile.elリリース - バイトコンパイル問題の終焉 - http://rubikitch.com/に移転しました
    joan9
    joan9 2010/04/29
    あとでやる
  • 4時間睡眠で活動時間を増やすステップ - http://rubikitch.com/に移転しました

    お久しぶりです。気付けば1ヶ月半のブログを書いていませんでした。その間、anything.elをせっせと開発していました。多数のバグを直し、機能向上をしていました。その様子はtwitter:rubikitchにてつぶやいています。 今日はいつものテーマとは違った記事を書きます。 時間が欲しい とにかく、現代人は時間が足りない、いくらあっても足りないです。誰もが「時間がないからできない」と言うことでしょう。 しかし、時間は捻出するものです。時間を有効に使うのです。「時間がない」は言い訳です。そのことを学んでから、自分の生産性は何倍にも伸びたように感じました。 生活の規律をつくる 一番大切なのは、生活に規律を作ることです。生活の規律とは、特定の時間にある行動をすることを習慣化することです。技術的な例えでは、自分自身というOSにcronを仕組むことです(笑) 実際に特定の時間にある行動をすること

    4時間睡眠で活動時間を増やすステップ - http://rubikitch.com/に移転しました
    joan9
    joan9 2010/04/20
  • Emacs Lisp Expectationsで超簡単ユニットテスト in elisp - http://rubikitch.com/に移転しました

    elispにもRubyのexpectationsのような美しく記述できるテスティングフレームワークが欲しい - http://rubikitch.com/に移転しました expectationsに激萌えの俺がさくっと作ったよ、expectations for elisp。expectations.elじゃ検索しづらいと思ってel-expectations.elにしといた。 こんな文法でテストが書ける。体の評価結果が期待値とマッチすればテストが通る。家expectationsにない機能として「desc」でコメントが書けること。ただし、たんなるデリミタなのでテスト名ではないw (expectations (desc コメント) (expect 期待値 体) (expect ...) ... ) 具体的なコードはこんなの。 (expectations (desc "simple expec

    Emacs Lisp Expectationsで超簡単ユニットテスト in elisp - http://rubikitch.com/に移転しました
  • text-translator.elで英語・日本語を自動判別しつつすべての翻訳エンジンで検索するパッチ - http://rubikitch.com/に移転しました

    久々にtext-translator.elをアップデートしたら、いろいろ便利機能が追加されていた。とりわけこの2つは強力だ。 text-trantext-translator-allで登録されている全部の翻訳エンジンで翻訳する text-translator-translate-by-auto-selectionで英語・日語を自動判別して適切な翻訳エンジンを使う しかし、この2つが両立していないところが不便だ。text-trantext-translator-allを使おうにも、毎回「enja」だの「jaen」だの打たないといけないのは至極面倒だ。せっかく英語・日語自動判別機能があるなら、使わない手はない。というわけでパッチ。 あ、インストールはauto-install.elからM-x auto-install-batch text translatorでできるよ!auto-insta

    joan9
    joan9 2010/04/03
    あとでやる
  • そろそろEmacsのウィンドウについて一言いっとくか - http://rubikitch.com/に移転しました

    Emacsはひとつの窓(ふつうの意味の「ウィンドウ」、Emacs用語の「フレーム」)の中に複数の表示領域(Emacs用語の「ウィンドウ」)を持つことができる。そして、ヘルプ等を表示させる場合はEmacsが勝手に画面を分割して別のウィンドウに表示させる。まぁ、Emacsを使ってるならみんな経験してることだ。 ワイドディスプレイが台頭する中、フレームの横幅はどんどん長くなっている。Emacs22までだと強制的に上下分割されてとても使いづらかった。Emacs23になったら横幅にあわせて、上下分割か左右分割か判断してくれるようになった。横幅が広いと左右分割してくれる。表示行数が減らないのでこれは嬉しい。画面の有効活用だ。 Emacs22で左右分割させたいならば、M-x install-elisp-from-emacswiki display-buffer-for-wide-screen.elしてく

    そろそろEmacsのウィンドウについて一言いっとくか - http://rubikitch.com/に移転しました
  • その発想はなかった! 新しい自動バイトコンパイルでEmacsを高速化する - (rubikitch loves (Emacs Ruby CUI))

    Emacs Lispをバイトコンパイルすると動作が高速化するのは常識である。しかし、バイトコンパイルには致命的な欠点があって、Lispファイルの方がバイトコンパイルファイルよりも新しい場合は、古いバイトコンパイルファイルが読み込まれてしまうのだ!!そのため、Lispファイルを更新したらバイトコンパイルしておかないといけない。 このどうしようもない仕様をなんとかするべく、自動バイトコンパイルで自衛をしている人はけっこういると思う。というか、自動バイトコンパイルがないと絶対に泥沼にはまってしまう。 自動バイトコンパイルとは、Lispファイルを保存したときに after-save-hook をつかって自動でバイトコンパイルをするというもの。しかし、これだとバイトコンパイル中は待たされてしまう。シングルスレッドの悲劇。 Emacsで同時に複数の処理を実行するには、タイマーを使うか、外部プロセスに任

    その発想はなかった! 新しい自動バイトコンパイルでEmacsを高速化する - (rubikitch loves (Emacs Ruby CUI))
    joan9
    joan9 2010/03/31
    あとでやる
  • 人は俺を「recentfマスター」と呼ぶ - http://rubikitch.com/に移転しました

    Emacsを使ってるみんな、recentfというパッケージを知っているかい? 「最近使ったファイル」を上から順に並べていってすぐに切り換えられるようにするヤツだ。最近使ったものを一番上の見易い位置に置いておくのは超整理法の手法で、すこぶる便利だ。知らない人はすぐに使おう。 ただ、デフォルトのrecentfのインターフェースはどうしようもなく使いづらい。ダイアログとかごちゃごちゃになってるし。たかだか超整理法の実装に1360行もあるってどういうことなの?そのまま使っていても、いまいち便利さに気付かないかもしれない。こんなのは空気のようなツールであるべきで、使い方を覚えるようなものではない。 anything.elから最近使ったファイルにアクセスする そこで、anything.elの出番だ。auto-install.elを使って M-x auto-install-batch anything

  • yasnippetで同じパターンを連続入力する - http://rubikitch.com/に移転しました

    [2009/12/15]0.7.0に対応 id:hack-3 さん情報ありがとうございます。yasnippet-config.el (M-x install-elisp-from-emacswiki yasnippet-config.el) にはすでに対応してあるので更新は不要。 ぬぅ、半月以上あけてしまった。 Emacs界で定型文入力といえばyasnippet.elは有名だ。 しかし、同じパターンを数回だけ入力するのにわざわざsnippetを定義するのは面倒だ。 内部的にスニペット展開に使われている yas/expand-snippet をうまく活用すると、こういう場合でも楽に入力できる。 そこで、一度きりのスニペットを定義して、すかさず実行、繰り返し実行ができるようにしてみた。 (require 'yasnippet) (defvar yas/oneshot-snippet nil)

    yasnippetで同じパターンを連続入力する - http://rubikitch.com/に移転しました