prompt-toolkit / pyvim

Pure Python Vim clone.
BSD 3-Clause "New" or "Revised" License
2.52k stars 161 forks source link

Similar projects - collaboration? #15

Open tony opened 9 years ago

tony commented 9 years ago

Interested in seeing the differences in the following projects? Is there any overlap and / or willing to collaborate? I'd like to avoid duplication / see sharing where possible.

https://github.com/kaaedit/kaa by @atsuoishimoto

https://github.com/stefanoborini/vai by @stefanoborini

Are there any other vi-like python text editors that fell under the radar?

stefanoborini commented 9 years ago

I'd include my code gladly, but please keep in mind I cannot do it all by myself without prior discussion of what's needed and what's not. What I can provide is both the vaitk PyQt-style design as a generic visual framework (eventually reworked for a more PEP8 style) and the general MVC infrastructure or ideas in terms of responsibilities from vai.

What I can provide already right now is a detailed explanation of the design choices at the base of vai. I do not consider them untouchable, but they work as of now. I am strongly in favor of constant refactoring.

jonathanslenders commented 9 years ago

Hi all,

I added the alternatives in the readme.

@stefanoborini Thanks for the offer, I appreciate it! Right now, I'm not sure what can be reused, I'm also not sure how much I'm willing to invest in pyvim in particular. It was more created as a proof of concept to challenge the prompt-toolkit library and to learn.

So, there is no roadmap. But my focus is probably going to be this:

Implementing a better data structure would probably require refactoring many parts of the code base. So, merging code basis is probably not going to be an option for me right now.

Further, looking at Vai, the only things I'm missing right now are the following:

Actually that would probably be an evening of work for me. (In any case, less than porting it.)

And looking at the key bindings, that's also only a fraction of what we already support in pyvim:

c}    gU%    g~;    dd    di>    g~i<    E    yG    S    g?e    gui<    dW    yi`    ci'    x    g?i>    yi>  
  ya'    di{    l    gE    d^    g~W    g?b    g~}    gUk    c    b    gu    gUi<    cG    s    g?W    gu| 
   gUiW    gugg    g~iw    di)    ygE    di<    da(    g~j    g?w    g~|    H    g?j    yW    :    >    c0  
  g?{    (    B    ca>    W    h    g?i<    c%    ca(    dl    c|    g?|    da"    g?a{    cgE    dL    guiW  
  diW    gua`    di[    cH    gU;    yL    ca'    d{    gUi[    ca)    gui"    dgE    ye    N    gue    y%  
  g?G    gUa<    gUaW    g~B    g~e    A    g?ge    yi]    #    ge    gui)    yi'    cc    di"    g?i)    w  
  cW    yE    g?i(    g?a'    g?B    gUg_    gua"    $    gUgg    gUL    gu%    g~a'    guL    g~,
    g~H    c^    da{    <<    gUW    gUi}    dge    g~0    g?aw    c,    g~E    dj    g?l    cw       
  yw    yb    c$    gua{    ca{    g?i}    ya)    dh    gul    g~k    g~a<    ciw    gu^    g?a}    g~i{  
  a    n    yh    yiw    ci)    dB    O    g?aW    caW    ci(    gUi`    gUi'    g~i>    dw    cl    gui{  
  gUE    caw    g?a"    gUi{    gUa}    ci]    g~i`    g~ge    gUi]    guj    gU,    ya}    ce    g~G  
  guiw    ^    daW    diw    gui[    yaW    ch    cgg    gu}    g?H    ,    yi}    gU{    gUa(    /  
  guG    gUa[    gUi(    y0    gu,    g~a]    g?;    g~{    daw    g~h    d}    gUa`    ya`    g? 
    gUh    g~    ci{    g?}    d$    g?a(    gUj    -    <    guW    gug_    gui(    di}    gUG    gu$  
  gT    guE    gU0    yi"    d0    cg_    yj    d%    g~l    gUw    dE    gui]    ciW    gUa)    g~%  
  gua}    k    ca]    g~i)    gui}    guH    ca[    yH    gUa]    g?a>    u    gUgE    di]    gua>    D  
  g~w    guh    d     i    %    d|    g?i{    yi[    L    V    ca<    dG    gUi)    g?h    gUB    g?E 
   g~i[    g?i]    ya<    da}    g?g_    gUl    gU|    guge    cL    yi(    g~i(    g~i"    C    ?    g~a> 
   gU    gui`    d;    gUa'    de    R    aW    yg_    g~gg    ca}    e    da[    guw    ya(    yB    gua'
    c{    gUH    g_    yi{    di(    {    ya[    yi<    yaw    g~g_    +    ya"    gua]    X    |    ci}    d,  
  guaw    g?^    ca`    dH    g?i'    da>    yge    dk    zz    gu;    y|    g?$    gg    gU     g?iw  
  I    )    g?i[    ya{    g?a]    c;    g~a(    g~iW    db    da`    !    gugE    G    cj    c     ~    J    g~  
   g?a<    g?a`    da<    guaW    g?    g~aw    guB    y{    p    di`    ci"    gui'    yiW    g?iW  
  gua[    g?,    cB    y^    gu     y$    gUe    g~a`    gU^    *    gub    g~a{    ci`    g?L    g?a[    y} 
   ci[    da'    g~a[    gUiw    gua<    g?k    aw    gUge    g~^    yl    g?%    yi)    g~a)    gUb 
   gU$    g~a}    dgg    gUi"    ;    g?a)    gu0    di'    g?gE    yy    cE    }    gui>    g~i}    gUi> 
   ya]    g~$    gUaw    y,    g~a"    g~i]    cb    j    gu{    g~L    ygg    cge    y     g?i`    P    gua) 
   da)    ya>    ci<    g~i'    gUa"    y;    o    g?0    gUa{    ck    v    ci>    gt    gUa>    yk    g~aW  
  gU}    da]    guk    >>    dg_    g~gE    ca"    g?i"    g?gg    y    Y    gua(    g~b

Maybe I'm missing something, I really appreciate your offer, but I'm really not sure what we can merge.

Cheers, Jonathan