【叩かれて】Emacs Lisp道場【強くなれ】

このエントリーをはてなブックマークに追加
460名無しさん@お腹いっぱい。
すみません,きわめて初歩的な質問です.

setq で,関数側の名前空間に lambda 関数をセットするにはどうしたら良い
のでしょうか?つまり,(defun square (x) (* x x)) と同じことを setq で
やるにはどうしたら良いでしょうか?

Common Lisp (というか,xyzzy Lisp)では
(setq square #'(lambda (x) (* x x))) でできるのですが.
461名無しさん@お腹いっぱい。:2005/05/29(日) 18:58:14
fset
462名無しさん@お腹いっぱい。:2005/05/29(日) 19:00:09
        ∧ ∧
       (σ・∀・)σ  460 ゲッツ!!
        \  \
       /    \
       ∪ ̄ ̄ ̄\)
463460:2005/05/29(日) 19:10:01
>>461
ありがとうございます.(fset 'square (lambda (x) (* x x))) でうまく行き
ました.それにしても,名前空間は本当にややこしいですね.このあたりは,
Scheme が本当に楽だと思います.

>>462
騙りはやめてください.私はアスキーアートを貼ったりすることに興味はあり
ません.
464名無しさん@お腹いっぱい。:2005/05/29(日) 19:14:17
>>460
騙りじゃないYO。

 |:::|::|__    、-'''"´ ̄ ̄`"''''-、   __|_::::||
__|::::|::|_|_   / /       \ \|::::||;;;||..  ___ .___
m|::|::|::::|_/   ● ,,.  .,, ●    ヽ:||::::::_|__|_ | |iiii
::::||::::|;;;;;|.     (__人__)     |目;;‖|≡| ̄|iiii
::::||::::|旦''-、、,,,,,,______,,,,,,、、-'' 超巨大ショボーン
465名無しさん@お腹いっぱい。:2005/05/29(日) 19:21:52
関数の名前空間にlambda関数をセットするって意味わからん
466460:2005/05/29(日) 19:22:01
訂正です.xyzzy-Lisp で,(setq square #'(lambda (x) (* x x))) という書
き方ができると書きましたが,間違いでした.これだと変数側の名前空間にセッ
トされるだけでした.ごめんなさい.しかし,xyzzy ではどう書くのだろう...
fset もないみたいだし.

>>464
すみませんでした.ただ,どうも私は,「番号ゲット」の人と,アスキーアー
トが苦手なのです.前者は全く意義がわからないし,後者は w3m ではアスキー
アートはきちんと表示されませんし.
467名無しさん@お腹いっぱい。:2005/05/29(日) 19:36:39
お前の好みをここに書くことに意義はあるのか。
468460:2005/05/29(日) 20:40:11
>>467 遅くなりました.個人的には意義があると思っております.

道端で大音量の音楽をかけている人がいたとして,そういう人に「私はその種
の行為を好まない」と伝えることには,意義があるというのと同じです.

もちろん,それを聞いてその人が音楽を止めるかはその人の自由ですし,周囲
の第三者が一連の流れをどう受け取るかも,それぞれの自由です.
469名無しさん@お腹いっぱい。:2005/05/29(日) 20:43:23
道端じゃなくてライブハウスでもそうするのかな?
470460:2005/05/29(日) 20:57:21
>>469
なるほど,良い例えですね.ライブハウスなら私はそれをしないでしょう.た
だし私は,その比喩に乗っかるなら,ライブハウスには行きません.

私は UNIX 板などの専門板は道端(ないしは公共空間)と考えており,ラウン
ジやニュース速報板などをライブハウスだと考えているということです(だか
らその種の板には行きません).

しかし,その受け取り方が正しいかはわかりません.というより,こういうも
のに正しいということは存在しません.ただし,その場の第三者の支持をより
多く受ける意見のほうが選択として望ましいでしょう.

以上です.しかし,この種の意見をたくさん書くのは,明らかにこのスレにとっ
て望ましくないですね.これで終わりにします.すみません.
471名無しさん@お腹いっぱい。:2005/05/29(日) 21:41:54
書いてて自己矛盾してるのに気付かないもんかね、まったく。
472名無しさん@お腹いっぱい。:2005/05/29(日) 22:00:32
結論: 句読点に , や . を使うやつはおかしなひとがおおい
473名無しさん@お腹いっぱい。:2005/05/29(日) 22:02:07
この辺で雑談終わりにしないか
474名無しさん@お腹いっぱい。:2005/05/29(日) 22:10:04
>>472
私も句読点は「,」「.」にしてるよ.日本語の論文誌では
そう指定されることが多いから,私の周りでもそういう人は多い.
君はきっとそんな世界とは無縁なんだろうね.


475名無しさん@お腹いっぱい。:2005/05/29(日) 22:18:53
texの時だけそうしてる。
476名無しさん@お腹いっぱい。:2005/05/29(日) 22:21:42
大学院に行くやつはたいてい就職できなかったやつ。
477名無しさん@お腹いっぱい。:2005/05/29(日) 22:44:20
TeXの場合はその方が見栄えがいいから「, 」「. 」だけど、それとてASCIIコードの方だしなあ。
なんにせよ、場もわきまえずに関係の無いことをグダグダと垂れ流し、
挙句の果てには「私も」なーんて他人の振りして自己弁護するような池沼だということだけは分かった。
478460 203-179-90-199.cust.bit-drive.ne.jp:2005/05/29(日) 22:59:38
ID がでないので証拠はありませんが,私は>>470 を最後に書き込みはしてお
りません.私の書き込みは,fill-region で整形してありますので,句読点以
外でも見分けがつくのではないかと思います.私の批判をなさるのは皆さんの
自由ですが.

(それにしても,私はよく自作自演の誤解を受けます.理由はわかりませんが,
>>474さんには申し訳ありません)

ただ一点だけ,>>471 の書き込みの「自己矛盾」という言葉が何を指している
のか,しばらく考えましたがどうしてもわかりません.よろしかったら,矛盾
点をご指摘いただけたら幸いです.皮肉でなしに,真剣に知りたいのです.

もし,お教えする価値がないと思われましたら,このレスを最後に,スレ本来
の流れに戻していただければ幸いです.
479名無しさん@お腹いっぱい。:2005/05/29(日) 23:04:19
460よりもこいつ↓の方が断然好ましいと思う。つか気に入った。
 |:::|::|__    、-'''"´ ̄ ̄`"''''-、   __|_::::||
__|::::|::|_|_   / /       \ \|::::||;;;||..  ___ .___
m|::|::|::::|_/   ● ,,.  .,, ●    ヽ:||::::::_|__|_ | |iiii
::::||::::|;;;;;|.     (__人__)     |目;;‖|≡| ̄|iiii
::::||::::|旦''-、、,,,,,,______,,,,,,、、-'' 超巨大ショボーン
480名無しさん@お腹いっぱい。:2005/05/29(日) 23:05:45
xyzzy-lispってなぁ…
481名無しさん@お腹いっぱい。:2005/05/29(日) 23:24:45
>>477
> TeXの場合はその方が見栄えがいいから「, 」「. 」だけど、それとてASCIIコードの方だしなあ。

日本語の論文では,ASCIIでなくて全角の「,」「.」を指定されるんだけど.
君はほんとに何も知らないんだね.Fランク大の出身者でしょうな.


> なんにせよ、場もわきまえずに関係の無いことをグダグダと垂れ流し、
> 挙句の果てには「私も」なーんて他人の振りして自己弁護するような池沼だということだけは分かった。

最早このあたりになると哀れというか見っともないというか・・・
自作自演じゃないんだけどね.まあ,君のような頭の悪そうな人に
どう思われてもかまわないけど (笑)

482名無しさん@お腹いっぱい。:2005/05/29(日) 23:37:09
結論: 句読点に , や . を使うやつはおかしなひとがおおい
483名無しさん@お腹いっぱい。:2005/05/29(日) 23:42:41
>>481 は学歴しかとりえがない社会不適合者かな?
大学はこういうやつを隔離しておくところ。
ずっと入院して、永遠に退院してこないでください。:-)
484名無しさん@お腹いっぱい。:2005/05/29(日) 23:43:59
いつまで続けんのよ。
485名無しさん@お腹いっぱい。:2005/05/29(日) 23:44:02
>>481
これはどっちのキャラで読んだらいいのかな。
フシアナしてないから「弁護する他人」キャラ?
>>479
いいよな。初めて見た。
486名無しさん@お腹いっぱい。:2005/05/29(日) 23:44:19
:-) ←とかいう顔文字を使う奴が自分は社会に適合できてると思ってるのが笑える
487名無しさん@お腹いっぱい。:2005/05/30(月) 01:19:50
なんで山崎スレでテストしてんだ>>478は。
http://pc8.2ch.net/test/read.cgi/unix/1111372352/17
488名無しさん@お腹いっぱい。:2005/05/30(月) 02:22:12
>>481
日本語の論文って、あんた、Gランク大ですか?
島国根性まるだしですね。
489名無しさん@お腹いっぱい。:2005/05/30(月) 07:10:51
>>488
はあ? いま日本語の論文の話題をしてるんだろ?
なんで突然英語の論文の話題になるの? ふつーは論文を英語で
書いてるよ,そんなの言うまでもないじゃん.
得意げに島国根性だってよ (苦笑).馬鹿と話すと疲れるね.



490名無しさん@お腹いっぱい。:2005/05/30(月) 07:49:04
>>489
(add-hook 'yatex-mode-hook
(lambda ()
(require 'skk)
(setq skk-kutouten-type 'en)))
とでもしとけ。
491名無しさん@お腹いっぱい。:2005/05/30(月) 09:16:54
結論: 句読点に , や . を使うやつはおかしなひとがおおい
492名無しさん@お腹いっぱい。:2005/05/31(火) 02:23:52
日本でまともな研究しているやつっているの?
493名無しさん@お腹いっぱい。:2005/05/31(火) 16:16:20
まともな研究したいやつは皆アメリカへ行く。
494Zeno ◆5nZQbNmQPs :2005/06/01(水) 21:51:38

                    :)
________________________________________________________
セオドア・カジンスキー 「産業社会とその未来」 (aka. マニフェスト) の抜粋
http://www.cnn.com/US/9509/unabomber/09-19/am/excerpt.html
495名無しさん@お腹いっぱい。:2005/06/14(火) 21:04:19
M-x で呼び出せる関数書いたんですが、
それに C-u を前置しても4回連続で実行とかしてくれません
ESC [任意の数字] でも同じ
複数回連続動作させたい場合は、何か特別な事をしなくちゃならないんでしょうか?
496名無しさん@お腹いっぱい。:2005/06/14(火) 21:20:07
(interactive "p")
497名無しさん@お腹いっぱい。:2005/06/14(火) 21:25:33
>>495
特別なっつーか、引数を自分のやりたいように処理してやんなきゃ。
その前置引数を見てその回数だけ繰り返すように関数を書かないと駄目っしょ。
C-u を前置すると Emacs が勝手に繰り返してる訳じゃなくって、C-u が渡さ
れたら繰り返すように関数が作ってある訳で。
498名無しさん@お腹いっぱい。:2005/06/14(火) 22:11:40
>>496-497
すんません。そのようですね
http://www.math.s.chiba-u.ac.jp/~matsu/lisp/emacs-lisp-intro-jp_12.html#SEC130
今この辺見て勉強してるんですが、何故だかうまくいかねっす
もう少しやってみます
499名無しさん@お腹いっぱい。:2005/06/14(火) 22:28:00
(defun hoge (n)
(interactive "p")
(dotimes (i n)
(insert "hoge")))
500498:2005/06/14(火) 23:26:34
一応解決しました
ifの使い方で躓いてただけだった
perlとかCみたいに{}で複数行をひとまとめにできないんで

>>499
ありがとうございます
dotimesなんてものもあるんですね

関数もっと知ってれば結構書けるんじゃないかな、とか思っちゃってる俺
ネット上に結構充実したリファレンス(しかも日本語訳されてる)とかあるし、
金出さなくても勉強できそう
501名無しさん@お腹いっぱい。:2005/06/15(水) 00:46:14
emacs lisp は info のヘルプが超便利だと思うよ。
502名無しさん@お腹いっぱい。:2005/06/15(水) 01:28:29
そだね
いろんな日本語のinfoを捜して、
それ読むだけでもいいんじゃない
503名無しさん@お腹いっぱい。:2005/06/23(木) 13:33:40
lisp 以下のソースを見たらいいんじゃない?
使用したい function の使用例として。
504名無しさん@お腹いっぱい。:2005/06/25(土) 10:23:50
文字列で与えられたシンボルを束縛したいんだけどどうやればいいでしょうか。

font-lock-mode => t

(let* ((bound-str "font-lock-mode")
(intern-soft bound-str))
font-lock-mode)
=> t

これじゃ駄目だし orz
505名無しさん@お腹いっぱい。:2005/06/25(土) 10:32:34
eval すればいい
(let ((bound-str "font-lock-mode"))
(eval `(let ((,(intern bound-str) nil))
font-lock-mode)))
=> nil
よく使うならマクロに
(defmacro hoge (str value &rest body)
(let ((sym (intern (eval str))))
`(let ((,sym ,value))
,@body)))
(let ((bound-str "font-lock-mode"))
(hoge bound-str nil font-lock-mode))
=> nil
506名無しさん@お腹いっぱい。:2005/06/25(土) 11:09:42
>>505
おおー、できました。
eval すりゃいいのか…ってまだよく理解できてないけど。感謝。
507名無しさん@お腹いっぱい。:2005/06/26(日) 18:11:07
eval 必要ないみたい。
(defmacro let-string (str-value-list &rest body)
`(let ,(mapcar (lambda (sval)
(list (intern (car sval)) (cadr sval)))
str-value-list) ,@body))
(let-string (("font-lock-mode" nil)
("test" 11))
(cons font-lock-mode test))
=> (nil . 11)
508名無しさん@お腹いっぱい。:2005/06/26(日) 18:24:34
eval 無いと
(let ((bound-str "font-lock-mode")) (let-string ((bound-str nil)) ...))
みたいに使えないよね。
文字列リテラル書けるのなら最初からシンボルにすればいいんだから、
よそから持って来た文字列に値を束縛したいって話なんじゃないの?
509名無しさん@お腹いっぱい。:2005/06/26(日) 19:24:09
すみません、書いてから気付きました。
510名無しさん@お腹いっぱい。:2005/08/07(日) 01:07:26
hoge という関数が定義されているか調べるにはどのように書けばよいのでしょ
うか?
511名無しさん@お腹いっぱい。:2005/08/07(日) 01:22:09
(fboundp 'hoge)
512名無しさん@お腹いっぱい。:2005/08/17(水) 15:11:54
Linux板のAtok Wnnスレで放置されたんで作ってみた。
(defun to-hankaku ()
"change current word from zenkaku to hankaku"
(interactive)
(save-excursion
(push-mark)
(backward-word 1)
(japanese-hankaku-region (region-beginning) (region-end))
(pop-mark)))
(global-set-key "\M-n" 'to-hankaku)

どなたか叩いてくだひゃい。
本当に聞きたいのはWnn7eggで半角カタカナ入力できるか否かなんだが
513名無しさん@お腹いっぱい。:2005/08/17(水) 16:07:04
普通、関数内部の処理では mark は使わない。
mark は基本的に、ユーザーが手動で region 指定したり移動したりするためのもの。
移動コマンドなんかで、あとでユーザーが使えるように push-mark しとくとか、そういうときに使う。

普段の処理で使うのは marker のほう。
でもこの場合は、その場で region 指定するだけだから、 marker も使わないで済みそうかな。

(save-excursion
(let ((end (point)))
(backward-word 1)
(japanese-hankaku-region (point) end)))

みたいな。
514名無しさん@お腹いっぱい。:2005/08/17(水) 17:00:47
>>513
ありがとさんです。regionといっても
markしなきゃいけないわけじゃないんですね。
えらくすっきりしました。
またなんかあったらよろしく
515名無しさん@お腹いっぱい。:2005/08/21(日) 20:15:39
質問なんですが、例えば(decode-time)の結果のようなリストを
これまた例えば(sec minute hour day month)のような変数(のリスト)に
一気に代入するようなコマンドってないもんでしょうか。
Perlでいう
($sec, $minute, $day, $mon, $year) = localtime();
みたいなイメージなんですが。

あと、Emacs-Lisp Farm ていうMLがあるようですが
過去ログって見れないんでしょうか?
516名無しさん@お腹いっぱい。:2005/08/21(日) 21:07:43
間違った使い方な気がするけど、multiple-value-setqとか?
ログはMLはいってからコマンドメール投げれば取得できるよ。
517名無しさん@お腹いっぱい。:2005/08/21(日) 21:31:55
>>515
(apply (lambda (sec minute hour day month year dow dst zone)
...)
(decode-time))
とか CL 使うなら
(destructuring-bind
(sec minute hour day month year dow dst zone)
(decode-time)
...)
518名無しさん@お腹いっぱい。:2005/08/21(日) 21:55:07
>>516,517
レスどうもっす。
(setq num '(1 2 3 4))
(multiple-value-setq (a b c d) num)
みたいに簡単にできるのですね。助かります。
「間違った使い方」つうのが気になるけど、、。

(apply (lambda (sec minute hour day month year dow dst zone)
(message "%d年%d月%d日%d時%d分" year month day hour minute sec)
)
(decode-time))
として動くのは確認しました。が、当方未だラムダ式とかよくわかっていないので
じっくり考えてみようと思います。
とりあえずapplyのドキュメントを丸のみすれば
「(decode-time)で返されたリストを引数(リスト)としたlambda式が実行された」
ということですね?
519名無しさん@お腹いっぱい。:2005/08/21(日) 23:12:02
間違った使い方な気が……っていうのは、
elispには多値はないのにmultiple-value-*を使ってるから。
520Zeno ◆5nZQbNmQPs :2005/08/23(火) 11:25:55


            ユニバーサルな解釈など存在しない為
             間違った使い方など存在しない


_________________
If T is consistent then T !|- R_T
If T is consistent then T !|- ¬R_T. -- John B. Rosser
521名無しさん@お腹いっぱい。:2005/08/23(火) 12:55:11
そういう考えだとあらゆる価値が平等に無意味になって
思考停止に陥るお。
522名無しさん@お腹いっぱい。:2005/08/23(火) 13:10:54
思考する前に馬鹿を殺そう
523Zeno ◆5nZQbNmQPs :2005/08/23(火) 21:34:07
Reply-to:>>521
          知っていた (る) 人の文調に似ている・・・
             君は吾がそう思っている人物か?

> そういう考えだとあらゆる価値が平等に無意味になって
> 思考停止に陥るお。

       人間は無限近くのチョイスを全て吟味するパワーはない為、
      結局はプラグマティク、若しくは他人が選んでいるチョイスを
                 選んでしまう。

   ただ 520 は「Lisp のような自由度の高い -- 故に創造性の必要とされる --
     言語でただ一つの解釈を強要するのは間違っているのではないのか」
            ということを伝えたかっただけだ。

> Reply-to:>>522
                  お前誰だよ
_________________
If T is consistent then T !|- R_T
If T is consistent then T !|- ¬R_T. -- John B. Rosser
524名無しさん@お腹いっぱい。:2005/08/23(火) 21:53:28
520と523がみえない
525名無しさん@お腹いっぱい。:2005/08/24(水) 00:18:17
見えないのが気になるならフィルタ使わないほうがいいよ
526521:2005/08/24(水) 04:51:42
よくわからんがニューハーフに知り合いはいないよ。
527名無しさん@お腹いっぱい。:2005/08/24(水) 11:37:34
ゴキブリを見て見ぬふりする愚かさ
528名無しさん@お腹いっぱい。:2005/08/24(水) 13:29:28
今は一匹なんだから叩いてつぶしちゃうよりは、
どっかに行くのを待ってもらった方がいい。
529Zeno ◆5nZQbNmQPs :2005/08/24(水) 13:45:30
Reply-to:>>524 お前もな
Reply-to:>>526
> よくわからんがニューハーフに知り合いはいないよ。
                 人違いのようだ

Reply-to:>>528 お前誰だよ
_________________
If T is consistent then T !|- R_T
If T is consistent then T !|- ¬R_T. -- John B. Rosser
530名無しさん@お腹いっぱい。:2005/08/24(水) 14:20:22
Reply-to:>>529
                う   ざ   い

_________________
If T is consistent then T !|- R_T
If T is consistent then T !|- ¬R_T. -- John B. Rosser
531名無しさん@お腹いっぱい。:2005/08/24(水) 16:44:22
インライン関数を変更した際、
それを呼出している関数(バイトコンパイル済み)に反映させる
手軽な方法はないでしょうか?
いちいち定義してるとこに飛んで評価するのは面倒なもので。
532名無しさん@お腹いっぱい。:2005/08/29(月) 14:30:23
>>531
unload-featureとか使えない?
わたし自身、一度も使った事が無いから
良く分かんないけど。
533名無しさん@お腹いっぱい。:2005/08/31(水) 09:25:32
テキストファイルを Emacs でバッチ処理して結果を stdout に吐きたいんです
が、

--- testout.el ---
(defun testout (file)
(insert-file-contents file)
;; なんか処理する とりあえずここではなにもしない
(princ (buffer-string)))
--- testout.el ends here ---

emacs -Q --batch -l testout.el --execute='(testout "in.txt")' > out.txt

とした時に、in.txt にある日本語が out.txt では化けてしまいます。(各文字
の頭に '\222' が付くみたい、ascii は大丈夫)

ちゃんと動かすにはどうすりゃいいでしょうか。
534名無しさん@お腹いっぱい。:2005/08/31(水) 10:32:55
a) coding systemを設定する。
b) testout.elの中でout.txtに書く。

535名無しさん@お腹いっぱい。:2005/08/31(水) 10:38:22
>>533
set-terminal-coding-system
536名無しさん@お腹いっぱい。:2005/08/31(水) 10:44:24
stdout がファイルの場合は terminal-coding-system は無視されて
emacs-mule になるよ。なので 534 の b のようにするしかない。
537533:2005/08/31(水) 18:13:37
>>534-536
むむ、write-file するしかないのかあ。フィルタの類ではないとはいえちょっ
と意外な気も。まあ、関数内でファイルに書いてもなんとかなるのでそうしま
す。サンクスでした。
538名無しさん@お腹いっぱい。:2005/09/01(木) 17:23:05
encode-coding-string したものを princ するのはだめか?
(未確認)
539名無しさん@お腹いっぱい。:2005/09/01(木) 23:28:29
>>538
おお、なるほど。

(princ (encode-coding-string (buffer-string) 'euc-jp))

でやってみたら大丈夫なようです。エンコードが決め打ちなのが格好悪いです
が、まぁしょうがないかな。ありがとうございました。
540名無しさん@お腹いっぱい。:2005/09/01(木) 23:45:04
terminal-coding-systemにすれば?
541名無しさん@お腹いっぱい。:2005/09/02(金) 00:11:15
>>540
emacs -Q --batch --execute='(print (terminal-coding-system))'

で japanese-iso-8bit が返ってきますね。.emacs 読んでなくても大丈夫なの
か。terminal-coding-system 使うことにします。どうもでした。
542ヽ(´ー`)ノ ◆.ogCuANUcE :2005/09/02(金) 00:35:37
>>541
ロケール見てるっぽいね。

$ LC_ALL=C emacs -Q --batch --execute='(print (terminal-coding-system))'

だと nil だったから。nil の時だけ us-ascii にしておけば問題ないと思う。
543名無しさん@お腹いっぱい。:2005/09/02(金) 09:32:49
>>539

入力ファイルと同じ coding-system にしたいのであれば,
insert-file-contents した直後の last-coding-system-used を
使うというのはどうだろう。
544名無しさん@お腹いっぱい。:2005/09/04(日) 13:45:39
Elispを初めて改造してみたのですが
うまく行きませんでした

changeが設定されていれば、nonにchangeを入れたいのですが
以下のように書いたところうまくいきませんでした
間違っているでしょうか?

(if change
(setq non change))
545544:2005/09/04(日) 13:49:30
ちなみに、
(setq change 'hoge)
のように設定されていると、うまくどうさします
546544:2005/09/04(日) 13:51:48
解決しました
変更しない場合は
(setq change ')
として、変数は作成しておかないとダメなんですね

変数が無い場合も正しく動作するようにはできないでしょうか?
547名無しさん@お腹いっぱい。:2005/09/04(日) 14:04:21
質問は上げとけ
548名無しさん@お腹いっぱい。:2005/09/04(日) 14:17:23
>>543
なるほど。今回のは元ファイルと常に同じって訳でもなかったんですが、そう
限定できる場合はいいかもしれませんね。アドバイスどうもです。

>>546
よくわからんが

(and (boundp 'change) change
(setq non change))

とか?
549名無しさん@お腹いっぱい。:2005/09/05(月) 15:14:56
>>546
そんな構文あるのかー!
と思って思わず確認しちゃったよ。
550名無しさん@お腹いっぱい。:2005/09/06(火) 09:40:12
emacs-cvs 使おうと思ったら、its とやらが含まれてないっぽいんんだけど、
どうしたらいい?
551名無しさん@お腹いっぱい。:2005/09/06(火) 09:52:04
あ、みっけた。
552名無しさん@お腹いっぱい。:2005/09/06(火) 12:38:05
>>550
tamgao入れれ。
553名無しさん@お腹いっぱい。:2005/09/06(火) 13:27:48
>>552
emcws あてますた。
Makefile.in は手でなおして、configure は autoconf で作りなおしますた。

tamago と emcws ってどっちがいいの?
554名無しさん@お腹いっぱい。:2005/09/06(火) 13:52:42
tamago
555名無しさん@お腹いっぱい。:2005/09/15(木) 03:44:22
Elispはじめて間もないのですが、質問です。
ある変数に入っている文字コードを判別するのって
どうやればいいのでしょうか??
例えば、

(setq hoge1 "ほげ" hoge2 "hoge")

ここで、hoge2 に入っている文字列がローマ字であるかどうかだけ
分かれば、もしくは hoge1 に2バイト文字が入っているかどうかが
分かれば分かればいいのですが・・・

get-text-property あたりを見ているのですが・・・
ご教授お願いします。
556名無しさん@お腹いっぱい。:2005/09/15(木) 04:06:20
>>555
その目的なら multibyte-string-p でよさそうな気がする。
正規表現で調べるって手もあるだろうけど。
557名無しさん@お腹いっぱい。:2005/09/15(木) 04:07:42
「ローマ字であるかどうかだけ」
これは、「アルファベットのみからなる」と置き換えてもいいの?
558名無しさん@お腹いっぱい。:2005/09/15(木) 04:09:45
そーいえばset-buffer-multibyteの使い方よくわからん
559名無しさん@お腹いっぱい。:2005/09/15(木) 04:27:26
>>556
全然よくない。
560555:2005/09/15(木) 10:03:45
皆様、レスありがとうございます。
>>557さんの言うとおり、入っている文字列が
ただ単に日本語かまた違うものかを判別したいだけ
なので”アルファベットのみからなる”と
置き換えても構わないと思います。

すみません、よろしくお願いします。
561名無しさん@お腹いっぱい。:2005/09/15(木) 10:10:12
Ro-maji hyouki no nihongo wa dousuruno?
562名無しさん@お腹いっぱい。:2005/09/15(木) 10:10:53
hoge が、アルファベットのみで構成された文字列かどうか調べるなら、

(string-match "\\`[A-Za-z]+\\'" hoge)

charset で調べるなら、

(let ((charsets (find-charset-string hoge)))
(catch 'done
(while charsets
(unless (memq (car charsets)
'(ascii eight-bit-control eight-bit-graphic))
(throw 'done t))
(setq charsets (cdr charsets)))
nil))

とか?
563555:2005/09/15(木) 10:34:56
おお、素早いレスありがとうございます!!
今試して見ます!!
564555:2005/09/15(木) 10:50:33
>>562
おお、出来ました!!
正規表現での判別と文字そのものの判別ですか〜
なるほどなるほど。どうもありがとうございます。
勉強になりました。
565名無しさん@お腹いっぱい。:2005/09/15(木) 11:32:24
カテゴリ使って
(string-match "\\Ca" "abc")
=> nil
(string-match "\\Ca" "あいうえお")
=> 0
566名無しさん@お腹いっぱい。:2005/09/15(木) 19:09:26
再度書き込みすみません。
例えば、以下のように関数の続きとして>>562さんのコードを
使いたいのですが、(let を外してしまうと
上手く動いてくれません。let は局所的変数宣言でしたよね?

(defun .....
.
.
(setq hoge (split-string "name1 name2 name3"))
(setq name_s (length hoge) name_n 0 mew-from-sex 1)
(if (let ((charsets (find-charset-string (nth name_n hoge))))
(catch 'done
(while charsets
(unless (memq (car charsets)
'(ascii eight-bit-control eight-bit-graphic))
(throw 'done t))
(setq charsets (cdr charsets)))
nil))
(setq people 0)
(setq people 1))
.
)
よろしくお願いします。。。
567名無しさん@お腹いっぱい。:2005/09/15(木) 19:17:35
(let を外したいのは何故?
568名無しさん@お腹いっぱい。:2005/09/15(木) 19:27:46
関数の始めにいっきに let で変数宣言したくて、

(let ((charsets (find-charset-string (nth name_n hoge))))
も含めて宣言しようと外したのですが。。。
569名無しさん@お腹いっぱい。:2005/09/15(木) 19:42:22
多段let撲滅
570名無しさん@お腹いっぱい。:2005/09/15(木) 19:45:03
該当の部分を函数にする
途中に let がある事に慣れる
(let (charsets)
...
(if (progn
(setq charsets (find-charset-string ...

のどれか
571名無しさん@お腹いっぱい。:2005/09/15(木) 19:54:27
>>569
参考までに教えて欲しんだけど
1. 実行速度
2.可読性
のいづれかの理由によるものでしょうか? それとも他の理由?
572569:2005/09/15(木) 19:55:16
>>571
いや、俺はちょっと皮肉(?)ってみただけで。
573名無しさん@お腹いっぱい。:2005/09/15(木) 19:57:03
えっと、以下のようにするということでしょうか??

(let (charsets) hoge name_s name_n people mew-from-sex
(setq hoge (split-string "name1 name2 name3"))
(setq name_s (length hoge) name_n 0 mew-from-sex 1)
(if (progn setq charsets (find-charset-string (nth name_n hoge))
(catch 'done
(while charsets
(unless (memq (car charsets)
'(ascii eight-bit-control eight-bit-graphic))
(throw 'done t))
(setq charsets (cdr charsets)))
nil))
(setq people 0)
(setq people 1)))
574名無しさん@お腹いっぱい。:2005/09/15(木) 19:58:15
うわ、空白がすごくみずらいですね。。。
すみません。。
575名無しさん@お腹いっぱい。:2005/09/15(木) 19:58:33
>>573
letの使い方理解してないぞ
576名無しさん@お腹いっぱい。:2005/09/15(木) 20:01:27
あ、申し訳ないです。
変数リストを()でひとまとめにしていなかったですね。

(let (charsets) hoge name_s name_n people mew-from-sex

こんな感じでしょうか??
577名無しさん@お腹いっぱい。:2005/09/15(木) 20:02:36
こうでした、何度もすみません。
(let ((charsets) hoge name_s name_n people mew-from-sex)
578名無しさん@お腹いっぱい。:2005/09/15(木) 20:50:17
初心者は setq 禁止
579名無しさん@お腹いっぱい。:2005/09/15(木) 21:34:54
Emacs をわたし色に染めて♪ の人は自殺しそうでしたがまだ生きてますか?
580名無しさん@お腹いっぱい。:2005/09/15(木) 21:46:13
>>579
なにがあったの?
581名無しさん@お腹いっぱい。:2005/09/17(土) 06:30:27
LISPのクラスを取るか迷っている初心者ですが、LISPが出きると、どういうことができるようになるのか教えてください。
582名無しさん@お腹いっぱい。:2005/09/17(土) 08:00:56
>>581
特にない。
583名無しさん@お腹いっぱい。:2005/09/17(土) 08:54:52
>>581
普通のやつらの上を行ける。
584名無しさん@お腹いっぱい。:2005/09/17(土) 11:44:54
>>583
どういう点で?
585名無しさん@お腹いっぱい。:2005/09/17(土) 13:42:35
586名無しさん@お腹いっぱい。:2005/09/17(土) 14:05:26
>>581
クラスって大学か何かか。
EmacsLispでCLOSみたいなもんを誰か作ったのかと思った。
587名無しさん@お腹いっぱい。:2005/09/17(土) 14:29:15
学校の授業という意味です。
588名無しさん@お腹いっぱい。:2005/09/17(土) 14:44:13
>>585
ありがとうございます。読みました。
中で「Lispはパワフルな言語だとは知っているけど」等、LISPは凄いと絶賛していますが、
具体的にどう凄いのかってのが、どんなところで使われているのかってのが分からないのですが…。
LISPが出きると、どういうときにそれを活かせますか?

この授業は卒業のため取らなければならない科目ではないのですが、
将来役に立つのなら、取って見ようかなと迷っています。
589名無しさん@お腹いっぱい。:2005/09/17(土) 15:16:50
学生なのに自分からは何も調べようとしないやつには、どんなことであろうと将来役に立たない
590名無しさん@お腹いっぱい。:2005/09/17(土) 15:17:55
lisp なんかできたとして、将来研究所とかに行かない限り用途ないのでは?
perl なり php なり使えたほうがバイトも出来ておとく。
591名無しさん@お腹いっぱい。:2005/09/17(土) 15:41:04
perlなんか授業でやるか?
592名無しさん@お腹いっぱい。:2005/09/17(土) 16:06:14
perlの授業あります。
将来はネットワークエンジニア希望です。
593sage:2005/09/17(土) 17:56:43
>>592
いらないんじゃね?
594名無しさん@お腹いっぱい。:2005/09/17(土) 17:59:54
久しぶりに2chに来たらsageるつもりがageちまった。
595名無しさん@お腹いっぱい。:2005/09/17(土) 18:06:49
とりあえず、この板ってのは古い知識しか持たない老人が多いので、
こんな場所で進路相談をするのは不適切なんじゃないかなと思う。
596名無しさん@お腹いっぱい。:2005/09/17(土) 20:58:02
将来役に立つかっつったら微妙だわな。
だけど大学において考え方を学ぶ、学び方を学ぶって意味ではlispはおすすめ
かもしれず。
関係ないけど、「出きる」って変換は気持ち悪いな。
597名無しさん@お腹いっぱい。:2005/09/17(土) 21:02:25
LISPを使って(応用して)なにをするかによるだろう。

単純に、LISPを勉強するだけなら独学で(Emacs使ってるうちに)勉強
できるよ。なにしろ、単純な言語だからな。

インタプリタの作成とかまでやるんだったらいいんじゃないかな?
言語仕様が簡単だから結構楽しいと思うよ。
598名無しさん@お腹いっぱい。:2005/09/17(土) 21:07:32
> 将来役に立つかっつったら微妙だわな。
> だけど大学において考え方を学ぶ、学び方を学ぶって意味ではlispはおすすめ
> かもしれず。

関係ないけど、気持悪い書き方だな。
599名無しさん@お腹いっぱい。:2005/09/17(土) 21:24:34
だいたい、Emacs Lispの板でLispについて訊いても……
600名無しさん@お腹いっぱい。:2005/09/17(土) 21:27:13
> 訊

おじさん、何でこんな漢字つかってるの?
601名無しさん@お腹いっぱい。:2005/09/17(土) 22:20:25
602名無しさん@お腹いっぱい。:2005/09/17(土) 22:25:40
>>601
一時帰宅が許されたのですか。病状も多少はよくなったようで、
御同慶の至り。
603名無しさん@お腹いっぱい。:2005/09/18(日) 00:46:55
Emacs Lispの板???
604名無しさん@お腹いっぱい。:2005/09/18(日) 02:21:31
返事が遅れました。初心者に付き合っていただいて、ありがとうございます。
LISPがC言語とどう違うのか教えてください。
言語が違うってのは略。利点や使う場面等。
UNIXと深い関係にあるのですか?
605名無しさん@お腹いっぱい。:2005/09/18(日) 02:22:56
Lisp なんかつかうやつはばかです。ということじゃないかな。
606名無しさん@お腹いっぱい。:2005/09/18(日) 02:37:36
ム板のlispスレできいたら?
607名無しさん@お腹いっぱい。:2005/09/18(日) 03:20:23
とりあえず初心者装った釣りでないならバカでしょう
知ってか知らずかかまうね、ここの人は
608名無しさん@お腹いっぱい。:2005/09/18(日) 17:53:19
使う場面: スクリプティング用途
  例:
   Emacsのカスタマイズ
   Gimpのプラグイン (script-fu)
   ゲーム作り (AisleRiotのルールとかtrackballsのステージとか)
   WMのカスタマイズ (http://scwm.sourceforge.net/ とか)
   uimの各種IMの実装
利点:
  クロージャとマクロが使える

いや、「LispとCがどう違うか」なんて言ってる奴にマジレスするなんて
我ながら釣られているとしか思えないが…
609名無しさん@お腹いっぱい。:2005/09/18(日) 18:15:22
C 使えれば、ライブラリ使っていろんなもの開発できるしなぁ。
610名無しさん@お腹いっぱい。:2005/09/18(日) 23:22:31
複雑なことをやろうとすると、
結局Cで未完成なLISP(略
611名無しさん@お腹いっぱい。:2005/09/18(日) 23:24:42
どれだけ lisp な製品が世の中に出ているかもあわせて考えるべきんじゃないかと。
612名無しさん@お腹いっぱい。:2005/09/19(月) 13:02:46
>>611
誰かがクラッシュバンディクーの中でlispが動いているとか言っていた
613名無しさん@お腹いっぱい。:2005/09/19(月) 13:24:27
建築系でメジャーな AutoCAD も lisp でカスタマイズする。
Emacs みたいに lisp interpreter をコアにしてるのか?
614名無しさん@お腹いっぱい。:2005/09/20(火) 02:30:22
ってか、俺としてはむしろ、LispとCの共通点の方が知りたい。
615名無しさん@お腹いっぱい。:2005/09/20(火) 11:43:27
>>612
ゲームはメモリ管理がシビアだから既存の物を使えないんで、
1から実装することになって、結局、実装の容易なlispになるんだろう。
616名無しさん@お腹いっぱい。:2005/09/20(火) 11:48:46
617名無しさん@お腹いっぱい。:2005/09/20(火) 12:24:10
>>616
正直、PythonやRubyが普及している今となってはlispを使う意味はないよなぁ。

その記事で、オブジェクトの永続化とか動的バインドとかで、すごい助かった
って言ってるけど、それなら別にlispでなくてええやん。Pythonでええやん。
618名無しさん@お腹いっぱい。:2005/09/20(火) 13:23:54
まとめると、lisp なんか使う奴はバカですってことか。
619名無しさん@お腹いっぱい。:2005/09/20(火) 13:24:50
別に Python でなくてもええやん。
620名無しさん@お腹いっぱい。:2005/09/20(火) 14:16:29
いつまでもこのスレでこの話を扱ってる奴が知障
621名無しさん@お腹いっぱい。:2005/09/20(火) 21:40:31
池沼がこのスレに粘着するから、
そんなこと書いてはいけません。
622名無しさん@お腹いっぱい。:2005/09/22(木) 05:23:11
Lisp 道場らしくいこう。

java のソース上で、find-file-at-point したときに、クラスに対応したファイルを探
してみる。

制限:
- 同じソースツリー上にあるものだけが対象。
- 今見てるソースと同じディレクトリにクラス名と同じパッケージがあったりするとダメ
だったりする。

次のレスからソース。
623622:2005/09/22(木) 05:24:27
;; その1
(require 'ffap)

(eval-when-compile
(require 'cl))

(defun ffap-java-package-to-path (package-or-fqcn)
(replace-regexp-in-string "\\." "/" package-or-fqcn))

(defun ffap-java-import-list ()
(save-excursion
(goto-char (point-min))
(let (list)
(while (re-search-forward "import\\s-+\\(.+\\)\\s-*;" nil t)
(push (match-string 1) list))
(nreverse list))))

(defun ffap-java-src-directory ()
(save-excursion
(goto-char (point-min))
(if (re-search-forward "package\\s-+\\(.+\\)\\s-*;" nil t)
(let ((package (match-string 1)))
(replace-regexp-in-string
(concat (regexp-quote (ffap-java-package-to-path package)) "$") ""
(directory-file-name default-directory)))
default-directory)))
624622:2005/09/22(木) 05:25:17
;; その2

(defun ffap-java-mode (name)
(let ((class (car (split-string name "\\.")))
(import-list (ffap-java-import-list))
(src-directory (ffap-java-src-directory)))
(or
(catch 'found-class
(dolist (import-class import-list)
(when (string-match (concat "\\." (regexp-quote class) "$")
import-class)

(throw 'found-class
(expand-file-name
(concat (ffap-java-package-to-path import-class)
".java")
src-directory)))))
(ffap-locate-file
name '(".java")
(delq nil
(cons
"."
(mapcar (lambda (import-class)
(when (string-match "\\.\\*$" import-class)
(expand-file-name
(ffap-java-package-to-path
(replace-match "" nil nil import-class))
src-directory)))
import-list)))))))
625622:2005/09/22(木) 05:26:45
;; 設定
(add-to-list 'ffap-alist '(java-mode . ffap-java-mode))

これでおしまい。
素直に jde とか gtags 使えよって話もあるけどね。
ちょっと開いたソースのクラスを追ったりするのには使えると思う。
626名無しさん@お腹いっぱい。:2005/09/24(土) 12:38:06
>>622
おっ、これ結構つかえる。あんがと
627622:2005/10/08(土) 02:57:34
淋しすぎるから、ちょっとだけネタ投下。

nxml ネタその1
昔どっかに書いた気もするけど、無理矢理 mule-ucs と共存させるにはこんな感じに修
正すればそれっぽくいける。
ただし、どんな問題が起きるか分からないから自己責任でやる事。
;; 何かあるから無効にしてるハズだから。

--- nxml-mode-orig/nxml-mode.el
+++ nxml-mode/nxml-mode.el
@@ -33,8 +33,8 @@
-(when (featurep 'mucs)
- (error "nxml-mode is not compatible with Mule-UCS"))
+;; (when (featurep 'mucs)
+;; (error "nxml-mode is not compatible with Mule-UCS"))

--- nxml-mode-orig/rng-auto.el
+++ nxml-mode/rng-auto.el
@@ -26,8 +26,8 @@
-(when (featurep 'mucs)
- (error "nxml-mode is not compatible with Mule-UCS"))
+;; (when (featurep 'mucs)
+;; (error "nxml-mode is not compatible with Mule-UCS"))
628622:2005/10/08(土) 03:01:50
nxml ネタその2
自分で mime-charset の名前を定義できるようにする。
ari さんの cp932.el を使えばカンペキ。

(defvar nxml-mime-charset-coding-system-alist
'(("windows-31j" . shift_jis)
("cp932" . shift_jis)
("ms932" . shift_jis)))

(defadvice nxml-mime-charset-coding-system
(after nxml-mime-charset-coding-system-use-alist activate)
(unless ad-return-value
(setq ad-return-value
(cdr (assoc-ignore-case (ad-get-arg 0)
nxml-mime-charset-coding-system-alist)))))

629名無しさん@お腹いっぱい。:2005/10/21(金) 12:16:09

バッファリストをソートしようと
こんな感じにしたけど、全部のバッファが表示されない。。

(defadvice buffer-list (around buffer-list-around activate)
(sort ad-do-it
'(lambda (b1 b2)
(string< (buffer-name b1) (buffer-name b2)))))


defadvice 良く分からん。
Elispも。
630名無しさん@お腹いっぱい。:2005/10/21(金) 16:32:23
make-variable-buffer-localとdefvaraliasの
合の子みたいなのってできないでしょうか。
デフォルトでは変数Bは変数Aの値を使うけれど、
setqされるとAの値を変更するのではなく、
以後は独立した値を持つ、と。
631名無しさん@お腹いっぱい。:2005/10/21(金) 16:38:22
ムリ。
632名無しさん@お腹いっぱい。:2005/10/21(金) 16:50:26
(or B A) で代用か
633名無しさん@お腹いっぱい。:2005/10/21(金) 17:29:55
make-local-variable?
634名無しさん@お腹いっぱい。:2005/10/21(金) 17:37:53
>>629
buffer-listは表示なんかしない。

何がしたいのかよくわからんが、list-buffersでの並びを制御したいのだったら
list-buffers-noselectをadviceするべきだと思う。
635名無しさん@お腹いっぱい。:2005/10/21(金) 19:49:11

したいことは、C-xC-bのとき
ソートしたいなーと思ったんだけど。

list-buffers-noselect の中で buffer-list を呼んでるんで
いいと思ったが、だめか。。
636名無しさん@お腹いっぱい。:2005/10/21(金) 20:10:55
>>635
(setq ibuffer-default-sorting-mode 'alphabetic)してibuffer使っとけ。
637名無しさん@お腹いっぱい。:2005/10/21(金) 20:23:34
list-buffers 使いやすいか?
638名無しさん@お腹いっぱい。:2005/10/21(金) 20:59:36
Oh Thanks.

ところで、ibuffer ってファイルだけ
表示って可能か?

C-uC-xC-b っぽいこと。
639名無しさん@お腹いっぱい。:2005/10/26(水) 16:58:28
初歩的な質問だと思いますが,
xemacsで
/home/mako/jikken/userFiles/690562.txt
など,
/homeではじまり.txtで終るファイル
へのパスが書かれていた場合,
そのパスの上でマウスの中ボタンをクリックすれば,
xemacsでそのファイルを起動できるようにする方法を
教えてください.

あまりLISPにくわしくないので,記述法など詳細に教えて頂ければ
助かります.

googleで検索したところ,URLをマウスの中ボタンをクリックすれば,
ブラウザで起動できるようにする方法は,
(autoload 'browse-url-at-mouse "browse-url"
"Ask a WWW browser to load a URL clicked with the mouse." t)
(add-hook 'mew-message-mode-hook
(function
(lambda()
(local-set-key [mouse-2] 'browse-url-at-mouse)
)))
でできるという事は分かりました.
これを,txtファイル,XEMACSで起動という形に出来れば最高なのですが.

またいろいろ調べていると,thingatptやfiberという
プログラムを使うと出来そうなのですが,そこからどうすれば良いのかが
分かりません.明日までに出来るようにしてと頼まれているので,
急いでいます.

宜しくお願い致します.
640名無しさん@お腹いっぱい。:2005/10/26(水) 17:44:52
よろしくお願い致します.
急いでいます.
641名無しさん@お腹いっぱい。:2005/10/26(水) 17:45:58
すみません.
自己解決しました.
642639:2005/10/26(水) 19:05:10
解決はしていません.
よろしくお願い致します.
643名無しさん@お腹いっぱい。:2005/10/26(水) 19:14:58
Emacs Lisp道場っつーネタかよそれ。しかもすげー自己中。そしてバカ。

小学生が大学生の電気工学の授業中に乗り込んでいって
これができる回路を作ってください。明日までに提出する自由工作なんです。よろしく。
ついては電子工作に詳しくないので回路や作り方も懇切丁寧に教えてください。
というみたいな行動を自分がしているというのは認識しているか? >>639
644名無しさん@お腹いっぱい。:2005/10/26(水) 19:57:32
Emacs 22だとlist-buffersではWindowsのエクスプローラとかみたいに
見出しをクリックして並べ替えできるようになってるんだけど、
ibufferは旧態依然なので見劣りしてしまうね。
645名無しさん@お腹いっぱい。:2005/10/26(水) 22:19:06
クリック
646名無しさん@お腹いっぱい。:2005/10/26(水) 23:28:46
>>644
Emacsの上でまでマウスを使いたくない派の俺としては、旧態依然としていても
, や s a とかでソートのモードが変更できる ibuffer の方が100万倍使いやすいわけだが。
647名無しさん@お腹いっぱい。:2005/10/26(水) 23:42:04
マウスでできる != マウスでしかできない
648名無しさん@お腹いっぱい。:2005/10/27(木) 01:58:41
>>639 が「自分はヌルーされている」と気付くのはいったいいつかな?(ワクテカ(AA略
649名無しさん@お腹いっぱい。:2005/10/27(木) 10:40:24
俺もマウスは嫌いだが、Diredの中のファイルは
マウスで他のアプリにドロップしたくなる。
650名無しさん@お腹いっぱい。:2005/10/27(木) 12:17:30
そもそもマウス刺さってないし。
651名無しさん@お腹いっぱい。:2005/10/27(木) 13:49:43
kill-ring-save は 'invisible 属性のテキストもコピーしてしまいますが、
'invisible 属性のない普通のテキストのみをコピーするようにするにはどうすれ
ば良いでしょうか?
652名無しさん@お腹いっぱい。:2005/10/28(金) 01:25:52
>>649
Windows だったら CraftDrop と組み合わせればいけるよ。
653名無しさん@お腹いっぱい。:2005/10/28(金) 02:15:52
>>651
でっちあげてみた。
ただ、複数の invisible 属性があるような場合だとうまく動かない。
たとえばこんなの
(concat "a" (propertize "b" 'invisible 'test1) (propertize "c" 'invisible 'test2) "d")

(defun kill-ring-save-without-invisible (beg end)
(interactive "r")
(kill-ring-save beg end)
(let ((kill (car kill-ring))
new-kill pos)
(when (get-text-property 0 'invisible kill)
(setq kill
(substring kill
(or (next-single-property-change 0 'invisible kill)
(length kill)))))
(while (setq pos (next-single-property-change 0 'invisible kill))
(setq new-kill (concat new-kill (substring kill 0 pos)))
(setq kill
(substring kill
(or (next-single-property-change pos 'invisible kill)
(length kill)))))
(setq new-kill (concat new-kill kill))
(kill-new new-kill t)))
654名無しさん@お腹いっぱい。:2005/10/28(金) 05:44:14
複数の invisible 属性に対応してみた。

(defun kill-ring-save-without-invisible (beg end)
(interactive "r")
(kill-ring-save beg end)
(let ((kill (car kill-ring))
(pos 0)
new-kill)
(while (> (length kill) 0)
(setq pos (or (next-single-property-change 0 'invisible kill)
(length kill)))
(unless (get-text-property 0 'invisible kill)
(setq new-kill (concat new-kill (substring kill 0 pos))))
(setq kill (substring kill pos)))
(kill-new new-kill t)))
655名無しさん@お腹いっぱい。:2005/10/28(金) 10:25:41
>>652

だんな!

このご恩は一生わすれませんぜ!
マウス使わないでOKなとこもGoodですぜ!
656名無しさん@お腹いっぱい。:2005/10/28(金) 13:03:48
どこが道場なんだ?
657名無しさん@お腹いっぱい。:2005/10/28(金) 13:28:05
ここ。
658名無しさん@お腹いっぱい。:2005/10/28(金) 14:03:40
六三郎
659名無しさん@お腹いっぱい。:2005/10/28(金) 15:52:28
>>653-654 さん
お返事ありがとうございます。

多分その関数は 21.3 までなら動くでしょうが、22.* では動かないかと思います。
(22 では (get-char-property pos 'invisible) が invisible 属性のテキストに対してうまく機能しないので。)

まあでもなんとか自力でやりたいことを達成することができました。
お世話になりました
660名無しさん@お腹いっぱい。:2005/10/28(金) 16:08:26
んじゃ22で動くようにしたものを貼ってよう。giveはするがtakeはしない?
661名無しさん@お腹いっぱい。:2005/10/28(金) 16:09:02
まちがった、giveとtakeが逆だった……orz
662659:2005/10/29(土) 00:04:49
>>660 san
そうですよね。

;; [ 2005-10-28 (00:38) ]
(defun kill-ring-save-visible (beg end)
(interactive "r" )
(let ((s "") from to)
(save-excursion
(save-restriction
(narrow-to-region beg end)
(setq from (goto-char (point-min)))
(while (not (eobp))
(if (point-invisible-p)
(progn
(setq to (point))
(setq s (concat s (buffer-substring-no-properties from to)))
(end-of-visible-line)
(setq from (point)))
(forward-char)))
(if (> (setq to (point)) from)
(setq s (concat s (buffer-substring-no-properties from to))))
(kill-new s)))))

invisible になるまで1文字ずつ進まないようにしてるので、ここら辺はもうちょっと
速くなるかもしれません。
663659:2005/10/29(土) 00:06:03
1文字ずつ → 1文字ずつしか
664名無しさん@お腹いっぱい。:2005/10/29(土) 02:29:21
22 で確認
(defun kill-ring-save-visible (begin end)
(interactive "r")
(let ((r '()) (p begin) n)
(while (and (setq n (next-single-property-change p 'invisible nil end))
(> n p))
(unless (get-text-property p 'invisible)
(push (buffer-substring p n) r))
(setq p n))
(kill-new (apply #'concat (nreverse r)))))
665659:2005/10/29(土) 14:06:12
>>664san
やっぱり自分の環境ではその関数も全く機能しません。

emacs-version
=> GNU Emacs 22.0.50.1 (i386-mingw-nt5.1.2600)
of 2005-07-11 on A208752
666名無しさん@お腹いっぱい。:2005/10/29(土) 18:56:32
next-single-property-change が nil を返した時の処理が抜けてるせいかな。
(defun remove-invisible (s)
(interactive "r")
(let ((r '()) (p 0) n)
(while (and (setq n (next-single-property-change p 'invisible s))
(> n p))
(unless (get-text-property p 'invisible s)
(push (substring s p n) r))
(setq p n))
(unless (get-text-property p 'invisible s)
(push (substring s p) r))
(apply #'concat (nreverse r))))
(remove-invisible (concat "a" (propertize "b" 'invisible 'test1) (propertize "c" 'invisible 'test2) "d"))
=> "ad"
になる?
GNU Emacs 22.0.50.2 (i386-unknown-freebsd6.0, X toolkit, Xaw3d scroll bars) of 2005-10-29
だと期待どおりの動作をするが。
667659:2005/10/29(土) 20:35:40
>>666
はい、今評価してみた所、 "ad" になりました。

>>662 に追加:
すみません、肝心な関数を貼るのが抜けていました。 >>662 の側に置いてあげて下さい。

(defun point-invisible-p ()
(line-move-invisible-p (point)))


↑でも使用してある通り、 `line-move-invisible-p' であれば invisible をうまく見つける
ことができるのですけどね。。。

(defun line-move-invisible-p (pos)
"Return non-nil if the character after POS is currently invisible."
(let ((prop (get-char-property pos 'invisible)))
(if (eq buffer-invisibility-spec t)
prop
(or (memq prop buffer-invisibility-spec)
(assq prop buffer-invisibility-spec)))))


668名無しさん@お腹いっぱい。:2005/10/29(土) 23:16:07
もしかしてこーゆーこと?
(defun invisible-p (position &optional object)
(let ((invisible (get-char-property position 'invisible object)))
(if (eq buffer-invisibility-spec t)
invisible
(catch :result
(dolist (prop (if (consp invisible) invisible (list invisible)))
(when (or (memq prop buffer-invisibility-spec)
(assq prop buffer-invisibility-spec))
(throw :result t)))))))

(defun kill-ring-save-visible (begin end)
(interactive "r")
(let ((r '()) (p begin) n)
(while (and (setq n (next-single-char-property-change p 'invisible
nil end))
(> n p))
(unless (invisible-p p)
(push (buffer-substring p n) r))
(setq p n))
(unless (invisible-p p)
(push (buffer-substring p end) r))
(kill-new (apply #'concat (nreverse r)))))
669659:2005/10/30(日) 05:21:17
>>668
そうそれです。完璧に動作しました! しかも速度も高速ですね。
buffer-invisibility-spec が鍵を握るのはわかって
いたのですが、今コードを解釈する時間がない為、連絡だけさせていただきました。
670名無しさん@お腹いっぱい。:2005/10/30(日) 06:24:23
>>659 で言っていたうまく機能しないと言うのは見えているものまで一緒に消えちゃっ
ていたと言う事でOK?
671670:2005/10/30(日) 06:34:20
少しわかりずらいな。
つまり、
(with-current-buffer (window-buffer (display-buffer (get-buffer-create "*test*")))
(erase-buffer)
(add-to-invisibility-spec '(test1 . t))
(insert (concat "a" (propertize "b" 'invisible 'test1) (propertize "c" 'invisible 'test2) "d")))
をした結果の *test* buffer の中身に対して kill-ring-save-visible を実行した結果が
=> "acd"

となって欲しかったという事でいい?
672名無しさん@お腹いっぱい。:2005/10/30(日) 19:48:20
もしかすると text-property -> char-property で overlay が認識される
ことで解決したってことかも。
何にせよ、Emacs 22 だからというより設定のせいっぽいが。
(デフォルトでは buffer-invisibility-spec は 22 でも t だし
invisible な overlay も存在しない)
673名無しさん@お腹いっぱい。:2005/10/30(日) 22:50:13
あるソフトウェア独自の簡単なスクリプト言語に対応するメジャーモードを作りたいのですが、
コメント部の色をかえるにはどうしたらいいのでしょうか?
コメントはC言語の /* が @cs に、*/ が @ce になったような感じです。複数行可。
comment-start と comment-endにそれぞれ値をセットするばいいだけというわけではないのでしょうか?
よろしくお願い致します。
674名無しさん@お腹いっぱい。:2005/10/31(月) 11:27:48
Emacs Lisp神社
675名無しさん@お腹いっぱい。:2005/11/01(火) 02:51:02
>>673
それっぽく色を付けるならこんな感じかな。
modify-syntax-entry でコメント開始/終了文字の1文字目と2文字目を指定する。
実は Emacs で3文字以上からなるコメント文字を扱うのは結構面倒臭い。
どこかにお手軽に扱える elisp が転がってないかな?

(defvar hoge-mode-syntax-table nil)
(unless hoge-mode-syntax-table
(setq hoge-mode-syntax-table (make-syntax-table))
(modify-syntax-entry ?@ ". 13" hoge-mode-syntax-table)
(modify-syntax-entry ?c ". 24" hoge-mode-syntax-table))
(defvar hoge-font-lock-keywards nil)
(defun hoge-mode ()
(interactive)
(kill-all-local-variables)
(setq comment-start "@cs")
(setq comment-end "@ce")
(set-syntax-table hoge-mode-syntax-table)
(set (make-local-variable 'font-lock-defaults) '(hoge-font-lock-keywards))
(setq mode-name "Hoge")
(setq major-mode 'hoge-mode))

676675:2005/11/01(火) 03:17:06
強引にやってみた。
複数行にマッチするのは font-lock で激しくすすめられてないっぽいけど、おーけー
としとく。
実は hoge-font-lock-comment-matcher は内部で comment-start, comment-end を使う
ようにすると色んな mode で使えて嬉しいかもしれないとか思った。

(defvar hoge-font-lock-keywards nil)
(defvar hoge-font-lock-syntax-keywords '((hoge-font-lock-comment-matcher (1 "!") (2 "!"))))

(defun hoge-font-lock-comment-matcher (limit)
(let (beg end)
(when (re-search-forward "@cs" limit t)
(setq beg (cons (copy-marker (match-beginning 0))
(copy-marker (match-end 0))))
(when (re-search-forward "@ce" limit t)
(setq end (cons (copy-marker (match-beginning 0))
(copy-marker (match-end 0))))
(set-match-data
(list (car beg) (cdr end) (car beg) (cdr beg) (car end) (cdr end)))
t))))

(defun hoge-mode ()
(interactive)
(kill-all-local-variables)
(setq comment-start "@cs")
(setq comment-end "@ce")
(set (make-local-variable 'font-lock-defaults) '(hoge-font-lock-keywards))
(set (make-local-variable 'font-lock-syntactic-keywords) hoge-font-lock-syntax-keywords)
(setq mode-name "Hoge")
(setq major-mode 'hoge-mode))
677名無しさん@お腹いっぱい。:2005/11/01(火) 21:34:42
非同期にHTTPサーバとXMLなどのデータをやりとりする仕組みで、
ユーザイベントに動的に反応して、半リアルタイムに挙動を変える
ようなUIのelispって何かある?
678名無しさん@お腹いっぱい。:2005/11/01(火) 21:46:00
ajax ですか?
679名無しさん@お腹いっぱい。:2005/11/01(火) 23:08:31
emacs-w3m
680677:2005/11/02(水) 13:49:44
>>678
Ajaxのelisp版を想定中。alax? aelax?

>>679
少なくとも現状のままでは、「非同期」ではなく動的ではないと思う。
681名無しさん@お腹いっぱい。:2005/11/02(水) 14:24:42
slime
682名無しさん@お腹いっぱい。:2005/11/12(土) 21:34:51
リストを連結する関数は何ですか。
RubyでいうとArray#joinです。
683名無しさん@お腹いっぱい。:2005/11/12(土) 22:39:40
>>682
mapconcat
684名無しさん@お腹いっぱい。:2005/11/16(水) 14:10:37
re-search-forward で「カーソルのある位置から」マッチさせることって出来ないの?

(looking-at REGEXP) 使ってみたけど、(match-string 0) 使ったら
(args-out-of-range 0 0) って言われた。
685名無しさん@お腹いっぱい。:2005/11/16(水) 18:23:41
(with-temp-buffer
(insert "hoge")
(goto-char (point-min))
(and (looking-at "hoge") (match-string 0)))
=> "hoge"
686名無しさん@お腹いっぱい。:2005/11/17(木) 00:03:45
普通にre-search-forwardするのと、事前にチェックした(point)を組み合わせる。
687名無しさん@お腹いっぱい。:2005/11/17(木) 03:08:58
save-excursion と save-current-buffer の使い分けはどうすればいい?
688名無しさん@お腹いっぱい。:2005/11/17(木) 04:04:48
pointやmarkをどうするか次第
689名無しさん@お腹いっぱい。:2005/11/18(金) 11:51:29
faceを少しだけ明るく(もしくは暗く)する関数ってないですか?
(color-values "color-name")した値を加工して、そのままset-face-backgroundしようとしたら
stringpじゃねぇよボケ、と言われました。何か良い方法はないでしょうか。
690689:2005/11/18(金) 11:51:57
質問age
691名無しさん@お腹いっぱい。:2005/11/18(金) 12:18:02
28秒
692名無しさん@お腹いっぱい。:2005/11/18(金) 12:34:04
なんで実際に書いたコードを隠すんだ?
stringp云々って根本的におかしなことやったとしか思えないんだけど
693688:2005/11/18(金) 13:31:54
>>692
根本的におかしいことやってるのは分かってるので、何か良い方法を教えてほしい、
という質問なんですが。

(defun more-bright-color (color)
(mapcar '(lambda (n) (* n * 1.1)) (color-values color))
)

(make-face 'brightly-face)
(set-face-background 'brightly-face (more-bright-color "khaki"))

> Debugger entered--Lisp error: (wrong-type-argument stringp (65535 65021 39578))
694名無しさん@お腹いっぱい。:2005/11/18(金) 13:42:01
>>693
色は、"#00aaff"みたいにすればいいんだよ。
695名無しさん@お腹いっぱい。:2005/11/18(金) 13:46:07
>>693
brighter
696名無しさん@お腹いっぱい。:2005/11/18(金) 14:11:42
これでいいかな。

(defun more-bright-color (color)
(apply #'format
(append '("#%02x%02x%02x")
(mapcar '(lambda (n)
(floor (min 255 (/ (* n 1.1) 256))))
(color-values color)))))
697688:2005/11/18(金) 14:16:40
>>694
なるほど。

>>696
今手元で同じような関数が出来た。目的を達成することが出来ました。
ありがとう。
698名無しさん@お腹いっぱい。:2005/11/18(金) 15:45:49
>>696
brighter だっつってんだろが。
"more bright" なんて英語通じないっつーの
699名無しさん@お腹いっぱい。:2005/11/18(金) 16:01:04
不自然だと感じるけど通じるよ
700名無しさん@お腹いっぱい。:2005/11/18(金) 16:05:38
>>698
"brighter" とだけレスされても日本語通じないっつーの。
「brighter だと英語としておかしい」とキチンと書けばいいのに。
701名無しさん@お腹いっぱい。:2005/11/18(金) 16:31:47
>700
よっぽど悔しかったんだね
702名無しさん@お腹いっぱい。:2005/11/18(金) 16:41:35
>>701
おまいも大人げないよ
スレが荒れるからヤメれ
703696:2005/11/18(金) 16:45:33
>>696
appendいらなかったな。

>>701
>>700は俺じゃないぞ。
704名無しさん@お腹いっぱい。:2005/11/21(月) 09:49:47
Perlのjoinにあたる関数ってないですか。今はこうしてます。

(defun join-string (s seq)
(reduce '(lambda (x y) (concat x s y)) seq))
705名無しさん@お腹いっぱい。:2005/11/21(月) 09:59:01
mapconcatか。reduceなんてシラネ。
706名無しさん@お腹いっぱい。:2005/11/22(火) 19:24:37
例えば

emacs yarou
hello emacs kun to lisp yarou

のようなラインがバッファ内にあったと仮定して、 M-x foo を実行すると
Line containing:
というプロンプトがミニバッファにでて、
emac li <RET>
と打ちこむと、 "emac" と "li" のサブストリングを含むライン (この場合は 2行目)
を occur などでマッチする関数 foo がほしいのですが。。。作って。。。
707名無しさん@お腹いっぱい。:2005/11/22(火) 21:27:04
正規表現でいいじゃん
708名無しさん@お腹いっぱい。:2005/11/22(火) 21:38:21
正規表現でいいだろう
709名無しさん@お腹いっぱい。:2005/11/22(火) 22:35:38
正規表現でいいような気がする
710名無しさん@お腹いっぱい。:2005/11/22(火) 22:42:25
正規表現でいいと思われ。
711名無しさん@お腹いっぱい。:2005/11/22(火) 22:48:41
正規表現じゃ大変だ
712名無しさん@お腹いっぱい。:2005/11/22(火) 23:15:19
正規表現ってのはどうだ
713名無しさん@お腹いっぱい。:2005/11/22(火) 23:19:25
もういいから。
714名無しさん@お腹いっぱい。:2005/11/23(水) 00:11:44
もういいよ。
715名無しさん@お腹いっぱい。:2005/11/23(水) 02:36:12
もういいな。
716名無しさん@お腹いっぱい。:2005/11/28(月) 00:18:36
(defun foo(str)
"HG"
(interactive "sLine containing:")
(if (not (string= str "emacs li"))
(message "not found!")
(if (not (re-search-forward "emac.*li" nil t))
(message "not found!!")
(message "found!")
)))
717名無しさん@お腹いっぱい。:2005/12/13(火) 13:47:33
ライブラリのリビジョンに応じて設定を変えたい場合なんかに便利かなと

(setq get-revision-number-line-limit 20)

;; 1.1.1.1 には対応してない
(defun get-revision-number (library)
(let* ((file (locate-library (concat library ".el")))
(buf-exists-p (get-file-buffer file))
(buf buf-exists-p)
rev)
(unless buf-exists-p
(setq buf (find-file-noselect file)))
(save-match-data
(with-current-buffer buf
(save-excursion
(save-restriction
(widen)
(goto-char (point-min))
(let (search-limit)
(forward-line get-revision-number-line-limit)
(setq search-limit (point))
(goto-char (point-min))
(when (re-search-forward (concat "$Id: "
(regexp-quote (concat library ".el"))
",v " "\\([0-9]+\\.[0-9]+\\)" " ")
search-limit t)
(setq rev (string-to-number (match-string 1)))))))))
(unless buf-exists-p
(kill-buffer buf))
rev))
718名無しさん@お腹いっぱい。:2005/12/14(水) 00:43:34
emacs-version
"22.0.50.1"

Diredのバッファ名のように、
mode-lineのcvsのリビジョンの部分だけ色を変えたいのですが、

(setq-default mode-line-format
       `(" "
        ;;mw32-ime-mode-line-state-indicator
        mode-line-mule-info mode-line-modified " "
        mode-line-buffer-identification
        (vc-mode ,(propertize vc-mode 'face '(:foreground "blue" :background "red")))
        " " global-mode-string (-3 . "%p") " " "-%-"))

これを.emacsで評価すると、mode-lineでは.emacsのリビジョンが赤くなりますが、
別のバッファにうつっても.emacsのリビジョンが赤くなってしまいます。

着色しないときのようにファイル毎にそれぞれのリビジョンを表示するには、
どうしたら良いでしょうか?
719名無しさん@お腹いっぱい。:2005/12/14(水) 05:34:22
(setq-default mode-line-format
'(" "
;;mw32-ime-mode-line-state-indicator
mode-line-mule-info mode-line-modified " "
mode-line-buffer-identification
(vc-mode (:eval (propertize vc-mode 'face '(:foreground "blue" :background "red"))))
" " global-mode-string (-3 . "%p") " " "-%-"))
720名無しさん@お腹いっぱい。:2005/12/15(木) 00:31:01
>>719
できました。便利な属性(?)があるんですね。
721名無しさん@お腹いっぱい。:2005/12/15(木) 01:28:18
どんなタイミングでevalされるの?
722名無しさん@お腹いっぱい。:2005/12/20(火) 08:53:44
Vim の dircolors.vim みたいな ~/.dir_colors 編集用メジャーモードを作ったので晒してみます。
begin-base64 644 dircolors-mode.el.gz
H4sICJBGp0MAA2RpcmNvbG9ycy1tb2RlLmVsAK1Y0W7bNhR9z1cQ6oPlDfLk
8DoG4qBBazuNUccqHD/sQUChWHSmWZYySU4aYOi/DFCH/cMG7HFFCwzYZwx7
2/YBIyXbSUhfUwbmIBAl3nPu5Tk0KbPT6RA/SKZxGCeptYh91mAhsciF922c
EHFPZrzB/CALomvy/qsGj35bhh8cmD6bTZdpFi8kEuubOJ6TKAgPCDE2XSWf
6GoYvOM4u79hpCbuxd11Ei9vSM33Mq9eUs+8KZOJ74LQn3qJb4lODquZZkbM
Y14kEwSRT4xnZ/xj20a9Xhcl1AuuWy/ZScUT7+jdUZBtPy3lSdatgKZU+1Uc
+iTT40DC8cGyJAwiVgXc2rfKtpQtiG5ZkjLrNvBZXCEjtXdZBLb4M/QssliS
0bYtG72V5XAXi22r02UrC9130m1lkW2UahHVVGBp6XSpxHKk06USizxVFF2q
sIA8X6686fyJLlXUBeXL9Zil6nwBeb5ItVRzGmSnpVr+D5aq8wXk+aLoUolF
ni+KLpVY5Pmi6CKzbFm8V8uusmyvnuO4JoJranCA4ECDayG4lgbXRnDt3TiK
6EI1ulBEF6rRZbW0qrhDDY4iOKrBIT5QjQ8U8YFqfFgtkSruSIND/KMa/wDx
DzT+AeIfaPwDxD/Q+AeIf6DxDxD/QOMfIP6Bxj9A/AONf4D4B2v/MGB6H2Xe
O8sLgzQrlzjj7XuDNIhxZ9SJefpMNE+KphuJ9nO+1m15TX7M0zDwfLM4yqww
ns6tObu/ixM/XWV13RPXNSf98YXrft91hs6YX/uDV+eTl4MJbzpvJgNndOm6
ddd9LgpUmFYjJfyzphs544sXQ44+Gwz7/NIbCNbhYPRaMI7fnL8Y8cbF4PJy
MHpVhJ05/HLpdEVAzymKeDkUN93zoqCv+939Shj2zyZdpyeyj8VoVu3+qFe2
qnJ94bqNU9e9+3IVv/v9f41q7I04se3t8Zut6iGyiUQ2lUhAIkGJbCGRLSWy
jUS25UiKjIgqI6LIiKgyInqIRB4qkRSJpEokohJVVKKISlRRiR4hkUdKJKIn
VfQERE9Q9ARET1D0BERPUPQERE9Q9ARET1D0BERPUPQERE9Q9AREz/WSvG0V
VVfHXWvpwrtBDi04mndusMtIgvJf1AJV5dhEHH2YQZSxxJtmwa3YSviDeRCG
fLEPRbFeaPHiAu8qZKmgNZf8d3f5XFSoFl1SLLw5k+Ck9iAAL9tbhlnJmLLs
O6L2FWKLT6dDJk7POSb5p/yf/LcnuxHJP3/649d/879//pj/mH/88NOHP3/4
Jf/MI//Kfz99RFEztXuVkLv437GLkit2HUQRF9KKZ5Y48KjXN1n2yVFpK96a
bSNZkSLyFowYvXVe40HRhfC/nBDSi0MRkyyj4mQsJbWMvcsejspECvMmicXh
ior8Dy4122KlEwAA
====
723722:2005/12/20(火) 09:04:41
それで、いくつか作ってて疑問な点があったので聞いてみたいのですが

* 123行目で SYNTAX-ALIST 引数に dircolors-mode-syntax-alist を使うと
 (直前でコメントアウトしてあるコードのことです)
 font-lock が発動した際に型が違うと言われてしまうのですが、これは何故なんでしょうか?

* defface で face を定義した後、同名の変数を defvar する操作は必須ですか?
 自分の環境では省略しても問題ないように見えるんですが、ネットで見掛けるコードでは
 何故かわざわざ defface, defvar を並べて書いてるのでちょっと不安です。
 必要なのであれば、その理由も教えて頂けるとうれしいです。
 というかもしかして face と普通の変数ってスコープが違ったりしますか?
724722:2005/12/20(火) 09:08:14
すみません、>>723で嘘書いてしまいました。
defface の後の defvar を省略すると face が有効にならないみたいです。
これって何故なんでしょうか?
725名無しさん@お腹いっぱい。:2005/12/21(水) 00:51:58
deffaceはfaceの定義、defvarは変数の定義

たとえば dired.elの
(defface dired-header '((t (:inherit font-lock-type-face))))
(defvar dired-header-face 'dired-header)

dired-headerという名前で定義したfaceを用意しておいて、
dired-header-faceに代入しておく。
実際にfaceを決定するところではdired-header-faceを使用する。

elispコード内でdired-headerを直接指定していたら、
もしもあとでdired-header-faceを変えたくなったときに、
dired-headerを上書きするかコードを書き変えないといけないけど、
変数を経由するようにしておけば、別のfaceを定義してその変数に代入してあげればいい。


そういう意味で、paren.elなんかはfaceを直接overlayしているので、
faceの色や字体を変えたいときは、set-face-x系を使って
faceの設定を上書きしてあげないといけないね。
726名無しさん@お腹いっぱい。:2005/12/21(水) 07:12:14
> そういう意味で、paren.elなんかはfaceを直接overlayしているので、
> faceの色や字体を変えたいときは、set-face-x系を使って
> faceの設定を上書きしてあげないといけないね。

それで何か不都合あんの?
727名無しさん@お腹いっぱい。:2005/12/22(木) 00:55:23
ほとんどの人は上書きしてしまって不都合ないと思いますよ。
起動後にfaceを変えるってあまりないですよね。

でもまぁ、setqでちょこちょこ変えたい人には箱があったほうがいいですし、
それくらいのレベルだと思います。
728名無しさん@お腹いっぱい。:2006/01/10(火) 20:35:07
はじめまして。Emacs LISPの勉強をしている高校生です(はじめたばかりです。すみません)。
カレントバッファに対して文字列の検索や置換をする関数は見つけられたのですが、
文字列そのものを引数にとるような同様の関数はありますでしょうか。
具体的には、ある入力文字列から、決められた文字を取り除きたいのです。
729名無しさん@お腹いっぱい。:2006/01/10(火) 21:12:04
M-x apropos
その程度で質問してるようじゃ先が思いやられるよ
730名無しさん@お腹いっぱい。:2006/01/10(火) 21:40:19
なんでそんなに見下した態度取るんだ?
高校生か、がんばれよーでいいじゃん。
731名無しさん@お腹いっぱい。:2006/01/10(火) 21:43:34
replace-regexp-in-string とかでええのか?
または string-match して substring してみたり適当に
732名無しさん@お腹いっぱい。:2006/01/10(火) 23:25:20
read-string が知りたかったりして。
733名無しさん@お腹いっぱい。:2006/01/11(水) 00:57:18
オレも最初 read-from-minibuffer かと思った
734名無しさん@お腹いっぱい。:2006/01/11(水) 02:34:19
>731
replace-regexp-in-string、これです!ありがとうございました。
>729
今後はしばらく"M-x apropos"で調べていけそうです。Emacs LISPのこういうインタラクティブな感じがとっても好きです。
しょーもない質問をしてすみませんでした。そしてありがとうございました。
その他の方々もありがとうございました!

735名無しさん@お腹いっぱい。:2006/01/12(木) 18:54:34
time-stamp.elを使ってるとundoの時に不満ない?
timestamp部分はundoできなくなるけど、こんな事してみた。
(defadvice time-stamp-once (around cannot-be-undone activate)
(let ((buffer-undo-list t))
ad-do-it))

後から気付いたんだけど、redo.elを入れてたのをすっかり忘れてた。
ちゃんと使っていればそのような不満はあまり感じなかったかもしれない。
736名無しさん@お腹いっぱい。:2006/01/12(木) 20:01:00
>>735
Meadow meme だかに似たようなのがあったね。
737名無しさん@お腹いっぱい。:2006/01/12(木) 20:14:23
738名無しさん@お腹いっぱい。:2006/01/12(木) 21:14:55
>>734
まあマジレスすると mode-info 入れとけ。
ttp://www.namazu.org/~tsuchiya/elisp/mode-info.html
739名無しさん@お腹いっぱい。:2006/01/13(金) 03:30:34
行の中で最初の「空白/タブではない文字」にカーソルを移動したいんですが、どうすればいいですか?
740名無しさん@お腹いっぱい。:2006/01/13(金) 08:22:49
>>739
see back-to-indentation
741名無しさん@お腹いっぱい。:2006/01/13(金) 09:31:16
>>740
ありがとう。助かりました。
742名無しさん@お腹いっぱい。:2006/01/15(日) 03:13:49
>>738
734じゃないけど、mode-info は最新の CVS の Emacs だとコンパイルできない
ようです。過去にこのスレでパッチが出ていたんだけど、もう古くなっていま
した。。。最新のパッチがあれば投下して頂けないでしょうか?
743名無しさん@お腹いっぱい。:2006/01/16(月) 13:00:13
url.el の使い方が分からない…。

(let ((url (url-generic-parse-url "http://www.example.org/")))
    (url-retrieve url (lambda ()
                        (url-store-in-cache (current-buffer)))))
744名無しさん@お腹いっぱい。:2006/01/16(月) 13:00:47
途中送信してしまった…。

これでキャッシュの保存をしてくれるかと思ったけどしてくれなかった。
どうすればいいんだ???
745名無しさん@お腹いっぱい。:2006/02/04(土) 21:09:59
http://d.hatena.ne.jp/teny/20060204#p1

こういうのを見ると、emacs lispも技術の途切れて
壊滅的状態にあると思わざるを得ない。
746名無しさん@お腹いっぱい。:2006/02/04(土) 22:05:10
>>745
おまえの日本語も技術の途切れて壊滅状態だな。
747名無しさん@お腹いっぱい。:2006/02/04(土) 22:17:34
>>745
その題目って、何度も再発明されてるな。
748名無しさん@お腹いっぱい。:2006/02/04(土) 22:36:05
単に再発明した人がいるというだけなのにその帰結かよ。
749名無しさん@お腹いっぱい。:2006/02/04(土) 22:47:05
っていうか、バグバグじゃん。ちゃんとテストしてないな。
750名無しさん@お腹いっぱい。:2006/02/04(土) 23:08:53
まぁblogはある意味ここよりもゴミが多かったりするし。
751名無しさん@お腹いっぱい。:2006/02/04(土) 23:32:41
しかしまあはてなでEmacsはやりだしたってので
それじゃ俺も使ってみるかってな人間が増えるのはいいことだ。
うざい質問も増えるかもしれないけど
そのうち育ってステキなパッケージ作ってくれるやもしれんし。
752名無しさん@お腹いっぱい。:2006/02/04(土) 23:43:21
バグを見つけたなら、指摘コメントしてやるといいよ。
753名無しさん@お腹いっぱい。:2006/02/06(月) 22:59:07
>6のtexinfoが
{}のエスケープが無くてmakeinfoできないんだけど、
俺だけ?パッチ作ったんだけど、作者に送った方が良い?
754名無しさん@お腹いっぱい。:2006/02/07(火) 08:26:36
>>745
これを見ていろいろ調べていて、
「[ANNOUNCE] Emacs modules for Perl programming」
http://www.uni-giessen.de/faq/archiv/perl-faq.emacs-lisp-modules/msg00000.html
というドキュメントを見つけて(おのれ、今までこれの存在を知らなかった)

「Emacs Tiny Tools Project hoimepage」
http://tiny-tools.sourceforge.net/
というものの存在を知ってガクゼンとしました。

通常、いろいろな人が作っているのをかき集めて組み合わせて実現して
いる機能をそっくり提供する、別系統のツールのセットですよね。
このTiny Toolsを使っている人っています?
755名無しさん@お腹いっぱい。:2006/02/07(火) 16:15:09
使ってはいないけど、たまに参考にしたり。
コード、ドキュメント共に。
756名無しさん@お腹いっぱい。:2006/02/09(木) 12:31:30
(standard-display-ascii ?@ [?#])
を評価すると,(当然ですが) モード関係なしで全ての @ が # で表示されてしまいます.
ここで,上の動作をある特定のモードのみでやるにはどうすればよいのでしょうか?
757名無しさん@お腹いっぱい。:2006/02/09(木) 17:43:03
(make-local-variable 'display-table)
758名無しさん@お腹いっぱい。:2006/02/10(金) 00:07:01
>>757 (make-local-variable 'buffer-display-table) だろが
759名無しさん@お腹いっぱい。:2006/03/02(木) 18:50:16
mcomplete を使っている諸君!
例えば、例えばだ…

M-x describe-function を実行し、
mcomplete の [Substring match] に向かって
process-coding-system
と入力するとエラーが出るよな?
ELisp 勉強中の俺が、
恥を覚悟でパッチを作ってみたんだ。
あってるかな?

--- mcomplete.el
+++ mcomplete.el
@@ -1281,8 +1281,10 @@
(tails-alist (mapcar #'(lambda (item)
(string-match regexp item)
(list (substring item (match-end 0))))
- completions)))
- (concat str (try-completion "" tails-alist)))))))
+ completions))
+ (comp (try-completion "" tails-alist))
+ (tailstr (if (eq comp t) "" comp)))
+ (concat str tailstr))))))
760名無しさん@お腹いっぱい。:2006/03/02(木) 21:02:30
うー、そのパッチはとてもただしいのだが、
ここにはってしまったためにさいようできません。。。
761名無しさん@お腹いっぱい。:2006/03/02(木) 21:47:55
(ノ∀`)アチャ-
762名無しさん@お腹いっぱい。:2006/03/02(木) 22:49:07
マルチライセンスで別のところにも貼ればいいんでは。
763759:2006/03/02(木) 23:14:08
GPL に違反してしまうのか?
パッチという形式をとっているからいけないのか?
無知は罪だ。勉強してから出直します。ごめん。
764名無しさん@お腹いっぱい。:2006/03/03(金) 02:53:55
navi2ch スレでもそういう認識になってるけど、
例えば匿名で運営してる自分のウェブページに掲載したらどうなるの?
初出の出所が不明だから不許可になる?
そもそも著作権侵害は親告罪だし、
メーリングリストでのパッチだって完全な出所証明は非常に難しいし、
出所が証明できたからってどっかからぱくってないことは証明できないし、
採用者の了見しだいでなんとでもなりそうな気がするよ。
765名無しさん@お腹いっぱい。:2006/03/03(金) 04:18:16
>>764
出所不明とかそういう問題じゃないよ。

2ch だと、投稿時にいくつかの項目に対して同意を求められるでしょ。
この中に、運営が指定する第三者に対して、一切の権利を許諾しないって項目がある。
これは GPL に矛盾するから、これに同意して 2ch に投稿されたものは、 GPL ソフトウェアにマージできないの。

自分のウェブページとかの場合なら、 GPL に矛盾する規定をしてなければ問題ない。
だから navi2ch スレとかだと、そういう規定がない Wiki とかを利用してる。
766名無しさん@お腹いっぱい。:2006/03/03(金) 04:35:24
便乗質問させてください。
すれ違いかと思いつつ、前から聞いてみたかったので書きます。

gzip & base64 とかでencodeして張った場合、どうなるんでしょう。
767名無しさん@お腹いっぱい。:2006/03/03(金) 07:18:24
GPL と 2ch の規約は矛盾するだろうけど、
じゃあ、そもそもが GPL のコードを 2ch に張るとどうなるのかと考えると、
それは GPL 違反ではあるが、
張ったがために 2ch がコードの利用の権限を持つようになるわけじゃないよね。

ということは、本人が GPL として作ったコードを 2ch に張った場合、
張った行為は GPL あるいは 2ch 利用規約違反だけど、
張っただけで 2ch のものになって GPL として使えなくなるわけではないんでは?
768名無しさん@お腹いっぱい。:2006/03/03(金) 09:22:24
2ch にあるパッチを当てた物を GPL として配布してもかまわないと思う人は
自分で配布すればいいじゃないか。
片手間で開発してるような場合、GPL 違反だと言ってる連中がいるってだけで
面倒そうだから取り込むのはやめようって気になるんじゃないかな。
769名無しさん@お腹いっぱい。:2006/03/03(金) 09:46:09
>>766
貼る形式の問題ではない。
770名無しさん@お腹いっぱい。:2006/03/03(金) 10:39:04
思うんなら自分でやればっていわれても、話にならないな。
まあスレ違いだしやめよう。
771名無しさん@お腹いっぱい。:2006/03/03(金) 12:04:01
誰かが別の場所でGPLで公開してるパッチを第三者が勝手に
2chに貼った場合とか
772名無しさん@お腹いっぱい。:2006/03/03(金) 12:08:04
>>771
それのどこが問題?
773名無しさん@お腹いっぱい。:2006/03/03(金) 12:18:33
そのパッチを本人がプロジェクトに寄付する気になったとき
とりこめるかどうか
774名無しさん@お腹いっぱい。:2006/03/03(金) 12:46:56
第三者が何かしたからといって、パッチ作製者の権利が失われるわけないじゃん。
そうでないなら、ML とかに流れてるパッチを 2ch に転載しまくるだけで
そのプロジェクトの開発を妨害できちゃうよ。
775名無しさん@お腹いっぱい。:2006/03/03(金) 13:08:30
匿名サイトに置いてあるパッチを2chに貼った場合、
本人によるものか別の人によるものかも分かんねーしな
776名無しさん@お腹いっぱい。:2006/03/03(金) 13:48:32
強いて言えばパッチの作者に
「ヘンなシバリのある掲示板に勝手に貼るなよ」
って文句言われる可能性はあるな。
777名無しさん@お腹いっぱい。:2006/03/03(金) 14:20:49
文句言われる言われないはどっちでもいい。
問題はそのパッチをマージする事が可能かどうかだ。
778名無しさん@お腹いっぱい。:2006/03/03(金) 14:23:41
マージするかどうかは
開発元とパッチ作者との間の問題。
2ch に貼るのは
2ch 管理人と投稿者とパッチ作者の間の問題。
両者に関係はない。
779名無しさん@お腹いっぱい。:2006/03/04(土) 00:28:59
続きはこちらで

ライセンスあれこれ
http://pc8.2ch.net/test/read.cgi/unix/1032702590/
780名無しさん@お腹いっぱい。:2006/03/09(木) 19:58:10
ある変数に EUC-JP や Shift_JIS などの文字コードの文字列が入っている状態で、
その文字コードを UTF-8 に変換したい場合は、どうしたら良いのでしょうか?
781名無しさん@お腹いっぱい。:2006/03/09(木) 20:08:35
ccl
782名無しさん@お腹いっぱい。:2006/03/10(金) 22:12:33
>>781
ありがとう。
でも、全然使い方が分からないわ orz
783名無しさん@お腹いっぱい。:2006/03/21(火) 09:49:25
こんなの見つけたお
ttp://www.okisoft.co.jp/esc/lecture/emacslisp.pdf

知識ゼロからのとっかかりにはいいんではないかと思う
784名無しさん@お腹いっぱい。:2006/03/21(火) 13:12:22
ほかにも「やさしい Lisp の作り方」とかあるね
ttp://www.okisoft.co.jp/esc/whitepaper.html
あと、これは一部で有名だけど「美人プログラミングスタイル」とか
785名無しさん@お腹いっぱい。:2006/03/28(火) 10:55:02

以下の機能をmajar-modeに実装する方法でつまづいています。

「一行につき全角文字20文字まで、それを越えたら自動的に折り返して次の行へ」

行幅を全角20文字で整形したいだけなのですが・・・

truncate**系 とか fill-** 系とかの変数をうまく使えばいいのだろうかと試行錯誤しているのですが、錯誤ばかりで自滅気味です。わたしアタマワルイ。

だれか助けてー。
786名無しさん@お腹いっぱい。:2006/03/28(火) 13:19:47
>>785
先に決め事が必要になる。

(1) 半角文字の扱い
(2) 空白文字の処理
(3) 禁則処理(行頭、行末)

まともにやると、かなりめんどい。
787名無しさん@お腹いっぱい。:2006/03/28(火) 13:39:20
>>785
単に
(set-fill-column 40)
(auto-fill-mode t)
って話?

>>786 みたいな問題もあるし
仕様を見直した方がいい気がする。
788ゼウス:2006/04/03(月) 13:19:19

おい、お前等

789名無しさん@お腹いっぱい。:2006/04/12(水) 01:27:25
CやC++ファイルの編集での普通(gnuのモード)のインデントで、
字下げが少ない時はスペースでインデントしてくれるんですが、
tab幅以上の字下げの時にtabでインデントしてしまい困ってます。

これをスペースでインデントするようにするにはどうしたら良いでしょうか。
790名無しさん@お腹いっぱい。:2006/04/12(水) 02:11:47
(set-variable 'indent-tabs-mode nil)
(setq-default indent-tabs-mode nil)

…10年以上使ってるけどこれでいいかな
791名無しさん@お腹いっぱい。:2006/04/12(水) 08:06:40
eshell 上で mysql の返答 (standard output) がしっかり
表示されるようにするにはどうソースを修正したらいいか教えろ
お前等ならわかるだろ
792名無しさん@お腹いっぱい。:2006/04/14(金) 04:06:36
やっぱわかんねーのか。。。
eshell のソースはかなり複雑だから仕方ねーのかもな
793名無しさん@お腹いっぱい。:2006/04/14(金) 08:33:53
わかるだろうけどおまえのためにわざわざ調べる気にはならんってだけ。
794名無しさん@お腹いっぱい。:2006/04/14(金) 08:48:40
>>793
お前自分の言ってる事矛盾してる
知ってんだったら調べる必要ないだろが
795名無しさん@お腹いっぱい。:2006/04/14(金) 09:05:09
調べればわかるんだろ
796名無しさん@お腹いっぱい。:2006/05/11(木) 11:34:11
各種*.confみたいな
項目: 要素
的設定ファイルを読み込んでalistに溜め込んで行くようなのを考えてるんですが
なかなかすっきりしません。
一項目一要素でとりあえずいいんですが、
やっぱりなにかしらのバッファで開いてbuffer-substringしていくしかないんでしょうか。
797名無しさん@お腹いっぱい。:2006/05/11(木) 23:30:31
しかないっつーかEmacsのファイル入力はバッファで開くのが普通なんだが。
798名無しさん@お腹いっぱい。:2006/05/11(木) 23:33:22
バッファで開かないでファイルをlispでストリームとして扱う方法ってあるの?
数百メガの巨大ファイルをいじるとき便利っぽいけど。
799名無しさん@お腹いっぱい。:2006/05/12(金) 04:55:14
tmpなバッファにinsert-file-contents。
find-file-noselectするよりは処理が軽いそうな
800名無しさん@お腹いっぱい。:2006/05/12(金) 05:10:22
>>798
Common Lisp な xyzzy ならできるが、Emacs は不可能。
801名無しさん@お腹いっぱい。:2006/05/12(金) 08:14:54
xyzzy は Common Lisp じゃない。cl ですら実装されてるのに
(mapcar (lambda (x) (typecase x
(integer "整数")
(string "文字列")
(t "その他")))
'(10 3.3 "ほげ"))
こんなのが動かないし。
802名無しさん@お腹いっぱい。:2006/05/13(土) 20:51:42
>>801
それだけ?他にもあるでしょ。おせーて。
803名無しさん@お腹いっぱい。:2006/05/14(日) 11:40:22
-batch
で別個に動かすのはどうでしょう?
804名無しさん@お腹いっぱい。:2006/05/14(日) 14:05:01
>>798
insert-file-contents系で分けて読むとか、catあたりをstart-processしてfilterで読むとか。

テキストの場合マルチバイト文字の切れ目の処理が必要になるとちょっといやらしいかも
805名無しさん@お腹いっぱい。:2006/06/24(土) 12:07:52
>>801
適当だけど。

(defmacro?typecase?(check?&rest?type-list)
??(let?((#1=#:case))
???????(dolist?(item?(reverse?type-list)?#1#)
?????????(push?(if?(eq?(car?item)?t)
???????????????????`(t?,(cadr?item))
?????????????????`((subtypep?(type-of?,check)
?????????????????????????????',(car?item))
?????????????????????????????,(cadr?item)))
???????????????#1#))
????(cons?'cond?#1#)))
806805:2006/06/24(土) 12:12:09
あらら。。もう一回。

(defmacro typecase (check &rest type-list)
(let ((#1=#:case))
(dolist (item (reverse type-list) #1#)
(push (if (eq (car item) t)
`(t ,(cadr item))
`((subtypep (type-of ,check)
',(car item))
,(cadr item)))
#1#))
(cons 'cond #1#)))
807名無しさん@お腹いっぱい。:2006/08/30(水) 05:12:50
未編集のリードオンリーのバッファ上で、何かあるタイミングで、
recenter すると変更フラグが立つことがある。
という現象に遭遇した人いないですか、とか聞いてみようと思った。
が、recenter の前に、(sit-for 0) を入れたら解決したみたい。
808名無しさん@お腹いっぱい。:2006/10/15(日) 22:07:25
Emacs21とか22とかになると、デフォルトでいろんな機能が
組込まれてしまったので (occurとかgrepとか、検索もパワーアップしたり)、
新しい機能を作る機会が減って、最近このスレッドが寂しいのかなぁ、
などと思ったりした。

まとめサイトや紹介サイトも増えたしね。
ネタが出てくることを願って期待sage。
809名無しさん@お腹いっぱい。:2006/10/21(土) 21:51:36
ちまちまと一年以上かけて作ってきたが、とうとうやる気が無くなったので晒すテスト。
使い方はソース読んでくれ。

ttp://grinocat.googlepages.com/yawn.el
810名無しさん@お腹いっぱい。:2006/10/21(土) 23:01:47
ネ(・∀・)申!
811名無しさん@お腹いっぱい。:2006/10/22(日) 04:18:27
>>809
すげぇ。すげぇよ、あんた。
812名無しさん@お腹いっぱい。:2006/10/27(金) 01:00:59
w3みたいなもの?
動かせない(´;ω;`)
813<sage>:2006/11/06(月) 19:07:50
この板の趣旨とは、ちょっと内容がずれてますが、教えて下さい。

shell-command-to-string 関数を使って、perl を呼び出そうとしていますが、
日本語引数を渡すとどこの段階でか分かりませんが、文字がばけます。

(shell-command-to-string "c:/Perl/bin/perl.exe e:/work/0my/scripts/test.pl てすと表示")

で、「test.pl」 では、

my $outfile = "e:/work/0my/scripts/test.txt";
my $out;

open ($out, "> $outfile") || die ("couldn't open $outfile to write into.");
print ($out $ARGV [0]);
close($out);

で、"test.txt" を shift_jis とかで開いても化けています。

DOS 上で日本語引数は、問題なく処理されるので、Elisp から、
perl に渡されるときに壊れると解釈していますが、どうすればいいのでしょう?
814名無しさん@お腹いっぱい。:2006/11/06(月) 21:51:47
>>813
> perl に渡されるときに壊れると解釈していますが、どうすればいいのでしょう?
表の後に\を付ける、とか?
815sage:2006/11/07(火) 00:20:27
>>814
レスサンクス。

表のあとに\マークってことは、「てすと表\示」って感じにですか? 
日本語文字は何を入れてもだめなので、それでもだめだと思います。

気になるのは、エンコーディングがどうやって認識されるかです。
elisp -> shell -> perl と引数として指定された文字列が渡されると思いますが、
このプログラム間のエンコードは、どうやって指定するのかが、よく分かりません。

おそらく日本語 OS 下では、デフォルトが shift_jis になると思いますが、
これは、elisp からシェルの間も同じかな?
816名無しさん@お腹いっぱい。:2006/11/07(火) 00:31:14
process-coding-system とか coding-system-for-write とか?
817名無しさん@お腹いっぱい。:2006/11/07(火) 00:45:40
>>816 さんありがとう
(setq coding-system-for-write 'sjis)
でうまくいきました。m(_ _)m
818名無しさん@お腹いっぱい。:2006/11/07(火) 00:48:11
819名無しさん@お腹いっぱい。:2006/11/07(火) 01:04:52
>>818
この変数に対して値をグローバルに設定すべきではないということですね。
了解、let を使います。
820名無しさん@お腹いっぱい。:2006/12/13(水) 14:58:06
emacs上でschemeの勉強しているんですが、
emacsのコメント行のインデントのしかたが気に入らないので
直したいと思っているのですが、
どこから始めたらいいのか、
さっぱり分かりません。

とりあえず
scheme-modeが定義されている場所の調べ方を教えていただけませんか?
821名無しさん@お腹いっぱい。:2006/12/13(水) 15:38:18
>>820
> scheme-modeが定義されている場所の調べ方を教えていただけませんか?
find-function

> emacsのコメント行のインデントのしかたが気に入らないので
確かに comment-dwin は腐ってるからな
822名無しさん@お腹いっぱい。:2006/12/14(木) 22:57:50
>>820
つ Gauche
823名無しさん@お腹いっぱい。:2007/01/14(日) 02:16:27
初歩的な質問で聞き難いのですが教えて下さい。
バッファ中の文章の特定の文字を置き換えるようなコードを
作りたいのですが、condを使うのかifとprognを使うのかよく分かりません。
たとえば、文章中の”Red Hat”なら”赤帽”、”Vine”なら”葡萄”、”Windows”なら
”窓”というようにバッファ中の文章を変えたいです。
824名無しさん@お腹いっぱい。:2007/01/14(日) 02:19:30
>>823
replace-stringじゃだめなん?
825名無しさん@お腹いっぱい。:2007/01/14(日) 02:26:41
複数の文字列を一括して置換とかかな
826名無しさん@お腹いっぱい。:2007/01/14(日) 02:33:07
>>824
検索関数(search-forward)などでマッチした文字列を
replace-matchなどで変えようと思ったのですが、条件分岐が
よくわからなくて・・・

>>825
たぶん、そんな感じです。
827名無しさん@お腹いっぱい。:2007/01/14(日) 02:36:59
まずは仕様をきっちり決めれ。
「たぶん、そんな感じ」じゃなんだかわからん。
828名無しさん@お腹いっぱい。:2007/01/14(日) 02:42:02
基本事項なんだぜ?
(info "(elisp)Conditionals")
(info "(elisp)Combining Conditions")
829名無しさん@お腹いっぱい。:2007/01/14(日) 02:49:31
ありがとうございます。もう少し読んでみます。
830823:2007/01/14(日) 03:25:03
レス下さった方々、どうもありがとうございました。
非常に無駄な処理をしていますが、望む結果が得られました。

(defun change-font ()
(interactive)
(let ((p (point)))
(goto-char (point-min))
(while (not (eobp))
(if (search-forward "Led Hat" nil t) (replace-match "赤帽")
(forward-line 1)))
(goto-char (point-min))
(while (not (eobp))
(if (search-forward "Vine" nil t) (replace-match "葡萄")
(forward-line 1)))
(goto-char (point-min))
(while (not (eobp))
(if (search-forward "Windows" nil t) (replace-match "窓")
(forward-line 1)))
(goto-char p)))

過去ログ読んで勉強してきます。
831名無しさん@お腹いっぱい。:2007/01/14(日) 05:53:52
一行に2回出てきたらだめじゃね?
832名無しさん@お腹いっぱい。:2007/01/14(日) 11:47:06
検索語を \\| で分けて match-string で抜き出し cond で振り分けろ
833823:2007/01/14(日) 13:38:34
>>831
いえ、ちゃんと置き換えてくれました。

>>832
ご教授ありがとうございます。しばらくにらめっこします。
834名無しさん@お腹いっぱい。:2007/01/14(日) 14:59:07
教授じゃなくて教示
835名無しさん@お腹いっぱい。:2007/01/15(月) 00:23:16
> >>833
> > 一行に2回出てきたらだめじゃね?
>>831
> いえ、ちゃんと置き換えてくれました。

ホントに?
試していないけど VineVine とかいう行があったらダメっぽく見える。

836名無しさん@お腹いっぱい。:2007/01/15(月) 01:09:45
`XWindows' も `X窓' になりそうだし、`divine' も `di葡萄' になりそう。
(後者は `case-fold-search' の値によるけど)
837823:2007/01/15(月) 19:50:39
>>835
>>836
ご指摘ありがとうございます。例外処理(?)を考えていませんでした。
まだ>>832さんの方法で出来ていないしどんだけバカなんだろ私・・・
838名無しさん@お腹いっぱい。:2007/01/16(火) 06:46:15
自分で頑張れてるのだから、頭が悪いとは思わないけどな。
やりつけないことは何でも最初は大変だ。
>>832, >>836とも正規表現が必要だし。

まず>>830の改善点としては(forward-line 1)、これは置換が終わったら次へ進む
ってことで入れたのだろうけど、次の行じゃなくて置換したテキストの直後に
移動すれば十分な筈。ところがreplace-match自身が

Leave point at the end of the replacement text.

という動作をしてくれる。

>>836は、正規表現を使うと「単語の先頭」という位置にだけ合うパターンが
使えるのでそれを使う。必要なら同様に「単語の末尾」というのも使える。
正規表現による検索はre-search-forward.

ここまでで一応、要求は満たされるんじゃないのかな。


>>832は正規表現を使うと「AまたはBまたはC」にマッチするパターンというのが
書ける。それで検索して、その後でそれがAだったかBだったかCだったかを調べ、
対応する文字列(A'なりB'なりC'なり)に置換するという方法。
これだとバッファの先頭から検索を始めるのが一回で済む。
839名無しさん@お腹いっぱい。:2007/01/16(火) 08:06:14
save-excursion も教えたれよ。
840名無しさん@お腹いっぱい。:2007/01/16(火) 10:05:53
replace-regexp を使う。
841名無しさん@お腹いっぱい。:2007/01/16(火) 11:37:35
>>840
This function is usually the wrong thing to use in a Lisp program.
842名無しさん@お腹いっぱい。:2007/01/16(火) 12:59:54
(defun foo (alist)
  (let ((regexp (regexp-opt (mapcar #'car alist) 'words))
        (table (make-hash-table :test 'equal))
        (normalize (if case-fold-search #'downcase #'identity)))
    (dolist (pair alist)
      (puthash (funcall normalize (car pair)) (cdr pair) table))
    (save-excursion
      (while (re-search-forward regexp nil t)
        (let ((new (gethash (funcall normalize (match-string 0)) table)))
          (replace-match new))))))
843名無しさん@お腹いっぱい。:2007/01/16(火) 15:22:17
ほとんどの漢字も普通にword syntaxだから全然だめだな
844名無しさん@お腹いっぱい。:2007/01/16(火) 16:47:50
俺、elispでハッシュとか使ったことねーや
845名無しさん@お腹いっぱい。:2007/01/17(水) 00:50:09
オレも make-hash-table ってのははじめてみたけど、
elispのハッシュってのはcdr要素数1のalistと解釈して、だいたいおk?
846名無しさん@お腹いっぱい。:2007/01/17(水) 01:15:55
論理的にはOKだけど、計算量がぜんぜん違うよ?
何かアルゴリズムの入門書を読んだほうがよさげ
847名無しさん@お腹いっぱい。:2007/01/17(水) 02:15:15
最近知ったんだけど、バイトコンパイルした結果って
直接実行もできるんだね。

(defun fn(x)
(* x 2))
(byte-compile 'fn)
#[(x) "\211\\\301\\\207" [x 0] 2]

(#[(x) "\211\\\301\\\207" [x 0] 2] 10)
20
848名無しさん@お腹いっぱい。:2007/01/17(水) 05:48:58
ワロタ
つくづくエディタなんだな
849名無しさん@お腹いっぱい。:2007/01/17(水) 06:23:03
つまらん
850名無しさん@お腹いっぱい。:2007/01/17(水) 14:28:00
お前等の中にシリコンバレーで働いてる人いる?
851名無しさん@お腹いっぱい。:2007/01/17(水) 23:10:28
emacsで文字のフォントの大きさを変えるにはどうしたらよいですか?
852名無しさん@お腹いっぱい。:2007/01/17(水) 23:41:26
もしemacs lispがstatic scopeだったら果たしてどうだったろうか
853名無しさん@お腹いっぱい。:2007/01/21(日) 00:40:22
>>851
fontset
854名無しさん@お腹いっぱい。:2007/03/28(水) 18:57:13
(゚Д゚≡゚д゚)
855名無しさん@お腹いっぱい。:2007/03/29(木) 01:39:37
>>854
うちの .Xdefault には, 未だに
> Emacs.Font: fontset-12 bold
> Emacs.Fontset-0: -shinonome-gothic-bold-r-*-*-12-*-*-*-*-*-fontset-12 bold
> Emacs.Fontset-2: -shinonome-gothic-bold-r-*-*-14-*-*-*-*-*-fontset-14 bold
...
> Emacs.Fontset-11: -shinonome-gothic-medium-r-*-*-24-*-*-*-*-*-fontset-24 medium
てなものが残ってて機能しているが...
856名無しさん@お腹いっぱい。:2007/04/12(木) 10:48:03
emacs ilspでwebプログラミング可能?
857名無しさん@お腹いっぱい。:2007/04/12(木) 11:29:20
>>856
「webプログラミング」っていうとどの辺の話?
858名無しさん@お腹いっぱい。:2007/04/12(木) 11:45:50
ttp://www1.odn.ne.jp/ymtz/tips.html#wwwsvr

こういうことだったりして
859名無しさん@お腹いっぱい。:2007/04/12(木) 11:57:35
AllegroServe とかそういう話かなぁ。
elisp じゃないけど。
860名無しさん@お腹いっぱい。:2007/04/12(木) 13:32:42
elservなんてのがあったなー。
もっとまともなのも多分あるだろうけど興味無いので知らない。
861名無しさん@お腹いっぱい。:2007/04/12(木) 15:16:27
emacsがwebサーバーになるのですね。もはやなんでもありですね。
elispはphpで作成するのと同様のwebプログラミングは可能でしょうか?
掲示板とか、アンケートなど。

862名無しさん@お腹いっぱい。:2007/04/12(木) 15:18:15
>>861
アクセスのたびに Emacs 呼ぶってこと?
まぁ不可能じゃないんじゃね。
やる気は起きないけど。

>>859 じゃだめなん?
863名無しさん@お腹いっぱい。:2007/04/13(金) 04:31:21
単純にphpスクリプトを書けるか?と聞けば
遊ばれずに済んだであろう>>861
864名無しさん@お腹いっぱい。:2007/04/13(金) 09:45:15
そういう質問じゃないっしょ。
865名無しさん@お腹いっぱい。:2007/04/13(金) 15:06:43
>>861
もちろん同様のことは可能。もちろん同様にはできないけどな。
866名無しさん@お腹いっぱい。:2007/05/13(日) 16:17:55
定期的に M-x hoge を実行するにはどうしたら良いのですか?
答えが駄目なら、誰かヒントだけでも教えてくれないでしょうか。
867名無しさん@お腹いっぱい。:2007/05/13(日) 17:55:49
timer
868名無しさん@お腹いっぱい。:2007/05/15(火) 01:21:02
23
という数値を16進数数値として扱い、
"35"にする方法はどんなのがあるでしょうか?

(let ((n 23))
(format "%d" (string-to-number (number-to-string n) 16)))

これは思いつきましたが、もちょっと簡単にならんかな、と。
869名無しさん@お腹いっぱい。:2007/05/15(火) 06:39:30
じゅうぶんかんたんだとおもう
870名無しさん@お腹いっぱい。:2007/05/15(火) 10:48:34
>>868
#x23
871名無しさん@お腹いっぱい。:2007/05/15(火) 11:08:26
>>868
なんで元が数値なんだろ。
3a とかの入力は考えなくていいの?
872名無しさん@お腹いっぱい。:2007/05/15(火) 20:18:46
>>870
(read (concat "#x" n))
か。なんかびみょーに感じる。この表記がいけるのってemacs21以降あたり?
873名無しさん@お腹いっぱい。:2007/05/16(水) 00:01:09
数値を concat できたのか…
874名無しさん@お腹いっぱい。:2007/05/16(水) 00:22:21
ごめん。emacs21からはムリなはず。
875866:2007/05/20(日) 00:46:22
駄目だ分からない。
run-at-time 使おうにも hoge をどう指定したら良いのか不明……lisp は難しい orz
例えば、.emacs にどう書けば、自動で M-x hoge できますか? ; emacs の引数から起動するのではなくて。
あとは、start-process と while と sleep-for 辺りを組み合わせれば可能な気はするんだけど……さっぱり orz
週末に数時間しか PC に触れられないのは、現代社会をは思えない環境 orz
876名無しさん@お腹いっぱい。:2007/05/20(日) 00:52:00
run-with-timer 使うんじゃないの?
何がわからないのかがよくわからない
877名無しさん@お腹いっぱい。:2007/05/20(日) 00:53:00
もしかして M-x から指定してるものが関数名だってことを知らないとか?
878名無しさん@お腹いっぱい。:2007/05/20(日) 03:58:00
(setq hoge-timer (run-with-timer 0 1 'hoge))
(defun hoge ()
(interactive)
(message (current-time-string)))
(defun hoge-cancel ()
(interactive)
(cancel-timer hoge-timer))

M-x hoge
=>Sun May 20 03:56:18 2007
879lispp?:2007/05/20(日) 14:40:44
LISPを学習して1週間目の者ですが、

(progn
(setq wara 10)
(setq waru 0)
(/ wara waru)
)
でエラーが発生します。

(if (equal waru 0)...)でなくて、catch??? throw???のような例外処理で対応したいのですが、
可能でしょうか?

880名無しさん@お腹いっぱい。:2007/05/20(日) 14:50:53
881名無しさん@お腹いっぱい。:2007/05/20(日) 17:00:06
>>879
condition-case

elisp.infoのControl Structuresを参照。
Lispではcatch/throwの例外処理とsignal/condition-caseのエラー処理は別物
である点に留意されたし。
882名無しさん@お腹いっぱい。:2007/05/20(日) 17:12:06
xyzzy使っているのですが、 condition-caseで関数がないと表示されます。
883名無しさん@お腹いっぱい。:2007/05/20(日) 17:17:31
板違い
884名無しさん@お腹いっぱい。:2007/05/28(月) 20:48:43
EmacsでのLispのプログラムについての質問です。
リストAとして((a b c) (d e f) (g h i))というリストがあるとして、このリストの中の要素であるリストの
最後の要素を返す関数を作る場合どうしたらいいでしょうか?
885名無しさん@お腹いっぱい。:2007/05/28(月) 21:33:40
>>884
各要素の cdr を見ていって、それが nil なものを返せばいいんじゃないの。
そういう話でない?
886名無しさん@お腹いっぱい。:2007/05/28(月) 21:37:09
>>884
(car (last (car (last '((a b c) (d e f) (g h i))))))
887名無しさん@お腹いっぱい。:2007/05/28(月) 21:47:12
884の補足ですが、
リストAを引数として(c f i)を返すような関数を定義したいのです。
また、リストAの要素がもっと多い場合にも対応できるようにしたいのです。
888名無しさん@お腹いっぱい。:2007/05/28(月) 21:52:54
>>887
(mapcar (lambda (x) (car (last x))) A)
889名無しさん@お腹いっぱい。:2007/05/28(月) 22:00:23
>>888
見たことないコマンドが多いのですが・・・。
初心者なのでもう少し分かりやすくしていただけるとありがたいのですが。
890名無しさん@お腹いっぱい。:2007/05/28(月) 22:16:26
標準の関数くらい自分でしらべろよ。
891名無しさん@お腹いっぱい。:2007/05/28(月) 22:17:51
そういった関数を使わないで定義したいんです。
892名無しさん@お腹いっぱい。:2007/05/28(月) 23:42:03
lambda とか mapcar 使わないで lisp のプログラム書くのは
逆に難しいと思うぞ。
893名無しさん@お腹いっぱい。:2007/05/29(火) 00:06:38
それは無理な話だ
894名無しさん@お腹いっぱい。:2007/05/29(火) 00:08:04
ごめん
>>893>>891へね
895名無しさん@お腹いっぱい。:2007/05/29(火) 00:11:56
おk。mapcar も lambda も car も廃止してやったぞ。last は使わせてくれて…

(require 'cl)
(defun fun-887 (lst)
(loop for element in lst
collect (first (last element))))

last も禁止ならこうだ。

(require 'cl)
(defun fun-887 (lst)
(loop for element in lst
collect (first (reverse element))))
896名無しさん@お腹いっぱい。:2007/05/29(火) 00:16:23
>>895ありがとうございました
もう一つ聞きたいのは、数nとリストを引数として取り、
リストのn番目の要素を返す関数を定義したいのですが、
この関数を再帰を使って定義するにはどうしたらいいでしょう
897名無しさん@お腹いっぱい。:2007/05/29(火) 00:24:12
(defun list-ref (lis n)
(if (zerop n)
(car lis)
(list-ref (cdr lis) (- n 1))))
898名無しさん@お腹いっぱい。:2007/05/29(火) 00:43:50
899名無しさん@お腹いっぱい。:2007/05/29(火) 00:46:01
最近なんでもかんでも聞く人多くない?
900名無しさん@お腹いっぱい。:2007/05/29(火) 01:19:24
mapcar を独自に定義しようとするとどう書ける?
901名無しさん@お腹いっぱい。:2007/05/29(火) 01:29:48
>>896
再帰使うまでもない。

(defun list-ref (lis n)
(nth (1- n) lis))
902名無しさん@お腹いっぱい。:2007/05/29(火) 01:52:11
(defun my-mapcar (func list)
(let ((rest list) (results ()))
(while (not (null rest))
(setq results (cons (funcall func (car rest)) results))
(setq rest (cdr rest)))
(nreverse results)))

とかかな。
903名無しさん@お腹いっぱい。:2007/05/29(火) 02:01:06
setq とか cons を使いたくないんですとか来た場合に備えておこう。

(require 'cl)
(defun my-mapcar-2 (func lst)
(loop for elem in lst
collect (funcall func elem)))
904名無しさん@お腹いっぱい。:2007/05/29(火) 02:04:56
>>898 つうか、そゆのは大抵自分では考えないだろうし、調べないだろうし、向上心もないだろうし、礼儀も知らないだろうし、
人の忠告も聞かないだろうから。さっさと答を与えればそれ以上しつこく聞いてこない軽い荒らしだと思って対応するが吉。
905名無しさん@お腹いっぱい。:2007/05/29(火) 02:05:17
cl は宗教上の理由でちょっと……。
906名無しさん@お腹いっぱい。:2007/05/29(火) 02:09:23
自分も書いてみた。リストしか考慮してない。
あんまり慣れてないからどっかまずいところあるかも・・・(自分への免罪符

(defun my-mapcar (func list)
  (defun my-mapcar-iter (func list rtn)
    (if (null list)
        rtn
      (my-mapcar-iter func (cdr list)
                      (setq rtn (cons (funcall func (car list)) rtn)))))
  (my-mapcar-iter func list '()))
907名無しさん@お腹いっぱい。:2007/05/29(火) 02:11:39
defunの中でdefunするのはじめて見た。
908名無しさん@お腹いっぱい。:2007/05/29(火) 02:11:55
あー、 reverse すんの忘れたorz
909名無しさん@お腹いっぱい。:2007/05/29(火) 02:18:25
Schemer の方ですか? Emacs Lisp じゃー再帰は実用的じゃないお。
しかも defun は internal define と違ってグローバルだし…。
910名無しさん@お腹いっぱい。:2007/05/29(火) 02:23:05
>>898の質問者はもうダメだろうね。レポートは突破できても試験は無理そうだ……。
授業二三回でればいいだろうになぁ。まったく聞いてなかったんだろうな。授業料無駄だったね。
911名無しさん@お腹いっぱい。:2007/05/29(火) 02:58:34
>>909
最近、ちょっと scheme で遊んでたもので・・・。

> Emacs Lisp じゃー再帰は実用的じゃないお。
調べてみたところ、再帰回数が max-lisp-eval-depth で制限されてる、
末尾再帰が最適化されない、のようなことがあるのですね。

> しかも defun は internal define と違ってグローバルだし…。
M-x help f で関数のリスト見たら、my-mapcar-iter があって驚きました。

よくよく考えてみたら、setq はいらなかった。
なんでつけたんだろう。
まずいところ多すぎorz
912名無しさん@お腹いっぱい。:2007/05/29(火) 07:07:10
>>905
改宗すればおk
913名無しさん@お腹いっぱい。:2007/05/29(火) 10:07:37
cl 使えば flet で関数内関数使えるよ。
914名無しさん@お腹いっぱい。:2007/05/29(火) 12:55:46
flet を使って書き直すなら、こんなかんじでしょうか。
たしかに my-mapcar-iter が隠れた。これ便利かも。

(require 'cl)
(defun my-mapcar (func list)
  (flet ((my-mapcar-iter (func list rtn)
          (if (null list)
              (reverse rtn)
            (my-mapcar-iter func (cdr list)
                            (cons (funcall func (car list)) rtn)))))
    (my-mapcar-iter func list '())))
915名無しさん@お腹いっぱい。:2007/05/29(火) 22:24:57
…再帰するなら labels じゃねーとダメなんじゃね? cl のバグ?
ズバリこうだろ。while 版より短い!! 俺のバイク小屋ハァハァ

(defun my-mapcar (func lst)
(let ((result nil))
(dolist (e lst)
(push (funcall func e) result))
(nreverse result)))
916名無しさん@お腹いっぱい。:2007/05/29(火) 22:27:10
なんとなく nreverse なしのループで書いてみた
(defun my-mapcar (fun list)
  (let* ((result (list nil))
         (x result))
    (while list
      (setcdr x (list (funcall fun (car list))))
      (setq x (cdr x) list (cdr list)))
    (cdr result)))

>>915
flet を macroexpand してみればわかるよ
まあしょうがないんだろうけどちょっと気持ち悪いよね
917名無しさん@お腹いっぱい。:2007/06/02(土) 08:50:13
ずびまぜん。

elispで 16進数文字列を整数に変換する楽な方法ってありません?
(hoge "64") => 100
ってなるような。
(defun hoge (s)
(string-to-number (concat "#x" s)))
とかじゃ 0が返ってきてしまいました。
918名無しさん@お腹いっぱい。:2007/06/02(土) 08:59:28
(defun hage (s)
(string-to-number s 16))

(hage "64")

100 ウマー
919名無しさん@お腹いっぱい。:2007/06/02(土) 09:16:44
おお、そんなところに &optional があったとは...
infoをもっとちゃんと読むべきでした。
どうも有難うございました。
920名無しさん@お腹いっぱい。:2007/06/02(土) 16:36:52
921名無しさん@お腹いっぱい。:2007/06/02(土) 21:22:45
知ってる人も多いだろうけど C-h f めちゃくちゃ便利だよ。
関数定義してるソースの該当部分にも飛べる。
922名無しさん@お腹いっぱい。:2007/06/03(日) 00:27:47
emacs22でも、mode-infoも動いてくれるしね。
923名無しさん@お腹いっぱい。:2007/06/10(日) 19:00:25
あるオブジェクトに対し、car-safeが非nilとなる時
cdrでなくcdr-safeを使うべき局面ってある?
924名無しさん@お腹いっぱい。:2007/06/10(日) 23:36:38
>>923
car-safe が non-nil なら対象は list ってことだから、そんな局面はない、
と思う。
925名無しさん@お腹いっぱい。:2007/06/27(水) 22:28:03
同じ名前の変数 (defvar hoge)と関数 (defun hoge ())が定義されているとき、
変数だけ定義を消すことってできますか?

(unintern 'hoge) だと、両方消えてしまうので。
926名無しさん@お腹いっぱい。:2007/06/27(水) 22:36:59
makunbound
c.f.
fmakunbound
927名無しさん@お腹いっぱい。:2007/06/27(水) 22:45:39
ぬりがとう。

ところでこれ何て読むのですか?
(エフ)メイク・アン・バウンドでいいんかな?

思い出されるcreat()。
928名無しさん@お腹いっぱい。:2007/06/27(水) 23:18:45
>ところでこれ何て読むのですか?
なんでしょうね?

>思い出されるcreat()。
なるw
929名無しさん@お腹いっぱい。:2007/06/29(金) 01:06:36
defconstしてるものには、時に大文字のシンボルを使ってみるのも一興かなと
ふと思った。
たぶんウザいだろうけど。
930名無しさん@お腹いっぱい。:2007/08/07(火) 22:22:42
EmacsがXで動いているときだけ、
C-zでアイコン化しない様にしたいと思っています。
Xで動いているのかterminalで動いているのか判別するには
どうしたらよいのでしょうか。
931名無しさん@お腹いっぱい。:2007/08/07(火) 22:29:27
window-system
932930:2007/08/07(火) 22:33:57
>931
ありがとうございます。
とりあえず、
(if window-system (global-set-key "\C-z" 'shell))
としてみました。
933名無しさん@お腹いっぱい。:2007/08/21(火) 05:23:38
M-x shell
を.emacsファイルの読み込み時に動作させるにはどうしたらよいのでしょうか。
934名無しさん@お腹いっぱい。:2007/08/21(火) 10:02:38
本当に文字通りそうしたいのならば
(shell)
と書く。
935名無しさん@お腹いっぱい。:2007/08/21(火) 12:13:59
>>934
できました。ありがとうございました。
936名無しさん@お腹いっぱい。:2007/08/26(日) 17:18:02
(global-set-key [?\C-;] 'なにか)
とか
(global-set-key "\C;" 'なにか)
とやってもエラーがでて動きません。
;をjにしたら動いたので”なにか”が間違っていることはいないと思います。

C-;やC-, C-. へのバインドを指定するにはどうしたらよいのでしょうか
どなたか教えていただけないでしょうか?
937名無しさん@お腹いっぱい。:2007/08/26(日) 19:00:19
[(control ?;)]

設定程度の質問なら、次回からelispスレじゃなくてemacsスレ行きな。
938名無しさん@お腹いっぱい。:2007/08/26(日) 21:58:08
>>937
ありがとうございます
今後は気をつけます
どうもすいませんでした

そのようにしても動きはしませんでしたが、
それはターミナルからの接続の仕様らしいと分かったので、
別のキーを割りあてることにします
939名無しさん@お腹いっぱい。:2007/08/26(日) 22:06:20
man ascii
で出てくるコントロールコード以外の
コントロールキーの組み合わせ以外は
端末じゃ動かないよ。
940名無しさん@お腹いっぱい。:2007/08/26(日) 22:09:03
まちがえた。以外が一つ多かった。
941名無しさん@お腹いっぱい。:2007/08/28(火) 01:55:47
(func "/usr/bin/emacs" "/")
=> ("usr" "bin" "emacs")

こんな感じで、文字列からトークンを抽出する好い奴を
何方か識りませぬか?
942名無しさん@お腹いっぱい。:2007/08/28(火) 02:03:17
普通に1文字ずつチェックすれば良いじゃない。
943名無しさん@お腹いっぱい。:2007/08/28(火) 03:14:56
split-string
944名無しさん@お腹いっぱい。:2007/08/28(火) 19:47:13
>>943
幸あれ。
やっぱりあるよね。token で探してたよ

>>942
普通?とりあえずこんなん書いてた

(lambda (string delimiter)
(let* ((iter (lambda (str dlm lst)
(if (and (string-match dlm str) (substring str (1+ (string-match dlm str)) nil))
(funcall iter
(and (string-match dlm str) (substring str (1+ (string-match dlm str)) nil))
dlm
(cons (substring str 0 (string-match dlm str)) lst))
(cons (substring str 0 (string-match dlm str)) lst)))))
(funcall iter string delimiter ())))
945名無しさん@お腹いっぱい。:2007/10/27(土) 01:27:05
下記のような独自スクリプトのメジャーモードを作っています。
function:
if hoge == 0 {
hogehoge;
}
elseif hoge ==1 {
if hoge2 == 0 {
hogehoge2;
}else{
hogehoge3;
}
}
end;
階層は上記のif文のみです。
自動インデントをつけたいのですがどうすればいいでしょうか?
946945:2007/10/28(日) 08:47:43
補足です。generic-x.elを使って作っています。
947名無しさん@お腹いっぱい。:2007/10/30(火) 10:08:00
buffer-local-variableなるものがあるそうですが、
.emacs.elなどでsetq-defaultで設定した値は、
新しいバッファを作る度にバッファごとの値のコピーが作られてしまうんでしょうか。

カスタマイズ性から見るとsetq-defaultの方が使い易そうなのですが、
パフォーマンスに悪影響がでないか心配なんです。
948名無しさん@お腹いっぱい。:2007/10/30(火) 20:29:39
make-variable-buffer-local されてるような変数の話だよね。
これは setq とかで書き換えた時点で、その buffer に local な変数が作られるってシステム。
書き換えるまではどの buffer でも初期値を参照してて、 setq-default はこの初期値を書き換える。
それ自体がコピーの原因になったりはしないはず。
949名無しさん@お腹いっぱい。:2007/11/16(金) 08:26:40
call-processとかの外部コマンド呼び出し関数で
コマンドの出力(標準出力)を文字列もしくは文字列リストで
返すようなものってないでしょかね?
いちいちバッファに出すのがとても無駄に感じる時がある
950名無しさん@お腹いっぱい。:2007/11/16(金) 22:17:04
set-process-filter
951名無しさん@お腹いっぱい。:2007/11/29(木) 10:04:56
みなさん、乙です。

コードの中で読み易さを上げるためダブルクオート中の文字列を改行して書きたいのですが、
その改行自体はコード上では無効にしたいのですが、どうすればいいですか?


(message "
listA,
listB,
listC")

これが以下のようにmini-buffer に出力して貰いたいのですが、

listA,listB,listC

そんな方法ありますか?
952名無しさん@お腹いっぱい。:2007/11/29(木) 11:08:37
>>951
(message (concat
"listA,"
"listB,"
"listC"))
953名無しさん@お腹いっぱい。:2007/11/29(木) 12:39:04
>>951
(message "\
listA,\
listB,\
listC")
954名無しさん@お腹いっぱい。:2007/11/30(金) 05:59:54
>>952, 953
サンクス。C と同じことできたのね。試せよオレ。
955最近始めたEMACS LISP:2007/12/24(月) 01:01:38
こんなのがあった。
(defvar zic-new-shell-buffer 0)
(defun zic-create-shell (n)
(interactive "P")
(shell)
(if n (setq zic-new-shell-buffer n))
(while
(get-buffer (concat ""
(int-to-string zic-new-shell-buffer)))
(setq zic-new-shell-buffer (1+ zic-new-shell-buffer)))
(rename-buffer
(concat "" (int-to-string zic-new-shell-buffer))))
(global-set-key "\C-cz" ' zic-create-shell)
上とは関係ないけど、ご教授をよろしくお願いいたします。
以下のデータ(リージョン)を呼んで ("XXX" "YYY" "ZZZ")のように
kill-ringに入れる関数の作り方教えてください。とうか作ってください。
他力本願ですみません。
ほげほげ、HOGEHOGE、ホゲホゲはデータの中に一回しか出てきません。
ほげほげ、HOGEHOGE、ホゲホゲは行の先頭にあるとはあkぎりません。
XXX、YYY、ZZZは、ほげほげ、HOGEHOGE、ホゲホゲの直後にあり、
XXX,YYY,ZZZ文字列長さは不定です(20文字以内)。
"ほげほげ"を探し、”XXX”(次のブランクの手前まで)をkill-ringに格納したいのです。
つまり、複数の特定文字列の後ろにある数文字の切り出しを自動化け
したいわけです。
検索ワードのほげほげ、HOGEHOGE、ホゲホゲは,alistに事前登録でかまいません。
●データ(リージョン)
ほげほげ:XXX @@@@
HOGEHOGE:YYY @@@@
ホゲホゲ:ZZZ @@@@
つづく。。
よろしくお願いいたします。
956名無しさん@お腹いっぱい。:2007/12/24(月) 01:11:46
分かりやすく書こうという努力が見られない
957Zeno ◆5nZQbNmQPs :2007/12/24(月) 10:28:04

>>955
吾はお前のレスをほとんど読んでいないが、リストの内容をキルリングに入れたいのであれば
関数の最後あたりに (kill-new (format "%S" L)) としておけ (Lはリスト)。

958名無しさん@お腹いっぱい。:2007/12/24(月) 18:52:35
>>955
やりたいのはこういうことかな? 入門書やマニュアル読んでるうちに書けるようになると思うよ。
(defvar hogehoge-keys '("ほげほげ" "HOGEHOGE" "ホゲホゲ"))
(defun hogehoge (start end)
(interactive "r")
(let (result)
(save-excursion
(save-restriction
(narrow-to-region start end)
(dolist (x hogehoge-keys)
(goto-char (point-min))
(when (re-search-forward (concat x ":\\(.+?\\) ") nil t)
(push (match-string-no-properties 1) result)))))
(when result (kill-new (format "%S" (nreverse result))))))
959名無しさん@お腹いっぱい。:2007/12/25(火) 07:55:32
firefox があるこの時代の (emacs-)w3m の存在意義を200字以内に書け。
960名無しさん@お腹いっぱい。:2007/12/25(火) 08:16:18
悪い、↑のは誤爆だ。
961名無しさん@お腹いっぱい。:2007/12/25(火) 13:31:26
Visual Studio, Office, Internet Explorer があるこの時代の (emacs-)w3m の存在意義を200字以内に書け。
962名無しさん@お腹いっぱい。:2007/12/26(水) 15:55:05
elinks><;
963名無しさん@お腹いっぱい。:2007/12/31(月) 01:25:06
>>961
slime 使って lisp を coding/debug している時に Common Lisp Hyper Spec を
読むために存在している.
964名無しさん@お腹いっぱい。:2007/12/31(月) 19:03:33
>>961
白痴みてーにマウスをカチャコチョclick!click!とかしねーですむべ?
965名無しさん@お腹いっぱい。:2008/01/01(火) 14:30:07
激しくニッチな用途ワロタ
966名無しさん@お腹いっぱい。:2008/01/02(水) 14:33:53
("abc" "def" "ghi") のどれかが
"de" を含むなら t 含まないなら nil を返す関数を書きたかったのですが
↓まで書いて力尽きました…。

(mapcar (lambda (f)
(if (string-match "de" f) t))
'("abc" "def" "ghi"))

戻り値の論理和をとればうまくいくんじゃないかと思ったんですが
logior は引数としてinteger しかとらないし
真偽値に対して論理和を行う関数は見つけられませんでした…。

どうすればできるのかアドバイスお願いします
967名無しさん@お腹いっぱい。:2008/01/02(水) 15:22:07
(defun hoge (re list)
  (catch :loop
    (dolist (x list)
      (if (string-match re x)
          (throw :loop t)))))
968名無しさん@お腹いっぱい。:2008/01/02(水) 15:32:10
(require 'cl)
(not
(apply 'every
`(null ,(mapcar (lambda (x)
(if (string-match "de" x) t))
'("abc" "def" "ghi")))))
こんなのを書いてみた。complementって無いのね。
969名無しさん@お腹いっぱい。:2008/01/02(水) 15:32:44
catch/throwやclのblock/return
970名無しさん@お腹いっぱい。:2008/01/02(水) 15:37:45
>>968 everyよりはsomeじゃない?
971名無しさん@お腹いっぱい。:2008/01/02(水) 16:39:54
わざわざ cl 使わなくてもできるんじゃね?
>>967
とか,
(dolist (i '("abc" "def" "ghi") nil)
(when (string-match "de" i)
(return t)))
とか...
972名無しさん@お腹いっぱい。:2008/01/02(水) 16:58:36
(not (null (string-match "de" (mapconcat 'identity '("abc" "def" "ghi") "¥0"))))
Lispレベルでループしないし、string-matchも1回しか実行しないから、
データによってはこんな風にした方が速いかもよ。
973名無しさん@お腹いっぱい。:2008/01/02(水) 17:01:14
>>972
目から鱗。 mapconcat なんてものがあったんだ
974名無しさん@お腹いっぱい。:2008/01/02(水) 18:01:14
この発想には脱帽。
975名無しさん@お腹いっぱい。:2008/01/02(水) 19:45:53
>>971 returnはcl
976名無しさん@お腹いっぱい。:2008/01/02(水) 22:31:07
dolist も cl だったりする。
977名無しさん@お腹いっぱい。:2008/01/02(水) 22:52:32
>>976
昔は cl だったけど今は標準ライブラリだよ。
http://www.gnu.org/software/emacs/manual/html_node/elisp/Iteration.html#index-dolist-535
978名無しさん@お腹いっぱい。:2008/01/02(水) 23:20:29
ElispがCL相当になるのはいつの日か・・・lexbindはまだか
979966:2008/01/03(木) 02:49:26
みなさんありがとうございます
色々な書き方があるのですね

ただ、scratch で >>968 さんのコードを実行しても
every がないと言われてしまい cl の読み込みがうまくいかず動かせません…。
load-path に cl.el のあるディレクトリは入ってます

よくわからないので色々と

(load "cl.el")
(load "cl-extra.el")
(require 'cl)
(require 'cl-extra)

こんな感じで追加してみましたがやはり(void-function every)で怒られてしまいます
バージョンは22.1.50.1 (i386-mingw-nt5.1.2600)です

>>972さんのはもちろん問題なく動きますので
これを使わせていただく事にします

cl.el についてはおいおい調べる事にします
ありがとうございました
980972:2008/01/03(木) 16:22:35
sageてなかった…
もう必要ないかもしれないけど、self-evaluatingな要素しかないリスト(nilとtしかない場合を含む)についての論理和なら、(eval (cons 'or LIST))という手もある。
981名無しさん@お腹いっぱい。:2008/01/03(木) 16:24:41
>>980
eval は遅い
982972
>>981
>eval は遅い
一般にはね。でもこのくらい単純な例になるとそうとも言えない。
(defun test (x)
(eval (cons 'or x)))
(defun test (x)
(while (and x (not (car x)))
(setq x (cdr x)))
(car x))
両方バイトコンパイルして比較すると、
(dotimes (i 10000000) (test '(nil nil nil nil t nil nil nil nil t)))
はwhile版が速いけど、
(let ((x (make-list 10000 nil))) (dotimes (i 10000) (test x)))
はeval版が速い。