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

ERAM 設定 --> 500MB

500 MB = 512000 KB msconfig / BOOT.INI / 詳細オプション / MAXMEM=1536 しとくこと。

xp ワイヤレスネットワークがアドレスの取得中のままになる

windows xp を再インストールした後、無線LANが「アドレスの取得中」のままになって接続できなくなった。無線LAN で接続するには、xp を起動するたびに WPA2 のネットワークキーを入れてやればいいけど、めんどすぎ。なんでこんなことになってしまったのか。…

xp の 「ようこそ」画面

起動時の「ようこそ」画面って無駄にしか思えん。 そう思ってたら、標準でそれを消せる機能があった。コンパネ / ユーザーアカウント / ユーザーのログオンやログオフの方法を変更する の「ようこそ画面を使用する」のチェックをはずす。こんなのがあったと…

win xp: mini 9 の キーボード設定

mini9 に xp を再インストールした。まあいろいろやったけど、キーボードの設定について、忘れていたことがあったのでメモっておく。ほかの PC では英語キーボードなんだけど、レジストリを変更して AXキーボードにして使ってる。こうすると 右ALT で IME を…

Word が Office に入ってるわけ

久しぶりに仕事の話でも書こうかな。仕事で仕様書を書くことになった。Microsoft Word で。 正確にいうと、既に word で書かれた仕様書を大幅に直すタスクだ。 word を使うのは何年ぶりになるだろうか。たしか NT4.0 の頃に使ったのが最後だった。ということ…

xyzzy のメインメニューを消す

メニューはほとんど使わないので消す。 まったく消してしまうと不安なので、右クリックしたときのコンテキストメニューでメインメニューを出せるようにしとく。 ;;; toggle-menu でメインメニュー表示を切り替え (defvar *main-menu* *app-menu*) (defun tog…

scratch バッファ用の変なもの

なんか変なのができた。 ふつう scratch バッファは need-not-save が nil なので、xyzzy を終了するときに保存するかどうか、聞かれない。 これは emacs ゆずりのふつうの動作。 ただ、最近はちょこっと lisp のテストコードを書いては終了したりするので、…

バッファを1行ずつ処理するマクロ

まあ、置換とかは replace-buffer とかで一発なんだが、もちょっと凝ったことをしたいときがある。 今まではバッファを1行づつ処理するときは、 (while (null (eobp)) (let* ((beg (save-excursion (goto-bol) (point))) (end (save-excursion (goto-eol) (p…

文字がアルファベットかどうかを調べる

文字列中の 1文字がアルファベットかどうか知りたいことがたまにある。 たとえば、こう書ける。 (defun char-alphabet-p (ch) (if (char-not-greaterp #\a ch #\z) t nil)) char-not-greaterp は char 関係ないけど、Wikipedia によると A〜Z, a〜z を「アル…

ちょっと変わってる recentf

xyzzy の recentf は これがわりと有名だとおもう。 でもなぜかそれは使ってなくて、むかし適当に自分で書いたのをちょこちょこ直しながら現在に至っている。変り種としては、 最近使ったもの順に自然とソートされる。recentf で開いたファイルは、リストの…

discrete.l 小コマンド群

これも、バックアップとして置いておく。discrete.l - 小さなコマンド群

lib.l 自前のライブラリ

結構増えてきてしまったので、バックアップとして置いておく。lib.l - コマンドにならない小さな関数群*1 *1:先人達から拝借させてもらったものも含む

行末のスペースを目立たせる(途中まで)

emacs には whitespace.elというのがあって、行末に限らず空白文字を目立たせることができる。 xyzzy では表示の設定で全角スペースやタブ文字の表示を設定できるので、行末の空白文字だけを目立たせればいいかな。 途中まで書いてみた。 (defun show-trail-…

error って。(3)

そもそも、なんで例外なんてものがあるかというと、実行時におかしなことが起きても継続してプログラムを実行させたいからだ。 たとえば、ユーザーの入力が原因で「予期せぬエラーが発生しました」とか出て強制終了したりするプログラムは、誰も使いたがらな…

error って結局・・・

さあ、例外のつづきをしよう・・・と思ったがよく分からなくなってきた。エラーを発行する (error) の引数として、文字列の代わりに (make-condition) を使うんだった。 このエラーの型を自前で定義してやれば、細かなエラー処理を書けるという話しだろう。 で…

eval-buffer をちょこっといじる

ほんとに些細なことなんだけど eval-buffer でいちいちバッファの名前を聞かれるのがうざい。 カレントバッファ以外を eval-buffer することはめったにないので、インタラクティブに呼ばれたときはカレントバッファを対象とするようにした。 (defvar eval-bu…

find-file をちょっとだけいじる

find-file でタイプミスして新しいファイルを開いてしまうことがよくある。 そんなときは、ほんとに新しいファイルを開くのかと聞いてほしい。 (defun my-find-file (fn) (interactive "FFind file: ") (cond ((file-exist-p fn) (find-file fn)) ((y-or-n-p…

SSE って。

また古い話しを持ち出して、とうの昔に誰かが結論を出していることを、自分の頭で考えてしまう。 いまさらなんだけど、intel の pentium 系 CPU の拡張命令セットのこと。今までは 「ふーん、なんかよくわからんけど速くなるんだそうな」 くらいにしか思って…

error って。

error という関数がある。ヘルプで見てみる。 出た。「例外」だ。なんとなくしか分かってない。うそです。まったく分かっていない(w 試してみる。たとえば、 (defvar a 0) (defun test () (interactive) (error "!!!") ; ここで抜けてる (incf a)) ;; test (…

pme の 文字列中の改行文字をなんとかしてみる

pme はすごく便利だけど、少しだけ困ったことがある。 マクロ定義の中の文字列に改行が含まれていた場合は、そこで改行してしまって見づらくなることだ。 たとえば、以前書いたこのマクロは、 (pme (dbg-msgbox 'foo 'bar)) (msgbox (concat "~S " "~S ") 'f…

xyzzy からDOS窓(cmd.exe)を開く

コレの DOS窓版を作った。 カレントバッファがファイルのときは、そのファイルがあるフォルダで実行 そうじゃないときは、 xyzzy.exe があるフォルダで実行 M-x c で実行 (defun c () (interactive) (let* ((fn (get-buffer-file-name)) (ed::*launch-app-di…

xyzzy からエクスプローラを開く

ココを見つけた。 カレントバッファがファイルを持ってないときは xyzzy.exe があるフォルダを開くのはいいアイデアだと思った。 ちょっとだけ変更させてもらった。 カレントバッファがファイルのときは、エクスプローラで開いたとき、そのファイルを選択 M-…

ローカル関数 flet と labels

いわゆる、(defun ... の中だけで生きる関数なんだが、 flet と labels のどちらでも定義できる。が、微妙に振る舞いが違う。 flet let みたいに並列に定義する labels let* みたいに直列に定義する xyzzy で試してみた。 ;; flet の場合 (defun test (a) (f…

桁数を求める

再帰で書いてみた。 (defun digit (num) (if (< num 10) 1 (1+ (digit (/ num 10))))) ;; test (digit 1000) 4 はげしくガイシュツな気が・・・

文字列から数値へ型変換

いつも忘れるのでメモっておく。 parse-integerリファレンスによると、xyzzy は一部 common lisp と動作が違うみたい。 下記は xyzzy でのテスト。 ;; まずは基本 (parse-integer "00003") ; 多値で返す 3 ; 整数値 5 ; 読み込んだ最後の文字のインデクス(1…

Emacs の moccur-grep っぽい grep コマンド

grep-dialog は正直使いづらいので、ミニバッファで入力する grep コマンドを作ってみた。emacs では grep を使わずにほぼ moccur-grep だけで過ごしていたので、体がそれになじんでしまった。 なので、操作は moccur-grepっぽくなっている。ただ、下記はち…

パス文字列のドライブレターを大文字にする

ちょっと気になったので、書いてみた。 (defun upcase-drive-letter (s) (if (char= #\: (char s 1)) (string-upcase s :start 0 :end 1) s)) ;; test (let (( s "d:/util/xyzzy")) (upcase-drive-letter s)) "D:/util/xyzzy"

文字列リストの重複をなくす

たとえば、パス文字列を保存したリストの重複をなくしたい時はどうするか。 (let ((l '("d:/work" "C:/foo/bar" "D:/work" "d:/work/lisp" "D:/work/lisp"))) (remove-duplicates l :test #'string-equal :from-end t)) ("d:/work" "C:/foo/bar" "d:/work/li…

プロパティをテストしてみる

(defun foo (x) "increment" (1+ x)) (get 'foo 'lisp::function-documentation) "increment" (defvar hoge nil "hogehoge") (get 'hoge 'lisp::variable-documentation) "hogehoge" おもしろい! ところで、variable-documentation とかのプロパティ名(イ…

ミニバッファで入力するときのヒストリーの使い方 (2)

interactive 以外でやってみる。 下記は read-string の例 (setq inserttest-history nil) (setf (get 'inserttest 'ed::minibuffer-history-variable) 'inserttest-history) (defun inserttest () (insert (read-string "string: " :history 'inserttest)))…