NTEmacs スレッド 5 [転載禁止]©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
1名無しさん@お腹いっぱい。
垢版 |
2015/03/09(月) 00:01:58.25ID:0/C/Ivt60
前スレ
NTEmacs スレッド 4
http://anago.2ch.net/test/read.cgi/software/1401870078/

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

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

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

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

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

Bug Report
M-x report-emacs-bug RET
2015/03/18(水) 02:21:03.26ID:KPmiThkj0
>>27
cygwinのコマンド等でバイナリ判別をする簡単な方法ってないかな。
fileではダメだった。
2015/03/18(水) 06:58:25.67ID:MdV7hAah0
>>32
いまちょっとソースさわれないからコピペできないけど、ldd で cygwin1.dll がロードされてないかチェックする関数作って、
判定か偽の時は "\\(\\(\\\\\\)*\\)\"" => "\\1\\1\\\\\"" な正規表現でクォートするってので一応解決できたよ。
正規表現は今動かせないから間違ってるかもしれないけど。

ldd 呼び出すときにクォートの advice が再帰しないようにする必要あり。

書いてる時に思ったんだけど、cygwin の dll でクォート切り替えてるってことは msys 系のは正しくクォートされないんじゃないかなぁ。
ネイティブの NTEmacs も似たような判定法だったんだけどそこらへんどうなってるんだろ。
2015/03/18(水) 07:02:31.11ID:MdV7hAah0
>>33
× cygwin の dll でクォート切り替え
○ cygwin の dll のロード有無でクォート切り替え
2015/03/18(水) 12:29:39.72ID:2QftJ3KW0
>>33
毎回チェックのためにプロセス走るのがありなら
封印していた環境変数経由で引数渡しするラッパーもありな気がしてきた
クォートもユニコード引数も解決してくれるぜ
2015/03/18(水) 12:34:14.66ID:2QftJ3KW0
>>31
一時的にhelm-suspend-update-flagをtにするんじゃなかったかな
前スレだか前々スレにlocate走るのを防止する方法のとこで出てた記憶がある
2015/03/19(木) 00:58:31.06ID:pArnr/Vi0
>>33
ldd使えますね。ありがとう。
よく読まずに再帰にハマったりしてますが、なんとかなりそう。
2015/03/19(木) 19:22:36.16ID:lEkPMd7B0
>>36
ありがとうごさいました。
elispは良くわかっていないのですが、以下のようにして、切替できるようになりました。

(defun my/toggle-helm-suspend-update-flag ()
(interactive)
(setq helm-suspend-update-flag (not helm-suspend-update-flag)))

(define-key helm-read-file-map (kbd "C-/") 'my/toggle-helm-suspend-update-flag)
2015/03/22(日) 21:39:14.50ID:/GyngaBY0
w32-read-pipe-delay を 5 で運用してたけど
素早く打鍵するとたまに cmigemo が取りこぼしするようになった。
あんまり小さくするもんじゃないねこれ。
2015/03/23(月) 14:29:26.71ID:drojhFwy0
>>30
俺んとこじゃならないから他のもんが邪魔してんじゃない?
2015/03/24(火) 12:50:44.05ID:5KJpFYaI0
結局自前クォートってどうなったの?
やらないほうがいいの?
2015/03/25(水) 15:47:56.90ID:umu0AdKT0
>>41
困ってないならやらなくていい。
43名無しさん@お腹いっぱい。
垢版 |
2015/03/29(日) 20:09:19.60ID:40A9nHc90
cygwinからmsys2に乗り換えた人ってそんなに多くないのかな・・・。
2015/03/29(日) 23:56:37.35ID:J46Ti/yE0
今って cygwin の環境汚染事実上無いしね。
msys は pty が使えないから ansi-term 不完全だし。
45名無しさん@お腹いっぱい。
垢版 |
2015/03/31(火) 03:55:16.80ID:r2ISwaky0
このサイトを参考にcygwinシェルとEmacsのPATHを共有するperlワンライナーを作ってみた
http://d.hatena.ne.jp/syohex/20111117/1321503477
perl初心者が書いたコードだからもっとうまくやる方法があるかもしれんが…

.bashrc ----------------------------------------------------------------
if [ !"$EMACS" -a !"$MSYSTEM" -a "$PATH" ]; then
perl -e \
'@a=split(":","$ENV{$ARGV[0]}");foreach(@a){$_=`cygpath -am "$_"|tr -d "\n"`};print qq/(setenv "$ARGV[0]" "/,join(";",@a),"\")"' \
PATH > ~/.emacs.d/site-lisp/shell_env.el
emacs -batch -f batch-byte-compile "~/.emacs.d/site-lisp/shell_env.el" >/dev/null 2>&1
fi

init.el ----------------------------------------------------------------
;; load environment value
(load "shell_env")
(dolist (path (reverse (split-string (getenv "PATH") ";")))
(add-to-list 'exec-path path))
------------------------------------------------------------------------
2015/03/31(火) 10:46:09.51ID:bprd6f4o0
日本語ファイルとかが多数あるときなんかの ansi-term 上での文字化けなんとか回避する方法ないだろか。
シェルからの出力受け取るときに多バイト文字の境目で切れててもお構いなしに文字コード変換処理しちゃうのが原因なんだろうけど
47>>45
垢版 |
2015/03/31(火) 21:49:33.37ID:r2ISwaky0
cygpathに"-p"オプションがあるのを忘れてたorz...

.bashrc ----------------------------------------------------------------
if [ !"$EMACS" -a !"$MSYSTEM" -a "$PATH" ]; then
perl -e \
'print qq/(setenv "$ARGV[0]" "/,`cygpath -amp "$ENV{$ARGV[0]}" | tr -d "\n"`,"\")"' \
PATH > ~/.emacs.d/site-lisp/shell_env.el
emacs -batch -f batch-byte-compile "~/.emacs.d/site-lisp/shell_env.el" >/dev/null 2>&1
fi
------------------------------------------------------------------------
2015/03/31(火) 22:01:52.81ID:bprd6f4o0
>>47
perl いらなくない?
echo "(setenv \"PATH\" \"`cygpath -amp "$PATH"`\")" > shell_env.el
49>>45
垢版 |
2015/04/01(水) 01:11:59.30ID:BrXX+ji90
>>48 情報サンクス
環境変数PATHに限るなら >>48 のコマンドが最適だね

perlにこだわってたのは、複数引数に拡張しようと思ってたからなんだけど
-----------------------------------------------------------------
perl -e \
'foreach(@ARGV){ print qq/(setenv "$_" "/,`cygpath -amp "$ENV{$_}" | tr -d "\n"`,"\")\n"}' \
PATH HOMEPATH SHELL > ~/.emacs.d/site-lisp/shell_env.el
-----------------------------------------------------------------

こんな感じにすればperlは必要ないね。cygpathの改行を除去する必要もないし
-----------------------------------------------------------------
for i in "PATH" "HOMEPATH" "SHELL"; do
echo "(setenv \"$i\" \"`eval cygpath -amp '"''$'$i'"'`\")"
done > ~/.emacs.d/site-lisp/shell_env.el
-----------------------------------------------------------------
(evalでゴニョゴニョしてる部分は何とかできないかな)
2015/04/01(水) 10:20:18.80ID:PIdj6min0
>>49
間接参照は ${!hoge} でいける

for i in "PATH" "HOMEPATH" "SHELL"; do
echo "(setenv \"$i\" \"`cygpath -amp "${!i}"`\")"
done
51>>45
垢版 |
2015/04/01(水) 13:41:02.46ID:BrXX+ji90
>> 50
ありがとう完璧だ
2015/04/01(水) 15:34:28.05ID:PIdj6min0
>>51
*rc 側に書かなくても emacs 側で bash 呼び出すようにすれば init.el 側で完結も出来そうね。
個人的にはシェル側に手を加えるのはあんまり好きじゃないから exec-path-from-shell のアプローチが好き。
emacs 実行ごとにプロセス一個走るのをうっとおしく感じるかどうかってのもあるだろうけど。


24.5 で変わる部分眺めてたけど
NTEmacs 的にはユニコード文字列がフレームタイトルに表示出来るようになったぐらいかな。
徐々に 〜W 系の API 呼び出し増えてってて嬉しい。
はよネイティブに UTF-8 をコマンド引数に渡せるようになるといいね。
2015/04/01(水) 20:01:53.54ID:BrXX+ji90
>>52
NTEmacs + Cygwin の環境で exec-path-from-shell って使えたっけ?
このサイトの通り、セットされる PATH が cygwin 形式になるからうまく動かなかったと記憶
ttp://aki2o.hatenablog.jp/entry/2013/08/26/NTEmacs%E3%81%A7exec-path-from-shell%E3%82%92%E4%BD%BF%E3%81%86%E3%81%A8%E8%89%B2%E3%80%85%E3%82%A8%E3%83%A9%E3%83%BC%E3%81%AB%E3%81%AA%E3%82%8B%E5%AF%BE%E5%87%A6
だから*rcをいじって色々やってた

> UTF-8 をコマンド引数に渡せるようになるといいね。
ホントそれ。cp932 エンコードとか、標準入力でのやりとりにするとか
トリッキーな回避法はもううんざりだからね
2015/04/08(水) 22:35:47.74ID:lWPCiwtZ0
なんかIMEパッチを25.5-rc3にあててビルドするとxdisp.cからxdisp.oをビルドするところで
こけるね。
パッチを当てないとビルドが通るけどね。
2015/04/09(木) 00:16:44.75ID:eMkIsfzA0
そりゃそうでしょ。
パッチ当てずにコケるようならリリース準備失敗中ってことになるから。
2015/04/09(木) 01:12:29.85ID:aipNkHpa0
>>2にあるemacs-24.4-w32-ime.diffを24.5-rc3に当ててビルドできてるけど?
2015/04/12(日) 01:23:28.45ID:pGjiMhUv0
24.5がでたからMSYS2のmingw64でコンパイルしてみたんだけど
pop.cのコンパイルでおちるなぁ…

なぜだ…
5857
垢版 |
2015/04/12(日) 08:41:13.56ID:pGjiMhUv0
自己レスだがdbusのこと忘れてた。
59名無しさん@お腹いっぱい。
垢版 |
2015/04/12(日) 11:41:22.33ID:d/2zEuUy0
https://github.com/chuntaro/NTEmacs64
ここの通りにやっても
Does Emacs use -lgnutls? no
になっちゃうんだけどなぜでしょうか。。。
2015/04/12(日) 12:54:02.57ID:d38XNn6P0
config.logでchecking for gnutls ...がなぜこけてるか見てみるといいんじゃないかな
2015/04/12(日) 14:20:07.37ID:0iuFFtU90
>>59
emacs-bug で 最新版の windows でのビルドで gnutls 絡みのスレッドたってるね。
バージョンがどうのって話しっぽいけど。これ関係ないかな?

http://lists.gnu.org/archive/html/bug-gnu-emacs/2015-04/msg00287.html
62名無しさん@お腹いっぱい。
垢版 |
2015/04/12(日) 22:55:26.84ID:dCQnSafJ0
>>60>>61 ありがとうございます。
config.logは
configure:12445: checking for gnutls >= 3.0.0
configure:12457: result: no
configure:12496: checking for gnutls >= 2.6.6
configure:12508: result: no
ということで見つけられていませんでした。

>>91 該当部分を書き換えて見ましたがだめでした。

もう少し調べてみます。ありがとうございました。
6360
垢版 |
2015/04/13(月) 00:27:39.05ID:ksn2Su6v0
gnutlsのパッケージがインストールされているのにそうなるなら
環境変数PKG_CONFIG_PATHに/mingw64/lib/pkgconfigが入ってないとか。
2015/04/13(月) 01:04:02.73ID:CPTnWQxd0
ちゃんとmingw64_shell.batを起動してます?
msys2_shell.batだとgnutls見つからないよ。
2015/04/13(月) 01:45:32.29ID:h1Z4gtOC0
素のemacs-24.5は以下にあるね。
http://sourceforge.net/projects/emacs-bin/files/releases/
mozcやskkとなら使える。
2015/04/13(月) 17:25:25.14ID:d+bAkWpZ0
パッチ版もありました。
http://cha.la.coocan.jp/doc/NTEmacsBuild245.html
2015/04/13(月) 22:22:46.15ID:V00i4ziY0
win32 版のemacsが終了時にエラー吐くの原因が分かった。
というか、mingw の libgcc の既知の不具合で、emacs の etc/PROBLEMS に書いてあった
とりあえず回避するには、configure 時に CC="gcc -shared-libgcc" にすればいいみたい
68名無しさん@お腹いっぱい。
垢版 |
2015/04/14(火) 12:22:40.57ID:f+OKfqTe0
>>67
cha.la.coocan.jp/doc/NTEmacs.html#binary 「最新(24.5)」に
「24.4の挙動があやしい部分は、24.5でも変わっていない」書いてあるけど、
そこに上がってる emacs-24.5.zip (http://cha.la.coocan.jp/files/emacs-24.5.zip) は
直ってる (とりあえずの回避策とった) やつ?
2015/04/14(火) 14:05:41.75ID:f+OKfqTe0
>>68
まだみたい
なんで、いまは前スレ 855 番の方法で対応してる
anago.2ch.net/test/read.cgi/software/1401870078/855
2015/04/14(火) 19:07:05.07ID:XUSbFSD90
>>67
確かに24.4のetc/PROBLEMSにも書いてあるね
しかし、見つけるのがすごいと思う

> configure 時に CC="gcc -shared-libgcc" に
32bit版をこれでビルドしてみたら
少なくとも終了時のエラーは吐かなくなった
他にどんな怪しい挙動するか知らない新参だけど
2015/04/14(火) 20:34:39.51ID:/xEYMFsM0
NTEmacs64 24.5 の chuntaro 氏にも感謝。
2015/04/14(火) 21:07:52.49ID:EStCjSBE0
おお、chuntaro さんのも更新されたんだ
ありがてえありがてえ
2015/04/14(火) 23:30:28.10ID:ho3MkNg10
IMEパッチを検証してみると、カーソルがウィンドウを移動したっていう
hookもなくてパッチでhookを作って何とかしてるってのが分かったけど
結局それじゃ拾いきれないのがある
例えば、y-or-no-pとかその類でminibufferでIMEがONのまんまだ
helmとかもなんか駄目だな
y-or-no-pとかいちいちadviseしていけばいいけどなかなか一筋縄ではいかないな
2015/04/14(火) 23:38:40.28ID:EStCjSBE0
使ってないから適当こくけど minibuffer-setup-hook/minibuffer-exit-hook とかじゃだめなん?
2015/04/14(火) 23:47:41.35ID:ho3MkNg10
>>74
minibuffer-exit-hook はIMEパッチ内でも使ってるけど、minibuffer-setup-hook を使っても
y-or-no-p とかは無反応だ
駄目な場合はで多いのは cursor-in-echo-area を t にするやつ
これをするとカーソルがminibufferに飛ぶけどhookは一切呼ばれないからIMEがオフにならない…
2015/04/14(火) 23:59:53.15ID:EStCjSBE0
>>75
y-or-n-p は read-key 使ってるからか。
read-key のアドバイスで cursor-in-echo-area が t なら・・・的なのを入れれば
擬似的にミニバッファ入力してるように見せかけてるのは回避出来るようになるかなぁ。
あーでも read-event とか他にも色々あるね。
2015/04/15(水) 00:16:25.18ID:iWcVp+8o0
>>76
本家の方でずばりカーソルがwindowを移動したっていうhookを作ってもらえれば万事解決なんだけどね
そんなのあるもんだと思ってたけど無いっぽい (知らないだけなのかね)
y-or-no-pはGUIのダイアログバージョンもあるけど、あんまりスマートなコーディングになってなかったな…
78名無しさん@お腹いっぱい。
垢版 |
2015/04/15(水) 00:21:35.11ID:nBsJeUAd0
自己完結。64bit版はlibgcc_s_dw2-1.dll使ってないのか。
2015/04/15(水) 00:28:04.69ID:E6JA3RzG0
えっ、どれが自己完結したんだ・・?
80名無しさん@お腹いっぱい。
垢版 |
2015/04/15(水) 19:52:45.07ID:0uxm8mAl0
>>79
64bitでもconfigure 時に CC="gcc -shared-libgcc" をつけないと落ちる?
と書き込んだはずだったのですが、できていなかったようです・・・。すみません。
2015/04/15(水) 20:48:18.43ID:E6JA3RzG0
>>80
なるほど。
だから chuntaro 版で落ちる報告あがってきてなかったわけなのね。
2015/04/15(水) 23:13:15.51ID:Ht/LrBGW0
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
2015/04/15(水) 23:26:15.91ID:E6JA3RzG0
>>82
素の grep 使ってなかったから気付かなかった。
カラー対応してたりして lgrep より気持ち見た目が豪華になるんだなぁ。
2015/04/16(木) 09:23:31.97ID:U5gvVt4D0
>>68
対応されたね。
2015/04/16(木) 10:48:12.95ID:RvYFC8+a0
ありがてえありがてえ
32bit/64bitともにネィティブパッチ済みが安定配布されてるのは助かるね。
86名無しさん@お腹いっぱい。
垢版 |
2015/04/16(木) 12:28:27.47ID:jgNWkz/z0
>>84
良さげに使えてる

>>85
んだ

※anagoは今日機嫌悪そう
2015/04/16(木) 12:59:18.03ID:U5gvVt4D0
gnupackは出ないね
2015/04/16(木) 13:06:06.65ID:Oh1kAPyh0
>>84のサイトのは-O3以降の最適化ビルドじゃなくて巨大なデバッグ情報も付いてる (exeが16MB→71MBになる…)
あとsvgとgnutlsはDLLは含まれてるけどconfigureの出力を見ると無効になってる
気になったんで一応書いておく
2015/04/17(金) 09:35:41.18ID:DM8ySD8W0
04.16版への差替えあったみたいだが、>>88 への言及まだなし
2015/04/17(金) 11:05:09.66ID:PA7JuVnR0
>>89
直接伝えたらいいんでないの…?
2015/04/17(金) 11:25:07.05ID:8SEnb17A0
少なくともgnutlsは動いてないな
2015/04/17(金) 11:43:28.69ID:1pa4/E7S0
あと前スレでも書いたけど、アップしたバイナリにはWindowsで設定されているPATHの全容と
ビルドした時のユーザー名とホスト名とそのPATHが含まれるから、余分なPATHは消して
ユーザー名とホスト名は適当なものに変更した方がいいんだよね

とりあえず -g3 -gdwarf-2 が余計なんで消した方がいい (exeが16MBぐらいになるはず)
2015/04/17(金) 16:19:59.51ID:7QnN5/LZ0
>>91
svgも不要?、という話だったような
2015/04/17(金) 19:38:56.09ID:AM0+JV5e0
gnutlsが動かないとわざわざstunnel使わないとssl通信ができなくて不便
mewさんはstunnelしか使わない頭の固い頑固者だから関係ないけど
2015/04/17(金) 20:21:14.48ID:PA7JuVnR0
cygwin とかと一緒に動かしてるなら gnutls インストールしておけば
特に設定なしで gnutls-cli 経由で https 接続したり 993 ポートで gmail に繋いだりしてくれるよ。
2015/04/17(金) 22:21:42.63ID:kL73LSPj0
>>94
> mewさんはstunnelしか使わない頭の固い頑固者
なぜに槍玉に上げそこまで熾烈な言葉遣いするん
2015/04/19(日) 14:12:56.90ID:DXu1Mk530
ビルド時のパスがバイナリに残る問題は emacs-bug で議論されてるなぁ。
パス以外にもなんかないか?とかやってるから次辺りのバージョンではそういうの残らなくなるかもしれんね。
9857
垢版 |
2015/04/19(日) 15:46:59.35ID:1KC2PQ+90
libgnutls-30.dllをちゃんと読み込めない問題は下記を見て
設定で使えるようにしたけどそれを解決した24.6がそろそろ出ないかな。

ttp://proglab.blog.fc2.com/blog-entry-14.html
2015/04/23(木) 20:54:42.65ID:Z256nHLA0
No IME パッチってどこに落ちてるの?
IME のキー潰すだけのために keyhac 入れてるのもなんだし試してみたいんだけど
見つからない。
2015/04/23(木) 21:17:18.23ID:RfDYEKRj0
>>99
W32-IMEを無効化ならconfigure時のoption指定だけだろ
2015/04/23(木) 21:32:23.80ID:Z256nHLA0
>>100
それってパッチの追加サポートを入れるかどうかのフラグでしょ。
半角/全角とかが IME に吸い取られるのを禁止したいのさ。

んで見つからないとかいってたけど普通に IME パッチ配布元に disable-w32-ime パッチ置いてあったわ。
これ追加して配布してるところはないんだなぁ。やっぱ自分でビルドするしかないのか。
2015/05/02(土) 08:03:19.03ID:3ATXgoIh0
http://ftp.jaist.ac.jp/pub/GNU/emacs/windows/emacs-24.5-bin-i686-mingw32.zip
2015/05/03(日) 00:54:12.38ID:47jdb8qj0
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に追加しておけばいいのかもしれません(まだやってない)。

ご報告まで。
104103
垢版 |
2015/05/03(日) 01:11:41.37ID:47jdb8qj0
>>103
emacs-24.5-shared-libgcc.zip (2015.04.16) 97,234,000byte でも、
(展開したディレクトリ)\binをPATHに追加したら、作業ディレクトリが\binでなくとも
M-x shell でcmd.exeが起動できました。
2015/05/06(水) 03:36:15.44ID:uEZzm+120
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回使ってるのがダサい
もっといいやり方があれば教えてください
2015/05/06(水) 09:31:13.17ID:4C94YyID0
file-truename も directory-file-name も先頭を小文字にする仕様みたいだから
どうせ揃えるなら小文字に揃えたほうがシンプルになるんじゃないかな?
add-to-list するときに追加する要素に対しても directory-file-name してやればいいわけだし。

;; 先頭小文字/最後のスラッシュはなしのケース
(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))
107>>105
垢版 |
2015/05/06(水) 14:47:54.15ID:uEZzm+120
>>106 ありがとう。期待通りの動作になりました

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

あと "#'"ってラムダ式作る以外に
"function-object"であることをコンパイラに伝える役目もあるのね
今まで"quote"ですませてきてたから目からウロコでした
108>>105
垢版 |
2015/05/06(水) 14:50:59.99ID:uEZzm+120
> "#'"ってラムダ式作る以外に ×
"#'"って関数名をクォートするときに ○
だな…恥ずかしい
2015/05/06(水) 16:08:53.22ID:aS345Gfx0
function の役割り
http://www.mew.org/~kazu/doc/elisp/function.html
クォートの話題が出たんで一応リンク張っておく
スゲー参考になる
2015/05/17(日) 09:37:02.76ID:EQG0VP2V0
週末、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.
2015/05/17(日) 10:02:43.03ID:9S9K1d5t0
あのわけわからん遅ささえなきゃなぁ。
fakecygpty 経由したほうが速いとかどうかしてる。
2015/05/17(日) 10:04:20.78ID:EQG0VP2V0
ansi-termとかは遅くて使えないね。自分はshell-modeをメインで使っている
ので、問題なさそう。
2015/05/17(日) 10:07:40.39ID:EQG0VP2V0
Cygwin版Emacsでもう一ついいことを見つけた。cygwinで作ったwindowsショートカット
やNTFSシンボリックの中に入っても、シンボリックのパスが維持される。
これはCygwinの機能なんだろうけど、MinGW版Emacsではそうはならないので便利だなぁ。
2015/05/30(土) 15:56:31.02ID:Dn2TAgbo0
Emacs24.5をCygwinでビルドしたが、xml2でコンパイルしてないとかのエラーでewwが使えない。
libxml2-devは入ってる。でもconfigureでxml2がnoと判定される。

誰か助けて。
2015/05/30(土) 16:27:42.67ID:fo8HIJKy0
pkg-configいれてないとか
2015/05/30(土) 17:50:30.91ID:Dn2TAgbo0
>>115
おー、ビンゴでした!
ありがとう!
2015/06/02(火) 02:12:13.32ID:wf9VDqVY0
日本語入力中のフォントにMactype効かないんだけど、綺麗なフォントを標準させる方法ない?
2015/06/15(月) 10:49:32.51ID:ypQO6dq60
unix板からこちらに聞いた方がいいといわれたので、
ここで質問いたします。

gnupack で入れたemacsで emacs-clang-complete-async を導入したいんですが
emacs-clang-complete-asyncのmakeができません。llvm系は自前で最新版をビルド
してパスも通っているつもりです。
make時のエラーは、
/usr/local/lib/libclang.a(CIndex.o):Cindex.cpp〜(関数名)に対する定義されていない参照です
というのが、大量に出ます。
環境は
win7 64bit
GNU Emacs24.5.1
です。
同じエラーを解決された方や、こうすればいいんでないの?という方がいれば
教えてください。
2015/06/21(日) 22:59:47.64ID:oMn8fplm0
>>118
このパッチの Makefile.cygwin を使ってみたらどうだろう
https://github.com/Golevka/emacs-clang-complete-async/pull/64
https://github.com/Golevka/emacs-clang-complete-async/blob/0446bacdae52619155c914d6c4c5ffca0ef1ebc4/Makefile.cygwin
2015/06/22(月) 03:45:18.32ID:I0UPbCEi0
fakecygpty.c に NOT in MinGW32! ってあるけど
msys gcc ならいけるんじゃないかと思ってコンパイルしてみた
結果、コンパイルできたが、 M-x shell で以下のエラーがでてうまくいかない
Process shell exited abnormally with code 139

ただ、tramp でサーバーに ssh 接続するのは可能
ちゃんとミニバッファにパスワードを入力できる
2015/06/22(月) 07:42:07.21ID:9r4PmZAp0
msys の方はそもそも pty を持ってないから fakecygpty コンパイル出来ても意味ないはずだが。
tramp の方のはよくわからないけど ssh-askpass が動いてるとかじゃないの?
122>>120
垢版 |
2015/06/22(月) 13:58:06.96ID:l0qxGhXV0
>>121 レス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 をサポートしてるってこと?
2015/06/26(金) 07:37:35.97ID:S4uTtmrI0
Cygwin版 emacs向けに以下の設定を考えました。

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

便利な設定ですので、よければ使ってください。
2015/07/06(月) 22:54:04.62ID:RQ16gZ7/0
>>118
>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オフィシャルのバイナリで行いました。
125>>120
垢版 |
2015/07/10(金) 18:01:03.11ID:KX/0sk9b0
>>122
自己解決。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 に乗り換えられるかな
2015/07/25(土) 16:21:44.11ID:5OkOVd1q0
以下のメールで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 で導入された新アドバイスに書き直してみた
127>>126
垢版 |
2015/07/25(土) 16:23:49.67ID:5OkOVd1q0
こんな感じ

(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)))
2015/07/25(土) 18:02:48.66ID:IrMQAipT0
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)
129>>126
垢版 |
2015/07/25(土) 18:50:49.98ID:5OkOVd1q0
>>128
今、試してみたところ
compilation-disable-input が non-nil の問題は
compilation-disable-inputの判定を入れればいいみたいです

ただ、gdb とか twittering-mode とかはこれとは別問題みたいで
fakecygpty を経由させるとうまく動かないです
2015/07/25(土) 20:26:20.36ID:IrMQAipT0
>>129
やっぱりバッファ名での判定は無くすことできないのかな。
2015/07/25(土) 21:13:18.13ID:IkFApNlK0
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 になっちゃうのを対処したのと、
子プロセスの戻り値をちゃんと処理してないせいでいつでも正常終了になっちゃうのを対処してるバージョンね。
■ このスレッドは過去ログ倉庫に格納されています
大学生アイラと影の怪物と戦うリョウが、深夜3時3分の静止した世界で交錯する超常スリラーの概要

ニューススポーツなんでも実況