ニュースレター #4 - サンクスビミングデー

2014年11月

オープンソースで「成功」するには、一貫性と着実さが重要です。

Vimコードベースを刷新することを目指すプロジェクト、Neovimの4回目のニュースレターへようこそ。これは、すぐに使える機能を提供しながら、エディターを拡張するためのより強力なインターフェースを提供することも目指しています。

一般ニュース

Neovimへの愛を示しましょう

UnixstickersNeovimセクションから、Neovimステッカーをあなたのラップトップに貼ることができます。

Unixstickersは、Bram Moolenar氏のVimへの貢献を支援するため、利益の一部をICCF Hollandに寄付します。

星の数

前回のニュースレターでは、NeovimのGitHubリポジトリで課題/プルリクエストが1,000件に達したことを詳述しました。

過去2ヶ月間で、リポジトリはGitHubで10,000スターを超えました。また、リポジトリへの貢献者も100人を突破しました。

Floobits承認

エディターと統合して共同コーディングを容易にするサービスであるFloobitsは、Vimプラグインを廃止し、Neovim用プラグインを代わりに提供するようになりました。

Floobitsは、新しいプラグインが以前のプラグインよりも「バグが少なく、パフォーマンスが優れている」と述べています。彼らの考えについて詳しくは、記事全文をお読みいただくか、コードを見るためにリポジトリをご覧ください。

日本で開催されたVimConf 2014

Vim-jpは、11月8日の週末に東京で年次VimConfカンファレンスを開催しました。

多くのVimプラグインの作成者である@Shougo氏は、Neovimに関する自身の経験と見解について講演を行いました。彼の考えを知るには、スライドの英語版をご覧ください。

開発ニュース

プラグインシステムのリファクタリング

@tarruda氏は、2つのことを行うプルリクエストを完了しました。それは、外部プロセスで実行され、msgpack-rpcを介してNvimと通信するリモートプラグインの最初の実装を提供することです。詳細は:h remote-pluginを参照してください。

2つ目の変更は、既存のプロバイダーインフラストラクチャの改善で、プロバイダーをVimScriptで実装できるようにしました。以前はプロバイダーをmsgpackを使用して実装する必要があったため、これにより柔軟性が向上します。これに関する詳細は:h nvim-providerを参照してください。

注記

この新しいプラグインシステムで問題が発生した場合は、古いビルドや古い設定からの古いファイルが原因である可能性があります。

詳細については、このコメントと、それに続く2つの課題12を参照してください。

iconvの再有効化

iconvは、「システムにない場合、または実装がUnicodeとの間で変換できない場合に使用する」ライブラリです。

CMakeへの移行中に、そのようなシステムを示すために使用されていたマクロUSE_ICONVが欠落していました。そのため、Neovimは必要に応じて特定のエンコーディング変換をトリガーしませんでした。

@aktau氏は、入力エンコーディングについて詳しく説明し、この問題を発見した方法についても説明した優れた記事「Neovim: input encoding and you」を作成しました。彼はこの問題を修正するプルリクエストを作成し、それがマスターブランチにマージされました。

Vim固有の整数型の削除(パート2)

@elmart氏は、過去の作業(12)を継続し、このプルリクエストでVim固有の整数型を削除しました。このトピックは、6月に公開された最初のニュースレターで初めて取り上げられました

この最新のプルリクエストのマージにより、@tarruda氏による長期的なリファクタリング目標であるプロジェクト固有のすべての型を削除することに一歩近づきました。

VimL → Lua と Vimのバグレポート

@ZyX-I氏は、VimLからLuaへの変換ツールの開発に引き続き取り組んでいます。パーサーにはVimコマンドの80%以上が実装されています。

変換ツールの作成中に、彼はさまざまなバグ(12345)を発見しました。彼はそれらをvim_devメーリングリストに報告し続け、可能な限りパッチを提供しています。

上流Vimパッチ

前回のニュースレター以降、多数のVimパッチがNeovimにマージされました。

この作業は、@splinterofchaos@Shougo@mhinz@NOLFXceptMe@atwupack@dknsによって行われました(移植されたパッチの数の多い順にソート)。

Vimパッチの完全なステータスは、Neovimウェブサイトの自動生成されたVimパッチレポートで確認できます。

レガシテスト移行パート1

@tarruda氏がレガシテスト移行について議論するマスター課題を開設した後、最初のレガシテスト@nate00によって移行されました。@rainerborene氏はその後、一括変換を行い、すでに次のバッチに取り組んでいます。

以前は、レガシテストは、フラグ-s <test file>を使用してVimのインスタンスを起動することで実行されていました。これはサイレントモードを有効にします。このモードでは、入力されたかのように行を読み取ります。テストはnvimmake oldtestを実行することで実行できます。

移行(テスト例:)は、UIが通信する際に使用するのと同じメカニズムであるmsgpack-rpcを介してNeovimと通信するようになったため、可能になりました。

バグ修正

ジョブアクティビティのバグ修正

@splinterofchaos氏は、ジョブアクティビティの出力の破損が発生するバグを発見しました。'\n'文字に到達する前にバッファーがいっぱいになると、rstream構造体に不完全な行が含まれる可能性があります。

これを修正するために、@splinterofchaosAPIレベルでロジックを追加して改行文字を見つけ、それを返すようにしました。その結果、ジョブのアクティビティは、文字列ではなくリストにstdoutを格納するようになりました。ジョブを使用しているコードがある場合は、対応する必要があります。

サインのバグ修正

@akkartik氏は、Nvimのサイン機能のバグを発見しました。

サイン機能は、バッファーの特定の行にインジケーターを配置するために使用できます。エディターウィンドウの左側に表示されます。これは、デバッガー、構文リンター、およびさまざまな他のプラグインで使用されます。

:sign unplaceコマンドを使用する場合、複数のバッファーに配置されたサインがnvimによって削除されないというバグが発生していました。

@akkartik氏はこれを修正するためのプルリクエストを作成し、CONTRIBUTING.mdファイルを更新して、外観の変更に関するガイダンスを追加しました。

HomebrewによるNeovimのインストール

Neovimは、homebrewのフォーミュラを組織内の独自のレポジトリに移動しました。これにより、フォーミュラだけでなくタップを使用して簡単にインストールできます。次のコマンドでインストールできます。

$ brew tap neovim/homebrew-neovim
$ brew install --HEAD neovim

詳細については、新しいリポジトリneovim/homebrew-neovimをご覧ください。@colinrymer氏が最初に改善を提案@xu-cheng氏がテストと移行を支援しました。

Marvim the Bot

@stefan991氏によって開始されたNeovimボットである@Marvimは、@fwalch氏によって大幅に改善されました。

これらの改善には以下が含まれます。

Clangアナライザーの警告の削減

@elmart氏は、Clang Static Analyzerからの警告数を削減するために懸命に努力しました。彼は4つの異なるプルリクエスト(1234)でそうしました。

協力して

寄付

開発を支援したい場合は、Bitcoinで寄付できます。1Evu6wPrzjsjrNPdCYbHy3HT6ry2EzXFyQまたはNeovim Bountysourceページでチームを支援してください。

貢献

経験豊富な開発者の方、または学習意欲のある未経験者の方は、GitHubリポジトリにアクセスし、READMECONTRIBUTINGガイド、そしてWikiをご覧ください。

協力できる機会ややるべきことがたくさんあります。

まとめ

このニュースレターに関するフィードバックやご提案がありましたら、Neovim Twitterまでお気軽にご連絡ください。

このニュースレターでは、コミュニティからのすべての貢献とサポートを網羅することはできません。過去2ヶ月間に何らかの形で貢献してくれた他のすべての貢献者の方々に感謝します。

RSSフィードを購読して、Neovimの世界で何が起こっているかを常に最新の状態に保ってください。次回のニュースレターは、約2ヶ月後の来年の初めに公開される予定です。

次回まで。:wq

ニュース

ニュースアーカイブでさらに多くのアップデートをご覧ください。RSSフィードもあります。

Neovimとは?

Neovimは、拡張性使いやすさのために設計されたVimベースのテキストエディターであり、新しいアプリケーションと貢献を促進します。

議論

チームとチャットするには、#neovim:matrix.org またはirc.libera.chatの#neovimをご利用ください。