トップページunix
1001コメント315KB

Emacs Part 43

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2013/06/09(日) 14:05:32.09
語り合いましょう。

GNU Emacs - GNU Project - Free Software Foundation (FSF)
https://www.gnu.org/software/emacs/

EmacsWiki: サイトマップ
http://www.emacswiki.org/emacs/

Emacsのトラノマキ | 検索結果: | ありえるえりあ
http://dev.ariel-networks.com/wp/?s=Emacs%E3%81%AE%E3%83%88%E3%83%A9%E3%83%8E%E3%83%9E%E3%82%AD

前スレ
EmacsPart42
http://toro.2ch.net/test/read.cgi/unix/1356319580/
0508名無しさん@お腹いっぱい。2013/09/27(金) 19:33:07.95
g++ -vよりg++ --versionの方が一行目にバージョンが来るからいじりやすいと思う
0509名無しさん@お腹いっぱい。2013/09/27(金) 19:52:23.40
>>507
501のエセ薩摩人です。

499氏がコードを貼り付けなかったら
おいどんと付き合ってください。
0510名無しさん@お腹いっぱい。2013/09/27(金) 23:01:26.08
>>504
>>505が言っているようにcondを使えばよろし
そういう形で分岐したいならこうかな

(defmacro cond-case (value &rest body)
(lexical-let* ((cand (gensym))
(result (gensym)))
`(loop for (cand result) in (quote ,body)
do (when (and (symbolp cand)
(or (equal (symbol-value cand) ,value)
(equal (symbol-value cand) t)))
(return result)))))

(defun case-test2 (value)
(cond-case value
(debian-x86-64 "1")
(ubuntu-x86-64 "2")
(g++ver "3")
(t "4")))

(message (case-test2 debian-x86-64))
(message (case-test2 (shell-command-to-string "g++ -v")))
(message (case-test2 "sklfj"))
0511名無しさん@お腹いっぱい。2013/09/28(土) 07:24:23.71
>>509
47歳男子です。
ありがとうございます。今後ともどうぞよろしくお願い致します。
0512名無しさん@お腹いっぱい。2013/09/28(土) 11:46:59.29
>>510
マクロのパワーを見せつけられました。

中2女子の私がこのような達人級のコードを書けるようになるには、何をすればよろしいのでしょうか?
まず服を脱ぐのは無しの方向で、お願いします。
0513名無しさん@お腹いっぱい。2013/09/28(土) 12:18:52.46
まずスク水を着ます
0514名無しさん@お腹いっぱい。2013/09/28(土) 12:27:59.85
服は着たままスク水着るのか
05155042013/09/28(土) 13:39:46.00
ありがとうございます
emacs lisp勉強します
0516名無しさん@お腹いっぱい。2013/09/28(土) 15:22:38.81
512に emacs
のヘルプのここを見ろというレスは付かないのかな?
0517名無しさん@お腹いっぱい。2013/09/28(土) 15:38:34.81
>>512

Emacs というより、まずはこんなのかな。

http://www.aoky.net/articles/paul_graham/int.htm
0518名無しさん@お腹いっぱい。2013/09/28(土) 16:30:54.44
>>512

エセ薩摩人です。
>まず服を脱ぐのは無しの方向で、お願いします。
では、お口でお願いし ... (/ω\)イヤン

ところで本題だが EmacsLisp に限ったことではないが
プログラミングの上達のコツは
 a.自分が欲しい機能をリファレンスを読みながらでも作成してみる
 b.他人が書いたコードを読む(初めは少々短めがお勧め)
あたりかな。

>>516
http://www.emacswiki.org/emacs/EmacsLisp%E3%83%AA%E3%83%95%E3%82%A1%E3%83%AC%E3%83%B3%E3%82%B9
0519名無しさん@お腹いっぱい。2013/09/28(土) 19:28:33.77
Webカメラがクラックされると簡易的な地獄が顕現しそうなスレだ
05204992013/09/29(日) 01:20:21.88
(defun util-encode-region-utf8 ()
(interactive)
(save-excursion
(let ((beg (region-beginning))
(end (region-end)))
(end-of-line)
(insert "\nstatic const char data[] = {\n\t")
(mapc #'(lambda (x) (insert (format "0x%02x, " x)))
(encode-coding-region beg end 'utf-8 t))
(insert "0x00\n};"))))
0521名無しさん@お腹いっぱい。2013/09/29(日) 03:13:57.14
>>520
わーいありがとう!
姉も喜んでます
0522エセ薩摩人2013/09/29(日) 06:57:21.56
>>520
わーいありがとう!
おいどんのチン●も喜んでます
0523名無しさん@お腹いっぱい。2013/09/29(日) 09:34:03.32
エセ薩摩人さん、ついにコテハン化w
0524名無しさん@お腹いっぱい。2013/09/29(日) 09:57:01.09
>>522
簡潔に書き直せば、こんな感じになりそうだね。

(defun util-encode-region-utf8 (b e)
(interactive "r")
(save-excursion
(let ((s (concat (buffer-substring b e) "\0")))
(end-of-line)
(insert
"\nstatic const char data[] = {\n\t"
(mapconcat #'(lambda (x) (format "0x%02x" x))
(encode-coding-string s 'utf-8)
", ")
"\n};"))))
05255242013/09/29(日) 10:05:19.46
>>522 でなくて >>520 だったよw
>>520->>522 で笑って、手元が狂ってしまったよw
0526名無しさん@お腹いっぱい。2013/09/29(日) 10:43:12.76
>>520
おおきに
05275102013/09/29(日) 15:01:35.14
>>504
>>510はおかしいところがいくつかあったので修正するよ ついでにもうちょっと汎用的にしてみた
(require 'cl)
;; http://www.gigamonkeys.com/book/macros-defining-your-own.html
(defmacro with-gensyms (names &rest body)
`(let ,(loop for n in names collect `(,n (gensym)))
,@body))

(defmacro cond-case (value &rest body)
(with-gensyms (cand result x)
`(loop for (cand result) in (quote ,body)
when (symbolp cand) for x = (symbol-value cand)
else for x = cand
when (member x `(,value t))
return result)))

(defun case-test2 (value)
(cond-case value
(123 "aaa")
("hoge" "bbb")
(debian-x86-64 "1")
(ubuntu-x86-64 "2")
(g++ver "3")
(t "4")))

(message (case-test2 123))
(message (case-test2 "hoge"))
(message (case-test2 debian-x86-64))
(message (case-test2 (shell-command-to-string "g++ -v")))
(message (case-test2 "sklfj"))

>>512 defmacroはon lispが、loopマクロはland of lispがわかりやすいよ emacs lispレファレンスだけだど慣れるまで時間がかかるかも
0528名無しさん@お腹いっぱい。2013/09/29(日) 18:32:16.02
loop の中身がLISPに見えない件w
0529名無しさん@お腹いっぱい。2013/09/30(月) 02:22:05.16
>>528
Boost Spirit も似ている気がする。
言語仕様を上手く使って別言語の世界を作り出している。

Loop言語はマスターするとElispが非常に短くかけるし、
マクロなんでバイトコンパイルすれば速度処理もない。
0530名無しさん@お腹いっぱい。2013/09/30(月) 07:14:53.59
Spiritはコンパイルするのがイヤになる
0531名無しさん@お腹いっぱい。2013/09/30(月) 08:05:41.61
>>529
>Loop言語は

!!!
loop はDSLだと思えばよかったのですね。その発想はなかったです。
0532名無しさん@お腹いっぱい。2013/09/30(月) 12:48:36.98
loop 好きだけどアンチも多いらしい
0533名無しさん@お腹いっぱい。2013/09/30(月) 15:11:53.81
デバッグが必要になった場合の手間考えると、展開結果が複雑になるようなマ
クロは使わない方が得策だと思う。
0534名無しさん@お腹いっぱい。2013/09/30(月) 15:30:40.24
そのマクロが正しく動くことが保証されてたら大丈夫じゃない?
0535名無しさん@お腹いっぱい。2013/09/30(月) 16:21:25.84
Emacs でマクロ否定って Emacs を否定してるようなもんじゃん。
Editor MACroS なめんなよ。
0536名無しさん@お腹いっぱい。2013/09/30(月) 17:01:41.30
elispのloopマクロで面白いものがあれば知りたい
0537名無しさん@お腹いっぱい。2013/09/30(月) 17:06:46.61
>>535
マクロ違い
0538名無しさん@お腹いっぱい。2013/10/01(火) 08:43:04.22
これの6章にediting macrosについて書いてある
http://haleakala-avenue.style.coocan.jp/lealea/
0539名無しさん@お腹いっぱい。2013/10/01(火) 08:47:34.26
>>536
Common lispのloopマクロをelispで動くようにしたものなんだよね
Land of Lisp 10章のLoopマクロ周期表がおすすめ
0540名無しさん@お腹いっぱい。2013/10/01(火) 09:52:35.10
ANSI Common Lisp によるとだな
規格でも loop は定義しきれてないってさ
実際 sbcl で動く loop が clisp でコケたりする
0541名無しさん@お腹いっぱい。2013/10/01(火) 14:32:07.83
http://orgmode.org/worg/exporters/ox-overview.html
ここにあるox-texinfoを使って.org->.texiに、
さらにtexi2htmlで.texi->.htmlに変換したら
元の.orgで#+authorで設定していたその設定が失われてしまうようで
This document was generated by *PC-name\user-name* on October 1, 2013 using texi2html 1.82
となってしまいます
.org->.htmlであれば問題なくauthor情報が引き継がれているのですが、どうすれば引き継げるのでしょうか

orgファイルはこう書いています
#+TITLE: Org-mode test
#+AUTHOR: test-name

* hello

- world
0542名無しさん@お腹いっぱい。2013/10/01(火) 17:04:44.91
>>541
> This document was generated by *PC-name\user-name* on October 1, 2013 using texi2html 1.82

それで正しいのだと思うが
0543名無しさん@お腹いっぱい。2013/10/01(火) 17:32:22.04
>>538
こんなのがあったとは。
RMS信者の私はただいま絶賛感動中です。
0544名無しさん@お腹いっぱい。2013/10/01(火) 22:48:31.45
>>504
なんだかすごいことになっているような気もするが
君がやりたいことへの最短距離は cond を使うことだと思うぞ
0545名無しさん@お腹いっぱい。2013/10/02(水) 00:38:41.21
サルでも完全理解loopマクロ講座を誰か書いてくれ
0546名無しさん@お腹いっぱい。2013/10/02(水) 07:08:14.10
case に関連して、

ttp://wisdom.sakura.ne.jp/programming/lisp/clisp11.html

ここの最後、

「記号を直接指定すると、記号が評価されてしまうということに注意しなけれ
ばなりません。そのため、リストに記号を指定するか、quote や ' によって明
示的に記号型の値そのものを与えなければならないのです。」

って本当ですか?誰か common lisp に詳しい人教えて。
0547名無しさん@お腹いっぱい。2013/10/02(水) 08:22:39.45
記号tやnilは直接指定すると
tはotherwiseにnilは空リストに解釈されてしまうから、
tやnilと直接比較したい場合には
クォートするかリストにいれる必要があるよって意味じゃないの?
tやnilじゃなければシンボルは評価されないと思うけどね
0548名無しさん@お腹いっぱい。2013/10/02(水) 09:28:13.09
>>545
Common Lisp loop でぐぐればいろいろある
0549名無しさん@お腹いっぱい。2013/10/02(水) 12:47:25.54
まったく、いつになったらEmacsは縦書に対応してくれるのか!
Emacs18 の頃から待ってるのに。ぷんぷん!
0550名無しさん@お腹いっぱい。2013/10/02(水) 13:14:23.42
縦書きelispってあったような。
0551名無しさん@お腹いっぱい。2013/10/02(水) 13:19:49.61
>>549
必要なら自分で作るんだ。
Mule拡張もそうだった。
0552名無しさん@お腹いっぱい。2013/10/02(水) 13:22:44.27
縦書って書いたり閲覧したりするときだけ縦で
テキストデータ自体は他と変わらないみたいな感じがいいのかね
0553名無しさん@お腹いっぱい。2013/10/02(水) 15:43:25.51
縦表示ってことだろうね。
0554名無しさん@お腹いっぱい。2013/10/02(水) 21:04:50.16
>>542
そうですか スレ汚し失礼しました
0555名無しさん@お腹いっぱい。2013/10/02(水) 21:22:21.87
save時の処理が重くなっているようなのですが、
関連するhookを確認するにはどこを見ればよいのでしょう?
0556名無しさん@お腹いっぱい。2013/10/02(水) 21:30:44.58
caseはちょっとわかりにくいよね
わからないうちはちょっと冗長だけどつねにcondを使っておけばいい
elispじゃcondがネィティブでcaseはcommon lisp互換マクロだし
0557名無しさん@お腹いっぱい。2013/10/02(水) 21:43:06.70
>>555
参考になるかわからんけどこのへんかね?
http://www.gnu.org/software/emacs/manual/html_node/elisp/Saving-Buffers.html
0558名無しさん@お腹いっぱい。2013/10/02(水) 22:01:11.53
リアルな話になってしまうが正直コモリプは糞だと思っている。
0559名無しさん@お腹いっぱい。2013/10/02(水) 23:01:05.52
ローカル関数すら無いどっかの超絶糞言語に比べればはるかにマシ
0560名無しさん@お腹いっぱい。2013/10/02(水) 23:23:58.73
>>559
チューリングマシンの悪口はやめて下さい。
0561名無しさん@お腹いっぱい。2013/10/03(木) 06:13:05.57
>コモリプ
ないわ
ないないない
0562名無しさん@お腹いっぱい。2013/10/03(木) 08:18:31.51
(load-theme 'wombat t)
と設定しているのですが,lookupの中だけテーマを変えるには
どうしたらよいでしょうか。
外字が黒文字なので見難くなってしまいます
0563名無しさん@お腹いっぱい。2013/10/03(木) 08:21:08.56
lookupって?
0564名無しさん@お腹いっぱい。2013/10/03(木) 09:06:40.73
load-theme使ってないからよくわからんが、enable-themeとかで切り替えはできるみたいだけど、
バッファ毎に変更なんてできるのかね?

theme切り替えるんじゃなくて、
lookupの外字のfaceをthemeに合わせてカスタマイズとかじゃダメなん?
0565名無しさん@お腹いっぱい。2013/10/03(木) 10:05:26.66
背景色をバッファ毎に変えるスマートなしくみは現状ないから無理だと思うよ。
フレーム単位なら素直にできるけど。
hiwin ってパッケージあるけどあれはオーバーレイ使って無理やり変更してる。
0566名無しさん@お腹いっぱい。2013/10/03(木) 11:08:31.34
こもりぷてcommonlispのことか
しばらく考えてしまったぞ
0567名無しさん@お腹いっぱい。2013/10/03(木) 14:54:55.50
org-mode のラジオターゲットってあまり使われてないんだな
リンクに飛ばないという致命的なバグにも関わらず
検索しても、日本語界隈だと全然ヒットしない

ttp://lists.gnu.org/archive/html/emacs-orgmode/2013-10/msg00105.html

要は、org.el の該当箇所に、「link」つー変数を and の直後に付け加えると直る
0568名無しさん@お腹いっぱい。2013/10/03(木) 15:06:25.14
org-modeは肥大化しすぎて、もはやEmacsでやることに無理がある気がする。
このさいOmacsとして独立してほしい。
0569名無しさん@お腹いっぱい。2013/10/03(木) 15:30:50.00
>>568
それいいかも
俺が emacs 使い始めた動機も org-mode だったわけで
実際今は org 除くと emacs あんまり使ってない

かつてはカスタマイズに凝った時期もあったが
やってるうちに手段と目的が逆転して、気づくととんでもなく
時間が経過してたり、ってのがバカバカしくなった
0570名無しさん@お腹いっぱい。2013/10/03(木) 18:10:51.81
Emacs24.2〜3辺りの comment-indent ってバグってない?
comment-colum を設定しても、コメント位置がずれるンゴ
リポジトリの先端でも直ってないっぽいし。

手前味噌で直したからいいけど。
0571名無しさん@お腹いっぱい。2013/10/03(木) 18:11:39.65
× comment-colum
○ comment-column
0572名無しさん@お腹いっぱい。2013/10/03(木) 18:20:28.78
M-x compile を呼ぶとき常に C-u をつけて呼びたいんだけど
いい方法ないかな
0573名無しさん@お腹いっぱい。2013/10/03(木) 18:23:20.29
(compile 4)
0574名無しさん@お腹いっぱい。2013/10/03(木) 18:46:42.96
>>573 ありがとう
でも普通 M-x compile するとミニバッファに compile-command がでてリターンすると実行という流れなんだけど

(compile compile-command 4)

をキーバインドしてしまうと compile-command を
ミニバッファで編集するチャンスがなく実行されてしまうのでどうかなと思ってるんだけども
0575名無しさん@お腹いっぱい。2013/10/03(木) 19:32:43.53
これかな http://stackoverflow.com/a/6156444
コメントも参照
0576名無しさん@お腹いっぱい。2013/10/03(木) 22:33:03.85
>>575 ありがとう!

(defun compile-with-prefix ()
(interactive)
(let ((current-prefix-arg '(4)))
(call-interactively 'compile)))

とりあえずこれをキーバインドすることにしました。
0577名無しさん@お腹いっぱい。2013/10/03(木) 23:46:07.11
独り相撲になってしまったけど

(global-set-key (kbd "s-x") '(lambda () (interactive) (execute-extended-command '(4))))

これでもいいかも C-u M-x を汎用的に使えるし
0578名無しさん@お腹いっぱい。2013/10/04(金) 08:51:53.07
>>536
4重ループで幅優先探索で迷路を解く例。

http://d.hatena.ne.jp/m2ym/20100115/1263550258

Loopなしで同じことをしようとするとどれくらい
面倒なことになるか…
05795362013/10/04(金) 12:09:11.61
>>578
これはすごいですね
勉強してみます
0580名無しさん@お腹いっぱい。2013/10/04(金) 20:32:38.06
とりあえずEmacs界にはEmacs Lispをelispと呼ぶのはやめてほしい。
これはEmacs Lisp以外を「よくないLisp」と言ってるも同然で失礼。
だから生粋のLisperに嫌われるんだ。
0581名無しさん@お腹いっぱい。2013/10/04(金) 20:48:30.22
滑ってますよ
0582名無しさん@お腹いっぱい。2013/10/04(金) 20:49:03.84
どうやって読み取れば
elisp
を「良くないLisp」と読み取れるんだ?
0583名無しさん@お腹いっぱい。2013/10/04(金) 20:51:03.71
その昔「(E)」で「カッコイー」と読ませるテレビがあった。
0584名無しさん@お腹いっぱい。2013/10/04(金) 20:51:40.19
>>582
elisp → いーLisp
それ以外の lisp → いーLisp じゃない → よくない Lisp
ってことかと・・・
0585名無しさん@お腹いっぱい。2013/10/04(金) 21:23:34.94
すべったネタに解説で追い討ちしてやるなよ。
0586名無しさん@お腹いっぱい。2013/10/04(金) 21:35:47.66
これがほんとの滑り止めか。
0587名無しさん@お腹いっぱい。2013/10/04(金) 21:52:21.23
>>584
なるほど

elispの皆さんって面白くてステキ
0588名無しさん@お腹いっぱい。2013/10/04(金) 21:53:02.75
面白くはないな。
0589名無しさん@お腹いっぱい。2013/10/04(金) 21:59:04.81
ステキでもないな
0590名無しさん@お腹いっぱい。2013/10/04(金) 22:30:21.79
emacsでのゲームイイ!
昔、vzにあったsameshotというのがおもしろかったのを思い出した。
0591名無しさん@お腹いっぱい。2013/10/04(金) 23:42:36.99
>>590
M-x gomoku
0592名無しさん@お腹いっぱい。2013/10/05(土) 06:57:30.92
誰かtrek移植して
0593名無しさん@お腹いっぱい。2013/10/05(土) 10:09:44.56
>>590
M-x pong
0594名無しさん@お腹いっぱい。2013/10/05(土) 10:10:24.03
>>590
M-x tetris
0595名無しさん@お腹いっぱい。2013/10/05(土) 14:55:30.19
>>590
M-x hanoi
ってか、さめショット懐かしい
0596名無しさん@お腹いっぱい。2013/10/05(土) 15:16:18.19
sameshotググっても見つからないんだけど
どういうゲームなのそれは
0597名無しさん@お腹いっぱい。2013/10/05(土) 15:25:18.76
samegame じゃないかな
0598名無しさん@お腹いっぱい。2013/10/05(土) 22:48:41.76
sameshot.defってぐぐっても確かに出てこないな。niftyのライブラリにあるはずだけど。
0599名無しさん@お腹いっぱい。2013/10/06(日) 16:49:15.16
M-x bubbles って samegame なの?
0600名無しさん@お腹いっぱい。2013/10/07(月) 01:10:22.94
実家においてあるPCにvzをインストールしてあるので、その中から見つけてdef
アップするよ。ちょっと待ってください。
0601名無しさん@お腹いっぱい。2013/10/07(月) 01:44:56.06
vz 懐かしい
mifes、emacs と共に俺の人生を時間的に食い荒らした悪魔だ
そういや red++ さんはもう亡くなったのかな
0602名無しさん@お腹いっぱい。2013/10/07(月) 18:45:54.88
macのdashみたいなドキュメントのダウンロードと検索ができるelispってない?emacsのbufferでdashの内容を読めるelispでもいいけど。

http://kapeli.com/dash
0603名無しさん@お腹いっぱい。2013/10/07(月) 18:51:57.29
>>600
いつまで待てばいいの
0604名無しさん@お腹いっぱい。2013/10/07(月) 19:06:51.89
>>602
emacs dash で検索するといくつかひっかかったよ
Mac つかったことないから内容は精査してない
0605名無しさん@お腹いっぱい。2013/10/07(月) 22:13:45.83
>>602
こんなのがあったとは。
買ってしまうかも…
0606名無しさん@お腹いっぱい。2013/10/07(月) 22:25:04.80
カーソル位置のワードを引数にDash.appを呼び出すのはすでにあるが、
602が言っているのは直接Dashのドキュメント群ををEmacsのバッファで読むというやつかね?
w3mとsqliteを組み合わせて実現するのかな?
0607名無しさん@お腹いっぱい。2013/10/07(月) 22:50:47.99
>>606
>602が言っているのは直接Dashのドキュメント群ををEmacsのバッファで読むというやつかね?
macのフルスクリーンモードでemacsを使ってるから、dashのウィンドウにフォーカスが移るとめんどくさい。それが解消されればdashを買ってもいいんだけど
■ このスレッドは過去ログ倉庫に格納されています