2008-07-01から1ヶ月間の記事一覧

xyzzyでobarrayにアクセスする方法

「interactive "a"」とかなどで関数の情報が見れるので、たぶんできると思うのですがその方法が分かりません><。誰か教えてくだしあ><

xyzzylispを書くときに参考になるところ

xyzzyはdescribe-functionで関数の説明を見ることができません><。 なので、結構webサイトにお世話になっています。 参考になるサイト http://xyzzy.s53.xrea.com/reference/is.cgi(関数のリファレンス) 後で追加していきます(たぶん)

xyzzyのkill-bufferとclipboardを共有する

.xyzzyなどに以下を追加 ;;kill-bufferとclipboardを共有させる(selectionは使わない) (defmacro sort-beg-end (beg end) `(when (> ,beg ,end) (let ((tmp ,beg)) (setf ,beg ,end) (setf ,end tmp)))) (defmacro compound-selection-and-killbuffer (name…

emacsとxyzzyの違い

http://d.hatena.ne.jp/trotr/20080728の続き 今思いついたのは以下の3つです。 (defun (beg end) (interactive "r")の挙動 listの要素の比較の方法 replace-(string|regexp)-region (defun (beg end) (interactive "r")の挙動 emacsはpointの値がbeg xyzzy…

そのほかxyzzyで追加したもの

interactive "r"を補助するマクロ (defmacro sort-beg-end (beg end) `(when (> ,beg ,end) (let ((tmp ,beg)) (setf ,beg ,end) (setf ,end tmp)))) 一番近くの関数を実行 (defun eval-last-defun () (interactive) (save-excursion (end-of-defun) (call-i…

xyzzy用のoccurを作った。

occurが見つからないので作った。(同じ挙動じゃないけど) とりあえず、以下を満たせばいいことにした。 呼び出すときに正規表現を入力する 関数実行後bufferが2つに分割される。 片方のbufferには与えた正規表現を含む行の内容が出力されている。 カーソ…

meadowを止めてxyzzyにした

必要なこと(あとでまとめる) download 環境変数の設定(XYZZYHOME) netinstallerのインストール caldixで解凍用のdllをインストール .xyzzyをいじる(あとでまとめる) とりあえず、現在の.xyzzy*1 (global-set-key #\F8 'lisp-mode) (global-set-key #\F12 …

1.7の機能を使ったら、素数generatorが簡単に作れたよ

js

spidermonkeyでしか試してません><。 function primes(){ let [n, box] = [2, []]; for(;;){ let a = box.filter(function(e) {return n%e == 0;}); if(a.length==0){ yield(n); box.push(n); } n++; } } var p = primes(); for (let i=0; i < 10; i++){ a…

(sicp50)m4.9のdoの修正と4.10

4.10 好きな制御構造の作成 dotimesを作ってみた。(何か大げさな様な気もするけど) ;;使用例 (let ((fact 1)) (dotimes (e 10 fact) (set! fact (* fact (+ 1 e))))) ;; gosh> 3628800 named-letを使った再帰に置き換えて定義する。 (define (run-dotimes …

(sicp49)m4.8,m4.9

合っているか自信無いです>< 4.8named-letを作る (define (named-let->definition exp) ;(letを外した式をもらう。 (let ((name (car exp)) (arguments (cadr exp)) (body (caddr exp))) (let ((vars (map car arguments)) (exps (map cadr arguments))) (…

bindする関数を変えられるようにして、一つのkeyを大切に使う。

C-c-jにanything-lisp-complete-symbolを割り当てているんですが、dabbrevをこのキーで使いたいときがあったりしました。そんなわけで、bindされている関数を変えられるようにする設定を考えてみました。anythingで選択できると便利です*1 make-callerは単に…

setqでの変数の定義を現在の変数の状態に変更するelisp

一部の関数を直接変数の中に代入して、それをsourceとしてanythingを使っているのですが。*1 変更結果を保存したくなりました。 そんなわけで、現在の変数の状態に変数定義の部分を変更するelispを書いてみました。 コード (defun renew-sexp-in-current-buf…

macroを書くときにはmacroexpandを使うと便利

macroexpandを使うと、macroで展開された後の式を出力してくれます。 こんな関数を用意しておくと、直接展開後の式がbufferに出力されるので便利です。 (defun insert-macro-expanded (macro) (print (macroexpand macro) #'insert)

defmacroを使ってみた

defmacroの実行の順序は macro展開 macro展開で生成された式を実行 という感じみたいです。 byte-compileをしたときにmacro展開された式が保存されるみたいです。 取り合えず使ってみました。 関数を調べるdescribe-functionとかのanything版です。 (変数の…

そろそろwindowsにも慣れておいたほうがいいかもしれない。

コマンドプロンプトが使いにくくて嫌になったwindowsですが、そろそろ周りと同じような環境に慣れた方が良いような気がしました。そんな訳で、しばらくはwindowsを使おうと思います。 ただ、コマンドプロンプトだけでは発狂しそうになるので代替のものを探し…

(sicp48)m4.3~m4.7

今日やった分。 4.3 データ主導の形に変更。gets/putsはてきとうに(putsはわざわざ作らなくてもいいかも) #| ;;getの中身を作るためのelisp (defun make-func-mem (beg end) (interactive "r") (let ((mem '())) (save-excursion (goto-char end) (while (a…

(sicp47)m4.1~4.2

いつやったかは忘れた。(upし忘れてた) ;;eval/applyは元の関数を覆い隠さない様に@をつけよう (define (@eval exp env) (cond ((self-evaluating? exp) exp) ((variable? exp) (lookup-variable-value exp env)) ((quoted? exp) (text-of-quotation exp)) …

MDCのリファレンスにアクセスするanythingを作った。

いつもjavascriptを書いている訳じゃないので、関数の名前とかを忘れてしまったりすることが多いです。そのたびに、MDCにいって調べるのですが、めんどうです。 そんな訳で、今日はMDCにアクセスするためanythingのコードを書いたりしてました。 とりあえず…

emacs-muleで保存されたファイルの文字コードを変更するelisp

時々emacs-muleでファイルが保存されていることがあって、そのたびに手作業で修正するのが面倒だったので作ってみました。 とりあえず、いつもの修正方法は以下のような感じです revert-buffer-with-coding-systemでemacs-muleを選択 bufferの内容をcopy て…

はてなのsuper-pre記法のかっこの挿入を楽にするelisp

http://d.hatena.ne.jp/syou6162/20080710/1215642057を見て、どうせなら言語の名前を補完できた方がおもしろいと思ったのでここを参考に作ってみました。*1 (defvar simple-hatena-last-lang "") ;;最後に挿入した言語の名前 (defun simple-hatena-insert-l…

コモンズ・マーカーの表示/非表示をtoggleするgresemonkey

http://commonsmarker.com/のbookmarkletをみたら、結構かんたんにできそうだったのでつくりました。 機能 "\"のキー*1を押すとコモンズ・マーカーが表示したり、非表示になったりします。 こーど // ==UserScript== // @name commons's marker visuble togg…

最近やっとanythingの設定の仕方が分かってきた

他の人にもanythingを使ってほしいので、anythingの解説もしてみます><。 (特にemacsをつかったことがないひととかに使ってほしいです) agenda anythingって? emacsのelispって? anythingのインストール anythingを実行する anythingが見るもの(sources…

refeとかriをanythingで

(defvar ri-program "fri") ;;friを使わないなら ;;(setq ri-program "ri") (defvar refe-program "~/bin/refe.sh") (defvar ruby-all-methods nil) (defvar my-ruby-reference-last-word "") (defun read-ruby-document (document com) "Open each ruby's r…

1.9でfastriを使う

fastri fastriは、riより速いri. "gem install fastri"でinstallできる。 1.9で実行しようとすると 以下のようなエラーが出てしまう。 /usr/local/lib/ruby/gems/1.9.0/gems/fastri-0.3.1.1/lib/fastri/util.rb:38:in `require': no such file to load -- rd…

skkをいれてみた

まだ漢字を変換する時にenterを押してしまうことが多いです。慣れると便利かもしれません。 使い始めてしばらくは、慣れるとかとかの入力方法に気づきませんでした>< 入力の仕方 慣れる Shift+na Shift+re ru カタカナ Shift+ka ta ka na (qを押すことで決…

wassrにpostするscript

引数に渡した文字列をwassrにpostします。 これくらいの短さならclassに分けない方が見やすいかもしません。 code #!/usr/bin/env ruby # -*- encoding: utf-8 -*- require 'rubygems' require 'mechanize' USER = "username" # PASSWORD = "password" # cla…

wassrにはいってみた

mechanizeが使いたかっただけです><

(途中経過)anythingで関数の補完

一応動いた。中のコードの意味とかよく分からないまま作っているので変なところがある気がします。*1 使用しているもの anything-dabbrev-expand.el gca.el (require 'gca) (require 'anything-dabbrev-expand) (unless (boundp 'anything-initial-input) (d…