{"action":"created","issue":{"url":"https://api.github.com/repos/koron/vim-kaoriya/issues/10","repository_url":"https://api.github.com/repos/koron/vim-kaoriya","labels_url":"https://api.github.com/repos/koron/vim-kaoriya/issues/10/labels{/name}","comments_url":"https://api.github.com/repos/koron/vim-kaoriya/issues/10/comments","events_url":"https://api.github.com/repos/koron/vim-kaoriya/issues/10/events","html_url":"https://github.com/koron/vim-kaoriya/issues/10","id":161065055,"number":10,"title":"配布物にdiff.exeを同梱してほしい","user":{"login":"lamsh","id":3889982,"avatar_url":"https://avatars.githubusercontent.com/u/3889982?v=3","gravatar_id":"","url":"https://api.github.com/users/lamsh","html_url":"https://github.com/lamsh","followers_url":"https://api.github.com/users/lamsh/followers","following_url":"https://api.github.com/users/lamsh/following{/other_user}","gists_url":"https://api.github.com/users/lamsh/gists{/gist_id}","starred_url":"https://api.github.com/users/lamsh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lamsh/subscriptions","organizations_url":"https://api.github.com/users/lamsh/orgs","repos_url":"https://api.github.com/users/lamsh/repos","events_url":"https://api.github.com/users/lamsh/events{/privacy}","received_events_url":"https://api.github.com/users/lamsh/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":25,"created_at":"2016-06-19T09:42:13Z","updated_at":"2016-08-08T15:27:10Z","closed_at":null,"body":"現在配布されている`vim74-kaoriya-win64-20160409.zip`には，差分コマンドである`diff.exe`が含まれていません。そのため，`:diffsplit`コマンド任意のファイルの差分を表示させようとすると，以下のエラーメッセージが表示され，差分表示ができません\r\n\r\n```\r\nE97: 差分を作成できません\r\n```\r\n\r\nよろしければ，`diff.exe`の同梱を検討していただけませんでしょうか？理由は以下5点です。\r\n\r\n1. Windows版の公式の配布物（[self-installing](http://www.vim.org/download.php)）には`diff.exe`が同梱されている。\r\n2. Windows版の公式の配布物で配布されているバイナリーファイルの閲覧で使用する`xxd.exe`はkaoriya版でも同梱されているにも関わらず，`diff.exe`は同梱されていないので，同梱物の方針が不整合となっている。\r\n3. 公式が提供する配布物を同梱しておくことで，公式との互換性を向上させられる。\r\n4. Windows標準の差分ツール`fc.exe`では[vimdiffで使われるed形式](http://vim-jp.org/vimdoc-ja/diff.html#diff-diffexpr)を用意するのが困難。\r\n5. （私事で恐縮ですが）Vimで差分表示の機能を有効にするためだけに，`diff.exe`のインストールの許可を職場でもらうのはしのびないので，標準で同梱してもらえると同じような状況の人も助かるはず。\r\n\r\n個人的な要望で恐縮ですが，よろしければご検討お願いします。"},"comment":{"url":"https://api.github.com/repos/koron/vim-kaoriya/issues/comments/238273227","html_url":"https://github.com/koron/vim-kaoriya/issues/10#issuecomment-238273227","issue_url":"https://api.github.com/repos/koron/vim-kaoriya/issues/10","id":238273227,"user":{"login":"lamsh","id":3889982,"avatar_url":"https://avatars.githubusercontent.com/u/3889982?v=3","gravatar_id":"","url":"https://api.github.com/users/lamsh","html_url":"https://github.com/lamsh","followers_url":"https://api.github.com/users/lamsh/followers","following_url":"https://api.github.com/users/lamsh/following{/other_user}","gists_url":"https://api.github.com/users/lamsh/gists{/gist_id}","starred_url":"https://api.github.com/users/lamsh/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/lamsh/subscriptions","organizations_url":"https://api.github.com/users/lamsh/orgs","repos_url":"https://api.github.com/users/lamsh/repos","events_url":"https://api.github.com/users/lamsh/events{/privacy}","received_events_url":"https://api.github.com/users/lamsh/received_events","type":"User","site_admin":false},"created_at":"2016-08-08T15:27:10Z","updated_at":"2016-08-08T15:27:10Z","body":"すみません…連絡が遅くなりました。少し進展があったのでお知らせします。\r\n\r\ncl.exeのオプション-Ziでデバッグ情報を埋め込んでも，gdbからは利用できず，デバッグするにはVisualStudioを使わないとだめのようだったのですが，使い方がよくわからないので，結局printfデバッグで原因を探ることにしました。\r\n\r\nkaoriyaさんのリポジトリをforkしてdiff.exeが動作するように修正しました。\r\nhttps://github.com/lamsh/diffutils/\r\n\r\ndiff.cで２つのファイルが同じかどうかの条件分岐がうまくいっていない箇所があったので修正しました。\r\nこれで，ファイルの差分は取れるようになりました。ただし，ディレクトリの差分はうまくとれません。\r\n\r\n修正には，GnuWin32のdiffutilsのソースを参考にしてファイルの修正が必要な箇所（diff.cとsystem.h）をそのまま使いました。\r\nhttp://gnuwin32.sourceforge.net/packages/diffutils.htm\r\n\r\nディレクトリの差分は少し修正が多くなりそうです。\r\ndiff.cの1000行目付近のdiff_dirs関数がうまくいっておらず，この内部のdir_sort関数のexcluded_filename関数があまり実装されていない（exclude変数など）のが原因のようです。GnuWin32では，構造体を新しく定義して使っているので，これに合わせるなら修正が少し多くなります。\r\nhttps://github.com/lamsh/diffutils/blob/msvc/master/src/diff.c#L118\r\n\r\nGnuWin32のソースをまるごと使えば，ちまちま修正しなくてもそのまま使えるんじゃないかともちょっと思っています。\r\n\r\n引き続き取り組んでみます。"}}
{"actor":{"display_login":"lamsh"}}