Emacs Part 42
レス数が950を超えています。1000を超えると書き込みができなくなります。
0001名無しさん@お腹いっぱい。
2012/12/24(月) 12:26:20.01Emacs Part 41
http://toro.2ch.net/test/read.cgi/unix/1347009022/
0896名無しさん@お腹いっぱい。
2013/04/29(月) 02:41:35.37ただ、 defadviceとかで既存関数をいじる方向はナシで・・・。
0897名無しさん@お腹いっぱい。
2013/04/29(月) 07:04:31.39プロセスって何かプログラムを起動させるってこと?
そんなことできるの?
0898名無しさん@お腹いっぱい。
2013/04/29(月) 07:16:19.78つwindow-configuration-change-hook
0899名無しさん@お腹いっぱい。
2013/04/29(月) 13:25:20.77保存されないんですが、スタックの内容も保存する方法ってあります?
0900名無しさん@お腹いっぱい。
2013/04/29(月) 16:15:48.330901名無しさん@お腹いっぱい。
2013/04/29(月) 17:02:36.19start-processとか普通にあるやん
0902名無しさん@お腹いっぱい。
2013/04/29(月) 20:43:07.31emacsとプロセスとのデータのやりとりは?
特にプロセスからemacsにデータとかわたせるの?しかも非同期にとか
0903名無しさん@お腹いっぱい。
2013/04/29(月) 20:46:53.70http://www.gnu.org/software/emacs/manual/html_node/elisp/Processes.html
0904名無しさん@お腹いっぱい。
2013/04/29(月) 20:48:41.630905名無しさん@お腹いっぱい。
2013/04/29(月) 21:03:39.51同作者のemacs-epcとか使ってemacs外部と直接関数呼び出し、戻り値の形式でやり取りできたら面白そうと思ったけど
プロトコルがわからん
単に長さ付きのS式でやり取りしてるなっていうのはまぁわかるけど
0906名無しさん@お腹いっぱい。
2013/04/29(月) 21:15:02.680907名無しさん@お腹いっぱい。
2013/04/29(月) 21:32:08.60> >>901
> emacsとプロセスとのデータのやりとりは?
> 特にプロセスからemacsにデータとかわたせるの?しかも非同期にとか
立ち上げたプロセスと標準入出力でやり取りする。
send-process〜とかあるよ。
あとはset-process-filterとかsentinelとか使えばやりとりできます。
0908名無しさん@お腹いっぱい。
2013/04/29(月) 21:38:37.14非同期プロセス関連は長年メンテされてるelispでもバグだらけで
とても素人が使えるものじゃないって代物だわ
0909名無しさん@お腹いっぱい。
2013/04/29(月) 21:44:23.71> 非同期プロセス関連は長年メンテされてるelispでもバグだらけで
例えばどのelispだろう?そんなに酷くない気がするけど。
0910名無しさん@お腹いっぱい。
2013/04/29(月) 21:55:31.13ためしにこのエラーメッセージで検索したらひっかかるわひっかかるわ
ノンブロッキングIOなんて昔からバグの温床だしそんなもんといえばそんなもんか
0911名無しさん@お腹いっぱい。
2013/04/29(月) 22:05:59.36Emacsが対話環境も提供する以上、ある程度は仕方ない気がする。
0912名無しさん@お腹いっぱい。
2013/04/29(月) 22:52:47.50> それが面倒だからわざわざdbus.elとか使うんだよなぁ…
ん、dbus.elってなに?全然しんらないんだけど・・。
0913名無しさん@お腹いっぱい。
2013/04/30(火) 01:40:40.28あざーっす。
試してみます。
0914名無しさん@お腹いっぱい。
2013/05/01(水) 21:24:07.09以下のようなリストがあるとします。
(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("c" c) って要は ("c" . (c)) のことなんだから
eq?じゃなくてequal?を使うrassocの方を使って
(setq hoge (delete (rassoc '(c) hoge) hoge)
でいいんじゃないの?
0916名無しさん@お腹いっぱい。
2013/05/01(水) 22:15:20.92あ、できました。
ありがとう。
というか、
>("c" c) って要は ("c" . (c)) のことなんだから
ここらへんの理解が適当でした。
0917名無しさん@お腹いっぱい。
2013/05/01(水) 23:20:24.970918名無しさん@お腹いっぱい。
2013/05/02(木) 00:07:02.47別にいいけど
0919名無しさん@お腹いっぱい。
2013/05/02(木) 08:35:44.29お前わかってねーな
0920名無しさん@お腹いっぱい。
2013/05/02(木) 13:47:07.210921名無しさん@お腹いっぱい。
2013/05/02(木) 20:10:49.30できました。ありがとう俺!
0922名無しさん@お腹いっぱい。
2013/05/02(木) 20:34:13.97ある既存関数の挙動を置き換えたいんですが方法ありますか?
defadviceとかだと、他のモードやバッファでの動作もかわっちゃいますよね。
0923名無しさん@お腹いっぱい。
2013/05/02(木) 20:44:49.31(defadvice hoge (around hoge-advice activate )
(if (eq major-mode 'huga-mode)
(なんか処理)
ad-do-it))
0924名無しさん@お腹いっぱい。
2013/05/02(木) 20:45:41.840925924
2013/05/02(木) 20:46:42.840927名無しさん@お腹いっぱい。
2013/05/02(木) 21:24:18.52built-inパッケージでもCEDETとかぐらいぽいし、
デメリットとかあるのかな?
0928名無しさん@お腹いっぱい。
2013/05/02(木) 22:55:31.310929名無しさん@お腹いっぱい。
2013/05/03(金) 04:01:57.42after-change-major-mode-hook とかでアドバイス自体を有効/無効にする
ってのはどうでしょ
ad-enable-regexp と ad-disable-regexp でまとめて切り替えられるし
0930名無しさん@お腹いっぱい。
2013/05/03(金) 08:02:43.18(my-minor-mode)
が呼ばれたときに、内部で条件判定を行ってモードをonにしたくないときってどうすればいいんでしょうか?
define-minor-modeのbody内部の記述だけでは無理?
0931名無しさん@お腹いっぱい。
2013/05/03(金) 20:34:15.36ファイルがある一定数以上になると
Creating pipe: too many open files
といわれてしまいどう対処すべきかわかりません。
パイプ数を増やそうとおもってulimit -pしてみたのですが変更できないみたいです。
デフォではパイプが8ぽいので、ファイルが8までは大丈夫でそれを超えると上記のメッセージがでます。
パイプ数を変更できない場合は、どのように対処したらよいでしょうか?
0932名無しさん@お腹いっぱい。
2013/05/03(金) 21:32:23.07define-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ありがとうございます。
>define-globalized-minor-mode
調べてみます。
>concurrent.el
こんな便利なのがあるんですね。
deferredとかも。
いろいろ使えそうなので見てみます。
>dolist の中で待ちが発生していいなら start-process じゃなくて call-process を使うべき。
待たせたくないので↑の方法でいってみます。
0934名無しさん@お腹いっぱい。
2013/05/06(月) 06:47:39.55たとえば
(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の存在そのものを消しているわけではないような気がします。
これを完全に削除するにはどうしたらいいでしょうか?
0935934
2013/05/06(月) 06:52:54.57外部パッケージでsetqされている変数なのでその方法は使えない状態です。
0936名無しさん@お腹いっぱい。
2013/05/06(月) 11:27:00.330937名無しさん@お腹いっぱい。
2013/05/06(月) 13:17:32.14外部パッケージでmake-variable-buffer-localされているので無理な状態です。
初期化関数内でmake-variable-buffer-localされているなら
defadviceでおきかえてmake-local-variableを使うようにできますが
関数外なのでそれも無理です。
0938名無しさん@お腹いっぱい。
2013/05/06(月) 13:52:52.34どうしたいのかいまいちわからんな。
具体的なパッケージの名前も出してみたら?
0939名無しさん@お腹いっぱい。
2013/05/06(月) 16:52:07.63emacs-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ちょっと、パッケージのほうを書き換えて実験してみたんですが
window-configuration-change-hook
はあくまでサイズ変更とかでcallされるのであって
ウィンドウ選択だけでは呼ばれないのですね。
というわけで失敗・・。
C-x oでウィンドウを選択操作する毎に呼び出されるフックとかがあるといいのですが・・。
最悪 other-windowをdefadviceすればできますが・・。
other-windowだけでなく、
その他バッファをウィンドウに表示する関数や切り替え系をいろいろやらないと
どんなケースでもよろしく動くようにならない気がします。
とりあえず、可視ウィンドウでかつ選択されているバッファを取得して処理したい。
取得&処理したいタイミングは、それらに切り替わった瞬間。
ということですかね。
あちこちにdefadviceしたりせずにもっと、シンプルに扱える仕組みとかないですかね。
0941939
2013/05/06(月) 20:26:17.68defadvice select-window (after
で全て解決できました。
ただ、こういうbuilt-inのもっともよく使われる基底の関数をdefadviceするってどうなんですかね。
0942名無しさん@お腹いっぱい。
2013/05/06(月) 22:33:41.46(unintern 'hoge)
0943名無しさん@お腹いっぱい。
2013/05/06(月) 22:42:43.11あざーす。
うまくいきました。
global/local一気に削除して、
自分で再定義すればいいわけですね。
0944名無しさん@お腹いっぱい。
2013/05/13(月) 00:20:53.500945名無しさん@お腹いっぱい。
2013/05/13(月) 17:44:44.02C-SPCからキーボードでキャレット移動させた場合はきちんとkill-regionできるようにはできないですかね?
0946名無しさん@お腹いっぱい。
2013/05/14(火) 01:54:59.97ruby書いてる時に
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.510948名無しさん@お腹いっぱい。
2013/05/14(火) 02:22:23.5024.3.1だと希望通りの動作です。
右ボタンだとどうなりますか?
0950名無しさん@お腹いっぱい。
2013/05/16(木) 14:37:05.83例えば message を「与えられた引数にhogeを付け加えて表示する」に変える場合、愚直に
(flet ((original-message (str)
(message str))
(message (str)
(original-message (concat "hoge " str))))
(message "hello"))
とすると当然無限ループになってしまう。
0951名無しさん@お腹いっぱい。
2013/05/16(木) 16:12:52.270952950
2013/05/17(金) 20:00:55.81なるほど。こうですね。
(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自分で作れという暗示か
0954名無しさん@お腹いっぱい。
2013/05/18(土) 15:45:25.380955名無しさん@お腹いっぱい。
2013/05/22(水) 23:26:04.19居たら使い勝手を教えて欲しい。
0956名無しさん@お腹いっぱい。
2013/05/22(水) 23:32:13.040957名無しさん@お腹いっぱい。
2013/05/23(木) 00:19:20.270958名無しさん@お腹いっぱい。
2013/05/23(木) 09:49:37.790959名無しさん@お腹いっぱい。
2013/05/26(日) 15:04:17.38自分は今ビルド中
0960名無しさん@お腹いっぱい。
2013/05/29(水) 15:53:22.90*→.へ変えたところ折り畳み、開いたりの動作は
正常に動きますが階層ごとの色付けがなくなりました。
outline-modeへ切り替えると動作、色もちゃんと表示されます。
どのような設定をすべきなのでしょうか?
ザウルス + emacs22.1 (org v.4.67c)
0961名無しさん@お腹いっぱい。
2013/05/29(水) 17:19:13.02なんでそんな欝陶しいことするんだろう。友達いないのかな?
0962名無しさん@お腹いっぱい。
2013/05/29(水) 17:26:18.880963名無しさん@お腹いっぱい。
2013/05/29(水) 22:11:32.86もしそうだとするとemacs25辺りから末尾再帰最適化されるようになるかな
0964名無しさん@お腹いっぱい。
2013/05/30(木) 11:35:03.120965名無しさん@お腹いっぱい。
2013/05/30(木) 15:42:42.610966名無しさん@お腹いっぱい。
2013/06/01(土) 12:22:13.49書くということが Lisp そのものなんだ。
名言すまん。
0967名無しさん@お腹いっぱい。
2013/06/01(土) 12:41:09.810968名無しさん@お腹いっぱい。
2013/06/01(土) 13:41:39.410969名無しさん@お腹いっぱい。
2013/06/01(土) 14:39:12.230970名無しさん@お腹いっぱい。
2013/06/02(日) 18:39:43.640971名無しさん@お腹いっぱい。
2013/06/03(月) 23:09:14.190972名無しさん@お腹いっぱい。
2013/06/05(水) 15:46:55.09(define-key isearch-mode-map "\C-o" 'isearch-edit-string)
と設定しており、C-s C-oで日本語検索しているのですが、
C-sだけで日本語検索までできないでしょうか?
以下のように設定しても、isearch-edit-stringが機能してないのか、
下の編集ラインにカーソルが移動しません。
(defun my-japanese-search ()
(interactive)
(isearch-forward)
(isearch-edit-string) )
(global-set-key "\C-s" 'my-japanese-search)
0973名無しさん@お腹いっぱい。
2013/06/06(木) 23:47:39.22migemoは使ってみました?
0974名無しさん@お腹いっぱい。
2013/06/07(金) 01:16:55.96その後どうなった?どの程度の完成度なのか気になる。
0975名無しさん@お腹いっぱい。
2013/06/07(金) 02:10:14.01なんかmakeしてもemacs23.1が出来ただけでよくわからなかったから自分で試して
0976名無しさん@お腹いっぱい。
2013/06/07(金) 11:40:26.33つ (setq cursor-in-echo-area t)
使い方によっては、
(global-set-key "\C-s" 'search-forward)
でもいいかもしれない。
0977972
2013/06/07(金) 16:33:36.22日本語エディタとして使う機会のほうが多いので
>>976
>つ (setq cursor-in-echo-area t)
(setq cursor-in-echo-area nil)との切り替えがどうもしっくり行きませんでした。
>(global-set-key "\C-s" 'search-forward)
>でもいいかもしれない。
日本語メインのときには、こちらで使うことにしました。
ありがとうございます。
0978名無しさん@お腹いっぱい。
2013/06/07(金) 16:59:18.100979名無しさん@お腹いっぱい。
2013/06/07(金) 21:41:47.050980名無しさん@お腹いっぱい。
2013/06/08(土) 14:03:03.510981名無しさん@お腹いっぱい。
2013/06/08(土) 14:11:47.570982名無しさん@お腹いっぱい。
2013/06/08(土) 14:21:47.48はつみみです。
0983名無しさん@お腹いっぱい。
2013/06/08(土) 15:12:39.260984名無しさん@お腹いっぱい。
2013/06/08(土) 17:50:44.55ソレ
0985名無しさん@お腹いっぱい。
2013/06/08(土) 18:08:09.88どう設定すればいいのでしょうか
0986名無しさん@お腹いっぱい。
2013/06/08(土) 19:56:35.70(mac-set-input-method-parameter "com.justsystems.inputmethod.atok25.Japanese" 'cursor-color "lightblue")
のように設定して、日本語のONOFFによってカーソルの色を変えていたのですが、
http://www.emacsformacosx.com/のemacs24.3にしてから
Symbol's function definition is void: と表示されるようになりました。
カーソルの色を変える代替方法はないでしょうか?
0987名無しさん@お腹いっぱい。
2013/06/08(土) 20:13:08.79> おっさんは若者をそう叩くなよ
> 足は引っ張らず温かく見守れ
0988名無しさん@お腹いっぱい。
2013/06/08(土) 21:11:22.38若者 >>>>> 越えられない壁 >>>>> おっさん
0989名無しさん@お腹いっぱい。
2013/06/08(土) 21:20:36.180990名無しさん@お腹いっぱい。
2013/06/08(土) 22:22:25.930991名無しさん@お腹いっぱい。
2013/06/09(日) 01:53:42.710992名無しさん@お腹いっぱい。
2013/06/09(日) 02:09:32.59M-x doctor
0993名無しさん@お腹いっぱい。
2013/06/09(日) 02:19:12.18I am the psychotherapist. Please, describe your problems. Each time
you are finished talking, type RET twice.
I want friends.
Why do you say
i want friends?
yep, give me friends.
Is it because of your plans that you say
yep give you friends?
suck.
Can you elaborate on that?
u r THE fucker
Maybe your life has something to do with this.
0994993
2013/06/09(日) 02:19:45.23レス数が950を超えています。1000を超えると書き込みができなくなります。