Skip to content
This repository has been archived by the owner on Jul 27, 2018. It is now read-only.

Screenshots, Updates, Announcement #12

Open
roxma opened this issue Feb 7, 2017 · 53 comments
Open

Screenshots, Updates, Announcement #12

roxma opened this issue Feb 7, 2017 · 53 comments

Comments

@roxma
Copy link
Owner

roxma commented Feb 7, 2017

Inspired by deoplete.

This issue is a good place to upload screenshots for README.md.

Screenshots shoould not be put into git repo, otherwise it will make the plugin download time much much longer .

Additional tips screenshots will also be published in this issued,

Subscribe this issue if you are interested

@roxma

This comment has been minimized.

@roxma
Copy link
Owner Author

roxma commented Feb 9, 2017

Triggering Ultisnips or show popup hints with the same key <c-u>

When the expand key is pressed and nothing has been typed, a popup list for snippets will be triggered.

let g:UltiSnipsExpandTrigger = "<Plug>(ultisnips_expand)"
inoremap <silent> <c-u> <c-r>=cm#sources#ultisnips#trigger_or_popup("\<Plug>(ultisnips_expand)")<cr>

output

@roxma roxma changed the title Screenshots Screenshots, Updates, Announcement Feb 9, 2017
@roxma

This comment has been minimized.

@roxma

This comment has been minimized.

@roxma
Copy link
Owner Author

roxma commented Mar 2, 2017

Just implemented a <c-n><c-x><c-n>... like completion source:

#24 (comment)

Pick a key to map to <Plug>(cm_force_refresh)

imap <c-g> <Plug>(cm_force_refresh)

I also have tab mapping

      " smart tab for auto complete
      inoremap <expr> <silent> <Tab>  pumvisible()?"\<C-n>":"\<TAB>"
      inoremap <expr> <silent> <S-TAB>  pumvisible()?"\<C-p>":"\<S-TAB>"

<Tab> for selecting the popup item, <c-g> for refreshing the popup menu. So the key pressed in this screencast is <TAB><c-g><TAB><c-g>...

output

@roxma

This comment has been minimized.

@roxma

This comment has been minimized.

@roxma

This comment has been minimized.

@SevereOverfl0w
Copy link
Contributor

I have just finished adding NCM support to https://github.com/clojure-vim/async-clj-omni for Fireplace only. Acid.nvim will soon be supported also, once I have performed some refactoring.

This brings Clojure support to NCM.

There is currently no caching of completions, but there is contention between the underlying engine & NCM. I have some ideas of how to bring them together though, so expect caching as an upcoming feature.

@roxma

This comment has been minimized.

@roxma
Copy link
Owner Author

roxma commented Apr 25, 2017

Thanks to @lervag and @Shougo, vimscript completion is available via neco-vim

@dafufer
Copy link

dafufer commented Jun 1, 2017

I have added simple Swift completion using sourcekitten: nvim-cm-swift-completer
Any suggestion to improve it is welcome

screencast

@jsfaint
Copy link
Contributor

jsfaint commented Jun 5, 2017

gtags complete source gen_tags.vim
gtags source

@jsfaint
Copy link
Contributor

jsfaint commented Jun 6, 2017

I added ncm source for neco-syntax
Thanks @Shougo, the source was already merged into neco-syntax
neco-syntax

@jsfaint
Copy link
Contributor

jsfaint commented Jun 12, 2017

I also add neoinclude support too.

But I'm a little confused about the source priority that which one should be higher? neoinclude(file include) or neco-syntax(language syntax)
Currently I give 8 to both of them. neco-syntax mod was already merged to Shougo's repository, but neoinclude mod is not merged yet.

neoinclude screenshot here:
neoinclude

@roxma
Copy link
Owner Author

roxma commented Jun 12, 2017

@jsfaint

But I'm a little confused about the source priority that which one should be higher? neoinclude(file include) or neco-syntax(language syntax)

It seems they don't usually apear at the same time. So it doesn't matter.

@jsfaint
Copy link
Contributor

jsfaint commented Jun 12, 2017

@roxma Got it, thanks for your clarification 👍
I'll create PR for neoinclude

@roxma
Copy link
Owner Author

roxma commented Jun 26, 2017

https://github.com/roxma/ncm-github
Github completion is added. The idea was borrowed from https://github.com/rhysd/github-complete.vim . thanks to @rhysd and @ahmedelgabri #92

I re-implement it in python, so that the sources should work asynchronously.

@roxma
Copy link
Owner Author

roxma commented Aug 29, 2017

let g:cm_matcher = {'module': 'cm_matchers.substr_matcher', 'case': 'smartcase'}

Added sub-string based mathing.

@roxma
Copy link
Owner Author

roxma commented Aug 29, 2017

Added a toy project: ncm-phpactor

@roxma
Copy link
Owner Author

roxma commented Sep 30, 2017

Another plugin ncm-clang for c/c++ completion. This project deprecates roxma/clang_complete

@roxma
Copy link
Owner Author

roxma commented Oct 11, 2017

Adding typescript source: mhartington/nvim-typescript#81

@gaalcaras
Copy link

I've created a source for the R language: https://github.com/gaalcaras/ncm-R

fullscreen screencast

Please note that Nvim-R is required for ncm-R to work.

@cyansprite
Copy link

cyansprite commented Jan 22, 2018

support for NCM now
CS
https://github.com/cyansprite/omnisharp.nvim

@andreyorst
Copy link

One of my few complaints about YCM was startup time

@coachshea well I believe that the case long startup time of YCM is:
image

most of all was the "on-the-fly" snippet creation

Can agree here, it's like the only advantage of NCM over Deoplete for me. However, Language servers are providing snippets too. Only need to wait when snippet managers start supporting it. I'm waiting to try another Shougo's plugin Deoppet because it will support it as far as I know.

@partounian
Copy link

Thank you for all your vim work so far it's amazing. I hope someone can pick up this project, I'll have to check out deoplete again but this project and your other work seemed to integrate a lot more easily than competitors.

@jirgn
Copy link

jirgn commented Apr 29, 2018

I just wanted to switch to deoplete, and first thing I noticed - there is no function param expansion (at least not with ultisnips) or I did not find it. That feature I will miss a lot.
I did not even notice the good job you did here, until you quit maintainance - thanx for your work so far. Hopefully there will be anybody to keep this codebase alive.

@partounian
Copy link

I would like to take a stab at maintaining this project. If you could give me some direction, I'd love to contribute and see if I can handle this project.

@filipekiss
Copy link
Contributor

@partounian If you need any help count me in! I'd love to help keep NCM alive

@partounian
Copy link

Maybe tag what would be a great first issue to tackle? @filipekiss @roxma

@Shougo
Copy link

Shougo commented Apr 30, 2018

@jirgn You need to install neosnippet for it.

@jirgn
Copy link

jirgn commented May 5, 2018

@Shougo - I tried deoplete again, now with neosnippet, but can't get this feature to work. What I expected is, when having a completion candidate e.g a function selected in pum, just hit the mapping key for neosnippet expansion, and then the function signature params are expanded. These params act as snippet marks $1 - $n and i can navigate through them.
If you can tell me how to configure this in your setup, i'll give it another try.

@Shougo
Copy link

Shougo commented May 6, 2018

@jirgn It can. If it does not work, please create the issue in neosnippet.
I will test it.

Note: The minimal vimrc and the reproduce instructions are required.

dvcrn added a commit to dvcrn/dotfiles that referenced this issue May 28, 2018
@leotaku
Copy link

leotaku commented Jun 1, 2018

@partounian Are you still interested in maintaining this project? I still think ncm is the best completion framework out there and would hate to see it die.

@epheien
Copy link

epheien commented Jun 2, 2018

on windows, ncm is faster than deoplete

@roxma
Copy link
Owner Author

roxma commented Jun 29, 2018

Recently I started to work on ncm2. It is still WIP, and it is far from complete.

The code is based on ncm but many behaviors has changed. All sources will be moved out and it is not going to be compatible with existing source. Snippet integration is going to be a standalone plugin.

I want it to be easier to integrate with other features/plugins, such as go-to-definition and so-on. And I'm going to have some funny idea to try, e.g. ncm2-highlight-double-stuck

It's easier to rewrite the code without legacy concerns, and with some evil premature optimizations removed.

@megalithic
Copy link

megalithic commented Jun 29, 2018

@roxma yay! good luck and can't wait to check it out.

@HerringtonDarkholme
Copy link

@roxma So glad to see you back!

@andreyorst
Copy link

@roxma Great to hear see that! Are you planning on adding support of LSP snippets into that snippet plugin you're talking about?

@roxma
Copy link
Owner Author

roxma commented Jun 29, 2018

@andreyorst

Are you planning on adding support of LSP snippets into that snippet plugin you're talking about?

Yes

@partounian
Copy link

Any way I can help with this new development? @roxma

@roxma
Copy link
Owner Author

roxma commented Jun 30, 2018

@partounian

There're priorities of porting ncm sources to ncm2.

So far, I mostly use C/C++ at work, and with some js/css/html, I tend to use python and rust for my side projects.

I'll port these sources ASAP, and I'm going to extend the C/C++ support plugin. At least , I'm expecting it to be the same level of YCM.

As for other sources, it's kind of low priority for me. You could pick the one you need the most and try porting/implementing it with ncm2.

The documentation is not yet ready, but https://github.com/ncm2/ncm2-bufword is probably a good small reference.

@partounian
Copy link

I'll try to take a stab at python support 😄

@andreyorst
Copy link

andreyorst commented Jul 2, 2018

I'll port these sources ASAP, and I'm going to extend the C/C++ support plugin. At least , I'm expecting it to be the same level of YCM.

Is this really necessary?

Don't get me wrong, I just mean, that cquery server, for example, already provides nearly amazing completion and linting via language client. I know, that not everyone may want to use language server, but still, your solution will rely on libclang, right? So basically the same thing, because cquery is relying on libclang too.

But there is another thing — by creating sources for each and every language you extend the "matrix" problem, which language servers are trying to solve. But instead of different editors, with different language support, we end up with different completion frameworks with different languages supported in the end. This may sound bit cocky, but I believe that completion framework should be concentrated around completion features in first place, such as fuzzy matching, intelligent completion-type deducing (like deciding when user tries to start filepath completion with / and when it is beginning of the comment section // or /*, and there is no need to complete path), maybe completing multiple languages in the same file, like when you're working with html and css and php in the same .html document simultaneously, or snippet source (like language source, but in the direction towards snippet manager, so user could create a source and pair it with his favorite snippet manager (which of course should be compatible with some snippet standard, like LSP snippet standard for example (but user may even create some tool that will translate snippets from one syntax to other))), and leave intelligent completion for language aware tool.

@roxma
Copy link
Owner Author

roxma commented Jul 2, 2018

@andreyorst

I create sources mostly because I need it, and it feels easier for me. I had the impression that LSP and cquery is not ready in the past. Maybe it is ready now. I'll spend some time and try

I agree with your opinion on how a completion framework should behave. By extending c/c++ support, I mean creating extra plugins, I'm not gonna add any source directly into the core repo. ncm2 itself is going to be a clean and hackable completion framework.

IMO it's not making things complicated, instead we have more choices. If one completion plugin doesn't work so well as expected we can easily ditch it and look for alternatives. With choices we'll all end-up getting better, for example, ncm's vim8 support is also a contribution for deoplete.

By the way, maybe completing multiple languages in the same file, like when you're working with html and css and php in the same .html document simultaneously, is kind of impossible for LSP based sources. It's easier for me to implement them based on ncm2. For LSP stuff, https://github.com/autozimu/LanguageClient-neovim is already a good choice, and I'll add LanguageClient-neovim binding as a separate plugin for ncm2 in the near future.

@roxma
Copy link
Owner Author

roxma commented Jul 2, 2018

@partounian

Can't wait for python support. Here's a working version: https://github.com/ncm2/ncm2-jedi

However, jedi has some issues, like #215 100% CPU and #62 high memory consumption.

I think we should add some extra vimrc to kill the jedi process and clean the channel when the source is not active for an interval.

joshukraine added a commit to joshukraine/dotfiles that referenced this issue Jul 2, 2018
* The former ceased to work after I installed Python 3.7 via Homebrew.
* When looking at issues on the ncm repo I found out that it is no longer maintained.
* roxma/nvim-completion-manager#12 (comment)
joshukraine added a commit to joshukraine/dotfiles that referenced this issue Jul 2, 2018
* The former ceased to work after I installed Python 3.7 via Homebrew.
* When looking at issues on the ncm repo I found out that it is no longer maintained.
* roxma/nvim-completion-manager#12 (comment)
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests