1 名前:デフォルトの名無しさん [2007/10/09(火) 05:39:53 ] Emacs Lisp の専用スレ。 少数派による互助を中心に、初心者の相談も気が向けば受け付けます。 単なる Emacs ユーザーは別板の Emacs 関連スレにどうぞ。 過去スレ Emacs Lisp pc2.2ch.net/test/read.cgi/tech/1004551074/ Emacs Lisp 2 pc11.2ch.net/test/read.cgi/tech/1068467385/ 関連スレ Emacs part 22 pc11.2ch.net/test/read.cgi/unix/1180828013/ 【叩かれて】Emacs Lisp道場【強くなれ】 pc11.2ch.net/test/read.cgi/unix/1063880951/ Lisp Scheme Part18 pc11.2ch.net/test/read.cgi/tech/1186922295/
2 名前:デフォルトの名無しさん mailto:sage [2007/10/09(火) 15:42:41 ] (message ">>1 乙")
3 名前:デフォルトの名無しさん mailto:sage [2007/10/10(水) 01:16:09 ] (setq >>1 "乙")
4 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 00:14:53 ] System.out.println(">>1 乙");
5 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 00:17:01 ] スパイがいるぞ
6 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 22:02:03 ] ここまでバレバレだとスパイというより罠だな そんなことよりコンスセルの話をしようぜ
7 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 22:37:42 ] いやでゴンス
8 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 18:51:50 ] ところで、lexbindはもうtrunkにマージされた?
9 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 19:43:25 ] elisp で perl みたいなテキスト処理をしたいんだけど、 ファイルから一行読み込む、ってどうやるの? ファイルは馬鹿でかいから、バッファに全部は読み込めない。
10 名前:デフォルトの名無しさん mailto:sage [2007/10/14(日) 20:13:06 ] insert-file-contents かな
11 名前:デフォルトの名無しさん mailto:sage [2007/10/29(月) 23:54:17 ] リージョン内の文字列を対象に、ファイルサイズを知りたいです。 リージョンを指定して M-| wc -c だと、改行コードなどがバッファのものと違う、 string-width だと TAB が 8 にカウントされる、改行がカウントされない、 length だとマルチバイト文字も 1 文字とカウントする、 など、どれもちょっと期待と違います。 ちなみに、最終的には mode-line に表示させたいので、 外部プロセスなどは使わずにすませたいところです。 何かいい方法ないでしょうか?
12 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 02:23:12 ] buffer-file-coding-system に encode-coding-string して length 取る、とか…
13 名前:デフォルトの名無しさん mailto:sage [2007/10/30(火) 11:33:17 ] 毎回やるのか、それ。遅そう……。
14 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 00:20:40 ] >>11 です。 >>12 を参考にコードを書いてみましたが、 1MBくらいのファイルになるとスクロールに影響がありました。 私の組み方も悪かったのかも知れませんね。 バッファ全体を substring して temp-buffer に insert して encode して length… だったので。 きっと、もちょっと効率良くできるのでしょう。 で、mode-line の表示をどうしたものかと xdisp.c を眺めていたのですが、 mode-line-format に %i や %I が使えることが分かったので、 もうこれでいいコトにします。 ありがとうございました。
15 名前:デフォルトの名無しさん mailto:sage [2007/10/31(水) 23:46:14 ] > 1MBくらいのファイルになるとスクロールに影響がありました。 変更がなければ再計算する必要ないと思うが。
16 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 01:15:53 ] バッファに変更がないことを知るのは難しいよね? undo-list はアテにならないから使えないと思うんだけど、 バッファに変更があったことをどうやって知ればいい?
17 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 03:27:25 ] buffer-modified-tickとか。 buffer-undo-listじゃどうアテにならないのかおせーて。
18 名前:デフォルトの名無しさん mailto:sage [2007/11/02(金) 23:30:07 ] buffer-undo-list って、メジャーモードによっては消えたりするじゃない、 …と思ったけど、変化したら再計算するんだから、十分アテになるね。
19 名前:デフォルトの名無しさん mailto:sage [2007/11/04(日) 10:58:58 ] after-change-functions
20 名前:デフォルトの名無しさん mailto:sage [2007/11/06(火) 23:59:32 ] >>19 おお、これなら…、と思ってやってみましたが、 少し速くタイプすると描画がついてきませんでした。これは CPU の性能のせいかな? もちろん、スクロールには影響なかったですよ。ありがとうございます。 after-change-functions 自体は便利そうなので、別の何かに使います。
21 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 23:44:53 ] 昨日からelispを勉強しています。 Rubyが一応は書けます。 OSはUbuntu7.10を使っています。 質問なのですが yatexは.elファイルをどっかに置いているのだと思いますが これはどこに置いてあるのですか? rpm系を使っていて rpm -ql yatexのような事が出来ればいいのですが良く分かりません。 まずこれについて方法を教えていただければと思います。 次に、 例えば/usr/libとかに.elファイルが置いてあるとして emacsはどこに書いてある命令でこれを読みに行くのでしょうか? 最後に .emacsというのにelispを書くとemacsをカスタマイズ出来るそうですが .emacsに例えば (set-language-environment "Japanese") (set-default-coding-systems 'euc-japan) (set-terminal-coding-system 'euc-japan) と書いた場合、確認した中では 何もファイルを指定せずにファイルを開いた場合と .rbファイルを開いた場合に設定が反映されましたが、 .texの時は変わらず、JISのままでした。 例えば/usr/libにyatex.elというのがあると仮定して、 おそらくここにJISにしなさいという命令が書いてあるものと思われ それにより上書きされているものと思われますが、 同一種の命令の場合、 .emacsの設定の方を優先順序を上にするにはどうすればいいですか?
22 名前:デフォルトの名無しさん mailto:sage [2007/11/25(日) 23:54:29 ] >>21 ライブラリの場所は M-x locate-library でわかるよ
23 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 00:02:34 ] ありがとうございます。 無理やりですが locate yatexで調べました。 /usr/share/emacs/site-lisp とかにそれらしきパッケージが入っていますね。 しかしどうやって読み込んでるのかとか どうやってyatexを使用した場合でも.emacsに書いたeuc-jpを使いなさい という命令を優先させる事が出来るのかが分かりません・・・
24 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 03:19:52 ] yatexが入っているならそのinfoも入っているはずなので、 C-h iでyatexを探して読んでみるといい。 文字エンコーディングの設定方法はそこに書いてある。
25 名前:デフォルトの名無しさん mailto:sage [2007/11/26(月) 13:07:15 ] このスレはEmacs設定スレじゃないと思うんだが……
26 名前:デフォルトの名無しさん mailto:sage [2007/12/09(日) 06:15:49 ] Emacs Lispの成分解析結果 : Emacs Lispの55%は陰謀で出来ています。 Emacs Lispの39%は祝福で出来ています。 Emacs Lispの6%は成功の鍵で出来ています。
27 名前:デフォルトの名無しさん mailto:sage [2007/12/11(火) 23:00:49 ] リストの n 番目の要素を置き換えるような関数はありますか? &optional な引数で、上書きと挿入を切り替えることができると嬉しいです。 (setq test '(A B C D E)) (func test 3 X) => (A B C X E) (func test 3 X t) => (A B C X D E) みたいなものがあったら嬉しいのですが、標準関数でこれと同じようなものはありますか? 自分でやると (append (reverse (nthcdr (- (length lst) n ) (reverse lst))) X (nthcdr n lst)) みたいになってしまうのです。
28 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 01:45:09 ] ;; 破壊的挿入 (setf (nthcdr n lst) (cons new (nthcdr n lst))) ;; 非破壊的挿入 (let ((lst (copy-list lst))) (setf (nthcdr n lst) (cons new (nthcdr n lst))) lst) ;; 破壊的上書き (setcar (nthcdr n lst) new) ;; 非破壊的上書き (let ((lst (copy-list lst))) (setcar (nthcdr n lst) new) lst) or (substitute-if new 'identity lst :count 1 :start n) setfとsubstitute-ifはCL。あとは詳しい人が降臨するのを待とう。 おれもここは苦手なんだ。
29 名前:デフォルトの名無しさん mailto:sage [2007/12/12(水) 09:05:50 ] >>27 仕様バグ。使い方は (setq test (func test 3 x t)) でないとダメ。 なぜなら0番目に挿入がありえるから。
30 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 04:04:57 ] >>29 ??? そういうこともあるから値返してんじゃないの? どのへんがバグなのか分からないオレははんぶん素人です。
31 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 13:25:22 ] 変更箇所を色分けするhighlight-changes-modeで、 保存のたびに色が変化する(tomato→black)ようにしたくて、以下を.emacsに書いたのですが、エラーが出てしまいます。 小関氏の『入門Meadow/Emacs』に載っているソースを真似たのですが、どこが問題なのでしょうか? よろしくお願いします。 ●.emacs (setq highlight-changes-colours (let ((r 255)(g 99)(b 71) ret) ;初期値tomato (while (> (+ r g b) 0) ;だんだん色褪せる (setq ret (append ret (list (format "#%02x%02x%02x" r g b)))) (setq r (* (/ r 10) 8) g (* (/ g 10) 8) b (* (/ b 10) 8))) ret)) ●エラー Wrong type argument: symbolp, (* (/ b 10) 8)
32 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 14:07:35 ] じっと目を凝らしても君には見えないんだろうな。
33 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 19:21:51 ] >>31 Emacsが日本語でやさしく教えてくれるようになるまで別のもの使っときw
34 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 19:35:30 ] >>31 setqのgの後ろに幽霊が居るぞ
35 名前:デフォルトの名無しさん mailto:sage [2007/12/13(木) 20:41:01 ] develockで赤くしました。
36 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 15:44:35 ] develockって一度有効にしちゃったらoffにできないよね……
37 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 19:23:27 ] バージョンが古いんじゃないの?
38 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 19:30:05 ] と思ったら、なんか変だね…
39 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 17:03:58 ] 関数内で、自身の関数名を取得する方法はありますか?
40 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 18:17:53 ] backtrace-frame()
41 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 20:18:00 ] >>40 (defun hoge() (interactive) (setq self (second (backtrace-frame 3))) (message "%s" self) ) お、できた。 サンクス
42 名前:デフォルトの名無しさん mailto:sage [2008/02/13(水) 17:30:07 ] let使えよ selfが汚染されるだろ
43 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 23:27:54 ] 変数 arg が string で空ではない事を判定するのは こんな感じだと思うんですが (and (stringp arg) (not (string= arg ""))) これに相当する標準のコマンドってありますか?
44 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 23:34:22 ] (equal arg "")じゃダメなん?
45 名前:デフォルトの名無しさん mailto:sage [2008/02/17(日) 23:37:09 ] ああnonempty stringで真にしたいのか。ない、そんなの。
46 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 02:30:34 ] lisp のファイル内に時々 ^L (Control-L) だけの行があるけど あれ何のためにあるの?
47 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 04:11:13 ] 改ページ
48 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 10:15:45 ] Lispに限らず見かけるけど。 a2ps-j とかはそれを認識して改ページしてくれるので、 見やすくするために入れる。
49 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 13:19:31 ] EmacsのCソースコードにも入ってるよ。 一つのソースファイルをいくつかのセクションに分けたいときに使ってるね。 Emacsではbackword-page (C-x [), forward-page (C-x ])でページ単位で移動できる。
50 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 00:51:29 ] >>47-49 なるほど。勉強になりました。
51 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 02:29:22 ] 文字列を N 回結合する関数ってありますか? (defun foo (str num) (let (i result) (dotimes (i num result) (setq result (concat result str))))) こんなのを作るしかないんですかね?
52 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 02:48:27 ] ないんじゃないかな、こんなのやってみたけど (defun X (s n) (apply 'concat (make-list n s)))
53 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 03:10:46 ] >>52 おお、素晴らしい。 そっちの方が色々応用できそうですね。
54 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 03:21:42 ] >> 53 カキコしたあと思い出したんだけど、前スレで同じ質問あったな。いくつかレスがついてる。 pc11.2ch.net/test/read.cgi/tech/1068467385/936 > perl の x 演算子みたいな関数って無い? > make-string の文字列版というか、 > (hogefunc 3 "abc") > => "abcabcabc" > みたいなやつ。
55 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 03:31:06 ] >>53 mapconcat の方がいろいろ対応できるよ
56 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 03:36:39 ] >>54 確認しました。 ありがとうございます。 941 :デフォルトの名無しさん:2007/09/08(土) 00:20:18 ということは、まとめると (mapconcat 'identity (make-vector 3 "abc") nil) が一番速いのかね >>55 みたいですね。 こういうコードをさらっと書けるように修行します。
57 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 08:20:28 ] (reduce 'concat (make-vector 3 "abc")) ;; ==> "abcabcabc" ぱっとみて思いついた。
58 名前:Zeno ◆5nZQbNmQPs [2008/03/28(金) 09:47:16 ] >>57 でもそれは >>51 のように順々に concat していくのと同様だから遅すぎである。 (reduce 'concat (make-vector 10000 "abc")) Time: 5182 ms (mapconcat 'identity (make-vector 10000 "abc") nil) Time: 2 ms
59 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 10:29:12 ] >>58 さっさと本スレで初心者にやさしく答えてあげてください。
60 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 22:07:36 ] こっちの方が速かった。 (mapconcat (lambda (x) "abc") (make-bool-vector 10000 nil) nil) くり返し回数が十分大きい場合はこっちのが速い (with-temp-buffer (let* ((n 10000) (s "abc") (l nil)) (while (/= n 0) (setq l (cons (= 1 (logand n 1)) l)) (setq n (lsh n -1))) (while (progn (if (car l) (insert s)) (setq l (cdr l))) (insert-buffer-substring (current-buffer) (point-min) (point-max))) (buffer-string)))
61 名前:デフォルトの名無しさん mailto:sage [2008/03/28(金) 22:50:02 ] >>60 思いつく柔軟さはいいと思うけど、 そんなコード氾濫してたら嫌だというのが正直なとこだな
62 名前:デフォルトの名無しさん [2008/03/29(土) 14:02:44 ] ならinline functionにすればいいじゃない
63 名前:デフォルトの名無しさん [2008/04/19(土) 05:38:06 ] Perlの $foo =~ s/abc/def/; みたいにして変数の中身を正規表現を使って置換することはEmacsLispで出来ますか? perfume-replaceをどう使っていいのか分かりません
64 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 06:58:41 ] >>63 replace-regexp-in-string
65 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 06:58:49 ] >>63 replace-regexp-in-string でいいんじゃね? と思ったが、 s/abc/def/ じゃなくて s/abc/def/g になっちまうな。 (let ((foo "abc123abc")) (setq foo (replace-regexp-in-string "abc" "def" foo))) ⇒ "def123def" replace-match なら s/abc/def/ になるかな。 (let ((foo "abc123abc")) (string-match "abc" foo) (setq foo (replace-match "def" nil nil foo))) ⇒ "def123abc"
66 名前:デフォルトの名無しさん mailto:sage [2008/04/19(土) 07:09:01 ] >>65 あー s/abc/def/gでいいんです。すいません とりあえずreplace-regexp-in-stringとstring-matchの使い方を覚えます どうもありがとうございました
67 名前:デフォルトの名無しさん mailto:sage [2008/04/27(日) 07:34:32 ] ヘルプでcount-mathesの説明を見るとhow-manyのアライアスだということで how-manyのソースを見てみたところ (defun how-many (regexp &optional rstart rend) と、引数を3つしかとらないみたいなのですが バッファ内で(how-many "aa" nil nil nil)と引数を4つ渡して評価しても何故か 普通に動作します。 どうして引数を4つ渡しても動作するんでしょうか? emacsのバージョンは22です
68 名前:67 mailto:sage [2008/04/27(日) 07:50:01 ] すみません 使ってるバージョン(22)と見たソースのバージョン(21)が異なってただけでした。orz 22のソースだとちゃんと引数は4になってました。 あともう1つわからない点があって、22のcount-matchesの説明をc-h fで見ると the function behaves in all respects has if it had been called interactively. という英文があるんですが、これはどういう意味なんでしょうか? 特にin all respects has という部分がわかりません。
69 名前:Zeno ◆5nZQbNmQPs [2008/04/27(日) 08:12:30 ] >>68 その英文は少々不自然である。 例えばそれは if interactive is t, the function behaves as if it had been called interactively (in every respect). (もし `interactive' が t であるならば、この関数は interactive に呼ばれた時と同じ動作をする。) と訂正されるべきだろう。 "has" は "as" であって、単純なタイポである。
70 名前:67 mailto:sage [2008/04/27(日) 08:23:11 ] >>69 変な英文だと思ったらtypoだったんですね。 わかりました、ありがとうございます。
71 名前:Zeno ◆5nZQbNmQPs [2008/04/27(日) 08:40:00 ] >>70 貢献できて嬉しいよ。
72 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 03:42:36 ] 関数のカリー化はできないのでしょうか?
73 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 03:52:54 ] プ
74 名前:デフォルトの名無しさん mailto:sage [2008/04/30(水) 20:39:14 ] emacs lisp からcommon lispのcl-whoなどのパッケージを使う方法ないでしょうか?
75 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 15:16:22 ] Google Desktop の検索結果に time というプロパティがあり、それを通常の日付/時間表示に変換する方法が分かりません。どうすればいいのでしょうか? ;Google Deskitop の time の値(milie second): 128542440648970000 ; 試してみたこと。 ; current-time-string に渡すため (high low)のフォーマットにしようとこころみた。 (let* ((second 128542440648970) (high (/ second 65535)) (low (logand second 65535))) (List high low)) ;こんな結果になる。 (-380 28938)
76 名前:デフォルトの名無しさん mailto:sage [2008/05/05(月) 19:21:47 ] (let* ((second "128542440648970") (high (calc-eval (concat second " / 65535"))) (low (calc-eval (concat "and(" second ",65535")))) (list high low)) => ("1961431916.52" "28938") で結果は正しい?
77 名前:デフォルトの名無しさん [2008/05/08(木) 12:32:31 ] >>76 レスありがとう。 'high' が integer じゃないって怒られた。だめみたいです。
78 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 13:15:07 ] それくらい自分で型変換しようぜ…
79 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 14:11:31 ] >(concat second " / 65535") 65535 じゃなくて 65536 じゃないか?
80 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 16:53:42 ] emacs21 --batch --eval "(hoge ...) " の出力が日本語を含むリストのはずなのですが \222 が連続して並んでます nkfでも変換できないみたいです どうすれば普通の日本語にできるのでしょうか?
81 名前:デフォルトの名無しさん mailto:sage [2008/05/08(木) 17:05:32 ] >>80 --batch の出力は必ず iso-2022 になるはず。
82 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 18:02:06 ] emacsで.emacs.elファイルが開かれている場合、閉じるときにeval(してエラーがあれば警告し)たいのですが、良い方法をお分かりの方、教えてくださると幸いです。 ちなみに、 www.jaist.ac.jp/~n-yoshi/tips/junk_elisp.html#bytecompile の、保存時に自動バイトコンパイルするよう設定を参考に、(byte-compile-file "~/.emacs.el")を(eval-current-buffer)に書き換えたりしてみたのですが、それだと、Emacsが重くなってダメでした。 高林哲氏のauto-save-buffersを使っているせいもあるんでしょうが。
83 名前:デフォルトの名無しさん mailto:sage [2008/05/11(日) 22:45:10 ] >>82 その真上にある終了時に byte-compile ってやつはダメなの?
84 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 02:51:56 ] >>82 kill-buffer-query-functions で eval してはどうでしょうか。 (add-to-list 'kill-buffer-query-functions (lambda () (when (string= (expand-file-name "~/.emacs.el") (buffer-file-name)) (eval-buffer)) t))
85 名前:82 mailto:sage [2008/05/12(月) 05:10:30 ] >>84 的確なレスありがとうございます。 さっそく試したところ、うまいこと動きました。 ただ、やはり、バッファ終了時ではなく、手動保存時に add-hookすることができればそれがベストかなと、 思い直した次第です。 つまり、'after-save-hookだとauto-save時にも適用されてしまいますが、自分でC-x C-sした時だけeval-bufferするようなことって、できますでしょうか? たびたびすいませんです。これで最後の質問にいたします。
86 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 08:28:30 ] >>85 eval-bufferして本来の動作をするようなelispを定義して C-xC-s のコマンドに上書きすればいいだけじゃないか。
87 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 08:28:31 ] そういうコマンド書いて C-x C-s に割り当てればいいんじゃないかな。
88 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 08:58:59 ] >>85 interactive-p で auto-save かどうかを判定できるかも。
89 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 09:30:03 ] 選択範囲内のすべての行の先頭にタブを入れたいのですが, どうすればいいですか? わかる方がいましたら教えてください。
90 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 09:43:01 ] >>89 マークして C-x r t C-q TAB RET 基本的な操作は本スレで質問しような。
91 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 15:52:28 ] >>81 なぜかうちの環境ではならない ubuntu7.10
92 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 12:03:29 ] >>90 そんな長いコマンドがちょっといやで, C-c C-tあたりでできるようにしたいです
93 名前:デフォルトの名無しさん mailto:sage [2008/05/13(火) 13:28:35 ] >>92 じゃあチラシの裏に書く前にさっさとそうしてください。
94 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 07:24:04 ] opensuse11 初心者だけど、manページが文字化けする。。。。
95 名前:デフォルトの名無しさん mailto:sage [2008/07/04(金) 09:18:57 ] elispでもマクロがあるんだねぇ。しらなかった。試しに作ったけど (defmacro definsert (name str) (let ((dstr (gensym)) (len (gensym))) `(defun ,name () (let* ((,dstr (concat ,str ,str)) (,len (length ,str))) (insert ,dstr) (backward-char ,len))))) ( definsert insert-double-aho "aho") (insert-double-aho) => ahoaho カーソルの位置 最初のahoの後ろ インデントは適当になおしてね。また、これは車輪の再発明でinsert-pairが 標準であることを付け加えておきますね。
96 名前:デフォルトの名無しさん [2008/09/28(日) 07:16:03 ] 一行コピーの一番エレガントな実装を教えてください。 取り合えず手元にあるものではこんな感じ。 (defun duplicate-line (n) (interactive "p") (save-excursion (copy-region-as-kill (line-beginning-position) (progn (forward-line 1) (point))) (dotimes (i n) (yank)))) ちなみに、コピー後のカーソル位置は任意です。(カラムが移動するのはイヤン)
97 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 08:05:33 ] ;; エレガントかどうか知らんけど、最終行でも動作が変わらないようにしてみました (defun duplicate-line (n) (interactive "p") (save-excursion (let ((str (concat (buffer-substring (line-beginning-position) (line-end-position)) "\n"))) (forward-line) (when (= (line-end-position) (point-max)) (insert "\n")) (dotimes (i n) (insert str)))))
98 名前:デフォルトの名無しさん mailto:sage [2008/09/28(日) 10:44:45 ] (fset 'duplicate-line [?\C-a ?\C- ?\C-e escape ?w ?\C-m ?\C-y ?\C-a ?\C-p])
99 名前:96 mailto:sage [2008/09/28(日) 11:13:49 ] ありがとうございます。 >>97 確かに最終行が改行で終わってないと動作がおかしいですが、 ある意味正しいというか、あまりないことなので現状でも いいかなという気もします… >>98 マクロも考えたんですが、カーソルのカラム位置が移動しちゃうのと 一回のUndoで元に戻らないのがちょっと微妙です。
100 名前:96のお父さん [2008/09/28(日) 11:34:40 ] (insert (save-excursion (concat (buffer-substring (line-beginning-position) (line-end-position)) "\n")))
101 名前:96のお父さん [2008/09/28(日) 11:36:45 ] 失礼。 × (insert (save-excursion (concat (buffer-substring (line-beginning-position) (line-end-position)) "\n"))) ○ (save-excursion (insert (concat (buffer-substring (line-beginning-position) (line-end-position)) "\n"))) どっちでもいいけどな。
102 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 13:26:48 ] 質問です。 grep-find で、あちこちの .svnディレクトリ以下を無視したいのですが、 参考:.svnを除外してfindする snak.tdiary.net/20081008.html#p02 今は毎回、-name .svn -prune -o を手で付け加えていて面倒なのです。 そこで、デフォルトでこのオプションが追加されるようにしたいのですが、で きたらgrep.elはそのままで、.emacs.el で設定したいのです。どうしたら良い でしょうか?
103 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 13:35:06 ] なんか自己解決しました。grep-findじゃなくてrgrepだと.svnディレクトリを デフォルトで無視してくれてるみたいです。 もっと調べてから質問するべきでした。すみません。
104 名前:デフォルトの名無しさん mailto:sage [2008/11/22(土) 14:24:45 ] すみません、>>102-103 です。 Emacs本スレに書いたつもりの誤投稿でした。本当にごめんなさい。
105 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 11:27:34 ] Emacs Lispでwgetみたいなことはできますか?
106 名前:デフォルトの名無しさん [2008/12/03(水) 15:34:26 ] 質問です。 x と lst が与えられたとき、x を lst から取りだす CAR と CDR の適用列を返す 関数 co を定義しなさい。 coは、そのような適用列が存在しない場合は NIL を 返すものとする。
107 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 15:43:05 ] >>106 > x と lst が与えられたとき、x を lst から取りだす CAR と CDR の適用列を返す > 関数 co を定義しなさい。 この文章は 命令 とか 指示 とかいった文章で > coは、そのような適用列が存在しない場合は NIL を返すものとする。 この文章は 補足 とか 追加説明 とかいった文章だな。 で質問は何?
108 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 17:02:51 ] ;; >>106 エスパーして作ってみた (mapc 'require (cl el-expectations)) (defun co (x lst &optional acc) (assert (listp lst)) (macrolet ((recur (&rest lst) `(co ,@lst))) (let ((cur (car lst))) (cond ((null cur) nil) ((and (atom cur)) (if (eq x cur) (cons 'car acc) (recur x (cdr lst) (cons 'cdr acc)))) ((listp cur) (or (recur x (car lst) (cons 'car acc)) (recur x (cdr lst) (cons 'cdr acc)))) (t (error "unexpected lst: %s" cur)))))) ;; test cases (expectations (error (co 'a '())) (expect (co 'not-found '())) (expect (co 'a '(a)) '(car)) (expect (co 'b '(a b c)) '(car cdr)) (expect (co 'c '(a b c)) '(car cdr cdr)) (expect (co 'x '((x) a b c)) '(car car)) (expect (co 'x '((a b c x) d e f)) '(car cdr cdr cdr car)) (expect (co 'x '(a b (c x d) e f)) '(car cdr car cdr cdr)))
109 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 17:04:03 ] (mapc 'require '(cl el-expectations)) ね
110 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 18:41:44 ] >>106 どこの学校の宿題 ?
111 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 21:04:29 ] 戸塚ヨットスクール
112 名前:デフォルトの名無しさん mailto:sage [2008/12/03(水) 21:40:53 ] ;; とりあえず質問者からの動作報告求む (defun* co (x lst &optional (compare 'eq)) "COMPAREで比較関数を指定できるようにしてみた。 引数無しでは`eq'を使って比較する。" (assert (listp lst)) (labels ((f (lst acc) (let ((cur (car lst))) (cond ((null cur) nil) ((and (atom cur)) (if (funcall compare x cur) (cons 'car acc) (f (cdr lst) (cons 'cdr acc)))) ((listp cur) (or (f (car lst) (cons 'car acc)) (f (cdr lst) (cons 'cdr acc)))) (t (error "unexpected lst: %s" cur)))))) (f lst '()))) ;; てすけ (expectations (error (co 'a '())) (expect (co 'not-found '())) (expect (co 'a '(a)) '(car)) (expect (co 'b '(a b c)) '(car cdr)) (expect (co 'c '(a b c)) '(car cdr cdr)) (expect (co 'x '((x) a b c)) '(car car)) (expect (co 'x '((a b c x) d e f)) '(car cdr cdr cdr car)) (expect (co 'x '(a b (c x d) e f)) '(car cdr car cdr cdr)) (expect (co "foo" '("bar" "foo") 'string=) '(car cdr)))
113 名前:デフォルトの名無しさん [2008/12/04(木) 15:17:06 ] 遅くなりました106です。 関数coを定義しなさいという問題でした。 みなさんのおかげできました。 ありがとうございました。
114 名前:デフォルトの名無しさん mailto:sage [2008/12/05(金) 16:07:00 ] 質問をさせてください。 read-string等でminibufferから読み込みをしている最中にC-x C-bとかすると (if enable-recursive-minibuffers (error "Command attempted to use minibuffer while in minibuffer") (error "Cannot switch buffers in minibuffer window")) なんですが condition-caseでは捕まえられないし(switch-to-buffer中のエラー?) *Backtrace*でqを押すとread-stringが戻る事無くトップレベルに返ってしまいます。 こういう場合はどう対処すればよいのでしょうか? 非同期プロセスと通信するプログラムを書いているので いきなりtop-levelに返ってもらっては困るのです。 よろしくお願いします。
115 名前:114 mailto:sage [2008/12/05(金) 16:18:25 ] ifのthen式とelse式が逆でした
116 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 23:20:41 ] すみません、 >>106 を>>108 >>112 より簡単に書けませんか? よく分かりません
117 名前:デフォルトの名無しさん mailto:sage [2008/12/17(水) 23:50:38 ] 宿題をここで教えてもらうような人間が提出するには コードが綺麗すぎて困っているのですね、わかります。
118 名前:デフォルトの名無しさん mailto:sage [2008/12/18(木) 15:56:12 ] (defun co (x lst) (let ((f (lambda (node acc) (cond ((eq node x) acc) ((consp node) (or (funcall f (car node) (cons 'car acc)) (funcall f (cdr node) (cons 'cdr acc)))))))) (funcall f lst '())))
119 名前:デフォルトの名無しさん [2008/12/24(水) 16:57:33 ] ある eval に時間のかかる式を 開発中に eval-buffer したときは eval せずに, compile 時のみに eval したいんですが, どうするんでしょうか? (eval-when (compile) (hoge)) これはうまくいっていないように思う. Emacs 22.
120 名前:デフォルトの名無しさん mailto:sage [2008/12/24(水) 22:25:20 ] eval-when-compile
121 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 00:44:53 ] eval-when-compile は eval-buffer でも eval される. 質問の仕方を変えると, byte compiling 中のみ Non-NIL に なる変数はどうすれば定義できるか? (defvar hoge-byte-compiling-p ...)
122 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 09:15:49 ] >>119 と>>121 じゃ問題が全然違うだろ。
123 名前:デフォルトの名無しさん [2008/12/25(木) 12:25:52 ] 質問がへたでごめんなさい. eval-when-compile は eval-buffer のときも byte-compile のときも eval されるが, 今どちらなのかを区別したいです.
124 名前:デフォルトの名無しさん mailto:sage [2008/12/25(木) 16:32:59 ] >>121 backtrace/backtrace-frame を使って byte-compile-form あたりの有無で判定 できると思う.
125 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 11:11:43 ] 大学2年です 春休みを使って、emacs lispを勉強して、より快適な環境を作り、雑多な手間を省きたいんですが どのくらいのレベルに行けば、emacs lispを扱えるレベルと言えるんでしょうか? 現在、自分はレベル1でしょうか 実は、Pythonのほうが興味があって、Pythonのほうがメインの勉強だったりします Pythonでも下記のリンクのようなことは、できそうですよね? Lisp(emacs lispとの違いがまだよくわかっていませんが)のほうがスマートなんでしようか 古いネタですが、叩き台のネタに Scheme:Schemeプログラマのレベル10 ttp://practical-scheme.net/wiliki/wiliki.cgi?Scheme%3aScheme%a5%d7%a5%ed%a5%b0%a5%e9%a5%de%a4%ce%a5%ec%a5%d9%a5%eb10
126 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 23:23:43 ] 新しいmajor-modeを書いたり、標準のelispとか誰かが作ったelispのバグを取ったり拡張を書いたり できるようになれば十分扱えてるといっていい状態だろうね それ以外の項目については何が言いたいのかよくわからない
127 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 00:28:15 ] Lispの方がスマートに解ける問題もあればPythonの方が良い場合もあるでそ。 なんとなく思いだしたのでこれ貼っとく。 ttp://www.aoky.net/articles/steve_yegge/tour_de_babel.htm
128 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 06:58:22 ] >>127 リンク、サンクスです この人の寸評だと、このころはRubyのほうが優れた言語とされていたんだね elispで何ができるかというのは、漠然とだけど、掴めるんだけど Schemeでなにができるかがよく掴めない(どういう用途に優れているとか) 単なる教養としての言語なのかな 言語仕様として一貫性があるとか、そんな感じなのかな Scheme関連のチュートリアルを読んでみます
129 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 11:50:11 ] 一応言っておくけど、Lispを学びたいからEmacs Lispをやるっていうのなら、 括弧になれるとか入口程度に思っておいた方がいいよ。 Emacs Lispは、見た目、Lispなだけだから。 末尾再帰を最適化できないから、再帰で書くことが事実上できなかったり、色々とLispらしくないから。
130 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 12:40:51 ] Emacs Lispはテキストエディタのマクロとは思えないほど多機能だけど >>129 に書かれてるような問題があるよということを>>127 の人の最近のポストで書いてるね。 ttp://steve-yegge.blogspot.com/2008/11/ejacs-javascript-interpreter-for-emacs.html Emacs LispでJavascriptを実装しちゃうってのも凄い話だけど。 あとLispの方言の説明がおもろい。 >Lisp is a whole family of languages, and can be broken down approximately as follows: > * Scheme is an exotic sports car. Fast. Manual transmission. No radio. > * Emacs Lisp is a 1984 Subaru GL 4WD: "the car that's always in front of you." > * Common Lisp is Howl's Moving Castle.
131 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 13:02:07 ] >>130 コメント欄みてみるとハウルネタがやたらウケてるな。このアニオタどもめ!
132 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 13:11:50 ] 言語仕様に問題のあるEmacs Lispだけどlispの総合環境としてはソースレベルデバッガあり、トレーサあり、 プロファイラあり勿論ディスアセンブラもありと割と至れり尽せりだったりする
133 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 13:43:30 ] >>130 ハウル、みていないんだがw Emacs Lisp の"the car that's always in front of you."をYahooに訳させたら、 いつもあなたの正面にある車。と訳したんだけど、どういう意味だ 1984 Subaru GLは ttp://farm1.static.flickr.com/65/208717197_bde1198885.jpg らしいけど、古い4WDって話か >>132 そういう通常利用の一個上を行く使い方ってどういうのがあるんですかね 潜在能力が高いなら、もっと踏み込んで勉強したいところなんですが ちょっとEmacs Lispをかじっただけですが、けっこうのことをEmacs1つでできそうだなと想像するんですが Lisp関連であと2日ぐらいググって、今後のカリキュラムを組もうかな 言語仕様50ページだったSchmeは、ちょっとやりたくなるね Schmeをやってから、Emacs Lispをやったほうが言語仕様も理解しやすいかな 関数名が長いのってEmacs Lispだけじゃなくて、Schmeもそうなんだね 略記もあるみたいだけど 個人的に長いほうが好きかも 保守しやすそうだし チラシの裏 年齢(生まれ)比較 Lispは1958年生まれの51歳 Schmeは1970年代生まれの30代 Comon Lispは1984生まれの25歳 Emacs本体(Emacs Lisp)は約1976年生まれ, 32〜33歳 Pythonは1991生まれの18歳 C言語は1972年生まれの37歳
134 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 16:19:28 ] >>133 "the car that's always in front of you." は、俺だったら 「いつもそこにある車」 って訳すかな (=古くてダサくて定番中の定番で面白くないけど、結局乗るのはこの車なんだよね、 的な意味で) あと、「Scheme」 だぞ。typoかと思ったけど全部Schmeって書いてるってことは 本気で勘違いしてる?
135 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 16:27:08 ] schemeやelispはhogeライブラリのfoo関数ってのをhoge-fooみたいに定義せにゃならんからね この規則を使って階層になったライブラリの関数、hogeライブラリの中にあるfooライブラリの関数fの名前を付けると hoge-foo-fのようになってしまう 長くなるのは仕方ないけど、この規則ででかいアプリケーションは書きたくないよね
136 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 16:31:26 ] the car that's always in front of you というネタの原型はフォードT型。 あまりに売れすぎて、「どんなレーシングカーもフォードTの前に出ることはできない。どれだけ抜いてもまだ前にもう1台いる」というジョークが生まれたので。 スーパーカーとの対比で、性能はプアだけどみんなが使ってる普及版っていうニュアンスだろうな。 elispはよくも悪くもEmacsと切り離せないものなので、本当に言語の勉強をしたいならcommon lispかschemeのほうがいいよ。 逆にEmacsいじって遊びたいならelisp使うしかないし。
137 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 16:39:45 ] >>136 134だが勉強になった。トン
138 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 18:12:24 ] >>136 > elispはよくも悪くもEmacsと切り離せないものなので、本当に言語の勉強をしたいならcommon lispかschemeのほうがいいよ。 言語の勉強したいまでは、まだ至っていません Emacsを使いこなせるようになりたいだけで Schemeは、知っていて損はなさそうですね チュートリアルの語彙も特徴的で好奇心をそそられる 英語・日本語の資料も豊富そうで資料には、困らないだろうし プログラマとしての幅が広がるなら、なおうれしいかな
139 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 00:26:28 ] 俺はバッファ、リージョン、選択範囲なんか用の map関数を書いてよく使ってるんだがこれ便利よ 色々関数を別途定義しといて 関数を行に対して呼び出す 2chに書き込むときによくやるのは タブ→スペース変換と 半角スペース→nbsp変換 こうするとプログラムはインデントされて見やすい ところで、久しぶりにここきたんだが xyzzyスレってどこいったの? 見つからないんだけど
140 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 00:34:37 ] ソフトウェア板とWindows板に1つずつあるよ。
141 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 00:45:02 ] あったあった、さんきゅー
142 名前:デフォルトの名無しさん [2009/02/19(木) 18:25:06 ] 行の(半角相当で)80文字目の位置をを色づけしたいとおもったんですが, とりあえず思いついた '(("^......................................................\ .........................\\(.\\)" 1 highlight-long-line-face append)) というのをfont-lock-add-keywordsして加えたところ、 当然ながら全角文字をいれると後ろにずれました 半角で80文字目の位置をを色づけする方法について、 なにかお知恵を拝借できませんでしょうか?
143 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 19:21:13 ] www.emacswiki.org/emacs/ColumnMarker
144 名前:デフォルトの名無しさん mailto:sage [2009/02/19(木) 22:19:43 ] 質問者じゃないけど めちゃめちゃ重いなそれw
145 名前:デフォルトの名無しさん mailto:sage [2009/02/20(金) 15:29:29 ] >>143 ありがとうございます そんなものが作られてたんですね、試してみます
146 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 22:05:35 ] >>144 うまい工夫をしないと速くならないだろうからなぁ。常に80文字目を数えるって いうことだしね。
147 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 23:00:47 ] cygwin環境下でgaucheをリッチに使いたくて 行ごとに色を変えたいんですが教えてください まさに自分がやりたいことがこれ ttp://pitecan.com/codeblog/2006/01/emacs.html 上のプログラムをざっと読んだ感じ、 色の変更に関するプリミティブな部分ってのは 「put-text-propertyに背景色を設定したfaceを設定する」 というように感じたのですがあってますか? それらしきコードを書いてみたのですがうまくいかず・・ (setq symbol (make-symbol "test")) (setq face (make-face symbol)) (set-face-background face "DarkSeaGreen1") (point) 134 ←評価結果 (point) 146 ←評価結果 (put-text-property 134 146 'face face)
148 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 23:02:07 ] あ、補則。このコードは行は意識してなくて、とりあえず指定箇所の背景色を変えたいだけです
149 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:19:05 ] とりあえずfont-lock-faceにしたら動いたけど (put-text-property 1 20 'font-lock-face 'highlight)
150 名前:デフォルトの名無しさん mailto:sage [2009/02/24(火) 00:39:13 ] ありがとうございます。 それを実行したときはtが返るんですよね? M-x list-faces-displayで書いてあるフェイスをいくつかうちこんでは見ましたが 自分の環境ではnilが返ってきて色が変わらないです ↓動作はよくわかってませんが、これを切り替えた場合はちゃんと色が変わります (global-font-lock-mode t) (global-font-lock-mode nil) 今日は寝て、また明日調べてみますわ
151 名前:デフォルトの名無しさん [2009/02/25(水) 12:19:45 ] ver22で拡張された \,(function \1) みたいなのが replace-match では使えない(不正な\エラーになる)のは何で? こんな感じ↓ (re-search-forward "\\(.+\\)" nil t) (replace-match "\\,(my-func \\1)" nil nil) => Invalid use of `\' in replacement text
152 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 15:06:59 ] est
153 名前:デフォルトの名無しさん mailto:sage [2009/02/25(水) 17:08:20 ] >>151 君の頭が腐っているというのを疑った方がいいよ
154 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 00:26:35 ] >>151 プログラマブル正規表現だっけ? よくわからん
155 名前:デフォルトの名無しさん mailto:sage [2009/02/27(金) 01:11:40 ] プログラマブルなのが使えるのは、インタラクティブに実行した場合だけでしょ。 NEWS *** When used interactively, the commands `query-replace-regexp' and `replace-regexp' allow \,expr to be used in a replacement string, ちなみに replace-regexp を実行したら次のように展開された(repeat-complex-command)。 (replace-regexp "\\(.+\\)" (quote (replace-eval-replacement replace-quote (my-func (match-string 1)))) nil (if (and transient-mark-mode mark-active) (region-beginning)) (if (and transient-mark-mode mark-active) (region-end))) で、replace-regexp をプログラムの中で使うのはbadなので、 (while (re-search-forward "\\(.+\\)" nil t) (replace-match (my-func "\\1") nil nil))
156 名前:151 mailto:sage [2009/02/28(土) 01:47:45 ] >> 154 そんな名前があるとは知らなんだ。 google先生は記号の検索には弱いしね・・・ >> 155 サンクス。インタラクティブ専用だったんだ。 よく使う置換の組を「お気に入り」みたいに登録して一発で呼び出せるlispを作ってたんだけど、 仕組み上、正規表現は自由に指定可能だから関数決めうち実行ができなくて。 プログラマブル正規表現は非対応とあきらめるしかないか。
157 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 03:23:53 ] >> と数字の間は開けないで
158 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 22:18:39 ] 起動時にインタラクティブな関数を自動的に呼び出すにはどうしたらいい? 2画面で起動して、片方にSchemeインタプリタを起動したい 2画面の分割は、.emacsに(split-window-vertically)を追記したらうまくいったが M-x run-schemeが呼び出せないんだ
159 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 22:50:34 ] (run-scheme) ではだめなのけ?
160 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 23:14:03 ] だめぽ。そうするとこんなわけわからんエラーが出る Wrong number of arguments: #[(cmd) "\304\305!\204^Y^@\306^H!^Y\307\310\311 @\312 A%q\210\313 \210)^H^R\305^S\314\305\ !\207" [cmd cmdlist scheme-program-name scheme-buffer comint-check-proc "*scheme*" scheme-args-to-list apply make-comint "s\ cheme" nil inferior-scheme-mode pop-to-buffer] 6 ("/usr/share/emacs/21.2/lisp/cmuscheme.elc" . 6428) (list (if current-pref\ ix-arg (read-string "Run Scheme: " scheme-program-name) scheme-program-name))], 0
161 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 23:18:46 ] describe-function(C-h f)ぐらい覚えような
162 名前:デフォルトの名無しさん mailto:sage [2009/02/28(土) 23:29:14 ] >>160 (run-scheme scheme-program-name)
163 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 09:48:57 ] (call-interactively 'run-scheme)
164 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 14:28:41 ] >>161-163 d牛d牛トーン・・カツ! すばらしく快適な環境になった
165 名前:デフォルトの名無しさん mailto:sage [2009/03/01(日) 17:07:00 ] >>164 (call-interactively 'run-scheme) これしらんかった、すげぇ勉強になった、ありがとう いままでintaractive関数の機動失敗時はいつも.elの中調べてた。
166 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 03:01:42 ] elispで呼び出し元の関数名を調べるにはどうしたらよいのでしょう?
167 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 15:59:27 ] Meadow3(Emacs22)の画像インライン展開で質問です。 ヘルプ見る限り、create-imageはファイルからだけじゃなくデータも直接読んで 画像を作ってくれるみたいなんですが、うまくいきません。 insert-file-contents-literallyでテンポラリバッファに読み込んで渡してるんですが なにかやり方に問題があるのでしょうか? (insert-image (create-image "~/hoge.gif")) だと画像が出ますが、 (insert-image (create-image (with-temp-buffer (insert-file-contents-literally "~/hoge.gif") (buffer-string)) 'gif)) だとトウフが出てしまいます。
168 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 16:33:41 ] >>167 set-buffer-multibyte -> nil DATA-P -> t でどうです。
169 名前:デフォルトの名無しさん mailto:sage [2009/03/26(木) 16:43:04 ] >>168 素早い指摘陳謝です。 無事表示されるようになりました。 ヘルプはちゃんと読まないとだめですね。 unibyteとかmultibyteはまだよく理解してないので勉強します。 ありがとうございました。
170 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 13:49:09 ] 自分でメジャーモードとか作ろうと思った時に Infoとか書籍以外にこれは参考にすべきといったパッケージってなにがありますか? 色々眺めてるんですがみんな結構やり方が違っててよくわからなくなってきました。
171 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 15:03:54 ] >>170 Infoによるとtext-modeが最もシンプルだと言うから、text-modeがいいと思うよ。 Emacs22からdefine-derived-modeが使われててより簡単に作れるようになってる。 たった1行でも実行可能なのを今やってみて初めて知った。 (define-derived-mode hoge-mode nil "Hoge") あとは、キーマップを定義するだけ。 ま、そういうわけでEmacs21と22のtext-modeが参考になる。
172 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 15:55:22 ] >>171 回答ありがとうございます。 見てみましたが雛形に丁度良い感じですね。 text-modeを足掛りにして頑張ってみようと思います。 標準配布されてるパッケージのコードは 基本的に正しいやり方(?)で書かれていると思ってよいんですよね? #もっとスマートな方法があるのに変なやり方で無駄に処理を増やしてるとか #メモリを無駄に使ってしまう書き方だったりとか....
173 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 17:33:24 ] >>172 必要なことを必要なだけ書けばいいんですよ。 メジャーモードとして機能するためには最低限何が必要か。 そこに、自分が欲しいものを追加していくだけです。 またそのために、例えばsyntax-tableを独自に定義した方がいいならそうするし。 defcustomなんかはdefvarで済ますこともできるけど、ひとが作ったパッケージを 利用するときはdefcustomの方が分かりやすいと思うので、そう考えるならそうするしとか。 コードを書く上では、自分でこれでいいと思うコードを書けばいいんです。 あとは、慣習に従うと。
174 名前:デフォルトの名無しさん mailto:sage [2009/03/30(月) 18:51:55 ] コロン付きのキーワードシンボルってあんまり使われてない気がするんですが、 なにか歴史的理由とかバージョン間互換性とかの理由があったりするんでしょうか? alistのcarとかオプショナルな引数が沢山ある関数での&restで引数とる時のラベリングとか 値を取らないことを明示的に示してて便利だと思うんですけど(elispモードで色分けもされるし)、 色々ソース眺めた感じ、使ってるパッケージはガンガン使ってるんですが、 まったく使ってないところはcustomとかtext-property等ぐらいでしか使ってません。
175 名前:デフォルトの名無しさん [2009/04/15(水) 16:51:29 ] ttp://www.bookshelf.jp/texi/elisp-manual/21-2-8/jp/elisp_11.html#SEC138
176 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 18:05:50 ] よもや返事がくるとは思わなかったw 値が設定出来無い=ラベルとか専用ってことがコンパイラレベルで保証されてて よさげだと思うんですが・・・ とりあえずassocのcarはシンボル、plistと関数のrestはキーワードシンボルで 書き進めちゃってるんですが、いいんだろか・・・
177 名前:デフォルトの名無しさん [2009/04/15(水) 20:11:53 ] コードリードしてるとき、コメントアウトうざいなーと思うことが多々あったので、 こんなコード書いてみました。スマートじゃない部分あるのでまだ改良しますが、 方向性として他に方法ないかアドバイスお願いします。
178 名前:デフォルトの名無しさん [2009/04/15(水) 20:13:51 ] 改行多すぎと怒られたのでbase64-encode-region KGRlZnVuIGhpZGUtY29tbWVudC1mYWNlICgpIAogICJmYWNlIGNvbW1lbnQgaGlkZSIgCgkoaW50 ZXJhY3RpdmUpCiAgIDs7JygxIDIgMyAuLi4uIGNvbW1lbnQgZmFjZSBwb2ludCBsaXN0KQoJKHNl dHEgY29tbWVudC13YWxrCgkJCQkobG9vcCBmb3IgeCBmcm9tIDEgdG8gKHBvaW50LW1heCkKCQkJ CQkJCWZvciBsb2ZhY2UgPSAobGlzdCAoZ2V0LXRleHQtcHJvcGVydHkgeCAnZmFjZSkgeCkKCQkJ CQkJCWlmIChvcgoJCQkJCQkJCQkobWVtYmVyICdmb250LWxvY2stY29tbWVudC1kZWxpbWl0ZXIt ZmFjZSBsb2ZhY2UpCgkJCQkJCQkJCShtZW1iZXIgJ2ZvbnQtbG9jay1kb2MtZmFjZSBsb2ZhY2Up CgkJCQkJCQkJCShtZW1iZXIgJ2ZvbnQtbG9jay1jb21tZW50LWZhY2UgbG9mYWNlKQoJCQkJCQkJ CQkpIGNvbGxlY3QgKG50aCAoLSAobGVuZ3RoIGxvZmFjZSkgMSkgbG9mYWNlKSkpCgkoYWRkLXRv LWxpc3QgJ2NvbW1lbnQtd2FsayAnLTEpIDsgYmFkIGNvZGUKCShhZGQtdG8tbGlzdCAnY29tbWVu dC13YWxrICctMiB0KSA7IGJhZCBjb2RlCgogICA7Oycoc3RhcnQgZW5kIHN0YXJ0IGVuZCBzdGFy dCBlbmQgLi4ub3ZlcmxheSByZWdpb24gbGlzdCkKCShzZXRxIGNvbW1lbnQtd2FsawoJCQkJKGxv b3AgZm9yIHJpZ2h0U3RlcCBpbiBjb21tZW50LXdhbGsKCQkJCQkJCWZvciBsZWZ0U3RlcCBpbiAo Y2RyIGNvbW1lbnQtd2FsaykKCQkJCQkJCWlmIChub3QgKGVxICgrIHJpZ2h0U3RlcCAxKSBsZWZ0 U3RlcCkpIGFwcGVuZCAobGlzdCByaWdodFN0ZXAgbGVmdFN0ZXApKSkKCShzZXRxIGNvbW1lbnQt d2FsayAoZGVscSAnLTEgY29tbWVudC13YWxrKSkgOyBiYWQgY29kZQoJKHNldHEgY29tbWVudC13 YWxrIChkZWxxICctMiBjb21tZW50LXdhbGspKTsgYmFkIGNvZGUKCgkoc2V0cSBjb21tZW50LW92 LWxpc3QKCQkJCShsb29wIGZvciBzdGFydCBpbiBjb21tZW50LXdhbGsgYnkgIydjZGRyIAoJCQkJ CQkJZm9yIGVuZCBpbiAoY2RyIGNvbW1lbnQtd2FsaykgYnkgIydjZGRyIGNvbGxlY3QgKG1ha2Ut b3ZlcmxheSAoLSBzdGFydCAxKSBlbmQpKSkKICAgOzsgd2h5IG5lZWQgcmVzPwoJKGxldCAocmVz KQoJCShkb2xpc3QgKG92IGNvbW1lbnQtb3YtbGlzdCByZXMpCgkJCShvdmVybGF5LXB1dCBvdiAn Y2F0ZWdvcnkgJ2hpZGUtY29tbWVudC1mYWNlKQoJCQkJCQkJCQkJCQkJCQkJCQkJCTsJCShvdmVy bGF5LXB1dCBvdiAnY2xlYW51cCB0KQoJCQkob3ZlcmxheS1wdXQgb3YgJ2ludmlzaWJsZSB0KQoJ CQkJCQkJCQkJCQkJCQkJCQkJCTsJCShvdmVybGF5LXB1dCBvdiAnZGlzcGxheSAiIikKCQkJKSkp
179 名前:デフォルトの名無しさん [2009/04/15(水) 20:16:39 ] 連投ごめんなさい、コード内容は、 コメントのfaceを見て、overlay作成し不可視にするlispです。
180 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 20:29:36 ] ろくに読まずに発言するけど、 ループのところってnext-property-changeで検索じゃだめなん?
181 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 20:34:18 ] >>175 elisp-manual-21-2.8.tar.gz を見てみたが、 keyword-symbols-constant-flag はすでになかった。
182 名前:177 mailto:sage [2009/04/15(水) 20:37:10 ] >>180 ありがとございます、それ知らなかったので調べてみたら、 自分がやってることは非効率極まりないことまでわかりました。 ちょっと書き換えてみます。
183 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 20:37:21 ] というよりkeyword-symbol自体がそんなに沢山使われてない。
184 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 20:43:06 ] >>182 自分は使ったことないけど、 comment-search-forward と backward なんていう もっとよさげな関数があったよ。
185 名前:デフォルトの名無しさん [2009/04/16(木) 23:21:38 ] >>176 Emacs19 用 Elisp マニュには keyword で始まる名前自体がなくて : に関する記述もなさげだから Emacs20 あたりで追加された新機能だと思われ 古い Emacs との互換性が不要なら使ってもいいんでないかな
186 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 16:03:55 ] 自分自身を remove-hook するような hook は邪道でしょうか? 具体的にはバッファの内容を別の形式で別ウィンドウに表示するアプリを作っています。 編集中の内容をリアルタイムに反映させるため post-command-hook で監視を行なおうと思っているのですが、 変換後の表示バッファが消されていた場合、自分自身で remove-hook して後始末をしたいなと・・・
187 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 16:44:34 ] 自分自身でremove-hook するって、子bufferの有無をずっと監視するってこと? 別ウィンドウで表示しているbufferのkill-buffer-hookに buffer local で post-command-hookのhookをremove するものを 仕掛けておくって思いついたんだけど、どうかな?
188 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 17:12:30 ] >>187 なるほど! どう考えてもその方がスマートですよね。一々 buffer-live-p しなくて済みますし。 ありがとうございます。
189 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 01:48:31 ] /bin/shとかだと``でコマンドの実行結果をテキストで得られるけど 同じことをelispでしたい場合どうすれば良い? バッククォートはlispでは別な意味なのでアレだが (print `date`)で"Fri Apr 24 01:47:15 JST 2009"のようなことは出来ないかな
190 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 01:55:51 ] >>189 ドゾー (print (shell-command-to-string "date"))
191 名前:デフォルトの名無しさん mailto:sage [2009/04/24(金) 23:42:19 ] さんきゅー!
192 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 12:11:19 ] buffer中で使った単語をリストアップするlispを書いてます。(想定する用途は、coding中にtypoした単語がないかチェックする) 単語とその出現回数のAssociationListを作って、新規に作ったbufferにinsertするようにしました。 できないのがありまして、 アルファベット順にsortするのが上手くできないです。(出現回数の方も同様にオプションでsortするようにしたいけど、後回しになってます) (sort (mapcar '(lambda (x) (car x)) word-alist) 'string-lessp) とsortしたら、sort対象のcar部分だけでなく、元のリストがsortされて、値がもどってくるにはどうしたらいいのでしょう? (defun my-list-words () (interactive) (save-excursion (goto-char (point-min)) (let (word word-alist cu-word) (while (re-search-forward "[-_a-zA-Z]+" nil t) (setq word (buffer-substring (match-beginning 0) (match-end 0))) (if (assoc word word-alist) (setcdr (assoc word word-alist) (1+ (cdr (assoc word word-alist)))) (setq word-alist (cons (cons word 1) word-alist)))) ;;;この下のS式が、上手く表現できない (setq word-alist (sort (mapcar '(lambda (x) (car x)) word-alist) 'string-lessp)) (pop-to-buffer "*words list*") (erase-buffer) (mapc '(lambda (x) (insert (format "%s\n" x))) word-alist) ))) 他の点でもアドバイスがあれば、お願いします。
193 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 15:35:33 ] >>192 sort は破壊的関数。元のリストを残して置きたいならリストのコピーを sort する。 でも、この場合には必要ないと思う。 比較関数の例: (lambda (x y) (> x y)) == '> word を取得するには、match-string が使える。 局所変数を使えば、assoc の呼び出しは1回でいい。 push を使ってもいい。
194 名前:192 mailto:sage [2009/05/05(火) 17:54:22 ] >>193 さん、ありがとうござます。 おかげさまで、想定通りに動くようになりました。 比較関数の書き方もわかりました。 pushについては、後ほど調べて、また書き込みます。 直したところ: match-string (setq word (match-string 0)) 局所変数、 (let、、に入れて、(setq current-word (assoc word word-alist)) 比較関数の書き方を直しました。 (sort word-alist '(lambda (x y) (string-lessp (car x) (car y)))) このようになりました。 (defun my-list-words () (interactive) (save-excursion (goto-char (point-min)) (let (word word-alist current-word) (while (re-search-forward "[-_a-zA-Z]+" nil t) (setq word (match-string 0)) (setq current-word (assoc word word-alist)) (if current-word (setcdr current-word (1+ (cdr current-word))) (setq word-alist (cons (cons word 1) word-alist)))) (sort word-alist '(lambda (x y) (string-lessp (car x) (car y)))) (pop-to-buffer "*words list*") (erase-buffer) (mapc '(lambda (x) (insert (format "%s\n" x))) word-alist)) ))
195 名前:192 mailto:sage [2009/05/05(火) 18:22:13 ] すいません、少し間違えてました。 sortした結果を (setq re-list (sort word-alist '(lambda (x y) (string-lessp (car x) (car y))))) のように受けないといけませんでした。 sort対象のリストは、破壊されてしまうのですね。sortされるように破壊されると思い込んでました。 (setq lst '((banana . 1) (apple . 2) (orange . 1))) (setq r (sort lst '(lambda (x y)(string-lessp (car x) (car y))))) r => ((apple . 2) (banana . 1) (orange . 1)) lst => ((banana . 1) (orange . 1) もう一度、直したものを張っておきます。 (defun my-list-words () (interactive) (save-excursion (goto-char (point-min)) (let (word word-alist current-word) (while (re-search-forward "[-_a-zA-Z]+" nil t) (setq word (match-string 0)) (setq current-word (assoc word word-alist)) (if current-word (setcdr current-word (1+ (cdr current-word))) (setq word-alist (cons (cons word 1) word-alist)))) (setq re-list (sort word-alist '(lambda (x y) (string-lessp (car x) (car y))))) (pop-to-buffer "*words list*") (erase-buffer) (mapc '(lambda (x) (insert (format "%s\n" x))) re-list)) ))
196 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 18:52:20 ] clの作法に則るとこんなんじゃろか。 ttp://paste.lisp.org/display/79688
197 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 19:17:11 ] hash を使って CL なしでやってみたよ。 paste.lisp.org/display/79690
198 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 19:37:33 ] あ、hashあるんだ。 >>197 の方が圧倒的に速いね。
199 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 20:40:33 ] hash って emacs lisp の info にあんまり使うなって書いてあった気がするから なんでも assoc で済まそうって癖がついてしまった。
200 名前:デフォルトの名無しさん mailto:sage [2009/05/05(火) 20:53:17 ] >>199 kwsk
201 名前:デフォルトの名無しさん mailto:sage [2009/06/24(水) 03:26:29 ] >>199 infoには、10項目以内なら連想リストの方が速いけど、それ以上の場合は ハッシュを使ったほうがいいと書いてあるぞ。
202 名前:デフォルトの名無しさん mailto:sage [2009/07/02(木) 23:02:53 ] elispの&optionalって省略されたときnilが設定されるようだが 使い方はこんな感じで良いのでしょうか? (defun iota (count &optional start step) (or start (setq start 0)) (or step (setq step 1)) (loop for n from start to (+ start (* (1- count) step)) by step collect n))
203 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 00:02:58 ] そんな感じ 省略時にnil以外の値という扱いのときはdocstringに書いておいた方がいいかな
204 名前:202 mailto:sage [2009/07/03(金) 00:59:59 ] >>203 docstringね ありがとう それとこの場合はこうか (setq start (or start 0)) (setq step (or step 1))
205 名前:202 mailto:sage [2009/07/03(金) 01:05:03 ] (setq start (or start 0) step (or step 1))
206 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 02:58:28 ] (eval-when-compile (require 'cl)) (defun* foo (a &optional b (c 5) &key d (e (user-login-name))) (list 'a a 'b b 'c c 'd d 'e e)) (foo 1) (a 1 b nil c 5 d nil e "bar") clだと全部使える。やっぱ、clはいいね。
207 名前:デフォルトの名無しさん mailto:sage [2009/07/03(金) 12:19:01 ] clにformat*ってのがあるといいんだけどなぁ
208 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 01:26:01 ] 作れよ
209 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 17:39:12 ] emacs-lisp 上での common lisp の関数/マクロ名と ピュアな common lisp の関数/マクロ名との マッピングの在処を知っている方いませんか? 例えば、 defun* → defun (cl*/el → cl) とかです。
210 名前:デフォルトの名無しさん mailto:sage [2009/08/11(火) 17:47:10 ] clモジュールのことか? cl.el を見ればわかるんじゃね? CL と emacs-lisp では根本的に違うところもあるから 必ずしも一対一に対応してるとは限らんが
211 名前:デフォルトの名無しさん [2009/08/14(金) 06:09:19 ] Emacs Lisp が末尾再帰を最適化していない理由って何ですか?
212 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 09:02:49 ] みんな末尾再帰を使わないから
213 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 09:06:49 ] >>212 最適化が成されていないから使う必要がない。 だから末尾再帰を使う人がCLに比べるとかなり少なくなる。 それは最適化していないことの理由ではない。 違いわかるよね?
214 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 11:48:42 ] 末尾再帰しててもアドバイス定義したら末尾再帰にならなくなったりするんじゃね? コンパイル時に最適化してしまうと後で困る。 よく誤解している人がいるけど、 cl や emacs-lisp は関数型言語なんかじゃありませんから!!
215 名前:デフォルトの名無しさん [2009/08/14(金) 11:58:15 ] じゃあなんなんだよ。 そんなの「吉野屋やすき屋は牛丼なんかじゃありませんから!」並の理屈だぞ。
216 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 12:11:12 ] en.wikipedia.org/wiki/Common_Lisp 手続的、関数的、オブジェクト指向の連携をサポートしたマルチパラダイム言語
217 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 12:52:25 ] 勝手に末尾再帰されるようなマクロ書けってスタンスじゃね? マルチパラダイムうんぬんは関係ないかと
218 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 14:27:05 ] >>214 emacs-lisp は "ほぼ" 関数型言語。 cl は関数型言語。
219 名前:デフォルトの名無しさん [2009/08/14(金) 21:49:36 ] 吉野屋やすき屋は牛丼じゃない
220 名前:デフォルトの名無しさん mailto:sage [2009/08/14(金) 22:20:31 ] >>211 実装が面倒くさいから。 ってcompile.elのソースに書いてあったと思ったよ ソースすら読まない馬鹿は本当にしょうがないな
221 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 03:33:36 ] ……何にどう書いてあるって?
222 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 03:38:57 ] \ \ ∧ニユ/ ̄ヽ \ ( ´∀/) i \.\ _(」つ/とl) . | \ ;::;::\i\ 匚レ| .〈/ ) | \ 。::;;:'\.\ (_,)ー' |_,, -'''"! ^人;:'::;゚:;.\l\ _,,, -''"|_,, -''"| ^^从::;;:。':\.\_,, -''"|_,, -''"| . :| へ ^へ;;::';;:'\l_,, -''" . | 从^ 〜 ^ ^ヘ^人从::;;;:| ,ィ人^. | ^ ^へ^^ 〜 ^.へ' ^':レ^从 へ' | 〜 ^ へ ^^ へ 〜人^ ^ へ〜 〜
223 名前:デフォルトの名無しさん mailto:sage [2009/08/15(土) 15:50:25 ] >>220 最近 emacs スレッドにもいる、前頭葉が未発達で可哀想な方ですよね。 わかります。 $ grep -E '\b(tail|recursion)\b' compile.el | wc -l 0
224 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 16:02:44 ] emacsclient の、標準入力って使えないのかな? こんな感じに % date | emacsclient これとか、 % date | emacsclient - % date | emacsclient --eval '(read)' 試したんだけど、違った。
225 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 22:25:43 ] >>220 > ってcompile.elのソースに書いてあったと思ったよ byte-opt.elの間違いじゃないの? >>223 もうちょっと頭使えば正解にたどり着けたのにね
226 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 22:30:13 ] 泣きながらgrepしたんだねw でも面倒くさいからなんて書いてないからwww
227 名前:デフォルトの名無しさん mailto:sage [2009/08/16(日) 22:41:08 ] とgrep厨が申しております
228 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 00:10:51 ] じゃあ私はemacs厨!
229 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 12:31:16 ] キッチンシンクなだけに厨がよく似合います
230 名前:デフォルトの名無しさん mailto:sage [2009/08/17(月) 20:21:52 ] うまいな
231 名前: host-130-64-82-173.medford.tufts.edu mailto:sage [2009/08/21(金) 00:23:18 ] Xubuntu8.04 にEmacs Speaks Statistics を入れています。 起動時に https://bugs.launchpad.net/ubuntu/+source/a2ps/+bug/248134 と同様、 Error while loading 50a2ps のメッセージが出て気持ち悪いです.(動くことは動く) patchのあて方が分かりません.どなたか教えてください.
232 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 07:48:16 ] >>231 Emacs Lisp全く関係ないと思うけど、 ttp://ja.wikipedia.org/wiki/Patch ttp://www.linux.or.jp/JM/html/GNU_patch/man1/patch.1.html でも、そこにあるパッチって、一ヶ所クォートするだけだから、 どう考えてもエディタで編集した方が早いよ。
233 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 18:50:29 ] Emacs LispにCommon Lispの merge-pathnames に相当する関数はありますか?
234 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 21:05:19 ] >>233 expand-filename ?
235 名前:デフォルトの名無しさん mailto:sage [2009/08/21(金) 21:41:25 ] >>234 expand-file-name ですね。 ありがとうございます。期待通りの動作ができました。
236 名前:231 mailto:sage [2009/08/22(土) 04:16:29 ] sudo patch -p0 < 50a2ps.patch でいけました。lispとは関係なかったですか。
237 名前:デフォルトの名無しさん mailto:sage [2009/08/22(土) 07:09:48 ] >>236 だって、知りたいのはpatchコマンドの使い方だったわけじゃない? 例えば、LinuxカーネルがC言語で書かれてるからって、 C言語のスレでカーネルのコンパイルの仕方とか聞かないでしょ? diffとpatchは、UNIX系のOSを使う上で知っていると便利だから、 当て方、作り方、読み方は知っておくといいと思う。 ともあれ、無事に当たって良かったね。
238 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 11:07:48 ] Python だと、例えば def foo (*args): ... の関数を L = (1, 2, 3) foo(*L) # foo(1, 2, 3) と同じ意味 と実行することが可能なのですが、emacs lisp でも同様に (defun foo (&rest args) ...) の関数の引数をpre-expandすることは可能ですか? イメージとしでは (setq L '(1 2 3)) (foo *L) のような感じです。
239 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 11:19:51 ] applyを使う 詳しい使い方は(info "elisp")見てくれ (let ((strs '("foo" "bar" "baz"))) (assert (string= (apply 'concat strs) (concat "foo" "bar" "baz"))))
240 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 11:28:59 ] やはりその用途だと apply を使うしかなさそうですか。 ありがとうございました。
241 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 11:40:52 ] 度々質問すみません。 `sleep-for' は "without updating display" なので、 (insert foo) (sleep-for n) をしても foo の中の文字列がバッファ上に表示される前に n 秒止まる作用があるのですが、 foo の内容を "表示させた後" に sleep する方法はありますか?
242 名前:名無しさん@そうだ選挙に行こう mailto:sage [2009/08/30(日) 11:44:27 ] >>241 自己解決しました。 (redisplay t)
243 名前:デフォルトの名無しさん mailto:sage [2009/09/01(火) 16:21:41 ] mode line と echo area を消す方法はありますか?
244 名前:デフォルトの名無しさん mailto:sage [2009/09/02(水) 14:43:29 ] しかし、emacsコアのソースコードは綺麗だなー。
245 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 03:31:39 ] Emacsで独自コマンドを定義したいのですが M-x hoge 3 の用に引数を与えるか、もしくは M-x hoge Input number: の用にプロンプトを出したいです。 両方の方法について調べてみたのですが どちらについても解説が見つかりませんでした。 どのようにすれば良いのかご教授ください。
246 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 04:06:45 ] >>245 前者は interactive の引数に N だか p だかを加える。 後者は (defun hoge () (read-number "Input number: "))
247 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 04:26:39 ] ありがとう御座います。 助かりました.
248 名前:デフォルトの名無しさん mailto:sage [2009/09/03(木) 22:16:51 ] interactive に n ってのがあるよ。
249 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 17:29:11 ] (defun hoge (num) (interactive "nInput number:") (message "%d" num))
250 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 18:10:26 ] interactive は関数型的ではないので嫌い。 便利そうに見せかけて逆にプログラムを汚くするから嫌い。 コードレターが文字列に混ざっていてキモイので嫌い。
251 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 18:23:59 ] どうしたいんだ?文句いうだけ?
252 名前:デフォルトの名無しさん mailto:sage [2009/09/05(土) 19:58:02 ] >>251 たった今、今年一番のセックルしてきたからこの際素直になるわ。 ごめん、文句言うだけだった。
253 名前:デフォルトの名無しさん [2009/09/06(日) 11:39:53 ] emacs(parentプロセス)が死んだ時に、emacsから立ち上げた 特定のchildプロセスは生き残るようにする方法はありますか?
254 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 13:31:57 ] >>253 daemon化するのと同じような処理をする。 二段forkしたり、ttyやプロセスグループを切り離したり。
255 名前:デフォルトの名無しさん mailto:sage [2009/09/06(日) 14:22:33 ] >>254 いままでは bash 経由でそれを実現していたのですが、 emacs の関数でそういったオプション指定は可能なのかと思って質問しました。
256 名前:デフォルトの名無しさん mailto:sage [2009/09/11(金) 10:26:26 ] sense-region.el は使えるんだが、コードがちと orz なんだよな。 emacs 23.* コンパイラーでwarningがでないように、コードクリーンアップ した人いる?
257 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 16:36:02 ] したよ。 rm ./sense-region.el
258 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 16:48:22 ] >>257 つまらない。
259 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 17:36:23 ] つまらなくはない。 むしろ本質をついたレスだと思う。 哲学的な嫌いはあるけどね。
260 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 18:34:10 ] うん、つまらないね。
261 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 18:51:22 ] デカルトになぞらえていえば sense-region.elある故に問題あり 一つの正答だろう。
262 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 19:06:25 ] つまらんだろ普通に。
263 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 19:21:47 ] つまらなくない。
264 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 19:24:23 ] \もうね、アボカド/ \バナナかと/ ┌┐ ヽ / / γ⌒^ヽ / / i /:::::::::::::ヽ | (,,゚Д゚) /::::::::(,,゚Д゚) |(ノi |) i:::::(ノDole|) | i i ゙、:::::::::::::ノ \_ヽ_,ゝ U"U U" U
265 名前:デフォルトの名無しさん mailto:sage [2009/09/13(日) 22:27:05 ] >>261 コードがちと orz 故に問題あり と思われ
266 名前:デフォルトの名無しさん mailto:sage [2009/09/15(火) 17:23:24 ] アホな質問すいません。 dired-do-shell-command したところ、 *Shell Command Output* のバッファーが kill-bufferで削除できなくなりました。 emacs -Q で起動して試すと削除出来たので、 自分で入れているelispの設定だと思うのですが、 見当がつきません。 kill-bufferで削除できなくするflagとか有りませんでしょうか? それを単語を元にひっかけようかと思うんですが…
267 名前:Zeno ◆5nZQbNmQPs [2009/09/15(火) 17:36:11 ] >>266 (progn (setq kill-buffer-hook nil) (ignore-errors (ad-disable-advice 'kill-buffer 'any "."))) を実行してみたまえ。
268 名前:266 mailto:sage [2009/09/16(水) 00:42:32 ] >>267 レス、どうもです。 上記、S式を評価しても、削除出来ませんでした。 その後、しばらくイジっても削除できず、 結局、再起動したのちshell-command を使って、 そのbufferを削除すると、出来ました。 そして、おかしくなった前回のsessionでやったようなことを順番に行っては shell-command -> buffer の削除 と、繰り返してみたのですが、すべて削除できてしまいました。 この事象は、今回だけではなく、少し前にも起きたことなので、 まるっきり偶発的でもないと思っています。 ただ、どのような仕組みで、bufferが削除できないのか良く判らないので、 ご存知の方、教えてください。 ; 実害は、ないんですけどね。 ; 結果を見た後、C-x k を押して、bufferが残ってると ; ちょっと、イラッとくるぐらいで。
269 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 19:45:25 ] quote や lambda の内部で予め式を評価する方法がわかりません. 例えば (let ((v 10)) (lambda (n) (+ n v))) => (lambda (n) (+ n v)) これを以下のように評価することは可能でしょうか. (lambda (n) (+ n 10)) 初歩的な質問で申しわけありませんが,ご教示願います.
270 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 20:19:27 ] (let ((v 10)) `(lambda (n) (+ n ,v)))
271 名前:デフォルトの名無しさん mailto:sage [2009/09/24(木) 20:36:03 ] >> 270 ありがとうございます. やはり方法があったんですね,非常に助かりました!!
272 名前:Zeno ◆5nZQbNmQPs [2009/09/25(金) 08:16:26 ] >>269 >>270 その場合は意味合い的に (lexical-let ((v 10)) (lambda (n) (+ n v))) とした方が良い。
273 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 08:49:41 ] >>272 しかしこういう場合には>>270 のやり方の方がいいんではなかろうか。 (setf foo nil) (lexical-let ((v 10)) (push (lambda (n) (+ n v)) foo) (incf v) (push (lambda (n) (+ n v)) foo)) (message (format "%S" (cons (funcall (car foo) 1) (funcall (cadr foo) 1)))) => (12 . 12)
274 名前:Zeno ◆5nZQbNmQPs [2009/09/25(金) 09:03:55 ] >>273 "こういう場合には" とは言うが、そのような 馬鹿げたコードを書く人間は放置されるであろう。 同様のことをしたいのであれば、以下のように書けば良い (というか、以下のスタイルにするべき)。 (setf foo nil) (defun bar (v) (lexical-let ((v v)) (lambda (n) (+ n v)))) (push (bar 10) foo) (push (bar 11) foo) (message (format "%S" (cons (funcall (car foo) 1) (funcall (cadr foo) 1)))) => "(12 . 11)"
275 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 14:43:03 ] lexical-let 使うなら (require 'cl-macs) 書いておくべきだろ
276 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 18:14:35 ] いつからか知らないけど、少し前から autoload ついてるよ。
277 名前:デフォルトの名無しさん [2009/09/26(土) 01:26:35 ] let と let* で二つに分ける理由ってなんですか? ついでにもう一つ、macroexpand-系を使って、 マクロ動作を勉強してるんですが、 *Message*バッファには省略形のリストしか表示されないです。 全部理解するには、edebug-defunでデバッガ起動するしかないのですか?
278 名前:Zeno ◆5nZQbNmQPs [2009/09/26(土) 03:08:07 ] >>277 > let と let* で二つに分ける理由ってなんですか? (let* ((x 1) (y x)) (cons x y)) => (1 . 1) (let ((x 1) (y x)) (cons x y)) => Error ... let* は (let 変数定義1 (let 変数定義2 (let ...))) という風にletでネストされていると考えても良い。 分かったら固定ハンドルを付けろ。
279 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 03:09:45 ] いや意味の違いじゃなくて”何故”両方ある必要があるのかって質問でしょ
280 名前:Zeno ◆5nZQbNmQPs mailto:sage [2009/09/26(土) 03:11:02 ] >>279 > いや意味の違いじゃなくて”何故”両方ある必要があるのかって質問でしょ | let* は (let 変数定義1 (let 変数定義2 (let ...))) | という風にletでネスト するのが面倒だから。
281 名前:269 mailto:sage [2009/09/26(土) 04:27:21 ] >>272-276 回答頂きありがとうございます. まだ未熟でコードの善し悪しの判別は付きませんが,提示頂いた lexical-let を使って書くことにしました. ちなみに quote 内で評価する場合は(回答頂いた中では) >>270 でしか展開さ れないみたいですね. (lexical-let ((s "test")) (quote s)) => s (let ((s "test")) `(quote ,s)) => "test" 非常に勉強になりました!!
282 名前:Zeno ◆5nZQbNmQPs mailto:sage [2009/09/26(土) 04:41:58 ] >>281 > ちなみに quote 内で評価する場合は(回答頂いた中では) >>270 でしか展開さ > れないみたいですね. 当たり前だ。 quote は数ある special form の一つで、 その引数は評価されないまま内部に渡される。 根本的に理解できていないようだから、まずは common lisp から 学んでみることを勧める。 わかったらさっさと本屋に直行しろ。
283 名前:Zeno ◆5nZQbNmQPs [2009/09/26(土) 04:47:51 ] 私は emacs スレを長らく留守にしていたのだが、 フンバリャーウンコ・ヨーデルは現れなかったかね? フンバリャーウンコ・ヨーデルはいるかね? 見ているなら返事をしたまえ。
284 名前:269 ◆PC9p7J5igw mailto:sage [2009/09/26(土) 05:59:41 ] >>282 quote については理解しているつもりですが, 今回は引数を渡す前に例外的に評価されるようにしたかったのです. quote でも渡される前に評価されると思ったのは, lambda が function で内 包して返すマクロだからです. (macroexpand (lambda () "test")) => (function (lambda nil "test")) しかし,function でも渡される前に評価されるわけではないんですね (lexical-let ((s "test")) (function s)) => s そもそも help に書いてありました... >lambdas inside BODY will create lexical closures lisp を理解できていないのは自覚しているのでアドバイス通り common lisp から勉強したいと思います.
285 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 08:39:51 ] 復刊なった「はじめての人のためのLisp」が発売されたら、 少しは、「少しは本を読め」な質問減るかなぁ。
286 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 09:37:27 ] CommonLispを勉強したら EmacsLispが嫌になっちゃったりして。
287 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 11:05:12 ] そしたらようこそwin&xyzzy Macで使えたらなぁ…
288 名前:デフォルトの名無しさん [2009/09/26(土) 11:12:08 ] ソース公開されてるよ。C++で書かれていたので面倒くさくて読んでないけど。
289 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 18:52:57 ] Common Lisp と Emacs Lisp の関数の対照表みたいなのってある?
290 名前:Zeno ◆5nZQbNmQPs [2009/09/26(土) 20:56:17 ] >>289 ああ、在る。
291 名前:Zeno ◆5nZQbNmQPs [2009/10/02(金) 16:10:23 ] >>284 頑張れよ ttp://www.gnu.org/software/emacs/manual/html_mono/elisp.html
292 名前:デフォルトの名無しさん [2009/10/05(月) 22:29:10 ] Emacs LispとCommon Lispの違いは何でしょうか? 私はUbuntuにclispをインストールし、端末上でClispを起動した後,(format t "Hello World")と打ち込んでEnterを押しました。 実行結果として、端末にHello Worldと表示されました。 しかし、Emacs上で上記を打ち込んでCtrl + jを押しますと、エラーらしき文章が・・・ Emacs Lisp と Common Lispというのは方言の違いを表しているのでしょうか、 実際に、出来ることと出来ないことの差というものもあるのでしょうか?
293 名前:デフォルトの名無しさん mailto:sage [2009/10/05(月) 22:37:44 ] そりゃ別のものだからね。差もあるだろう。
294 名前:デフォルトの名無しさん [2009/10/05(月) 22:43:04 ] >>293 Emacs lispの使われる用途 Common lispの使われる主な用途 を教えてください。 また、上記両方のlispに関して参考サイトとしての大御所・・・と言えるような海外サイトがあれば教えて頂きたい
295 名前:デフォルトの名無しさん mailto:sage [2009/10/05(月) 22:50:08 ] Emacs Lisp はそりゃ Emacs を拡張したり開発したりするのに使う。 Common Lisp はもっと計算速度が欲しいとか大規模なものを作る人々が使う。 大御所ねぇ。権威が欲しいならHaskellとかScalaとかピカピカのやつやったほうがいいと思うよ。
296 名前:デフォルトの名無しさん [2009/10/05(月) 22:53:29 ] 成る程・・・ わかりました。最初はCommon Lispから始めようと思います。それでは
297 名前:デフォルトの名無しさん mailto:sage [2009/10/05(月) 22:54:26 ] オイオイ… Emacs Lisp は Emacs の名を冠するだけあって Emacs の拡張・カスタマイズ用に決まっておろうが。 Emacs は本当に基本的なコアを除いて Emacs Lisp で書かれてるんだぜ。 Common Lisp の主な用途って言っても汎用言語の主な用途なんて言ってもしょうがないと思う。 とりあえず Common Lisp スレがあるからそっち行け。
298 名前:デフォルトの名無しさん mailto:sage [2009/10/05(月) 23:10:48 ] っttp://www.ice.nuie.nagoya-u.ac.jp/~h003149b/lang/comparison.html
299 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 09:26:11 ] lispは方言が多い言語としても有名なんだったよね。
300 名前:デフォルトの名無しさん mailto:sage [2009/10/06(火) 23:01:43 ] ruby
301 名前:デフォルトの名無しさん [2009/10/07(水) 00:35:00 ] JavaScript も Lisp in C's Clothing だ
302 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 00:39:37 ] 標準ライブラリみたいなもんって lisp だと何?
303 名前:デフォルトの名無しさん [2009/10/07(水) 00:42:55 ] CL なら CLtL2 Scheme なら SRFI
304 名前:デフォルトの名無しさん [2009/10/07(水) 17:19:58 ] Emacs Lisp でウェブアプリって書けないかな? ウェブできればグラマーの幅が広がって共有ノウハウも増えるはずなんだけど。
305 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 18:11:57 ] グラマー?
306 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 18:40:55 ] トランジスタ?
307 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 19:13:58 ] >>304 そりゃ書けると思うけどグラマーの幅が広がるって意味がわからん。 ウェブアプリってのもクライアントなのかサーバアプリなのかわからん。 前者なら普通に存在してるよ。 あと昔Emacsで動くhttpdなんてのも作られてたよ。 こんなん。 ttp://sachachua.com/notebook/emacs/httpd.el ttp://elserv.sourceforge.net/
308 名前:デフォルトの名無しさん [2009/10/07(水) 22:58:12 ] >>304 ウェブのソフトウェアなんてシェルスクリプトでも書けるんだぜ。 Emacs のノウハウを心配するより、君自身のノウハウを増やした方が良いと思うぞ。
309 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 12:57:59 ] GNU Emacs 23.1.1 (i386-mingw-nt5.1.2600) of 2009-07-30 on SOFT-MJASON で EmacsWiki から持ってきた anything, anything-config を使っています。 anything-sources に anything-c-source-* 一つずつ足していって試してみているのですが anything-c-source-info-elisp を足したところで progn: Symbol's function definition is void: Info-find-node とエラーを吐いて止ってしまいます。 Enter Debugger on Error を使ってみたところ、*Backtrace*に次のようなメッセージ(次レスに貼ります)が出ました。 どうやら Info-find-node が定義されていないとのことですが どう対処してよいかわかりません。 何かアドバイスをいただけませんでしょうか?
310 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 12:59:28 ] Debugger entered--Lisp error: (void-function Info-find-node) (Info-find-node "elisp" "Index") (progn (Info-find-node "elisp" "Index") (setq anything-c-info-elisp (split-string ... "\n")) (Info-exit)) (unwind-protect (progn (Info-find-node "elisp" "Index") (setq anything-c-info-elisp ...) (Info-exit)) (and (buffer-name temp-buffer) (kill-buffer temp-buffer))) (save-current-buffer (set-buffer temp-buffer) (unwind-protect (progn ... ... ...) (and ... ...))) (with-current-buffer temp-buffer (unwind-protect (progn ... ... ...) (and ... ...))) (let ((temp-buffer ...)) (with-current-buffer temp-buffer (unwind-protect ... ...))) (with-temp-buffer (Info-find-node "elisp" "Index") (setq anything-c-info-elisp (split-string ... "\n")) (Info-exit)) (if anything-c-info-elisp nil (with-temp-buffer (Info-find-node "elisp" "Index") (setq anything-c-info-elisp ...) (Info-exit))) (unless anything-c-info-elisp (with-temp-buffer (Info-find-node "elisp" "Index") (setq anything-c-info-elisp ...) (Info-exit))) (save-window-excursion (unless anything-c-info-elisp (with-temp-buffer ... ... ...))) (lambda nil (save-window-excursion (unless anything-c-info-elisp ...)))() apply((lambda nil (save-window-excursion (unless anything-c-info-elisp ...))) nil) (let ((anything-source-name ...)) (apply func args)) anything-funcall-with-source(((name . "Info Elisp") (init lambda nil (save-window-excursion ...)) (candidates lambda nil (loop for i in anything-c-info-elisp if ... collect ...)) (ここで改行を挿入) (action lambda (candidate) (Info-find-node "elisp" "Index") (Info-index ...)) (volatile) (requires-pattern . 2)) (lambda nil (save-window-excursion (unless anything-c-info-elisp ...))))
311 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 12:59:35 ] (while --cl-dolist-temp-- (setq func (car --cl-dolist-temp--)) (anything-funcall-with-source source func) (setq --cl-dolist-temp-- (cdr --cl-dolist-temp--))) (let ((--cl-dolist-temp-- ...) func) (while --cl-dolist-temp-- (setq func ...) (anything-funcall-with-source source func) (setq --cl-dolist-temp-- ...)) nil) (catch (quote --cl-block-nil--) (let (... func) (while --cl-dolist-temp-- ... ... ...) nil)) (cl-block-wrapper (catch (quote --cl-block-nil--) (let ... ... nil))) (block nil (let (... func) (while --cl-dolist-temp-- ... ... ...) nil)) (dolist (func (if ... ... it)) (anything-funcall-with-source source func)) (if it (dolist (func ...) (anything-funcall-with-source source func))) (let ((it ...)) (if it (dolist ... ...))) (anything-aif (assoc-default sym source) (dolist (func ...) (anything-funcall-with-source source func))) (while --cl-dolist-temp-- (setq source (car --cl-dolist-temp--)) (when (symbolp source) (setq source ...)) (anything-aif (assoc-default sym source) (dolist ... ...)) (setq --cl-dolist-temp-- (cdr --cl-dolist-temp--))) (let ((--cl-dolist-temp-- ...) source) (while --cl-dolist-temp-- (setq source ...) (when ... ...) (anything-aif ... ...) (setq --cl-dolist-temp-- ...)) nil) (catch (quote --cl-block-nil--) (let (... source) (while --cl-dolist-temp-- ... ... ... ...) nil)) (cl-block-wrapper (catch (quote --cl-block-nil--) (let ... ... nil))) (block nil (let (... source) (while --cl-dolist-temp-- ... ... ... ...) nil)) (dolist (source (anything-get-sources)) (when (symbolp source) (setq source ...)) (anything-aif (assoc-default sym source) (dolist ... ...))) anything-funcall-foreach(init) ad-Orig-anything-initialize() (setq ad-return-value (ad-Orig-anything-initialize)) (let (ad-return-value) (setq anything-c-adaptive-done nil) (setq ad-return-value (ad-Orig-anything-initialize)) ad-return-value) anything-initialize
312 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 19:30:54 ] info.el ロードされてないんだな。anything より前に (require 'info) とでも書いたらどうかな。
313 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 19:53:14 ] >>312 ありがとうございました。できました。
314 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 00:32:01 ] Emacs怖い。数十年後もEmacs使ってそう。
315 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 21:12:34 ] 選択した語をサーチエンジンで検索してw3mで表示するelispってあります?
316 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 22:31:51 ] どっかで拾った google.el ってのがそんな挙動だな。 内容は region が活性だったら google 用の検索 URL 作って browse-url で デフォルトのブラウザ呼び出すだけのシンプルなのだったけど。
317 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 22:54:01 ] EmacsWikiのdim-google.elっていうのが求めるものでした 探せばすぐに見つかるものでしたね お手数をかけました
318 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 23:37:36 ] 孫にEmacsの手ほどきをするのが老後の夢
319 名前:デフォルトの名無しさん mailto:sage [2009/10/10(土) 23:55:47 ] emacsをp2pで繋ぐのが夢だ
320 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 16:27:56 ] Emacsがmacびいきな名前だからEwinsにするのが俺の夢だ。
321 名前:Zeno ◆5nZQbNmQPs [2009/10/15(木) 16:41:39 ] >>320 自分でソースを引っ張ってきて、ソース内、そしてファイル名に含まれる [Ee]macs を [Ee]wins に変換すれば良いだろうが。
322 名前:Zeno ◆5nZQbNmQPs [2009/10/15(木) 16:45:56 ] >>320 それと一応教えておくが、MacよりもEmacsの方が先だ。 もしそういうことにしたいのであれば「Emacsがmacびいきな名前」ではなく、 「MacがEmacsびいきな名前」と解釈するのが正しい。
323 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 17:14:51 ] いまどきEmacsなんか使ってたら厨か老人扱いだろ。 なんでそうなったかっていうと、圧倒的大多数を占めるWindowsに インターフェースを合わせなかったからだろうな。 標準をWindowsに合わせて、オプションで旧Emacsを選べるのが 本来の正しい姿。
324 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 17:17:24 ] >>323 君面白いねw というかWindowsがEmacsにあわせるべき。 Macはもう合わせてる。
325 名前:Zeno ◆5nZQbNmQPs [2009/10/15(木) 17:31:04 ] 中身が理解できていない為、デフォルトの見た目について あれこれ文句を言うことしかできない真性の阿呆は放っておけ
326 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 17:35:42 ] xkeymacsでええやん
327 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 19:00:12 ] 「窓使いの憂鬱」も忘れないで!
328 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 20:07:39 ] ありゃキーロガーだから死すべきもの
329 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 21:24:17 ] >>320 ttp://www.ueda.info.waseda.ac.jp/~ichibe/pub/members.tripod.co.jp/zzyyb/mit/doc-ja/user_8.html Emacs ライクな Scheme ベースのエディタ Edwin ただし日本語は通らないらしいが
330 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 22:15:20 ] なんでEmacsはwindowsで使えないの? windowsアンチなの?
331 名前:デフォルトの名無しさん [2009/10/15(木) 22:28:12 ] なんでwindowsではEmacs使えないの? Emacsアンチなの?
332 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 22:41:05 ] なんでwindowsでEmacs使えないと思ってるのかが謎だ
333 名前:デフォルトの名無しさん mailto:sage [2009/10/15(木) 23:12:35 ] meadowもemacsだろ
334 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 00:20:17 ] emacsでパソコンとお友達になれますか?
335 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 00:29:15 ] オフィシャルに Windows のバイナリもあるというに。
336 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 00:42:28 ] いまどきMeadowはないだろ。。。
337 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 00:46:58 ] meadowはemacsenだけどNTEmacsはEmacsだよな
338 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 16:43:29 ] xyzzy も忘れずに
339 名前:デフォルトの名無しさん [2009/10/16(金) 19:42:53 ] Windows マシンを持ってないんだけど、xyzzy って Emacs ユーザから見て実際どうなの? ・これだったら Emacs で十分だぜ ・これなら十分 Emacs の代替になるな ・こ、これは Emacs より断然スゲー!
340 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 19:52:42 ] mgみたいなもの
341 名前:デフォルトの名無しさん [2009/10/16(金) 20:10:49 ] それは elisp が使えなければ Emacs に非ずって事かな?
342 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 20:18:49 ] Emacs 的に見るとまがいもんだけど、 エディタ全般的に見ると xyzzy には xyzzy の良さがある。 着想の元が Emacs だとしても今では別物。 比較するようなもんじゃない。
343 名前:デフォルトの名無しさん [2009/10/16(金) 20:26:26 ] なるほど、別物なのか… ありがと。
344 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 22:59:31 ] Emacsとして見ようとすると違和感があるけど、 Windowsアプリとして見るとEmacsより違和感が無いって感じ(´・ω・`)
345 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 23:00:56 ] メモ帳感覚で使えて、かなりemacsぽくもつかえる
346 名前:デフォルトの名無しさん mailto:sage [2009/10/16(金) 23:08:32 ] 正直、Windowsつこうてる時は、Emacsよりもxyzzy使うことのほうが多い僕は異端児。
347 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 08:41:20 ] ただ細かい部分でEmacsと違うから Emacs好き好きすぎるとかえってストレスたまるかもしれんね。
348 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 09:17:51 ] Emacs好き好きだったら当然Window上でも本物Emacs入れてるでしょ。 今のWindows用EmacsはUSBに入れて持って歩けるしね。
349 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 18:44:32 ] emacsそのものより利用者が作ったライブラリとか付属のelispを使う為ってのが大きい
350 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 20:49:56 ] >>349 大昔にマイコンさわったときの最初のエディタがmince(micro emacs)だったと言うだけでemacs以外さわれない体になった俺みたいなのもいる(普通はwordmasterだった頃) RPN電卓さわってしまった工学系学生とおなじようなもんだけど
351 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 20:56:13 ] よく「最初にXXXXをさわったからXXXXしか使えなくなった」って言う人がいるけど 単に適応能力が普通の人に比べて足りてない能無しってだけだよね。 価値のある体験談でもないし勿論自慢にはならない。
352 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 21:09:32 ] さわれないっていうよりさわりたくない、ぐらいだろね 必要にせまられればどんなエディタでも結構なんとかなったりする
353 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 21:26:45 ] >>351 もちろん君はQwerty配列でもDvorak配列でも全く同等に使えるんだよね?
354 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 21:41:26 ] >>351 emacsとvi好きに喧嘩売るとはなんという宗教戦争マニア!
355 名前:デフォルトの名無しさん mailto:sage [2009/10/24(土) 21:47:06 ] >>351 エディタとか割とよく使うもの(鉛筆とノートのように)だと最初の原体験で得た物と次にさわった物の間で入力速度に差があると二度と他に移りたくなくなる物だよ 今の時代のようにしょっちゅう入れ替えができたり物が選べる時代じゃないならなおのことだ(当時はストレージがFDドライブ二個が上限だったしエディタ買うのだってものすごく高価だった) 今でも各種IDEのキーバインドにエディタ名を冠した設定がある事がそれを物語ってるよ
356 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 01:38:28 ] 仕事だとそんなふぬけたこと言ってらんないんだけどね。
357 名前:デフォルトの名無しさん [2009/10/25(日) 01:51:57 ] >>353 それ、良い喩えだね。面白い。
358 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 02:00:11 ] >>353 どっちも十分に経験していれば、当然どっちも十分に使えるだろうね。 普通の人は。 脳に欠陥のある人は、二つ目の経験が一つ目を吹き飛ばしてしまうかも。
359 名前:デフォルトの名無しさん [2009/10/25(日) 02:16:32 ] 一時期 RPN 電卓を覚えようとした事があったけど、常にパソコンを 携帯していたので電卓の出番が無くて結局覚えられなかったなあ。 bc って打つ代わりに dc って打てば良いだけだったんだけど、そこは やっぱり人の性、要らん物は覚えないね。
360 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 03:16:49 ] 「一事なれば万事成る」っていうじゃないか。 まず一つの事を深く知ることが大事だろ。
361 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 03:48:27 ] >>358 >どっちも十分に経験していれば、当然どっちも十分に使えるだろうね。 ただし、 日本ではQwertyを強制される機会は多くてもDvorakを強制される機会はほとんどないため 普通の人はQwertyしか使えない。 自分で乗りかえようと思い立った人か幸運にも最初がDvorakだった人のみが Dvorakを使えるというのが現状。 だからどっちも十分に経験していれば、という前提が非常にレアケース。 普通の大部分の人は 「最初にQwertyをさわったからQwertyしか使えない。」
362 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 05:14:32 ] >>361 もっともらしく文章書いてるが結論でいきなり論理が飛躍している上に間違っている。阿呆。 最初にQwertyをさわったからQwertyしか使えない。 ではなく QwertyしかないからQwertyしか使わない。 程度の事しかおまえさんの文章では結論できない。
363 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 05:21:04 ] >>362 >QwertyしかないからQwertyしか使わない。 そこらじゅうにDvorakに触れる機会はあるよ。 ただみんなそれを選んでないしそうする必要もないだけ。 だから普通は選ばない。 理由は慣れてないから。 なぜ慣れていないかと言うと普通は最初にDvorakを触っていないから。覚えるコストも大きい。 どこか違うの?
364 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 09:32:36 ] そんなことよりいい加減スレ違いなのに気付こうぜ。 最初に触れたのが Common Lisp だから Emacs Lisp が気持ち悪いって話題ならともかく・・・
365 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 09:51:46 ] >>353 もれはASCII配列のQWERTYしか使えない
366 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 10:53:59 ] ANSI配列って言いたいんだろうな
367 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 10:55:25 ] Emacsユーザの場合、「使えない」には3つのパターンがある。 a)操作性が同じじゃないので使えない。 b)XXXというEmacsLispと同等のものを、他のエディタ上で用意できない。 c)作り貯めたマクロを移行するのが大変すぎる。 aは極論すれば慣れればなんとかなるわけだが、Emacs歴20年です、 という人なんかはb, cが大変だと思われ。
368 名前:367 mailto:sage [2009/10/25(日) 11:00:48 ] で、個人的にはもう一つ、 d)クラスプラットフォームでGUIでもターミナルエミュレータでも使えるエディタが極めて限られる。 てのがあって、Emacsを捨てたくてたまらないのに(今のところ)移行先が見当らないという……。
369 名前:デフォルトの名無しさん [2009/10/25(日) 11:26:48 ] 自分が使うエディタは好きな物を選べるから、実質上困った事無いなあ。 困ってない事を解決するのは余程の暇人じゃないと難しい。
370 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 12:12:36 ] 人によって環境違うしな。 UNIX上での仕事メインならEmacs使うのになんの支障もないだろし 他のOSでもエディタの指定がゆるいならバリアントを入れればいいし 仕事じゃなくて趣味ならおさっしだし。 navi2chしか使ってないくせにEmacsしかもう使えない!なんていってるやつは 死ねばいい
371 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 12:23:04 ] >navi2chしか使ってないくせにEmacsしかもう使えない!なんていってるやつは >死ねばいい 流石にネタだと思いたい
372 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 14:31:24 ] あーいそうだそういうのw UbuntuインストールしただけでLinuxマスター(笑)になっちゃって わけしり顔でWindows批判はじめだすような人種だな
373 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 15:36:31 ] 仮想敵かよ
374 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 17:56:56 ] ♪見えない敵にマシンガンを〜
375 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 18:58:43 ] 見えない敵ではなく、見える雑魚だろう。
376 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 19:25:34 ] deffaceはどうやらdefvarと同じく上書きがされないみたいなんだけど このdeffaceの引数と同じ書式で上書き可能な関数ってあります? (set-face-* ...)もあるけど、できればまとめて定義したいので
377 名前:デフォルトの名無しさん mailto:sage [2009/11/08(日) 15:28:54 ] >>376 set-face-attribute とか?
378 名前:デフォルトの名無しさん mailto:sage [2009/11/13(金) 21:23:30 ] >>377 それだと引数がリストじゃないんですよね。。 とりあえず自分でdeffaceを弄ったものが期待どおりに動いたのでよしとします paste.lisp.org/display/90293
379 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 21:03:37 ] こんなのってない? 【プログラミング万歩計】 ファイルの拡張子ごと、日付ごとに自分が何回タイプしたか統計を取る。 健康増進的なノリでプログラミング力を鍛える励みにする。
380 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 21:20:13 ] >>379 outputz.el みたいなの?
381 名前:デフォルトの名無しさん mailto:sage [2009/12/01(火) 21:26:16 ] みたいなのっていうかそのものっぽいな。 拡張子毎ってあたりは適当に細工しなきゃいけないだろうけど。
382 名前:379 mailto:sage [2009/12/01(火) 22:05:16 ] >>380 ,381 どうもです。 調べてみます。
383 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 00:41:20 ] elispでチャット作ったけど使ってくれる人がいない
384 名前:デフォルトの名無しさん mailto:sage [2009/12/02(水) 06:15:34 ] 全emacsenが泣いた
385 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 14:20:13 ] emacs 上で現在動いている timer の一覧を得る、なんてことはできませんか?
386 名前:デフォルトの名無しさん mailto:sage [2009/12/04(金) 20:44:03 ] 10年くらい前に書いた関数だけど、まだ動きそう。 (defun describe-timer () (interactive) (let ((tl timer-list) timer) (pop-to-buffer (get-buffer-create "*timer*")) (erase-buffer) (insert "TIME FUNCTION\n" "-------------- --------------------------\n") (while tl (setq timer (car tl)) (insert (concat (format-time-string "%m/%d %T" (list (aref timer 1)(aref timer 2)(aref timer 3))) " " (symbol-name (aref timer 5)) "\n")) (setq tl (cdr tl)))))
387 名前:デフォルトの名無しさん mailto:sage [2009/12/06(日) 01:38:29 ] timer-list に保管されてるのか。 すばらしい。ありがとう!!
388 名前:デフォルトの名無しさん [2009/12/09(水) 04:58:04 ] スレ違いですが、教えてください。 さっきMeadowを使っている人は少なくて本家のgnu emacs winバイナリを使っている人が主流みたいに書いてあったのですが、みなさん日本語入力はどうしてます?
389 名前:デフォルトの名無しさん mailto:sage [2009/12/09(水) 08:35:32 ] skk
390 名前:デフォルトの名無しさん [2009/12/09(水) 08:43:22 ] なるほどSKKですか、MS-IMEやATOKを使っている方はいらっしゃらないでしょうか。 そもそも使う方法はないのでしょうか。
391 名前:デフォルトの名無しさん mailto:sage [2009/12/09(水) 16:37:41 ] >>388 なぜ、このスレで質問してるのか、よくわからないが、MS-IMEでMeadowに入力できたと思うけどなあ。 で、Meadowで何をしたいんだ? emacsを使いたいなら、マウスを持たずにCUIで作業するのが理想だと思うなあ。
392 名前:デフォルトの名無しさん mailto:sage [2009/12/09(水) 16:48:44 ] >>391 いきなりマウスの話題が出てきた理由って何なの?
393 名前:デフォルトの名無しさん mailto:sage [2009/12/09(水) 17:32:46 ] >>391 ん? Meadow じゃなく gnu emacs win バイナリで日本語入力はどうしてるの? って質問じゃないかと。
394 名前:デフォルトの名無しさん mailto:sage [2009/12/09(水) 18:31:32 ] っntemacsjp.sourceforge.jp/
395 名前:デフォルトの名無しさん [2009/12/09(水) 20:05:24 ] >>391 elispスレなので、本家のgnu emacsを好む方が多いかなと思って質問させていただきました。 >>394 23baseがあれば嬉しいですが、すみません、わがまま言いすぎですよね。
396 名前:デフォルトの名無しさん [2009/12/09(水) 20:10:24 ] >>394 すみません。リンク先をよく見ていませんでした! emacs23のIMEパッチをしてくださったんですね。早とちりしてNTemacsのことだと思っていました。すみません。 さっそく試してみます。ありがとうございました!
397 名前:デフォルトの名無しさん mailto:sage [2009/12/10(木) 00:13:25 ] y-or-n-p関数についてなんですが * 端末から利用するとQuit(\C-g)が効く * Xから利用するとQuitが効かない てのは、正しい動作なんでしょうか?
398 名前:デフォルトの名無しさん mailto:sage [2009/12/10(木) 01:44:25 ] 今、X上のemacsで (y-or-n-p "hoge") とやってみたけど C-g でquitできたよ。
399 名前:デフォルトの名無しさん mailto:sage [2009/12/10(木) 23:00:27 ] >>398 てことは、ウチの環境だけみたいですかね。。 正しくはXじゃなくてGTK@Ubuntuなんですけど
400 名前:デフォルトの名無しさん mailto:sage [2009/12/20(日) 05:31:59 ] sql-mode をつかってるんだけど、"REM" をコメント風に認識させられない? remark 文の中の '09/12/20 みたいな ' 文字がでる度に string だと認識されて困る
401 名前:デフォルトの名無しさん mailto:sage [2009/12/30(水) 17:25:39 ] 来年は elisp がネイティブコンパイルできる様になります様に ナムナム
402 名前:デフォルトの名無しさん [2010/01/18(月) 17:31:37 ] message 関数の様に使えてC言語の fprintf のようにファイル(バッファでもいいけど)に 出力する関数ってありますか?
403 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 17:53:44 ] >>400 よくわからんが mmm-mode とか使えないの?
404 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 18:11:53 ] >>402 format
405 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 19:04:47 ] format って sprintf ですよね。string とか変数作って いちいち concat して set-buffer して insert しないといけないんでしょうか。 質問ばかりですみません。
406 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 19:21:32 ] (defun insert-to-buffer (buf fmt &rest args) (with-current-buffer buf (insert (apply #'format fmt args)))) みたいな関数を自分で作っちゃえばいいんじゃない? 標準にありそうな匂いがプンプンするけど
407 名前:デフォルトの名無しさん mailto:sage [2010/01/18(月) 19:43:12 ] >>406 とりあえずありがとう。やりたい事がやっとできました。
408 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 20:10:59 ] >>402 sprintfのようにフォーマットの指定まではできないが 文字列の出力先を指定する関数はいくつかある。print/prin1/princなんかがそう (princ (format "Hello %s.\n" "Emacs") (find-buffer "*scratch*")) (info "(elisp) Output Streams") も参照 emacsの場合はファイルよりもバッファをやりくりするのが基本かな。
409 名前:デフォルトの名無しさん mailto:sage [2010/01/19(火) 21:12:16 ] リージョン内の数字にカンマを打とうと思って、 (defun ins-comma (start end) "insert comma to digits in region." (interactive "r") (let ((res t)) (while res (save-excursion (goto-char start) (if (setq res (re-search-forward "\\([0-9]+\\)\\([0-9]\\{3\\}\\)" end t)) (replace-match "\\1,\\2" nil nil)))))) とすると、リージョンの尻にある数字にマッチしません。 どこが間違ってるでしょうか。 re-search-forwardの第二引数をnilにすればマッチするんですが。
410 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 19:22:28 ] ・endがマーカーじゃない ・replace-matchにより該当部分の長さが変わる ・前から順に書き換えている から。
411 名前:デフォルトの名無しさん mailto:sage [2010/01/21(木) 19:25:32 ] わかりました。ありがとうございます。
412 名前:デフォルトの名無しさん mailto:<sage> [2010/01/22(金) 08:51:54 ] 先生、質問があります。以下のように defvar で定義されたリストを関数の一 部として使っているような場合に、edebug してトレースしたいときは、どう すれば良いのでしょうか? (以下の場合では、anything-c-source-recentf の 中をトレースしたい。 ) (defvar anything-c-source-recentf '((name . "Recentf") (candidates . recentf-list) (match . (anything-c-match-on-file-name anything-c-match-on-directory-name)) (type . file)) "See (info \"(emacs)File Conveniences\").") (anything 'anything-c-source-recentf)
413 名前:デフォルトの名無しさん mailto:sage [2010/01/22(金) 17:09:30 ] 質問の前提が間違ってます。
414 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 03:29:24 ] >>413 前提というのは、「defvar で定義されたリストを関数の一部」かなと思うから anything コードを見てみたら、必要に応じてリストから部分的に取り出して 使ってるように見えるから前提があってない。 そういうこと? だから edebug でトレースは無理ということで終了?
415 名前:デフォルトの名無しさん mailto:sage [2010/01/23(土) 14:47:01 ] そう。edebugするなら対象はanythingの中の > anything コードを見てみたら、必要に応じてリストから部分的に取り出して > 使ってる この部分になるでしょう。
416 名前:デフォルトの名無しさん [2010/01/27(水) 03:38:30 ] >>414 レスありがとう。やってみます!!
417 名前:デフォルトの名無しさん mailto:sage [2010/01/31(日) 08:49:08 ] テスト
418 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 16:01:36 ] こんにちは。hash について質問させてください。 (defun case-fold-string= (a b) (compare-strings a nil nil b nil nil t)) (defun case-fold-string-hash (a) (sxhash (upcase a))) (define-hash-table-test 'case-fold 'case-fold-string= 'case-fold-string-hash) (setq lang-hash (make-hash-table :test 'case-fold)) elisp info にあるように上記のようにして、ハッシュを作成してみましたが、 キーによっては、以下のようにハッシュ値が同じになってしまい、うまくいき ません。こういう場合は、どうするんでしょうか? (case-fold-string-hash "RU")1397 (case-fold-string-hash "SE")1397
419 名前:デフォルトの名無しさん mailto:sage [2010/02/08(月) 16:30:25 ] >>418 ハッシュ値は関係ないと思う 完全ハッシュ関数を作らないかぎり、ハッシュ値はふつう重複する Wikipedia のハッシュテーブルとかハッシュ関数の頁を参照 で、問題は compare-strings は文字列が一致しないときに数値を返すこと (defun case-fold-string= (a b) (string-equal (upcase x) (upcase y))) ならうまく動いた
420 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 09:52:56 ] >>419 ありがとうございます。同じハッシュ値をもつキーでもバリュー値を上書きす るわけじゃないんですね。
421 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 14:13:42 ] Emacs Lisp で書かれたものってソフトウェア?
422 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 14:52:36 ] そう。
423 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 14:58:35 ] すくなくともハードウェアでないことは確か。
424 名前:デフォルトの名無しさん mailto:sage [2010/02/12(金) 15:20:20 ] OK
425 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 02:41:54 ] java-mode でインデントを2にしたいのですが、 下のlispを.emacsに書いても反映されません。 C-x C-e でも同様でした。 .emacsに書いてる他の部分は反映されています。 (add-hook 'java-mode-hook '(lambda () (setq default-tab-width 2) (setq tab-width 2))) 何がおかしいのか調べるにはどうすべきでしょうか? Emacsの単なる使用にあたるのか、 Lispになるのかわからなかったのでこちらに書き込ませて頂きました。
426 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 02:55:15 ] (setq c-basic-offset 2)
427 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 04:42:31 ] >>426 できました! ありがとうございます。
428 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 09:45:25 ] >>425 フック書かなくてもできる。 (c-add-style "java2" '("java" (c-basic-offset . 2))) (setq c-default-style '((java-mode . "java2") (other ."k&r")))
429 名前:デフォルトの名無しさん [2010/03/11(木) 00:38:15 ] >>400 syntaxテーブルにREM追加すりゃよいかも。 -- で検索すれば雰囲気つかめるんじゃない。
430 名前:デフォルトの名無しさん [2010/03/11(木) 00:41:58 ] (defun a (arg) (+ 1 arg)) をさ、 + 1 じゃなくて、 + 2にしたいときってどうすればlispっぽくかけます?
431 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 03:03:52 ] (defun a (arg n) (if (< n 2) (+ 1 arg) (a (arg (+1 n)))) (a num 0)
432 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 03:05:10 ] (defun a (arg n) (if (< n 2) (+ 1 arg) (a arg (+1 n))) (a 12 0)
433 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 03:43:32 ] >>430 質問の意味がまるでわからないけど (defun a (arg &optional n) (+ arg (or n 1))) ということ? >>432 n >= 2 のとき停止しないような あと、 Emacs Lisp は末尾再帰の最適化が効かないから 適当にループを使った方がいい
434 名前:430 [2010/03/11(木) 23:25:22 ] あぁぁごめんなさい、すでに a って定義されてるけど、 + 1 じゃなくて + 2 にしたいなー っていう時です。 複雑で便利な関数がすでに定義されてあるけど、 なんでこの部分だけこうなんだ!コピペするのはなんだかなぁ・・・ ってときに、リストってのを利用して良い方法はないものかと。
435 名前:430 mailto:sage [2010/03/11(木) 23:27:04 ] 連投さーせん。 さらに、a はすでに定義されてていろんなパッケージで使われてるから、 aの使い方は崩したくない。 そして、aにパッチも送りたくないから、aの定義があるソースコードは 変更しない。って感じ。
436 名前:430 mailto:sage [2010/03/11(木) 23:31:32 ] 自分のイメージをかいとくと、 処理が(別な言語で表現すると array( +, 1, arg ) ってあるんだから、 newfunc = [ array[0], 2, array[2] ] みたいなノリで、新しい関数作れないのかな?ってのを 試行錯誤してる感じです。
437 名前:デフォルトの名無しさん mailto:sage [2010/03/11(木) 23:38:22 ] 諦めろ
438 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 00:05:57 ] >>436 それってclosureやCLOSの抽象関数などに向かう話だと思われ。 つまりCommon Lisp方面。
439 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 00:33:52 ] >>435 defadvice が使えることがある。例えば >>430 の例なら (defadvice + (after foo) (setq ad-return-value (- ad-return-value -1))) ってするとか。 ただし、 + みたいな基本関数にこんな advice をつけて大丈夫かは知らない。 たぶん大丈夫じゃない。 ある程度用途が限定されている関数なら defadvice で少し動作を変えるというのはたまにやる。
440 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 01:55:32 ] >>436 evalで出来なくはないだろうけど、手間が掛かるだけで全然便利じゃない。 あとは、ダイナミックスコープを利用した+の再定義とかもできるだろうけど、 これもバグの元でオススメできない。>>439 の言うdefadviceもあるけど、 あれも限定的にしか使えない。 Lispでのそういう場合のセオリーは、関数を渡せるようにしておいて、 行いたい処理はその中で実行して、適宜切り替えられるようにするんだけど、 そういう風に設計されてなきゃそれまでだしなー。 その関数を書いたやつを内心で罵りながら書き直すに一票。
441 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 09:48:16 ] 動的スコープを利用するとこんな感じかな。 (defvar plus (symbol-function '+)) (defun a (n) (+ n 1)) (flet ((+ (&rest args) (apply plus 1 args))) (a 2)) ただし、この方法ももとの関数の実体をうまく退避しないと 簡単に無限再帰になってスタックオーバーフローするのでまったくオススメしない。 ;; これを書いてるときも何度かスタックオーバーフローさせた Common Lisp だったら function-lambda-expression をごにょごにょして eval もできるかもしれないけど、 Emacs Lisp じゃできないし、何よりも不毛。 もとの関数をちょっと書き換えていいなら、変数の動的束縛をはさんで (defvar *b* 1) (defun a (n) (+ a *b*)) (let ((*b* 2)) (a 2)) ; => 4 とかも。 defadvice でどうにかできないか検討して、それで無理だったら諦めるのが無難かなあ。
442 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 14:36:38 ] そこはコールバックにしとけよ、みたいなの結構あるよね。 url.el とかそんなんばっかり。
443 名前:デフォルトの名無しさん mailto:sage [2010/03/12(金) 19:26:16 ] このあたりって各lispの方言に悩むよね といってもemacs lisp,CL,schemeの3種くらいか、今悩むのは
444 名前:430 mailto:sage [2010/03/13(土) 00:10:38 ] 皆さんどうもありがとうございます! アドバイスは知っていましたが、引数に気をつけないと後遺症が怖いんですよね。 もーちょい皆さんの意見参考にしつつ、粘ります。 >>442 > そこはコールバックにしとけよ、みたいなの結構あるよね。 ありますよねー。でも作った人には利用の仕方が無数に思いつくから、 面倒なんだと思います。 すべてがリスト、っていうプログラムの表現の仕方にあこがれてるので、がんばります、 みなさんありがとー
445 名前:デフォルトの名無しさん mailto:sage [2010/04/05(月) 18:54:20 ] emacs HEADにコミットしたいのですが、コミット権限は誰にどうすれば貰えるのでしょうか?
446 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 01:39:49 ] 大卒の新卒が大量に入ったけど、elispに興味持ってる人ほとんどいないね…時代の流れかな iphoneアプリの人気がすごかった。
447 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 01:50:38 ] 昔は elisp に興味がある新卒が沢山居たの? こういうのは研究室で身に付けてくるか、入社してから師匠に叩き込まれる物かと思ってた。
448 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 08:22:50 ] 研究室で身に付ける人が少なくなったってことだろ
449 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 13:35:21 ] elisp 書く時間あったら javascript 書くだろうなぁ。
450 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 13:54:08 ] 俺も最近elispよりchrome拡張をJavascriptで書く方が多い。 mewじゃなくてgmailだし。
451 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 16:02:15 ] 今ある elisp でわりと事足りてるってのもあるな。 あとなんでもかんでも emacs 中でやろうと思うのは結構時間の無駄なんじゃ?って思うようになった。 一つの端末をずっと使い続けられない職場だからなのかもしれないけど。
452 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 18:07:23 ] テキスト編集はこれからもEmacs。 Elispアプリでは、mewは使わなくなったけど、 navi2chやlookupは使ってる。 HTML/CSSの世界ではFirefox + Javascriptを、 Emacs + elispのように使うようになるのかと想像していたが、 そんなことは全くなかった。 HTML/CSS界のEmacsが現れて欲しい。 XMLで七面倒くさいXULは使わなかったが、 chrome拡張ならなんとかなるかもなあ。 Lispならいいのになあ。
453 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 22:16:13 ] 別に lisp である必要性は全然無いと思う。 javascript がベストな言語だとは思えないけどねえ。 つか「HTML/CSS界のEmacs」()笑っていったいどんなの想像してんのよwww
454 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 22:22:49 ] >>453 >()笑 って書く人初めて見たwww
455 名前:デフォルトの名無しさん mailto:sage [2010/04/07(水) 22:38:32 ] 最近はnavi2chぐらいかなぁ。 仕事だとJavaのコードばっかり書いてるからeclipseメインだわ。
456 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 06:48:38 ] >>()笑 >って書く人初めて見たwww 漏れも時々そうなる ()を先に入力してから カーソルを()の中に入れて笑を書くと 一部のIMEでいつのまにか()の外に笑が移動するんだよ 気付いたら治すけど
457 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 06:50:49 ] ついでにもうちょっと補足しておくと >()を先に入力してから の理由は()が全角になるのを嫌って半角にするんだが 半角( 笑 半角) の順で入力すると切替が面倒なので 先に()を書いてしまう習慣がある 単語登録しろとかいう突っ込みは野暮というもの
458 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 08:04:51 ] つ boiled-egg
459 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 12:09:35 ] (笑)自体入力することなくなったなぁ 草生やしちゃわない?
460 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 13:18:52 ] 「スイーツ(笑)」とかのお陰で語尾以外では再興してきた気もするけどな。
461 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 20:51:24 ] "()笑"が面白いと思うのはlisp使いだからじゃね? Tシャツとnilシャツ ウエイトレス:食後は珈琲でよろしいですか? 客:T とか言うのと同じ楽屋落ちネタつーか
462 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 20:58:33 ] 質問文の最後に p 付けるとかな。
463 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 22:01:15 ] Schme使いはどうしたら?
464 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 22:29:05 ] h の後に e 付けるとかかな。
465 名前:デフォルトの名無しさん mailto:sage [2010/04/08(木) 23:14:11 ] h の後は賢者だろ
466 名前:デフォルトの名無しさん mailto:sage [2010/04/09(金) 03:35:58 ] 「()笑」でC-tだろ常考
467 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 14:40:33 ] minibuffer 用に Abbrev Table をセットするにはどうすればよいですか? local-abbrev-table をセットしても使えませんでした。
468 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 14:46:37 ] (global-set-key "\C-z" 'foo) により \C-z がマップする関数が定義してあると仮定して、その場合、 「\C-z がマップする関数に \C-x もマップする」 という意味の関数を書きたいのですが、どうすれば良いですか? イメージとしては (map-same-keyfunc "\C-x" "\C-z") により、'foo が \C-x がマップされるといったものです。
469 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 15:09:30 ] ここいら辺の関数を使えば出きるんじゃん? * (elisp) Active Keymaps (key-binding "\C-x\C-f") => find-file とか * (elisp) Functions for Key Lookup (lookup-key (current-global-map) "\C-x\C-f") => find-file
470 名前:デフォルトの名無しさん mailto:sage [2010/04/13(火) 22:42:35 ] >>468 > C-z がマップする関数に C-x もマップする とはちょっと異なりますが、C-z に C-x をマップするってのが global-set-key じゃなくて define-key を使えばできます。(キーボードマクロの登録) これでどうでしょうか。具体的には以下の通りです。 (define-key global-map "\C-x" "\C-z")
471 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 03:30:56 ] >>467 ミニバッファーで展開されるのはfundamental-mode-abbrev-tableと global-abbrev-tableみたい。
472 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 21:18:58 ] >>397 y-or-n-p関数の挙動について少し分かったので自己カキコ Gnome側で「CapsLockをCtrlとして扱う」に設定した擬似Ctrl-gだと Emacs側ではC-S-gとして扱われるみたい C-g (translated from C-S-g) runs the command keyboard-quit # もちろん通常のCtrlキー使用なら変換なしにC-gになる y-or-n-pのソース(fns.c)を見てみると、生のC-g以外は入力やり直しに なるのでEmacsの動作としては問題なし。 …と、ここまで書いたはいいが結局解決策は見つかりませんでした。。
473 名前:デフォルトの名無しさん mailto:sage [2010/04/14(水) 22:35:42 ] >>472 > Gnome側で「CapsLockをCtrlとして扱う」に設定した擬似Ctrl-gだと Gnomeのコントロールパネルで変えると、 keysym自体が置き換わるんじゃない? 問題はadd Control = Caps_Lockした時なんじゃないのかな? これはどの規定だったか忘れたけど、違反する使い方。 昔のXEmacsはこの状態見つけるとログ吐いていたと思う。
474 名前:デフォルトの名無しさん mailto:sage [2010/04/22(木) 20:03:41 ] >>473 反応が遅くてスマン nocapsとswapcapsではkeysym?の挙動が違うみたい。 自分が使ってるのはnocapsの方。 swapcapsだと単純にCapsLockがControlに置き換わるけど nocapsだと"translated from C-S-g"となるらしい X11のキーコードの話は今までよく分かってなかったので 現在ググって調べ中…そろそろスレ違いになってきたぞ
475 名前:デフォルトの名無しさん [2010/05/05(水) 22:56:01 ] かつて無いほどに過疎ってるな… 流石にもうelispの時代は終わってしまったのかのう
476 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 23:07:02 ] う、うん……(´・ω・`)
477 名前:デフォルトの名無しさん mailto:sage [2010/05/05(水) 23:52:37 ] Lispって言うほど魅力ないなあ、って勉強しててオモタ。 言語を作れるっていう宣伝が巷に溢れているが、 マクロのことであって、特に一般的に想像するような言語を作れるってのとは違う、 どちらかというとXMLで言う言語を作ってという感じに近い、 プログラミング言語の出来方でいえば、ある構造を別の原始的構造に翻訳する、というものだ。 あと抽象的とは言うが、オブジェクト指向的な意味での抽象性がない。 たとえば、リストがIterableだからリストじゃないものもIterableに振舞えば リストのように扱えるというか、そういうものが無いように見える。 まあそれはともかくとして、Elispは秀丸マクロよりマシだと思うよ。
478 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 01:03:44 ] scalaにハマった友人がLispを研究する意味が無くなったと言ってた
479 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 01:47:07 ] エディタのマクロの中じゃ一番細かい事から大物まで書ける部類だと思うぞ 他のエディタで此処までかけるのってVisualStudioのVBマクロだろうけど、あれは細かいことするのがちょっと大変過ぎるし Briefも割と良くできてたけど大物書くのはイヤになるっていう感じだし Eclipseのプラグインがもっと柔軟になる以外elisp環境に対抗できるのってSmalltalk位じゃないの?
480 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 07:24:14 ] マクロで簡単なレポートを作ったりもできて楽しいけどなあ
481 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 10:51:22 ] >>477 > 言語を作れるっていう宣伝が巷に溢れているが、 Paul Graham 氏がそれを流行らせたのではなかろうか。 >>480 elispは楽しいよ。ただ、pythonとかに比べるとコーディングが かなり遅くなっちゃう。名前空間がないから、同じ 関数を再コーディングするハメになったり、lispがlispである故、 「綺麗に書かなきゃな」ってのがあって、綺麗に書くこと自体が 割と面倒だったりする。
482 名前:デフォルトの名無しさん mailto:sage [2010/05/06(木) 11:44:07 ] 関数呼び出しと、スペシャルフォーム・マクロのインデントのルールみなさん守ってますか? defunとかは勝手にインデントされるけど、 defmacroしたのはdefunとかと同じようなインデントルールにしてますか? 正直インデントは構文にかかわらないわりに面倒。 まあ、視覚的に関数の構造を見られるのはいいけれども。
483 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 14:32:20 ] 君がlisp-indent-functionを知らんだけでは?
484 名前:デフォルトの名無しさん mailto:sage [2010/05/07(金) 15:32:37 ] 自分でdefmacroしたやつもスペース2つのインデントにできる?
485 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 18:54:52 ] >>477 入門本とかだと、表面的なことしかやってないから、全然面白くないよね。 Lispでの抽象っていうのは、OOP的な手法じゃなくって、 関数的な手法を使ってることが多い。つまり、クロージャを渡して、 それを内部で呼び出すことで、柔軟性を確保するとかそういうの。 OOPでもMOPとかどぎついのがあるけど。 On Lisp辺りは、邦訳がネットで無料で公開されてるから、読んでみたら良いよ。 言語を作るというのがどういうことなのか、関数的な抽象化とは何なのか、 具体的な例が乗ってるから。他の言語でも参考になる考え方だと思う。
486 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 19:01:05 ] >>477 忘れてた。 > たとえば、リストがIterableだからリストじゃないものもIterableに振舞えば > リストのように扱えるというか、そういうものが無いように見える。 これは流石に誤解。CLならGray Stream、Schemeならポートがまさにそれだし、 動的型付けを利用した手法は、日常的にみんな使ってる。Emacs Lispでも。
487 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 22:24:49 ] 関数型言語面白そうだし Lisp でもやってみるかねとか言ってた層は Scala あたりに移っちゃったのかな
488 名前:デフォルトの名無しさん mailto:sage [2010/05/08(土) 22:31:10 ] Haskellじゃないかなー。 関数型スキーはHaskell、S式スキーはCommon LispやScheme、 Java資産を活かしたい実用派がScalaやClojure、 並列処理スキーがErlangみたいな気がする。
489 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 06:08:11 ] Scheme使ってる人ですら最初はHaskellとか勧めるぐらいだしな 関数型を学ぶなら今はHaskellがいいんだろうな多分 個人的にはCoqのGallinaもいいんだけど、依存型はまだ難しすぎるから…
490 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 10:01:52 ] Lispはあっちこっち手続きだし。
491 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 10:23:52 ] でもなんつーか、Haskellはやってもしょうがないとは思うよ。 Lispだって、社会人になってからは、ハードコアなEmacs使いが いじり倒したいから趣味で学ぶぐらいでしょ。 そうやって関数型には適度に慣れておくぐらいで十分。 Haskell学んだからって使える場所がないし後にも残らん。 どうせならElispに近いCommon Lisp学んで、CLのコードをポートしたりするのが良い。
492 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 12:25:15 ] elisp やってたら Common Lisp も馴染みやすいかと思い始めたら、 format の辺りなど色々な部分が elisp と違っていて微妙だった。 elisp は C 言語系列をやってきた人に取っ付きやすいよう作られてるなと感じた.
493 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 12:25:30 ] たしかに Haskell を実務で・・・なんて普通のやつらの上を行くぐらいの人じゃないと無理だろな そういう意味じゃ Scala はまだ現実的な線だし elisp も emacs 使い続けるなら悪くないよね。
494 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 13:06:23 ] >>493 > たしかに Haskell を実務で・・・なんて普通のやつらの上を行くぐらいの人じゃないと無理だろな 言っている意味がわからない。 「普通のやつらの上を行くぐらいの人」だと Haskell を実務で使わせてもらえると言っているの? >>492 > format の辺りなど色々な部分が elisp と違っていて微妙だった。 底が浅いなー。 format なんてほとんど表面上のみの違いでしょ。 そんな関数1つより、もっと言語の中を突つかなきゃ。
495 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 13:14:50 ] 底が浅いというのは自分でも重々承知している所だが、表面も結構重要だと感じる。 例えば C を書く時と elisp を書く時では自分の中で切り替えが上手く出来るが、 elisp と Common Lisp ではどうしても似た気分で書いてしまう。 それゆえに細かなところが違っていると、ストレスになる。 まあ、書いていて思ったがこれは自分の問題だな。
496 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 14:05:27 ] >>494 Paul Graham の「普通のやつらの上を行け」で Lisp を業務に使った話になぞらえたんだけど・・・
497 名前:Zeno ◆5nZQbNmQPs [2010/05/09(日) 14:22:14 ] まあ Haskell はプロジェクトには使わせてもらえんだろうな。 VCS で管理もされない個人用のツール程度だったら自由に Haskell を使っても問題はない。 というより、その用途であれば何の言語を使っても良い。
498 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 14:59:12 ] 単純に技術者の数の問題じゃない? あと自社製品とかWebサービスみたいなのだったらHaskell使ったって良いとは思うけど。 請負いで納品するようなのだと運用・保守がかわいそうだなぁ。
499 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 16:58:28 ] EIEIOが標準入りすることでCL packageのdefstructがobsolateになるとかありますか?
500 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 17:08:09 ] 最近誰かも書いてたが「俺のチームならよそでできないその仕事をやれます。」って 状況じゃないと雇われの身としては主流以外の言語使えないよな。
501 名前:デフォルトの名無しさん mailto:sage [2010/05/09(日) 17:19:30 ] lisp(とかHaskellとか)だと他の言語とくらべて開発効率/保守性/性能がこれだけ良いんですってのを 客観的に説明出来るなら良いんだけど、実際業務アプリ作るとかの場合 C#とかJavaあたりで書いた方が楽なんだよねえ。
502 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 01:13:14 ] 業務系だとやるべきことのパターンがかなり決まってるってのはあると思う。 フレームワークに従った方がうまくいく領域なら自由すぎる Lisp 系言語はかえってつらいってのはわかる。 Lisp が DSL 構築できるったって、わざわざ構築せずに済む言語環境があるならそっち使った方がそりゃ楽だ。 それはそれでいいんじゃないの。 ものごとはトレードオフだ。 Lisp がある条件で活躍するためには切り捨てざるを得なかったものだってあるだろうさ。
503 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 06:50:40 ] 今のところ、関数型言語が業務向けで役に立つであろうシチュエーションって 並列化しやすいからスケールアウト時のコストが低いですよ!ぐらいなのかなぁ。
504 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 07:28:42 ] 当たり前だけどクライアントのリクエスト単位では、 すでに並列化されてるんだよね。 リクエストごとにスレッド割り当ててるから。 リクエスト内部の処理を別スレッドにぶった切ったからといって そこまで早くなるとは考えづらい気がする。
505 名前:デフォルトの名無しさん mailto:sage [2010/05/10(月) 23:27:25 ] どっちにしろ普通のアプリで恩恵こうむるのは難しそう・・・
506 名前:デフォルトの名無しさん mailto:sage [2010/05/30(日) 02:05:04 ] macOSXのターミナルからEmacsでC#のプログラムを行おうとしている初心者です 見やすさのためにEmacsにcsharp-modeというのを取り入れようとしていますがうまくいきません 取りあえずsite_lispに拾いもののcsharp-mode.elを入れホームディレクトリで.emacsの設定を軽く追加しました Emacsを--debug-initから.csファイルを開くと以下のように出ます。 Debugger entered--Lisp error: (file-error "Cannot open load file" "csharp-mode") require(csharp-mode) eval-buffer(#<buffer *load*> nil "/Users/host名/.emacs" nil t) ; Reading at buffer position 13 load-with-code-conversion("/Users/host名/.emacs" t t) load("-/.emacs" t t) #[nil "・・・・$ command-line() normal-top-level() .csファイルを新規に作成してもcsharp-modeに認識されずに通常のmodeで開いてしまいます 解決法などご教授頂けたら幸いです
507 名前:デフォルトの名無しさん mailto:sage [2010/05/31(月) 06:30:05 ] >>506 そのエラーメッセージが全てだと思うんだけど。 Cannot open load fileって書いてあるじゃない。 ちゃんとsite-lispにファイルはあるの? あと、こういう場合に一番大事な、 * どう「入れ」たのか * どのような「設定を軽く追加」したのか といったことを全略されると、まともな回答貰いづらいよ。 ついでに言えば、多分スレ違い。
508 名前:デフォルトの名無しさん mailto:sage [2010/06/04(金) 17:52:11 ] 全てのシンボルのリストを返す関数ってなんだっけ?
509 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 15:35:50 ] そんな関数はない! (lexical-let (x) (mapatoms (lambda (y) (push y x))) x)
510 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 16:26:24 ] obarray 見ればいいんじゃない (append obarray nil)
511 名前:デフォルトの名無しさん mailto:sage [2010/06/05(土) 16:56:24 ] >>510 そう、それどぁ。 elisp manual読んでぃて便利だと思ってとぉあ。 アリャガトネ
512 名前:デフォルトの名無しさん [2010/06/24(木) 21:31:27 ] auto-completeで日本語入力をしようと無謀なことやってる者です 内容がemacs自体とは関係なくなってきたような気がしたのでここで質問します。 2バイト文字のあとに1バイト文字が来たらそこを単語の区切りにしたいのですが、 どうしたらいいのでしょうか? 何をword-separating-categoriesに入れていいものかわかりません。 category-tableを使えばいいのはわかったのですが、 2バイト文字すべてを要素に持つようなcategory-tableの作り方がわかりません どうにかヒントだけでも教えていただければと思います。
513 名前:デフォルトの名無しさん mailto:sage [2010/06/24(木) 21:50:42 ] M-x describe-categories (re-search-forward "\\cj")
514 名前:デフォルトの名無しさん mailto:sage [2010/06/24(木) 22:26:08 ] あ、 (add-to-list 'word-separating-categories (cons ?j ?a)) でよかったのか。 ありがとうございます。 が、駄目orz auto-completeはsyntaxがwordの文字が並んでるとすべてcompletionの餌にするのかー、、、 どこでその処理やってるのかわかんない… 全角のあとに半角が着たら半角だけ餌にしたいんだけどなー もうちょっとがんばってみます。 >>513 なんというか申し訳なかったです ありがとうございました
515 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 23:16:10 ] LISPの仏様こと竹内育男が参加するイベント。 -- 国産LISPマシンELISの設計者である、JAIST副学長日比野先生が、この夏、ELISの復活祭を企画されています。 復活祭には、竹内先生をはじめ、TAO/ELISに関わった方々に多数ご講演いただきます。 会場が石川県とちょっと遠いですが、小旅行気分で、ぜひぜひ多くのLISPファンのみなさまにご参加いただきたいと思います。(yshigeru) 日時:8/7(土)〜8/9(月) 場所:JAIST(石川県美濃市) 詳細と参加申し込みは、ELIS復活祭ページをご参照下さい www.jaist.ac.jp/elis-revival/home.html
516 名前:デフォルトの名無しさん mailto:sage [2010/07/05(月) 23:59:54 ] >>514 skkじゃだめ?誤入力を考えるとskkちょー便利だと思うけど。
517 名前:デフォルトの名無しさん [2010/07/06(火) 19:01:35 ] EmacsLispプログラミング入門の12・3の関数forward-sentenceで 引数を1以上にして M-x で動作させるとエラーになってしまいます。 デバッガー?を使ってもいかんせんよくわかりません sentence-endを評価した値が nil なのが原因? Debugger entered--Lisp error: (wrong-type-argument stringp nil) re-search-forward(nil 592 t) (if (re-search-forward sentence-end par-end t) (skip-chars-backward " \n") (goto-char par-end)) (let ((par-end ...)) (if (re-search-forward sentence-end par-end t) (skip-chars-backward " \n") (goto-char par-end))) (while (> arg 0) (let (...) (if ... ... ...)) (setq arg (1- arg))) forward-sentence1(1) call-interactively(forward-sentence1 t nil) execute-extended-command(1) call-interactively(execute-extended-command nil nil) 追記:M-eはきちんと動作しています
518 名前:デフォルトの名無しさん mailto:sage [2010/07/06(火) 19:53:09 ] >>516 skkも考えたんですが、そもそもこれ作ろうと思った発端は、 入力方式の切換えが面倒だった事なのですよ。 須く日本語入力ソフトは切換えが必要なので、 どうにか良い方法はないかと思って辿り着いたのがauto-completeなんです。 自動的に候補が出る形です。 取り敢えず一応完成させました。 入力方式の切換えが必要無いのは便利ですね。 日本語と英語の入り乱れたリストとか テンプレートがあってそれを編集するような場合は使える気がします。 あと、skk だと日本語と英語で配列が違う場合設定が面倒だっていうのもあります。 今打っているのもそれなのですが、これなら配列が違う方が良いというか、むしろ同じだと駄目というか。
519 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 00:08:38 ] >>517 re-search-forwardの第一引数にnilが渡ってるのが原因だと思う。 想像の通り、sentence-endがnilだから。本来、正規表現を文字列で渡す所。 (wrong-type-argument stringp nil) (間違った型の引数 文字列かどうかを判別する関数 nil) って意味。その下にずらずら出てるのは、バックトレース。 どこから呼ばれたコードがエラーになったのか、それで判断できる。 下に行くほど上位の関数。forward-sentence1とかも出てるでしょ?
520 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 00:39:47 ] Emacs Lisp プログラミング入門のその部分が変化に追いついてないみたい。 sentence-end を参照している部分は (sentence-end) に変えてください。 sentence-end はnilでデフォルト値を使うことを意味するようになったので、 正規表現そのものが欲しい場合は関数sentence-endを使うようになりました。 C-h v sentence-end とすれば説明の中に次の記述があります。 > The value nil means to use the default value defined by the > function `sentence-end'. You should always use this function > to obtain the value of this variable.
521 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 00:48:24 ] Emacsのソースコードのtarballの中に入ってるemacs-lisp-introでは ちゃんと反映されているようなので↓は取り消します。 > Emacs Lisp プログラミング入門のその部分が変化に追いついてないみたい。 なんかおかしいなと思ったらお使いのEmacsのバージョンにあったものを 参照してくださいってことで。
522 名前:デフォルトの名無しさん mailto:sage [2010/07/07(水) 20:31:34 ] skk のオンデマンドで再帰的な辞書登録をなんで他のIMEでも採用しないのか不思議でならん。 特に Google IME・・・
523 名前:517 mailto:sage [2010/07/07(水) 20:58:59 ] (sentence-end)に変更したところ無事動かすことが出来ました。 ちゃんとヘルプ読んでるつもりだったんですが全然できてなかったみたいで・・・ 今後はちゃんと読みまくるよう頑張って先に進んでいきます。 レスくださった方々ありがとうございました
524 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 02:17:01 ] www.bookshelf.jp/cgi-bin/goto.cgi?file=emacs21&node=Killing kill-read-only-ok がnilの場合はキルできないと書いてあるはずなんだが 変数がどうあれC-kで行コピーができるような気がするんだが… 俺の解釈が間違ってるのか?
525 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 04:38:33 ] エラーが出るかどうか
526 名前:名無しさん@そうだ選挙に行こう mailto:sage [2010/07/11(日) 23:05:07 ] >>525 つまりコピーできるのは間違ってないのね…