[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 901- 1001- 2ch.scのread.cgiへ]
Update time : 02/25 06:16 / Filesize : 340 KB / Number-of Response : 1053
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

NTEmacs スレッド 5



1 名前:名無しさん@お腹いっぱい。 [2015/03/09(月) 00:01:58.25 ID:0/C/Ivt60.net]
前スレ
NTEmacs スレッド 4
anago.2ch.net/test/read.cgi/software/1401870078/

GNU Emacs
www.gnu.org/software/emacs/

gnupack (cygwn + emacs package)
sourceforge.jp/projects/gnupack/

GNU emacs(x64)
hp.vector.co.jp/authors/VA052357/emacs.html

CVS savannah.gnu.org/cvs/?group=emacs
Git savannah.gnu.org/git/?group=emacs

FAQ www.gnu.org/software/emacs/windows/ntemacs.html
EmacsWiki www.emacswiki.org/
Mailing Lists savannah.gnu.org/mail/?group_id=40

Bug Report
M-x report-emacs-bug RET

75 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/04/14(火) 23:38:40.28 ID:EStCjSBE0.net]
使ってないから適当こくけど minibuffer-setup-hook/minibuffer-exit-hook とかじゃだめなん?

76 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/04/14(火) 23:47:41.35 ID:ho3MkNg10.net]
>>74
minibuffer-exit-hook はIMEパッチ内でも使ってるけど、minibuffer-setup-hook を使っても
y-or-no-p とかは無反応だ
駄目な場合はで多いのは cursor-in-echo-area を t にするやつ
これをするとカーソルがminibufferに飛ぶけどhookは一切呼ばれないからIMEがオフにならない…

77 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/04/14(火) 23:59:53.15 ID:EStCjSBE0.net]
>>75
y-or-n-p は read-key 使ってるからか。
read-key のアドバイスで cursor-in-echo-area が t なら・・・的なのを入れれば
擬似的にミニバッファ入力してるように見せかけてるのは回避出来るようになるかなぁ。
あーでも read-event とか他にも色々あるね。

78 名前:名無しさん@お腹いっぱい。 [2015/04/15(水) 00:12:34.25 ID:909axkl6l]
64bitならCC="gcc -shared-libgcc" つけなくても大丈夫なのですか?

79 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/04/15(水) 00:16:25.18 ID:iWcVp+8o0.net]
>>76
本家の方でずばりカーソルがwindowを移動したっていうhookを作ってもらえれば万事解決なんだけどね
そんなのあるもんだと思ってたけど無いっぽい (知らないだけなのかね)
y-or-no-pはGUIのダイアログバージョンもあるけど、あんまりスマートなコーディングになってなかったな…

80 名前:名無しさん@お腹いっぱい。 [2015/04/15(水) 00:21:35.11 ID:nBsJeUAd0.net]
自己完結。64bit版はlibgcc_s_dw2-1.dll使ってないのか。

81 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/04/15(水) 00:28:04.69 ID:E6JA3RzG0.net]
えっ、どれが自己完結したんだ・・

82 名前:H []
[ここ壊れてます]

83 名前:名無しさん@お腹いっぱい。 [2015/04/15(水) 19:52:45.07 ID:0uxm8mAl0.net]
>>80
64bitでもconfigure 時に CC="gcc -shared-libgcc" をつけないと落ちる?
と書き込んだはずだったのですが、できていなかったようです・・・。すみません。



84 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/04/15(水) 20:48:18.43 ID:E6JA3RzG0.net]
>>81
なるほど。
だから chuntaro 版で落ちる報告あがってきてなかったわけなのね。

85 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/04/15(水) 23:13:15.51 ID:Ht/LrBGW0.net]
chuntaroさんの24.5を使わせてもらってるけど
24.5でもgrepで以下のワーニングがでる問題直ってないみたいね…
warning: GREP_OPTIONS is deprecated

まぁここに修正済みの grep.el が上がってるから置き換えれば済む話なんだけどさ
ttp://git.savannah.gnu.org/cgit/emacs.git/commit/lisp/progmodes/grep.el?id=2e4c2fe2787785a421f256541de642976e9bd90b

86 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/04/15(水) 23:26:15.91 ID:E6JA3RzG0.net]
>>83
素の grep 使ってなかったから気付かなかった。
カラー対応してたりして lgrep より気持ち見た目が豪華になるんだなぁ。

87 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/04/16(木) 09:23:31.97 ID:U5gvVt4D0.net]
>>68
対応されたね。

88 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/04/16(木) 10:48:12.95 ID:RvYFC8+a0.net]
ありがてえありがてえ
32bit/64bitともにネィティブパッチ済みが安定配布されてるのは助かるね。

89 名前:名無しさん@お腹いっぱい。 [2015/04/16(木) 12:28:27.47 ID:jgNWkz/z0.net]
>>85
良さげに使えてる

>>86
んだ

※anagoは今日機嫌悪そう

90 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/04/16(木) 12:59:18.03 ID:U5gvVt4D0.net]
gnupackは出ないね

91 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/04/16(木) 13:06:06.65 ID:Oh1kAPyh0.net]
>>85のサイトのは-O3以降の最適化ビルドじゃなくて巨大なデバッグ情報も付いてる (exeが16MB→71MBになる…)
あとsvgとgnutlsはDLLは含まれてるけどconfigureの出力を見ると無効になってる
気になったんで一応書いておく

92 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/04/17(金) 09:35:41.18 ID:DM8ySD8W0.net]
04.16版への差替えあったみたいだが、>>89 への言及まだなし

93 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/04/17(金) 11:05:09.66 ID:PA7JuVnR0.net]
>>90
直接伝えたらいいんでないの…?



94 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/04/17(金) 11:25:07.05 ID:8SEnb17A0.net]
少なくともgnutlsは動いてないな

95 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/04/17(金) 11:43:28.69 ID:1pa4/E7S0.net]
あと前スレでも書いたけど、アップしたバイナリにはWindowsで設定されているPATHの全容と
ビルドした時のユーザー名とホスト名とそのPATHが含まれるから、余分なPATHは消して
ユーザー名とホスト名は適当なものに変更した方がいいんだよね

とりあえず -g3 -gdwarf-2 が余計なんで消した方がいい (exeが16MBぐらいになるはず)

96 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/04/17(金) 16:19:59.51 ID:7QnN5/LZ0.net]
>>92
svgも不要?、という話だったような

97 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/04/17(金) 19:38:56.09 ID:AM0+JV5e0.net]
gnutlsが動かないとわざわざstunnel使わないとssl通信ができなくて不便
mewさんはstunnelしか使わない頭の固い頑固者だから関係ないけど

98 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/04/17(金) 20:21:14.48 ID:PA7JuVnR0.net]
cygwin とかと一緒に動かしてるなら gnutls インストールしておけば
特に設定なしで gnutls-cli 経由で https 接続したり 993 ポートで gmail に繋いだりしてくれるよ。

99 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/04/17(金) 22:21:42.63 ID:kL73LSPj0.net]
>>95
> mewさんはstunnelしか使わない頭の固い頑固者
なぜに槍玉に上げそこまで熾烈な言葉遣いするん

100 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/04/19(日) 14:12:56.90 ID:DXu1Mk530.net]
ビルド時のパスがバイナリに残る問題は emacs-bug で議論されてるなぁ。
パス以外にもなんかないか?とかやってるから次辺りのバージョンではそういうの残らなくなるかもしれんね。

101 名前:57 mailto:sage [2015/04/19(日) 15:46:59.35 ID:1KC2PQ+90.net]
libgnutls-30.dllをちゃんと読み込めない問題は下記を見て
設定で使えるようにしたけどそれを解決した24.6がそろそろ出ないかな。

ttp://proglab.blog.fc2.com/blog-entry-14.html

102 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/04/23(木) 20:54:42.65 ID:Z256nHLA0.net]
No IME パッチってどこに落ちてるの?
IME のキー潰すだけのために keyhac 入れてるのもなんだし試してみたいんだけど
見つからない。

103 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/04/23(木) 21:17:18.23 ID:RfDYEKRj0.net]
>>100
W32-IMEを無効化ならconfigure時のoption指定だけだろ



104 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/04/23(木) 21:32:23.80 ID:Z256nHLA0.net]
>>101
それってパッチの追加サポートを入れるかどうかのフラグでしょ。
半角/全角とかが IME に吸い取られるのを禁止したいのさ。

んで見つからないとかいってたけど普通に IME パッチ配布元に disable-w32-ime パッチ置いてあったわ。
これ追加して配布してるところはないんだなぁ。やっぱ自分でビルドするしかないのか。

105 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/05/02(土) 08:03:19.03 ID:3ATXgoIh0.net]
ftp.jaist.ac.jp/pub/GNU/emacs/windows/emacs-24.5-bin-i686-mingw32.zip

106 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/05/03(日) 00:54:12.38 ID:47jdb8qj0.net]
emacs-24.5-shared-libgcc.zip (2015.04.16) 97,234,000byte を使わせて頂いてます。
いつもありがとうございます。

zipをC:\emacs-24.5\ に展開し、C:\emacs-24.5\bin\runemacs.exe のショートカットを
デスクトップに置き、プロパティーの作業フォルダを C:\emacs-24.5\bin からたとえば D:\Home
に変更して起動したら、M-x shell で
Process shell exited abnormally with code 53
が出てcmd.exeが実行できませんでした。作業フォルダを C:\emacs-24.5\bin のままにしておけば、
M-x shell でcmd.exeは起動できます。(だたしemacsを起動直後に参照しているディレクトリを変更するとやはりだめ)

emacs-24.5.zip (2015.04.11) 97,213,668byte では、この問題はおきていませんでした。

\bin のパスが参照できるような起動のされ方でないと、何かまずい制約が入っちゃったかもしれませんね。
(追加されたdllからみ??)
C:\emacs-24.5\binをPATHに追加しておけばいいのかもしれません(まだやってない)。

ご報告まで。

107 名前:103 mailto:sage [2015/05/03(日) 01:11:41.37 ID:47jdb8qj0.net]
>>104
emacs-24.5-shared-libgcc.zip (2015.04.16) 97,234,000byte でも、
(展開したディレクトリ)\binをPATHに追加したら、作業ディレクトリが\binでなくとも
M-x shell でcmd.exeが起動できました。

108 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/05/06(水) 03:36:15.44 ID:uEZzm+120.net]
NTemacs の仕様かわからないけど exec-path の1番目の要素の先頭が小文字になることに気付いた
別に動作的には問題ないのだけど add-to-list で追加するときに大文字と小文字が区別されて
パスがだぶる場合があって気持ち悪い
あと、個人の都合で exec-path の各要素の末尾の"/"は取り除きたい
ってことで以下のようにしてみた

(dotimes (i (length exec-path))
(setf (nth i exec-path) (replace-regexp-in-string "\\([a-z]\\):/" 'upcase (nth i exec-path)))
(setf (nth i exec-path) (replace-regexp-in-string "/\\'" "" (nth i exec-path))))

ただ"replace-regexp-in-string"を2回使ってるのがダサい
もっといいやり方があれば教えてください

109 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/05/06(水) 09:31:13.17 ID:4C94YyID0.net]
file-truename も directory-file-name も先頭を小文字にする仕様みたいだから
どうせ揃えるなら小文字に揃えたほうがシンプルになるんじゃないかな?
add-to-list するときに追加する要素に対しても directory-file-name してや

110 名前:黷ホいいわけだし。

;; 先頭小文字/最後のスラッシュはなしのケース
(setq exec-path (mapcar #'directory-file-name exec-path))

;; 先頭大文字/最後のスラッシュはなしのケース
(setq exec-path (mapcar (lambda (p)
(setq p (directory-file-name p))
(aset p 0 (upcase (aref p 0)))
p
)
exec-path))
[]
[ここ壊れてます]

111 名前:>>105 mailto:sage [2015/05/06(水) 14:47:54.15 ID:uEZzm+120.net]
>>107 ありがとう。期待通りの動作になりました

"directory-file-name"なんて知らなかったよ。emacs 標準で実装されてるのね
「先頭小文字」かつ「末尾の"/"なし」を一発で実現してくれるとは…

あと "#'"ってラムダ式作る以外に
"function-object"であることをコンパイラに伝える役目もあるのね
今まで"quote"ですませてきてたから目からウロコでした

112 名前:>>105 mailto:sage [2015/05/06(水) 14:50:59.99 ID:uEZzm+120.net]
> "#'"ってラムダ式作る以外に ×
"#'"って関数名をクォートするときに ○
だな…恥ずかしい

113 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/05/06(水) 16:08:53.22 ID:aS345Gfx0.net]
function の役割り
www.mew.org/~kazu/doc/elisp/function.html
クォートの話題が出たんで一応リンク張っておく
スゲー参考になる



114 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/05/17(日) 09:37:02.76 ID:EQG0VP2V0.net]
週末、Cygwin版Emacs(gnupack-13.01)への移行をしてみた。
Cygwin版Emacsは、cygwinで作ったwindowsシートカットをシンボリックリンク
のように扱えるのがいいね。MingGW版Emacsではw32-symlinksやNTFSシンボリック
を使う必要があったけど、それが必要ないのが便利。
https://cygwin.com/cygwin-ug-net/using-cygwinenv.html
if set to just winsymlinks or winsymlinks:lnk, Cygwin creates symlinks
as Windows shortcuts with a special header and the R/O attribute set.

115 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/05/17(日) 10:02:43.03 ID:9S9K1d5t0.net]
あのわけわからん遅ささえなきゃなぁ。
fakecygpty 経由したほうが速いとかどうかしてる。

116 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/05/17(日) 10:04:20.78 ID:EQG0VP2V0.net]
ansi-termとかは遅くて使えないね。自分はshell-modeをメインで使っている
ので、問題なさそう。

117 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/05/17(日) 10:07:40.39 ID:EQG0VP2V0.net]
Cygwin版Emacsでもう一ついいことを見つけた。cygwinで作ったwindowsショートカット
やNTFSシンボリックの中に入っても、シンボリックのパスが維持される。
これはCygwinの機能なんだろうけど、MinGW版Emacsではそうはならないので便利だなぁ。

118 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/05/30(土) 15:56:31.02 ID:Dn2TAgbo0.net]
Emacs24.5をCygwinでビルドしたが、xml2でコンパイルしてないとかのエラーでewwが使えない。
libxml2-devは入ってる。でもconfigureでxml2がnoと判定される。

誰か助けて。

119 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/05/30(土) 16:27:42.67 ID:fo8HIJKy0.net]
pkg-configいれてないとか

120 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/05/30(土) 17:50:30.91 ID:Dn2TAgbo0.net]
>>116
おー、ビンゴでした!
ありがとう!

121 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/06/02(火) 02:12:13.32 ID:wf9VDqVY0.net]
日本語入力中のフォントにMactype効かないんだけど、綺麗なフォントを標準させる方法ない?

122 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/06/15(月) 10:49:32.51 ID:ypQO6dq60.net]
unix板からこちらに聞いた方がいいといわれたので、
ここで質問いたします。

gnupack で入れたemacsで emacs-clang-complete-async を導入したいんですが
emacs-clang-complete-asyncのmakeができません。llvm系は自前で最新版をビルド
してパスも通っているつもりです。
make時のエラーは、
/usr/local/lib/libclang.a(CIndex.o):Cindex.cpp〜(関数名)に対する定義されていない参照です
というのが、大量に出ます。
環境

123 名前:
win7 64bit
GNU Emacs24.5.1
です。
同じエラーを解決された方や、こうすればいいんでないの?という方がいれば
教えてください。
[]
[ここ壊れてます]



124 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/06/21(日) 22:59:47.64 ID:oMn8fplm0.net]
>>119
このパッチの Makefile.cygwin を使ってみたらどうだろう
https://github.com/Golevka/emacs-clang-complete-async/pull/64
https://github.com/Golevka/emacs-clang-complete-async/blob/0446bacdae52619155c914d6c4c5ffca0ef1ebc4/Makefile.cygwin

125 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/06/22(月) 03:45:18.32 ID:I0UPbCEi0.net]
fakecygpty.c に NOT in MinGW32! ってあるけど
msys gcc ならいけるんじゃないかと思ってコンパイルしてみた
結果、コンパイルできたが、 M-x shell で以下のエラーがでてうまくいかない
Process shell exited abnormally with code 139

ただ、tramp でサーバーに ssh 接続するのは可能
ちゃんとミニバッファにパスワードを入力できる

126 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/06/22(月) 07:42:07.21 ID:9r4PmZAp0.net]
msys の方はそもそも pty を持ってないから fakecygpty コンパイル出来ても意味ないはずだが。
tramp の方のはよくわからないけど ssh-askpass が動いてるとかじゃないの?

127 名前:>>120 mailto:sage [2015/06/22(月) 13:58:06.96 ID:l0qxGhXV0.net]
>>122 レスthx
> msys の方はそもそも pty を持ってない
そうなのか…

cygwin だと"cygwin1.dll"が POSIX 互換エミュレーション層を実現してる
それをフォークした"msys-2.0.dll"で msys2 は POSIX をサポートしてる
って認識で、"msys-2.0.dll"をリンクしてやれば
うまくいくと思ったんだけど、やっぱりダメかなぁ…

msys2 の mintty で tty コマンドを打つと
/dev/pty0
ってなるけど、これは msys 側でなくて mintty 側で
pty をサポートしてるってこと?

128 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/06/26(金) 07:37:35.97 ID:S4uTtmrI0.net]
Cygwin版 emacs向けに以下の設定を考えました。

dired でディレクトリのシンボリックリンクを実体のパスで開くための設定
www49.atwiki.jp/ntemacs/pages/54.html

便利な設定ですので、よければ使ってください。

129 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/07/06(月) 22:54:04.62 ID:RQ16gZ7/0.net]
>>119
>emacs-clang-complete-asyncのmakeができません。llvm系は自前で最新版をビルド
最新版てtrunkのこと?
だとしたら取得タイミングによってはビルド通らないことあるのでは?
fixされたReleaseの最新版(いまだと3.6.1?)なら通るはず。
あと、cygwin付属のsvnで取得するとビルドが通らないケースがあった。
まずは、llvmをビルドしたディレクトリ(Release/binとRelease/lib)にlibclang.aやlibclang.dll, libclang.soなどがあるかを確認する。
cygwinだとcygclang.dllかな?
出来ていないのであればビルドが失敗してるので、ビルドログあさってみるしかないですね。
昔自分がハマったのは
llvmのmakefileまたはslnファイルを生成するときに
cmakeがsvnを呼び出してリビジョンナンバーのヘッダファイルを生成するのだが、
cygwinのパス処理がらみでうまく動作せずヘッダが生成されないので、結果としてビルドエラーになっていたというケース。
なので、svnチェックアウト,cmakeによるプロジェクト生成は、
cygwinではなくコマンドプロンプトにて、tortoisesvnとcmakeオフィシャルのバイナリで行いました。

130 名前:>>120 mailto:sage [2015/07/10(金) 18:01:03.11 ID:KX/0sk9b0.net]
>>123
自己解決。emacs の設定ミスってるだけだったorz...
msys2の環境であっさり fakecygpty 使えました。
msys/gcc をインストール済みの msys2 の環境において、msys2_shell.bat を起動して
> gcc -o fakecygpty.exe fakecygpty.c
を実行。コンパイルした fakecygpty.exe を
/usr/local/bin
とかに移動。後は wiki の fakecygpty を使うための設定 とかの設定をすればOK。
M-x shell して tty コマンド打つとちゃんと
/dev/pty1
を返します。これで cygwin から msys2 に乗り換え

131 名前:轤黷驍ゥな []
[ここ壊れてます]

132 名前:名無しさん@お腹いっぱい。 [2015/07/19(日) 01:34:42.73 ID:C9bQhy9dD]
yatexつかってるとときどき
binding stack not balanced (serious byte compiler bug)
てでて落ちるんだけどなにが悪いんだろう・・・

133 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/07/25(土) 16:21:44.11 ID:5OkOVd1q0.net]
以下のメールでfakecygptyの作者さんも言ってるけど、
ttp://www.ysnb.net/meadow/meadow-develop/2005/msg00367.html

fakecygpty を経由するプロセスが
compilation-disable-input を non-nil にセットすると正常動作しなくなるみたいね
そのせいで grep とか ggtags、twittering-mode 等が動かなくて数日悩んでしまった

自分の環境では pty が必要な場面は低いんで、
wiki の設定を一部改編して、現状のブラックリスト方式ではなく、
ホワイトリスト方式で fakecygpty を経由するか判断させることにした
また、バッファの名称の判断に正規表現を使うことにした
ついでに 24.4 で導入された新アドバイスに書き直してみた



134 名前:>>126 mailto:sage [2015/07/25(土) 16:23:49.67 ID:5OkOVd1q0.net]
こんな感じ

(defvar fakecygpty-program-list)
(setq fakecygpty-program-list '(""))

(defvar fakecygpty-buffer-name-regexp)
(setq fakecygpty-buffer-name-regexp "^\\(*shell\\|*tramp\\)")

(defun ad-start-process-to-fake (orig-fun &rest args)
(when (and (or process-connection-type
(member (replace-regexp-in-string "\\.exe$" "" (file-name-nondirectory (nth 2 args)))
fakecygpty-program-list))
(string-match fakecygpty-buffer-name-regexp
(if (bufferp (nth 1 args))
(buffer-name (nth 1 args))
(nth 1 args))))
(setcdr (nthcdr 2 args) (cons (nth 2 args) (nthcdr 3 args)))
(setcar (nthcdr 2 args) "fakecygpty")
(message "start process via fakecygpty"))
(apply orig-fun args))
(advice-add 'start-process :around #'ad-start-process-to-fake '((depth . -100)))

135 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/07/25(土) 18:02:48.66 ID:IrMQAipT0.net]
defadviceのままだけど、排他バッファリストの代わりにcompilation-disable-inputの判定いれるのではだめですかね?

(setq fakecygpty-program-list '(""))

(defadvice start-process (around ad-start-process-to-fake last activate)
(when (and (or process-connection-type
(member (replace-regexp-in-string "\\.exe$" "" (file-name-nondirectory (ad-get-arg 2)))
fakecygpty-program-list))
(not compilation-disable-input))
(ad-set-args 3 (cons (ad-get-arg 2) (ad-get-args 3)))
(ad-set-arg 2 "fakecygpty"))
ad-do-it)

136 名前:>>126 mailto:sage [2015/07/25(土) 18:50:49.98 ID:5OkOVd1q0.net]
>>130
今、試してみたところ
compilation-disable-input が non-nil の問題は
compilation-disable-inputの判定を入れればいいみたいです

ただ、gdb とか twittering-mode とかはこれとは別問題みたいで
fakecygpty を経由させるとうまく動かないです

137 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/07/25(土) 20:26:20.36 ID:IrMQAipT0.net]
>>131
やっぱりバッファ名での判定は無くすことできないのかな。

138 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/07/25(土) 21:13:18.13 ID:IkFApNlK0.net]
process-send-string を C-d が送られるように書き換えるだけで動くようにならない?
自分ところはそれでうまく動くようになってる。
ほんとはもっと細かくかいてるけど大まかには以下みたいなかんじで。

(defadvice process-send-eof (around real-c-d activate)
(process-send-string (ad-get-arg 0) (kbd "C-d")))

あと fakecygpty はおっきいところで二箇所ほどバグがあって、過去にこのスレで対処法が出たぶんは
以下にパッチがあたってるのが置いてあるから使ってみるといいんじゃないかな。
https://github.com/trueroad/fakecygpty

pty の初期化が古い meadow 仕様だったのを emacs 仕様に書き換えて 出力 CRCRLF になっちゃうのを対処したのと、
子プロセスの戻り値をちゃんと処理してないせいでいつでも正常終了になっちゃうのを対処してるバージョンね。

139 名前:>>126 mailto:sage [2015/07/26(日) 00:07:15.39 ID:PVnmMw3N0.net]
>>133 の方法で twittering-mode は動きました。
ただ、gdb の方は動かなかったので、Backtrace を見たところ、原因が分かりました。
gdb を起動すると、start-process で gdb 本体のプロセスと gdb-inferior のプロセス2つが作られるのですが、
その際、gdb-inferior のプロセスは
(start-process "gdb-inferior" #<buffer limbo> nil nil) のように
起動プログラムが nil で作られます。
そのため、この状態で wiki のアドバイスを適用すると
(start-process "gdb-inferior" #<buffer limbo> "fakecygpty" nil)
つまり fakecygpty 単独での実行となりエラーとなるということでした。

140 名前:>>126 mailto:sage [2015/07/26(日) 00:13:27.06 ID:PVnmMw3N0.net]
最終的にこんな感じの設定になりました

;; 新アドバイス版
(defun ad-start-process-to-fake (orig-fun &rest args)
(when (and (nth 2 args)
(or process-connection-type
(member (replace-regexp-in-string "\\.exe$" "" (file-name-nondirectory (nth 2 args)))
fakecygpty-program-list))
(not compilation-disable-input))
(setcdr (nthcdr 2 args) (cons (nth 2 args) (nthcdr 3 args)))
(setcar (nthcdr 2 args) "fakecygpty"))
(apply orig-fun args))
(advice-add 'start-process :around #'ad-start-process-to-fake '((depth . -100)))

;; 旧アドバイス版
(defadvice start-process (around ad-start-process-to-fake last activate)
(when (and (ad-get-arg 2)
(or process-connection-type
(member (replace-regexp-in-string "\\.exe$" "" (file-name-nondirectory (ad-get-arg 2)))
fakecygpty-program-list))
(not compilation-disable-input))
(ad-set-args 3 (cons (ad-get-arg 2) (ad-get-args 3)))
(ad-set-arg 2 "fakecygpty"))
ad-do-it)

141 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/07/26(日) 01:10:50.40 ID:NtQg+S5k0.net]
>>134
gdb は子プロセスの入出力用に pty がもう一つ必要になるんだけど、emacs では実行ファイルを nil にすることで pty 単体を確保できる。ここらへんは次あたりの emacs のバージョンで変わりそうだけど。

んで fakecygpty は pty のみの確保に対応していないから本体に手を入れないといけない。
https://github.com/d5884/fakecygpty
↑で一応対応してはいるんだけど、さっき試したら行頭での C-d が動かなくなってる感じ。cygwin のバージョン上がったからかなぁ。

142 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/07/26(日) 01:57:48.79 ID:GoqLMzMk0.net]
>>134
twittering-modeはどの辺が動かなかったか教えてくれる?

143 名前:>>126 mailto:sage [2015/07/26(日) 02:08:38.52 ID:PVnmMw3N0.net]
>>136 のおかげで、今回の問題の本質が理解できました、ありがとう。
端末I/Oについて知識が皆無なんで、
fakecygpty 本体に手を入れるのはきつそうだなー…

ttps://github.com/d5884/fakecygpty 試してみましたが、
自分の環境では、プロセスが終了しなかったりでうまく動きませんでした。



144 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/07/26(日) 02:24:40.85 ID:GoqLMzMk0.net]
>>133の話を踏まえると以下の方法でgrep問題なども回避できるんだけど、
>>135の方法とどちらがいいんだろう。

(defadvice start-process (around ad-start-process-to-fake last activate)
(when (and (ad-get-arg 2)
(or process-connection-type
(member (replace-regexp-in-string "\\.exe$" "" (file-name-nondirectory (ad-get-arg 2)))
fakecygpty-program-list)))
(ad-set-args 3 (cons (ad-get-arg 2) (ad-get-args 3)))
(ad-set-arg 2 "fakecygpty"))
ad-do-it)

(defadvice process-send-eof (around ad-process-send-eof activate)
(if (and (ad-get-arg 0)
(string= (car (process-command (ad-get-arg 0))) "fakecygpty"))
(process-send-string (ad-get-arg 0) (kbd "C-d"))
ad-do-it))

145 名前:>>126 mailto:sage [2015/07/26(日) 02:54:58.15 ID:PVnmMw3N0.net]
>>137
Backtrace が出力されないので詳細はソースを見ないとわかりませんが、
以前使っていたfakecygpty(ttps://github.com/Shougo/fakecygpty)だと、
パスワードを入力して、
"the authorized token is loaded" とエコーされたのち、
"Authorization for the account "アカウント名" failed due to "nil"."
となって twittering-mode が終了してしまいます

>>134 が紹介してくれた fakecygpty(https://github.com/d5884/fakecygpty)だとうまく動きます。

146 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/07/26(日) 03:01:46.57 ID:GoqLMzMk0.net]
>>140
process-send-eofによる解決ではなく、fakecygptyによる解決だったのですね。
ありがとうございます。

147 名前:>>126 mailto:sage [2015/07/26(日) 03:13:39.82 ID:PVnmMw3N0.net]
>>141
自分の環境(chuntaro/NTEmacs64 + msys2)では
>>130 の設定 (compilation-disable-inputの判定)をいれれば
process-send-eof のアドバイスがなくても特に問題はないです。

その場合は grep とか ggtags 等の
compilation-disable-input を non-nil にセットするプロセスは
fakecygpty を経由しませんが

148 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/07/26(日) 03:26:44.89 ID:GoqLMzMk0.net]
>>142
>>130を投稿したのは自分なのですが、compilation-disable-input変数の利用される
スコープがfakecygptyが利用されるスコープが異なるのだろうなぁと思ったので。

149 名前:>>126 mailto:sage [2015/07/26(日) 03:55:10.82 ID:PVnmMw3N0.net]
>>143
>>130 の方でしたか。ありがとうございます。
compilation-disable-input の判定で問題ないと思いますが、
process-connection-type の判定で pty を要求されるならば
やはり fakecygpty を経由させ方が好ましいですかね、
リファレンスにも書かれてますし…

問題だった compilation-disable-input の non-nil にセットするプロセスも
>>133 の方法なら fakecygpty を経由しても大丈夫なので、
fakecygpty が pty のみの確保に対応するまでは >>139 の方法でいいと思います。

150 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/07/26(日) 05:04:04.90 ID:GoqLMzMk0.net]
こんな感じではどうだろう? これで、shell-modeの利用に必要なsignalのアドバイスも
必要なくなる。

(defadvice start-process (around ad-start-process-to-fake last activate)
(when (and (ad-get-arg 2)
(or process-connection-type
(member (replace-regexp-in-string "\\.exe$" "" (file-name-nondirectory (ad-get-arg 2)))
fakecygpty-program-list)))
(ad-set-args 3 (cons (ad-get-arg 2) (ad-get-args 3)))
(ad-set-arg 2 "fakecygpty"))
ad-do-it)

(defmacro fakecygpty-set-signal (function send-key)
`(defadvice ,function (around ,(intern (format "ad-%s" function)) activate)
(let ((process (or (ad-get-arg 0)
(get-buffer-process (current-buffer)))))
(if (string= (car (process-command process)) "fakecygpty")
(process-send-string (ad-get-arg 0) (kbd ,send-key))
ad-do-it))))

(fakecygpty-set-signal interrupt-process "C-c")
(fakecygpty-set-signal stop-process "C-z")
(fakecygpty-set-signal quit-process "C-\\")
(fakecygpty-set-signal process-send-eof "C-d")

151 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/07/26(日) 08:28:27.90 ID:NtQg+S5k0.net]
>>138
msys2 環境での使用は全然試したこと無いんで色々問題があるのかも。
>>134 のは WINCH シグナルを送るときにウィンドウサイズもセットで送る必要があったんで
専用の kill プログラムを用意していて、その中で cygwin 固有の関数呼んでるんだけど
msys2 環境でもコンパイルうまくいくのかな?

gdb は子プロセスに pty を接続する際に process-tty-name を使ってるから
そっちにも advice を入れる必要があったはず。
あとは cygwin 版 gdb の signal 絡みが linux 版と違って windows 用にカスタマイズされてる関係か
いまいちそこら辺が linux 環境と同じ使用感にならなかった記憶があるよ。

152 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/07/26(日) 21:43:15.94 ID:PVnmMw3N0.net]
>>138
以下の msys2 本家のサイトによると、
sourceforge.net/p/msys2/wiki/How%20does%20MSYS2%20differ%20from%20Cygwin/

msys2 は cygwin 固有の関数を含む cygwin1.dll の trunk バージョンを
msys-2.0.dll としてフォークしてるみたいなので
cygwin 固有の関数 が含まれていても msys2 環境でコンパイル可能です

ただ、以下のメールでのやり取りからすると
sourceforge.net/p/mingw-w64/mailman/mingw-w64-public/thread/2F9017D3-8357-48C2-B887-A32FDF4E2141@gmail.com/

Red hat の cygwin 開発者ともめたみたいで、
それを回避するために(他にも理由はあると思いますが)、以下のように多少手を加えてるみたいです。

1. 実行する際にコマンドライン引数と環境変数のパスを Windows 形式に自動変換する
2. OSNAME の値を環境変数 MSYSTEM の値に設定する
3. ネイティブな Windows アプリケーションの出力の行末コード(CR+LF)を UNIX 形式(LF)に変換
4. symlinks の挙動を リンクではなくコピーに
5. 旧 msys との互換性維持のため、 pwd への "-W" オプションの追加
6. /cygdrive プレフィックスの削除 (e.g C:\ | /cygdrive/c/ -> /c/)
7. MSYS2提供のユーザーランドソフトウェアに対する互換性と相互運用性維持のための変更
8. msys2 での権限操作を抑制するため、マウントオプションを noacl に
9. cygwin の trunk バージョンをベースとした msys2 のリリース

153 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/08/11(火) 14:32:49.49 ID:bYjHud0I0.net]
face の変更方法って色々あるけど、どれが一番高速なんだろう?
代表的なのは custom-set-faces set-face-attribute
あとは OS の機能を使う方法( Win ならレジストリ, Linux なら .Xresources )
今は、なんとなくレジストリいじる方法で face 変えてるけど



154 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/08/12(水) 10:56:11.22 ID:8NfCUjoG0.net]
ウィンドウサイズとかもそうだけどレジストリとか.Xresoucesの場合
ウィンドウが表示される前に適用されるから起動時に一瞬違うサイズのが表示されるってのがなくなるのが好き。
ただフォント絡みは一部の文字だけ置き換えなんかした場合のリソースでの記法がよくわからなくて二の足踏んでる。

155 名前:sage [2015/08/17(月) 07:35:11.12 ID:NCnTVCkt0.net]
どちらかと言うと windowsの質問ですが、先日 win7→10にしました。
ntemacs64(chuntaroさんの)は問題なく動くのですが、スタートメニューにはピン止めしかできません。
これだとプロパティでの作業フォルダが設定できないです。
環境変数 HOMEを設定する事で init.elは読み込む様になりましたが、emacs起動直後の C-x dでは emacs/bin
になっちゃいます(まぁ、~/ を入力すれば良い訳ですが・・・)
みなさんこの辺りどうしてます? 作業フォルダが emacs/binのままで支障はないですか?
# いままでずっと ~/ を作業フォルダに指定して使って来てるので・・・

以上、ご教示頂けると幸いです。

156 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/08/17(月) 08:13:25.44 ID:IM7ynGeV0.net]
自分は昔から (cd "~") を init.el の最後にいれてます。

157 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/08/17(月) 09:34:24.18 ID:2KGddbGt0.net]
>>150
スタートメニューにピン止めしたら、ピン止めのアイコンをポイントしてマウス右メニューで「ファイルの場所を開く」で開くフォルダに
ショートカットができているから、そのプロパティで作業フォルダを指定できるはず。
タスクバーにピン止めしてもマウス右メニューでショートカットのプロパティを編集できる。

158 名前:sage [2015/08/17(月) 20:37:38.99 ID:NCnTVCkt0.net]
おぉ!! こんな事できたのか!!
ありがとうございます。

(cd "~")だったのですね。
自分も最初に思い付いたのはそれだったのでですが・・・いかんせ elispがわからない^^;
カッコで括る必要があったんですね。勉強になります。

以上、有難うございました。

159 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/08/22(土) 16:58:40.96 ID:j7cezT2u0.net]
cygwin上からNTEmacs呼び出してるからWin側の環境変数はあまり気にしたこと無いなぁ。
HOMEぐらい?
みんなWinでshellコマンドのための環境は何を使ってるんだろう?

160 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/08/23(日) 11:56:51.25 ID:BYquMg6N0.net]
自分が冷静になるために情報を整理。
windows10にアップデートしたので、アプリが正常に動くか一通りチェック。
ほぼ問題ないが、emacs + StrawberryPerlで元通りに動かないところがある。
自作のスクリプトをshell-command-on-regionで使っていたのが、
(Shell command succeeded with no output)になる。
perltidyは動く。
eshellでは正常な結果となるので、どうしてもだめならeshellを使うのもありだろう。
まずはemacsのバージョンをチェックするか…

161 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/08/23(日) 13:28:54.67 ID:BYquMg6N0.net]
utf-8にしたら治ったサーセン

162 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/08/23(日) 22:45:52.88 ID:/GtGCPq50.net]
cygwin や msys2 とかの unix ライク環境と ntemacs を連携させてる場合、
Win側 の環境変数をいじるのは、気持ち悪くてできないなぁ
自分の場合、環境変数 HOME は以下のように設定してる。

ntemacs をインストールしたディレクトリ/share/emacs/site-lisp/
以下に site-start.el を作成して
(setenv "HOME" "HOME に設定したいディレクトリパス")

完全に好みの問題だけ思うけど

163 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/08/28(金) 10:07:02.82 ID:/FGdkJXi0.net]
↑ win10ではうまく行かなくない?
うちはだめだった。



164 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/08/28(金) 12:43:24.20 ID:wblKlxCN0.net]
>>158 win10 試してないからわからないけど、少なくとも win7 だとうまくいってる
scratch バッファに (getenv "HOME") C-j で設定したパスが表示されるか確認してみて

165 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/09/04(金) 15:30:20.98 ID:TxZyxqGk0.net]
emacs lisp で cygpath を使うために以下のような関数を作成したんだけど、
2番目の引数 path をダブルクオートで囲って shell-command-to-string に渡そうとしたら
ダサい感じになってしまった…
もっといい方法があれば教えてください
----------------------------------------------------------------------------
(defun cygpath (option path)
(let* ((cygpath_path "\"D:/msys64/usr/bin/cygpath\"")
(quote_path (concat "\"" path "\""))
(command (mapconcat 'identity (list cygpath_path option quote_path) "\s")))
(substring (shell-command-to-string command) 0 -1))))
----------------------------------------------------------------------------

166 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/09/04(金) 17:09:19.60 ID:T5sh+NNV0.net]
shell-quote-argumentを使う。

167 名前:>>158 mailto:sage [2015/09/04(金) 18:18:27.10 ID:TxZyxqGk0.net]
>>161 ありがとう
ズバリ shell-quote-argument が求めていた関数でした。

(defun cygpath (option path)
(let ((command (mapconcat 'identity (list "D:/msys64/usr/bin/cygpath"
option
(shell-quote-argument path)) "\s")))
(substring (shell-command-to-string command) 0 -1)))

NTemacs と cygwin を連携させる場合に
win ←→ unix の path の変換はみんなどうやっているのだろう?

168 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/09/04(金) 18:25:25.02 ID:T5sh+NNV0.net]
cygwin-mount.el使うと少しは良いかも。

169 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/09/04(金) 19:02:15.01 ID:TxZyxqGk0.net]
>>163
cygwin-mount.el を使えば、シェルコマンドを利用して
その結果を emacs の環境変数に書き込んだりする
パッケージ(exec-path-from-shellとか)でも問題なく使えたりするのかな?

170 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/09/04(金) 19:55:35.55 ID:T5sh+NNV0.net]
cygwin-mount.elはcygwinのマウントポイントを意識してcygwin->winのパスの
変換をしてくれます。cygwin-mount.elを設定して、
(expand-file-name "cygwinのパス")
を色々やってみると、やってくれていることがなんとなく分かると思います。
これは、emacs lispのMagicという仕組みを使っているようです。
で、exec-path-from-shellについては使っていないので分からないのですが、
恐らくそのままでは使えないのでしょうか。advice等で調整すれば動くように
なるかもしれません。

171 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/09/04(金) 19:58:32.47 ID:T5sh+NNV0.net]
gnupack-11.00の仕組みを使うと、gnupackの起動ファイルでPATHの設定等が
できて楽ちんです。cygwin-mount.elも入っていますね。
blechmusik.hatenablog.jp/entry/2014/11/14/002259

172 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/09/04(金) 21:02:26.38 ID:TxZyxqGk0.net]
>>166 色々とありがとうございます。cygwin-mount.el 便利そうですね
環境変数周りも cygwin-mount.el で対応できるなら使いたい
ただ、cygwin フォークの msys2 を使っているので
cygwin-mount.el をそのままだと使えないんです(パスのプレフィックス等が変わっているため)
なのでちょっと面倒ですが >>162 の cygpath を使って
win ←→ unix の path 変換が必要なパッケージに対して
該当部分を advice で修正ってのをやってます。

173 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/09/04(金) 21:43:31.18 ID:JpiFvrC40.net]
cygwin-mount ってパスのプリフィクス mount の戻り値から取ってなかったっけ
自分はマウントポイント変更して /cygdrive/c じゃなく /mnt/c に変えて cygwin 使ってるけど cygwin-mount 問題なく使えてるよ。
もっとも msys2 はコンパイルの時ぐらいしか使ってないから根本的になにか勘違いしてるかもしれないのであしからず。



174 名前:>>165 mailto:sage [2015/09/04(金) 22:12:54.85 ID:iErS8UcW0.net]
>>168
自分もちょっと勘違いしているかもしれないので
cygwin-mount.el 試してみます

175 名前:名無しさん@お腹いっぱい。 mailto:sage [2015/09/04(金) 22:53:47.81 ID:iErS8UcW0.net]
cygwin-mount.el、msys2 でも使えました。ロードの順番をミスっていたみたいです。
ただ、cygpath のときと同様に advice 等での調整は必要みたいです。






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧](;´∀`)<340KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef