#65 Setting Up Development environment with Neovim and Lunarvim
Opened 2 years ago by rlengland. Modified 2 years ago

Summary: Show neovim setup and CoC plugin to do software development in C++, Go, Rust, Python and Java.

Description: The purpose of this article would be to show how Neovim with CoC plugin is used to have a decent development environment in Fedora. I like it because is fast and efficient specially with code snippets. I setup my workstation to do quick development in C++, Java, Python, Go and Rust.

For specific serious development I think there are very specialized IDEs such as Eclipse, VS Code or those from JetBrains which are really good, but if you want to have a fast alternative then the setup showed here is interesting.

https://discussion.fedoraproject.org/t/article-proposal-setting-up-developmen-environment-with-neovim-and-coc-plugin/31357


Metadata Update from @rlengland:
- Issue tagged with: article, needs-image

2 years ago

Metadata Update from @rlengland:
- Issue assigned to rlengland

2 years ago

Metadata Update from @rlengland:
- Assignee reset

2 years ago

Also one I'd out on my list. I have this set up on this machine and I'm also updating it to Lua from vimscript. And from COC to LSP as this is default from neovim >= 0.5.0 (I think, don't quote me).

I've been following this project for a while, part of which includes COC and LSP setup as described above.

https://github.com/LunarVim/LunarVim

Metadata Update from @rlengland:
- Issue assigned to glaringgibbon

2 years ago

Much like the Pihole article, I was going to contact the Neovim devs to ask for their input, tips 'n' tricks, gotchas, etc. Ditto for the LunarVim project linked above.

I'm not sure of any constraints on article length just yet, (reading docs at the w/e hopefully), and this topic can be a bit of a rabbit hole. Also, as noted above, LSP is installed by default and I think it COC calls the same LSP's under the hood (don't quote me) so COC can be considered an unrequired dependency, although I think there are additional features in COC not just LSP, so there may be use cases where one or the other is beneficial. I have no idea at present if you can run both concurrently, but only have the non-LSP COC extensions installed. I'm fairly sure most of those features would have a plugin.

The original proposal only mentions a handful of languages but COC and LSP can both handle way more. There's a list here

https://github.com/neoclide/coc.nvim/wiki/Language-servers

Are those languages fixed in stone? Do you need specifics for every language or more of a broad brush, here how to do one as an example type deal?

Also, COC/LSP on it's own doesn't replicate every feature of an IDE. It is the big draw, I know, but there are plenty of other features

Is this maybe a series of smaller articles building from default neovim in a modular way? What do you guys think?

@glaringgibbon How you structure this topic is really up to you. I can see two options that you alluded to.

The first is an introduction to installing Neovim and add-ons to create an IDE like tool. Perhaps pick a language you are familiar with and show some screen shots. Then allude to or provide references to set-ups for other languages leaving that as a effort for that reader.

The second is an introduction to Neovim showing how to add/manage add-ons with a single language and then a set of follow on articles. If there are similarities in add-ons for some languages perhaps they could be grouped.

The length would be controlled by the amount of details and examples you include. I would strive for completeness. Perhaps create an outline of your proposed article(s) and the editors can help you 'prune' it if necessary.

As for contacts, anyone you can reach and provide attributes for are fair game in my mind.

@glaringgibbon How you structure this topic is really up to you. I can see two options that you alluded to.

The first is an introduction to installing Neovim and add-ons to create an IDE like tool. Perhaps pick a language you are familiar with and show some screen shots. Then allude to or provide references to set-ups for other languages leaving that as a effort for that reader.

The second is an introduction to Neovim showing how to add/manage add-ons with a single language and then a set of follow on articles. If there are similarities in add-ons for some languages perhaps they could be grouped.

The length would be controlled by the amount of details and examples you include. I would strive for completeness. Perhaps create an outline of your proposed article(s) and the editors can help you 'prune' it if necessary.

As for contacts, anyone you can reach and provide attributes for are fair game in my mind.

I've had some feedback suggesting another article on Nvim + CoC is exactly that, another article. It's covering old ground. LSP and Lua are the new kids on the block, there isn't the same volume of material online. Would make more sense from an SEO POV, no?

IMHO, I think the first option makes more sense. The Lunar Vim project is an attempt to provide the kind of features and sensible defaults you get in any IDE, irrespective of your language of choice. It's trying to walk a middle ground between being too minimal that you're missing features you would have in an IDE and so bloated that you might as well use an IDE.

A language agnostic approach helps everyone get a base that would help them be productive. Otherwise, the javascript people are going to be waiting for a very long time. Possibly until hell freezes over.

Installation section is minimal, dnf install neovim and git clone LunarVim.

Briefly cover some of the more important features of an IDE like autocompletion, syntax highlighting, fuzzy finder etc. Then briefly cover the plugins that provide those features in Nvim like LSP, Treesitter and Telescope.

Explain how LunarVim is composed in modular form with separate config files for general settings, keybindings, plugins, and so forth all sourced from init.lua. There's a separate settings file that controls values in the configs so you don't have to go wading through a bunch of files to toggle things on/off.

A brief mention of packer, the lua plugin manager, is probably in order too.

Then cover some more language specific features, python in my case. Whether that's a section towards the end or a part 2 I can't say from here.

If that's acceptable I'll proceed on this basis. We'd need a different title though.

@glaringgibbon I think you have a reasonable plan so I would say proceed. I'm a Vim user so it will be an interesting read for me.

Changing the title is not a big deal. We've had Card titles that do not match the final article titles before so select the title for the WordPress article that you feel is most descriptive.

@glaringgibbon The last contact we had about this article was 5 months ago. Do you have a status update on it? If you have decided not to pursue writing it that is fine. Just let us know so we can take it off the list of items we are tracking.

Thanks for any information you can provide.

Login to comment on this ticket.

Metadata
Boards 1
articles Status: ideas