今まで何の説明も無しに自分のアプリで使ってきた謎ライブラリ concurrent.el ですが、一区切りが付いた気がしましたのでリリースしたいと思います。 この記事では concurrent.el の基盤である deferred.el について簡単に紹介して、 concurrent.el の機能と適用例を紹介します。 あらすじ deferred.el復習 concurrent.el紹介 機能一覧、コード例 cacoo.elでの設計解説 deferred.el 紹介 deferred.el の詳しい使い方やAPIなどはREADMEの文書がまとまっていますので、手っ取り早く使いたい人はそちらを参照してみてください。 おそらく、他の言語でDeferredに慣れていればすぐに使えるのではないかと思います。 deferred.el リリース - 技術日記@kiwanami (リリース記事:慣性スクロ
関西Emacsで発表したデモです。 まず、「FPS」は CoD MW のようなシューティングとかではなくて(それは是非やりたかったのですが)、一人称散歩(First Person Sanpo)プログラムです。FPSは釣りです。ごめんなさい。 (2011/05/06 追記: Vimにも出来てました!! 3D in Vim — KaoriYa) 動作風景 所詮テキストエディタのやることですので、期待せず、生暖かい目で見てください。 一人用のムービー バッファで描いた迷路を歩きます マルチプレーヤーのムービー Emacsでサーバーを起動して、3つのEmacsから接続します。あとでtelnetで直接接続してチートします。 動かし方:シングルプレーヤー 必要な物: 64bit版Emacs23.x 22でも動くかも知れません 32bitだと整数桁あふれするそうです banner 文字のビットマップを取
元ネタ vc-annotate and jump to a specific line - emacs-devel@gnu.org 行単位で誰がいつ編集したかを調べられる git annotate, svn annotate などを emacs から統一的に扱うのが vc-annotate() 。 その画面から、元ファイルへ移動するのが、以下の vc-annotate-goto-line()。 emacs-devel だけあって(?)、渋いコマンドが紹介されています。RET に割り当ててみました。 (defun vc-annotate-goto-line () (interactive) (unless (eq major-mode 'vc-annotate-mode) (error "vc-annotate-goto-line must be used on a VC-Annotate
連休はEmacs Lispに始まり,Emacs Lispに終わりそう. PerlにおけるStorable,RubyにおけるMarshal,PythonにおけるPickleのようなデータ構造をそのままダンプする仕組みが欲しいというときにはLispは便利.S式をそのまま読み書きすればよい.(S式のバイナリダンプではないので,YAMLと言った方が正確) S式の便利なところはデータ構造 = 記号であること.そのまま出力すればよい. とりあえず,適当にデータとそれを保存する関数と読み込む関数を作ってみる. (setq data '(((name . "hoge") (id . 10)) ((name . "fuga") (id . 11)))) (defun save-data (filename) (interactive "sInput filename: ") (with-temp-buffe
highlight-indentation by AntonJohansson is a function made to show vertical guide lines of indentation levels (spaces only). The code is available at:https://github.com/antonj/Highlight-Indentation-for-Emacs/ UsageAppearance of guidelines is customizable by changing the face ‘highlight-indent-face’. By default, ‘highlight-indent-face’ inherits from ‘fringe’, which in most color-themes has an unobt
cacoo.el を更新しました。 参考:初回リリース記事 Emacsでスムーズに図形編集ができるようになるcacoo.elを作ってみた - 技術日記@kiwanami 表向きは Anything で Cacoo の絵が選べるようになったぐらいですが、内部的にはかなり別物になりました。非同期処理を deferred.el と concurrent.el でほぼ全面書き直ししました。その結果、キャッシュ画像の扱いが賢くなり、動作速度の向上や信頼性などが向上しています。 動かした方が分かりやすいと思いますのでムービーを作ってみました。 ムービー内容:画像を一気に表示、Anythingで選択、プレビュー表示、migemo検索・絞り込み、文書へ貼り付け、サイズ調整 cacoo.elの説明については、github上のREADMEファイルに詳しく書いていますので、ぜひそちらも参照してください。 インス
savekill.elをリリースしました。 動機 最近、なぜかよくわかりませんが、Emacsが突然死することありますよね? あまり使いこんでない人はあまり経験がないかもしれませんが、ヘビーユーザーにとっては日常茶飯事です。 不安定すぎて落ちまくるほどではないですが、僕のところでは数日に1回のペースで落ちてしまいます。 Emacs以外を使っていると、ソフトウェアの突然死の恐怖はよくわかると思います。 「保存してなくて、今までの作業がパーになった!」 誰もが一度はそんな経験があるでしょう。 もちろん、そこは我等がEmacs、ちゃんと防衛線は張っています。 Emacsには自動セーブ機能があり、一定時間以上保存していないと、一時ファイルに保存する仕組みになっています。 そのため、Emacsが落ちたとしても、当該ファイルに対し M-x recover-file を実行すれば、ほとんどの作業を取り戻す
id-manager.elを更新しました。あと、ちゃんと紹介記事を書いてなかったのでまじめに書きました。 以前の記事:2009/09/14 id-manager.el 何か 世の中にあふれるIDとパスワードを管理するものです。 例によって類似品がたくさんあります。有名なものを列挙すると以下のような感じでしょうか。 パスワード管理ソフト ID Manager フリー。Windows上の定番? パスワード管理、デジタルウォレット、パスワード生成 | ロボフォーム 商用。メーカー製PCにプリインストールされていることがある GNOME Keyring GNOMEの標準鍵管理ツール 本家:Projects/GnomeKeyring - GNOME Wiki! 参考:gnome-keyring を利用してコマンドライン上のパスワードを置換する - daily dayflower その他 最強のパスワ
id-manager.el にて Emacs の widget を使ってみました。その感想などです。 widgetとは widgetはEmacs上でダイアログのようなUIを作るライブラリです。CustomizeなどのUIがこれで出来ています。 最近のEmacs(少なくともEmacs23)には標準で入っています。 widgetの例(Infoのサンプル) どこが良いか 複数の入力項目をユーザーに要求するような場合、widgetを使うことで非常に分かりやすいUIになることが多いです。 grepのUIで具体的に比べてみます。lgrepとezgrepという、Emacsからgrepするプログラムがあります。 参考 lgrep Emacsの検索機能を使いこなす(菅原泰樹) — ありえるえりあ ezgrep http://www.geocities.jp/km_pp1/ezgrep/html/ezgrep
久々のEmacsネタ。 歴史は繰り返すものです。 今はブラウザでなんでもできてしまう時代、かつてのEmacsを彷彿とさせます。 だが、ブラウザがEmacsに決定的に劣っているのは、『速さが足りない』ことだと思ってます。 フレーム、フラッシュなどマウス前提のIFなので、素早い動作が難しいです。 対して、Emacsはテキスト入力のスペシャリスト。 テキスト入力が関わる場面があれば、そこに必ずEmacsの活躍があります。 dabbrev、yasnippetなど、入力に不可欠なツールが無数に存在するからです。 さてさて… 2年前に書いた記事 では、外部コマンドやloopを使ってEmacsで連番を入力する方法を紹介しました。 しかし、めんどいですね。 なので、Emacs Lispで書きました。 M-x duplicate-this-line-forward 直前の行をコピーする直前の行と同じ行を作成
rgrep という emacs から指定したディレクトリ以下に対して grep する機能がある。M-x rgrep で実行可能。だけど一度 rgrep して *grep* バッファを削除していない場合、次に rgrep しようとしたときに "rgrep: Buffer is read-only: #<buffer *grep*>" といわれ実行できない。以前その対策をしたことがある。 *grep* バッファがあれば、M-x rgrep したときにそれを削除する処理をはさむというもの。 *grep* バッファがあっても rgrep する - わからん grep-a-lot.el はこれとは違い、*grep* バッファをどんどん増やしていくというアプローチ。 rubikitch さんの本で紹介されていた。 http://www.emacswiki.org/emacs/grep-a-lot.el
ケータイサイトではカタカナを半角で表示するのが慣習ですが、ぼくはこの変換をしょっちゅう忘れてしまいます。カタカナの書き直しのためだけにデプロイし直すのはなんともむなしいです。 そんなむなしさを解消するためにカタカナを半角カタカナに変換するelispを書きました。 最初から入っている japanese-hankaku-region を使ってカタカナを変換しています。japanese-hankaku-region はひらがなも半角カタカナに変換してしまうため、一度カタカナの文字列を検索してそれらを対象に処理をおこなうようにしています。 ファイル保存時に ktai-hankaku-katakana-buffer を実行すれば、変換し忘れミスはなくなるはずです。 今回初めてまともに elisp を書いたんですが、そもそもバッファの文字列を読み取る方法がわからなかったり、デバッグ方法がわからなかった
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く