K.Sasada's Home Page

こめんとのついか

こめんとこめんと!

message

please set comment :).

_3(Tue)

xyzzyのメモ。A君向け。

(defun my-execute-nanika2 (list)
  "拡張子やモードを見て、対応したプログラムを走らせて見たり 2"
  (let* ((buffer (selected-buffer))
         (file   (get-buffer-file-name))
         (ext    (and (get-buffer-file-name) (pathname-type (get-buffer-file-name))))
         (exec   (assoc (or ext mode-name) list :test #'(lambda (a b)
                                                          (string-matchp b a)))))
    (and exec (setq exec (cdr exec)))
    (cond
     ((stringp exec)
      (progn
        (when (buffer-modified-p)
          (save-buffer) ; セーブしてから
          )
        (execute-subprocess (format nil exec file))
        (set-window (get-buffer-window buffer))
        )
      )
     ((consp exec)
      (funcall (eval exec))
      )
     (t (message (concat "やりたいことがねーっす : " (string ext))))
     )))
    
  

(global-set-key '#\C-2
                #'(lambda () (interactive)
                    (my-execute-nanika2
                     '(("tex" . "platex ~A")
                       ("rb"  . "ruby -dw ~A")
                       ("html". "start ~A")
                       ("pl"  . "perl ~A")
                       ("scm" . "ruby -dw rcm.rb ~A")
                       ("txt" . "t2n ~A")
                       ("lisp.*" . #'(lambda () (eval-buffer (selected-buffer))))
                       ))))

~A の位置で、ファイル名指定する位置を変えてくれ。

(and exec (setq exec (cdr exec))) がダセー。なんとかならんかな・・・。


xyzzy、うちでは、C-1 がexecute-subprocess で、C-2 が↑です。


Javaによるアルゴリズム事典。う、もう出てたのか。


Dynamically Scoped Variables。えー、こういう使い方ってアリなんですか・・・。うは。

def with_context(params)
  (Thread.current[:Context] ||= []).push params
  yield
  Thread.current[:Context].pop
end

def find_in_context(name)
  Thread.current[:Context][-1][name]
end

こんなんじゃダメなんだろうか。英語の部分を読んでいないんで、外してそう・・・。性能的には2桁くらい違うけど。

rucheme の経験を鑑みて、

def find_in_context(name)
  Thread.current[:Context].reverse_each{|params|
    if params.has_key? name
      return params[name]
    end
  }
  raise "Can't find context value for #{name}"
end

と、こんなふうになったりする。というか、まんま rucheme だな・・・。

でも、きっとなんか大きな勘違いをしているんだろうなぁ。


オープンソース政策討論会@RIETIのお知らせ。うー、行きたいなぁ。ちょうど発表の日ですよ・・・。残念。

Al HHK。すげーすげー。


なんというか、ソース書くのが非常に楽しい。

良いプログラミングなどの書籍や記事がなかなか世に出回らないのも非常に頷ける。そして、それが出来るライターさんが、いかに貴重な存在か、やっと理解できた気がする。


お、[ruby-talk:72753] ですでに田中さんが同じような、しかもちゃんとしたのを書いてる。そうか、例外気にしてなかったな。

これであってたのか。よかったよかった。

_あひる(Tue Jun 03 23:36:16 JST 2003)

 God job!


好きにコメントを編集してください。ただし、あまり他の人のコメントを書き換えることは感心しません。



back

tton 記述が使えます。YukiWikiな記述してりゃ問題ありません。

「行頭に#code」 と、「行頭に#end」 で挟むと、その間の行は pre で囲まれます。プログラムのソースを書くときに使ってください。

例:

#code

(なんかプログラム書く)

#end

リンクは

[[なまえ|http://www.example.org]]

とか

[[http://www.example.org]]

で貼れます。

$Date: 2003/04/28 10:27:51 $