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

gaucheの補完をanythingから使えるようにしてみた

symbol名の補完 inferior-gauche-modeでは以下の点が不満でした。 scheme-other-window*1で立ち上がったreplとも通信できない anythingで候補を選択できない*2 inferior-gauche-modeではcompleting-readを利用して候補を選択する replと通信する scheme-othe…

putがウザくなってきたのでマクロを書く。

(require 'cl) (defmacro set-put (progname edit-list) "edit-list = ((<value> . (sym ...)) ...)" `(progn ,@(loop for (depth sym-list) in edit-list nconc (loop for sym in sym-list collect `(put (quote ,sym) ,progname ,depth))))) (set-put 'scheme-ind</value>…

faceの情報取得

emacsの色の設定などを変更したかったので、カーソル位置の文字のfaceの情報を取得したかった。 現在位置のfaceは以下のようにして取得できる (get-char-property (point) 'face) 取得したfaceから設定されている情報をみたい。 face-all-attributesという関…

今までloopマクロを怖がって避けてたけど、つかってみたら結構便利だった。

1から10までの数を集める (require 'cl) (loop for i from 1 to 10 collect i); =>(1 2 3 4 5 6 7 8 9 10) collectを使うとlistに集めていくような処理になるみたい 他にもappend,nconc,sum,count,doがある (defmacro 1from10 (action var expr) `(loop for …

javascriptなどのfunctionとかの表示を短くしてみる

書いたもの (defmacro set-pretty-keywords (mode keyword-num-char-list) `(font-lock-add-keywords ,mode (quote ,(loop for (keyword num char) in keyword-num-char-list collect `(,keyword (0 (prog1 () (compose-region (match-beginning ,num) (matc…

emacsで画像の変更をチェックしてリロードする関数を書いた

これで絵を書くコードで遊ぶのが楽になるはず>< (defvar reload-image-target-path "") (defvar reload-image-target-buf "") (defvar reload-image-current-buffer "") (defvar reload-image-wait-time 1) (defvar reload-image-every-where-p nil) (defv…

MeCabとrubyで遊んだ

mecabのinstall sudo aptitude install mecab mecab-ipadic mecab-utils libmecab-dev euc-jp->utf-8 sudo /usr/lib/mecab/mecab-dict-index -d /usr/share/mecab/dic/ipadic -o /var/lib/mecab/dic/ipadic -f euc-jp -t utf-8 -p mecab-rubyのinstall mecab…

あと、メソッドを一時的に変数に束縛したい場合には

http://d.hatena.ne.jp/yarb/20081117/p1 もう分かっているかもしれませんが、proc(またはlambda)で包むとメソッドを実行するためのブロックオブジェクトを作成することができます。 これを使うと、FileUtils.cpとFileUtils.mvのどちらを使うかの振り分けを…

13日の金曜日

たまたま、以下の日記を見つけて読んでみて、自分ならどうやって13日の金曜の数を数えるかなーと思った。 http://d.hatena.ne.jp/yarb/20090105/p1 問題は「それぞれの年の13日の金曜日の日数を計算して列挙する」。 初めはこう書いた(ruby1.8) require 'dat…

@itのgaucheの連載を読んだ

GaucheでRDBプログラミング Gaucheでテンプレートエンジンを作る 継続を使ったコントローラを作る を読んだ。おもしろかった。 A+Bのところをcall/ccを使うとどうなるんだろう? (define (add/cc-maker message) (let ((info (cut print <> message)) (cont …

c-wrapperでcairoを弄ってみた

(use c-wrapper) ;; (use gauche.process) ;; (c-ld (process-output->string "pkg-config --libs --cflags cairo")) ;; (c-include (glob "/usr/include/cairo/cairo*.h") :include-dirs "/usr/include/cairo") (c-load (glob "/usr/include/cairo/cairo*.h…

c-wrapperを初めて使った。

これはおもしろいかもしれない。 c-wrapepr? gaucheから他の言語のライブラリを使うためのライブラリ CとObjective-Cに対応しているみたい。 install こんな感じで wget http://homepage.mac.com/naoki.koguro/prog/c-wrapper/c-wrapper-0.5.5.tgz gauche-p…

入力メソッドをuimに変更する。

sudo aptitude install uim uim-anthy uim-gtk2.0 im-switch -c #でuim-toolbarを選択。

gitの使い方

install sudo aptitude install git git-core git-completion 使い方 ファイルの追加 git init git add <anything> git commit -m <message>diffをとる*1 git diff --cached以前の内容を調べる。*2 #file: x #SHA1: 8b7b27..... git show 8b7b27a:xcheckout git checkout 8b7b27</message></anything>…

texまとめ

以前の あまり参考にならない http://d.hatena.ne.jp/trotr/20081222 :ubuntuでとりあえずTeXが使えるようになる。 http://d.hatena.ne.jp/trotr/20081223 :emacsで書くなら、YaTeXが便利*1 ubuntuのlatexはdefaultでeuc-jp utf-8で書くと文字化けする。ファ…

ちょっとしたメモをとるのに便利かもしれないside-pocket-file.elというものを作った。

code readingとかしている時に、関数の挙動を調べたい時がある そんな時に使うと便利だと思う。*1 foo.elを編集していて C-c C-c でfoo.tmp.elが開かれる。 もう一度,C-c C-c でfoo.elに戻る。 foo.tmp.elに何か調べたいこととかメモをとったり実行してみた…

(たぶん車輪の再発明)現在のカーソルより右から始まる行を非表示にする。

hide-unhide-toggle-deeper-lineという関数を作った。 明日もう少し綺麗にする。*1 これが #| <-"|"の位置にカーソルをおく def f puts("foo") puts("bar") end こうなる*2 #l| <-"|"の位置にカーソルをおく def f end コード (require 'cl) (require 'outli…

starrubyを入れてみる

install wget http://starruby.googlecode.com/files/starruby-0.3.1-src.tar.gz tar zxvf starruby-0.3.1-src.tar.gz cd starruby-0.3.1-src #less README ruby extconf.rb && make && make install #失敗 #SDLが入ってない。 sudo aptitude install libsdl…

久しぶりにrubyで遊ぶ

ruby1.9便利 require 'enumerator'がいらなくて済むし、to_enumとかもいらない。 # 行番号付きprint def print_with_number io io.each_line.with_index{ |x,i| puts("#{i}:#{x}")} end print_with_number("test\nfoo\nbar") # 0:test # 1:foo # 2:bar # dee…

手軽なtagファイルの作成

何かもれがあるかもしれないけどとりあえずmemo. 1.8 ruby -e 'require "rubygems"; [Gem::dir,*$:].join(" ").display' | xargs ctags --languages=ruby -R -e -f ruby1.8 1.9 ruby1.9 -e '$:.join(" ").display' | xargs ctags --languages=ruby -R -e -f …

gauche-readlineに気づかなかった。

emacsを立ち上げるのも面倒な時に便利。ここで知った。 install方法(ubuntu) sudo aptitude install libreadline-dev #readline-devが入ってなかった wget http://www.netlab.is.tsukuba.ac.jp/~yokota/archive/Gauche-readline-20070707.tar.gz gauche-pack…

現在のバッファで使われている関数の所在を調べる

clパッケージの関数を使っていることを示すのにファイルの冒頭に"require 'cl"が合った方がわかりやすいと思った。 clパッケージに限らずrequireが必要なファイルをすべてファイルの冒頭に書いて置けば、あとで使いやすいかもしれないと思った。 いちいち中…