トップページunix
994コメント303KB

Emacs Part 47 [転載禁止]©5ch.net

■ このスレッドは過去ログ倉庫に格納されています
0001名無しさん@お腹いっぱい。2014/12/20(土) 16:17:19.14
語り合いましょう。

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

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

前スレ
Emacs Part 46
http://peace.2ch.net/test/read.cgi/unix/1403458934/
0643名無しさん@お腹いっぱい。2015/03/06(金) 15:59:07.11
>>641
Lispを語ってない
ゲームでの実例を述べただけだ
0644名無しさん@お腹いっぱい。2015/03/06(金) 15:59:23.05
>>639
変換自体そもそも不要だろそれ
0645名無しさん@お腹いっぱい。2015/03/06(金) 16:00:34.28
>>642
それぞれの心の中に。わりとマジで。
0646名無しさん@お腹いっぱい。2015/03/06(金) 16:02:15.71
俺々Lisp実装してみましたっていいたいだけちゃうん
0647名無しさん@お腹いっぱい。2015/03/06(金) 16:04:12.22
命令列挙して if で分岐するだけでも本人が lisp だって言いはればそれも lisp だよ
0648名無しさん@お腹いっぱい。2015/03/06(金) 16:55:49.14
バカが口論してるとイミフすぎて
外野席から煽る楽しみすらないっていう
0649名無しさん@お腹いっぱい。2015/03/06(金) 17:00:55.66
質問です。
eval-when-compile の使いどころはわかったのですが、(事前計算による置き換えとかコンパイル後にコードを消し去るとか)
eval-and-compile はどういうシチュエーションで使えばいいんでしょうか?
0650名無しさん@お腹いっぱい。2015/03/06(金) 17:24:34.24
ほんで結論は?
0651名無しさん@お腹いっぱい。2015/03/06(金) 17:29:54.79
結論: ここは似非Lisperしかいない
0652名無しさん@お腹いっぱい。2015/03/06(金) 18:18:59.83
64 の頃まんま lisp っぽいデータがあった気がする。
今作ってるのは cond っぽい分岐持ってる。中身は全然 lisp じゃないけど。
0653名無しさん@お腹いっぱい。2015/03/06(金) 20:30:27.41
横から口挟むけど
おれもゲームでスクリプト実装する必要がうまれて
オレオレ言語かいてたら、あれこれLISPじゃね?ってなって
LISPの真似したら、めちゃめちゃ強力なスクリプトが短時間で実装できたことあるよ

だから「うんうん」とかおもって聞いてたけど
なんでこんな叩かれてんの
0654名無しさん@お腹いっぱい。2015/03/06(金) 20:59:58.87
代わりに君がまともに説明してはどうだろう?
先の人はダメすぎた
0655名無しさん@お腹いっぱい。2015/03/06(金) 21:00:55.94
>>649
defvar とか defun とかの自分で定義したものを eval-when-compile の中で参照したい場合、
eval-and-compile で括ってやる必要があったと思う。
普通に定義文かいただけじゃコンパイル時に評価はされないので。

(defconst value-a (format "*%d*" (expt 9 9)))
(defconst value-b (format "[%s]" value-a))

これの値部分をコンパイル時に計算しようとして eval-when-compile で囲んでも
value-a が void だって怒られるので

(eval-and-compile
(defconst value-a (eval-when-compile (format "*%d*" (expt 9 9)))))
(defconst value-b (eval-when-compile (format "[%s]" value-a)))

ってやって、コンパイル時にも value-a が定義されるようにしないといけない。
0656名無しさん@お腹いっぱい。2015/03/06(金) 21:10:01.11
githubからeval-and-compileで検索すると結構ひっかかるな
おんなじファイルとかどっかからコピーしたようなコードが多いから重複多数だが
https://github.com/search?utf8=%E2%9C%93&;q=eval-and-compile+language%3A%22Emacs+Lisp%22&type=Code&ref=searchresults
0657名無しさん@お腹いっぱい。2015/03/07(土) 01:12:29.83
>>653
lispは実装が簡単な上に強力だからプログラマには好まれる

その反面、ゲームスクリプトと言われてぱっと思い浮かぶような言語ではないと思うが
>>569みたいな例だったらLuaみたいなのを思い浮かべる人の方が多いのではないかと
0658名無しさん@お腹いっぱい。2015/03/07(土) 02:08:05.89
パーサが極小レベルのフットプリントで済むうえ
s式は構文木だから構文木に落とせるプログラムは必ず書ける

というわけで組み込み言語にlispを選ぶなんて
ウンコ漏れるくらいの常識

てかおまえらのいるスレは何スレだっつーんだよ
ばかばっかでウンコ漏れるっつーの
0659名無しさん@お腹いっぱい。2015/03/07(土) 05:21:24.10
どこの常識だよ。
例挙げてから常識を語れよ。
0660名無しさん@お腹いっぱい。2015/03/07(土) 05:45:14.09
どこの常識っていうか
普通に考えてLISPがミニマムな言語ってだけで
そうなるのは自然な流れだと思うんだけど
0661名無しさん@お腹いっぱい。2015/03/07(土) 05:48:01.56
だから具体的な例を挙げろって。
自然な流れならそこら中に沢山プロダクト転がってんだろ?
0662名無しさん@お腹いっぱい。2015/03/07(土) 06:02:24.84
http://emacs-users.jp
このドメイン取ったバカはさっさと更新しろや
0663名無しさん@お腹いっぱい。2015/03/07(土) 06:26:28.23
FFとかバンディクーがそうだってさっき出てたとおもうけど
とりあえず鼻息荒くするの止めようよ
0664名無しさん@お腹いっぱい。2015/03/07(土) 06:27:57.86
たったそれだけで常識にしちゃうのか。
0665名無しさん@お腹いっぱい。2015/03/07(土) 06:35:25.92
うん
0666名無しさん@お腹いっぱい。2015/03/07(土) 08:58:28.13
(move (if (search B) C D))
0667名無しさん@お腹いっぱい。2015/03/07(土) 12:31:14.55
>>655
ありがとうございました。
0668名無しさん@お腹いっぱい。2015/03/07(土) 13:57:00.77
最近 Emacs 立ち上げるのは init.el を点検するときだけになっちゃった
非プログラマになっちゃったから仕方ない気もするんだけど

非プログラミング用途で Emacs 使ってる人ってここにどんだけいるんだろう?
開発用途には一ミリも使ってないって人は流石にいないんだろうか
0669名無しさん@お腹いっぱい。2015/03/07(土) 14:14:52.15
latex書いたりgnuplot-modeの為ってのはプログラミングに入りますか?
0670名無しさん@お腹いっぱい。2015/03/07(土) 14:17:27.90
理系の論文書きだとプログラム一歩手前な感じもするよね。
必要であればコードも書くだろうし。
0671名無しさん@お腹いっぱい。2015/03/07(土) 14:17:57.06
>>668

w3m-emacs, eshell, multiterm(zsh), remember_org, scrach_buffer
0672名無しさん@お腹いっぱい。2015/03/07(土) 14:18:05.02
多言語使えるってことから翻訳に使ってる人とかいそう
0673名無しさん@お腹いっぱい。2015/03/07(土) 14:30:26.73
>>668
init.el を点検するときだけ Emacs を立ち上げる…?
じゃあ init.el は何のために点検してるの?
0674名無しさん@お腹いっぱい。2015/03/07(土) 14:40:32.95
ワロタw
0675名無しさん@お腹いっぱい。2015/03/07(土) 14:42:41.47
>>668
Emacsって書き物に便利だから、著述業のユーザもわりといる気がする
ワープロよりもテキストエディタで原稿を書いた方が圧倒的にはやいしね。
0676名無しさん@お腹いっぱい。2015/03/07(土) 15:00:34.07
>>673
設定みてホクホクするためですよ
0677名無しさん@お腹いっぱい。2015/03/07(土) 18:29:41.44
設定見てホクホクといえば今日は Lingr で init.el 読書会ですよ
22時からやってるんで良かったら見に来てね

http://lingr.com/room/emacs/
0678名無しさん@お腹いっぱい。2015/03/07(土) 19:59:09.65
ほう
なかなか良いことをやってるな
0679名無しさん@お腹いっぱい。2015/03/08(日) 00:05:04.12
読書会やってなかったじゃん
ワイルドで刺激的なHack! とかの画像がはられてたけど
0680名無しさん@お腹いっぱい。2015/03/08(日) 12:45:51.13
http://i.imgur.com/PZpDfj7.jpg
0681名無しさん@お腹いっぱい。2015/03/09(月) 02:35:06.63
なにこの流れ楽しい
navi2chで書くのも最後だから盛り上がってんのか
0682名無しさん@お腹いっぱい。2015/03/09(月) 10:40:51.74
今日の二時だっけ
eww に被せるガワでもつくるしかないのか
0683名無しさん@お腹いっぱい。2015/03/09(月) 10:43:41.43
>>682
二時に何があるの?
0684名無しさん@お腹いっぱい。2015/03/09(月) 10:54:43.85
>>683
今日の2時でdat取れなくなるようになるって噂だよ
0685名無しさん@お腹いっぱい。2015/03/09(月) 10:56:10.59
>>684
ソースある?
0686名無しさん@お腹いっぱい。2015/03/09(月) 11:15:37.00
>>685
競馬板の名無しのソースがある
0687名無しさん@お腹いっぱい。2015/03/09(月) 11:49:11.72
>>686
それはソースではなくて、ただの噂。
0688名無しさん@お腹いっぱい。2015/03/09(月) 11:57:19.89
チラシの裏。

Cygwin の Emacsで find-names-dired でファイルが開けなくなっていた。
ぐぐって directory-listing-before-filename-regexp という変数を知る。

Dired claims that no file is on this line - GNU Emacs FAQ
http://www.gnu.org/software/emacs/manual/html_node/efaq/Dired-claims-that-no-file-is-on-this-line.html
673文字もの長さにビビって放置。そんな長い正規表現、人間に読めるかよ。

今日、re-builderの存在を思い出して、正規表現をあちこち1文字改変したり
して試行錯誤すると30分ぐらいで修正できた。こりゃ便利だな。
0689名無しさん@お腹いっぱい。2015/03/09(月) 12:39:22.60
未だにそんなデグレ起きてんのかよ
emacsェ…
0690名無しさん@お腹いっぱい。2015/03/09(月) 12:53:47.17
(setq dired-listing-switches (concat "--time-style=long-iso " dired-listing-switches))
で解決する話だったりしない?それ。
0691名無しさん@お腹いっぱい。2015/03/09(月) 14:11:47.54
まだいけるじゃねえか
0692名無しさん@お腹いっぱい。2015/03/09(月) 14:59:06.61
gnupack 11.00 で、
GNU Emacs 24.2.1 (i386-mingw-nt6.2.9200) of 2012-12-08 on GNUPACK
を使ってるんだけど、helm-swoop を実行しようとすると、
> helm-swoop--keep-nearest-position: Symbol's value as variable is void: --cl---cl-var--51405--
って、エラーがミニバッファに表示されて helm-swoop が使えない。

ただ、カーソルが日本語の部分とかにあると、なぜか helm-swoop が起動する。

なんか情報無いっすか?
0693名無しさん@お腹いっぱい。2015/03/09(月) 15:02:50.63
>>682>>684>>686
今後は話の出所をちゃんと確認しろよ
0694名無しさん@お腹いっぱい。2015/03/09(月) 16:04:05.38
>>686
競馬板のどのスレ?
0695名無しさん@お腹いっぱい。2015/03/09(月) 16:13:53.18
>>694
▼とるに足らないニュースの為のスレッド653▼ [転載禁止]©2ch.net
http://yomogi.2ch.net/test/read.cgi/keiba/1425351674/672
672 名無しさん@実況で競馬板アウト sage 2015/03/08(日) 13:12:38.41 ID:YE6gLG3X0
API非対応の2chブラウザ
明日の14時に使えなくなる模様
0696名無しさん@お腹いっぱい。2015/03/09(月) 16:17:29.47
うわー
使えない

あっはい
0697名無しさん@お腹いっぱい。2015/03/09(月) 16:20:58.44
>>695
なんでこんなの信じるんだろ・・・
0698名無しさん@お腹いっぱい。2015/03/09(月) 16:21:27.14
>>692
> なんか情報無いっすか?

http://rubikitch.com/2014/12/25/helm-swoop/
rubikitch@ruby-lang.org にメールしろってよ
0699名無しさん@お腹いっぱい。2015/03/09(月) 16:25:59.66
裏情報入手してないのか?
俺ソースだと3/13が切り替え日だ
0700名無しさん@お腹いっぱい。2015/03/09(月) 16:31:13.43
>>699
どこソースか出さなきゃ信用してもらえないよ
0701名無しさん@お腹いっぱい。2015/03/09(月) 16:36:08.72
俺ソースだとdat廃止はポシャったそうだ
0702名無しさん@お腹いっぱい。2015/03/09(月) 16:41:56.59
俺しょうゆ
0703名無しさん@お腹いっぱい。2015/03/09(月) 20:44:58.05
僕のスキルでは無理ですが、

1. EmacsをRuby or mrubyで実装しなおす(Rmax??)
2. rmaxコマンドで~/rmax.d/ 以下のディレクトリ階層と設定ファイルの雛形を自動生成
3. Rubyで設定・拡張できるようにする
4. ビルドツールにはRakeを使う

みたいなことができるとEmacsが一気に今風な感じになって面白いのになぁと思うんですけど… まあ、僕のスキルでは無理なんですけど…
0704名無しさん@お腹いっぱい。2015/03/09(月) 21:06:57.02
emacsをrubyで実装し直すってぶん殴りたくなる遅さかもしれない
何を実装するのか知らんけど
0705名無しさん@お腹いっぱい。2015/03/09(月) 21:16:07.04
そういや測定したこと無いんだけど emacs lisp 自体の速度って速いんだろうか
0706名無しさん@お腹いっぱい。2015/03/09(月) 21:29:40.65
>>689
まあCygwin版だから。バグは多いけれどバージョンアップは早い。
GNU Emacs 24.4.1 (x86_64-unknown-cygwin) of 2015-02-13 on desktop-new

>>690
それだと解決しなかった。残念。
こちらの現象は、1-9月だと月名と日の間に半角スペースが3個入ってしまうのが
原因で、正規表現の途中に " ?" を入れたら動くようになった。

しかしNavi2chが使えなくなったら、こんな気軽に書き込みはできなくなるなあ。
0707名無しさん@お腹いっぱい。2015/03/09(月) 21:38:22.70
>>706
ああ、ごめん。
標準だと find-ls-option の方見に行っちゃうからそっちの方に --time-sytle=long-iso を入れないとダメだわ。

自分ところはこんなふうにしてた。
find の -ls だと日付のフォーマット違いで開けないことがあったから直接 ls 呼ぶようにしたんだった。

(setq find-ls-option (cons (format "-exec ls %sd --time-style=long-iso {} +"
dired-listing-switches)
(format "%sd" dired-listing-switches)))
0708名無しさん@お腹いっぱい。2015/03/09(月) 23:20:32.94
(setenv "LC_TIME" "C") とか?
0709名無しさん@お腹いっぱい。2015/03/10(火) 14:09:42.47
指定したバッファでのみ permanent-local になるバッファローカル変数を作る方法はありませんかね?
普通に make-local-variable とかでバッファローカル変数を作ってもメジャーモード変更とかで
kill-all-local-variables が走ると消えちゃうし、
permanent-local フラグを立てちゃうとこんどは逆にどのバッファでも消えなくなってしまうし。
0710名無しさん@お腹いっぱい。2015/03/10(火) 16:00:24.68
>>575
if の使い方を見ると、大抵その人が Lisp に浸っているかどうかが分かる。
手続型言語から見ると if は「制御文」であり、処理の流れを切り替えるために 使う。たとえばこんな風。

(if need-hogehoge
(setq foo "hogehoge")
(setq foo "fugafuga"))

ああ、もったいない。if もやっぱり関数(厳密にはスペシャルフォーム)なのだ。
ifは第一引数の値 に応じて第二引数を返すか、第三引数以後の最後のものを返すかするという関数 である。

(setq foo (if need-hogehog "hogehoge" "fugafuga"))
これで、ifが返してくれる値を捨てることなくsetqに拾わせることができる。
とにかくLispは値が命。無駄に値を捨てない。もったいないお化けを出さない。
0711名無しさん@お腹いっぱい。2015/03/10(火) 22:19:24.83
何か面白いパッケージ無いかなあ
設定し尽くして飽きてきた
0712名無しさん@お腹いっぱい。2015/03/10(火) 22:36:26.86
>>710
cの三項演算子でそれよく使う。
0713名無しさん@お腹いっぱい。2015/03/10(火) 22:48:49.28
三項演算子は分かりづらくなるケースがあるからなんとも
人に説明するときは手続き型言語方式の方が分かりやすいし
0714名無しさん@お腹いっぱい。2015/03/10(火) 23:10:49.73
その発想が既にlisp的でないんだよなぁ
0715名無しさん@お腹いっぱい。2015/03/10(火) 23:12:09.39
暗黙の了解をぶち破らないと見えない世界がある
0716名無しさん@お腹いっぱい。2015/03/10(火) 23:13:24.93
モードラインに最大行数を常に表示したいんだけどどうやったらいいんだろう
0717名無しさん@お腹いっぱい。2015/03/10(火) 23:39:32.46
>>707-708
ありがとう。とりあえず今は動いているからいいわ。
また動かなくなったらその時考える。
ただ、LC_TIME=C はちょっと表示が寂しいかも。
0718名無しさん@お腹いっぱい。2015/03/11(水) 05:08:57.54
>716
(column-number-mode t)
で現在位置と最大行数が(100/200)みたいな感じで表示されたよん
0719名無しさん@お腹いっぱい。2015/03/11(水) 12:38:06.68
>>718
column-number-mode は桁数の表示
line-number-mode と両方有効な時は (100,0) という風に (行数,桁数) が表示されるけど
総行数の表示機能は無かったはず
0720名無しさん@お腹いっぱい。2015/03/11(水) 12:38:48.16
>>716
;; `line-number-mode' と `colmun-number-mode' のモード行書式設定(変数
;; `mode-line-position' の第三要素)を、総行数を共に表示する書式に置き
;; 換える。
(rplaca (cddr mode-line-position)
'(line-number-mode
((column-number-mode
;; `line-number-mode' と `column-number-mode' 両方有効な場合:
;; " (現在行数/総行数,現在桁数)"
(:eval (format " (%%l/%d,%%c)" (1+ (count-lines (point-min) (point-max)))))
;; `line-number-mode' のみ有効な場合: " L現在行数/総行数"
(:eval (format " L%%l/%d" (1+ (count-lines (point-min) (point-max)))))))
;; `column-number-mode' のみ有効な場合: " C現在桁数"
((column-number-mode " C%c "))))

*参考にしたページ
Mode Line Data - GNU Emacs Lisp Reference Manual
https://www.gnu.org/software/emacs/manual/html_node/elisp/Mode-Line-Data.html
"(:eval form)" と "(symbol then else)"

%-Constructs - GNU Emacs Lisp Reference Manual
https://www.gnu.org/software/emacs/manual/html_node/elisp/_0025_002dConstructs.html
"%l" が現在行数、"%c" が現在桁数
上記コードではformat関数に解釈されないようエスケープしているので "%%l" となっている

Emacsのモードラインにページの総行数をきれいに表示する方法 - 三等兵
http://d.hatena.ne.jp/sandai/20120307/p1
`mode-line-position' の中身の解説
0721名無しさん@お腹いっぱい。2015/03/11(水) 12:55:56.48
>>720
ありがとうございます!綺麗に表示されるようになりました!
0722名無しさん@お腹いっぱい。2015/03/11(水) 19:54:59.56
文字合成楽しい
微妙に気に入らないフォントでも修正かけられるのはありがたい

;; 0にスラッシュ入ってないフォントで0にスラッシュを入れる
(font-lock-add-keywords nil '(("0" 0
(compose-region
(match-beginning 0) (match-end 0)
(compose-string "0/")
'decompose-region))))
0723名無しさん@お腹いっぱい。2015/03/11(水) 20:00:09.84
仕上がった0の画像とか
他の事例もあればjpg頼む
0724名無しさん@お腹いっぱい。2015/03/11(水) 20:26:42.29
>>723
http://i.imgur.com/ia0NtfE.png
こんな感じ
0725名無しさん@お腹いっぱい。2015/03/11(水) 23:31:25.36
calculator-mode に C-c C-c をキーバインドしようとしているのですが以下のエラーがでてうまくいきません
どのようにすれば回避できるのでしょうか?

(define-key calculator-mode-map
(kbd "C-c C-c") 'somefunc)
;; => Key sequence C-c C-c starts with non-prefix key C-c
0726名無しさん@お腹いっぱい。2015/03/12(木) 00:25:06.38
(define-key calculator-mode-map (kbd "C-c") nil)
(define-key calculator-mode-map (kbd "\C-c\C-c") 'somefunc)
0727名無しさん@お腹いっぱい。2015/03/12(木) 14:14:35.54
>>726
うまく出来ました。
予めプリフィクスになるものをnilで初期化?する必要があるんですね。
ありがとうございました!
0728名無しさん@お腹いっぱい。2015/03/12(木) 14:47:27.85
C-cに機能が割り当てられていて、プレフィックスとして使えないっていうメッセージなんだけどね
0729名無しさん@お腹いっぱい。2015/03/12(木) 15:16:22.01
Solarizedのdarkが利用できない件
(load-theme 'solarized-dark t)
ってしてるのに普通の方ででちゃう
0730名無しさん@お腹いっぱい。2015/03/12(木) 16:04:11.28
>>729
(setq frame-background-mode 'dark)
(load-theme 'solarized t)

https://github.com/sellout/emacs-color-theme-solarized
> To switch between the light and dark variations of Solarized, set the frame’s
> background-mode. This can be accomplished globally using M-x
> customize-variable frame-background-mode or on a per-frame basis with
> (set-frame-parameter nil 'background-mode 'light) (or 'dark).
0731名無しさん@お腹いっぱい。2015/03/12(木) 16:36:17.88
theme は wombat が好きだな
なにがいいって標準でついてるってのがいい
0732名無しさん@お腹いっぱい。2015/03/12(木) 19:10:35.78
>>722
いまいち安定しない
diredで普通の0が表示されたりする
0733名無しさん@お腹いっぱい。2015/03/12(木) 20:14:59.25
>>730
ありがとうございます
0734名無しさん@お腹いっぱい。2015/03/12(木) 21:25:41.01
明日でnavi2chも終わりか
ただでさえ書き込み少なかったここも今度こそ終わるな
0735名無しさん@お腹いっぱい。2015/03/12(木) 23:24:56.18
なんで終わりなの? 2chの仕様ががらっと変わるとか?
0736名無しさん@お腹いっぱい。2015/03/12(木) 23:45:38.54
>>734
ソース
0737名無しさん@お腹いっぱい。2015/03/12(木) 23:48:32.38
>>736
2ちゃんねる専用ブラウザをご利用の皆さまへ
http://www.2ch.net/browsers.html
> 3月13日からは新仕様に対応した専用ブラウザをご利用ください。
0738名無しさん@お腹いっぱい。2015/03/13(金) 00:00:32.33
どうや、かけるか?かけるんか?
0739名無しさん@お腹いっぱい。2015/03/13(金) 02:48:09.65
お別れのテスト
0740名無しさん@お腹いっぱい。2015/03/13(金) 03:01:09.67
で、「新仕様」ってのはどこにスペックが記載されてるわけ?

「本日より2ch.net専用ブラウザに広告が配信されるようになりました。」
とのことだが、これは navi2ch のように text しか対応していない
2ch viewer には関係のないことのように思える。

現に今も俺は navi2ch で書き込みしているわけで。
0741名無しさん@お腹いっぱい。2015/03/13(金) 05:40:14.28
>>740
横着せずページの下まで読みましょう
0742名無しさん@お腹いっぱい。2015/03/13(金) 06:45:09.68
>>740
navi2ch スレ見てきなさいな。
■ このスレッドは過去ログ倉庫に格納されています