【叩かれて】Emacs Lisp道場【強くなれ】at UNIX
【叩かれて】Emacs Lisp道場【強くなれ】 - 暇つぶし2ch750:名無しさん@お腹いっぱい。
06/02/04 23:08:53
まぁblogはある意味ここよりもゴミが多かったりするし。

751:名無しさん@お腹いっぱい。
06/02/04 23:32:41
しかしまあはてなでEmacsはやりだしたってので
それじゃ俺も使ってみるかってな人間が増えるのはいいことだ。
うざい質問も増えるかもしれないけど
そのうち育ってステキなパッケージ作ってくれるやもしれんし。

752:名無しさん@お腹いっぱい。
06/02/04 23:43:21
バグを見つけたなら、指摘コメントしてやるといいよ。


753:名無しさん@お腹いっぱい。
06/02/06 22:59:07
>6のtexinfoが
{}のエスケープが無くてmakeinfoできないんだけど、
俺だけ?パッチ作ったんだけど、作者に送った方が良い?


754:名無しさん@お腹いっぱい。
06/02/07 08:26:36
>>745
これを見ていろいろ調べていて、
「[ANNOUNCE] Emacs modules for Perl programming」
URLリンク(www.uni-giessen.de)
というドキュメントを見つけて(おのれ、今までこれの存在を知らなかった)

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

通常、いろいろな人が作っているのをかき集めて組み合わせて実現して
いる機能をそっくり提供する、別系統のツールのセットですよね。
このTiny Toolsを使っている人っています?


755:名無しさん@お腹いっぱい。
06/02/07 16:15:09
使ってはいないけど、たまに参考にしたり。
コード、ドキュメント共に。

756:名無しさん@お腹いっぱい。
06/02/09 12:31:30
(standard-display-ascii ?@ [?#])
を評価すると,(当然ですが) モード関係なしで全ての @ が # で表示されてしまいます.
ここで,上の動作をある特定のモードのみでやるにはどうすればよいのでしょうか?


757:名無しさん@お腹いっぱい。
06/02/09 17:43:03
(make-local-variable 'display-table)

758:名無しさん@お腹いっぱい。
06/02/10 00:07:01
>>757 (make-local-variable 'buffer-display-table) だろが

759:名無しさん@お腹いっぱい。
06/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:名無しさん@お腹いっぱい。
06/03/02 21:02:30
うー、そのパッチはとてもただしいのだが、
ここにはってしまったためにさいようできません。。。

761:名無しさん@お腹いっぱい。
06/03/02 21:47:55
(ノ∀`)アチャ-

762:名無しさん@お腹いっぱい。
06/03/02 22:49:07
マルチライセンスで別のところにも貼ればいいんでは。

763:759
06/03/02 23:14:08
GPL に違反してしまうのか?
パッチという形式をとっているからいけないのか?
無知は罪だ。勉強してから出直します。ごめん。


764:名無しさん@お腹いっぱい。
06/03/03 02:53:55
navi2ch スレでもそういう認識になってるけど、
例えば匿名で運営してる自分のウェブページに掲載したらどうなるの?
初出の出所が不明だから不許可になる?
そもそも著作権侵害は親告罪だし、
メーリングリストでのパッチだって完全な出所証明は非常に難しいし、
出所が証明できたからってどっかからぱくってないことは証明できないし、
採用者の了見しだいでなんとでもなりそうな気がするよ。

765:名無しさん@お腹いっぱい。
06/03/03 04:18:16
>>764
出所不明とかそういう問題じゃないよ。

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

自分のウェブページとかの場合なら、 GPL に矛盾する規定をしてなければ問題ない。
だから navi2ch スレとかだと、そういう規定がない Wiki とかを利用してる。

766:名無しさん@お腹いっぱい。
06/03/03 04:35:24
便乗質問させてください。
すれ違いかと思いつつ、前から聞いてみたかったので書きます。

gzip & base64 とかでencodeして張った場合、どうなるんでしょう。

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

ということは、本人が GPL として作ったコードを 2ch に張った場合、
張った行為は GPL あるいは 2ch 利用規約違反だけど、
張っただけで 2ch のものになって GPL として使えなくなるわけではないんでは?

768:名無しさん@お腹いっぱい。
06/03/03 09:22:24
2ch にあるパッチを当てた物を GPL として配布してもかまわないと思う人は
自分で配布すればいいじゃないか。
片手間で開発してるような場合、GPL 違反だと言ってる連中がいるってだけで
面倒そうだから取り込むのはやめようって気になるんじゃないかな。

769:名無しさん@お腹いっぱい。
06/03/03 09:46:09
>>766
貼る形式の問題ではない。

770:名無しさん@お腹いっぱい。
06/03/03 10:39:04
思うんなら自分でやればっていわれても、話にならないな。
まあスレ違いだしやめよう。

771:名無しさん@お腹いっぱい。
06/03/03 12:04:01
誰かが別の場所でGPLで公開してるパッチを第三者が勝手に
2chに貼った場合とか

772:名無しさん@お腹いっぱい。
06/03/03 12:08:04
>>771
それのどこが問題?

773:名無しさん@お腹いっぱい。
06/03/03 12:18:33
そのパッチを本人がプロジェクトに寄付する気になったとき
とりこめるかどうか

774:名無しさん@お腹いっぱい。
06/03/03 12:46:56
第三者が何かしたからといって、パッチ作製者の権利が失われるわけないじゃん。
そうでないなら、ML とかに流れてるパッチを 2ch に転載しまくるだけで
そのプロジェクトの開発を妨害できちゃうよ。

775:名無しさん@お腹いっぱい。
06/03/03 13:08:30
匿名サイトに置いてあるパッチを2chに貼った場合、
本人によるものか別の人によるものかも分かんねーしな

776:名無しさん@お腹いっぱい。
06/03/03 13:48:32
強いて言えばパッチの作者に
「ヘンなシバリのある掲示板に勝手に貼るなよ」
って文句言われる可能性はあるな。

777:名無しさん@お腹いっぱい。
06/03/03 14:20:49
文句言われる言われないはどっちでもいい。
問題はそのパッチをマージする事が可能かどうかだ。

778:名無しさん@お腹いっぱい。
06/03/03 14:23:41
マージするかどうかは
開発元とパッチ作者との間の問題。
2ch に貼るのは
2ch 管理人と投稿者とパッチ作者の間の問題。
両者に関係はない。

779:名無しさん@お腹いっぱい。
06/03/04 00:28:59
続きはこちらで

ライセンスあれこれ
スレリンク(unix板)

780:名無しさん@お腹いっぱい。
06/03/09 19:58:10
ある変数に EUC-JP や Shift_JIS などの文字コードの文字列が入っている状態で、
その文字コードを UTF-8 に変換したい場合は、どうしたら良いのでしょうか?

781:名無しさん@お腹いっぱい。
06/03/09 20:08:35
ccl

782:名無しさん@お腹いっぱい。
06/03/10 22:12:33
>>781
ありがとう。
でも、全然使い方が分からないわ orz

783:名無しさん@お腹いっぱい。
06/03/21 09:49:25
こんなの見つけたお
URLリンク(www.okisoft.co.jp)

知識ゼロからのとっかかりにはいいんではないかと思う

784:名無しさん@お腹いっぱい。
06/03/21 13:12:22
ほかにも「やさしい Lisp の作り方」とかあるね
URLリンク(www.okisoft.co.jp)
あと、これは一部で有名だけど「美人プログラミングスタイル」とか

785:名無しさん@お腹いっぱい。
06/03/28 10:55:02

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

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

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

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

だれか助けてー。

786:名無しさん@お腹いっぱい。
06/03/28 13:19:47
>>785
先に決め事が必要になる。

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

まともにやると、かなりめんどい。

787:名無しさん@お腹いっぱい。
06/03/28 13:39:20
>>785
単に
(set-fill-column 40)
(auto-fill-mode t)
って話?

>>786 みたいな問題もあるし
仕様を見直した方がいい気がする。

788:ゼウス
06/04/03 13:19:19

おい、お前等



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

これをスペースでインデントするようにするにはどうしたら良いでしょうか。

790:名無しさん@お腹いっぱい。
06/04/12 02:11:47
(set-variable 'indent-tabs-mode nil)
(setq-default indent-tabs-mode nil)

…10年以上使ってるけどこれでいいかな


791:名無しさん@お腹いっぱい。
06/04/12 08:06:40
eshell 上で mysql の返答 (standard output) がしっかり
表示されるようにするにはどうソースを修正したらいいか教えろ
お前等ならわかるだろ


792:名無しさん@お腹いっぱい。
06/04/14 04:06:36
やっぱわかんねーのか。。。
eshell のソースはかなり複雑だから仕方ねーのかもな

793:名無しさん@お腹いっぱい。
06/04/14 08:33:53
わかるだろうけどおまえのためにわざわざ調べる気にはならんってだけ。

794:名無しさん@お腹いっぱい。
06/04/14 08:48:40
>>793
お前自分の言ってる事矛盾してる
知ってんだったら調べる必要ないだろが

795:名無しさん@お腹いっぱい。
06/04/14 09:05:09
調べればわかるんだろ

796:名無しさん@お腹いっぱい。
06/05/11 11:34:11
各種*.confみたいな
項目: 要素
的設定ファイルを読み込んでalistに溜め込んで行くようなのを考えてるんですが
なかなかすっきりしません。
一項目一要素でとりあえずいいんですが、
やっぱりなにかしらのバッファで開いてbuffer-substringしていくしかないんでしょうか。


797:名無しさん@お腹いっぱい。
06/05/11 23:30:31
しかないっつーかEmacsのファイル入力はバッファで開くのが普通なんだが。


798:名無しさん@お腹いっぱい。
06/05/11 23:33:22
バッファで開かないでファイルをlispでストリームとして扱う方法ってあるの?
数百メガの巨大ファイルをいじるとき便利っぽいけど。

799:名無しさん@お腹いっぱい。
06/05/12 04:55:14
tmpなバッファにinsert-file-contents。
find-file-noselectするよりは処理が軽いそうな


800:名無しさん@お腹いっぱい。
06/05/12 05:10:22
>>798
Common Lisp な xyzzy ならできるが、Emacs は不可能。

801:名無しさん@お腹いっぱい。
06/05/12 08:14:54
xyzzy は Common Lisp じゃない。cl ですら実装されてるのに
(mapcar (lambda (x) (typecase x
(integer "整数")
(string "文字列")
(t "その他")))
'(10 3.3 "ほげ"))
こんなのが動かないし。

802:名無しさん@お腹いっぱい。
06/05/13 20:51:42
>>801
それだけ?他にもあるでしょ。おせーて。

803:名無しさん@お腹いっぱい。
06/05/14 11:40:22
-batch
で別個に動かすのはどうでしょう?

804:名無しさん@お腹いっぱい。
06/05/14 14:05:01
>>798
insert-file-contents系で分けて読むとか、catあたりをstart-processしてfilterで読むとか。

テキストの場合マルチバイト文字の切れ目の処理が必要になるとちょっといやらしいかも

805:名無しさん@お腹いっぱい。
06/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#)))

806:805
06/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:名無しさん@お腹いっぱい。
06/08/30 05:12:50
未編集のリードオンリーのバッファ上で、何かあるタイミングで、
recenter すると変更フラグが立つことがある。
という現象に遭遇した人いないですか、とか聞いてみようと思った。
が、recenter の前に、(sit-for 0) を入れたら解決したみたい。

808:名無しさん@お腹いっぱい。
06/10/15 22:07:25
Emacs21とか22とかになると、デフォルトでいろんな機能が
組込まれてしまったので (occurとかgrepとか、検索もパワーアップしたり)、
新しい機能を作る機会が減って、最近このスレッドが寂しいのかなぁ、
などと思ったりした。

まとめサイトや紹介サイトも増えたしね。
ネタが出てくることを願って期待sage。


809:名無しさん@お腹いっぱい。
06/10/21 21:51:36
ちまちまと一年以上かけて作ってきたが、とうとうやる気が無くなったので晒すテスト。
使い方はソース読んでくれ。

URLリンク(grinocat.googlepages.com)

810:名無しさん@お腹いっぱい。
06/10/21 23:01:47
ネ(・∀・)申!


811:名無しさん@お腹いっぱい。
06/10/22 04:18:27
>>809
すげぇ。すげぇよ、あんた。

812:名無しさん@お腹いっぱい。
06/10/27 01:00:59
w3みたいなもの?
動かせない(´;ω;`)

813:<sage>
06/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:名無しさん@お腹いっぱい。
06/11/06 21:51:47
>>813
> perl に渡されるときに壊れると解釈していますが、どうすればいいのでしょう?
表の後に\を付ける、とか?

815:sage
06/11/07 00:20:27
>>814
レスサンクス。

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

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

おそらく日本語 OS 下では、デフォルトが shift_jis になると思いますが、
これは、elisp からシェルの間も同じかな?

816:名無しさん@お腹いっぱい。
06/11/07 00:31:14
process-coding-system とか coding-system-for-write とか?

817:名無しさん@お腹いっぱい。
06/11/07 00:45:40
>>816 さんありがとう
(setq coding-system-for-write 'sjis)
でうまくいきました。m(_ _)m

818:名無しさん@お腹いっぱい。
06/11/07 00:48:11
>>817
letで束縛
URLリンク(www.fan.gr.jp)

819:名無しさん@お腹いっぱい。
06/11/07 01:04:52
>>818
この変数に対して値をグローバルに設定すべきではないということですね。
了解、let を使います。

820:名無しさん@お腹いっぱい。
06/12/13 14:58:06
emacs上でschemeの勉強しているんですが、
emacsのコメント行のインデントのしかたが気に入らないので
直したいと思っているのですが、
どこから始めたらいいのか、
さっぱり分かりません。

とりあえず
scheme-modeが定義されている場所の調べ方を教えていただけませんか?


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

> emacsのコメント行のインデントのしかたが気に入らないので
確かに comment-dwin は腐ってるからな

822:名無しさん@お腹いっぱい。
06/12/14 22:57:50
>>820
つ Gauche

823:名無しさん@お腹いっぱい。
07/01/14 02:16:27
初歩的な質問で聞き難いのですが教えて下さい。
バッファ中の文章の特定の文字を置き換えるようなコードを
作りたいのですが、condを使うのかifとprognを使うのかよく分かりません。
たとえば、文章中の”Red Hat”なら”赤帽”、”Vine”なら”葡萄”、”Windows”なら
”窓”というようにバッファ中の文章を変えたいです。

824:名無しさん@お腹いっぱい。
07/01/14 02:19:30
>>823
replace-stringじゃだめなん?

825:名無しさん@お腹いっぱい。
07/01/14 02:26:41
複数の文字列を一括して置換とかかな

826:名無しさん@お腹いっぱい。
07/01/14 02:33:07
>>824
検索関数(search-forward)などでマッチした文字列を
replace-matchなどで変えようと思ったのですが、条件分岐が
よくわからなくて・・・

>>825
たぶん、そんな感じです。

827:名無しさん@お腹いっぱい。
07/01/14 02:36:59
まずは仕様をきっちり決めれ。
「たぶん、そんな感じ」じゃなんだかわからん。

828:名無しさん@お腹いっぱい。
07/01/14 02:42:02
基本事項なんだぜ?
(info "(elisp)Conditionals")
(info "(elisp)Combining Conditions")


829:名無しさん@お腹いっぱい。
07/01/14 02:49:31
ありがとうございます。もう少し読んでみます。

830:823
07/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:名無しさん@お腹いっぱい。
07/01/14 05:53:52
一行に2回出てきたらだめじゃね?

832:名無しさん@お腹いっぱい。
07/01/14 11:47:06
検索語を \\| で分けて match-string で抜き出し cond で振り分けろ

833:823
07/01/14 13:38:34
>>831
いえ、ちゃんと置き換えてくれました。

>>832
ご教授ありがとうございます。しばらくにらめっこします。

834:名無しさん@お腹いっぱい。
07/01/14 14:59:07
教授じゃなくて教示


835:名無しさん@お腹いっぱい。
07/01/15 00:23:16
> >>833
> > 一行に2回出てきたらだめじゃね?
>>831
> いえ、ちゃんと置き換えてくれました。

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



836:名無しさん@お腹いっぱい。
07/01/15 01:09:45
`XWindows' も `X窓' になりそうだし、`divine' も `di葡萄' になりそう。
(後者は `case-fold-search' の値によるけど)

837:823
07/01/15 19:50:39
>>835
>>836
ご指摘ありがとうございます。例外処理(?)を考えていませんでした。
まだ>>832さんの方法で出来ていないしどんだけバカなんだろ私・・・

838:名無しさん@お腹いっぱい。
07/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:名無しさん@お腹いっぱい。
07/01/16 08:06:14
save-excursion も教えたれよ。

840:名無しさん@お腹いっぱい。
07/01/16 10:05:53
replace-regexp を使う。

841:名無しさん@お腹いっぱい。
07/01/16 11:37:35
>>840
This function is usually the wrong thing to use in a Lisp program.

842:名無しさん@お腹いっぱい。
07/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:名無しさん@お腹いっぱい。
07/01/16 15:22:17
ほとんどの漢字も普通にword syntaxだから全然だめだな

844:名無しさん@お腹いっぱい。
07/01/16 16:47:50
俺、elispでハッシュとか使ったことねーや

845:名無しさん@お腹いっぱい。
07/01/17 00:50:09
オレも make-hash-table ってのははじめてみたけど、
elispのハッシュってのはcdr要素数1のalistと解釈して、だいたいおk?


846:名無しさん@お腹いっぱい。
07/01/17 01:15:55
論理的にはOKだけど、計算量がぜんぜん違うよ?
何かアルゴリズムの入門書を読んだほうがよさげ

847:名無しさん@お腹いっぱい。
07/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:名無しさん@お腹いっぱい。
07/01/17 05:48:58
ワロタ
つくづくエディタなんだな

849:名無しさん@お腹いっぱい。
07/01/17 06:23:03
つまらん

850:名無しさん@お腹いっぱい。
07/01/17 14:28:00
お前等の中にシリコンバレーで働いてる人いる?

851:名無しさん@お腹いっぱい。
07/01/17 23:10:28
emacsで文字のフォントの大きさを変えるにはどうしたらよいですか?


852:名無しさん@お腹いっぱい。
07/01/17 23:41:26
もしemacs lispがstatic scopeだったら果たしてどうだったろうか

853:名無しさん@お腹いっぱい。
07/01/21 00:40:22
>>851
fontset

854:名無しさん@お腹いっぱい。
07/03/28 18:57:13
(゚Д゚≡゚д゚)

855:名無しさん@お腹いっぱい。
07/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:名無しさん@お腹いっぱい。
07/04/12 10:48:03
emacs ilspでwebプログラミング可能?

857:名無しさん@お腹いっぱい。
07/04/12 11:29:20
>>856
「webプログラミング」っていうとどの辺の話?

858:名無しさん@お腹いっぱい。
07/04/12 11:45:50
URLリンク(www1.odn.ne.jp)

こういうことだったりして

859:名無しさん@お腹いっぱい。
07/04/12 11:57:35
AllegroServe とかそういう話かなぁ。
elisp じゃないけど。

860:名無しさん@お腹いっぱい。
07/04/12 13:32:42
elservなんてのがあったなー。
もっとまともなのも多分あるだろうけど興味無いので知らない。

861:名無しさん@お腹いっぱい。
07/04/12 15:16:27
emacsがwebサーバーになるのですね。もはやなんでもありですね。
elispはphpで作成するのと同様のwebプログラミングは可能でしょうか?
掲示板とか、アンケートなど。



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

>>859 じゃだめなん?

863:名無しさん@お腹いっぱい。
07/04/13 04:31:21
単純にphpスクリプトを書けるか?と聞けば
遊ばれずに済んだであろう>>861


864:名無しさん@お腹いっぱい。
07/04/13 09:45:15
そういう質問じゃないっしょ。

865:名無しさん@お腹いっぱい。
07/04/13 15:06:43
>>861
もちろん同様のことは可能。もちろん同様にはできないけどな。

866:名無しさん@お腹いっぱい。
07/05/13 16:17:55
定期的に M-x hoge を実行するにはどうしたら良いのですか?
答えが駄目なら、誰かヒントだけでも教えてくれないでしょうか。

867:名無しさん@お腹いっぱい。
07/05/13 17:55:49
timer

868:名無しさん@お腹いっぱい。
07/05/15 01:21:02
23
という数値を16進数数値として扱い、
"35"にする方法はどんなのがあるでしょうか?

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

これは思いつきましたが、もちょっと簡単にならんかな、と。


869:名無しさん@お腹いっぱい。
07/05/15 06:39:30
じゅうぶんかんたんだとおもう

870:名無しさん@お腹いっぱい。
07/05/15 10:48:34
>>868
#x23

871:名無しさん@お腹いっぱい。
07/05/15 11:08:26
>>868
なんで元が数値なんだろ。
3a とかの入力は考えなくていいの?

872:名無しさん@お腹いっぱい。
07/05/15 20:18:46
>>870
(read (concat "#x" n))
か。なんかびみょーに感じる。この表記がいけるのってemacs21以降あたり?

873:名無しさん@お腹いっぱい。
07/05/16 00:01:09
数値を concat できたのか…


874:名無しさん@お腹いっぱい。
07/05/16 00:22:21
ごめん。emacs21からはムリなはず。

875:866
07/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:名無しさん@お腹いっぱい。
07/05/20 00:52:00
run-with-timer 使うんじゃないの?
何がわからないのかがよくわからない

877:名無しさん@お腹いっぱい。
07/05/20 00:53:00
もしかして M-x から指定してるものが関数名だってことを知らないとか?

878:名無しさん@お腹いっぱい。
07/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

879:lispp?
07/05/20 14:40:44
LISPを学習して1週間目の者ですが、

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

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



880:名無しさん@お腹いっぱい。
07/05/20 14:50:53
>>879
URLリンク(shakosv.sk.tsukuba.ac.jp)

881:名無しさん@お腹いっぱい。
07/05/20 17:00:06
>>879
condition-case

elisp.infoのControl Structuresを参照。
Lispではcatch/throwの例外処理とsignal/condition-caseのエラー処理は別物
である点に留意されたし。

882:名無しさん@お腹いっぱい。
07/05/20 17:12:06
xyzzy使っているのですが、 condition-caseで関数がないと表示されます。


883:名無しさん@お腹いっぱい。
07/05/20 17:17:31
板違い

884:名無しさん@お腹いっぱい。
07/05/28 20:48:43
EmacsでのLispのプログラムについての質問です。
リストAとして((a b c) (d e f) (g h i))というリストがあるとして、このリストの中の要素であるリストの
最後の要素を返す関数を作る場合どうしたらいいでしょうか?


885:名無しさん@お腹いっぱい。
07/05/28 21:33:40
>>884
各要素の cdr を見ていって、それが nil なものを返せばいいんじゃないの。
そういう話でない?

886:名無しさん@お腹いっぱい。
07/05/28 21:37:09
>>884
(car (last (car (last '((a b c) (d e f) (g h i))))))

887:名無しさん@お腹いっぱい。
07/05/28 21:47:12
884の補足ですが、
リストAを引数として(c f i)を返すような関数を定義したいのです。
また、リストAの要素がもっと多い場合にも対応できるようにしたいのです。

888:名無しさん@お腹いっぱい。
07/05/28 21:52:54
>>887
(mapcar (lambda (x) (car (last x))) A)

889:名無しさん@お腹いっぱい。
07/05/28 22:00:23
>>888
見たことないコマンドが多いのですが・・・。
初心者なのでもう少し分かりやすくしていただけるとありがたいのですが。

890:名無しさん@お腹いっぱい。
07/05/28 22:16:26
標準の関数くらい自分でしらべろよ。

891:名無しさん@お腹いっぱい。
07/05/28 22:17:51
そういった関数を使わないで定義したいんです。

892:名無しさん@お腹いっぱい。
07/05/28 23:42:03
lambda とか mapcar 使わないで lisp のプログラム書くのは
逆に難しいと思うぞ。

893:名無しさん@お腹いっぱい。
07/05/29 00:06:38
それは無理な話だ

894:名無しさん@お腹いっぱい。
07/05/29 00:08:04
ごめん
>>893>>891へね

895:名無しさん@お腹いっぱい。
07/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:名無しさん@お腹いっぱい。
07/05/29 00:16:23
>>895ありがとうございました
もう一つ聞きたいのは、数nとリストを引数として取り、
リストのn番目の要素を返す関数を定義したいのですが、
この関数を再帰を使って定義するにはどうしたらいいでしょう


897:名無しさん@お腹いっぱい。
07/05/29 00:24:12
(defun list-ref (lis n)
(if (zerop n)
(car lis)
(list-ref (cdr lis) (- n 1))))

898:名無しさん@お腹いっぱい。
07/05/29 00:43:50
んー?
URLリンク(questionbox.msn.co.jp)

899:名無しさん@お腹いっぱい。
07/05/29 00:46:01
最近なんでもかんでも聞く人多くない?


900:名無しさん@お腹いっぱい。
07/05/29 01:19:24
mapcar を独自に定義しようとするとどう書ける?

901:名無しさん@お腹いっぱい。
07/05/29 01:29:48
>>896
再帰使うまでもない。

(defun list-ref (lis n)
(nth (1- n) lis))

902:名無しさん@お腹いっぱい。
07/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:名無しさん@お腹いっぱい。
07/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:名無しさん@お腹いっぱい。
07/05/29 02:04:56
>>898 つうか、そゆのは大抵自分では考えないだろうし、調べないだろうし、向上心もないだろうし、礼儀も知らないだろうし、
人の忠告も聞かないだろうから。さっさと答を与えればそれ以上しつこく聞いてこない軽い荒らしだと思って対応するが吉。

905:名無しさん@お腹いっぱい。
07/05/29 02:05:17
cl は宗教上の理由でちょっと……。

906:名無しさん@お腹いっぱい。
07/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:名無しさん@お腹いっぱい。
07/05/29 02:11:39
defunの中でdefunするのはじめて見た。

908:名無しさん@お腹いっぱい。
07/05/29 02:11:55
あー、 reverse すんの忘れたorz

909:名無しさん@お腹いっぱい。
07/05/29 02:18:25
Schemer の方ですか? Emacs Lisp じゃー再帰は実用的じゃないお。
しかも defun は internal define と違ってグローバルだし…。

910:名無しさん@お腹いっぱい。
07/05/29 02:23:05
>>898の質問者はもうダメだろうね。レポートは突破できても試験は無理そうだ……。
授業二三回でればいいだろうになぁ。まったく聞いてなかったんだろうな。授業料無駄だったね。

911:名無しさん@お腹いっぱい。
07/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:名無しさん@お腹いっぱい。
07/05/29 07:07:10
>>905
改宗すればおk

913:名無しさん@お腹いっぱい。
07/05/29 10:07:37
cl 使えば flet で関数内関数使えるよ。

914:名無しさん@お腹いっぱい。
07/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:名無しさん@お腹いっぱい。
07/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:名無しさん@お腹いっぱい。
07/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:名無しさん@お腹いっぱい。
07/06/02 08:50:13
ずびまぜん。

elispで 16進数文字列を整数に変換する楽な方法ってありません?
(hoge "64") => 100
ってなるような。
(defun hoge (s)
(string-to-number (concat "#x" s)))
とかじゃ 0が返ってきてしまいました。


918:名無しさん@お腹いっぱい。
07/06/02 08:59:28
(defun hage (s)
(string-to-number s 16))

(hage "64")

100 ウマー

919:名無しさん@お腹いっぱい。
07/06/02 09:16:44
おお、そんなところに &optional があったとは...
infoをもっとちゃんと読むべきでした。
どうも有難うございました。


920:名無しさん@お腹いっぱい。
07/06/02 16:36:52
>>868-

921:名無しさん@お腹いっぱい。
07/06/02 21:22:45
知ってる人も多いだろうけど C-h f めちゃくちゃ便利だよ。
関数定義してるソースの該当部分にも飛べる。

922:名無しさん@お腹いっぱい。
07/06/03 00:27:47
emacs22でも、mode-infoも動いてくれるしね。


923:名無しさん@お腹いっぱい。
07/06/10 19:00:25
あるオブジェクトに対し、car-safeが非nilとなる時
cdrでなくcdr-safeを使うべき局面ってある?

924:名無しさん@お腹いっぱい。
07/06/10 23:36:38
>>923
car-safe が non-nil なら対象は list ってことだから、そんな局面はない、
と思う。


925:名無しさん@お腹いっぱい。
07/06/27 22:28:03
同じ名前の変数 (defvar hoge)と関数 (defun hoge ())が定義されているとき、
変数だけ定義を消すことってできますか?

(unintern 'hoge) だと、両方消えてしまうので。


926:名無しさん@お腹いっぱい。
07/06/27 22:36:59
makunbound
c.f.
fmakunbound

927:名無しさん@お腹いっぱい。
07/06/27 22:45:39
ぬりがとう。

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

思い出されるcreat()。


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

>思い出されるcreat()。
なるw

929:名無しさん@お腹いっぱい。
07/06/29 01:06:36
defconstしてるものには、時に大文字のシンボルを使ってみるのも一興かなと
ふと思った。
たぶんウザいだろうけど。

930:名無しさん@お腹いっぱい。
07/08/07 22:22:42
EmacsがXで動いているときだけ、
C-zでアイコン化しない様にしたいと思っています。
Xで動いているのかterminalで動いているのか判別するには
どうしたらよいのでしょうか。

931:名無しさん@お腹いっぱい。
07/08/07 22:29:27
window-system

932:930
07/08/07 22:33:57
>931
ありがとうございます。
とりあえず、
(if window-system (global-set-key "\C-z" 'shell))
としてみました。


933:名無しさん@お腹いっぱい。
07/08/21 05:23:38
M-x shell
を.emacsファイルの読み込み時に動作させるにはどうしたらよいのでしょうか。

934:名無しさん@お腹いっぱい。
07/08/21 10:02:38
本当に文字通りそうしたいのならば
(shell)
と書く。

935:名無しさん@お腹いっぱい。
07/08/21 12:13:59
>>934
できました。ありがとうございました。

936:名無しさん@お腹いっぱい。
07/08/26 17:18:02
(global-set-key [?\C-;] 'なにか)
とか
(global-set-key "\C;" 'なにか)
とやってもエラーがでて動きません。
;をjにしたら動いたので”なにか”が間違っていることはいないと思います。

C-;やC-, C-. へのバインドを指定するにはどうしたらよいのでしょうか
どなたか教えていただけないでしょうか?


937:名無しさん@お腹いっぱい。
07/08/26 19:00:19
[(control ?;)]

設定程度の質問なら、次回からelispスレじゃなくてemacsスレ行きな。

938:名無しさん@お腹いっぱい。
07/08/26 21:58:08
>>937
ありがとうございます
今後は気をつけます
どうもすいませんでした

そのようにしても動きはしませんでしたが、
それはターミナルからの接続の仕様らしいと分かったので、
別のキーを割りあてることにします

939:名無しさん@お腹いっぱい。
07/08/26 22:06:20
man ascii
で出てくるコントロールコード以外の
コントロールキーの組み合わせ以外は
端末じゃ動かないよ。

940:名無しさん@お腹いっぱい。
07/08/26 22:09:03
まちがえた。以外が一つ多かった。

941:名無しさん@お腹いっぱい。
07/08/28 01:55:47
(func "/usr/bin/emacs" "/")
=> ("usr" "bin" "emacs")

こんな感じで、文字列からトークンを抽出する好い奴を
何方か識りませぬか?

942:名無しさん@お腹いっぱい。
07/08/28 02:03:17
普通に1文字ずつチェックすれば良いじゃない。

943:名無しさん@お腹いっぱい。
07/08/28 03:14:56
split-string

944:名無しさん@お腹いっぱい。
07/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:名無しさん@お腹いっぱい。
07/10/27 01:27:05
下記のような独自スクリプトのメジャーモードを作っています。
function:
if hoge == 0 {
hogehoge;
}
elseif hoge ==1 {
if hoge2 == 0 {
hogehoge2;
}else{
hogehoge3;
}
}
end;
階層は上記のif文のみです。
自動インデントをつけたいのですがどうすればいいでしょうか?


946:945
07/10/28 08:47:43
補足です。generic-x.elを使って作っています。


947:名無しさん@お腹いっぱい。
07/10/30 10:08:00
buffer-local-variableなるものがあるそうですが、
.emacs.elなどでsetq-defaultで設定した値は、
新しいバッファを作る度にバッファごとの値のコピーが作られてしまうんでしょうか。

カスタマイズ性から見るとsetq-defaultの方が使い易そうなのですが、
パフォーマンスに悪影響がでないか心配なんです。

948:名無しさん@お腹いっぱい。
07/10/30 20:29:39
make-variable-buffer-local されてるような変数の話だよね。
これは setq とかで書き換えた時点で、その buffer に local な変数が作られるってシステム。
書き換えるまではどの buffer でも初期値を参照してて、 setq-default はこの初期値を書き換える。
それ自体がコピーの原因になったりはしないはず。

949:名無しさん@お腹いっぱい。
07/11/16 08:26:40
call-processとかの外部コマンド呼び出し関数で
コマンドの出力(標準出力)を文字列もしくは文字列リストで
返すようなものってないでしょかね?
いちいちバッファに出すのがとても無駄に感じる時がある

950:名無しさん@お腹いっぱい。
07/11/16 22:17:04
set-process-filter

951:名無しさん@お腹いっぱい。
07/11/29 10:04:56
みなさん、乙です。

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


(message "
listA,
listB,
listC")

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

listA,listB,listC

そんな方法ありますか?

952:名無しさん@お腹いっぱい。
07/11/29 11:08:37
>>951
(message (concat
"listA,"
"listB,"
"listC"))

953:名無しさん@お腹いっぱい。
07/11/29 12:39:04
>>951
(message "\
listA,\
listB,\
listC")


954:名無しさん@お腹いっぱい。
07/11/30 05:59:54
>>952, 953
サンクス。C と同じことできたのね。試せよオレ。



最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch