1 :
名無しさん@お腹いっぱい。 :
2012/01/03(火) 15:59:59.96 ID:SgBOKvpA0
あけ おめ いち おつ
おつかれちゃーん
おいおい、落ちちゃうぞ? 前スレ最後のテンプレ案に出てきてはじめてGNU emacs(x64)の存在を知った。 mingw64でもビルドできたりしないかな……。
emacs64って速いのかなぁ 整数扱える範囲も28+32bitになってたりするんだろうか
most-positive-fixnumは 2305843009213693951 だった。 0x1FFFFFFFFFFFFFFF だね。
そういえば gnupack はなんで cygwin 版の ghostscript を使わず windows 版の ghostscript を使ってるんでしたっけ?
>>7 またスレ違いとか怒られそうだけどコメントすると,
w32tex.orgで配布されているバイナリが本家と違い
オプション -dWINKANJI を使えるから,です.
とはいえ,cygwin版をそもそも試したことがないので,
なんかメリットがあれば教えてもらえると嬉しいです.
それ以前に -dWINKANJIが日本語を含んだテキストの印刷に
関係あるのかも確かめてませんが…
>>8 自分もこれから試そうかな状態なんですけど、以下の記事見てる感じだとcygwin版でも日本語扱えそうな感じがしたので。
http://www.akamoz.jp/you/uni/gs-cyg-ttf.htm 単純にこっちだと cygwin 側からも使いやすくていいかなーと。
それだけじゃなんなので・・・
doc-view.el も doc-view-ghostscript-program を設定してあげれば NTEmacs でも動くんですね。
まあ例によって日本語のファイル名だと動作が怪しいんですが・・・ coding-system-for-write を cp932 にしてるのに
ちゃんと動いてくれないorz
先日からGNU Emacs(x64)を使ってみてるんだが、あまりにも普通に使えるんで 拍子抜けするくらいだ。 最近の32bit版Emacsの最大バッファサイズは512MB(29bit)とかなりデカいので、 64bit版のメリットを感じる局面は少なさそうだが。
オレはお小遣い帳のオーバーフローで困っていたので重宝してるぜ。
どんだけ金持ちなんだよ
太陽までの距離をミリメートルで表すみたいなもんだな
GNU emacs(x64)って見たところかなり良さそうだな。 ただ、試す環境がねーw 値段は16bitで足りそうだが、俺の小遣い15bit...
正直32bitメモリ空間で足りなくなるような編集してないんだけど、 64bitになって動作が早くなったとかのメリットもあるんだろか。
16 :
10 :2012/01/07(土) 10:47:35.97 ID:s9gwTyDN0
64bit化のメリットじゃないけど、migemoが速いメリットはあるねぇ。 あと、使える機能が少ないとかいうデメリットも特にないので、俺はすっかり 乗りかえてしまったよ。
Windows7 だとショートカットのエンコーディングが UTF-16LE になってるから w32-symlinks.el そのままじゃ使えないのな・・・
64bit版ってAtokのインライン入力や シェルの日本語も問題ないですか?
cygwin(bash) + ansi-term がうまく動いてくれないんだけど ちゃんとうごかせてる人いる? 素の bash だと画面がガタガタになるわ fakecygpty 版の bash だと何故か入力の echo バックだけないわで・・・
64bit使ってみたけど、 32bit版と比較すると-Qで起動しても 初期状態で仮想メモリ500MB消費してるってどうなの??
emacs -qで起動した時のprivate working setサイズは20MBくらいだったが……。
migemo の dll 版を直接使用しているとかが関係してるんでないの?
多分ページ管理のオーバーヘッドでしょう。 x64(4Kバイトページ)では0.2%程度のメモリがページ管理に使用されるけど、 デフォルトで256G予約という事なので256G×0.2%で理論値どおり。 メモリ予約サイズは環境変数EMACS_MAX_HEAPで制御可能とどこかに書いてあった。
そう言われてコミットサイズを見るとたしかに500MB超えだった。なるほど。 まあ、そのサイズ分予約されてるだけなんで、あまり気にならんが。
いや、その500MBは管理用領域として実際に使っている。 デフォルト256Gというのは取り過ぎ。 環境変数EMACS_MAX_HEAPを実メモリの1-2倍程度にしとけばいいんじゃないかな。 EMACS_MAX_HEAP=8Gで37MB
実際どんな状況になったら 256G 使うような編集が出来るようになるんだろう 1年ぐらい立ち上げっぱでバッファ開きまくりとか?
動画編集.elとか。
GNU emacs(x64)ってパッチは公開してくれないんだろうか…
インストールすればdistfilesにまとまってると思うけど。
emacs-24.0.92-20120120.exe で C-g (keyboard-quit)で落ちるのは 拙者だけでしょうか。
gnupackで配布している奴? うちでは落ちなかったよ。 "GNU Emacs 24.0.92.1 (i386-mingw-nt6.1.7601) of 2012-01-20 on GNUPACK" on Windows 7 64bit
ちょっと関係ないけど公式で配布しているemacsバイナリよりemacs-init-timeが0.1秒縮まったぜ。
35 :
名無しさん@お腹いっぱい。 :2012/01/23(月) 09:58:44.57 ID:H0xs90tb0
>>34 そう、それ。
i386だから32bitじゃない?
>>35 WinXPで使用32bitと思っていたが、
>>32 で「on Windows 7 64bit」あったので。
>>35 別のWinXP上もC-gで確実に落ちる。
>>868 24.0.90-20110929 の時と全く一緒。
24.0.90-20111008 〜 24.0.92-20111211 で問題なし。"877" で対処法あり。
>>38 emacs-24.0.92-20120123.exe でWinXPでもC-gで落ちるのがなくなりました。ありがとうございました。
教えてください。dired 上で日本語のファイル名は表示できているのです が、'f' で開こうとすると File no longer exists; type `g' to update dired buffer とか言い出す始末です。設定はいろいろ試しました。 環境 Windows 7 GNU Emacs 23.1.50.1 (i386-mingw-nt6.1.7601) of 2009-11-03 on LENNART-69DE564 (patched) 試した設定 (set-language-environment "Japanese") (prefer-coding-system 'utf-8) 上記だけだと表示もままならないので (set-language-environment "Japanese") (setq file-name-coding-system 'utf-8-dos) にすると表示はできるようになりますが、例のエラーがでます。他の coding-system も試しましたが上手くいきません。このエラー自体は、 file-exists-p が nil を返すのが問題なようです。教えてください。
これでどうかな? ;;(set-language-environment "Japanese") (prefer-coding-system 'utf-8) (setq default-file-name-coding-system 'japanese-cp932-dos)
ダメ文字でしょ。 回避できるようなのを file-name-handler 利用して作ったことがあるけど、 虚しくなって使っていない。
ダメ文字対策はcのソースレベルでパッチ書いてる人いたけど あの手のが未だに残ってるってのも結構どうかと思う。
windowsとemacs間のファイルアクセスにはにSambaを噛ませる実装にしちゃえよと
ダメ文字って何?
いやいや、japanese-cp932-dos使えば、\を2バイト目に含んだ 芸能界\構わない.txt 芸能界\表示方法.txt とか、普通にdiredとかfind-fileできるけど?
違った。 芸能界\一覧表 とかは?
文字コードの設定しなくてもだいじょうぶなんですけどね。
俺のところだと「一覧表」って名前のフォルダ「がある」フォルダに dired で移動しようとするとアウト。 version は GNU Emacs 23.3.1 (i386-mingw-nt6.1.7601) of 2011-08-15 on GNUPACK c:\users\hogehoge\documents\一覧表 ってフォルダがあった場合、 c:\users\hogehoge から documents に移動しようとすると Format specifier doesn't match argument type がでる。 ちなみに file-name-coding-system は cp932 gnupack 標準配布の状態から設定変更なしな。
なお、file-name-coding-system を japanese-cp932-dos にしても同様だった。
ソース見たけどfile-name-coding-systemでどうこうできる問題じゃないよ。
おお、ファイル名(含むフォルダ名)の「末尾」の文字の 2バイト目が0x5cのときだけダメなんだな。
57 :
56 :2012/02/04(土) 10:27:05.33 ID:GXKnhdMA0
どれへのパッチか書き忘れてました。
>>56 は
emacs-24.0.92 + emacs-24.0.92-ime-2012-01-22.patch
へのパッチです。
56のパッチを当てたNTEmacs 23.4を使用しています。 普段常用している.emacs.d/init.elの中で、 initial-frame-alist(default-frame-alistにもコピー)にime-fontを追加すると、 最初にIMEをオンにした瞬間にw32fns.c/w32_abort()のダイアログが出て、 Emacsがappcrash(例外コード40000015)します。 デバッグ情報を含めてビルドした23.4のバイナリをgdbから起動して、 同じ事をすると、 Program received signal SIGTRAP, Trace/breakpoint trap. 0x760b3e2f in KERNELBASE!DeleteAce () from C:\Windows\system32\KernelBase.dll となります。
もちっと原因を絞り込めないかと調べてるところなんですが、 ・56のパッチを当てたgnupackの24系、23.3系バイナリでも、 普段常用している.emacs.d/init.elを読み込むと同じ結果(appcrash)になる ・ime-fontの設定を外して、フレームのfontをそのままIME用に使うと 正常に動作する ・initial-frame-alistやw32-ime-initializeなど最小限の設定のみを書いた minimal.elを作成し、-Q -l minimal.el で起動すると、 正常に動作する(ime-fontで指定したフォントがIME用に使われる)
これは、普段読み込んでいるelispパッケージの何かとコンフリクトしている のではないかと思い、 ・minimal.el に.emacs.d/init.elの内容を少しずつ追加していったら auto-install.elを読み込んだ後、auto-install-compatibility-setupを 呼び出すとappcrashした ので、auto-install.el おまえcarっと、確認のために、 ・minimal.elに最小限の設定 + auto-intall.elの読み込みと auto-install-compatibility-setup を追加した場合には正常に動作する 直接コンフリクトしているのではないみたい。ちなみに、 ・普段常用している.emacs.d/init.elの場合は、 auto-install-compatibility-setupの内容の末尾にある message(4行ぐらいミニバッファに表示する)をコメントアウトすると、 正常に動作する。
>>58 そのパッチは使ってないので経験則だけど、そういう症状はGCがらみの場合が多い。
frame_param_ime_fontが怪しい。
GNU Emacs(x64)使ってみたけど、32bit版に比べて遅い気がするんだが・・・。 何処といわれるとパフォーマンス計測したわけじゃないので明言はできないが、 EDEでC++ソースなどを開いた際や編集した際に semantic-dbやlispによるパースなどが行われているのか 数秒間固まる事がある。 タスクマネージャーでCPU時間をみてると5秒間ずっと17%ぐらい占有したままの状態になった。 結構頻繁にあるので困ってます。 32bit版でも、同様のシチュで重くなることはあるけれど 64bit版にくらべるとかなり軽微な感じでした。
63 :
56 :2012/02/08(水) 07:19:40.89 ID:AVQtr/kd0
>>58 あらら…私の環境では起きなかったので気付きませんでした。すみません。
私も調べてみたいとおもいますがどうもうまく現象が再現できません…
(auto-install.el読み込み後auto-install-compatibility-setup呼び出しても
起きない)
>>61 GCまわり詳しくないのですが何か手がかりになりそうな情報ご存知でしたら
ご教示いただけるとありがたいです。
>>63 スマン。
最近のemacsはコンサーバティブGC使ってるので
>>61 はウソだ。忘れてくれ。
65 :
58 :2012/02/10(金) 10:43:26.75 ID:mEKuvN1H0
>>56 いえいえ、わざわざ調べてもらってすいません。
私自身も普段はime-fontを設定していない(フレームのfontをそのまま利用)しているのですが、せっかく現象が起きる環境があるので、試行錯誤の末、ime-fontを設定した場合でも問題が起きない実装にしてみました。
http://www1.axfc.net/uploader/File/so/75179 どうやら、58さんがスレ2で作成したパッチのうちの、
>#あと w32_set_ime_font 呼び出しを w32_set_ime_conv_window 内へ移動。
が、appcrashを起こす原因になっていたようです。
それ以前の実装を参考に、WM_IME_NOTIFYでw32_set_ime_fontを呼び出し、w32_set_ime_conv_windowでは呼び出さないようにしたらappcrash
しなくなりました。
以前からIMEとemacsでフォントが異なるのが気になっていましたが、
触発されていじってみました。23.4+IMEパッチ(2011年11月頃)へのパッチです。
(フォント設定の修正だけでなく、プロトタイプ宣言の追加等も入っていますが、
うまく切り出せなかったのでご容赦)、パッチのオフセットはずれていると思います。
当初、フレームの日本語フォントとime-fontの設定を分ける意義がわからなかっ
たので、フレームの日本語フォントと同一にするだけにしようと思っていました
が、ime-fontで別フォントにする機能もなんとなく作りこんでしまいました。
・フレーム属性ime-fontにfontset名またはxlfd名を指定できます。
・指定がない場合はフレームの日本語フォント("あ"を表示するフォント)を使用します。
・フォントのサイズはface-font-rescale-alistの設定を適用します。
・フォント設定(w32_set_ime_font)と、変換ウインドウ位置設定(w32_set_ime_conv_window)呼び出しの最適化。
http://hp.vector.co.jp/authors/VA052357/23.4-ime-font.patch.gz >>62 32bitでsemanticは使ったことがなかったので、こんなもんかと思っていましたが、
プロファイルかけてみます。
>>66 さっそくバグ発見してしまったので、差し替えました。
2/11 0:28以前に取得した方は再取得してください。
ime-fontにfont-specも許すようにしました。(こんなの誰が使うんだ?)
(default-frame-alist
`((ime-font . ,(font-spec :family "あずきフォント" :size 12))))
68 :
56 :2012/02/11(土) 11:41:47.05 ID:NIqELbOX0
>>65 解決してよかったです。自分のしょぼいパッチが迷惑かけたかと思って冷や汗
ものでした^^;
>>66 #…もしかしてBOWの方?
ime-fontの設定しなくても日本語部分のフォント使うんですね。すごいです。
ただ、(
>>65 ,
>>66 どちらもで)ちょっと気になるので一点だけ。
w32_set_ime_fontの呼び出しがそこだと
・2つフレーム開く
・一方のフレームでフォント設定変える
・「IME ONのまま」フレームを切り替える
(frame-parameterのime-fontの設定はなし)
などとするとフォントがあわなくなるようです。
#まあ、普段そんな使い方してるわけではないので気にしなければいいだけですが
よくわかってないですがとりあえずWM_IME_NOTIFYで
wParam == IMN_OPENSTATUSWINDOWの時にもw32_set_ime_fontを呼び出すように
してみるとうまくいっているような気がします。
69 :
58 :2012/02/11(土) 11:59:26.43 ID:P9EhUiC30
>>66 >当初、フレームの日本語フォントとime-fontの設定を分ける意義がわからなかっ
>たので、フレームの日本語フォントと同一にするだけにしようと思っていました
>が、ime-fontで別フォントにする機能もなんとなく作りこんでしまいました。
これは、当初の実装でフォントセットを正しく扱うのが(当時のパッチを
書いた人にとって)面倒だったからじゃないかと思ってます。
フォントセットでASCII部分と日本語部分に別のフォントを割り当てた場合、
フレームのフォント(hfontでハンドルが得られるやつ)は、ASCII部分の
フォントで、IME用にこれをそのまま割り当てると、それが英語フォント
だった場合は、(暗黙または明示的な)フォントリンクによって、
日本語部分とは別のフォント(たとえばMS UIゴシックなど)が
IME用に使われてしまいます。
で、正統的な解決法はOOTAさん(じゃなかった、66の中の人)みたいに
日本語部分のフォント(のうちのどれか)を取得して設定することなんだけど、
それが面倒だったので、「ime-fontで明示的に設定してね」ってやった
のではないかと。
フォントセットの日本語部分のフォントを取り込めるなら、ime-fontを使う
場面は、「目が悪いので変換時はデカイフォントがいいんじゃ」みたいな
ものしか思い浮かびません...
あっヤバいことに気づいてしまった。ハングしないのはまぐれですね。w wndメッセージを処理するスレッドとlispスレッドは別なので、 メッセージループから直接lispデータに触っちゃだめじゃん。
gnupackのemacs-23.3-ime-2011-03-13.patchではsrc/w32term.cの
w32_read_socketでやってますね。最初見たときなんでここでやってたのか
よくわかりませんでしたが
>>58 さんの現象、たぶんここ変えちゃったからです
よね。
72 :
58 :2012/02/12(日) 00:24:35.21 ID:600xHArL0
あー、2011-03-13で、w32fns.cのWM_IME_NOTIFY受け取ったところで、 my_post_msgでWM_MULE_IME_SET_FONTをポストしてるところだ。 で、w32term.cのほうでそのメッセージを受け取ってw32_ime_fontを 呼んでIME用フォントの処理をする、と。 こんなまだるっこしいことしてるのはスレッドが別だからなのか。 確かに、gdbで挙動追いかけてるときに、ime-fontの指定があるときに 呼び出してるfill_in_logfont()でクラッシュすることが多かったんだけど、 そこでもさらにいろいろlispデータにさわってます。
73 :
66 :2012/02/12(日) 10:43:37.82 ID:wXQsDsdp0
my_post_msgでポストして、lispスレッドからset_ime_fontを呼び出すようにすると
何故かIMEフォントが設定できない。なにか間違ってるのだろうか…
RECONVERSIONの方もヤバそうだけど、こっちはwnd_procスレッドの方で結果を返さ
ないといけないから、厄介ですね。
>>56 > #…もしかしてBOWの方?
はい。
74 :
58 :2012/02/12(日) 12:59:42.93 ID:600xHArL0
gnupackのIMEパッチ(2011-03-13)を参考にして、論理フォントの生成と
IMEへのフォント設定を別の関数に分離してみたもの。
gnupackの最新IMEパッチ(2012-02-05)を当てた後で当ててください。
http://www1.axfc.net/uploader/File/so/75265 WM_IME_NOTIFYを受け取ると、my_post_msgでWM_MULE_IME_SET_FONTをポストし、
w32term.c/w32_read_socket()でそいつを受け取ったときに
論理フォントを生成する関数が呼び出されます。
なお、関数名は、わかりやすさを考慮して、元のw32_ime_font()から
w32_set_ime_logfont()に変更しています。
あと、68での指摘を受けて、WM_IME_NOTIFYで
wParam == IMN_OPENSTATUSWINDOWの時にも
同様にメッセージをポストするようにしています。
これで、w32_set_ime_font()は、生成済みの論理フォントを
IMEに設定するだけのシンプルな内容に戻りました。
こいつは、w32fns.c/w32_wnd_proc()の中で、
WM_IME_STARTCOMPOSITIONと
WM_MULE_IMM_SET_CONVERSION_WINDOWを
受け取ったときに呼び出しています。
75 :
56 :2012/02/12(日) 14:09:45.26 ID:hlYb7Nrh0
やはりBOWの中の人でしたかw さすがです。 #BOWって何?って人はBSD on Windowsでググってみてください
GNU Emacs(x64)ですが 23.4のビルド、デバッグでおこなわれてませんか? 実行するとサイドバイサイド系の警告吐くので、再配布パッケージがらみなのかな。 いちおう動作していた23.3と23.4のマニフェスト確認してみたけど 23.3がMicrosoft.VC90.CRT 23.4がMicrosoft.VC90.DebugCRT になってました。
77 :
66 :2012/02/13(月) 20:40:16.92 ID:mH1EcHN70
うっ、すみません。作り直します。 反応があるのはうれしいのですが、「ここはサポート掲示板じゃねーぞ」と 言われないようにblogかvectorの方にコメントしていただけると幸いです。
>>77 > うっ、すみません。作り直します。
> 反応があるのはうれしいのですが、「ここはサポート掲示板じゃねーぞ」と
> 言われないようにblogかvectorの方にコメントしていただけると幸いです。
あ、了解です、すいません。
79 :
56 :2012/02/18(土) 15:26:50.93 ID:wr6AxFQ70
80 :
56 :2012/02/18(土) 15:27:30.58 ID:wr6AxFQ70
>>79 の続き
・gccでのビルドだとフォント名が日本語のものがIMEのフォントに設定できな
かったので
strcpy(ime_logfont.lfFaceName, SDATA(family)); を
strcpy(ime_logfont.lfFaceName, SDATA(ENCODE_SYSTEM(family)));
にしました。
#環境がないのでわかりませんがMSVCだと問題ないのかな。
・WM_MULE_IMM_SET_CONVERSION_WINDOWで毎回w32_set_ime_font()
((ImmSetCompositionFontProc)())を呼ぶのは冗長な気がしたので
(一応
>>56 のパッチでは設定が変わってなければ(ImmSetCompositionFontProc)()
は呼ばれないようにしていたつもり)、
w32_set_ime_logfont()後にメッセージを送ってw32_wnd_proc()で
w32_set_ime_font()を呼ぶようにしてみました。
#w32_read_socket()でw32_set_ime_font()を呼んでもIMEのフォントに設定
#されないようなので。
#よくわかってないけどこんなんでいいのかな…
・
>>68 に書いた、フレームのフォントが異なるフレーム間をIME ONのまま移動
するとIMEのフォントがあわなくなる、というのがC-x 5 oとかで移動する場合は
なぜか起きなくなったのですがマウスクリックでの移動だと起きてしまいました。
IMEで文字入力を開始したときにWM_IME_NOTIFYでwParam==269なのが飛んできてる
ようなので、そのときもWM_MULE_IME_SET_FONTをポストするようにしてみると
一瞬違うフォントがみえることがあるけどIMEのフォントがあうようになったので
そうしています。#怪しいです^^;
>>79 emacs-24.0.03 の方ですが、
私の環境では、IME-on するたびに警告音がなります。
*Messages* バッファに、
completing-read-default: Wrong type argument: stringp, (nil . "jisx0208*-*")
などと出るのですが、私の環境だけ?
init.el の中を探してもそれらしい場所は見つからず。
82 :
66 :2012/02/22(水) 20:30:49.70 ID:hSyxfiZ10
RECONVERSIONがwindowスレッドからlispデータにアクセスしていてまずそうなので、
大改修しました。APC(Asyncronous Procedure Call)でLispスレッドに関数を送り込み、
Lispスレッドで処理します。メモリアロケータもwindowsスレッドから呼べるよう、
排他制御しました。IMEフォントもこの機構を使ってLispデータから情報を取るように
しました。ついでにIMR_DOCUMENTFEED(前後参照変換)にも対応してみました。(Win7/MS-IMEで動作確認)
IMEフォントの切り替えの作りこみが不十分(フレーム切り替えとか)だと思いますが、
しばらく時間的にいじれなくなるので、公開します。
x64版での変更からは独立するようにしたつもりなので、32ビット版でもいけると思っています。
2011年11月頃のimeパッチからの差分になっているはず(はずばかりで申し訳ない)
http://hp.vector.co.jp/authors/VA052357/23.4-ime.patch.gz .\configure.bat --enable-w32-ime --cflags=-DRECONVERSION --cflags=-DDOCUMENTFEED
83 :
79 :2012/02/22(水) 21:11:16.66 ID:xKU2HDO30
>>81 emacs-24.0.93の方を使っていますが私の環境ではおきていません。
-qオプションを指定して起動してもおきますか?
84 :
66 :2012/02/22(水) 22:15:12.16 ID:hSyxfiZ10
申し訳ありません。
>>82 はいったんひっこめます。
>>83 お騒がせしました。init.el のせいのようです。
整理して 今やもう古い Meadow 用のコードを削除したら問題は起きなくなりました。
if (featurep 'Meadow) していたのですが。
86 :
66 :2012/02/23(木) 00:42:20.81 ID:olx80Nzh0
87 :
名無しさん@お腹いっぱい。 :2012/03/10(土) 19:05:50.22 ID:t4q/afjt0
>>82 パッチを試してみようと思ったのですが,
適用元の状態が良く分からず,上手くいきません.
素のソースファイルとの差分パッチを公開いただくことは可能でしょうか?
>>88 x64版のパッチ(x64版インストール先のdistfiles/diffs-0.zip内のdiffs-0.diff)
を当てたemacs-23.4へだとすこし行がずれますが当たるみたいですよ。
gnupackのbasicとdevelってどう違うのん?
92 :
名無しさん@お腹いっぱい。 :2012/04/24(火) 14:33:05.38 ID:lBglecSp0
Emacs始めようとしたのだが、背景白でまぶしくてかなわない。 お薦めのカラーセットはどうすればいいかな?
XP x86上で、gnupack氏のemacs-23.4-20120324.exeを使用しています。 IMEをオンにしていると、入力中にフレーム内の文字の一部が消えます。 消えた部分をカーソルでなぞるか、emacsをアクティブにし直せば再描写 されるのですが。 emacs-24.0.94-20120324.exeでも同様でした。 設定は、~/.emacs.d/init.elに以下のみで試しました。 ;;;; -*- coding: utf-8-emacs-unix -*- (setq default-input-method "W32-IME") (w32-ime-initialize)
>>93 私の所でもGoogleIMEを使うと起きます。ATOK、SKKでは起きないようです。
Win7の64bit ですが、GNU Emacs 64bit のほうがフレームが消える確率がかなり高いです。
ATOKに切り替えようかと思っていますけど、なおったらいいな。
emacs上でGoogle IMEを使っています。 (setq default-input-method "W32-IME") (w32-ime-initialize) init.elにこう設定をするとkanjiキー(半角全角キー)でIMEの状態をトグルできなくなってしまいます。 原因を探った所、どうやらkanjiキーを押すとemacsとGoogle IMEの両者が共に状態をトグルさせようとし、 その結果状態が2回反転され元の状態から変わらない、というカラクリのようでした。 (defun nop () (interactive) t) (global-set-key (kbd "<kanji>") 'nop) そこでその後ろでこうした所うまくトグルされるようになったのですがemacsがIMEの状態変化に気づけないようで モードラインの最左が[Aa]のまま変化しなかったり、ON/OFF毎に設定しているカーソルの色が変化しなくなりました。 MS IMEではこの様なことは起こりませんでした。良い解決方は無いでしょうか?お知恵を拝借したいです。 emacs This is GNU Emacs 23.4.1 (i386-mingw-nt6.1.7600) of 2012-03-24 on VMWIN2 Google IME GoogleJapaneseInput-1.4.1031.0
96 :
名無しさん@お腹いっぱい。 :2012/05/17(木) 11:51:11.09 ID:ShWIaFJn0
>>93 >>95 gnupack emacsをWin7で使ってるけどフツーに使えとるよ。
ちなみに日本語関連の設定はこんなん
;;; 日本語環境の設定
(set-language-environment "Japanese")
(set-keyboard-coding-system 'japanese-cp932) ;; おまじないかも
;;; IME の設定
(setq default-input-method "W32-IME")
(setq-default w32-ime-mode-line-state-indicator "[--]") ;; おこのみで
(setq w32-ime-mode-line-state-indicator-list '("[--]" "[あ]" "[--]")) ;; おこのみで
(w32-ime-initialize)
;;; IME ON/OFF 時にカーソル色を変える。
(setq ime-activate-cursor-color "#00a000")
(setq ime-inactivate-cursor-color "#000000")
(set-cursor-color ime-inactivate-cursor-color)
;; ※input-method-activate-hook, input-method-inactivate-hook じゃない方がいい感じになる。
(add-hook 'w32-ime-on-hook
(function (lambda ()
(set-cursor-color ime-activate-cursor-color))))
(add-hook 'w32-ime-off-hook
(function (lambda ()
(set-cursor-color ime-inactivate-cursor-color))))
>>95 Emacs なんだから
C-\ でいいじゃん。
>>96 詳細なレスありがとうございます。私もgnupack emacsをWin7で使っています。
.emacsに上記だけを書き試してみましたが、うまくいきませんでした。
IMEは何をお使いでしょうか?問題点は半角全角キーでIMEのON/OFFをトグルさせたいときにうまくいかないと言う点です。
IMEがMS IMEやSKKの場合はうまくいくのですがGoogle IMEの時はうまくいきませんでした。
>>97 IMEのデフォルトトグルキーである漢字キーを使い今までと同じように1キーで切り替えたいです。
>>98 Google IME の設定でどうにかできないのなら
w32-ime-state-switch を書き換えて IME のモード変更を
しないようにすれば?
100 :
名無しさん@お腹いっぱい。 :2012/05/22(火) 17:54:36.55 ID:66uSsYXU0
ずっと前に効いた質問、やっと見つけた。 キーのリマッピングできるソフトはKeyRemap4MacBook
101 :
名無しさん@お腹いっぱい。 :2012/05/29(火) 21:42:07.74 ID:0/xVA/fQ0
>>98 96です。自分もGoogle IMEを使用しています。
現在自宅にいてVistaで実験してるのでなのでなんとも言えませんが。
私もできるだけ最小の構成でやってみたのですが、ちゃんとトグルしてまして...
やったことといえば、emacs/binをPATHに追加して、
.emacdはutf-8-unixで書いて以下の一文+
>>96 の設定をしただけです。
;;;; -*- mode: lisp-interaction; syntax: elisp; coding: utf-8-unix -*-
Google IME: 1.4.1031.0
emacs-version: GNU Emacs 23.4.1 (i386-mingw-nt6.0.6002) of 2012-03-24 on VMWIN2
参考に、Google IMEのキー設定のスクショ貼っときます。
ttp://up3.viploader.net/pc/src/vlpc011599.png
102 :
93 :2012/05/30(水) 19:21:59.83 ID:ruui1a1X0
Microsoft Office IME 2010を使用していますが、20120527版でも症状変わらず。 20120205版に戻しました。
>>95 の人とはまた別の問題だと思いますが、うちではバッファ切り替え時の
IME状態の引き継ぎがおかしいです。状態を引き継がない設定にしているんですが、
1) あるバッファでIMEをOFFにしておいて、
2) 別のバッファを開き、IMEをONにして、
3) 元のバッファに戻ると、カーソルはIME ONの色、モードラインはIME OFFの表示、
実際に入力するとIME ONになっている。
4) ここで、半角/全角キーを押すと、モードラインはIME ONの表示に変わり、
他はそのままで表示と状態の整合がとれる。
となってしまいます。何か対策はないでしょうか。
Windows XP SP3 32bit、MS IME スタンダード 2003、Emacsはgnupackの20120324版、
設定は付属のinit.elのカーソルカラー関連をアンコメントしています。
;; 標準IMEの設定
(setq default-input-method "W32-IME")
;; IME状態のモードライン表示
(setq-default w32-ime-mode-line-state-indicator "[Aa]")
(setq w32-ime-mode-line-state-indicator-list '("[Aa]" "[あ]" "[Aa]"))
;; IMEの初期化
(w32-ime-initialize)
;; IME OFF時の初期カーソルカラー
(set-cursor-color "red")
;; IME ON/OFF時のカーソルカラー
(add-hook 'input-method-activate-hook
(lambda() (set-cursor-color "green")))
(add-hook 'input-method-inactivate-hook
(lambda() (set-cursor-color "red")))
;; バッファ切り替え時にIME状態を引き継ぐ
(setq w32-ime-buffer-switch-p nil)
104 :
103 :2012/06/06(水) 10:10:41.82 ID:7L/DUxhl0
すみません。 × 状態を引き継がない設定にしているんですが、 ○ 状態を引き継ぐ設定にしているんですが、 です。
105 :
103 :2012/06/10(日) 22:42:16.67 ID:FEHnwzBn0
>>103 ですが、一応自己解決しました。
w32-ime-sync-stateという関数を書き換えて、
バッファが切り替わるたびにIMEのON/OFF((ime-get-mode)の値)に合わせて
activate-input-methodまたはinactivate-input-methodするようにすれば、いけました。
モードラインの表示も直接(ime-get-mode)の値を評価した方が良さそうだし、
他にももっと整理した方が良さそうだけど、一応動いてるからいいや。
Emacs初心者なのですが、現在設定ファイルを書いていて、c-x c-fなど、 起動時のワーキングディレクトリをホームディレクトリにするために、 (cd "~/") を設定したのですが、反映できません。 (setq inhibit-startup-message t) を追加したら、反映できたのですが、 なぜ、このようことがおきるのでしょうか? OS: Windows 7 64bit Emacs: emacs-24.1-20120616.exe (gnupackのもの) 環境変数: HOME=C:\home\watashi 備考: runemacs.exeから起動
>>106 期待通りに動作しない原因については後でゆっくり自分で調べてもらうとして、
Windows なら、起動ショートカットのプロパティの中の作業フォルダを設定することで
「起動時のワーキングディレクトリをホームディレクトリに設定」できる。
24.1出たのでMinGWでコンパイルしようとしたけど makeがいちいちアクセス拒否で死んで殺意覚える
109 :
56 :2012/07/14(土) 15:59:53.99 ID:1VzMGj390
>>93 XPでOffice IMEを使うと私のところでも発生しました。MS IME Standardだと
発生せず。
w32_wnd_proc() の WM_IME_STARTCOMPOSITION の処理で変換ウインドウを
設定した時だけデフォルトの処理(goto dflt)をするようにすると解消した
ようです。
emacs-24.1-ime-2012-06-16.patch後に当ててください。
http://www1.axfc.net/uploader/File/so/81075 文字が消えるのとは関係ないですがIMEフォント設定のところを少し変えて
みてます。
110 :
93 :2012/07/16(月) 15:32:00.02 ID:aYYPZ3Wn0
>>109 56さん、gnupackのksugitaさんありがとうございました。
111 :
名無しさん@お腹いっぱい。 :2012/07/25(水) 16:36:22.96 ID:URn2zDlY0
gnupack_devel-9.00 を利用しています。 utf-8でエンコードされた漢字を含むバッファに対し、M-| (shell-command-on-region) を使って、grep 'あああ' のような漢字コードをパラメータに含むコマンドを実行する ことは可能でしょうか?
113 :
名無しさん@お腹いっぱい。 :2012/07/26(木) 12:25:01.69 ID:rAADqd/n0
>>112 やってみてだめなので。
"あああ
いいい"という文字列が入っているuft-8のバッファを全選択して、
M-|の後に(つづく..)
114 :
名無しさん@お腹いっぱい。 :2012/07/26(木) 12:27:06.03 ID:rAADqd/n0
■ (modify-coding-system-alist 'process ".*sh\\.exe" '(utf-8 . utf-8)) の場合 ・sort ---> OK ・grep 'あああ' ---> エラー
115 :
名無しさん@お腹いっぱい。 :2012/07/26(木) 12:29:25.86 ID:rAADqd/n0
■ (modify-coding-system-alist 'process ".*sh\\.exe" '(utf-8 . cp932)) の場合 ・sort ---> エラー ・grep 'あああ' ---> no output
ここらへんすごく根が深いんだよね
117 :
名無しさん@お腹いっぱい。 :2012/07/26(木) 13:09:36.45 ID:rAADqd/n0
shell-command-on-regionから呼ばれているcall-process-regionにアドバイス 入れてみた。でも、どこかに影響が出そう。 (modify-coding-system-alist 'process ".*sh\\.exe" '(utf-8 . cp932)) (defadvice call-process-region (before ad-call-process-region activate) (if (ad-get-arg 7) (ad-set-arg 7 (concat "nkf -w | " (ad-get-arg 7)))))
118 :
名無しさん@お腹いっぱい。 :2012/07/26(木) 15:58:33.92 ID:rAADqd/n0
113のテストは、LANG=ja_JP.UTF-8 でしました。 これをLANG=ja_JP.cp932にして、processの入出力もcp932にすれば、 アドバイスの設定しなくてもうまくいきました。 だから、gnupackのデフォルト値はcp932なんですかね..。
Windowsの仕様だったかでどっかがcp932決め打ちになってるってのだけは覚えてる NTEmacsスレの過去ログでもそこらへん話題になってたはず すっきりした解決策はなかったような
自分の init.el 見て思い出した。 コマンド引数が cp932 決め打ちなんだった。 パイプで渡す内容が utf-8 なのは問題ないとしても grep 'ほげ' は cp932 で渡さないと行けないんだったと思う。
121 :
名無しさん@お腹いっぱい。 :2012/07/26(木) 17:17:09.94 ID:rAADqd/n0
・コマンド引数はcp932でなくてはならない ・コマンド引数とプロセスの入力に使うコーディングシステムは、同一でなくてはならない ということですかね。 コマンド引数のコーディングシステムのみ指定できる変数があればいいのですが..。
自分のとこも結局関数に advice つけて対処したよ。nkf は流石につかわなかったけど。 こんな感じ。 (defmacro in:set-function-coding-system (function decoding encoding) "関数使用時のコーディングシステムを設定する. 関数 FUNCTION に対し、実行時に DECODING を `coding-system-for-read' に、 ENCODING を `coding-system-for-write' に設定する advice を作成、活性化する." `(defadvice ,function (around ,(intern (format "in:ad-%s-coding-setup" function)) activate compile) ,(format "関数実行時のコーディングシステムを以下に置き換える. `coding-system-for-read': %s `coding-system-for-write': %s" (eval decoding) (eval encoding)) (let ((coding-system-for-read ,decoding) (coding-system-for-write ,encoding)) ad-do-it))) (set-language-environment 'Japanese) (prefer-coding-system 'utf-8-dos) (set-file-name-coding-system 'cp932) (setenv "LANG" "ja_JP.UTF-8") ;; シェルコマンド呼び出しだけ入力をcp932でエンコード (in:set-function-coding-system shell-command 'undecided 'cp932) (in:set-function-coding-system shell-command-on-region 'undecided 'cp932)
加えて grep、lgrep、rgrep にも同様の設定してた。 M-x shell ”以外” を設定しようとしてたって感じだなぁ。 (in:set-function-coding-system rgrep 'utf-8 'cp932) (in:set-function-coding-system lgrep 'utf-8 'cp932) (in:set-function-coding-system grep 'utf-8 'cp932)
124 :
名無しさん@お腹いっぱい。 :2012/07/26(木) 18:03:28.34 ID:rAADqd/n0
上記の設定だと、漢字の入ったリージョンに対し、 M-| grep 'リージョンにある漢字' とすると、エラーになりませんか? grepの入力が、utf-8を期待しているから。
もう一個抜けてた。 結局その入力のギャップが解決しないから、異なるエンコードのファイルもまとめて検索できる lv 付属の lgrep を使うようにしてパラメータと入力のギャップを埋めたんだった。
126 :
名無しさん@お腹いっぱい。 :2012/07/26(木) 18:28:48.85 ID:rAADqd/n0
やはりそうですよね。 なので、117 に行きついたのでした。M-| sort なども動くので。 でも、なんかエレガントでない。もっといい解決方法がないのかなぁと。
128 :
名無しさん@お腹いっぱい。 :2012/07/26(木) 18:56:28.93 ID:rAADqd/n0
>> 127 このページも参考として見ていました。 とりあえず、参考まで現在の私の設定です。 (set-language-environment 'Japanese) ; なくてもいいかも (prefer-coding-system 'utf-8) ; なくてもいいかも (set-file-name-coding-system 'cp932) (setq default-process-coding-system '(utf-8 . cp932)) (modify-coding-system-alist 'process ".*sh\\.exe" '(utf-8 . cp932)) ; 上書き用 ;; M-x shell 実行する際に必要な設定 (defadvice shell (around ad-shell activate) (let ((coding-system-for-write 'utf-8)) ad-do-it)) ;; 漢字を含むバッファを入出力として shell コマンドを実行する際に必要な設定 (defadvice call-process-region (before ad-call-process-region activate) (if (ad-get-arg 7) (ad-set-arg 7 (concat "nkf -w | " (ad-get-arg 7)))))
129 :
名無しさん@お腹いっぱい。 :2012/07/26(木) 19:36:44.16 ID:rAADqd/n0
↑ 以下も最初の方にあったほうがいいですね。 (setenv "LANG" "ja_JP.UTF-8") gnupackの場合、config.iniでLANGを設定できるので、init.elには書いていないのです。
おまいら凄いな− 参考になるのでもっとやってください。
131 :
名無しさん@お腹いっぱい。 :2012/07/26(木) 23:19:50.82 ID:TYT5Vlom0
>>130 漢字コードの件は、上記が今の自分の最善解なので、これ以上のネタなし。
その他に参考となりそうな設定なら晒せるけど、そんなんにここ使っていいんかな?
イイヨイイヨー
133 :
名無しさん@お腹いっぱい。 :2012/07/26(木) 23:43:37.79 ID:TYT5Vlom0
文字制限に引っかかるのでちょびちょびで。いろいろなところで紹介しているもの ばかりと思うけど。
134 :
名無しさん@お腹いっぱい。 :2012/07/26(木) 23:50:41.94 ID:TYT5Vlom0
;; windowsでファイルもしくはディレクトリを開く (defun winstart (filename) (interactive) (w32-shell-execute nil (unix-to-dos-filename filename))) ;; ファイル名称をDOS形式に変換する (defun unix-to-dos-filename (filename) (replace-regexp-in-string "/" "\\\\" filename))
135 :
名無しさん@お腹いっぱい。 :2012/07/26(木) 23:52:57.51 ID:TYT5Vlom0
;; diredでwindowsに関連付けられたファイルを起動する (define-key dired-mode-map "z" '(lambda () (interactive) (winstart (dired-get-filename nil t)))) ;; diredで開いているフォルダをMS Explorerで開く (define-key dired-mode-map "E" '(lambda () (interactive) (winstart (dired-current-directory))))
136 :
名無しさん@お腹いっぱい。 :2012/07/26(木) 23:55:37.33 ID:TYT5Vlom0
;; windowsで開きたいファイルか? (defun windows-open-file-p (file) (let (ext) (if (and (file-regular-p file) (setq ext (file-name-extension file))) (progn (setq ext (upcase ext)) (or (equal ext "DOC") (equal ext "XLS") (equal ext "PDF") )))))
137 :
名無しさん@お腹いっぱい。 :2012/07/26(木) 23:57:40.44 ID:TYT5Vlom0
;; find-fileのアドバイス (defadvice find-file (around ad-find-file-winstart-setup activate) (let ((file (ad-get-arg 0))) (if (windows-open-file-p file) (winstart file) ad-do-it)))
138 :
名無しさん@お腹いっぱい。 :2012/07/27(金) 00:00:07.56 ID:7yNnR3yv0
;; find-file-other-windowのアドバイス (defadvice find-file-other-window (around ad-find-file-other-window-winstart-setup activate) (let ((file (ad-get-arg 0))) (if (windows-open-file-p file) (winstart file) ad-do-it)))
パスの変換は自分はこうやってるなあ。 ~/.emacs.d/bin とかを Emacs 上でのみパスに追加とかしたかったので相対→絶対の変換も入れてた。 (defmacro in:system-path (path &optional base) "PATH をシステムで認識可能なパスに変換する. PATH が相対パスの場合 `expand-file-name' で絶対パスに変換される. BASE が non-nil の場合は絶対パス変換時の基準ディレクトリと見なす. 環境変数などの Emacs 外のプログラムに参照される場合に用いる." (if (eq system-type 'windows-nt) `(subst-char-in-string ?/ ?\\ (expand-file-name ,path ,base)) `(expand-file-name ,path ,base)))
140 :
名無しさん@お腹いっぱい。 :2012/07/27(金) 00:02:52.80 ID:7yNnR3yv0
以上で、dired がファイラみたいになる。とか。 136 の(equal ext "DOC") の行を増やすと、z でなく f や o で起動する windowsアプリが増える。
equal ext "xxx" の羅列は流石に list と memq 使ったほうがいいんでないの? (setq external-app-exts '("DOC" "XLS" "VBS") ... (if (memq ext external-app-exts)
142 :
名無しさん@お腹いっぱい。 :2012/07/27(金) 06:34:49.59 ID:7yNnR3yv0
143 :
名無しさん@お腹いっぱい。 :2012/07/27(金) 06:37:01.29 ID:7yNnR3yv0
144 :
名無しさん@お腹いっぱい。 :2012/07/27(金) 12:08:12.73 ID:sdXRmEiY0
>>134 をまとめてシンプルにしてみた。
;; windowsでファイルもしくはディレクトリを開く
(defun winstart (filename)
(interactive)
(w32-shell-execute nil (replace-in-string filename "/" "\\\\")))
これで、フォルダでもファイルでも、Windowsのシェルに任せて開くことができる。
"/"の変換をしているのは、ファイルサーバの先のファイルなど、UNCのパスを
開くのに必要だったから。ローカルのファイルなどは、そのままでも開くみたい。
NTEmacs固有の設定ってしてるようで意外としていないなぁ。 region と cua-rectangle の色を SystemHilightText/SystemHighlightにしてWindows標準っぽくしてるぐらいか。
146 :
名無しさん@お腹いっぱい。 :2012/07/27(金) 23:57:34.56 ID:7yNnR3yv0
>>145 ntemacs から shell とか使うのに、設定必要ない?
shell 使う人って、あんまりいないんですかね?
cygwin向けにエンコード設定したり bash じゃなく fakecygpty に差し替えたりとかしてるけど NTEmacsだからというよりCygwin使うからって感じだしなぁ あーあと印刷の設定もあるか。
148 :
名無しさん@お腹いっぱい。 :2012/07/28(土) 00:16:50.48 ID:Ai+fWoXo0
>>148 このブログの設定に加えて、C-d もまともに動かなかったから
(defadvice comint-send-eof (around in:ad-comint-send-eof activate compile)
"直接 C-d を送信."
(process-send-string nil "\C-d"))
も追加してるなぁ
なんか色々不毛だよね
150 :
名無しさん@お腹いっぱい。 :2012/07/28(土) 00:36:17.60 ID:Ai+fWoXo0
不毛なの、もう一つ。ssh接続。
ちょっと前まで、plink使っていたけど、
>>128 の設定にしてからうまく動かなく
なって、現在ハマリ中。
f_ssh.exe でうまくいきそう。
設定見るとf_sshの設定やってたわ・・・TRAMP用、マルチホップ非対応のやつ ;; Tramp (eval-after-load "tramp" '(progn (setq tramp-default-method "ssh") ;; fakecygpty 仕様の ssh に置き換え (マルチホップは未検証) (when (executable-find "f_ssh") (dolist (m tramp-methods) (let ((lp (assq 'tramp-login-program m))) (if (string= "ssh" (cadr lp)) (setcdr lp '("f_ssh"))))))))
152 :
名無しさん@お腹いっぱい。 :2012/07/28(土) 08:10:03.04 ID:Ai+fWoXo0
sshの先の漢字がうまくいかない。
153 :
名無しさん@お腹いっぱい。 :2012/07/28(土) 21:19:20.70 ID:Ai+fWoXo0
自己解決した。
>>128 の設定に追加。
;;
>>128 の設定の.*sh.exeのcoding設定の後に以下を追加
;; この設定により、
>>128 に書いた shell のアドバイスが不要となった
(modify-coding-system-alist 'process ".*f_bash\\.exe" '(utf-8 . utf-8))
(setq tramp-default-method "ssh")
(setq tramp-encoding-shell "f_bash.exe")
;; tramp による sshログイン時に漢字がでない原因を排除
;;
http://www.gnu.org/software/emacs/manual/html_node/tramp/Remote-processes.html#Running%20a%20debugger%20on%20a%20remote%20host (let ((process-environment tramp-remote-process-environment))
(setenv "LC_ALL" nil)
(setq tramp-remote-process-environment process-environment))
;; explicit-shell-file-name に f_bash.exe を設定しているので、置き換える
(defadvice shell (around ad-shell-tramp-setup activate)
(if (file-remote-p default-directory)
(let ((explicit-shell-file-name "/bin/bash"))
ad-do-it)
ad-do-it))
154 :
名無しさん@お腹いっぱい。 :2012/07/28(土) 21:21:30.87 ID:Ai+fWoXo0
plink も f_ssh も使わなくても動いてしまった。 でも、以下の設定が正しい方法なのか、自身なし。 (setq tramp-encoding-shell "f_bash.exe")
155 :
名無しさん@お腹いっぱい。 :2012/07/28(土) 21:22:39.83 ID:Ai+fWoXo0
ついでに、ローカルで shell を使う設定もまとめておく。
>>148 のアドバイスも追加している。
(setq explicit-shell-file-name "f_bash.exe")
(setq shell-command-switch "-c")
(setq shell-file-name "bash.exe")
;; ssh の関数 の実装を流用して乗っ取る
(defadvice comint-interrupt-subjob (around ad-comint-interrupt-subjob activate)
(process-send-string nil "\C-c"))
(defadvice comint-stop-subjob (around ad-comint-stop-subjob activate)
(process-send-string nil "\C-z"))
(defadvice comint-send-eof (around ad-comint-send-eof activate compile)
(process-send-string nil "\C-d"))
156 :
名無しさん@お腹いっぱい。 :2012/07/28(土) 21:26:11.29 ID:Ai+fWoXo0
おまけ。 ;; 新しくshellを起動する (global-set-key "\C-cs" '(lambda () (interactive) (if current-prefix-arg (shell (generate-new-buffer-name "*shell*")) (shell)))) C-c s で *shell* バッファがなければ新たに開き、あれば遷移する。 C-u C-c s で、常に新規に shell を開く。開くときに、バッファ名の確認をしない。
shellってcygwinのを使うんですかね? msysで何とかなりませんか?
158 :
名無しさん@お腹いっぱい。 :2012/07/28(土) 21:49:59.74 ID:Ai+fWoXo0
cygwin 付きの gnupack 9.00 でテストをしています。 msys は使っていないのでよくわかりません。 m_O_m
159 :
名無しさん@お腹いっぱい。 :2012/07/29(日) 03:15:48.96 ID:+uCMmoi10
>>136 >>141 のアドバイスに従い、見直してみました。
(setq external-app-exts '(
"DOC" "DOCX"
"XLS" "XLSX"
"PDF"
))
;; windowsで開きたいファイルか?
(defun windows-open-file-p (file)
(if (file-regular-p file)
(let ((ext (file-name-extension file)))
(if ext
(if (member (upcase ext) external-app-exts)
t
)))))
シェル絡みだとpop-shellがすごく使いやすい
;;
http://www.emacswiki.org/emacs/shell-pop.el (autoload 'shell-pop "shell-pop" nil t)
(global-set-key (kbd "C-z C-z") 'shell-pop)
C-zC-z でポップアップウィンドウ上でシェルが開いて同じく C-zC-z でシェルの窓だけ閉じる。
ちょっとコマンドラインで何かしたい時にさっとひらけてさっと閉じられるから重宝する。
161 :
名無しさん@お腹いっぱい。 :2012/07/29(日) 11:23:30.49 ID:+uCMmoi10
というか
>>162 の症状のおかげで gist.el が動かなくなってるよくそう
gist-list するとエラーが出るから見てみると
http -> Request is:
POST /api/v1/xml/gists/bash: cannot set terminal process group (-1): Inappropriate ioctl for device
bash:
(ユーザ名) HTTP/1.1
エラーメッセージまでリクエストに含まれてるという・・・・
なんとかして回避できないものか
164 :
名無しさん@お腹いっぱい。 :2012/07/29(日) 22:19:13.33 ID:+uCMmoi10
>>162 fakecygpty版のshellを使わずに M-x shell するとでるエラーと一緒だけど、
M-! の時に出るのはなぜだろう?
M-! の時は shell-file-name が使われるからかねえ。 shell-file-name は bash にしている。 f_bash は shell-file-name の方だと機能しないなぁ・・・ fakecygpty の改造でなんとかならないかな。
166 :
名無しさん@お腹いっぱい。 :2012/07/29(日) 23:31:16.69 ID:+uCMmoi10
gnupack 9.00 のcygwin を最新状態にして使っているけど、M-! は普通に動く けどな。 # uname -a CYGWIN_NT-6.1-WOW64 xxxx 1.7.15(0.260/5/3) 2012-05-09 10:25 i686 Cygwin
なんだろね、発生してる人としてない人の違いは。 EmacsWikiにも載ってるぐらいだから俺だけじゃないことは確かだと思うんだけど。 自分は gnupack は使わず個別に入れてる。 M-x version GNU Emacs 24.1.1 (i386-mingw-nt6.1.7601) of 2012-06-10 on MARVIN # uname -a CYGWIN_NT-6.1-WOW64 XXXXX 1.7.16(0.262/5/3) 2012-07-20 22:55 i686 Cygwin
168 :
名無しさん@お腹いっぱい。 :2012/07/30(月) 01:20:02.65 ID:/TxL9z3D0
再度、cygwinを更新してやってみたが、やっぱりならない。 M-x version GNU Emacs 24.1.1 (i386-mingw-nt6.1.7601) of 2012-06-16 on GNUPACK # uname -a uname -a CYGWIN_NT-6.1-WOW64 hata-THINK 1.7.16(0.262/5/3) 2012-07-20 22:55 i686 Cygwin
169 :
名無しさん@お腹いっぱい。 :2012/07/30(月) 01:22:49.19 ID:/TxL9z3D0
emacs から開いた shell で。 # type bash bash is /usr/bin/bash
そうするとgnupack配布版と公式配布版のコンパイル状況の違いとかもあるのかな? とりあえずgnupackダウンロードしてみてそちらでも試してみます。 ・・・残りダウンロード時間1時間て・・・
回避方法判明しました。 shell-command-switch に i が入ってたのが原因っぽい。 抜いたら当該エラーは出なくなった。 M-!でエイリアス使えなくなるのはちょっとうっとおしいけどバグ修正されるまで我慢の子だな・・・
172 :
名無しさん@お腹いっぱい。 :2012/07/30(月) 18:29:47.47 ID:pp0uMeZe0
原因分かって良かったですね。
後学のため。以下の方法で確認すれはよかったようです。
M-x trace-function-background -> shell-command -> RET
M-x trace-function-background -> call-process-region -> RET
M-! -> ls
*trace-output* バッファを見る。-> お互いに比較する。
M-x untrace-all
こんな感じの結果となります。
======================================================================
1 -> shell-command: command="ls" output-buffer=nil error-buffer=nil
| 2 -> call-process-region: start=1 end=1 program="bash.exe" delete=nil buffer=#<buffer *Shell Command Output*> display=nil args=("-c" "nkf -w | ls")
| 2 <- call-process-region: 0
1 <- shell-command: 0
>>117 のテストにもなることが分かりました。
すいまんせん。言葉が足りませんでした。 cygwin の gnutls は入れてあって Gmail を読むことはできています。
上記とは直接関係あるかはわからないけど、starttls-available-p の実装があんまりだった (and (not (memq system-type '(windows-nt ms-dos))) (executable-find (if starttls-use-gnutls starttls-gnutls-program starttls-program)))) Windows がいきなり弾かれてるし。
ちなみに gnupack の配布物から gnutls 関係の dll を拾ってきて GNU 配布版の emacs の bin ディレクトリに放り込んだら gnutls-available-p は t になったよ。
gnupack使うのが一番素直になるかな……
178 :
名無しさん@お腹いっぱい。 :2012/08/03(金) 22:16:44.49 ID:tRNxOJGn0
ちょっと前に
>>117 の方法を考えたけど、この方法は結局文字化けを回避する
だけの方法で、外部プロセスに UTF-8 の出力はできていなかった。
どうにかならないかと調べていて、こんな方法があることが分かった。
(modify-coding-system-alist 'process ".*sh\\.exe" 'utf-8)
(defadvice call-process-region (before ad-call-process-region activate)
(if (ad-get-args 6)
(ad-set-args 6 (mapcar
'(lambda (arg)
(if (multibyte-string-p arg)
(encode-coding-string arg 'cp932)
arg))
(ad-get-args 6)))))
プロセスへの入出力はUTF-8としたまま、プロセスに渡すパラメータをCP932に
することができた。
179 :
名無しさん@お腹いっぱい。 :2012/08/03(金) 22:25:38.07 ID:tRNxOJGn0
上記のやり方を
>>122 の内容を参考に、マクロで実現してみた。
intern のあたりの書き方が正しいのか、ちょっと自信なし。
(setenv "LANG" "ja_JP.UTF-8")
(set-language-environment 'Japanese) ; なくてもいいかも
(prefer-coding-system 'utf-8) ; なくてもいいかも
(set-file-name-coding-system 'cp932)
(setq default-process-coding-system 'utf-8)
(modify-coding-system-alist 'process ".*sh\\.exe" 'utf-8) ; 上書き用
;; サブプロセスに渡すパラメータの文字コードを cp932 にする
(defmacro set-function-args-encode (function args-number)
`(defadvice ,function (before ,(intern (concat
"ad-"
(symbol-name function)
"-args-encode-setup"))
activate)
(if (ad-get-args ,args-number)
(ad-set-args ,args-number
(mapcar '(lambda (arg)
(if (multibyte-string-p arg)
(encode-coding-string arg 'cp932)
arg))
(ad-get-args ,args-number))))))
(set-function-args-encode call-process-region 6)
(set-function-args-encode call-process 4)
(set-function-args-encode start-process 3)
180 :
名無しさん@お腹いっぱい。 :2012/08/03(金) 22:30:06.32 ID:tRNxOJGn0
これで、かなりの部分からcp932を排除することができた。 cp932で表現できない文字が入ったutf-8のバッファなどへも、M-| sort など が正しく機能すると思う。M-| grep 'ほげほげ' の 'ほげほげ' の部分は、 cp932で表現できる文字でないとだめだけど、これをどうにかするには、 emacs が動作するコードページをcp932からutf-8に変える必要があるんだと思う。
181 :
名無しさん@お腹いっぱい。 :2012/08/03(金) 22:34:39.79 ID:tRNxOJGn0
コマンドプロンプトで、chcp 65001 とすると、コードページをutf-8にする ことができる。(戻すには、chcp 932) これと同様なことを emacs.exeでもできれば、完全にcp932を排除することが できるような気がするんだけど..。
182 :
名無しさん@お腹いっぱい。 :2012/08/03(金) 22:36:33.10 ID:tRNxOJGn0
これはnkf無しでもいけるってことか。 かなりの最適解じゃないか。 コードページに関してはビルド時に指定はできたんだったかな・・・
もうプロセスに関しては全部 utf-8 指定で問題なくなるわけだし prefer-coding-system で utf-8 指定するだけで良くなるわけか。
これgnupackに入ったらいいのになって思ったけど gnupackはそもそもcp932運用を前提としてるから不要か もっとも入ってても害はないよね。いかなるコーディングで運用していたとしても Windows上だとコマンドライン引数はcp932にしなきゃいけないわけだし
24.1にしてみたけど、ミニバッファのIMEオフが動かなくなってた。 今のところ、不満点はそのくらい。
187 :
名無しさん@お腹いっぱい。 :2012/08/04(土) 19:22:11.64 ID:DF9UaZH+0
>>179 に一箇所間違いがありました。
誤: (setq default-process-coding-system 'utf-8)
正: (setq default-process-coding-system '(utf-8 . utf-8))
set- で始まる function の書き方と混同していたようです。
default-process-coding-system は set-default-coding-systems で、さらには prefer-coding-system で同時に設定されるから不要じゃない?
189 :
名無しさん@お腹いっぱい。 :2012/08/04(土) 19:52:12.50 ID:DF9UaZH+0
C-h C で見てみると、 ■ (prefer-coding-system 'utf-8) だけの場合 Defaults for subprocess I/O: decoding: U -- utf-8-dos (alias: mule-utf-8-dos) encoding: U -- utf-8-unix (alias: mule-utf-8-unix) ■ さらに (setq default-process-coding-system '(utf-8 . utf-8)) を設定した場合、 Defaults for subprocess I/O: decoding: U -- utf-8 (alias: mule-utf-8) encoding: U -- utf-8 (alias: mule-utf-8) 改行の変換が入るのかな? どこかに影響はでないだろうか?
wc -c とかした時に CR とか数えられるのもなんだし外部プロセスが期待してる改行コードに変換するのは妥当だと思うけど
何故に外部システムが LF 改行で決め打ちになってるんだろ。prefer... を utf-8-dos にしようが utf-8-unix にしようが
>>189 と同じになるね。
191 :
名無しさん@お腹いっぱい。 :2012/08/04(土) 22:47:19.10 ID:DF9UaZH+0
しばらく、 (setq default-process-coding-system '(utf-8 . utf-8)) なしで、 使ってみよう。これで、あと必要な設定は以下くらいかな。かなりすっきり。 (set-file-name-coding-system 'cp932)
>>190 prefer-coding-systemはdefault-process-coding-systemの改行指定部分
(-unixとか-dosの部分)を変更しないようになってるね。
そして、default-process-coding-systemのデフォルトは
(undecided-dos . undecided-unix)になっていて、
これはw32-fns.elのset-default-process-coding-systemで設定してる。
;; Most programs on Windows will accept Unix line endings on input
;; (and some programs ported from Unix require it) but most will
;; produce DOS line endings on output.
だそうだ。
>>192 なるほど、環境依存性が強いから初期値決めてあるわけなのね。
ここ数日ので大分文字コード周りがすっきり納得行くようになってる。
陳謝陳謝!
個人的にはあとは小菊を23以降の仕様に合わせるところだけだ
まとめると下記でいいの? (setenv "LANG" "ja_JP.UTF-8") (set-language-environment 'Japanese) (prefer-coding-system 'utf-8) (set-file-name-coding-system 'cp932) (setq default-process-coding-system 'utf-8) (modify-coding-system-alist 'process ".*sh\\.exe" 'utf-8) (defmacro set-function-args-encode (function args-number) `(defadvice ,function (before ,(intern (concat "ad-" (symbol-name function) "-args-encode-setup")) activate) (if (ad-get-args ,args-number) (ad-set-args ,args-number (mapcar '(lambda (arg) (if (multibyte-string-p arg) (encode-coding-string arg 'cp932) arg)) (ad-get-args ,args-number)))))) (set-function-args-encode call-process-region 6) (set-function-args-encode call-process 4) (set-function-args-encode start-process 3)
>(setq default-process-coding-system 'utf-8) >(modify-coding-system-alist 'process ".*sh\\.exe" 'utf-8) ↑がおそらく不要
あとは prefer のところに好きな改行コードの種類を入れたければ入れるぐらいの違いか
198 :
名無しさん@お腹いっぱい。 :2012/08/05(日) 11:49:37.65 ID:lb8byn750
>>196 (modify-coding-system-alist 'process ".*sh\\.exe" 'utf-8) の行は、
C-h v process-coding-system-alist とやって、"bash"の行があときは必要と思う。
自分のとこは、以下のような形なので、追加している。
(一番上の行は、上記の設定で追加されたもの)
process-coding-system-alist is a variable defined in `C source code'.
Its value is
((".*sh\\.exe" utf-8 . utf-8)
("bash" raw-text-dos . raw-text-unix)
("[pP][lL][iI][nN][kK]" undecided-dos . undecided-dos)
("[cC][mM][dD][pP][rR][oO][xX][yY]" undecided-dos . undecided-dos))
199 :
名無しさん@お腹いっぱい。 :2012/08/05(日) 11:51:27.75 ID:lb8byn750
もう一つの方法として、"bash"の行を削除してもよいと思う。 (setq process-coding-system-alist (delq (assoc "bash" process-coding-system-alist) process-coding-system-alist))
200 :
名無しさん@お腹いっぱい。 :2012/08/05(日) 11:55:09.14 ID:lb8byn750
gnupack で提供されているinit.elには、@ shell のカテゴリのところに、 (modify-coding-system-alist 'process ".*sh\\.exe" 'cp932) の設定があるので、コメント化する必要がある。 また、shell-mode-hook の設定もあるけれども、これもコメント化している。
なるほど、公式配布版だともともとはいってないからいいけど gnupack 版だと初期設定を書き換える必要があるわけね。
202 :
名無しさん@お腹いっぱい。 :2012/08/05(日) 12:22:59.39 ID:lb8byn750
gnupackにはとても感謝している。init.elを含むもろもろの設定をゼロから するのであれば、emacsのユーザにはなっていなかったように思うので。
cygwin も含めて落として展開するだけですぐ使える上環境汚さないからお試し導入も出来るってのもいいよね。 母艦はもともと cygwin 環境整えてたから NTEmacs 使ってるけど サブではお手軽に gnupack 使わせてもらってるわ。
設定削っていったらGNU謹製でもフォント設定以外なくても大分使えると分かった
205 :
名無しさん@お腹いっぱい。 :2012/08/05(日) 13:39:28.08 ID:lb8byn750
>>153 の設定で、
Symbol's value as variable is void: tramp-remote-process-environment
ってエラー出てる人いるかな。以下の設定にするとうまくいくかも。
(eval-after-load "tramp-sh"
'(let ((process-environment tramp-remote-process-environment))
(setenv "LC_ALL" nil)
(setq tramp-remote-process-environment process-environment)))
>>204 IME も GoogleIME とかだとパッチなしでもなんとか運用出来るんだよね。
こんにちは。Emacs 24.1(gnupackからpatchをいただいてWindows XP SP3上で自分でビルドしたもの)で jaspace.elを使っていらっしゃる方はいますか? (require 'jaspace) でjaspaceを読み込んで、jaspaceを使うモードを (setq jaspace-modes (append jaspace-modes (list 'php-mode 'javascript-mode) と設定して、表示する記号を下記のように設定しているのですが、 (setq jaspace-alternate-jaspace-string "□")) (setq jaspace-alternate-eol-string "\n")) (setq jaspace-highlight-tabs ?^)) 表示がうまくいきません。□が消えてしまったりします。 もし何か対策をご存じの方がいらっしゃったらアドバイスお願いします。
24.1だとフォントの設定を何にもしなくても日本語が表示されるんだな メイリオだからあんま意味ないけど
おお、ほんとだ 無設定の状態で「ー」も「□」にならずに表示されるな
64bit ビルドが make bootstrap 一発で通らないのが気になりますが…
ビルドできればとりあえず動いているようです^^;
テンプレのGNU emacs(x64)に添付のパッチを元に mingw-w64 (32bit, 64bit)
でビルドできるようにしてみました。
w64 でない tdm-gcc 32bit (mingw32) でも一応ビルドできます。
ダイナミックロード機能はうまく動かせなかったので入っていません。
emacs-24.1 用。使用した gcc, 画像ライブラリなどは zip 内の README.txt
をみてください。
http://www1.axfc.net/uploader/File/so/82434
GNUPACKのemacs24.1.1を使ってます flymakeでgccの代わりにcl.exeを使うように設定して、呼び出しはちゃんとできているようなのですが、エラーメッセージが文字化けして読めません(「\203I\203v」とかって感じになる) どうにかして治す方法って無いですか
(modify-process-coding-system-alist "cl\\.exe" 'cp932) とかでなんとかならんかね
213 :
211 :2012/08/19(日) 23:58:20.84 ID:oXpbEM+l0
>>212 (modify-process-coding-system-alist "cl\\.exe" 'cp932)
だと通らなかったので
(modify-coding-system-alist 'process "cl\\.exe" 'cp932)
としてみましたが、通りはしても症状変わらずでした…
'cp932 を 'undecided にしてみたら?
あぁ、それか、cmdproxy.exe で cl.exe を間接的に呼び出しているから、 "cl\\.exe" を "cmdproxy\\.exe" にすると、うまく行くとか?
"cl\\.exe" → "cl\\(\\.exe\\)?" かな?
lpr-buffer しようとすると c:\ 直下にスプールファイルか何か作ろうとするせいで Permission Denied になってしまう 違う場所に書き出す設定でもないかと思ってみてみても (safe-dirs (list "c:/" (getenv "windir") (getenv "TMPDIR"))) とかハードコーディングされててオワタ
何もオワッテいない elispでハードコードされてる部分なら、自分で好きなように修正すればいいだろ ぶっちゃけ個人環境なら、lispディレクトリ直下をそのままいじってもいい
標準配布されてるのを上書き等でいじるのはやだよ。 hook や advice で直せない時点でもうだめだわ。 関数丸コピーで一部変えて再定義も気持ち悪い。 つか c:/ とかハードコードすんなよなぁ・・・
220 :
211 :2012/08/20(月) 21:44:55.61 ID:sT/hXn3R0
>>216 それでうまくいきました!
回答どもです
cygwin の bash + ansi-term がちゃんと使えてる人居ます? f_bash 入れてもとてもまともに動いてるとは言いがたい・・・ shell-mode で大抵のことは出来るからそう困ったりはしないけど ちゃんと動かせるなら動かしてみたい
w32-symlinks.el は結構内容古いんだな insert-file-contents-literally とかの低レベル関数定義をまるっと置き換えしてるけど w32-symlinks のは古い版のだからか暗号化ファイルとか読み込み出来ないままになってる
>>179 の発展系として、以下のマクロを考えてみた。
(defmacro set-function-args-coding-system (function program-number args-number)
`(defadvice ,function (around ,(intern (concat
"ad-"
(symbol-name function)
"-function-args-coding-sytem-setup"))
activate)
(let ((program (ad-get-arg ,program-number)) (args (ad-get-args ,args-number)))
(if (and program args)
(progn
(ad-set-args ,args-number (mapcar '(lambda (arg)
(if (multibyte-string-p arg)
(encode-coding-string arg 'cp932)
arg))
args))
(if (and (equal program shell-file-name) (equal (car args) shell-command-switch) (cdr args))
(let ((process-coding (assoc-default (cadr args) process-coding-system-alist 'string-match)))
(if process-coding
(let ((coding-system-for-read (car process-coding))
(coding-system-for-write (cdr process-coding)))
ad-do-it)
ad-do-it))
ad-do-it))
ad-do-it))))
設定は以下で行ってください。説明は次に。 (set-function-args-coding-system call-process-region 2 6) (set-function-args-coding-system call-process 0 4) (set-function-args-coding-system start-process 2 3)
(説明) process-coding-system-alist は、shell-command などでshell経由(bash -c xxx)で 起動されるプロセスには機能しない。上記は、これを有効にするアドバイス。 たとえば、M-! ipconfig とやると、プロセスの入出力の設定を UTF-8 にしているユーザは 文字化けするけれども、上記のアドバイスを設定し、さらに以下を設定しておくと、文字化けは しなくなる。 (modify-coding-system-alist 'process "ipconfig" 'cp932)
ad-do-it が4つ並んでるのがなんか笑えるけどこれはなかなかよいね。 Windows 側の javac とかも文字化けしないで済むようになった。GJ!
と思ったけど (setq default-process-coding-system '(undecided . utf-8)) でもいいような気もする
shell-mode で ck とかの国際化端末みたいにコマンド毎の文字コード自動認識する方法ないもんかねえ。 ck だと windows 版の javac と utf-8 なファイルの cat のどちらも文字化けしないんだけど shell-mode だと先に表示した方のエンコードに縛られちゃって後からの出力が文字化けしちゃう
>>228 仕組みはこんな感じ?
(defadvice comint-send-input (before ad-comint-send-input activate)
(set-process-coding-system (get-process "shell") 'undecided 'utf-8))
>>227 ほんとだ。がっがり。でも、勉強となったし、この情報を教えてもらう
ネタになったからいいか。
>>223 の利点は、標準入力をコントロールできることくらいかな。
>>229 おおお素晴らしい!
shell-mode で utf-8 と cp932 が共存出来たよ!ありがとう!
今月先月と shell 絡みの言語処理が大分改善されたなあ
process-coding-system に *-dos とか *-unix とか付けない場合と付ける場合でやっぱり微妙に挙動かわるね 改行コード付けない場合だと余計な CR が入力で渡されちゃうことがあった prefer-coding-system に習って w32-fns.el の設定を壊さないよう↓みたいにしたほうがいいかも default-process-coding-system の設定も同様で。〜-dos . 〜-unix の決め打ちでもよさそうではあるけど。 (set-process-coding-system (get-process "shell") (coding-system-change-text-conversion (car default-process-coding-system) 'undecided) (coding-system-change-text-conversion (cdr default-process-coding-system) 'utf-8))
おぉ、勉強になるなぁ。 最近、文字化けした漢字を見なくなった。
>>232 整理してみました。
(defadvice comint-send-input (before ad-comint-send-input activate)
(let ((process (get-buffer-process (buffer-name))))
(if (and process
(string-match "shell" (process-name process) 0))
(let ((coding-system (process-coding-system process)))
(set-process-coding-system process
(coding-system-change-text-conversion
(car coding-system) 'undecided)
(cdr coding-system))))))
本家は24.2rc2でたのか。 そろそろgnupack emacsも24.2でるかな?
何が変わったのかなと思ったら この間の脆弱性を修正した奴なのね。
レジストリでフォントを指定する方法で、 set-fontset-font みたいに範囲や charset 毎のフォント設定までする方法ってありますかね?
"GNU Emacs 23.3.1 (i386-mingw-nt5.1.2600) of 2011-08-15 on GNUPACK"を使っています。 auto-install-batch [RET] anythingとしてインストールしました。 C-sのisearchがうまく動かなくなってしまいました。 [MIGEMO] I-search: と出るのですが、そこに文字を入力しても全く何にも該当しません。
windows7すげえな 何の設定もしてないのにHELLOファイルのうちBurmeseとOriya以外の書体をちゃんと表示しとる
gnupack_devel-9.01使用 新規ファイルをバッファで開くために emacsclientの設定をしたけど 上手くいきません。 init.elに(server-start) Win環境変数に 変数名: EMACS_SERVER_FILE 変数値: (gnupackを解凍したディレクトリ)\home\.emacs.d\server\server 追加 で、起動すると Warning (initialization): An error occurred while loading `c:/home/bin/gnupack_devel-9.01/home/.emacs.d/init.el': error: The directory `~/.emacs.d/server' is unsafe To ensure normal operation, you should investigate and remove the cause of the error in your initialization file. Start Emacs with the `--debug-init' option to view a complete error backtrace. て出てしまいます。 ・・・助けて
242 :
241 :2012/08/30(木) 07:46:34.25 ID:d0emZBeJ0
連投スマソ これが解決したら本格的にxyzzyから移行するんですが・・・ やっぱし本家使いたいし
xyzzy はもはや emacs とは別物では。 あっちはあっちでなかなか良いものだと思う
serverのプロパティ => 詳細設定 => 所有者 で所有者の変更
>>244 ありがとう。何とか動くようになりました。
vista以降の所有権うんぬんは本当に使いにくいです。
>>243 そうですね。winネイティブなアプリなんで動きも軽いですしずっと愛用してます。
実はhowmを使い出したんですが、howm-wrapは1.1.0.3までの対応で
パッチを当てると1.2.1も使えるみたいなんですがうまくパッチ当てできなくて、
それなら本家の最新版が使いたいということで。
あと、過去何回もemacsに挫折してたんで、この機にと思いまして。
246 :
238 :2012/08/30(木) 17:13:33.83 ID:LMMHK4kQ0
anything-startup.elを読んでいたら
;;; If you use Japanese, you should install Migemo and anything-migemo.el.
;;;
;;; Migemo
http://0xcc.net/migemo/ (and (equal current-language-environment "Japanese")
(require 'anything-migemo nil t))
という記述が、、コメントアウトしたらうまくC-sできるようになりました。
「外部プロダクトを別途手動でインストールしなければ、C-s自体が動かなくなる」
そういう事を注釈なしにしないで欲しいなぁ。
確かに。 インストール済みかチェックした上で挙動が勝手に変わるならともかく。
現状の ntemacs って何の設定もしなくてもそれなりに使える状況になるんだなあ。 language environment も勝手に Japanese になってるしフォントも普通に表示されるし cygwin 等を使ってないなら無設定で文字化けも全然しない
今設定なしで使ってみてる .skkがあるから厳密には違うけど
tem/bobcat のロードはやめられそうにもないけどね・・・
ntemacsでansi-term使ってる方はいらっしゃいますか? fakecygpty 使うことで大分ましにはなったのですが細かい設定がまだよくわかりません。 やってることは、UTF-8で動作させるために default-process-coding-system を '(undecided-dos . utf-8-unix) に、 locale-coding-system を utf-8 に設定しているのと、 M-x ansi-term 後に stty echo -igncr しているぐらいです。 この状態だとファイル名表示や enter で改行は問題ないんですけど C-h でのバックスペースや C-a での行頭移動がちゃんと表示されないんですよね
NTEmacs で key-chord.el を使ってる人に聞きたいです. 日本語入力がオンになっている時には key-chord の 同時押しキーバインドが実行できないんですが,これは Windows の IME に渡している以上避けられないものですかね? Linux のほうで ibus.el で日本語入力していると,日本語入力が オンになっていても key-chord キーバインドが動いてくれるのですが.
すみません 23系でレンダリングの遅さに辟易してWinのEmacsから遠ざかっていたのですが、 24では遅くないでしょうか?
基準がわからないんでなんとも。体感は人それぞれだろうし。 特別なインストール作業もないんだし試してみたほうが早いと思う。
255 :
名無しさん@お腹いっぱい。 :2012/09/11(火) 12:56:48.65 ID:qr0rUfSf0
何のレンダリングを指しているのか確信ないが、こちらはemacs-w3mからw3mを使用、mewでhtmlをインライン表示。 dosアプリのw3mではさっと整形後表示となるが、cygwin版w3mだと止まったかのような状態が数十秒のときあり。 23系、24系とも。24系では若干速いか?という程度。
windowsでこまめに外部プロセス木戸するようなもの速度はあきらめた方がいい。 grep-find 使うにしても -exec ではなく xargs 使うようにすると桁違いに早くなる。
w32-pipe-read-delay の調整で早くなるのは emacs からプロセス連続で呼び出す場合ぐらいだったっけ
258 :
名無しさん@お腹いっぱい。 :2012/09/12(水) 11:09:51.14 ID:L0qB7PQr0
>>256 もう少し解説・例示があるとありがたく。
grep-find で xargs つかうには grep-find-use-args を non-nil にすりゃいい。 もちろん cygwin とか導入してないと xargs もないだろうけど。 -exec だとファイルごとに grep が起動されるけど、 xargs だと引数として渡せるだけの限界の長さまで詰め込んで grep を起動するから プロセス起動回数が段違いに減る。 Windows 環境は理由は忘れたけどプロセス起動がおっそいから違いが顕著に現れる。 #fork がちゃんと実装出来てないから遅いんだっけ?
変数名まちがった grep-find-use-xargs ね。
すみません gnupack + ntemacsって、 cygwinのgcc使用して、cygwinのライブラリ使用しているバイナリでしょうか? そうだとしたらパフォーマンスに問題ないでしょうか?
gnupackのntemacsはcygwinのライブラリを使用してない パフォーマンスに問題あるかどうかを判断できるのは自分だけだ
(require 'tramp) (setq tramp-default-method "scp") (setq tramp-encoding-shell "f_bash") (setq tramp-program-list '("ssh" "scp" "rsync")) ;; プロセスを起動するプログラムを fakecygpty 版のものに変更し、パスのドライブの表記方法を変更する (defmacro tramp-adjust-process-args (function program-number args-number) `(defadvice ,function (before ,(intern (concat "ad-" (symbol-name function) "-tramp-adjust-process-args")) activate) (if (member (replace-regexp-in-string "\\.exe$" "" (ad-get-arg ,program-number)) tramp-program-list) (progn (ad-set-arg ,program-number (concat "f_" (ad-get-arg ,program-number))) (if (ad-get-args ,args-number) (ad-set-args ,args-number (mapcar '(lambda (arg) (replace-regexp-in-string "^\\([A-Za-z]\\):" "/\\1" arg)) ; 環境によっては、上記の行を以下に置きかえる。gnupack with cygwin は上記でOK ; (replace-regexp-in-string "^\\([A-Za-z]\\):" "/cygdrive/\\1" arg)) (ad-get-args ,args-number)))))))) (tramp-adjust-process-args call-process 0 4) (tramp-adjust-process-args call-process-region 2 6) (tramp-adjust-process-args start-process 2 3)
正規表現より cygpath 使ったほうがどの環境でも動いて完璧じゃない? 一々プロセス起動するって難点はあるけど。 あとは internal な変数使うことになるけど (featurep 'cygwin-mount) が t なら cygwin-mount-cygdrive-prefix--internal を使うとか。
>>265 cygwin-mount-cygdrive-prefix--internalってのがあるんですね。
でも、自分の環境(gnupack with cygwin 9.00)だと、 (featurep 'cygwin-mount) が t
で、cygwin-mount-cygdrive-prefix--internalが/cygdrive/を返すけど、/cygdrive
が使えない。どこか設定が変なんだろうか..。
cygpathはちょっと考えたけど、正規表現が軽くていいかなぁと。
引数の数、変換掛けているので。そこを直さなきゃだめか..。
gnupackは内部的に「mount -c /」を実行していて 「/cygdrive」じゃなくて「/」になってます 例えば C:ドライブの場合「/cygdrive/c」じゃなくて「/c」という感じ
>>267 そうなのですね。emacsから cygpath -uを呼んだ結果は、使えるパスが返って
くるってことでいいんですかね? やっていると、/c/... とはなりました。
gnupackインストール直下の emacs.exeから起動した場合も 「mount -c /」が有効な状態です. なので,emacs上でも「cygpath -u 'C:\WINDOWS'」とか 実行すると「/c/WINDOWS」になります
>>269 ありがとうございます。
>>265 cygpath版考えてみました。mapcarの部分だけ。なんか、エレガントじゃない..。
(mapcar '(lambda (arg)
(if (string-match "^\\([A-Za-z]\\):/" arg)
(replace-regexp-in-string "\n" "" (shell-command-to-string (concat "cygpath -u " arg)))
arg))
(ad-get-args ,args-number))
ディレクトリ名やファイル名に空白が入っている場合の対策が必要か。 (replace-regexp-in-string "\n" "" (shell-command-to-string (concat "cygpath -u '" arg "'")))
最後に改行入っちゃうのがなんともね・・・ elisp に chomp みたいなのあったっけ。 cygpath が必ず改行付けて返すって前提にしちゃえば (substring (shell....) 0 -1) でもいい気がする
>>272 ファイル名に改行が入っている可能性を考えると、こちらの方が正解かも。
改行が入ったファイルをemacsが正しくハンドリングできるかは確認していなけど。
ためしに find-find 中に C-q C-j して改行含むファイルつくってみたけど セーブで普通にコケるから emacs は改行含むファイルは無理って思ったほうがいいような。 bash で touch 'hoge(改行)hoge.txt' したファイルを dired で見るとなぜかショートネーム形式の hogeho~1.txt になってるし。
あとは ansi-term が完璧ならなあ (setq locale-coding-system 'utf-8) と f_bash 使うことと 起動してから stty echo -igncr することまではたどり着いたけど C-a や C-h を正しく処理するのとかリサイズへの対応が全然だめだ
>>274 Good Job!!
是非,参考にさせてもらいます
>>274 のおまけのコメントに書き忘れていた。今、追加した。
;; ・Windows に ESC を入力するときは、ESC を二回入力する。
使う人がいればですが..。
>>275 だめですね。cygwin上ではちゃんと認識されているようですが。
でも、substring版で使うことにしました。
>>276 ansi-termはピクリともしません。調べれば何かわかるかなぁ..。
termcap とか terminfo とか pty とかの unix の端末制御システムと windows のそれとの違いを勉強すればなんとかなるか・・・?
NTEmacsのアイコンを本家の青色のに変えたい
gnupack 版 NTEmacs のアイコンのこと言ってるの?
>>264 のあたりで考えたtrampの設定は便利だけど、デカいファイルをコピー
するたびにパスワードを聞かれる。なので、ssh-keygenで作成した公開鍵と
ssh-agentを使って、初回一回のみパスフレーズを入力すれば、以降パスフレーズ
を聞かれないようにしてみた。パスフレーズを入力しないで鍵を作る方法が
簡単だけど、セキュリティ的に好ましくないので、今回の方法は使えると思う。
設定方法はこちらにまとめた。
http://www49.atwiki.jp/ntemacs/pages/21.html
やっぱ NTEmacs で ssh-agent 使おうと思うとラッパースクリプト作るしかないよねえ
一度起動したssh-agentは、emacs 落としても動いているですね。 なんか不思議。あと、環境の設定によっても違うんだと思うんだけど、 シェルスクリプトが#! で始まると勝手に実行モードがついたファイルに なるんですね。これも不思議。
>>284 ~/bin/ssh_agentは不要だったので整理(削除)しました。
tramp は plink で困らないなあ
plinkは、サイズのでかいファイルのコピー遅くない? pscpってのを使えばいいのかな。
ああ、そういう流れの話か。ごめん でかいファイルのコピーとかはしてないんで分からない 公開鍵なら Pagent で楽にできるというだけでした
pagentというのがあるんですね。trampには、pscpというmethodがあるので、 これとpagentを一緒につかえば、scp method+ssh-agentと同じようなことが できるんだと思います。
pagent は windows と親和性が高いから鍵管理に無理がなくていいよね。 他のソフトも使えるからパスフレーズ入力が本当に一回ですむ
tramp-methodにpscpを使って、何の苦も無く動きました。 scpのパスの変換も必要ないし、こちらの方法を使う方が普通なんでしょうね。
デカいファイルの転送性能を測ってみた。 サーバは、Redhat系Linux。NICはサーバ、クライアントどちらも1G。 ・putty同梱のpscp : 70Mbps程度 ・WinSCP : 110Mbps程度 ・scp : 450Mbps程度 cygwinのscpはすごい性能でびっくりしました。NICの性能をフルに使っています。 cygwin、侮れないです。
転送時の圧縮率とかの設定の違いじゃない?
ネットで調べるとcygwinのscpが速いというよりもWinSCPが遅いということみたいですね。
emacs-24.2-20120922.exe
流れ読まずに書いてみる win-ssh-agent っつーのもある。
>>299 すごい。動いた。Pageantと同じ感じですね。
>>284 は不要になるけど、win-ssh-agentと共存できるからそのまま使うかな。
win-ssh-askpass もちゃんとあるのか やっぱり必要なのは誰かしら作ってるもんなんだなあ
>>302 これはPageantと連携できるんですかね。試してみたいと思います。
ssh-pageantも動いた。こちらは環境変数の扱いはssh-agentと一緒で、
Pageantと連携するものですね。
>>284 のようなシェルスクリプトを使って連携するのがよさそう。
ssh-pageantが出力する環境変数がWindows側で設定されるとwin-ssh-agentの ように使えて便利なような気がする。
最近はなるべく余計な設定なしに使う方に腐心するようになったなあ
>>305 Windows Vista以降には、環境変数を設定するsetxというコマンドがあるんですね。
http://www.atmarkit.co.jp/fwin2k/win2ktips/1003setx/setx.html XPの場合は、サポートツールというものから入れれるそう。
これをつかって、ssh-pageant.exeとの連携を考えてみた。
まず、cygwinの環境で、~/bin/win-ssh-pageant.shというスクリプトを作成する。
----
ps | grep -q 'ssh-pageant$'
if [ $? -ne 0 ]
then
eval `/home/bin/ssh-pageant -s -q`
/c/Windows/system32/setx SSH_PAGEANT_PID "$SSH_PAGEANT_PID"
/c/Windows/system32/setx SSH_AUTH_SOCK "$SSH_AUTH_SOCK"
fi
----
つぎに、win-ssh-pageant.batというバッチファイルを以下のとおりに作成する。
----
<cygwinのインストールパス>/bin/bash --login /home/bin/win-ssh-pageant.sh
pause
----
あとは、emacsを実行するまえに、win-ssh-pageannt.batをwindowsで一回だけ実行する。
これで、ssh系コマンドのラッパースクリプトがいらなくなった。
PuttyのPageantを既に使っているなら、これが簡単でいいかも。
ssh-agent版も一緒です。こちらはパスフレーズを問われます。 ---- ps | grep -q 'ssh-agent$' if [ $? -ne 0 ] then eval `ssh-agent -s` ssh-add /c/Windows/system32/setx SSH_AGENT_PID "$SSH_AGENT_PID" /c/Windows/system32/setx SSH_AUTH_SOCK "$SSH_AUTH_SOCK" fi ---- どっちにしても、ラップスクリプトが不要となりました..。
なんでお前らwinでemacs使ってんの? なんで自ら過酷な環境選んでんの?
windowsがそこにあるから
Windows で Emacs が使えると一番嬉しい
win + ntemacs 自体はそれほど過酷じゃないっていうかわりと無設定でいけるんだけど cygwin と組み合わせてちゃんとやろうとすると実は結構めんどくさいんだよね。 まああれだよ、設定いじって悦に入りたいんだよほっといてくれ。
できないことはないけど、できてうれしいか?
おもしろそうじゃないか
powershell の引数の null を empty string に勝手にキャストしちゃう仕様のせいで FindWindow 発行するのすら一苦労だよ!
318 :
名無しさん@お腹いっぱい。 :2012/10/10(水) 06:35:11.02 ID:0om5Vlvc0
ソ・ウ・カ シ・ネ ソ・ウ・カ シ・ネ ソ・ウ・カ シ・ネ ソ・ウ・カ シ・ネ ソ・ウ・カ シ・ネ ソ・ウ・カ シ・ネ ソ・ウ・カ シ・ネ ソ・ウ・カ シ・ネ ソ・ウ・カ シ・ネ ソ・ウ・カ シ・ネ ソ・ウ・カ シ・ネ ソ・ウ・カ シ・ネ ソ・ウ・カ シ・ネ
emacs21くらいの時期のIMEパッチの当たったNTEmacsって どこかに落ちてませんか? 永く使ってたPentiumMマシンのHDDが死んで全部消えたorz
gnupack
Windows8にしたら環境変数でHOMEを設定してるのに立ち上がり直後の位置がHOMEでなくなった どうしたらいい? GNUのほうを使ってます
俺はinit.elに (cd "~") 書いてるけどwin8でどうなるかはシラネ
GNUじゃないほうってのがあるのか
『Emacs実践入門』を読みながらxyzzyから乗り換えにトライ中です。
elscreen.elを入れてみたいんですが、バイトコンパイルが下記のエラーで止まります。
elscreen.el:1458:32:Error: Symbol's function definition is void: elscreen-e21-tab-create-keymap
エラーの手前のログは↓と一緒です。
http://gentwoo.elisp.net/emerges/ajaxerrorlog/195526 ググったところでは、Emacs23に下げて解決したという例が
見つかりましたが、他の手段はないんでしょうか?
環境はWin7, 64bit, GNU Emacs 24.2.1 (i386-mingw-nt6.1.7601) on GNUPACK
です。
>>325 お陰様でバイトコンパイルが通り、使えるようになりました。
どうもありがとうございました。
# 入れてみて気づいたんですが、tabbarと併用という訳には行かないんですね。
# 少し触ってみてからどちらを使うか選ぼうと思います。
あれ?gnupackを更新したらview-modeの挙動が変わってもうた view-modeの時にqを押下するとview-mode解除だったのが view-mode解除→他のバッファに移動となる… んー
>>327 Emacs24でそこら辺が変更になったみたい。
view-exit 絡みが細かく変わってる。
Windows8なんだけどIMEが有効にならない事ないか?
Windows8で開いた後ウインドウのインアクティブ、アクティブと切り替えないとIMEが有効にならないよ さらに、”コントロール パネル\時計、言語、および地域\言語\詳細設定”の アプリウインドウごとに異なる入力方式を設定する にチェック入れたら、全くIMEが有効にならなくなるよ
gnupack版なんだけどね
win8使ってる人ががんばって対応するしかないな
emacsオタが新しいOS使わないとか玄人ぶるなよイカ臭い サクッと対応してくれよ
gnupack使ってるくせにこれ読んでないの?
http://gnupack.sourceforge.jp/docs/latest/UsersGuide.html >開発者の動作確認は WindowsXP 32bit環境のみになっています.
>Windows95/98/98SE/Meは動作しない可能性があります.
>Windows Vista以降のOSバージョンについては動作する可能性はありますが,サポート外になります.
>gnupackのバグ改修や機能追加等のバージョンアップは本パッケージの開発者の対応可能な範囲内,
>かつ開発者の作業ペースにて行わせていただきます.
Win8使ってる人がパッチなりなんなり作って送るしかない
エラソーに何言ってんだか いまどきXPってありえないんだよ サクッと対応しろ やる気ないんだったら辞めろ
こう書いてあるんだからあーだこーだ言って常識が通用しないって 何様のつもりなんだか
Windows OSのバージョン上げてIMEが動作しなくなったソフトなんて初めてだよ
そもそも、gnupackの人がNTEmacs作ってるわけじゃないからなー NTEmacs自身も、IME対応のパッチも、他の人が作ったのをまとめたものでしかない win8使ってる誰かがwin8対応のIMEパッチを作らない限り、 それがgnupackに反映されることは無いよ
沖縄の仲井真知事みたいなことを言うてやがるな とにかく当事者が責任持って対応しろよ
当事者=Win8を使ってる人達
米兵に強姦されそうになった女子に素手で立ち向かえと言うてるよ 当事者意識がないとはそういう事を言うんだよ
たちあがれ日本ってそういう意味だよ 当事者意識がないにも程があるだろ
残念だけどお前はもう当事者だよw逃げられないよwがんばれw
相手してくれる人がいて嬉しそうだなぁ
345 :
329 :2012/11/11(日) 00:34:02.07 ID:KSZ1T2UH0
>>329 だが
Windows8でGoogle日本語入力にしたらまともになった
ATOKとかでも良いのかもしれんな
ATOKはWin8への対応がいまいちらしいよ
347 :
名無しさん@お腹いっぱい。 :2012/11/20(火) 10:11:25.26 ID:5cVFe2530
Windows 7 SP1 + emacs-24.2-20120922.exe を使用。 OS の Microsoft IME でローマ字ひらがら⇒漢字変換入力中、 入力や変換文字突然消え、別フレームのバッファへ文字を書き込もうとする。 別フレームバッファが書込可なら書き込まれ、書込禁止ならベルとなる。 1日数回発生。別のWindows XP SP2 + emacs-24.2-20120922.exe + MS IME も同様。
348 :
名無しさん@お腹いっぱい。 :2012/11/20(火) 14:10:54.69 ID:5cVFe2530
>>347 補足。
ひどい時は入力変換しようとするバッファでの入力・変換がまったく
できなくなり(入れては消えるの繰り返し)、立ち上げ直すことに。
最近Ctrl+\で変換のオンオフすると直るときがあることに気付く。
なんか別のバッフア上でマウスクリックしたような挙動だね? 症状がでるXPと7が同じPCなら、キーボードかマウスが壊れてんじゃないの?
350 :
名無しさん@お腹いっぱい。 :2012/11/20(火) 16:57:43.54 ID:5cVFe2530
いえ、異なるPC。 しかもXPはノート、7はデスクトップ。
その手のたまに発生するのってユーザにも開発者にもやっかいだよねえ 再現手順がはっきりするといいんだろうけど
同じ症状出てる MS-IMEじゃなくて、ATOKだけど 半角全角キー押した後、ちょっと時間をおくと安定して使える すぐにキー入力、変換しても問題ない場合もある
>>350 Win7 64bit 標準IMEの環境で、emacs-24.1-20120716.exeはまったく問題はでてない。
そのあと二つバージョンがすすんで、
emacs-24.2-20120902.exe
emacs-24.2-20120922.exe
0922の方はIMEがらみを修正したみたいだから、emacs-24.2-20120902.exeを試してみたらどうかね?
ところで、MS-IME使いでemacs-24.2-20120922.exeをヘビーに使って問題出てないって人は、 ここ見てる中にいるのかね?w 20120902から20120922へはemacs自体のバージョン代わってないし、 修正はATOK向け対策だけ?なんでMS-IMEの人はそのまま20120902使ってる人が多いよねたぶんw
自分は Google IME にしちゃってるからなぁ
>>354 emacs-24.2-20120922.exeって、gnupackのemacsってことですよね?
であれば、Microsoft Office IME 2010 ですが、Windwos7 SP1 x64環境で、
全く問題なく使えています。
バージョンの後についてる日付からgnupackだと勝手に解釈して話がすすんでる
>>356 の環境で問題無いのなら自分もちょっと最新にして確認してみるかなあ
問題出てる人の環境は32bitなのかねえ
w32-ime-buffer-switch-pがnilだとおきないみたい。 自分の場合以下で再現 w32-ime-buffer-switch-pをtに frameを2つ開く それぞれ別なファイル開く 片方でIME ONでaを押しっぱなしに(IME ONなので あああ... になる) しばらくするともう一方にあああ...が入る
359 :
347 :2012/11/21(水) 10:04:40.34 ID:aKdliqvR0
360 :
347 :2012/11/21(水) 10:16:47.08 ID:aKdliqvR0
>>358 同じ条件で同じことをまず7上で再現確認済。
>>347 問題原因そのものか?
しばらく7 32bit, XP上ともw32-ime-buffer-switch-pをnilにして生活してみたいが、
nil時の"IME control when buffer is switched is disabled"の副作用は何?
バッファ毎にIMEのON/OFF状態を保持するかどうかじゃない?
362 :
358 :2012/11/21(水) 12:36:11.76 ID:RUxIADaI0
>>360 副作用つっか、w32-ime-buffer-switch-p nil のときの動作は
バッファ移動時に移動まえのIMEの状態のまま別なバッファに切り替わる。
(移動前にONだとOFFだったバッファに移動してもONになる。
tだとOFFだったバッファに移動に移動するとOFFになる。)
モードライン表示やカーソル色設定などやってたらなんか設定の修正必要かも。
(
>>103 〜
>>105 参照)
w32-ime-buffer-switch-p t だとバッファ移動時にw32-ime-sync-stateでIME
ON/OFF切り替わるので、入力中にEmacsが裏でバッファ切り替えて強制的にIME
ON/OFFされてなんかおかしくなってるのかも、と想像。
Win7 SP1 64bit MS-IME使用
gnupackのemacs-24.2-20120922へバージョンを上げてみた
w32-ime-buffer-switch-pはtのままで
>>358 の症状は起きない
ちょっと使ってみた限りでは不具合は無い
このまましばらく使ってみる
w32-ime-buffer-switch-pをnilで使用してるが、今のところ安定している感じ IME ONになった後、落ち着くまで時間がかかっていたのがなくなった 長時間使用してみないとまだ確定とは言えないけど あと、以前も書いたけど、自分の所では、IMEがONにならない症状がある これも出たり出なかったりする ちなみにOSはWin7 32bitです
365 :
347 :2012/11/26(月) 10:16:52.39 ID:N2A6vvLF0
w32-ime-buffer-switch-p nilで数日間の使用感
>>347 の現象は(だぶん完全に)なくなった。
>>362 で記されたとおりの「IME(ON/OFF)状態が移動先バッファで継承」の仕様、
特に移動先バッファでの「同状態の切替えは要Ctrl+\の2度押し」が
作業によってストレスあり。
367 :
358 :2012/11/28(水) 20:38:11.90 ID:CH5GQuvq0
>>358 の現象、テンプレのGNU emacs(x64) (やこれが元の
>>210 のパッチでの
ビルド)だとおきないように思えるので調べてみましたが x64 では
src/xdisp.c の prepare_menu_bars() という関数で一時的に
w32-ime-buffer-switch-p を nil にしているみたいですね。
その部分だけとりだしてみました。gnupack の 24.2-20120922 へのパッチ。
http://www1.axfc.net/uploader/so/2694236 とりあえず私の環境では
>>358 の現象はおきなくなったように思えます。
OSはWindows7 64bitです。
>>367 Win7 64bit、MS-IME、24.2(gnupack 20120922)、w32-ime-buffer-switch-p = t
以上で試してみてるけど、
>>358 の現象は起きない。
それで、
>>367 を見てちょっと試してみたんだけど、
未確定文字がある状態でメニューバーいじると
>>358 の症状が出るね。
条件がもうちょっとあって、入力する方はIMEがON、もう一方はIMEがOFFじゃないと起きない。
他の人がメニューを特にいじらなくても症状が出るらしいのがナゾだけど、
>>367 のパッチで治ってしまうのなら、
症状が出る人の環境では入力してる最中にメニューバーをいじるのと
同等のイベントが起きてたりするってことなのかなあ。
369 :
358 :2012/11/28(水) 23:49:05.34 ID:CH5GQuvq0
>>368 私は default-frame-alist に '(menu-bar-lines . 0) を追加してメニューバー
は消して使ってるのでそれが関係するのかもしれませんね。
(tool-barも消してますが)
emacs -q で起動してすこし試してみると
>>358 の症状は出ないようでした。
370 :
358 :2012/11/29(木) 00:08:51.63 ID:S8q1Zple0
違うか。
default-frame-alist に '(menu-bar-lines . 0) を追加しないように
しても
>>358 の症状でました。
読み込んでるelispになんかメニューいじるようなのがあるのかな…
371 :
368 :2012/11/29(木) 01:51:05.49 ID:CMiA19q00
368の環境で、emacs.exeを直接-qありで立ち上げて、
(setq default-input-method "W32-IME")
(w32-ime-initialize)
だけ実行して(これ実行しないとバッファ毎のIME ON/OFFができない)
それだけで
>>368 と同じ症状の環境になる(メニューいじると症状発生。入力だけなら症状出ない。)
まあ、ちょっと気持ち悪いけど、パッチあてれば症状でないみたいだし、
パッチ当たった挙動のほうが好ましい感じだし、
他に問題ないようならgnupackさんにパッチを当てたバージョンをリリースしてもらえば
よいのではないでしょうか?
>>347 の人もこれで問題解決すればいいね。
372 :
347 :2012/11/29(木) 16:45:33.95 ID:3U1Uyicd0
>>364 までは 32bit で問題が起き、64bit では問題なかったが、
>>367 以降は 64bit でも問題再現される、ってことだね。
>>371 こちら 32bit 環境でメニューバーの有無での検証はできてないが、
>
>>347 の人もこれで問題解決すればいいね
は期待したい。
373 :
358 :2012/11/29(木) 21:07:28.64 ID:XZSQ5X720
>>371 あ、私はemacs -qで立ち上げたあとそのまま試してました。それじゃ意味ないですね。
(setq default-input-method "W32-IME")
(w32-ime-initialize)
を実行してやってみると微妙に動作は違いますがやっぱりダメでした…
(
>>358 の手順で、aを押したとたんもう一方に あ が入る)
init.elは関係なさそうですね。うーん、何だろ。
まあ、私の場合はとりあえず
>>367 で起きなくなったようなので深く追求は
しないことにします^^;
とりあえず gnupackの開発メモ の 24.2-20120922 のところでこのパッチ当て
たものを作成していただけないかはコメントしておきました。
374 :
358 :2012/12/01(土) 12:19:31.79 ID:euFOwxAI0
gnupackさんのところでは症状再現しなかったようですが
>>367 のパッチの
あたったものをひとまずリリースしていただけました。
emacs-24.2-20121201.exe
375 :
名無しさん@お腹いっぱい。 :2012/12/04(火) 10:02:54.53 ID:4xCiV9a90
emmsというプログラムをパッケージマネージャー?からダウンロードしたところ 下記のエラーが表示されました。 emms-setup.el:96:1:Error: Searching for program: no such file or directory, /bin/bash /bin/bashが見つからないと言われます。 cygwinはインストールしているのですが、これをemacsに認識させるにはどうすればいいのでしょうか? emacsを使ってみたくてcygwinもとりあえず入れただけなので、どちらも知識不足で 調べ方すらよく分かってないです。 emacsのバージョンは24.2.1を使っています。
376 :
347 :2012/12/04(火) 16:15:55.89 ID:OgUPc3Iy0
>>374 で知らせのあったemacs-24.2-20121201.exeをWin 7 32bit, MS-IME,
w32-ime-buffer-switch-p t 環境下、まる1日以上ヘビーユース中、
>>347 現象一度も現われず。問題解決か。
>>375 Windowsで動くemacsはいろいろあるので、バージョン番号だけじゃ何もわからない。
外部プログラムを使うと思われるemmsのようなパッケージをWindows上で動かすのは、
いろいろ大変。emacsのパッケージは基本的にUnix環境で使うことを前提としている。
外部プログラムを使わないパッケージならそのままWindowsで動くことも多いが、
そうでなければ自分で外部プログラム関係をいろいろ設定してやる必要がある。
emacsからbashが見つかるようにするには、環境変数PathをCygwinの環境に合わせて
変更している人が多い。このスレで使ってる人が多いgnupackなら設定済みでemacsを
起動してくれる。
>>375 Emacs setenv PATH とかでググればヒントがあるかも?
379 :
名無しさん@お腹いっぱい。 :2012/12/06(木) 10:51:06.20 ID:w75HrKK50
>>377 >>378 ありがとうございます。
PATHの先頭にcygwinのディレクトリを追加するLispを紹介している
サイトがあったので、それのコピペでエラーは無くなりました。
ちなみに、NTEmacsって64bitな環境で動作するのか不安。
64bitの環境で使ってるやつの方が多そうだ
win7 64bit で使ってるけど何の問題も起きてないな
ていうか64bit専用版があるじゃん。 hp.vector.co.jp/authors/VA052357/emacs.html gnupackの人も、この64bit版はIME周りの修正の質が高いので取り込みたいと言ってるよ
64bit版は24版がないのがな
emacs-24.2-20121208.exe
まだ23.4で我慢。
Google日本語入力Win8で今日昨日に急に日本語入力できなくなったぞ 何度他人に不都合味あわせれば気が済むの? まともに機能しないようなもの公開するな死ね
道路に罠仕掛けておいてそんな言い草あるか さっさと直せ、出来ないなら今すぐ死ね 今時日本語入力がまともに出来ないソフトなんてあるか糞馬鹿
今時日本語入力がまともに出来ないソフトなんて 糞馬鹿野郎がいじくって作ったNTEmacsだけだって言っておろうが 言い逃れするな責任持って早く直せ、出来ないなら死ね
こんな馬鹿げたことやってる奴は初めてみた お前ごときはクレーマーを適当にあしらって差し支えない 大半の場合には当てはまらないんだよ 事実を受け止め言い逃れをせず今すぐ直さなきゃ死んで当然だろこんなクソ馬鹿
気に食わないから黙ってるだけじゃあるまいな 死にたくなければとにかく早く直せ糞馬鹿
おやおや殺人予告ですかw
責任取って腹切って死ぬのは当然で本人の勝手だから完全合法 俺が物理的な自殺の手段を提供したわけではない
腹を切って死ぬべきだという選挙演説も問題なかったことから 完全合法なことは明らかだろう
遵法精神なぞ欠片もないGNU乞食の分際が 手前勝手に法やら警察を盾に言い逃れしようとするから こういう事言われるんだと納得しろ
とりあえずNTEmacs起動中にMS-IMEとGoogle日本語入力の切り替え操作をやればIME有効になるな
もう、さびしがり屋なんだからッ!
emacsスレから誘導されてこちらに来ました print "hello" こう書いたパイソンプログラムtest.pyをemacsでrun-pythonするとこう表示されます >Searching for program: no such file or directory, python 動作確認のため最新版のgnupackを新たに入手してやり直してみました。 まずpythonのインストール(apt-cyg install python)し、 /homeにtest.pyを作り、 mintty.exeでpython test.pyと入力したら正常に動いたのですが、 emacsでtest.pyを開きrun-pythonをしても上のエラーが出てしまいました なおemacsでのpythonソースへのシンタックスハイライトは問題無く動いています 何が原因なのでしょうか?
gnupackで設定そのままで、emacs起動プログラム使ってれば、PATHは通ってると思うんだけどね もしかしてemacs起動プログラムを使ってないのかな
>>402 run-pythonをデバッグした。
run-pythonを走らせると、最終的にpythonはstart-processで起動されている。
start-processはshellを介在しない関数なので、cygwinのコマンドはデフォルトでは起動できない。
なので、以下を設定すれば良いみたい。
(setq python-python-command "C:\\gnupack_devel\\app\\cygwin\\cygwin\\bin\\python2.6.exe")
\\gnupack_develは適当にインストールしたパスへ。
コマンドがpython.exeでないのは、/usr/bin/pythonがシンボリックリンクだったので、
リンク先の実体とした。3系を使うのであれば、python3.2.exeなどへ。
3系の場合は、python3.2m.exeでした。
/usr/bin/pythonがEXEファイルへのcygwin方式のシンボリックリンクだから そのままじゃうまくいかないのか
>>405 pythonが実行された後、エラーになるのでさらに調べた。
run-pythonでは、emacs.pyを読むためにコマンドの中でPYTHONPATHの設定をしている。
これがWindows用の形式で設定されている。これを解決するため、以下のadviceを書いた。
これでOKと思う。
(defadvice run-python (around ad-run-python activate)
(let ((data-directory (substring (shell-command-to-string (concat "cygpath -u " (shell-quote-argument data-directory))) 0 -1)))
ad-do-it))
run-pythonがWindowsで動いてるから「c:/xxx」とかのパスを環境変数に渡すのに、 cygwinのpythonが「:」でパスをぶった切ってくれるのなw
>>386 以前、一日一回は死んでいたemacsが、このバージョンにしてから死ななくなった
ような気がする。gnupackさんに感謝!
>>405 gnupackはconfig.iniでcygwinの/binがPATHに設定されていました。
なので、理由はシンボリックリンクだったからだけですね。
ということで、以下の設定とadviceの設定でOKと思います。
(setq python-python-command "python2.6")
パスを cygpath で読み替える advice を作る関数とか作るのもいいかもね。 以前このスレででてた引数のみ cp932 でエンコードする advice を作る関数みたいなの
でもwindowsのソフトを動かす場合もあるんだよね。 今回の場合もwindwos版pythonであれば、追加設定しなくとも動いたのではないかと 思うし。
start-process とか call-process で特定のプログラムが渡された時に時にパス読み替えさせるとかかねえ modify-process-coding-system みたいに正規表現のパターン登録するとか・・・ java だの javac なんかは windows 版の使ってそうだしね。
run-pythonの問題はちょっと特殊だと思うよ pythonコマンドがemacsパッケージ内の特定のディレクトリのパスを決め打ちで参照する このパスの形式がUNIX形式かDOS形式かはemacsパッケージ自体が決定してて、 adviceとかを使わないかぎり変更できないので問題になる しかし、普通のコマンドなら、そのコマンドが参照するパス自体が決め打ちなことはめったに無くて、 パス自体を設定する手段が提供される場合が多い。したがって、コマンドがCygwinかWindowsネィティブか に合わせて適切な形式のパスを設定してやればそれで済んでしまう
今回の問題の対応では、こんな方法も見つけた。 (setenv "PYTHONPATH" "/app/emacs/emacs/etc/:") :でだます方法。
417 :
402 :2012/12/15(土) 01:59:11.18 ID:pwrqpN1P0
皆さんありがとうございます。 無事run-pythonが動くようになりました!
419 :
418 :2012/12/17(月) 02:42:23.88 ID:ZWcjSacD0
>>276 multi-termにトライ中。
C-aが動かないのは、設定されているTERMのterminfoがないことが原因みたい。
C-hが動かないのは、そのような設定になっているから。
ということで、以下の設定でOKでした。
(setq system-uses-terminfo nil)
(delete "C-h" term-unbind-key-list)
次は、リサイズを調査。
リンク張れないので、転記。白黒反転を治す設定。 (setq term-default-fg-color "White" term-default-bg-color "Black" ansi-term-color-vector [unspecified "black" "#ff5555" "#55ff55" "#ffff55" "#5555ff" "#ff55ff" "#55ffff" "white"])
multi-term改め、ansi-termをまずは整理。 ansi-termが動かない原因がなんとなくわかりました。term-exec-1の最後 の方にあるstart-processの起動で、sttyがうまく設定されていないようです。 おそらく、起動シェルをf_bashにするとダメな様子。最適解かは分かりま せんが、advice書いてみました。 (defadvice start-process (before ad-start-process-for-ansi-term activate) (let ((name (ad-get-arg 0))) (if (string-match "^*ansi-term*" name) (ad-set-arg 2 "f_bash")))) その他の設定は、以下。 (setq locale-coding-system 'utf-8) ; emacsをcp932で使っていれば不要かも (setq system-uses-terminfo nil) これで、ansi-termの起動時に指定するshellをbashにすれば、別途sttyの 設定をしなくとも、ある程度動くようになると思います。
locale-coding-system は utf-8 にすると current-time-zone で文字化けするのがね 影響範囲よくわからないから *-term の時だけにしたほうがいいのかもしれない
>>423 TZが設定されていれば、漢字は表示されない?
gnupackはconfig.iniで設定されている。
>>424 TZ を emacs 外でも内でも設定しちゃえば (current-time-zone) の値がそれになるからそこに関しては問題ないけど
locale-coding-system が他にどこで使われてるかわからないんだよね
windows 側からのメッセージのエンコーディングを設定する変数だから元々の cp932 が妥当だとは思う
>>425 windowsとしてのlocale-coding-systemはcp932かもしれないけど、LANGに
ja_JP.UTF-8を設定したcygwinからみると、locale-coding-systemはutf-8
のような気もする..。混在して使ってんのがよくないんですかね。
とりあえず、term.elでlocale-coding-systemを使っている関数の部分だけに
adviceを入れてみた。これで、locale-coding-systemのsetqは不要となりますね。
(defadvice term-emulate-terminal (around ad-term-emulate-terminal activate)
(let ((locale-coding-system 'utf-8))
ad-do-it))
(setq system-uses-terminfo nil)の設定が機能していなかったようです。 とりあえず、以下の対応でうまく動くと思います。 mkdir -p ~/.terminfo tic -o ~/.terminfo /app/emacs/emacs/etc/e/eterm-color.ti wikiも直しました。
NEWS より * Changes in Emacs 24.3 on non-free operating systems --- ** Cygwin builds can use the native MS Windows user interface. Pass --with-w32 to configure. The default remains the X11 interface. ** Two new functions are available in Cygwin builds: `cygwin-convert-file-name-from-windows' and `cygwin-convert-file-name-to-windows'. These functions allow Lisp code to access the Cygwin file-name mapping machinery to convert between Cygwin and Windows-native file and directory names. トライしてみたが、ビルドが最後まで到達しなかったよ
24.2.91 で ./configure --with-w32 して試したら普通にビルドできたけど
自分は ruby も f_ruby にしてるな
fakery-program-listに追加してもらえばOKですね。 分らないのは、fakery-program-listに登録したプログラムがstart-process から起動されるとき、すべてfakecygpty版にして問題ないものかなぁと。
間違った ruby を f_ruby にしてるんじゃなくて、 「irb」 を「 f_ruby irb」 に変更してるんだった irb みたいなスクリプトだと #! 記法で ruby を直接起動しちゃうんだけど それだと対話処理が正しく動いてくれなかった
run-pythonは、f_irb.exe作ってfakery-program-listに"irb"を追加したら 動いたけど、そういうことではなく?
fakecygpty は f_command にリネームしなくても fakecygpty command で起動しても機能するから arg2 を args にどかして arg2 に fakecygpty を入れてやればいいんじゃない? そうすりゃ一々 f_xxx を用意しなくても init.el の設定だけでうまくいくと思う Meadow のに近くなるね
そうなんだ。考えてみる。
これでよさそうだ (ad-set-args 3 (cons (ad-get-arg 2) (ad-get-args 3))) (ad-set-arg 2 "fakecygpty"))) tramp-encoding-shell を f_bash にしてたのも bash に替えるだけでよくなりそうだけど 変数追ってくと call-process してるところもあるんだよなぁ
>>440 fake版のプログラムがcall-processで呼ばれているところはどの辺ですかね?
というか、何を動かし方ときか教えてもらえますか?
>>443 fake版が呼ばれているというより、tramp-encoding-shell が call-process されているところがあって
そこは fake 版じゃなくても大丈夫なのかな?ってところ。
件のメール見る感じだと問題なさそうだけど。
tramp-sh.el の tramp-call-local-coding-command ね。
ここで tramp-compat-call-process(実態は call-process) が tramp-encoding-shell を呼んでる
>>444 逆に、call-processのところはfake版じゃなくてOKなのかなぁと思っているん
だけど。どうだろ?
>>445 メールの感じからすると問題なさそうなんだけどね。
ちなみにネットワーク越しに使う部分ではちゃんと start-process で呼ばれてる。
以下の設定をして様子見ます。本日はここまでかな。日越してるけど。 (trace-function-background 'tramp-compat-call-process)
• •
Cygwinのパッケージ版のNTemacsなんだけど、日本語入力の時にカーソルが大きくなるを設定で抑制できる?
452 :
450 :2012/12/27(木) 23:42:47.19 ID:AOX40p4L0
もちろんX版じゃなくてwin32版
cygwin版 emacs だと fakecygpty 不要になるんだろうか
cygwinのX11じゃないemacsWin32インストールするだけで動く? なんかうまくいかない
>>454 なんか依存関係ちゃんと書かれていないみたいで自分でパッケージ追加しないとだめみたい
普通の emacs も入れなきゃだめで、かつ emacs-win32 のバージョンに合わせてやらないとだめだった
あと libnoX-xpm だったかな
Cygwinのインストーラーが腐っていてemacs-w32をインストールしようとすると強制的に古いバージョンを入れるようになっている あとライブラリが足りなきゃcygcheckで
>>455 emacs本体を同じバージョンで入れなきゃいけなかったのか
ありがとう無事動いたよ
まだX11ではなくWindowsのEmacs環境って整えたことないんだけど、日本語対応とか考えるとNTEmacsが安定してるのかな
>>458 ちょろっとしか触ってないからなんとも言えないけど GoogleIME での入力は
IME パッチなしの NTEmacs とおんなじ感じだった
アイコンが設定されてないところとかがちょっとさみしい感じ
ねむれねえーーーーー これまた微妙なとこだけど .exe を除去するのに file-name-sans-extension はどうでしょう
>>463 対応しました。コードが整理されてきていい感じです。ありがとうございます。
Emacs24使ってる人います? 自分的には23.4で満足してるんですが。
何が"やはり"なのかよくわからん。 自分でIJG jpegをビルドすれば何でも使えるのでは? 実際、gnupackのEmacs24に同梱されているのはjpeg8のようだし。
>>468 さっとmingwでビルドしたけど、emacsのconfigureで認識しなくて面倒そうなので、まだjpeg6でいいや。
つーか、IJG jpegをビルドといっても、mingwでやったが、うまくヘッダーファイルを認識してくれない。。もう一度やるか。
>>468 IJG jpegをビルドする方法教えて頂けないでしょうか?
>>427 漢字フォルダにcdできないのは、以下で解決できるみたいだ。
(defadvice cd (around ad-cd activate)
(let ((dir (decode-coding-string dir 'utf-8)))
ad-do-it))
linuxだと設定なしでも動くんだけど。もうちょっと調査。
ここで聞いて良いのかわからないのですが、質問させてください。 AutoCompleteを使用しているのですが、//%と入力すると動作が一旦停止したような感じになります。 .emacsで設定している内容は以下の通りです。 (require 'auto-complete-config) (add-to-list 'ac-dictionary-directories "~/.emacs.d//ac-dict") (ac-config-default) (setq ac-use-menu-map t) この現象を回避するにはどのようにすればよいか、ご存知ないでしょうか。
476 :
475 :2013/01/30(水) 17:30:39.52 ID:E+avgWqu0
使用しているのは、NTemacsの23.2.1です。
最新のgnupack_basic-11.00にAutoCompleteを導入して試してみたところ、
>>475 のような症状はでませんでした。
gnupackのemacsに移行することにします。
24.2.93をmingw(32bit)でビルドしたら、w32fns.cで undefined reference to `w32_get_ime_status'とか言われて ビルドに失敗した。 configure時もIMR_DOCUMENTFEEDがないって言ってるし、 やっぱりmingw(64bit)じゃないとビルドできないんだろうか。
479 :
478 :2013/02/09(土) 15:21:26.92 ID:o78OYVMb0
480 :
477 :2013/02/09(土) 19:48:04.34 ID:lBpNE3l50
>>478 すみません、configure.batの指定などは
>>388 では一緒に入れておいた
README.txtに書いていたのですが
>>477 ではdiffしか置いてません^^;
undefined reference to `w32_get_ime_status' は --enable-w32-ime がない
のかな。
IMR_DOCUMENTFEED はご指摘のとおり mingw32 には無いようです。
が、--cflagsで -DIMR_DOCUMENTFEED=7 を指定すればよさそうです。
(IME前後参照変換も動いてるみたい)
とりあえず私のところでは configure.bat で以下を指定して tdm-gcc 32bit
でビルドできました。
--prefix (emacsインストール場所)
--with-svg
--enable-w32-ime
--no-debug
と、--cflagsに
-DRECONVERSION
-DDOCUMENTFEED
-DIMR_DOCUMENTFEED=7
-I(画像等のライブラリ用のincludeファイルの置き場所)...
>>477 w32proc.c の sys_spawnve も修正お願いします。
482 :
477 :2013/02/09(土) 20:48:44.37 ID:lBpNE3l50
>>481 う、すいません、よくわかりません。pidの型?
どこかお教えいただけると幸いです。
483 :
478 :2013/02/09(土) 21:04:51.77 ID:o78OYVMb0
>>477 ビルドうまくできました.ご指摘いただいたとおりでした.
ありがとうございます.非常に助かりました.
485 :
477 :2013/02/10(日) 13:08:48.50 ID:Qg3VTggq0
>>485 こちらこそありがとうございました。
当該の部分は未チェックですが、mingw32 でビルドし、問題なく動作しています。
24.2.93 では、w32-shell-execute がリソース不足で動かなくなる現象が発生
しづらくなることを期待しています。
(他のバグ回避のため、Emacs起動時に確保するヒープサイズが小さくなった)
487 :
名無しさん@お腹いっぱい。 :2013/03/05(火) 13:45:23.08 ID:3dTyCCu70
24.3のrc版が出てますね
NTEmacsはアニメーションGIF対応してるの?
gnupackのemacsを使っています。多重起動についての質問です。 「送る」にファイルを送ってemacsで編集するとき、 emacsを多重起動させない方法はありますか? windowsの他のテキストエディタ(Meryとか)のように、 emacsが立ち上がっていなければemacsを立ち上げて編集、 emacsが既に立ち上がっていればそのemacsで編集をしたいです
一発目のemacsでサーバー立てちゃえよ
24.3 released!
細かい所結構変わってるのな
>>488 GIF対応するようにbuildされたバイナリなら対応している
C-x C-fで読み込むと静止した状態、RETでアニメーション実行
デフォルトではアニメーションは1回で終了だけど、
変数image-animate-loopがtの時にはアニメーションを繰り返す
後者の場合は再度RETでアニメーション停止
>>495 > C-x C-fで読み込むと静止した状態、RETでアニメーション実行
この発想はありませんでした
公式ビルド使ってますがちゃんと動きました
image-toggle-animationで動かせたんですねえ
eshellのチルダ周りがいまひとつな感じになってんだけど なぬか情報無いですか? バッファ上では Char: ~ (126, #o176, #x7e) $ find-file ~/. ←Tab補完しようとしたら read only〜で受け付けない ..それでもTab入れ続けると たまに 「$ find-fic:\User\usr\ 」こんな感じに $rm *~ も効かない
>>485 でも 24.3 に当たるとは思いますが、とりあえず 24.3 用。
少し cmigemo まわりなど変更しています。
http://www1.axfc.net/uploader/so/2832125 テンプレにある GNU emacs(x64) に同梱のパッチを元に emacs 24.3 を
mingw-w64 (32bit, 64bit) でビルドできるようにしてみたパッチです。
w64 でない mingw (mingw32) の gcc でも一応ビルドできます。
MSVC でのビルドは未考慮です。
ダイナミックロード機能はうまく動かせなかったので入っていません。
cmigemo は GNU emacs(x64) のダイナミックロード機能追加前の方法で
組み込むようにしてみました。(前のパッチの .a でリンクするのはやめ)
cmigemo.el は
https://github.com/emacs-jp/migemo の migemo.el をもとに修正してみたものにしてあります。
24.3をMSYSでコンパイルしようと思ったんだけど、make bootstrapでエラー orz rm: cannot lstat `gl-tmp': No such file or directory make[3]: [gl-stamp] Error 1 (ignored)
>>500 ignored って出てますし、そのエラーは無視されるだけなんじゃないですかね。
別なところで止まっているのでは。
cygwin でビルドしてますが
make[3]: [gl-stamp] Error 1 (ignored)
は私のとこでも出ます。
503 :
500 :2013/03/16(土) 14:47:50.38 ID:TLjgnNtn0
>>502 そうですね。ignoreされてるのは知ってるんですが、その先にビルドが進まなくて困って
います。
504 :
502 :2013/03/16(土) 16:43:55.78 ID:OA0PYzbW0
>>503 cmd (コマンドプロンプト) で止まってますか?
MSYS だと cmd /c を cmd //c にすればよいようです。
(そういう修正がtrunkには入ってる)
src/makefile.w32-in の cmd /c (2か所)を cmd //c にしてみるとビルドでき
ているみたいです。(今 lisp 下のバイトコンパイル中)
#cygwinからできるから入れなくていいやと思ってたけどMSYS入れちまった^^;
505 :
500 :2013/03/16(土) 16:46:26.70 ID:TLjgnNtn0
うーん、なんかビルドエラーになるな、24.3はgnupackの中の人待ちだな、こりゃw
509 :
500 :2013/03/17(日) 10:26:59.14 ID:Fh34oiD70
>>506 > うーん、なんかビルドエラーになるな、24.3はgnupackの中の人待ちだな、こりゃw
やっぱりそうでしたか。私も駄目です。
ビルドできないのは64ビット? 32ビットMSYSでcygwin同様ビルドできているけど。
511 :
500 :2013/03/17(日) 13:43:35.13 ID:Fh34oiD70
>>510 > ビルドできないのは64ビット?
いや、32bitです。当分、23.4を使うことにします。
513 :
500 :2013/03/19(火) 20:55:31.35 ID:/8OlFoOd0
exitでcmdからぬけたらええがな
今回安定版らしいしCygw嫌いは 23.4(x64)の人の再登場を願うしかねぇな
516 :
499 :2013/03/19(火) 21:34:10.03 ID:XdS5lq8B0
Cygw嫌いじゃないけど私のなんちゃってパッチよりちゃんとしたもの 出してくれるの期待してる
517 :
500 :2013/03/20(水) 14:28:19.90 ID:ynhG8zfy0
>>472 それ自分駄目でした。jpg表示が出来なかった。
あと、24.3でskkのビルドが出来ない。
$ make EMACS=/usr/local/share/emacs/24.3/bin/emacs.exe PREFIX=/usr/l
ocal LISPDIR=/usr/local/share/emacs/24.3/site-lisp VERSION_SPECIFIC_
LISPDIR=/usr/local/share/emacs/24.3/site-lisp
/usr/local/share/emacs/24.3/bin/emacs.exe -batch -q -no-site-file -l SKK-MK -f SKK-MK-compile
Loading d:/home/hoge/cvs_work/skk/main/SKK-CFG...
Generating autoloads for d:/home/hoge/cvs_work/skk/main/skk-cursor.el...
Wrong type argument: stringp, nil
Makefile:31: recipe for target `elc' failed
make: *** [elc] Error 127
518 :
500 :2013/03/20(水) 15:00:56.48 ID:ynhG8zfy0
>>517 すいません。ddskk-15.1でビルド出来ました。
519 :
472 :2013/03/20(水) 15:17:07.98 ID:G8ZvNk060
これgnupackさんが使ってるのと同じものなので表示出来ないはずがないと おもいますけど… emacs.exe の場所へは libjpeg.dll でコピーするか、 dynamic-library-alist を変更するかすればよいのでは。
520 :
500 :2013/03/20(水) 15:23:03.70 ID:ynhG8zfy0
今度は、wanderlustがうまく行かない。。やっぱ24はキツいなぁ。
そう言えばWnderlustのMLでw32-symlinks.elの話が出てたな。 > > (defadvice insert-file-contents-literally > > (before insert-file-contents-literally-before activate) > > (set-buffer-multibyte nil)) > > gnupack の利用者は上記の advice を無効にし、以下の advice を使うか > 添付のパッチを w32-symlinks.el に当ててみてください。 > > # パッチは**さんに DM で送ったものから minimal なものに変えています。 > > (defadvice w32-symlinks-parse-shortcut (around emacs23-fix activate) > (let ((default-enable-multibyte-characters nil)) > ad-do-it))
他でも使われてるであろう insert-file-contents-literally に直接 advice はいかがなものかと思ってたから これは助かるわ。
524 :
500 :2013/03/20(水) 15:56:27.18 ID:ynhG8zfy0
>>521 ありがとうございます。でもmasterから持ってきても、ntemacs24.3だとコンパイルエラーになります。
うーん、困ったemacs24。
$ make EMACS=/usr/local/share/emacs/24.3/bin/emacs PREFIX=/usr/local
\
> PIXMAPDIR=/usr/local/share/pixmaps/wl LISPDIR=/usr/local/share/ema
cs/24.3/site-lisp \
> VERSION_SPECIFIC_LISPDIR=/usr/local/share/emacs/24.3/site-lisp \
> MANDIR=/usr/local/share/man INFODIR=/usr/local/share/info
/usr/local/share/emacs/24.3/bin/emacs -batch -q -no-site-file -l WL-MK -f compile-wl-package \
/usr/local/share/emacs/24.3/site-lisp /usr/local/share/pixmaps/wl
Loading d:/home/hoge/src/wanderlust-master/WL-CFG...
Loading d:/home/hoge/src/wanderlust-master/WL-ELS...
Cannot load `mime-setup'. Please install SEMI
Makefile:30: recipe for target `elc' failed
make: *** [elc] Error 127
>>522 忘れてた。。
--- w32-symlinks.el.orig2013-03-16 07:36:04.447724600 +0900
+++ w32-symlinks.el2013-03-17 19:55:58.562132100 +0900
@@ -262,6 +262,7 @@
;; reverse-engineered by Jesse Hager <jessehager at iname.com>
;; available from
http://www.wotsit.org/download.asp?f=shortcut. (with-temp-buffer
+ (set-buffer-multibyte nil)
(let ((inhibit-file-name-handlers
(cons 'w32-symlinks-file-name-handler
(and (eq inhibit-file-name-operation 'insert-file-contents)
>>524 Please install SEMI ってでてるけど?
527 :
500 :2013/03/20(水) 16:34:13.26 ID:ynhG8zfy0
>>526 すみません。wlのインストールが上手く行きましたが、今度はemacs-w3mでエラーになっちゃいました(><)。
だらだら書いて申し訳ありません。これとの依存のせいか、wlとの依存のせいか、byte-code: Cannot open load file: elmo-shimbunになってしまいました。
$ ./configure --prefix=/usr/local --with-emacs=/usr/local/share/emac
s/24.3/bin/emacs \
> --with-lispdir=/usr/local/share/emacs/24.3/site-lisp/w3m \
> --with-icondir=/usr/local/share/pixmaps/w3m \
> --mandir=/usr/local/share/man --infodir=/usr/local/share/info
checking whether make sets $(MAKE)... yes
checking for a BSD-compatible install... /usr/bin/install -c
checking for makeinfo... makeinfo
checking for texi2dvi... texi2dvi
checking for ptex... ptex
checking for jbibtex... false
checking for dvipdfmx... dvipdfmx
checking for texi2pdf... texi2pdf
checking for egrep... egrep
checking for /usr/local/share/emacs/24.3/bin/emacs... /usr/local/share/emacs/24.3/bin/emacs
checking what a flavor does /usr/local/share/emacs/24.3/bin/emacs have... Emacs 24.3
configure: error: Emacs 24.3 is not supported.
emacs-w3m はなんか無理やりバイトコンパイルだけした記憶があるな
529 :
500 :2013/03/20(水) 16:44:07.29 ID:ynhG8zfy0
ちょっと、やはりemacs24はDebian testingでもまだ無いから、23.4を使い続けることにします。 ご迷惑をお掛けしました。
530 :
526 :2013/03/20(水) 17:23:18.10 ID:G8ZvNk060
>>529 あー、断念されちゃったみたいですが、とりあえず。
24のどのバージョンでやったか忘れましたが、私が emacs-w3m をインストー
ルしたときは cvs で最新開発版をもってきてやりました。
(取得方法は
http://emacs-w3m.namazu.org/index-ja.html 参照)
configure を作るために autoconf とか必要だったかと思います。
ntemacs関係ない話になってきたのでこのへんで。失礼しました > all
531 :
500 :2013/03/20(水) 17:40:03.71 ID:ynhG8zfy0
>>530 ありがとうございます。再度emacs-w3mをcvs update -dPAしてautoreconf掛けたら、うま
く行きました。しかし、wlのIMAPやPOP3のフォルダーを見ると、iso-2022-jpのメールが見
れなくなってしまいました。。。
Creating msgdb... 89%
Unknown charset: ISO-2022-JP [2 times]
Creating msgdb... 94%
Unknown charset: ISO-2022-JP [3 times]
Creating msgdb... 97%
Unknown charset: ISO-2022-JP [2 times]q
Creating msgdb...done
>>531 うーん…これは見当つきません。初めて見るメッセージです…
24.3 の公式バイナリいらっしゃいましたー
GNUPACKの中の人最近忙しいのかな。emacsもまだテストリリースだし。
536 :
名無しさん@お腹いっぱい。 :2013/04/14(日) 02:45:22.41 ID:1yO1qr230
537 :
名無しさん@お腹いっぱい。 :2013/04/14(日) 02:46:02.02 ID:1yO1qr230
このゴミども叩きしてやっから!!! 259 [2013/04/13(土) 21:19:46.64] 名無しさん@お腹いっぱい。 <sage> meadowは開発がうまく引き継がれなかったの? gnupackとかWikipediaにすらのってない新参でしょ? 260 [2013/04/14(日) 00:55:51.44] 名無しさん@お腹いっぱい。 <sage> じゃあ使うな 潰してみろ 261 [2013/04/14(日) 01:21:30.36] 名無しさん@お腹いっぱい。 <sage> 驚愕!NTEmacsを新参呼ばわりとは!
538 :
名無しさん@お腹いっぱい。 :2013/04/14(日) 02:46:51.16 ID:1yO1qr230
この即レスはないわ・・・きもっ お望み通り潰してやるよwwwwwwwwwwwwww
539 :
名無しさん@お腹いっぱい。 :2013/04/14(日) 02:50:34.47 ID:1yO1qr230
こらあ でこいや〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
sage
541 :
名無しさん@お腹いっぱい。 :2013/04/14(日) 14:54:43.46 ID:QWEULxzo0
定期つぶしあげ 260 [2013/04/14(日) 00:55:51.44] 名無しさん@お腹いっぱい。 <sage> じゃあ使うな 潰してみろ 261 [2013/04/14(日) 01:21:30.36] 名無しさん@お腹いっぱい。 <sage> 驚愕!NTEmacsを新参呼ばわりとは!
542 :
名無しさん@お腹いっぱい。 :2013/04/14(日) 14:56:29.52 ID:QWEULxzo0
258 [2012/12/21(金) 12:07:05.57] 名無しさん@お腹いっぱい。 <sage> もうネット上にmeadow使いの居場所はないってこった ■4ヶ月後 259 [2013/04/13(土) 21:19:46.64] 名無しさん@お腹いっぱい。 <sage> meadowは開発がうまく引き継がれなかったの? gnupackとかWikipediaにすらのってない新参でしょ? ■即レス 260 [2013/04/14(日) 00:55:51.44] 名無しさん@お腹いっぱい。 <sage> じゃあ使うな 潰してみろ 261 [2013/04/14(日) 01:21:30.36] 名無しさん@お腹いっぱい。 <sage> 驚愕!NTEmacsを新参呼ばわりとは!
543 :
名無しさん@お腹いっぱい。 :2013/04/14(日) 14:59:33.75 ID:QWEULxzo0
544 :
名無しさん@お腹いっぱい。 :2013/04/14(日) 15:03:26.83 ID:QWEULxzo0
それなのにgnupack(本家Emacs+IMEパッチ)に変わるwindows用emacsが いまだにないのは嘆かわしいことだ これは現状を見ないふりしてなんでも叩いてくる非生産的クズどものせい
545 :
名無しさん@お腹いっぱい。 :2013/04/14(日) 15:04:36.30 ID:QWEULxzo0
vimすらまともにビルドできないのによくやってるわなあ・・・
なにこれw
23.4で十分なんだけどなぁ。。24はちょっと変更点あり杉。
Emacs24.3で、cp5022x.elを使っている方いますか? 自分は起動時に、cp5022.xのロードに失敗してしまいます。 何かいい方法はないでしょうか。
>>549 http://nijino.homelinux.net/emacs/cp5022x.el cp5022x.elってこれだよね?
64bit版Win7SP1上で、MinGW+24.3のソース+gnupackのパッチでbuildしたNTEmacsだけど、
↑のcp5022x.elをsite-lispの下に置いて、Emacs起動して、*scratch*バッファで
(require 'cp5022x)
とした限りでは、特にエラーとか発生せずにロードできているみたいだよ
使い方判らないのでそれ以上は試してません
gnupack の emacs を最大化で起動するには config.ini をどの様に書けばいいのん?
>>551 init.elへ設定書くのはだめなの?
>>550 >
>>549 >
http://nijino.homelinux.net/emacs/cp5022x.el > cp5022x.elってこれだよね?
> 64bit版Win7SP1上で、MinGW+24.3のソース+gnupackのパッチでbuildしたNTEmacsだけど、
> ↑のcp5022x.elをsite-lispの下に置いて、Emacs起動して、*scratch*バッファで
> (require 'cp5022x)
> とした限りでは、特にエラーとか発生せずにロードできているみたいだよ
> 使い方判らないのでそれ以上は試してません
自分は、emacs起動時に以下のエラーが出ます。
Symbol's value as variable is void: mime-charset-coding-system-alist
>>553 >Symbol's value as variable is void: mime-charset-coding-system-alist
gnupackに標準添付のinit.elを使ってるのかな?
自分はこれ使って無いので想像なんだけど、
mcs-20ってモジュールをロードした後にmime-charset-coding-system-alistにアクセスするんだよね。
ネットに転がってるmcs-20.elを見るとmime-charset-coding-system-alistを定義してるので成功し
そうなもんだけど、失敗するってことはmcs-20.elのロード自体が失敗してるとかじゃないのかね?
cp5022x.el自体とは特に関係無いと思う。
>>554 うーん。23.4から24.3に移行しようとしたのですが、やはり駄目でした。
>>555 うーん?何?cp5022x.elだけでも問題出るの?
557 :
名無しさん@お腹いっぱい。 :2013/04/28(日) 06:52:32.58 ID:v2ePiaxQ0
>>551 init.elにこの設定ではだめ?
(add-hook 'window-setup-hook
#'(lambda () (w32-send-sys-command ?\xF030)))
>>557 出来ました いつもありがとう!
Emacsスレの人はいつも解を用意してくれるから大好き!
>>559 GnusとかWanderlustとか使って無いなら、
最後の方
;; Gnus
〜
;; SEMI
〜
この辺をコメントアウト(前に;;をつける)してしまえよ。
GnusとかWanderlustとか使うなら、
SEMI関連を24.3対応版にアップデートする必要があるのかな。
>>560 >
>>559 > GnusとかWanderlustとか使って無いなら、
はい、使っています。
> GnusとかWanderlustとか使うなら、
> SEMI関連を24.3対応版にアップデートする必要があるのかな。
これは、semi関連のエラーなんですか、ありがとうございます。
でも、semiのHEADが2003年なんですよねぇ。。
しばらく、semiがアップデートするまで、23.4で様子を見てみます。
あと、wlのメーリングリストで見付けたんですが、wl自体も24に対応させる必要があるみ
たいです。
このようにWindows環境でEmacsを常駐化して”送る”でテキストファイルを送って早く開く事ってできるのかな? d.hatena.ne.jp/tyru/20130430/vim_resident 今は早く開いて作業をしたい時のエディタとガッツリ編集したい時用のEmacs(gnupack)でわけてるから、これが出来たら凄く捗るんだけどなぁ…なんて妄想してます
init.elに(server-start)とか追加しておいて、 emacsclientw.exeあたりをSendToに登録しておけばできるんじゃないのかね。
>>563 普通に拡張子.txtをemacsに関連付けすればいいのでは?
566 :
499 :2013/05/03(金) 11:34:03.18 ID:QEfy+CsO0
いまいち理解しきれてないので少々怪しげですが^^;
>>499 のパッチをw32_call_lisp_thread()を使用しないようにしてみました。
ime-enable-document-feedがtのとき(blink-cursor-mode 0)すると変換時に
そのあたりで固まるので。
あと本家trunkでmingw-w64での32bit版ビルドができるようになっているので
そこらもtrunkにあわせ修正したつもりです。
http://www1.axfc.net/uploader/so/2888671 >>499 のパッチ(か、gnupack emacs-24.3-ime-2013-03-16.patch)
を当てた後に当ててください。
ビルド時のconfigure.batの指定はパッチ前と同じでよいです。
ただし--cflagsに-DUSE_W32_CALL_LISP_THREADを指定した場合は前と同じに
w32_call_lisp_thread()を使用するものになります。
567 :
499 :2013/05/03(金) 11:35:39.55 ID:QEfy+CsO0
もう一つ、cygwin emacs-w32用imeパッチ。
http://www1.axfc.net/uploader/so/2888672 emacs-24.3の元ソースに当てて
./autogen.sh
./configure --with-w32 \
CFLAGS="-O2 -DUSE_W32_IME -DRECONVERSION -DHAVE_RECONVERTSTRING \
-DDOCUMENTFEED -DHAVE_IMR_DOCUMENTFEED"
make
でビルドしてください。
cygwin64のパッチも混ぜてあるのでcygwin64でもビルドできるはずです。
configureまわりの修正方法がよくわからなかったのでsrc/config.hに#define
されるようにはなっていません。
configure実行時にCFLAGSで上記のように指定してください。
gcc-3だと(少なくとも私の環境では)configureでエラーになったのでgcc-4を
インストールしておいた方がよいかと思います。
-DHAVE_CMIGEMO追加でcmigemo組み込みも可能です。
組み込む場合はcmigemoソースを取得して
./configure
make cyg-install
でインストールしておいてください。
568 :
499 :2013/05/03(金) 15:36:56.65 ID:7ZH4G9C30
早っw
gnupackさん
>>566 当てたもの もう置いてるw
コレ(
>>563 )とはちょっと違うけどタスクトレイに常駐してファイルを開いた時に素早く開ければ便利だと思った。
>>563 とも
>>569 とも違うけど開きっぱなしにしといてファイルをドラッグ&ドロップ
とかじゃだめなんかね
gnuclientとかでいいんじゃね?
失礼します、ここ情報を参考にさせて頂いて 自分でbuildしたEmacs 24.3.1 (i386-mingw-nt6.1.7601) (IMEのパッチはemacs-24.3-ime-2013-03-16) >configure.batのオプションは --no-debug --with-gcc --enable-w32-ime --with-svg --cflags -DRECONVERSION --cflags -DDOCUMENTFEED --cflags " -DIMR_DOCUMENTFEED=7" でIME(MSとGoogle)から日本語入力すると???に化けるんですが、何故か分かりますでしょうか? gnupackのemacsや公式の24.3バイナリなら同じinit.elの設定で問題無いので ビルド時におかしなことになってる気がするのですが…
gnupackの24.2以前のパッチだと-DIME_UNICODEなしでビルドすると化けてたから ビルドするソース間違えたとか? そうでないならわかりません。
574 :
567 :2013/05/11(土) 19:07:18.33 ID:n3Vss1OV0
cygwin emacs-w32用パッチ(
>>567 )を少し修正。
パッチ本体は変わりませんが
>>567 でCFLAGSに-Dで指定していたものを
configureでsrc/config.hに#defineするようにしてみました。
http://www1.axfc.net/uploader/so/2898856 >>567 のパッチ後に当ててください。
./autogen.sh
./configure --with-w32
make
でビルド。デフォルトで w32-ime、reconversion、documentfeed、
(migemo.hがあれば)cmigemo が有効になるので./configureでパッチ関係の
指定は不要。無効にしたい場合に以下を指定。
--without-cmigemo : cmigemo組み込み無効
--without-documentfeed : DOCUMENTFEED無効
--without-reconversion : RECONVERSION、DOCUMENTFEED無効
--without-w32-ime : W32-IME、RECONVERSION、DOCUMENTFEED無効
デフォルトでCFLAGSが-g3 -O2になるようなのでビルドしたemacsのファイル
サイズがデバッグ用情報で大きくなります。気になるようならconfigure時に
CFLAGS=-O2を指定するか、ビルド後にstrip emacs.exeするなどしてください。
gnupack最高。メンテナの人、ありがとう。 Fixed98Epson使いたいんだけど、どうすればいいんだろう。 やったこと: 「メニュー>オプション>標準のフォントを設定」で、 Fixed98Epsonをえらんだら、↓って言われて蹴られた。 set-face-attribute: Font not available: #<font-spec nil nil Fixed98Epson nil nil nil nil nil 12.0 nil nil nil ((:name . "Fixed98Epson-12") (user-spec . "Fixed98Epson-12"))>
gnupack ありがと 現状おかしな部分があるんで見てもらえると助かります ごめんなさい、深追いはしてないです OSはWindows8 pro、IME はWindows8 に付属したMS-IMEです ・でかいファイルを開いて end-of-buffer() → beggining-of-buffer() すると その直後の window-start(), window-end() が非常に遅い end-of-buffer() → (goto-line 1) のあとは問題ない このため linum-mode がとても遅くなる ・IME ON/OFF の切り替えがなんだかおかしい いわゆるX mouse状態で使っている関係もあるかも MS-IME側のON/OFF切り替えキーで制御してるんだけど、emacs側と同期していないような感じ mini buffer 使うときに結構ストレスがたまる で、 X window での xev みたいなもの(イベント表示)が実現できたように思うんだけど、 何を使えばいいんだっけ? Meadow で isearch + IME を実現しようとしているときに 散々使った覚えがあるんだけど もう一つ emacs-clang-complete-async が動いている人がいたら情報ください save-buffer() / kill-buffer() すると固まっちゃうんだ
577 :
566 :2013/05/14(火) 21:00:37.58 ID:TYU8HuIc0
他はわからんのでIMEのとこだけ。
X mouseって何かわかりませんがタスクバーのIMEの表示がON/OFFで変わらない
とかなら、Windows8だとそんなもんかと。
8のIMEまわりは7以前と何か違っているようでemacsからは7以前と同じには
ならないようです。ON/OFFできないとかこのスレで誰か騒いでた。
>>499 以降のパッチでは
コントロールパネル→入力方法の変更→詳細設定 の
「アプリウインドウごとに異なる入力方式を設定する」にチェック無し
の場合はとりあえず使える、ぐらいにはなってると思いますが(そうしている
つもり)、チェック有りのときに全くON/OFFできなくなるのはどうすればいい
かわかりません。このあたり詳しい方いたら情報もらえるとうれしい。
minibuffer使用時のストレスってのはON/OFFどっちになってるのかわからない
ってことですかね?
私はON/OFFでカーソルの色を変えてるので特に不便は感じていません。
w32-symlinksについて教えてください。 Windows7の上で動かしているgnupack 11.00でdiredを動かし、 適当なファイルにカーソルを当ててSキーを押すと、Windowsの ショートカットが作成されます。 これが、英数のファイルだと正しくショートカットとして diredから表示されるのですが、漢字を含むファイルだと ショートカットとして表示されません。(.lnkがsuffixの普通の ファイルとして表示される。) つづく..
ただ、その漢字ファイルに対し、Windowsのシェルからショート カットを作ると、diredからも正しく(ショートカットとして) 表示されます。 w32-symlinksは、ホームディレクトリにできるw32-symlinks-ln-s.js というスクリプトでショートカットを作っているようなので、 これを直接コマンドプロンプトから動かしてショートカットを 作ってみましたが、状況変わらずでした。 w32-symlinks-ln-s.jsで作成したショットカットに対して file-symlink-pをするとnilが返るのが問題のような気もして いますが、この辺りについて何か分かる方おりますか?
580 :
576 :2013/05/15(水) 08:59:01.13 ID:GockpgdJ0
>>577 ありがと
X mouse っつーのは、マウスカーソルがあるところにフォーカスが移る設定のこと
以前は power toy の中に設定するツールがあったんだけど、今はないのでレジストリをいじると
これ使うと、以前から微妙におかしな動きをするアプリがあったんだよね
Meadow も微妙だったような
ストレスのほうだけど、 mini buffer に移ってから最初の切り替えがスルーされるんで、
どっちのモードにいるんだかわからなくなっちゃうってことかな
とりあえず、カーソル色の切り替えを有効にしてみました
ほかのことは時間を見つけてちょっとずつ進めていきます
>>578 diredで正しく表示されるショートカットとされないショートカットでは、
ショートカットのFlags領域の内容が違うことが分かりました。
ithreats.files.wordpress.com/2009/05/lnk_the_windows_shortcut_file_format.pdf
Windowsではどちらも同じように見えるのですが..。
>>581 英数文字のファイル名の場合は問題ないなぁと眺めていくと、
w32-symlinks-unicode-to-asciiの変換でエラーとなっていることが分かりました。
この関数は英数文字の変換のみを前提にした実装となっているようです。
なので、以下のアドバイスで内容を置き換え、とりあえず動くようにしました。
(defadvice w32-symlinks-unicode-to-ascii (around ad-w32-symlinks-unicode-to-ascii activate)
(setq ad-return-value (decode-coding-string (ad-get-arg 0) 'utf-16le)))
あとは、dired-do-renameがうまく動かないのを調べてみたいと思います。
>>582 同じフォルダ内の移動は、以下でうまくいくようになりました。
(defadvice w32-symlinks-parse-shortcut (around ad-w32-symlinks-parse-shortcut activate)
(if (file-exists-p (ad-get-arg 0))
ad-do-it))
でも、別フォルダに移動すると、リンク先のパスも一緒変わります。
(Windowsのシェルで作ったショートカットは変わらない。)
(setq w32-symlinks-shortcut-target t)
とすると、ショートカットの表示がそのようになるので、これが正しい挙動なのかなぁとも。
>>576 > もう一つ
> emacs-clang-complete-async が動いている人がいたら情報ください
> save-buffer() / kill-buffer() すると固まっちゃうんだ
動いてます。
win7 64bit
cygwin + gnupack emacs-only
585 :
584 :2013/05/23(木) 02:13:30.34 ID:YYwVzEeO0
>>576 > > save-buffer() / kill-buffer() すると固まっちゃうんだ
このときに、タスクマネージャーを開いてclang-complete.exeを終了させたら復帰しませんか?
gnupackの 24.3.1 of 2012-05-03 を Win7 64bit SSD機で使わせてもらってます。 日本語入力してるとたまに落ちます。 以前は同じ環境で 24.2 2012 09 02をずっと使っていて問題なかったです。 24.3にしてからやったのは wlを 201209230900に上げたのと emacs-w3mの最新を checkoutして入れたぐらいです。 でも落ちるのはこれらと関係なくソースのコメントとか書いてる時が多い(単にその時間が多いだけだろうけど)です。 何か原因究明のヒントなどあれば宜しくお願い致します。
24.3のimeまわりで以前からの変更の大きいのは前後参照変換あたりなのでとりあえず (setq ime-enable-document-feed nil) をinit.elに入れてみるとどうでしょうか。
588 :
名無しさん@お腹いっぱい。 :2013/05/24(金) 08:02:31.86 ID:+AsJwJ8m0
ありがとうございます。 そういえば…elscreenも、何か相性悪くなっていたので tabbarに変えました。 関係無い気はしますが、使用/不使用で試して見ます。
>>587 この可能性高いかも…
自分、blink-cursor-mode 0で点滅止めて使ってました。
点滅止めて明らかに影響ある(固まる)のはgnupack emacs-24.3-20130317 で、emacs-24.3-20130503では点滅止めること自体は問題ないと思いますが… 私はそんなにヘビーにemacs使ってないからか今のところ落ちないのでよくわか りませんが、前後参照変換を無効にして落ちなくなったのなら点滅はたぶん 関係なくて20130503での修正に何かしらまずいところがあるような気がします。
591 :
576 :2013/05/25(土) 09:46:07.19 ID:KrjNseyi0
>>585 はい。復帰します。でもこれじゃ実用にならないんで、どうしたもんかと。
C側の標準出力フラッシュの問題かとも思って、さらっとソース眺めてみたらfflush()呼んでたんで問題なさそう。
それに受信側の問題だったら固まらそうな気がするんで、送信側の問題かと思っています。
一応、C側にバッファ内のソースをまともに encode せずに単に binary で送っていたんで、
encode してから送るようにしてみたんだけど変化なしだった。こんな感じ。
(defun ac-clang-send-source-code (proc)
(save-restriction
(widen)
(let ((source-buf (current-buffer))
(cs (coding-system-change-eol-conversion buffer-file-coding-system 'unix)))
(with-temp-buffer
(set-buffer-multibyte nil)
(let ((tmp-buf (current-buffer)))
(with-current-buffer source-buf
(decode-coding-region (point-min) (point-max) cs tmp-buf)))
(ac-clang-process-send-string
proc (format "source_length:%d\n"
(length (string-as-unibyte ; fix non-ascii character problem
(buffer-substring-no-properties (point-min) (point-max))))))
(ac-clang-process-send-string proc (buffer-substring-no-properties (point-min) (point-max)))
(ac-clang-process-send-string proc "\n\n")))))
もうちょっと真面目に調べたいとは思っているんだけど本業が忙しくて...
>>591 >
>>585 > はい。復帰します。でもこれじゃ実用にならないんで、どうしたもんかと。
> C側の標準出力フラッシュの問題かとも思って、さらっとソース眺めてみたらfflush()呼んでたんで問題なさそう。
> それに受信側の問題だったら固まらそうな気がするんで、送信側の問題かと思っています。
> 一応、C側にバッファ内のソースをまともに encode せずに単に binary で送っていたんで、
> encode してから送るようにしてみたんだけど変化なしだった。こんな感じ。
>
save-buffer, kill-bufferで問題がでるのは思い当たる節がある。
上記2関数は
(add-hook 'kill-buffer-hook 'ac-clang-shutdown-process nil t)
(add-hook 'before-save-hook 'ac-clang-reparse-buffer)
されていて、
ac-clang-reparse-bufferに問題があがる。
うちだとshutdownはちゃんと動いてる
ac-clang-reparse-bufferが実行されると
clang-complete.exeの
void completion_doCmdlineArgs(completion_Session *session, FILE *fp)
が実行されてlibclangのAPI
completion_reparseTranslationUnit(session)
が実行されるのだが、この関数でクラッシュしてclang-completeが落ちる
なので、(defun ac-clang-send-cmdline-args (proc)を呼ぶと落ちる。
とりあえずこの代替として、
(defunc update ()
(shutdown)
(launch))
でcflagを再セットするようにした。
594 :
593 :2013/05/25(土) 21:36:11.29 ID:Cd3+uqoV0
>libclangのAPI >completion_reparseTranslationUnit(session) ちょっと訂正。 APIはさらにこの中の clang_reparseTranslationUnit でした。 clang-completeはどこでビルドしてますか? 当方の環境は cygwin-1.7.18 clangはcygwin bundle版 clang/llvm 3.1.3 clang-completeはこれを使ってビルド。 上記のAPIクラッシュはclang側でも認識しているようで、3.1以降でfixされているようです。 clang-complete-asynはclang3.1以外で試してないです。 そのうちやる予定ですが・・。
595 :
593 :2013/05/25(土) 21:40:22.42 ID:Cd3+uqoV0
> 一応、C側にバッファ内のソースをまともに encode せずに単に binary で送っていたんで、 > encode してから送るようにしてみたんだけど これですが、ちょっと参考にさせてもらいます。 別の不具合があって、 clang-complete対象バッファに2バイトコード(コメントだったとしても)があると補完されず、clang-completeがエラーを返す。 この問題はlibclangだけの問題で、 同じコードを clang.exeから直接補完指定した場合は正しく動きます。 あと、上のencode処理ですが、該当バッファだけ行っても includeされるファイルまでは適用されないので、どうしようかと思ってます。
596 :
576 :2013/05/26(日) 14:52:58.17 ID:8JXHX+340
>>592 ただのソフト屋。本業で使えればかなりうれしいんだけど…ってやつ
>>595 cygwin/clang は同じものっぽい。
関係ないと思いたいけど、前にも書いたけど Windows8 pro 使ってる
clang-complete.exe が落ちるってことはない
> includeされるファイルまでは適用されないので、どうしようかと思ってます。
includeされるファイルについては保存されているものが使われるんで、問題ないような
> clang-complete対象バッファに2バイトコード(コメントだったとしても)があると補完されず、clang-completeがエラーを返す。
「対象行のポイントより前の部分に2バイトコード」ってことならしたのが効くかも(not tested)
;; defsubst なんで、コンパイルして使っているなら再コンパイルしてね@老婆心
(defsubst ac-clang-create-position-string (pos)
(save-excursion
(goto-char pos)
(format "row:%d\ncolumn:%d\n"
(line-number-at-pos)
(1+ (length (encode-coding-string
(buffer-substring (line-beginning-position) (point))
buffer-file-coding-system))))))
>>596 >
>>595 > cygwin/clang は同じものっぽい。
> 関係ないと思いたいけど、前にも書いたけど Windows8 pro 使ってる
> clang-complete.exe が落ちるってことはない
そもそもうちだと cygwinが win8でまともに動かない。
makeやgcc動かすとコアダンプするレベル。
rebaseとかしても改善しないし、VMware上や会社のpcでやっても同じなので
落ちる問題はwin8特有の問題と思われる。
関係あるかわからないけど、VMwareにwin7とか入れて試してみたらどうです?
598 :
576 :2013/05/27(月) 21:56:16.22 ID:93q+FUOO0
>>597 うーん。そこまでやるなら仮想マシンにubuntuなりいれてそっちでやるよ
今日、 >596 までのコード入れてみたら、何が良かったのかわからないけど、
>>595 レベルと似たようなレベルになったみたい
*clang-complete*がエラーの山になるところは確認できたから明日もう少し追ってみようと思ってる
lgrep が落ちるしWindows8はかなりつらいねorz
599 :
585 :2013/05/29(水) 18:40:42.14 ID:N04obCDm0
>>591 このコードいれたらマルチバイトかいけつしたわ
感謝!!
最近 org-mode を使いたいがために、NTEmacs 入れたんだが、なぜか utf-8 で 使わないといかん的な気持ちになって、必死で utf-8 環境整えた んで、困ったのは grep win-bash てのからパクった grep で用が足りたと思いきや、utf-8 で保存したファイル から全然拾ってくれん 調べたら、NTEmacs から外部プロセスへ引数として渡せる文字列は、コードページに 依存するということで、つまり日本語 Windows 使う限り cp932 限定 それじゃってんで、渡す文字コードとファイルの文字コードと返す文字コードを指定できる grep とかねえかと探したら、lgrep なるものを発見 あまりに俺が欲しい物過ぎて感動したのも束の間、どうやら cygwin インストせにゃ いかんぽい org-mode 使いたいだけなのに cygwin 入れるのはアホらしいので、何か方法はないかと 探したら、mingw で win版 lv 作れることが判明 ただし、バージョン古めの 4.21 んで、早速 make して使ったら、挙動が grep じゃなくてビューアー 起動オプション指定し忘れかとまた調べたら v4.21 は grep モード実装する前の バージョンだと知り愕然 なんだよ、結局 cygwin 入れなきゃならんのか、と頭抱えてからふと思った そもそも、なんで utf-8 で回そうと思ったんだろう もう疲れ果てて、調べる気がおきんw だれか、教えてくれ org-mode @ NTEmacs は sjis-dos で無問題?
つ jvgrep
604 :
600 :2013/06/08(土) 05:49:03.26 ID:FIXbr+q70
>>600 以前このスレで話題にし、解決方法を以下に記録してました。
www49.atwiki.jp/ntemacs/pages/16.html
gnupackでしかテストしていませんが、windowsのemacsをutf-8で使う
場合でも、プロセスコールのパラメータをcp932で渡せます。
ラスポスはゲイツだった
ワイルドカードを展開しない windows shell の糞仕様
win-bash の grep は自前で展開してたのんだね、エライ
elisp で関数用意すれば何とかなっちゃうんだろうが
素人がそれを作り上げるまでに、何日かかるかわからんから
却下
目的と手段が逆転しかねんし
もう、sjis-dos でいいや
>>605 これ読んだ記憶あるけど、正直意味わかんなかった
elisp コードはもともとよくわからんが、コメント読めば
だいたいやってることはわかる
で、疑問として、細工しなくても cp932 で渡っちゃうのに
なんでわざわざこんなことすんのかと
まあ、俺が何か誤解してんだろうけど
>>606 自己レス
>>606 の投稿者、あとこれもだけど、は600の人ね
まあ、過疎スレだからわかるとは思うが、念のため
608 :
605 :2013/06/08(土) 17:10:08.15 ID:bB/kwevs0
>>608 外部プロセスへ引数の話があったんでURL紹介したんだけど、
cygwin使ってなければ関係ないかも。失礼。
605の設定が必要なのは、LANGの設定をutf-8にしているcygwinを
emacsから使う時に必要となります。
609 :
600 :2013/06/08(土) 21:29:15.67 ID:dfkneIQB0
>>608 なるほど、そういうことか
確かにうちの環境には cygiwin 入れてない
実際、
>>605 のコードを設定ファイルに書いてないが
.emacs に以下を足し
(require 'grep)
(grep-apply-setting 'grep-command "lgrep -n -g -Iu8 -Ks -Os ")
>>603 推奨の lv でワイルドカード使わずに、地道にファイル列挙すれば
(オプションの意味は、ファイルは utf-8 で書かれてるとみなし
キーボード入力、つまり NTEmacs から渡される文字コードを sjis として扱い
アウトプットは sjis で出力)、日本語検索時も文字化けすることもなく
無問題だった
610 :
605 :2013/06/08(土) 22:24:44.03 ID:bB/kwevs0
>>609 emacsからプロセス起動する際のパラメータのcoding-systemは、
process-coding-systemの出力設定に従っているんだと思う。
なので、cygwinをutf-8で使おうとして、default-process-coding-system
の出力設定をutf-8にすると、Windowsのコードページでパラメータを
渡さなくてはならない制約に引っかかる。605はそれの対策。
grepの話は、lgrepを使うといろいろな文字コードのファイル
直接読み込んで検索できるって話なので、また別な話ですね。
lgrepをcp932のパラメータで起動しなくてはならないってのは
一緒の話だけれども。
>>610 cygwin なくても関係あるみたい
諦めきれなくて、いろいろ考えてるうちに grep 以外の捨ててた
win-bash の実行ファイル使って grep-find すればいいことに気づき
find ./org -type f | xargs lgrep -n -g -Ks -Iu8 -Os "漢字"
とかしてみた
コマンドプロンプトからは成功するが、NTEmacs の grep-find だと
Grep finished with no matches found at 日時
と表示されて失敗
そこで、
>>605 の url の設定をコピペすると、あっさり成功
というわけで ID:bB/kwevs0 さん、ありがとう
あなたがいなけば、sjis-dos の日々を過ごすことになってましたw
612 :
605 :2013/06/09(日) 13:29:57.82 ID:hIt2w4Kd0
>>610 win-bashには、bashもついているんだよね?
であれば、find使わなくても、shell-file-name変数にそのbash
コマンドを設定すれば、ワイルドカードの面倒見てくれたりしない
のかな? 他に影響でるかもしれないけど。
また、605の設定使わなくても以下だけでうまくいくような気がする。
試してみて。lgrepのsjisはcp932のことだと思うけど、emacsのsjisは
jisx0208のこと指しているので、普通cp932使います。
(setq default-process-coding-system '(undecided-dos . cp932-dos))
あと、せっかくlgrep使うなら-Iaを使った方がよくないですかね?
ご指摘の設定で、grep スクリプトもうまく動作しました もう完璧 sjis とは cp932 のことだとばかり思ってましたが、違うんですね 初めて知りました いや、本当にいろいろ助かりました 改めて感謝
補足 直したのは default-process-coding-system だけで shell-file-name 変数の方は、他の影響を考えて止め スクリプトで逃げときました
615 :
605 :2013/06/14(金) 12:43:07.83 ID:uBEn3WiP0
grep-mode動いたんですよね。であれば、*grep* バッファで C-cC-fを入力して、バッファの中移動してみましょう。 Next-Error-Follow minor modeってのが動くよう。 私は最近知りました。
616 :
576 :2013/06/15(土) 11:07:15.40 ID:8GM+n2pX0
auto-complete-clang-async.el を少し時間が取れたんで、少し直してみました。
http://www1.axfc.net/uploader/so/2935507.gz ・マルチバイト文字対応
- ファイル本体のマルチバイト対応
(buffer-file-coding-systemが確定していない状態だとどーなるかわからない。そのうち直すかも)
- オプション指定文字列のマルチバイト対応(未テスト^^;)
・プロセス管理が変だったのを直した。
- kill-buffer() の順序によってはプロセスが残る
- 強引にclang-completeを殺すと kill-buffer() できなくなる
・その他
- ちょっとだけファイルをきれいにした。
・今後
- 関数を補完したときに仮引数まで展開されるのがうざいので、ちょっと工夫したい。
いつか本家に戻すつもりでいますので、なにか問題があれば教えてもらえると助かります。
617 :
576 :2013/06/15(土) 11:33:05.25 ID:8GM+n2pX0
まともに調べてないけどコンパイルオプションが長いと clang-complete.exe が落ちる問題は、 LINE_MAX を大きくするように再定義してあげると直かもしれない。 libclang 側の仕様を調べていないんで、いくつくらいが適当かはわからない。
618 :
576 :2013/06/16(日) 06:09:18.87 ID:wDT6JVjY0
Emacs Part 43
http://toro.2ch.net/test/read.cgi/unix/1370754332/29 Windows環境固有の話もありそうなんでこちらでやらせてもらいます。
> ファイルを8個以上ひらくとパイプエラーになってしまうのでそれ以上開けない。
cygwinのemacs?gnupack (mingw32) の emacs だと、clang-complete が30個までは動いてる。
それを超えると確かに開けなくなるね。
> 別バッファにincludeされる対象のファイルを自動的にオープンすることがあり
どうせすぐに閉じられるファイルに対して ac-complete-clang-async (以降 acca) が動いてもむなしいんで、
こういう時には動かさないようにしたいな。(semantic-find-file-noselect()に細工すればいいかな?)
それに、たくさん開いていても、ある時間内に編集するファイルってそう多くないと思うんで、同時起動する数に制限を
かけるという方向も考えてみる。
> これで応答がなくなってしまったことがあり
プロセスに何をさせようとしたときか教えて。
ずっと ac-clang-reparse-buffer() で固まってしまっていたんで、 upしたファイルだと system-type が
windows-nt のときはこれを呼ばないようにしてる。でも、今試したらまともに動くようになっていた。
ファイルをプロセスに送るとき、バイト数を送ってるんでマルチバイト文字の処理をちゃんとしていないと、
実際のサイズが狂ってしまい、その結果プロセスの気が狂っていたんじゃないかと思う。
> ただemacs-lisp自体はシングルスレッドなんですよね?
> 平行性はどういう単位で実現されているのかで、問題の解決方法が変わってくるとおもいます。
イベントループがあってアイドル状態になった時に、キー入力(マウスなんかの操作もこれに変換される)、
外部プロセスからの入力(pipe/socket)、タイマーイベントがあればそれに対応する処理が動くって
構造のなんで、明示的にイベントを受けるか、アイドルに戻さない限り別の処理が動くことはないという認識。
semanticの解析をclangに肩代わりさせることはできないかと妄想中。
helmについて教えてください。 (helm-mode 1)としてhelmを使うと、いろいろなところがhelmのインタフェースになります。 diredもその一つなのですが、+キーでフォルダを作成する際にhelmのインタフェースになり、 その時に漢字を入力することができません。対応方法わかる方、ご教示ください。
>>619 最適解かはわかりませんが、自己解決しました。
(add-hook 'helm-after-initialize-hook
(lambda ()
(setq select-window-functions nil)
(setq w32-ime-composition-window (minibuffer-window))))
(add-hook 'helm-cleanup-hook
(lambda()
(add-hook 'select-window-functions 'w32-ime-select-window-hook)
(setq w32-ime-composition-window nil)))
自分の現在のhelmの設定をwikiにまとめてみました。 www49.atwiki.jp/ntemacs/pages/32.html
>>620 (setq select-window-functions nil)
のところは、
(remove-hook 'select-window-functions 'w32-ime-select-window-hook)
の方がいいかも。wikiは直しました。
w32-ime-buffer-switch-pをtにしていなければ、helm利用時でもminibufferに 漢字入力はできたようです。なので、上記の設定はw32-ime-buffer-switch-p をtにしている際に必要な設定でした。もうちょっと違う解があるような気が しますが、わかる方いたら教えてください。
過疎っててさびしいので投稿。 helm-locateでanything-filelistの様に動くコマンドを考えてみました。 and検索もできます。改行部分は繋げてください。 (setq helm-locate-command "locate_case=$(echo '%s' | sed 's/-//'); cat ~/tmp/all.filelist | perl -ne \"$(echo %s | sed -r 's/^ +//' | sed -r 's/ +$//' | sed -r 's_ +_/'$locate_case' \\&\\& /_g' | sed 's_.*_$| = 1; print if (/&/'$locate_case')_')\"") cat ~/tmp/all.filelist の部分を locate '' とするとlocateコマンドでも 動きます。locateコマンド使う意味が無くなっていますが、-rオプション 使うより速いです。
>>624 anything版です。こちらはlocate版にしてみました。
locateでand検索できるのがうれしいかもしれません。
(setq anything-c-locate-command "locate '' | perl -ne \"$(echo %s |
sed -r 's/^ +//' | sed -r 's/ +$//' | sed -r 's_ +_/i \\&\\& /_g' |
sed 's_.*_$| = 1; print if (/&/i)_')\"")
むやみにdefadviceするのは勘弁してくれ しかも凶結合だし
バッファの最下行に文字が入力されていないとき、 その行で変換キーを押すと、Emacs Abort Dialogが出て落ちる。100%再現する。 カーソルのある行またはそれより下の行に文字があるときなら、 ふつうにその文字に対する再変換になるんだけど。 -q で起動して確認した。 皆さんもなりますか? 環境: emacs-24.3-20130503.exe WindowsXP SP3 32bit Microsoft IME Standard 2003
628 :
名無しさん@お腹いっぱい。 :2013/08/07(水) NY:AN:NY.AN ID:zzjPLe3t0
>>627 再現した。*scratch*バッファーでも一発で落ちた。
新規ファイルバッファーで1行のみ時はセーフ、リターンして2行目にいるとアウト。
emacs-24.3-20130503.exe
Windows7 SP1 32bit
Microsoft IME 10.1.7601.0
GNU Emacsではならないな <convert> is undefined って出るだけで
630 :
566 574 :2013/08/07(水) NY:AN:NY.AN ID:uMYvsqWt0
631 :
627 :2013/08/07(水) NY:AN:NY.AN ID:kbTRqVxJ0
>>628-630 ありがとうございます。
今までバイナリだけ利用させてもらってましたが
いい機会なんでビルドしてみます。
632 :
630 :2013/08/09(金) NY:AN:NY.AN ID:YLGluyb40
gnupackで入れたntemacsをgnupackの開発メモで公開されているemacs-24.3を上書きして使っています
el-getの導入でひっかかっているので質問します
[firefox][emacs] cookieswap補助、gist.el、ちょっとtombloo - うぇぶとらばぁす
http://d.hatena.ne.jp/serian/20121115/p1 これのwrong type argument: stringp, 99まではたどり着いたのですが、その先の解決法がわかりません
ブログではgnupackのinit.elが影響を及ぼしているのかと推測していますが、どうすればよいのでしょうか
>>635 > (setq gnutls-trustfiles "d:/gnupack/app/cygwin/cygwin/usr/ssl/certs/ca-bundle.crt")
ではなく
> (setq gnutls-trustfiles '("d:/gnupack/app/cygwin/cygwin/usr/ssl/certs/ca-bundle.crt"))
失礼しました。たしかにリストにしなければいけませんでした。 改めてel-getをインストールしようとしたらinvalid-functionと出ました。引き続きいろいろと試してみます。 ありがとうございました。
638 :
名無しさん@お腹いっぱい。 :2013/08/13(火) NY:AN:NY.AN ID:yfSj9fNg0
>>347 類似の現象再燃、相当頻繁に出現。
変換後文字はいつまでも他バッファーに書き込まれ
一旦はまると、このままではなかなか状況脱出できず
一度ファイルセーブするか,飛んだ先バッファー窓枠をマウスクリックすると
直るときあり。
emacs-24.3-20130503.exe
Windows7 SP1 32bit
Microsoft IME 10.1.7601.0
>>637 シングルクオートが抜けてるのに側溝の中に落ちている1円玉一個
こんにちは。 自分はgnuwin32を使ってx86環境でntemacs(23.4)を構築しているのですが、 x64な環境でもgnuwin32のjpeg.dllとかはそのまま利用できるでしょうか。 まだx64環境がないもので、すみません。
使えるよ。WOW64ならね。
>>641 > 使えるよ。WOW64ならね。
ありがとうございます。
and検索できるgrepコマンドを作ってみました。 www49.atwiki.jp/ntemacs/pages/33.html helm-do-grepやanything-do-grepと連携すると便利です。 よければ使ってみてください。
>>643 早速試しに使わせていただきましたが、以下のようにファイルが見つからないと言われてしまいます
$ ls
a.log b.log
$ grep.pl "a" *.log
grep: "a.log": No such file or directory
grep: "b.log": No such file or directory
コマンドの設定はお試しで簡易的なものにしています
$grep_command1 = "grep -r";
$grep_command2 = "grep"
645 :
644 :2013/09/08(日) 18:31:02.50 ID:XMFNqvoQ0
すいません こちらのミスでgrep.plを貼り付けてるときにemacsの機能で余計なバックスラッシュが補完されてしまい 正しくコマンドが実行できていませんでした。
ミスっていうと聞こえがいいよね
コードはGitHubに置くと良いんじゃないかなあ
>>644 grepで使う場合、$grep_command2で使っている正規表現"+"が使えていないようですので、
先ほど正規表現を見直してwiki更新しました。
なお、もともとlgrep用に作ったのでrecursiveでの利用は考えていなかった(コマンド外
でfindする前提だった)のですが、grepやack、agで利用されている方もいるようなので、
サポートを検討してみます。
>>647 こちらも考えてみますが、コードの説明や使い方も書くとなるとwikiの方がいいかなぁと
思ったりしていました。
githubもレポジトリ毎にwikiページ持てるぞ
コードの説明や使い方程度なら、リポジトリのトップにREADME.md置いとくだけでもいいしな
>>648 -i(case insensitive)をサポートしました。helm-do-grepの場合、検索文字に
大文字を入れるとsensitiveになります。anything-do-grepでは%cの指定ができない
ので常にinsensitiveにしました。
-r(recursive)も指定できるコマンドもsampleに付けましたが、helm-do-grepの
%eをどのように渡すかが課題で、helm-grep-default-recurse-commandの設定は
やっぱりfindのままです。そもそもlgrepではrecursive使えないですし。
>>649 >>650 やっぱりいまどきはgithubなんですよね。検討してみます。
>>499 素晴らしいcygwinパッチありがとう。
ちょっと教えて頂きたいのですが、
mingwのパッチでw32.cとかで_mbsincとか使っている所が軒並み無いのですが、cygwinでは影響無いのでしょうか?
653 :
499 :2013/09/12(木) 21:00:49.77 ID:2hKeeKpJ0
>>652 今のcygwinは内部Unicode化されてたと思うので多分ダメ文字の問題とかは
無いかと。違ってたらすみません。
あとw32.cとかw32proc.cとかはcygwinのemacs-w32では使われてないですよね。
(ビルド後 src 下で ls *.o しても w32.o w32proc.o は無い)
自分、まだWindows XPなんですけど、Windows8(64bit)でもちゃんとインストールは可能でしょうか。 自分が使っているのは以下のパッケージです。 ・NTEmacs23.4 ・cmigemo ・lookup ・wanderlust ・howm
>>654 (emacs-version)
"GNU Emacs 24.3.1 (i386-mingw-nt6.2.9200)
of 2013-05-03 on GNUPACK"
このwindows8(64bit)でhowm最新ベータ版は動いていますよ
>>653 defaultで-fexec-charsetがutfー8ですね。
これだとwinapiのw系の呼び出しでも常に文字コード変換が必要で
性能的に不利かと思いましたが、
cygwinでコンパイルした方がキビキビ動いている
気がするぐらいですね。
長い間MSVCなTCHAR慣れした自分には
charのままm18n出来る発想は目から鱗( Д ) ゚ ゚
trampで開いたshellバッファにも対応できるshell-popもどきを作ってみました。 trampを使っていない場合にも利用できますが、trampを多用している場合には特に便利かと思います。 lispの見直しはまだ必要のようにも思いますが、よければ利用してみてください。 www49.atwiki.jp/ntemacs/pages/34.html ただし、今のところはshell-mode専用です。
cp5022xが使いたいから、23.4使ってる俺は情弱w。
>>656 半田さんが頑張ってくれたおかげで、今のEmacsは内部的にはフル装備のunicodeになっているんじゃ無かったっけ
半田氏がEmacsに組み込んだのはもっと恐ろしいものじゃなかったっけ? いまはそれをダウングレードして内部コードをUTF-8にしてしまったとかなんとか
その辺の時期から最近までずっとEmacsから離れていたんでよくわかんないな どっかに情報残ってるかな? 守岡さんが超漢字みたいなのを作っていた記憶があるんだけど、そんなヤツかしら ググってみたら今助教やってるんだな、なつかしい
最新のgnupackのEmacsを使っています。 apt-cyg install zsh texi2html でzshとtexi2htmlをインストールしてから executable-findを実行するとtexi2htmlの方がなぜか見つかりません (executable-find "zsh") "R:/gnupack_basic-11.00/app/cygwin/cygwin/bin/zsh.exe" (executable-find "texi2html") nil minttyでは # which zsh texi2html /usr/bin/zsh /usr/bin/texi2html こうなるのでemacs側だけでなぜか探せなくなっているみたいです 解決策はありますか?
>>663 windows で実行できないファイルなので、この振る舞い自体は正しい。
何をもって '解決' と呼ぶのかな?
shell-modeでコマンドヒストリがうまく利用できないので、対策を 考えてみました。bash限定ですが、bashだけを使っている方は便利か と思います。よければ使ってみてください。 www49.atwiki.jp/ntemacs/pages/35.html 以前紹介したこちらも一部不具合があったので対策してみました。 www49.atwiki.jp/ntemacs/pages/34.html
gnupack、フォルダのアイコンがfind-fileなのはいいんだけど completion--some: Invalid functionとか言われちゃうよ
Emacsを高速起動せよ #kansaiemacs - Emacs ひきこもり生活 /d.hatena.ne.jp/meech/20131030/1383109296 NTEmacsでもこれと同じような高速化はできますか
670 :
668 :2013/11/01(金) 02:06:50.31 ID:GKffOHJ80
ありがとうございます。 そうでしたか。その設定ではうまく動かせませんでしたので他の方法を試みてみます。
件のブログは Emacs 関係なく OS の機能だからなあ タスクマネージャあたりから出来るプロセスのメモリダンプ結果を そのまま再ロードでもできればいいんだけどね dump はどうしても SEGv になってしまう・・・
ag + ag.el で改行コードが DOS 形式のファイルを検索すると どうしても行末に ^M が付いてしまうんですが、 どういう風に設定したらいいんでしょうか? 改行コードをいろいろ弄ってもうまくいきません。 (setq default-process-coding-system '(utf-8-dos . utf-8-unix))
ag.el 眺めてるんだけど、具体的にどういうコマンド使った時にそうなるのかを教えておくれ
674 :
672 :2013/11/04(月) 22:36:47.46 ID:tQ324Mec0
>>673 わざわざありがとうございます。
ag.el に関しては何も設定せずデフォルトのオプションのまま M-x ag してるだけです。
ただ ag を動かすために fakecygpty と次のページの設定をしています。
http://www49.atwiki.jp/ntemacs/pages/28.html 一応 ag は手元でビルド可能な 0.15 を使用しています。
ファイルの改行を UNIX に変更すれば改行コードの設定を弄れば問題ないんですが、
DOS 改行だとなぜかうまくいきません。
使ってないから憶測だけど、ag って ack とか grep の仲間みたいなものでしょ? 仮想端末必要無いような気がするから fakecygpty 通す必要ないような気がするんだけど。
676 :
672 :2013/11/04(月) 23:22:15.07 ID:tQ324Mec0
677 :
672 :2013/11/05(火) 00:16:47.86 ID:Avl0fwS40
Emacs 側の設定で簡単に対処できればと思ったんですが、 私の環境も古いままで十分に検証もできないので、 基本的な設定で対処できそうなポイントがなければ結構です。 default-process-coding-system の改行コードを弄るくらいしか思い付かなかったので、 ここを変えてみてもどうもうまくいかないようです。 car を *-unix にするとさらに ^M^M となるし。 ファイルの改行が UNIX なら上の設定でいいようですが。
cygwinのlibの中に binmode.o っていうのがあると思う。 それを fakecygpty にリンクしてやると直かも。
text でマウントしてるとそういう問題起きることもあるってことかねえ。 うちは全部 binary でマウントしてるな。
ptyはバイナリモードでオープンされ、stdioはテキストモードになるんで、 emacsとつながっているパイプに書くときに、 CR+LF が CR+CR+LF に なってしまっているんじゃないかと。
681 :
672 :2013/11/05(火) 20:56:26.29 ID:Avl0fwS40
>>678 私は素人ですがどうも駄目なようです。
>>679 Cygwin 1.7.16 なので普通に binary でマウントされるようです。
>>680 > CR+CR+LF
そんな感じですよね。対処はわかりませんが。
fakecygpty の open のところに O_BINARY 直接立ててコンパイルしなおしもだめかね。 binmode.o のリンクと結果同じなんだろうけど。
683 :
672 :2013/11/05(火) 23:23:12.02 ID:Avl0fwS40
>>682 ありがとうございます。でもどうやら駄目みたいです。
普通にコンパイルしたのとサイズも同じですね。
>>672 process-coding-system-alist をいぢじるのはどう?
(cons "ag" (cons 'utf-8-dos . 'utf-8-dos))
みたいなのを追加するとか。
>>671 起動を早くしたければ、(require 'XXXX) は一切やめて、
全て、autoload と eval-after-load に整理する方法がある。
最初から起動したいマイナーモードだけはこの手法は通用しないけど、
これで80秒かかってた起動が4秒くらいに短縮した。
実は add-hook もこれを念頭に作られていて、hogehoge-hook が定義されている
ライブラリを読み込まなくても (add-hook 'hogehoge-hook 'pagepage-minor-mode)
が実行できるようになってる。
>>684 dump はその最初から起動したいマイナーモードなんかがきっちり読み込まれた状態の
emacs を作ってくれる方法なんよ。
>>685 もし貴方が新進気鋭のEmacs愛なプログラマならば、
portable-dumper を 最新のEmacsに移植して、
http://www.sodan.org/~knagano/emacs/pdump/ これを GNU に contrib してみる可能性がある。
一度 2005年頃に本家へのマージが試みられたんだけど、
その複雑さ(その性格的に、デバッガ上で動かしにくい)
で諦められた?経緯がある。
今のEmacsのunexecはOSのバージョンアップなどの度にメンテが
すごく面倒くさいので、きちんと動くものが contrib できれば、
起動時間の遅さに悩まされるユーザだけでなく、
開発者にも感謝されると思うんだけど、どうかなぁ。
>>686 今出ている問題に対して具体的にコード上のどこをどうすればいいんだ
ramディスクを導入したのですがこれを使ってemacsを高速化できませんか 今のところキャッシュの類いの置き場しか案はないのですが…
emacs 本体を ram ディスクに入れたらいいのでは。 SSD でいいじゃんって気もしてくるが。
てか使ってるうちにキャッシュに載るだろ
691 :
672 :2013/11/11(月) 01:14:58.06 ID:9cZ5MS8o0
>>684 process-coding-system-alist を使う方がいいでしょうが、
ただ結果は同じになります。
(setq process-coding-system-alist
(cons '("fakecygpty" utf-8-dos . utf-8-unix)
process-coding-system-alist))
*-dos にしても ^M が付くので、
結局 fakecygpty を通しているために CR が一つ余分に付くみたいです。
fakecygpty 自体を改良するしかないのかなぁ ag も grep みたいに素の状態で使えればよかったんだろうけど
テストしてみたいんだけどagをcygwinコンパイルしようとするとエラーが でてコンパイルができません。どうやるとコンパイルできるのだろう。
>>693 d = malloc(entry->d_reclen); -> d = malloc(sizeof(struct dirent));
>>695 64bit Cygwinならconfigure.acのCFLAGSから"-std=c89"を外してみて
>>696 コンパイルできました。ありがとう。テストしてみる。
w32-symlink.el って find-file とか insert-file-contents-literally みたいな files.el で定義されてるやつを直接再定義してるのな。 昔のバージョンのをコピーして書き換えたっぽくて24.3のと見比べるともう差異がでてるし。 あんまりよろしくないな。
>>697 テストしてみた。^Mは表示されない。何が違うんだろう.
>>672 (trace-function-background 'start-process) を設定して、M-x agを動かすと、
*trace-output*バッファにどう表示されるだろう。うちは、以下の通り。
1 -> start-process: name="ag" buffer=#<buffer *ag text:aaa dir:c:/gnupack/home/test/*>
program="fakecygpty" program-args=("bash" "-c" "ag --nocolor --literal --smart-case --nogroup --column -- aaa")
fakecygptyを経由しているけど、fakecygpty-program-listにbashがあるから
有効になっていのであって、fakecygpty-program-listにagは登録していない。
このあたりがなんか違う。
701 :
672 :2013/11/12(火) 00:53:47.25 ID:brCbvXnE0
>>700 1 -> start-process: name="ag" buffer=#<buffer *ag*> program="fakecygpty" program-args=("sh" "-c" "ag --nocolor --literal --smart-case --nogroup --column -- cygwin")
(setq fakecygpty-program-list '("sh" "bash"))
(setq fakecygpty-exclusion-buffer-name-list '("*grep*"))
こんな感じです。
何だかよくわからなくなってきた。
>>699 エスパーしてみよう
binaryでmountしているところ
>>702 gnupackの設定のまま使っている。
C:/gnupack/home on /home type ntfs (binary,noacl,posix=0)
いろいろテストしてみているけど、やっぱりおきない。
ag hoge > hoge.txt とすると、hoge.txtの中に^Mがあるのは確認できるけど、
emacsからag.elを使うと表示されなくなる。
設定削っていって差を見るしかなさそうじゃね
705 :
672 :2013/11/12(火) 21:12:05.67 ID:brCbvXnE0
runemacs -q で起動して、 emacs 22 に無い use-region-p と region-active-p を読み込む以外、 次の設定だけでテストしても駄目ですね。 お騒がせしました。しばらく自分で考えてみます。 (setq explicit-shell-file-name "bash") (setq shell-file-name "sh") (setq shell-command-switch "-c") (setq fakecygpty-program-list '("sh" "bash")) (setq fakecygpty-exclusion-buffer-name-list '("*grep*")) (defadvice start-process (around ad-start-process-to-fake last activate) (let ((buffer-name (if (bufferp (ad-get-arg 1)) (buffer-name (ad-get-arg 1)) (ad-get-arg 1)))) (if (and (member (replace-regexp-in-string "\\.exe$" "" (file-name-nondirectory (ad-get-arg 2))) fakecygpty-program-list) (not (member buffer-name fakecygpty-exclusion-buffer-name-list))) (progn (ad-set-args 3 (cons (ad-get-arg 2) (ad-get-args 3))) (ad-set-arg 2 "fakecygpty") ad-do-it) ad-do-it))) (setq process-coding-system-alist (cons '("fakecygpty" utf-8-dos . utf-8-unix) process-coding-system-alist)) (require 'ag)
emacs22 だったのか 色々細かいところで違いが出てるのかねやっぱ
707 :
672 :2013/11/12(火) 21:45:04.98 ID:brCbvXnE0
>>706 一応
>>676 と
>>681 で書きましたが、
Emacs 22.3 と Cygwin 1.7.16 です。
>>676 の問題の対処のために fakecygpty を通しているので、
この辺りもかなり怪しいです。
>>703 にある通り、^Mが付くのはag本体の問題。fakecygpty関係ない
gnupackのemacs-24.3-20130503では^Mが出ないのでemacsのバージョンによるのでは?
>>708 同じ結論にたどり着いた。ag hoge > hoge.txt みたいにしてackやgrepで
出力したファイルをemacsで見てみるとわかるけど、agの場合のみCRLFが
削除されないでのこっている。なので、agという名前の以下のようなスクリプト
を作って、ag.exeと同じフォルダか、より早くサーチされるフォルダに置けば、
解決すると思う。
#! /bin/sh
ag.exe "$@" | dos2unix
710 :
672 :2013/11/12(火) 23:50:57.43 ID:brCbvXnE0
>>709 そうでしたか。なるほどうまくいきました。
うちの環境でも ag はかなり高速なので助かります。
たびたびヒントをいただいいたりわざわざ検証していただいた皆さん、
どうもありがとうございました。
cygwin の grep は CR の除去を明示的にやってるみたいで
オプション -U くっつけて CRLF、LF ファイルを混在検索すると CR 混じりの検索結果になるね。
ack は知らない。
>>708 みたいに ^M が出ないってケースもあるみたいだし
emacs 内で解決出来ないことも無さそうな気もするけどね。emacs 22 と 24 の間に
何かのデフォルト値が変わった程度の違いかも知れないし。
最近、shell-commandはdefault-directoryに設定してあるホスト情報をみて実行 されることを知りました。trampでどこかにdiredで接続して、M-! hostname とすると分かります。とすると、WindowsのVirtualBoxで立ち上げているUbuntu からcygwinに接続できれば、cygstart使えて便利そうだなぁと。最初、cygwinへの ssh接続経由でcygstartが起動できなくてcygwinスレに聞いたりして試行錯誤しま したが、結果として成功。設定方法を以下のURLにまとめました。もし興味のある方 居れば、試してみてください。スレ違いのような気もしますが..。 www49.atwiki.jp/ntemacs/pages/36.html
713 :
585 :2013/11/22(金) 12:56:18.18 ID:bJfioxl10
gnupackの人って生きてるのかな、最近更新ないし…
学生さんじゃないの? 忙しいだけだと思う
Emacs 23.4.1 で Navi2ch のフォントの設定がどうしてもうまくいきません。 (create-fontset-from-fontset-spec "-outline-MS Pゴシック-normal-normal-normal-mono-16-*-*-*-p-*-fontset-mona") (set-fontset-font "fontset-mona" 'japanese-jisx0208 (font-spec :family "MS Pゴシック" :registry "jisx0208-sjis" :size 16)) (add-hook 'navi2ch-mona-load-hook (lambda () (set-face-attribute 'navi2ch-mona-face nil :font "fontset-mona"))) (setq navi2ch-mona-enable t) (setq navi2ch-mona-face-variable 'navi2ch-mona16-face) 試しにこのように設定すると英数フォントは有効になりますが、 日本語フォントはフレームのデフォルトのフォントが使用されるので、 フォントセットは作成されてフェイスに設定されていますが、 set-fontset-font でフォントセットに日本語フォントを設定できないようです。 モナーフォントを使用しても日本語フォントの置き換えだけができません。 何が問題なんでしょうか?
716 :
715 :2013/11/26(火) 21:12:26.63 ID:LhpbGpm60
単に次のように設定しても同じ結果になります。 "*-MS Pゴシック" のところは "*-モナー" などとしても同様です。 (setq navi2ch-mona-enable t) (setq navi2ch-mona-font-family-name "*-MS Pゴシック") (setq navi2ch-mona-face-variable 'navi2ch-mona16-face)
BayTrail-T採用のwindows8.1タブレットでこれ動きますか?
emacsスレからこちらに誘導されてきました windowsのgnupackでemacsを使っています twittering-mode.elでmaster passwordを使ってタイムラインを開こうとすると パスワードを入力してenterを押したとたん "the authorized token is loaded" というメッセージがエコー欄に表示されてEmacs自体が完全に固まることがあります そのときは強制終了させなければいけません 正常にタイムラインが表示されることがほとんどなのですが、エラーの結果が重大なので気がかりです どのような原因が考えられるのでしょうか
>>718 使ってないから実際はどうかわからないのでソース見た感じから。
そのメッセージを出した後にツイッターのAPI使って実際に認証してるみたいなんだけど、
そこでタイムアウト無しで結果待ちしてるんじゃないか?ってとこがあるのよね。
https://github.com/hayamiz/twittering-mode/blob/master/twittering-mode.el#L6286 何らかの理由で http(s?) リクエスト送ったプロセスが死なずに結果が返ってこないってことになると
固まるんじゃないんだろうか。
リクエスト送るプログラムは twittering-lookup-connection-type でわかるみたいだから
それで出てくるプログラムがおかしくないか見てみるとかかねえ。
あと↑で出た待機してるところのタイムアウトが nil になってるとこに適当な数字いれて
引数リストの最後に (error "time out!") とかいれてタイムアウトしたら止まるようにしておいて、
かつ twittering-debug-mode を t にして twittering-debug-buffer の中身を見てみるとか。
そして最終的には作者に症状を報告でしょうね。
>>719 ありがとうございます。
今のところ意図的にエラーを起こしてもntemacsが問題なく動き続いています
タイムアウトを設定しましたのでこのまましばらく様子を見てみます
721 :
名無しさん@お腹いっぱい。 :2013/11/30(土) 00:15:33.21 ID:p64oBcms0
gnupack の emacs.exe を起動するとき、 ~/.emacs.el がバグがあるようで "--debug-init オプションを付けて起動しなおせ" と怒られるのですが、 config.ini を変更して、起動オプションを "--debug-init" 付きに 変更することはできるでしょうか? あと、できれば color-theme は使いたくないので、読み込ませないように したいのですがそういう設定はできますかね?
--debug-init は常につけるようなオプションじゃない。 .emacs.el でエラーが起きたらデバッグモードに入るようになるだけの話。 素直に .emacs.el を直そうよ。 color-theme も .emacs.el を書き直しゃいい。
723 :
名無しさん@お腹いっぱい。 :2013/11/30(土) 09:29:17.17 ID:p64oBcms0
>>722 言葉足らずで大変申し訳ないです。Emacsのメッセージは
「.emacs にバグがあるようだ。バグの所在を確認するには、
--debug-init を起動オプションに付けて起動しなおせ。
(バグがどこだかわかったら --debug-init は外してもいいよ)」
というものでした。ですので、一時的に --debug-init を付けて
Emacsを起動しなおして、.emacs のバグを修正したら再び外したいのです。
color-theme は、gnupack版の emacs が、自動的にコマンドライン
オプションで、 emacs.exe -l color-theme ... とライブラリを
読み込むみたいなのでこれを外したいと思っています。
>>723 --debug-init は普通に gnupack インストールルートの emacs.exe に引数書いて
minitty なり cmd なりのコンソールから起動でいいんじゃないのかな。
手元ので試したらちゃんと認識してたよ。
color-theme も config.ini の該当エントリをコメントアウトで color-theme 自体の読み込みもしなくなるみたい。
(featurep 'color-theme) が nil になることを確認できた。
低レベルな話で申し訳ないのですが、gnupack の emacs ってインデントできますか? TAB を押しても、一括インデントを指示しても、一向にインデントができず困っています。
それは流石にどのモードのどのコマンドの話しなのかわからんことにはなんとも。 gnupack の emacs っていってもそんな基本的な部分に変な手の入れ方はしてないと思うけどなあ。
>>726 レスありがとうございます。
scratch、textモード、およびESSモードでTABの押下または M-x indent-region をやっているのですが、インデントできません。
gnupack_devel-11.00 です。
そのインデントしないってのは、文脈に応じたインデントすらされないってことなの? scratch なんかは lisp interaction モードになってるとおもうけど、その場合 ネストした () やコメントがらみでしかインデントは行われないのが標準の挙動。 そういうインデントがされないっていうなら何かがおかしいとは思う。 (message "abcdefg") ; ←ここでタブを押したらインデントされる (message "abcdefg") ; ←ここでタブを押してもインデントはされない C-h k で TAB を押下したときに出てくるコマンドの名称は? 何か追加で設定は行っている? emacs -q で起動した時と挙動は同じ?
>>728 詳細にありがとうございます。
scratchではインデントされないのが標準なのですね。なるほどです。
あと、勘違いしていたのですが、textモードでは想定通りの行頭インデントができました。誤った情報をお渡しして申し訳ないです。
インデントしたいのにインデントできないモードは、拡張子が .R となる ESSモードのみです。
これは、gnupackの設定は関係なく、ESSモードに関する話ですね。
重ねて申し訳ないです。
なお、
C-h k は、indent-for-tab-command です。
-q を指定して実行した場合、拡張子が .R のファイルでもインデントできました。
これは、ESSモードが適用されないためだと思います。
無理やりタブ文字を挿入したいだけなら C-q TAB でインデントすることは出来ると思う。 でもその後に indent-region やらタブを押してしまった場合、 モードによってはあるべきインデントの形に直そうとして結局もとに戻されちゃったりする。 なので ESS モード固有の設定でなんとかしてみるしかないんじゃないかなぁ。 R は使ったことないから詳しくはわからないけど、ess-custom.el を眺めてみた感じ インデント周りの設定はそこそこあるように見える。 モードを作った人の意図から外れるようなコード整形をしたいってなると結構茨の道かもしれない。
>>730 おお、C-q TAB でタブが入るのですね!
ありがとうございます。
ESSモード固有の設定をしっかり検討します。
懇切丁寧にご指導いただきありがとうございます。
M-iもあるよ
>>732 ほんとだ。
C-q C-i だとTABが入りますが、M-i だと同じ表示をスペースで補完してるのですね。
ありがとうございます。
734 :
名無しさん@お腹いっぱい。 :2013/12/01(日) 10:39:11.31 ID:lBNFOpvn0
>>724 インストールルートの emacs.exe に "--debug-init" を指定したら
確かに起動先の emacs.exe に上手く渡されました。ありがとうございます。
やっと .emacs.el のエラー場所がわかりました。
NTEmacs は起動時にどのタイミングで環境変数 LANG を設定しているのでしょうか? 環境変数 LANG や LC_ALL 等が設定されているとわざわざ設定しなくても set-language-environment 等を適切に実行してくれるようですが、環境変数を設定していなくても 日本語環境に初期化がされており、その際の LANG を見ると "JPN" の値が設定されていました。 コントロールパネルの地域と言語にて言語設定を英語等に変更した場合、LANG が "ENU" に変化し 言語環境が英語に初期化されていたので、OS のロケール設定を読み込んでいることは確かのようでした。 ただ、どちらの設定でも (w32-get-current-locale) が 1041 (日本) になったのはちょっと不可解でしたが。
737 :
736 :2013/12/08(日) 19:31:05.38 ID:M3gDpjJa0
原因がわかりました。 fakecygpty が悪さをしていました。
M-x compile で何か起動した場合、bash での起動になるようです。
その際、fakecygpty を経由するのですが、fakecygpty が起動したコマンドの終了ステータスを正しく返していないため
異常終了した場合でも終了ステータスが 0 になってしまっているようでした。
fakecygpty.c の一番最後の return status; を return WEXITSTATUS(status); に修正することで
正しく動作するようになりました。
http://www.meadowy.org/meadow/browser/trunk/nt/fakecygpty.c ↑にある fakecygpty を使っているんですけど、最新は他にあるんでしょうかね?
shell-command-to-string で cygpath -u としたとき日本語が化けるので、 環境変数 LANG=ja_JP.SJIS と設定したら解決するんですが、 Emacs 内部の設定で解決することはできないんでしょうか?
Emacs 内で setenv() 呼び出すというのは回答になるのだろうか
740 :
738 :2013/12/09(月) 20:15:57.57 ID:avrK3gBX0
>>739 有難うございます。
(setenv "LANG" "ja_JP.SJIS") で普通にいけました。
もう一つ、Emacs から id3v2 のタグを弄るには今なら何を使うのがいいんでしょうか?
mid3v2 というのを見付けてとりあえずそれで不満はなさそうではあるんですが。
gnus 使って gmail 読み書きするのにちょっとはまってしまった。 gnutls 組み込みじゃない ntemacs だったから外部の gnutls-cli を使っての通信だったんだけど fakecygpty 通すと CR が余計についちゃうせいで上手く動かなかったようだ。 start-process 時に除外する時もシェル通して gnutls-cli を起動してたりしたから バッファ名個別指定せざるを得なかったし。 組み込み gnutls だとそういう苦労はないんだろうか。gnupack のは組み込まれてるんだったよね。
742 :
738 :2013/12/15(日) 17:31:19.94 ID:j+wjvn1A0
mid3v2 は v2.4 しかいけないので、 eyeD3 なら v2.3/2.4 でとりあえずよさそう。
gnusでドコモメールの送信できた方いますか? 受信することはできたのですが、送信ができません。ポートはあわせました。
(setq message-send-mail-function 'smtpmail-send-it) (setq smtpmail-smtp-server "smtp.spmode.ne.jp") (setq smtpmail-smtp-service 465) (setq smtpmail-stream-type 'tls) これで駄目なの?パスワードは手打ちするとして。 自分とこは gmail だけど、 fakecygpty は切っておかないと gnutls-cli とか openssl で無駄な改行が入って tls-end-of-info とかの正規表現とマッチしなくて正しくセッション開始してくれなかった。
>>744 Sending failed: 503 Bad sequence of cimmands
それじゃ次は smtpmail-debug-info を t にした時の *trace of SMTP session to smtp.spmode.ne.jp* バッファの内容チェックかね。 もし貼り付ける場合はメールアドレスとパスワードをちゃんと隠して貼ったほうがいいね。
長年 migemo の動作がいろいろおかしいと思ってたけど、 LANG=ja_JP.EUC-JP でコンパイルしないといけなかったのね。 なまじ中途半端に動くもんだから気が付かなかったよ。
748 :
名無しさん@お腹いっぱい。 :2013/12/21(土) 00:27:53.72 ID:TZjVPCvg0
>>746 220 ESMTP Server Ready
250-docomo.ne.jp
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-SIZE 15727616
250 8BITMIME
MAIL FROM:<
[email protected] > SIZE=270
503 Bad sequence of commands
QUIT
221 Service closing transmission channel
Process smtpmail deleted
MAIL の前に AUTH PLAIN での認証が入るべきなきがするんだけど なんではいってないんだろう AUTH PLAIN <omitted> 235 2.7.0 Accepted
(gnutls-available-p) とかはどうなってます? 組み込み gnutls か gnutls-cli か openssl の挙動の問題なのかなあ
うちは素の NTEmacs に gnutls 関係の dll 突っ込んで (eq (gnutls-available-p) t) にしたところ メール送信時に emacs が落ちるようになったわ。 今は gnutls-cli で送信するようにしたら安定した。 gnupack だとどうなのかは知らない。
gnupackのも落ちるなぁ… とりあえず (setq gnutls-trustfiles nil) したらgmailは読めた
ntemacsでwindowsのバージョン毎、たとえばwindows7 とwindows8で処理を分岐することはできますか?
ntemacs にそういう固有の関数はないから windows 内でどう判別するか?の話になると思う。 cmd /c ver の結果とか、reg でバージョンが入ってるとこ読むとかかね。 それを shell-command-to-string とかで読み込んで分岐になるんじゃないかな。
system-configurationがwin7だとi386-mingw-nt6.1.7601になるから分岐できそうに思える。
24.4 では windows でもファイル名アクセスに UTF-8 な API を使うようになるらしいから "〜表" なディレクトリやファイルにアクセス出来ない問題も解決しそうで嬉しい
ドコモメールをgnusでメール送信するのは諦めました。 その代わり、PowerShellのSmtpCientを使ってドコモメールのメール送信が出来ないかなと考えております。 Elispで似たことをやってるは人いませんか?
今リアルタイムに powershell 経由で emacs からの pinvoke/win32api 呼び出しで遊んでた所だわ。 やってて思ったこと: ・powershell とのやりとり自体は "-Command" "-" で起動すれば普通のプロセス間通信で何の問題もない ・null は powershell だと $null になるんだけど、なぜか String に入れると "" にキャストされるから本当の null が欲しければラッパー必要 ・powershell の結果の受けとりとか文字列の受け渡しは base64 でエンコードして一行にするとエスケープ処理もいらなくて楽だった ・エラーメッセージは $ErrorActionPreference = "SilentlyContinue" で抑制して $? を見て必要に応じて $Error[0] で取得が楽 どっちかっていうと smtp-send-it (smtpmail-via-smtp か?)を書き直す方が手間掛かりそうだ
>>760 具体的にどういうプログラ厶書いているのでしょうか?
>>761 こんなのです。
http://pastebin.com/Tyn9RSvA あくまで pinvoke での呼び出しに特化したものだから
普通の .NET のクラスを使うのには役に立たないと思う
粒度的に考えると、レガシーな DLL より .NET のクラスを
powershell 経由でシームレスに使える拡張とかできたら素敵だと思う。
Windows でも右下の通知バルーンとか使えるようになるし。
>>762 ちょっと真似できない規模ですね。
数十行くらいのelispで最低限の上記に挙げた機能を達成できないでしょうか。
>>763 Net.Mail.SmtpClient のクラスを使うだけだったら
http://nyoro2.net/wp/?p=432 ↑の記事でも参考に、 format とか使っててホスト名だの
ユーザ名だのが埋め込まれたコード文字列を一気に組み立てて、
(start-process "powershell" (get-buffer-create "*powershell*) (executable-find "powershell") "-" "-Command")
したプロセスに process-send-string でまとめて送ってやればそれで解決なんじゃないでしょうか。
エラー処理をきっちりやるのとかはおいおい進めるとして。
ただ、smtpmail-send-it とか sendmail-send-it 相当の関数は自分で用意しないといけなさそう。
添付ファイルのエンコードとか smtpclient の方でやらせたほうがよさそうだし
どっちかっていうとそっちに苦労しそうな気がする。
>>765 VisualStudoi6もってないとダメなんじゃないです?
もってないです。
多分 VS6 が必要っていうより それに含まれる MSMAPI32.OCX が必要ってことなんだろうと思う。 公式で配布してるVB6ランタイムなんかにもに入ってるけどまあ今更そんな時代に逆行することもないわな。
公式のがインストールされてる状態でgnupackをadd.pmすると、どうなるんだ?これ
2つに増えるのか、それとも上書きされるのか
ショートカットはともかく、レジストリは確実に上書きされるよ。
ansi-term とか term で locale-coding-system を utf-8 固定にしちゃうと windows ネイティブの ping とか javac とかが文字化けする件だけど、 なんのことはない、locale-coding-system を undecided にすればいいだけだった。 ソース上だと都度 decode してるから comint みたいに advice でいちいち戻してやる必要もなかった。
過去ログで fakecygpty 通すと cr が余計にくっついてくるってのあったけど、 これって結局解決法ないのかな。 普通の ls を fakecygpty あり/なしで coding-system-for-read/write を 'binary にしてやりとりすると fakecygpty の方は CR がもれなくくっついてくる。もちろんデフォルトの fakecygpty 関係の設定は抜いた状態ね。 (let ((command "ls") (fakery-enabled t) (buffer "*fake-test*") (coding-system-for-read 'binary) (coding-system-for-write 'binary) proc) (ignore-errors (kill-buffer buffer)) (setq proc (if fakery-enabled (start-process "fakecygpty" buffer "fakecygpty" command) (start-process "normal" buffer command))) (set-process-sentinel proc `(lambda (p s) (with-current-buffer (pop-to-buffer ,buffer) (goto-char (point-min))))))
>>772 わざわざ端末にしているのだから、CRLFが出力されることが自然だと思う。
解決って何だ?
>>772 の例で行くと、 CRLF ではなく CRCRLF が出力されちゃってる。
fakecygpty 無し版だと eol が dos モードになるだけだけど
有り版だと eol が dos モードの上 CR が更にくっついてる。
端末はそんなに詳しくないんだけど CR は一つじゃないとおかしいんじゃない?
linux の方の emacs で同じように start-process での ls の出力を見てみたけど process-connection-type が nil でも 'pty でも特に CR が追加されることはなかった。 なんだかどういう挙動が正しいのかよくわからなくなってきたわ。
オリジナル emacs と ntemacs+fakecygpty の挙動の違いがわかった。 オリジナル Emacs では sysdep.c で端末を初期化する際、 ONLCR を落として NL => NL にしてるけど fakecygpty では落としていないから NL => CR NL になるみたいだ。ntemacs 自体は tty の概念がないから該当部分はスキップされてる。 ためしに fakecygpty の tty の設定変えてる所で ONLCR を落としたところ、オリジナル emacs と同じ挙動になった。 ansi-term とか term では起動時に stty -nl sane で ONLCR を自分で立ててるから fakecygpty の挙動に影響されないみたい。
777 :
名無しさん@お腹いっぱい。 :2014/01/22(水) 21:35:39.76 ID:RNhxtjgX0
emacsを使用しようと思うのですが、 私はプログラミング等全くしたことが無く知識もありません。 知人から、emacsを勧められたこともあり、 これを気に使用しようと思います。 全くの初心者なのですが、そういう人でも分かるような emacsの入門書をご教示お願いいたします。
今だと Emacs 実践入門あたりになるんじゃないかと思うけど(というか選べる程本は出ていない) 気軽に聞ける人でも探した方が早い気がする。 あと UNIX 板にも Emacs スレあるから一般的なことならそっちで聞いたほうが反応いいかもね。
雰囲気的に、その知人の言うことを聞かないというのも長期的には利益になりそう
>>778 Emacs 実践入門だと、
プログラミングとかしたこと無い奴だと
用語とか分からず、難しいんじゃないのかな?
もっとそれ以前の予備知識的なものの本の方がいいいような
といっても、私ではそのような本を直ぐには思いつけないけど
>>780 正味の話、あんまり Emacs だの Vim だの理由もなく覚える必要ってないよね。
783 :
名無しさん@お腹いっぱい。 :2014/01/23(木) 19:01:49.12 ID:pPA9aLz/0
>>781 まあ、プログラミング経験の無い全くの初心者だったら、
「シェル」とか「バッファ」とかの語彙も分からないからなあ
最初は本があると安心なのかもしれないけど、 どうせ肝心なことはネットで調べるし、 結局ろくに読まないうちに不要になる気もする。 昔ちゃんと読んだのは「やさしい Emacs-Lisp 講座」くらい。
785 :
名無しさん@お腹いっぱい。 :2014/01/23(木) 21:21:01.19 ID:pW5oe0370
>>778 >>779 >>784 ありがとうございます。
UNIX板の方でも質問致します。
>>779 の本や「やさしい Emacs-Lisp 講座」の本は
プログラミング未経験で用語など全く無知でも読み通せるものでしょうか?
787 :
名無しさん@お腹いっぱい。 :2014/01/23(木) 23:11:35.98 ID:OavXG8cy0
皆さんは、Emacsは 何の用途に使用していますか?
設定はwebからのコピペで何とかなるぞw
>>788 設定とかそんな話じゃないだろ
「使いこなしてものにする」と言う目的だと、
Emacs 実践入門を読んで理解できるくらいの予備的な知識を身につけないと。
(日本語読解能力と言う意味ではない)
質問者(
>>777 )がemacsをどう使いたいのかで薦める本が違ってくるだろ。
emacsを"使う"よりもカスタマイズに血道を上げるという本末転倒だがヘビーな方向に行きたいなら
上で突っ込んでる奴のように自分で調べて覚えるような気概が必要。
単にエディタとして使用したいだけならMuleについての本だがこれがお勧め
図解でおぼえるMuleの使い方
http://www.amazon.co.jp/dp/488135874X まぁ、エディタとしてだけ使いたいというならわざわざemacsというマゾヒスティックなツールはお勧めしないが・・・
>エディタとしてだけ使いたいというならわざわざemacsというマゾヒスティックなツールはお勧めしないが・ 実際のところ、emacs関連のスレ住人達はそんな連中ばっかりだろw
ESSとYaTeXのみの目的で使ってる私みたいな人って結構いるんじゃないかな。
その場合、lispは理解してなくてもいいんだよね。
customize インターフェィスだけで完結出来てる人ってどんだけいるんだろね。 package システムも出来たことだし以外となんとかなりそうな気もするな。 ただ、ntemacs みたいな微妙にマイナーな位置付けのソフトの場合 自分で elisp 書いて問題解決しないといけないケースも結構あるんだよな。
795 :
名無しさん@お腹いっぱい。 :2014/01/24(金) 22:36:57.74 ID:RLA1DLri0
gnupackの更新が何時再開されるのか? それが気懸かり
誰かが引き継がないと一生気にし続けるかも…
gnupack じゃないと困る部分って ime まわりぐらいかね
gnupack便利だよね。 更新再開されるといいけど。
799 :
名無しさん@お腹いっぱい。 :2014/01/25(土) 16:47:03.32 ID:4ksYuZFu0
gnupack以外にWIN用の良いemacsある?
>>800 これってgnupackで公開されているバイナリと何が違うの?
>>802 ビルド方法 (24.3)にgnupackで公開しているパッチを使ってるって書いてる
gnupackのバイナリがあるのに公開しているから何か違うのかなと思って
>>803 よくよく見てみると gnupack で公開されてるパッチって全部一つにまとめてあるのか。
あとはもう configure の差かね。
-O3 -fno-tree-vectorize
vs
--no-debug -O2 -fno-omit-frame-pointer -funsigned-char -pipe
あと gnupack じゃないほうは gnutls を組み込みにしてないみたいね。
ところで、64bit OSで、MinGWでNTEmacsは自ビルドって出来るんでしょうか?
やったことないけど出来るんでないの? NTEmacs + 64bit あたりで検索すりゃやってみた事例出てくるよ 真の64bit 版 Emacs 作ってた人はもうやめちゃったのかな ダイナミックロード勝手に実装してたりと結構野心的だったのに
Software Designでそのネタで連載されてたときに24対応がもうすぐ出せそうな こと書いてられたけど音沙汰ないね
808 :
805 :2014/01/26(日) 11:03:01.83 ID:O9kmYBGi0
ということは、まだ時期尚早なのかな。 暫く、32bit Cygwin + NTEmacsで頑張って使ってみます。 64bit OSに乗せ替えた時に、動くか心配だけど。 とりあえず、C:\cygwinとD:\usr\local\ だけ移して実行してみようと思います。
いや、今普通に 64bit OS で 32bit NTEmacs バリバリつかってるけど。 cygwin も 32bit 版で特に問題もなく使えてるよ。 あと 64bit 版のはあくまで独自拡張で色々本家と違ってる部分もあるから なにしてるのかわからない人が使うもんではないと思う。
810 :
805 :2014/01/26(日) 11:13:02.10 ID:O9kmYBGi0
64bit OS で 32 bit cygwin だと fork に失敗することがあって、 make とか git とか悲しいことになるので、cygwin だけ 64 bit にしてる。 NTEmacs は 32 bit だけど。
xyzzyで列カーソルを表示させる
vertical-cursor-line.l
http://www.geocities.jp/home_page22/xyzzy/lisp.html というのがあるんですが、これのようにEmacs上で列カーソル表示可能な方法ってありますか?
あと、Emacs上で行カーソルを表示させる場合、
表示文字列の範囲までではなく、画面いっぱいにまで行カーソル表示って可能でしょうか?
例)
ああああ
 ̄ ̄ ̄ ̄
↑ではなく
ああああ
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄↑表示画面の端
あと、Emacsって水平スクロールバーってあるんでしょうか?
あともう一つ、入力文字が半角英数字の時と全角日本語の時で、カーソルの色を変えることって可能ですか?
>>812 列カーソルは聞いたこと無いな。出来るだろうけどやってる人いるかねえ。
行カーソルは hl-line-mode あたりがお望みのものなんじゃないかな。標準ではいってる。
水平スクロールバーはある。tggle-truncate-lines とかして折り返しを解除したら出てくるよ。
カーソルの色は素の NTEmacs では無理。全角だの半角だのは Emacs での外のことだから。
パッチあたってるバージョンなら出来る。オリジナルの Emacs だと dsub とかで通信してるやつなら出来るのかな?
SKK の場合は標準で対応してる。
列カーソルっていまいちイメージ掴めんけど vline.el のことかな EmacsWiki とかにある
vline.elだいぶ前に使ったことあるけど 全角文字に対応してるとは言えない状況で実用的ではなかったな 今はどうだか知らないけど
vline.elはインストールして使ってみました。
確かに日本語がある状態(コメントとか)だとイマイチでした。
xyzzyでvertical-cursor-line.l を入れた時は、他にWinSDKなるLispとかもあったので、
Emacsで同じようなことをするとなると難しそうですね。。。
>>814 hl-line-modeの設定を弄って、現在行の背景色変更をアンダーラインに変更するところまではやりました。
しかし、そのアンダーラインの引かれる箇所が、現在行の文字数分までなので、
それをバッファの端までアンダーラインが引けるような設定にしたいと思ってます。
(背景色を変える設定の場合、バッファの端まで色が変わってるので、それをアンダーラインでも同じようにしたい)
>SKK の場合は標準で対応してる。
一度SKKなるものを入れてみることにします。
なかなか、xyzzyで設定していた環境をEmacsでも同じようにするのって難しいですね。。。
(取りあえずC言語のインデントや予約語の色を早急に変える予定です)
あんまり労力に見合った結果にならん気がする
gnupack の cygwin 部分だけでも cygwin.exe で更新したり追加したり出来ないのかな?
cygwin スレでやれよ。あと gnupack の公式で聞け。
>>820 くだらない事しか言えないアンタに聞いてない
聞いてないじゃなくてここは NTEmacs スレだから。 cygwin のスレじゃないし gnupack のサポート掲示板でもないんだよ。 自力で更新も調べるのも出来ないようなのまで呼び込んだんだから gnupack の罪は深いわ。
こうやって追い出していくんだなぁ
Emacs24.4では64bit対応になっているのかな?
特にそういったアナウンスは出てないね。 NTEmacs 的によくなったとこだとファイル名のアクセスにユニコード版のAPIを使うようになったところか。
64bit対応になった方がいいと思うね XPマシンからパソコン買い替える連中は、 64bitに今後軒並みするだろうし
環境変数 LANG に何も設定しないと、 process-environment に LANG=JPN と設定されるようですが、 プロセスによっては都合が悪かったりするので、 その場面だけ適当に変更したりしてますが、 これは実際には何が設定されているんでしょうか?
プログラムがロケールで挙動を変える時に見に行く環境変数が LANG。 LC_ALL => LC_* => LANG の順番で見に行ってる。 例えばエラーメッセージとかが多国語化されてる場合、 LANG が ja_JP.UTF-8 とかになってると、日本語で UTF-8 にエンコードしたメッセージを出力とかになる。 cygwin なんかだと /usr/share/locale なんかにその手のが入ってるね。 NTEmacs の LANG デフォルト値は Windows API の GetLocaleInfo で返ってくる値が設定されてるみたいだけど、 cygwin での locale とは体系が違うから想定してない動作になってるんじゃないかな。
>>825 trunkで64bit版のビルドできてたと思うのでなってるかもね。
Emacsで辞書を引くことが出来るかググってみました
http://namazu.org/~tsuchiya/sdic/ ここで辞書(gene95.tar.gzとedict.bz2)を落としてmakeしてみましたが、辞書を変換する
make dict
を実行したところ
$ make dict
no -S -e gene.txt | /usr/bin/perl contrib/gene.perl > gene.sdic
/bin/sh: no: コマンドが見つかりません
と表示され、うまく辞書が生成できませんでした
(edictの方はうまくいきました)
何がいけなかったのでしょうか?
なお、makeはCygwinをインストールして実行しました。
あと、皆さんはEmacs上から辞書を使ってますか?
他に上記の辞書以外で良いのがあれば教えてください。
>>831 nkf をインストールしてないとそうなる。
configure が checking してるときに checking for nkf が no になってない?
nkf 入れるの面倒くさかったから iconv で置き換えた記憶があるな
オプションその他は面倒くさいんで自分で調べるか素直に nkf インストールするかしたらいいと思う。
emacs 用の辞書は他は lookup ぐらいじゃないかな。
sdic 関係はインラインにポップアップ拡張なんかもあったとおもう。
sdic 用に英辞郎買ったんだけどなんでか gene と jedict 使ってるな・・・
>>831 nkfをインストールすればいいんですね?
一度やってみます。ありがとうございました。
xyzzyで現在のカーソル位置の文字コード(例えば'a'なら0x61など)をステータスバーに表示させるlisp (add-hook '*post-command-hook* 'what-cursor-position) があるのですが、これと同じようなことをEmacsのモードラインに表示させることは可能でしょうか? 一度上の奴を少し変えて (add-hook 'post-command-hook 'what-cursor-position) としたところ、ミニバッファに表示されてしまいました。。。
what-cursor-position と mode-line-format の説明を読んで頑張って。 describe-variable の説明がイミフでも mode-line-format でぐぐれば変更方法は色々出てくる。 what-cursor-position がどうやって内容だしてるかの実装も describe-function で飛んだ先で 調べればいい。
836 :
828 :2014/01/29(水) 20:08:19.16 ID:OtyLVDpZ0
>>829 レスありがとうございます。
eyeD3 でタグを書き込むときに化けてしまうので、
とりあえずこんな風にしてますが、
ここでは ja_JP.SJIS とか ja_JP.UTF8 とかでもいいみたいです。
それで実際には何が問題なのかなと。
(let ((process-environment (copy-sequence process-environment)))
(setenv "LANG")
[...])
emacs-24.3-ime-2013-05-03.patch.tar.gz と emacs-24.3-20130503.exeとどう違うの? 初めてemacsを使う人はどちらをダウンロードして使用すればいいの?
>>836 それは eyeD3 の仕様がわからんことにはなんとも。
locale を見て挙動を変えるソフトなんじゃないの?
X とかだと LANG だの LC_ALL が ja* じゃないと日本語の入力が出来ないソフトとかも普通にあったよ。
>>837 gnupack のこといってるなら上の方はパッチだからただ使うだけなら関係ない。下でいい。
nkfをmakeしてインストールまでは問題なく行えましたが、 sdicのあるフォルダにて./configureをやっても、 checking for nkf... (cached) no configure: warning: nkf not found となってしまいます。他に何かする設定などありますか? ちなみに、nkf --versionとすると、 Network Kanji Filter Version 2.1.3 (2013-11-22) Copyright (C) 1987, FUJITSU LTD. (I.Ichikawa). Copyright (C) 1996-2013, The nkf Project. と出力されるので、正常にインストールは出来ていると思います・・・
>>838 NTEmacsを導入したい人は、
gnupack以外ではどのサイトでダウンロードするのがお勧め?
>>839-840 一応作者の名誉のために書いておくと、
別に Makefile が間違ってるわけではなく、configure のログにあるとおり、
見つからなかった状態がキャッシュされてるため後から nkf 入れたのが認識されてないだけの話。
config.cache ファイルを消してから configure しなおせば no が nkf に置き換わるよ。
configure をやり直すには make distclean するのが常套手段かな しかし、24.4からMinGW(32,64)でのconfigureが正式サポートされるように なったからNTEmacs64bit版を自前でビルドしてみようかな
まだ23.4使ってる。 24はいまいち。
846 :
828 :2014/01/30(木) 20:01:39.02 ID:8CkGn5BS0
>>838 ああそうですね。eyeD3 が LANG の値を見て挙動を変えてるんですね。
逆に LANG で何かが具体的に設定されるみたいに誤解してました。
>>846 そういう意味では Emacs 自身も locale 参照して挙動変えるソフトだったりするから、
Emacs 起動前に環境変数が定義されてると具体的に設定が変わったりはするよ。
よく設定例とかに
(set-language-environment "Japanese")
(prefer-coding-system 'utf-8)
とか書いとけってのあるけど、そこらへん書かなくても
Emacs 起動する環境で LANG とか LC_ALL に適切な内容、例えば ja_JP.UTF-8 とか設定しておけば
起動時に環境変数を見て自動的に↑を実行してくれる。
NTEmacs の場合 locale 設定がない場合はコードページから自分で locale 判断して
ついでに LANG も設定してくれるってことだね。
だから自分で language-environment とか変更したならそれに合った LANG に変えといたほうが
問題は少ないでしょうね。
>>842 gnu公式だとemacs-24.3-bin-i386.zipが最新?
windows用ファイル見つけるの見つけるの難しいよね。
>>848 それであってるよ。
ずらっと過去版と一緒に並んでるとちょっと怯むよね。
windows用のファイルだけは gnuの公式サイトでは別フォルダに置かれているからなあ。
gnupackのEmacsを落として実行した後、メニューの[File]から[Open File]を選択した時、 ミニバッファにFind file:と出てきて、Enterキーを押下するとInvalid functionと表示されます。 公式のEmacsで同じことをすると、ファイル名を探すためのダイアログボックスが出ます。 この違いは何でしょうか? また、ggtagsを導入した後、ggtagからタグファイルを生成する際もgnupackのEmacsではうまくいかず、 No root directory providedと表示されます。 公式のEmacsはダイアログボックスが表示され、任意のディレクトリを指定するとタグファイルが生成されました。
gnupack のビルド時の細かい設定がどうなってるかわからないからなんとも言えないけど、 x-file-dialog がちゃんと動いてないみたいだね。 ソース上だと当該関数は #ifdef の嵐だから何かしらコンパイル時の -D の違いとかで問題が起きてるんじゃないかねえ。 とりあえず動くようにしたいだけなら use-dialog-box を nil にすれば動くようにはなるかと。 もっともダイアログボックスのかわりにミニバッファのみになるけど。
>>852 うまくいきました!
しかし、これって、今まで誰も気づかないのか、気付いても大した問題にしていないのか、どっちなんですかね?
(それとも皆さん公式のWindows用バイナリを使ってる???)
ggtags-modeでタグが作れなかったときは、かなり凹みました。。。
>>853 このダイアログ表示、メニューとかツールバー等の GUI 部品から呼ばれた時だけ表示されるんですよ。
そんで、なぜか menu と toolbar は非表示にしてる人多いからかあんまり問題が顕在化しなかったんじゃないのかな。
gnupack のメンテが続いてるのか微妙だけど、気になるんであれば配布元の掲示板に報告してあげては。
メニューとかツールバーって使う人いるの?
win8.1でgnupackのemacs 24.2.1使ってます。 plinkでtrampする際、パスフレーズ入力してenter叩くとそのまま先に進めなくなるんですが、同じ現象遭遇した方います? pagent起動してパスフレーズ省略すると普通にログインできるんだよね。
ツールバーは邪魔だから消してる。 メニューはなんとなく有効にしてるけど、まあ使わない。
メニューで思い出したけどtrunkだとemacs -nwでもメニュー使えるように なってるね。
これでどうかな。cursor プロパティで位置を制御すればいいらしい。 (defun set-buffer-end-mark() (let ((overlay (make-overlay (point-max) (point-max) nil t t)) (eof-marker "[EOF]")) (put-text-property 0 5 'face 'highlight eof-marker) (put-text-property 0 1 'cursor t eof-marker) (overlay-put overlay 'after-string eof-marker)))
860じゃないが頂きました 同じ要領で改行記号も表示出来るかな?
>>862 改行とかタブとかスペース/全角スペースとかを区別して表示したいんだったら
標準で入ってる whitespace-mode を使ったほうがいいんじゃないかな。
whitespace-newline-mode で改行だけ表示も可能みたい。
>>861 ありがとうございました!
ただ、試してみましたが、うまくいきませんでした。。。(EOFが表示されなかった)
環境は、gnupackのEmacsで24.3.1です(一番最新のver)
>>861 はただの関数定義だから
(set-buffer-end-mark) を eval しないと表示されないけど、それをやった上で表示されないんだとすると
なんかおかしいんだろね。
>>865 すみません。ただコピペしただけでした・・・orz
(add-hook 'find-file-hooks 'set-buffer-end-mark)
っていうのを追記した結果、それでファイルを開いたらうまくいきました。
お騒がせして申し訳ございませんでした。
ちなみに[EOF]を表示するよりは今まで通り(setq indicate-empty-lines t)する方が俺には良かった
gtagsを使おうと思って、 .emacs.d/bin/gtags にダウンロードしたexeファイルを落として、そこへexec-pathを通したんですが、 うまくいきませんでした。 もしかして、Windows側のPATHへ.emacs.d/bin/gtagsを登録しないとダメでしょうか? もしそうなら、Emaceの起動時にだけ、該当のディレクトリをPathに登録するなど可能でしょうか? batファイルを書くのか、init.elに書くのかわかりませんが。
exec-path は emacs 自身が参照するパスだから、子プロセスがさらに子プロセス呼ぶなんて場合は 子プロセス用に環境変数も用意しなきゃいけない。つっても init.el の中で setenv すればいいだけなんだけど。 そこだけきっちりやれば emacs 環境下だけで設定されるパスってのも可能だよ。 あとはその動かないってのがほんとにパス通ってないせいなのかどうかなんだけどね。
>>871 取りあえず、PATHに追加したら問題なく動きました。
逆に、PATHさえ通しておけば、exec-pathに追加しなくても動きました。
そうなると、exec-pathの存在がイマイチわかりませんが。
いや、だから emacs が参照するのが exec-path。 起動時に環境変数 PATH が設定されてるとそこから exec-path をよろしい感じに作ってくれるだけ。 emacs 自身が参照する PATH を起動後に変更するには exec-path を弄るしか無いのさ。 たとえ setenv で PATH を変更しても call-process とか start-process は認識してくれない。 ただ子プロセスは setenv した PATH を引き継ぐからそっちでは認識する。 exec-path への追加した内容が変だったんでない? "/" と "\" の扱いとか環境変数と exec-path では異なるから。
exec-pathへの追加は、 (loop for f in (directory-files "~/.emacs.d/bin" t) when (and (file-directory-p f) (not (member (file-name-nondirectory f) '("." "..")))) do (add-to-list 'exec-path f)) というのを書いて追加しました。 取りあえず、exec-pathを評価したところ、追加はされているみたいです。 (ただし、それをEmacs側が正しく認識しているかわかりませんが)
その状態で (call-process "gtags" nil "*temp*") とかやるとどうなる?
>>876 じゃあ emacs 側ではパスは正しく認識してるはず。
0ってのは実行して gtags が正常終了して戻り値返してきたってことであって
パスが通ってないなら実行ファイルが見つからないってエラーが出るはずだし。
うまくいかないってのがどういうエラーなのかわからんからなんとも言えないけど
gtags 側で自分自身のところに PATH が通ってないとダメなのかもしれんね。
exec-path に追加した後
(setenv "PATH"
(mapconcat (lambda (path)
(subst-char-in-string ?/ ?\\ (expand-file-name path)))
exec-path path-separator))
とかすれば一応 emacs 内でパス設定出来ると思うけどこれやってからだとどうだろう。
>>877 うまくいきました!ありがとうございます!
他にもag.exeを同じように
.emacs.d/bin/ag
の中に入れていて、exec-pathを通していましたが、うまくいきませんでした。
しかし、上記のコードをinit.elに入れたら、こちらもうまくいきました!
ただ、一つ疑問があったのが、gtagsにおいて、WindowsへのPathが通ってない
(exec-pathは通っている状態)において、タグファイルは生成されたのに、
そこから検索すると
'global' は、内部コマンドまたは外部コマンド、
操作可能なプログラムまたはバッチ ファイルとして認識されていません。
と言われました(ag.exeも同じです)
タグを生成する時はexec-pathを見てるけど、それ以外は違うという事ですか?
ちなみにgtagsはggtags.elというのをインストールしてそこからタグを作りました。
>>878 外部プロセスを呼ぶときに、たまに shell-command とか call-process-shell-command、
または (call-process シェルのパス nil nil.... 実際のコマンド 引数...) みたいに
シェル経由して実行するのがあるんだけど、それだったりするのかもね。
そのエラーメッセージは windows のコマンドプロンプトで実行ファイルが見つからない時にでる
エラーメッセージだから、多分そうなんじゃないかと。
exec-path はあくまで emacs しか見えないから、cmd の方で実行ファイルが見つからなくて失敗したと。
>>879 本当にありがとうございました。
ところでこのようなコードって、そんなにスラスラと書けるようになれるものですか?
まだelisp関係は本とか読んでないのでイマイチわかってませんが。
(今年になってEmacsに移行し始めました)
わかる言語はC言語のみなんですが。
個人的には loop マクロを書ける方がすごいと思うけどな。 ググってでてきたコードとかをぼちぼち調べつつ info の elisp のとこ読んだり describe-function したり aprops で関係ありそうな変数とか関数探したりとかして慣れてったらいいんでないでしょか。 elisp ってあんまり関数言語っぽい使われ方してないらしいし、とりあえず動いたら それでいい、でいい気もする。
調べつつ書きながら動かして慣れるしかなさそうですね。 ところで、UNIX板のEmacsスレを見てきたら、 ここ数日で排他制御関係の話題からフォントの話題まで色々盛り上がってますね。
cmigemoが動かない…誰か助けてください
C-sでインクリメント検索するとき、ミニバッファにちゃんと
[MIGEMO] I-search
と表示されて、タスクマネージャ見ると cmigemo.exe もプロセスにいるのに、
日本語検索がまったくできません。ただの I-search になってしまいます。
OS は Windows7 64bit Professional、Emacs のバージョンは 24.3 です。
cygwinは入れていません。
香り屋さんから64bit Windows用のバイナリをダウンロードして、実行ファイル
とDLLパスの通ったところに置き、migemo.el は GitHub の emacs-jp から拾っ
てきています(下記URL)
https://github.com/emacs-jp/migemo/blob/master/migemo.el 使っている(はずの)辞書は UTF-8 版で、init.el への記述は以下です
884 :
883 :2014/02/12(水) 15:21:05.60 ID:sWMFFash0
【本文続き】 (require 'migemo) (setq migemo-command "cmigemo") (setq migemo-options '("-q" "--emacs")) (setq migemo-dictionary "C:/Program Files/GNU/emacs243/site-lisp/dict") (setq migemo-user-dictionary nil) (setq migemo-regex-dictionary nil) (setq migemo-coding-system 'utf-8-unix) (load-library "migemo") (migemo-init) ウェブを見ると皆さんこれで動いているようなのですが…動きません。お手上げです
コマンドライン上で↓を実行して、ka とか ja とか打ち込んでちゃんと反応はある? cmigemo -q --emacs -d 辞書ファイル名 正規表現のパターンがちゃんと出てくるなら emacs とのやりとりでどっかちゃんと動いてないんだろうけど
cmigemo-default-win32-20110227.zip を使うんだよーん
>>885 アドバイスありがとうございます
明日、試してみます
>>886 ありがとうございます
32bit版のバイナリも試してみたのですが、同じでした…
うちはこんなんなってます ;; @ migemo/cmigemo (setq migemo-command "~/.emacs.d/migemo/cmigemo") (setq migemo-options '("-q" "--emacs")) (setq migemo-dictionary "~/.emacs.d/migemo/dict/utf-8/migemo-dict") (setq migemo-user-dictionary nil) (setq migemo-regex-dictionary nil) (setq migemo-use-pattern-alist t) (setq migemo-use-frequent-pattern-alist t) (setq migemo-pattern-alist-length 1024) (setq migemo-coding-system 'utf-8-unix) (load-library "migemo") (migemo-init)
使わなくなって長いから詳しくは覚えてないけど文字コード関係だったような……
複数ディレクトリを対象にしたのだと、標準で入ってるのでは rgrep や grep-find あたりか。ag とか ack 用のもあるね。 検索対象ファイル群に文字コードが混在している場合は多言語対応した grep や ag を使わないといけないことに注意。 複数置換は対象の URL が見えないからなんともいえないけど 複数ファイルをまたいでってことなら moccur-edit あたりが対象かな。 あんまり複数ファイルまたいでの置換はしないから詳しくはわからない。
893 :
883 :2014/02/13(木) 23:21:40.16 ID:JP/+KbFY0
setq migemo-dictionary に辞書のファイル名を入れ忘れていただけでした…無事に動作しました。お騒がせいたしました…
ぜんぶ雪のせいだ。
Emacsを最近使いはじめましたが、grep関連で引っかかってます。 日本語がうまく引っかからないのと、今までWindowsでGUI上でやってたので、 grepオプションとかイマイチわかってないのもあります。 lgrepで対話的にgrepしてみましたが、英数字はOKでしたが、日本語は無理でした。 みなさん、日本語をgrepする際は何を利用している(or どんな設定にしている)のでしょうか?
lgrep は幾つかオプション付けないとだめなんじゃなかったかと。 ちなみにここでいう lgrep ってのは cygwin のパッケージの一つの lv と一緒にくっついてくる lgrep のことね。 emacs から使うときは (setq grep-program "lgrep") (grep-apply-setting 'grep-command "lgrep -n -Au8 -Ia ") (grep-apply-setting 'grep-template (format "%s <C> <R> - <F>" grep-command)) (grep-apply-setting 'grep-find-template (format "find . <X> -type f <F> -exec %s <C> <R> - <N> {} +")) とかやってるな。 -Au8 は基本の文字コードを UTF8 に、-Ia は入力の文字コードを自動に、ってオプションだね。
>>899 最後のいっこコピペミスだ
(grep-apply-setting 'grep-find-template
(format "find . <X> -type f <F> -exec %s <C> <R> - <N> {} +"
grep-command))
grepも最近はcolor-moccur使ってる。 color-moccurはElispのみの実装だから、agより遅いとか言われてるけど、 Windowsでもそのまま動作するのが便利。
まだ23.4を使ってる人いますか? 自分は24は各種Lispがビルド出来ないので見合せていますが。
もう24.3。なんか動かないやつってある?
keisen って、ちゃんと動くんだっけ?
そもそもが 23.4 でも動かないんじゃないか? keisen-mule は。
NTEmacs 上で cygwin の gdb によるデバッグうまく行ってる人います? 他の端末上だと普通に run 出来るのに NTEmacs から呼び出すと gdb が stackdump してしまう。 fakecygpty 経由させてもやっぱり SEGV 発生してる模様。
907 :
902 :2014/02/16(日) 12:43:12.01 ID:4ZIWgThk0
自分は、FLIM, APEL, SEMI, Wanderlust, lookup, howm, navi2chを23.4で使ってるけど、ほぼ~/.emacs.elで起動に失敗するケースが殆ど。 みんなうまく使えてるのかなぁ。
gunpackのEmacsだとプライベートフォントが使えるみたいですが、 Emacs onlyのEmacsでも可能なのでしょうか?
910 :
906 :2014/02/16(日) 16:10:34.94 ID:29JuohM50
調べててわかった部分だけとりあえず。 間接的な原因は、emacs が gdb を起動する際に、gdb の設定の interactive-mode を自動で on にしていたためでした。 回避方法としては以下を追加で SEGV で落ちたりはしなくなります。 (add-hook 'gdb-mode-hook (lambda () (gdb-input "-gdb-set interactive-mode auto" 'ignore))) core ファイルと gdb のソース見た感じ、自端末の tty の属性のコピーをする段で NULL 値を参照して SEGV を起こしているようでした。 自端末の tty 属性は、 gdb が端末を持ってるかチェックする関数の中で初めてチェックする際に設定されるようですが、 interactive-mode が auto 以外の場合は初期化済みとみなしてその部分の処理がスキップされてしまいます。 実際に普通に mintty 等で gdb を実行した場合でも、最初に set interactive-mode on をしてから run すると SEGV になりました。 地味に gdb のバグな気もしますが。 もっともこれは環境によって端末まわりの初期化の手順がことなるため、Windows 用の初期化処理のみの問題のようです。 それと 64bit cygwin や他の Windows 環境で発生するかどうかはわかりません。 NTEmacs はあくまで cygwin 用ではない windows ネイティブにコンパイルされた gdb を想定しているんでしょうかね。
emacs添付のすべてのmodeの動作確認をしてるわけないじゃん
むしろ NTEmacs に Windows ネイティブでないプログラムとの連携を想定しろって言う方が酷だろ
まあ実際想定してないから fakecygpty とか必要になってくるわけだしねえ。
つうかみんなcygwin好きだな MinGWのgdbだとなんの問題もないよ
>>915 多分 NTEmacs も MinGW の方のを想定してるっぽい。
ところで MinGW 版の場合で gdb-many-windows 状態の時に入出力ウィンドウは正しく動いてます?
cygwin 版は当然のごとく tty 周りがアウトだから死に機能になってます。
gdb -i=mi /bin/cat しても入出力ウィンドウで何も出来ない。
>>916 確かに*input/output of cat.exe*では何の反応もないな
ただ(gdb)って表示されてる*gud-cat.exe*では入出力の反応はある
linuxだとどうなのか後で試してみる
>>917 linuxで試したところちゃんと*input/output of cat*で入力と出力がされてる
つうことはMinGW版gdbにちゃんと対応できてないんだな…残念
>>918 MingW 版もファイルを介して入出力を別 tty 経由にする機能を実装してる、みたいなのがどっかに書いてあったから
NTEmacs 側で頑張れば使えるようになるかもしれない・・・けど手間考えると素直に linux とかでやったほうが良さそうな感じ。
cygwinはminttyですら挙動が微妙だから、もうダメなのかもしれないなぁ
もうダメっていうと最近ダメになり始めた風に聞こえるけど cygwinってもともとこんなんだぞ
大方の使用には耐えうる出来だと思うけどなあ。 NTEmacs じゃなくて cygwin 版 Emacs 使えばもっと気楽なのかもしれんね。
俺もNTEmacs+Cygwinで十分だと思う でも人によってやりたいことは違うしCygwinでは駄目な人がいるのも当然だろうね あとcygwin版Emacsは一部のマニア向けだと思う
皆さんは、 ・公式のGNU Emacs ・gnupack Emacs(Cygwin入り) ・gnupack Emacs(Emacs only) だとどれを使ってるんですか? 書籍だとEmacs only使っておけばOKで できればCygwin入りの奴は避けた方が良いとのことですが。
オリジナルのソースにgnupackのIMEパッチ当ててMinGWでビルドしたものを使っているひねくれ者です
公式 日本語入力が腐ってるがSKK使えば他に困る事はない
公式かな。 「表」とかのシフト jis で2バイト目が \ な文字で終わるディレクトリに dired で入れないとか 地味に変なとこはあるけど。gnupack のはパッチあたってるんだっけ? ただこれは 24.4 で直りそうな感じ。Unicode API がどうのこうのって書いてあったし。 IME もメインが SKK だし GoogleIME だと言うほど変なことにはならない。
Cygwinつきのは最初からmigemoやgrepが使えるのがラクだよ。 ただ、最初からいろいろと設定してあるのがおせっかいに感じるかもしれない。 最近はmigemoなくてもいいか……と思い、gnupack Emacs onlyを使っている。
コード書きがメインになると migemo 要らないかなーって感じもしてくるよね。 自分は今メールの読み書き Emacs でしなくなったし w3m も使ってないしで あんまり Emacs 内で日本語を検索しなきゃいけないシチュエーションがなくなってきてる。
cygwinのNTEmacsでいいんじゃね?拡張したらPowerShellも使えるし
みんな公式なんだね。 私は一応skkで日本語入力してるんだけど、cygwin 付き使ってる。 個人的に cygwin 付きの好きなところは、環境設定のパスをいじらなくても config からパスを通せるところと、USB メモリに入れておけば外出先の windows 機からでもすぐに自分の emacs が使えるところ。 外出先で ESS を使って R を操作できるのは本当にありがたい。 これは公式や emacs only では実現できないよね?
>>931 公式でもいけるんじゃないかな。環境変数設定してるだけだし。
最近の cygwin はマウントポイントにレジストリ使ったりしないからパスさえなんとかしたらどうにでもなる気がする。
公式 Emacs 自身のポータブル化はググれば色々出てくるよ。
ただバッチ使ってゴリゴリやったり emacs -l init.el とかやるんだったら
gnupack のランチャー exe の方がスマートだよね。やってること変わらないならそれを使わない手はないかと。
>>932 おぉ、そうなのですか!
gnupack の更新がこのままとまるようだったら検討してみようかな。
ありがとうございます。
勉強になりました。
flymake 使いつつ C のコード書いてるとまれに flymake が固まってしまう。 list-process で見ると flymake-proc が run の状態なのに ps で見ると存在しない状態になってる事がある。 NTEmacs 側でプロセスの死亡を判断できなかったってことなんだろうけど、こういう症状になったことある人他にいないかしら。 確実に再現出来る方法がわからないからなんでそうなるのかなかなか調べられない。 今のところ関係ありそうなのっていったら w32-read-pipe-delay を 5 とかにしてる弊害かなってぐらいなんだけど。
emacsのソース見てたらwindowsでのフルスクリーン絡みが新しいバージョンだとちゃんと実装されてて嬉しくなった。 今まではWM_SYSCOMMANDの送信だったけどこれウィンドウ切り替えしたときずれたりするんだよね。 ちゃんとShowWindowでの実装になっててすげえ助かる。 やっぱ最大化/最小化の関数が標準で実装になった影響なんだろかねえ。
Emacs 24.4 の pretest の Windows用ビルドバイナリを配布してる サイトってあるんでしょうか? GNU公式のWindows用 alpha版とかプリテスト版バイナリのサイトは、みんな ここ数年更新が止まってて、どーなってんの?状態で・・・
公式は正式にバージョン上がらないと配布してないんじゃないかな それ以外の所は単純に面倒くさくなったんじゃないかと
あと eww がおっそろしく速いんだがそのまんまだと文字化けしまくって日本語使えない
>>940 ewwはlibxtml2を使っててlispで実行してるところが少ないから速いのかもね
ただ日本語使えないのはアカンな
なんらかの設定で回避できればいいけど
>>935 フルスクリーン周りは不満だったから、毎回パッチ当ててビルドしなくて済むならすごく助かる
普通に frame-parameter の fullscreen 設定するだけで正しく最大化最小化してくれるようになってたわ。 公式に関数も用意されたし。 凄く楽になった。
IMEパッチを最近のemacsに無理矢理当ててみました。 手元ではmingw-buildsでビルドした64bit版がなんとなく動いてます。 32bitでもビルドできるかは、やってないので不明です。 www1.axfc.net/uploader/Sc/so/532342
tempフォルダの場所をelispで取得するにはどうすればよいですか?
環境変数を見ればいいんじゃないの? TEMP か TMP あたり設定されてると思ったけど。
ありがとうございます!
org-mode で検索したタグに該当するツリーだけ表示もしくはエクスポートしたいんだけど、そんな機能は無いのかな。
949 :
499 567 :2014/04/19(土) 10:34:44.36 ID:kJkttDY/0
>>949 ありがと、初めてemacsのビルドに成功した
x86_64-w64-mingw32 4.9
staticリンクだったからdbusとimagemagickにライブラリの追加必要だったけど
というかスタティックリンクは望ましくないのかな?
あ、それとsrc/image.c 7987行目 これが未定義って怒られたので7989行目を使った
952 :
949 :2014/04/20(日) 23:53:56.87 ID:LLvN2Zzf0
>>950 スタティックリンクが望ましくないとかは特にないだろうとは思いますが
後でライブラリ差し替えできないとかですかね。
つか、スタティックリンクだとmingwでimagemagick組み込みできましたか。
私は昔試してみてうまくいかなかったので放置してました。
imagemagickは自ビルド?
>>952 うん、基本的に何でもスタティックでやる。
Msys+mingwなんだけど、msys外からも使いたいツールがあるからね。
ちなみにウチのmagickが必要とするライブラリはこれで
-ljbig -llcms2 -ltiff -ljpeg -lpng -lfftw3 -lfontconfig -lfreetype
-lwebp -lwmflite -llzma -lintl -liconv -pthread -lbz2 -lopenjp2
-lxml2 -lz -lgdi32 -lm -lgomp(あとws2_32も追加したような気がする)
dbusはこれ(gdi32も追加したかな?)
-lws2_32 -liphlpapi
magickとdbus独立でリンクフラグ見てるから、LIBSに追加しても無駄なのよ、
しかもLIBSのライブラリの方が先にリンクされちゃうから。
なので、configure後src/makefileに追記で対応。
普通に使う時はxx.pcのLibs.privateにくっつけて、pkg-configに--staticフラグ
追加してんだけどね
早速w3m噛ませてみたけど、当たり前だがvimとほとんど変わらず動いて幸せ
ちな今のlibgcの関数がw3m開発当時のものと結構違ってて、自分でやるには若干
骨が折れる
兎に角ありがと、もうemacsには縁が無いと思ってた
しかも欲しいパッチまで同梱してあるし!至れり尽くせりです
これやっぱsharedの方がいいかも staticライブラリだと、画像が表示されない。 sharedライブラリ使ったら表示された、jpegとgifで確認。 ライブラリのバージョンは最新。 でも何故かpngは両方表示可能。 ま、テキストエディタなんですけどねこれ
M-x undoでモザイクが外れたぞ!
M-x replace-regexpしたらマムコがティンコに変わったよ(´・ω・`)
>>954 あっ、そうか、そうでした、windowsのemacs(cygwin版除く)は
dynamic-library-alistにあるdllを自分で読み込んで使ってるので
dllがみつからないと表示されないですね。
pngはどっかpathの張ってあるところにdllが落ちてるとか?
>>957 ズバリその通りで、GTK用にDLLフォルダ作って環境変数でリンク張ってるんだけど
そこから読み込んでくれたみたい。jpegはバージョン古いの使ってた、gifは確かなん
かのライブラリが自前で実装してたのかな?なので入れてなかった
なるほどこれ仕様なんだねー、納得した重ね重ねありがと
959 :
949 :2014/04/25(金) 20:35:59.46 ID:6BpjxysX0
staticリンクでimagemagick組み込めたということだったので触発されて
そこらへんちょっといじってみました。
以下のパッチでimagemagickも他の画像同様dynamic-library-alistから
dllを読み込むようになります。
http://www1.axfc.net/u/3229955 >>949 のパッチ後ソースへのパッチですが
>>949 を当ててない元のソースにも
offset ... lines は出ますが当たります。
bmpを表示させてみるぐらいしか動作確認してないので何かおかしかったら
ごめんなさい。
>>959 パッチのご報告
emacs側で対応してる画像フォーマットは、imagemagick側でインクルードしてればコレだけで表示可能
恐らくネットで配布してるmagickのdllは、基本的なフォーマットに対応してるはずだからこの2個のdllだけ
で画像表示はいけそう
画質とかは分からないけど、兎に角表示は大丈夫だったよ、おつかれさま。
>>949 ありがとうございます。
README.txt に沿って、MinGW/MSYS の gcc 4.8.1 でビルド出来、emacs 自体
立ち上がるんですが、どうも site-lisp directory 下のファイル読んでもらえない感じです。
今回、directory 構造が結構変わったので、
emacs-24.3.90 (top directory)
....
|-- share
| |-- applications
| | `-- emacs.desktop
| |-- emacs
| | |-- 24.3.90
| | `-- site-lisp <--- ここに配置してるんですが、なんか勘違いしてますでしょうか?
....
この directory に subdirs.el はありますし、ビルドで特にエラーなど出てない感じなんですが。
962 :
949 :2014/04/28(月) 20:29:04.04 ID:iYIkqinj0
そこでよいです。 site-lisp下が読めてないんじゃなくて何かがうまくインストールできてなくて site-lisp下に入ってないんじゃないかな。私が気づいたところではapelとか。
>>962 ご返事ありがとうございます。
.emacs で明示的に load-path に追加すれば、
| |-- emacs
| | |-- 24.3.90
| | `-- site-lisp 以下に追加した site-lisp も普通に読めていることと、
sourceforge.net/projects/emacs-bin/files/
から落としてきた binary では、.emacs での追記なく読めること、などから
やはり私のビルドでどこかミスしてるんだと思います。もう少しトライ続けてみます。
うーん、どういう状況でそうなるのかよくわかりませんが configure後のsrc/epath.hのPATH_SITELOADSEARCHがおかしいのかな。
src/epaths.hでした
>>965 早速にありがとうございました。確かに、configure の後:
epaths.h の #define PATH_SITELOADSEARCH が定義されてません(空)でした。
マニュアル編集で
#define PATH_SITELOADSEARCH "%emacs_dir%/share/emacs/24.3.90/site-lisp;%emacs_dir%/share/emacs/site-lisp"
してビルドして、読めるようになりました。ありがとうございました。
ところで、configure 時に "msys-to-w32: invalid path d:" が出るのに気が付きました。
(MinGW は d:\ に導入して D:\MinGW\msys\1.0\etc\fstab は d:/mingw /mingw 状態)
ちゃんと調べてませんけど、
lists.gnu.org/archive/html/emacs-devel/2013-11/msg01134.html
のスレッドとか関係あるのかなあ?
ああ、なるほど。わかりました。 たしかmsys-to-w32でmsysのパスを windowsのドライブ文字:/... の形式にして epaths.hに設定してたかと。 多分configure --prefix= で d:/... で指定していると思いますが /d/... で指定すればよいと思います。 もしくはどこかにmountしてそのパスで指定するか。
>>967 ご指摘のとおり、以前は configure --prefix=d:/emacs-24.3.90 としてました。
これを --prefix=/d/emacs-24.3.90 とすることで、 PATH_SITELOADSEARCH
が空になることを避けられました。
早速のアドバイス、まことにありがとうございました。
970 :
949 :2014/05/15(木) 00:35:51.80 ID:1FLoMDoi0
24は自分の環境だと.emacsがうまく読み込めないので、まだ23.4のままでいる。
なおせよww
>>971 最近、ネットでは24のNTEmacsの情報が不足してると思う。
debianのstableでも、まだ23.4のままだし。ちょっと怖い。
24.3.90 だと、ビルドの仕方から .emacs の読み込みから色々違うのね。 いまんとこ、24.3.1 でいいや。
保守