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

Emacs Part 42

レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名無しさん@お腹いっぱい。2012/12/24(月) 12:26:20.01
前スレ

Emacs Part 41
http://toro.2ch.net/test/read.cgi/unix/1347009022/
0867名無しさん@お腹いっぱい。2013/04/23(火) 15:30:23.57
この恐ろしいマジレスはなんなんだw
ネタにマジレスというネタだよな
0868名無しさん@お腹いっぱい。2013/04/23(火) 15:36:14.31
ネタっていうのはおもしろいものを言う。
こういうおもしろくない返しするのはマジなんだろう。
0869名無しさん@お腹いっぱい。2013/04/23(火) 16:06:29.37
そんなに、>>.863を叩くなよ
0870名無しさん@お腹いっぱい。2013/04/23(火) 16:30:15.32
便利なLipsはどこから拾ってくる?
あとEmacsを始める初心者が使うと良いテンプレートのLipsはある?
0871名無しさん@お腹いっぱい。2013/04/23(火) 17:01:03.51
Preludeでもつかっとけ
リップスリップス
0872名無しさん@お腹いっぱい。2013/04/23(火) 17:16:41.59
>>871
ありがとう。HP見てこれだよと思った。
0873名無しさん@お腹いっぱい。2013/04/23(火) 21:47:29.82
>>866
おまえ、Land of Lispの挿し絵見て出直してこいよ。
0874名無しさん@お腹いっぱい。2013/04/23(火) 23:44:49.15
ラジャ
0875名無しさん@お腹いっぱい。2013/04/24(水) 00:07:07.48
俺がemacsを使い始めたのは働き初めてからだったが、学生の頃に知ってたらいろいろ違ったのかな。
0876名無しさん@お腹いっぱい。2013/04/24(水) 01:50:14.43
Emacs 禁断症状が出てきた
0877名無しさん@お腹いっぱい。2013/04/24(水) 10:48:18.76
>>876
それはよくないマックスだね。
0878名無しさん@お腹いっぱい。2013/04/24(水) 12:26:25.38
>>875
今を生きろ
0879名無しさん@お腹いっぱい。2013/04/25(木) 18:11:53.69
rbkt先生は小学生の時点でemacs使ってたのにあのざまやぞ
0880名無しさん@お腹いっぱい。2013/04/25(木) 20:14:49.37
vim
0881名無しさん@お腹いっぱい。2013/04/25(木) 21:25:30.96
sexy vim
0882名無しさん@お腹いっぱい。2013/04/26(金) 09:55:48.66
通院で大変なのか嫉妬だの僻みだのの書込みなくなったな。
0883名無しさん@お腹いっぱい。2013/04/26(金) 12:11:53.03
通院ってどうしたの
0884名無しさん@お腹いっぱい。2013/04/26(金) 20:33:47.54
精神的に病んでるせいでhelmができたとかなんとか。
0885名無しさん@お腹いっぱい。2013/04/27(土) 02:45:09.75
やばい楽しすぎるw
emacs使って開発してるのかemacsの開発してるのか分からなくなってきた
2:8くらいの比率になっちまってる
ほんとに5年で飽きるのかこれ
0886名無しさん@お腹いっぱい。2013/04/27(土) 08:25:53.57
飽きる
っつーかネタ切れになった
っつーか俺の場合やりたいネタがelispの処理速度では現実的じゃなかった
0887名無しさん@お腹いっぱい。2013/04/27(土) 09:02:41.13
>>886
そのネタ晒せよ。
0888名無しさん@お腹いっぱい。2013/04/27(土) 09:15:20.87
自分がやれることしかやりたくなくなったらおしまいだよね〜♪
0889名無しさん@お腹いっぱい。2013/04/27(土) 09:19:36.88
会社のWindowsPCにEmacs入れてメーラのthunderbirdの外部エディタとして使い始めたけどメール書くのとか楽しくなってきたよ。
あと議事録とかも書いてて楽しめるようになった。
中身はどうでもいいやw 大切なの歯Emacsで何を書くかではなく、Emacsを使って書くこと。
手段と目的とを混同しなくてはならない。
0890名無しさん@お腹いっぱい。2013/04/27(土) 14:14:03.19
それはEmacsでなくキチMAXやね。
0891名無しさん@お腹いっぱい。2013/04/27(土) 14:54:33.22
理解できる。
EDITOR環境変数とか、(これは最近関係ないか)
Google ChromeのEdit with Emacsとか、
EclipseのEmacs pluginが命綱。
Eclipseの補完機能死んで意味ねえって周りは言ってるけど。
0892名無しさん@お腹いっぱい。2013/04/27(土) 16:46:46.78
emacsでjavaのコーディングしてる人いる?
やっぱりjdeeがいいのかな
malabar-modeなんてのもあるらしいけどググっても導入方法しか出てこなくて使ってる人いるのか疑問
0893名無しさん@お腹いっぱい。2013/04/27(土) 22:25:37.90
◆じゃあの野間まつり◆
じゃあのさん来た!

421:以下、名無しにかわりましてVIPがお送りします[]
2013/04/27(土) 21:53:57.62 ID:qYDE1sEQ0
てか、すっかり野間ちゃんのこと忘れてたわwww
別件で色々あってなwwww
所詮その程度の存在なんだけどなwww野間ちゃんなんてwwww
じゃあ、今からやるかwww罰ゲームなwww
あーあwww野間のせいだwww野間が全部悪いwww
--- 以下スレ情報 ---
高岡さんがフジ韓流ゴリ押し批判したら干されたのでウジテレビ凸
http://hayabusa.2ch.net/test/read.cgi/news4vip/1366990405/
0894名無しさん@お腹いっぱい。2013/04/28(日) 02:29:24.81
vip でやれ
0895名無しさん@お腹いっぱい。2013/04/29(月) 02:40:27.73
emacs lispで質問です。
複数のバッファをオープンしているとして、
バッファがウィンドウに表示された時と非表示になったときに実行されるようなhookはありませんか?
フレームに表示中だけそのバッファ付のプロセスを起動して、
非表示のときはプロセスをsleepかkillしたいのです。
0896名無しさん@お腹いっぱい。2013/04/29(月) 02:41:35.37
同等の事が実現できればhookでなくてもいいです。
ただ、 defadviceとかで既存関数をいじる方向はナシで・・・。
0897名無しさん@お腹いっぱい。2013/04/29(月) 07:04:31.39
>>895
プロセスって何かプログラムを起動させるってこと?
そんなことできるの?
0898名無しさん@お腹いっぱい。2013/04/29(月) 07:16:19.78
>895
つwindow-configuration-change-hook
0899名無しさん@お腹いっぱい。2013/04/29(月) 13:25:20.77
calc-mode が書き出す ~/.emacs.d/calc.el にはウィンドウの高さとかしか
保存されないんですが、スタックの内容も保存する方法ってあります?
0900名無しさん@お腹いっぱい。2013/04/29(月) 16:15:48.33
evernote-mode使えてる人いる?
0901名無しさん@お腹いっぱい。2013/04/29(月) 17:02:36.19
>>897
start-processとか普通にあるやん
0902名無しさん@お腹いっぱい。2013/04/29(月) 20:43:07.31
>>901
emacsとプロセスとのデータのやりとりは?
特にプロセスからemacsにデータとかわたせるの?しかも非同期にとか
0903名無しさん@お腹いっぱい。2013/04/29(月) 20:46:53.70
中身全然読んでないけど非同期IOはできるみたいだね
http://www.gnu.org/software/emacs/manual/html_node/elisp/Processes.html
0904名無しさん@お腹いっぱい。2013/04/29(月) 20:48:41.63
mewがやってる
0905名無しさん@お腹いっぱい。2013/04/29(月) 21:03:39.51
githubにdeffered.elとかあるけど使い方がよくわからん
同作者のemacs-epcとか使ってemacs外部と直接関数呼び出し、戻り値の形式でやり取りできたら面白そうと思ったけど
プロトコルがわからん
単に長さ付きのS式でやり取りしてるなっていうのはまぁわかるけど
0906名無しさん@お腹いっぱい。2013/04/29(月) 21:15:02.68
dbus.elを使えばデータの受け渡しなどはできそう。
0907名無しさん@お腹いっぱい。2013/04/29(月) 21:32:08.60
>>902
> >>901
> emacsとプロセスとのデータのやりとりは?
> 特にプロセスからemacsにデータとかわたせるの?しかも非同期にとか
立ち上げたプロセスと標準入出力でやり取りする。
send-process〜とかあるよ。
あとはset-process-filterとかsentinelとか使えばやりとりできます。
0908名無しさん@お腹いっぱい。2013/04/29(月) 21:38:37.14
それが面倒だからわざわざdbus.elとか使うんだよなぁ…
非同期プロセス関連は長年メンテされてるelispでもバグだらけで
とても素人が使えるものじゃないって代物だわ
0909名無しさん@お腹いっぱい。2013/04/29(月) 21:44:23.71
>>908
> 非同期プロセス関連は長年メンテされてるelispでもバグだらけで

例えばどのelispだろう?そんなに酷くない気がするけど。
0910名無しさん@お腹いっぱい。2013/04/29(月) 21:55:31.13
vc.elとかgnus.elみたいな標準のでもバグ報告でしょっちゅうerror in process sentinelでてる
ためしにこのエラーメッセージで検索したらひっかかるわひっかかるわ
ノンブロッキングIOなんて昔からバグの温床だしそんなもんといえばそんなもんか
0911名無しさん@お腹いっぱい。2013/04/29(月) 22:05:59.36
buffer消しちゃったりしたときのアレかな。バグといっていいのかどうか。
Emacsが対話環境も提供する以上、ある程度は仕方ない気がする。
0912名無しさん@お腹いっぱい。2013/04/29(月) 22:52:47.50
>>908
> それが面倒だからわざわざdbus.elとか使うんだよなぁ…
ん、dbus.elってなに?全然しんらないんだけど・・。
0913名無しさん@お腹いっぱい。2013/04/30(火) 01:40:40.28
>>898
あざーっす。
試してみます。
0914名無しさん@お腹いっぱい。2013/05/01(水) 21:24:07.09
lispで質問です。
以下のようなリストがあるとします。
(hoge '(("a" a) ("b" b) ("b" b) ("b" b) ("c" c) ("b" b) ("b" b) ("b" b)))

このなかでシンボルcを持つエレメントをみつけて削除したいのですが、すごくめんどくさくて困ってます。
hogeの中身が連想リストの場合は
(setq hoge (delete (rassq 'c hoge) hoge)
ですむのですが、
hogeが連想リストじゃないので、rassqが使えません。
なので do をつかって
(let* ((hoge '(("a" a)
("b" b)
("b" b)
("b" b)
("c" c)
("b" b)
("b" b)
("b" b)))
find)
(do ((cnt 0 (1+ cnt)) ) ((or find (null (nth cnt hoge))) )
(when (setq find (eq 'c (car (cdr (nth cnt hoge)))))
(setq hoge (delete (nth cnt hoge) hoge))))
hoge)
といったコードになってしまいます。
もっとシンプルにできる方法はないでしょうか?
0915名無しさん@お腹いっぱい。2013/05/01(水) 21:47:13.65
>>914
("c" c) って要は ("c" . (c)) のことなんだから
eq?じゃなくてequal?を使うrassocの方を使って
(setq hoge (delete (rassoc '(c) hoge) hoge)
でいいんじゃないの?
0916名無しさん@お腹いっぱい。2013/05/01(水) 22:15:20.92
>>915
あ、できました。
ありがとう。
というか、
>("c" c) って要は ("c" . (c)) のことなんだから
ここらへんの理解が適当でした。
0917名無しさん@お腹いっぱい。2013/05/01(水) 23:20:24.97
>("c" c) がなんかのアスキーアートに見えてしょうがないんだが..
0918名無しさん@お腹いっぱい。2013/05/02(木) 00:07:02.47
そもそも cons cell にしとけばいいのに
別にいいけど
0919名無しさん@お腹いっぱい。2013/05/02(木) 08:35:44.29
>>918
お前わかってねーな
0920名無しさん@お腹いっぱい。2013/05/02(木) 13:47:07.21
まーな
0921名無しさん@お腹いっぱい。2013/05/02(木) 20:10:49.30
>>899
できました。ありがとう俺!
0922名無しさん@お腹いっぱい。2013/05/02(木) 20:34:13.97
ある特定のメジャーモードで動いているとき、もしくは特定のバッファだけ、
ある既存関数の挙動を置き換えたいんですが方法ありますか?

defadviceとかだと、他のモードやバッファでの動作もかわっちゃいますよね。
0923名無しさん@お腹いっぱい。2013/05/02(木) 20:44:49.31
defadvice の先頭にメジャーモードの判定を入れるのはどう?

(defadvice hoge (around hoge-advice activate )
(if (eq major-mode 'huga-mode)
(なんか処理)
ad-do-it))
0924名無しさん@お腹いっぱい。2013/05/02(木) 20:45:41.84
defadviceしてその中でmajor-modeとか使って分岐すればいいじゃん。
09259242013/05/02(木) 20:46:42.84
速さも中身でも負けた。完敗です。
09269222013/05/02(木) 21:16:43.63
>>923
ありがとうございます。
これでいってみます。
0927名無しさん@お腹いっぱい。2013/05/02(木) 21:24:18.52
CLOSて使ってる人あまりいないん?
built-inパッケージでもCEDETとかぐらいぽいし、
デメリットとかあるのかな?
0928名無しさん@お腹いっぱい。2013/05/02(木) 22:55:31.31
elispでclos使えることを今知った
0929名無しさん@お腹いっぱい。2013/05/03(金) 04:01:57.42
>>922
after-change-major-mode-hook とかでアドバイス自体を有効/無効にする
ってのはどうでしょ
ad-enable-regexp と ad-disable-regexp でまとめて切り替えられるし
0930名無しさん@お腹いっぱい。2013/05/03(金) 08:02:43.18
define-minor-modeでマイナーモード作ってるんですが
(my-minor-mode)
が呼ばれたときに、内部で条件判定を行ってモードをonにしたくないときってどうすればいいんでしょうか?
define-minor-modeのbody内部の記述だけでは無理?
0931名無しさん@お腹いっぱい。2013/05/03(金) 20:34:15.36
リストにあるファイルをstart-processに渡すdolistを書いていたのですが
ファイルがある一定数以上になると
Creating pipe: too many open files
といわれてしまいどう対処すべきかわかりません。
パイプ数を増やそうとおもってulimit -pしてみたのですが変更できないみたいです。
デフォではパイプが8ぽいので、ファイルが8までは大丈夫でそれを超えると上記のメッセージがでます。
パイプ数を変更できない場合は、どのように対処したらよいでしょうか?
0932名無しさん@お腹いっぱい。2013/05/03(金) 21:32:23.07
>>930

define-globalized-minor-mode あたり使うといいかも。

auto-complete-mode-maybe が参考になるはず。

あるいは (my-minor-mode -1) して関数内で強制的に off にするとかかな?

>>931

concurrent.el あたりを使えばできそうな気はする。
dolist の中で待ちが発生していいなら start-process じゃなくて call-process を使うべき。
0933名無しさん@お腹いっぱい。2013/05/03(金) 22:58:18.89
>>932
ありがとうございます。
>define-globalized-minor-mode
調べてみます。

>concurrent.el
こんな便利なのがあるんですね。
deferredとかも。
いろいろ使えそうなので見てみます。

>dolist の中で待ちが発生していいなら start-process じゃなくて call-process を使うべき。
待たせたくないので↑の方法でいってみます。
0934名無しさん@お腹いっぱい。2013/05/06(月) 06:47:39.55
make-variable-buffer-localで作成した変数を削除することはできませんか?
たとえば
(setq hoge 10)
(make-variable-buffer-local 'hoge)
(setq hoge 0)
(print hoge)
で 0 になり
(kill-local-variable 'hoge)
(print hoge)
10 になります。
しかしここで
(setq hoge 5)
を行うと、hogeはlocal-varになってしまうようです。
上のコードをdescrible-variableで確認すると
global > global + local > global > global + local
になっているようで、kill はあくまで現在の参照先をglobalにするだけで、
localの存在そのものを消しているわけではないような気がします。
これを完全に削除するにはどうしたらいいでしょうか?
09359342013/05/06(月) 06:52:54.57
補足ですが、globalに明示的にセットするのであればsetq-defaultでいけますが、
外部パッケージでsetqされている変数なのでその方法は使えない状態です。
0936名無しさん@お腹いっぱい。2013/05/06(月) 11:27:00.33
make-variable-buffer-local ではなく make-local-variable を使う
0937名無しさん@お腹いっぱい。2013/05/06(月) 13:17:32.14
>>936
外部パッケージでmake-variable-buffer-localされているので無理な状態です。
初期化関数内でmake-variable-buffer-localされているなら
defadviceでおきかえてmake-local-variableを使うようにできますが
関数外なのでそれも無理です。
0938名無しさん@お腹いっぱい。2013/05/06(月) 13:52:52.34
>>937
どうしたいのかいまいちわからんな。
具体的なパッケージの名前も出してみたら?
0939名無しさん@お腹いっぱい。2013/05/06(月) 16:52:07.63
>>938
emacs-clang-complete-asyncです。
c++-modeバッファ毎にclang-completeプロセスを常駐させるので
8個以上開くと、pipe errorになります。
これを回避するために、バッファ毎にプロセス作成しているのをやめて、
常に1つのみ常駐にして
window-configuration-change-hook
でウィンドウ切り替えを検出し、
selected-window
のバッファローカル変数のcflagsをプロセスに送信してコマンドライン更新を行うようにしたいのです。
ぶっちゃけ、パッケージソースのほうをいじってしまえば直ぐに終わるのですが
あまり外のを汚したくないので自分側でパッチを当ててます。
その一環で、プロセスオブジェクトを保存する変数が
make-variable-buffer-localされてしまっているのを
kill-local-variableして、globalにしようとして上記の書き込みになりました。
0940名無しさん@お腹いっぱい。2013/05/06(月) 17:05:20.29
>>938
ちょっと、パッケージのほうを書き換えて実験してみたんですが
window-configuration-change-hook
はあくまでサイズ変更とかでcallされるのであって
ウィンドウ選択だけでは呼ばれないのですね。
というわけで失敗・・。
C-x oでウィンドウを選択操作する毎に呼び出されるフックとかがあるといいのですが・・。
最悪 other-windowをdefadviceすればできますが・・。
other-windowだけでなく、
その他バッファをウィンドウに表示する関数や切り替え系をいろいろやらないと
どんなケースでもよろしく動くようにならない気がします。

とりあえず、可視ウィンドウでかつ選択されているバッファを取得して処理したい。
取得&処理したいタイミングは、それらに切り替わった瞬間。
ということですかね。

あちこちにdefadviceしたりせずにもっと、シンプルに扱える仕組みとかないですかね。
09419392013/05/06(月) 20:26:17.68
とりあえずやりたいことは
defadvice select-window (after
で全て解決できました。
ただ、こういうbuilt-inのもっともよく使われる基底の関数をdefadviceするってどうなんですかね。
0942名無しさん@お腹いっぱい。2013/05/06(月) 22:33:41.46
>>937
(unintern 'hoge)
0943名無しさん@お腹いっぱい。2013/05/06(月) 22:42:43.11
>>942
あざーす。
うまくいきました。
global/local一気に削除して、
自分で再定義すればいいわけですね。
0944名無しさん@お腹いっぱい。2013/05/13(月) 00:20:53.50
勢いが足りない
0945名無しさん@お腹いっぱい。2013/05/13(月) 17:44:44.02
C-SPCでset-mark-commandして、マウスでキャレットを移動させた後にC-wでkill-regionしても動作しない。
C-SPCからキーボードでキャレット移動させた場合はきちんとkill-regionできるようにはできないですかね?
0946名無しさん@お腹いっぱい。2013/05/14(火) 01:54:59.97
emacsでwindows31Jって使えない?
ruby書いてる時に
Warning (mule): Invalid coding system `Windows-31J' is specified
for the current buffer/file by the :coding tag
って何回も出て来るんだけど
0947名無しさん@お腹いっぱい。2013/05/14(火) 02:22:10.51
cp932じゃあかんの?
0948名無しさん@お腹いっぱい。2013/05/14(火) 02:22:23.50
>>945
24.3.1だと希望通りの動作です。
右ボタンだとどうなりますか?
09499452013/05/14(火) 10:32:42.87
>>948
Emacs24.1だったんですが、24.3に上げたら希望通りの動作になりました。
ありがとう
0950名無しさん@お腹いっぱい。2013/05/16(木) 14:37:05.83
fletを使って既存の関数の挙動を変えたいんだけど、flet中で元の(オリジナルの)関数を呼びだすのってどうやればいいの?
例えば message を「与えられた引数にhogeを付け加えて表示する」に変える場合、愚直に

(flet ((original-message (str)
(message str))
(message (str)
(original-message (concat "hoge " str))))
(message "hello"))

とすると当然無限ループになってしまう。
0951名無しさん@お腹いっぱい。2013/05/16(木) 16:12:52.27
(apply (symbol-function 'message) '("hello"))
09529502013/05/17(金) 20:00:55.81
>>951
なるほど。こうですね。

(require 'cl)

(lexical-let ((original-message (symbol-function 'message)))
(flet ((message (str)
(funcall original-message (concat "hoge " str))))
(message "hello")))
0953名無しさん@お腹いっぱい。2013/05/17(金) 20:05:58.16
なんでvisual-basic-modeがあるのにfree-basic-modeがないのか疑問
自分で作れという暗示か
0954名無しさん@お腹いっぱい。2013/05/18(土) 15:45:25.38
BASICはANSIなのか。
0955名無しさん@お腹いっぱい。2013/05/22(水) 23:26:04.19
メール管理にRMAILを日常的に使ってる人っている?
居たら使い勝手を教えて欲しい。
0956名無しさん@お腹いっぱい。2013/05/22(水) 23:32:13.04
使い勝手いいわけないだろ。
0957名無しさん@お腹いっぱい。2013/05/23(木) 00:19:20.27
いや、薄々感づいてはいたけど、やっぱりそうなんだね。
0958名無しさん@お腹いっぱい。2013/05/23(木) 09:49:37.79
rmsは今でもRMAIL使ってるらしいぞ。
0959名無しさん@お腹いっぱい。2013/05/26(日) 15:04:17.38
guile emacs使ってる人いる
自分は今ビルド中
0960名無しさん@お腹いっぱい。2013/05/29(水) 15:53:22.90
最近org-modeを使い始めたのですが、見出し記号を
*→.へ変えたところ折り畳み、開いたりの動作は
正常に動きますが階層ごとの色付けがなくなりました。
outline-modeへ切り替えると動作、色もちゃんと表示されます。
どのような設定をすべきなのでしょうか?
ザウルス + emacs22.1 (org v.4.67c)
0961名無しさん@お腹いっぱい。2013/05/29(水) 17:19:13.02
> *→.へ変えたところ

なんでそんな欝陶しいことするんだろう。友達いないのかな?
0962名無しさん@お腹いっぱい。2013/05/29(水) 17:26:18.88
友達の件はそっとしといてやれよ。
0963名無しさん@お腹いっぱい。2013/05/29(水) 22:11:32.86
今までemacsが末尾再帰最適化をしなかった理由は動的スコープで実相が面倒だったから?
もしそうだとするとemacs25辺りから末尾再帰最適化されるようになるかな
0964名無しさん@お腹いっぱい。2013/05/30(木) 11:35:03.12
Lispなんか気楽に手続き的に書けばいいと思うんだ
0965名無しさん@お腹いっぱい。2013/05/30(木) 15:42:42.61
そうやって書いていたらなんでLisp書いてんだろって思ってLisp書かなくなった
0966名無しさん@お腹いっぱい。2013/06/01(土) 12:22:13.49
Lisp は何かのために書くものじゃない。
書くということが Lisp そのものなんだ。

名言すまん。
レス数が950を超えています。1000を超えると書き込みができなくなります。