emacs

(たぶん車輪の再発明)現在のカーソルより右から始まる行を非表示にする。

hide-unhide-toggle-deeper-lineという関数を作った。 明日もう少し綺麗にする。*1 これが #| <-"|"の位置にカーソルをおく def f puts("foo") puts("bar") end こうなる*2 #l| <-"|"の位置にカーソルをおく def f end コード (require 'cl) (require 'outli…

現在のバッファで使われている関数の所在を調べる

clパッケージの関数を使っていることを示すのにファイルの冒頭に"require 'cl"が合った方がわかりやすいと思った。 clパッケージに限らずrequireが必要なファイルをすべてファイルの冒頭に書いて置けば、あとで使いやすいかもしれないと思った。 いちいち中…

コードリーディング用の設定

こんな感じの状況 コードリーディングをしたい。 1つのファイルをみるだけだとview-modeを使えばいいかも。 複数のファイルを楽にたどりたい。 そうなると、どうやって読みたいファイルを開くかが問題。 その上、anythingで探せるほどファイル名なども覚えて…

zshの補完関数が書きたい

$fpath以下にあるファイルに補完の設定が書いてあるらしい。 補完設定用のファイルに楽に移動したい 移動用にanythingを使った関数を作成する.(rubyも使ってる) (defmacro tiny-anything-function-maker (fname name shell-command actions) "fname: generat…

ChangeLogでtodoの管理

参考 http://d.hatena.ne.jp/yaotti/20081127/1227787197 http://d.hatena.ne.jp/higepon/20070105/1168007554 ChangeLogにtodoを書く。 以下のような形式で書く。 表記 意味 □ をやる(todo) ■ をやった。(done) やる=□、やった=■で変換できるようにしてお…

別のPCにrubyの環境を作った。

friが動けばいい。 install sudo gem install fastri -y emacsの設定 "fri -l"でmethodの一覧がとれるのでcandidates-in-bufferを使うと楽に候補が設定できる。 fastri-serverはemacsの中で立ち上げることにした。 出力結果をansi-color-apply-on-regionで強…

一度使ったコマンドは楽に使いたい。

M-xで呼び出したコマンドは自動的にファイルに保存され、ファイルの内容をanythingで選択できるようにする。選択できるコマンド候補の追加には、M-xで呼び出すかファイルを直接修正すればいい。 (defun write-string-to-buffer (file str) (let ((buf (find-…

手軽にfontの色とか変えてみたい

faceの設定をいじれば良さそう。 kordersでfaces.elの中を覗いてみた 大体、分かったと想う。 describe-faceでどの様なattributeで設定されているか確認する。 face-listで現在使用しているfaceがlistになって帰ってくる face-attributeで指定したfaceのattr…

gaucheの補完用のelispを書いたりした

説明とか(あとで書く) 作ったもの get-procedure-list.scm gauche-completion.el get-procedure-list.scm (use file.util) (use srfi-1) (define (%filter file) (guard (e (else '())) (call-with-input-file file (lambda (in) (port-fold (lambda (line…

コードを書くときに2つのファイルを使うと良いような気がした。

昨日の続きです 関数の実行結果を調べたい時に、移動しなければいけないのが面倒くさい。 shellの環境に関数の情報が入っているのだから、別なファイルに実行用のコードを書いても良いような気がする。 そんなわけで以下の2つのファイルを同時に使って作業す…

javascriptとemacsで対話的に開発がしたい(html使わないです><)

schemeでプログラムを書くとき、少し関数を書いてから実行して結果をみるとかいうことをよくします。 そんなことをjavascriptでもしたいと思いました。 なので、てきとーにelispを書いてみました。 準備 javascriptのインタプリタが必要す。(eg.spidermonkey…

anythingをカタカナひらがなキーに割り当てれば良いような気がした

(global-set-key [(hiragana-katakana)] 'anything)

parenthesis.elのコードをいじってみた(minor-mode版の作成)

parenthesis.elのコードを読んで、macroを使えば手軽に定義できるようになるんじゃないかなとか思いました。 そんなわけでてきとーにいじってみました。 あと、minor-modeにもしてみました。 parenthesis.elについて http://d.hatena.ne.jp/khiker/20080118/…

現在のカーソル位置の単語をdescribeで調べる

gaucheだと(describe 何か)で調べることができる。 こんなものを定義しておくとらくかもしれない。 (defun scheme-describe-current-word () (interactive) (let ((buf "*d*")) (with-output-to-temp-buffer buf (let ((target (substring-no-properties (cu…

anythingでfileをrequireする作業をサポート

rubyでライブラリを読み込むときに、「require""」の内容を覚えるのが大変でした><C-c C-uでrequireするファイルを選択したいです。>< その前に anythingの候補を作るrubyのコードを書きました tocandidate.rb ~/.emacs.d/tocandidate.rbという感じで保…

requireしているファイルの場所に飛ぶelisp

(require ')というところにカーソルを合わせてC-c C-fでファイルを開ける C-c C-aでcurrent-buffer内のすべてのrequireしているファイルからanythingで選択して開ける 実体がないものとかは無理です。*1 (require 'anything) (defun elisp-reading-search-fi…

declareとかdynamic scopeとか

elispはDynamicScopeなので以下のコードが動きます。 (defun bar () (+ x y)) (defun foo () (let ((x 3) (y 10)) (bar))) (foo) ; => 13 CommonLispとかSchemeはStaticScopeなので動きません。。 でも、CommonLispの場合declareを使うとDynamicScope的な振…

ruby1.9用のrcodetoolsの導入

rcodetoolsが1.9に対応したらしいです。*1 1.8と1.9を使い分けたいですね><。 そんなわけで、このような設定を加えました。 ;(require 'rcodetools)の後あたりにでも (defun make-cycle (l) ;循環リストを作成 (let ((tmp l)) (while (not (null (cdr tmp)…

emacsにsave-pointを作った。

anythingのcandidate-trasraterが便利そうなので使ってみたかったのです><。 説明 emacsの現在の位置とバッファを保存することができます。 (C-x C-xでカーソルをregionの開始位置に戻る操作のようなものを繰り返すことができます) 使い方 save-current-p…

ocamlの関数の補完をするelisp

まだ完成していないけど、途中経過をUpしてみます。 長いので、別のところにupした方が良かったかもしれません。 使用方法 ファイルの冒頭にあるコメントの部分を.emacsに貼り付ける (好きなキーにbindする) anything-ocaml-reference-completionsが補完 an…

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を使おうと思います。 ただ、コマンドプロンプトだけでは発狂しそうになるので代替のものを探し…

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…

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

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

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

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