Sinatraのあらかると

記録することで、環境構築で悩まない。

主観的deopleteプラグイン開発メモ

※ たぶんそういう意味じゃない

確かにruby-dictionary3のとき、

変換されたのかすんなり候補が流れました。

こういう仕様だと教えてくださいました。

import re
import os.path
from .base import Base

class Source(Base):
    def __init__(self, vim):
        super().__init__(vim)
        ...

    def get_complete_position(self, context):
     ....

    def gather_candidates(self, context):
        fi = open(os.path.expanduser('...'),'r')
        line = fi.readline()
        ni.extend(["...","..."])
        ni.sort(...)
        return ni
        print type(ni)

outputs

...ここには、補完リストの単語が入る...

<type 'str'>

・extend, sort, などはリスト型のメソッド

 これをみて、returnに入る戻り値がString型だと思わないですか。わかった人は、Vim通ですね。これ、リスト型なんですよ。なので、リスト型を使うメソッドであれば、動作します。数少ないメソッドで対応しないと、frozenにより、pipでインストールしたライブラリのほとんどは、動作しません。おそらく、本体で使っていてプラグインでは止めるような仕様なんですよ。私は、並列処理、独自ソート、メモリ量の設定、あとJITコンパイラで高速化を試してみましたが、やはりfrozenで止まりました。だめでした。つまり、pythonでdeopleteプラグインを書いたとき、returnにはリスト型を渡そうと。とりあえず、Bignyancoがリスト型をローカルファイルに入れて(直接)処理をしています。これが仕様で、pythonなどのファイルロードをreturn(戻り値)指定にしないと動作しないようにアクセスを拒否されると、しばらくBignyancoはメンテナンスに入ります。それは、Vimscriptでロードしてリストで渡すようにします。これってそんなプラグインありますね。deoplete-rubyがそうですね。

rubyist.hatenablog.com

夜な夜な挙動を確認していましたし、開発者のびむおーさんにも説明をいただきました。 忙しい中、関わってくれた方々ありがとうございます。記録で感謝を示します。 今後もわからないことを質問するときは、飴対応でお願いします。 vimの人はいつもそうなので、なんだかんだ質問すると(私は)やる気が増すタイプの人です。

コードはシンプルなdeopleteプラグインのサンプルを使いました。

deoplete.nvimのソースをつくってみた - Qiita

こーへーさんのキータを活用しました。まる。

Copyright © 2007-2018 Takayuki Kamiyama. All Rights Reserved.