Idea and prototype: Vim independent event based communication & completions?

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Idea and prototype: Vim independent event based communication & completions?

MarcWeber
Vim8 / NeoVim / maybe Emacs and more
languages: VimL/Python (maybe lua)/ others

But common features such as
  - completion
  - templates
  - describe thing at cursor
  - goto thing at cursor
  - show errors
  - run compilation
  - ...

500 plugins - but how to make them work together?

http://github.com/MarcWeber/editor-cells

Is an attempt to implement the features in an independent manner so that
those parts can talk to each other by message passing style no matter
what language they are written in.

Because reinventing the wheel sucks.

It is an experiment, maybe it will hit speed bottlenecks, but I felt its
the most flexible way to learn from the past.

https://github.com/MarcWeber/editor-cells/blob/master/vimrc
and SetupVimTestCells() shows how to setup completion and a simple auto
triggering implementation. You see that you can add custom completions
to existing omnifuncs easily by using wrappers around existing omnifuncs
such as CompleteMonth.

The long term goal is to provide completions which you could combine
with machine learning to see which options should be ranked highest for
instance.

So the idea is that you can compose individual features the way you
need.

SetupPy2TestCells works, the py3 async code needs more work - but its
enough to get an idea.

Once there is a 'common format' many editors car do basic things with
then libraries even can provide their own snippets / dsls / stuff and be
done. Currently its a lot of work for everyone.

Feedback welcome - its very early stage.

Marc Weber

--
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Reply | Threaded
Open this post in threaded view
|  
Report Content as Inappropriate

Re: Idea and prototype: Vim independent event based communication & completions?

Nikolay Aleksandrovich Pavlov
2017-08-03 0:23 GMT+03:00 Marc Weber <[hidden email]>:

> Vim8 / NeoVim / maybe Emacs and more
> languages: VimL/Python (maybe lua)/ others
>
> But common features such as
>   - completion
>   - templates
>   - describe thing at cursor
>   - goto thing at cursor
>   - show errors
>   - run compilation
>   - ...
>
> 500 plugins - but how to make them work together?
>
> http://github.com/MarcWeber/editor-cells
>
> Is an attempt to implement the features in an independent manner so that
> those parts can talk to each other by message passing style no matter
> what language they are written in.

Almost everything in your list is covered by language server protocol:
completion, describing things at cursor, goto definition, … It is more
logical to extend LSP then invent something else. Currently LSP does
not support only “templates” and, probably, “run compilation” ([code
action request][1] is documented to have different purpose) from your
list. What it does not support and what neither is on your list, but
what would be good to have is syntax highlighting support, [LSP’s
document highlight][2] is a different thing.

From what I have read it looks like you are trying to create an LSP,
but without the “server” part, looking like a mesh network. Please, do
not do useless job, better work on LSP.

Though I am very unsure whether I understood right regarding how you
are going to implement anything you claim.

[1]: https://github.com/Microsoft/language-server-protocol/blob/master/protocol.md#textDocument_codeAction
[2]: https://github.com/Microsoft/language-server-protocol/blob/master/protocol.md#textDocument_documentHighlight.

>
> Because reinventing the wheel sucks.
>
> It is an experiment, maybe it will hit speed bottlenecks, but I felt its
> the most flexible way to learn from the past.
>
> https://github.com/MarcWeber/editor-cells/blob/master/vimrc
> and SetupVimTestCells() shows how to setup completion and a simple auto
> triggering implementation. You see that you can add custom completions
> to existing omnifuncs easily by using wrappers around existing omnifuncs
> such as CompleteMonth.
>
> The long term goal is to provide completions which you could combine
> with machine learning to see which options should be ranked highest for
> instance.
>
> So the idea is that you can compose individual features the way you
> need.
>
> SetupPy2TestCells works, the py3 async code needs more work - but its
> enough to get an idea.
>
> Once there is a 'common format' many editors car do basic things with
> then libraries even can provide their own snippets / dsls / stuff and be
> done. Currently its a lot of work for everyone.
>
> Feedback welcome - its very early stage.
>
> Marc Weber
>
> --
> --
> You received this message from the "vim_use" maillist.
> Do not top-post! Type your reply below the text you are replying to.
> For more information, visit http://www.vim.org/maillist.php
>
> ---
> You received this message because you are subscribed to the Google Groups "vim_use" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
> For more options, visit https://groups.google.com/d/optout.

--
--
You received this message from the "vim_use" maillist.
Do not top-post! Type your reply below the text you are replying to.
For more information, visit http://www.vim.org/maillist.php

---
You received this message because you are subscribed to the Google Groups "vim_use" group.
To unsubscribe from this group and stop receiving emails from it, send an email to [hidden email].
For more options, visit https://groups.google.com/d/optout.
Loading...