Hatena::ブログ(Diary)

わからん

2010.09.22

[][] 制御文字をふつうの文字^Hなどに置き換える

知らない人に cat -v を教わりました。ありがとうございます。キーバインド覚えられないのでコマンド化。サンプルデータは (symbol-function 'setf) で。これの結果をブログに貼りつけたくて悩んだ。

(defun cat-v-region (begin end)
  " リージョンに対して cat -v を実行"
  (interactive "r")
  (shell-command-on-region begin end "cat -v" t))

[] 任意のディレクトリを開くanything-sourcesを複数動的に生成する2

(defun my-open-dir (dir-list)
  "Open directory."
  (interactive)
  (anything-other-buffer
   (my-create-open-dir-anything-sources dir-list) nil))

(defun my-create-open-dir-anything-sources (dir)
  (labels ((make-source (d)
            `((name . ,(concat "Open directory: " d))
              (candidates . ,(directory-files d))
              (display-to-real . (lambda (candidate)
                                   (concat ,d candidate)))
              (type . file))))
    (loop for d in dir
          when (file-directory-p d)
            collect (make-source d))))

;;(my-open-dir (list "/home/k1low/" "/var/www/html/")) ;ディレクトリの存在チェックがないですよ

あまり変わらないか。この例だとおおげさになってしまうけど、リストを走査する部分と本質的な仕事をする部分にわけた。Imakado さんスタイルともいう。慣れたもんです。

[] the についてのメモ

the は (the 型 式) という構文のスペシャルフォーム。第一引数は評価しない。第二引数は評価する。第二引数の評価結果が第一引数で指定した型であることを保証する。

(setf x (+ 10 1))
(setf x (the integer (+ 10 1))) ;意味がなさそう
(setf x (+ (the integer 10) (the integer 1)))

x はどれも11。

Google