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…

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…