Git Product home page Git Product logo

ddc-coc-patched's People

Contributors

lumakernel avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Forkers

isabella232

ddc-coc-patched's Issues

coc.nvim のことを考えた上で着地点を考える

各リポジトリの関係性

  • coc-patched.nvim
    • coc.nvim を置き換える用。coc-patching.nvim を submodule として持つ
    • ビルド系に関する変更を、本体への変更と切り分けたかったのでこの構成
  • coc-patching.nvim
    • coc.nvim での直接の作業
  • ddc-coc-patched
    • coc-patched.nvim

coc.nvim + ddc.vim の現状

  • coc.nvim は auto-completion についてはオフにすることができる
  • deoplete との連携は issue など上がっていたが、ddc.vim との競合は見られなさそう

coc-patched.nvim の変更点

  • coc.nvim には補完候補をもらう関数などがないので追加
    • CocAction("requestCompletion") を追加し、ddc.vim 側への戻しは、
        1. コールバック先の vim 関数呼び出し
        1. グローバル変数に格納
        1. ddc.vim からはポーリング
  • 補完の変更と補完の完了
    • float win の表示・非表示・切り替えなどや complete done 後の処理
    • coc 側のイベントハンドラをそのまま残して少し改造
      • stringified JSON で {"cid":...} といった感じです、ただし実際の実装では string としての完全一致を要求しますが、
      • それだと動かなかったので、別の情報 (coc由来であること + coc sourceの一致 + coc source 内のindexの一致) だけを見るようにしています
  • 補完の中断
    • flaot win 消したり。これも現状は coc.nvim がやってることをそのままやらせてます
  • デフォルトソース無効化 ( F=file, A=around, B=buffer )
    • buffer が体感重い (隣で大きなファイル開いたときとか) ので無効化している
    • その他も必要ないので切っておくに越したことはないかなと

coc.nvim がなぜ必要か

!: 私が個人的にほしい
.: 一般 (vim-jp) に言われるのを見かける

  • !: coc-eslint (vscode-eslint 相当) がほしい
    • quickfix がある
    • 大きなプロジェクトでは eslint_d も不安定・たまに固まる
  • !: complete done 系
    • -> 他の LS client ddc source でもこれはできてるんではないかな
  • !: coc-tsdetect
    • -> 実はこれはかんたんに coc-nvim 以外でも使えるはずではある
    • 他の LS client に
  • !: coc LS 補完
  • .: 補完の preview (document表示)
    • 私は多分なくても生きていける
  • !: <Plug>(coc-fix-current) (quickfix (の自明なものの自動実行))
    • eslint-disable-..., deno-lint-ignore-..., TS カーソル下自動 import, ...
    • prabirshrestha/vim-lsp#771
    • 上記はフィルタして自明だったら出せる API を足したいというのを vim-lsp に投げたもの (蹴られた)
    • 自在なフィルタ自体は coc でもできないので、これは nvim-lsp などで体験を上げることはできそう

すべきこと

  • coc-patched.nvim の coc.nvim との関係性を決める

考えうる選択と検討

  • coc.nvim 側に discussion を開いてみる
    • deoplete の issue や tweet がそこそこいいねを集めていることをふまえ…
    • coc.nvim 側の今後の変更には追従される
    • coc.nvim で「これも無効化・独自化したい!」というような要望がでてきそう
      • 私は progress float win 無効化したいってついでに言ってしまいそう…エラー出まくってるときそれ邪魔で修正できんやん…
      • neoclide/coc.nvim#2702
  • coc.nvim の denops 版?
    • coc extension がどうしようみたいな問題があるため
    • わりとそこだけ node 立ち上げて通信もありだとは思うんですけどね
  • coc.nvim のコア部分みたいなのを作る
    • 各機能は自分で選んでくっつけていく、みたいな
    • 保管, float win, action 実行,

coc-patched.nvim の使い方と安定性

  • coc.toml
  • ddc.toml
  • coc-patched.nvim と ddc-coc-patched はバージョン合わせとけば動く、というのでやってます
  • 2-3 weeks 使ったと思いますが特に不満はないです。
  • known limitations (ただ実装サボっただけ、あり) EDIT: 解決しました
    • vim 起動後速攻で coc が動きうるファイルを触ると、まだ coc 起動してないよ!って言われます
      • coc 起動してないのに補完要求するからだと思います、チェックすりゃいい話ですね
    • coc 起動待ち時はエラーでなくとも、起動待つので around などが出てくれない
      • timeout 設定もありですけど、起動してないならとりあえず無を返してほしいですよね

polling やめたい

Shougo先生 in vim-jp

ボーリングするのではなくコールバック方式にした方がよいと思います

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.