This repository has been archived by the owner. It is now read-only.

Screenshots, Updates, Announcement #12

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

Comments

Projects
None yet
@roxma
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 roxma added help wanted and removed help wanted labels Feb 7, 2017

@roxma

This comment was marked as outdated.

Owner

roxma commented Feb 8, 2017

All in one screenshot

output

@roxma

This comment has been minimized.

Owner

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 from Screenshots to Screenshots, Updates, Announcement Feb 9, 2017

@roxma

This comment was marked as outdated.

Owner

roxma commented Feb 13, 2017

Add css completion for inline style attribute:

output

@roxma

This comment was marked as outdated.

Owner

roxma commented Feb 16, 2017

Added C/C++ code completion with clang_complete

output

@roxma

This comment has been minimized.

Owner

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 was marked as outdated.

Owner

roxma commented Mar 4, 2017

copied from neovim/neovim#5522 (comment):

Since LanguageClient-neovim already has nice interface, I'm deprecating my previous nvim-cm-php-language-server

Here's a simple php language server package that could be easily setup to work with LanguageClient-neovim, and it is well integrated with nvim-completion-manager

@roxma

This comment was marked as outdated.

Owner

roxma commented Mar 8, 2017

From #36 (comment):

Just take a deeper look into ultisnips, now parameter expansion works with ultisnips, 😄

@roxma

This comment was marked as outdated.

Owner

roxma commented Mar 9, 2017

Parameter expandsion for python, javascript, golang, via ultisnips/neosnippet

output

@SevereOverfl0w

This comment has been minimized.

Contributor

SevereOverfl0w commented Mar 20, 2017

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 was marked as outdated.

Owner

roxma commented Apr 14, 2017

Rust completion:

I've been learning rust recently and just implemented a completion plugin based on racer last night. I'm not sure I'm getting racer working the right way. It works but I still miss the macro completion.

https://github.com/roxma/nvim-cm-racer

output

@roxma

This comment has been minimized.

Owner

roxma commented Apr 25, 2017

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

@dafufer

This comment has been minimized.

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

This comment has been minimized.

Contributor

jsfaint commented Jun 5, 2017

gtags complete source gen_tags.vim
gtags source

@jsfaint

This comment has been minimized.

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

This comment has been minimized.

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

This comment has been minimized.

Owner

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

This comment has been minimized.

Contributor

jsfaint commented Jun 12, 2017

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

@roxma

This comment has been minimized.

Owner

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

This comment has been minimized.

Owner

roxma commented Aug 29, 2017

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

Added sub-string based mathing.

@roxma

This comment has been minimized.

Owner

roxma commented Aug 29, 2017

Added a toy project: ncm-phpactor

@roxma

This comment has been minimized.

Owner

roxma commented Sep 30, 2017

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

@roxma

This comment has been minimized.

Owner

roxma commented Oct 11, 2017

Adding typescript source: mhartington/nvim-typescript#81

@gaalcaras

This comment has been minimized.

gaalcaras commented Dec 7, 2017

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

This comment has been minimized.

cyansprite commented Jan 22, 2018

@andreyorst

This comment has been minimized.

andreyorst commented Apr 19, 2018

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

This comment has been minimized.

partounian commented Apr 26, 2018

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

This comment has been minimized.

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

This comment has been minimized.

partounian commented Apr 29, 2018

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

This comment has been minimized.

Contributor

filipekiss commented Apr 29, 2018

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

@partounian

This comment has been minimized.

partounian commented Apr 29, 2018

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

@Shougo

This comment has been minimized.

Shougo commented Apr 30, 2018

@jirgn You need to install neosnippet for it.

@jirgn

This comment has been minimized.

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

This comment has been minimized.

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

This comment has been minimized.

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

This comment has been minimized.

epheien commented Jun 2, 2018

on windows, ncm is faster than deoplete

@roxma

This comment has been minimized.

Owner

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

This comment has been minimized.

megalithic commented Jun 29, 2018

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

@HerringtonDarkholme

This comment has been minimized.

HerringtonDarkholme commented Jun 29, 2018

@roxma So glad to see you back!

@andreyorst

This comment has been minimized.

andreyorst commented Jun 29, 2018

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

@roxma

This comment has been minimized.

Owner

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

This comment has been minimized.

partounian commented Jun 29, 2018

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

@roxma

This comment has been minimized.

Owner

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

This comment has been minimized.

partounian commented Jul 1, 2018

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

@andreyorst

This comment has been minimized.

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

This comment has been minimized.

Owner

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

This comment has been minimized.

Owner

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

Replace roxma/nvim-completion-manager with deoplete.
* 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

Replace roxma/nvim-completion-manager with deoplete.
* 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.