2009-01-01から1年間の記事一覧

auto-completeに関数と変数の情報源を追加

ac-source-symbolsは大雑把すぎるので、もう少し細かく制御できる情報源を追加しました。一つは関数をオムニ補完するac-source-functionsという情報源で、もう一つは変数を補完するac-source-variablesという情報源です。ac-source-functionsは(の直後のシン…

popup.elによるポップアップメニュー、カスケードポップアップメニュー、ツールチップの実現

さまざまな現代的なインターフェースを実現できるようpulldown.elを大幅に拡張しました。それに伴って抽象度も上がったため、pulldown.elという名前は少し内容にそぐわなくなりました。そこでpulldown.elあらためpopup.elという名前で開発を続けていくことに…

指定したポイントにうまくツールチップを表示できない

x-show-tip関数を使えばマウスカーソルからの任意の相対位置にツールチップを表示できますが、あくまでマウスカーソルと併用することを前提とされているため、きわめてありえるケース、つまりバッファ上の論理的なポイント付近にツールチップを表示すること…

scratchバッファで不用意に評価されないようにする

scratchバッファの存在意義であるC-j(カーソルの直前にあるS式を評価して出力)ですが、関数定義中などでは一時的に通常の動作(改行+インデント)に戻ってほしいことがあります。次のコードを評価すると、まさにその挙動を手に入れることができます。 (de…

auto-completeに大文字小文字を区別しないオプションを追加しました

ac-ignore-case変数をtあるいはsmartにすることにより、大文字小文字を区別せずに補完できるようになりました。デフォルトはnilです。ac-ignore-case変数をtにすると、無条件に大文字小文字を区別しなくなります。smartにすると、プリフィックス(補完中文字…

loopマクロのcollect節でintoを使うと非常に遅い

loopマクロでcollect節と一緒にintoを使うと演算コストが非常に大きくなるという話。原因を探るためにintoなしとintoありのloopマクロをmacroexpandで展開してpretty-printしてみます。どちらの演算式も返す値は同じになります。 ;; intoなし (pp (macroexpa…

auto-complete 1.0をリリースしました

微妙に政治的な理由によりauto-complete 1.0を今日リリースしました。次のURLから入手できます。http://cx4a.org/pub/auto-complete-1.0.tar.bz2開発リポジトリからv1.0タグをチェックアウトするのもありです。 $ git clone git://github.com/m2ym/auto-comp…

同じメジャーモードのバッファ内の単語を補完する

あるユーザーからの要望で、同じメジャーモードのバッファ内の単語を補完するauto-complete用のソースを追加しました。今までは現在のバッファ内の単語を補完するac-source-words-in-bufferと、全てのバッファ内の単語を単語を補完するac-source-words-in-al…

auto-completeでファイル名補完

現在、auto-complete 1.0のリリースに向けてバグの修正やテスト、仕様の確定作業を行っています。中途半端に実装された機能は、今度ちゃんと実装することを念頭に置いて、ひとまずソースコードからは削除しています。オムニ補完機能によるファイル名補完機能…

汎用プルダウンメニューインターフェースライブラリpulldown.el

汎用のプルダウンメニューインターフェースライブラリpulldown.elをリリースしました。このライブラリはauto-complete.elからメニュー表示ルーチンを抜き出して独立させたものです。今のところauto-complete.elのリポジトリで開発しています。利用するにはau…

ヒューリスティックな型推論

もはや型推論と呼べないことは承知ですが、あえてメモしておきます。主に補完目的の話です。Rubyなどの動的言語ではevalやsendを使うことで、簡単に型推論できない状況を作り出すことができます。そのような状況では当然、精度の良い補完を提供できません。…

Rubyコード補完進捗報告2

前回からもう少し進めてみました。前回と比べて内部的な改良はあまり進んでいませんが、標準クラスのFileとStringの補完情報を定義したことにより、上のスクリーンショットのように(超部分的に)かなり良い精度で補完できるようになってきました。動画を撮る…

Rubyコード補完進捗報告1

ここ二週間ほど、集中して取り組んだおかげで、一応それっぽく動くようになりました。問題は山積みで実用などは遥か遠い未来の話ですが、ちょっと嬉しかったので報告です。次のスクリーンショットを見てください。なんの変哲のない補完に見えますが、よく見…

Rubyにおけるコード補完の考察

実験的ではあるにせよ、現状ではRubyのコード補完はid:rubikitchさんのrcodetoolsでなんとか対応できています。が、次のような(大きな)問題をかかえています。ちなみにここでいうrcodetoolsの問題というのは補完機能のことで、xmpfilterとかは全然関係ないこ…

auto-completeで特定の単語で補完を消す方法

元ネタ: id:kitokitoki:20090819要するに

「tokyo-emacs#x02の個人的レポート」を書きました

会社のブログに書きました。tokyo-emacs#x02の個人的レポート

navi2chの環境を複数のマシンで同期して使う

使いやすい2chビューアを求めて、p2とか試してみたんですが、やっぱりキーボードで操作できるnavi2chが一番使いやすい気がします。ただ、複数のマシンからnavi2chを使うと既読スレなどの情報が同期されないため、ちょっと不便です。はじめはsshfsを使ってリ…

query-replaceのクエリ入力中に置換対象をハイライトする

前々から思ってたんですが、query-replaceやquery-replace-regexpでクエリ入力中に置換対象がハイライトされると便利だと思いませんか?re-builderなどで作った正規表現をコピペしてもよいのですが、id:a666666:20090715みたいな問題が出てきてしまうので、や…

貪欲なlooking-back関数

通常、後方へのびる正規表現マッチでは極力マッチしないようにに動作します。そのため\\sw+などで単語を拾おうとしても最後の一文字だけ拾われてしまいます。looking-back関数の第三引数にはgreedyというオプションが用意されており、これをtにしてやると後…

任意のモードで表を整形する

表の整形はalign-regexpなんて使う必要ない事が発覚しました。もっと綺麗かつ簡単に整形する方法があります。例えば次のような整形前の表があるとします。 |コマンド|説明|キーバインド| |mark-word|カーソル前方の単語をリージョン選択する|M-@| |mark-sexp…

閉じたファイルのアンドゥ履歴を復活するundohist.el

閉じたファイルのアンドゥ履歴を自動的に復活するundohist.elという拡張を作りました。次のURLから取得できます。http://cx4a.org/pub/undohist.el使うには次のコードを.emacsに書いておいてください。 (require 'undohist) (undohist-initialize) この拡張…

auto-completeのインライン補完対応(実用可能版)

前回紹介したauto-completeの新機能、インライン補完が大体動くようになったので公開します。http://cx4a.org/pub/auto-complete.el主な機能は以下のようになります。 候補が一つの場合に直感的に補完できる 共通部分をTABで補完できる 今のところ拡張によっ…

auto-completeのインライン補完対応

auto-completeのインライン補完対応をちょっぴりやってみた。将来的にはミニバッファでのファイル名の補完なんかに対応する予定。次のURLの実験版auto-complete.elをインストールして、http://cx4a.org/pub/auto-complete.el (setq ac-style 'inline) を評価…

Emacs の Git リポジトリ

Savannah Git Hosting - emacs.git/summaryCVS ヤダっていう人はこのリポジトリを使ってハックするといいかも。

はてなダイアリーに移行

Movable Type が超絶使いにくいのではてなダイアリーに移行した。今後は主にここでネタを投下していく予定。http://cx4a.org/