2011-05-01から1ヶ月間の記事一覧

VC++ で Boost を使ったプログラムを static link でビルドする

Boost に限らず、静的リンクした exe を作るには、 VC++ メニュー / プロジェクト / 構成プロパティ / コード生成 ランタイムライブラリ を マルチスレッド (/MT) にする。配布前の Release ビルド だけで設定しとくのが吉。

クロージャ

いままで、「ふーん」くらいにしか思ってなかったけど、すごく分かりやすい解説を見つけたのでメモる。 猿でもわかるクロージャ超入門xyzzy でやってみる。 ;; 問題:呼び出すたびに、1,2,3,...を返すような関数 f( )を定義せよ。 (defun outer () (let ((x …

仮置き: cl 用の小物(作りかけ)

適当に作った clozure CL 用の cl-mode と、その native-compile 用のコマンド。 scheme-mode をパクらせていただいた。念のために、作りかけを置いとく。プロセス周りがかなり怪しい。

scratch バッファ専用の auto-save-buffers

scratch バッファでプログラムをテストしてると、まれに xyzzy がフリーズしてしまうことがある。フリーズすると、いままで scratch バッファで書いてたものがパーになるのでつらい。 そこで scratch バッファだけを RAM ディスクに自動保存するようにしてみ…

Git Bash の home ディレクトリを指定する

windows の git をふつうにインストールすると、$HOME が /c/Documents and Settings/<windows のユーザ名>となってて気持ち悪い。windows の環境変数で HOME を設定してないとこうなる。システムのプロパティから環境変数を設定すればいいんだけど、めんどくさいので ショートカ</windows>…

ビルトイン関数かどうか

以前から探してて、あるにはあった。 ココによると、 si::*builtin-function-p だそうな。ただ、ちょっと使いにくいので、ラップしとく。 (defun builtin-function-p (symbol) "symbol がビルトイン関数かどうかを返す。" (and (fboundp symbol) (si::*built…

テンポラリなバッファを作る

他のアプリからテキストをコピペして置換とかするとき、一時的なバッファがほしくなるときがある。 (if (fboundp 'temp-buffer) (msgbox "`temp-buffer' という関数はすでに存在します。") (defun temp-buffer () (interactive) (set-buffer (create-new-buf…

フラグを反転する

フラグの反転くらい、さらっと書きたい。 (setq *hoge-state* (not *hoge-state*)) ってのを (notf *hoge-state*) ってやりたい。 (defmacro notf (var) `(setq ,var (not ,var))) 名前が今ひとつナニだが。

xyzzy で common lisp hyperspec を引いてみる (2)

ココに書いたやつの続き。hyperspecのコマンドとしては、hyperspec と hyperspec-format がある。 でも ふつうに書いた .xyzzy ("user"パッケージ)からは見えなくて、hyperspec::hyperspec とかしないといけない。hyperspec.l を見る限り、ちゃんと export …

diigo に置いた画像をテスト

diigo に置いた画像をはてなダイアリーで表示できるかテスト。どうかな?一応いけた。・・・と思ったけど、少し時間をおいた後でリロードしてみると、表示されなくなった。diigo の画像のリンクを見てみると、&Expires= というのがある。ということは、アクセス…

xyzzy で common lisp hyperspec を引いてみる

common lisp のリファレンスとしては common lisp hyperspec が有名。 xyzzy から common lisp hyperspec を引けるようにしてくれた方がおられた。http://lispuser.net/emacs/lisphacking.html#sec-4以下使い方。1 ココから hyperspec.l を落として、load-pa…

shell-mode で C-k したとき、サブプロセス を消す

これも、だいぶ前に書いたもの。 M-x shell でコマンドプロンプトに入って、作業後に C-k して "サブプロセスが走っています。" とか言われてムキッとなった人に。 けっこう重宝するので貼っておく。 (defun kill-process-and-buffer () (interactive) (let*…

xyzzy で重複行を削除する

CSVファイルとか、XMLのタグ抽出したりとかで、何かと必要になることが多いのが重複行の削除。 xyzzy では C-x # uniq して、外部の uniq.exe を使うのがデフォの様子。 だけど、これぐらいの日常タスクなら xyzzy だけでやりたいと思ったから適当に書いとい…

refer-for で定義元のソースにジャンプ

refer-for で、 [File ]: なんちゃら.l の行で enter 押すとそのファイルを開いて、定義の箇所を見れるようにした。今のところ、対応しているのは下記だけ。 関数名 変数名 マクロ名 (defvar *refer-for-jump-dir* `(,(merge-pathnames "lisp" (si:system-ro…

ファイル名をディレクトリから探してフルパスを返す

(defun find-path-from-top-directory (name dirs) "name というファイル名をディレクトリ配下で検索して、フルパスを返す。存在しなければ nil を返す。 同名ファイルが複数個存在したとしても、最初に見つけた1つしか返さない。 検索対象のディレクトリは…

きょうの「なんでやねん」

common lisp の教本ばっかり読んでると、シンボルは内部的には大文字になってるんだよなと漠然と思ってた。 なので common な処理系ならなんでも (eq 'HOGE 'hoge ) は t になるんじゃないかと。xyzzy では下のようになった。 ;;; xyzzy (eq 'hoge 'hoge) ;=…

xyzzy をリビルドした

とりあえず自分が必要なものだけパッチ当てた。 出先で使えるように Dropbox に入れておいたのでメモ。

xyzzy の関数名とかを grep

xyzzy の describe-function は emacs みたいに関数の定義元へのリンクを出してくれないので、毎回 xyzzy のインストール先の lisp ディレクトリ を grep していた。 いい加減めんどくさくなってきたので、専用のコマンドを作った。(かなりテキトーだけど) ;…

mini9 英語キーボード交換 (US --> US-Intl)

mini9 のキーボードがヘタってきたので、交換することにした。 もともと英語キーボードだったので、今回も英語キーボードに。ヤフオクで探すと 新品1500円+送料500円 = 2000円というのがあった。中国からEMSで届いたので落札から到着まで7日かかった。キーボ…

encap.l を使ってみる

以前 trace を見つけたときにインストールした、encap.l を使ってみる。 既存の関数を簡単にラップできるみたい。簡単そうなのを試す。describe-function したとき、ポイント付近の単語をデフォルト文字列として与える。 (encapsulate 'describe-function 'w…